Browse Source

Merge branch 'online' into resetSound

mo 5 years ago
parent
commit
bd6e2e64ef
60 changed files with 553 additions and 57 deletions
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/chunk-1d05f6ba.fcfc7404.css
  3. 0 0
      dist/static/css/chunk-252f70e1.8ea4e2d3.css
  4. 0 0
      dist/static/css/chunk-5dbf7449.7f1299ec.css
  5. 1 1
      dist/static/css/chunk-669f7374.79c6c273.css
  6. 0 0
      dist/static/css/chunk-6df16071.5d2d6a34.css
  7. 1 0
      dist/static/css/chunk-6fc5fb95.238fed97.css
  8. 1 1
      dist/static/css/chunk-d1e61f0e.864d2ebe.css
  9. 0 0
      dist/static/css/chunk-libs.3dfb7769.css
  10. 0 0
      dist/static/js/app.9b4d5b45.js
  11. 0 0
      dist/static/js/app.b45654cf.js
  12. 0 0
      dist/static/js/chunk-0040b65a.1c9906aa.js
  13. 0 0
      dist/static/js/chunk-046f506a.592e7570.js
  14. 0 0
      dist/static/js/chunk-09753c97.0e4b7025.js
  15. 0 0
      dist/static/js/chunk-0f80892d.7191c2b3.js
  16. 0 0
      dist/static/js/chunk-13c41bc7.f5bb972f.js
  17. 0 0
      dist/static/js/chunk-13cc5d62.8ee6c275.js
  18. 0 0
      dist/static/js/chunk-16f87310.3dd03401.js
  19. 0 0
      dist/static/js/chunk-1c9ae0ee.2d526ff0.js
  20. 0 1
      dist/static/js/chunk-252f70e1.cd6522c7.js
  21. 0 0
      dist/static/js/chunk-296f2107.22a2b30c.js
  22. 0 0
      dist/static/js/chunk-35d7984f.d036ab6b.js
  23. 0 0
      dist/static/js/chunk-3661e960.2f7bb84c.js
  24. 0 0
      dist/static/js/chunk-3d78ba52.17c77485.js
  25. 0 0
      dist/static/js/chunk-3fef4f99.a7a21ffa.js
  26. 0 0
      dist/static/js/chunk-40e665d1.b59d1025.js
  27. 0 0
      dist/static/js/chunk-415e29c8.5be030f2.js
  28. 0 0
      dist/static/js/chunk-419ce36c.2e2feff2.js
  29. 0 0
      dist/static/js/chunk-41f382a0.d108b5d9.js
  30. 1 0
      dist/static/js/chunk-5dbf7449.54e5d275.js
  31. 0 0
      dist/static/js/chunk-6181ddae.0b2c3cd9.js
  32. 0 0
      dist/static/js/chunk-64c33787.57c93704.js
  33. 0 0
      dist/static/js/chunk-6562cc02.32825cd3.js
  34. 0 0
      dist/static/js/chunk-669f7374.e5cf48c1.js
  35. 0 0
      dist/static/js/chunk-68259a14.dd62f003.js
  36. 0 0
      dist/static/js/chunk-6c42ea8e.22c5cced.js
  37. 0 0
      dist/static/js/chunk-6df16071.4d374ef7.js
  38. 0 0
      dist/static/js/chunk-6fc5fb95.83fbf0a8.js
  39. 0 0
      dist/static/js/chunk-7cfc4d3d.de829075.js
  40. 0 0
      dist/static/js/chunk-7da5a291.0b4551e6.js
  41. 0 0
      dist/static/js/chunk-90bc8dd8.00e5f793.js
  42. 0 0
      dist/static/js/chunk-a9a6c8fe.1478b651.js
  43. 0 0
      dist/static/js/chunk-bb579d98.84e792e5.js
  44. 0 0
      dist/static/js/chunk-bc672cf4.f840a3fc.js
  45. 0 0
      dist/static/js/chunk-c1f8785c.67f4b56a.js
  46. 0 0
      dist/static/js/chunk-d1e61f0e.8e4542da.js
  47. 0 0
      dist/static/js/chunk-fac7eb14.540945d4.js
  48. 4 2
      src/router/index.js
  49. 4 0
      src/utils/request.js
  50. 6 6
      src/views/404.vue
  51. 2 0
      src/views/teamBuild/components/teamBaseInfo.vue
  52. 2 2
      src/views/teamBuild/components/teamResetSound.vue
  53. 3 3
      src/views/teamBuild/components/teamSoundMoney.vue
  54. 102 0
      src/views/teamDetail/componentCourse/classList.vue
  55. 221 0
      src/views/teamDetail/componentCourse/courseList.vue
  56. 7 7
      src/views/teamDetail/components/classList.vue
  57. 48 32
      src/views/teamDetail/components/studentList.vue
  58. 138 0
      src/views/teamDetail/indexCourse.vue
  59. 10 0
      src/views/teamDetail/teamList.vue
  60. 2 2
      vue.config.js

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


