浏览代码

Merge branch '11/24SAAS' into 02/23reviewBUG

mo 2 年之前
父节点
当前提交
78d959885f
共有 68 个文件被更改,包括 839 次插入753 次删除
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.211c1a0e.css
  3. 0 1
      dist/static/css/chunk-0e66c065.7f85eccf.css
  4. 0 0
      dist/static/css/chunk-1dadc8f3.fb8bfdff.css
  5. 0 0
      dist/static/css/chunk-28502d3a.6a0de770.css
  6. 1 0
      dist/static/css/chunk-358e6250.b8019dad.css
  7. 0 0
      dist/static/css/chunk-35ab18ab.ed7d66f8.css
  8. 1 1
      dist/static/css/chunk-49336038.72454671.css
  9. 0 0
      dist/static/css/chunk-62f33710.f836bca4.css
  10. 0 0
      dist/static/css/chunk-773f2950.10ff072d.css
  11. 0 1
      dist/static/css/chunk-97a56d70.759433e9.css
  12. 1 0
      dist/static/css/chunk-a2da9ad4.962826f3.css
  13. 1 0
      dist/static/css/chunk-ab31a9b2.9031377e.css
  14. 0 1
      dist/static/css/chunk-be4f905e.0af770d4.css
  15. 0 0
      dist/static/css/chunk-e0f46704.71d38179.css
  16. 0 0
      dist/static/js/app.5f6fd769.js
  17. 0 0
      dist/static/js/app.7243ad6d.js
  18. 0 0
      dist/static/js/chunk-0840c480.feefaa35.js
  19. 0 0
      dist/static/js/chunk-0e66c065.460e6586.js
  20. 0 0
      dist/static/js/chunk-1dadc8f3.dd947f31.js
  21. 0 0
      dist/static/js/chunk-28502d3a.0716316e.js
  22. 0 0
      dist/static/js/chunk-358e6250.3bd82ac0.js
  23. 1 1
      dist/static/js/chunk-35ab18ab.0eca059f.js
  24. 0 0
      dist/static/js/chunk-49336038.42b87fc2.js
  25. 0 0
      dist/static/js/chunk-5bc36f52.77c1dc90.js
  26. 0 0
      dist/static/js/chunk-5ea75314.201c46d7.js
  27. 0 0
      dist/static/js/chunk-5ea75314.c56d6a08.js
  28. 0 0
      dist/static/js/chunk-62f33710.acaf9eb9.js
  29. 0 0
      dist/static/js/chunk-65ee3192.61886eae.js
  30. 0 0
      dist/static/js/chunk-69862ba4.fdf37c66.js
  31. 0 0
      dist/static/js/chunk-71c2dfde.2660c3b8.js
  32. 0 0
      dist/static/js/chunk-773f2950.a5914ae3.js
  33. 0 0
      dist/static/js/chunk-94618784.e3aa985c.js
  34. 0 0
      dist/static/js/chunk-94618784.fab6db7d.js
  35. 0 0
      dist/static/js/chunk-9cc174e6.751be9e4.js
  36. 0 0
      dist/static/js/chunk-9cc174e6.bb2c9c5e.js
  37. 0 0
      dist/static/js/chunk-a2da9ad4.f8d72eee.js
  38. 0 0
      dist/static/js/chunk-ab31a9b2.92279fcd.js
  39. 0 0
      dist/static/js/chunk-b6178358.422e6d1a.js
  40. 0 0
      dist/static/js/chunk-b6178358.cd708c94.js
  41. 0 0
      dist/static/js/chunk-be4f905e.6bc40d58.js
  42. 0 0
      dist/static/js/chunk-e0f46704.bf2a4c10.js
  43. 0 0
      dist/static/js/chunk-e87ca8f2.15b69bff.js
  44. 2 1
      src/components/filter-search/index.vue
  45. 2 2
      src/components/remote-search/index.vue
  46. 3 3
      src/views/accompanyManager/accompanys.vue
  47. 5 4
      src/views/arrearage-students/index.vue
  48. 11 9
      src/views/indexErrDataRecord/components/visitError.vue
  49. 3 1
      src/views/main/abnormal/index.vue
  50. 1 0
      src/views/main/abnormal/title.vue
  51. 53 13
      src/views/main/constant.js
  52. 1 1
      src/views/main/index.vue
  53. 9 1
      src/views/main/notClassStudent.vue
  54. 4 2
      src/views/main/schedule-branch/modals/create.vue
  55. 8 7
      src/views/main/teamSchedule/index.vue
  56. 3 3
      src/views/teacherManager/teacherOperation/components/accompanySet.vue
  57. 1 1
      src/views/teamDetail/componentCourse/compoundClass.vue
  58. 1 1
      src/views/teamDetail/componentCourse/modals/resetCourses.vue
  59. 1 1
      src/views/teamDetail/componentCourse/resetClass.vue
  60. 1 1
      src/views/teamDetail/components/courseList.vue
  61. 50 31
      src/views/teamDetail/components/modals/class-resetclass-name.vue
  62. 1 1
      src/views/teamDetail/components/modals/classList-group.vue
  63. 3 3
      src/views/teamDetail/components/modals/classroom-setting-item-merge.vue
  64. 1 1
      src/views/teamDetail/components/modals/classroom-setting-item.vue
  65. 16 7
      src/views/teamDetail/teamClassList.vue
  66. 1 1
      src/views/teamDetail/teamCourseList.vue
  67. 650 650
      src/views/vipClass/vipDetail/components/teacherRecord.vue
  68. 3 3
      src/views/vipClass/vipReset.vue

文件差异内容过多而无法显示
+ 0 - 0
dist/index.html


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.211c1a0e.css


+ 0 - 1
dist/static/css/chunk-0e66c065.7f85eccf.css

