瀏覽代碼

Merge branch 'master' into 03/12permission

mo 4 年之前
父節點
當前提交
78c2f6c0aa
共有 60 個文件被更改,包括 276 次插入163 次删除
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.4661845f.css
  3. 0 0
      dist/static/css/chunk-037c64f8.df1923e9.css
  4. 0 1
      dist/static/css/chunk-18bd2700.9face53c.css
  5. 0 0
      dist/static/css/chunk-31c9df52.d96bf91c.css
  6. 0 0
      dist/static/css/chunk-43c09ad0.34527248.css
  7. 0 0
      dist/static/css/chunk-53e17d9f.65b4148a.css
  8. 1 0
      dist/static/css/chunk-5b1fcc5a.ce348967.css
  9. 0 0
      dist/static/css/chunk-65d5f8fc.1972779a.css
  10. 0 0
      dist/static/css/chunk-7d5bf410.b273319a.css
  11. 0 0
      dist/static/css/chunk-bf85971a.0adeff11.css
  12. 0 0
      dist/static/js/app.c10b3c21.js
  13. 0 0
      dist/static/js/app.e562d053.js
  14. 0 0
      dist/static/js/chunk-037c64f8.a7050e71.js
  15. 0 0
      dist/static/js/chunk-18bd2700.24adc5fc.js
  16. 0 0
      dist/static/js/chunk-2a90eb6d.e13d868c.js
  17. 0 0
      dist/static/js/chunk-31c9df52.8af750ac.js
  18. 0 0
      dist/static/js/chunk-398fdb18.7835224b.js
  19. 0 0
      dist/static/js/chunk-398fdb18.844a2474.js
  20. 0 0
      dist/static/js/chunk-43358ef0.4af825b4.js
  21. 0 0
      dist/static/js/chunk-43c09ad0.96a66b0a.js
  22. 0 0
      dist/static/js/chunk-4b7354eb.7ef6ccb1.js
  23. 0 0
      dist/static/js/chunk-53e17d9f.bdf23643.js
  24. 0 0
      dist/static/js/chunk-5b1fcc5a.d5e209d0.js
  25. 0 0
      dist/static/js/chunk-65d5f8fc.0efa7ee9.js
  26. 0 0
      dist/static/js/chunk-787a507d.34bec687.js
  27. 0 0
      dist/static/js/chunk-787a507d.974b7fb5.js
  28. 0 0
      dist/static/js/chunk-7d5bf410.590d7196.js
  29. 0 0
      dist/static/js/chunk-bf6f74a4.a850d59d.js
  30. 0 0
      dist/static/js/chunk-bf85971a.9a610abe.js
  31. 0 0
      dist/static/js/chunk-c38de4c8.c2e486df.js
  32. 0 0
      dist/static/js/chunk-d393573c.6648f5c2.js
  33. 0 0
      dist/static/js/chunk-d5006d16.1bf0c347.js
  34. 0 0
      dist/static/js/chunk-d5006d16.c2db8588.js
  35. 0 0
      dist/static/js/chunk-ede6ad82.0870ce42.js
  36. 0 0
      dist/static/js/chunk-ede6ad82.b3515ae7.js
  37. 2 2
      src/layout/components/TagsView.vue
  38. 6 1
      src/main.js
  39. 1 0
      src/permission.js
  40. 1 0
      src/router/index.js
  41. 1 0
      src/router/notKeepAliveList.js
  42. 3 2
      src/store/modules/tagsView.js
  43. 2 2
      src/utils/directivePage.js
  44. 1 0
      src/views/main/constant.js
  45. 2 2
      src/views/recodeManager/recodeList.vue
  46. 1 1
      src/views/stuRecodeManager/index.vue
  47. 1 1
      src/views/studentManager/components/studentRecord.vue
  48. 1 1
      src/views/teacherManager/teacherDetail/components/resetComponent.vue
  49. 1 1
      src/views/teacherManager/teacherDetail/components/teacherNetwork.vue
  50. 36 9
      src/views/teacherManager/teacherDetail/components/teacherRecord.vue
  51. 2 2
      src/views/teacherManager/teacherOperation/components/salarySet.vue
  52. 154 111
      src/views/teamBuild/signupList.vue
  53. 6 2
      src/views/teamDetail/componentCourse/infoMsg.vue
  54. 1 1
      src/views/teamDetail/componentCourse/studentRollCall.vue
  55. 6 4
      src/views/teamDetail/componentCourse/studentWork.vue
  56. 9 12
      src/views/teamDetail/componentCourse/teacherList.vue
  57. 8 4
      src/views/teamDetail/components/courseList.vue
  58. 1 0
      src/views/teamDetail/teamCourseList.vue
  59. 28 3
      src/views/teamDetail/teamList.vue
  60. 1 1
      src/views/withdrawal-application/modals/record.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/app.4661845f.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-037c64f8.df1923e9.css


+ 0 - 1
dist/static/css/chunk-18bd2700.9face53c.css

@@ -1 +0,0 @@
-.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-7a44cd83]{margin-top:20px;display:block;text-align:right}.select[data-v-a9e5c25c]{font-size:14px}.btnList[data-v-a9e5c25c]{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}.btnList div[data-v-a9e5c25c]{margin-right:15px}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-31c9df52.d96bf91c.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-43c09ad0.34527248.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-53e17d9f.65b4148a.css


+ 1 - 0
dist/static/css/chunk-5b1fcc5a.ce348967.css

