浏览代码

Merge branch 'wxl_01_27' into online

lex-xin 4 年之前
父节点
当前提交
898874b7d0

+ 23 - 6
src/views/categroyManager/specialSetup/typesManager.vue

@@ -2,7 +2,7 @@
   <div class='m-container'>
     <!-- <h2>收费类型设置</h2> -->
     <div class="m-core">
-      <div class='newBand' v-permission="'chargeType/upSet'"
+      <div class='newBand' v-permission="'chargeType/upSet/createSet'"
            @click="openTypes('create')">添加</div>
       <!-- 列表 -->
       <div class="tableWrap">
@@ -13,9 +13,13 @@
                            label="收费类型">
           </el-table-column>
           <el-table-column align='center'
+                           prop="description"
+                           label="缴费名目">
+          </el-table-column>
+          <el-table-column align='center'
                            label="操作">
             <template slot-scope="scope">
-              <el-button @click="openTypes('update', scope.row)" v-permission="'chargeType/upSet'"
+              <el-button @click="openTypes('update', scope.row)" v-permission="'chargeType/upSet/updateSet'"
                          type="text">修改</el-button>
               <el-button slot="reference" v-permission="'chargeType/del'"
                   @click="onTypesDel(scope.row)"
@@ -47,6 +51,13 @@
                     placeholder="请输入收费类型"
                     autocomplete="off"></el-input>
         </el-form-item>
+        <el-form-item label="缴费名目"
+                      prop="description"
+                      :label-width="formLabelWidth">
+          <el-input v-model.trim="form.description"
+                    placeholder="请输入缴费名目"
+                    autocomplete="off"></el-input>
+        </el-form-item>
       </el-form>
       <span slot="footer"
             class="dialog-footer">
