lex-xin 5 лет назад
Родитель
Сommit
af2e5c9d81
49 измененных файлов с 236 добавлено и 39 удалено
  1. 0 0
      dist/index.html
  2. 1 0
      dist/static/css/chunk-0caa04ce.19cedcb9.css
  3. 0 0
      dist/static/css/chunk-5b4f76af.7c91f19c.css
  4. 0 0
      dist/static/css/chunk-6dcfbe0e.7be047ad.css
  5. 0 1
      dist/static/css/chunk-7fc307f0.07d6c7ae.css
  6. 0 0
      dist/static/js/app.b1433252.js
  7. 0 0
      dist/static/js/app.dcf6b973.js
  8. 0 0
      dist/static/js/chunk-017d1ea2.19412c08.js
  9. 0 0
      dist/static/js/chunk-047dcaaa.febe01b1.js
  10. 0 0
      dist/static/js/chunk-09753c97.53dbe3e6.js
  11. 0 0
      dist/static/js/chunk-0caa04ce.08ae8f9f.js
  12. 0 0
      dist/static/js/chunk-1c9ae0ee.fc9b20cf.js
  13. 0 0
      dist/static/js/chunk-231926cd.27d48e13.js
  14. 0 0
      dist/static/js/chunk-2424cbf9.9d49a79d.js
  15. 0 0
      dist/static/js/chunk-26a4f6d6.23180ca3.js
  16. 0 0
      dist/static/js/chunk-35d7984f.57d153a5.js
  17. 0 0
      dist/static/js/chunk-3661e960.00205c6f.js
  18. 0 0
      dist/static/js/chunk-3a962238.8143b218.js
  19. 0 0
      dist/static/js/chunk-3e12bef8.0e768ce8.js
  20. 0 0
      dist/static/js/chunk-3fef4f99.beed9bda.js
  21. 0 0
      dist/static/js/chunk-419ce36c.1ff07643.js
  22. 0 0
      dist/static/js/chunk-419ce36c.5cbe98c5.js
  23. 0 0
      dist/static/js/chunk-41f382a0.a66589f3.js
  24. 0 0
      dist/static/js/chunk-4dcc5908.6bccc36f.js
  25. 0 0
      dist/static/js/chunk-51e134bc.3e7091c6.js
  26. 0 0
      dist/static/js/chunk-54726652.02eba222.js
  27. 0 0
      dist/static/js/chunk-5b4f76af.0f33b2a7.js
  28. 0 0
      dist/static/js/chunk-5e5d6dc0.299c5f9e.js
  29. 0 0
      dist/static/js/chunk-5ec46df2.f00b69c6.js
  30. 0 0
      dist/static/js/chunk-64c33787.95239f79.js
  31. 0 0
      dist/static/js/chunk-6562cc02.435de320.js
  32. 0 0
      dist/static/js/chunk-68259a14.a8a3766a.js
  33. 0 0
      dist/static/js/chunk-68259a14.b77df40d.js
  34. 0 0
      dist/static/js/chunk-6dcfbe0e.5b39f03e.js
  35. 0 0
      dist/static/js/chunk-7fc307f0.bb752738.js
  36. 0 0
      dist/static/js/chunk-90bc8dd8.4ac7c028.js
  37. 0 0
      dist/static/js/chunk-a10efea0.29cddba3.js
  38. 0 0
      dist/static/js/chunk-a6484ee0.511f4e42.js
  39. 0 0
      dist/static/js/chunk-bc672cf4.8954da4f.js
  40. 0 0
      dist/static/js/chunk-dc69ca8a.8e821f27.js
  41. 0 0
      dist/static/js/chunk-ef79c3fc.1aa117e6.js
  42. 0 0
      dist/static/js/chunk-fac7eb14.f949863b.js
  43. 2 1
      src/api/buildTeam.js
  44. 3 0
      src/views/categroyManager/generalSettings/overallManager.vue
  45. 111 0
      src/views/categroyManager/generalSettings/overallManagerTwo.vue
  46. 20 27
      src/views/categroyManager/globalConfig.vue
  47. 3 3
      src/views/teacherManager/teacherDetail/components/settlement.vue
  48. 30 4
      src/views/teamBuild/signupList.vue
  49. 66 3
      src/views/teamDetail/teamDetailedList.vue

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/index.html


