Browse Source

Merge branch 'master' into wxl

lex-xin 5 years ago
parent
commit
3972ae74af
100 changed files with 309 additions and 86 deletions
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.16a8938f.css
  3. 0 0
      dist/static/css/chunk-07391f45.5e6d5b07.css
  4. 1 1
      dist/static/css/chunk-098565e5.07131c65.css
  5. 1 1
      dist/static/css/chunk-12d1c276.14b08d39.css
  6. 0 0
      dist/static/css/chunk-1d05f6ba.b7144abf.css
  7. 0 0
      dist/static/css/chunk-252f70e1.8ea4e2d3.css
  8. 0 0
      dist/static/css/chunk-2ac487e6.e9f8df38.css
  9. 1 1
      dist/static/css/chunk-2bbe03f0.d799bdce.css
  10. 0 1
      dist/static/css/chunk-2c7693d9.5b722d11.css
  11. 1 0
      dist/static/css/chunk-3ca8c553.6073580d.css
  12. 0 0
      dist/static/css/chunk-54726652.b7765e4f.css
  13. 0 0
      dist/static/css/chunk-5dbf7449.7f1299ec.css
  14. 0 0
      dist/static/css/chunk-6541442b.a533dced.css
  15. 1 0
      dist/static/css/chunk-6fc5fb95.238fed97.css
  16. 0 0
      dist/static/css/chunk-7cfc4d3d.2c3312fb.css
  17. 1 1
      dist/static/css/chunk-7da5a291.e3098977.css
  18. 1 0
      dist/static/css/chunk-9808b29c.d25d6733.css
  19. 1 1
      dist/static/css/chunk-d1e61f0e.864d2ebe.css
  20. 0 0
      dist/static/css/chunk-f8144e84.003c0546.css
  21. 0 0
      dist/static/css/chunk-libs.3dfb7769.css
  22. 0 0
      dist/static/js/app.0266558d.js
  23. 0 0
      dist/static/js/app.8a2fad40.js
  24. 0 0
      dist/static/js/chunk-0040b65a.4d296155.js
  25. 0 0
      dist/static/js/chunk-0040b65a.a7261160.js
  26. 0 0
      dist/static/js/chunk-046f506a.64ee0caf.js
  27. 0 0
      dist/static/js/chunk-07391f45.5194fbf9.js
  28. 0 0
      dist/static/js/chunk-09753c97.0f58e78b.js
  29. 0 0
      dist/static/js/chunk-09753c97.6f376881.js
  30. 0 0
      dist/static/js/chunk-098565e5.9c2968a6.js
  31. 0 0
      dist/static/js/chunk-12d1c276.3bf4172b.js
  32. 0 0
      dist/static/js/chunk-13cc5d62.e0098643.js
  33. 0 0
      dist/static/js/chunk-16f87310.75c1ce9d.js
  34. 0 0
      dist/static/js/chunk-1c9ae0ee.411e59ec.js
  35. 0 0
      dist/static/js/chunk-231926cd.35ca57f7.js
  36. 0 1
      dist/static/js/chunk-252f70e1.cd6522c7.js
  37. 0 0
      dist/static/js/chunk-2ac487e6.0a8f87ba.js
  38. 0 0
      dist/static/js/chunk-2bbe03f0.28e05983.js
  39. 0 0
      dist/static/js/chunk-2c7693d9.ba7cb7ad.js
  40. 0 0
      dist/static/js/chunk-35d7984f.8fae306e.js
  41. 0 0
      dist/static/js/chunk-3661e960.56955d8e.js
  42. 0 0
      dist/static/js/chunk-3ca8c553.2326615c.js
  43. 0 0
      dist/static/js/chunk-3d78ba52.f96f6ea5.js
  44. 0 0
      dist/static/js/chunk-3fef4f99.374c51d3.js
  45. 0 0
      dist/static/js/chunk-40e665d1.991aa3a7.js
  46. 0 0
      dist/static/js/chunk-415e29c8.2740466b.js
  47. 0 0
      dist/static/js/chunk-419ce36c.67638345.js
  48. 0 0
      dist/static/js/chunk-41f382a0.4f05a251.js
  49. 0 0
      dist/static/js/chunk-46234199.338ba2ff.js
  50. 0 0
      dist/static/js/chunk-529acf22.1d270029.js
  51. 0 0
      dist/static/js/chunk-529acf22.508b5f98.js
  52. 0 0
      dist/static/js/chunk-54726652.09706089.js
  53. 1 0
      dist/static/js/chunk-5dbf7449.54e5d275.js
  54. 0 0
      dist/static/js/chunk-6181ddae.87892025.js
  55. 0 0
      dist/static/js/chunk-64c33787.35b6ce91.js
  56. 0 0
      dist/static/js/chunk-6541442b.a54124e8.js
  57. 0 0
      dist/static/js/chunk-6562cc02.721de017.js
  58. 0 0
      dist/static/js/chunk-68259a14.f084983f.js
  59. 0 0
      dist/static/js/chunk-6c42ea8e.ab980d0b.js
  60. 0 0
      dist/static/js/chunk-6fc5fb95.e552019f.js
  61. 0 0
      dist/static/js/chunk-7a0e4919.13525efd.js
  62. 0 0
      dist/static/js/chunk-7cfc4d3d.96b7076b.js
  63. 0 0
      dist/static/js/chunk-7da5a291.567006c2.js
  64. 0 0
      dist/static/js/chunk-8752c0de.6975b639.js
  65. 0 0
      dist/static/js/chunk-8752c0de.7bfb1d6b.js
  66. 0 0
      dist/static/js/chunk-90bc8dd8.9737381b.js
  67. 0 0
      dist/static/js/chunk-9808b29c.39190767.js
  68. 0 0
      dist/static/js/chunk-a9a6c8fe.c9d6cd38.js
  69. 0 0
      dist/static/js/chunk-af2aa50e.b86a72b6.js
  70. 0 0
      dist/static/js/chunk-bb579d98.72e876d3.js
  71. 0 0
      dist/static/js/chunk-bc672cf4.8342c993.js
  72. 0 0
      dist/static/js/chunk-bc672cf4.a71b45d0.js
  73. 0 0
      dist/static/js/chunk-c7045f8e.ce6c6664.js
  74. 0 0
      dist/static/js/chunk-d1e61f0e.6f47df00.js
  75. 0 0
      dist/static/js/chunk-d576a10e.96f5cb44.js
  76. 0 0
      dist/static/js/chunk-edcf4054.1a77fce9.js
  77. 0 0
      dist/static/js/chunk-f4f6bc24.ff3a8750.js
  78. 0 0
      dist/static/js/chunk-f8144e84.9fec2c48.js
  79. 0 0
      dist/static/js/chunk-fac7eb14.488862b3.js
  80. BIN
      dy-admin-dev.zip
  81. 36 0
      src/api/buildTeam.js
  82. 2 0
      src/layout/components/Sidebar/index.vue
  83. 7 4
      src/router/index.js
  84. 4 0
      src/utils/request.js
  85. 2 1
      src/utils/searchArray.js
  86. 2 1
      src/utils/vueFilter.js
  87. 6 6
      src/views/404.vue
  88. 69 7
      src/views/buildVip/index.vue
  89. 9 1
      src/views/businessManager/orderManager/income.vue
  90. 11 1
      src/views/businessManager/orderManager/incomeOne.vue
  91. 9 1
      src/views/businessManager/orderManager/incomeTwo.vue
  92. 2 2
      src/views/businessManager/shopManager/shopOperation.vue
  93. 7 1
      src/views/categroyManager/vipActiveList.vue
  94. 6 1
      src/views/categroyManager/vipNewActive.vue
  95. 2 2
      src/views/journal/studentComplain.vue
  96. 31 6
      src/views/resetTeaming/components/resetSound.vue
  97. 39 16
      src/views/setSilder/addSilder.vue
  98. 51 27
      src/views/sporadicManager/sporadicList.vue
  99. 3 2
      src/views/studentManager/studentList.vue
  100. 2 0
      src/views/teamBuild/components/teamBaseInfo.vue

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


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/app.16a8938f.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-07391f45.5e6d5b07.css


