Browse Source

Merge branch 'master' into 03/03GRADE

lex-xin 4 năm trước cách đây
mục cha
commit
1f3cef1112
40 tập tin đã thay đổi với 200 bổ sung93 xóa
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/app.c66440d7.css
  3. 0 0
      dist/static/css/chunk-0e37a996.18b5b57f.css
  4. 0 0
      dist/static/css/chunk-1ef0f7be.118dd9cc.css
  5. 1 1
      dist/static/css/chunk-288b1ca9.0903b3b1.css
  6. 0 0
      dist/static/css/chunk-29376f32.1875f58c.css
  7. 0 0
      dist/static/css/chunk-2c7b6d48.bb72f56c.css
  8. 0 0
      dist/static/css/chunk-488078a8.f265eaf3.css
  9. 0 0
      dist/static/css/chunk-5ca930b1.49b931aa.css
  10. 0 0
      dist/static/css/chunk-5e305839.468db65e.css
  11. 0 0
      dist/static/css/chunk-71ec9914.87085111.css
  12. 0 1
      dist/static/css/chunk-a453817c.cbd1e596.css
  13. 1 0
      dist/static/css/chunk-b74fc93a.2adf0952.css
  14. 0 0
      dist/static/css/chunk-c7502088.6de1aa8d.css
  15. 0 0
      dist/static/js/app.8f9dde62.js
  16. 0 0
      dist/static/js/chunk-0e37a996.12e1a49a.js
  17. 0 0
      dist/static/js/chunk-1ef0f7be.b256e3cf.js
  18. 0 0
      dist/static/js/chunk-288b1ca9.a95370cf.js
  19. 0 0
      dist/static/js/chunk-29376f32.8c1b4100.js
  20. 0 0
      dist/static/js/chunk-2c7b6d48.c4a65aba.js
  21. 0 0
      dist/static/js/chunk-4710b886.52721707.js
  22. 0 0
      dist/static/js/chunk-488078a8.ed99da93.js
  23. 0 0
      dist/static/js/chunk-5ca930b1.929613f7.js
  24. 0 0
      dist/static/js/chunk-5e305839.44a042b5.js
  25. 0 0
      dist/static/js/chunk-71ec9914.d7db2107.js
  26. 0 0
      dist/static/js/chunk-7b34927f.38636f7f.js
  27. 0 0
      dist/static/js/chunk-8eea3e92.32d1f2b8.js
  28. 0 0
      dist/static/js/chunk-9c496280.bd46012e.js
  29. 0 0
      dist/static/js/chunk-a453817c.ab6dcf22.js
  30. 0 0
      dist/static/js/chunk-b74fc93a.f409887b.js
  31. 0 0
      dist/static/js/chunk-c7502088.8370a27a.js
  32. 1 1
      src/App.vue
  33. 1 1
      src/views/resetTeaming/components/resetPayList.vue
  34. 0 6
      src/views/resetTeaming/components/strudentPayInfo.vue
  35. 118 76
      src/views/resetTeaming/modals/subject-preview.vue
  36. 54 4
      src/views/studentManager/studentList.vue
  37. 1 0
      src/views/teamBuild/components/soundSetComponents/soundSetCore.vue
  38. 20 0
      src/views/teamBuild/components/teamBaseInfo.vue
  39. 2 2
      src/views/teamDetail/teamList.vue
  40. 1 1
      vue.config.js

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


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


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


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


+ 1 - 1
dist/static/css/chunk-7b34927f.9c416a68.css → dist/static/css/chunk-288b1ca9.0903b3b1.css

@@ -1 +1 @@
-.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-7a44cd83]{margin-top:20px;display:block;text-align:right}.select[data-v-0f67c8c3]{font-size:14px}.btnList[data-v-0f67c8c3]{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-0f67c8c3]{margin-right:15px}
+.process[data-v-f049a426]{padding:10px;max-height:600px;overflow-y:auto}.dialog-footer[data-v-7a44cd83]{margin-top:20px;display:block;text-align:right}.select[data-v-3a2c8a7a]{font-size:14px}.btnList[data-v-3a2c8a7a]{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-3a2c8a7a]{margin-right:15px}

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


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


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


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


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


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


+ 0 - 1
dist/static/css/chunk-a453817c.cbd1e596.css

@@ -1 +0,0 @@
-.newBand[data-v-6deab051]{display:inline-block;margin-right:10px}.right-code .title[data-v-6deab051]{font-size:18px;text-align:center;padding-bottom:8px}[data-v-6deab051] .studentInfo .multiple.el-select{width:185px!important}

+ 1 - 0
dist/static/css/chunk-b74fc93a.2adf0952.css

@@ -0,0 +1 @@
+.newBand[data-v-1088ef88]{display:inline-block;margin-right:10px}.right-code .title[data-v-1088ef88]{font-size:18px;text-align:center;padding-bottom:8px}[data-v-1088ef88] .studentInfo .multiple.el-select{width:185px!important}

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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


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


+ 1 - 1
src/App.vue

@@ -67,7 +67,7 @@ body {
 <style lang="scss">
 $--color-primary: teal;
 .el-table {
-  width: 99.9% !important;
+  width: 99% !important;
   border-left: 1px solid #EBEEF5;
   border-right: 1px solid #EBEEF5;
 }

+ 1 - 1
src/views/resetTeaming/components/resetPayList.vue

@@ -347,7 +347,7 @@
              title="续费二维码"
              :codeUrl="codeUrl" />
 
-    <el-dialog title="选择预览声部"
+    <el-dialog title="报名声部预览"
                :visible.sync="dialogSubjectVisible"
                width="400px">
       <el-tabs v-model="activeName" type="card">

+ 0 - 6
src/views/resetTeaming/components/strudentPayInfo.vue

@@ -610,12 +610,6 @@ export default {
           path: "/business/resetTeaming",
           query: { ...this.$route.query },
         });
-      } else if(query.type == 'look') {
-        this.$store.dispatch("delVisitedViews", this.$route);
-        this.$router.push({
-          path: "/business/teamLookBase",
-          query: { ...this.$route.query },
-        });
       }
       if(query.type == "look"){
          this.$store.dispatch("delVisitedViews", this.$route);

+ 118 - 76
src/views/resetTeaming/modals/subject-preview.vue

@@ -2,41 +2,42 @@
     <div style="background: #F3F4F8;">
         <div class="noticeInfo">
 			<h2>缴费说明</h2>
-			1、为确保声部平衡,请家长确认 注册声部为孩子的最终录取声部。<br />
-			2、为保障每个声部人数达标,我们都进行了超员20%的录取,系统将按照提交注册的先后顺序安排名额。超员后 有可能出现无法注册的情况,请您理解。如果其他声部仍有名额,我们将优先调配您的孩子;
+            1、您注册时所选择的乐团声部,即为乐团录取最终确认的声部,请您务必仔细填写;<br />
+			2、为避免因部分已注册家长放弃名额导致乐团声部失衡,系统设定各声部限额放大20%比例开放注册,系统自动按照完全完成注册的先后顺序确认录取名单,因此,超员后有可能出现无法注册的情况,请您理解。如果其他声部仍有名额,在您孩子的身体条件适合该乐器的前提下,我们将优先予以调配。
 		</div>
 
 		<div class="section">
-			<h2 class="title">乐团辅训系统</h2>
-            <p style="font-size: 14px; padding: 2px 0; color: #a1a1a1" v-if="serviceValidDate">服务有效期:{{ serviceValidDate }}</p>
-			<el-row class="title-row">
-				<el-col :span="12">服务项目</el-col>
-				<el-col :span="5" :offset="1" style="text-align: right;">原价</el-col>
-				<el-col :span="5" :offset="1" style="text-align: right;">现价</el-col>
-			</el-row>
+			<h2 class="title">{{ courseViewType == 1 ? '服务' : '乐团课程' }}</h2>
+            <p style="font-size: 14px; padding: 2px 0; color: #f85043" v-if="serviceValidDate && courseViewType == 1">服务有效期:{{ serviceValidDate }}</p>
 			<!-- 所有不可选的课程合集 -->
-			<template v-if="courseShowStatus">
+			<template v-if="courseShowStatus && courseViewType == 1">
 				<el-row class="option-row"  v-for="(item, index) in courseShowInfo" :class="[!item.isStudentOptional ? 'disabled' : '']" :key="index" @click.native="onCourseChange(item)">
-					<el-col :span="12">
+					<el-col :span="16">
 						<i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i>
 						<span style="display: flex; align-items: center;">
 							<template v-if="item.courseType == 'PROJECT'">{{ chargeTypeName }} </template><template v-else>{{ item.courseType | coursesType }}</template>
 						</span>
 						<el-icon v-if="item.courseType == 'PROJECT'" class="el-icon-question" @click.native="onQuestions" />
 					</el-col>
-					<el-col :span="6">
-						<del style="color: #AAA; font-size: 12px;">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
-					</el-col>
-					<el-col :span="6">
+					<!-- <el-col :span="6"> -->
+						<!-- <del style="color: #AAA; font-size: 12px;">¥{{ item.courseOriginalPrice | moneyFormat }}</del> -->
+					<!-- </el-col> -->
+					<el-col :span="8">
 						<span style="color: #1A1A1A">¥{{ item.courseCurrentPrice | moneyFormat }}</span>
 					</el-col>
 				</el-row>
 			</template>
+
+            <el-row class="title-row" v-if="courseViewType == 0">
+				<el-col :span="12">课程类型</el-col>
+				<el-col :span="5" :offset="1" style="text-align: right;">原价</el-col>
+				<el-col :span="6" style="text-align: right;">现价</el-col>
+			</el-row>
 			<!-- 可选课程信息集合 -->
 			<template v-for="(item, index) in courseInfo">
-				<el-row class="option-row" :class="[!item.isStudentOptional ? 'disabled' : '']" :key="index" @click.native="onCourseChange(item)" v-if="item.isStudentOptional">
+				<el-row class="option-row" :key="index" @click.native="onCourseChange(item)" v-if="courseViewType == 0">
 					<el-col :span="12">
-						<i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i><template v-if="item.courseType == 'PROJECT'">{{ item.name }}</template><template v-else>{{ item.courseType | coursesType }}</template>
+						<i class="check_default" :class="[item.isStatus ? 'check_active' : '', !item.isStudentOptional ? 'disabled' : '']"></i><template v-if="item.courseType == 'PROJECT'">{{ item.name }}</template><template v-else>{{ item.courseType | coursesType }}</template>
 					</el-col>
 					<el-col :span="6">
 						<del style="color: #AAA; font-size: 12px;">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
@@ -47,17 +48,6 @@
 				</el-row>
 			</template>
 
-			<el-row class="option-row lines">
-				<el-col :span="12" class="fontBold">
-					仅需支付
-				</el-col>
-				<el-col :span="6">
-					<del style="color: #f85043; font-size: 12px;">¥{{ orderInfo.musicMarketClassFee | moneyFormat }}</del>
-				</el-col>
-				<el-col :span="6">
-					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.musicClassFee | moneyFormat }}</span>
-				</el-col>
-			</el-row>
 		</div>
 
 		<div class="section" v-if="instrumentResult.length > 0">
@@ -100,7 +90,7 @@
 				</el-row>
 			</div>
 
-			<el-row class="option-row lines">
+			<!-- <el-row class="option-row lines">
 				<el-col :span="12" class="fontBold">
 					仅需支付
 				</el-col>
@@ -110,7 +100,7 @@
 				<el-col :span="6">
 					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.goodsPrice | moneyFormat }}</span>
 				</el-col>
-			</el-row>
+			</el-row> -->
 		</div>
 
 		<div class="section" v-if="accessOries.length > 0" key="accessOries">
@@ -121,20 +111,27 @@
 				<el-col :span="5" :offset="1" style="text-align: right;">现价</el-col>
 			</el-row>
 
-			<el-row class="option-row" v-for="(instr, index) in accessOries" :key="index" @click.native="onAuxiliarie(instr)">
-				<el-col :span="12">
-					<i class="check_default" :class="[ instr.checked ? 'check_active' : '' ]"></i>{{ instr.name }}
-				</el-col>
-				<el-col :span="6">
-					<del style="color: #AAA; font-size: 12px;">¥{{ instr.goodsList[0] ? instr.goodsList[0].marketPrice : 0 | moneyFormat }}</del>
-				</el-col>
-				<el-col :span="6">
-					<span style="color: #1A1A1A" v-if="instr.price == 0">免费</span>
-					<span style="color: #1A1A1A" v-else>¥{{ instr.price | moneyFormat }}</span>
-				</el-col>
-			</el-row>
+			<div v-for="(instr, index) in accessOries" :key="index">
+                <el-row class="option-row" @click.native="onAuxiliarie(instr)">
+                    <el-col :span="12">
+                        <i class="check_default" :class="[ instr.checked ? 'check_active' : '' ]"></i>{{ instr.name }}
+                    </el-col>
+                    <el-col :span="6">
+                        <del style="color: #AAA; font-size: 12px;">¥{{ instr.goodsList[0] ? instr.goodsList[0].marketPrice : 0 | moneyFormat }}</del>
+                    </el-col>
+                    <el-col :span="6">
+                        <span style="color: #1A1A1A" v-if="instr.price == 0">免费</span>
+                        <span style="color: #1A1A1A" v-else>¥{{ instr.price | moneyFormat }}</span>
+                    </el-col>
+                </el-row>
+                <el-row style="padding-left: 24px;" v-if="instr.childGoodsList">
+					<el-col>
+						<span v-for="(child, index) in instr.childGoodsList" :key="child.id" style="font-size: 12px; color: #aaaaaa;">{{ child.name }} {{instr.childGoodsList.length - 1 == index ? '' : ','}}</span>
+					</el-col>
+				</el-row>
+            </div>
 
-			<el-row class="option-row lines">
+			<!-- <el-row class="option-row lines">
 				<el-col :span="12" class="fontBold">
 					仅需支付
 				</el-col>
@@ -144,7 +141,7 @@
 				<el-col :span="6">
 					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.accessPrice | moneyFormat }}</span>
 				</el-col>
-			</el-row>
+			</el-row> -->
 		</div>
 
 		<!-- 原价现价 -->
@@ -231,6 +228,7 @@ export default {
             courseShowStatus: false,
             chargeTypeList: [],
             chargeTypeName: null,
+            courseViewType: 0, // 收费模式,0 课程显示,1 AMR系统
         };
     },
     mounted() {
@@ -255,6 +253,7 @@ export default {
                 let result = res
                 if (result.code == 200) {
                     let tempResult = result.data
+                    this.courseViewType = tempResult.musicGroup.courseViewType || 0
                     this.paymentPattern = 2
                     if(tempResult.musicGroupPaymentCalender) {
                         this.paymentPattern = tempResult.musicGroupPaymentCalender.paymentPattern
@@ -267,17 +266,17 @@ export default {
                             courseCurrentPrice: 0,
                             courseOriginalPrice: 0,
                             courseType: null,
-                            name: '乐团辅训系统'
+                            name: '器乐练习系统'
                         }
                         tempInfo.forEach(info => {
                             if(!info.isStudentOptional) {
                                 this.courseShowStatus = true
                                 tempCourse = {
                                     courseCurrentPrice: (info.courseCurrentPrice + tempCourse.courseCurrentPrice),
-                                    courseOriginalPrice: 9800,
+                                    courseOriginalPrice: (info.courseCurrentPrice + tempCourse.courseCurrentPrice),
                                     courseType: 'PROJECT',
                                     isStatus: true,
-                                    name: '乐团辅训系统'
+                                    name: '器乐练习系统'
                                 }
                             }
                         })
@@ -295,7 +294,11 @@ export default {
                         }]
                     }
                     this.courseInfo.forEach(item => {
-                        item.isStatus = true
+                        if(item.isStudentOptional) {
+                            item.isStatus = false
+                        } else {
+                            item.isStatus = true
+                        }
                     })
 
                     this.musicGroupSubject = tempResult.musicGroupSubjectPlan
@@ -414,7 +417,7 @@ export default {
             });
         },
         onQuestions() {
-            this.$alert(`<b>革命性的“AMR器乐练习系统 ”</b><br />世界上有没有一种能够轻松掌握器乐演奏技能的方法?答案就是“AMR器乐练习系统”,它的诞生是基于世界上最优秀的华人管乐指导专家-唐嘉宏先生的教育理念,创新开发的一种新型“音乐感官植入程序”,这个程序抛弃了传统的“数线式识谱、机械式节奏、死记式乐理”,它营造出沉浸式可变速演奏过程,采用画面与音乐刺激序列组合而成的特定场景,在趣味性挑战的反复刺激中逐步促进器乐演奏的三核心:“音质→音准→音型”,从而达成演奏各环节水准的均匀提高,产生永久性条件反射式大脑记忆,将多板块知识融会贯通,让抽象的音乐知识刻入脑海里!<br /><b>本练习系统的特点:</b><br /> 1.轻松快速掌握要点,让练习者沉浸其中,远离枯燥!<br /> 2.不假思索就能瞬间唤起反射式记忆,演奏识谱不再慢吞吞!<br /> 3.真正的实践记忆,摆脱纸上谈兵,与实际演奏紧密结合!<br />4.思维+肌肉的双重强化!无缝整合复习系统!<br /> 5.每条练习都经过严谨的编曲,你以为你只是在练习旋律线?其实是整个乐团在为你伴奏!`, 'AMR器乐练习系统', {
+            this.$alert(`<b>革命性的“AMR器乐练习系统”</b><br />它的诞生是基于世界上最优秀的华人管乐指导专家唐嘉宏先生的教育理念,创新开发的一种新型“音乐感官植入程序”,这个程序抛弃了传统的“数线式识谱、机械式节奏、死记式乐理”,它营造出沉浸式可变速演奏过程,采用画面与音乐刺激序列组合而成的特定场景,在趣味性挑战的反复刺激中逐步促进器乐演奏的三核心:“音质→音准→音型”,从而达成演奏各环节水准的均匀提高,产生永久性条件反射式大脑记忆,将多板块知识融会贯通,让抽象的音乐知识刻入脑海里!<br /><br /><b>本练习系统的特点:</b><br /> 1.轻松快速掌握要点,让练习者沉浸其中,远离枯燥!<br /> 2.不假思索就能瞬间唤起反射式记忆,演奏识谱不再慢吞吞!<br /> 3.真正的实践记忆,摆脱纸上谈兵,与实际演奏紧密结合!<br />4.思维+肌肉的双重强化!无缝整合复习系统!<br /> 5.每条练习都经过严谨的编曲,你以为你只是在练习旋律线?其实是整个乐团在为你伴奏!`, 'AMR器乐练习系统', {
                 confirmButtonText: '确定',
                 dangerouslyUseHTMLString: true,
                 callback: action => {
@@ -478,32 +481,65 @@ export default {
             let csi = this.courseInfo
             // 加上判断是否有课程信息
             if (mgs) {
+                // let tempCourse = this.courseShowInfo
+                // if(tempCourse.length > 0) {
+                //     let tempPrice = 0
+                //     tempCourse.forEach(item => {
+                //         // tempPrice += parseFloat(item.courseCurrentPrice)
+                //         marketPrice += parseFloat(item.courseOriginalPrice)
+                //         musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //     });
+                // }
+                // csi.forEach(item => {
+                //     if (item.isStatus) {
+                //         musicClassFee += parseFloat(item.courseCurrentPrice)
+                //         // musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //         // marketPrice += parseFloat(item.courseOriginalPrice)
+                //         if (item.id > 0) {
+                //             courseKeys.push(item.id)
+                //         }
+                //         // 不可选的课程才会减免课程费用
+                //         if(!item.isStudentOptional) {
+                //             tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
+                //         } else {
+                //             marketPrice += parseFloat(item.courseOriginalPrice)
+                //             musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                //         }
+                //     }
+                // })
                 let tempCourse = this.courseShowInfo
-                if(tempCourse.length > 0) {
-                    let tempPrice = 0
+                if (tempCourse.length > 0 && this.courseViewType == 1) {
                     tempCourse.forEach(item => {
-                        // tempPrice += parseFloat(item.courseCurrentPrice)
-                        marketPrice += parseFloat(item.courseOriginalPrice)
-                        musicMarketClassFee += parseFloat(item.courseOriginalPrice)
-                    });
-                }
-                csi.forEach(item => {
-                    if (item.isStatus) {
-                        musicClassFee += parseFloat(item.courseCurrentPrice)
-                        // musicMarketClassFee += parseFloat(item.courseOriginalPrice)
-                        // marketPrice += parseFloat(item.courseOriginalPrice)
                         if (item.id > 0) {
                             courseKeys.push(item.id)
                         }
+                        musicClassFee += parseFloat(item.courseCurrentPrice)
+                        marketPrice += parseFloat(item.courseOriginalPrice)
                         // 不可选的课程才会减免课程费用
-                        if(!item.isStudentOptional) {
+                        if (!item.isStudentOptional) {
                             tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
-                        } else {
+                        }
+                    });
+                    buyList.unshift({
+                        name: this.chargeTypeName,
+                        type: paymentPatternType[this.paymentPattern],
+                        price: Number((musicClassFee).toFixed(2))
+                    })
+                } else {
+                    csi.forEach(item => {
+                        if (item.isStatus) {
+                            musicClassFee += parseFloat(item.courseCurrentPrice)
                             marketPrice += parseFloat(item.courseOriginalPrice)
-                            musicMarketClassFee += parseFloat(item.courseOriginalPrice)
+                            if (item.id > 0) {
+                                courseKeys.push(item.id)
+                            }
+                            // 不可选的课程才会减免课程费用
+                            if (!item.isStudentOptional) {
+                                tempGroupRemissionCourseFee += parseFloat(item.courseCurrentPrice)
+                            }
                         }
-                    }
-                })
+                    })
+                }
             }
 
             // 乐器
@@ -532,7 +568,7 @@ export default {
                         }
                         if (item.kitType == 'LEASE') {
                             if (item.name != '自备') {
-                                marketPrice += item.depositFee
+                                marketPrice += parseFloat(item.marketPrice)
                                 goodsMarketPrice += item.depositFee
                             }
                         } else {
@@ -572,13 +608,13 @@ export default {
                 })
             }
             amount += parseFloat(tempCourseFee + musicClassFee)
-            // if (parseFloat(tempCourseFee + musicClassFee) > 0) {
+            if (parseFloat(tempCourseFee + musicClassFee) > 0 && this.courseViewType == 0) {
                 buyList.unshift({
                     name: '乐团课',
                     type: paymentPatternType[this.paymentPattern],
                     price: Number((tempCourseFee + musicClassFee).toFixed(2))
                 })
-            // }
+            }
             // 辅件
             if (this.accessOries.length > 0) {
                 this.accessOries.forEach(item => {
@@ -592,14 +628,20 @@ export default {
                             })
                         }
                         goodsGroupIds[item.id] = 'ACCESSORIES'
+
+                        buyList.push({
+                            name: item.name,
+                            type: '团购',
+                            price: item.price
+                        })
                     }
                 })
                 // if (tempAccessPrice > 0) {
-                    buyList.push({
-                        name: '辅件',
-                        type: '团购',
-                        price: tempAccessPrice
-                    })
+                    // buyList.push({
+                    //     name: '辅件',
+                    //     type: '团购',
+                    //     price: tempAccessPrice
+                    // })
                 // }
             }
             let tempGroupPurchasePrice = amount
@@ -710,7 +752,7 @@ export default {
 }
 
 .disabled {
-    opacity: 0.7;
+    opacity: 0.5;
     .check_active {
         opacity: .5;
     }
@@ -928,7 +970,7 @@ export default {
         display: flex;
         // align-items: center;
     }
-    .el-col-6 {
+    .el-col-6, .el-col-8 {
         display: flex;
         justify-content: flex-end;
     }

+ 54 - 4
src/views/studentManager/studentList.vue

@@ -597,6 +597,49 @@
         <el-button type="primary" @click="submitResetPassWord">确 定</el-button>
       </span>
     </el-dialog>
+
+    <el-dialog
+      title="协议下载"
+      :visible.sync="protocolVisible"
+      width="600px"
+    >
+      <div v-if="protocolVisible">
+        <!-- <el-alert
+          title="点击下载"
+          :closable="false"
+          type="info">
+        </el-alert>
+        <p style="font-size: 14px; color: #14928A; line-height: 1.5; padding: 8px 16px; cursor: pointer;" v-for="item in protocolVersions" :key="item.id" @click="onDownloadProtocol(item)">
+          产品与服务协议{{ item.version == 2 ? "(含课程)" : "(含系统)" }}
+        </p> -->
+        <el-table
+          style="width: 100%"
+          :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
+          :data="protocolVersions"
+        >
+          <el-table-column align="center" prop="studentId" label="协议名称">
+            <template slot-scope="scope">
+              产品与服务协议{{ scope.row.version == 2 ? "(含课程)" : "(含系统)" }}
+            </template>
+          </el-table-column>
+          <el-table-column align="center" label="签署时间" prop="createTime">
+          </el-table-column>
+          <el-table-column align="center"
+                           width="150px"
+                           label="操作">
+            <template slot-scope="scope">
+              <div>
+                <el-button type="text"
+                           @click="onDownloadProtocol(scope.row)">下载</el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="protocolVisible = false">取 消</el-button>
+      </span>
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -696,6 +739,8 @@ export default {
         password2: "",
       },
       activatedRow: null,
+      protocolVisible: false,
+      protocolVersions: []
     };
   },
   mounted() {
@@ -1004,14 +1049,19 @@ export default {
         }
       });
     },
-    lookContracts(row) {
-      getLatest({ userId: row.userId }).then((res) => {
+    async lookContracts(row) {
+      await getLatest({ userId: row.userId }).then((res) => {
         if (res.code == 200) {
-          window.location.href = res.data.url
-          // window.open(res.data.url);
+          if(res.data) {
+            this.protocolVersions = res.data
+            this.protocolVisible = true
+          }
         }
       });
     },
+    onDownloadProtocol(item) {
+      window.location.href = item.url
+    }
   },
 };
 </script>

+ 1 - 0
src/views/teamBuild/components/soundSetComponents/soundSetCore.vue

@@ -534,6 +534,7 @@ export default {
         applyExpireDate: dayjs(this.topfor.time).format("YYYY-MM-DD HH:mm:ss"),
         chargeTypeId: this.topfor.type,
         cooperationOrganId: this.topfor.school,
+        courseViewType: this.topfor.courseViewType,
         teamTeacherId: this.topfor.boss,
         educationalTeacherId: this.topfor.teacher,
         enrollClasses,

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

@@ -51,6 +51,22 @@
         </el-form-item>
 
         <el-form-item
+          label="收费模式"
+          prop="courseViewType"
+          :rules="[{ required: true, message: '收费模式不能为空' }]"
+        >
+          <el-select
+            v-model.trim="topFrom.courseViewType"
+            filterable
+            :disabled="basdisabled"
+            clearable
+          >
+            <el-option label="课程收费" :value="0"></el-option>
+            <el-option label="系统收费" :value="1"></el-option>
+          </el-select>
+        </el-form-item>
+
+        <el-form-item
           label="合作单位"
           prop="school"
           :rules="[{ required: true, message: '合作单位不能为空' }]"
@@ -349,6 +365,7 @@ export default {
       topFrom: {
         type: "", // 收费类型
         section: "", //所属分部
+        courseViewType: "", // 收费模式
         school: "", // 合作单位
         teacher: "", // 乐团主管
         name: "", //乐团名称
@@ -551,6 +568,7 @@ export default {
             this.topFrom.paymentValidEndDate =
               res.data.musicGroup.paymentValidEndDate;
             this.topFrom.section = res.data.musicGroup.organId;
+            this.topFrom.courseViewType = res.data.musicGroup.courseViewType;
             this.topFrom.school = res.data.musicGroup.cooperationOrganId;
             this.topFrom.teacher = res.data.musicGroup.educationalTeacherId;
             this.topFrom.boss = res.data.musicGroup.teamTeacherId;
@@ -613,6 +631,7 @@ export default {
           type: "", // 收费类型
           section: "", //所属分部
           school: "", // 合作单位
+          courseViewType: "",
           teacher: "", // 乐团主管
           name: "", //乐团名称
           boss: "", // 运营主管
@@ -741,6 +760,7 @@ export default {
             ),
             chargeTypeId: this.topFrom.type,
             cooperationOrganId: this.topFrom.school,
+            courseViewType: this.topFrom.courseViewType,
             teamTeacherId: this.topFrom.boss,
             educationalTeacherId: this.topFrom.teacher,
             enrollClasses: this.topFrom.startClass.join(","),

+ 2 - 2
src/views/teamDetail/teamList.vue

@@ -340,10 +340,10 @@
                 <el-button
                   type="text"
                   v-if="
-                    scope.row.status == 'DRAFT' ||
+                    ((scope.row.status == 'DRAFT' ||
                     scope.row.status == 'AUDIT' ||
                     scope.row.status == 'FEE_AUDIT' ||
-                    ((scope.row.status == 'APPLY' ||
+                    scope.row.status == 'APPLY' ||
                       scope.row.status == 'PAY') &&
                       permission('musicGroup/cancelMusicGroup'))
                   "

+ 1 - 1
vue.config.js

@@ -21,7 +21,7 @@ let target = 'https://test.dayaedu.com' //test环境
 // let target = 'http://192.168.3.139:8000' // 箭河
 // let target = 'http://192.168.3.38:8000' //邹璇
 // let target = 'http://192.168.3.57:8000' //勇哥
-// let target = 'http://dev.dayaedu.com' // 测试服
+// let target = 'http://47.114.176.40:8000' // 测试服
 // let target = 'http://192.168.3.134' // 乔
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {

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