@@ -1 +0,0 @@
-.titlewrap[data-v-18d6cf8c]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.titlewrap[data-v-18d6cf8c],.wrap[data-v-18d6cf8c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wrap div[data-v-18d6cf8c]{margin-right:20px;max-width:inherit}.countWrap[data-v-18d6cf8c] .el-date-editor.el-input,.countWrap[data-v-18d6cf8c] .el-date-editor.el-input__inner{width:100px!important}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-1dadc8f3.fb8bfdff.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-28502d3a.6a0de770.css


+ 1 - 0
dist/static/css/chunk-358e6250.b8019dad.css

@@ -0,0 +1 @@
+.titlewrap[data-v-6758835c]{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.titlewrap[data-v-6758835c],.wrap[data-v-6758835c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.wrap div[data-v-6758835c]{margin-right:20px;max-width:inherit}.countWrap[data-v-6758835c] .el-date-editor.el-input,.countWrap[data-v-6758835c] .el-date-editor.el-input__inner{width:100px!important}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-35ab18ab.ed7d66f8.css


+ 1 - 1
dist/static/css/chunk-5b0f93ec.bc7d783d.css → dist/static/css/chunk-49336038.72454671.css

@@ -1 +1 @@
-[data-v-15209428] .dialog-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}[data-v-622fad69] .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;height:80px!important;min-width:118px}[data-v-622fad69] .current.is-selected{border:2px solid var(--color-primary)}[data-v-622fad69] .current.is-selected .el-calendar-day{height:76px!important}.vipDot[data-v-622fad69]{background-color:#2aaea6}.teamDot[data-v-622fad69],.vipDot[data-v-622fad69]{width:30px;height:30px;margin-top:10px;display:inline-block;border-radius:50%;text-align:center;line-height:30px;color:#fff;font-size:14px}.teamDot[data-v-622fad69]{background-color:#5a79f6}.newDot[data-v-622fad69]{width:30px;height:30px;margin-top:10px;background-color:#34b1f6;display:inline-block;border-radius:50%;text-align:center;line-height:30px;color:#fff;font-size:14px}
+[data-v-cc7229ee] .dialog-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}[data-v-622fad69] .el-calendar-day{-webkit-box-sizing:border-box;box-sizing:border-box;height:80px!important;min-width:118px}[data-v-622fad69] .current.is-selected{border:2px solid var(--color-primary)}[data-v-622fad69] .current.is-selected .el-calendar-day{height:76px!important}.vipDot[data-v-622fad69]{background-color:#2aaea6}.teamDot[data-v-622fad69],.vipDot[data-v-622fad69]{width:30px;height:30px;margin-top:10px;display:inline-block;border-radius:50%;text-align:center;line-height:30px;color:#fff;font-size:14px}.teamDot[data-v-622fad69]{background-color:#5a79f6}.newDot[data-v-622fad69]{width:30px;height:30px;margin-top:10px;background-color:#34b1f6;display:inline-block;border-radius:50%;text-align:center;line-height:30px;color:#fff;font-size:14px}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-62f33710.f836bca4.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-773f2950.10ff072d.css


+ 0 - 1
dist/static/css/chunk-97a56d70.759433e9.css

@@ -1 +0,0 @@
-[data-v-d4d5d830] .close-icon{cursor:pointer;font-size:16px;margin-bottom:24px;line-height:40px}

+ 1 - 0
dist/static/css/chunk-a2da9ad4.962826f3.css

@@ -0,0 +1 @@
+.vipwrap[data-v-1903777e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vipwrap .newBand[data-v-1903777e]{margin-right:20px}.resetClassForm[data-v-1903777e] .el-date-editor.el-input,.resetClassForm[data-v-1903777e] .el-date-editor.el-input__inner{width:180px!important}.countWrap[data-v-1903777e] .el-date-editor.el-input,.countWrap[data-v-1903777e] .el-date-editor.el-input__inner{width:100px!important}.maskForm[data-v-1903777e] .el-input{width:220px!important}.titlewrap[data-v-1903777e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}

+ 1 - 0
dist/static/css/chunk-ab31a9b2.9031377e.css

@@ -0,0 +1 @@
+[data-v-3af036b2] .close-icon{cursor:pointer;font-size:16px;margin-bottom:24px;line-height:40px}

+ 0 - 1
dist/static/css/chunk-be4f905e.0af770d4.css

@@ -1 +0,0 @@
-.vipwrap[data-v-be967a7c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.vipwrap .newBand[data-v-be967a7c]{margin-right:20px}.resetClassForm[data-v-be967a7c] .el-date-editor.el-input,.resetClassForm[data-v-be967a7c] .el-date-editor.el-input__inner{width:180px!important}.countWrap[data-v-be967a7c] .el-date-editor.el-input,.countWrap[data-v-be967a7c] .el-date-editor.el-input__inner{width:100px!important}.maskForm[data-v-be967a7c] .el-input{width:220px!important}.titlewrap[data-v-be967a7c]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-e0f46704.71d38179.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.5f6fd769.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.7243ad6d.js


+ 0 - 0
dist/static/js/chunk-0840c480.d1e23ab6.js → dist/static/js/chunk-0840c480.feefaa35.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-0e66c065.460e6586.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-1dadc8f3.dd947f31.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-28502d3a.0716316e.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-358e6250.3bd82ac0.js


文件差异内容过多而无法显示
+ 1 - 1
dist/static/js/chunk-35ab18ab.0eca059f.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-49336038.42b87fc2.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-5bc36f52.77c1dc90.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-5ea75314.201c46d7.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-5ea75314.c56d6a08.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-62f33710.acaf9eb9.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-65ee3192.61886eae.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-69862ba4.fdf37c66.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-71c2dfde.2660c3b8.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-773f2950.a5914ae3.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-94618784.e3aa985c.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-94618784.fab6db7d.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-9cc174e6.751be9e4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-9cc174e6.bb2c9c5e.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-a2da9ad4.f8d72eee.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-ab31a9b2.92279fcd.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-b6178358.422e6d1a.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-b6178358.cd708c94.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-be4f905e.6bc40d58.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-e0f46704.bf2a4c10.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-e87ca8f2.15b69bff.js


+ 2 - 1
src/components/filter-search/index.vue

@@ -95,7 +95,8 @@ export default {
   },
   methods: {
     desced(item) {
-      return item.name ? `仅显示: ${item.name}` : this.desc
+      let fiterName = item.filterName
+      return item.filterName?item.filterName :item.name ? `仅显示: ${item.name}` : this.desc
     },
     isActive(item) {
       return item.key === this.$route.query.filter_type

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

@@ -72,13 +72,13 @@ export default {
         }
         else if(this.commit == 'setTeachers'){
           await this.$store.dispatch(commit,{
-            demissionFlag: this.demissionFlag,
+            demissionFlag: this.demissionFlag?this.demissionFlag:null,
             isForzenWithQueryCondition:this.isForzenWithQueryCondition
           });
         }
         else{
 
-          await this.$store.dispatch(commit,this.demissionFlag,);
+          await this.$store.dispatch(commit,this.demissionFlag?this.demissionFlag:null,);
         }
 
       if (commit == "setOrganRole") {

+ 3 - 3
src/views/accompanyManager/accompanys.vue

@@ -344,7 +344,7 @@
             format="HH:mm"
             value-format="HH:mm"
             :picker-options="{
-              selectableRange: `04:00:00 - 23:30:00`,
+              selectableRange: `06:00:00 - 23:30:00`,
             }"
           ></el-time-picker>
         </el-form-item>
@@ -538,7 +538,7 @@
               format="HH:mm"
               value-format="HH:mm"
               :picker-options="{
-                selectableRange: '04:30:00 - 23:30:00',
+                selectableRange: '06:00:00 - 23:30:00',
               }"
             ></el-time-picker>
             <span style="margin-left: 10px">结束时间</span>
@@ -550,7 +550,7 @@
               value-format="HH:mm"
               disabled
               :picker-options="{
-                selectableRange: '04:30:00 - 23:30:00',
+                selectableRange: '06:00:00 - 23:30:00',
               }"
             ></el-time-picker>
             <el-button

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

@@ -2,7 +2,7 @@
   <div class="m-container">
     <h2>
       <div class="squrt"></div>欠费学员
-      <!-- <filter-search @reload="reloadSearch" :keys="['visitFlag']" :moreKeys="['organId']"/> -->
+      <filter-search @reload="reloadSearch" :keys="['hasCourse']" :moreKeys="['organId']"/>
     </h2>
     <div class="m-core">
       <save-form
@@ -234,10 +234,10 @@ export default {
     if(query.result) {
       this.searchForm.eduTeacherId = Number(query.result)
     }
-    if(query.noPaymentType){
+    // if(query.noPaymentType){
 
-        this.searchForm.noPaymentType = Number(query.noPaymentType)
-    }
+    //     this.searchForm.noPaymentType = Number(query.noPaymentType)
+    // }
     getCooperation({ rows: 1000 }).then((res) => {
       this.cooperations = res.data.rows
     })
@@ -259,6 +259,7 @@ export default {
           page: this.rules.page,
           rows: this.rules.limit,
           organId: organId.join(','),
+          hasCourse:this.$route.query.hasCourse,
           ...rest,
         })
 

+ 11 - 9
src/views/indexErrDataRecord/components/visitError.vue

@@ -109,7 +109,7 @@
       <el-table-column align="center" label="异常产生时间">
         <template slot-scope="scope">
           <div>
-            {{ scope.row.generateTime | dayjsFormat}}
+            {{ scope.row.generateTime | dayjsFormat }}
           </div>
         </template>
       </el-table-column>
@@ -148,7 +148,7 @@
     <pagination
       sync
       :total.sync="rules.total"
-       :saveKey="`indexErrDataRecord-${searchType}`"
+      :saveKey="`indexErrDataRecord-${searchType}`"
       :page.sync="rules.page"
       :limit.sync="rules.limit"
       :page-sizes="rules.page_size"
@@ -202,13 +202,6 @@ export default {
     };
   },
   mounted() {
-    const { query } = this.$route;
-    if (query.organId) {
-      this.searchForm.organId = query.organId;
-    }
-    if (query.start && query.end) {
-      this.searchForm.month = [query.start, query.end];
-    }
     this.$store.dispatch("setBranchs");
     this.getList();
   },
@@ -225,6 +218,15 @@ export default {
       this.getList();
     },
     async getList() {
+      const { query } = this.$route;
+      if (query.organId) {
+        this.searchForm.organId = query.organId;
+      }
+      console.log(query.start, query.end)
+      if (query.start && query.end) {
+        this.$set(this.searchForm,'month',[query.start, query.end])
+      }
+
       let { month, ...rest } = this.searchForm;
       let params = {
         ...rest,

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

@@ -65,11 +65,13 @@
         <span
           style="color: var(--color-primary)"
           v-if="
-            !errorType[item[0].errorType] ||
+            !errorType[item[0].errorType]||
             (errorType[item[0].errorType] &&
               permission(errorType[item[0].errorType].permission))
           "
         >
+
+
           立即处理<i class="el-icon-d-arrow-right" />
         </span>
       </title-item>

+ 1 - 0
src/views/main/abnormal/title.vue

@@ -44,6 +44,7 @@ export default {
         "NO_MEMBER_STUDENT_INFO",
         "MEMBER_STUDENT_INFO",
         "MUSIC_GROUP_PERFORMANCE",
+        "NO_CLASS_MUSIC_GROUP_STUDENT_ERROR"
       ], // // 忽略类型
     };
   },

+ 53 - 13
src/views/main/constant.js

@@ -33,14 +33,16 @@ export const descs = {
   VIP_PRACTICE_STUDENT_NUM: '筛选时间段中最后一日,学员有剩余VIP或网管未上课时的总人数(分部下去重)',
   VIP_PRACTICE_ADD_STUDENT_NUM: '筛选时间段内,新增的VIP/网管课付费学员总数',
   MUSIC_PATROL_ITEM: '乐团主管提交的巡查表中有未勾选事项',
-  HIGH_CLASS_STUDENT_LESS_THAN_THREE: '基础技能班学员数量<3',
+  HIGH_CLASS_STUDENT_LESS_THAN_THREE: '基础技能班学员数量<3且没有备注',
+  HIGH_CLASS_STUDENT_LESS_THAN_THREE_INFO:'基础技能班学员数量<3且有备注',
   STUDENT_NOT_PAYMENT: '当前时间以前的缴费项目中未缴费学员数量',
   STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP: '未处理的学员退团申请数量',
   TEACHER_EXPECT_SALARY_BE_LOW: '本月预计课酬未达到系统设置的分部基本课酬标准的老师人数',
   INSPECTION_ITEM: '乐团主管未完成巡查计划安排',
   INSPECTION_ITEM_PLAN: '乐团主管已安排的巡查任务未提交',
   STUDENT_VISIT: '乐团主管未完成回访任务',
-  TEACHER_EXCEPTION_ATTENDANCE: '课程上有老师或学员考勤异常',
+  TEACHER_EXCEPTION_ATTENDANCE: '课程上有老师考勤异常',
+  STUDENT_EXCEPTION_ATTENDANCE:'课程上有学员考勤异常',
   TEACHER_NOT_A_CLASS: '课程无老师考勤',
   TEACHER_SERVE_ERROR: '服务指标生成的训练未布置',
   WAIT_CREATE_PAYMENT_CALENDER: '缴费项目有效期结束前7天',
@@ -84,7 +86,7 @@ export const titles = {
 
 
 const dates = {
-  start: dayjs().subtract(2, 'month').set('date', 1).format('YYYY-MM-DD'),
+  start: dayjs().subtract(1, 'month').set('date', 1).format('YYYY-MM-DD'),
   end: dayjs().format('YYYY-MM-DD'),
 }
 
@@ -119,9 +121,20 @@ export const errorType = {
     permission: '/teamCLassList',
     always: true,
     query: {
-      lessThenThreeHighOnline: '1',
+      lessThenThreeHighOnline: 'false',
     },
   },
+  HIGH_CLASS_STUDENT_LESS_THAN_THREE_INFO: {
+    name: '基础技能班学员数量提醒',
+    isError: true,
+    url: '/teamCLassList',
+    permission: '/teamCLassList',
+    always: true,
+    query: {
+      lessThenThreeHighOnline: 'true',
+    },
+  },
+
   NO_MEMBER_STUDENT_INFO: {
     name: '当前共有{0}个乐团共{1}名学员会员已过期',
     isError: true,
@@ -150,7 +163,19 @@ export const errorType = {
     }
   },
   NO_CLASS_MUSIC_GROUP_STUDENT_INFO: {
-    name: '当前有{0}个乐团共{1}名学员未加入任何班级',
+    name: '当前有{0}个未开课乐团共{1}名学员未加入任何班级',
+    filterName:'仅显示未开课乐团学员',
+    isError: false,
+    url: '/main/notClassStudent',
+    permission: '/notClassStudent',
+    always: true,
+    query: {
+      hasCourse: 'false'
+    }
+  },
+  NO_CLASS_MUSIC_GROUP_STUDENT_ERROR: {
+    name: '当前有{0}个已开课乐团共{1}名学员未加入任何班级',
+    filterName:'仅显示已开课乐团学员',
     isError: true,
     url: '/main/notClassStudent',
     permission: '/notClassStudent',
@@ -159,6 +184,7 @@ export const errorType = {
       hasCourse: 'true'
     }
   },
+
   STUDENT_ERROR_LEAVE: {
     name: '学员异常请假',
     isError: true,
@@ -167,23 +193,23 @@ export const errorType = {
     always: true,
   },
   STUDENT_ARREARAGE: {
-    name: '未缴费学员数',
+    name: '已排课未缴费学员数',
     isError: true,
     url: '/studentManager/ArrearageStudents',
     permission: '/ArrearageStudents',
     always: true,
     query: {
-      noPaymentType: '0'
+      hasCourse: 'true'
     }
   },
   STUDENT_NOT_PAYMENT: {
-    name: '未缴费学员数',
+    name: '未排课未缴费学员数',
     isError: true,
     url: '/studentManager/ArrearageStudents',
     permission: '/ArrearageStudents',
     always: true,
     query: {
-      noPaymentType: '1'
+      hasCourse: 'false'
     }
   },
   STUDENT_APPLY_FOR_QUIT_MUSIC_GROUP: {
@@ -250,13 +276,25 @@ export const errorType = {
     }
   },
   TEACHER_EXCEPTION_ATTENDANCE: {
-    name: '课程考勤异常',
+    name: '老师考勤异常',
+    isError: true,
+    always: true,
+    url: '/teamCourseList',
+    permission: '/teamCourseList',
+    query: {
+      searchType: 'TEACHER_ERR_ATTENDANCE',
+      ...dates,
+      start: dayjs().subtract(1, 'month').set('date', 1).format('YYYY-MM-DD'),
+    },
+  },
+  STUDENT_EXCEPTION_ATTENDANCE: {
+    name: '学生考勤异常',
     isError: true,
     always: true,
     url: '/teamCourseList',
     permission: '/teamCourseList',
     query: {
-      searchType: 'ERR_ATTENDANCE',
+      searchType: 'STUDENT_ERR_ATTENDANCE',
       ...dates,
       start: dayjs().subtract(1, 'month').set('date', 1).format('YYYY-MM-DD'),
     },
@@ -299,11 +337,13 @@ export const errorType = {
     isError: true,
     always: true,
     url: '/workbench',
-    permission: '/main/main',
+    permission: '/workbench',
     resultKey: 'ids',
     query: {
       tabrouter: 'teamSchedule',
       searchType: 'INSPECTION_ITEM',
+      start:dayjs().subtract(1, 'month').set('date', 1).format('YYYY-MM'),
+      end:dayjs().format('YYYY-MM')
     },
   },
   INSPECTION_ITEM_PLAN: {
@@ -321,7 +361,7 @@ export const errorType = {
     name: '回访任务未完成',
     isError: true,
     url: '/workbench',
-    permission: '/main/main',
+    permission: '/workbench',
     always: true,
     query: {
       tabrouter: 'teamSchedule',

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

@@ -6,7 +6,7 @@
       <filter-search
         v-if="$route.query.tabrouter === 'teamSchedule'&&permission('/teamSchedule/abnormal')"
         :keys="['searchType']"
-        :moreKeys="['organId']"
+        :moreKeys="['organId','start','end']"
         @reload="reloadItem"
       />
     </h2>

+ 9 - 1
src/views/main/notClassStudent.vue

@@ -176,6 +176,7 @@ export default {
         const { ...search } = this.searchForm;
         const params = {
           ...search,
+          hasCourse: this.$route.query.hasCourse,
           page: this.rules.page,
           rows: this.rules.limit,
         };
@@ -202,13 +203,20 @@ export default {
       });
     },
     onExport() {
+      const { ...search } = this.searchForm;
+        const params = {
+          ...search,
+          hasCourse: this.$route.query.hasCourse,
+          page: this.rules.page,
+          rows: this.rules.limit,
+        };
       Export(
         this,
         {
           url: "/api-web/export/noClassGroupStudentList",
           fileName: "未在班级学员.xls",
           method: "post",
-          params: qs.stringify(cleanDeep(this.searchForm)),
+          params: qs.stringify(cleanDeep(params)),
         },
         "您确定导出未在班级学员?"
       );

+ 4 - 2
src/views/main/schedule-branch/modals/create.vue

@@ -76,8 +76,9 @@
           </el-form-item>
         </el-col>
         <template v-for="(matterItem, matterIndex) in groupItem.matter">
+<!--   :offset="matterIndex === 0 ? 0 : 6" -->
           <el-col
-            :offset="matterIndex === 0 ? 0 : 6"
+
             :span="6"
             :key="groupIndex + '-' + matterIndex + '1'"
           >
@@ -321,9 +322,10 @@ export default {
   margin-bottom: 10px;
 }
 .ctrl {
-  margin-top: 45px;
+  margin-top: 35px;
   display: flex;
   justify-content: space-between;
+  align-items: center;
   i {
     font-size: 24px;
   }

+ 8 - 7
src/views/main/teamSchedule/index.vue

@@ -186,13 +186,7 @@ export default {
     };
   },
  async mounted() {
-    const { query } = this.$route;
-    if (query.organId) {
-      this.searchForm.organId = query.organId;
-    }
-    if (query.start && query.end) {
-      this.searchForm.month = [query.start, query.end];
-    }
+
   await  this.$store.dispatch("setBranchs");
   this.$set(this.searchForm,'organId',this.selects.branchs[0].id)
     this.getList();
@@ -210,6 +204,13 @@ export default {
       this.getList();
     },
     async getList() {
+      const { query } = this.$route;
+    if (query.organId) {
+      this.searchForm.organId = query.organId;
+    }
+    if (query.start && query.end) {
+      this.searchForm.month = [query.start, query.end];
+    }
       let { month, ...rest } = this.searchForm;
       let params = {
         ...rest,

+ 3 - 3
src/views/teacherManager/teacherOperation/components/accompanySet.vue

@@ -61,7 +61,7 @@
                        key="tag"
                        type="primary"
                        style="background:#ececec;border:1px solid #ececec;color:#666"
-                       
+
                        round
                        icon="el-icon-plus"
                        @click="subjectAdd(item)">添加</el-button>
@@ -82,7 +82,7 @@
                           format="HH:mm"
                           value-format="HH:mm"
                           :picker-options="{
-              selectableRange:`04:00:00 - 23:59:00`
+              selectableRange:`06:00:00 - 21:30:00`
   }"
                           placeholder="选择时间"></el-time-picker>
         </el-form-item>
@@ -91,7 +91,7 @@
                           format="HH:mm"
                           value-format="HH:mm"
                           :picker-options="{
-              selectableRange:`${startTime ? startTime+':00' : '04:00:00'}-23:59:00`
+              selectableRange:`${startTime ? startTime+':00' : '06:00:00'}-21:30:00`
   }"
                           placeholder="选择时间"></el-time-picker>
         </el-form-item>

+ 1 - 1
src/views/teamDetail/componentCourse/compoundClass.vue

@@ -150,7 +150,7 @@
               format="HH:mm"
               value-format="HH:mm"
               :picker-options="{
-                selectableRange: '04:30:00 - 23:30:00',
+                selectableRange: '06:00:00 - 23:30:00',
               }"
             ></el-time-picker>
           </el-form-item>

+ 1 - 1
src/views/teamDetail/componentCourse/modals/resetCourses.vue

@@ -8,7 +8,7 @@
           format="HH:mm"
           value-format="HH:mm"
           :picker-options="{
-            selectableRange: `04:00:00 - 23:59:00`,
+            selectableRange: `06:00:00 - 23:59:00`,
           }"
           placeholder="选择时间"
         ></el-time-picker>

+ 1 - 1
src/views/teamDetail/componentCourse/resetClass.vue

@@ -76,7 +76,7 @@
           format="HH:mm"
           value-format="HH:mm"
           :picker-options="{
-            selectableRange: `04:30:00 - 23:30:00`,
+            selectableRange: `06:00:00 - 23:30:00`,
           }"
         ></el-time-picker>
       </el-form-item>

+ 1 - 1
src/views/teamDetail/components/courseList.vue

@@ -1224,7 +1224,7 @@ export default {
   computed: {
     nowTime() {
       // console.log(that.maskForm.date)
-      let str = "04:30:00";
+      let str = "06:00:00";
       if (that.maskForm.date == dayjs(new Date()).format("YYYY-MM-DD")) {
         str = dayjs(new Date()).format("HH:mm:ss");
       }

+ 50 - 31
src/views/teamDetail/components/modals/class-resetclass-name.vue

@@ -4,24 +4,43 @@
       :model="form"
       ref="form"
       label-position="right"
-      label-width="80px;"
-      :inline="true"
+      label-width="100px"
     >
-     <el-form-item
-            label="班级名称"
-            prop="name"
-            :rules="[
-              { required: true, message: '请输入班级名称', trigger: 'blur' },
-            ]"
-          >
-            <el-input
-              v-model="form.name"
-              style="width: 100%"
-              placeholder="请输入班级名称"
-            />
-          </el-form-item>
+      <el-form-item
+      v-if="!resetName"
+        label="班级名称"
+        prop="name"
+        :rules="[
+          { required: true, message: '请输入班级名称', trigger: 'blur' },
+        ]"
+      >
+        <el-input
+          v-model="form.name"
+          style="width: 100%"
+          placeholder="请输入班级名称"
+        />
+      </el-form-item>
+      <!--  :rules="[
+          { required: true, message: '请输入班级备注', trigger: 'blur' },
+        ]" -->
+      <el-form-item
+      v-else
+        label="备注"
+        prop="desc"
+
+      >
+        <el-input
+          v-model="form.desc"
+          type="textarea"
+          :rows="3"
+          maxlength="100"
+  show-word-limit
+          style="width: 100%"
+          placeholder="请输入班级备注"
+        />
+      </el-form-item>
     </el-form>
-    <div slot="footer" class="dialog-footer" style="text-align: right;">
+    <div slot="footer" class="dialog-footer" style="text-align: right">
       <el-button @click="$emit('close')">取 消</el-button>
       <el-button type="primary" @click="subResetName">确 定</el-button>
     </div>
@@ -29,32 +48,32 @@
 </template>
 <script>
 export default {
-  props: [ 'detail'],
+  props: ["detail","resetName"],
   data() {
     return {
       form: {
-        name: '',
-         id:''
-      }
-    }
-  },
-  computed: {
-
+        name: "",
+        id: "",
+        desc:""
+      },
+    };
   },
+  computed: {},
   mounted() {
-    this.form.name = this.detail.name
-      this.form.id= this.detail.id
+    this.form.name = this.detail.name;
+    this.form.desc = this.detail.desc;
+    this.form.id = this.detail.id;
   },
   methods: {
-    subResetName () {
-      this.$refs.form.validate(some => {
+    subResetName() {
+      this.$refs.form.validate((some) => {
         if (some) {
-          this.$emit('submited', {...this.form});
+          this.$emit("submited", { ...this.form });
         } else {
           return;
         }
       });
-    }
-  }
+    },
+  },
 };
 </script>

+ 1 - 1
src/views/teamDetail/components/modals/classList-group.vue

@@ -16,7 +16,7 @@
       icon="el-icon-circle-plus-outline"
       plain
       type="info"
-      
+
       style="width: 100%; margin: 20px 0"
       @click="addClass"
       :disabled="form.classList.length >= classList.length"

+ 3 - 3
src/views/teamDetail/components/modals/classroom-setting-item-merge.vue

@@ -101,7 +101,7 @@
               placeholder="请选择时间"
               @change="startTimeChange(scope.row)"
               :picker-options="{
-                selectableRange: ['04:30:00 - 23:59:59']
+                selectableRange: ['06:00:00 - 23:59:59']
               }">
             </el-time-picker>
           </el-form-item>
@@ -135,12 +135,12 @@
         <template slot-scope="scope">
           <i @click="remove(scope.$index)" v-if="form.cycle.length > 1" class="close-icon el-icon-circle-close"></i>
         </template>
-      </el-table-column> 
+      </el-table-column>
     </el-table>
     <el-button
       icon="el-icon-circle-plus-outline"
       type="info"
-      
+
       plain
       :disabled="surplustime < ((selectPrice || 0) || Math.min(...pricesArray))"
       @click="create"

+ 1 - 1
src/views/teamDetail/components/modals/classroom-setting-item.vue

@@ -174,7 +174,7 @@
                 placeholder="请选择开始时间"
                 @change="timeChange(scope.row)"
                 :picker-options="{
-                  selectableRange: ['04:30:00 - 23:59:59'],
+                  selectableRange: ['06:00:00 - 23:59:59'],
                 }"
               >
               </el-time-picker>

+ 16 - 7
src/views/teamDetail/teamClassList.vue

@@ -202,11 +202,19 @@
                 v-if="
                  permission('classGroup/update')
                 "
-                @click="resetClassName(scope.row)"
+                @click="resetClassName(scope.row,true)"
                 >班级名称调整</el-button
               >
               <el-button
                 type="text"
+                v-if="
+                 permission('classGroup/update')
+                "
+                @click="resetClassName(scope.row,false)"
+                >备注</el-button
+              >
+              <el-button
+                type="text"
                 @click="addCompound(scope.row)"
                 v-if="
                   scope.row.type != 'MUSIC_NETWORK' &&
@@ -261,8 +269,8 @@
     />
         <!-- 修改班级名称 -->
     <el-dialog
-      title="班级名称调整"
-      width="400px"
+      :title="!resetName?'班级名称调整':'备注'"
+      width="500px"
       :visible.sync="classNameVisible"
       v-if="classNameVisible"
     >
@@ -270,6 +278,7 @@
         :classGroupId="activeClass"
         :detail="classDetail"
         @submited="submitedResetClassName"
+        :resetName="resetName"
         @close="classNameVisible = false"
       />
     </el-dialog>
@@ -320,9 +329,8 @@ export default {
       },
       classNameVisible:false,
       classDetail:null,
-      activeClass:''
-
-
+      activeClass:'',
+      resetName:false
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -475,8 +483,9 @@ export default {
         "是否确认导出报表?"
       );
     },
-        resetClassName(row) {
+        resetClassName(row,flag) {
       this.classDetail = row;
+      this.resetName = !flag;
       this.classNameVisible = true;
     },
     async submitedResetClassName(data) {

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

@@ -690,7 +690,7 @@
           <el-time-picker
             is-range
             :picker-options="{
-              selectableRange: '04:00:00 - 23:59:59',
+              selectableRange: '06:00:00 - 23:59:59',
             }"
             style="width: 350px !important"
             v-model="searchForm.courseTime"

+ 650 - 650
src/views/vipClass/vipDetail/components/teacherRecord.vue

@@ -1,650 +1,650 @@
-<template >
-  <div>
-    <!-- 头部展示 -->
-    <statistic>
-      <statistic-item>
-        <span>未上课时</span>
-        <span>{{ totalClassTimes }}</span>
-      </statistic-item>
-      <statistic-item>
-        <span>已上课时</span>
-        <span>{{ currentClassTimes }}</span>
-      </statistic-item>
-      <statistic-item>
-        <span>已结算</span>
-        <span>{{ isSalaryNum }}</span>
-      </statistic-item>
-      <statistic-item>
-        <span>被投诉</span>
-        <span>{{ complaintsNum }}</span>
-      </statistic-item>
-    </statistic>
-    <!-- 搜索标题 -->
-    <save-form
-      save-key='vipDetail-record'
-      :inline="true"
-      label-position="right"
-      label-width="120px"
-      class="searchForm"
-      @submit="search"
-      :model="searchForm"
-    >
-      <el-form-item>
-        <el-select
-          v-model.trim="searchForm.type"
-          clearable
-          placeholder="课程类型"
-        >
-          <el-option label="线上课" value="ONLINE"></el-option>
-          <el-option label="线下课" value="OFFLINE"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-select
-          v-model.trim="searchForm.status"
-          clearable
-          placeholder="课程状态"
-        >
-          <el-option label="未开始" value="NOT_START"></el-option>
-          <el-option label="进行中" value="UNDERWAY"></el-option>
-          <el-option label="已结束" value="OVER"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item>
-        <el-date-picker
-          v-model.trim="searchForm.time"
-          style="width: 400px"
-          type="daterange"
-          value-format="yyyy-MM-dd"
-          range-separator="至"
-          start-placeholder="课程开始日期"
-          end-placeholder="课程结束日期"
-          :picker-options="{
-            firstDayOfWeek: 1,
-          }"
-        >
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item>
-        <el-button native-type="submit" type="danger">搜索</el-button>
-      </el-form-item>
-    </save-form>
-    <!-- 列表 -->
-    <div class="tableWrap">
-      <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-        <el-table-column align="center" label="课程编号" prop="id">
-        </el-table-column>
-        <el-table-column
-          align="center"
-          label="上课时间"
-          width="250px"
-          prop="startClassTime"
-        >
-          <template slot-scope="scope">
-            <!--  {{ scope.row.classDate }} {{ scope.row.startClassTime ? scope.row.startClassTime.substr(0, 5) : '' }}-{{ scope.row.endClassTime ? scope.row.endClassTime.substr(0, 5) : '' }} -->
-            <div>
-              <p>
-                {{ scope.row.startClassTime | dateForMinFormat }}-{{
-                  scope.row.endClassTime | endTime
-                }}
-              </p>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="课程类型" prop="teachMode">
-          <template slot-scope="scope">
-            <div>
-              <p>{{ scope.row.teachMode | fitterTeachMode }}</p>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="教学点" prop="schoolName">
-          <template slot-scope="scope">
-            <div>
-              {{ scope.row.schoolName ? scope.row.schoolName : "网络教室" }}
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="上课学员数" prop="attendanceNum">
-        </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="status" label="课程状态">
-          <template slot-scope="scope">
-            <div>
-              <p>{{ scope.row.status | fitterStatus }}</p>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" prop="isSalary" label="结算状态">
-          <template slot-scope="scope">
-            <div>
-              <p>{{ scope.row.isSalary | fitterisSalary }}</p>
-            </div>
-          </template>
-        </el-table-column>
-        <el-table-column align="center" label="操作" width="200">
-          <template slot-scope="scope">
-            <div>
-              <el-button
-                type="text"
-                v-if="scope.row.attendanceNum"
-                permission="'vipGroupManage/findVipGroupAttendanceStudents'"
-                @click="lookStudents(scope.row)"
-                >查看学员</el-button
-              >
-
-              <!-- 未结算没有点击功能 -->
-              <el-button
-                v-if="
-                  scope.row.status == 'OVER' &&
-                  !scope.row.isSalary &&
-                  permission('teacherAttendance/updateTeacherAttendance/3361')
-                "
-                type="text"
-                @click="onMarkAttendance(scope.row)"
-                >补考勤</el-button
-              >
-              <el-button
-                v-if="
-                  scope.row.status == 'OVER' &&
-                  permission('studentAttendance/updateStudentAttendances')
-                "
-                type="text"
-                @click="onCallName(scope.row)"
-                >点名表</el-button
-              >
-              <!-- <el-button type="text" v-permission="'vipGroupManage/classStartDateAdjust'"
-                         @click="resetClass(scope.row)">课程调整</el-button> -->
-            </div>
-          </template>
-        </el-table-column>
-      </el-table>
-    </div>
-    <pagination
-      save-key='vipDetail-record'
-      sync
-      :total.sync="rules.total"
-      :page.sync="rules.page"
-      :limit.sync="rules.limit"
-      :page-sizes="rules.page_size"
-      @pagination="getList"
-    />
-    <el-dialog
-      title="上课学员"
-      :visible.sync="studentVisible"
-      width="30%"
-      :before-close="handleClose"
-    >
-      <span
-        v-for="(item, index) in studentList"
-        :key="index"
-        style="margin-left: 10px"
-        >{{ item }}</span
-      >
-      <span slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="studentVisible = false"
-          >确 定</el-button
-        >
-      </span>
-    </el-dialog>
-    <!-- <el-dialog title="课程调整"
-               :visible.sync="courseVisible"
-               width="420px">
-      <el-form :model="maskForm"
-               :rules="maskrules"
-               label-width="120px"
-               label-position="right"
-               ref='maskForm'>
-        <el-form-item label="选择上课日期"
-                      prop="date">
-          <el-date-picker type="date"
-                          value-format="yyyy-MM-dd"
-                          :picker-options="{
-                            firstDayOfWeek:1
-                          }"
-                          v-model.trim="maskForm.date"
-                          placeholder="选择日期"></el-date-picker>
-        </el-form-item>
-        <el-form-item label="开始时间"
-                      prop="startTime">
-          <el-time-picker v-model.trim="maskForm.startTime"
-                          format='HH:mm'
-                          value-format='HH:mm'
-                          :picker-options="{
-                          selectableRange: '04:00:00 - 23:59:00'
-                            }"
-                          placeholder="选择时间">
-          </el-time-picker>
-        </el-form-item>
-        <el-form-item label="结束时间"
-                      prop="endTime">
-          <el-time-picker v-model.trim="maskForm.endTime"
-                          format='HH:mm'
-                          value-format='HH:mm'
-                          :picker-options="{
-              selectableRange:`${maskForm.startTime ? maskForm.startTime+':00' : '04:00:00'}-23:59:00`
-  }"
-                          placeholder="选择时间">
-          </el-time-picker>
-        </el-form-item>
-        <el-form-item label="教学点"
-                      prop="cooperation"
-                      v-if='activeRow&&activeRow.teachMode == "OFFLINE"'>
-          <el-select v-model.trim="maskForm.cooperation"
-                     clearable
-                     filterable>
-            <el-option v-for='(item,index) in cooperationList'
-                       :key="index"
-                       :value="item.id"
-                       :label="item.name"></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer"
-            class="dialog-footer">
-        <el-button type="primary"
-                   @click="resetCourse">确 定</el-button>
-      </span>
-    </el-dialog> -->
-
-    <el-dialog
-      title="补考勤"
-      width="400px"
-      :visible.sync="markAttendance.status"
-    >
-      <el-form>
-        <el-form-item label="签到状态"
-          >{{ markAttendance.dataInfo.signInStatus | attendanceType }}
-        </el-form-item>
-        <el-form-item label="签到时间">{{
-          markAttendance.dataInfo.signInTime
-        }}</el-form-item>
-        <el-form-item label="签退状态"
-          >{{ markAttendance.dataInfo.signOutStatus | attendanceOutType }}
-        </el-form-item>
-        <el-form-item label="签退时间">{{
-          markAttendance.dataInfo.signOutTime
-        }}</el-form-item>
-      </el-form>
-      <div slot="footer" class="dialog-footer">
-        <el-button @click="markAttendance.status = false">取 消</el-button>
-        <el-button
-          type="primary"
-          :disabled="
-            markAttendance.dataInfo.signOutStatus == 1 &&
-            markAttendance.dataInfo.signInStatus == 1
-              ? true
-              : false
-          "
-          @click="batchAdjustmentTime"
-          >确定补卡</el-button
-        >
-      </div>
-    </el-dialog>
-
-    <el-dialog title="点名表" width="800px" :visible.sync="rollCall.status">
-      <el-table :data="rollCall.gridData" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
-        <el-table-column
-          align="center"
-          property="userName"
-          label="学员姓名"
-        ></el-table-column>
-        <el-table-column
-          align="center"
-          property="phone"
-          label="手机号"
-        ></el-table-column>
-        <el-table-column
-          align="center"
-          property="subjectName"
-          label="学员声部"
-        ></el-table-column>
-        <el-table-column align="center" label="到课状态">
-          <template slot-scope="scope">
-            {{ scope.row.status | studentCallName }}
-          </template>
-        </el-table-column>
-        <el-table-column
-          align="center"
-          v-if="!rollCall.selectItem.isSalary"
-          label="操作"
-          width="240px"
-        >
-          <template slot-scope="scope">
-            <el-button
-              size="mini"
-              @click="onChangeRollCall('TRUANT', scope.row)"
-              type="primary"
-              round
-              >未到</el-button
-            >
-            <el-button
-              size="mini"
-              @click="onChangeRollCall('LEAVE', scope.row)"
-              type="warning"
-              round
-              >请假</el-button
-            >
-            <el-button
-              size="mini"
-              @click="onChangeRollCall('NORMAL', scope.row)"
-              type="success"
-              round
-              >到课</el-button
-            >
-          </template>
-        </el-table-column>
-      </el-table>
-      <pagination
-        :total="rollCall.total"
-        :page.sync="rollCall.page"
-        :limit.sync="rollCall.limit"
-        :page-sizes="rollCall.page_size"
-        @pagination="getCallName"
-      />
-    </el-dialog>
-  </div>
-</template>
-<script>
-import pagination from "@/components/Pagination/index";
-import { getSchool } from "@/api/systemManage";
-import {
-  findVipGroupTeachingRecord,
-  getStudyStudents,
-  resetVipClass,
-} from "@/api/vipSeting";
-import {
-  findAttendanceStudentByCourseWithPage,
-  updateStudentAttendances,
-  updateTeacherAttendance,
-} from "@/api/buildTeam";
-import { permission } from "@/utils/directivePage";
-export default {
-  components: { pagination },
-  name: "teacherRecord",
-  data() {
-    return {
-      searchForm: {
-        type: "",
-        status: "",
-        time: [],
-      },
-      searchLsit: [],
-      tableList: [],
-      id: "",
-      complaintsNum: "", //投诉数
-      currentClassTimes: "", //当前课数
-      isSalaryNum: "", // 已结算
-      totalClassTimes: "", // 未上课数
-      studentVisible: false, // 查看上课学员数的弹窗
-      courseVisible: false, // 课时调整弹窗
-      studentList: [],
-      cooperationList: [],
-      maskForm: {
-        data: "",
-        startTime: "",
-        endTime: "",
-        status: "",
-        type: "",
-        cooperation: "",
-      },
-      markAttendance: {
-        // 考勤状态
-        status: false,
-        dataInfo: {},
-      },
-      activeId: "",
-      activeRow: null, //
-      maskrules: {
-        date: [{ required: true, message: "请选择修改日期", trigger: "blur" }],
-        startTime: [{ required: true, message: "请选择开始", trigger: "blur" }],
-        endTime: [{ required: true, message: "请选择结束", trigger: "blur" }],
-      },
-      rules: {
-        // 分页规则
-        limit: 10, // 限制显示条数
-        page: 1, // 当前页
-        total: 0, // 总条数
-        page_size: [10, 20, 40, 50], // 选择限制显示条数
-      },
-      rollCall: {
-        // 点名表
-        status: false,
-        gridData: [],
-        selectItem: {}, // 选中状态
-        limit: 10, // 限制显示条数
-        page: 1, // 当前页
-        total: 0, // 总条数
-        page_size: [10, 20, 40, 50], // 选择限制显示条数
-      },
-    };
-  },
-  mounted() {
-    this.__init();
-  },
-  activated() {
-    this.__init();
-  },
-  methods: {
-    __init() {
-      let id = this.$route.query.id;
-      this.id = id;
-      this.rules.page = 1;
-      // 获取vip教学记录
-      this.getList();
-      // 获取分部教学点
-      getSchool({ organId: null }).then((res) => {
-        if (res.code == 200) {
-          this.cooperationList = res.data;
-        }
-      });
-    },
-    search() {
-      this.rules.page = 1;
-      this.getList();
-    },
-    getList() {
-      let startTime;
-      let endTime;
-      if (this.searchForm.time) {
-        startTime = this.searchForm.time[0];
-        endTime = this.searchForm.time[1];
-      } else {
-        startTime = "";
-        endTime = "";
-      }
-      let obj = {
-        vipGroupId: this.id,
-        page: this.rules.page,
-        rows: this.rules.limit,
-        status: this.searchForm.status || null,
-        teachMode: this.searchForm.type || null,
-        startTime,
-        endTime,
-      };
-      findVipGroupTeachingRecord(obj).then((res) => {
-        if (res.code == 200) {
-          this.complaintsNum = res.data.baseInfo.complaintsNum;
-          // 当前课数
-          this.currentClassTimes = res.data.baseInfo.courseEndNum;
-          this.isSalaryNum = res.data.baseInfo.isSalaryNum;
-          // 未上课数
-          this.totalClassTimes = res.data.baseInfo.courseNoStartNum;
-          // this.totalClassTimes = res.data.baseInfo.totalClassTimes - this.currentClassTimes;
-          this.tableList = res.data.pageInfo.rows;
-          this.rules.total = res.data.pageInfo.total;
-        }
-      });
-    },
-    batchAdjustmentTime() {
-      let tempData = this.markAttendance.dataInfo;
-      let params = {
-        courseScheduleId: tempData.id,
-        signInStatus: 1,
-        signOutStatus: 1,
-      };
-      updateTeacherAttendance(params).then((res) => {
-        if (res.code == 200) {
-          this.$message.success("补卡成功");
-          this.markAttendance.status = false;
-          this.getList();
-        } else {
-          this.$message.error(res.msg);
-        }
-      });
-    },
-    onMarkAttendance(item) {
-      // 补考勤
-      this.markAttendance = {
-        status: true,
-        dataInfo: item,
-      };
-    },
-    onCallName(item) {
-      // 点名表
-      this.rollCall.page = 1;
-      this.rollCall.selectItem = item;
-      this.getCallName();
-    },
-    getCallName() {
-      let rollCall = this.rollCall;
-      let params = {
-        page: rollCall.page,
-        rows: rollCall.limit,
-        courseScheduleId: rollCall.selectItem.id,
-      };
-      findAttendanceStudentByCourseWithPage(params).then((res) => {
-        let result = res.data;
-        rollCall.status = true;
-        if (res.code == 200) {
-          rollCall.gridData = result.rows;
-          rollCall.total = result.total;
-        }
-      });
-    },
-    onChangeRollCall(type, row) {
-      let rollCall = this.rollCall;
-      let params = {
-        courseScheduleId: rollCall.selectItem.id,
-        studentAttendances: [
-          {
-            userId: row.studentId,
-            status: type,
-          },
-        ],
-      };
-      updateStudentAttendances(params).then((res) => {
-        if (res.code == 200) {
-          this.$message.success("修改成功");
-          row.status = type;
-          this.getList();
-        } else {
-          this.$message.error(res.msg);
-        }
-      });
-    },
-    lookStudents(row) {
-      let id = row.id;
-      getStudyStudents({ courseScheduleId: id }).then((res) => {
-        if (res.code == 200) {
-          this.studentList = res.data;
-          this.studentVisible = true;
-        }
-      });
-    },
-    permission(str) {
-      return permission(str);
-    },
-    handleClose() {
-      this.studentList = [];
-      this.studentVisible = false;
-    },
-    resetClass(row) {
-      this.courseVisible = true;
-      // 弹出弹窗
-      this.activeId = row.id;
-      this.activeRow = row;
-      // resetVipClass().then()
-    },
-    resetCourse() {
-      // 点击弹窗效验
-      this.$refs["maskForm"].validate((valid) => {
-        if (valid) {
-          // 效验成功
-          resetVipClass({
-            id: this.activeId,
-            classDate: this.maskForm.date,
-            startClassTime: this.maskForm.date + " " + this.maskForm.startTime,
-            endClassTime: this.maskForm.date + " " + this.maskForm.endTime,
-            schoolId: this.maskForm.cooperation,
-          }).then((res) => {
-            if (res.code == 200) {
-              this.$message.success("调整成功");
-              this.getList();
-              this.courseVisible = false;
-              this.$refs["maskForm"].resetFields();
-            } else {
-              this.$message.error(res.msg);
-            }
-          });
-        }
-      });
-    },
-  },
-  filters: {
-    fitterisSalary(val) {
-      let arr = ["未结算", "已结算"];
-      return arr[val];
-    },
-    fitterTeachMode(val) {
-      if (val == "ONLINE") {
-        return "线上课";
-      } else if (val == "OFFLINE") {
-        return "线下课";
-      }
-    },
-    fitterStatus(val) {
-      if (val == "NOT_START") {
-        return "未开始";
-      } else if (val == "UNDERWAY") {
-        return "进行中";
-      } else if (val == "OVER") {
-        return "已结束";
-      }
-    },
-    endTime(val) {
-      if (val) {
-        return val.split(" ")[1].substring(0, 5);
-      } else {
-        return val;
-      }
-    },
-    studentCallName: (value) => {
-      let template = {
-        NORMAL: "到课",
-        TRUANT: "未到",
-        LEAVE: "请假",
-        DROP_OUT: "退学",
-        LATE: "迟到",
-        "": "未到",
-      };
-      return template[value];
-    },
-  },
-};
-</script>
-<style lang="scss" scope>
-</style>
+<template >
+  <div>
+    <!-- 头部展示 -->
+    <statistic>
+      <statistic-item>
+        <span>未上课时</span>
+        <span>{{ totalClassTimes }}</span>
+      </statistic-item>
+      <statistic-item>
+        <span>已上课时</span>
+        <span>{{ currentClassTimes }}</span>
+      </statistic-item>
+      <statistic-item>
+        <span>已结算</span>
+        <span>{{ isSalaryNum }}</span>
+      </statistic-item>
+      <statistic-item>
+        <span>被投诉</span>
+        <span>{{ complaintsNum }}</span>
+      </statistic-item>
+    </statistic>
+    <!-- 搜索标题 -->
+    <save-form
+      save-key='vipDetail-record'
+      :inline="true"
+      label-position="right"
+      label-width="120px"
+      class="searchForm"
+      @submit="search"
+      :model="searchForm"
+    >
+      <el-form-item>
+        <el-select
+          v-model.trim="searchForm.type"
+          clearable
+          placeholder="课程类型"
+        >
+          <el-option label="线上课" value="ONLINE"></el-option>
+          <el-option label="线下课" value="OFFLINE"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-select
+          v-model.trim="searchForm.status"
+          clearable
+          placeholder="课程状态"
+        >
+          <el-option label="未开始" value="NOT_START"></el-option>
+          <el-option label="进行中" value="UNDERWAY"></el-option>
+          <el-option label="已结束" value="OVER"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-date-picker
+          v-model.trim="searchForm.time"
+          style="width: 400px"
+          type="daterange"
+          value-format="yyyy-MM-dd"
+          range-separator="至"
+          start-placeholder="课程开始日期"
+          end-placeholder="课程结束日期"
+          :picker-options="{
+            firstDayOfWeek: 1,
+          }"
+        >
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <el-button native-type="submit" type="danger">搜索</el-button>
+      </el-form-item>
+    </save-form>
+    <!-- 列表 -->
+    <div class="tableWrap">
+      <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column align="center" label="课程编号" prop="id">
+        </el-table-column>
+        <el-table-column
+          align="center"
+          label="上课时间"
+          width="250px"
+          prop="startClassTime"
+        >
+          <template slot-scope="scope">
+            <!--  {{ scope.row.classDate }} {{ scope.row.startClassTime ? scope.row.startClassTime.substr(0, 5) : '' }}-{{ scope.row.endClassTime ? scope.row.endClassTime.substr(0, 5) : '' }} -->
+            <div>
+              <p>
+                {{ scope.row.startClassTime | dateForMinFormat }}-{{
+                  scope.row.endClassTime | endTime
+                }}
+              </p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="课程类型" prop="teachMode">
+          <template slot-scope="scope">
+            <div>
+              <p>{{ scope.row.teachMode | fitterTeachMode }}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="教学点" prop="schoolName">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.schoolName ? scope.row.schoolName : "网络教室" }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="上课学员数" prop="attendanceNum">
+        </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="status" label="课程状态">
+          <template slot-scope="scope">
+            <div>
+              <p>{{ scope.row.status | fitterStatus }}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="isSalary" label="结算状态">
+          <template slot-scope="scope">
+            <div>
+              <p>{{ scope.row.isSalary | fitterisSalary }}</p>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="操作" width="200">
+          <template slot-scope="scope">
+            <div>
+              <el-button
+                type="text"
+                v-if="scope.row.attendanceNum"
+                permission="'vipGroupManage/findVipGroupAttendanceStudents'"
+                @click="lookStudents(scope.row)"
+                >查看学员</el-button
+              >
+
+              <!-- 未结算没有点击功能 -->
+              <el-button
+                v-if="
+                  scope.row.status == 'OVER' &&
+                  !scope.row.isSalary &&
+                  permission('teacherAttendance/updateTeacherAttendance/3361')
+                "
+                type="text"
+                @click="onMarkAttendance(scope.row)"
+                >补考勤</el-button
+              >
+              <el-button
+                v-if="
+                  scope.row.status == 'OVER' &&
+                  permission('studentAttendance/updateStudentAttendances')
+                "
+                type="text"
+                @click="onCallName(scope.row)"
+                >点名表</el-button
+              >
+              <!-- <el-button type="text" v-permission="'vipGroupManage/classStartDateAdjust'"
+                         @click="resetClass(scope.row)">课程调整</el-button> -->
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+    </div>
+    <pagination
+      save-key='vipDetail-record'
+      sync
+      :total.sync="rules.total"
+      :page.sync="rules.page"
+      :limit.sync="rules.limit"
+      :page-sizes="rules.page_size"
+      @pagination="getList"
+    />
+    <el-dialog
+      title="上课学员"
+      :visible.sync="studentVisible"
+      width="30%"
+      :before-close="handleClose"
+    >
+      <span
+        v-for="(item, index) in studentList"
+        :key="index"
+        style="margin-left: 10px"
+        >{{ item }}</span
+      >
+      <span slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="studentVisible = false"
+          >确 定</el-button
+        >
+      </span>
+    </el-dialog>
+    <!-- <el-dialog title="课程调整"
+               :visible.sync="courseVisible"
+               width="420px">
+      <el-form :model="maskForm"
+               :rules="maskrules"
+               label-width="120px"
+               label-position="right"
+               ref='maskForm'>
+        <el-form-item label="选择上课日期"
+                      prop="date">
+          <el-date-picker type="date"
+                          value-format="yyyy-MM-dd"
+                          :picker-options="{
+                            firstDayOfWeek:1
+                          }"
+                          v-model.trim="maskForm.date"
+                          placeholder="选择日期"></el-date-picker>
+        </el-form-item>
+        <el-form-item label="开始时间"
+                      prop="startTime">
+          <el-time-picker v-model.trim="maskForm.startTime"
+                          format='HH:mm'
+                          value-format='HH:mm'
+                          :picker-options="{
+                          selectableRange: '06:00:00 - 23:59:00'
+                            }"
+                          placeholder="选择时间">
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="结束时间"
+                      prop="endTime">
+          <el-time-picker v-model.trim="maskForm.endTime"
+                          format='HH:mm'
+                          value-format='HH:mm'
+                          :picker-options="{
+              selectableRange:`${maskForm.startTime ? maskForm.startTime+':00' : '06:00:00'}-23:59:00`
+  }"
+                          placeholder="选择时间">
+          </el-time-picker>
+        </el-form-item>
+        <el-form-item label="教学点"
+                      prop="cooperation"
+                      v-if='activeRow&&activeRow.teachMode == "OFFLINE"'>
+          <el-select v-model.trim="maskForm.cooperation"
+                     clearable
+                     filterable>
+            <el-option v-for='(item,index) in cooperationList'
+                       :key="index"
+                       :value="item.id"
+                       :label="item.name"></el-option>
+          </el-select>
+        </el-form-item>
+      </el-form>
+      <span slot="footer"
+            class="dialog-footer">
+        <el-button type="primary"
+                   @click="resetCourse">确 定</el-button>
+      </span>
+    </el-dialog> -->
+
+    <el-dialog
+      title="补考勤"
+      width="400px"
+      :visible.sync="markAttendance.status"
+    >
+      <el-form>
+        <el-form-item label="签到状态"
+          >{{ markAttendance.dataInfo.signInStatus | attendanceType }}
+        </el-form-item>
+        <el-form-item label="签到时间">{{
+          markAttendance.dataInfo.signInTime
+        }}</el-form-item>
+        <el-form-item label="签退状态"
+          >{{ markAttendance.dataInfo.signOutStatus | attendanceOutType }}
+        </el-form-item>
+        <el-form-item label="签退时间">{{
+          markAttendance.dataInfo.signOutTime
+        }}</el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="markAttendance.status = false">取 消</el-button>
+        <el-button
+          type="primary"
+          :disabled="
+            markAttendance.dataInfo.signOutStatus == 1 &&
+            markAttendance.dataInfo.signInStatus == 1
+              ? true
+              : false
+          "
+          @click="batchAdjustmentTime"
+          >确定补卡</el-button
+        >
+      </div>
+    </el-dialog>
+
+    <el-dialog title="点名表" width="800px" :visible.sync="rollCall.status">
+      <el-table :data="rollCall.gridData" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column
+          align="center"
+          property="userName"
+          label="学员姓名"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          property="phone"
+          label="手机号"
+        ></el-table-column>
+        <el-table-column
+          align="center"
+          property="subjectName"
+          label="学员声部"
+        ></el-table-column>
+        <el-table-column align="center" label="到课状态">
+          <template slot-scope="scope">
+            {{ scope.row.status | studentCallName }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          v-if="!rollCall.selectItem.isSalary"
+          label="操作"
+          width="240px"
+        >
+          <template slot-scope="scope">
+            <el-button
+              size="mini"
+              @click="onChangeRollCall('TRUANT', scope.row)"
+              type="primary"
+              round
+              >未到</el-button
+            >
+            <el-button
+              size="mini"
+              @click="onChangeRollCall('LEAVE', scope.row)"
+              type="warning"
+              round
+              >请假</el-button
+            >
+            <el-button
+              size="mini"
+              @click="onChangeRollCall('NORMAL', scope.row)"
+              type="success"
+              round
+              >到课</el-button
+            >
+          </template>
+        </el-table-column>
+      </el-table>
+      <pagination
+        :total="rollCall.total"
+        :page.sync="rollCall.page"
+        :limit.sync="rollCall.limit"
+        :page-sizes="rollCall.page_size"
+        @pagination="getCallName"
+      />
+    </el-dialog>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import { getSchool } from "@/api/systemManage";
+import {
+  findVipGroupTeachingRecord,
+  getStudyStudents,
+  resetVipClass,
+} from "@/api/vipSeting";
+import {
+  findAttendanceStudentByCourseWithPage,
+  updateStudentAttendances,
+  updateTeacherAttendance,
+} from "@/api/buildTeam";
+import { permission } from "@/utils/directivePage";
+export default {
+  components: { pagination },
+  name: "teacherRecord",
+  data() {
+    return {
+      searchForm: {
+        type: "",
+        status: "",
+        time: [],
+      },
+      searchLsit: [],
+      tableList: [],
+      id: "",
+      complaintsNum: "", //投诉数
+      currentClassTimes: "", //当前课数
+      isSalaryNum: "", // 已结算
+      totalClassTimes: "", // 未上课数
+      studentVisible: false, // 查看上课学员数的弹窗
+      courseVisible: false, // 课时调整弹窗
+      studentList: [],
+      cooperationList: [],
+      maskForm: {
+        data: "",
+        startTime: "",
+        endTime: "",
+        status: "",
+        type: "",
+        cooperation: "",
+      },
+      markAttendance: {
+        // 考勤状态
+        status: false,
+        dataInfo: {},
+      },
+      activeId: "",
+      activeRow: null, //
+      maskrules: {
+        date: [{ required: true, message: "请选择修改日期", trigger: "blur" }],
+        startTime: [{ required: true, message: "请选择开始", trigger: "blur" }],
+        endTime: [{ required: true, message: "请选择结束", trigger: "blur" }],
+      },
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      rollCall: {
+        // 点名表
+        status: false,
+        gridData: [],
+        selectItem: {}, // 选中状态
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+    };
+  },
+  mounted() {
+    this.__init();
+  },
+  activated() {
+    this.__init();
+  },
+  methods: {
+    __init() {
+      let id = this.$route.query.id;
+      this.id = id;
+      this.rules.page = 1;
+      // 获取vip教学记录
+      this.getList();
+      // 获取分部教学点
+      getSchool({ organId: null }).then((res) => {
+        if (res.code == 200) {
+          this.cooperationList = res.data;
+        }
+      });
+    },
+    search() {
+      this.rules.page = 1;
+      this.getList();
+    },
+    getList() {
+      let startTime;
+      let endTime;
+      if (this.searchForm.time) {
+        startTime = this.searchForm.time[0];
+        endTime = this.searchForm.time[1];
+      } else {
+        startTime = "";
+        endTime = "";
+      }
+      let obj = {
+        vipGroupId: this.id,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        status: this.searchForm.status || null,
+        teachMode: this.searchForm.type || null,
+        startTime,
+        endTime,
+      };
+      findVipGroupTeachingRecord(obj).then((res) => {
+        if (res.code == 200) {
+          this.complaintsNum = res.data.baseInfo.complaintsNum;
+          // 当前课数
+          this.currentClassTimes = res.data.baseInfo.courseEndNum;
+          this.isSalaryNum = res.data.baseInfo.isSalaryNum;
+          // 未上课数
+          this.totalClassTimes = res.data.baseInfo.courseNoStartNum;
+          // this.totalClassTimes = res.data.baseInfo.totalClassTimes - this.currentClassTimes;
+          this.tableList = res.data.pageInfo.rows;
+          this.rules.total = res.data.pageInfo.total;
+        }
+      });
+    },
+    batchAdjustmentTime() {
+      let tempData = this.markAttendance.dataInfo;
+      let params = {
+        courseScheduleId: tempData.id,
+        signInStatus: 1,
+        signOutStatus: 1,
+      };
+      updateTeacherAttendance(params).then((res) => {
+        if (res.code == 200) {
+          this.$message.success("补卡成功");
+          this.markAttendance.status = false;
+          this.getList();
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    onMarkAttendance(item) {
+      // 补考勤
+      this.markAttendance = {
+        status: true,
+        dataInfo: item,
+      };
+    },
+    onCallName(item) {
+      // 点名表
+      this.rollCall.page = 1;
+      this.rollCall.selectItem = item;
+      this.getCallName();
+    },
+    getCallName() {
+      let rollCall = this.rollCall;
+      let params = {
+        page: rollCall.page,
+        rows: rollCall.limit,
+        courseScheduleId: rollCall.selectItem.id,
+      };
+      findAttendanceStudentByCourseWithPage(params).then((res) => {
+        let result = res.data;
+        rollCall.status = true;
+        if (res.code == 200) {
+          rollCall.gridData = result.rows;
+          rollCall.total = result.total;
+        }
+      });
+    },
+    onChangeRollCall(type, row) {
+      let rollCall = this.rollCall;
+      let params = {
+        courseScheduleId: rollCall.selectItem.id,
+        studentAttendances: [
+          {
+            userId: row.studentId,
+            status: type,
+          },
+        ],
+      };
+      updateStudentAttendances(params).then((res) => {
+        if (res.code == 200) {
+          this.$message.success("修改成功");
+          row.status = type;
+          this.getList();
+        } else {
+          this.$message.error(res.msg);
+        }
+      });
+    },
+    lookStudents(row) {
+      let id = row.id;
+      getStudyStudents({ courseScheduleId: id }).then((res) => {
+        if (res.code == 200) {
+          this.studentList = res.data;
+          this.studentVisible = true;
+        }
+      });
+    },
+    permission(str) {
+      return permission(str);
+    },
+    handleClose() {
+      this.studentList = [];
+      this.studentVisible = false;
+    },
+    resetClass(row) {
+      this.courseVisible = true;
+      // 弹出弹窗
+      this.activeId = row.id;
+      this.activeRow = row;
+      // resetVipClass().then()
+    },
+    resetCourse() {
+      // 点击弹窗效验
+      this.$refs["maskForm"].validate((valid) => {
+        if (valid) {
+          // 效验成功
+          resetVipClass({
+            id: this.activeId,
+            classDate: this.maskForm.date,
+            startClassTime: this.maskForm.date + " " + this.maskForm.startTime,
+            endClassTime: this.maskForm.date + " " + this.maskForm.endTime,
+            schoolId: this.maskForm.cooperation,
+          }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success("调整成功");
+              this.getList();
+              this.courseVisible = false;
+              this.$refs["maskForm"].resetFields();
+            } else {
+              this.$message.error(res.msg);
+            }
+          });
+        }
+      });
+    },
+  },
+  filters: {
+    fitterisSalary(val) {
+      let arr = ["未结算", "已结算"];
+      return arr[val];
+    },
+    fitterTeachMode(val) {
+      if (val == "ONLINE") {
+        return "线上课";
+      } else if (val == "OFFLINE") {
+        return "线下课";
+      }
+    },
+    fitterStatus(val) {
+      if (val == "NOT_START") {
+        return "未开始";
+      } else if (val == "UNDERWAY") {
+        return "进行中";
+      } else if (val == "OVER") {
+        return "已结束";
+      }
+    },
+    endTime(val) {
+      if (val) {
+        return val.split(" ")[1].substring(0, 5);
+      } else {
+        return val;
+      }
+    },
+    studentCallName: (value) => {
+      let template = {
+        NORMAL: "到课",
+        TRUANT: "未到",
+        LEAVE: "请假",
+        DROP_OUT: "退学",
+        LATE: "迟到",
+        "": "未到",
+      };
+      return template[value];
+    },
+  },
+};
+</script>
+<style lang="scss" scope>
+</style>

+ 3 - 3
src/views/vipClass/vipReset.vue

@@ -367,7 +367,7 @@
                             format='HH:mm'
                             value-format='HH:mm'
                             :picker-options="{
-                            selectableRange: '04:30:00 - 23:30:00'
+                            selectableRange: '06:00:00 - 21:00:00'
                             }"></el-time-picker>
             <span style="margin-left:10px;">结束时间</span>
             <el-time-picker style="margin-left:10px;"
@@ -377,7 +377,7 @@
                             value-format='HH:mm'
                             disabled
                             :picker-options="{
-                            selectableRange: '04:30:00 - 23:30:00'
+                            selectableRange: '06:00:00 - 21:00:00'
                             }"></el-time-picker>
             <el-button style="margin-left:10px;"
                        type="danger"
@@ -1142,7 +1142,7 @@ export default {
     computed:{
     nowTime(){
       // console.log(that.maskForm.date)
-      let str = '04:30:00'
+      let str = '06:00:00'
       if(that.maskForm.date == dayjs(new Date).format('YYYY-MM-DD')){
         str = dayjs(new Date).format('HH:mm:ss')
       }

部分文件因为文件数量过多而无法显示