Ver código fonte

Merge branch 'master' into 04/16vipactiveRange

mo 4 anos atrás
pai
commit
e38248b691
76 arquivos alterados com 409 adições e 138 exclusões
  1. 0 0
      dist/index.html
  2. 1 1
      dist/static/css/chunk-22a6ff98.e3654ad7.css
  3. 0 0
      dist/static/css/chunk-b7b314ec.3f99b27b.css
  4. 1 1
      dist/static/css/chunk-commons.22270f76.css
  5. 0 0
      dist/static/js/app.0422f045.js
  6. 0 0
      dist/static/js/app.a619198b.js
  7. 0 0
      dist/static/js/chunk-00e01cbe.6fe69a39.js
  8. 0 0
      dist/static/js/chunk-00e01cbe.b3c30cec.js
  9. 0 0
      dist/static/js/chunk-01d48454.1e00fc4a.js
  10. 0 0
      dist/static/js/chunk-12514954.8ec161ef.js
  11. 0 0
      dist/static/js/chunk-12514954.c55cdba6.js
  12. 0 0
      dist/static/js/chunk-13af5276.0e323855.js
  13. 0 0
      dist/static/js/chunk-13af5276.bac44c47.js
  14. 0 0
      dist/static/js/chunk-214fb7c2.5487937b.js
  15. 0 0
      dist/static/js/chunk-214fb7c2.b2cf6984.js
  16. 0 0
      dist/static/js/chunk-22a6ff98.f8af6f95.js
  17. 0 0
      dist/static/js/chunk-2928a062.31d6beb7.js
  18. 0 0
      dist/static/js/chunk-2928a062.c2980c97.js
  19. 0 0
      dist/static/js/chunk-2d53cf59.0166eb6b.js
  20. 0 0
      dist/static/js/chunk-2ef3559a.46cac1ba.js
  21. 0 0
      dist/static/js/chunk-2ef3559a.e1799fc3.js
  22. 0 0
      dist/static/js/chunk-302a443c.7f66a609.js
  23. 0 0
      dist/static/js/chunk-30617446.be63effb.js
  24. 0 0
      dist/static/js/chunk-3b914591.279f886d.js
  25. 0 0
      dist/static/js/chunk-3d44bd43.9f5da2c4.js
  26. 0 0
      dist/static/js/chunk-41ce9a8e.f0b8c971.js
  27. 0 0
      dist/static/js/chunk-4647ad6d.0cee2ed4.js
  28. 0 0
      dist/static/js/chunk-4647ad6d.b3cf9a8f.js
  29. 0 0
      dist/static/js/chunk-495439dc.a1b4b2f8.js
  30. 0 0
      dist/static/js/chunk-4a5767e5.0d3386da.js
  31. 0 0
      dist/static/js/chunk-4d6710e9.0ca8289a.js
  32. 0 0
      dist/static/js/chunk-4d6710e9.10c8bd94.js
  33. 0 0
      dist/static/js/chunk-53afcbb2.4f1ecc2e.js
  34. 0 0
      dist/static/js/chunk-53afcbb2.93f55aeb.js
  35. 0 0
      dist/static/js/chunk-54ae4d6e.a9c9cc47.js
  36. 0 0
      dist/static/js/chunk-5f5ffb00.82ee46ba.js
  37. 0 0
      dist/static/js/chunk-6128ef14.6065e728.js
  38. 0 0
      dist/static/js/chunk-6fdbc1f3.3d40a111.js
  39. 0 0
      dist/static/js/chunk-6fdbc1f3.d29231aa.js
  40. 0 0
      dist/static/js/chunk-72b3fe40.b49cfdb7.js
  41. 0 0
      dist/static/js/chunk-739fed81.3f7ac2f6.js
  42. 0 0
      dist/static/js/chunk-75ae9c6c.5351f452.js
  43. 0 0
      dist/static/js/chunk-7842ffae.3211a270.js
  44. 0 0
      dist/static/js/chunk-7f91ee0d.5c818979.js
  45. 0 0
      dist/static/js/chunk-7f91ee0d.f041e526.js
  46. 0 0
      dist/static/js/chunk-933bb68e.fbbd98f9.js
  47. 0 0
      dist/static/js/chunk-a23e2ba4.3d09d694.js
  48. 0 0
      dist/static/js/chunk-a23e2ba4.f2a00211.js
  49. 0 0
      dist/static/js/chunk-b5f3834c.65f9022f.js
  50. 0 0
      dist/static/js/chunk-b5f3834c.c56628d3.js
  51. 0 0
      dist/static/js/chunk-b7b314ec.e3cc8cc5.js
  52. 0 0
      dist/static/js/chunk-b7fa7158.682d245b.js
  53. 0 0
      dist/static/js/chunk-bfd22ab0.91ebb49a.js
  54. 0 0
      dist/static/js/chunk-c0b0701c.ea03010e.js
  55. 0 0
      dist/static/js/chunk-c7f5974e.28107c4c.js
  56. 0 0
      dist/static/js/chunk-da63f3ae.a39c5384.js
  57. 0 0
      dist/static/js/chunk-da63f3ae.a91f65eb.js
  58. 0 0
      dist/static/js/chunk-e60d0406.c20142dd.js
  59. 0 0
      dist/static/js/chunk-e675f99a.637db059.js
  60. 0 0
      dist/static/js/chunk-ec9a919c.66121d67.js
  61. 0 0
      dist/static/js/chunk-ec9a919c.67b40e5f.js
  62. 0 0
      dist/static/js/chunk-f95af620.0101f79f.js
  63. 0 0
      dist/static/js/chunk-fb41c584.59feff5d.js
  64. 0 0
      dist/static/js/chunk-fd1cca6c.295d335c.js
  65. 0 0
      dist/static/js/chunk-fd1cca6c.4adc97b9.js
  66. 2 1
      src/utils/searchArray.js
  67. 11 2
      src/utils/vueFilter.js
  68. 1 1
      src/views/main/baseinfo/business.vue
  69. 1 1
      src/views/main/baseinfo/index.vue
  70. 1 1
      src/views/main/baseinfo/management.vue
  71. 34 0
      src/views/reaplceMusicPlayer/api.js
  72. 75 32
      src/views/reaplceMusicPlayer/index.vue
  73. 17 2
      src/views/reaplceMusicPlayer/modals/addUrl.vue
  74. 185 61
      src/views/reaplceMusicPlayer/modals/detail.vue
  75. 79 34
      src/views/reaplceMusicPlayer/modals/resetInfo.vue
  76. 1 1
      vue.config.js

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/index.html