@@ -0,0 +1 @@
+.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-7a44cd83]{margin-top:20px;display:block;text-align:right}[data-v-078f879e] .el-button+.el-button{margin-left:0}.select[data-v-078f879e]{font-size:14px}.btnList[data-v-078f879e]{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}.btnList div[data-v-078f879e]{margin-right:15px}

+ 0 - 0
dist/static/css/chunk-431b1f36.1972779a.css → dist/static/css/chunk-65d5f8fc.1972779a.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-7d5bf410.b273319a.css


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-037c64f8.a7050e71.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-18bd2700.24adc5fc.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-2a90eb6d.e13d868c.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-31c9df52.8af750ac.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-398fdb18.7835224b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-398fdb18.844a2474.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-43358ef0.4af825b4.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-43c09ad0.96a66b0a.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-4b7354eb.7ef6ccb1.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-53e17d9f.bdf23643.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-65d5f8fc.0efa7ee9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-787a507d.34bec687.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-787a507d.974b7fb5.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7d5bf410.590d7196.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-bf85971a.9a610abe.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-d393573c.6648f5c2.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-d5006d16.1bf0c347.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-ede6ad82.0870ce42.js


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


+ 2 - 2
src/layout/components/TagsView.vue

@@ -117,7 +117,6 @@ export default {
       const allSearch = searchs.getSearchs();
 
       const sks = Object.keys(allSearch);
-      console.log(sks)
       let route = this.$route;
       for (const item of sks) {
        if (!(keys.includes(item) || keys.includes(allSearch[item].bind))) {
@@ -174,7 +173,8 @@ export default {
             if (latestView) {
               this.$router.push(latestView.fullPath);
             } else {
-              this.$router.push("/");
+              let firstMenuUrl = localStorage.getItem('firstMenuUrl')
+              this.$router.push(firstMenuUrl || '/');
             }
           }
         });

+ 6 - 1
src/main.js

@@ -5,7 +5,7 @@ import dayjs from 'dayjs'
 import numeral from 'numeral'
 import lodash from 'lodash'
 import qs from 'qs'
-import { permission } from "@/utils/directivePage";
+import { permission,getFullPermission } from "@/utils/directivePage";
 
 import * as constant from '@/constant'
 
@@ -120,6 +120,7 @@ Vue.mixin({
         lodash,
         qs,
         permission,
+
       }
     },
     $constant() {
@@ -130,6 +131,10 @@ Vue.mixin({
     changeHash(value) {
       const origin = window.location.origin
       history.replaceState("", "", `${origin}/#${this.$route.path}?opt=${value}`)
+    },
+    getFullPermission(str){
+      let routeName = this.$route.path
+      return str+routeName
     }
   }
 })

+ 1 - 0
src/permission.js

@@ -88,6 +88,7 @@ router.beforeEach(async (to, from, next) => {
           // 确保addroutes完整的hack方法
           // 设置replace:true,这样导航就不会留下历史记录。
           let firstMenu = getFirstMenu(accessRoutes)
+          localStorage.setItem('firstMenuUrl', firstMenu)
           if(to.path == '/main/main') {
             next({ path: firstMenu, replace: true })
           } else {

+ 1 - 0
src/router/index.js

@@ -249,6 +249,7 @@ export const asyncRoutes = {
   teamTeacherRecord: () => import('@/views/teamDetail/components/teamTeacherRecord'),
   // 乐团筹备中 报名中
   signupList: () => import('@/views/teamBuild/signupList'),
+  remedy:() => import('@/views/teamBuild/signupList'),
   // 乐团筹备设置 (班级 老师 小课)
   teamSeting: () => import('@/views/teamBuild/teamSeting/'),
   //乐团详情

+ 1 - 0
src/router/notKeepAliveList.js

@@ -99,5 +99,6 @@ export default [
   '/business/teacherOperationUpdate',
   '/business/ArrearageStudents',
   '/operateManager/serverDetail', // 服务指标明细
+  '/business/remedy', //
   // '/business/feeAudit',
 ]

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

@@ -30,11 +30,12 @@ const tagsView = {
       // }
     },
     DEL_VISITED_VIEWS: (state, view) => {
+      let firstMenuUrl = localStorage.getItem('firstMenuUrl')
+      let compareUrl = firstMenuUrl || '/main/main'
       for (const [i, v] of state.visitedViews.entries()) {
 
         if (v.path === view.path) {
-
-          if (state.visitedViews.length == 1 && state.visitedViews[0].path == '/main/main') {
+          if (state.visitedViews.length == 1 && state.visitedViews[0].path == compareUrl) {
             break
           } else {
 

+ 2 - 2
src/utils/directivePage.js

@@ -23,5 +23,5 @@ export function permission(value, parent) {
     } else {
         return false
     }
-    
-}
+
+}

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

@@ -59,6 +59,7 @@ export const errorType = {
     always: true,
     query: {
       tabrouter: 'teamSchedule',
+      searchType:'MUSIC_PATROL_ITEM',
       conclusionStatus: '1',
       ...dates,
     },

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

@@ -204,7 +204,7 @@
           </el-table-column>
           <el-table-column align="center" label="签到状态">
             <template slot-scope="scope">
-              <div>
+              <div v-if="scope.row.courseScheduleStatus != 'NOT_START'">
                 {{ scope.row.signInStatus | attendanceType }}
               </div>
             </template>
@@ -223,7 +223,7 @@
           </el-table-column>
           <el-table-column align="center" label="签退状态">
             <template slot-scope="scope">
-              <div>
+              <div v-if="scope.row.courseScheduleStatus != 'NOT_START'">
                 {{ scope.row.signOutStatus | attendanceOutType }}
               </div>
             </template>

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

@@ -285,7 +285,7 @@
           </el-table-column>
           <el-table-column align="center" label="考勤状态">
             <template slot-scope="scope">
-              <div>
+              <div v-if="scope.row.courseSchedule && scope.row.courseSchedule.status != 'NOT_START'">
                 {{ scope.row.status | clockingIn }}
               </div>
             </template>

+ 1 - 1
src/views/studentManager/components/studentRecord.vue

@@ -226,7 +226,7 @@
           </el-table-column>
           <el-table-column align="center" label="考勤状态">
             <template slot-scope="scope">
-              <div>
+              <div v-if="scope.row.courseSchedule && scope.row.courseSchedule.status != 'NOT_START'">
                 {{ scope.row.status | clockingIn }}
               </div>
             </template>

+ 1 - 1
src/views/teacherManager/teacherDetail/components/resetComponent.vue

@@ -97,7 +97,7 @@
                          v-if="!scope.row.isSettlement && permission('courseSchedule/practiceCourseAdjust')&&scope.row.groupType==='PRACTICE'"
                          @click="resetClass(scope.row)">调整</el-button>
               <el-button type="text"
-                         v-if="scope.row.groupType==='PRACTICE'&&scope.row.status == 'NOT_START'&&scope.row.practiceGroup['type']!='TRIAL'&& permission('courseSchedule/practiceCourseTeacherAdjust')"
+                         v-if="scope.row.groupType==='PRACTICE'&&scope.row.status == 'NOT_START'&&(scope.row.practiceGroup && scope.row.practiceGroup['type']!='TRIAL')&& permission('courseSchedule/practiceCourseTeacherAdjust')"
                          @click="resetTeacher(scope.row)">更换老师</el-button>
             </div>
           </template>

+ 1 - 1
src/views/teacherManager/teacherDetail/components/teacherNetwork.vue

@@ -70,7 +70,7 @@
                 <el-button type="text"
                            v-if="(scope.row.totalClassTimes-scope.row.currentClassTimes)>0"
                            v-permission="'courseSchedule/batchPracticeGroupTeacherAdjust?t=819'"
-                           @click="resetCourse(scope.row)">操作</el-button>
+                           @click="resetCourse(scope.row)">课程移交</el-button>
               </div>
             </template>
           </el-table-column>

+ 36 - 9
src/views/teacherManager/teacherDetail/components/teacherRecord.vue

@@ -52,14 +52,35 @@
           v-model.trim="searchForm.signInStatus"
           filterable
           clearable
-          placeholder="考勤状态"
+          placeholder="签到状态"
         >
-          <el-option
+          <el-option :value="1" label="正常签到"></el-option>
+          <el-option :value="0" label="异常签到"></el-option>
+          <el-option :value="3" label="未签到"></el-option>
+          <!-- <el-option
             v-for="(item, index) in attendance"
             :key="index"
             :label="item.label"
             :value="item.value"
-          ></el-option>
+          ></el-option> -->
+        </el-select>
+      </el-form-item>
+      <el-form-item>
+        <el-select
+          v-model.trim="searchForm.signOutStatus"
+          filterable
+          clearable
+          placeholder="签退状态"
+        >
+          <!-- <el-option
+            v-for="(item, index) in attendance"
+            :key="index"
+            :label="item.label"
+            :value="item.value"
+          ></el-option> -->
+          <el-option :value="1" label="正常签退"></el-option>
+          <el-option :value="0" label="异常签退"></el-option>
+          <el-option :value="3" label="未签退"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -110,15 +131,19 @@
             }}</template>
           </el-table-column>
 
-          <el-table-column align="center" label="签到">
-            <template slot-scope="scope">{{
+          <el-table-column align="center" label="签到状态">
+            <template slot-scope="scope">
+              <div v-if="scope.row.courseStatus != 'NOT_START'">{{
               scope.row.signInStatus | attendanceType
-            }}</template>
+            }}</div>
+            </template>
           </el-table-column>
-          <el-table-column align="center" label="签退">
-            <template slot-scope="scope">{{
+          <el-table-column align="center" label="签退状态">
+            <template slot-scope="scope">
+              <div v-if="scope.row.courseStatus != 'NOT_START'">{{
               scope.row.signOutStatus | attendanceOutType
-            }}</template>
+            }}</div>
+            </template>
           </el-table-column>
           <el-table-column
             align="center"
@@ -161,6 +186,7 @@ export default {
         classGroupName: null,
         courseScheduleType: null,
         signInStatus: null,
+        signOutStatus: null,
         courseDate:[]
       },
       tableList: [],
@@ -222,6 +248,7 @@ export default {
         classGroupName: null,
         courseScheduleType: null,
         signInStatus: null,
+        signOutStatus: null
       };
       this.getList()
     },

+ 2 - 2
src/views/teacherManager/teacherOperation/components/salarySet.vue

@@ -156,8 +156,8 @@
                         @mousewheel.native.prevent
                         v-model.trim="scope.row.offlineClassesSalary"
                         placeholder="请输入内容">
-                <template slot="append" v-if="scope.row.musicTheory"> 元/人</template>
-                <template slot="append" v-else>节/人</template>
+                <template slot="append"> 元/人</template>
+                <!-- <template slot="append" v-else>节/人</template>  v-if="scope.row.musicTheory" -->
               </el-input>
               </div>
 

+ 154 - 111
src/views/teamBuild/signupList.vue

@@ -2,64 +2,87 @@
   <div class="sigup-container">
     <div class="topWrap">
       <div>
-        <!-- <h2>
-          <el-page-header @back="onCancel" :content="teamName + '报名详情'">
-          </el-page-header>
-        </h2> -->
-        <p style="margin-bottom: 15px; font-size: 18px; font-weight: 400">
-          报名截止时间:{{ applyExpireDate | formatTimer }} 缴费截止时间:{{
-            paymentExpireDate | formatTimer
-          }}
-        </p>
+        <div style="display: flex; justify-content: space-between">
+          <div>
+            <h2>
+              <!-- + '报名详情' -->
+              <el-page-header @back="onCancel" :content="teamName">
+              </el-page-header>
+            </h2>
+            <p style="margin-bottom: 15px; font-size: 18px; font-weight: 400">
+              报名截止时间:{{ applyExpireDate | formatTimer }} 缴费截止时间:{{
+                paymentExpireDate | formatTimer
+              }}
+            </p>
+          </div>
+          <p
+            class="msg"
+            :class="status == 'PAY' ? 'pay' : ''"
+            v-if="status == 'APPLY' || status == 'PAY'"
+          >
+            <img
+              :src="status == 'APPLY' ? stepImgs.APPLY : stepImgs.PAY"
+              alt=""
+            />
+            {{ status == "APPLY" ? "报名中" : "缴费中" }}
+          </p>
+        </div>
+
         <div class="btnList">
           <!-- <div class='newBand close'
                v-permission="'musicGroup/cancelMusicGroup'"
-               @click="onClose">停止乐团</div> -->
+               @click="onClose">停止乐团</div>   v-show="status == 'APPLY'"-->
           <div
             class="newBand"
             @click="payStart"
-            v-permission="'musicGroup/openPay'"
-            v-show="status == 'APPLY'"
+            v-permission="getFullPermission('musicGroup/openPay')"
+            v-if="status == 'APPLY'"
           >
             开始缴费
           </div>
           <!-- v-show="status=='PAY'" -->
           <div
             class="newBand"
-            v-permission="'musicGroup/found'"
+            v-permission="getFullPermission('musicGroup/found')"
             @click="onGoHome"
+            v-if="status == 'APPLY' || status == 'PAY'"
           >
             确认开团
           </div>
           <div
             class="newBand"
-            v-permission="'musicGroup/extensionPayment'"
+            v-permission="getFullPermission('musicGroup/extensionPayment')"
             @click="extendTime(true)"
-            v-show="status == 'PAY'"
+            v-show="
+              status == 'PAY' || status == 'PROGRESS' || status == 'PREPARE'
+            "
           >
             延长缴费
           </div>
           <div
             class="newBand"
-            v-permission="'musicGroup/extensionApplyExpireDate'"
+            v-permission="getFullPermission('musicGroup/extensionApplyExpireDate')"
             @click="extendTime(false)"
+            v-show="status == 'PAY' || status == 'APPLY' || status == 'PROGRESS' || status == 'PREPARE'"
           >
             延长报名
           </div>
           <div class="newBand" @click="onCreateQRCode('payment')">报名链接</div>
-          <div class="newBand" @click="onCreateQRCode('rePayment')">报名链接(无乐器)</div>
+          <div class="newBand" @click="onCreateQRCode('rePayment')">
+            报名链接(无乐器)
+          </div>
           <div class="newBand" @click="onCreateQRCode('detail')">缴费详情</div>
           <div
             class="newBand"
             v-show="rightList.length > 0"
-            v-permission="'studentRegistration/queryStudentApplyDetailExport'"
+            v-permission="getFullPermission('studentRegistration/queryStudentApplyDetailExport')"
             @click="onDownLoadExecl"
           >
             报表导出
           </div>
           <auth
-            auths="studentRegistration/queryPreApplyList"
-            :router="['/business/signupList']"
+            :auths="getFullPermission('studentRegistration/queryPreApplyList')"
+
           >
             <div
               class="newBand"
@@ -71,8 +94,9 @@
           </auth>
           <div
             class="newBand"
-            v-permission="'musicGroup/addMusicGroupRegs'"
+            v-permission="getFullPermission('musicGroup/addMusicGroupRegs')"
             @click="mergeVisible = true"
+            v-show="status == 'PAY' || status == 'APPLY'"
           >
             合并学员
           </div>
@@ -103,10 +127,6 @@
         APPLY: require('@/assets/images/base/clock.png'),
         PAY: require('@/assets/images/base/pay.png')
       }, -->
-      <p class="msg" :class="status == 'PAY' ? 'pay' : ''">
-        <img :src="status == 'APPLY' ? stepImgs.APPLY : stepImgs.PAY" alt="" />
-        {{ status == "APPLY" ? "报名中" : "缴费中" }}
-      </p>
     </div>
     <div class="searchList">
       <save-form
@@ -148,6 +168,7 @@
     <div class="sigup-core">
       <div class="left">
         <el-table
+          style="width: 100% !important"
           :data="leftList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
         >
@@ -176,7 +197,7 @@
         </el-table>
         <div
           class="btnWrap"
-          v-permission="'musicGroup/updateExpectedStudentNum'"
+          v-permission="getFullPermission('musicGroup/updateExpectedStudentNum')"
           style="margin-right: 20px; margin-top: 20px"
         >
           <el-button v-show="!isEdit" @click="isEdit = true">编辑</el-button>
@@ -190,7 +211,7 @@
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
           @selection-change="handleSelectionChange"
         >
-          <el-table-column type="selection" width="55"> </el-table-column>
+          <el-table-column type="selection" width="55" :selectable='checkboxSelect'> </el-table-column>
           <el-table-column label="学员姓名" prop="studentName" align="center">
           </el-table-column>
           <el-table-column label="家长姓名" prop="parentsName" align="center">
@@ -247,13 +268,15 @@
           >
             <template slot-scope="scope">
               <div>
-                <el-button
-                  type="text"
-                  v-permission="'studentRegistration/batchUpdateSubject'"
-                  v-show="scope.row.paymentStatus != 2"
-                  @click="resetSubject(scope.row)"
-                  >修改专业</el-button
-                >
+                <auth :auths='getFullPermission("studentRegistration/batchUpdateSubject")'>
+                  <el-button
+                    type="text"
+                    v-show="scope.row.paymentStatus != 2"
+                    @click="resetSubject(scope.row)"
+                    >修改专业</el-button
+                  >
+                </auth>
+
                 <!-- APPLY  status == "APPLY" || s-->
                 <el-popover
                   v-show="scope.row.remark"
@@ -267,58 +290,60 @@
                 </el-popover>
                 <!-- PAY -->
                 <!-- &&  status == "PAY"-->
-                <el-button
-                  type="text"
-                  v-permission="'studentRegistration/queryFeeDetail'"
-                  v-show="scope.row.paymentStatus == 2"
-                  @click="lookdetail(scope.row)"
-                  >查看</el-button
-                >
-                <el-button
-                  type="text"
-                  v-permission="'musicGroupQuit/directQuitMusicGroup2'"
-                  v-show="scope.row.paymentStatus == 2"
-                  @click="quitTeam(scope.row)"
-                  >退团退费</el-button
-                >
-                <el-button
-                  type="text"
-                  v-show="
-                    permission('musicGroupQuit/directQuitMusicGroup3') &&
-                    scope.row.paymentStatus == 2
-                  "
-                  @click="quieTeams(scope.row)"
-                  >退团</el-button
-                >
-                <el-button
-                  type="text"
-                  v-show="permission('visit/add')"
-                  @click="addVisit(scope.row)"
-                  >新增回访</el-button
-                >
-                <el-button
-                  type="text"
-                  v-show="scope.row.paymentStatus == 2"
-                  v-permission="'subjectChange/getStudentOriginal'"
-                  @click="openChangeVoice(scope.row)"
-                  >更改声部</el-button
-                >
+                <auth :auths='getFullPermission("studentRegistration/queryFeeDetail")'   v-show="scope.row.paymentStatus == 2">
+                  <el-button
+                    type="text"
+
+                    @click="lookdetail(scope.row)"
+                    >查看</el-button
+                  >
+                </auth>
+                <auth :auths='getFullPermission("musicGroupQuit/directQuitMusicGroup2")'  v-show="scope.row.paymentStatus == 2">
+                  <el-button
+                    type="text"
+
+                    @click="quitTeam(scope.row)"
+                    >退团退费</el-button
+                  >
+                </auth>
+                <auth :auths='getFullPermission("musicGroupQuit/directQuitMusicGroup3")'  v-show="scope.row.paymentStatus == 2">
+                  <el-button
+                    type="text"
+
+                    @click="quieTeams(scope.row)"
+                    >退团</el-button
+                  >
+                </auth>
+                <auth :auths="getFullPermission('visit/add')">
+                  <el-button type="text" @click="addVisit(scope.row)"
+                    >新增回访</el-button
+                  >
+                </auth>
+                <auth :auths="getFullPermission('subjectChange/getStudentOriginal')"   v-show="scope.row.paymentStatus == 2">
+                  <el-button
+                    type="text"
+
+                    @click="openChangeVoice(scope.row)"
+                    >更改声部</el-button
+                  >
+                </auth>
               </div>
             </template>
           </el-table-column>
         </el-table>
         <div
           style="margin-top: 10px; margin-bottom: 10px"
-          v-show="status == 'APPLY'"
+          v-show="status == 'APPLY'|| status == 'PROGRESS' || status == 'PREPARE'"
         >
           <el-button @click="onSelectAll">全选/取消</el-button>
+          <auth :auths="getFullPermission('studentRegistration/openPayment')">
           <el-button
             style="background-color: #14928a; border: 1px solid #14928a"
             @click="onPartPayment"
-            v-permission="'studentRegistration/openPayment'"
             type="primary"
-            >提前缴费</el-button
+            >开启缴费</el-button
           >
+          </auth>
           <!-- <div class='newBand' v-show="status=='APPLY'">允许缴费</div> -->
         </div>
         <pagination
@@ -547,7 +572,7 @@
       </el-form>
       <span slot="footer" class="dialog-footer question">
         <div>
-                 <el-popover placement="right" width="500" trigger="click">
+          <el-popover placement="right" width="500" trigger="click">
             <div class="popoverWrap">
               <p>乐团退团退费规则:</p>
               <p>退还课程费用:缴费总额-已结束课时单价之和</p>
@@ -564,10 +589,9 @@
           </el-popover>
         </div>
         <div>
-           <el-button @click="quitVisible = false">取 消</el-button>
-        <el-button type="primary" @click="chioseType">确 定</el-button>
+          <el-button @click="quitVisible = false">取 消</el-button>
+          <el-button type="primary" @click="chioseType">确 定</el-button>
         </div>
-
       </span>
     </el-dialog>
     <!-- 回访记录 -->
@@ -662,7 +686,7 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import qrCode from '@/components/QrCode/index'
+import qrCode from "@/components/QrCode/index";
 import {
   getintoClass,
   getStudentList,
@@ -692,7 +716,7 @@ import qs from "qs";
 import { permission } from "@/utils/directivePage";
 import cleanDeep from "clean-deep";
 import changeVoice from "./modals/change-voice";
-import visit from '@/views/withdrawal-application/modals/visit'
+import visit from "@/views/withdrawal-application/modals/visit";
 export default {
   name: "signupList",
   components: {
@@ -701,7 +725,7 @@ export default {
     changeVoice,
     mergeMusic,
     forecastList,
-    visit
+    visit,
   },
   data() {
     return {
@@ -826,12 +850,14 @@ export default {
       },
       isPay: false,
       applyDates: this.applyDate(),
-      detail:null
+      detail: null,
     };
   },
-  created() {
+  created() {},
+  mounted() {
     // 通过乐团状态判断显示隐藏的东西
     this.init();
+   console.log(this.getFullPermission('123'))
   },
   activated() {
     this.init();
@@ -879,7 +905,7 @@ export default {
       this.getList();
     },
     onCancel() {
-       this.$store.dispatch('delVisitedViews', this.$route)
+      this.$store.dispatch("delVisitedViews", this.$route);
       this.$router.push({ path: "/business/teamDetail" });
     },
     payStart() {
@@ -960,7 +986,7 @@ export default {
       // 部分缴费
       let selection = this.multipleSelection;
       if (selection.length <= 0) {
-        this.$message.success("您还没有选择学生");
+        this.$message.error("您还没有选择学生");
         return false;
       }
       let ids = [];
@@ -968,7 +994,7 @@ export default {
         ids.push(item.id);
       });
 
-      this.$confirm(`是否确认提前缴费?`, "提示", {
+      this.$confirm(`是否确认开启缴费?`, "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning",
@@ -990,19 +1016,24 @@ export default {
     onCreateQRCode(type) {
       // 生成报名二维码
       let id = this.id;
-      this.codeStatus = true
-      if(type == 'payment') {
-        this.codeTitle = '学员报名连接'
+      this.codeStatus = true;
+      if (type == "payment") {
+        this.codeTitle = "学员报名连接";
         this.qrCodeUrl = vaildStudentUrl() + "/#/login?musicGroupId=" + id;
-      } else if(type == 'detail') {
+      } else if (type == "detail") {
         let teamName = this.$route.query.name;
-        this.codeTitle = '报名缴费详情'
-        this.qrCodeUrl = vaildTeacherUrl() + "/#/order?musicGroupId=" + id + "&musicGroupName=" + teamName;
-      } else if(type == 'rePayment') {
-        this.codeTitle = '学生报名链接(无乐器)'
-        this.qrCodeUrl = vaildStudentUrl() + "/#/login?musicGroupId=" + id + "&instrument=1";
+        this.codeTitle = "报名缴费详情";
+        this.qrCodeUrl =
+          vaildTeacherUrl() +
+          "/#/order?musicGroupId=" +
+          id +
+          "&musicGroupName=" +
+          teamName;
+      } else if (type == "rePayment") {
+        this.codeTitle = "学生报名链接(无乐器)";
+        this.qrCodeUrl =
+          vaildStudentUrl() + "/#/login?musicGroupId=" + id + "&instrument=1";
       }
-
     },
     onCreateQRCode2() {
       // 生成报名二维码
@@ -1120,14 +1151,15 @@ export default {
             musicGroupId: this.$route.query.id,
           }).then((res) => {
             if (res.code == 200) {
-              let query = this.$route.query;
-              this.$message.success("开启成功");
-              this.$router.push({
-                path: "/business/teamDetail",
-                query: {
-                  ...query,
-                },
-              });
+              // let query = this.$route.query;
+              // this.$message.success("开启成功");
+              // this.$router.push({
+              //   path: "/business/teamDetail",
+              //   query: {
+              //     ...query,
+              //   },
+              // });
+              this.onCancel()
             }
           });
         })
@@ -1357,9 +1389,9 @@ export default {
       // this.visitForm.studentName = row.studentName;
       // this.visitForm.musicGroupId = this.teamid;
       // this.visitForm.studentId = row.studentId;
-      row.userId = row.studentId
-      this.detail = row
-      this.detail.musicGroupId = this.$route.query.id
+      row.userId = row.studentId;
+      this.detail = row;
+      this.detail.musicGroupId = this.$route.query.id;
       this.visitVisiable = true;
     },
     openChangeVoice(row) {
@@ -1447,6 +1479,9 @@ export default {
         },
       };
     },
+    checkboxSelect(row){
+      return row.paymentStatus == 0
+    }
   },
   watch: {
     orderVisible(val) {
@@ -1502,7 +1537,13 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
-.dialog-footer.question{
+ .auth {
+    display: inline-block;
+    & + .auth {
+      margin-left: 0px;
+    }
+  }
+.dialog-footer.question {
   display: flex;
   flex-direction: row;
   justify-content: space-between;
@@ -1513,9 +1554,9 @@ export default {
     padding: 18px 58px 18px 0;
     // height: 136px;
     background-color: #fff;
-    display: flex;
-    flex-direction: row;
-    justify-content: space-between;
+    // display: flex;
+    // flex-direction: row;
+    // justify-content: space-between;
     .msg.pay {
       color: #f85043;
     }
@@ -1578,8 +1619,10 @@ export default {
       flex-direction: row;
       justify-content: flex-start;
       align-items: center;
-      div {
+      flex-wrap: wrap;
+      & > div {
         margin-right: 15px;
+        margin-bottom: 10px;
       }
     }
     .newBand.close {

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

@@ -64,13 +64,17 @@ export default {
     })
   },
   methods: {
+    getRealTime(time) {
+      const parsenum = parseInt(time)
+      return ('' + time).indexOf(' ') > -1 ? time : parsenum
+    },
     filterKeys(item) {
       const teachingTeacherNames = (item.teachingTeacherNames || '').split(',').sort((a, b) => (a || '').localeCompare((b || ''), 'zh'))
       return {
         name: item.name,
         actualTeacherName: item.actualTeacherName,
         teachingTeacherNames: teachingTeacherNames.join(','),
-        startClassTime: this.$helpers.dayjs(item.startClassTime).format('YYYY-MM-DD HH:mm'),
+        startClassTime: this.$helpers.dayjs(this.getRealTime(item.startClassTime)).format('YYYY-MM-DD HH:mm'),
         // classDate: item.classDate,
         // endClassTime: item.endClassTime,
         teachMode: teachMode[item.teachMode],
@@ -82,7 +86,7 @@ export default {
       return item.operatorName + ' 在 ' + item.createTime + ' 修改了'
     },
     getTimers (item) {
-      return diffTimerFormMinute(dayjs(item.classDate).format('YYYY-MM-DD'), dayjs(item.startClassTime).format('HH:mm'), dayjs(item.endClassTime).format('HH:mm'))
+      return diffTimerFormMinute(dayjs(item.classDate).format('YYYY-MM-DD'), dayjs(this.getRealTime(item.startClassTime)).format('HH:mm'), dayjs(this.getRealTime(item.endClassTime)).format('HH:mm'))
     }
   },
   computed: {

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

@@ -61,7 +61,7 @@
                          prop="status"
                          label="考勤状态">
           <template slot-scope="scope">
-            <div>
+            <div v-if="scope.row.courseSchedule && scope.row.courseSchedule.status != 'NOT_START'">
               <p v-if="scope.row.status">{{scope.row.status | studentRecord}}</p>
               <p v-else>未签到</p>
             </div>

+ 6 - 4
src/views/teamDetail/componentCourse/studentWork.vue

@@ -11,8 +11,8 @@
     <el-form :inline="true" class="workForm" style="padding: 0 25px">
       <el-form-item label="应交学生数">
         <!-- <el-input disabled
-        :value="studentNum"></el-input>-->
-        <div class="inputStyle">{{ studentNum }}</div>
+        :value="homeworkStudentNum"></el-input>-->
+        <div class="inputStyle">{{ homeworkStudentNum }}</div>
       </el-form-item>
       <el-form-item label="已交学生数">
         <!-- <el-input disabled
@@ -70,7 +70,7 @@
         </el-table-column>
         <el-table-column align="center" prop="isView" label="是否提交">
           <template slot-scope="scope">
-            <div>{{ scope.row.createTime ? "是" : "否" }}</div>
+            <div>{{ scope.row.submitTime ? "是" : "否" }}</div>
           </template>
         </el-table-column>
         <el-table-column align="center" prop="isView" label="是否查看">
@@ -89,7 +89,7 @@
               <!--   -->
               <el-button
                 type="text"
-                v-if="scope.row.urlList && scope.row.createTime"
+                v-if="scope.row.urlList && scope.row.submitTime"
                 @click="lookWork(scope.row)"
                 >查看作业</el-button
               >
@@ -230,6 +230,7 @@ export default {
       workVisible: false,
       repliedVisible: false,
       studentNum: null,
+      homeworkStudentNum: null,
       homeworkNum: null,
       repliedNum: null,
       activeUrl: null,
@@ -273,6 +274,7 @@ export default {
         (res) => {
           if (res.code == 200) {
             this.studentNum = res.data.studentNum;
+            this.homeworkStudentNum = res.data.homeworkStudentNum;
             this.homeworkNum = res.data.homeworkNum;
             this.repliedNum = res.data.repliedNum;
           }

+ 9 - 12
src/views/teamDetail/componentCourse/teacherList.vue

@@ -44,12 +44,12 @@
       </el-table-column>
       <el-table-column align="center" prop="teacherPhone" label="签到状态">
         <template slot-scope="scope">
-          <div>{{ scope.row.signInStatus | attendanceType }}</div>
+          <div v-if="courseStatus != 'NOT_START'">{{ scope.row.signInStatus | attendanceType}}</div>
         </template>
       </el-table-column>
       <el-table-column align="center" prop="teacherPhone" label="签退状态">
         <template slot-scope="scope">
-          <div>{{ scope.row.signOutStatus | attendanceOutType }}</div>
+          <div v-if="courseStatus != 'NOT_START'">{{ scope.row.signOutStatus | attendanceOutType}}</div>
         </template>
       </el-table-column>
       <el-table-column
@@ -161,11 +161,8 @@
                 size="small"
                 type="text"
                 @click="hand(scope.row)"
-                v-if="
-                  scope.row.signInStatus != 1 || scope.row.signOutStatus != 1
-                "
-                >处理意见</el-button
-              >
+                v-if="(scope.row.signInStatus!=1||scope.row.signOutStatus!=1) && courseStatus != 'NOT_START'"
+              >处理意见</el-button>
             </auth>
           </div>
         </template>
@@ -268,8 +265,8 @@ import gpsLoction from "../componentCourse/gpsLocation";
 import hand from "@/views/recodeManager/modals/hand";
 export default {
   components: { gpsLoction, hand },
-  props: ["courseScheduleId", "teachMode"],
-  data() {
+  props: ['courseScheduleId', 'teachMode', 'courseStatus'],
+  data () {
     return {
       tableList: [],
       gpsVisible: false,
@@ -296,9 +293,9 @@ export default {
       },
     };
   },
-  mounted() {
-    this.init();
-    console.log(this.teachMode);
+  mounted () {
+    this.init()
+    // console.log(this.teachMode, this.courseStatus)
   },
   activated() {},
   methods: {

+ 8 - 4
src/views/teamDetail/components/courseList.vue

@@ -110,7 +110,7 @@
 
         <el-table-column align="center"
                          prop="courseScheduleStatus"
-                         label="课程状态">
+                         label="课程状态">s
           <template slot-scope="scope">
             <div>{{ scope.row.courseScheduleStatus | coursesStatus }}</div>
           </template>
@@ -118,13 +118,13 @@
         <el-table-column align="center"
                          label="老师签到">
           <template slot-scope="scope">
-            <div>{{ scope.row.signInStatus | attendanceType}}</div>
+            <div v-if="scope.row.courseScheduleStatus != 'NOT_START'">{{ scope.row.signInStatus | attendanceType}}</div>
           </template>
         </el-table-column>
         <el-table-column align="center"
                          label="老师签退">
           <template slot-scope="scope">
-            <div>{{ scope.row.signOutStatus | attendanceOutType}}</div>
+            <div v-if="scope.row.courseScheduleStatus != 'NOT_START'">{{ scope.row.signOutStatus | attendanceOutType}}</div>
           </template>
         </el-table-column>
         <el-table-column align="center"
@@ -137,7 +137,11 @@
         <el-table-column align="center"
                          prop="remark"
                          label="是否点名">
-          <template slot-scope="scope">{{ scope.row.isCallNames ? '已点名' : '未点名' }}</template>
+          <template slot-scope="scope">
+            <div v-if="scope.row.courseScheduleStatus != 'NOT_START'">
+              {{ scope.row.isCallNames ? '已点名' : '未点名' }}
+            </div>
+          </template>
         </el-table-column>
         <el-table-column align="center"
                          prop="remark"

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

@@ -561,6 +561,7 @@
             <teacherList
               :courseScheduleId="maskForm.id"
               :teachMode="maskForm.teachMode"
+              :courseStatus="maskForm.status"
             ></teacherList>
           </div>
         </el-tab-pane>

+ 28 - 3
src/views/teamDetail/teamList.vue

@@ -216,7 +216,7 @@
                            @click="lookTeamCourse(scope.row)">查看课表</el-button> -->
 
                 <!-- 报名中&缴费中 查看 -->
-                <!-- <el-button
+                <el-button
                   type="text"
                   v-if="
                     (scope.row.status == 'APPLY' ||
@@ -225,8 +225,19 @@
                   "
                   @click="lookTeamDetail(scope.row)"
                   >查看</el-button
-                > -->
-                <!-- 报名中缴费中筹备中查看乐团     scope.row.status == 'PRE_APPLY' || scope.row.status == 'PRE_BUILD_FEE' ||-->
+                >
+
+                        <el-button
+                  type="text"
+                  v-if="
+                    (scope.row.status == 'PREPARE' ||
+                      scope.row.status == 'PROGRESS') &&
+                    permission('/remedy')&&scope.row.isRemedy
+                  "
+                  @click="gotoSigin(scope.row)"
+                  >乐团补招</el-button
+                >
+                <!-- 报名中缴费中筹备中查看乐团 -->
                 <el-button
                   type="text"
                   v-if="
@@ -961,6 +972,17 @@ export default {
       this.activeId = row.id;
       this.showSteam = true;
     },
+    gotoSigin(row){
+       this.$router.push(
+            {
+              path: `/business/remedy`,
+              query: { status: row.status, id: row.id, name: row.name },
+            },
+            (router) => {
+              router.meta.title = "报名详情";
+            }
+          );
+    }
   },
   watch: {
     showSteam(val) {
@@ -972,6 +994,9 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+/deep/.el-button+.el-button {
+     margin-left: 0px;
+}
 .select {
   font-size: 14px;
 }

+ 1 - 1
src/views/withdrawal-application/modals/record.vue

@@ -94,7 +94,7 @@
       </el-table-column>
       <el-table-column align="center" label="考勤状态">
         <template slot-scope="scope">
-          <div>
+          <div v-if="scope.row.courseSchedule && scope.row.courseSchedule.status != 'NOT_START'">
             {{ scope.row.status | clockingIn }}
           </div>
         </template>

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