Browse Source

Merge branch 'master' into 03/03SAVECHECK

mo 4 năm trước cách đây
mục cha
commit
d18d878f19
100 tập tin đã thay đổi với 496 bổ sung98 xóa
  1. 0 0
      dist/index.html
  2. 0 1
      dist/static/css/chunk-0320c3e4.87fc6880.css
  3. 0 1
      dist/static/css/chunk-0fc223d0.770890c9.css
  4. 0 0
      dist/static/css/chunk-1d8ad956.384d6c69.css
  5. 0 0
      dist/static/css/chunk-1eafdb0c.7cc4ba9b.css
  6. 0 0
      dist/static/css/chunk-2bafe707.eeb308ac.css
  7. 0 0
      dist/static/css/chunk-30800096.15018979.css
  8. 0 0
      dist/static/css/chunk-364c59b8.700ac80d.css
  9. 1 0
      dist/static/css/chunk-431b1f36.1972779a.css
  10. 0 1
      dist/static/css/chunk-5c53d760.925ca008.css
  11. 0 0
      dist/static/css/chunk-6de39b70.59c48674.css
  12. 1 0
      dist/static/css/chunk-7386f3b0.bd68b159.css
  13. 0 1
      dist/static/css/chunk-9969c186.d22b90cf.css
  14. 0 0
      dist/static/css/chunk-d44e0732.783231f2.css
  15. 1 0
      dist/static/css/chunk-e31ca574.f5314971.css
  16. 1 0
      dist/static/css/chunk-ebaa8926.55ed36d7.css
  17. 0 0
      dist/static/js/app.0b94f60e.js
  18. 0 0
      dist/static/js/app.655de774.js
  19. 0 0
      dist/static/js/chunk-00b087a6.be117936.js
  20. 0 0
      dist/static/js/chunk-0182cd82.ca6cf52c.js
  21. 0 0
      dist/static/js/chunk-018ff2e2.4024109e.js
  22. 0 0
      dist/static/js/chunk-0320c3e4.e700d2e1.js
  23. 0 0
      dist/static/js/chunk-0ca85e10.96dc17e2.js
  24. 0 0
      dist/static/js/chunk-0fc223d0.32a765ea.js
  25. 0 0
      dist/static/js/chunk-12525d56.6c219534.js
  26. 0 0
      dist/static/js/chunk-16d5c235.3eed35ed.js
  27. 0 0
      dist/static/js/chunk-18bd2700.24adc5fc.js
  28. 0 0
      dist/static/js/chunk-1b5749db.ed72d493.js
  29. 0 0
      dist/static/js/chunk-1d8ad956.4bec71b8.js
  30. 0 0
      dist/static/js/chunk-1eafdb0c.31d6c823.js
  31. 0 0
      dist/static/js/chunk-23ad114e.3221a7b1.js
  32. 0 0
      dist/static/js/chunk-25d895ef.47ef962a.js
  33. 0 0
      dist/static/js/chunk-2bafe707.90266a69.js
  34. 0 0
      dist/static/js/chunk-2c188afe.709387e2.js
  35. 0 0
      dist/static/js/chunk-2d0b9f85.c7794812.js
  36. 0 0
      dist/static/js/chunk-2e582aba.ea50037a.js
  37. 0 0
      dist/static/js/chunk-301cfd2c.44b6dd70.js
  38. 0 0
      dist/static/js/chunk-30800096.ffcca6f8.js
  39. 0 0
      dist/static/js/chunk-364c59b8.9bb76017.js
  40. 0 0
      dist/static/js/chunk-398fdb18.844a2474.js
  41. 0 0
      dist/static/js/chunk-3e171297.d826918f.js
  42. 0 0
      dist/static/js/chunk-3e99cc06.5b1fee3c.js
  43. 0 0
      dist/static/js/chunk-4044fa84.8e039512.js
  44. 0 0
      dist/static/js/chunk-431b1f36.f5d65961.js
  45. 0 0
      dist/static/js/chunk-43358ef0.4af825b4.js
  46. 0 0
      dist/static/js/chunk-43a42ee0.0509f200.js
  47. 0 0
      dist/static/js/chunk-495439dc.d5e40149.js
  48. 0 0
      dist/static/js/chunk-4a7e7044.766f26d1.js
  49. 0 0
      dist/static/js/chunk-59e20bd0.f9775a58.js
  50. 0 0
      dist/static/js/chunk-5e9c1361.75fd06d2.js
  51. 0 0
      dist/static/js/chunk-5e9eef69.d2136166.js
  52. 0 0
      dist/static/js/chunk-6099455e.f32d625e.js
  53. 0 0
      dist/static/js/chunk-63e8e558.f58d704f.js
  54. 0 0
      dist/static/js/chunk-645654f8.4c7ca39c.js
  55. 0 0
      dist/static/js/chunk-6562cc02.923721cf.js
  56. 0 0
      dist/static/js/chunk-68259a14.178b40ff.js
  57. 0 0
      dist/static/js/chunk-68b8622f.205ebfd9.js
  58. 0 0
      dist/static/js/chunk-6c931bc9.ac20caa2.js
  59. 0 0
      dist/static/js/chunk-6de39b70.fb64e3dc.js
  60. 0 0
      dist/static/js/chunk-6f9edc52.78b3cf8c.js
  61. 0 0
      dist/static/js/chunk-6fc50c24.501583ad.js
  62. 0 0
      dist/static/js/chunk-7386f3b0.a9b5e7be.js
  63. 0 0
      dist/static/js/chunk-739fed81.de716ea2.js
  64. 0 0
      dist/static/js/chunk-73bf40f8.3dc4eac5.js
  65. 0 0
      dist/static/js/chunk-73fa30ca.2c8dce46.js
  66. 0 0
      dist/static/js/chunk-76dcf6a2.4344ce8c.js
  67. 0 0
      dist/static/js/chunk-78565ab7.7a9ca994.js
  68. 0 0
      dist/static/js/chunk-787a507d.974b7fb5.js
  69. 0 0
      dist/static/js/chunk-78d00d56.5e61db8b.js
  70. 0 0
      dist/static/js/chunk-78e93c4c.ce78467a.js
  71. 0 0
      dist/static/js/chunk-7eb5956e.6eb6b21f.js
  72. 0 0
      dist/static/js/chunk-86dc7b98.ec4ce460.js
  73. 0 0
      dist/static/js/chunk-8817c994.96d9bfb0.js
  74. 0 0
      dist/static/js/chunk-9969c186.2d547c59.js
  75. 0 0
      dist/static/js/chunk-9ab42226.c4d0da51.js
  76. 0 0
      dist/static/js/chunk-b9a6167e.37c1642c.js
  77. 0 0
      dist/static/js/chunk-c2ac2236.23fef489.js
  78. 0 0
      dist/static/js/chunk-c3c77cf4.f734a95a.js
  79. 0 0
      dist/static/js/chunk-c4d77696.79fe0cce.js
  80. 0 0
      dist/static/js/chunk-c65f7f72.5ca6a82c.js
  81. 0 0
      dist/static/js/chunk-cd6b5856.b026500b.js
  82. 0 0
      dist/static/js/chunk-d393573c.6648f5c2.js
  83. 0 0
      dist/static/js/chunk-d44e0732.aaacce87.js
  84. 0 0
      dist/static/js/chunk-da63f3ae.ac752bc9.js
  85. 0 0
      dist/static/js/chunk-e31ca574.4a7747df.js
  86. 0 0
      dist/static/js/chunk-ebaa8926.d4a94746.js
  87. 0 0
      dist/static/js/chunk-ede6ad82.0aa8c17a.js
  88. 0 0
      dist/static/js/chunk-fb41c584.f40ab04a.js
  89. 12 0
      src/api/buildTeam.js
  90. 2 0
      src/components/install.js
  91. 81 0
      src/components/singe-file-upload/index.vue
  92. 4 0
      src/constant/index.js
  93. 24 4
      src/views/accompaniment/api.js
  94. 19 14
      src/views/accompaniment/index.vue
  95. 187 71
      src/views/accompaniment/modals/form.vue
  96. 82 0
      src/views/auditList/audit.vue
  97. 30 2
      src/views/auditList/index.vue
  98. 1 1
      src/views/musicInspection/modals/lookDetail.vue
  99. 49 2
      src/views/resetTeaming/components/strudentPayInfo.vue
  100. 1 0
      src/views/resetTeaming/modals/extra-class-user.vue

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/index.html