+ 1 - 1
dist/static/css/chunk-c7045f8e.480033ef.css → dist/static/css/chunk-098565e5.07131c65.css

@@ -1 +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}.newBand[data-v-b881817a]{display:inline-block;margin-right:10px}.right-code .title[data-v-b881817a]{font-size:18px;text-align:center;padding-bottom:8px}
+.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}.newBand[data-v-46ed72ba]{display:inline-block;margin-right:10px}.right-code .title[data-v-46ed72ba]{font-size:18px;text-align:center;padding-bottom:8px}

+ 1 - 1
dist/static/css/chunk-3d78ba52.0bf262ef.css → dist/static/css/chunk-12d1c276.14b08d39.css

@@ -1 +1 @@
-.m-core[data-v-c88760e4]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.m-core .el-input[data-v-c88760e4]{width:180px}.m-core h4[data-v-c88760e4]{font-size:16px;background-color:#ccc;color:#fff;text-align:center;width:100%;height:40px;line-height:40px;margin-bottom:20px}.m-core .center[data-v-c88760e4],.m-core .right[data-v-c88760e4],.m-core .vipLeft[data-v-c88760e4]{width:400px}.planList[data-v-c88760e4]{padding:0 25px}.planList .planTop[data-v-c88760e4]{height:40px;line-height:40px;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:justify;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #ccc;margin-top:20px}.planList .planTop>p[data-v-c88760e4]{font-size:14px}.planList .planCore .row[data-v-c88760e4]{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:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:40px;line-height:40px;font-size:14px;text-align:center}.planList .planCore .row div[data-v-c88760e4]{width:87px}.okBtn[data-v-c88760e4]{width:120px;height:40px;line-height:40px;text-align:center;color:#fff;border-radius:4px;margin-right:20px;cursor:pointer;background-color:#f97215;float:right}
+.m-core[data-v-69da3f96]{margin-top:30px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.m-core .el-input[data-v-69da3f96]{width:180px}.m-core h4[data-v-69da3f96]{font-size:16px;background-color:#ccc;color:#fff;text-align:center;width:100%;height:40px;line-height:40px;margin-bottom:20px}.m-core .center[data-v-69da3f96],.m-core .right[data-v-69da3f96],.m-core .vipLeft[data-v-69da3f96]{width:400px}.planList[data-v-69da3f96]{padding:0 25px}.planList .planTop[data-v-69da3f96]{height:40px;line-height:40px;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:justify;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #ccc;margin-top:20px}.planList .planTop>p[data-v-69da3f96]{font-size:14px}.planList .planCore .row[data-v-69da3f96]{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:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:nowrap;flex-wrap:nowrap;height:40px;line-height:40px;font-size:14px;text-align:center}.planList .planCore .row div[data-v-69da3f96]{width:87px}.okBtn[data-v-69da3f96]{width:120px;height:40px;line-height:40px;text-align:center;color:#fff;border-radius:4px;margin-right:20px;cursor:pointer;background-color:#f97215;float:right}

+ 0 - 0
dist/static/css/chunk-1d05f6ba.1983bc4d.css → dist/static/css/chunk-1d05f6ba.b7144abf.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-252f70e1.8ea4e2d3.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-2ac487e6.e9f8df38.css


+ 1 - 1
dist/static/css/chunk-f4f6bc24.d9d07b25.css → dist/static/css/chunk-2bbe03f0.d799bdce.css

@@ -1 +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}.right-code .title[data-v-4d106d7f]{font-size:18px;text-align:center;padding-bottom:8px}.newBand[data-v-4d106d7f]{display:inline-block}
+.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}.right-code .title[data-v-16e18c2f]{font-size:18px;text-align:center;padding-bottom:8px}.newBand[data-v-16e18c2f]{display:inline-block}

+ 0 - 1
dist/static/css/chunk-2c7693d9.5b722d11.css

@@ -1 +0,0 @@
-.el-button--primary[data-v-15e68305],.el-button--primary[data-v-15e68305]:active,.el-button--primary[data-v-15e68305]:focus,.el-button--primary[data-v-15e68305]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-15e68305]{margin-top:40px}.el-col[data-v-15e68305]{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-15e68305]{width:200px;margin:0 20px}[data-v-15e68305] .el-tree-node__content{height:40px!important}[data-v-15e68305] .avatar-uploader .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-15e68305]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-15e68305]{font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-15e68305]{width:120px;height:120px;display:block}

+ 1 - 0
dist/static/css/chunk-3ca8c553.6073580d.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}.cl-container .topFrom{margin:20px 30px 0}.cl-container .topFrom .classlist{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li{list-style:none}.cl-container .searchForm{margin:0 30px}.btnWraps{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}.btnWraps div{margin-right:20px}

+ 0 - 0
dist/static/css/chunk-d576a10e.a8cbc41d.css → dist/static/css/chunk-54726652.b7765e4f.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-5dbf7449.7f1299ec.css


File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-6541442b.a533dced.css


+ 1 - 0
dist/static/css/chunk-6fc5fb95.238fed97.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}.cl-container .topFrom{margin:20px 30px 0}.cl-container .topFrom .classlist{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.cl-container .topFrom .classlist ul li{list-style:none}.cl-container .searchForm{margin:0 30px}.btnWraps{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}.btnWraps div{margin-right:20px}.m-container .m-core .msg.ing[data-v-1691b894]{color:#14928a}.m-container .m-core .msg[data-v-1691b894]{text-align:right;color:#777;font-size:32px;font-weight:700;position:absolute;right:40px;top:-33px}.m-container .m-core .msg img[data-v-1691b894]{width:36px;height:36px;position:relative;top:5px;margin-right:8px}.m-container .m-core .abs[data-v-1691b894]{position:absolute;right:240px;top:-28px}.m-container .term[data-v-1691b894]{height:32px;line-height:32px;border-radius:24px;width:100px;color:#14928a;border:1px solid #14928a;font-size:14px;text-align:center;margin-right:12px}.m-container .term[data-v-1691b894]:first-child{margin-left:47px}.m-container .term.active[data-v-1691b894]{color:#fff;background-color:#14928a}

+ 0 - 0
dist/static/css/chunk-7cfc4d3d.0503bea2.css → dist/static/css/chunk-7cfc4d3d.2c3312fb.css


+ 1 - 1
dist/static/css/chunk-2c638012.71dcc538.css → dist/static/css/chunk-7da5a291.e3098977.css

@@ -1 +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}.vipwrap[data-v-400ef3e6]{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}.vipwrap .newBand[data-v-400ef3e6]{margin-right:20px}.resetClassForm[data-v-400ef3e6] .el-date-editor.el-input,.resetClassForm[data-v-400ef3e6] .el-date-editor.el-input__inner{width:180px!important}[data-v-400ef3e6] .el-date-editor.el-input,[data-v-400ef3e6] .el-date-editor.el-input__inner{width:100px!important}
+.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}.vipwrap[data-v-19059d7b]{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}.vipwrap .newBand[data-v-19059d7b]{margin-right:20px}.resetClassForm[data-v-19059d7b] .el-date-editor.el-input,.resetClassForm[data-v-19059d7b] .el-date-editor.el-input__inner{width:180px!important}[data-v-19059d7b] .el-date-editor.el-input,[data-v-19059d7b] .el-date-editor.el-input__inner{width:100px!important}

