浏览代码

Merge branch '11/24SAAS' into 08/24teamQuest

mo 2 年之前
父节点
当前提交
7abd431152
共有 77 个文件被更改,包括 548 次插入75 次删除
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.5834a8a7.css
  3. 0 0
      dist/static/css/chunk-01475be1.863804e3.css
  4. 1 0
      dist/static/css/chunk-0304056a.1252ae6f.css
  5. 0 1
      dist/static/css/chunk-05cfb244.32f5b2d6.css
  6. 0 0
      dist/static/css/chunk-0697c9c2.db148317.css
  7. 1 1
      dist/static/css/chunk-0c4c24be.d2769db6.css
  8. 0 1
      dist/static/css/chunk-0d26fbdc.bc86060a.css
  9. 0 0
      dist/static/css/chunk-106cf271.04918dd8.css
  10. 0 0
      dist/static/css/chunk-110057a1.bca64bea.css
  11. 0 1
      dist/static/css/chunk-364ec85f.5efe3095.css
  12. 0 0
      dist/static/css/chunk-39aa44c6.51e0dcc1.css
  13. 0 0
      dist/static/css/chunk-3c25ba7e.5bfad279.css
  14. 0 0
      dist/static/css/chunk-42d930ec.18cc7d8c.css
  15. 0 0
      dist/static/css/chunk-47d52dd1.098c9ec2.css
  16. 1 1
      dist/static/css/chunk-490be7be.bf6548d7.css
  17. 0 0
      dist/static/css/chunk-54dc52ea.6666b687.css
  18. 0 0
      dist/static/css/chunk-57a80b75.f2d6c62f.css
  19. 0 0
      dist/static/css/chunk-5d5328ef.8dea7888.css
  20. 1 0
      dist/static/css/chunk-7d5fe188.1cc8417a.css
  21. 0 0
      dist/static/css/chunk-7fa10590.b7b99272.css
  22. 1 0
      dist/static/css/chunk-884ae548.3e965d73.css
  23. 0 0
      dist/static/css/chunk-9af38c9e.68346bbd.css
  24. 0 1
      dist/static/css/chunk-a5b4e03c.79e41244.css
  25. 0 0
      dist/static/css/chunk-a8a28dfa.a2c101ae.css
  26. 1 0
      dist/static/css/chunk-d1b51b1c.d1501f00.css
  27. 0 0
      dist/static/js/app.124bd157.js
  28. 0 0
      dist/static/js/app.51e382aa.js
  29. 0 0
      dist/static/js/chunk-01475be1.4cda865f.js
  30. 0 0
      dist/static/js/chunk-0304056a.028b3e63.js
  31. 0 0
      dist/static/js/chunk-05cfb244.9642c3f0.js
  32. 1 1
      dist/static/js/chunk-0697c9c2.31999062.js
  33. 0 0
      dist/static/js/chunk-0c4c24be.027c63e4.js
  34. 0 0
      dist/static/js/chunk-0d26fbdc.6ff41c75.js
  35. 0 0
      dist/static/js/chunk-106cf271.f93d1d46.js
  36. 1 1
      dist/static/js/chunk-110057a1.f29732e4.js
  37. 0 0
      dist/static/js/chunk-2706ce08.9d027610.js
  38. 0 0
      dist/static/js/chunk-29450f06.8bf5f30d.js
  39. 0 0
      dist/static/js/chunk-364ec85f.b9b1ff78.js
  40. 0 0
      dist/static/js/chunk-39aa44c6.a3401f5d.js
  41. 0 0
      dist/static/js/chunk-3c25ba7e.107d2676.js
  42. 0 0
      dist/static/js/chunk-42d930ec.4f6536ac.js
  43. 0 0
      dist/static/js/chunk-46c89e1d.e5c38925.js
  44. 0 0
      dist/static/js/chunk-47d52dd1.f69b2b94.js
  45. 0 0
      dist/static/js/chunk-490be7be.0bf0ae37.js
  46. 0 0
      dist/static/js/chunk-4e081942.d8a70246.js
  47. 0 0
      dist/static/js/chunk-52c0e452.ee261088.js
  48. 0 0
      dist/static/js/chunk-54024c23.0a04acdf.js
  49. 0 0
      dist/static/js/chunk-54dc52ea.0e31144b.js
  50. 0 0
      dist/static/js/chunk-558c483d.93ed8b94.js
  51. 0 0
      dist/static/js/chunk-57a80b75.61266090.js
  52. 1 1
      dist/static/js/chunk-5d5328ef.db967e62.js
  53. 0 0
      dist/static/js/chunk-604c0a48.47a90847.js
  54. 0 0
      dist/static/js/chunk-6233cff4.5dae7cc4.js
  55. 0 0
      dist/static/js/chunk-7d5fe188.64e7f9ed.js
  56. 0 0
      dist/static/js/chunk-7fa10590.cd669878.js
  57. 0 0
      dist/static/js/chunk-84caf122.349f1fc5.js
  58. 0 0
      dist/static/js/chunk-884ae548.21efc59b.js
  59. 0 0
      dist/static/js/chunk-9af38c9e.b3afdee6.js
  60. 0 0
      dist/static/js/chunk-a5b4e03c.e18f89e8.js
  61. 0 0
      dist/static/js/chunk-a8a28dfa.3166024d.js
  62. 0 0
      dist/static/js/chunk-d1b51b1c.5b64aad2.js
  63. 0 0
      dist/static/js/chunk-fb171182.f59b17de.js
  64. 1 1
      src/api/buildTeam.js
  65. 5 2
      src/api/user.js
  66. 1 2
      src/layout/components/TagsView.vue
  67. 2 0
      src/router/index.js
  68. 0 1
      src/store/modules/tagsView.js
  69. 2 1
      src/store/modules/user.js
  70. 2 1
      src/views/activityScheduling/2021doubleDetail.vue
  71. 42 1
      src/views/liveClassManager/liveClassDetail.vue
  72. 31 6
      src/views/reportForm/index.vue
  73. 19 14
      src/views/returnVisitManager/components/waitVisit.vue
  74. 1 2
      src/views/returnVisitManager/index.vue
  75. 8 3
      src/views/smallStudentManager/components/index.vue
  76. 307 0
      src/views/studentLebaoManager/index.vue
  77. 118 32
      src/views/studentManager/modals/addMusic.vue