+ 1 - 1
dist/static/css/chunk-302a443c.1552e759.css → dist/static/css/chunk-22a6ff98.e3654ad7.css

@@ -1 +1 @@
-.btnList[data-v-1e6344d6]{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}.code-url[data-v-1e6344d6]{margin-top:10px}
+.btnList[data-v-005e3ff4]{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}.code-url[data-v-005e3ff4]{margin-top:10px}

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/css/chunk-b7b314ec.3f99b27b.css


+ 1 - 1
dist/static/css/chunk-commons.22270f76.css

@@ -1 +1 @@
-.left-code .code-url{margin-top:10px;margin-bottom:10px}.left-code .code-url .link-btn{margin-top:0;margin-bottom:0;font-size:12px}.pagination-container[data-v-5366c162]{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-5366c162]{display:none}.content-tooltip[data-v-98517b38]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:inline-block}
+.pagination-container[data-v-5366c162]{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-5366c162]{display:none}.content-tooltip[data-v-98517b38]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;display:inline-block}.left-code .code-url{margin-top:10px;margin-bottom:10px}.left-code .code-url .link-btn{margin-top:0;margin-bottom:0;font-size:12px}

Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/app.0422f045.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/app.a619198b.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-00e01cbe.6fe69a39.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-00e01cbe.b3c30cec.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-01d48454.1e00fc4a.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-12514954.8ec161ef.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-12514954.c55cdba6.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-13af5276.0e323855.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-13af5276.bac44c47.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-214fb7c2.5487937b.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-214fb7c2.b2cf6984.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-22a6ff98.f8af6f95.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-2928a062.31d6beb7.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-2928a062.c2980c97.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-2d53cf59.0166eb6b.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-2ef3559a.46cac1ba.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-2ef3559a.e1799fc3.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-302a443c.7f66a609.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-30617446.be63effb.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-3b914591.279f886d.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-3d44bd43.9f5da2c4.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-41ce9a8e.f0b8c971.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-4647ad6d.0cee2ed4.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-4647ad6d.b3cf9a8f.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-495439dc.a1b4b2f8.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-4a5767e5.0d3386da.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-4d6710e9.0ca8289a.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-4d6710e9.10c8bd94.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-53afcbb2.4f1ecc2e.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-53afcbb2.93f55aeb.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-54ae4d6e.a9c9cc47.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-5f5ffb00.82ee46ba.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-6128ef14.6065e728.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-6fdbc1f3.3d40a111.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-6fdbc1f3.d29231aa.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-72b3fe40.b49cfdb7.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-739fed81.3f7ac2f6.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-75ae9c6c.5351f452.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-7842ffae.3211a270.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-7f91ee0d.5c818979.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-7f91ee0d.f041e526.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-933bb68e.fbbd98f9.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-a23e2ba4.3d09d694.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-a23e2ba4.f2a00211.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-b5f3834c.65f9022f.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-b5f3834c.c56628d3.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-b7b314ec.e3cc8cc5.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-b7fa7158.682d245b.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-bfd22ab0.91ebb49a.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-c0b0701c.ea03010e.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-c7f5974e.28107c4c.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-da63f3ae.a39c5384.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-da63f3ae.a91f65eb.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-e60d0406.c20142dd.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-e675f99a.637db059.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-ec9a919c.66121d67.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-ec9a919c.67b40e5f.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-f95af620.0101f79f.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-fb41c584.59feff5d.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-fd1cca6c.295d335c.js