+ 1 - 0
dist/static/css/chunk-9808b29c.d25d6733.css

@@ -0,0 +1 @@
+.el-button--primary[data-v-fcd7a628],.el-button--primary[data-v-fcd7a628]:active,.el-button--primary[data-v-fcd7a628]:focus,.el-button--primary[data-v-fcd7a628]:hover{background:#14928a;border-color:#14928a;color:#fff}.el-row[data-v-fcd7a628]{margin-top:40px}.el-col[data-v-fcd7a628]{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-fcd7a628]{width:200px;margin:0 20px}[data-v-fcd7a628] .el-tree-node__content{height:40px!important}[data-v-fcd7a628] .avatar-uploader .el-upload{border:1px dashed #d9d9d9;border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-fcd7a628]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-fcd7a628]{font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-fcd7a628]{width:120px;height:120px;display:block}

+ 1 - 1
dist/static/css/chunk-231926cd.3665fa6f.css → dist/static/css/chunk-d1e61f0e.864d2ebe.css

@@ -1 +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}.select[data-v-910b24f0]{font-size:14px}.btnList[data-v-910b24f0]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnList div[data-v-910b24f0]{margin-right:15px}
+.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}.select[data-v-0fc38b97]{font-size:14px}.btnList[data-v-0fc38b97]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.btnList div[data-v-0fc38b97]{margin-right:15px}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-f8144e84.003c0546.css


+ 0 - 0
dist/static/css/chunk-libs.5cf311f0.css → dist/static/css/chunk-libs.3dfb7769.css


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-0040b65a.4d296155.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-0040b65a.a7261160.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-046f506a.64ee0caf.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-07391f45.5194fbf9.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-09753c97.0f58e78b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-09753c97.6f376881.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-098565e5.9c2968a6.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-12d1c276.3bf4172b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-13cc5d62.e0098643.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-16f87310.75c1ce9d.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1c9ae0ee.411e59ec.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-231926cd.35ca57f7.js


+ 0 - 1
dist/static/js/chunk-252f70e1.cd6522c7.js

@@ -1 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-252f70e1"],{"144d":function(t,s,a){},"26fc":function(t,s,a){t.exports=a.p+"static/img/404_cloud.0f4bc32b.png"},"8cdb":function(t,s,a){"use strict";a.r(s);var e=function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"wscn-http404-container"},[a("div",{staticClass:"wscn-http404"},[t._m(0),t._v(" "),a("div",{staticClass:"bullshit"},[a("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),t._v(" "),t._m(1),t._v(" "),a("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),t._v(" "),a("div",{staticClass:"bullshit__info"},[t._v("Please check that the URL you entered is correct, or click the button below to return to the homepage.")]),t._v(" "),a("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("Back to home")])])])])},c=[function(){var t=this,s=t.$createElement,e=t._self._c||s;return e("div",{staticClass:"pic-404"},[e("img",{staticClass:"pic-404__parent",attrs:{src:a("a36b"),alt:"404"}}),t._v(" "),e("img",{staticClass:"pic-404__child left",attrs:{src:a("26fc"),alt:"404"}}),t._v(" "),e("img",{staticClass:"pic-404__child mid",attrs:{src:a("26fc"),alt:"404"}}),t._v(" "),e("img",{staticClass:"pic-404__child right",attrs:{src:a("26fc"),alt:"404"}})])},function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"bullshit__info"},[t._v("All rights reserved\n        "),a("a",{staticStyle:{color:"#20a0ff"},attrs:{href:"https://wallstreetcn.com",target:"_blank"}},[t._v("wallstreetcn")])])}],i={name:"Page404",computed:{message:function(){return"The webmaster said that you can not enter this page..."}}},l=i,n=(a("a633"),a("2877")),r=Object(n["a"])(l,e,c,!1,null,"18d31acf",null);s["default"]=r.exports},a36b:function(t,s,a){t.exports=a.p+"static/img/404.a57b6f31.png"},a633:function(t,s,a){"use strict";var e=a("144d"),c=a.n(e);c.a}}]);

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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-2bbe03f0.28e05983.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-35d7984f.8fae306e.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3661e960.56955d8e.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3ca8c553.2326615c.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3d78ba52.f96f6ea5.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-3fef4f99.374c51d3.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-40e665d1.991aa3a7.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-415e29c8.2740466b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-419ce36c.67638345.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-41f382a0.4f05a251.js


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-529acf22.1d270029.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-529acf22.508b5f98.js


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


+ 1 - 0
dist/static/js/chunk-5dbf7449.54e5d275.js

@@ -0,0 +1 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5dbf7449"],{"018b":function(t,s,i){"use strict";var a=i("487d"),c=i.n(a);c.a},"26fc":function(t,s,i){t.exports=i.p+"static/img/404_cloud.0f4bc32b.png"},"487d":function(t,s,i){},"8cdb":function(t,s,i){"use strict";i.r(s);var a=function(){var t=this,s=t.$createElement,i=t._self._c||s;return i("div",{staticClass:"wscn-http404-container"},[i("div",{staticClass:"wscn-http404"},[t._m(0),t._v(" "),i("div",{staticClass:"bullshit"},[i("div",{staticClass:"bullshit__oops"},[t._v("OOPS!")]),t._v(" "),i("div",{staticClass:"bullshit__headline"},[t._v(t._s(t.message))]),t._v(" "),i("div",{staticClass:"bullshit__info"},[t._v("请检查您输入的网址是否正确,或者点击链接继续浏览")]),t._v(" "),i("a",{staticClass:"bullshit__return-home",attrs:{href:""}},[t._v("返回首页")])])])])},c=[function(){var t=this,s=t.$createElement,a=t._self._c||s;return a("div",{staticClass:"pic-404"},[a("img",{staticClass:"pic-404__parent",attrs:{src:i("a36b"),alt:"404"}}),t._v(" "),a("img",{staticClass:"pic-404__child left",attrs:{src:i("26fc"),alt:"404"}}),t._v(" "),a("img",{staticClass:"pic-404__child mid",attrs:{src:i("26fc"),alt:"404"}}),t._v(" "),a("img",{staticClass:"pic-404__child right",attrs:{src:i("26fc"),alt:"404"}})])}],l={name:"Page404",computed:{message:function(){return"很抱歉,你访问的页面不存在"}}},n=l,e=(i("018b"),i("2877")),_=Object(e["a"])(n,a,c,!1,null,"0a3f7028",null);s["default"]=_.exports},a36b:function(t,s,i){t.exports=i.p+"static/img/404.a57b6f31.png"}}]);