+ 1 - 0
dist/static/css/chunk-0caa04ce.19cedcb9.css

@@ -0,0 +1 @@
+.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;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:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}[data-v-fcb2ec7e] .el-input-group__append{background:#dcdfe6;border-color:#dcdfe6}[data-v-fcb2ec7e] .el-input-group__append:active,[data-v-fcb2ec7e] .el-input-group__append:focus,[data-v-fcb2ec7e] .el-input-group__append:hover{background:#dcdfe6;border-color:#dcdfe6;color:#fff}.el-button--primary[data-v-fcb2ec7e],.el-button--primary[data-v-fcb2ec7e]:active,.el-button--primary[data-v-fcb2ec7e]:focus,.el-button--primary[data-v-fcb2ec7e]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-fcb2ec7e]{margin-top:40px}[data-v-fcb2ec7e] .el-col-12{width:60%}.el-col[data-v-fcb2ec7e]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-right:50%}.el-input-group[data-v-fcb2ec7e],.el-input[data-v-fcb2ec7e]{width:200px;margin:0 20px}

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/chunk-5b4f76af.7c91f19c.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/css/chunk-6dcfbe0e.7be047ad.css


+ 0 - 1
dist/static/css/chunk-7fc307f0.07d6c7ae.css

@@ -1 +0,0 @@
-.pagination-container[data-v-31cb099a]{background:#fff;padding:32px 16px;width:100%;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:center;-ms-flex-pack:center;justify-content:center}.pagination-container.hidden[data-v-31cb099a]{display:none}[data-v-9b4fcb64] .el-input-group__append{background:#dcdfe6;border-color:#dcdfe6}[data-v-9b4fcb64] .el-input-group__append:active,[data-v-9b4fcb64] .el-input-group__append:focus,[data-v-9b4fcb64] .el-input-group__append:hover{background:#dcdfe6;border-color:#dcdfe6;color:#fff}.el-button--primary[data-v-9b4fcb64],.el-button--primary[data-v-9b4fcb64]:active,.el-button--primary[data-v-9b4fcb64]:focus,.el-button--primary[data-v-9b4fcb64]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-9b4fcb64]{margin-top:40px}.el-col[data-v-9b4fcb64]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-right:50%}.el-input-group[data-v-9b4fcb64],.el-input[data-v-9b4fcb64]{width:200px;margin:0 20px}

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.b1433252.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/app.dcf6b973.js


+ 0 - 0
dist/static/js/chunk-017d1ea2.c0be0dd4.js → dist/static/js/chunk-017d1ea2.19412c08.js


+ 0 - 0
dist/static/js/chunk-047dcaaa.32e33d20.js → dist/static/js/chunk-047dcaaa.febe01b1.js


+ 0 - 0
dist/static/js/chunk-09753c97.b843dac3.js → dist/static/js/chunk-09753c97.53dbe3e6.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-0caa04ce.08ae8f9f.js


+ 0 - 0
dist/static/js/chunk-1c9ae0ee.58586761.js → dist/static/js/chunk-1c9ae0ee.fc9b20cf.js


+ 0 - 0
dist/static/js/chunk-231926cd.4acffd25.js → dist/static/js/chunk-231926cd.27d48e13.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-2424cbf9.9d49a79d.js


+ 0 - 0
dist/static/js/chunk-26a4f6d6.b2c09741.js → dist/static/js/chunk-26a4f6d6.23180ca3.js


+ 0 - 0
dist/static/js/chunk-35d7984f.1a69491f.js → dist/static/js/chunk-35d7984f.57d153a5.js


+ 0 - 0
dist/static/js/chunk-3661e960.271d3d15.js → dist/static/js/chunk-3661e960.00205c6f.js


+ 0 - 0
dist/static/js/chunk-3a962238.e79aa4fe.js → dist/static/js/chunk-3a962238.8143b218.js


+ 0 - 0
dist/static/js/chunk-3e12bef8.289d17f7.js → dist/static/js/chunk-3e12bef8.0e768ce8.js


+ 0 - 0
dist/static/js/chunk-3fef4f99.0279a5ff.js → dist/static/js/chunk-3fef4f99.beed9bda.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-419ce36c.1ff07643.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-419ce36c.5cbe98c5.js


+ 0 - 0
dist/static/js/chunk-41f382a0.2126f0a8.js → dist/static/js/chunk-41f382a0.a66589f3.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-4dcc5908.6bccc36f.js


+ 0 - 0
dist/static/js/chunk-51e134bc.50b2b913.js → dist/static/js/chunk-51e134bc.3e7091c6.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-54726652.02eba222.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-5b4f76af.0f33b2a7.js


+ 0 - 0
dist/static/js/chunk-5e5d6dc0.0dec3f07.js → dist/static/js/chunk-5e5d6dc0.299c5f9e.js


+ 0 - 0
dist/static/js/chunk-5ec46df2.837b5f01.js → dist/static/js/chunk-5ec46df2.f00b69c6.js


+ 0 - 0
dist/static/js/chunk-64c33787.c06709cc.js → dist/static/js/chunk-64c33787.95239f79.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-6562cc02.435de320.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-68259a14.a8a3766a.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-68259a14.b77df40d.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-6dcfbe0e.5b39f03e.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-7fc307f0.bb752738.js


+ 0 - 0
dist/static/js/chunk-90bc8dd8.dedf4dfe.js → dist/static/js/chunk-90bc8dd8.4ac7c028.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-a10efea0.29cddba3.js


+ 0 - 0
dist/static/js/chunk-a6484ee0.34479936.js → dist/static/js/chunk-a6484ee0.511f4e42.js


+ 0 - 0
dist/static/js/chunk-bc672cf4.64eeb0e1.js → dist/static/js/chunk-bc672cf4.8954da4f.js


+ 0 - 0
dist/static/js/chunk-dc69ca8a.a739a8f4.js → dist/static/js/chunk-dc69ca8a.8e821f27.js


+ 0 - 0
dist/static/js/chunk-ef79c3fc.1ba75692.js → dist/static/js/chunk-ef79c3fc.1aa117e6.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
dist/static/js/chunk-fac7eb14.f949863b.js


+ 2 - 1
src/api/buildTeam.js

@@ -757,7 +757,8 @@ export function getMusicGroupAllClass (data) {
 // 乐团【报名中、缴费中】 学生详情列表导出
 export function studentApplyDetailExport(data) {
   return request({
-    url: api + '/studentRegistration/queryStudentApplyDetailExport',
+    // url: api + '/studentRegistration/queryStudentApplyDetailExport',
+    url: api + '/export/studentApplyDetailExport',
     method: 'post',
     data: qs.stringify(data)
   })

+ 3 - 0
src/views/categroyManager/generalSettings/overallManager.vue

@@ -93,6 +93,9 @@ export default {
 .el-row {
   margin-top: 40px;
 }
+/deep/.el-col-12 {
+  width: 60%;
+}
 .el-col {
   display: flex;
   align-items: center;

+ 111 - 0
src/views/categroyManager/generalSettings/overallManagerTwo.vue

@@ -0,0 +1,111 @@
+<template>
+  <div class='m-container'>
+    <!-- <h2>参数设置</h2> -->
+    <div class="m-core">
+      <!-- 列表 -->
+      <el-row>
+        <el-col :span="12"
+                v-for="(config, index) in configList"
+                :key="config.id">
+          {{ config.description[0] }}
+          <el-input v-model="input[index]">
+            <template slot="append"
+                      v-if="config.description[1]">{{ config.description[1] }}</template>
+          </el-input>
+          <el-button @click="onSave(config, index)"
+                     type="primary">保存</el-button>
+        </el-col>
+      </el-row>
+    </div>
+  </div>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import { sysConfigList, sysConfigUpdate } from '@/api/generalSettings'
+export default {
+  components: { pagination },
+  name: 'musicalManager',
+  data () {
+    return {
+      configList: [],
+      input: []
+    }
+  },
+  mounted () {
+    this.__init()
+  },
+  methods: {
+    __init () {
+      sysConfigList({ group: 'payment_config' }).then(res => {
+        if (res.code == 200 && res.data.length > 0) {
+          res.data.forEach((item, index) => {
+            this.input[index] = item.paranValue
+            this.configList.push({
+              id: item.id,
+              paramName: item.paramName,
+              paranValue: item.paranValue,
+              description: item.description.split('{}')
+            })
+          })
+        }
+      })
+    },
+    onSave (row, index) {
+      let params = {
+        id: row.id,
+        paranValue: this.input[index],
+        paramName: row.paramName,
+        description: row.description.join('{}')
+      }
+      sysConfigUpdate(params).then(res => {
+        if (res.code == 200) {
+          this.$message.success('修改成功')
+        }
+      })
+    }
+  }
+}
+</script>
+<style lang="scss" scoped>
+/deep/.el-input-group__append {
+  background: #dcdfe6;
+  border-color: #dcdfe6;
+  &:hover,
+  &:active,
+  &:focus {
+    background: #dcdfe6;
+    border-color: #dcdfe6;
+    color: #fff;
+  }
+}
+.el-button--primary {
+  background: #14928a;
+  border-color: #14928a;
+  color: #fff;
+  &:hover,
+  &:active,
+  &:focus {
+    background: #14928a;
+    border-color: #14928a;
+    color: #fff;
+  }
+}
+.el-row {
+  margin-top: 40px;
+}
+/deep/.el-col-12 {
+  width: 60%;
+}
+.el-col {
+  display: flex;
+  align-items: center;
+  margin-bottom: 20px;
+  justify-content: flex-end;
+  margin-right: 50%;
+}
+.el-input-group,
+.el-input {
+  width: 200px;
+  margin: 0 20px;
+}
+</style>

+ 20 - 27
src/views/categroyManager/globalConfig.vue

@@ -6,58 +6,50 @@
     <div class="m-core">
       <!-- navMenu -->
       <el-tabs v-model="activeIndex" type="card" @tab-click="handleClick">
-        <el-tab-pane label="参数设置" name="0" v-if="permissionList.overallManager">
-            <overallManager v-if="activeIndex == 0" />
+        
+        <el-tab-pane label="声部设置" name="0" v-if="permissionList.musicalManager">
+            <musicalManager v-if="activeIndex == 0" />
         </el-tab-pane>
-        <el-tab-pane label="声部设置" name="1" v-if="permissionList.musicalManager">
-            <musicalManager v-if="activeIndex == 1" />
+        <el-tab-pane label="乐团收费类型" name="1" v-if="permissionList.typesManager">
+            <typesManager v-if="activeIndex == 1" />
         </el-tab-pane>
-        <el-tab-pane label="乐团收费类型" name="2" v-if="permissionList.typesManager">
-            <typesManager v-if="activeIndex == 2" />
+        <el-tab-pane label="乐团收费标准" name="2" v-if="permissionList.chargesList">
+          <chargesList v-if="activeIndex == 2" />
         </el-tab-pane>
-        <el-tab-pane label="乐团收费标准" name="3" v-if="permissionList.chargesList">
-          <!-- <charges v-if="activeIndex == 3" /> -->
-          <chargesList v-if="activeIndex == 3" />
+        <el-tab-pane label="乐团作业模板" name="3" v-if="permissionList.jobTemplateSetting">
+            <jobTemplateSetting v-if="activeIndex == 3" />
         </el-tab-pane>
-        <!-- <el-tab-pane label="VIP课程参数设置" name="3">
-          <vipParameterManager v-if="activeIndex == 3" />
-        </el-tab-pane> -->
-        <el-tab-pane label="乐团作业模板" name="4" v-if="permissionList.jobTemplateSetting">
-            <jobTemplateSetting v-if="activeIndex == 4" />
+        <el-tab-pane label="热词标签" name="4" v-if="permissionList.errorManager">
+          <errorManager v-if="activeIndex == 4" />
         </el-tab-pane>
-        <!-- <el-tab-pane label="梯度结算规则设置" name="5">
-            <gradientSet v-if="activeIndex == 5" />
-        </el-tab-pane> -->
-        <el-tab-pane label="热词标签" name="5" v-if="permissionList.errorManager">
-          <errorManager v-if="activeIndex == 5" />
+        <el-tab-pane label="参数设置" name="5" v-if="permissionList.overallManager">
+            <overallManager v-if="activeIndex == 5" />
+        </el-tab-pane>
+        <el-tab-pane label="收费分润配置" name="6" v-if="permissionList.overallManagerTwo">
+            <overallManagerTwo v-if="activeIndex == 6" />
         </el-tab-pane>
-       
       </el-tabs>
     </div>
   </div>
 </template>
 <script>
 import overallManager from './generalSettings/overallManager'
+import overallManagerTwo from './generalSettings/overallManagerTwo'
 import musicalManager from './specialSetup/musicalManager'
 import typesManager from './specialSetup/typesManager'
-// import vipParameterManager from './generalSettings/vipParameterManager'
 import jobTemplateSetting from './specialSetup/jobTemplateSetting'
-// import gradientSet from './insideSetting/gradientSet'
 import errorManager from './generalSettings/errorManager'
-// import charges from './specialSetup/charges'
 import chargesList from './specialSetup/chargesList'
 import { permission } from '@/utils/directivePage'
 export default {
   components: {
-    overallManager, 
+    overallManager,
+    overallManagerTwo,
     musicalManager, 
     typesManager, 
-    // vipParameterManager, 
     jobTemplateSetting, 
-    // gradientSet,
     errorManager,
     chargesList
-    // charges
   },
   name: 'globalConfig',
   data () {
@@ -65,6 +57,7 @@ export default {
       activeIndex: '0',
       permissionList: {
         overallManager: permission('/globalConfig/overallManager'),
+        overallManagerTwo: permission('/globalConfig/overallManagerTwo'),
         musicalManager: permission('/globalConfig/musicalManager'),
         typesManager: permission('/globalConfig/typesManager'),
         chargesList: permission('/globalConfig/chargesList'),

+ 3 - 3
src/views/teacherManager/teacherDetail/components/settlement.vue

@@ -71,14 +71,14 @@
             {{ scope.row.teacherRole | workType }}
           </template>
         </el-table-column>
-        <el-table-column label="当前课次"
+        <!-- <el-table-column label="当前课次"
                          prop="currentClassTimes">
           <template slot-scope="scope">
             <div>
               {{  scope.row.currentClassTimes + '/' +scope.row.totalClassTimes  }}
             </div>
           </template>
-        </el-table-column>
+        </el-table-column> -->
         <el-table-column label="签到">
           <template slot-scope="scope">
             {{ scope.row.signInStatus | attendanceType }}
@@ -102,7 +102,7 @@
         </el-table-column>
         <el-table-column label="操作">
           <template slot-scope="scope"
-                    v-if="scope.row.courseScheduleType != 'VIP'">
+                    v-if="scope.row.courseScheduleType != 'VIP' && !scope.row.settlementTime">
             <el-button v-if="scope.row.courseScheduleType != 'DEMO'"
                        v-permission="{child: 'courseSchedule/updateTeacherCoursesSalary', parent: 'settlement/updateTeacherCoursesSalary'}"
                        @click="onUpdate(scope.row)"

+ 30 - 4
src/views/teamBuild/signupList.vue

@@ -32,8 +32,8 @@
                @click="onCreateQRCode">报名链接</div>
           <div class='newBand'
                @click="onCreateQRCode2">缴费详情</div>
-          <!-- <div class='newBand'
-               @click='onDownLoadExecl'>报表导出</div> -->
+          <div class='newBand'
+               @click='onDownLoadExecl'>报表导出</div>
 
         </div>
       </div>
@@ -386,6 +386,8 @@ import { getintoClass, getStudentList, findSound, musicGroupOpenPay, openPayment
 import { resetStudentSubject, getStudentFeeDetail } from '@/api/studentManager'
 import { vaildStudentUrl, vaildTeacherUrl } from '@/utils/validate'
 import QRCode from 'qrcodejs2'
+import axios from 'axios'
+import { getToken } from '@/utils/auth'
 export default {
   components: {
     pagination
@@ -630,11 +632,35 @@ export default {
       }
     },
     onDownLoadExecl () { // 报表导出
-      studentApplyDetailExport({
+      let url = '/api-web/studentRegistration/queryStudentApplyDetailExport'
+      let data = {
         musicGroupId: this.$route.query.id,
         page: 1,
         rows: 9999
-      }).then(res => { })
+      }
+      const options = {
+        method: 'POST',
+        headers: {
+          'Authorization': getToken() 
+        },
+        data: (data),
+        url,
+        responseType: 'blob'
+      }
+      axios(options).then(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'
+            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+        })
+        let objectUrl = URL.createObjectURL(blob)
+        let link = document.createElement("a")
+        let fname = `学生报名列表` //下载文件的名字
+        link.href = objectUrl
+        link.setAttribute("download", fname)
+        document.body.appendChild(link)
+        link.click()
+      })
     },
     onGoHome () { // 确认开团
       // 判断是否有学生缴费

+ 66 - 3
src/views/teamDetail/teamDetailedList.vue

@@ -56,16 +56,21 @@
       </div>
     </div>
     <div class="btnWrap"
-         v-permission="'order/verifyMusicalList'"
          style="margin-top:20px;">
-      <div class="okBtn"
-           @click="okDetailList">确认</div>
+      <el-button type="primary" @click="musicalListExport">发放清单</el-button>
+      <el-button type="primary" @click="musicalListDetailExport">分发清单</el-button>
+      <el-button type="warning" v-permission="'order/verifyMusicalList'" @click="okDetailList">确认</el-button>
+      <!-- <div class="okBtn" v-permission="'order/verifyMusicalList'"
+           @click="okDetailList">确认</div> -->
     </div>
   </div>
 </template>
 <script>
 import { getTeamDetailList } from '@/api/buildTeam'
 import { verifyMusicalList } from '@/api/orderManager'
+import axios from 'axios'
+import qs from 'qs'
+import { getToken } from '@/utils/auth'
 export default {
   data () {
     return {
@@ -106,6 +111,64 @@ export default {
         })
       }).catch(() => {})
       
+    },
+    musicalListExport () { // 报表导出
+      let url = '/api-web/order/musicalListExport'
+      let data = {
+        musicGroupId: this.$route.query.id,
+      }
+      const options = {
+        method: 'POST',
+        headers: {
+          'Authorization': getToken() 
+        },
+        data: qs.stringify(data),
+        url,
+        responseType: 'blob'
+      }
+      axios(options).then(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'
+            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+        })
+        let objectUrl = URL.createObjectURL(blob)
+        let link = document.createElement("a")
+        let fname = `发放清单` //下载文件的名字
+        link.href = objectUrl
+        link.setAttribute("download", fname)
+        document.body.appendChild(link)
+        link.click()
+      })
+    },
+    musicalListDetailExport () { // 报表导出
+      let url = '/api-web/order/musicalListDetailExport'
+      let data = {
+        musicGroupId: this.$route.query.id
+      }
+      const options = {
+        method: 'POST',
+        headers: {
+          'Authorization': getToken() 
+        },
+        data: qs.stringify(data),
+        url,
+        responseType: 'blob'
+      }
+      axios(options).then(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'
+            //word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
+        })
+        let objectUrl = URL.createObjectURL(blob)
+        let link = document.createElement("a")
+        let fname = `分发清单` //下载文件的名字
+        link.href = objectUrl
+        link.setAttribute("download", fname)
+        document.body.appendChild(link)
+        link.click()
+      })
     }
   },
 }

Некоторые файлы не были показаны из-за большого количества измененных файлов