文件差异内容过多而无法显示
+ 0 - 0
dist/index.html


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/app.5834a8a7.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-01475be1.863804e3.css


+ 1 - 0
dist/static/css/chunk-0304056a.1252ae6f.css

@@ -0,0 +1 @@
+.alert[data-v-c142af6c]{margin-bottom:10px}[data-v-c142af6c] .description-title{margin-bottom:0}.description-label[data-v-c142af6c]{width:120px!important}.title[data-v-fe3a3f3e]{margin-bottom:30px;font-size:16px;color:#000}

+ 0 - 1
dist/static/css/chunk-05cfb244.32f5b2d6.css

@@ -1 +0,0 @@
-.m-container .m-wrap[data-v-38881173]{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;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.m-container .m-wrap .newBand[data-v-38881173]{margin:0 5px 0 10px}.m-container .m-wrap .title[data-v-38881173]{width:150px;text-align:right;color:#212121;font-weight:600}.m-container .m-wrap .organSelect[data-v-38881173]{width:260px!important}.m-container .m-wrap .el-tooltip.micon[data-v-38881173]{width:20px;height:20px;position:relative;margin-left:8px}.m-container .formCollapse[data-v-38881173]{border:none}.m-container .formCollapse[data-v-38881173] .el-collapse-item__header{padding:0 15px;border-bottom:none;background-color:#f8f8f8}.m-container .formCollapse[data-v-38881173] .el-collapse-item__wrap{padding:15px;border-bottom:none}.m-container .formCollapse[data-v-38881173] .el-collapse-item__arrow.is-active{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.m-container .formCollapse .el-tabs__nav[data-v-38881173],.m-container .formCollapse[data-v-38881173] .el-collapse-item__arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.m-container .formCollapse[data-v-38881173] .el-collapse-item__content{padding-bottom:0!important}.m-container .formCollapse .wrapTitle[data-v-38881173]{font-size:18px;position:relative;font-weight:600;margin-left:12px}.m-container .formCollapse .wrapTitle[data-v-38881173]:after{position:absolute;width:4px;height:18px;background:var(--color-primary);border-radius:2px;left:-13px;top:14px;content:""}[data-v-38881173] .el-input__icon.el-icon-date{height:40px!important}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-0697c9c2.db148317.css


+ 1 - 1
dist/static/css/chunk-84caf122.82f6731f.css → dist/static/css/chunk-0c4c24be.d2769db6.css

@@ -1 +1 @@
-.alert[data-v-440c906e]{margin:10px 0}[data-v-440c906e] .el-icon-check,[data-v-440c906e] .el-icon-close{font-size:18px;font-weight:700}[data-v-440c906e] .el-icon-close{color:red}[data-v-440c906e] .el-icon-check{color:var(--color-primary)}.title[data-v-7576dd06]{margin-bottom:20px}.amap-demo[data-v-7576dd06]{height:500px}
+.alert[data-v-440c906e]{margin:10px 0}[data-v-440c906e] .el-icon-check,[data-v-440c906e] .el-icon-close{font-size:18px;font-weight:700}[data-v-440c906e] .el-icon-close{color:red}[data-v-440c906e] .el-icon-check{color:var(--color-primary)}.title[data-v-bdf507a2]{margin-bottom:20px}.amap-demo[data-v-bdf507a2]{height:500px}

+ 0 - 1
dist/static/css/chunk-0d26fbdc.bc86060a.css

@@ -1 +0,0 @@
-.alert[data-v-83a8315c]{margin-bottom:10px}[data-v-83a8315c] .description-title{margin-bottom:0}.description-label[data-v-83a8315c]{width:120px!important}.title[data-v-3b09448b]{margin-bottom:30px;font-size:16px;color:#000}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-106cf271.04918dd8.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-110057a1.bca64bea.css


+ 0 - 1
dist/static/css/chunk-364ec85f.5efe3095.css

@@ -1 +0,0 @@
-.msg[data-v-2c6dd5c4]{min-width:120px}.label[data-v-2c6dd5c4]{width:520px}[data-v-2c6dd5c4] .description-title{margin-bottom:0}.returnDialog[data-v-2c6dd5c4] .description-view .description-content{white-space:normal!important}.flexBox[data-v-2c6dd5c4]{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-align:center;-ms-flex-align:center;align-items:center}.img-container[data-v-2c6dd5c4]{margin:10px auto}.item[data-v-2c6dd5c4]{width:150px;margin-top:10px;margin-right:10px;display:inline-block;position:relative}.img[data-v-2c6dd5c4]{width:150px;height:150px}.ctrl-bar[data-v-2c6dd5c4]{background-color:rgba(0,0,0,.45);height:30px;position:absolute;top:0;width:100%;z-index:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:0 15px}.ctrl-bar i[data-v-2c6dd5c4]{color:#fff;cursor:pointer}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-39aa44c6.51e0dcc1.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-3c25ba7e.5bfad279.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-42d930ec.18cc7d8c.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-47d52dd1.098c9ec2.css


+ 1 - 1
dist/static/css/chunk-52c0e452.3fa80cad.css → dist/static/css/chunk-490be7be.bf6548d7.css

@@ -1 +1 @@
-.dialog-footer[data-v-07e9e40c]{display:block;text-align:right;margin-top:20px}.title[data-v-3b09448b]{margin-bottom:30px;font-size:16px;color:#000}.dialog-footer[data-v-4d102b4c]{display:block;text-align:right;margin-top:20px}.newBand[data-v-70d1afde]{display:inline-block;margin-right:10px}.right-code .title[data-v-70d1afde]{font-size:18px;text-align:center;padding-bottom:8px}[data-v-70d1afde] .studentInfo .multiple.el-select{width:185px!important}.red[data-v-70d1afde]{color:red}.demo-table-expand label[data-v-70d1afde]{width:150px;color:#99a9bf}.demo-table-expand .el-form-item[data-v-70d1afde]{margin-right:0;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;position:relative}.demo-table-expand .el-form-item__label[data-v-70d1afde]{z-index:100}[data-v-70d1afde] .el-table__expanded-cell[class*=cell]{padding:20px 0 20px 110px}.schoolWrap[data-v-70d1afde]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
+.dialog-footer[data-v-07e9e40c]{display:block;text-align:right;margin-top:20px}.title[data-v-fe3a3f3e]{margin-bottom:30px;font-size:16px;color:#000}.dialog-footer[data-v-4d102b4c]{display:block;text-align:right;margin-top:20px}.newBand[data-v-70d1afde]{display:inline-block;margin-right:10px}.right-code .title[data-v-70d1afde]{font-size:18px;text-align:center;padding-bottom:8px}[data-v-70d1afde] .studentInfo .multiple.el-select{width:185px!important}.red[data-v-70d1afde]{color:red}.demo-table-expand label[data-v-70d1afde]{width:150px;color:#99a9bf}.demo-table-expand .el-form-item[data-v-70d1afde]{margin-right:0;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;position:relative}.demo-table-expand .el-form-item__label[data-v-70d1afde]{z-index:100}[data-v-70d1afde] .el-table__expanded-cell[class*=cell]{padding:20px 0 20px 110px}.schoolWrap[data-v-70d1afde]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-54dc52ea.6666b687.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-57a80b75.f2d6c62f.css


文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-5d5328ef.8dea7888.css


+ 1 - 0
dist/static/css/chunk-7d5fe188.1cc8417a.css

@@ -0,0 +1 @@
+.m-container .m-wrap[data-v-6705203e]{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;width:100%;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:16px}.m-container .m-wrap .newBand[data-v-6705203e]{margin:0 5px 0 10px}.m-container .m-wrap .title[data-v-6705203e]{width:150px;text-align:right;color:#212121;font-weight:600}.m-container .m-wrap .organSelect[data-v-6705203e]{width:260px!important}.m-container .m-wrap .el-tooltip.micon[data-v-6705203e]{width:20px;height:20px;position:relative;margin-left:8px}.m-container .formCollapse[data-v-6705203e]{border:none}.m-container .formCollapse[data-v-6705203e] .el-collapse-item__header{padding:0 15px;border-bottom:none;background-color:#f8f8f8}.m-container .formCollapse[data-v-6705203e] .el-collapse-item__wrap{padding:15px;border-bottom:none}.m-container .formCollapse[data-v-6705203e] .el-collapse-item__arrow.is-active{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.m-container .formCollapse .el-tabs__nav[data-v-6705203e],.m-container .formCollapse[data-v-6705203e] .el-collapse-item__arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.m-container .formCollapse[data-v-6705203e] .el-collapse-item__content{padding-bottom:0!important}.m-container .formCollapse .wrapTitle[data-v-6705203e]{font-size:18px;position:relative;font-weight:600;margin-left:12px}.m-container .formCollapse .wrapTitle[data-v-6705203e]:after{position:absolute;width:4px;height:18px;background:var(--color-primary);border-radius:2px;left:-13px;top:14px;content:""}[data-v-6705203e] .el-input__icon.el-icon-date{height:40px!important}

+ 0 - 0
dist/static/css/chunk-f05037ec.f9ad12bf.css → dist/static/css/chunk-7fa10590.b7b99272.css


+ 1 - 0
dist/static/css/chunk-884ae548.3e965d73.css

@@ -0,0 +1 @@
+.visitBtnWrap[data-v-bec85dfc]{position:absolute;right:90px;top:82px;z-index:20}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/css/chunk-9af38c9e.68346bbd.css


+ 0 - 1
dist/static/css/chunk-a5b4e03c.79e41244.css

@@ -1 +0,0 @@
-.visitBtnWrap[data-v-690f83c2]{position:absolute;right:90px;top:82px;z-index:20}

+ 0 - 0
dist/static/css/chunk-2536450f.0b21f796.css → dist/static/css/chunk-a8a28dfa.a2c101ae.css


+ 1 - 0
dist/static/css/chunk-d1b51b1c.d1501f00.css

@@ -0,0 +1 @@
+.width100[data-v-4c052e80]{width:100%!important}.tableWrap[data-v-5b832c9c]{margin-top:20px}

文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.124bd157.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/app.51e382aa.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-01475be1.4cda865f.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-0304056a.028b3e63.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-05cfb244.9642c3f0.js


文件差异内容过多而无法显示
+ 1 - 1
dist/static/js/chunk-0697c9c2.31999062.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-0c4c24be.027c63e4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-0d26fbdc.6ff41c75.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-106cf271.f93d1d46.js


文件差异内容过多而无法显示
+ 1 - 1
dist/static/js/chunk-110057a1.f29732e4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-2706ce08.9d027610.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-29450f06.8bf5f30d.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-364ec85f.b9b1ff78.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-39aa44c6.a3401f5d.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-3c25ba7e.107d2676.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-42d930ec.4f6536ac.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-46c89e1d.e5c38925.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-47d52dd1.f69b2b94.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-490be7be.0bf0ae37.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-4e081942.d8a70246.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-52c0e452.ee261088.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-54024c23.0a04acdf.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-54dc52ea.0e31144b.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-558c483d.93ed8b94.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-57a80b75.61266090.js


文件差异内容过多而无法显示
+ 1 - 1
dist/static/js/chunk-5d5328ef.db967e62.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-604c0a48.47a90847.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-6233cff4.5dae7cc4.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-7d5fe188.64e7f9ed.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-7fa10590.cd669878.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-84caf122.349f1fc5.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-884ae548.21efc59b.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-9af38c9e.b3afdee6.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-a5b4e03c.e18f89e8.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-a8a28dfa.3166024d.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-d1b51b1c.5b64aad2.js


文件差异内容过多而无法显示
+ 0 - 0
dist/static/js/chunk-fb171182.f59b17de.js


+ 1 - 1
src/api/buildTeam.js

@@ -1489,7 +1489,7 @@ export function getInstrument(data) {
   });
 }
 
-// 获取乐保列表
+// 删除乐保列表
 export function studentInstrumentDel(data) {
   return request2({
     url: api + `/studentInstrument/del`,

+ 5 - 2
src/api/user.js

@@ -17,11 +17,14 @@ export function getInfo () {
   })
 }
 // 登出
-export function logout (data) {
+export function logout () {
   return request({
     url: '/api-auth/exit',
     method: 'post',
-    data: qs.stringify(data)
+    headers: {
+      'content-type': 'application/x-www-form-urlencoded'
+    },
+    data: {},
   })
 }
 

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

@@ -63,7 +63,7 @@ export default {
     },
   },
   watch: {
-    $route() {console.log('添加',this.$route)
+    $route() {
       this.addViewTags();
 
       this.moveToCurrentTag();
@@ -95,7 +95,6 @@ export default {
       }
     },
    async '$route.meta.title'(val){
-      console.log(this.$route.meta.title,'添加')
        await this.$store.dispatch("addVisitedViews", this.$route);
     }
   },

+ 2 - 0
src/router/index.js

@@ -561,6 +561,8 @@ export const asyncRoutes = {
   // 小小艺术家训练营
   littleArtistCamp:()=>import('@/views/littleArtistCamp'),
   liveShopManger:()=>import('@/views/liveShopManger'),
+  // 学员乐保
+  studentLebaoManager:()=>import('@/views/studentLebaoManager'),
 }
 
 export default router

+ 0 - 1
src/store/modules/tagsView.js

@@ -7,7 +7,6 @@ const tagsView = {
   mutations: {
     ADD_VISITED_VIEWS: (state, view) => {
       // debugger
-      console.log(view)
       if (state.visitedViews.some(v => v.path === view.path)) {
         state.visitedViews.forEach(v => {
           if (v.path === view.path) {

+ 2 - 1
src/store/modules/user.js

@@ -210,7 +210,8 @@ const actions = {
   logout({ commit }) {
     return new Promise((resolve, reject) => {
       logout()
-        .then(() => {
+        .then((res) => {
+          console.log(res)
           commit("SET_TOKEN", "");
           removeToken();
           setToken("");

+ 2 - 1
src/views/activityScheduling/2021doubleDetail.vue

@@ -140,8 +140,9 @@ import load from "@/utils/loading";
 import {courseViewTypeList } from "@/utils/searchArray";
 import { getDoubleElevenDetail,  } from "./api";
 import { Export } from "@/utils/downLoadFile";
-import cleanDeep from "clean-deep";
+
 import { getTimes } from "@/utils";
+import cleanDeep from "clean-deep";
 import qs from "qs";
 const typeList = [
   { value: 1, label: "1v1 20节" },

+ 42 - 1
src/views/liveClassManager/liveClassDetail.vue

@@ -56,7 +56,7 @@
           <el-input
             v-model.trim="searchForm.search"
             clearable
-              @keyup.enter.native="
+            @keyup.enter.native="
               (e) => {
                 e.target.blur();
                 $refs.searchForm.save();
@@ -69,6 +69,15 @@
         <el-form-item>
           <el-button native-type="submit" type="primary">搜索</el-button>
           <el-button native-type="reset" type="danger">重置</el-button>
+          <el-button
+            type="primary"
+            v-if="tableList.length > 0"
+            v-permission="
+              'export/liveBroadcastRoomMember'
+            "
+            @click="exportStudent"
+            >导出</el-button
+          >
         </el-form-item>
       </save-form>
       <div class="tableWrap">
@@ -82,6 +91,7 @@
             prop="studentId"
             label="学员编号"
           ></el-table-column>
+
           <el-table-column
             align="center"
             prop="studentName"
@@ -89,6 +99,16 @@
           ></el-table-column>
           <el-table-column
             align="center"
+            prop="organName"
+            label="分部"
+          ></el-table-column>
+          <el-table-column
+            align="center"
+            prop="musicGroupName"
+            label="乐团"
+          ></el-table-column>
+          <el-table-column
+            align="center"
             prop="phone"
             label="手机号"
           ></el-table-column>
@@ -180,10 +200,13 @@
 </template>
 <script>
 import pagination from "@/components/Pagination/index";
+import cleanDeep from "clean-deep";
+import qs from "qs";
 import {
   getLiveBroadcastRoomDetail,
   getLiveBroadcastRoomDetailList,
 } from "./api";
+import { Export } from "@/utils/downLoadFile";
 export default {
   components: { pagination },
   data() {
@@ -264,6 +287,24 @@ export default {
       this.activeVideo = row;
       this.videoVisible = true;
     },
+    exportStudent() {
+      let obj = {
+          rows: this.rules.limit,
+          page: this.rules.page,
+          roomUid: this.$route.query.roomUid,
+          search: this.searchForm.search,
+        };
+      Export(
+        this,
+        {
+          url: "/api-web/export/liveBroadcastRoomMember",
+          fileName: `"${this.detail.roomTitle}"参与学员.xls`,
+          method: "post",
+          params: qs.stringify(cleanDeep(obj)),
+        },
+        `您确定导出"${this.detail.roomTitle}"参与学员?`
+      );
+    },
   },
 };
 </script>

+ 31 - 6
src/views/reportForm/index.vue

@@ -181,6 +181,18 @@
                 :value="item.id"
               ></el-option>
             </el-select>
+            <el-date-picker
+              v-model.trim="cloudTimer"
+              style="width: 360px; margin-left: 15px"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              :picker-options="{
+                firstDayOfWeek: 1,
+              }"
+            ></el-date-picker>
             <!-- <el-button
               style="margin-left: 10px"
               type="primary"
@@ -768,7 +780,10 @@
           <template slot="title">
             <p class="wrapTitle">财务数据</p>
           </template>
-          <div class="m-wrap" v-permission="'export/EXPORT_OPERATING_REPORT_NEW'">
+          <div
+            class="m-wrap"
+            v-permission="'export/EXPORT_OPERATING_REPORT_NEW'"
+          >
             <div class="title">经营报表导出:</div>
             <el-date-picker
               v-model="operatingMouth"
@@ -1046,7 +1061,8 @@ export default {
       trainingOrganId: [],
       trainingTimer: [],
       visitmouth: "",
-      operatingMouth:''
+      operatingMouth: "",
+      cloudTimer: [],
     };
   },
   mounted() {
@@ -1776,9 +1792,18 @@ export default {
       };
     },
     exportTrain() {
-      return {
-        organId: this.trainOrganId,
-      };
+      let cloudTeacherTrainStartDate, cloudTeacherTrainEndDate;
+      if (this.cloudTimer && this.cloudTimer.length > 0) {
+        cloudTeacherTrainStartDate = this.cloudTimer[0];
+        cloudTeacherTrainEndDate = this.cloudTimer[1];
+      } else {
+        cloudTeacherTrainStartDate = null;
+        cloudTeacherTrainEndDate = null;
+      }
+
+      let obj = { organId: this.trainOrganId,cloudTeacherTrainStartDate, cloudTeacherTrainEndDate};
+      console.log(obj,'exportTrain')
+      return obj;
     },
     exportDefaultSalary() {
       let organIdList = this.teacherDefaultSalaryOrganId.join(",");
@@ -1871,7 +1896,7 @@ export default {
       let data = { date: this.mouth };
       return data;
     },
-    exportOperating(){
+    exportOperating() {
       let data = { date: this.operatingMouth };
       return data;
     },

+ 19 - 14
src/views/returnVisitManager/components/waitVisit.vue

@@ -14,7 +14,7 @@
         <el-form-item>
           <el-input
             placeholder="学员姓名/编号/手机号"
-            v-model.trim="searchForm.student"
+            v-model.trim="searchForm.search"
             @keyup.enter.native="
               (e) => {
                 e.target.blur();
@@ -45,9 +45,8 @@
             clearable
             filterable
           >
-          <el-option :value="1" label="已回访"></el-option>
-            <el-option :value="0" label="未回访"></el-option>
-
+            <el-option value="1" label="已回访"></el-option>
+            <el-option value="0" label="未回访"></el-option>
           </el-select>
         </el-form-item>
         <!-- @change="handleChange" -->
@@ -63,11 +62,10 @@
         </el-form-item> -->
         <el-form-item>
           <el-date-picker
-            v-model.trim="searchForm.visitCycle"
-
+            v-model.trim="searchForm.month"
+            value-format="yyyy-MM"
             type="month"
             placeholder="回访周期"
-
           >
           </el-date-picker>
         </el-form-item>
@@ -85,7 +83,10 @@
             <template slot-scope="scope">
               <div @click="gotoStudent(scope.row.studentId)">
                 <p>
-                  <el-button type="text">{{ scope.row.studentName }}<br>  ({{ scope.row.studentId }})</el-button>
+                  <el-button type="text"
+                    >{{ scope.row.studentName }}<br />
+                    ({{ scope.row.studentId }})</el-button
+                  >
                 </p>
               </div>
             </template>
@@ -105,7 +106,7 @@
           </el-table-column>
           <el-table-column align="center" prop="isVisit" label="回访状态">
             <template slot-scope="scope">
-              <p>{{ scope.row.createTime?'已回访':'未回访' }}</p>
+              <p>{{ scope.row.createTime ? "已回访" : "未回访" }}</p>
             </template>
           </el-table-column>
 
@@ -113,7 +114,9 @@
             <template slot-scope="scope">
               <div>
                 {{
-                  scope.row.createTime ? scope.row.createTime.split(" ")[0] : "--"
+                  scope.row.createTime
+                    ? scope.row.createTime.split(" ")[0]
+                    : "--"
                 }}
               </div>
             </template>
@@ -173,11 +176,10 @@ export default {
   data() {
     return {
       searchForm: {
-        student: "",
+        search: "",
         organId: "",
-        visiterType: "",
-        isVisit: '',
-        visitCycle: '',
+        visitFlag: "",
+        month: "",
       },
 
       visitChiose: visitChiose1,
@@ -216,6 +218,9 @@ export default {
     if (this.$route.query.typeList && this.$route.query.typeList.length > 0) {
       this.searchForm.typeList = this.$route.query.typeList;
     }
+    if(!this.searchForm.month){
+      this.searchForm.month = this.$helpers.dayjs().format("YYYY-MM");
+    }
     this.getList();
     if (this.$route.query.search || this.$route.query.timer) {
       // console.log( )

+ 1 - 2
src/views/returnVisitManager/index.vue

@@ -37,13 +37,12 @@ export default {
 
     if(this.$route.query.activeIndex){
       this.activeIndex = this.$route.query.activeIndex
-      console.log(this.$route.query, this.activeIndex)
     }
 
   },
   methods: {
     handleClick(evt) {
-      console.log(evt)
+      // console.log(evt)
       // this.changeHash(evt.name);
     },
   },

+ 8 - 3
src/views/smallStudentManager/components/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="statistics">
-    <el-collapse v-model="activeNames" class="statisticsCollapse">
+    <el-collapse v-model="activeNames" class="statisticsCollapse" accordion @change="changeCollapse">
       <el-collapse-item name="1">
         <template slot="title">
           <div class="titleWrap">
@@ -66,6 +66,11 @@ export default {
         this.statistic = res.data || {};
       } catch {}
     },
+    changeCollapse(val){
+    if(val==1){
+      this.getList()
+    }
+    }
   },
   computed: {
     organIds() {
@@ -74,9 +79,8 @@ export default {
     isSearchs: {
       get() {
         let flag = this.isSearch();
-        if(this.flag != flag){
+        if((this.flag != flag)&&this.activeNames==1){
            this.getList()
-                 console.log('调用isSearchTable',flag)
         }
        this.flag = flag
 
@@ -84,6 +88,7 @@ export default {
       },
     },
   },
+
 };
 </script>
 

+ 307 - 0
src/views/studentLebaoManager/index.vue

@@ -0,0 +1,307 @@
+<template>
+  <div class="m-container">
+    <h2>
+      <div class="squrt"></div>
+      学员乐保
+    </h2>
+    <div class="m-core">
+      <save-form
+        :inline="true"
+        class="searchForm"
+        ref="searchForm"
+        :model="searchForm"
+        @submit="onSearch"
+        @reset="onReSet"
+      >
+        <el-form-item prop="search">
+          <el-input
+            placeholder="学员编号/姓名"
+            clearable
+            @keyup.enter.native="
+              (e) => {
+                e.target.blur();
+                $refs.searchForm.save();
+                onSearch();
+              }
+            "
+            v-model.trim="searchForm.search"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="specification">
+          <el-input
+            placeholder="具体型号"
+            clearable
+            @keyup.enter.native="
+              (e) => {
+                e.target.blur();
+                $refs.searchForm.save();
+                onSearch();
+              }
+            "
+            v-model.trim="searchForm.specification"
+          ></el-input>
+        </el-form-item>
+        <el-form-item prop="goodsCategoryId">
+          <el-select
+            v-model.trim="searchForm.goodsCategoryId"
+            clearable
+            placeholder="乐器分类"
+          >
+            <el-option
+              v-for="(item, index) in categoryList"
+              :key="index"
+              :label="item.label"
+              :value="item.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="status">
+          <el-select
+            v-model.trim="searchForm.status"
+            filterable
+            clearable
+            placeholder="是否乐保"
+          >
+            <el-option value="0" label="否"></el-option>
+            <el-option value="1" label="是"></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item>
+          <el-button native-type="submit" type="danger">搜索</el-button>
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" native-type="reset">重置</el-button>
+        </el-form-item>
+      </save-form>
+      <el-button
+        @click="operationStudent('create')"
+        type="primary"
+        v-permission="'studentInstrument/add'"
+        >新增乐器</el-button
+      >
+      <div class="tableWrap">
+        <el-table
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="tableList"
+        >
+          <el-table-column label="学员信息" align="center">
+            <template slot-scope="scope">
+              <div @click="gotoStudent(scope.row.studentId)">
+                <p>
+                  <el-button type="text"
+                    >{{ scope.row.studentName }}<br />
+                    ({{ scope.row.studentId }})</el-button
+                  >
+                </p>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="学员声部" align="center">
+            <template slot-scope="scope">
+              <div>
+                <p>
+                  {{ scope.row.subjectName }}
+                </p>
+              </div>
+            </template>
+          </el-table-column>
+
+          <el-table-column label="乐器名称" align="center">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.goodsName }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column label="具体型号" align="center">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.specification }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column label="乐器分类" align="center">
+            <template slot-scope="scope">
+              <copy-text>{{ scope.row.goodsCategoryName }}</copy-text>
+            </template>
+          </el-table-column>
+          <el-table-column label="是否乐保" align="center" prop="teacherName">
+            <template slot-scope="scope">
+              {{ scope.row.status ? "是" : "否" }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="乐保有效期"
+            align="center"
+            width="350px"
+            prop="studentNum"
+          >
+            <template slot-scope="scope">
+              <div v-if="scope.row.startTime && scope.row.endTime">
+                {{ scope.row.startTime }}~{{ scope.row.endTime }}
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="操作" align="center">
+            <template slot-scope="scope">
+              <auth :auths="['studentInstrument/update']">
+                <el-button
+                  type="text"
+                  @click="operationStudent('update', scope.row)"
+                  >修改</el-button
+                >
+              </auth>
+              <auth :auths="['studentInstrument/del']">
+                <el-button type="text" @click="removeMusic(scope.row)"
+                  >删除</el-button
+                >
+              </auth>
+            </template>
+          </el-table-column>
+        </el-table>
+        <pagination
+          sync
+          :total.sync="pageInfo.total"
+          :page.sync="pageInfo.page"
+          :limit.sync="pageInfo.limit"
+          :page-sizes="pageInfo.page_size"
+          @pagination="getList"
+        />
+      </div>
+      <el-dialog
+        :title="operationStatus == 'create' ? '新增乐器' : '修改乐器'"
+        width="600px"
+        :visible.sync="addMusicVisible"
+        v-if="addMusicVisible"
+      >
+        <addMusic
+          :categoryList="categoryList"
+          :operationData="operationData"
+          :operationStatus="operationStatus"
+          :chioseStudent="true"
+          ref="addMusic"
+          @getList="getList"
+          @close="addMusicVisible = false"
+        />
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="addMusicVisible = false">取 消</el-button>
+          <el-button type="primary" @click="addMusicSubmit">确 定</el-button>
+        </span>
+      </el-dialog>
+    </div>
+  </div>
+</template>
+<script>
+import pagination from "@/components/Pagination/index";
+import addMusic from "@/views/studentManager/modals/addMusic";
+import { getInstrument, studentInstrumentDel } from "@/api/buildTeam";
+import { categoryListTree } from "@/api/businessManager";
+
+export default {
+  components: { pagination, addMusic },
+  data() {
+    return {
+      soundLists: [],
+      tableList: [],
+      searchForm: {
+        specification: "",
+        goodsCategoryId: "",
+        studentId: "",
+      },
+      pageInfo: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50], // 选择限制显示条数
+      },
+      operationStatus: "create",
+      operationData: null,
+      addMusicVisible: false,
+      categoryList: [],
+    };
+  },
+  mounted() {
+    this.getCategory();
+    this.getList();
+  },
+  methods: {
+    onSearch() {
+      this.pageInfo.page = 1;
+      this.getList();
+    },
+    onReSet() {
+      this.$refs["searchForm"].resetFields();
+      this.getList();
+    },
+    async getList() {
+      try {
+        const res = await getInstrument({
+          ...this.searchForm,
+          rows: this.pageInfo.limit,
+          page: this.pageInfo.page,
+        });
+        this.tableList = res.data.rows;
+        this.pageInfo.total = res.data.total;
+      } catch (e) {
+        console.log(e);
+      }
+    },
+    addMusicSubmit() {
+      this.$refs.addMusic.addMusicSubmit();
+    },
+    operationStudent(type, row) {
+      if (type == "update") {
+        this.operationData = row;
+      } else if (type == "create") {
+        this.operationData = null;
+      }
+      this.operationStatus = type;
+      this.addMusicVisible = true;
+    },
+    removeMusic(row) {
+      // 删除乐器
+      this.$confirm(`您确定删除吗?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(async () => {
+        try {
+          let res = await studentInstrumentDel({
+            id: row.id,
+            studentId: row.studentId,
+          });
+          this.$message.success("删除成功");
+          this.getList();
+        } catch {}
+      });
+    },
+    getCategory() {
+      let params = {
+        delFlag: 0,
+        rows: 9999,
+      };
+      categoryListTree(params).then((res) => {
+        let result = res.data;
+        if (res.code == 200) {
+          let tempArray = [];
+          result.rows.forEach((row) => {
+            tempArray.push({
+              label: row.name,
+              value: row.id,
+            });
+          });
+          this.categoryList = tempArray;
+        }
+      });
+    },
+    gotoStudent(search) {
+      this.$router.push({
+        name: "studentList",
+        params: { search: search },
+      });
+    },
+  },
+};
+</script>
+<style lang="scss" scoped>
+.tableWrap {
+  margin-top: 20px;
+}
+</style>

+ 118 - 32
src/views/studentManager/modals/addMusic.vue

@@ -1,6 +1,32 @@
 <template>
   <div>
     <el-form :model="musicForm" label-width="110px" ref="form">
+      <el-form-item label="选择学员" prop="studentId" v-if="this.chioseStudent"  :rules="[
+          { required: true, message: '请选择学员', trigger: 'blur' },
+        ]">
+        <el-select
+        style="width: 400px !important"
+          v-model.trim="musicForm.studentId"
+          clearable
+          placeholder="请选择"
+          remote
+          filterable
+          :remote-method="remoteMethod"
+          :loading="remoteLoading"
+        >
+          <el-option
+            v-for="item in studentList"
+            :key="item.userId"
+            :label="item.username"
+            :value="item.userId"
+          >
+            <span style="float: left">{{ item.username }}</span>
+            <span style="float: right; color: #8492a6; font-size: 13px">{{
+              item.userId
+            }}</span>
+          </el-option>
+        </el-select>
+      </el-form-item>
       <el-form-item
         label="乐器分类"
         prop="goodsCategoryId"
@@ -92,10 +118,12 @@
 <script>
 import { goodsQuery } from "@/api/businessManager";
 import { addStudentInstrument, updateStudentInstrument } from "@/api/buildTeam";
+import { getToken, getTenantId } from "@/utils/auth";
 import { getTimes } from "@/utils";
-import dayjs from 'dayjs'
+import axios from "axios";
+import dayjs from "dayjs";
 export default {
-  props: ["categoryList", "operationData", "operationStatus"],
+  props: ["categoryList", "operationData", "operationStatus", "chioseStudent"],
   data() {
     return {
       musicForm: {
@@ -108,30 +136,32 @@ export default {
       pickerOptions: {
         firstDayOfWeek: 1,
         disabledDate(time) {
-          let times = dayjs(dayjs().format('YYYY-MM-DD')).valueOf()
+          let times = dayjs(dayjs().format("YYYY-MM-DD")).valueOf();
           return times > time.getTime();
         },
       },
       typeList: this.categoryList,
       musicList: [],
+      remoteLoading: false,
+      studentList: [],
     };
   },
   async mounted() {
-    console.log(this.operationData)
-    let operationData = this.operationData
-    if(operationData) {
-      let musicForm = this.musicForm
-      musicForm.goodsCategoryId = operationData.goodsCategoryId
-      if(operationData.goodsCategoryId) {
-        await this.changeCategory(operationData.goodsCategoryId)
+    console.log(this.operationData);
+    let operationData = this.operationData;
+    if (operationData) {
+      let musicForm = this.musicForm;
+      musicForm.goodsCategoryId = operationData.goodsCategoryId;
+      if (operationData.goodsCategoryId) {
+        await this.changeCategory(operationData.goodsCategoryId);
       }
-      musicForm.goodsId = operationData.goodsId
-      musicForm.goodsName = operationData.goodsName
-      musicForm.status = operationData.status + ''
-      musicForm.date = operationData.endTime || null
-
-
-      musicForm.id = operationData.id
+      musicForm.studentId = operationData.studentId;
+      musicForm.goodsId = operationData.goodsId;
+      musicForm.goodsName = operationData.goodsName;
+      musicForm.status = operationData.status + "";
+      musicForm.date = operationData.endTime || null;
+      musicForm.id = operationData.id;
+      this.remoteMethod(musicForm.studentId);
     }
   },
   methods: {
@@ -139,7 +169,11 @@ export default {
       this.musicForm.goodsName = "";
       this.musicForm.goodsId = null;
       if (val) {
-        goodsQuery({ goodsCategoryId: val, rows: 99999, type: 'INSTRUMENT' }).then((res) => {
+        goodsQuery({
+          goodsCategoryId: val,
+          rows: 99999,
+          type: "INSTRUMENT",
+        }).then((res) => {
           if (res.code == 200 && res.data) {
             this.musicList = res.data.rows;
           }
@@ -153,37 +187,89 @@ export default {
             const { date, status, ...rest } = this.musicForm;
             let obj = {
               ...rest,
-              status
+              status,
             };
             // 是否有乐保
-            if(status == 1) {
-              if(this.operationData && this.operationData.startTime) {
-                obj.startTime = this.operationData.startTime
+            if (status == 1) {
+              if (this.operationData && this.operationData.startTime) {
+                obj.startTime = this.operationData.startTime;
               } else {
-                obj.startTime = dayjs().format('YYYY-MM-DD HH:mm') + ':00'
+                obj.startTime = dayjs().format("YYYY-MM-DD HH:mm") + ":00";
               }
-              obj.endTime = date
+              obj.endTime = date;
             } else {
-              obj.startTime = ''
-              obj.endTime = ''
+              obj.startTime = "";
+              obj.endTime = "";
             }
-            if(this.operationStatus == 'create') {
+            if (this.operationStatus == "create") {
               const res = await addStudentInstrument(obj);
-              this.$message.success('添加成功')
-            } else if(this.operationStatus == 'update') {
+              this.$message.success("添加成功");
+            } else if (this.operationStatus == "update") {
               const res = await updateStudentInstrument(obj);
-              this.$message.success('修改成功')
+              this.$message.success("修改成功");
             }
-            this.$emit('close')
-            this.$emit('getList')
+            this.$emit("close");
+            this.$emit("getList");
           } catch (e) {
             console.log(e);
           }
         }
       });
     },
+    remoteMethod(query) {
+      if (query !== "") {
+        this.remoteLoading = true;
+        // 发请求搜索
+        const url = "/api-web/studentManage/queryStudentList";
+        const options = {
+          method: "post",
+          headers: {
+            Authorization: getToken(),
+            tenantId: getTenantId(),
+          },
+          data: {
+            rows: 999999,
+            search: query,
+          },
+          url,
+        };
+        this.remoteLoading = true;
+        // this.studentList = []
+        axios(options).then((res) => {
+          this.remoteLoading = false;
+          let result = res.data;
+          if (result.code == 200) {
+            // Array.prototype.splice.apply(this.studentList, result.data.rows);
+            if (result.data.rows && result.data.rows.length > 0) {
+              result.data.rows.forEach((item) => {
+                this.studentList.unshift(item);
+              });
+              this.studentList = this.deweight(this.studentList, "userId");
+            }
+            // this.studentList = this.studentList.concat(result.data.rows);
+          }
+        });
+      }
+    },
+    // 制定属性去重
+    deweight(arr, key) {
+      let res = [];
+      arr.forEach((item) => {
+        let list = [];
+        res.forEach((resitem) => {
+          list.push(resitem[key]);
+        });
+        if (list.indexOf(item[key]) === -1) {
+          res.push(item);
+        }
+      });
+      return res;
+    },
   },
 };
 </script>
 <style lang="scss" scoped>
+  .width100 {
+    width: 100%!important;
+  }
 </style>

部分文件因为文件数量过多而无法显示