File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6181ddae.87892025.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-64c33787.35b6ce91.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6541442b.a54124e8.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6562cc02.721de017.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-68259a14.f084983f.js


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7a0e4919.13525efd.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7cfc4d3d.96b7076b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-7da5a291.567006c2.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-8752c0de.6975b639.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-8752c0de.7bfb1d6b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-90bc8dd8.9737381b.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-9808b29c.39190767.js


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-bb579d98.72e876d3.js


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-bc672cf4.8342c993.js


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-d576a10e.96f5cb44.js


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-fac7eb14.488862b3.js


BIN
dy-admin-dev.zip


+ 36 - 0
src/api/buildTeam.js

@@ -446,6 +446,15 @@ export function getCourseSchedule (data) {
   })
 }
 
+// 终极课表获取
+export function superFindCourseSchedules (data) {
+  return request({
+    url: api + `/courseSchedule/superFindCourseSchedules`,
+    method: 'get',
+    params: data
+  })
+}
+
 // 课时调整
 export function resetCourse (data) {
   return request({
@@ -790,4 +799,31 @@ export function clearClassCourse (data) {
     method: 'post',
     data: qs.stringify(data)
   })
+}
+
+// 课程顺延
+export function coursePostpone (data) {
+  return request({
+    url: api + '/courseSchedule/coursePostpone',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 锁定学生
+export function StudentFeeIsLock (data) {
+  return request({
+    url: api + '/studentManage/updateStudentFeeIsLock',
+    method: 'post',
+    data: qs.stringify(data)
+  })
+}
+
+// 修改学生缴费周期
+export function updateStudentFee (data) {
+  return request({
+    url: api + '/studentManage/updateStudentFee',
+    method: 'post',
+    data: qs.stringify(data)
+  })
 }

+ 2 - 0
src/layout/components/Sidebar/index.vue

@@ -42,9 +42,11 @@ export default {
       const route = this.$route
       const { meta, path } = route
       // if set path, the sidebar will highlight the path you set
+      // 设置高亮的位置
       if (meta.activeMenu) {
         return meta.activeMenu
       }
+      // console.log(meta, path)
       return path
     },
     showLogo () {

+ 7 - 4
src/router/index.js

@@ -92,9 +92,8 @@ export const constantRoutes = [
         hidden: false,
       }
     ]
-
-  }
-
+  },
+  // { path: '*', redirect: '/404', hidden: true }
 ]
 // export const constantRoutes = [{
 //   path: '/',
@@ -205,6 +204,8 @@ export const asyncRoutes = {
   teamSeting: () => import('@/views/teamBuild/teamSeting/'),
   //乐团详情
   teamDetails: () => import('@/views/teamDetail'),
+  // 乐团课表详情
+  teamDetailCourse: () => import('@/views/teamDetail/indexCourse'),
   // 学生点名总汇
   studentSignin: () => import('@/views/teamDetail/components/studentSignin'),
   // 班级调整
@@ -220,7 +221,9 @@ export const asyncRoutes = {
   // 收费分润管理
   chargeProfitManager: () => import('../views/categroyManager/insideSetting/chargeProfitManager'),
   // 零星管理
-  sporadicManager: () => import('@/views/sporadicManager/sporadicList')
+  sporadicManager: () => import('@/views/sporadicManager/sporadicList'),
+  // 课表列表
+  teamCourseList: () => import('@/views/teamDetail/teamCourseList')
 
 }
 export default router

+ 4 - 0
src/utils/request.js

@@ -4,6 +4,7 @@ import { Message } from 'element-ui'
 import store from '@/store'
 import { getToken } from '@/utils/auth'
 import { Loading } from 'element-ui'
+import router from '@/router/index'
 // import '@/main'
 import Vue from 'vue'
 const showMessage = Symbol('showMessage')
@@ -129,6 +130,9 @@ service.interceptors.response.use(
 
         return;
       }
+      if(data.code == 404) {
+        router.push('/404')
+      }
       if (data.code != 200) {
         // Message({
         //   message: data.msg || `请求失败code码为${ data.code }`,

+ 2 - 1
src/utils/searchArray.js

@@ -49,7 +49,8 @@ const orderStatus = [
   { value: "RENEW", label: "续费" },
   { value: "OTHER", label: "其他" },
   { value: "SMALL_CLASS_TO_BUY", label: "VIP购买" },
-  { value: "SPORADIC", label: "零星收费" }
+  { value: "SPORADIC", label: "零星收费" },
+  { value: "LUCK", label: "福袋活动" },
 ]
 
 // 交易状态

+ 2 - 1
src/utils/vueFilter.js

@@ -196,7 +196,8 @@ Vue.filter('orderType', value => {
     RENEW: "续费",
     OTHER: "其他",
     SMALL_CLASS_TO_BUY: "VIP购买",
-    SPORADIC: '零星收费'
+    SPORADIC: '零星收费',
+    LUCK: "福袋活动"
   }
   return template[value]
 })

+ 6 - 6
src/views/404.vue

@@ -17,15 +17,15 @@
       </div>
       <div class="bullshit">
         <div class="bullshit__oops">OOPS!</div>
-        <div class="bullshit__info">All rights reserved
+        <!-- <div class="bullshit__info">All rights reserved
           <a style="color:#20a0ff"
              href="https://wallstreetcn.com"
-             target="_blank">wallstreetcn</a>
-        </div>
+             target="_blank"> </a>
+        </div> -->
         <div class="bullshit__headline">{{ message }}</div>
-        <div class="bullshit__info">Please check that the URL you entered is correct, or click the button below to return to the homepage.</div>
+        <div class="bullshit__info">请检查您输入的网址是否正确,或者点击链接继续浏览</div>
         <a href=""
-           class="bullshit__return-home">Back to home</a>
+           class="bullshit__return-home">返回首页</a>
       </div>
     </div>
   </div>
@@ -37,7 +37,7 @@ export default {
   name: 'Page404',
   computed: {
     message () {
-      return 'The webmaster said that you can not enter this page...'
+      return '很抱歉,你访问的页面不存在'
     }
   }
 }

+ 69 - 7
src/views/buildVip/index.vue

@@ -38,7 +38,7 @@
                        @change="setSection($event)">
               <el-option v-for="(item,index) in teacherList"
                          :key="index"
-                         :label="item.username"
+                         :label="item.realName"
                          :value="item.id" />
             </el-select>
           </el-form-item>
@@ -229,17 +229,36 @@
           <el-form-item v-if="hasOnline"
                         label="线上课单价">
             <el-input v-model="rightForm.onlinePrice"
-                      :disabled="salaryReadonlyFlag==0" />
+                      :disabled="paymentReadonlyFlag==0" />
           </el-form-item>
           <el-form-item v-if="hasOffline"
                         label="线下课单价">
             <el-input v-model="rightForm.offlinePrice"
-                      :disabled="salaryReadonlyFlag==0" />
+                      :disabled="paymentReadonlyFlag==0" />
           </el-form-item>
           <el-form-item label="课程总价">
             <el-input v-model="rightForm.allPrice"
                       disabled />
           </el-form-item>
+          <el-form-item label="上课学生">
+            <!--      :loading="loading" -->
+            <el-select v-model="rightForm.students"
+                       multiple
+                       clearable
+                       placeholder="请输入关键词"
+                       remote
+                       reserve-keyword
+                       filterable
+                       :remote-method="remoteMethod">
+              <el-option v-for="(item,index) in studentList"
+                         :key="index"
+                         :label="item.username"
+                         :value="item.userId">
+                <span style="float: left">{{ item.username }}</span>
+                <span style="float: right; color: #8492a6; font-size: 13px">{{item.parentsPhone  }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
         </el-form>
         <el-button type="primary"
                    style="float:right"
@@ -375,6 +394,7 @@
 import { getTeacher, getSubject } from '@/api/buildTeam'
 import { vipGroupCategory, vipGroupActivityFind, getVipGroupCostCount, createVip, getVipGroupDetail, updateVipBaseInfo } from '@/api/vipSeting'
 import { getTeachSchool, getTeacherBySubject } from '@/api/teacherManager'
+import { queryStudentList } from '@/api/studentManager'
 export default {
   data () {
     return {
@@ -412,7 +432,8 @@ export default {
         offlineCourse: '',
         onlinePrice: '',
         offlinePrice: '',
-        allPrice: ''
+        allPrice: '',
+        students: []
       },
       computationalBtn: false,
       subjectList: [], // 科目列表
@@ -426,7 +447,8 @@ export default {
       hotType: '',
       attribute1: '',
       attribute2: '',
-      salaryReadonlyFlag: '', // 老师工资是否可配
+      salaryReadonlyFlag: '', // 老师课酬是否可配
+      paymentReadonlyFlag: '', // 课程单价是否可配
       lookList: [],
       onlinelookList: [], // 展示课表线上
       offlineLookList: [], // 展示课表线下
@@ -485,7 +507,8 @@ export default {
           required: true, message: '请选择报名结束时间', trigger: 'blur'
         }]
       },
-      id: ''
+      id: '',
+      studentList: []
     }
   },
   computed: {
@@ -544,6 +567,13 @@ export default {
     })
     // 获取所有老师的接口  根据声部id获取老师
     // 获取课程类型的接口
+
+    // 获取学生列表
+    // queryStudentList({ rows: 100000 }).then(res => {
+    //   if (res.code == 200) {
+    //     this.studentList = res.data.rows
+    //   }
+    // })
   },
   methods: {
     beginDate () {
@@ -614,6 +644,8 @@ export default {
     chioseActive (val) {
       this.rightForm.offlineCourse = '';
       this.rightForm.onlineCourse = '';
+      // this.rightForm.onlinePrice = '';
+      // this.rightForm.offlinePrice = '';
       this.lookList = []
       this.timeTable = []
       this.attribute1 = '';
@@ -636,6 +668,7 @@ export default {
           this.attribute2 = this.activeList[i].attribute2;
           // 存储课酬是否可配置
           this.salaryReadonlyFlag = this.activeList[i].salaryReadonlyFlag
+          this.paymentReadonlyFlag = this.activeList[i].paymentReadonlyFlag
           //  hasOnline: false, hasOffline: false 还需要判断type类型 根据活动id获取
           if (this.activeList[i].salarySettlementJson) {
             let obj = JSON.parse(this.activeList[i].salarySettlementJson)
@@ -999,7 +1032,9 @@ export default {
         courseStart: '',
         courseEnd: ''
        */
+      let studentIdList = this.rightForm.students.join(',') || null
       obj.vipGroupApplyBaseInfo = {
+        studentIdList,
         coursesExpireDate: this.leftForm.courseEnd,
         teacherSchoolId: this.leftForm.section,
         name: this.leftForm.name,
@@ -1019,6 +1054,8 @@ export default {
         giveTeachMode: this.centerForm.radio,
         subjectIdList: this.leftForm.subject,
       }
+
+
       // 调接前判断是新增还是修改
       if (!this.id) {
         // 新增
@@ -1038,7 +1075,6 @@ export default {
 
     },
     setSection (val) {
-      console.log(val)
       this.leftForm.section = '';
       this.rightForm.offlineCourse = '';
       this.rightForm.onlineCourse = '';
@@ -1117,6 +1153,32 @@ export default {
       this.rightForm.allPrice = data.totalPrice;
 
       //subjectIdList
+    },
+    remoteMethod (query) {
+      if (query !== '') {
+        // this.loading = true;
+        // 发请求搜索
+        queryStudentList({ rows: 100, search: query }).then(res => {
+          if (res.code == 200) {
+            // this.loading = false;
+            this.studentList = this.studentList.concat(res.data.rows);
+            // this.studentList = res.data.rows;
+            this.unique(this.studentList, 'userId')
+            // console.log(this.studentList)
+
+          }
+        })
+
+      }
+
+    },
+    unique (arr, u_key) {
+      let obj = {}
+      arr.reduce((prev, next) => {
+        obj[next[u_key] + typeof next[u_key]] ? '' :
+          obj[next[u_key] + typeof next[u_key]] = true && prev.push(next)
+        return prev
+      }, [])
     }
   },
   // watch: {

+ 9 - 1
src/views/businessManager/orderManager/income.vue

@@ -100,8 +100,10 @@
                            label="实付金额">
           </el-table-column>
           <el-table-column align='center'
-                           prop="user.username"
                            label="学员姓名">
+            <template slot-scope="scope">
+              {{ scope.row.user.username }}<span v-if="scope.row.user.username && scope.row.user.phone">/</span>{{ scope.row.user.phone }}
+            </template>
           </el-table-column>
           <el-table-column align='center'
                            prop="paymentChannel"
@@ -122,6 +124,12 @@
               {{ scope.row.status | dealStatus }}
             </template>
           </el-table-column>
+          <el-table-column align='center'
+                           label="备注">
+            <template slot-scope="scope">
+              {{ scope.row.memo ? scope.row.memo : '-' }}
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :total="pageInfo.total"
                     :page.sync="pageInfo.page"

+ 11 - 1
src/views/businessManager/orderManager/incomeOne.vue

@@ -52,7 +52,11 @@
           </el-table-column>
           <el-table-column align='center' prop="actualAmount" label="实付金额">
           </el-table-column>
-          <el-table-column align='center' prop="user.username" label="学员姓名">
+          <el-table-column align='center'
+                           label="学员姓名">
+            <template slot-scope="scope">
+              {{ scope.row.user.username }}<span v-if="scope.row.user.username && scope.row.user.phone">/</span>{{ scope.row.user.phone }}
+            </template>
           </el-table-column>
           <el-table-column align='center' prop="paymentChannel" label="交易方式">
             <template slot-scope="scope">
@@ -69,6 +73,12 @@
               {{ scope.row.status | dealStatus }}
             </template>
           </el-table-column>
+          <el-table-column align='center'
+                           label="备注">
+            <template slot-scope="scope">
+              {{ scope.row.memo ? scope.row.memo : '-' }}
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :total="pageInfo.total" :page.sync="pageInfo.page" :limit.sync="pageInfo.limit" :page-sizes="pageInfo.page_size"
           @pagination="getList" />

+ 9 - 1
src/views/businessManager/orderManager/incomeTwo.vue

@@ -100,8 +100,10 @@
                            label="实付金额">
           </el-table-column>
           <el-table-column align='center'
-                           prop="user.username"
                            label="学员姓名">
+            <template slot-scope="scope">
+              {{ scope.row.user.username }}<span v-if="scope.row.user.username && scope.row.user.phone">/</span>{{ scope.row.user.phone }}
+            </template>
           </el-table-column>
           <el-table-column align='center'
                            prop="paymentChannel"
@@ -122,6 +124,12 @@
               {{ scope.row.status | dealStatus }}
             </template>
           </el-table-column>
+          <el-table-column align='center'
+                           label="备注">
+            <template slot-scope="scope">
+              {{ scope.row.memo ? scope.row.memo : '-' }}
+            </template>
+          </el-table-column>
         </el-table>
         <pagination :total="pageInfo.total"
                     :page.sync="pageInfo.page"

+ 2 - 2
src/views/businessManager/shopManager/shopOperation.vue

@@ -101,10 +101,10 @@ import { categoryListTree, goodsAdd, goodsUpdate, goodsSingleQuery } from '@/api
 // import store from '@/store'
 import { getToken } from '@/utils/auth'
 let validPrice = (rule, value, callback) => {
-  if (!value) {
+  if (value == '' && typeof value == 'string') {
     callback(new Error('请输入金额'))
   } else if (value < 0) {
-    callback(new Error('输入金额必须大于0'))
+    callback(new Error('输入金额必须大于或等于0'))
   } else if (value >= 100000) {
     callback(new Error('输入金额必须小于100000'))
   } else {

+ 7 - 1
src/views/categroyManager/vipActiveList.vue

@@ -247,8 +247,10 @@
                         v-model="unonlineprice"></el-input>
             </div>
             <div class="chioseWrap">
+              <el-checkbox v-model="paymentReadonlyFlag"
+                           label="可自定义单价"></el-checkbox>
               <el-checkbox v-model="salaryReadonlyFlag"
-                           label="可自定义收费、结算标准"></el-checkbox>
+                           label="可自定义课酬"></el-checkbox>
             </div>
           </div>
         </div>
@@ -346,6 +348,7 @@ export default {
       onlineprice: '',
       unonlineprice: '',
       salaryReadonlyFlag: true,
+      paymentReadonlyFlag: true,
       attribute1: '',
       attribute2: '',
       attribute3: '',
@@ -578,6 +581,7 @@ export default {
       }
       // 
       this.salaryReadonlyFlag = !!parseInt(row.salaryReadonlyFlag);
+      this.paymentReadonlyFlag = !!parseInt(row.paymentReadonlyFlag);
       this.activeType = row.type;
       this.attribute1 = row.attribute1;
       this.attribute2 = row.attribute2;
@@ -617,6 +621,7 @@ export default {
             offlineSalarySettlement = null
           }
           let salaryReadonlyFlag = this.salaryReadonlyFlag * 1;
+          let paymentReadonlyFlag = this.paymentReadonlyFlag * 1;
           let giveClassPaySalaryFlag = this.giveClassPaySalaryFlag * 1;
           let vipGroupSalarySettlement = {
             onlineSalarySettlement,
@@ -624,6 +629,7 @@ export default {
           }
           // 发请求创建活动
           resetVipActive({
+            paymentReadonlyFlag,
             id,
             coursesStartTime,
             coursesEndTime,

+ 6 - 1
src/views/categroyManager/vipNewActive.vue

@@ -136,8 +136,10 @@
             </el-input>
           </div>
           <div class="chioseWrap">
+            <el-checkbox v-model="paymentReadonlyFlag"
+                         label="可自定义单价"></el-checkbox>
             <el-checkbox v-model="salaryReadonlyFlag"
-                         label="可自定义收费、结算标准"></el-checkbox>
+                         label="可自定义课酬"></el-checkbox>
           </div>
         </div>
       </div>
@@ -233,6 +235,7 @@ export default {
       onlineprice: '',
       unonlineprice: '',
       salaryReadonlyFlag: true,
+      paymentReadonlyFlag: true,
       attribute1: '',
       attribute2: '',
       attribute3: '',
@@ -293,6 +296,7 @@ export default {
             offlineSalarySettlement = null
           }
           let salaryReadonlyFlag = this.salaryReadonlyFlag * 1;
+          let paymentReadonlyFlag = this.paymentReadonlyFlag * 1;
           let giveClassPaySalaryFlag = this.giveClassPaySalaryFlag * 1;
           let vipGroupSalarySettlement = {
             onlineSalarySettlement,
@@ -311,6 +315,7 @@ export default {
             vipGroupCategoryIdList,
             vipGroupSalarySettlement,
             salaryReadonlyFlag,
+            paymentReadonlyFlag,
             giveClassPaySalaryFlag,
             attribute1: this.attribute1,
             attribute2: this.attribute2,

+ 2 - 2
src/views/journal/studentComplain.vue

@@ -251,11 +251,11 @@ export default {
       let teacherRate = this.teacherRate
       let studentRate = this.studentRate
       if (type == 'submit') {
-        if (teacherRate < 0 || teacherRate > 10 || typeof teacherRate == 'string') {
+        if (teacherRate < 0 || teacherRate > 10 || Number(teacherRate) == NaN) {
           this.$message.error('老师责任比输入有误')
           return
         }
-        if (studentRate < 0 || studentRate > 10 || typeof studentRate == 'string') {
+        if (studentRate < 0 || studentRate > 10 || Number(studentRate) == NaN) {
           this.$message.error('学生责任比输入有误')
           return
         }

+ 31 - 6
src/views/resetTeaming/components/resetSound.vue

@@ -10,7 +10,7 @@
       <el-table-column align='center'
                        width="180px;"
                        prop="yuji"
-                       label="预计收费">
+                       label="课程费用">
         <template slot-scope="scope">
           <div>
             <el-input style="width:100px"
@@ -170,11 +170,10 @@
     </el-table>
     <!-- <div class="remove"
              @click="removeListItem">删除</div> -->
-    <!-- <div class="floor">
-
+    <div class="floor">
       <div class='add'
            @click="addListItem">添加</div>
-    </div> -->
+    </div>
     <div class="btnWrap"
          style="margin-top:30px">
       <div class="closeBtn"
@@ -239,7 +238,7 @@ export default {
   mounted () {
     // 获取声部信息
     this.teamid = this.$route.query.id
-    this.getSound();
+
     sessionStorage.setItem('resetCode', '2');
     // 获取所有声部
     getSoundTree().then(res => {
@@ -249,6 +248,7 @@ export default {
         for (let key in this.soundList) {
           this.$set(this.soundLists, key, [])
         }
+        this.getSound();
       }
 
     })
@@ -261,10 +261,35 @@ export default {
       findMusicGroupSubjectInfo({ musicGroupId: this.teamid }).then(res => {
         if (res.code == 200) {
           this.activeSoundList = res.data.musicGroupSubjectPlans.map(item => {
-            // this.soundLists[0].push(item.subjectId)
             let obj = { 'id': item.subjectId, 'sound': item.subName, 'jihua': item.expectedStudentNum, 'yuji': item.fee, 'zhonglei': [], 'fangshi': item.kitGroupPurchaseType, 'fangshiprice': item.depositFee, 'jiaopu': '', 'type': 1, 'typeVisible': false, 'provideVisible': false, 'markVisible': false, 'goodsList': [], 'markList': [], 'markChioseList': [] }
             return obj;
           })
+          // 这里循环
+          for (let z = 0; z < this.activeSoundList.length; z++) {
+            for (let x = 0; x < this.soundList.length; x++) {
+              let tempSound = this.soundList[x].subjects
+              for (let y = 0; y < tempSound.length; y++) {
+                if (tempSound[y].id == this.activeSoundList[z].id) {
+                  tempSound.splice(y, 1)
+                  y--
+                }
+              }
+            }
+          }
+
+          // this.soundList.forEach((item, i) => {
+          //   item.subjects.forEach((some, j) => {
+
+          //     this.activeSoundList.forEach((sub, x) => {
+          //       console.log(some.name + '-' + sub.sound)
+          //       console.log(some.id + '-' + sub.id)
+          //       if (sub.id == some.id) {
+          //         console.log(1)
+          //         item.subjects.splice(x, 1)
+          //       }
+          //     })
+          //   })
+          // })
           // 循环列表里的声部 拿取商品
           for (let i in this.activeSoundList) {
             for (let j in res.data.musicGroupSubjectGoodsGroups) {

+ 39 - 16
src/views/setSilder/addSilder.vue

@@ -1,33 +1,42 @@
 <template>
   <div class="slider-container">
-    <el-button @click='onOperation("create")' style="position: fixed; z-index: 100;">添加按钮</el-button>
+    <el-button @click='onOperation("create")'
+               style="position: fixed; z-index: 100;">添加按钮</el-button>
 
     <el-table :data="tableList"
               style="width: 100%;margin-bottom: 20px;"
               row-key="id"
               border
               :tree-props="{children: 'children', hasChildren: 'hasChildren'}">
-      <el-table-column width="400px" prop="name"
+      <el-table-column width="400px"
+                       prop="name"
                        label="菜单名称">
       </el-table-column>
-      <el-table-column prop="id" width="100px"
+      <el-table-column prop="id"
+                       width="100px"
                        label="元素ID">
       </el-table-column>
-      <el-table-column label="菜单类型" width="100px">
+      <el-table-column label="菜单类型"
+                       width="100px">
         <template slot-scope="scope">
           {{ scope.row.type == 1 ? '按钮' : '菜单' }}
         </template>
       </el-table-column>
-      <el-table-column prop="sort" width="100px"
+      <el-table-column prop="sort"
+                       width="100px"
                        label="排序">
       </el-table-column>
       <el-table-column prop="path"
                        label="文件路径">
       </el-table-column>
+      <el-table-column prop="parentPermission"
+                       label="高亮路径">
+      </el-table-column>
       <el-table-column prop="permission"
                        label="权限标识">
       </el-table-column>
-      <el-table-column prop="hid" width="100px"
+      <el-table-column prop="hid"
+                       width="100px"
                        label="是否隐藏">
         <template slot-scope="scope">
           {{ scope.row.hid == 1 ? '隐藏' : '不隐藏' }}
@@ -43,7 +52,7 @@
       </el-table-column>
     </el-table>
     <el-dialog title="侧边栏管理"
-                :close-on-click-modal="false"
+               :close-on-click-modal="false"
                :visible.sync="branchStatus"
                default-expand-all
                @close="onFormClose('ruleForm')"
@@ -65,6 +74,11 @@
           <el-input v-model="form.permission"
                     autocomplete="off"></el-input>
         </el-form-item>
+        <el-form-item label="高亮路径"
+                      :label-width="formLabelWidth">
+          <el-input v-model="form.path"
+                    autocomplete="off"></el-input>
+        </el-form-item>
         <el-form-item label="组件名"
                       :label-width="formLabelWidth">
           <el-input v-model="form.component"
@@ -78,15 +92,19 @@
         <el-form-item label="是否隐藏"
                       :label-width="formLabelWidth">
           <el-select v-model="form.hid">
-            <el-option label="否" :value="0"></el-option>
-            <el-option label="是" :value="1"></el-option>
+            <el-option label="否"
+                       :value="0"></el-option>
+            <el-option label="是"
+                       :value="1"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="菜单类型"
                       :label-width="formLabelWidth">
           <el-select v-model.number="form.type">
-            <el-option label="菜单" :value="0"></el-option>
-            <el-option label="按钮" :value="1"></el-option>
+            <el-option label="菜单"
+                       :value="0"></el-option>
+            <el-option label="按钮"
+                       :value="1"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="排序"
@@ -121,7 +139,8 @@ export default {
         sort: 1,
         component: null,
         hid: 1,
-        type: 1
+        type: 1,
+        parentPermission: null
       }
     }
   },
@@ -155,7 +174,8 @@ export default {
           component: row.component,
           id: row.id,
           hid: row.hid,
-          type: Number(row.type)
+          type: Number(row.type),
+          parentPermission: row.parentPermission
         }
       }
     },
@@ -170,7 +190,8 @@ export default {
           sort: form.sort,
           parentId: form.parentId,
           hid: form.hid,
-          type: form.type
+          type: form.type,
+          parentPermission: form.parentPermission
         }).then(res => {
           if (res.code == 200) {
             this.$message.success('添加成功')
@@ -210,7 +231,8 @@ export default {
           component: res.component,
           sort: res.sort,
           hid: res.hid,
-          type: res.type
+          type: res.type,
+          parentPermission: res.parentPermission
         }
         if (res.sysMenus && res.sysMenus.length > 0) {
           tempList.children = this.setTableData(res.sysMenus)
@@ -237,7 +259,8 @@ export default {
         sort: 1,
         component: null,
         hid: 1,
-        type: 1
+        type: 1,
+        parentPermission: null
       }
       this.$refs[formName].resetFields()
     }

+ 51 - 27
src/views/sporadicManager/sporadicList.vue

@@ -15,7 +15,8 @@
       <el-form :inline="true"
                :model="searchForm">
         <el-form-item>
-          <el-input placeholder="标题或学生姓名" v-model="searchForm.search"></el-input>
+          <el-input placeholder="标题或学生姓名"
+                    v-model="searchForm.search"></el-input>
         </el-form-item>
         <el-form-item>
           <el-select v-model="searchForm.organId"
@@ -34,12 +35,16 @@
                      clearable>
             <el-option label="考级"
                        :value="1"></el-option>
-            <el-option label="缴费"
-                       :value="2"></el-option>
             <el-option label="声部更改"
-                       :value="3"></el-option>
+                       :value="2"></el-option>
             <el-option label="乐器更换"
+                       :value="3"></el-option>
+            <el-option label="配件销售"
                        :value="4"></el-option>
+            <el-option label="维修费"
+                       :value="5"></el-option>
+            <el-option label="福袋活动"
+                       :value="6"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item>
@@ -54,7 +59,7 @@
         </el-form-item>
         <el-form-item>
           <el-button type="danger"
-                   @click="search">搜索</el-button>
+                     @click="search">搜索</el-button>
           <el-button @click="onReSet"
                      type="primary">重置</el-button>
         </el-form-item>
@@ -100,7 +105,7 @@
           <el-table-column align='center'
                            label="订单类型">
             <template slot-scope="scope">
-              {{ scope.row.userId ? '个' : '公用' }}
+              {{ scope.row.userId ? '个' : '公用' }}
             </template>
           </el-table-column>
           <el-table-column align='center'
@@ -150,12 +155,16 @@
                      filterable>
             <el-option label="考级"
                        :value="1"></el-option>
-            <el-option label="缴费"
-                       :value="2"></el-option>
             <el-option label="声部更改"
-                       :value="3"></el-option>
+                       :value="2"></el-option>
             <el-option label="乐器更换"
+                       :value="3"></el-option>
+            <el-option label="配件销售"
                        :value="4"></el-option>
+            <el-option label="维修费"
+                       :value="5"></el-option>
+            <el-option label="福袋活动"
+                       :value="6"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="金额"
@@ -165,6 +174,14 @@
                     @mousewheel.native.prevent
                     :disabled='!isNew'></el-input>
         </el-form-item>
+        <el-form-item label="减免金额"
+                      v-if="maskForm.type == 6"
+                      prop='money'>
+          <el-input v-model="maskForm.subMoney"
+                    type="number"
+                    @mousewheel.native.prevent
+                    :disabled='!isNew'></el-input>
+        </el-form-item>
         <el-form-item label="分部"
                       prop="organId">
           <el-select v-model="maskForm.organId"
@@ -229,12 +246,14 @@
                      filterable>
             <el-option label="考级"
                        :value="1"></el-option>
-            <el-option label="缴费"
-                       :value="2"></el-option>
             <el-option label="声部更改"
-                       :value="3"></el-option>
+                       :value="2"></el-option>
             <el-option label="乐器更换"
+                       :value="3"></el-option>
+            <el-option label="配件销售"
                        :value="4"></el-option>
+            <el-option label="维修费"
+                       :value="5"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="学员编号"
@@ -324,7 +343,8 @@ export default {
         money: '',
         desc: '',
         title: '',
-        code: ''
+        code: '',
+        subMoney: ''
       },
       maskRules: {
         organId: [{ required: true, message: '请选择分部', trigger: 'change' }],
@@ -398,7 +418,7 @@ export default {
         page: this.pageInfo.page,
         rows: this.pageInfo.limit
       }
-      
+
       getZero(params).then(res => {
         if (res.code == 200) {
           this.tableList = res.data.rows
@@ -407,7 +427,7 @@ export default {
       })
     },
     onFormClose (formName) { // 关闭弹窗重置验证
-      if(formName == 'maskForm') {
+      if (formName == 'maskForm') {
         this.maskForm = {
           organId: null,
           type: null,
@@ -416,7 +436,7 @@ export default {
           title: null,
           code: null
         }
-      } else if(formName == 'maskForm1') {
+      } else if (formName == 'maskForm1') {
         this.maskForm1 = {
           type: null,
           money: null,
@@ -440,7 +460,7 @@ export default {
       this.title1 = '新增个人收费'
     },
     lookVisible (row) {
-      if(row.userId) {
+      if (row.userId) {
         this.isNew1 = false;
         this.zeroVisible1 = true;
         this.title1 = '查看个人收费'
@@ -463,6 +483,7 @@ export default {
         this.maskForm.title = row.title
         this.maskForm.organId = row.organId
         this.maskForm.money = row.amount
+        this.maskForm.subMoney = row.discountAmount
       }
     },
     onCreateQRCode () { // 生成报名二维码
@@ -479,7 +500,7 @@ export default {
           })
         }
         this.qrcode.clear();
-        if(this.activeRow.userId) {
+        if (this.activeRow.userId) {
           this.qrcode.makeCode(vaildStudentUrl() + `/#/sporadicPay?id=${this.activeRow.id}&userId=${this.activeRow.userId}`)
         } else {
           this.qrcode.makeCode(vaildStudentUrl() + `/#/sporadicLogin?id=${this.activeRow.id}`)
@@ -494,7 +515,8 @@ export default {
             detail: this.maskForm.desc,
             title: this.maskForm.title,
             organId: this.maskForm.organId,
-            amount: this.maskForm.money
+            amount: this.maskForm.money,
+            discountAmount: this.maskForm.subMoney
           }
           addZero(obj).then(res => {
             if (res.code == 200) {
@@ -510,7 +532,7 @@ export default {
       this.$refs['maskForm1'].validate(item => {
         if (item) {
           let maskForm1 = this.maskForm1
-          if(!maskForm1.studentName) {
+          if (!maskForm1.studentName) {
             this.$message.error('学员信息不存在')
             return
           }
@@ -531,16 +553,16 @@ export default {
         }
       })
     },
-    onStudentChange() {
+    onStudentChange () {
       let studentId = this.maskForm1.studentId
       // 判断学生编号是否存在
-      if(!studentId) {
+      if (!studentId) {
         return
       }
 
       getBasic({ userId: studentId }).then(res => {
-        if(res.code == 200) {
-          if(res.data) {
+        if (res.code == 200) {
+          if (res.data) {
             this.maskForm1.studentName = res.data.name
           } else {
             this.maskForm1.studentName = null
@@ -585,9 +607,11 @@ export default {
     chargeTypeFilter (val) {
       let template = {
         '1': '考级',
-        '2': '缴费',
-        '3': '声部更改',
-        '4': '乐器更换'
+        '2': '声部更改',
+        '3': '乐器更换',
+        '4': '配件销售',
+        '5': '维修费',
+        '6': '福袋活动'
       }
       return template[val]
     }

+ 3 - 2
src/views/studentManager/studentList.vue

@@ -286,6 +286,7 @@ export default {
     this.getList();
   },
   methods: {
+
     onSearch () {
       this.pageInfo.page = 1;
       this.getList()
@@ -452,7 +453,7 @@ export default {
         date: row.birthdate,
         nation: row.nation
       }
-    }
+    },
   },
   watch: {
     studentVisible (val) {
@@ -466,7 +467,7 @@ export default {
           date: '',
           nation: ''
         }
-        // this.studentForm.
+        this.$refs['studentForm'].resetFields()
       }
     }
   }

+ 2 - 0
src/views/teamBuild/components/teamBaseInfo.vue

@@ -712,6 +712,8 @@ export default {
             }
           }
           let obj = {};
+          // topFrom.ownershipType
+
           this.payList.student.chiose == 'loop' ? obj.months = this.payList.chioseMonth : obj.months = [];
           obj.musicGroup = {
             settlementType: this.topFrom.salary,

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