Forráskód Böngészése

Merge branch 'online' into video-tcplayer

lex 1 éve
szülő
commit
6706f4273e
100 módosított fájl, 285 hozzáadás és 137 törlés
  1. 0 0
      dist/app.52844bd5bef58fbb3db4.js
  2. 0 0
      dist/app.fdd7c08e84ac60fc18aa.js
  3. 0 0
      dist/css/addVisit.33054c3d.css
  4. 0 0
      dist/css/addVisit.77efe897.css
  5. 1 0
      dist/css/addVisit~massOperation.4dc0600a.css
  6. 1 0
      dist/css/applyActive.6947e6f9.css
  7. 0 1
      dist/css/applyActive.f2aa4d2c.css
  8. 0 0
      dist/css/classSchedule.cafb4664.css
  9. 0 0
      dist/css/massMessage.c6e2612a.css
  10. 0 0
      dist/css/massOperation.18bc07ec.css
  11. 0 0
      dist/css/massOperation.5194a051.css
  12. 0 0
      dist/css/program.90abaa21.css
  13. 0 0
      dist/css/selectStudent.d1b44051.css
  14. 0 0
      dist/css/trainStatistics.4757e002.css
  15. 0 0
      dist/index.html
  16. 0 0
      dist/js/Account.8467419f.js
  17. 0 0
      dist/js/AppLogin.c12db35e.js
  18. 0 0
      dist/js/AppRegister.202db520.js
  19. 0 0
      dist/js/AppSetInfo.12cd053f.js
  20. 0 0
      dist/js/AppealDetail.e0281e33.js
  21. 0 0
      dist/js/AppealRecord.c0399e92.js
  22. 0 0
      dist/js/AppealResult.2b3be1cd.js
  23. 0 0
      dist/js/Approval.eb6184d5.js
  24. 0 0
      dist/js/ArrangeWork.9bd956b0.js
  25. 0 0
      dist/js/AssignStudent.a639c2f3.js
  26. 0 0
      dist/js/AssignStudent~GoodsOrder~GoodsOrderDetail~GoodsSale~StudentRepaireRecord.ce28f775.js
  27. 0 0
      dist/js/AssignStudent~GoodsSale.79f719e0.js
  28. 0 0
      dist/js/Attendance.82346d47.js
  29. 0 0
      dist/js/BookingSet.3e4643d8.js
  30. 0 0
      dist/js/Business.18792d59.js
  31. 0 0
      dist/js/CallNames.56e6c468.js
  32. 0 0
      dist/js/CcMe.a3b5cc7f.js
  33. 0 0
      dist/js/ClassDetail.013b676a.js
  34. 0 0
      dist/js/CourseApply.e267e4ce.js
  35. 0 0
      dist/js/CourseDetail.93b5ed80.js
  36. 0 0
      dist/js/CourseEvaluation.f57c28a6.js
  37. 0 0
      dist/js/ExchangeRecord.6835b911.js
  38. 0 0
      dist/js/GoodsOrder.a318b536.js
  39. 0 0
      dist/js/GoodsOrderDetail.bde37c64.js
  40. 0 0
      dist/js/GoodsSale.f1212e6b.js
  41. 0 0
      dist/js/HelpCenter.79c955e2.js
  42. 0 0
      dist/js/IStarted.031e729a.js
  43. 0 0
      dist/js/Leave.1554aa74.js
  44. 0 0
      dist/js/ManageEvaluation.ba53e730.js
  45. 0 0
      dist/js/MonthAppeal.45e9f932.js
  46. 0 0
      dist/js/PaymentResult.d622bd97.js
  47. 0 0
      dist/js/PeriodAdjust.91a37a1d.js
  48. 0 0
      dist/js/PeriodAdjust~PeriodChange.06942ccc.js
  49. 0 0
      dist/js/PeriodChange.8011105e.js
  50. 0 0
      dist/js/PeriodExchange.ba2f1d3c.js
  51. 0 0
      dist/js/PeriodRecord.52930666.js
  52. 0 0
      dist/js/Remuneration.594ff80d.js
  53. 0 0
      dist/js/StartedDetail.22a06f34.js
  54. 0 0
      dist/js/StudentRepaireRecord.f9aa9ff4.js
  55. 0 0
      dist/js/TeachingSchool.39d22cb2.js
  56. 0 0
      dist/js/TeachingSet.9f2c1c4a.js
  57. 0 0
      dist/js/UserProtocol.6ac3ffcf.js
  58. 0 0
      dist/js/VIPApply.497707d5.js
  59. 0 0
      dist/js/VIPApply~applyActive.c34489d5.js
  60. 0 0
      dist/js/activeCourseArrange.f869c4b1.js
  61. 0 0
      dist/js/activeDetail.47c90f07.js
  62. 0 0
      dist/js/activeProgram.340a32bd.js
  63. 0 0
      dist/js/addVisit.068d6c25.js
  64. 0 0
      dist/js/addVisit.a4b9433a.js
  65. 8 0
      dist/js/addVisit~massOperation.22924647.js
  66. 0 0
      dist/js/afterClassEvaluate.524e447a.js
  67. 0 0
      dist/js/afterClassEvaluateDetail.73f117ea.js
  68. 0 0
      dist/js/applyActive.ec3f80be.js
  69. 0 0
      dist/js/assistCenter.e10ac03f.js
  70. 0 0
      dist/js/auth.8e9e82ce.js
  71. 0 0
      dist/js/classSchedule.e9c07af1.js
  72. 0 0
      dist/js/liveRoomList.add7e461.js
  73. 0 0
      dist/js/massMessage.1f0b59eb.js
  74. 0 0
      dist/js/massMessage.bc56461f.js
  75. 0 0
      dist/js/massOperation.4e305a68.js
  76. 0 0
      dist/js/massOperation.dcd68066.js
  77. 0 0
      dist/js/order.9bdcb82e.js
  78. 0 0
      dist/js/previewVideo.67f1676c.js
  79. 0 0
      dist/js/privacy.b58a64ae.js
  80. 0 0
      dist/js/program.719369fb.js
  81. 0 0
      dist/js/program.f0b464fa.js
  82. 0 0
      dist/js/registerProtocol.6ab1dfab.js
  83. 0 0
      dist/js/selectStudent.34d0e55d.js
  84. 0 0
      dist/js/special.c79474c1.js
  85. 0 0
      dist/js/specialDetail.da9f3a66.js
  86. 0 0
      dist/js/studentDetail.705eec7e.js
  87. 0 0
      dist/js/studentList.5ae97400.js
  88. 0 0
      dist/js/trainDetail.8844ad62.js
  89. 0 0
      dist/js/trainStatistics.2b12b933.js
  90. 0 0
      dist/js/trainStatistics.e579ba26.js
  91. 0 0
      dist/js/visitDetail.6666bac1.js
  92. 0 0
      dist/js/visitList.3999956c.js
  93. 30 0
      package-lock.json
  94. 1 0
      package.json
  95. 206 0
      src/helpers/oss-file-upload.js
  96. 2 2
      src/views/activeCourseArrange/classSchedule.vue
  97. 23 103
      src/views/activeCourseArrange/selectStudent.vue
  98. 1 1
      src/views/activeProgram/program.vue
  99. 9 15
      src/views/applyActive/index.vue
  100. 3 15
      src/views/massMessage/index.vue

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/app.52844bd5bef58fbb3db4.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/app.fdd7c08e84ac60fc18aa.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/addVisit.33054c3d.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/addVisit.77efe897.css