+ 0 - 0
dist/static/css/chunk-1d05f6ba.1983bc4d.css → dist/static/css/chunk-1d05f6ba.fcfc7404.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-5dbf7449.7f1299ec.css


+ 1 - 1
dist/static/css/chunk-3d78ba52.0bf262ef.css → dist/static/css/chunk-669f7374.79c6c273.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-3e8d8fc4]{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-3e8d8fc4]{width:180px}.m-core h4[data-v-3e8d8fc4]{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-3e8d8fc4],.m-core .right[data-v-3e8d8fc4],.m-core .vipLeft[data-v-3e8d8fc4]{width:400px}.planList[data-v-3e8d8fc4]{padding:0 25px}.planList .planTop[data-v-3e8d8fc4]{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-3e8d8fc4]{font-size:14px}.planList .planCore .row[data-v-3e8d8fc4]{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-3e8d8fc4]{width:87px}.okBtn[data-v-3e8d8fc4]{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}

File diff suppressed because it is too large
+ 0 - 0
dist/static/css/chunk-6df16071.5d2d6a34.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}

+ 1 - 1
dist/static/css/chunk-13c41bc7.01367f70.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-609f988e]{font-size:14px}.btnList[data-v-609f988e]{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-609f988e]{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}

+ 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.9b4d5b45.js


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


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


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


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


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


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-1c9ae0ee.2d526ff0.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-296f2107.22a2b30c.js


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


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


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


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


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-41f382a0.d108b5d9.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.0b2c3cd9.js


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


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


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


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


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


File diff suppressed because it is too large
+ 0 - 0
dist/static/js/chunk-6df16071.4d374ef7.js


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


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


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


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


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


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


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


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


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


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


+ 4 - 2
src/router/index.js

@@ -92,8 +92,8 @@ export const constantRoutes = [
         hidden: false,
       }
     ]
-
-  }
+  }, 
+  { path: '*', redirect: '/404', hidden: true }
 
 ]
 // export const constantRoutes = [{