+ 0 - 1
dist/static/css/chunk-0320c3e4.87fc6880.css

@@ -1 +0,0 @@
-.number-input[data-v-e3750f40]{width:100%}.number-input[data-v-57cd9361] .el-input__inner,.number-input[data-v-e3750f40] .el-input__inner{text-align:left}.number-input[data-v-55ad3016]{width:100%}.number-input[data-v-55ad3016] .el-input__inner{text-align:left}

+ 0 - 1
dist/static/css/chunk-0fc223d0.770890c9.css

@@ -1 +0,0 @@
-.alert[data-v-3bf23a16]{margin:10px 0}.dialog-footer[data-v-290cb116]{margin-top:20px;display:block;text-align:right}.el-button--primary[data-v-2ccd281c],.el-button--primary[data-v-2ccd281c]:active,.el-button--primary[data-v-2ccd281c]:focus,.el-button--primary[data-v-2ccd281c]:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-2ccd281c] .el-date-editor.el-input,[data-v-2ccd281c] .el-select{width:100%!important}[data-v-2ccd281c] .el-table .cell{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}[data-v-2ccd281c] .el-dialog__body{padding:10px 20px}.newBand[data-v-2ccd281c]{display:inline-block}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-1d8ad956.384d6c69.css


+ 0 - 0
dist/static/css/chunk-2502bad4.90859f5c.css → dist/static/css/chunk-1eafdb0c.7cc4ba9b.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-2bafe707.eeb308ac.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-30800096.15018979.css


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-364c59b8.700ac80d.css


+ 1 - 0
dist/static/css/chunk-431b1f36.1972779a.css