Diferenças do arquivo suprimidas por serem muito extensas
+ 0 - 0
dist/static/js/chunk-fd1cca6c.4adc97b9.js


+ 2 - 1
src/utils/searchArray.js

@@ -85,7 +85,8 @@ export const orderStatus = [
   { value: 'OUTORDER', label: '外部收入' },
   { value: 'GOODS_SELL', label: '商品销售' },
   { value: 'SUBJECT_CHANGE', label: '声部更换' },
-  { value: 'MAINTENANCE', label: '乐器保养' }
+  { value: 'MAINTENANCE', label: '乐器保养' },
+  { value: 'REPLACEMENT', label: '乐器置换' },
 
 ]
 

+ 11 - 2
src/utils/vueFilter.js

@@ -263,7 +263,8 @@ Vue.filter('orderType', value => {
     SUBJECT_CHANGE: '声部更换',
     DOUBLE_ELEVEN2020: '双十一活动',
     DEGREE_REGISTRATION: '考级报名',
-    MAINTENANCE: '乐器保养'
+    MAINTENANCE: '乐器保养',
+    REPLACEMENT: '乐器置换'
   }
   return template[value]
 })
@@ -582,6 +583,14 @@ Vue.filter('paymentStatusDetall', value => {
   }
   return template[value]
 })