+ 1 - 0
dist/css/addVisit~massOperation.4dc0600a.css

@@ -0,0 +1 @@
+[data-v-31cc2a9d] .van-popup--bottom{border-radius:.1rem .1rem 0 0;overflow:hidden}[data-v-31cc2a9d] .van-picker__cancel{color:#666}[data-v-31cc2a9d] .van-picker__confirm{color:#01c1b5}[data-v-31cc2a9d] .van-list__finished-text{color:silver}[data-v-31cc2a9d] .van-dropdown-menu__title{font-size:.17rem;color:#1a1a1a;line-height:inherit;height:auto}[data-v-31cc2a9d] .van-rate__item:not(:last-child){padding-right:.15rem}.van-button--primary[data-v-31cc2a9d]{background:#01c1b5;border:1px solid #01c1b5}.icon[data-v-31cc2a9d]{width:2rem;height:1.7rem;margin:.5rem auto .05rem}.icon_nodata[data-v-31cc2a9d]{background:url(../img/icon_nodata.74ba3251.png) no-repeat 50%;background-size:contain}.msg[data-v-31cc2a9d]{color:#aaa;font-size:.16rem;text-align:center;line-height:.22rem;position:relative;top:-.2rem}.full[data-v-31cc2a9d]{height:100vh}

+ 1 - 0
dist/css/applyActive.6947e6f9.css

@@ -0,0 +1 @@
+.apply[data-v-1c5f88cc]{min-height:100vh}.marginTop[data-v-1c5f88cc]{margin-top:.1rem;min-height:calc(100vh - 59px - .44rem)}

+ 0 - 1
dist/css/applyActive.f2aa4d2c.css

@@ -1 +0,0 @@
-.apply[data-v-6c288a0c]{min-height:100vh}.marginTop[data-v-6c288a0c]{margin-top:.1rem;min-height:calc(100vh - 59px - .44rem)}

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/classSchedule.cafb4664.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/massMessage.c6e2612a.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/massOperation.18bc07ec.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/massOperation.5194a051.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/program.90abaa21.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/selectStudent.d1b44051.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/css/trainStatistics.4757e002.css


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/index.html


+ 0 - 0
dist/js/Account.04579ea6.js → dist/js/Account.8467419f.js


+ 0 - 0
dist/js/AppLogin.8fcac96b.js → dist/js/AppLogin.c12db35e.js


+ 0 - 0
dist/js/AppRegister.45e1d10c.js → dist/js/AppRegister.202db520.js


+ 0 - 0
dist/js/AppSetInfo.e8c1e074.js → dist/js/AppSetInfo.12cd053f.js


+ 0 - 0
dist/js/AppealDetail.9c2d672e.js → dist/js/AppealDetail.e0281e33.js


+ 0 - 0
dist/js/AppealRecord.568e2673.js → dist/js/AppealRecord.c0399e92.js


+ 0 - 0
dist/js/AppealResult.8ed48f77.js → dist/js/AppealResult.2b3be1cd.js


+ 0 - 0
dist/js/Approval.e4016bbe.js → dist/js/Approval.eb6184d5.js


+ 0 - 0
dist/js/ArrangeWork.eb7dc516.js → dist/js/ArrangeWork.9bd956b0.js


+ 0 - 0
dist/js/AssignStudent.8bcf2a16.js → dist/js/AssignStudent.a639c2f3.js


+ 0 - 0
dist/js/AssignStudent~GoodsOrder~GoodsOrderDetail~GoodsSale~StudentRepaireRecord.7505744b.js → dist/js/AssignStudent~GoodsOrder~GoodsOrderDetail~GoodsSale~StudentRepaireRecord.ce28f775.js


+ 0 - 0
dist/js/AssignStudent~GoodsSale.110528b8.js → dist/js/AssignStudent~GoodsSale.79f719e0.js


+ 0 - 0
dist/js/Attendance.932e493f.js → dist/js/Attendance.82346d47.js


+ 0 - 0
dist/js/BookingSet.787ef2ab.js → dist/js/BookingSet.3e4643d8.js


+ 0 - 0
dist/js/Business.293e90ed.js → dist/js/Business.18792d59.js


+ 0 - 0
dist/js/CallNames.55f69b5d.js → dist/js/CallNames.56e6c468.js


+ 0 - 0
dist/js/CcMe.5edd4f7d.js → dist/js/CcMe.a3b5cc7f.js


+ 0 - 0
dist/js/ClassDetail.435c880d.js → dist/js/ClassDetail.013b676a.js


+ 0 - 0
dist/js/CourseApply.f2d15dc5.js → dist/js/CourseApply.e267e4ce.js


+ 0 - 0
dist/js/CourseDetail.24dfbaaa.js → dist/js/CourseDetail.93b5ed80.js


+ 0 - 0
dist/js/CourseEvaluation.ee1ff450.js → dist/js/CourseEvaluation.f57c28a6.js


+ 0 - 0
dist/js/ExchangeRecord.3eae5a9a.js → dist/js/ExchangeRecord.6835b911.js


+ 0 - 0
dist/js/GoodsOrder.e6f8780d.js → dist/js/GoodsOrder.a318b536.js


+ 0 - 0
dist/js/GoodsOrderDetail.200549f7.js → dist/js/GoodsOrderDetail.bde37c64.js


+ 0 - 0
dist/js/GoodsSale.744f2817.js → dist/js/GoodsSale.f1212e6b.js


+ 0 - 0
dist/js/HelpCenter.a52d5df4.js → dist/js/HelpCenter.79c955e2.js


+ 0 - 0
dist/js/IStarted.d7c61866.js → dist/js/IStarted.031e729a.js


+ 0 - 0
dist/js/Leave.667a3ae9.js → dist/js/Leave.1554aa74.js


+ 0 - 0
dist/js/ManageEvaluation.7ea2f391.js → dist/js/ManageEvaluation.ba53e730.js


+ 0 - 0
dist/js/MonthAppeal.0f000456.js → dist/js/MonthAppeal.45e9f932.js


+ 0 - 0
dist/js/PaymentResult.4181a175.js → dist/js/PaymentResult.d622bd97.js


+ 0 - 0
dist/js/PeriodAdjust.ce55daea.js → dist/js/PeriodAdjust.91a37a1d.js


+ 0 - 0
dist/js/PeriodAdjust~PeriodChange.276e01c5.js → dist/js/PeriodAdjust~PeriodChange.06942ccc.js


+ 0 - 0
dist/js/PeriodChange.603043cf.js → dist/js/PeriodChange.8011105e.js


+ 0 - 0
dist/js/PeriodExchange.8cb00da0.js → dist/js/PeriodExchange.ba2f1d3c.js


+ 0 - 0
dist/js/PeriodRecord.aad2389d.js → dist/js/PeriodRecord.52930666.js


+ 0 - 0
dist/js/Remuneration.7c351539.js → dist/js/Remuneration.594ff80d.js


+ 0 - 0
dist/js/StartedDetail.4c6ba61f.js → dist/js/StartedDetail.22a06f34.js


+ 0 - 0
dist/js/StudentRepaireRecord.c4210d93.js → dist/js/StudentRepaireRecord.f9aa9ff4.js


+ 0 - 0
dist/js/TeachingSchool.291162d1.js → dist/js/TeachingSchool.39d22cb2.js


+ 0 - 0
dist/js/TeachingSet.c829bb12.js → dist/js/TeachingSet.9f2c1c4a.js


+ 0 - 0
dist/js/UserProtocol.ab290bc1.js → dist/js/UserProtocol.6ac3ffcf.js


+ 0 - 0
dist/js/VIPApply.66e85a76.js → dist/js/VIPApply.497707d5.js


+ 0 - 0
dist/js/VIPApply~applyActive.5967e4f0.js → dist/js/VIPApply~applyActive.c34489d5.js


+ 0 - 0
dist/js/activeCourseArrange.4edc83be.js → dist/js/activeCourseArrange.f869c4b1.js


+ 0 - 0
dist/js/activeDetail.58bce891.js → dist/js/activeDetail.47c90f07.js


+ 0 - 0
dist/js/activeProgram.d754fb0c.js → dist/js/activeProgram.340a32bd.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/addVisit.068d6c25.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/addVisit.a4b9433a.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 8 - 0
dist/js/addVisit~massOperation.22924647.js


+ 0 - 0
dist/js/afterClassEvaluate.941dc530.js → dist/js/afterClassEvaluate.524e447a.js


+ 0 - 0
dist/js/afterClassEvaluateDetail.877fb128.js → dist/js/afterClassEvaluateDetail.73f117ea.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/applyActive.ec3f80be.js


+ 0 - 0
dist/js/assistCenter.c285221a.js → dist/js/assistCenter.e10ac03f.js


+ 0 - 0
dist/js/auth.3cb3b20b.js → dist/js/auth.8e9e82ce.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/classSchedule.e9c07af1.js


+ 0 - 0
dist/js/liveRoomList.8c97ef74.js → dist/js/liveRoomList.add7e461.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/massMessage.1f0b59eb.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/massMessage.bc56461f.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/massOperation.4e305a68.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/massOperation.dcd68066.js


+ 0 - 0
dist/js/order.b36c62d3.js → dist/js/order.9bdcb82e.js


+ 0 - 0
dist/js/previewVideo.fa19b60e.js → dist/js/previewVideo.67f1676c.js


+ 0 - 0
dist/js/privacy.56e61852.js → dist/js/privacy.b58a64ae.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/program.719369fb.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/program.f0b464fa.js


+ 0 - 0
dist/js/registerProtocol.b3fafa74.js → dist/js/registerProtocol.6ab1dfab.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/selectStudent.34d0e55d.js


+ 0 - 0
dist/js/special.b70d4985.js → dist/js/special.c79474c1.js


+ 0 - 0
dist/js/specialDetail.bf66a494.js → dist/js/specialDetail.da9f3a66.js


+ 0 - 0
dist/js/studentDetail.067dff14.js → dist/js/studentDetail.705eec7e.js


+ 0 - 0
dist/js/studentList.4aa5d0b0.js → dist/js/studentList.5ae97400.js


+ 0 - 0
dist/js/trainDetail.bf986546.js → dist/js/trainDetail.8844ad62.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/trainStatistics.2b12b933.js


A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 0 - 0
dist/js/trainStatistics.e579ba26.js


+ 0 - 0
dist/js/visitDetail.453a8bdf.js → dist/js/visitDetail.6666bac1.js


+ 0 - 0
dist/js/visitList.4b57d772.js → dist/js/visitList.3999956c.js


+ 30 - 0
package-lock.json

@@ -16,6 +16,7 @@
         "clean-deep": "^3.4.0",
         "copy-to-clipboard": "^3.3.1",
         "core-js": "^2.6.5",
+        "cos-js-sdk-v5": "^1.4.20",
         "dayjs": "^1.8.31",
         "e-icon-picker": "^1.1.7",
         "es6-promise": "^4.2.8",
@@ -3033,6 +3034,14 @@
         "@xtuc/long": "4.2.2"
       }
     },
