瀏覽代碼

首页服务指标

1
mo 4 年之前
父節點
當前提交
143633a392

+ 2 - 0
src/components/remote-search/index.vue

@@ -32,6 +32,7 @@
 const placeholder = {
   setTeachers: "请选择老师",
   setEducations: "请选乐团主管",
+  setEmploys:"请选择操作人"
 };
 import { throttle, slice, uniqBy } from "lodash";
 import selects from "@/store/modules/selects";
@@ -131,6 +132,7 @@ export default {
       return {
         setTeachers: "teachers",
         setEducations: "educations",
+        setEmploys:'employs'
       };
     },
   },

+ 3 - 2
src/store/modules/app.js

@@ -15,6 +15,7 @@ const state = {
     musicPatrol: false,
     studentInfo: false,
     teacherInfo: false,
+    attendanceServe:false
   },
 }
 
@@ -38,10 +39,10 @@ const mutations = {
     state.device = device
   },
   COMMIT_DOT_STATUS: (state, status) => {
-    const { musicPatrol, studentInfo, teacherInfo } = status
+    const { musicPatrol, studentInfo, teacherInfo,attendanceServe } = status
     state.status = {
       ...status,
-      indexErrData: musicPatrol || studentInfo || teacherInfo
+      indexErrData: musicPatrol || studentInfo || teacherInfo || attendanceServe
     }
     toggleDot(state.status)
   }

+ 25 - 2
src/store/modules/selects.js

@@ -1,7 +1,7 @@
 /* eslint-disable no-empty */
 // import { branchQueryPage } from '@/api/specialSetting'
 import { getSubject, getTeacher,findEducationUsers,getEmployeeOrgan } from '@/api/buildTeam'
-import { getSchool } from '@/api/systemManage'
+import { getSchool,queryEmployByOrganId } from '@/api/systemManage'
 import { vipGroupCategory } from "@/api/vipSeting"
 import { findTechnician } from '@/api/repairManager'
 
@@ -26,7 +26,8 @@ export default {
     schools: [],
     vipGroupCategory: [],
     educations:[],
-    technician: []
+    technician: [],
+    employs:[],
   },
   mutations: {
     commit_branchs: (state, branchs) => {
@@ -57,6 +58,17 @@ export default {
     },
     commit_technician: (state, technician) => {
       state.technician = technician
+    },
+    commit_employs:(state,employs)=>{
+      state.employs = employs.map(emloys=>{
+        return {
+          ...emloys,
+          id:emloys.id,
+          userId:emloys.id,
+          userName:emloys.realName,
+          realName:emloys.realName
+        }
+      })
     }
   },
   actions: {
@@ -131,6 +143,17 @@ export default {
         loadings.commit_technician = false
       }
 
+    },
+    async setEmploys({commit,state},force){
+      if ((!state.employs.length || force === true) && !loadings.commit_employs) {
+        loadings.commit_employs = queryEmployByOrganId({rows:99999})
+        try {
+          const res = await loadings.commit_employs
+          commit('commit_employs', res.data.rows)
+        } catch (error) {}
+        loadings.commit_employs = false
+      }
+
     }
   }
 }

+ 10 - 1
src/views/main/abnormal/index.vue

@@ -110,11 +110,15 @@ export default {
           name: '日常行政',
           num: status.teacherInfo || false,
         },
+        ATTENDANCE_SERVE:{
+          name:'考勤及服务',
+          num: status.attendanceServe || false,
+        }
       }
     },
     permissionTags() {
       const url = 'getIndexErrData?errorType='
-      const permissions = ['MUSIC_PATROL', 'STUDENT_INFO', 'TEACHER_INFO']
+      const permissions = ['MUSIC_PATROL', 'STUDENT_INFO', 'TEACHER_INFO','ATTENDANCE_SERVE']
       return permissions.filter(item => {
         return this.permission(url + item)
       })
@@ -134,6 +138,7 @@ export default {
       return tags
     },
     activeList() {
+
       const list = this.listByType[this.activeKey] || []
       return list
     },
@@ -167,9 +172,11 @@ export default {
       this.FetchList()
     },
     formatData(data) {
+      console.log(data,'格式化方法')
       const list = {}
       for (const item of data) {
         const row = errorType[item.errorType] || {}
+        console.log(row)
         const key = row.parent || item.errorType
         if (!list[key]) {
           list[key] = []
@@ -180,7 +187,9 @@ export default {
             ...row,
           }
         )
+
       }
+       console.log(list)
       return Object.values(list)
     },
     async FetchList() {

+ 0 - 3
src/views/main/baseinfo/modals/searchHeader.vue

@@ -51,10 +51,8 @@
 </template>
 <script>
 import {
-
   getNowDateAndSunday,
   getNowDateAndMonday,
-
 } from "@/utils/date";
 export default {
   props:['title','dates','isShowQuert'],
@@ -67,7 +65,6 @@ export default {
   methods: {
     changeWeek(val){
       this.date = [getNowDateAndMonday(val[0]),getNowDateAndSunday(val[1])]
-      console.log( this.date)
        this.submitDate( this.date)
     },
     changeValue(val) {

+ 40 - 31
src/views/main/constant.js

@@ -1,37 +1,37 @@
 import dayjs from 'dayjs'
 
 export const descs = {
-  STUDENT_REGISTRATION_NUM:'截止到昨日,系统注册学员总数',
-  CHARGE_STUDENT_CHANGE_RATE:'截止到昨日,在册学员付费率(有订单交易成功的都算,导入的也算)',
-  ACTIVATION_RATE:'截止到昨日,筹备中&进行中乐团在读学员和有VIP或网管课学员激活率',
-  SCHOOL:'截止到昨日,存在【进行中】乐团的【合作单位】总数',
-  PROGRESS_MUSIC_GROUP_NUM:'截止到昨日,【进行中】乐团总数',
-  TEACHER_NUM:'截止到昨日,非冻结,且离职时间在昨日之后的老师总数',
-  FULL_TIME_NUM:'截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【全职】的老师总数',
-  PART_TIME_NUM:'截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【兼职】的老师总数',
-  SURPLUS_COURSE_NUM:'截止到昨日,系统中【未开始】课程总数(乐团+VIP+网管)',
-  SURPLUS_MUSIC_COURSE_NUM:'截止到昨日,系统中【未开始】乐团课程总数',
-  SURPLUS_VIP_COURSE_NUM:'截止到昨日,系统中【未开始】VIP课程总数',
-  SURPLUS_PRACTICE_COURSE_NUM:'截止到昨日,系统中【未开始】网管课程总数',
-  OVER_COURSE_NUM:'已消耗课时总数:截止到昨日,系统中【已结束】&【已结算】课程总数(乐团+VIP+网管)',
-  OVER_MUSIC_COURSE_NUM:'已消耗乐团课时:截止到昨日,系统中【已结束】&【已结算】乐团课程总数',
-  OVER_VIP_COURSE_NUM:'已消耗VIP课时:截止到昨日,系统中【已结束】&【已结算】VIP课程总数',
-  OVER_PRACTICE_COURSE_NUM:'已消耗网管课时:截止到昨日,系统中【已结束】&【已结算】网管课程总数',
-  FINANCE_PAY:'筛选时间段内现金收入总和',
-  FINANCE_BALANCE_AMOUNT:'筛选时间段内余额消耗总和',
-  FINANCE_AMOUNT:'筛选时间段内支出金额总和',
-  HOMEWORK_CREATE_RATE:'筛选时间段内,服务指标作业总布置率',
-  HOMEWORK_SUBMIT_RATE:'筛选时间段内,已布置的作业学员总提交率(包括服务指标外的作业)',
-  HOMEWORK_COMMENT_RATE:'筛选时间段内,学员已提交的作业老师总点评率',
-  MUSIC_GROUP_COURSE:'筛选时间段内,乐团课程总数(未开始+已结束+已结算)',
-  VIP_GROUP_COURSE:'筛选时间段内,VIP课程总数(未开始+已结束+已结算)',
-  PRACTICE_GROUP_COURSE:'筛选时间段内,网管课程总数(未开始+已结束+已结算)',
-  ADD_STUDENT_REGISTRATION_NUM:'筛选时间段内,新注册学员总数',
-  MUSIC_GROUP_STUDENT:'筛选时间段中最后一日,【进行中】乐团【在读】学员总数,分部下去重',
-  NEWLY_STUDENT_NUM:'筛选时间段内,新增的【进行中】乐团【在读】学员总数(学员当前无在读乐团则记为新增)',
-  QUIT_MUSIC_GROUP_STUDENT_NUM:'筛选时间段内,乐团退团学员总数(学员无在读乐团,则记为退团)',
-  VIP_PRACTICE_STUDENT_NUM:'筛选时间段中最后一日,学员有剩余VIP或网管未上课时的总人数(分部下去重)',
-  VIP_PRACTICE_ADD_STUDENT_NUM:'筛选时间段内,新增的VIP/网管课付费学员总数'
+  STUDENT_REGISTRATION_NUM: '截止到昨日,系统注册学员总数',
+  CHARGE_STUDENT_CHANGE_RATE: '截止到昨日,在册学员付费率(有订单交易成功的都算,导入的也算)',
+  ACTIVATION_RATE: '截止到昨日,筹备中&进行中乐团在读学员和有VIP或网管课学员激活率',
+  SCHOOL: '截止到昨日,存在【进行中】乐团的【合作单位】总数',
+  PROGRESS_MUSIC_GROUP_NUM: '截止到昨日,【进行中】乐团总数',
+  TEACHER_NUM: '截止到昨日,非冻结,且离职时间在昨日之后的老师总数',
+  FULL_TIME_NUM: '截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【全职】的老师总数',
+  PART_TIME_NUM: '截止到昨日,非冻结、离职时间在昨日之后,且工作类型为【兼职】的老师总数',
+  SURPLUS_COURSE_NUM: '截止到昨日,系统中【未开始】课程总数(乐团+VIP+网管)',
+  SURPLUS_MUSIC_COURSE_NUM: '截止到昨日,系统中【未开始】乐团课程总数',
+  SURPLUS_VIP_COURSE_NUM: '截止到昨日,系统中【未开始】VIP课程总数',
+  SURPLUS_PRACTICE_COURSE_NUM: '截止到昨日,系统中【未开始】网管课程总数',
+  OVER_COURSE_NUM: '已消耗课时总数:截止到昨日,系统中【已结束】&【已结算】课程总数(乐团+VIP+网管)',
+  OVER_MUSIC_COURSE_NUM: '已消耗乐团课时:截止到昨日,系统中【已结束】&【已结算】乐团课程总数',
+  OVER_VIP_COURSE_NUM: '已消耗VIP课时:截止到昨日,系统中【已结束】&【已结算】VIP课程总数',
+  OVER_PRACTICE_COURSE_NUM: '已消耗网管课时:截止到昨日,系统中【已结束】&【已结算】网管课程总数',
+  FINANCE_PAY: '筛选时间段内现金收入总和',
+  FINANCE_BALANCE_AMOUNT: '筛选时间段内余额消耗总和',
+  FINANCE_AMOUNT: '筛选时间段内支出金额总和',
+  HOMEWORK_CREATE_RATE: '筛选时间段内,服务指标作业总布置率',
+  HOMEWORK_SUBMIT_RATE: '筛选时间段内,已布置的作业学员总提交率(包括服务指标外的作业)',
+  HOMEWORK_COMMENT_RATE: '筛选时间段内,学员已提交的作业老师总点评率',
+  MUSIC_GROUP_COURSE: '筛选时间段内,乐团课程总数(未开始+已结束+已结算)',
+  VIP_GROUP_COURSE: '筛选时间段内,VIP课程总数(未开始+已结束+已结算)',
+  PRACTICE_GROUP_COURSE: '筛选时间段内,网管课程总数(未开始+已结束+已结算)',
+  ADD_STUDENT_REGISTRATION_NUM: '筛选时间段内,新注册学员总数',
+  MUSIC_GROUP_STUDENT: '筛选时间段中最后一日,【进行中】乐团【在读】学员总数,分部下去重',
+  NEWLY_STUDENT_NUM: '筛选时间段内,新增的【进行中】乐团【在读】学员总数(学员当前无在读乐团则记为新增)',
+  QUIT_MUSIC_GROUP_STUDENT_NUM: '筛选时间段内,乐团退团学员总数(学员无在读乐团,则记为退团)',
+  VIP_PRACTICE_STUDENT_NUM: '筛选时间段中最后一日,学员有剩余VIP或网管未上课时的总人数(分部下去重)',
+  VIP_PRACTICE_ADD_STUDENT_NUM: '筛选时间段内,新增的VIP/网管课付费学员总数'
 }
 
 const dates = {
@@ -175,6 +175,15 @@ export const errorType = {
       ...dates
     },
   },
+  TEACHER_SERVE_ERROR: {
+    name: '服务指标异常',
+    isError: true,
+    always: true,
+    url: '/operateManager/serverDetail',
+    query: {
+      searchType: 'TEACHER_SERVE_ERROR',
+    },
+  }
 }
 
 export const matterTypes = {

+ 26 - 0
src/views/serverDetail/api.js

@@ -0,0 +1,26 @@
+import request2 from '@/utils/request2'
+
+export const getTeacherServeInfo = data => request2({
+  url: '/api-web/exercisesSituation/queryTeacherServeInfo',
+  params: data,
+  method: 'get',
+})
+
+// exercisesSituation/teacherServeRemindPush
+export const teacherServeRemindPush = data => request2({
+  url: '/api-web/exercisesSituation/teacherServeRemindPush',
+  data: data,
+  method: 'post',
+})
+
+export const getTeacherServeHomeworkDetail = data => request2({
+  url: '/api-web/exercisesSituation/queryTeacherServeHomeworkDetail',
+  params: data,
+  method: 'get',
+})
+
+export const getTeacherServeExtraDetail = data => request2({
+  url: '/api-web/exercisesSituation/queryTeacherServeExtraDetail',
+  params: data,
+  method: 'get',
+})

+ 52 - 14
src/views/serverDetail/conponent/afterWork.vue

@@ -7,39 +7,57 @@
     >
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="id"
         label="课程编号"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="name"
         label="服务课程"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="groupType"
         label="课程类型"
-      ></el-table-column>
+      >
+      <template slot-scope="scope">
+        <div>
+          {{scope.row.groupType | coursesType}}
+        </div>
+      </template>
+      </el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="studentNum"
         label="学员数量"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="subjectName"
         label="专业"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="status"
         label="课程状态"
-      ></el-table-column>
+      >
+      <template slot-scope="scope">
+        <div>
+          {{scope.row.status | coursesStatus}}
+        </div>
+      </template>
+      </el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="homeworkExist"
         label="是否布置作业"
-      ></el-table-column>
+      >
+      <template slot-scope="scope">
+        <div>
+          {{scope.row.homeworkExist?'是':'否'}}
+        </div>
+      </template>
+      </el-table-column>
     </el-table>
     <pagination
       sync
@@ -53,11 +71,13 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
+import { getTeacherServeHomeworkDetail } from "../api";
 export default {
-  components:{pagination},
+  components: { pagination },
+  props: ["detail"],
   data() {
     return {
-      tableList:[],
+      tableList: [],
       rules: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -73,8 +93,26 @@ export default {
     this.init();
   },
   methods: {
-    init() {},
-    getList() {},
+    init() {
+      this.getList();
+    },
+    async getList() {
+      console.log(this.detail)
+      try {
+      const dayjs = this.$helpers.dayjs
+     const ruselt =  await getTeacherServeHomeworkDetail({
+          page: this.rules.page,
+          rows: this.rules.limit,
+          monday: dayjs(this.detail.monday).format("YYYY-MM-DD"),
+          sunday: dayjs(this.detail.sunday).format("YYYY-MM-DD"),
+          teacherId:this.detail.teacherId
+        });
+        this.tableList = ruselt.data.rows
+        this.rules.total = ruselt.data.total
+      } catch (e) {
+        console.log(e)
+      }
+    },
     search() {
       this.rules.page = 1;
       this.getList();

+ 32 - 7
src/views/serverDetail/conponent/outWork.vue

@@ -7,24 +7,30 @@
     >
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="userId"
         label="学员编号"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="username"
         label="学员姓名"
       ></el-table-column>
       <el-table-column
         align="center"
-        prop="studentId"
+        prop="subjectNames"
         label="专业"
       ></el-table-column>
       <el-table-column
         align="center"
         prop="studentId"
         label="是否布置作业"
-      ></el-table-column>
+      >
+       <template slot-scope="scope">
+        <div>
+          {{scope.row.homeworkExist?'是':'否'}}
+        </div>
+      </template>
+      </el-table-column>
     </el-table>
     <pagination
       sync
@@ -38,7 +44,9 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
+import { getTeacherServeExtraDetail } from "../api";
 export default {
+  props:['detail'],
     components:{pagination},
   data() {
     return {
@@ -54,12 +62,29 @@ export default {
   },
   mounted() {
     // 获取分部
-
     this.init();
   },
   methods: {
-    init() {},
-    getList() {},
+    init() {
+      this.getList()
+    },
+    async getList() {
+      console.log(this.detail)
+      try {
+      const dayjs = this.$helpers.dayjs
+     const ruselt =  await getTeacherServeExtraDetail({
+          page: this.rules.page,
+          rows: this.rules.limit,
+          monday: dayjs(this.detail.monday).format("YYYY-MM-DD"),
+          sunday: dayjs(this.detail.sunday).format("YYYY-MM-DD"),
+          teacherId:this.detail.teacherId
+        });
+        this.tableList = ruselt.data.rows
+        this.rules.total = ruselt.data.total
+      } catch (e) {
+        console.log(e)
+      }
+    },
     search() {
       this.rules.page = 1;
       this.getList();

+ 6 - 2
src/views/serverDetail/conponent/serverMask.vue

@@ -1,8 +1,8 @@
 <template>
   <div>
     <el-tabs v-model="activeName">
-      <el-tab-pane label="课后作业" name="first" lazy><afterWork /></el-tab-pane>
-      <el-tab-pane label="课外训练" name="second" lazy><outWork /> </el-tab-pane>
+      <el-tab-pane label="课后作业" name="first" lazy ><afterWork v-if="activeName=='first'" v-permission="'exercisesSituation/queryTeacherServeHomeworkDetail'" :detail='detail' /></el-tab-pane>
+      <el-tab-pane label="课外训练" name="second" lazy ><outWork  v-if="activeName=='second'" v-permission="'exercisesSituation/queryTeacherServeExtraDetail'" :detail='detail' /> </el-tab-pane>
     </el-tabs>
   </div>
 </template>
@@ -10,12 +10,16 @@
 import afterWork from './afterWork'
 import outWork from './outWork'
 export default {
+  props:['detail'],
   components:{afterWork,outWork},
   data() {
     return {
       activeName: "first",
     };
   },
+  mounted(){
+    console.log(this.detail)
+  }
 };
 </script>
 <style lang="scss" scoped>

+ 163 - 38
src/views/serverDetail/index.vue

@@ -3,7 +3,12 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      服务指标明细<filter-search ref='filterSearch' @reload="reloadSearch" :keys="['searchType']" :moreKeys="['start', 'end', 'organId']"/>
+      服务指标明细<filter-search
+        ref="filterSearch"
+        @reload="reloadSearch"
+        :keys="['searchType']"
+        :moreKeys="['organId']"
+      />
     </h2>
     <div class="m-core">
       <save-form
@@ -11,11 +16,12 @@
         :model="searchForm"
         @submit="search"
         @reset="onReSet"
+        ref="form"
       >
-        <el-form-item>
+        <el-form-item prop="organId">
           <el-select
             class="multiple"
-            v-model.trim="searchForm.organIdList"
+            v-model.trim="searchForm.organId"
             filterable
             clearable
             placeholder="请选择分部"
@@ -28,16 +34,16 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item>
+        <el-form-item prop="teacherId">
           <remote-search
             :commit="'setTeachers'"
             v-model="searchForm.teacherId"
           />
         </el-form-item>
-        <el-form-item>
+        <el-form-item prop="unDone">
           <el-select
             class="multiple"
-            v-model.trim="searchForm.operatingTag"
+            v-model.trim="searchForm.unDone"
             clearable
             placeholder="是否异常"
           >
@@ -45,10 +51,10 @@
             <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item>
+        <el-form-item prop="reminded">
           <el-select
             class="multiple"
-            v-model.trim="searchForm.operatingTag"
+            v-model.trim="searchForm.reminded"
             clearable
             placeholder="是否提醒"
           >
@@ -56,26 +62,23 @@
             <el-option label="否" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item>
-          <el-select
-            class="multiple"
-            v-model.trim="searchForm.operatingTag"
-            clearable
-            placeholder="操作人"
-          >
-            <el-option label="是" :value="1"></el-option>
-            <el-option label="否" :value="0"></el-option>
-          </el-select>
+        <el-form-item prop="operatorId">
+          <remote-search
+            :commit="'setEmploys'"
+            v-model.trim="searchForm.operatorId"
+          />
         </el-form-item>
         <el-form-item>
           <el-date-picker
             style="width: 410px"
-            v-model.trim="searchForm.orderDate"
+            v-model.trim="orderDate"
             type="daterange"
             value-format="yyyy-MM-dd"
             range-separator="至"
             start-placeholder="开始日期"
             end-placeholder="结束日期"
+            :clearable="false"
+            @change="changeWeek"
             :picker-options="{ firstDayOfWeek: 1 }"
           >
           </el-date-picker>
@@ -85,50 +88,65 @@
           <el-button native-type="reset" type="danger">重置</el-button>
         </el-form-item>
       </save-form>
+      <div class="btnWraps" style="margin-bottom: 20px">
+        <el-button
+          type="primary"
+          v-permission="'exercisesSituation/teacherServeRemindPush'"
+          @click="remindTeachers"
+          >批量提醒</el-button
+        >
+      </div>
       <div class="tableWrap">
         <el-table
           style="width: 100%"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           :data="tableList"
+          @selection-change="handleSelectionChange"
         >
           <el-table-column
+            type="selection"
+            width="55"
+            :selectable="checkSelectable"
+          >
+          </el-table-column>
+          <el-table-column
             align="center"
-            prop="studentId"
+            prop="organName"
             label="分部"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="teacherId"
             label="老师编号"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="teacherName"
             label="老师姓名"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="homeworkNum"
             label="课后作业(节)"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="exerciseNum"
             label="课外作业(人)"
           ></el-table-column>
+          <el-table-column align="center" prop="studentId" label="是否异常">
+            <template slot-scope="scope">
+              {{ scope.row.unDone ? "是" : "否" }}
+            </template>
+          </el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
-            label="是否异常"
-          ></el-table-column>
-          <el-table-column
-            align="center"
-            prop="studentId"
+            prop="remindDate"
             label="提醒时间"
           ></el-table-column>
           <el-table-column
             align="center"
-            prop="studentId"
+            prop="operatorName"
             label="操作人"
           ></el-table-column>
           <el-table-column align="center" prop="studentId" label="操作">
@@ -137,7 +155,13 @@
                 <el-button type="text" @click="gotoDteail(scope.row)"
                   >查看</el-button
                 >
-                <el-button type="text">提醒老师</el-button>
+                <el-button
+                  type="text"
+                  v-if="scope.row.unDone"
+                  v-permission="'exercisesSituation/teacherServeRemindPush'"
+                  @click="remindTeacher(scope.row)"
+                  >提醒老师</el-button
+                >
               </div>
             </template>
           </el-table-column>
@@ -156,10 +180,9 @@
         destroy-on-close
         :close-on-click-modal="false"
         :visible.sync="lookVisible"
-          v-if="lookVisible"
+        v-if="lookVisible"
       >
         <serverMask
-
           :detail="activeRow"
           @close="lookVisible = false"
           @submited="getList"
@@ -180,15 +203,23 @@ import { getToken } from "@/utils/auth";
 import pagination from "@/components/Pagination/index";
 import serverMask from "./conponent/serverMask";
 import load from "@/utils/loading";
+import { getTeacherServeInfo, teacherServeRemindPush } from "./api";
+import { getTimes } from "@/utils";
+import { getNowDateAndSunday, getNowDateAndMonday } from "@/utils/date";
 export default {
   components: { pagination, serverMask },
   data() {
     return {
       searchForm: {
-        organIdList: [],
+        organId: "",
         teacherId: "",
+        operatorId: "",
+        reminded: "",
+        unDone: "",
+        operatorId: "",
       },
-      tableList: [{}],
+      orderDate: [],
+      tableList: [],
       organList: [],
       rules: {
         // 分页规则
@@ -199,6 +230,7 @@ export default {
       },
       lookVisible: false,
       activeRow: null,
+      chioseList: [],
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -212,17 +244,110 @@ export default {
   methods: {
     init() {
       this.$store.dispatch("setBranchs");
+      this.$store.dispatch("setEmploys");
+      this.getDefaultTime();
+      if (this.$route.query.searchType) {
+        console.log();
+        this.searchForm.organId = this.$route.query.organId * 1 || "";
+        const dayjs = this.$helpers.dayjs;
+        let nowDate = dayjs(new Date()).format("YYYY-MM-DD");
+        this.orderDate = [
+          getNowDateAndMonday(nowDate),
+          getNowDateAndSunday(nowDate),
+        ];
+      }
+
+      this.getList();
+    },
+    async getList() {
+
+      try {
+        const {orderDate, ...rest} = this.searchForm;
+        const result = await getTeacherServeInfo({
+          ...rest,
+          ...getTimes(this.orderDate, ["monday", "sunday"]),
+          rows: this.rules.limit,
+          page: this.rules.page,
+        });
+        this.rules.total = result.data.total;
+        this.tableList = result.data.rows;
+      } catch (e) {}
     },
-    getList() {},
     search() {
       this.rules.page = 1;
       this.getList();
     },
-    onReSet() {},
+    onReSet() {
+      this.$refs.form.resetFields();
+      this.getDefaultTime();
+      this.search();
+    },
     gotoDteail(row) {
       this.activeRow = row;
       this.lookVisible = true;
     },
+    reloadSearch() {
+      this.getList();
+    },
+    getDefaultTime() {
+      const dayjs = this.$helpers.dayjs;
+      let nowDate = dayjs(new Date()).format("YYYY-MM-DD");
+      let lastWeek = dayjs(nowDate).subtract(1, "week").format("YYYY-MM-DD");
+      this.orderDate = [
+        getNowDateAndMonday(lastWeek),
+        getNowDateAndSunday(nowDate),
+      ];
+    },
+    changeWeek(val) {
+      if (val) {
+        this.orderDate =  [
+          getNowDateAndMonday(val[0]),
+          getNowDateAndSunday(val[1]),
+        ]
+      } else {
+        this.getDefaultTime();
+      }
+    },
+    remindTeacher(row) {
+      this.$confirm("是否给老师发送提醒?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(async () => {
+        try {
+          const result = await teacherServeRemindPush([row]);
+          this.getList();
+          this.$message.success("提醒成功");
+        } catch (e) {
+          console.log(e);
+        }
+      });
+    },
+    remindTeachers() {
+      if (this.chioseList.length <= 0) {
+        this.$message.error("请至少选择一条信息");
+        return;
+      }
+      this.$confirm("是否批量给老师发送提醒?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(async () => {
+        try {
+          const result = await teacherServeRemindPush(this.chioseList);
+          this.getList();
+          this.$message.success("提醒成功");
+        } catch (e) {
+          console.log(e);
+        }
+      });
+    },
+    checkSelectable(row) {
+      return row.unDone;
+    },
+    handleSelectionChange(arr) {
+      this.chioseList = arr;
+    },
   },
 };
 </script>

+ 5 - 3
vue.config.js

@@ -21,8 +21,8 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.57:8000' //勇哥
 // let target = 'http://dev.dayaedu.com' // 测试服
-let target = 'http://47.114.176.40:8000'
-// let target = 'http://192.168.3.134' // 乔
+// let target = 'http://47.114.176.40:8000' //开发环境
+let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**
@@ -61,8 +61,10 @@ module.exports = {
       // detail: https://cli.vuejs.org/config/#devserver-proxy
       // http://47.99.212.176:8000
       // http://192.168.3.28:8000
+      // http://192.168.3.134
+      // http://47.114.176.40:8000
       '/api-auth': {
-        target: 'http://47.114.176.40:8000',
+        target: 'http://192.168.3.134',
         changeOrigin: true,
         pathRewrite: {
           '^api-auth': ''