+Vue.filter('replacementInsFilter', value => {
+  let template = {
+    2: "已缴费",
+   1: "缴费中",
+    0: "未缴费",
+  }
+  return template[value]
+})
 
 // 课时申诉
 Vue.filter('complaintsStatusEnum', value => {
@@ -745,4 +754,4 @@ Vue.filter('downListType', value => {
 // 退团状态
 Vue.filter('withdrawalStatus', value => {
   return constant.withdrawalStatus[value]
-})
+})

+ 1 - 1
src/views/main/baseinfo/business.vue

@@ -181,7 +181,7 @@ export default {
     },
     async FetchDetail() {
       this.loading = true;
-      const data = this.data;
+      let data = [];
       try {
         const { dates, ...rest } = this.search;
         const res = await getIndex({

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

@@ -221,7 +221,7 @@ export default {
       }
     },
     resetDate(data) {
-      this.dataInfo = data;
+      this.dataInfo = {...this.dataInfo,...data};
     },
   },
 };

+ 1 - 1
src/views/main/baseinfo/management.vue

@@ -225,7 +225,7 @@ export default {
     },
     async FetchDetail() {
       this.loading = true;
-      const data = this.data;
+      let data = [];
       try {
         const { dates, ...rest } = this.search;
         const res = await getIndex({

+ 34 - 0
src/views/reaplceMusicPlayer/api.js

@@ -36,3 +36,37 @@ export function openPayReplacement (data) {
     requestType: 'form',
   })
 }
+
+// 根据声部查询品牌乐器
+export function getInstrumentSoundList (data) {
+  return request2({
+    url: api + `/replacementInstrument/queryPage`,
+    method: 'get',
+    params: data,
+    requestType: 'form',
+  })
+}
+
+// 查询详情页列表
+export function getInstrumentActivityList (data) {
+  return request2({
+    url: api + `/replacementInstrumentActivity/queryPage`,
+    method: 'get',
+    params: data,
+    requestType: 'form',
+  })
+}
+
+// 修改声部和乐器
+export function updateInstrumentActivity (data) {
+  return request2({
+    url: api + `/replacementInstrumentActivity/update`,
+    method: 'post',
+    data,
+    requestType: 'form',
+  })
+}
+
+// 导出
+
+

+ 75 - 32
src/views/reaplceMusicPlayer/index.vue

@@ -16,13 +16,13 @@
         >
           生成链接
         </div>
-        <!-- <div class="newBand" @click="onExport" style="max-width: 150px">
+        <div class="newBand" @click="onExport" style="max-width: 150px" v-if="permission('replacementInstrumentActivity/export')">
           导出
-        </div> -->
+        </div>
       </div>
       <save-form
         :inline="true"
-        ref='searchForm'
+        ref="searchForm"
         :model="searchForm"
         @submit="search"
         @reset="onReSet"
@@ -86,12 +86,21 @@
             <template slot-scope="scope">
               <div>
                 {{ scope.row.cooperationOrganName }}
-                (<copy-text> {{ scope.row.cooperationOrganId }} </copy-text>)
+                <!-- (<copy-text> {{ scope.row.cooperationOrganId }} </copy-text>) -->
               </div>
             </template>
           </el-table-column>
           <el-table-column
             align="center"
+            prop="showQuestion"
+            label="是否参加问卷调查"
+          >
+            <template slot-scope="scope">
+              {{ scope.row.showQuestion ? '是' : '否' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            align="center"
             prop="activeNum"
             label="调查人数"
           ></el-table-column>
@@ -105,6 +114,11 @@
               <div>{{ scope.row.replaceScale }}%</div>
             </template>
           </el-table-column>
+               <el-table-column align="center" prop="replaceScale" label="缴费率">
+            <template slot-scope="scope">
+              <div>{{ scope.row.payScale }}%</div>
+            </template>
+          </el-table-column>
           <el-table-column align="center" prop="openPay" label="是否开启缴费">
             <template slot-scope="scope">
               <div>{{ scope.row.openPay ? "是" : "否" }}</div>
@@ -113,9 +127,9 @@
           <el-table-column align="center" prop="studentId" label="操作">
             <template slot-scope="scope">
               <div>
-                <!-- <el-button type="text" @click="lookDetail(scope.row)"
+                <el-button type="text" @click="lookDetail(scope.row)" v-if="permission('replacementInstrumentActivity/queryPage')"
                   >详情</el-button
-                > -->
+                >
                 <el-button
                   type="text"
                   @click="onCreateQRCode(scope.row, '调查链接')"
@@ -129,7 +143,10 @@
                 <el-button
                   type="text"
                   @click="openPay(scope.row)"
-                  v-if="!scope.row.openPay&&permission('replacementInstrumentCooperation/openPay')"
+                  v-if="
+                    !scope.row.openPay &&
+                    permission('replacementInstrumentCooperation/openPay')
+                  "
                   >开启缴费</el-button
                 >
               </div>
@@ -162,10 +179,10 @@
     <el-dialog
       title="详情"
       :visible.sync="detailVisible"
-      width="1000px"
+      width="1200px"
       v-if="detailVisible"
     >
-      <detail ref="detail" @close="close" />
+      <detail ref="detail" @close="close" :detail="activeRow" />
       <div slot="footer">
         <el-button type="primary" @click="detailVisible = false"
           >确定</el-button
@@ -173,9 +190,7 @@
       </div>
     </el-dialog>
 
-      <qr-code v-model="qrcodeStatus"
-             :title="qrcodeName"
-             :codeUrl="codeUrl" />
+    <qr-code v-model="qrcodeStatus" :title="qrcodeName" :codeUrl="codeUrl" />
 
     <!-- <el-dialog :title="qrcodeName" :visible.sync="qrcodeStatus" width="300px">
       <div class="left-code">
@@ -200,9 +215,13 @@ import addUrl from "./modals/addUrl";
 import detail from "./modals/detail";
 import load from "@/utils/loading";
 import { getReplacementList, openPayReplacement } from "./api";
+import { Export } from '@/utils/downLoadFile'
+import cleanDeep from 'clean-deep'
+import qs from 'qs';
 import QrCode from "@/components/QrCode/index";
+import { encode } from 'js-base64';
 export default {
-  components: { pagination, addUrl, detail, QrCode, },
+  components: { pagination, addUrl, detail, QrCode },
   data() {
     return {
       searchForm: {
@@ -225,6 +244,7 @@ export default {
       qrcodes: true,
       qrcodeStatus: false,
       qrcodeName: "调查链接",
+      activeRow: null,
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -261,8 +281,8 @@ export default {
       this.getList();
     },
     onReSet() {
-      this.$refs.searchForm.resetFields()
-      this.search()
+      this.$refs.searchForm.resetFields();
+      this.search();
     },
     makeUrl() {
       this.makeUrlVisible = true;
@@ -274,8 +294,27 @@ export default {
       this.makeUrlVisible = false;
       this.detailVisible = false;
     },
-    onExport() {},
+    async onExport() {
+      const { search, ...rest } = this.searchForm;
+      let obj = {
+        ...rest,
+        page: this.rules.page,
+        rows: this.rules.limit,
+        cooperationOrganIdOrName:search
+      };
+      await Export(
+        this,
+        {
+          url: "/api-web/replacementInstrumentActivity/export",
+          fileName: "乐器置换列表.xlsx",
+          method: "post",
+          params: qs.stringify(cleanDeep(obj)),
+        },
+        "您确定导出乐器置换列表"
+      );
+    },
     lookDetail(row) {
+      this.activeRow = row;
       this.detailVisible = true;
     },
     onCreateQRCode(row, name) {
@@ -296,22 +335,26 @@ export default {
         //     colorLight: "#ffffff",
         //     correctLevel: QRCode.CorrectLevel.H,
         //   });
-          let str;
-          if (name == "调查链接") {
-            let returnUrl = vaildStudentUrl()+`/#/questionnaire?o=${row.organId}&c=${row.cooperationOrganId}`;
-            // console.log(returnUrl)
-            // let tempUrl = vaildStudentUrl()+`/#/transfer?returnUrl=${encodeURIComponent(returnUrl)}`
-            str = returnUrl
-          } else if (name == "统计链接") {
-            str = vaildTeachingUrl()+`/#/questionStatistics?o=${row.organId}&c=${row.cooperationOrganId}`;
-          }
-          // vaildTeachingUrl
-          // this.qrcode.makeCode(
-          //   str +
-          //     `/#/questionnaireInfo?o=${row.organId}&c=${row.cooperationOrganId}`
-          // );
-          this.codeUrl =str;
-          this.qrcodes = true;
+        let str;
+        if (name == "调查链接") {
+          let returnUrl = vaildStudentUrl() + `/#/questionnaire?` + encodeURIComponent(encode(`o=${row.organId}&c=${row.cooperationOrganId}`));
+          // console.log(returnUrl)
+          // let tempUrl =
+          //   vaildStudentUrl() +
+          //   `/#/transfer?returnUrl=${encodeURIComponent(returnUrl)}`;
+          str = returnUrl;
+        } else if (name == "统计链接") {
+          str =
+            vaildTeachingUrl() +
+            `/#/questionStatistics?o=${row.organId}&c=${row.cooperationOrganId}`;
+        }
+        // vaildTeachingUrl
+        // this.qrcode.makeCode(
+        //   str +
+        //     `/#/questionnaireInfo?o=${row.organId}&c=${row.cooperationOrganId}`
+        // );
+        this.codeUrl = str;
+        this.qrcodes = true;
         // }, 100);
       }
     },

+ 17 - 2
src/views/reaplceMusicPlayer/modals/addUrl.vue

@@ -1,6 +1,6 @@
 <template>
   <div>
-    <el-form :model="form" label-width="80px" ref="form">
+    <el-form :model="form" label-width="120px" ref="form">
       <el-form-item
         label="分部"
         prop="organId"
@@ -41,6 +41,20 @@
           ></el-option>
         </el-select>
       </el-form-item>
+      <el-form-item
+        label="是否参与调查"
+        prop="showQuestion"
+        :rules="[{ required: true, message: '请选择是否参与调查' }]"
+      >
+        <el-select
+          v-model.trim="form.showQuestion"
+          filterable
+          clearable
+        >
+          <el-option label="是" :value="1"></el-option>
+          <el-option label="否" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
     </el-form>
   </div>
 </template>
@@ -53,6 +67,7 @@ export default {
       form: {
         organId: "",
         school: "",
+        showQuestion: 1,
       },
       cooperationList: [],
     };
@@ -70,7 +85,7 @@ export default {
       this.$refs.form.validate( async(res) => {
         if (res) {
           try{
-          const res = await addReplacement({cooperationOrganId:this.form.school,organId:this.form.organId})
+          const res = await addReplacement({cooperationOrganId:this.form.school,organId:this.form.organId, showQuestion: this.form.showQuestion})
           this.$message.success('生成链接成功')
            this.$emit('getList')
           this.$emit('close')

+ 185 - 61
src/views/reaplceMusicPlayer/modals/detail.vue

@@ -4,10 +4,10 @@
       :inline="true"
       :model="searchForm"
       ref="searchForm"
-      @submit="search"
-      @reset="onReSet"
+      @submit.native.prevent="search"
+      @reset.native.prevent="onReSet"
     >
-      <el-form-item>
+      <el-form-item prop="search">
         <el-input
           v-model.trim="searchForm.search"
           clearable
@@ -15,50 +15,58 @@
           placeholder="学生姓名或手机号"
         ></el-input>
       </el-form-item>
-      <el-form-item prop="organIdList">
+      <el-form-item prop="subjectId">
         <el-select
-          v-model.trim="searchForm.organIdList"
+          v-model.trim="searchForm.subjectId"
           filterable
           clearable
           placeholder="请选择声部"
+          @change="changeSound"
         >
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
+            v-for="(item, i) in soundList"
+            :key="i"
+            :label="item.text"
+            :value="item.value"
           ></el-option>
         </el-select>
       </el-form-item>
-      <el-form-item prop="organIdList">
+      <el-form-item prop="specification">
         <el-select
-          v-model.trim="searchForm.organIdList"
+          v-model.trim="searchForm.specification"
           filterable
           clearable
-          placeholder="请选择品牌"
+          placeholder="请选择品牌型号"
+          :disabled="!searchForm.subjectId"
         >
           <el-option
-            v-for="(item, index) in selects.branchs"
+            v-for="(item, index) in branchList"
             :key="index"
             :label="item.name"
             :value="item.id"
           ></el-option>
         </el-select>
       </el-form-item>
-
-      <el-form-item prop="organIdList">
+      <el-form-item prop="hasYesFirstAnswer">
         <el-select
-          v-model.trim="searchForm.organIdList"
+          v-model.trim="searchForm.hasYesFirstAnswer"
           filterable
           clearable
-          placeholder="请选择型号"
+          placeholder="请选择是否参加市赛"
         >
-          <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
+          <el-option label="是" :value="1"></el-option>
+          <el-option label="否" :value="0"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item prop="hasInstrumentsId">
+        <el-select
+          v-model.trim="searchForm.hasInstrumentsId"
+          filterable
+          clearable
+          placeholder="请选择是置换乐器"
+        >
+          <el-option label="是" :value="true"></el-option>
+          <el-option label="否" :value="false"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item>
@@ -74,40 +82,78 @@
       >
         <el-table-column
           align="center"
-          prop="studentId"
-          label="声部"
+          prop="userId"
+          label="学员编号"
         ></el-table-column>
         <el-table-column
           align="center"
-          prop="studentId"
+          prop="userName"
           label="学员姓名"
         ></el-table-column>
         <el-table-column
           align="center"
-          prop="studentId"
+          prop="mobileNo"
           label="联系电话"
         ></el-table-column>
         <el-table-column
           align="center"
-          prop="studentId"
-          label="品牌"
-        ></el-table-column>
+          prop="question1"
+          label="是否参加市赛"
+        >
+        </el-table-column>
         <el-table-column
           align="center"
-          prop="studentId"
-          label="型号"
+          label="是否置换"
+        >
+          <template slot-scope="scope">
+            {{ scope.row.instrumentsId ? '是' : '否' }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="subjectName"
+          label="声部"
         ></el-table-column>
+        <el-table-column align="center" prop="studentId" label="品牌型号">
+          <template slot-scope="scope">
+            <div>{{ scope.row.brand }}{{ scope.row.specification }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" prop="payStatus" label="缴费状态">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.payStatus | replacementInsFilter }}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align="center" label="其他建议">
+          <template slot-scope="scope">
+            <Tooltip
+              :content="
+                scope.row.otherSuggestion ? scope.row.otherSuggestion : ''
+              "
+            />
+          </template>
+        </el-table-column>
+
         <el-table-column align="center" prop="studentId" label="操作">
           <template slot-scope="scope">
             <div>
-              <el-button type="text" @click="resetMusic(scope.row)">修改</el-button>
+              <el-button
+                type="text"
+                @click="resetMusic(scope.row)"
+                v-if="
+                  permission('replacementInstrumentActivity/update') &&
+                  scope.row.payStatus == 0
+                "
+                >修改</el-button
+              >
             </div>
           </template>
         </el-table-column>
       </el-table>
       <pagination
-        sync
-        :total.sync="rules.total"
+        :total="rules.total"
         :page.sync="rules.page"
         :limit.sync="rules.limit"
         :page-sizes="rules.page_size"
@@ -115,30 +161,57 @@
       />
     </div>
     <el-dialog
-        title="修改信息"
-        :visible.sync="dialogVisible"
-        width="1000px"
-        append-to-body v-if="dialogVisible">
-        <resetInfo @close="close"/>
-        <div slot="footer">
-            <el-button @click="dialogVisible = false">取 消</el-button>
-            <el-button type="primary" @click="dialogVisible = false">确认修改</el-button>
-        </div>
+      title="修改信息"
+      :visible.sync="dialogVisible"
+      width="600px"
+      append-to-body
+      v-if="dialogVisible"
+    >
+      <resetInfo
+        @close="close"
+        :detail="resetRow"
+        ref="resetInfo"
+        @getList="getList"
+      />
+      <div slot="footer">
+        <el-button @click="dialogVisible = false">取 消</el-button>
+        <el-button type="primary" @click="updateInfo">确认修改</el-button>
+      </div>
     </el-dialog>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
-import resetInfo from './resetInfo'
+import resetInfo from "./resetInfo";
+import { getInstrumentSoundList, getInstrumentActivityList } from "../api";
+import ItemVue from "@/layout/components/Sidebar/Item.vue";
+import Tooltip from "@/components/Tooltip/index";
+import { permission } from "@/utils/directivePage";
+const soundList = [
+  { text: "长笛", value: 2 },
+  { text: "单簧管", value: 4 },
+  { text: "萨克斯", value: 5 },
+  { text: "小号", value: 12 },
+  { text: "圆号", value: 13 },
+  { text: "长号", value: 14 },
+  { text: "上低音号", value: 15 },
+  { text: "大号", value: 17 },
+  { text: "打击乐", value: 23 },
+];
 export default {
-  components: { pagination,resetInfo },
+  components: { pagination, resetInfo, Tooltip },
+  props: ["detail"],
   data() {
     return {
       searchForm: {
-        organIdList: "",
+        cooperationOrganId: "",
+        specification: "",
         search: "",
+        subjectId: "",
+        hasYesFirstAnswer: '',
+        hasInstrumentsId: ''
       },
-      tableList: [{}],
+      tableList: [],
       rules: {
         // 分页规则
         limit: 10, // 限制显示条数
@@ -146,29 +219,80 @@ export default {
         total: 0, // 总条数
         page_size: [10, 20, 40, 50], // 选择限制显示条数
       },
-      dialogVisible:false
+      dialogVisible: false,
+      branchList: [],
+      resetRow: null,
+      soundList:soundList
     };
   },
-  mounted() {},
+  mounted() {
+    this.init();
+  },
   methods: {
-    init() {
+    async init() {
+      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      await this.$store.dispatch("setSubjects");
       this.getList();
     },
-    getList() {},
+    async getList() {
+      try {
+        const res = await getInstrumentActivityList({
+          ...this.searchForm,
+          page: this.rules.page,
+          rows: this.rules.limit,
+        });
+         let temp = res.data.rows || []
+          temp.forEach(item => {
+              let questionResult = item.questionResult.split('')
+              item.question1 = questionResult[0] == 1 ? '是' : '否'
+          })
+        this.tableList = temp;
+        this.rules.total = res.data.total;
+      } catch (e) {}
+    },
     search() {
       this.rules.page = 1;
       this.getList();
     },
-    onReSet(){
-        this.$refs.searchForm.resetFields();
-        this.search()
+    onReSet() {
+      this.$refs.searchForm.resetFields();
+      this.searchForm.cooperationOrganId = this.detail.cooperationOrganId;
+      this.search();
+    },
+    resetMusic(row) {
+      this.resetRow = row;
+      this.dialogVisible = true;
+    },
+    close() {
+      this.dialogVisible = false;
+    },
+    async changeSound(val) {
+      this.searchForm.brand = "";
+      if (val) {
+        try {
+          const res = await getInstrumentSoundList({
+            subjectId: val,
+            page: 1,
+            rows: 999,
+          });
+          this.branchList = res.data.rows.map((item) => {
+            return {
+              name: item.brand + item.specification,
+              id: item.specification,
+            };
+          });
+          console.log(res);
+        } catch (e) {
+          console.log(e);
+        }
+      }
+    },
+    updateInfo() {
+      this.$refs.resetInfo.submited();
     },
-    resetMusic(row){
-        this.dialogVisible = true
+    permission(str, parent) {
+      return permission(str, parent);
     },
-    close(){
-        this.dialogVisible = false
-    }
   },
 };
-</script>
+</script>

+ 79 - 34
src/views/reaplceMusicPlayer/modals/resetInfo.vue

@@ -1,53 +1,38 @@
 <template>
   <div>
-    <el-form :model="form" label-width="80px" :inline="true">
+    <el-form :model="form" label-width="80px" :inline="true" ref='form'>
       <el-form-item label="学员姓名">
-        <div style="width:180px"></div>
+        <div style="width: 180px">{{ detail.userName }}</div>
       </el-form-item>
       <el-form-item label="联系电话">
-        <div></div>
+        <div>{{ detail.mobileNo }}</div>
       </el-form-item>
       <br />
-      <el-form-item prop="organIdList" label="声部">
+      <el-form-item prop="subjectId" label="声部"  :rules="[{required: true, message: '请选择声部'}]">
         <el-select
-          v-model.trim="form.organIdList"
+          v-model.trim="form.subjectId"
           filterable
           clearable
           placeholder="请选择声部"
+          @change="changeSound"
         >
           <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item prop="organIdList" label="品牌">
-        <el-select
-          v-model.trim="form.organIdList"
-          filterable
-          clearable
-          placeholder="请选择品牌"
-        >
-          <el-option
-            v-for="(item, index) in selects.branchs"
-            :key="index"
-            :label="item.name"
-            :value="item.id"
+            v-for="(item, i) in soundList"
+            :key="i"
+            :label="item.text"
+            :value="item.value"
           ></el-option>
         </el-select>
       </el-form-item>
-
-      <el-form-item prop="organIdList" label="型号">
+      <el-form-item prop="instrumentsId" label="品牌型号" >
         <el-select
-          v-model.trim="form.organIdList"
+          v-model.trim="form.instrumentsId"
           filterable
           clearable
-          placeholder="请选择型号"
+          placeholder="请选择品牌型号"
         >
           <el-option
-            v-for="(item, index) in selects.branchs"
+            v-for="(item, index) in branchList"
             :key="index"
             :label="item.name"
             :value="item.id"
@@ -58,16 +43,76 @@
   </div>
 </template>
 <script>
+import { getInstrumentSoundList,updateInstrumentActivity } from "../api";
+const soundList = [
+  { text: "长笛", value: 2 },
+  { text: "单簧管", value: 4 },
+  { text: "萨克斯", value: 5 },
+  { text: "小号", value: 12 },
+  { text: "圆号", value: 13 },
+  { text: "长号", value: 14 },
+  { text: "上低音号", value: 15 },
+  { text: "大号", value: 17 },
+  { text: "打击乐", value: 23 },
+];
 export default {
+  props: ["detail"],
   data() {
     return {
       form: {
-        sound: "",
-        pinpai: "",
-        xinghao: "",
-        organIdList: "",
+        id:this.detail.id,
+        subjectId: "",
+        instrumentsId: "",
       },
+      branchList: [],
+      soundList
     };
   },
+  async mounted() {
+    await this.$store.dispatch("setSubjects");
+    this.changeSound(this.detail.subjectId);
+    this.form.subjectId = this.detail.subjectId;
+    this.form.instrumentsId = this.detail.instrumentsId;
+  },
+  methods: {
+    async changeSound(val) {
+      this.form.instrumentsId = "";
+      if (val) {
+        try {
+          const res = await getInstrumentSoundList({
+            subjectId: val,
+            page: 1,
+            rows: 999,
+          });
+          this.branchList = res.data.rows.map((item) => {
+            return {
+              name: item.brand + item.specification,
+              id: item.id,
+            };
+          });
+        } catch (e) {
+          console.log(e);
+        }
+      }
+    },
+    submited(){
+      this.$refs.form.validate( async (flag)=>{
+        if(flag){
+          try{
+           const res = await updateInstrumentActivity({...this.form})
+           this.$message.success('修改成功')
+           this.$emit('close')
+           this.$emit('getList')
+          }catch(e){
+            console.log(e)
+          }
+
+        }
+      })
+      // updateInstrumentActivity
+    },
+
+
+  },
 };
-</script>
+</script>

+ 1 - 1
vue.config.js

@@ -66,7 +66,7 @@ module.exports = {
       // let target = 'http://dev.dayaedu.com'
       // 'http://dev.dayaedu.com'
       '/api-auth': {
-        // target: 'http://dev.dayaedu.com',
+        target: 'http://dev.dayaedu.com',
         // target: 'https://test.dayaedu.com',
         target : target,
         changeOrigin: true,

Alguns arquivos não foram mostrados porque muitos arquivos mudaram nesse diff