+    "node_modules/@xmldom/xmldom": {
+      "version": "0.8.10",
+      "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
     "node_modules/@xtuc/ieee754": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -5215,6 +5224,14 @@
       "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
       "dev": true
     },
+    "node_modules/cos-js-sdk-v5": {
+      "version": "1.4.20",
+      "resolved": "https://registry.npmmirror.com/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.20.tgz",
+      "integrity": "sha512-cGpmVoKN3iYBtWo8Lwp059fOrT4yyb/+I6fVS++Zyop/ZFJswDRkjnrASViwYd8N+hi3qWVAa6ruvvBsLutEwg==",
+      "dependencies": {
+        "@xmldom/xmldom": "^0.8.6"
+      }
+    },
     "node_modules/cosmiconfig": {
       "version": "5.2.1",
       "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
@@ -19513,6 +19530,11 @@
         "@xtuc/long": "4.2.2"
       }
     },
+    "@xmldom/xmldom": {
+      "version": "0.8.10",
+      "resolved": "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw=="
+    },
     "@xtuc/ieee754": {
       "version": "1.2.0",
       "resolved": "https://registry.npmmirror.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -21351,6 +21373,14 @@
       "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==",
       "dev": true
     },
+    "cos-js-sdk-v5": {
+      "version": "1.4.20",
+      "resolved": "https://registry.npmmirror.com/cos-js-sdk-v5/-/cos-js-sdk-v5-1.4.20.tgz",
+      "integrity": "sha512-cGpmVoKN3iYBtWo8Lwp059fOrT4yyb/+I6fVS++Zyop/ZFJswDRkjnrASViwYd8N+hi3qWVAa6ruvvBsLutEwg==",
+      "requires": {
+        "@xmldom/xmldom": "^0.8.6"
+      }
+    },
     "cosmiconfig": {
       "version": "5.2.1",
       "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz",

+ 1 - 0
package.json

@@ -16,6 +16,7 @@
     "clean-deep": "^3.4.0",
     "copy-to-clipboard": "^3.3.1",
     "core-js": "^2.6.5",
+    "cos-js-sdk-v5": "^1.4.20",
     "dayjs": "^1.8.31",
     "e-icon-picker": "^1.1.7",
     "es6-promise": "^4.2.8",

+ 206 - 0
src/helpers/oss-file-upload.js

@@ -0,0 +1,206 @@
+import request from "./request";
+import axios from "axios";
+// import umiRequest from "umi-request";
+import COS from "cos-js-sdk-v5";
+export const ossSwitch = "tencent"; //as 'ks3' | 'tencent'; // 上传文件服务商
+const tencentBucket = "daya-online-1303457149";
+
+/**
+ * 管乐团 gyt/
+ * 酷乐秀 klx/
+ * 课堂乐器 ktqy/
+ * 管乐迷 gym/
+ */
+
+// 定义一个cos 对象
+/**
+ * 获取上传文件签名
+ * @param params 上传对应参数
+ * { filename: fileName,
+     bucketName: props.bucketName,
+     postData: {
+      filename: fileName,
+      acl: 'public-read',
+      key: fileName,
+      unknowValueField: []
+    }}
+ * @param oss 服务商 ks3 tencent
+ * @returns ”{'signatur'':'',''kssAccessKeyI'':'',''policy': '' }“
+ */
+export const getUploadSign = async (params) => {
+  const { bucketName, filename, postData } = params;
+  const ossType = ossSwitch;
+  let bucket = bucketName;
+  let file = filename;
+  // const key = postData.key;
+  let tempPostData = {};
+  if (ossType === "tencent") {
+    bucket = tencentBucket;
+    file = "gym/" + filename;
+
+    tempPostData = {
+      key: "gym/" + postData.key,
+    };
+  } else {
+    tempPostData = postData;
+  }
+  return request.post("/getUploadSign?pluginName=" + ossType, {
+    postData: tempPostData,
+    pluginName: ossType,
+    bucketName: bucket,
+    filename: file,
+  });
+};
+
+/**
+ * 使用组件上传时,调用方法
+ * @param param0
+ */
+export const onFileUpload = ({ file, action, data, onProgress, onFinish, onError }) => {
+  if (ossSwitch === "ks3") {
+    const fileParams = {
+      policy: data.policy,
+      signature: data.signature,
+      key: data.key,
+      acl: "public-read",
+      KSSAccessKeyId: data.KSSAccessKeyId,
+      name: data.name,
+    };
+    const formData = new FormData();
+    for (const key in fileParams) {
+      formData.append(key, fileParams[key]);
+    }
+    formData.append("file", data.file);
+    axios
+      .post(action, formData, {
+        onUploadProgress: ({ progress }) => {
+          onProgress({ percent: Math.ceil((progress || 0) * 100) });
+        },
+      })
+      .then(() => {
+        file.url = action + data.key;
+        onFinish();
+      })
+      .catch((error) => {
+        onError(error);
+      });
+  } else {
+    const cos = new COS({
+      Domain: "https://oss.dayaedu.com",
+      Protocol: "https",
+      // getAuthorization 必选参数
+      getAuthorization: async (options, callback) => {
+        callback({ Authorization: data.signature });
+      },
+    });
+    cos
+      .uploadFile({
+        Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
+        Region: "ap-nanjing" /* 存储桶所在地域,必须字段 */,
+        Key: `gym/${data.name}`,
+        /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
+        Body: data.file.file, // 上传文件对象
+        SliceSize: 1024 * 1024 * 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */,
+        onProgress: function (progressData) {
+          onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
+        },
+      })
+      .then((res) => {
+        // file.url = 'https://' + res.Location;
+        if (res.Location?.indexOf("http") >= 0) {
+          file.url = res.Location;
+        } else {
+          file.url = "https://" + res.Location;
+        }
+        onFinish();
+      })
+      .catch(() => {
+        onError();
+      });
+  }
+};
+
+export const onOnlyFileUpload = async (action, params) => {
+  if (ossSwitch === "ks3") {
+    const fileParams = {
+      policy: params.policy,
+      signature: params.signature,
+      key: params.key,
+      acl: "public-read",
+      KSSAccessKeyId: params.KSSAccessKeyId,
+      name: params.name,
+    };
+    const formData = new FormData();
+    for (const key in fileParams) {
+      formData.append(key, fileParams[key]);
+    }
+    formData.append("file", params.file);
+    let file = "";
+    let errorObj = null;
+    await axios
+      .post(action, formData, {
+        // onUploadProgress: ({ progress }) => {
+        //   console.log(progress);
+        //   onProgress({ percent: Math.ceil((progress || 0) * 100) });
+        // }
+      })
+      .then(() => {
+        file = action + params.key;
+      })
+      .catch((error) => {
+        // onError(error);
+        errorObj = error;
+        // throw new Error(error);
+      });
+    if (file) {
+      return file;
+    } else {
+      throw new Error(errorObj);
+    }
+  } else {
+    let file = "";
+    let errorObj = null;
+    // console.log(params, "params");
+    const cos = new COS({
+      Domain: "https://oss.dayaedu.com",
+      // getAuthorization 必选参数
+      getAuthorization: async (options, callback) => {
+        callback({ Authorization: params.signature });
+      },
+    });
+
+    await cos
+      .uploadFile({
+        Bucket: tencentBucket /* 填写自己的 bucket,必须字段 */,
+        Region: "ap-nanjing" /* 存储桶所在地域,必须字段 */,
+        Key: `gym/${params.name}`,
+        /* 存储在桶里的对象键(例如:1.jpg,a/b/test.txt,图片.jpg)支持中文,必须字段 */
+        Body: params.file, // 上传文件对象
+        SliceSize: 1024 * 1024 * 500 /* 触发分块上传的阈值,超过5MB使用分块上传,小于5MB使用简单上传。可自行设置,非必须 */,
+        // onProgress: function (progressData) {
+        //   onProgress({ percent: Math.ceil((progressData.percent || 0) * 100) });
+        // }
+      })
+      .then((res) => {
+        // file.url = 'https://' + res.Location;
+        // file = 'https://' + res.Location;
+        if (res.Location?.indexOf("http") >= 0) {
+          file = res.Location;
+        } else {
+          file = "https://" + res.Location;
+        }
+        // onFinish();
+      })
+      .catch((error) => {
+        // console.log(error, 'error');
+        // onError();
+        // throw new Error(error);
+        errorObj = error;
+      });
+    if (file) {
+      return file;
+    } else {
+      throw new Error(errorObj);
+    }
+  }
+};

+ 2 - 2
src/views/activeCourseArrange/classSchedule.vue

@@ -250,9 +250,9 @@ export default {
   async mounted() {
     this.students = this.$store.state.activeStudents;
     this.activeCourse = this.$store.state.activeCourse;
-    if (this.activeCourse.name == "乐理课") {
+    if (this.activeCourse.name == "小组课") {
       this.activeCourse.subjectId = null;
-      this.activeCourse.subjectName = "乐理课";
+      this.activeCourse.subjectName = "小组课";
     }
     // await this.$store.dispatch("setAllBranch");
     // this.allBranch = this.$store.state.allBranch;

+ 23 - 103
src/views/activeCourseArrange/selectStudent.vue

@@ -1,14 +1,7 @@
 <template>
   <div class="selectStudent">
     <div class="selectStudentWrap">
-      <van-search
-        class="searchWrap"
-        shape="round"
-        show-action
-        placeholder="学员姓名/编号/手机号"
-        v-model="search"
-        @search="onSearch()"
-      >
+      <van-search class="searchWrap" shape="round" show-action placeholder="学员姓名/编号/手机号" v-model="search" @search="onSearch()">
         <template #action>
           <div @click="onSearch()">搜索</div>
         </template>
@@ -27,58 +20,25 @@
             />
           </template>
         </van-dropdown-item> -->
-        <van-dropdown-item
-          title="声部"
-          ref="dropdown"
-          @close="onOpenDropdown('dropdownDrop')"
-        >
+        <van-dropdown-item title="声部" ref="dropdown" @close="onOpenDropdown('dropdownDrop')">
           <template slot="default">
-            <DropSelect
-              :options="option2"
-              @onFilter="onFilter2"
-              ref="dropdownDrop"
-            />
+            <DropSelect :options="option2" @onFilter="onFilter2" ref="dropdownDrop" />
           </template>
         </van-dropdown-item>
-        <van-dropdown-item
-          v-if="options3.length"
-          v-model="value3"
-          :options="options3"
-          @change="getStudents"
-        ></van-dropdown-item>
+        <van-dropdown-item v-if="options3.length" v-model="value3" :options="options3" @change="getStudents"></van-dropdown-item>
       </van-dropdown-menu>
     </div>
 
     <div class="students">
-      <van-cell
-        v-for="(stu, index) in studentsData"
-        :key="stu.value"
-        :title="stu.text"
-        :label="stu.subjectName"
-        center
-        clickable
-        @click="onSelectStudent(index)"
-      >
+      <van-cell v-for="(stu, index) in studentsData" :key="stu.value" :title="stu.text" :label="stu.subjectName" center clickable @click="onSelectStudent(index)">
         <div slot="label">
           <span>{{ stu.subjectName }}</span>
           <span style="margin-left: 10px"> {{ stu.phone }}</span>
         </div>
-        <img
-          v-if="stu.avatar"
-          slot="icon"
-          class="stuAvatar"
-          :src="stu.avatar"
-        />
-        <img
-          v-else
-          slot="icon"
-          class="stuAvatar"
-          src="@/assets/images/common/default_head_img.png"
-        />
+        <img v-if="stu.avatar" slot="icon" class="stuAvatar" :src="stu.avatar" />
+        <img v-else slot="icon" class="stuAvatar" src="@/assets/images/common/default_head_img.png" />
         <div class="students-right">
-          <span style="margin-left: auto; margin-right: 20px"
-            >{{ stu.subCourseNum }}课时</span
-          >
+          <span style="margin-left: auto; margin-right: 20px">{{ stu.subCourseNum }}课时</span>
           <van-checkbox :value="stu.checked"></van-checkbox>
         </div>
       </van-cell>
@@ -87,13 +47,7 @@
 
     <div style="height: 50px"></div>
 
-    <van-submit-bar
-      button-text="下一步"
-      button-type="info"
-      class="selectStudent-submit-bar"
-      @submit="onSubmit"
-      :disabled="!selectStudents.length"
-    >
+    <van-submit-bar button-text="下一步" button-type="info" class="selectStudent-submit-bar" @submit="onSubmit" :disabled="!selectStudents.length">
       <van-dropdown-menu active-color="#01C1B5" direction="up">
         <van-dropdown-item>
           <template #title>
@@ -103,29 +57,13 @@
           <template slot="default">
             <div class="submit-bar-popup-title">已选学生</div>
             <div class="students" style="padding: 0">
-              <van-cell
-                v-for="student in selectStudents"
-                :key="student.value"
-                :title="student.text"
-                :label="student.subjectName"
-                center
-              >
+              <van-cell v-for="student in selectStudents" :key="student.value" :title="student.text" :label="student.subjectName" center>
                 <div slot="label">
                   <span>{{ student.subjectName }}</span>
                   <span style="margin-left: 10px"> {{ student.phone }}</span>
                 </div>
-                <img
-                  v-if="student.avatar"
-                  slot="icon"
-                  class="stuAvatar"
-                  :src="student.avatar"
-                />
-                <img
-                  v-else
-                  slot="icon"
-                  class="stuAvatar"
-                  src="@/assets/images/common/default_head_img.png"
-                />
+                <img v-if="student.avatar" slot="icon" class="stuAvatar" :src="student.avatar" />
+                <img v-else slot="icon" class="stuAvatar" src="@/assets/images/common/default_head_img.png" />
                 <van-icon name="clear" size="25" @click="onDelete(student)" />
               </van-cell>
             </div>
@@ -137,12 +75,7 @@
 </template>
 
 <script>
-import {
-  getAllOrganization,
-  studentsFilter,
-  getStuSubject,
-  getActivityCourseTimeList,
-} from "./api";
+import { getAllOrganization, studentsFilter, getStuSubject, getActivityCourseTimeList } from "./api";
 import DropSelect from "./components/drop-select.vue";
 import MEmpty from "../../components/MEmpty.vue";
 import MHeader from "../../components/MHeader.vue";
@@ -217,12 +150,8 @@ export default {
     },
     async getStudents() {
       this.loading = true;
-      const subjectIds = this.option2
-        .map((n) => (n.checked ? n.value : undefined))
-        .filter((n) => n);
-      const organIds = this.option1
-        .map((n) => (n.checked ? n.value : undefined))
-        .filter((n) => n);
+      const subjectIds = this.option2.map((n) => (n.checked ? n.value : undefined)).filter((n) => n);
+      const organIds = this.option1.map((n) => (n.checked ? n.value : undefined)).filter((n) => n);
       // 获取学员列表
       const res = await studentsFilter({
         categoryId: this.$route.query.categoryId,
@@ -233,10 +162,7 @@ export default {
       });
       if (res && res.data && Array.isArray(res.data)) {
         this.studentsData = res.data.map((n) => {
-          n.checked =
-            this.selectStudents.filter((s) => s.value == n.userId).length > 0
-              ? true
-              : false;
+          n.checked = this.selectStudents.filter((s) => s.value == n.userId).length > 0 ? true : false;
           n.text = n.username;
           n.value = n.userId;
           return {
@@ -272,9 +198,7 @@ export default {
     },
     //选择学生
     onSelectStudent(index) {
-      const i = this.selectStudents.findIndex(
-        (n) => n.value == this.studentsData[index].value
-      );
+      const i = this.selectStudents.findIndex((n) => n.value == this.studentsData[index].value);
 
       if (i > -1) {
         if (this.studentsData[index].checked) {
@@ -295,15 +219,11 @@ export default {
     },
     // 删除已选学生
     onDelete(student) {
-      const index = this.selectStudents.findIndex(
-        (n) => n.value == student.value
-      );
+      const index = this.selectStudents.findIndex((n) => n.value == student.value);
       const stu = this.selectStudents.find((n) => n.value == student.value);
       this.selectStudents.splice(index, 1);
       if (stu) {
-        const studentIndex = this.studentsData.findIndex(
-          (n) => n.value == student.value
-        );
+        const studentIndex = this.studentsData.findIndex((n) => n.value == student.value);
         if (studentIndex > -1) {
           this.studentsData[studentIndex].checked = false;
         }
@@ -313,7 +233,7 @@ export default {
     onSubmit() {
       // 下一步
       const studentNum = parseInt(this.$route.query.studentNum);
-      if (this.$store.state.activeCourse.name == "乐理课") {
+      if (this.$store.state.activeCourse.name == "小组课") {
         if (this.selectStudents.length > studentNum) {
           this.$toast("已到达该类型课程学生人数上限");
           return;
@@ -335,9 +255,9 @@ export default {
           subject.name = this.selectStudents[i].subjectName;
           continue;
         }
-        // (乐理课)
-        if (this.$store.state.activeCourse.name == "乐理课") {
-          // 乐理课不做处理
+        // (小组课)
+        if (this.$store.state.activeCourse.name == "小组课") {
+          // 小组课不做处理
         } else {
           if (subject.id != this.selectStudents[i].subjectId) {
             this.$toast("所选学生声部不一致");

+ 1 - 1
src/views/activeProgram/program.vue

@@ -385,7 +385,7 @@ export default {
                 form.singleClassMinutes = this.typeStatus ? vipGroup.singleCourseTime : vipGroup.giveSingleCourseTime
 
                 const name = this.typeStatus ? vipGroup.vipGroupCategoryNames : vipGroup.giveCategoryName
-                this.isMusicTheory = name === '乐理课'
+                this.isMusicTheory = name === '小组课'
 
                 if(this.courseTypeIsVip) {
                     // 每班人数

+ 9 - 15
src/views/applyActive/index.vue

@@ -3,20 +3,14 @@
     <van-sticky>
       <m-header :backUrl="backUrl" :isFixed="false" />
     </van-sticky>
-    <van-tabs
-      v-model="active"
-      offset-top="0.44rem"
-      class="vanTabs"
-      @change="onChange"
-      color="#01C1B5"
-    >
+    <van-tabs v-model="active" offset-top="0.44rem" class="vanTabs" @change="onChange" color="#01C1B5">
       <!-- <van-tab title="考前辅导排课" :name="1">
         <free-course class="marginTop" v-if="active == 1" @reLoad="reLoad" />
       </van-tab> -->
       <van-tab title="VIP排课" :name="2">
         <vip-course class="marginTop" v-if="active == 2" @reLoad="reLoad" />
       </van-tab>
-      <van-tab title="乐理课排课" :name="3">
+      <van-tab title="小组课排课" :name="3">
         <theory-course class="marginTop" v-if="active === 3" @reLoad="reLoad" />
       </van-tab>
     </van-tabs>
@@ -45,7 +39,7 @@ export default {
     if (this.$route.query.active) {
       this.active = this.$route.query.active;
     }
-    document.title = '考级活动'
+    document.title = "考级活动";
   },
   methods: {
     onChange() {
@@ -54,7 +48,7 @@ export default {
       // } else if (value == 2) {
       //   document.title = "VIP排课";
       // } else if (value == 3) {
-      //   document.title = "乐理课排课";
+      //   document.title = "小组课排课";
       // }
     },
     beforeChange() {
@@ -63,11 +57,11 @@ export default {
       // return true
     },
     reLoad(index) {
-      this.active = index + 1
+      this.active = index + 1;
       this.$nextTick(() => {
-        this.active = index
-      })
-    }
+        this.active = index;
+      });
+    },
   },
 };
 </script>
@@ -80,4 +74,4 @@ export default {
   margin-top: 0.1rem;
   min-height: calc(100vh - 59px - 0.44rem);
 }
-</style>
+</style>

+ 3 - 15
src/views/massMessage/index.vue

@@ -12,20 +12,8 @@
         <van-tab :name="1" title="已发送"></van-tab>
       </van-tabs>
     </van-sticky>
-    <van-list
-      v-model="loading"
-      v-if="dataShow"
-      :finished="finished"
-      finished-text="- 没有更多了 -"
-      :immediate-check="false"
-      @load="getList"
-    >
-      <Item
-        v-for="(item, index) in list"
-        :key="index"
-        :item="item"
-        @onDetail="onDetail"
-      />
+    <van-list v-model="loading" v-if="dataShow" :finished="finished" finished-text="- 没有更多了 -" :immediate-check="false" @load="getList">
+      <Item v-for="(item, index) in list" :key="index" :item="item" @onDetail="onDetail" />
     </van-list>
     <m-empty v-else msg="暂无数据" />
   </div>
@@ -65,7 +53,6 @@ export default {
       });
     },
     onDetail(item) {
-      console.log("onDetail", item);
       // 未发送的可以编辑
       if (!item.sendFlag) {
         this.$router.push({
@@ -76,6 +63,7 @@ export default {
             messageContent: item.messageContent,
             messageType: item.messageType,
             fileName: item.fileName,
+            fileSize: item.fileSize,
             fileUrl: item.fileUrl,
             sendTime: item.sendTime,
             sendType: item.sendType,

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott