mo 4 years ago
parent
commit
9ee18d6595
59 changed files with 399 additions and 181 deletions
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/chunk-001a0337.d0e14a4d.css
  3. 0 1
      dist/static/css/chunk-071ca6b2.e1f39c77.css
  4. 0 0
      dist/static/css/chunk-58005682.59508c8c.css
  5. 0 0
      dist/static/css/chunk-5dcfc19b.41cf940d.css
  6. 0 0
      dist/static/css/chunk-7cacdd72.4b1b8eaa.css
  7. 0 0
      dist/static/css/chunk-badb2aba.8551dbac.css
  8. 0 0
      dist/static/css/chunk-fa92c0ee.dff09e43.css
  9. 0 0
      dist/static/js/app.063a50c6.js
  10. 0 0
      dist/static/js/app.d43551df.js
  11. 0 0
      dist/static/js/chunk-001a0337.325021aa.js
  12. 0 0
      dist/static/js/chunk-071ca6b2.cfec0407.js
  13. 0 0
      dist/static/js/chunk-41b8b496.0f1065c8.js
  14. 0 0
      dist/static/js/chunk-46ce4004.ac9c8ac8.js
  15. 0 0
      dist/static/js/chunk-58005682.ae7b1c80.js
  16. 0 0
      dist/static/js/chunk-5dcfc19b.d22623ec.js
  17. 0 0
      dist/static/js/chunk-68fa1f94.5f859fc3.js
  18. 0 0
      dist/static/js/chunk-6fc50c24.cb97bee9.js
  19. 0 0
      dist/static/js/chunk-7cacdd72.757c2a14.js
  20. 0 0
      dist/static/js/chunk-901cd140.37a30ad3.js
  21. 0 0
      dist/static/js/chunk-badb2aba.661dc726.js
  22. 0 0
      dist/static/js/chunk-d26cf0da.760a7533.js
  23. 0 0
      dist/static/js/chunk-d6221502.797364de.js
  24. 0 0
      dist/static/js/chunk-fa92c0ee.399f4bba.js
  25. 16 12
      src/router/index.js
  26. 1 0
      src/router/notKeepAliveList.js
  27. 1 1
      src/views/adapayAccount/form.vue
  28. 1 1
      src/views/adapayAccount/index.vue
  29. 5 5
      src/views/app/entryActivities.vue
  30. 2 2
      src/views/auditList/audit.vue
  31. 2 14
      src/views/auditList/index.vue
  32. 4 6
      src/views/categroyManager/insideSetting/addressManager.vue
  33. 0 3
      src/views/categroyManager/insideSetting/branchManager.vue
  34. 4 5
      src/views/categroyManager/insideSetting/staffManager.vue
  35. 1 1
      src/views/categroyManager/vipChargeSeting.vue
  36. 1 1
      src/views/chargeManager/two.vue
  37. 13 4
      src/views/main/abnormal/index.vue
  38. 20 6
      src/views/main/abnormal/title.vue
  39. 7 0
      src/views/main/api.js
  40. 8 1
      src/views/main/constant.js
  41. 176 0
      src/views/main/notClassStudent.vue
  42. 7 7
      src/views/resetTeaming/index.vue
  43. 2 2
      src/views/resetTeaming/modals/review.vue
  44. 72 66
      src/views/setSilder/addSilder.vue
  45. 6 1
      src/views/teamBuild/teamSeting/components/setClassV2.vue
  46. 2 1
      src/views/teamDetail/componentCourse/studentRollCall.vue
  47. 2 6
      src/views/teamDetail/componentCourse/teacherList.vue
  48. 4 3
      src/views/teamDetail/components/modals/select-student.vue
  49. 3 0
      src/views/teamDetail/components/resetClass.vue
  50. 11 5
      src/views/teamDetail/teamCourseList.vue
  51. 3 3
      src/views/timedTask/index.vue
  52. 2 1
      src/views/workBenchManager/classFeesIsOk.vue
  53. 5 5
      src/views/workBenchManager/journal/index.vue
  54. 3 3
      src/views/workBenchManager/journal/model/leave.vue
  55. 5 3
      src/views/workBenchManager/journal/model/list.vue
  56. 3 5
      src/views/workBenchManager/journal/model/musicGroup.vue
  57. 3 3
      src/views/workBenchManager/journal/model/student.vue
  58. 3 3
      src/views/workBenchManager/journal/model/vipApply.vue
  59. 1 1
      src/views/workBenchManager/payAppeal.vue

File diff suppressed because it is too large
+ 0 - 0
dist/index.html


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-001a0337.d0e14a4d.css


+ 0 - 1
dist/static/css/chunk-071ca6b2.e1f39c77.css