@@ -205,6 +205,8 @@ export const asyncRoutes = {
   teamSeting: () => import('@/views/teamBuild/teamSeting/'),
   //乐团详情
   teamDetails: () => import('@/views/teamDetail'),
+  // 乐团课表详情
+  teamDetailCourse: () => import('@/views/teamDetail/indexCourse'),
   // 学生点名总汇
   studentSignin: () => import('@/views/teamDetail/components/studentSignin'),
   // 班级调整

+ 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 }`,

+ 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 '很抱歉,你访问的页面不存在'
     }
   }
 }

+ 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,

+ 2 - 2
src/views/teamBuild/components/teamResetSound.vue

@@ -457,7 +457,6 @@ export default {
     submitInfo () {
       let obj = {};
       this.payfor.student.chiose == 'loop' ? obj.months = this.payfor.chioseMonth : obj.months = [];
-
       obj.musicGroup = {
         status: 'DRAFT',
         settlementType: this.topfor.salary,
@@ -471,7 +470,8 @@ export default {
         organId: this.topfor.section,
         // paymentMonths:obj.months  有待确认
         schoolId: this.topfor.address,
-        courseForm: JSON.stringify(this.checkfor)
+        courseForm: JSON.stringify(this.checkfor),
+        ownershipType: this.topfor.ownershipType
       }
       obj.musicGroupPaymentEntities = []
       // 添加学校主体付费方式

+ 3 - 3
src/views/teamBuild/components/teamSoundMoney.vue

@@ -501,7 +501,6 @@ export default {
             }
             obj.musicGroupSubjectGoodsGroups.push(some);
           })
-
           // 附件
           active.markList.forEach(mark => {
             if (mark.goods.length >= 1) {
@@ -541,6 +540,7 @@ export default {
           type: 'warning'
         }).then(() => {
           createTeam(obj).then(res => {
+
             if (res.code == 200) {
               // 成功 跳转到乐团报名详情
               this.$router.push({ path: '/business/teamDetail', query: { search: this.Fsearch, rules: this.Frules } })
@@ -549,6 +549,7 @@ export default {
         }).catch(() => { })
 
       } else {
+
         // 只提交第二页的数据
         let obj = {};
         let activeSoundList = this.activeSoundList
@@ -739,7 +740,7 @@ export default {
             if (res.code == 200) {
               this.activeSoundList = res.data.map(item => {
                 // this.soundLists[0].push(item.subjectId)
-                let obj = { 'id': item.subjectId, 'sound': item.name, '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': [] }
+                let obj = { 'id': item.id, 'sound': item.name, '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': [] }
                 // this.checkinlist(obj);
                 return obj;
               })
@@ -853,7 +854,6 @@ export default {
     PlannedCount () {
       let Count = 0;
       for (let item in this.activeSoundList) {
-        console.log(this.activeSoundList[item].jihua)
         Count += parseInt(this.activeSoundList[item].jihua) || 0
       }
       return Count

+ 102 - 0
src/views/teamDetail/componentCourse/classList.vue

@@ -0,0 +1,102 @@
+<template>
+  <div class="c-container">
+    <!-- 搜索标题 -->
+    <div class="tableWrap">
+      <el-table :data='tableList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column align='center'
+                         prop="classGroupName"
+                         label="班级名称">
+        </el-table-column>
+        <el-table-column align='center'
+                         label="班级类型">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.classGroupType | classType}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="masterTeacher"
+                         label="主教老师">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop='subTeacher'
+                         label="助教老师">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="currentClassTimes"
+                         label="是否有课">
+          <template slot-scope="scope">
+              {{ scope.row.totalClassTimes ? '是' : '否'}}
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="studyNum"
+                         label="在读人数">
+        </el-table-column>
+      </el-table>
+      <pagination :total="rules.total"
+                  :page.sync="rules.page"
+                  :limit.sync="rules.limit"
+                  :page-sizes="rules.page_size"
+                  @pagination="getList" />
+    </div>
+  </div>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import { getClassList, coursePostpone } from '@/api/buildTeam'
+import { permission } from '@/utils/directivePage'
+export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    },
+  },
+  data () {
+    return {
+      searchLsit: [],
+      searchForm: {
+        name: '',
+        status: ''
+      },
+      tableList: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      }
+    }
+  },
+  components: {
+    pagination
+  },
+  mounted () {
+    this.getList();
+  },
+  methods: {
+    permission (str) {
+      return permission(str)
+    },
+    getList () {
+      // search: this.teamid
+      getClassList({ search: this.teamid, page: this.rules.page, rows: this.rules.limit }).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total
+        }
+      })
+    },
+    resetClass () {
+      // 跳转到班级详情页
+      this.$router.push({ path: '/business/resetClass', query: { id: this.teamid } })
+    },
+  }
+}
+</script>
+<style lang="scss" scope>
+</style>

+ 221 - 0
src/views/teamDetail/componentCourse/courseList.vue

@@ -0,0 +1,221 @@
+<template>
+  <div class='cl-container'>
+    <!-- 搜索类型 -->
+    <el-form :inline="true"
+             class="searchForm"
+             v-model="searchForm">
+      <el-form-item label="课程类型">
+        <el-select v-model="searchForm.courseStatus"
+                   clearable
+                   filterable
+                   placeholder="课程类型">
+          <el-option label="基础技能课"
+                     value="HIGH"></el-option>
+          <el-option label="综合课"
+                     value="COMPREHENSIVE"></el-option>
+          <el-option label="课堂课"
+                     value="CLASSROOM"></el-option>
+          <el-option label="合奏课"
+                     value="MIX"></el-option>
+          <el-option label="集训合奏课"
+                     value="TRAINING_MIX"></el-option>
+          <el-option label="集训单技课"
+                     value="TRAINING_SINGLE"></el-option>
+          <el-option label="单技课"
+                     value="SINGLE"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="课程状态">
+        <el-select v-model="searchForm.classStatus"
+                   clearable
+                   filterable
+                   placeholder="课程状态">
+          <el-option label="未开始"
+                     value="NOT_START"></el-option>
+          <el-option label="进行中"
+                     value="UNDERWAY"></el-option>
+          <el-option label="已结束"
+                     value="OVER"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="班级名称">
+        <!-- getMusicGroupAllClass -->
+        <el-select v-model="searchForm.class"
+                   filterable
+                   clearable>
+          <el-option v-for='(item,index) in classList'
+                     :key="index"
+                     :value="item.id"
+                     :label="item.name"></el-option>
+        </el-select>
+      </el-form-item>
+      <el-form-item label="选择日期">
+        <el-date-picker v-model="searchForm.timer"
+                        style="width:420px;"
+                        type="daterange"
+                        value-format="yyyy-MM-dd"
+                        range-separator="至"
+                        start-placeholder="开始日期"
+                        end-placeholder="结束日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item>
+        <div class='searchBtn'
+             @click="search">搜索</div>
+      </el-form-item>
+    </el-form>
+    <div class="btnWraps">
+    </div>
+    <!-- 列表 -->
+    <div class="tableWrap">
+      <el-table :data='tableList'
+                :header-cell-style="{background:'#EDEEF0',color:'#444'}">
+        <el-table-column align='center'
+                         label="时间">
+          <template slot-scope="scope">
+            {{ scope.row.classDate }} {{ scope.row.startClassTime ? scope.row.startClassTime.substr(0, 5) : '' }}-{{ scope.row.endClassTime ? scope.row.endClassTime.substr(0, 5) : '' }}
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="classGroupName"
+                         label="班级名称">
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="courseScheduleType"
+                         label="课程类型">
+          <template slot-scope="scope">
+            <div>
+              {{ scope.row.courseScheduleType | coursesType}}
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column align='center'
+                         prop="masterTeacherName"
+                         label="指导老师">
+        </el-table-column>
+      </el-table>
+      <pagination :total="rules.total"
+                  :page.sync="rules.page"
+                  :limit.sync="rules.limit"
+                  :page-sizes="rules.page_size"
+                  @pagination="getList" />
+    </div>
+  </div>
+</template>
+<script>
+import pagination from '@/components/Pagination/index'
+import { getTeacher, getMusicGroupAllClass, getCourseSchedule } from '@/api/buildTeam'
+export default {
+  props: {
+    teamid: {
+      type: String,
+      required: true
+    },
+  },
+  data () {
+    return {
+      timerVisible: false,
+      courseVisible: false,
+      searchForm: {
+        courseStatus: '', // 课程类型
+        classStatus: '', // 课程状态
+        timer: [], // 时间
+        class: ''
+      },
+      tableList: [],
+      searchLsit: [],
+      rules: {
+        // 分页规则
+        limit: 10, // 限制显示条数
+        page: 1, // 当前页
+        total: 0, // 总条数
+        page_size: [10, 20, 40, 50] // 选择限制显示条数
+      },
+      teacherList: [],
+      classList: []
+    }
+
+  },
+  components: {
+    pagination
+  },
+  mounted () {
+    this.getList();
+    // 获取所有老师
+    getTeacher().then(res => {
+      if (res.code == 200) {
+        this.teacherList = res.data;
+      }
+    })
+
+    // 获取班级列表
+    getMusicGroupAllClass({ musicGroupId: this.teamid }).then(res => {
+      if (res.code == 200) {
+        this.classList = res.data;
+      }
+    })
+  },
+  methods: {
+    /**
+     *  courseStatus: '', // 课程类型
+        classStatus: '', // 课程状态
+        timer:[] // 时间
+     * 
+     */
+    search () {
+      this.rules.page = 1;
+      this.getList();
+    },
+    getList () {
+      if (!this.searchForm.timer) {
+        this.searchForm.timer = []
+      }
+      let obj = {
+        classScheduleStatus: this.searchForm.classStatus || null,
+        classScheduleType: this.searchForm.courseStatus || null,
+        musicGroupId: this.teamid,
+        startTime: this.searchForm.timer[0] || null,
+        endTime: this.searchForm.timer[1] || null,
+        page: this.rules.page, rows: this.rules.limit,
+        classGroupId: this.searchForm.class || null
+
+      }
+      getCourseSchedule(obj).then(res => {
+        if (res.code == 200) {
+          this.tableList = res.data.rows;
+          this.rules.total = res.data.total;
+        }
+      })
+    }
+  }
+}
+</script>
+<style lang="scss" scope>
+.cl-container {
+  .topFrom {
+    margin: 20px 30px 0;
+    .classlist {
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-start;
+      align-items: center;
+      ul {
+        li {
+          list-style: none;
+        }
+      }
+    }
+  }
+  .searchForm {
+    margin: 0 30px;
+  }
+}
+.btnWraps {
+  display: flex;
+  flex-direction: row;
+  justify-content: flex-start;
+  div {
+    margin-right: 20px;
+  }
+}
+</style>

+ 7 - 7
src/views/teamDetail/components/classList.vue

@@ -59,7 +59,7 @@
                          label="在读人数">
         </el-table-column>
         <el-table-column align='center'
-                        v-if="permission('courseSchedule/coursePostpone')"
+                         v-if="permission('courseSchedule/coursePostpone')"
                          label="操作">
           <template slot-scope="scope">
             <div>
@@ -99,7 +99,7 @@
       <el-form :model="postponeForm"
                ref="postponeForm"
                :rules='postponeRules'>
-        <el-form-item label="顺延起始时间"
+        <el-form-item label="开始日期"
                       prop="stopTime">
           <el-date-picker v-model="postponeForm.stopTime"
                           type="date"
@@ -108,7 +108,7 @@
                           placeholder="选择日期">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="顺延结束时间"
+        <el-form-item label="顺延日期"
                       prop="resetTime">
           <el-date-picker v-model="postponeForm.resetTime"
                           type="date"
@@ -121,8 +121,8 @@
           <el-checkbox v-model="postponeForm.holiday"></el-checkbox>
         </el-form-item>
       </el-form>
-      <span style='color:#F56C6C;'>注意:将会把所选班级的课表,「顺延起始时间」之后的全部未开始课程;
-        调整到「顺延结束时间」之后重新排课,可以勾选跳过节假日;</span>
+      <span style='color:#F56C6C;'>注意:将会把所选班级的课表,「开始日期」之后的全部未开始课程;
+        调整到「顺延日期」之后重新排课,可以勾选跳过节假日;</span>
       <span slot="footer"
             class="dialog-footer">
         <el-button @click="postponeVisible = false">取 消</el-button>
@@ -165,8 +165,8 @@ export default {
         holiday: false
       },
       postponeRules: {
-        stopTime: [{ required: true, message: '请选择顺延开始时间', trigger: 'blur' },],
-        resetTime: [{ required: true, message: '请选择恢复开始时间', trigger: 'blur' },],
+        stopTime: [{ required: true, message: '请选择开始日期', trigger: 'blur' },],
+        resetTime: [{ required: true, message: '请选择顺延日期', trigger: 'blur' },],
       },
       activeClass: '',
       activeList: [],

+ 48 - 32
src/views/teamDetail/components/studentList.vue

@@ -170,14 +170,11 @@
                          label="批量修改缴费">
           <template slot-scope="scope">
             <div>
-              {{ scope.row.isLock?'可修改':'已锁定'}}
+              {{ scope.row.isLock?'已锁定':'可修改'}}
             </div>
           </template>
         </el-table-column>
-        <el-table-column align="center"
-                         label="缴费金额"
-                         prop="courseFee">
-        </el-table-column>
+
         <el-table-column align="center"
                          label="下次缴费日期"
                          prop="nextPaymentDate">
@@ -185,6 +182,10 @@
             {{ scope.row.nextPaymentDate | formatTimer }}
           </template>
         </el-table-column>
+        <el-table-column align="center"
+                         label="缴费金额"
+                         prop="courseFee">
+        </el-table-column>
         <el-table-column align='center'
                          label="报名缴费">
           <template slot-scope="scope">
@@ -491,7 +492,9 @@
     <el-dialog title="退团信息确认"
                width="640px"
                :visible.sync="quitVisible">
-      <el-form :model="quitForm">
+      <el-form :model="quitForm"
+               ref="quitForm"
+               :rules="quitRules">
         <el-form-item label="退还课程费用"
                       prop="isRefundCourseFee">
           <el-radio v-model="quitForm.isRefundCourseFee"
@@ -684,6 +687,11 @@ export default {
       },
       remark: '', // 退团原因
       classList: [],
+      quitRules: {
+        isRefundCourseFee: [{ required: true, message: '请选择是否退还课程费用' },],
+        isRefundInstrumentFee: [{ required: true, message: '选择是否退还乐器费用' },],
+        isRefundTeachingAssistantsFee: [{ required: true, message: '选择是否退还教辅费用' },],
+      },
       maskRules: {
         studentName: [{ required: true, message: '请输入学生姓名' },],
         sex: [{ required: true, message: '请选择学生姓名' },],
@@ -884,34 +892,42 @@ export default {
       })
     },
     chioseType () {
-      let row = this.activeRow;
-      /**
-       * quitForm: { // 退团信息确认
-        isRefundCourseFee: null,
-        isRefundInstrumentFee: null,
-        isRefundTeachingAssistantsFee: null,
-        reason: ''
-      },
-       * 
-       */
-      // 发请求 退团
-      StudentQuit({        musicGroupId: this.teamid, userId: row.userId,
-        reason: this.quitForm.reason,
-        isRefundCourseFee: this.quitForm.isRefundCourseFee,
-        isRefundInstrumentFee: this.quitForm.isRefundInstrumentFee,
-        isRefundTeachingAssistantsFee: this.quitForm.isRefundTeachingAssistantsFee      }).then(res => {
-        this.quitForm = { // 退团信息确认
-          isRefundCourseFee: null,
-          isRefundInstrumentFee: null,
-          isRefundTeachingAssistantsFee: null,
-          reason: ''
-        }
-        if (res.code == 200) {
-          this.$message.success('退团成功')
-          this.getList();
-          this.quitVisible = false;
+      this.$refs['quitForm'].validate(res => {
+        if (res) {
+          this.$confirm('确定退团?', '提示', {
+            confirmButtonText: '确定',
+            cancelButtonText: '取消',
+            type: 'warning'
+          }).then(() => {
+            let row = this.activeRow;
+            // 发请求 退团
+            StudentQuit({              musicGroupId: this.teamid, userId: row.userId,
+              reason: this.quitForm.reason,
+              isRefundCourseFee: this.quitForm.isRefundCourseFee,
+              isRefundInstrumentFee: this.quitForm.isRefundInstrumentFee,
+              isRefundTeachingAssistantsFee: this.quitForm.isRefundTeachingAssistantsFee            }).then(res => {
+              this.quitForm = { // 退团信息确认
+                isRefundCourseFee: null,
+                isRefundInstrumentFee: null,
+                isRefundTeachingAssistantsFee: null,
+                reason: ''
+              }
+              if (res.code == 200) {
+                this.$message.success('退团成功')
+                this.getList();
+                this.quitVisible = false;
+              }
+            })
+
+          }).catch(() => {
+
+          });
+        } else {
         }
       })
+
+
+
       // row.typeVisible = false;
     },
     //

+ 138 - 0
src/views/teamDetail/indexCourse.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class='m-container'>
+    <h2>
+      <el-page-header @back="onCancel"
+                      :content="name"></el-page-header>
+    </h2>
+    <div class="m-core">
+
+      <!-- <p class='msg'
+         :class="status=='PROGRESS'? 'ing' : '' "> <img :src="status=='PROGRESS'?stepImgs.PROGRESS:stepImgs.PAUSE"
+             alt="">
+        {{ status=='PROGRESS'?'进行中':'已结束' }}</p> -->
+      <!-- navMenu -->
+      <el-tabs v-model="activeIndex"
+               type="card"
+               @tab-click="handleClick">
+        <el-tab-pane label="班级详情"
+                     name="1">
+          <classList v-if="activeIndex == 1"
+                     :teamid='teamid' />
+        </el-tab-pane>
+        <el-tab-pane label="课表详情"
+                     name="2">
+          <courseList v-if="activeIndex == 2"
+                      :teamid='teamid' />
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+  </div>
+</template>
+<script>
+import courseList from '@/views/teamDetail/componentCourse/courseList'
+import classList from '@/views/teamDetail/componentCourse/classList'
+export default {
+  data () {
+    return {
+      activeIndex: this.$route.query.checkIndex ? this.$route.query.checkIndex : '1',
+      teamid: '',
+      name: '',
+      stepImgs: {
+        PROGRESS: require('@/assets/images/base/ing.png'),
+        PAUSE: require('@/assets/images/base/end.png')
+      },
+      status: '',
+      Fsearch: null,
+      Frules: null
+    }
+  },
+  created () {
+    // this.teamid = '191014135135001';
+    // 191015094822001
+    let teamInfo = this.$route.query;
+    this.status = this.$route.query.status;
+    this.teamid = teamInfo.id;
+    this.name = teamInfo.name;
+    // 判断是否带缓存参数
+    if (this.$route.query.search) {
+      this.Fsearch = this.$route.query.search;
+    }
+    if (this.$route.query.rules) {
+      this.Frules = this.$route.query.rules
+    }
+  },
+  mounted () {
+
+  },
+  methods: {
+    handleClick (val) {
+      this.activeIndex = val.name;
+    },
+    onCancel () {
+      this.$router.push({ path: '/business/teamDetail', query: { search: this.Fsearch, rules: this.Frules } })
+    },
+    getname (name) {
+      this.name = name;
+      localStorage.setItem('teamName', name);
+    },
+    resetTeam () {
+      // id  type 
+      this.$router.push({ path: '/business/teamBuild', query: { type: 'resetTeam', id: this.teamid } })
+    }
+  },
+  components: {
+    courseList,
+    classList
+  }
+}
+</script>
+<style lang="scss" scoped>
+.m-container {
+  .m-core {
+    .msg.ing {
+      color: #14928a;
+    }
+    .msg {
+      text-align: right;
+      color: #777;
+      font-size: 32px;
+      font-weight: bold;
+      position: absolute;
+      right: 40px;
+      top: -33px;
+      img {
+        width: 36px;
+        height: 36px;
+        position: relative;
+        top: 5px;
+        margin-right: 8px;
+      }
+    }
+    .abs {
+      position: absolute;
+      right: 240px;
+      top: -28px;
+    }
+  }
+  .term {
+    height: 32px;
+    line-height: 32px;
+    border-radius: 24px;
+    width: 100px;
+    color: #14928a;
+    border: 1px solid rgba(20, 146, 138, 1);
+    font-size: 14px;
+    text-align: center;
+    margin-right: 12px;
+    &:nth-child(1) {
+      margin-left: 47px;
+    }
+  }
+  .term.active {
+    color: #fff;
+    background-color: #14928a;
+  }
+}
+</style>
+<style lang='scss'>
+</style>

+ 10 - 0
src/views/teamDetail/teamList.vue

@@ -161,6 +161,10 @@
                 <el-button type="text"
                            v-if="scope.row.status == 'PREPARE' && permission('/teamDetailedList')"
                            @click="gotodetailList(scope.row)">发放清单</el-button>
+                
+                <el-button type="text"
+                           v-if="scope.row.status == 'PREPARE'"
+                           @click="lookTeamCourse(scope.row)">查看课表</el-button>
 
                 <!-- 报名中&缴费中 查看 -->
                 <el-button type="text"
@@ -437,6 +441,12 @@ export default {
       this.$refs['topForm'].resetFields();
       this.searchLsit = [];
     },
+    lookTeamCourse(row) {
+      // 查看课表
+      let search = JSON.stringify(this.topForm)
+      let rules = JSON.stringify(this.rules)
+      this.$router.push({ path: '/business/teamDetailCourse', query: { id: row.id, name: row.name, search, rules } })
+    },
     lookTeamDetail (row) {
       let search = JSON.stringify(this.topForm)
       let rules = JSON.stringify(this.rules)

+ 2 - 2
vue.config.js

@@ -19,9 +19,9 @@ const name = defaultSettings.title || '管乐迷后台管理系统' // page titl
 // let target = 'https://online.dayaedu.com' //线上
 // let target = 'http://testadm.dayaedu.com/' //test环境
 // let target = 'http://192.168.3.27:8000' // 箭河
-let target = 'http://192.168.3.28:8000' //邹璇
+// let target = 'http://192.168.3.28:8000' //邹璇
 // let target = 'http://192.168.3.8:18000' //勇哥
-// let target = 'http://admin.dayaedu.com/' // 测试服
+let target = 'http://admin.dayaedu.com/' // 测试服
 // let target = 'http://192.168.3.48:8080' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {

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