Browse Source

Merge branch '01/21VipReset' into online

wolyshaw 4 năm trước cách đây
mục cha
commit
8e03edc942

+ 13 - 5
src/views/arrearage-students/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>欠费学员列表 <filter-search @reload="FetchList" :keys="['visitFlag']"/>
+      <div class="squrt"></div>欠费学员列表 <filter-search @reload="FetchList" :keys="['visitFlag']" :moreKeys="['organId']"/>
     </h2>
     <div class="m-core">
       <save-form
@@ -20,9 +20,11 @@
         </el-form-item>
         <el-form-item>
           <el-select
-            v-model.trim="searchForm.organId"
+            v-model.trim="searchForm.organIds"
             clearable
             filterable
+            multiple
+            collapse-tags
             placeholder="请选择所属分部"
           >
             <el-option
@@ -182,7 +184,7 @@ import { queryArrearageStudents, getNoPaymentStudentMusicGroups } from './api'
 const initSearch = {
   search: '',
   eduTeacherId: null,
-  organId: null,
+  organIds: [],
   branchs: null,
   musicGroupId: null,
 }
@@ -198,7 +200,7 @@ export default {
       detail: null,
       musicList: [],
       searchForm: {
-        search: null,
+        ...initSearch
       },
       rules: {
         // 分页规则
@@ -210,6 +212,10 @@ export default {
     }
   },
   mounted() {
+    const { query } = this.$route
+    if (query.organId) {
+      this.searchForm.organIds = [Number(query.organId)]
+    }
     this.$store.dispatch('setBranchs')
     this.$store.dispatch('setSchools')
     this.FetchList()
@@ -219,10 +225,12 @@ export default {
     permission,
     async FetchList() {
       try {
+        const { organIds, ...rest} = this.searchForm
         const res = await queryArrearageStudents({
           page: this.rules.page,
           rows: this.rules.limit,
-          ...this.searchForm,
+          organIds: organIds.join(','),
+          ...rest,
         })
 
         this.rules.total = res.data.total;

+ 8 - 10
src/views/main/constant.js

@@ -57,8 +57,8 @@ export const errorType = {
   STUDENT_NOT_PAYMENT: {
     name: '学员未缴费',
     isError: true,
-    url: '/business/teamDetail',
-    resultKey: 'search',
+    url: '/business/ArrearageStudents',
+    always: true,
   },
   STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP: {
     name: '学员退团申请',
@@ -98,24 +98,22 @@ export const errorType = {
     }
   },
   TEACHER_EXCEPTION_ATTENDANCE: {
-    name: '老师考勤异常',
+    name: '课程考勤异常',
     isError: true,
     always: true,
-    url: '/operateManager/recodeList',
+    url: '/business/teamCourseList',
     query: {
-      attendanceStatus: 'ERR_ATTENDANCE',
-      visitFlag: 0,
+      searchType: 'ERR_ATTENDANCE',
       ...dates,
     },
   },
   TEACHER_NOT_A_CLASS: {
-    name: '老师未签到签退',
+    name: '课程异常',
     isError: true,
     always: true,
-    url: '/operateManager/recodeList',
+    url: '/business/teamCourseList',
     query: {
-      attendanceStatus: 'NO_ATTENDANCE',
-      visitFlag: 0,
+      searchType: 'NO_ATTENDANCE',
       ...dates,
     },
   },

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

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>控制台 <filter-search v-if="$route.query.tabrouter === 'teamSchedule'" :keys="['searchType']" @reload="reloadItem"/>
+      <div class="squrt"></div>控制台 <filter-search v-if="$route.query.tabrouter === 'teamSchedule'" :keys="['searchType']" :moreKeys="['organId']" @reload="reloadItem"/>
     </h2>
     <div class="m-core">
       <tab-router @change="changeKey">

+ 1 - 1
src/views/recodeManager/recodeList.vue

@@ -3,7 +3,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      老师考勤列表 <filter-search @reload="reloadSearch" :keys="['attendanceStatus', 'visitFlag']" :moreKeys="['start', 'end']"/>
+      老师考勤列表 <filter-search @reload="reloadSearch" :keys="['attendanceStatus', 'visitFlag']" :moreKeys="['start', 'end', 'organId']"/>
     </h2>
     <div class="m-core">
       <save-form

+ 30 - 1
src/views/teamDetail/componentCourse/studentRollCall.vue

@@ -67,23 +67,47 @@
             </div>
           </template>
         </el-table-column>
+        <el-table-column align='center'
+                         prop="ctrls"
+                         v-if="permission('visit/add?page=teamCourseList')"
+                         label="操作">
+          <template slot-scope="scope">
+            <el-button
+              type="text"
+              @click="addVisit(scope.row)"
+            >新增回访</el-button>
+          </template>
+        </el-table-column>
       </el-table>
       <pagination :total="rules.total"
                   :page.sync="rules.page"
                   :limit.sync="rules.limit"
                   @pagination="getList" />
     </div>
+    <el-dialog title="新增回访" width="500px" :visible.sync="visitVisible" append-to-body>
+      <visit
+        v-if="visitVisible && detail"
+        :detail="detail"
+        :username="detail.username"
+        @close="visitVisible = false"
+        @submited="getList"
+      />
+    </el-dialog>
   </div>
 </template>
 <script>
 import { findStudentAttendance, sumStudentAttendance } from '@/api/buildTeam'
 import pagination from '@/components/Pagination/index'
+import { permission } from '@/utils/directivePage'
+import visit from '@/views/withdrawal-application/modals/visit'
 export default {
   props: ['courseScheduleId'],
-  components: { pagination },
+  components: { pagination, visit },
   data () {
     return {
       tableList: [],
+      visitVisible: false,
+      detail: null,
       rules: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -103,12 +127,17 @@ export default {
     this.init()
   },
   methods: {
+    permission,
     init () {
       console.log(this.courseScheduleId)
       this.getList()
 
       //  发请求获取学生签到信息
     },
+    addVisit(row) {
+      this.visitVisible = true
+      this.detail = row
+    },
     getList () {
       findStudentAttendance({
         search: this.courseScheduleId, rows: this.rules.limit,

+ 21 - 1
src/views/teamDetail/componentCourse/teacherList.vue

@@ -118,6 +118,11 @@
                        size="small"
                        v-permission="'courseSchedule/queryTeacherSalary'"
                        @click="setCourseInfo(scope.row)">课酬调整</el-button>
+              <el-button
+                type="text"
+                v-permission="'teacherAttendance/update?page=teamCourseList'"
+                @click="hand(scope.row)"
+              >处理意见</el-button>
           </div>
         </template>
       </el-table-column>
@@ -128,6 +133,14 @@
       <gpsLoction v-if="gpsVisible"
                   :activeRow='activeRow' />
     </el-dialog>
+    <el-dialog title="处理意见" width="400px" :visible.sync="handVisible" append-to-body>
+      <hand
+        v-if="handVisible && detail"
+        :detail="detail"
+        @close="handVisible = false"
+        @submited="getList"
+      />
+    </el-dialog>
     <!-- <el-dialog title="课酬调整"
                width="800px"
                append-to-body
@@ -197,8 +210,9 @@ import { updateTeacherAttendance, getCourseList, getTeacherSalary } from "@/api/
 import { updateTeacherCoursesSalary } from '@/api/teacherManager'
 import { getCourseTeachers } from "@/api/teacherManager";
 import gpsLoction from "../componentCourse/gpsLocation";
+import hand from '@/views/recodeManager/modals/hand'
 export default {
-  components: { gpsLoction },
+  components: { gpsLoction, hand },
   props: ['courseScheduleId', 'teachMode'],
   data () {
     return {
@@ -209,6 +223,8 @@ export default {
       dialogTableVisible: false,
       innerVisible: false,
       activeTeacher: null,
+      handVisible: null,
+      detail: null,
       teacherMask: {
         salary: '',
         subsidy: '',
@@ -242,6 +258,10 @@ export default {
       this.activeRow = row;
       this.gpsVisible = true
     },
+    hand(row) {
+      this.handVisible = true
+      this.detail = row
+    },
     mackAttendance (row) {
 
       this.$confirm('确定补考勤', '提示', {

+ 1 - 1
src/views/teamDetail/teamClassList.vue

@@ -3,7 +3,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      班级列表 <filter-search :keys="['lessThenThreeHighOnline']" @reload="getList"/>
+      班级列表 <filter-search :keys="['lessThenThreeHighOnline']" @reload="getList" :moreKeys="['organId']"/>
     </h2>
     <div class="m-core">
       <save-form

+ 16 - 2
src/views/teamDetail/teamCourseList.vue

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>
-      课表列表
+      课表列表 <filter-search @reload="reloadSearch" :keys="['searchType']" :moreKeys="['start', 'end', 'organId']"/>
     </h2>
     <div class="m-core">
       <!-- 搜索类型 -->
@@ -633,7 +633,7 @@ const initSearch = {
   organIdList: null,
   courseStatus: null,
   courseType: null,
-  timer: [nowTime, nowTime], // 时间
+  timer: [], // 时间
   class: null,
   teachType: null,
   mergeCourseType: null,
@@ -698,6 +698,15 @@ export default {
     },
   },
   mounted() {
+    const { query } = this.$route
+    if (query.start || query.end) {
+      this.searchForm.timer = [query.start, query.end]
+    } else {
+      this.searchForm.timer = [nowTime, nowTime]
+    }
+    if (query.organId) {
+      this.searchForm.organIdList = Number(query.organId)
+    }
     this.$store.dispatch("setBranchs");
     this.$store.dispatch("setTeachers");
     this.$store.dispatch("setSchools");
@@ -710,6 +719,10 @@ export default {
     permission(str, parent) {
       return permission(str, parent);
     },
+    reloadSearch() {
+      this.searchForm.timer = [nowTime, nowTime]
+      this.getList()
+    },
     async removeCourse() {
       if(this.deleteList.length < 1){
         this.$message.error('请自少选择一个班级')
@@ -779,6 +792,7 @@ export default {
         ...rest,
         page: this.rules.page,
         rows: this.rules.limit,
+        searchType: this.$route.query.searchType,
         ...getTimes(creatTimer, ["createStartDate", "createEndDate"]),
         ...getTimes(timer, ["startTime", "endTime"]),
       };

+ 1 - 1
src/views/teamDetail/teamList.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>乐团列表 <filter-search @reload="getList"/>
+      <div class="squrt"></div>乐团列表 <filter-search @reload="getList" :moreKeys="['organId']"/>
     </h2>
     <div class="m-core">
       <div class="btnList" style="margin-bottom: 20px">

+ 1 - 1
src/views/withdrawal-application/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <h2>
-      <div class="squrt"></div>退团申请列表 <filter-search @reload="FetchList" :keys="['visitFlag']"/>
+      <div class="squrt"></div>退团申请列表 <filter-search @reload="FetchList" :keys="['visitFlag']" :moreKeys="['organId']"/>
     </h2>
     <div class="m-core">
       <save-form