@@ -1 +0,0 @@
-[data-v-ae845b98] .el-popover .el-form{display:-webkit-box;display:-ms-flexbox;display:flex}[data-v-ae845b98] .el-popover .el-form-item__content{margin-left:0!important}.music-title[data-v-ae845b98]{font-size:14px;color:#444}.music-title .el-col[data-v-ae845b98]{background-color:#edeef0;padding-left:36px}.music-title[data-v-ae845b98] .el-button{float:right;margin-top:10px;margin-right:16px}.el-row[data-v-ae845b98]{margin-bottom:12px}.el-row .el-col[data-v-ae845b98]{line-height:48px}.el-row .el-col-18[data-v-ae845b98]{width:calc(75% - 20px);margin-left:20px}.el-row .one_name[data-v-ae845b98]{padding-left:10px}.el-row .tow_col[data-v-ae845b98]{padding-left:20px}.el-row .tow_col .el-button--primary[data-v-ae845b98],.el-row .tow_col .el-button--primary[data-v-ae845b98]:active,.el-row .tow_col .el-button--primary[data-v-ae845b98]:focus,.el-row .tow_col .el-button--primary[data-v-ae845b98]:hover{background:#fff;border-color:#979797;color:#777}.el-row .tow_input[data-v-ae845b98]{width:100px;margin-right:12px}.el-button--primary[data-v-ae845b98],.el-button--primary[data-v-ae845b98]:active,.el-button--primary[data-v-ae845b98]:focus,.el-button--primary[data-v-ae845b98]:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-ae845b98] .el-date-editor.el-input{width:100%!important}.el-select[data-v-ae845b98]{width:98%!important}.el-tag+.el-tag[data-v-ae845b98]{margin-left:10px}.button-new-tag[data-v-ae845b98]{margin-left:10px;height:32px;line-height:30px;padding-top:0;padding-bottom:0}.input-new-tag[data-v-ae845b98]{width:90px;vertical-align:bottom}.el-tag--dark.el-tag--info[data-v-ae845b98]{background-color:#f0f2f5;border-color:#f0f2f5;color:#5a5e66}.el-tag--dark.el-tag--info[data-v-ae845b98] .el-tag__close{background-color:#c0c4cc}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-58005682.59508c8c.css


+ 0 - 0
dist/static/css/chunk-901cd140.b05a6f22.css → dist/static/css/chunk-5dcfc19b.41cf940d.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-7cacdd72.4b1b8eaa.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-badb2aba.8551dbac.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-fa92c0ee.dff09e43.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.063a50c6.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/app.d43551df.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-001a0337.325021aa.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-071ca6b2.cfec0407.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-41b8b496.0f1065c8.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-46ce4004.ac9c8ac8.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-58005682.ae7b1c80.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-5dcfc19b.d22623ec.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-68fa1f94.5f859fc3.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6fc50c24.cb97bee9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7cacdd72.757c2a14.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-901cd140.37a30ad3.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-badb2aba.661dc726.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-d26cf0da.760a7533.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-d6221502.797364de.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-fa92c0ee.399f4bba.js


+ 16 - 12
src/router/index.js

@@ -65,16 +65,18 @@ export const constantRoutes = [
     path: '/setSilder', // 侧边栏
     component: Layout,
     hidden: true,
-    children: [{
-      name: '侧边栏',
-      path: 'setSilder',
-      component: () => import('@/views/setSilder/addSilder'),
-      hidden: true,
-      meta: {
-        noCache: '1',
-        title: '侧边栏'
-      }
-    }, {
+    children: [
+    //   {
+    //   name: '侧边栏',
+    //   path: 'setSilder',
+    //   component: () => import('@/views/setSilder/addSilder'),
+    //   hidden: true,
+    //   meta: {
+    //     noCache: '1',
+    //     title: '侧边栏'
+    //   }
+    // }, 
+    {
       name: '提交表单',
       path: 'save-form',
       component: () => import('@/views/save-form-test'),
@@ -208,7 +210,7 @@ export const asyncRoutes = {
   shopCategory: () => import('@/views/businessManager/shopManager/shopCategory'),
   // 报表中心
   reportForm: () => import('@/views/reportForm/index'),
-  musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
+  // musicalManager: () => import('@/views/categroyManager/specialSetup/musicalManager'),
   // 系统管理
   specialSetup: () => import('@/views/categroyManager/specialSetup/index'),
   // 类型管理
@@ -426,7 +428,9 @@ export const asyncRoutes = {
   branchActiveManager:()=>import('@/views/courseListManager'),
   // vip活动管理
   vipActiveManager:()=>import('@/views/courseListManager'),
-  serverDetail:()=>import('@/views/serverDetail')
+  serverDetail:()=>import('@/views/serverDetail'),
+  // 未在班级学员
+  notClassStudent:()=>import('@/views/main/notClassStudent')
 }
 
 export default router

+ 1 - 0
src/router/notKeepAliveList.js

@@ -13,6 +13,7 @@ export default [
   '/vipClassSet/vipActiveList', // VIP活动方案
   '/vipClassSet/vipNewActive', // VIP活动方案修改
   '/main/main', // 首页
+  '/main/notClassStudent', // 未在班级学员
   '/journal/journal', // 系统日志
   '/business/accompany', // 网管课管理
   '/business/accompanys', // 网管课详情

+ 1 - 1
src/views/adapayAccount/form.vue

@@ -377,7 +377,7 @@ export default {
       this.form.multipartFile = null
       this.$store.dispatch('delVisitedViews', this.$route)
       this.$router.push({
-        path: "/insideSetting/adapayManager"
+        path: "/systemManager/sysBasics/adapayManager"
       });
     }
   },

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

@@ -286,7 +286,7 @@ export default {
         tagTitle = '修改'
       }
       this.$router.push({
-        path: '/insideSetting/adapayOperation',
+        path: '/systemManager/sysBasics/adapayOperation',
         query: {
           type: type,
           row: JSON.stringify(row)

+ 5 - 5
src/views/app/entryActivities.vue

@@ -5,7 +5,7 @@
     </h2>
     <div class="m-core">
       <div @click="onChargeOperation('create')"
-           v-permission="'/entryOperation'"
+           v-permission="'tenantEntryActivities/merge'"
            class='newBand'>添加</div>
       <save-form :inline="true"
                :model="searchForm"
@@ -81,9 +81,9 @@
                            label="操作">
             <template slot-scope="scope">
               <el-button type="text"
-                         v-permission="'/entryOperationLook'"
+                         v-if="$helpers.permission('tenantEntryActivities/query')"
                          @click="onChargeOperation('look', scope.row)">查看</el-button>
-              <el-button v-permission="'tenantEntryActivities/updateDelFlag'"
+              <el-button v-if="$helpers.permission(scope.row.delFlag ? 'tenantEntryActivities/updateDelFlag/open' : 'tenantEntryActivities/updateDelFlag/stop') "
                          @click="onChargeOperation('update', scope.row)"
                          type="text">{{ scope.row.delFlag ? '启用' : '停用' }}</el-button>
             </template>
@@ -157,7 +157,7 @@ export default {
         })
       } else if (type == 'create') {
         this.$router.push({
-          path: '/insideSetting/entryOperation',
+          path: '/systemManager/sysBasics/entryOperation',
           query: {
             type: 'create'
           }
@@ -166,7 +166,7 @@ export default {
         })
       } else if (type == 'look') {
         this.$router.push({
-          path: '/insideSetting/entryOperation',
+          path: '/systemManager/sysBasics/entryOperation',
           query: {
             id: row.id,
             type: 'look'

+ 2 - 2
src/views/auditList/audit.vue

@@ -16,10 +16,10 @@
       <!-- <el-button @click="$listeners.close">取 消</el-button> -->
       <el-button type="primary"
                  @click="submit(1)"
-                 v-if="permission('musicGroupPaymentCalender/auditPass')">审核通过</el-button>
+                 v-if="permission('musicGroupPaymentCalender/auditPass/batchAuditing')">审核通过</el-button>
       <el-button type="danger"
                  @click="submit(0)"
-                 v-if="permission('musicGroupPaymentCalender/auditRefuse')">驳回</el-button>
+                 v-if="permission('musicGroupPaymentCalender/auditRefuse/batchAuditing')">驳回</el-button>
       <el-button @click="$emit('close')">关 闭</el-button>
     </div>
   </div>

+ 2 - 14
src/views/auditList/index.vue

@@ -72,7 +72,7 @@
         <el-form-item>
           <el-button @click="search" type="primary">搜索</el-button>
           <el-button @click="reset" type="danger">重置</el-button>
-          <auth auths="musicGroupPaymentCalender/auditPass">
+          <auth auths="musicGroupPaymentCalender/batchAuditing" style="margin-left: 10px">
             <el-button
               @click="typesStatus = true"
               :disabled="!selList.length > 0"
@@ -219,7 +219,7 @@
             fixed="right"
           >
             <template slot-scope="scope">
-              <auth auths="musicGroupPaymentCalender/auditListDetail">
+              <auth :auths="scope.row.auditStatus === 'AUDITING' ? 'musicGroupPaymentCalender/auditListDetail/update' : 'musicGroupPaymentCalender/auditListDetail/look'">
                 <el-button @click="lookDetail(scope.row)" type="text">
                   {{ scope.row.auditStatus === "AUDITING" ? "审核" : "查看" }}
                 </el-button>
@@ -364,18 +364,6 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
-.el-button--primary {
-  background: #14928a;
-  border-color: #14928a;
-  color: #fff;
-  &:hover,
-  &:active,
-  &:focus {
-    background: #14928a;
-    border-color: #14928a;
-    color: #fff;
-  }
-}
 /deep/.el-date-editor.el-input {
   width: 100% !important;
 }

+ 4 - 6
src/views/categroyManager/insideSetting/addressManager.vue

@@ -92,27 +92,25 @@
             <template slot-scope="scope">
               <el-button
                 @click="openTeaching('update', scope.row)"
-                v-permission="'school/update'"
+                v-if="$helpers.permission('school/update')"
                 type="text"
                 >修改</el-button
               >
               <el-button
-                v-if="scope.row.delFlag == 0"
-                v-permission="'school/update'"
+                v-if="scope.row.delFlag == 0 && $helpers.permission('school/update/stop')"
                 @click="onUpdateSubmit(scope.row, 2)"
                 type="text"
                 >停用</el-button
               >
               <el-button
-                v-if="scope.row.delFlag == 2"
-                v-permission="'school/update'"
+                v-if="scope.row.delFlag == 2 && $helpers.permission('school/update/open')"
                 @click="onUpdateSubmit(scope.row, 0)"
                 type="text"
                 >启用</el-button
               >
               <el-button
                 @click="onUpdateSubmit(scope.row, 1)"
-                v-permission="'school/update'"
+                v-if="$helpers.permission('school/update/del')"
                 type="text"
                 >删除</el-button
               >

+ 0 - 3
src/views/categroyManager/insideSetting/branchManager.vue

@@ -202,12 +202,9 @@
 import pagination from '@/components/Pagination/index'
 import { cooperationOrganAdd, cooperationOrganUpdate, cooperationOrganDel, queryPage } from '@/api/systemManage'
 import cleanDeep from 'clean-deep'
-import store from '@/store'
 import { isvalidPhone } from '@/utils/validate'
-import { getToken } from "@/utils/auth";
 import { Export } from '@/utils/downLoadFile'
 import qs from "qs";
-import axios from "axios";
 let validPhone = (rule, value, callback) => {
   if (!value) {
     callback(new Error('请输入电话号码'))

+ 4 - 5
src/views/categroyManager/insideSetting/staffManager.vue

@@ -129,17 +129,16 @@
                            label="操作">
             <template slot-scope="scope">
               <el-button @click="roleOperation('update', scope.row)"
-                         v-permission="'employee/update'"
+                         v-if="permission('employee/update')"
                          type="text">修改</el-button>
               <el-button @click="onStaffOperation('RESET_PASSWORD', scope.row)"
-                         v-permission="'employee/employeeOperate'"
+                         v-if="permission('employee/employeeOperate/RESET_PASSWORD')"
                          type="text">重置密码</el-button>
               <el-button @click="onStaffOperation('LOCK_UNLOCK', scope.row)"
-                         v-permission="'employee/employeeOperate'"
+                         v-if="permission(scope.row.lockFlag == 1 ? 'employee/employeeOperate/unlock' : 'employee/employeeOperate/lock')"
                          type="text">{{ scope.row.lockFlag == 1 ? '解冻' : '冻结' }}</el-button>
               <el-button @click="onStaffOperation('REINSTATE', scope.row)"
-                         v-permission="'employee/employeeOperate'"
-                         v-if="scope.row.demissionDate"
+                         v-if="scope.row.demissionDate && permission('employee/employeeOperate/REINSTATE')"
                          type="text">复职</el-button>
               <el-button @click="handover(scope.row)"
                          v-if="!scope.row.demissionDate && permission('employee/level') && permission('employee/levelDetail')"

+ 1 - 1
src/views/categroyManager/vipChargeSeting.vue

@@ -52,7 +52,7 @@
           <el-table-column label="操作">
             <template slot-scope="scope">
               <div>
-                <el-button type="text" v-permission="'vipGroupDefaultClassesUnitPrice/add'"
+                <el-button type="text" v-if="$helpers.permission('vipGroupDefaultClassesUnitPrice/add')"
                            @click="saveSeting(scope.row)">保存</el-button>
               </div>
             </template>

+ 1 - 1
src/views/chargeManager/two.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="m-container">
     <div class="m-core">
-      <div @click="sporadicStatus = true" v-permission="'sysConfig/update'" class="newBand">零星收费设置</div>
+      <div @click="sporadicStatus = true" v-permission="'sysConfig/update/setting'" class="newBand">零星收费设置</div>
       <p style="color: red; display: inline-block; padding-left: 10px">金额设置0则不做限制</p>
 
       <!-- 列表 -->

+ 13 - 4
src/views/main/abnormal/index.vue

@@ -40,11 +40,16 @@
     >
       <title-item
         :type="item[0].isError ? 'error' : 'warning'"
-        :data="item.map(title => ({name: title.desc, num: title.num,errorType:title.errorType}))"
+        :data="item.map(title => ({name: title.desc, num: title.num, num2: title.num2, errorType:title.errorType}))"
       >
-        <span
-          style="color: #14928A;"
-        >立即处理<i class="el-icon-d-arrow-right"/></span>
+        <span style="color: #14928A;" v-if='item[0].errorType == "NO_CLASS_MUSIC_GROUP_STUDENT_INFO"'>
+          <template v-if="permission('/notClassStudent')">
+            立即处理<i class="el-icon-d-arrow-right"/>
+          </template>
+        </span>
+        <span style="color: #14928A;" v-else>
+          立即处理<i class="el-icon-d-arrow-right"/>
+        </span>
       </title-item>
     </el-button>
     <!-- <title-item
@@ -150,6 +155,10 @@ export default {
   methods: {
     permission,
     handle(item) {
+      console.log(item)
+      if(item[0].errorType == "NO_CLASS_MUSIC_GROUP_STUDENT_INFO" && !this.permission('/notClassStudent')) {
+        return
+      }
       new Searchs().removeByKey(item[0].url)
       this.$router.push({
         path: item[0].url,

+ 20 - 6
src/views/main/abnormal/title.vue

@@ -2,7 +2,7 @@
   <div class="title" :class="{error: type === 'error', warning: type === 'warning'}">
     <div>
       <span v-for="(item, index) in data" :key="index">
-        <span>{{item.name}}</span>
+        <span v-html=titleFilter(item)></span>
               <el-tooltip
             v-if="descs[item.errorType]"
             :content="descs[item.errorType]"
@@ -15,7 +15,7 @@
                 style="font-size: 14px; "
             />
           </el-tooltip>
-        <b>{{item.num}}</b>
+        <b v-if="!(ignore.includes(item.errorType))">{{item.num}}</b>
       </span>
 
     </div>
@@ -37,10 +37,24 @@ export default {
   },
   data(){
     return{
-     descs
+     descs,
+     ignore: ['NO_CLASS_MUSIC_GROUP_STUDENT_INFO'] // // 忽略类型
     }
   },
   mounted(){
+  },
+  methods: {
+    titleFilter(item) {
+      
+      if(this.ignore.includes(item.errorType)) {
+        let tempName = item.name
+        tempName = tempName.replace('{0}', `<b>${item.num}</b>`)
+        tempName = tempName.replace('{1}', `<b>${item.num2}</b>`)
+        return tempName
+      } else {
+        return item.name
+      }
+    }
   }
 }
 </script>
@@ -56,14 +70,14 @@ export default {
   font-weight: bold;
   transition: all .3s;
   width: 100%;
-  b{
+  /deep/b {
     font-size: 18px;
   }
   &:hover{
     background-color: rgba(0, 0, 0, .06);
   }
   &.error {
-    b{
+    /deep/b{
       color: #ED6F62;
     }
     &:before{
@@ -71,7 +85,7 @@ export default {
     }
   }
   &.warning {
-    b{
+    /deep/b{
       color: #F2A24A;
     }
     &:before{

+ 7 - 0
src/views/main/api.js

@@ -111,3 +111,10 @@ export const hasIndexErrData = () => request2({
   method: 'get',
   loading: false,
 })
+
+// 查询乐团中未加入班级学员信息
+export const queryNoClassMusicStudentInfo = (data) => request2({
+  url: '/api-web/studentRegistration/queryNoClassMusicStudentInfo',
+  method: 'get',
+  params: data
+})

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

@@ -43,7 +43,8 @@ export const descs = {
   TEACHER_EXCEPTION_ATTENDANCE:'课程上有老师或学员考勤异常',
   TEACHER_NOT_A_CLASS:'课程无老师考勤',
   TEACHER_SERVE_ERROR:'服务指标生成的作业未布置',
-  WAIT_CREATE_PAYMENT_CALENDER:'缴费项目有效期结束前7天'
+  WAIT_CREATE_PAYMENT_CALENDER:'缴费项目有效期结束前7天',
+  NO_CLASS_MUSIC_GROUP_STUDENT_INFO: '进行中乐团不在班级中的在读学员提醒'
 }
 
 const dates = {
@@ -73,6 +74,12 @@ export const errorType = {
       lessThenThreeHighOnline: '1',
     },
   },
+  NO_CLASS_MUSIC_GROUP_STUDENT_INFO: {
+    name: '当前有{0}个乐团共{1}名学员未加入任何班级',
+    isError: true,
+    url: '/main/notClassStudent',
+    always: true,
+  },
   STUDENT_NOT_PAYMENT: {
     name: '未缴费学员数',
     isError: true,

+ 176 - 0
src/views/main/notClassStudent.vue

@@ -0,0 +1,176 @@
+<!--  -->
+<template>
+    <div class="m-container">
+        <h2>
+            <div class="squrt"></div>
+            未在班级学员
+        </h2>
+        <div class="m-core">
+            <save-form
+                :inline="true"
+                @submit="search"
+                @reset="onReSet"
+                ref="searchFrom"
+                :model="searchForm"
+            >
+                <el-form-item prop="musicGroupSearch">
+                    <el-input
+                        v-model.trim="searchForm.musicGroupSearch"
+                        clearable
+                        @keyup.enter.native="search"
+                        placeholder="乐团名称/编号"
+                    ></el-input>
+                </el-form-item>
+                <el-form-item prop="studentSearch">
+                    <el-input
+                        v-model.trim="searchForm.studentSearch"
+                        clearable
+                        @keyup.enter.native="search"
+                        placeholder="学员姓名/编号"
+                    ></el-input>
+                </el-form-item>
+                <el-form-item prop="organIds">
+                    <el-select
+                        placeholder="请选择分部"
+                        v-model="searchForm.organIds"
+                        clearable
+                    >
+                        <el-option
+                        v-for="(item, index) in selects.branchs"
+                        :label="item.name"
+                        :value="item.id"
+                        :key="index"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item>
+                    <el-button type="danger" native-type="submit">搜索</el-button>
+                    <el-button native-type="reset" type="primary">重置</el-button>
+                </el-form-item>
+            </save-form>
+            <div class="tableWrap">
+                <el-table
+                style="width: 100%"
+                :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+                :data="tableList"
+                >
+                <el-table-column align="center" label="分部">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.organName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="乐团编号">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.groupId }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="乐团名称">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.groupName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员编号">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentId }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员姓名">
+                    <template slot-scope="scope">
+                        <copy-text>{{ scope.row.studentName }}</copy-text>
+                    </template>
+                </el-table-column>
+                <el-table-column align="center" label="学员声部" prop="subjectName">
+                </el-table-column>
+                <el-table-column align="center" label="操作">
+                    <template slot-scope="scope">
+                        <auth :auths="['notClassStudent/nowLook', '/resetTeaming', '/resetTeaming/resetClass']" mulit>
+                            <el-button type="text" @click="showDetail(scope.row)">立即处理</el-button>
+                        </auth>
+                    </template>
+                </el-table-column>
+                </el-table>
+                <pagination
+                sync
+                :total.sync="rules.total"
+                :page.sync="rules.page"
+                :limit.sync="rules.limit"
+                :page-sizes="rules.page_size"
+                @pagination="getList"
+                />
+            </div>
+        </div>
+    </div>
+</template>
+
+<script>
+import pagination from "@/components/Pagination/index";
+import { queryNoClassMusicStudentInfo } from './api.js'
+export default {
+    components: { pagination },
+    data() {
+        return {
+            searchForm: {
+                musicGroupSearch: null,
+                studentSearch: null,
+                organIds: null,
+            },
+            rules: {
+                // 分页规则
+                limit: 10, // 限制显示条数
+                page: 1, // 当前页
+                total: 0, // 总条数
+                page_size: [10, 20, 40, 50], // 选择限制显示条数
+            },
+            tableList: []
+        };
+    },
+    //生命周期 - 挂载完成(可以访问DOM元素)
+    mounted() {
+        const { query } = this.$route
+        if (query.organId) {
+            this.searchForm.organIds = Number(query.organId)
+        }
+        this.$store.dispatch("setBranchs");
+
+        this.getList()
+    },
+    methods: {
+        search() {
+            this.rules.page = 1;
+            this.getList();
+        },
+        onReSet() {
+            this.$refs['searchFrom'].resetFields()
+            this.getList()
+        },
+        async getList() {
+            try {
+                const { ...search } = this.searchForm
+                const params = {
+                    ...search,
+                    page: this.rules.page,
+                    rows: this.rules.limit
+                }
+                let res = await queryNoClassMusicStudentInfo(params)
+                this.tableList = res.data.rows;
+                this.rules.total = res.data.total;
+            } catch (err) {
+                // 
+            }
+        },
+        showDetail(item) {
+            this.$router.push({
+                path: '/business/resetTeaming',
+                query: {
+                    type: 'resetTeam',
+                    id: item.groupId,
+                    tabrouter: 'resetClass'
+                }
+            })
+        }
+    },
+};
+</script>
+<style lang='scss' scoped>
+
+</style>

+ 7 - 7
src/views/resetTeaming/index.vue

@@ -23,7 +23,7 @@
           name="1"
         >
           <teamBaseInfo
-            v-if="activeIndex == 1"
+            v-if="activeIndex == 'teamBaseInfo'"
             @getBaseInfo="getBaseInfo"
             :baseInfo="baseInfo"
             @getName="getName"
@@ -37,7 +37,7 @@
           name="2"
           :disabled="!teamid"
         >
-          <resetSound v-if="activeIndex == 2" />
+          <resetSound v-if="activeIndex == 'resetSound'" />
         </el-tab-pane>
         <el-tab-pane lazy label="预报名信息" name="9" :disabled="!teamid">
           <!--         v-if="
@@ -60,7 +60,7 @@
           name="4"
           :disabled="!teamid"
         >
-          <teacherList :teamid="teamid" v-if="activeIndex == 4" />
+          <teacherList :teamid="teamid" v-if="activeIndex == 'teacherList'" />
         </el-tab-pane>
         <el-tab-pane
           label="学生列表"
@@ -68,7 +68,7 @@
           name="7"
           :disabled="!teamid"
         >
-          <studentList :teamid="teamid" v-if="activeIndex == 7" />
+          <studentList :teamid="teamid" v-if="activeIndex == 'studentList'" />
         </el-tab-pane>
 
         <el-tab-pane
@@ -79,7 +79,7 @@
           :disabled="!teamid"
         >
           <resetClass
-            v-if="activeIndex == 5 && musicGroupInfo"
+            v-if="activeIndex == 'resetClass' && musicGroupInfo"
             :musicGroupInfo="musicGroupInfo"
           />
         </el-tab-pane>
@@ -101,7 +101,7 @@
         >
           <resetPayList
             :baseInfo="baseInfo"
-            v-if="activeIndex == 3 && baseInfo"
+            v-if="activeIndex == 'resetPayList' && baseInfo"
             @changeActive="handleClick"
           />
         </el-tab-pane>
@@ -114,7 +114,7 @@
         >
           <resetPayListSchool
             :baseInfo="baseInfo"
-            v-if="activeIndex == 6 && baseInfo"
+            v-if="activeIndex == 'resetPayList' && baseInfo"
             @changeActive="handleClick"
           />
         </el-tab-pane>

+ 2 - 2
src/views/resetTeaming/modals/review.vue

@@ -21,10 +21,10 @@
       <!-- <el-button @click="$listeners.close">取 消</el-button> -->
       <el-button type="primary"
                  @click="submit(1)"
-                 v-if="permission('musicGroupPaymentCalender/auditPass')">审核通过</el-button>
+                 v-if="permission(getFullPermission('musicGroupPaymentCalender/auditPass'))">审核通过</el-button>
       <el-button type="danger"
                  @click="submit(0)"
-                 v-if="permission('musicGroupPaymentCalender/auditRefuse')">驳回</el-button>
+                 v-if="permission(getFullPermission('musicGroupPaymentCalender/auditRefuse'))">驳回</el-button>
       <el-button @click="$emit('close')">关 闭</el-button>
     </div>
     <div slot="footer"

+ 72 - 66
src/views/setSilder/addSilder.vue

@@ -1,74 +1,79 @@
 <template>
-  <div class="slider-container">
-    <div style="position: fixed; z-index: 100; top: 100px;left: 185px;right: 30px">
-      <el-input placeholder="请输入关键词" v-model="keyword" clearable>
-        <el-button
-          @click='onOperation("create")'
-          slot="append"
-        >添加按钮</el-button>
-      </el-input>
-    </div>
-
-    <el-table :data="tableList"
+  <div class="m-container">
+    <!-- <h2><div class="squrt"></div>侧边栏管理
+    </h2> -->
+    <div class="m-core slider-container">
+      <div style="position: fixed; z-index: 100; top: 100px;left: 245px;right: 30px">
+        <el-input placeholder="请输入关键词" v-model="keyword" clearable>
+          <el-button
+            v-permission="'menu/add'"
+            @click='onOperation("create")'
+            slot="append"
+          >添加按钮</el-button>
+        </el-input>
+      </div>
+      <div class="tableWrap">
+        <el-table :data="tableList"
               style="width: 100%;margin-bottom: 20px;margin-top: 40px;"
               row-key="id"
               border
               :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-      <el-table-column width="300px"
-                       prop="name"
-                       label="菜单名称">
-      </el-table-column>
-      <el-table-column prop="id"
-                       width="100px"
-                       label="元素ID">
-      </el-table-column>
-      <el-table-column label="菜单类型"
-                       width="100px">
-        <template slot-scope="scope">
-          {{ scope.row.type == 1 ? '按钮' : '菜单' }}
-        </template>
-      </el-table-column>
-      <el-table-column prop="sort"
-                       width="100px"
-                       label="排序">
-      </el-table-column>
-      <el-table-column prop="path"
-                       label="文件路径">
-      </el-table-column>
-      <el-table-column prop="parentPermission"
-                       label="高亮路径">
-      </el-table-column>
-      <el-table-column prop="permission"
-                       label="接口权限">
-      </el-table-column>
-      <el-table-column prop="memo"
-                       label="页面权限">
-      </el-table-column>
-      <el-table-column prop="hid"
-                       width="100px"
-                       label="是否隐藏">
-        <template slot-scope="scope">
-          {{ scope.row.hid == 1 ? '隐藏' : '不隐藏' }}
-        </template>
-      </el-table-column>
-      <el-table-column width="100px"
-                       label="是否缓存">
-        <template slot-scope="scope">
-          <div>
-            {{ parseInt(scope.row.keepAlive)  == '0' ? '缓存' : '不缓存' }}
-          </div>
-        </template>
-      </el-table-column>
-      <el-table-column label="操作">
-        <template slot-scope="scope">
-          <el-button @click="onOperation('update', scope.row)"
-                     type="text">修改</el-button>
-          <el-button @click="onDelete(scope.row)"
-                     type="text">删除</el-button>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-dialog title="侧边栏管理"
+          <el-table-column width="300px"
+                          prop="name"
+                          label="菜单名称">
+          </el-table-column>
+          <el-table-column prop="id"
+                          width="100px"
+                          label="元素ID">
+          </el-table-column>
+          <el-table-column label="菜单类型"
+                          width="100px">
+            <template slot-scope="scope">
+              {{ scope.row.type == 1 ? '按钮' : '菜单' }}
+            </template>
+          </el-table-column>
+          <el-table-column prop="sort"
+                          width="100px"
+                          label="排序">
+          </el-table-column>
+          <el-table-column prop="path"
+                          label="文件路径">
+          </el-table-column>
+          <el-table-column prop="parentPermission"
+                          label="高亮路径">
+          </el-table-column>
+          <el-table-column prop="permission"
+                          label="接口权限">
+          </el-table-column>
+          <el-table-column prop="memo"
+                          label="页面权限">
+          </el-table-column>
+          <el-table-column prop="hid"
+                          width="100px"
+                          label="是否隐藏">
+            <template slot-scope="scope">
+              {{ scope.row.hid == 1 ? '隐藏' : '不隐藏' }}
+            </template>
+          </el-table-column>
+          <el-table-column width="100px"
+                          label="是否缓存">
+            <template slot-scope="scope">
+              <div>
+                {{ parseInt(scope.row.keepAlive)  == '0' ? '缓存' : '不缓存' }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作">
+            <template slot-scope="scope">
+              <el-button @click="onOperation('update', scope.row)" v-permission="'menu/update'"
+                        type="text">修改</el-button>
+              <el-button @click="onDelete(scope.row)" v-permission="'menu/del'"
+                        type="text">删除</el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <el-dialog title="侧边栏管理"
                :close-on-click-modal="false"
                :visible.sync="branchStatus"
                default-expand-all
@@ -160,6 +165,7 @@
                    type="primary">确 定</el-button>
       </span>
     </el-dialog>
+    </div>
   </div>
 </template>
 <script>

+ 6 - 1
src/views/teamBuild/teamSeting/components/setClassV2.vue

@@ -346,6 +346,7 @@
         :classGroupId="activeClass"
         :isOnlyChangeUser="true"
         :activeType="activeType"
+        :isStudentRemove="isStudentRemove"
         type="change"
         @changeActiveChioseSound="changeActiveChioseSound"
         @searchStudent="searchStudent"
@@ -859,6 +860,7 @@ export default {
       classList: [],
       appoint: false,
       activeSoundList: [],
+      isStudentRemove: false,
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -918,6 +920,8 @@ export default {
         return;
       }
       this.newClassVisible = true;
+      // 是否可以移除学员,下次优化会去掉
+      this.isStudentRemove = false;
     },
     newClassSecond() {
       // 判断当前选择的课程类型
@@ -1035,7 +1039,7 @@ export default {
       // let arr = this.chioseStudent.map(item => {
       //   return item.userId;
       // });
-      if (arr.length <= 0) {
+      if (arr.length <= 0 && !this.isStudentRemove) {
         this.$message.error("至少添加一名学员");
         return;
       }
@@ -1462,6 +1466,7 @@ export default {
       this.activeClass = row.id;
       this.isSearch = false;
       this.activeType = row.type;
+      this.isStudentRemove = true;
       this.newClassForm.type = row.type;
       this.activeChioseSound = null;
       // 根据单机班id 查询声部班内的所有学生

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

@@ -31,7 +31,8 @@
           <template slot-scope="scope">
             <div>
               {{scope.row.username}}
-               <span style="color: #f56c6c">({{scope.row.userId}})</span>
+               <span >({{scope.row.userId}})</span>
+               <!-- style="color: #f56c6c" -->
             </div>
           </template>
         </el-table-column>

+ 2 - 6
src/views/teamDetail/componentCourse/teacherList.vue

@@ -12,12 +12,8 @@
       >
         <template slot-scope="scope">
           <div>
-            <span>{{ scope.row.teacherName }}</span
-            ><br />
-            <span style="color: #f56c6c"
-              >(<copy-text>{{ scope.row.teacherId }}</copy-text
-              >)</span
-            >
+            <span>{{scope.row.teacherName}}</span><br/>
+             <span>(<copy-text>{{scope.row.teacherId}}</copy-text>)</span><!-- style="color: #f56c6c"-->
           </div>
         </template>
       </el-table-column>

+ 4 - 3
src/views/teamDetail/components/modals/select-student.vue

@@ -124,7 +124,7 @@ import { genderType } from "@/constant";
 import { updateClassGroupStudents } from '../../api'
 import { uniqBy } from 'lodash'
 export default {
-  props: ["studentList", "soundList", "activeType", 'activeListStudent', 'isOnlyChangeUser', 'classGroupId', 'type', 'teacherList', 'cooperationList'],
+  props: ["studentList", "soundList", "activeType", 'activeListStudent', 'isOnlyChangeUser', 'classGroupId', 'type', 'teacherList', 'cooperationList', 'isStudentRemove'],
   computed: {
     data() {
       return uniqBy([...this.studentList, ...this.activeListStudent], 'userId')
@@ -146,7 +146,8 @@ export default {
       return !this.isOnlyChangeUser && this.activeType != 'MUSIC_NETWORK'
     },
     canDelUser() {
-      return this.$route.query.type !== 'resetTeam' || !this.isOnlyChangeUser
+      // console.log(this.isStudentRemove)
+      return this.$route.query.type !== 'resetTeam' || !this.isOnlyChangeUser || this.isStudentRemove
     }
   },
   data() {
@@ -203,7 +204,7 @@ export default {
       if (!this.isOnlyChangeUser && this.activeType == 'HIGH_ONLINE' && (this.seleched.length < 3 || this.seleched.length > 5)) {
         return this.$message.error('线上技能班必须为3-5人')
       }
-      if (this.seleched.length < 1) {
+      if (this.seleched.length < 1 && !this.isStudentRemove) {
         return this.$message.error('请至少选择一名学生')
       }
       if (this.activeType == 'MUSIC_NETWORK' && this.seleched.length > 1) {

+ 3 - 0
src/views/teamDetail/components/resetClass.vue

@@ -215,6 +215,7 @@
         :teacherList="teacherList"
         :cooperationList="cooperationList"
         :isOnlyChangeUser="isOnlyChangeUser"
+        :isStudentRemove="isStudentRemove"
         :activeType="activeType"
         @changeActiveChioseSound="changeActiveChioseSound"
         @searchStudent="searchStudent(activeClass)"
@@ -699,6 +700,7 @@ export default {
       chioseStudent: [], // 勾选的学生信息
       isNewClass: false, // 是否为新建班级
       isOnlyChangeUser: false,
+      isStudentRemove: false, // 班级上没有未开始课程时
       isSearch: false, // 是否需要搜索
       isTemporary: false, // 是否为临时班级
       className: "", // 班级名称
@@ -1121,6 +1123,7 @@ export default {
       this.isSearch = false;
       this.activeType = row.type;
       this.activeChioseSound = null;
+      this.isStudentRemove = row.currentClassTimes == row.totalClassTimes ? true : false // 上课时长是否没有
       // 根据单机班id 查询声部班内的所有学生
       getClassAllStudent({ classGroupId: row.id }).then((res) => {
         if (res.code == 200) {

+ 11 - 5
src/views/teamDetail/teamCourseList.vue

@@ -22,17 +22,17 @@
       >
         <el-form-item>
           <el-input
-            v-model.trim="searchForm.search"
+          type="number"
+            v-model.trim="searchForm.courseIdSearch"
             clearable
-            placeholder="课程编号/课程名称"
+            placeholder="课程编号"
           />
         </el-form-item>
         <el-form-item>
           <el-input
-          type="number"
-            v-model.trim="searchForm.courseIdSearch"
+            v-model.trim="searchForm.search"
             clearable
-            placeholder="课程编号"
+            placeholder="课程编号/课程名称"
           />
         </el-form-item>
         <el-form-item>
@@ -527,6 +527,12 @@
             </el-tooltip>
           </div>
         </el-form-item>
+        <el-form-item label="学员考勤" v-if="maskForm.status != 'NOT_START'">
+          <div class="inputStyle" :class="maskForm.errorAttendanceNum != 0 ? 'red' : null">{{ maskForm.errorAttendanceNum != 0 ? '异常' : '正常' }}</div>
+        </el-form-item>
+        <el-form-item label="老师考勤" v-if="maskForm.status != 'NOT_START'">
+          <div class="inputStyle" :class="maskForm.signInStatusEnum == 1 && maskForm.signOutStatusEnum == 1? null : 'red'">{{ maskForm.signInStatusEnum == 1 && maskForm.signOutStatusEnum == 1 ? '正常' : '异常' }}</div>
+        </el-form-item>
         <el-form-item v-if="maskForm.school" label="教学点">
           {{ maskForm.school.name }}
           <el-tooltip content="查看教学点" :open-delay="0.5">

+ 3 - 3
src/views/timedTask/index.vue

@@ -45,9 +45,9 @@
           <el-table-column align='center'
                            label="操作">
             <template slot-scope="scope">
-              <el-button type="text" v-if="scope.row.status == 1 || scope.row.status == 3" @click="onPause(scope.row)">暂停</el-button>
-              <el-button type="text" v-if="scope.row.status == 1 || scope.row.status == 3"  @click="onExecute(scope.row)">执行</el-button>
-              <el-button type="text" v-if="scope.row.status == 0" @click="onResume(scope.row)">恢复</el-button>
+              <el-button type="text" v-if="(scope.row.status == 1 || scope.row.status == 3) && $helpers.permission('task/pause')" @click="onPause(scope.row)">暂停</el-button>
+              <el-button type="text" v-if="(scope.row.status == 1 || scope.row.status == 3) && $helpers.permission('task/execute')"  @click="onExecute(scope.row)">执行</el-button>
+              <el-button type="text" v-if="scope.row.status == 0 && $helpers.permission('task/resume')" @click="onResume(scope.row)">恢复</el-button>
             </template>
           </el-table-column>
         </el-table>

+ 2 - 1
src/views/workBenchManager/classFeesIsOk.vue

@@ -146,7 +146,7 @@
           <el-button
             @click="onExport"
             type="primary"
-            v-permission="'export/exercisesSituations'"
+            v-permission="'export/isSettlementCourseSalarys'"
             style="background: #14928a; border: 1px solid #14928a"
             >导出</el-button
           >
@@ -548,6 +548,7 @@ export default {
           load.startLoading();
           axios(options)
             .then((res) => {
+              console.log(res)
               let blob = new Blob([res.data], {
                 // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
                 type: "application/vnd.ms-excel;charset=utf-8",

+ 5 - 5
src/views/workBenchManager/journal/index.vue

@@ -6,19 +6,19 @@
     <div class="m-core">
         <tab-router v-model="activeIndex" type="card" >
           <el-tab-pane label="系统通知" lazy v-if="permissionList.journalItem" name="SYSTEM">
-            <list :type="activeIndex" v-if="activeIndex == 'SYSTEM'" saveKey="journal-system" />
+            <list :type="activeIndex" v-if="activeIndex == 'SYSTEM'" saveKey="journal-system" permissionStr="journalItem/look" />
           </el-tab-pane>
           <el-tab-pane label="学生申诉" lazy v-if="permissionList.studentComplain" name="STUDENT">
-            <list :type="activeIndex" v-if="activeIndex == 'STUDENT'" saveKey="journal-student" />
+            <list :type="activeIndex" v-if="activeIndex == 'STUDENT'" saveKey="journal-student" permissionStr="courseSchedule/queryCourseScheduleComplaintsDetail/look" />
           </el-tab-pane>
           <el-tab-pane label="退团退课" lazy v-if="permissionList.musicGroupCourse" name="MUSICGROUP">
-            <list :type="activeIndex" v-if="activeIndex == 'MUSICGROUP'" saveKey="journal-musicGroup" />
+            <list :type="activeIndex" v-if="activeIndex == 'MUSICGROUP'" saveKey="journal-musicGroup" permissionStr="musicGroupQuit/query" />
           </el-tab-pane>
           <el-tab-pane label="请假处理" lazy v-if="permissionList.leaveOperation" name="LEAVE">
-            <list :type="activeIndex" v-if="activeIndex == 'LEAVE'" saveKey="journal-leave" />
+            <list :type="activeIndex" v-if="activeIndex == 'LEAVE'" saveKey="journal-leave" permissionStr="teacherLeaveRecord/queryDetail" />
           </el-tab-pane>
           <el-tab-pane label="VIP申请审核" lazy v-if="permissionList.vipApply" name="VIPAPPLY">
-            <list :type="activeIndex" v-if="activeIndex == 'VIPAPPLY'" saveKey="journal-vipApply" />
+            <list :type="activeIndex" v-if="activeIndex == 'VIPAPPLY'" saveKey="journal-vipApply" permissionStr="5" />
           </el-tab-pane>
         </tab-router>
     </div>

+ 3 - 3
src/views/workBenchManager/journal/model/leave.vue

@@ -86,9 +86,9 @@
                 </template>
             </el-table-column>
         </el-table>
-        <div slot="footer" class="dialog-footer" v-permission="'teacherLeaveRecord/approve'" v-if="leaveForm.status == 'ING'">
-            <el-button type="primary" @click="onSubmit('leaveForm', 'PASS')">确 定</el-button>
-            <el-button type="danger" @click="onSubmit('leaveForm', 'REJECT')">拒 绝</el-button>
+        <div slot="footer" class="dialog-footer" v-if="leaveForm.status == 'ING'">
+            <el-button type="primary" v-permission="'teacherLeaveRecord/approve/confirm'" @click="onSubmit('leaveForm', 'PASS')">确 定</el-button>
+            <el-button type="danger" v-permission="'teacherLeaveRecord/approve'" @click="onSubmit('leaveForm', 'REJECT')">拒 绝</el-button>
         </div>
     </div>
 </template>

+ 5 - 3
src/views/workBenchManager/journal/model/list.vue

@@ -50,7 +50,9 @@
         </el-table-column>
         <el-table-column align="center" label="操作" fixed="right">
           <template slot-scope="scope">
-            <el-button type="text" @click="onLook(scope.row)">查看</el-button>
+            <auth :auths="permissionStr">
+              <el-button type="text" @click="onLook(scope.row)">查看</el-button>
+            </auth>
           </template>
         </el-table-column>
       </el-table>
@@ -90,7 +92,7 @@
         @close="dialogLeave = false"
       />
     </el-dialog>
-    <!-- 请假 -->
+    <!-- VIP申请审核 -->
     <el-dialog
       :title="dialogTitle"
       :visible.sync="dialogVipApply"
@@ -129,7 +131,7 @@ import vipApplyModel from "./vipApply";
 import musicGroupModel from "./musicGroup"
 export default {
   components: { pagination, StudentModel, LeaveModel, vipApplyModel, musicGroupModel },
-  props: ["type", 'saveKey'],
+  props: ["type", 'saveKey', 'permissionStr'],
   data() {
     return {
       dialogSystem: false,

+ 3 - 5
src/views/workBenchManager/journal/model/musicGroup.vue

@@ -47,11 +47,9 @@
                         v-model.trim="quitForm.reason"></el-input>
             </el-form-item>
         </el-form>
-        <div slot="footer" class="dialog-footer" v-permission="'musicGroupQuit/quitMusicGroup'" v-if="musicForm.status == 'PROCESSING'">
-            <el-button type="primary"
-                       @click="onSubmitGroup(musicForm, 'APPROVED')">确认</el-button>
-            <el-button type="danger"
-                       @click="onSubmitGroup(musicForm, 'DENIED')">拒绝</el-button>
+        <div slot="footer" class="dialog-footer" v-if="musicForm.status == 'PROCESSING'">
+            <el-button type="primary" v-permission="'musicGroupQuit/quitMusicGroup/conform'" @click="onSubmitGroup(musicForm, 'APPROVED')">确认</el-button>
+            <el-button type="danger" v-permission="'musicGroupQuit/quitMusicGroup'" @click="onSubmitGroup(musicForm, 'DENIED')">拒绝</el-button>
         </div>
     </div>
 </template>

+ 3 - 3
src/views/workBenchManager/journal/model/student.vue

@@ -52,9 +52,9 @@
               </el-input>
             </el-form-item>
         </el-form>
-        <div slot="footer" class="dialog-footer" v-permission="'courseSchedule/courseScheduleCommplaintAudit'" v-if="studentForm && studentForm.complaints.status === 'ING'">
-            <el-button type="primary" @click="onSubmit('studentForm', 'submit')">确 定</el-button>
-            <el-button type="danger" @click="onSubmit('studentForm', 'reject')">拒 绝</el-button>
+        <div slot="footer" class="dialog-footer" v-if="studentForm && studentForm.complaints.status === 'ING'">
+            <el-button type="primary" v-permission="'courseSchedule/courseScheduleCommplaintAudit/confirm'" @click="onSubmit('studentForm', 'submit')">确 定</el-button>
+            <el-button type="danger" v-permission="'courseSchedule/courseScheduleCommplaintAudit'" @click="onSubmit('studentForm', 'reject')">拒 绝</el-button>
         </div>
     </div>
 </template>

+ 3 - 3
src/views/workBenchManager/journal/model/vipApply.vue

@@ -43,9 +43,9 @@
                 <el-input type="textarea" :disabled="vipForm.auditStatus !== 'ING'" v-model.trim="vipForm.memo"></el-input>
             </el-form-item>
         </el-form>
-        <div slot="footer" class="dialog-footer" v-permission="'vipGroupManage/vipApplyAudit'" v-if="vipForm.auditStatus === 'ING'">
-            <el-button type="primary" @click="onSubmit('vipForm', 'PASS')">确 定</el-button>
-            <el-button type="danger" @click="onSubmit('vipForm', 'REJECT')">拒 绝</el-button>
+        <div slot="footer" class="dialog-footer" v-if="vipForm.auditStatus === 'ING'">
+            <el-button type="primary" v-permission="'vipGroupManage/vipApplyAudit/confirm'" @click="onSubmit('vipForm', 'PASS')">确 定</el-button>
+            <el-button type="danger" v-permission="'vipGroupManage/vipApplyAudit'" @click="onSubmit('vipForm', 'REJECT')">拒 绝</el-button>
         </div>
     </div>
 </template>

+ 1 - 1
src/views/workBenchManager/payAppeal.vue

@@ -144,7 +144,7 @@
               <div>
                 <el-button
                   type="text"
-                  v-if="permission('teacherAttendance/operation')&&scope.row.complaintsStatusEnum == 2"
+                  v-if="permission('teacherAttendance/operation/update')&&scope.row.complaintsStatusEnum == 2"
                   @click="lookDetail(scope.row)"
                   >处理申诉</el-button
                 >

Some files were not shown because too many files changed in this diff