@@ -76,9 +87,11 @@ export default {
       formLabelWidth: '100px',
       form: {
         name: null, //
+        description: null,
       },
       rules: {
         name: [{ required: true, message: '请输入类型名称', trigger: 'blur' }],
+        description: [{ required: true, message: '请输入缴费名目', trigger: 'blur' }]
       },
       pageInfo: {
         // 分页规则
@@ -151,15 +164,19 @@ export default {
       this.formActionTitle = type
       // 修改的时候赋值
       if (type == 'update') {
-        this.form = {
-          id: row.id,
-          name: row.name,
-        }
+        this.$nextTick(() => {
+          this.form = {
+            id: row.id,
+            name: row.name,
+            description: row.description
+          }
+        })
       }
     },
     onFormClose (formName) { // 关闭弹窗重置验证
       this.form = {
         name: null, // 作业模块名称
+        description: null
       }
       this.$refs[formName].resetFields()
     },

+ 9 - 27
src/views/resetTeaming/components/resetPayList.vue

@@ -350,33 +350,17 @@
     <el-dialog title="选择预览声部"
                :visible.sync="dialogSubjectVisible"
                width="400px">
-      <el-radio-group v-model="dialogSubjectId">
-        <el-radio style="margin-right: 15px;"
-                  border
-                  size="medium"
-                  :label="item.subjectId"
-                  v-for="(item, index) in dialogSubjectList"
-                  :key="index">{{ item.subName }}</el-radio>
-      </el-radio-group>
+      <el-tabs v-model="activeName" type="card">
+        <el-tab-pane :label="subject.subName" lazy v-for="(subject, index) in dialogSubjectList" :key="index" :name="subject.subjectId.toString()">
+          <subject-preview :subjectId="subject.subjectId"
+                       :calenderId="dialogCalenderId"></subject-preview>
+        </el-tab-pane>
+      </el-tabs>
       <div slot="footer">
         <el-button @click="dialogSubjectVisible = false">取 消</el-button>
-        <el-button type="primary"
-                   v-permission="'studentRegistration/getSubjectGoodsAndInfo/967'"
-                   @click="onPreviewSubmit">预 览</el-button>
       </div>
     </el-dialog>
 
-    <el-dialog title="预览"
-               :visible.sync="previewVisible"
-               v-if="previewVisible"
-               class="previewContainer"
-               width="400px">
-      <subject-preview :subjectId="dialogSubjectId"
-                       :calenderId="dialogCalenderId"></subject-preview>
-      <div slot="footer">
-        <el-button @click="previewVisible = false">确 定</el-button>
-      </div>
-    </el-dialog>
   </div>
 </template>
 <script>
@@ -469,9 +453,8 @@ export default {
       payOrderTypeLists: payOrderTypeList,
       dialogSubjectVisible: false, // 预览声部
       dialogSubjectList: [],
-      dialogSubjectId: null, // 选择预览声部编号
+      activeName: null,
       dialogCalenderId: null, // 选择编号
-      previewVisible: false
     };
   },
   //生命周期 - 创建完成(可以访问当前this实例)
@@ -751,14 +734,13 @@ export default {
       await findMusicGroupSubjectInfo({ musicGroupId: musicGroupId }).then(res => {
         if (res.code == 200) {
           this.dialogSubjectList = res.data.musicGroupSubjectPlans
+          // 默认预览第一个
+          this.activeName = this.dialogSubjectList[0].subjectId.toString()
           this.dialogSubjectVisible = true
         } else {
           this.$message.warning('没有可预览的声部')
         }
       })
-    },
-    onPreviewSubmit () {
-      this.previewVisible = true
     }
   },
   watch: {

+ 4 - 2
src/views/resetTeaming/modals/pay-items.vue

@@ -129,10 +129,10 @@
               @click="$listeners.onCreateQRCode(scope.row)"
               >续费二维码</el-button
             >
+            <!-- studentRegistration/getSubjectGoodsAndInfo/967 -->
             <el-button
               type="text"
-              v-if="$listeners.onPreview && payUserType === 'STUDENT' && scope.row.paymentType == 'MUSIC_APPLY'"
-              v-permission="'musicGroup/findMusicGroupSubjectInfo/966'"
+              v-if="$listeners.onPreview && payUserType === 'STUDENT' && scope.row.paymentType == 'MUSIC_APPLY' && (permission('musicGroup/findMusicGroupSubjectInfo/966') &&permission('studentRegistration/getSubjectGoodsAndInfo/967'))"
               @click="$listeners.onPreview(scope.row)"
               >预览</el-button
             >
@@ -158,6 +158,7 @@ import { addMusicGroupPaymentCalender, getMusicGroupPaymentCalender, resetMusicG
 import { musicGroupPaymentCalenderDetailDel } from '../api'
 import loading from '@/utils/loading'
 import pagination from "@/components/Pagination/index";
+import { permission } from '@/utils/directivePage'
 export default {
   props: ["batchNo", "teamStatus", "teamType", "payUserType", "isNewGropu"],
   components: {
@@ -179,6 +180,7 @@ export default {
     this.getList();
   },
   methods: {
+    permission,
     async getList() {
       try {
         const res = await getMusicGroupPaymentCalender({

+ 316 - 279
src/views/resetTeaming/modals/subject-preview.vue

@@ -4,105 +4,151 @@
 			<h2>缴费说明</h2>
 			1、为确保声部平衡,请家长确认 注册声部为孩子的最终录取声部。<br />
 			2、为保障每个声部人数达标,我们都进行了超员20%的录取,系统将按照提交注册的先后顺序安排名额。超员后 有可能出现无法注册的情况,请您理解。如果其他声部仍有名额,我们将优先调配您的孩子;
-			<div class="line_bottom" style="margin: 20px 0 0;"></div>
 		</div>
 
 		<div class="section">
-			<h2 class="title">乐团课程</h2>
-			<div class="options">
-				<div class="option" :class="[!item.isStudentOptional ? 'disabled' : '']" v-for="(item, index) in courseInfo" :key="index" @click="onCourseChange(item)">
-					<div class="o_hd"><i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i></div>
-					<div class="o_bd">{{ item.courseType | coursesType }}</div>
-					<span class="o_ft" style="color: #1a1a1a;">
-						原价:<del style=" font-size: 16px; color: #1a1a1a">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
-					</span>
-				</div>
-			</div>
-			<div class="options sale lines">
-				<div class="option">
-					<div class="o_bd"></div>
-					<span class="o_ft">
-						现价 ¥<span style="font-size: 20px">{{ orderInfo.musicClassFee | moneyFormat }}</span>
-					</span>
-				</div>
-			</div>
+			<h2 class="title">{{ chargeTypeName }}</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>
+			<!-- 所有不可选的课程合集 -->
+			<template v-if="courseShowStatus">
+				<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">
+						<i class="check_default" :class="[item.isStatus ? 'check_active' : '']"></i>
+						<span style="display: flex; align-items: center;">
+							<template v-if="item.courseType == 'PROJECT'">{{ item.name }} </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">
+						<span style="color: #1A1A1A">¥{{ item.courseCurrentPrice | moneyFormat }}</span>
+					</el-col>
+					<el-col :span="6">
+						<del style="color: #AAA;">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
+					</el-col>
+				</el-row>
+			</template>
+			<!-- 可选课程信息集合 -->
+			<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-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>
+					</el-col>
+					<el-col :span="6">
+						<span style="color: #1A1A1A">¥{{ item.courseCurrentPrice | moneyFormat }}</span>
+					</el-col>
+					<el-col :span="6">
+						<del style="color: #AAA;">¥{{ item.courseOriginalPrice | moneyFormat }}</del>
+					</el-col>
+				</el-row>
+			</template>
+
+			<el-row class="option-row lines">
+				<el-col :span="12" class="fontBold">
+					仅需支付
+				</el-col>
+				<el-col :span="6">
+					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.musicClassFee | moneyFormat }}</span>
+				</el-col>
+				<el-col :span="6">
+					<del class="fontBold" style="color: #f85043;">¥{{ orderInfo.musicMarketClassFee | moneyFormat }}</del>
+				</el-col>
+			</el-row>
 		</div>
 
 		<div class="section" v-if="instrumentResult.length > 0">
 			<h2 class="title">乐器</h2>
-			<div class="options">
-				<div v-for="(con, index) in instrumentResult" :key="index" @click="instrumentF(con)" :class="[ instrumentResult.length > 1 ? 'oc' : '' ]">
-					<div class="option">
-						<div class="o_hd"><i class="check_default" :class="[ con.checked ? 'check_active' : '' ]"></i></div>
-						<div class="o_bd">
+            <div v-for="(i, index) in instrumentResultList" :key="index">
+				<el-row class="title-row">
+					<el-col :span="12">
+						<template v-if="i[0]['kitType'] == 'GROUP'">团购乐器</template>
+						<template v-if="i[0]['kitType'] == 'LEASE'">乐器租赁</template>
+						<template v-if="i[0]['kitType'] == 'FREE'">免费使用</template>
+						<template v-if="i[0]['kitType'] == 'owned'">自备乐器</template>
+					</el-col>
+					<el-col :span="5" :offset="1" style="text-align: right;">
+						<template v-if="['GROUP', 'FREE'].includes(i[0]['kitType'])">现价</template>
+						<template v-if="i[0]['kitType'] == 'LEASE'">租赁押金</template>
+					</el-col>
+					<el-col :span="5" :offset="1" style="text-align: right;">
+						<template v-if="['GROUP', 'LEASE', 'FREE'].includes(i[0]['kitType'])">原价</template>
+					</el-col>
+				</el-row>
+
+				<el-row class="option-row" v-for="(con, index) in i" :key="index" @click.native="instrumentF(con)">
+					<el-col :span="12">
+						<i class="check_default" :class="[ con.checked ? 'check_active' : '' ]"></i>
+						<div>
 							{{ con.name }}
-						</div>
-						<span class="o_ft o_ft_price" v-if="con.price && con.kitType == 'FREE'">
-							原价<del>:¥{{ con.marketPrice | moneyFormat }}</del>
-						</span>
-						<span class="o_ft o_ft_price" v-if="con.price && con.kitType == 'GROUP'">
-							原价<del>:¥{{ con.marketPrice | moneyFormat }}</del>
-						</span>
-					</div>
-					<div class="configuration" v-if="con.marketPrice">
-						<div class="config config_line">
-							<div class="title"><span>配置</span></div>
-							<div class="content">
-								<p>{{ con.goodsList[0].specification }}</p>
+							<div v-if="con.goodsList" style="font-size: .12rem; color: #aaa">
+								{{ con.goodsList[0].specification }}
 							</div>
 						</div>
-					</div>
-					<div class="options sale" style="margin-bottom: 5px;" v-if="con.marketPrice">
-						<div class="option">
-							<div class="o_bd"></div>
-							<template v-if="(con.kitType == 'LEASE')">
-								<span class="o_ft">
-									押金:¥<span style="font-size: 20px">{{ Number((con.depositFee  - con.coupon).toFixed(2)) | moneyFormat }}</span>
-								</span>
-							</template>
-							<template v-if="con.price && con.kitType == 'FREE'">
-								<span class="o_ft">
-									免费领用
-								</span>
-							</template>
-							<span class="o_ft" v-if="con.price && con.kitType == 'GROUP'">
-								现价:¥<span style="font-size: 20px">{{ Number((con.price  - con.coupon).toFixed(2)) | moneyFormat }}</span>
-							</span>
-						</div>
-					</div>
-				</div>
+					</el-col>
+					<el-col :span="6">
+						<span style="color: #1A1A1A" v-if="(con.kitType == 'LEASE')">¥{{ Number((con.depositFee  - con.coupon).toFixed(2)) | moneyFormat }}</span>
+						<span style="color: #1A1A1A" v-if="con.price && con.kitType == 'FREE'">¥{{ 0 | moneyFormat }}</span>
+						<span style="color: #1A1A1A" v-if="con.price && con.kitType == 'GROUP'">¥{{ Number((con.price  - con.coupon).toFixed(2)) | moneyFormat }}</span>
+					</el-col>
+					<el-col :span="6">
+						<del style="color: #AAA;" v-if="con.kitType != 'owned'">¥{{ con.marketPrice | moneyFormat }}</del>
+					</el-col>
+				</el-row>
 			</div>
+
+			<el-row class="option-row lines">
+				<el-col :span="12" class="fontBold">
+					仅需支付
+				</el-col>
+				<el-col :span="6">
+					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.goodsPrice | moneyFormat }}</span>
+				</el-col>
+				<el-col :span="6">
+					<del class="fontBold" style="color: #f85043;">¥{{ orderInfo.goodsMarketPrice | moneyFormat }}</del>
+				</el-col>
+			</el-row>
 		</div>
 
 		<div class="section" v-if="accessOries.length > 0" key="accessOries">
 			<h2 class="title">辅件</h2>
-			<div class="options" v-for="(instr, index) in accessOries" :key="index" @click="onAuxiliarie(instr)">
-				<div class="option">
-					<div class="o_hd"><i class="check_default" :class="[ instr.checked ? 'check_active' : '' ]"></i></div>
-					<div class="o_bd">{{ instr.name }}</div>
-					<span class="o_ft" style="font-size: 14px;">
-						<!-- <del>原价:¥{{ instr.marketPrice }}</del> -->
-						<template v-if="instr.price == 0">免费</template>
-						<template v-else>现价:¥{{ instr.price | moneyFormat }}</template>
-						<!-- {{ instr.price == 0 ? '免费' : '现价:¥' + instr.price | moneyFormat }} -->
-					</span>
-				</div>
-				<div class="configuration" v-if="instr.goodsList.length > 1">
-					<div class="config config_other">
-						<div class="title"><span>配置</span></div>
-						<div class="content" v-for="item in instr.goodsList" :key="item.id">
-							<div class="option" style="padding: 0 5px;">
-								<div class="o_bd" style="font-size: 14px">{{ item.name }}</div>
-								<!-- <span class="o_ft">¥{{ item.marketPrice }}</span> -->
-							</div>
-						</div>
-					</div>
-				</div>
-			</div>
+            <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>
+
+			<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">
+					<span style="color: #1A1A1A" v-if="instr.price == 0">免费</span>
+					<span style="color: #1A1A1A" v-else>¥{{ instr.price | moneyFormat }}</span>
+				</el-col>
+				<el-col :span="6">
+					<del style="color: #AAA;">¥{{ instr.goodsList[0] ? instr.goodsList[0].marketPrice : 0 | moneyFormat }}</del>
+				</el-col>
+			</el-row>
+
+			<el-row class="option-row lines">
+				<el-col :span="12" class="fontBold">
+					仅需支付
+				</el-col>
+				<el-col :span="6">
+					<span class="fontBold" style="color: #f85043;">¥{{ orderInfo.accessPrice | moneyFormat }}</span>
+				</el-col>
+				<el-col :span="6">
+					<del class="fontBold" style="color: #f85043;">¥{{ orderInfo.accessMarketPrice | moneyFormat }}</del>
+				</el-col>
+			</el-row>
 		</div>
 
 		<!-- 原价现价 -->
-		<div class="section">
+		<!-- <div class="section">
 			<div class="needprice markerprice">
 				<del>原价</del>
 				<del>¥{{ orderInfo.marketPrice | moneyFormat }}</del>
@@ -111,7 +157,7 @@
 				<span>仅需支付</span>
 				<span>¥{{ orderInfo.amount | moneyFormat }}</span>
 			</div>
-		</div>
+		</div> -->
 
 		<div class="buy">
 			<div class="price">
@@ -126,8 +172,8 @@
 </template>
 <script>
 import { permission } from '@/utils/directivePage'
-import { getSubjectGoodsAndInfoPreview } from '@/api/buildTeam'
-
+import { getSubjectGoodsAndInfoPreview, getType } from '@/api/buildTeam'
+import dayjs from 'dayjs'
 const paymentPatternType = {
     0: '按月',
     1: '按学期',
@@ -154,7 +200,12 @@ export default {
                 goodsIds: null,
                 contractGoodsIds: null, // 选中所有商品ID
                 couponPrice: 0, //
-                musicClassFee: 0
+                musicClassFee: 0, // 课程现价
+                musicMarketClassFee: 0, // 课程原价
+                accessPrice: 0, // 辅件现价
+                accessMarketPrice: 0, // 辅件原价
+                goodsPrice: 0, // 乐器现价
+                goodsMarketPrice: 0, // 乐器原价
             }, // 金额列表,金额计算
             courseInfo: null, // 课程信息
             musicGroupSubject: null, // 基本信息
@@ -167,6 +218,10 @@ export default {
             chargeTypeId: null,
             paymentStatus: null,
             paymentPattern: null,
+            serviceValidDate: null, // 服务时间
+            courseShowStatus: false,
+            chargeTypeList: [],
+            chargeTypeName: null,
         };
     },
     mounted() {
@@ -180,14 +235,44 @@ export default {
                 subjectId: this.subjectId,
                 calenderId: this.calenderId
             }
+            await getType().then(res => {
+                let result = res.data
+                if(res.code == 200) {
+                    this.chargeTypeList = result.rows || []
+                }
+            })
+
             await getSubjectGoodsAndInfoPreview(params).then(res => {
                 let result = res
                 if (result.code == 200) {
                     let tempResult = result.data
-                    this.paymentPattern = tempResult.musicGroupPaymentCalender ? tempResult.musicGroupPaymentCalender.paymentPattern : 2
+                    this.paymentPattern = 2
+                    if(tempResult.musicGroupPaymentCalender) {
+                        this.paymentPattern = tempResult.musicGroupPaymentCalender.paymentPattern
+                        this.serviceValidDate = dayjs(tempResult.musicGroupPaymentCalender.paymentValidStartDate).format('YYYY/MM/DD') + '~' + dayjs(tempResult.musicGroupPaymentCalender.paymentValidEndDate).format('YYYY/MM/DD')
+                    }
                     let tempInfo = tempResult.musicGroupPaymentCalender? tempResult.musicGroupPaymentCalender.musicGroupPaymentCalenderCourseSettingsList : null
                     // 判断是否有课程
                     if (tempInfo && tempInfo.length > 0) {
+                        let tempCourse = {
+                            courseCurrentPrice: 0,
+                            courseOriginalPrice: 0,
+                            courseType: null,
+                            name: '乐团训练辅助系统'
+                        }
+                        tempInfo.forEach(info => {
+                            if(!info.isStudentOptional) {
+                                this.courseShowStatus = true
+                                tempCourse = {
+                                    courseCurrentPrice: (info.courseCurrentPrice + tempCourse.courseCurrentPrice),
+                                    courseOriginalPrice: (info.courseOriginalPrice + tempCourse.courseOriginalPrice),
+                                    courseType: 'PROJECT',
+                                    isStatus: true,
+                                    name: '乐团训练辅助系统'
+                                }
+                            }
+                        })
+                        this.courseShowInfo = [tempCourse]
                         // 默认课程都选中
                         this.courseInfo = tempInfo
                     } else {
@@ -206,6 +291,7 @@ export default {
 
                     this.musicGroupSubject = tempResult.musicGroupSubjectPlan
                     let instrumentInfo = {}
+                    let tempInstrument = []
                     tempResult.musicGroupSubjectGoodsGroupList.forEach((item) => {
                         if (item.type == "INSTRUMENT") {
                             // 获取乐器所有提供方式
@@ -264,6 +350,7 @@ export default {
                                     }
                                 }
                                 this.instrumentResult.push(tempItem)
+                                tempInstrument.push(tempItem)
                             }
                         } else if (item.type == "ACCESSORIES") {
                             item.checked = true
@@ -272,13 +359,33 @@ export default {
                     })
                     // 添加自备选项
                     if (this.instrumentResult.length > 0) {
-                        this.instrumentResult.push({
+                        // this.instrumentResult.push({
+                        //     id: -1,
+                        //     kitType: 'owned',
+                        //     name: '自备',
+                        //     price: 0,
+                        //     marketPrice: 0,
+                        //     checked: false
+                        // })
+                        let owned = {
                             id: -1,
                             kitType: 'owned',
-                            name: '自备',
+                            name: '自备乐器',
                             price: 0,
                             marketPrice: 0,
                             checked: false
+                        }
+                        tempInstrument.push(owned)
+                        this.instrumentResult.push(owned)
+
+                        let sorted = this.groupBy(tempInstrument, (item) => {
+                            return [item.kitType];
+                        });
+                        this.instrumentResultList = sorted
+                        this.chargeTypeList.forEach(item => {
+                            if(item.id == tempResult.musicGroup.chargeTypeId) {
+                                this.chargeTypeName = item.description
+                            }
                         })
                     }
                 }
@@ -286,6 +393,24 @@ export default {
                 this.calcPrice()
             })
         },
+        groupBy(array, f) {
+            var groups = {};
+            array.forEach(function (o) {
+                var group = JSON.stringify(f(o));
+                groups[group] = groups[group] || [];
+                groups[group].push(o);
+            });
+            return Object.keys(groups).map(function (group) {
+                return groups[group];
+            });
+        },
+        onQuestions() {
+            this.$alert('乐团辅助训练系统描述文案--2月3号下班前才会出', '乐团训练辅助系统', {
+                confirmButtonText: '确定',
+                callback: action => {
+                }
+            });
+        },
         onCourseChange(item) {
             // 判断用户是否可以选择
             if (item.isStudentOptional) {
@@ -325,12 +450,17 @@ export default {
                 ids = []
             let amount = 0,
                 marketPrice = 0,
+                goodsPrice = 0, // 乐器两现价
+                goodsMarketPrice = 0, // 乐器原价
                 goodsGroupIds = {},
                 courseKeys = [],
                 couponPrice = 0, // 优惠金额
                 goodsIds = [],
                 tempCourseFee = 0,
                 musicClassFee = 0,
+                musicMarketClassFee = 0,
+                tempAccessPrice = 0,
+                tempAccessMarketPrice = 0,
                 tempGroupRemissionCourseFee = 0, // 乐团减免费用
                 contractGoodsIds = '' // 合同所需要的商品Id (只需要乐器编号)
             // 课程
@@ -341,11 +471,11 @@ export default {
                 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)
@@ -369,19 +499,23 @@ export default {
                             couponPrice = item.coupon // 优惠金额
                             if (item.name != '自备') {
                                 amount += item.depositFee
+                                goodsPrice += item.depositFee
                             } else {
                                 amount += 0
                             }
                         } else {
                             amount += parseFloat(item.price)
+                            goodsPrice += parseFloat(item.price)
                             couponPrice = item.coupon ? item.coupon : 0
                         }
                         if (item.kitType == 'LEASE') {
                             if (item.name != '自备') {
                                 marketPrice += item.depositFee
+                                goodsMarketPrice += item.depositFee
                             }
                         } else {
                             marketPrice += parseFloat(item.marketPrice)
+                            goodsMarketPrice += parseFloat(item.marketPrice)
                         }
                         // item.id ? goodsGroupIds[item.id] : null
                         if (item.id) {
@@ -409,9 +543,9 @@ export default {
                         }
 
                         // 是否减免课程费用,必须团购,并且开启了减免课程费用
-						if(item.kitType == 'GROUP' && item.groupRemissionCourseFee == 1) {
-							musicClassFee = parseFloat(musicClassFee - tempGroupRemissionCourseFee)
-						}
+                        if(item.kitType == 'GROUP' && item.groupRemissionCourseFee == 1) {
+                            musicClassFee = parseFloat(musicClassFee - tempGroupRemissionCourseFee)
+                        }
                     }
                 })
             }
@@ -425,13 +559,13 @@ export default {
             // }
             // 辅件
             if (this.accessOries.length > 0) {
-                let tempAccessPrice = 0
                 this.accessOries.forEach(item => {
                     if (item.checked) {
                         tempAccessPrice += parseFloat(item.price)
                         amount += parseFloat(item.price)
                         if (item.goodsList && item.goodsList.length > 0) {
                             item.goodsList.forEach(childGoods => {
+                                tempAccessMarketPrice += parseFloat(childGoods.marketPrice)
                                 marketPrice += parseFloat(childGoods.marketPrice)
                             })
                         }
@@ -446,7 +580,6 @@ export default {
                     })
                 // }
             }
-            // console.log(amount)
             let tempGroupPurchasePrice = amount
             // 判断减去优惠金额,是否大于0(这里有可能出现负数)
             if (amount - couponPrice >= 0) {
@@ -476,6 +609,7 @@ export default {
                 this.needPrice = Number(amount.toFixed(2))
             }
             this.buyList = buyList
+
             this.orderInfo = {
                 amount: Number(amount.toFixed(2)),
                 marketPrice: Number(marketPrice.toFixed(2)),
@@ -485,7 +619,12 @@ export default {
                 goodsIds: goodsIds.join(','),
                 contractGoodsIds: contractGoodsIds,
                 courseKeys: courseKeys,
-                musicClassFee: musicClassFee
+                musicClassFee: musicClassFee,
+                musicMarketClassFee: musicMarketClassFee,
+                accessMarketPrice: tempAccessMarketPrice,
+                accessPrice: tempAccessPrice,
+                goodsPrice: goodsPrice,
+                goodsMarketPrice: goodsMarketPrice
             }
         },
         permission(str){
@@ -495,38 +634,22 @@ export default {
 };
 </script>
 <style lang="less" scoped>
-
 .noticeInfo {
   line-height: 1.8;
     h2 {
         font-size: 18px;
         color: #1a1a1a;
-        padding-bottom: 10px;
+        line-height: 28px;
+        height: 26px !important;
+        font-weight: bold;
     }
 
     position: relative;
     background: #fff;
-    padding: 15px 16px 10px;
+    padding: 0 16px 10px;
     font-size: 14px;
     color: #808080;
-}
-
-.protocolbtn {
-    margin: 35px 0;
-    background: #14928a;
-    color: #fff;
-    font-size: 18px;
-    border-radius: 50px;
-    text-align: center;
-    width: 100%;
-}
-
-.line_bottom {
-    border-bottom: 1px solid #ededed;
-}
-
-.line_top {
-    border-top: 1px solid #ededed;
+    margin-bottom: 10px;
 }
 
 .section {
@@ -537,8 +660,8 @@ export default {
     >.title {
         font-size: 20px;
         line-height: 28px;
+        height: 26px !important;
         font-weight: bold;
-        padding-bottom: 5px;
 
         &::before {
             content: " ";
@@ -564,168 +687,6 @@ export default {
     }
 }
 
-.options {
-
-    // padding-top: .08px;
-    .oc {
-        border-bottom: 1px solid #ededed;
-
-        &:last-child {
-            border-bottom: 0;
-            // margin-top: 0.08px;
-            padding-top: 9px;
-        }
-    }
-
-    .protocol {
-        padding-left: 20px;
-        font-size: 10px;
-        line-height: 14px;
-    }
-
-    &.classInfo {
-        .option .o_ft {
-            color: #1a1a1a;
-        }
-    }
-
-    &.lines {
-        margin-top: 5px;
-        border-top: 1px solid #ededed;
-    }
-
-    &.sale {
-        .option {
-
-            .o_bd,
-            .o_ft {
-                font-size: 16px;
-                color: #f85043;
-                font-weight: bold;
-            }
-        }
-    }
-
-    .option {
-        line-height: 26px;
-        font-size: 15px;
-        display: flex;
-        align-items: center;
-        position: relative;
-        padding: 10px 5px 5px;
-
-        .o_hd {
-            display: flex;
-        }
-
-        .o_bd {
-            color: #1a1a1a;
-            flex: 1;
-            font-size: 16px;
-
-            .c {
-                font-size: 12px;
-            }
-        }
-
-        .o_ft {
-            font-size: 16px;
-            color: #fa101d;
-
-            del {
-                color: #aaaaaa;
-                font-size: 12px;
-            }
-        }
-
-        .o_ft_price,
-        .o_ft_price del {
-            font-size: 16px;
-            color: #1a1a1a;
-        }
-
-        .check_default {
-            margin-right: 8px;
-            display: block;
-            width: 18px;
-            height: 18px;
-            background-color: #e9eaef;
-            border-radius: 50%;
-
-            &.check_active {
-                background: url("../../../assets/images/icon_checkbox.png") no-repeat center;
-                background-size: contain;
-            }
-        }
-    }
-}
-
-.configuration {
-    padding-bottom: 9px;
-
-    .config_line {
-        display: flex;
-        justify-content: space-between;
-
-        .content {
-            width: 70%;
-            text-align: right;
-        }
-
-        .title {
-            font-size: 14px;
-            color: #808080;
-
-            span {
-                padding-left: 26px;
-            }
-        }
-    }
-
-    .config_other {
-        .title {
-            // background:rgba(246,246,246,1);
-            // height: 1px;
-            position: relative;
-
-            // margin: .15px 0;
-            span {
-                // position: absolute;
-                // left: .12px;
-                // top: -.09px;
-                font-size: 14px;
-                color: #808080;
-                margin-left: 17px;
-                display: inline-block;
-                background-color: #fff;
-                padding: 0 4px;
-            }
-        }
-    }
-
-    .content {
-        font-size: 12px;
-        padding-left: 16px;
-        line-height: 22px;
-        color: #acacac;
-
-        .o_ft {
-            color: #aaaaaa;
-            font-size: 12px;
-        }
-    }
-
-    .options {
-        padding-top: 0;
-        padding-left: 16px;
-
-        .option {
-            font-size: 14px;
-            color: #6f6f6f;
-        }
-    }
-}
-
 .disabled {
     opacity: 0.7;
 }
@@ -877,4 +838,80 @@ export default {
         font-size: 16px;
     }
 }
+
+.check_default {
+    margin-right: 8px;
+    display: flex;
+    align-items: center;
+    height: 26px;
+    &::before {
+        display: block;
+        content: ' ';
+        width: 18px;
+        height: 18px;
+        background-color: #e9eaef;
+        border-radius: 50%;
+    }
+    &.check_active {
+        &::before {
+            display: block;
+            content: ' ';
+            background: url("../../../assets/images/icon_checkbox.png") no-repeat center;
+            background-size: contain;
+        }
+    }
+}
+
+// .check_default {
+//             margin-right: 8px;
+//             display: block;
+//             width: 18px;
+//             height: 18px;
+//             background-color: #e9eaef;
+//             border-radius: 50%;
+
+//             &.check_active {
+//                 background: url("../../../assets/images/icon_checkbox.png") no-repeat center;
+//                 background-size: contain;
+//             }
+//         }
+.title-row {
+    background: #F3F4F8;
+    color: #1a1a1a;
+    padding:5px 0 3px;
+    border-radius:5px;
+    font-size: 14px;
+}
+.option-row {
+    line-height: 26px;
+    font-size: 14px;
+    display: flex;
+    // align-items: center;
+    position: relative;
+    padding: 10px 0 5px;
+    box-sizing: border-box;
+    .el-col {
+        display: flex;
+        // align-items: center;
+    }
+    .el-col-6 {
+        display: flex;
+        justify-content: flex-end;
+    }
+    &.lines {
+        margin-top: 5px;
+        border-top: 1px solid #ededed;
+    }
+}
+
+.el-icon-question {
+    display: flex;
+    align-items: center;
+    font-size: 16px;
+    color: #4d4d4d;
+}
+
+.fontBold {
+    font-weight: bold;
+}
 </style>