@@ -0,0 +1 @@
+.alert[data-v-142acd92]{margin:10px 0}[data-v-142acd92] .el-icon-check,[data-v-142acd92] .el-icon-close{font-size:18px;font-weight:700}[data-v-142acd92] .el-icon-close{color:red}[data-v-142acd92] .el-icon-check{color:#14928a}.title[data-v-03796907]{margin-bottom:20px}.amap-demo[data-v-03796907]{height:500px}[data-v-05a1935c] .description-title{margin:0!important}

+ 0 - 1
dist/static/css/chunk-5c53d760.925ca008.css

@@ -1 +0,0 @@
-.alert[data-v-2fc363a8]{margin:10px 0}[data-v-2fc363a8] .el-icon-check,[data-v-2fc363a8] .el-icon-close{font-size:18px;font-weight:700}[data-v-2fc363a8] .el-icon-close{color:red}[data-v-2fc363a8] .el-icon-check{color:#14928a}.title[data-v-03796907]{margin-bottom:20px}.amap-demo[data-v-03796907]{height:500px}[data-v-05a1935c] .description-title{margin:0!important}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-6de39b70.59c48674.css


+ 1 - 0
dist/static/css/chunk-7386f3b0.bd68b159.css

@@ -0,0 +1 @@
+.number-input[data-v-e3750f40]{width:100%}.number-input[data-v-a10777a0] .el-input__inner,.number-input[data-v-e3750f40] .el-input__inner{text-align:left}.number-input[data-v-55ad3016]{width:100%}.number-input[data-v-55ad3016] .el-input__inner{text-align:left}

+ 0 - 1
dist/static/css/chunk-9969c186.d22b90cf.css

@@ -1 +0,0 @@
-.btns[data-v-1d89de46]{text-align:right}.remark[data-v-205f12fe]{display:inline;overflow:hidden;white-space:pre}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/css/chunk-d44e0732.783231f2.css


+ 1 - 0
dist/static/css/chunk-e31ca574.f5314971.css

@@ -0,0 +1 @@
+.alert[data-v-6d72bd00]{margin:10px 0}.dialog-footer[data-v-3a7969a6],.dialog-footer[data-v-290cb116]{margin-top:20px;display:block;text-align:right}.el-button--primary[data-v-33b2dd9b],.el-button--primary[data-v-33b2dd9b]:active,.el-button--primary[data-v-33b2dd9b]:focus,.el-button--primary[data-v-33b2dd9b]:hover{background:#14928a;border-color:#14928a;color:#fff}[data-v-33b2dd9b] .el-date-editor.el-input,[data-v-33b2dd9b] .el-select{width:100%!important}[data-v-33b2dd9b] .el-table .cell{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical}[data-v-33b2dd9b] .el-dialog__body{padding:10px 20px}.newBand[data-v-33b2dd9b]{display:inline-block}

+ 1 - 0
dist/static/css/chunk-ebaa8926.55ed36d7.css

@@ -0,0 +1 @@
+.btns[data-v-081e28b5]{text-align:right}.files[data-v-081e28b5]{background-color:#f8f8f8;padding:20px 0;padding-right:20px;margin-bottom:20px;border-radius:5px;position:relative}.files .file-remove[data-v-081e28b5]{position:absolute;right:20px;bottom:10px}.remark[data-v-70bd8f06]{display:inline;overflow:hidden;white-space:pre}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/app.0b94f60e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/app.655de774.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-00b087a6.be117936.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-0182cd82.ca6cf52c.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-018ff2e2.4024109e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-0320c3e4.e700d2e1.js


+ 0 - 0
dist/static/js/chunk-0ca85e10.ebdf958a.js → dist/static/js/chunk-0ca85e10.96dc17e2.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-0fc223d0.32a765ea.js


+ 0 - 0
dist/static/js/chunk-12525d56.4f778308.js → dist/static/js/chunk-12525d56.6c219534.js


+ 0 - 0
dist/static/js/chunk-16d5c235.8513d000.js → dist/static/js/chunk-16d5c235.3eed35ed.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-18bd2700.24adc5fc.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-1b5749db.ed72d493.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-1d8ad956.4bec71b8.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-1eafdb0c.31d6c823.js


+ 0 - 0
dist/static/js/chunk-23ad114e.9941abae.js → dist/static/js/chunk-23ad114e.3221a7b1.js


+ 0 - 0
dist/static/js/chunk-25d895ef.29aa6904.js → dist/static/js/chunk-25d895ef.47ef962a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-2bafe707.90266a69.js


+ 0 - 0
dist/static/js/chunk-2c188afe.006d7f06.js → dist/static/js/chunk-2c188afe.709387e2.js


+ 0 - 0
dist/static/js/chunk-2d0b9f85.b6d5dfb0.js → dist/static/js/chunk-2d0b9f85.c7794812.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-2e582aba.ea50037a.js


+ 0 - 0
dist/static/js/chunk-301cfd2c.a43b43b3.js → dist/static/js/chunk-301cfd2c.44b6dd70.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-30800096.ffcca6f8.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-364c59b8.9bb76017.js


+ 0 - 0
dist/static/js/chunk-398fdb18.3952e5f9.js → dist/static/js/chunk-398fdb18.844a2474.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-3e171297.d826918f.js


+ 0 - 0
dist/static/js/chunk-3e99cc06.6a0b3348.js → dist/static/js/chunk-3e99cc06.5b1fee3c.js


+ 0 - 0
dist/static/js/chunk-4044fa84.ae53bcd9.js → dist/static/js/chunk-4044fa84.8e039512.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-431b1f36.f5d65961.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-43358ef0.4af825b4.js


+ 0 - 0
dist/static/js/chunk-43a42ee0.97566efb.js → dist/static/js/chunk-43a42ee0.0509f200.js


+ 0 - 0
dist/static/js/chunk-495439dc.7617f099.js → dist/static/js/chunk-495439dc.d5e40149.js


+ 0 - 0
dist/static/js/chunk-4a7e7044.42a4b8f7.js → dist/static/js/chunk-4a7e7044.766f26d1.js


+ 0 - 0
dist/static/js/chunk-59e20bd0.c0c4d2cb.js → dist/static/js/chunk-59e20bd0.f9775a58.js


+ 0 - 0
dist/static/js/chunk-5e9c1361.32a63bcb.js → dist/static/js/chunk-5e9c1361.75fd06d2.js


+ 0 - 0
dist/static/js/chunk-5e9eef69.fbb6b10f.js → dist/static/js/chunk-5e9eef69.d2136166.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-6099455e.f32d625e.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-63e8e558.f58d704f.js


+ 0 - 0
dist/static/js/chunk-645654f8.1432ac63.js → dist/static/js/chunk-645654f8.4c7ca39c.js


+ 0 - 0
dist/static/js/chunk-6562cc02.689e70a7.js → dist/static/js/chunk-6562cc02.923721cf.js


+ 0 - 0
dist/static/js/chunk-68259a14.7c9f5e2d.js → dist/static/js/chunk-68259a14.178b40ff.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-68b8622f.205ebfd9.js


+ 0 - 0
dist/static/js/chunk-6c931bc9.3e6667fa.js → dist/static/js/chunk-6c931bc9.ac20caa2.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-6de39b70.fb64e3dc.js


+ 0 - 0
dist/static/js/chunk-6f9edc52.097ec890.js → dist/static/js/chunk-6f9edc52.78b3cf8c.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-6fc50c24.501583ad.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-7386f3b0.a9b5e7be.js


+ 0 - 0
dist/static/js/chunk-739fed81.c2c36449.js → dist/static/js/chunk-739fed81.de716ea2.js


+ 0 - 0
dist/static/js/chunk-73bf40f8.2bfe9e00.js → dist/static/js/chunk-73bf40f8.3dc4eac5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-73fa30ca.2c8dce46.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-76dcf6a2.4344ce8c.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-78565ab7.7a9ca994.js


+ 0 - 0
dist/static/js/chunk-787a507d.9ffc2b07.js → dist/static/js/chunk-787a507d.974b7fb5.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-78d00d56.5e61db8b.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-78e93c4c.ce78467a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-7eb5956e.6eb6b21f.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-86dc7b98.ec4ce460.js


+ 0 - 0
dist/static/js/chunk-8817c994.ea648784.js → dist/static/js/chunk-8817c994.96d9bfb0.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-9969c186.2d547c59.js


+ 0 - 0
dist/static/js/chunk-9ab42226.9768d8e5.js → dist/static/js/chunk-9ab42226.c4d0da51.js


+ 0 - 0
dist/static/js/chunk-b9a6167e.b0ac28e4.js → dist/static/js/chunk-b9a6167e.37c1642c.js


+ 0 - 0
dist/static/js/chunk-c2ac2236.282698db.js → dist/static/js/chunk-c2ac2236.23fef489.js


+ 0 - 0
dist/static/js/chunk-c3c77cf4.dfd96ed4.js → dist/static/js/chunk-c3c77cf4.f734a95a.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-c4d77696.79fe0cce.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-c65f7f72.5ca6a82c.js


+ 0 - 0
dist/static/js/chunk-cd6b5856.283713e3.js → dist/static/js/chunk-cd6b5856.b026500b.js


+ 0 - 0
dist/static/js/chunk-d393573c.f621b24f.js → dist/static/js/chunk-d393573c.6648f5c2.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-d44e0732.aaacce87.js


+ 0 - 0
dist/static/js/chunk-da63f3ae.964e7465.js → dist/static/js/chunk-da63f3ae.ac752bc9.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-e31ca574.4a7747df.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-ebaa8926.d4a94746.js


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 0
dist/static/js/chunk-ede6ad82.0aa8c17a.js


+ 0 - 0
dist/static/js/chunk-fb41c584.940fb117.js → dist/static/js/chunk-fb41c584.f40ab04a.js


+ 12 - 0
src/api/buildTeam.js

@@ -1490,3 +1490,15 @@ export function spanGroupMergeClassSplitClassAffirm(data) {
     data:data
   })
 }
+
+// 发送缴费提醒
+export function sendWaitRenewMessage(data) {
+  return request2({
+    url: api + `/musicGroupPaymentCalenderDetail/sendWaitRenewMessage`,
+    method: 'post',
+    requestType:'form',
+    params:{},
+    data:data
+  })
+}
+

+ 2 - 0
src/components/install.js

@@ -17,6 +17,7 @@ import empty from '@/components/empty'
 import autoHeight from '@/components/auto-height'
 import auth from '@/components/Auth'
 import filterSearch from '@/components/filter-search'
+import singeFileUpload from '@/components/singe-file-upload'
 
 export default {
   install(Vue) {
@@ -34,5 +35,6 @@ export default {
     Vue.component(autoHeight.name, autoHeight)
     Vue.component(auth.name, auth)
     Vue.component(filterSearch.name, filterSearch)
+    Vue.component(singeFileUpload.name, singeFileUpload)
   }
 }

+ 81 - 0
src/components/singe-file-upload/index.vue

@@ -0,0 +1,81 @@
+<template>
+  <el-upload
+    action="/api-web/uploadFile"
+    :headers="headers"
+    :on-success="success"
+    :on-remove="remove"
+    :on-error="error"
+    :limit="1"
+    :file-list="filelist"
+    :accept="accept">
+    <el-button size="small" type="primary" plain>点击上传</el-button>
+    <div slot="tip" v-if="tips" class="el-upload__tip">{{tips}}</div>
+  </el-upload>
+</template>
+
+<script>
+import { getToken } from '@/utils/auth'
+export default {
+  name: 'singe-file-upload',
+  props: {
+    tips: {
+      type: String,
+      default: ''
+    },
+    value: {
+      type: String,
+      default: ''
+    },
+    accept: {
+      type: String,
+      default: ''
+    }
+  },
+  watch: {
+    value: {
+      handler() {
+        if (this.value) {
+          this.filelist = [{
+            name: this.value,
+            url: this.value,
+          }]
+        } else {
+          this.remove()
+        }
+      },
+      immediate: true
+    }
+  },
+  data() {
+    return {
+      filelist: [],
+      headers: {
+        Authorization: getToken()
+      },
+    }
+  },
+  methods: {
+    remove() {
+      this.filelist = []
+      this.$emit('update:value', '')
+      this.$emit('input', '')
+    },
+    error() {
+      this.remove()
+    },
+    success(res) {
+      if (res.code == 200) {
+        this.filelist = [{
+          name: res.data.url,
+          url: res.data.url,
+        }]
+        this.$emit('update:value', res.data.url)
+        this.$emit('input', res.data.url)
+      } else {
+        this.remove()
+        this.$message.error(res.msg || '上传失败')
+      }
+    },
+  }
+}
+</script>

+ 4 - 0
src/constant/index.js

@@ -224,3 +224,7 @@ export const packageStatus = {
   1: '可用',
   2: '已使用',
 }
+
+// export const musicScoreCategoriesId = [
+//   ''
+// ]

+ 24 - 4
src/views/accompaniment/api.js

@@ -2,7 +2,7 @@ import request from '@/utils/request2'
 
 export const QueryPage = params => {
   return request({
-    url: '/api-web/sysExamSong/queryPage',
+    url: '/api-web/sysMusicScore/queryPage',
     data: {},
     params,
     requestType: 'form'
@@ -11,7 +11,7 @@ export const QueryPage = params => {
 
 export const Add = data => {
   return request({
-    url: '/api-web/sysExamSong/add',
+    url: '/api-web/sysMusicScore/add',
     method: 'post',
     data,
     params: {},
@@ -20,18 +20,38 @@ export const Add = data => {
 
 export const Update = data => {
   return request({
-    url: '/api-web/sysExamSong/update',
+    url: '/api-web/sysMusicScore/update',
     method: 'post',
     data,
     params: {},
   })
 }
 
+export const queryPageSysExam = data => {
+  return request({
+    url: '/api-web/sysMusicScoreAccompaniment/queryPage',
+    method: 'get',
+    params: data,
+  })
+}
+
 export const Del = id => {
   return request({
-    url: '/api-web/sysExamSong/del/' + id,
+    url: '/api-web/sysMusicScore/del',
     method: 'post',
     data: {},
+    params: {
+      id
+    },
+    requestType: 'form'
+  })
+}
+
+export const queryTree = () => {
+  return request({
+    url: '/api-web/sysMusicScoreCategories/queryTree',
+    method: 'get',
+    data: {},
     params: {},
     requestType: 'form'
   })

+ 19 - 14
src/views/accompaniment/index.vue

@@ -4,8 +4,8 @@
       <div class="squrt"></div>教学伴奏
     </h2>
     <div class="m-core">
-      <el-button @click="open('COMMON')" type="primary" v-permission="'sysExamSong/add'">添加公用伴奏</el-button>
-      <!-- <el-button @click="open('PERSON')" type="primary" v-permission="'sysExamSong/add'">添加个人伴奏</el-button> -->
+      <el-button @click="open('COMMON')" type="primary" v-permission="'sysMusicScore/add'">添加公用伴奏</el-button>
+      <!-- <el-button @click="open('PERSON')" type="primary" v-permission="'sysMusicScore/add'">添加个人伴奏</el-button> -->
       <saveform ref="searchForm" :model.sync="searchForm" inline style="margin-top: 20px">
         <el-form-item prop="search">
           <el-input v-model="searchForm.search" clearable placeholder="伴奏编号/伴奏名称"/>
@@ -20,11 +20,11 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item prop="subjectId">
+        <!-- <el-form-item prop="subjectId">
           <el-select v-model="searchForm.subjectId" clearable filterable placeholder="请选择声部">
             <el-option v-for="item in selects.subjects" :value="item.id" :label="item.name" :key="item.id"></el-option>
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-button @click="submit" type="primary">搜索</el-button>
         <el-button @click="reset" type="danger">重置</el-button>
       </saveform>
@@ -36,7 +36,7 @@
         <el-table-column
           align="center"
           prop="id"
-          label="伴奏编号"
+          label="编号"
         >
                 <template slot-scope="scope">
               <div>
@@ -44,11 +44,10 @@
               </div>
             </template>
         </el-table-column>
-        </el-table-column>
         <el-table-column
           align="center"
           prop="name"
-          label="伴奏名称"
+          label="名称"
           width="180px"
         >
          <template slot-scope="scope">
@@ -66,7 +65,7 @@
             {{scope.row.type | songUseTypeFormat}}
           </template>
         </el-table-column>
-        <el-table-column
+        <!-- <el-table-column
           align="center"
           prop="subjectNames"
           label="声部"
@@ -82,6 +81,12 @@
           align="center"
           prop="speed"
           label="速度"
+        /> -->
+        <el-table-column
+          align="center"
+          prop="categoriesName"
+          label="分类"
+          width="180px"
         />
         <el-table-column
           align="center"
@@ -108,11 +113,11 @@
             >播放</el-button>
             <el-button type="text"
               @click="edit(scope.row)"
-              v-permission="'sysExamSong/update'"
+              v-permission="'sysMusicScore/update'"
             >修改</el-button>
             <el-button type="text"
               @click="remove(scope.row)"
-              v-permission="'sysExamSong/del'"
+              v-permission="'sysMusicScore/del'"
             >删除</el-button>
           </template>
         </el-table-column>
@@ -126,16 +131,16 @@
         @pagination="FetchList"
       />
     </div>
-    <el-dialog width="400px" :visible.sync="audioVisible" title="播放伴奏">
-      <audio v-if="audioVisible" style="display: block; margin: auto" controls :src="activeUrl"/>
+    <el-dialog v-if="audioVisible" width="400px" :visible.sync="audioVisible" title="播放伴奏">
+      <audio style="display: block; margin: auto" controls :src="activeUrl"/>
     </el-dialog>
     <el-dialog
       :title="title"
       :visible.sync="visible"
-      width="500px"
+      width="700px"
+      v-if="visible"
     >
       <submit-form
-        v-if="visible"
         :detail="detail"
         :type="type"
         @submited="FetchList"

+ 187 - 71
src/views/accompaniment/modals/form.vue

@@ -2,45 +2,98 @@
   <div>
     <el-form ref="form" :model="form" label-width="100px">
       <el-form-item
-        prop="name"
-        label="伴奏名称"
-        :rules="[{required: true, message: '请输入伴奏名称'}]"
+        prop="sysMusicScore.name"
+        label="曲名"
+        :rules="[{required: true, message: '请输入曲名'}]"
       >
-        <el-input placeholder="请输入伴奏名称" v-model="form.name"/>
+        <el-input placeholder="请输入曲名" v-model="form.sysMusicScore.name"/>
       </el-form-item>
       <el-form-item
-        prop="subjectIds"
-        label="伴奏声部"
-        :rules="[{required: true, message: '请选择伴奏声部'}]"
+        prop="sysMusicScore.musicScoreCategoriesId"
+        label="分类"
+        :rules="[{required: true, message: '请选择分类'}]"
       >
-        <el-select style="width: 100%!important;" collapse-tags multiple v-model="form.subjectIds" placeholder="请选择伴奏声部">
-          <el-option v-for="item in selects.subjects" :value="String(item.id)" :label="item.name" :key="item.id"></el-option>
-        </el-select>
+      <el-cascader v-model="form.sysMusicScore.musicScoreCategoriesId"
+                    style="width:100%"
+                    :options="tree"
+                     placeholder="请选择分类"
+                    :props="treeProps"></el-cascader>
+        <!-- <el-select style="width: 100%!important;" v-model="form.sysMusicScore.musicScoreCategoriesId" placeholder="请选择声部">
+          <el-option
+            v-for="item in selects.subjects"
+            :value="item.id"
+            :label="item.name"
+            :key="item.id"
+          ></el-option>
+        </el-select> -->
       </el-form-item>
       <el-form-item
-        prop="speed"
-        label="伴奏速度"
-        :rules="[{required: true, message: '请输入伴奏速度'}]"
+        label="原音"
+        prop="sysMusicScore.url"
       >
-        <el-input type="number" placeholder="请输入伴奏速度" v-model="form.speed"/>
-      </el-form-item>
-      <el-form-item
-        label="伴奏文件"
-        prop="url"
-        :rules="[{required: true, message: '请选择伴奏文件'}]"
-      >
-        <el-upload
-          action="/api-web/uploadFile"
-          :headers="headers"
-          :on-success="success"
-          :on-remove="remove"
-          :limit="1"
-          :file-list="filelist"
-          accept=".mp3, .aac">
-          <el-button size="small" type="primary" plain>点击上传</el-button>
-          <div slot="tip" class="el-upload__tip">仅支持上传 mp3/aac 格式音频文件</div>
-        </el-upload>
+        <singe-file-upload
+          tips="仅支持上传 mp3/aac 格式音频文件"
+          accept=".mp3, .aac"
+          v-model="form.sysMusicScore.url"
+        />
       </el-form-item>
+      <div class="files" v-for="(song, index) in form.sysMusicScoreAccompaniments" :key="index">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item
+              :prop="`sysMusicScoreAccompaniments.${index}.subjectId`"
+              label="声部"
+              :rules="[{required: true, message: '请选择声部'}]"
+            >
+              <el-select style="width: 100%!important;" v-model="song.subjectId" placeholder="请选择声部">
+                <el-option
+                  v-for="item in selects.subjects"
+                  :value="item.id"
+                  :label="item.name"
+                  :key="item.id"
+                  :disabled="hasSubjectId(item.id)"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              :prop="`sysMusicScoreAccompaniments.${index}.speed`"
+              label="速度"
+              :rules="[{required: true, message: '请输入速度'}]"
+            >
+              <el-input type="number" placeholder="请输入速度" v-model="song.speed"/>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="mp3文件"
+              :prop="`sysMusicScoreAccompaniments.${index}.mp3Url`"
+            >
+              <singe-file-upload
+                tips="仅支持上传 mp3/aac 格式音频文件"
+                accept=".mp3, .aac"
+                v-model="song.mp3Url"
+              />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item
+              label="MusicXML"
+              :prop="`sysMusicScoreAccompaniments.${index}.xmlUrl`"
+              :rules="[{required: true, message: '请选择MusicXML文件'}]"
+            >
+              <singe-file-upload
+                tips="仅支持上传 xml 格式文件"
+                accept=".xml"
+                v-model="song.xmlUrl"
+              />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-button class="file-remove" type="text" @click="removeSys(index)" :disabled="form.sysMusicScoreAccompaniments.length == 1">删除</el-button>
+      </div>
+      <el-button @click="createSys" type="info" style="width: 100%;margin-bottom: 20px;" plain>添加伴奏</el-button>
       <div class="btns">
         <el-button type="primary" @click="submit">提交</el-button>
         <el-button @click="$listeners.close">取消</el-button>
@@ -49,57 +102,101 @@
   </div>
 </template>
 <script>
-import { getToken } from "@/utils/auth"
-import { Add, Update } from '../api'
+import { Add, Update, queryPageSysExam, queryTree } from '../api'
 export default {
   props: ['detail', 'type'],
   data() {
     return {
-      headers: {
-        Authorization: getToken()
-      },
-      filelist: [],
+      tree: [],
       form: {
-        name: '',
-        subjectIds: [],
-        speed: '',
-        url: ''
+        sysMusicScore: {
+          name: '',
+          url: '',
+          musicScoreCategoriesId: [],
+        },
+        sysMusicScoreAccompaniments: [
+          {
+            subjectId: '',
+            speed: '',
+            mp3Url: '',
+            xmlUrl: ''
+          },
+        ],
+        delExamSongAccompanimentIds: []
+      },
+      treeProps: {
+        value: 'id',
+        label: 'name',
+        children: 'sysMusicScoreCategoriesList',
       }
     }
   },
-  mounted() {
+  async mounted() {
     this.$store.dispatch('setSubjects')
+    await this.FetchTree()
     if (this.detail) {
-      for (const key in this.form) {
-        if (this.form.hasOwnProperty(key)) {
-          if (key === 'subjectIds') {
-            this.$set(this.form, 'subjectIds', (this.detail[key] || '').split(','))
-          } else {
-            this.$set(this.form, key, this.detail[key])
-          }
-        }
-      }
-      this.filelist = [{
-        name: this.detail.url,
+      this.$set(this.form, 'sysMusicScore', {
+        name: this.detail.name,
         url: this.detail.url,
-      }]
+        musicScoreCategoriesId: this.detail.categoriesId ? this.formatParentId(this.detail.categoriesId, this.tree) : [],
+      })
+      this.FeatchDetailList()
     }
   },
   methods: {
-    remove() {
-      this.filelist = []
-      this.$set(this.form, 'url', '')
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.sysMusicScoreCategoriesList) {
+          return this.formatParentId(id, item.sysMusicScoreCategoriesList, [...ids, item.id])
+        }
+        if (item.id === id) {
+          return [...ids, id]
+        }
+      }
+      return ids
+    },
+    async FetchTree() {
+      try {
+        const res = await queryTree()
+        this.tree = res.data
+      } catch (error) {
+        console.log(error)
+      }
+    },
+    async FeatchDetailList() {
+      try {
+        const res = await queryPageSysExam({
+          sysMusicScoreId: this.detail.id
+        })
+        this.$set(this.form, 'sysMusicScoreAccompaniments', res.data)
+      } catch (error) {}
+    },
+    createSys() {
+      this.form.sysMusicScoreAccompaniments.push({
+        subjectId: '',
+        speed: '',
+        mp3Url: '',
+        xmlUrl: ''
+      })
+    },
+    async removeSys(index) {
+      try {
+        await this.$confirm('是否确认删除此伴奏?', '提示', {
+          type: 'warning'
+        })
+        if (this.form.sysMusicScoreAccompaniments[index]) {
+          this.form.delExamSongAccompanimentIds.push(this.form.sysMusicScoreAccompaniments[index].id)
+        }
+
+        this.form.sysMusicScoreAccompaniments.splice(index, 1)
+      } catch (error) {}
     },
-    success(res) {
-      if (res.code == 200) {
-        this.filelist = [{
-          name: res.data.url,
-          url: res.data.url,
-        }]
-        this.$set(this.form, 'url', res.data.url)
-      } else {
-        this.$message.error(res.msg || '上传失败')
+    hasSubjectId(id) {
+      const ids = []
+      for (const item of this.form.sysMusicScoreAccompaniments) {
+        ids.push(item.subjectId)
       }
+      return ids.includes(id)
     },
     async submit() {
       this.$refs.form.validate(async (valid) => {
@@ -107,16 +204,22 @@ export default {
           if (!this.detail) {
             await Add({
               ...this.form,
-              subjectIds: this.form.subjectIds.join(','),
-              type: 'COMMON',
+              sysMusicScore: {
+                ...this.form.sysMusicScore,
+                type: 'COMMON',
+                musicScoreCategoriesId: (this.form.sysMusicScore.musicScoreCategoriesId || []).pop(),
+              }
             })
             this.$message.success('提交成功')
           } else {
             await Update({
               ...this.form,
-              subjectIds: this.form.subjectIds.join(','),
-              type: this.detail.type,
-              id: this.detail.id
+              sysMusicScore: {
+                ...this.form.sysMusicScore,
+                type: 'COMMON',
+                id: this.detail.id,
+                musicScoreCategoriesId: (this.form.sysMusicScore.musicScoreCategoriesId || []).pop(),
+              }
             })
             this.$message.success('修改成功')
           }
@@ -132,4 +235,17 @@ export default {
   .btns{
     text-align: right;
   }
+  .files{
+    background-color: #f8f8f8;
+    padding: 20px 0;
+    padding-right: 20px;
+    margin-bottom: 20px;
+    border-radius: 5px;
+    position: relative;
+    .file-remove{
+      position: absolute;
+      right: 20px;
+      bottom: 10px;
+    }
+  }
 </style>

+ 82 - 0
src/views/auditList/audit.vue

@@ -0,0 +1,82 @@
+<template>
+  <div>
+    <el-alert style="margin: 20px 0;"
+              title="审核意见"
+              :closable="false"
+              class="alert"
+              type="info">
+    </el-alert>
+    <el-input type="textarea"
+              :autosize="{ minRows: 2, maxRows: 4 }"
+              placeholder="请输入审核意见"
+              v-model="remark">
+    </el-input>
+    <div slot="footer"
+         class="dialog-footer">
+      <!-- <el-button @click="$listeners.close">取 消</el-button> -->
+      <el-button type="primary"
+                 @click="submit(1)"
+                 v-if="permission('musicGroupPaymentCalender/auditPass')">审核通过</el-button>
+      <el-button type="danger"
+                 @click="submit(0)"
+                 v-if="permission('musicGroupPaymentCalender/auditRefuse')">驳回</el-button>
+      <el-button @click="$emit('close')">关 闭</el-button>
+    </div>
+  </div>
+</template>
+<script>
+import { permission } from '@/utils/directivePage'
+import { auditPass, auditRefuse } from "@/api/auditManager";
+export default {
+  props: ["selList"],
+  data () {
+    return {
+      remark: "",
+    };
+  },
+  methods: {
+    async submit (val) {
+      if (!this.remark) {
+        return this.$message.error("请输入审核意见");
+      }
+      if (val) {
+        try {
+          await this.$confirm('是否确认批量审核通过', '提示', {
+            type: 'warning'
+          })
+          await auditPass({ batchNo: this.selList.map(item => item.batchNo).join(','), auditMemo: this.remark }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success('批量审核通过')
+              this.$emit('close')
+              this.$emit('submited')
+            }
+          });
+        } catch (error) {}
+      } else {
+        try {
+          await this.$confirm('是否确认批量驳回', '提示', {
+            type: 'warning'
+          })
+          await auditRefuse({ batchNo: this.selList.map(item => item.batchNo).join(','), auditMemo: this.remark }).then((res) => {
+            if (res.code == 200) {
+              this.$message.success('批量驳回成功')
+              this.$emit('close')
+              this.$emit('submited')
+            }
+          });
+        } catch (error) {}
+      }
+    },
+    permission (str) {
+      return permission(str)
+    }
+  },
+};
+</script>
+<style lang="less" scoped>
+.dialog-footer {
+  margin-top: 20px;
+  display: block;
+  text-align: right;
+}
+</style>

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

@@ -72,14 +72,21 @@
         <el-form-item>
           <el-button @click="search" type="primary">搜索</el-button>
           <el-button @click="reset" type="danger">重置</el-button>
+          <el-button
+              v-permission="'musicGroupPaymentCalender/auditPass'"
+             @click="typesStatus = true"
+             :disabled='!selList.length>0'
+              type="primary"
+              >批量审核</el-button>
         </el-form-item>
       </save-form>
       <div class="tableWrap">
         <el-table
           :data="tableList"
           :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          @selection-change="handleSelectionChange"
         >
-          <!-- <el-table-column type="selection" width="55"></el-table-column> -->
+          <el-table-column fixed="left" type="selection" width="55" :selectable="selectable"></el-table-column>
           <el-table-column align="center" prop="organName" label="分部名称">
             <template slot-scope="scope">
               <copy-text>{{ scope.row.organName }}</copy-text>
@@ -233,11 +240,20 @@
     >
       <review :detail="detail" @close="close" />
     </el-dialog>
+    <el-dialog
+      title="批量审核"
+      width="700px"
+      :visible.sync="typesStatus"
+      destroy-on-close
+    >
+      <audit :selList="selList" @close="typesStatus = false" @submited="submited" />
+    </el-dialog>
   </div>
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
 import review from "@/views/resetTeaming/modals/review.vue";
+import audit from "./audit.vue";
 // import store from '@/store'
 import { getAuditList, getAuditListDetail } from "@/api/auditManager";
 import { getEmployeeOrgan } from "@/api/buildTeam";
@@ -251,10 +267,12 @@ const initSearch = {
   organId: null,
 };
 export default {
-  components: { pagination, Tooltip, review },
+  components: { pagination, Tooltip, review, audit },
   name: "helpCategory",
   data() {
     return {
+      typesStatus: false,
+      selList: [],
       paymentTypeList: auditPaymentTypeList,
       organList: [],
       statusList: auditTypeList,
@@ -277,6 +295,9 @@ export default {
     this.getList();
   },
   methods: {
+    selectable(row, index) {
+      return row.auditStatus == 'AUDITING';
+    },
     search() {
       this.pageInfo.page = 1;
       this.$refs.searchForm.save(this.searchForm);
@@ -287,6 +308,9 @@ export default {
       this.searchForm = { ...initSearch };
       this.search();
     },
+    handleSelectionChange(arr){
+      this.selList = arr;
+    },
     getList() {
       let params = {
         page: this.pageInfo.page,
@@ -312,6 +336,10 @@ export default {
       };
       this.typeStatus = true;
     },
+    submited() {
+      this.pageInfo.page = 1
+      this.getList()
+    },
     close() {
       this.typeStatus = false;
       this.getList();

+ 1 - 1
src/views/musicInspection/modals/lookDetail.vue

@@ -115,7 +115,7 @@
           prop="11"
           width="160px"
           align="center"
-          label="是否发现学员需要更换新乐器"
+          label="未发现私换乐器"
         >
           <template slot-scope="scope">
             <i :class="scope.row[11] == 1 ? 'el-icon-check' : 'el-icon-close'"></i>

+ 49 - 2
src/views/resetTeaming/components/strudentPayInfo.vue

@@ -186,7 +186,13 @@
         >
           开启缴费
         </div>
-
+        <div
+          class="newBand"
+          @click="payRemind"
+          v-permission="'musicGroupPaymentCalenderDetail/sendWaitRenewMessage'"
+        >
+          缴费提醒
+        </div>
         <!-- <div
           class="newBand"
           @click="addStudentBtn"
@@ -447,6 +453,7 @@ import {
   queryCanAddStudent,
   addMusicGroupPaymentCalenderStudent,
   delMusicGroupPaymentCalenderStudent,
+  sendWaitRenewMessage
 } from "@/api/buildTeam";
 
 export default {
@@ -610,7 +617,7 @@ export default {
           path: "/business/resetTeaming",
           query: { ...this.$route.query },
         });
-      } else if(query.type == 'look') {
+      } else if (query.type == "look") {
         this.$store.dispatch("delVisitedViews", this.$route);
         this.$router.push({
           path: "/business/teamLookBase",
@@ -783,6 +790,46 @@ export default {
       this.$refs.singleTable.setCurrentRow(row);
       this.studentVisible = false;
     },
+    payRemind(){
+       console.log()
+       if(this.activeChiose.length<=0){
+         this.$message.error('请至少选择一名学员')
+         return
+       }
+       let submitArr = [];
+       let msgArr = '';
+       let str = ''
+       this.activeChiose.forEach(item=>{
+         if(item.open){
+           submitArr.push(item.userId)
+         }else{
+           msgArr+=item?.sysUser?.username+','
+         }
+       })
+       console.log(submitArr,msgArr)
+
+       if(msgArr){
+         str=`${msgArr}未开启缴费无法提醒`
+       }else{
+         str='是否发送提醒'
+       }
+      this.$confirm(str, '提示', {
+          confirmButtonText: '确定',
+          cancelButtonText: '取消',
+          type: 'warning'
+        }).then(async() => {
+          try{
+            const res = await sendWaitRenewMessage({studentIds:submitArr.join(','),calenderId:this.$route.query.paymentId})
+            this.$message.success('提醒成功')
+            this.getList()
+          }catch(e){
+
+          }
+        }).catch(() => {
+
+        });
+
+    }
   },
   watch: {
     payVisible(val) {

+ 1 - 0
src/views/resetTeaming/modals/extra-class-user.vue

@@ -6,6 +6,7 @@
     <el-table
       :data="form"
       style="width: 100%;text-alogn: center;"
+      :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
     >
       <el-table-column
         label="学员姓名"

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác