فهرست منبع

06/02 16:19

111
mo 5 سال پیش
والد
کامیت
5d4354b9f9

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
dist/static/js/chunk-24490ddc.f3b32408.js


+ 160 - 133
src/api/journal.js

@@ -4,173 +4,200 @@ import qs from 'qs'
 let api = '/api-web'
 
 // 查询用户未读消息条数
-export function queryCountOfUnread(data) {
-    return request({
-        url: api + '/sysMessage/queryCountOfUnread',
-        method: 'get',
-        params: data
-    })
-} 
+export function queryCountOfUnread (data) {
+  return request({
+    url: api + '/sysMessage/queryCountOfUnread',
+    method: 'get',
+    params: data
+  })
+}
 
 // 获取所有消息列表
-export function sysMessageList(data) {
-    return request({
-        url: api + '/sysMessage/list',
-        method: 'get',
-        params: data
-    })
-} 
+export function sysMessageList (data) {
+  return request({
+    url: api + '/sysMessage/list',
+    method: 'get',
+    params: data
+  })
+}
 
 // 获取所有消息列表
-export function setRead(data) {
-    return request({
-        url: api + '/sysMessage/setRead',
-        method: 'post',
-        data: qs.stringify(data)
-    })
-} 
+export function setRead (data) {
+  return request({
+    url: api + '/sysMessage/setRead',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
 
 // 查询课程投诉详情
-export function queryCourseScheduleComplaintsDetail(data) {
-    return request({
-        url: api + '/courseSchedule/queryCourseScheduleComplaintsDetail',
-        method: 'get',
-        params: data
-    })
-} 
+export function queryCourseScheduleComplaintsDetail (data) {
+  return request({
+    url: api + '/courseSchedule/queryCourseScheduleComplaintsDetail',
+    method: 'get',
+    params: data
+  })
+}
 
 // 课程投诉审核
-export function courseScheduleCommplaintAudit(data) {
-    return request({
-        url: api + '/courseSchedule/courseScheduleCommplaintAudit',
-        method: 'post',
-        data: qs.stringify(data)
-    })
-} 
+export function courseScheduleCommplaintAudit (data) {
+  return request({
+    url: api + '/courseSchedule/courseScheduleCommplaintAudit',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
 
 // 获取vip课基本信息
-export function queryApplyRefundDetail(data) {
-    return request({
-        url: api + '/vipGroupManage/queryApplyRefundDetail',
-        method: 'get',
-        params: data
-    })
-} 
+export function queryApplyRefundDetail (data) {
+  return request({
+    url: api + '/vipGroupManage/queryApplyRefundDetail',
+    method: 'get',
+    params: data
+  })
+}
 
 // 退课申请审核
-export function applyRefundAudit(data) {
-    return request({
-        url: api + '/vipGroupManage/applyRefundAudit',
-        method: 'POST',
-        data: qs.stringify(data)
-    })
-} 
+export function applyRefundAudit (data) {
+  return request({
+    url: api + '/vipGroupManage/applyRefundAudit',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
+}
 
 // 退团单查询
-export function musicGroupQuit(data) {
-    return request({
-        url: api + '/musicGroupQuit/query',
-        method: 'get',
-        params: data
-    })
-} 
+export function musicGroupQuit (data) {
+  return request({
+    url: api + '/musicGroupQuit/query',
+    method: 'get',
+    params: data
+  })
+}
 
 // 退团申请审核
-export function quitMusicGroup(data) {
-    return request({
-        url: api + '/musicGroupQuit/quitMusicGroup',
-        method: 'POST',
-        data: qs.stringify(data)
-    })
-} 
+export function quitMusicGroup (data) {
+  return request({
+    url: api + '/musicGroupQuit/quitMusicGroup',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
+}
 
 // 教师请假记录详情
-export function leaveQueryDetail(data) {
-    return request({
-        url: api + '/teacherLeaveRecord/queryDetail',
-        method: 'get',
-        params: data
-    })
-} 
+export function leaveQueryDetail (data) {
+  return request({
+    url: api + '/teacherLeaveRecord/queryDetail',
+    method: 'get',
+    params: data
+  })
+}
 
 // 请假审核
-export function approve(data) {
-    return request({
-        url: api + '/teacherLeaveRecord/approve',
-        method: 'POST',
-        data: qs.stringify(data)
-    })
-} 
+export function approve (data) {
+  return request({
+    url: api + '/teacherLeaveRecord/approve',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
+}
 
 // vip课审核
-export function vipApplyAudit(data) {
-    return request({
-        url: api + '/vipGroupManage/vipApplyAudit',
-        method: 'POST',
-        data: qs.stringify(data)
-    })
-} 
+export function vipApplyAudit (data) {
+  return request({
+    url: api + '/vipGroupManage/vipApplyAudit',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
+}
 
 // 获取已结算的课酬记录
-export function findIsSettlementCourseSalarys(data) {
-    return request({
-        url: api + '/courseScheduleTeacherSalary/findIsSettlementCourseSalarys',
-        method: 'GET',
-        params: data
-    })
-} 
+export function findIsSettlementCourseSalarys (data) {
+  return request({
+    url: api + '/courseScheduleTeacherSalary/findIsSettlementCourseSalarys',
+    method: 'GET',
+    params: data
+  })
+}
 
 // 开启课酬确认
-export function openSalaryConfirm(data) {
-    return request({
-        url: api + '/courseScheduleTeacherSalary/openSalaryConfirm',
-        method: 'GET',
-        params: data
-    })
+export function openSalaryConfirm (data) {
+  return request({
+    url: api + '/courseScheduleTeacherSalary/openSalaryConfirm',
+    method: 'GET',
+    params: data
+  })
 }
 
 // 关闭课酬确认
-export function closeSalaryConfirm(data) {
-    return request({
-        url: api + '/courseScheduleTeacherSalary/closeSalaryConfirm',
-        method: 'GET',
-        params: data
-    })
+export function closeSalaryConfirm (data) {
+  return request({
+    url: api + '/courseScheduleTeacherSalary/closeSalaryConfirm',
+    method: 'GET',
+    params: data
+  })
 }
 
 // 调整课酬
-export function teacherSalaryModifyLog(data) {
-    return request({
-        url: api + '/teacherSalaryModifyLog/add',
-        method: 'POST',
-        data: qs.stringify(data)
-    })
+export function teacherSalaryModifyLog (data) {
+  return request({
+    url: api + '/teacherSalaryModifyLog/add',
+    method: 'POST',
+    data: qs.stringify(data)
+  })
 }
 
 
 // 获取申述列表
-export function teacherSalaryComplaints(data) {
-    return request({
-        url: api + '/teacherSalaryComplaints/queryPage',
-        method: 'GET',
-        params: data
-    })
-}
-
-// 获取申述详情
-export function teacherSalaryComplaintsDetail(data) {
-    return request({
-        url: api + '/teacherSalaryComplaints/get',
-        method: 'GET',
-        params: data
-    })
-}
-
-// 申述处理
-export function complaintsDispose(data) {
-    return request({
-        url: api + '/teacherSalaryComplaints/complaintsDispose',
-        method: 'post',
-        data: qs.stringify(data)
-    })
+export function teacherSalaryComplaints (data) {
+  return request({
+    url: api + '/teacherSalaryComplaints/queryPage',
+    method: 'GET',
+    params: data
+  })
+}
+
+// 获取课酬申诉列表
+export function teacherSalaryComplaintsDetail (data) {
+  return request({
+    url: api + '/teacherSalaryComplaints/get',
+    method: 'GET',
+    params: data
+  })
+}
+
+// 课酬申诉处理
+export function complaintsDispose (data) {
+  return request({
+    url: api + '/teacherSalaryComplaints/complaintsDispose',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 获取课时申诉列表
+export function queryTeacherAttendanceComplaints (data) {
+  return request({
+    url: api + '/teacherAttendance/queryTeacherAttendanceComplaints',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 同意课时申诉
+export function agreeTeacherAttendanceComplaints (data) {
+  return request({
+    url: api + '/teacherAttendance/agreeTeacherAttendanceComplaints',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 拒绝课时申诉
+export function rejectTeacherAttendanceComplaints (data) {
+  return request({
+    url: api + '/teacherAttendance/rejectTeacherAttendanceComplaints',
+    method: 'post',
+    data: qs.stringify(data)
+  })
 }

+ 12 - 1
src/utils/vueFilter.js

@@ -56,7 +56,7 @@ Vue.filter('musicGroupStudentType', (value) => {
     NORMAL: "在读",
     LEAVE: "请假",
     QUIT: "退团",
-    APPLY:'报名'
+    APPLY: '报名'
   }
   return template[value]
 })
@@ -517,4 +517,15 @@ Vue.filter('paymentStatusDetall', value => {
     'NON_PAYMENT': "未缴费",
   }
   return template[value]
+})
+
+// 课时申诉
+Vue.filter('complaintsStatusEnum', value => {
+  let template = {
+    0: "已拒绝",
+    1: "已通过",
+    2: "待处理",
+    3: "已撤销",
+  }
+  return template[value]
 })

+ 255 - 185
src/views/evaluateManager/networkList.vue

@@ -1,250 +1,303 @@
 <!--  -->
 <template>
   <div class="m-core">
-    <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
+    <el-form :inline="true"
+             class="searchForm"
+             v-model.trim="searchForm">
       <!-- 状态 指导老师 活动方案-->
       <el-form-item>
-        <el-input
-          v-model.trim="searchForm.search"
-          @keyup.enter.native="search"
-          placeholder="请输入课程组名称 ID"
-        ></el-input>
+        <el-input v-model.trim="searchForm.search"
+                  @keyup.enter.native="search"
+                  placeholder="请输入课程组名称 ID"></el-input>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="请选择分部" v-model="searchForm.organId" clearable>
-          <el-option
-            v-for="(item,index) in organList"
-            :label="item.name"
-            :value="item.id"
-            :key="index"
-          ></el-option>
+        <el-select placeholder="请选择分部"
+                   v-model="searchForm.organId"
+                   clearable>
+          <el-option v-for="(item,index) in organList"
+                     :label="item.name"
+                     :value="item.id"
+                     :key="index"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="指导老师" v-model="searchForm.teacherId" clearable filterable>
-          <el-option
-            v-for="(item,index) in teacherList"
-            :label="item.realName"
-            :value="item.id"
-            :key="index"
-          ></el-option>
+        <el-select placeholder="指导老师"
+                   v-model="searchForm.teacherId"
+                   clearable
+                   filterable>
+          <el-option v-for="(item,index) in teacherList"
+                     :label="item.realName"
+                     :value="item.id"
+                     :key="index"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select v-model.trim="searchForm.eduTeacherId" filterable clearable placeholder="教务老师">
-          <el-option
-            v-for="(item,index) in educationList"
-            :key="index"
-            :value="item.userId"
-            :label="item.userName"
-          ></el-option>
+        <el-select v-model.trim="searchForm.eduTeacherId"
+                   filterable
+                   clearable
+                   placeholder="教务老师">
+          <el-option v-for="(item,index) in educationList"
+                     :key="index"
+                     :value="item.userId"
+                     :label="item.userName"></el-option>
         </el-select>
       </el-form-item>
-       <el-form-item>
-          <el-select
-            v-model.trim="searchForm.practiceGroupType"
-            clearable
-            filterable
-            placeholder="课程组类型"
-          >
-            <el-option
-              v-for="(item,index) in practiceGroupType"
-              :key="index"
-              :value="item.value"
-              :label="item.label"
-            ></el-option>
-          </el-select>
-        </el-form-item>
       <el-form-item>
-        <el-select placeholder="学员评分" v-model="searchForm.studentReview" clearable>
-          <el-option v-for="index in 5" :label="index+'星'" :value="index" :key="index"></el-option>
+        <el-select v-model.trim="searchForm.practiceGroupType"
+                   clearable
+                   filterable
+                   placeholder="课程组类型">
+          <el-option v-for="(item,index) in practiceGroupType"
+                     :key="index"
+                     :value="item.value"
+                     :label="item.label"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="提交作业" v-model="searchForm.hasHandHomework" clearable>
-          <el-option label="提交" value="1"></el-option>
-          <el-option label="未提交" value="0"></el-option>
+        <el-select placeholder="学员评分"
+                   v-model="searchForm.studentReview"
+                   clearable>
+          <el-option v-for="index in 5"
+                     :label="index+'星'"
+                     :value="index"
+                     :key="index"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="老师评价" v-model="searchForm.hasReview" clearable>
-          <el-option label="评价" value="1"></el-option>
-          <el-option label="未评价" value="0"></el-option>
+        <el-select placeholder="提交作业"
+                   v-model="searchForm.hasHandHomework"
+                   clearable>
+          <el-option label="提交"
+                     value="1"></el-option>
+          <el-option label="未提交"
+                     value="0"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="教务评价" v-model="searchForm.courseReview" clearable>
-          <el-option label="好" value="好"></el-option>
-          <el-option label="中" value="中"></el-option>
-          <el-option label="差" value="差"></el-option>
+        <el-select placeholder="老师评价"
+                   v-model="searchForm.hasReview"
+                   clearable>
+          <el-option label="评价"
+                     value="1"></el-option>
+          <el-option label="未评价"
+                     value="0"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-select placeholder="是否到课" v-model="searchForm.hasArrived" clearable>
-          <el-option label="到课" value="1"></el-option>
-          <el-option label="未到" value="0"></el-option>
+        <el-select placeholder="教务评价"
+                   v-model="searchForm.courseReview"
+                   clearable>
+          <el-option label="好"
+                     value="好"></el-option>
+          <el-option label="中"
+                     value="中"></el-option>
+          <el-option label="差"
+                     value="差"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-select placeholder="是否到课"
+                   v-model="searchForm.hasArrived"
+                   clearable>
+          <el-option label="到课"
+                     value="1"></el-option>
+          <el-option label="未到"
+                     value="0"></el-option>
         </el-select>
       </el-form-item>
       <!-- homeWorkReplied -->
       <el-form-item>
-        <el-select placeholder="布置作业" v-model="searchForm.assignHomework" clearable>
-          <el-option label="是" value="1"></el-option>
-          <el-option label="否" value="0"></el-option>
+        <el-select placeholder="布置作业"
+                   v-model="searchForm.assignHomework"
+                   clearable>
+          <el-option label="是"
+                     value="1"></el-option>
+          <el-option label="否"
+                     value="0"></el-option>
         </el-select>
       </el-form-item>
-          <el-form-item>
-        <el-select placeholder="回复作业" v-model="searchForm.homeWorkReplied" clearable>
-          <el-option label="是" value="1"></el-option>
-          <el-option label="否" value="0"></el-option>
+      <el-form-item>
+        <el-select placeholder="回复作业"
+                   v-model="searchForm.homeWorkReplied"
+                   clearable>
+          <el-option label="是"
+                     value="1"></el-option>
+          <el-option label="否"
+                     value="0"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
-        <el-date-picker
-          :clearable="false"
-          v-model="searchForm.month"
-          type="daterange"
-          value-format="yyyy-MM-dd"
-          format="yyyy-MM-dd"
-          range-separator="-"
-          start-placeholder="开始日期"
-          end-placeholder="结束日期"
-          >
-        ></el-date-picker>
+        <el-date-picker :clearable="false"
+                        v-model="searchForm.month"
+                        type="daterange"
+                        value-format="yyyy-MM-dd"
+                        format="yyyy-MM-dd"
+                        range-separator="-"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+          ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button @click="search" type="danger">搜索</el-button>
-        <el-button @click="onReSet" type="primary">重置</el-button>
-        <el-button
-          type="primary"
-          v-if="tableData.length > 0"
-          v-permission="'export/courseReviews'"
-          @click="netWorkExport"
-        >导出</el-button>
+        <el-button @click="search"
+                   type="danger">搜索</el-button>
+        <el-button @click="onReSet"
+                   type="primary">重置</el-button>
+        <el-button type="primary"
+                   v-if="tableData.length > 0"
+                   v-permission="'export/courseReviews'"
+                   @click="netWorkExport">导出</el-button>
       </el-form-item>
     </el-form>
     <div class="tableWrap">
-      <el-table
-        style="width: 100%"
-        :header-cell-style="{background:'#EDEEF0',color:'#444'}"
-        :data="tableData"
-      >
-        <el-table-column align="center" prop="organName" label="分部名称"></el-table-column>
-        <el-table-column align="center" prop="id" label="课程编号"></el-table-column>
-        <el-table-column align="center" prop="courseName" label="课程名称"></el-table-column>
+      <el-table style="width: 100%"
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}"
+                :data="tableData">
+        <el-table-column align="center"
+                         prop="organName"
+                         label="分部名称"></el-table-column>
+        <el-table-column align="center"
+                         prop="id"
+                         label="课程编号"></el-table-column>
+        <el-table-column align="center"
+                         prop="courseName"
+                         label="课程名称"></el-table-column>
 
-        <el-table-column align="center" prop="subjectName" label="声部"></el-table-column>
-        <el-table-column align="center" prop="teacherName" label="指导老师"></el-table-column>
-        <el-table-column align="center" prop="eduTeacherName" label="教务老师"></el-table-column>
-        <el-table-column align="center" prop="type" label="课程组类型" width="100">
-            <template slot-scope="scope">
-              <div>
-                <p>{{scope.row.practiceGroupType | comType}}</p>
-              </div>
-            </template>
-          </el-table-column>
-        <el-table-column align="center" label="学员评分">
+        <el-table-column align="center"
+                         prop="subjectName"
+                         label="声部"></el-table-column>
+        <el-table-column align="center"
+                         prop="teacherName"
+                         label="指导老师"></el-table-column>
+        <el-table-column align="center"
+                         prop="eduTeacherName"
+                         label="教务老师"></el-table-column>
+        <el-table-column align="center"
+                         prop="type"
+                         label="课程组类型"
+                         width="100">
+          <template slot-scope="scope">
+            <div>
+              <p>{{scope.row.practiceGroupType | comType}}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center"
+                         label="学员评分">
           <template slot-scope="scope">
             <div>{{ scope.row.studentReview | studentReviewFilter}}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="老师评价">
+        <el-table-column align="center"
+                         label="老师评价">
           <template slot-scope="scope">
             <div>{{scope.row.reviewId>0?'是':'否'}}</div>
           </template>
         </el-table-column>
-         <el-table-column align="center" label="布置作业">
+        <el-table-column align="center"
+                         label="布置作业">
           <template slot-scope="scope">
             <div>{{scope.row.assignHomework?'是':'否'}}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="提交作业">
+        <el-table-column align="center"
+                         label="提交作业">
           <template slot-scope="scope">
             <div>{{scope.row.handHomework?'是':'否'}}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="回复作业">
+        <el-table-column align="center"
+                         label="回复作业">
           <template slot-scope="scope">
             <div>{{scope.row.homeWorkReplied>0?'是':'否'}}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center" prop="courseReview" label="教务评价"></el-table-column>
-        <el-table-column align="center" label="是否到课">
+        <el-table-column align="center"
+                         prop="courseReview"
+                         label="教务评价"></el-table-column>
+        <el-table-column align="center"
+                         label="是否到课">
           <template slot-scope="scope">
             <div>{{scope.row.attendanceId>0?'到课':'未到'}}</div>
           </template>
         </el-table-column>
-        <el-table-column align="center" label="操作">
+        <el-table-column align="center"
+                         label="操作">
           <!-- v-permission="'evaluateList/look'" -->
           <template slot-scope="scope">
             <div>
-              <el-button type="text" v-if="scope.row.reviewId" @click="lookDetail(scope.row)">查看</el-button>
+              <el-button type="text"
+                         v-if="scope.row.reviewId"
+                         @click="lookDetail(scope.row)">查看</el-button>
             </div>
           </template>
         </el-table-column>
       </el-table>
-      <pagination
-        :total="rules.total"
-        :page.sync="rules.page"
-        :limit.sync="rules.limit"
-        :page-sizes="rules.page_size"
-        @pagination="getList"
-      />
+      <pagination :total="rules.total"
+                  :page.sync="rules.page"
+                  :limit.sync="rules.limit"
+                  :page-sizes="rules.page_size"
+                  @pagination="getList" />
     </div>
-    <el-dialog title="网管课评价详情" :visible.sync="netWorkVisible" width="800px">
+    <el-dialog title="网管课评价详情"
+               :visible.sync="netWorkVisible"
+               width="800px">
       <div class="wrap">
         <div class="commitLeft">
-          <div class="leftCell" v-if="teacherClassHeadInfo">
+          <div class="leftCell"
+               v-if="teacherClassHeadInfo">
             <p>课程班名称</p>
             <p>{{teacherClassHeadInfo.classGroupName}}</p>
           </div>
-          <div class="leftCell" v-if="teacherClassHeadInfo">
+          <div class="leftCell"
+               v-if="teacherClassHeadInfo">
             <p>上课时间</p>
             <p>{{teacherClassHeadInfo.classDate+' '+teacherClassHeadInfo.startClassTime+'-'+teacherClassHeadInfo.endClassTime}}</p>
           </div>
-          <div class="leftCell" v-if="teacherClassHeadInfo">
+          <div class="leftCell"
+               v-if="teacherClassHeadInfo">
             <p>乐器</p>
             <p>{{teacherClassHeadInfo.subjectNames}}</p>
           </div>
-          <div class="leftCell" v-if="teacherClassHeadInfo">
+          <div class="leftCell"
+               v-if="teacherClassHeadInfo">
             <p>指导老师</p>
             <p>{{teacherClassHeadInfo.bishopTeacher}}</p>
           </div>
-          <div class="leftCell" v-if="teacherClassHeadInfo">
+          <div class="leftCell"
+               v-if="teacherClassHeadInfo">
             <p>学员</p>
             <p>{{teacherClassHeadInfo.studentNames}}</p>
           </div>
-          <div class="leftCell" v-if="courseScheduleReview">
+          <div class="leftCell"
+               v-if="courseScheduleReview">
             <p>回访日期</p>
             <p>{{ courseScheduleReview.createTime.substring(0,10) }}</p>
           </div>
-          <div class="leftCell" v-if="courseScheduleReview">
+          <div class="leftCell"
+               v-if="courseScheduleReview">
             <p>是否双向沟通</p>
             <p>{{courseScheduleReview.hasLiaison?'是':'否'}}</p>
           </div>
-          <div class="leftCell" v-if="courseScheduleReview">
+          <div class="leftCell"
+               v-if="courseScheduleReview">
             <p>是否提交作业</p>
             <p>{{courseScheduleReview.handHomework?'是':'否'}}</p>
           </div>
-          <div class="leftCell" v-if="courseScheduleReview">
+          <div class="leftCell"
+               v-if="courseScheduleReview">
             <p>教务老师</p>
             <p>{{courseScheduleReview.eduTeacherName}}</p>
           </div>
           <div class="leftCell">
             <p>课程评价</p>
             <div class="chioseWrap">
-              <el-tag
-                :type="mychiose =='好'?'danger':'info'"
-                @click="courseScheduleReview.courseReview='好'"
-              >好</el-tag>
+              <el-tag :type="mychiose =='好'?'danger':'info'"
+                      @click="courseScheduleReview.courseReview='好'">好</el-tag>
 
-              <el-tag
-                :type="mychiose == '中'?'danger':'info'"
-                @click="courseScheduleReview.courseReview='中'"
-              >中</el-tag>
-              <el-tag
-                :type="mychiose == '差'?'danger':'info'"
-                @click="courseScheduleReview.courseReview='差'"
-              >差</el-tag>
+              <el-tag :type="mychiose == '中'?'danger':'info'"
+                      @click="courseScheduleReview.courseReview='中'">中</el-tag>
+              <el-tag :type="mychiose == '差'?'danger':'info'"
+                      @click="courseScheduleReview.courseReview='差'">差</el-tag>
             </div>
           </div>
         </div>
@@ -253,53 +306,70 @@
             <div class="rightCell">
               <p>学员评价</p>
               <div class="chioseWrap">
-                <el-rate v-model="courseScheduleComplaints[0].score" disabled text-color="#ff9900"></el-rate>
+                <el-rate v-model="courseScheduleComplaints[0].score"
+                         disabled
+                         text-color="#ff9900"></el-rate>
               </div>
             </div>
-            <el-input type="textarea" v-model="courseScheduleComplaints[0].reason" disabled></el-input>
+            <el-input type="textarea"
+                      v-model="courseScheduleComplaints[0].reason"
+                      disabled></el-input>
           </div>
           <div v-if="courseScheduleReview">
-            <div class="rightCell" v-if="courseScheduleReview">
+            <div class="rightCell"
+                 v-if="courseScheduleReview">
               <p>教材内容</p>
             </div>
-            <el-input type="textarea" disabled v-model="teachingMaterial"></el-input>
-            <div class="leftCell" v-if="courseScheduleReview">
+            <el-input type="textarea"
+                      disabled
+                      v-model="teachingMaterial"></el-input>
+            <div class="leftCell"
+                 v-if="courseScheduleReview">
               <p>曲目</p>
               <p>{{ courseScheduleReview.song }}</p>
             </div>
-            <div class="rightCell" v-if="courseScheduleReview">
+            <div class="rightCell"
+                 v-if="courseScheduleReview">
               <p>发音</p>
               <div class="chioseWrap">
-                <el-rate v-model="courseScheduleReview.pronunciation" disabled text-color="#ff9900"></el-rate>
+                <el-rate v-model="courseScheduleReview.pronunciation"
+                         disabled
+                         text-color="#ff9900"></el-rate>
               </div>
             </div>
-            <div class="rightCell" v-if="courseScheduleReview">
+            <div class="rightCell"
+                 v-if="courseScheduleReview">
               <p>节奏</p>
               <div class="chioseWrap">
-                <el-rate v-model="courseScheduleReview.tempo" disabled text-color="#ff9900"></el-rate>
+                <el-rate v-model="courseScheduleReview.tempo"
+                         disabled
+                         text-color="#ff9900"></el-rate>
               </div>
             </div>
-            <div class="rightCell" v-if="courseScheduleReview">
+            <div class="rightCell"
+                 v-if="courseScheduleReview">
               <p>乐理</p>
               <div class="chioseWrap">
-                <el-rate v-model="courseScheduleReview.musicTheory" disabled text-color="#ff9900"></el-rate>
+                <el-rate v-model="courseScheduleReview.musicTheory"
+                         disabled
+                         text-color="#ff9900"></el-rate>
               </div>
             </div>
             <div class="rightCell">
               <p>评价备注</p>
             </div>
-            <el-input
-              type="textarea"
-              disabled
-              v-model="courseScheduleReview.memo"
-              v-if="courseScheduleReview"
-            ></el-input>
+            <el-input type="textarea"
+                      disabled
+                      v-model="courseScheduleReview.memo"
+                      v-if="courseScheduleReview"></el-input>
           </div>
         </div>
       </div>
-      <div slot="footer" class="dialog-footer">
+      <div slot="footer"
+           class="dialog-footer">
         <el-button @click="netWorkVisible = false">取 消</el-button>
-        <el-button type="primary" @click="submitNetwork">确定</el-button>
+        <el-button type="primary"
+                   @click="submitNetwork">确定</el-button>
       </div>
     </el-dialog>
   </div>
@@ -310,7 +380,7 @@ import { getToken } from "@/utils/auth";
 import qs from "qs";
 import axios from "axios";
 import pagination from "@/components/Pagination/index";
-import {  practiceGroupType } from "@/utils/searchArray";
+import { practiceGroupType } from "@/utils/searchArray";
 import {
   getTeacher,
   getEmployeeOrgan,
@@ -321,7 +391,7 @@ import {
 } from "@/api/buildTeam";
 export default {
   components: { pagination },
-  data() {
+  data () {
     return {
       netWorkVisible: false,
       searchForm: {
@@ -335,11 +405,11 @@ export default {
         courseReview: null,
         hasArrived: null,
         homeWorkReplied: null,
-        assignHomework:null,
+        assignHomework: null,
         month: [],
-        practiceGroupType:null
+        practiceGroupType: null
       },
-      practiceGroupType:practiceGroupType,
+      practiceGroupType: practiceGroupType,
       organList: [],
       teacherList: [],
       educationList: [],
@@ -359,16 +429,16 @@ export default {
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
-  created() {},
+  created () { },
   //生命周期 - 挂载完成(可以访问DOM元素)
-  mounted() {
+  mounted () {
     this.init();
   },
-  activated() {
+  activated () {
     this.init();
   },
   methods: {
-    init() {
+    init () {
       // 获取默认月份
       if (this.searchForm.month.length <= 0) {
         var now = new Date();
@@ -411,7 +481,7 @@ export default {
 
       this.getList();
     },
-    getList() {
+    getList () {
       let obj = {};
       obj.organId = this.searchForm.organId || null;
       obj.teacherId = this.searchForm.teacherId || null;
@@ -426,10 +496,10 @@ export default {
       obj.assignHomework = this.searchForm.assignHomework || null;
       obj.search = this.searchForm.search;
       obj.practiceGroupType = this.searchForm.practiceGroupType || null;
-      if (this.searchForm.month&&this.searchForm.month.length > 0) {
+      if (this.searchForm.month && this.searchForm.month.length > 0) {
         obj.startTime = this.searchForm.month[0];
         obj.endTime = this.searchForm.month[1];
-      }else{
+      } else {
         this.$message.error('请选择时间范围')
         return
       }
@@ -443,7 +513,7 @@ export default {
         }
       });
     },
-    lookDetail(row) {
+    lookDetail (row) {
       this.activeId = row.reviewId;
       getReviewInfo({ id: this.activeId }).then(res => {
         if (res.code == 200) {
@@ -461,7 +531,7 @@ export default {
         }
       });
     },
-    submitNetwork() {
+    submitNetwork () {
       if (!this.courseScheduleReview.courseReview) {
         this.$message.error("请评价课程");
         return;
@@ -477,11 +547,11 @@ export default {
         }
       });
     },
-    search() {
+    search () {
       this.rules.page = 1;
       this.getList();
     },
-    onReSet() {
+    onReSet () {
       this.rules.page = 1;
       this.searchForm = {
         organId: null,
@@ -495,8 +565,8 @@ export default {
         month: null,
         hasArrived: null,
         homeWorkReplied: null,
-        assignHomework:null,
-        practiceGroupType:null
+        assignHomework: null,
+        practiceGroupType: null
       };
       var now = new Date();
 
@@ -516,7 +586,7 @@ export default {
       this.searchForm.month.push(endDate);
       this.getList();
     },
-    netWorkExport() {
+    netWorkExport () {
       let url = "/api-web/export/courseReviews";
       let obj = {};
       this.searchForm.organId ? (obj.organId = this.searchForm.organId) : null;
@@ -546,15 +616,15 @@ export default {
       this.searchForm.homeWorkReplied
         ? (obj.homeWorkReplied = this.searchForm.homeWorkReplied)
         : null;
-      this.searchForm.assignHomework?obj.assignHomework=this.searchForm.assignHomework:null
-     if (this.searchForm.month&&this.searchForm.month.length > 0) {
+      this.searchForm.assignHomework ? obj.assignHomework = this.searchForm.assignHomework : null
+      if (this.searchForm.month && this.searchForm.month.length > 0) {
         obj.startTime = this.searchForm.month[0];
         obj.endTime = this.searchForm.month[1];
-      }else{
+      } else {
         this.$message.error('请选择时间范围')
         return
       }
-      this.searchForm.practiceGroupType?obj.practiceGroupType = this.searchForm.practiceGroupType:null;
+      this.searchForm.practiceGroupType ? obj.practiceGroupType = this.searchForm.practiceGroupType : null;
       const options = {
         method: "POST",
         headers: {
@@ -596,17 +666,17 @@ export default {
             link.click();
           });
         })
-        .catch(() => {});
+        .catch(() => { });
     }
   },
   filters: {
-    studentReviewFilter(val) {
+    studentReviewFilter (val) {
       let arr = ["未评价", "1星", "2星", "3星", "4星", "5星"];
       return arr[val];
     }
   },
   computed: {
-    teachingMaterial() {
+    teachingMaterial () {
       if (
         this.courseScheduleReview &&
         this.courseScheduleReview.teachingMaterial
@@ -616,7 +686,7 @@ export default {
         return "";
       }
     },
-    mychiose() {
+    mychiose () {
       if (this.courseScheduleReview && this.courseScheduleReview.courseReview) {
         return this.courseScheduleReview.courseReview;
       } else {

+ 244 - 24
src/views/workBenchManager/payAppeal.vue

@@ -10,7 +10,48 @@
         <el-form-item>
           <el-input v-model.trim="searchForm.search"
                     @keyup.enter.native="search"
-                    placeholder></el-input>
+                    placeholder='老师名称'></el-input>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model.trim="searchForm.organId"
+                     clearable
+                     filterable
+                     placeholder="请选择分部">
+            <el-option v-for="(item,index) in organList"
+                       :key="index"
+                       :label="item.name"
+                       :value="item.id"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-select v-model.trim="searchForm.complaintsStatus"
+                     clearable
+                     filterable
+                     placeholder="申诉状态">
+            <el-option label="已拒绝"
+                       :value="0"></el-option>
+            <el-option label="已通过"
+                       :value="1"></el-option>
+            <el-option label="待处理"
+                       :value="2"></el-option>
+            <el-option label="已撤销"
+                       :value="3"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-date-picker v-model.trim="searchForm.timer"
+                          style="width:400px;"
+                          type="daterange"
+                          value-format="yyyy-MM-dd"
+                          range-separator="至"
+                          start-placeholder="开始日期"
+                          end-placeholder="结束日期"></el-date-picker>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="danger"
+                     @click="search">搜索</el-button>
+          <el-button @click="onReSet"
+                     type="primary">重置</el-button>
         </el-form-item>
       </el-form>
       <div class="tableWrap">
@@ -18,32 +59,68 @@
                   :header-cell-style="{background:'#EDEEF0',color:'#444'}"
                   :data="tableList">
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="organName"
                            label="分部"></el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="courseScheduleId"
                            label="课程编号"></el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="courseScheduleName"
                            label="课程名称"></el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
-                           label="课程时间"></el-table-column>
-          <el-table-column align="center"
-                           prop="studentId"
-                           label="签到状态"></el-table-column>
+                           width="180"
+                           prop="courseScheduleTime"
+                           label="课程时间">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.courseScheduleTime}} {{ scope.row.courseScheduleStartTime | timerForMinFormat }}-{{scope.row.courseScheduleEndTime | timerForMinFormat    }}</p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align='center'
+                           prop="status"
+                           label="签到状态">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.signInStatus | attendanceType  }}</p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column align='center'
+                           prop="status"
+                           label="签退状态">
+            <template slot-scope="scope">
+              <div>
+                <p>{{scope.row.signOutStatus | attendanceOutType  }}</p>
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
-                           label="签退状态"></el-table-column>
-          <el-table-column align="center"
-                           prop="studentId"
+                           prop="teacherName"
                            label="老师名称"></el-table-column>
           <el-table-column align="center"
                            prop="studentId"
-                           label="状态"></el-table-column>
+                           label="状态">
+            <template slot-scope="scope">
+              <div>
+                {{scope.row.complaintsStatusEnum|complaintsStatusEnum}}
+              </div>
+            </template>
+          </el-table-column>
           <el-table-column align="center"
-                           prop="studentId"
+                           prop="operatorName"
                            label="申诉处理者"></el-table-column>
+          <el-table-column align="center"
+                           label="操作">
+            <!-- teacherAttendance/agreeTeacherAttendanceComplaints -->
+            <template slot-scope="scope">
+              <div>
+                <el-button type="text"
+                           v-permission="'teacherAttendance/agreeTeacherAttendanceComplaints'"
+                           @click="lookDetail(scope.row)">操作</el-button>
+              </div>
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :total="rules.total"
                     :page.sync="rules.page"
@@ -52,6 +129,48 @@
                     @pagination="getList" />
       </div>
     </div>
+    <el-dialog title="课时申述"
+               :visible.sync="dialogVisible"
+               width="400px">
+      <div>
+        <div class="titleP">
+          <p>签到时间:{{visibleForm.signInTime}}</p>
+          <p>签退时间:{{visibleForm.signOutTime}}</p>
+        </div>
+        <el-form ref="visibleForm"
+                 :model="visibleForm"
+                 class="visibleForm">
+          <el-form-item label="申诉内容"
+                        :rules="[{ required: true, message: '请填写申诉内容',trigger: 'blur'}]"
+                        prop="complaintsContent">
+            <el-input type="textarea"
+                      :rows="5"
+                      :disabled="visibleForm.complaintsStatusEnum !='2'"
+                      v-model.trim="visibleForm.complaintsContent"></el-input>
+          </el-form-item>
+          <el-form-item label="处理意见"
+                        :rules="[{ required: true, message: '请填写处理意见',trigger: 'blur'}]"
+                        prop="disposeContent">
+            <el-input type="textarea"
+                      :rows="5"
+                      :disabled="visibleForm.complaintsStatusEnum !='2'"
+                      v-model.trim="visibleForm.disposeContent"></el-input>
+          </el-form-item>
+          <el-form-item label="请选择需要补正的状态"
+                        v-if="visibleForm.complaintsStatusEnum =='2'">
+            <br />
+            <el-checkbox v-model="visibleForm.reSignInStatus">签到状态</el-checkbox>
+            <el-checkbox v-model="visibleForm.reSignOutStatus">签退状态</el-checkbox>
+          </el-form-item>
+        </el-form>
+      </div>
+      <div slot="footer"
+           v-if="visibleForm.complaintsStatusEnum =='2'">
+        <el-button @click="subreset('DENIED')">拒绝</el-button>
+        <el-button type="primary"
+                   @click="subreset('AGREED')">同意</el-button>
+      </div>
+    </el-dialog>
   </div>
 </template>
 
@@ -60,14 +179,21 @@ import axios from "axios";
 import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import load from "@/utils/loading";
-import { getTeacher, getEmployeeOrgan } from "@/api/buildTeam";
-
+import { getEmployeeOrgan } from "@/api/buildTeam";
+import {
+  queryTeacherAttendanceComplaints,
+  agreeTeacherAttendanceComplaints,
+  rejectTeacherAttendanceComplaints
+} from "@/api/journal";
 export default {
   components: { pagination },
   data () {
     return {
       searchForm: {
-        search: null
+        search: null,
+        organId: null,
+        complaintsStatus: null,
+        timer: []
       },
       teacherList: [],
       tableList: [],
@@ -79,17 +205,21 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50] // 选择限制显示条数
       },
+      dialogVisible: false,
+      visibleForm: {
+        complaintsContent: null,
+        complaintsStatusEnum: null,
+        disposeContent: null,
+        signInStatus: null,
+        signOutStatus: null,
+        teacherAttendanceId: null
+      }
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created () { },
   //生命周期 - 挂载完成(可以访问DOM元素)
   mounted () {
-    getTeacher().then(res => {
-      if (res.code == 200) {
-        this.teacherList = res.data;
-      }
-    });
     getEmployeeOrgan().then(res => {
       if (res.code == 200) {
         this.organList = res.data;
@@ -106,10 +236,100 @@ export default {
   },
   methods: {
     init () {
+      this.getList()
+    },
+    getList () {
+      let obj = {}
+      Object.assign(obj, this.searchForm)
+      if (obj.timer && obj.timer.length > 0) {
+        obj.courseScheduleStartDate = obj.timer[0]
+        obj.courseScheduleEndDate = obj.timer[1]
+      }
+      obj.rows = this.rules.limit;
+      obj.page = this.rules.page;
+      delete obj.timer
+      queryTeacherAttendanceComplaints(obj).then(res => {
+        if (res.code == 200) {
+          this.rules.total = res.data.total;
+          this.tableList = res.data.rows
+        }
+      })
+    },
+    search () {
+      this.rules.page = 1;
+      this.getList();
     },
-    getList () { }
+    onReSet () {
+      this.searchForm = {
+        search: null,
+        organId: null,
+        complaintsStatus: null,
+        timer: []
+      }
+      this.search()
+    },
+    subreset (str) {
+      if (str == 'AGREED') {
+        // 同意
+        this.$refs['visibleForm'].validate(flag => {
+          if (flag) {
+            let obj = {}
+            if (!this.visibleForm.reSignInStatus && !this.visibleForm.reSignOutStatus) {
+              this.$message.error('请修正签到状态或签退状态')
+              return
+            }
+            //visibleForm.reSignInStatus
+            this.visibleForm.reSignInStatus ? obj.signInStatus = 1 : null
+            this.visibleForm.reSignOutStatus ? obj.signOutStatus = 1 : null
+            obj.content = this.visibleForm.disposeContent
+            obj.teacherAttendanceId = this.visibleForm.teacherAttendanceId;
+            agreeTeacherAttendanceComplaints(obj).then(res => {
+              if (res.code == 200) {
+                this.dialogVisible = false;
+                this.$message.success('同意申诉成功')
+                this.getList();
+              }
+            })
+          }
+        })
+
+      } else {
+        // 拒绝
+        this.$refs['visibleForm'].validate(flag => {
+          if (flag) {
+            let obj = {}
+            obj.content = this.visibleForm.disposeContent
+            obj.teacherAttendanceId = this.visibleForm.teacherAttendanceId;
+            rejectTeacherAttendanceComplaints(obj).then(res => {
+              if (res.code == 200) {
+                this.dialogVisible = false;
+                this.$message.success('拒绝申诉成功')
+                this.getList();
+              }
+            })
+          }
+        })
+
+      }
+    },
+    lookDetail (row) {
+      this.visibleForm = {
+        complaintsContent: row.complaintsContent,
+        complaintsStatusEnum: row.complaintsStatusEnum,
+        disposeContent: row.disposeContent,
+        signInStatus: row.signInStatus,
+        signOutStatus: row.signOutStatus,
+        signInTime: row.signInTime,
+        signOutTime: row.signOutTime,
+        teacherAttendanceId: row.teacherAttendanceId
+      }
+      this.dialogVisible = true
+    }
   }
 };
 </script>
 <style lang='scss' scoped>
+.titleP {
+  line-height: 30px;
+}
 </style>

+ 3 - 3
src/views/workBenchManager/requestProcessing.vue

@@ -88,7 +88,7 @@
           <el-table-column align="center"
                            prop="updateTime"
                            width="150"
-                           label="申提交">
+                           label="申提交">
             <template slot-scope="scope">{{scope.row.updateTime | dateForMinFormat}}</template>
           </el-table-column>
           <el-table-column align="center"
@@ -127,8 +127,8 @@
         <el-form ref="visibleForm"
                  :model="visibleForm"
                  class="visibleForm">
-          <el-form-item label="申内容"
-                        :rules="[{ required: true, message: '请填写申内容',trigger: 'blur'}]"
+          <el-form-item label="申内容"
+                        :rules="[{ required: true, message: '请填写申内容',trigger: 'blur'}]"
                         prop="reason">
             <el-input type="textarea"
                       :rows="5"

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است