lex-xin hai 9 meses
pai
achega
7749d78988

+ 2 - 2
src/constant/guide.js

@@ -46,8 +46,8 @@ export const guideList = {
     permission: "/globalConfig/chargesList"
   },
   memberList: {
-    name: "云练习定价",
-    desc: "可对不同分部设置云练习学员购买价格,若不设置则学员不可购买云练习",
+    name: "学练宝定价",
+    desc: "可对不同分部设置学练宝学员购买价格,若不设置则学员不可购买学练宝",
     path: "/memberFeeSet",
     permission: "/memberFeeSet"
   },

+ 1 - 1
src/constant/index.js

@@ -371,7 +371,7 @@ export const couponType = {
 export const orderType = {
   APPLY: "报名",
   RENEW: "续费",
-  MEMBER: "会员购买",
+  MEMBER: "学练宝购买",
   SMALL_CLASS_TO_BUY: "VIP购买",
   SPORADIC: "零星收费",
   LUCK: "福袋活动",

+ 1 - 1
src/views/auditList/index.vue

@@ -14,7 +14,7 @@
           <musicGroup v-if="activeIndex === '1'" />
         </el-tab-pane>
         <el-tab-pane
-          label="云练习缴费"
+          label="学练宝缴费"
           name="2"
           v-if="permission('cloudCoachPaymentProgram/queryPage/home')"
         >

+ 6 - 2
src/views/auditList/member.vue

@@ -4,7 +4,7 @@
       <el-form :inline="true" :model="searchForm">
         <el-form-item prop="period">
           <el-select
-            placeholder="云练习单位"
+            placeholder="学练宝单位"
             clearable
             v-model.trim="searchForm.period"
             style="width: 100% !important"
@@ -94,10 +94,14 @@
           ></el-table-column>
           <el-table-column align="left" prop="organName" label="分部名称">
           </el-table-column>
-          <el-table-column align="left" prop="name" label="云练习">
+          <el-table-column align="left" prop="name" label="学练宝">
             <template slot-scope="scope">
               <div>
                 <p>
+                  学练宝版本:
+                  {{ scope.row.memberRankSettingName ? scope.row.memberRankSettingName : "--" }}
+                </p>
+                <p>
                   续费周期:
                   {{ scope.row.memberNum ? scope.row.memberNum : "--"
                   }}{{ scope.row.period | memberEnumType }}

+ 2 - 0
src/views/categroyManager/productSystem/memberFeeSet.vue

@@ -859,6 +859,8 @@ export default {
           obj[key] = row.memberFeeSetting[key];
         }
       }
+      this.form.outId = row.id;
+      this.form.organIds = row.organId ? [row.organId] : []
       await this.getAllMember()
       this.form = {
         ...obj,

+ 2 - 2
src/views/categroyManager/productSystem/memberSet.vue

@@ -622,8 +622,7 @@ export default {
         this.title = "修改";
         this.pageType = "update";
         this.addDisabled = false;
-        tempStatus = row.buyFlag || false
-        this.buyFlag = row.buyFlag;
+        tempStatus = this.buyFlag
       } else {
         this.addDisabled = true;
         tempStatus = true;
@@ -702,6 +701,7 @@ export default {
         const { data } = await getmemberRankDetail({
           memberRankSettingId: row.id
         });
+        this.buyFlag = data.buyFlag || false
         this.form = { ...data };
         console.log(row.parentId, 'parentId')
         if(row.parentId) {

+ 8 - 0
src/views/resetTeaming/api.js

@@ -141,6 +141,14 @@ export const getAllmemberRank = data =>
     method: "get",
     params: data
   });
+
+export const getMemberRankTree = (data) => {
+  return request2({
+    url: "/api-web/memberRankSetting/queryTree",
+    method: "get",
+    params: data
+  });
+}
 // 获取会员是否自动生效
 export const getAutoActivationFlag = data =>
   request2({

+ 101 - 40
src/views/resetTeaming/components/payInfoDetail.vue

@@ -113,7 +113,7 @@
                     <img src="../images/checkIcon2.png" alt="" />
                   </div>
                   <div class="checkRight">
-                    <p>云练习</p>
+                    <p>学练宝</p>
                     <p class="checkSubTitle">乐团练习工具</p>
                   </div>
                   <div class="checTriangle" v-if="member">
@@ -203,6 +203,8 @@
               <payMember
                 ref="payMember"
                 :memberRankList="memberRankList"
+                @create="addPayMember"
+                @remove="removePayMember"
                 @moneyChange="syncAllMoney"
                 @priceChange="priceChange"
                 :rulesForm="rulesForm"
@@ -444,7 +446,7 @@ import { getSysTenantConfig } from "@/views/courseRulersManager/api";
 import { sysConfigList } from "@/api/generalSettings";
 import {
   queryByMusicGroupOrganizationCourseSettingsId,
-  getAllmemberRank,
+  getMemberRankTree,
   musicGroupcreateCalender,
   musicGroupresetCalender,
   getAutoActivationFlag
@@ -665,7 +667,13 @@ export default {
             if (res.data.member) {
               // 团练保
               this.member = true;
-              this.$set(this.form, "memberList", [{ ...res.data.member }]);
+
+              const tempMember = res.data?.member || []
+              tempMember.forEach(m => {
+                m.memberRankSettingId = this.formatParentId(m.memberRankSettingId, this.memberRankList)
+              })
+
+              this.$set(this.form, "memberList", tempMember);
             }
             if (res.data.repair) {
               this.leBao = true;
@@ -681,11 +689,11 @@ export default {
                 this.teamCourse = true;
 
                 this.$set(this.form, "eclass", res.data?.course);
-                console.log(
-                  [...res.data?.course],
-                  "res.data?.course",
-                  this.form
-                );
+                // console.log(
+                //   [...res.data?.course],
+                //   "res.data?.course",
+                //   this.form
+                // );
                 this.initDetail = true;
                 this.$set(
                   this.form,
@@ -788,6 +796,24 @@ export default {
         console.log(e);
       }
     },
+    formatParentId(id, list, ids = []) {
+      for (const item of list) {
+        if (item.children) {
+          const cIds = this.formatParentId(
+            id,
+            item.children,
+            [...ids, item.id]
+          );
+          if (cIds.includes(id)) {
+            return cIds;
+          }
+        }
+        if (item.id === id) {
+          return [...ids, id];
+        }
+      }
+      return ids;
+    },
     async getLeBao() {
       try {
         const res = await getSysTenantConfig({ group: "MUSIC_REPAIR" });
@@ -804,8 +830,9 @@ export default {
     },
     async getMemberList() {
       try {
-        const res = await getAllmemberRank({ isDefault: 0 });
-        this.memberRankList = res.data;
+        const musicGroupId = this.$route.query.id;
+        const {data} = await getMemberRankTree({ musicGroupId })
+        this.memberRankList = data || [];
         // 获取是否展示会员是否自动生效
         const memberRes = await getAutoActivationFlag();
         this.showAutoActivationFlag = memberRes.data;
@@ -872,11 +899,11 @@ export default {
       // 格式化课程类型
       const organId = this.musicGroup?.organId;
       const courseViewType = this.musicGroup?.courseViewType;
-      console.log(
-        this.musicGroup.courseViewType,
-        "musicGroup.courseViewType",
-        this.organizationCourseUnitPriceSettings
-      );
+      // console.log(
+      //   this.musicGroup.courseViewType,
+      //   "musicGroup.courseViewType",
+      //   this.organizationCourseUnitPriceSettings
+      // );
       const _ = {};
       const list = (this.organizationCourseUnitPriceSettings || []).filter(
         item =>
@@ -885,7 +912,7 @@ export default {
           courseViewType != null &&
           courseViewType == item.courseViewType
       );
-      console.log(list, "list");
+      // console.log(list, "list");
       for (const item of list) {
         _[item.courseType] = item;
       }
@@ -949,6 +976,17 @@ export default {
     addActive() {
       this.form.activeList.push({});
     },
+    addPayMember() {
+      this.form.memberList.push({
+        period: "",
+        num: "",
+        name: "",
+        actualAmount: "",
+        memberRankSettingId: "",
+        optionalFlag: null,
+        autoActivationFlag: false
+      })
+    },
     removeActive(index) {
       this.form.activeList[index] = null;
       this.$set(
@@ -962,6 +1000,10 @@ export default {
       this.$set(this.form, "eclass", this.form.eclass.filter(item => !!item));
       // this.form.eclass = this.form.eclass.filter((item) => !!item);
     },
+    removePayMember(index) {
+      this.form.memberList[index] = null;
+      this.$set(this.form, 'memberList', this.form.memberList.filter(item => !!item))
+    },
     async onPreview() {
       // 开始预览
       const musicGroupId = this.$route.query.id;
@@ -1081,7 +1123,7 @@ export default {
       });
     },
     scrollView(object) {
-      console.log(object);
+      // console.log(object);
       for (const i in object) {
         let dom = this.$refs[i];
         // 这里是针对遍历的情况(多个输入框),取值为数组
@@ -1117,17 +1159,18 @@ export default {
           }
         });
       }
-      let memberObj =
-        form.memberList?.length > 0 ? { ...form.memberList[0] } : null;
-      // 获取会员名称
-      if (memberObj) {
-        this.memberRankList.forEach(item => {
-          if (item.id == memberObj.memberRankSettingId) {
-            memberObj.name = item.name;
+      let memberObj = JSON.parse(JSON.stringify(form.memberList))
+      // // 获取会员名称
+      if (memberObj && memberObj.length > 0) {
+        memberObj.forEach(item => {
+          item.memberRankSettingId = item.memberRankSettingId.length > 0 ? item.memberRankSettingId[item.memberRankSettingId.length - 1] : null
+          const n = this.memberRankList.find(c => c.id = item.memberRankSettingId)
+          if(n) {
+            item.name = n.name;
+          item.intro = n.intro
           }
-        });
+        })
       }
-      console.log(memberObj, "memberObj", activeList, form.eclass);
       let tempCourseList = form.eclass?.length > 0 ? form.eclass : [];
       let courseList = [];
       if (tempCourseList.length > 0) {
@@ -1164,6 +1207,15 @@ export default {
     },
     fommatDate() {
       if (this.$route.query.payUserType == "STUDENT") {
+        const tempMemberList = this.form.memberList || []
+        const calenderMember = []
+        tempMemberList.forEach(item => {
+          const { memberRankSettingId, ...more } = item 
+          calenderMember.push({
+            ...more,
+            memberRankSettingId: memberRankSettingId.length > 0 ? memberRankSettingId[memberRankSettingId.length - 1] : null
+          })
+        })
         return {
           payUserType: this.$route.query.payUserType,
           musicGroupOrganizationCourseSettingId:
@@ -1177,11 +1229,12 @@ export default {
             this.form.leBaoList?.length > 0
               ? { ...this.form.leBaoList[0] }
               : null,
-          calenderMember:
-            this.form.memberList?.length > 0 &&
-            this.form.memberList[0]?.memberRankSettingId
-              ? { ...this.form.memberList[0] }
-              : null,
+          // calenderMember:
+          //   this.form.memberList?.length > 0 &&
+          //   this.form.memberList[0]?.memberRankSettingId
+          //     ? { ...this.form.memberList[0] }
+          //     : null,
+          calenderMemberList: calenderMember.length > 0 ? calenderMember : [],
           musicGroupPaymentCalenderCourseSettingsList:
             this.form.eclass?.length > 0 ? this.form.eclass : null,
           musicGroupId: this.$route.query.id,
@@ -1198,7 +1251,15 @@ export default {
         if (this.form.calenderFeeType == "TEACHER") {
           calenderFeeJson.teacherFeeList = this.form.teacherFeeList;
         }
-
+        const tempMemberList = this.form.memberList || []
+        const calenderMember = []
+        tempMemberList.forEach(item => {
+          const { memberRankSettingId, ...more } = item 
+          calenderMember.push({
+            ...more,
+            memberRankSettingId: memberRankSettingId.length > 0 ? memberRankSettingId[memberRankSettingId.length - 1] : null
+          })
+        })
         return {
           payUserType: this.$route.query.payUserType,
           musicGroupOrganizationCourseSettingId:
@@ -1212,11 +1273,12 @@ export default {
             this.form.leBaoList?.length > 0
               ? { ...this.form.leBaoList[0] }
               : null,
-          calenderMember:
-            this.form.memberList?.length > 0 &&
-            this.form.memberList[0]?.memberRankSettingId
-              ? { ...this.form.memberList[0] }
-              : null,
+          // calenderMember:
+          //   this.form.memberList?.length > 0 &&
+          //   this.form.memberList[0]?.memberRankSettingId
+          //     ? { ...this.form.memberList[0] }
+          //     : null,
+          calenderMemberList: calenderMember.length > 0 ? calenderMember : [],
           musicGroupPaymentCalenderCourseSettingsList:
             this.form.eclass?.length > 0 ? this.form.eclass : null,
           musicGroupId: this.$route.query.id,
@@ -1304,7 +1366,6 @@ export default {
               courseCurrentPrice: 0
             });
           });
-          console.log("type", newValue, oldValue);
           this.$set(this.form, "teacherFeeList", arr);
         }
       },
@@ -1331,7 +1392,7 @@ export default {
       // this.$forceUpdate()
     },
     "form.calenderFeeType"(val, oldValue) {
-      console.log(val, oldValue, this.initDetail);
+      // console.log(val, oldValue, this.initDetail);
       if (val == "TEACHER" && !this.initDetail) {
         let arr = [];
         this.form.eclass.forEach(item => {
@@ -1342,7 +1403,7 @@ export default {
             courseCurrentPrice: 0
           });
         });
-        console.log("calenderFeeType", val, oldValue);
+        // console.log("calenderFeeType", val, oldValue);
         this.$set(this.form, "teacherFeeList", arr);
       }
     },

+ 4 - 84
src/views/resetTeaming/modals/member.vue

@@ -5,7 +5,7 @@
     class="courseModel"
     style="margin-top: 12px;"
   >
-    <template>
+    <!-- <template>
       <div class="yunTrain">
         <img :src="trainBg" />
         <div class="toolText">
@@ -20,91 +20,11 @@
           </p>
         </div>
       </div>
-    </template>
+    </template> -->
 
     <slot />
-    <!-- <div class="section" v-if="toolsPackage.length > 0" key="toolsPackage">
-      <el-row class="title-row">
-        <el-col :span="isShowSalePrice ? 9 : 14"
-          >练习系统{{
-            isGiveAccessories && accessStatus ? "(赠送辅件一套)" : null
-          }}</el-col
-        >
-        <el-col :span="5" style="text-align: right;">时长</el-col>
-        <el-col :span="5" style="text-align: right;">原价</el-col>
-        <el-col :span="5" style="text-align: right;" v-if="isShowSalePrice"
-          >售价</el-col
-        >
-      </el-row>
-      <div v-for="(item, index) in toolsPackage" :key="index">
-        <el-row class="option-row" @click.native="onTrainChange(item)">
-          <el-col :span="isShowSalePrice ? 9 : 14">
-            <i
-              class="check_default"
-              :class="[
-                item.isStatus ? 'check_active' : '',
-                item.optionalFlag ? 'disabled' : ''
-              ]"
-            ></i>
-            {{ item.isStatus ? "true" : "false" }}
-            <span style="display: flex; align-items: center;">
-              <template>{{ item.name }}</template>
-            </span>
-          </el-col>
-          <el-col :span="5">
-            <span style="color: #AAA; font-size: 12px;"
-              >{{ item.num }}({{ item.period | unitFormat }})</span
-            >
-          </el-col>
-          <el-col :span="5">
-            <del style="color: #AAA; font-size: 12px;"
-              >¥{{ item.originalAmount | moneyFormat }}</del
-            >
-          </el-col>
-          <el-col :span="5" v-if="isShowSalePrice">
-            <span style="color: #1A1A1A"
-              >¥{{ item.actualAmount | moneyFormat }}</span
-            >
-          </el-col>
-        </el-row>
-        <el-row style="padding-left: 24px;" v-if="item.childGoodsList">
-          <el-col
-            v-for="(child, index) in item.childGoodsList"
-            :key="child.name"
-          >
-            <span style="font-size: 12px; color: #808080;"
-              >{{ child.name }}
-              {{ item.childGoodsList.length - 1 == index ? "" : "、" }}</span
-            >
-          </el-col>
-        </el-row>
-      </div>
-    </div> -->
-    <el-dialog
-      title="视频"
-      :visible.sync="videoStatus"
-      :modal-append-to-body="false"
-      :append-to-body="true"
-      class="videoDialog"
-      width="30%"
-    >
-      <!-- <video
-        style="width: 100%"
-        v-if="videoStatus"
-        controls="controls"
-        class="ql-video"
-        :src="'https://daya.ks3-cn-beijing.ksyun.com/202105/SWmqmvW.mp4'"
-        :poster="require('../../../assets/images/musicGroup/video_bg.png')"
-      /> -->
-      <videoTcplayer
-        v-if="videoStatus"
-        style="width: 100%"
-        controls="controls"
-        class="ql-video"
-        :src="'https://oss.dayaedu.com/daya/202105/SWmqmvW.mp4'"
-        :poster="require('../../../assets/images/musicGroup/video_bg.png')"
-      />
-    </el-dialog>
+    
+   
   </div>
 </template>
 

+ 117 - 63
src/views/resetTeaming/modals/payMember.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="teamCourseList">
     <p class="coreTitle">
-      云练习
+      管乐AI学练宝
       <el-form-item
         label="是否展示"
         prop="isShowMemberForPay"
@@ -11,13 +11,23 @@
         <el-select
           style="width: 100% !important"
           v-model="form.isShowMemberForPay"
-          placeholder="请选择是否展示云练习费用"
+          placeholder="请选择是否展示学练宝费用"
           size="mini"
         >
           <el-option label="是" :value="true"> </el-option>
           <el-option label="否" :value="false"> </el-option>
         </el-select>
       </el-form-item>
+
+      <el-button
+        icon="el-icon-plus"
+        size="mini"
+        plain
+        class="addBtn"
+        @click="$listeners.create"
+        v-if="!isDisabled"
+        >新增学练宝</el-button
+      >
     </p>
 
     <el-table
@@ -28,7 +38,7 @@
     >
       <el-table-column
         width="170px"
-        label="会员类型"
+        label="学练宝版本"
         prop="memberRankSettingId"
         key="memberRankSettingId"
       >
@@ -37,14 +47,14 @@
             :prop="'memberList.' + scope.$index + '.memberRankSettingId'"
             :rules="{
               required: true,
-              message: '请选择会员类型',
+              message: '请选择学练宝版本',
               trigger: 'change'
             }"
           >
-            <el-select
+            <!-- <el-select
               style="width: 90% !important"
               v-model="form.memberList[scope.$index].memberRankSettingId"
-              placeholder="会员类型"
+              placeholder="学练宝版本"
             >
               <el-option
                 :value="item.id"
@@ -52,7 +62,19 @@
                 v-for="item in memberRankList"
                 :key="item.id"
               ></el-option>
-            </el-select>
+            </el-select> -->
+            <el-cascader
+              filterable
+              style="width: 90% !important"
+              v-model="form.memberList[scope.$index].memberRankSettingId"
+              clearable
+              placeholder="请选择学练宝版本"
+              :options="memberRankList"
+              :props="{ value: 'id', label: 'name' }"
+              @change="(val) => changeMember(val, scope.$index)"
+              @visible-change="(value) => onVisibleChange(value, form.memberList[scope.$index].memberRankSettingId)"
+
+            ></el-cascader>
           </el-form-item>
         </template>
       </el-table-column>
@@ -75,7 +97,7 @@
               style="width: 90% !important"
               v-model="form.memberList[scope.$index].optionalFlag"
               placeholder="是否必选"
-              :disabled="!form.memberList[scope.$index].memberRankSettingId"
+              :disabled="!(form.memberList[scope.$index].memberRankSettingId && form.memberList[scope.$index].memberRankSettingId.length > 0)"
               clearable
             >
               <el-option
@@ -108,7 +130,7 @@
               style="width: 90% !important"
               v-model="form.memberList[scope.$index].autoActivationFlag"
               placeholder="请选择是否自动激活"
-              :disabled="!form.memberList[scope.$index].memberRankSettingId"
+              :disabled="!(form.memberList[scope.$index].memberRankSettingId && form.memberList[scope.$index].memberRankSettingId.length > 0)"
               clearable
             >
               <el-option
@@ -141,10 +163,10 @@
               :precision="0"
               :min="1"
               @change="
-                changeMemberperiodEnum(form.memberList[scope.$index].period)
+                changeMemberperiodEnum(form.memberList[scope.$index].period, scope.$index)
               "
               placeholder="会员周期"
-              :disabled="!form.memberList[scope.$index].memberRankSettingId"
+              :disabled="!(form.memberList[scope.$index].memberRankSettingId && form.memberList[scope.$index].memberRankSettingId.length > 0)"
             />
           </el-form-item>
         </template>
@@ -169,8 +191,8 @@
             <el-select
               v-model="form.memberList[scope.$index].period"
               style="width: 90% !important"
-              @change="changeMemberperiodEnum"
-              :disabled="!form.memberList[scope.$index].memberRankSettingId"
+              @change="(val) => changeMemberperiodEnum(val, scope.$index)"
+              :disabled="!(form.memberList[scope.$index].memberRankSettingId && form.memberList[scope.$index].memberRankSettingId.length > 0)"
             >
               <el-option
                 :label="item.label"
@@ -263,20 +285,18 @@
       </el-table-column>
       <el-table-column prop="close" key="close">
         <template slot-scope="scope">
-          <div style="color: #fa6400; cursor: pointer">
-            <!--  v-if="form.length > 1" v-if="clearable" -->
-            <!-- <i
-              @click="$listeners.remove && $listeners.remove(scope.$index)"
-              class="el-icon-error"
-              style="margin-bottom: 24px"
-            ></i>
-            删除 -->
+
+          <div
+            style="color: #fa6400; cursor: pointer; display: inline-block;"
+            v-if=" form.memberList.length > 1"
+            @click="() => onRemove(scope.$index)"
+          >
+            <i class="el-icon-error"></i>
+            删除
           </div>
         </template>
       </el-table-column>
     </el-table>
-    <!--          v-if="!isCommon && $listeners.create"  @click="$listeners.create"-->
-    <!-- <el-button icon="el-icon-plus" plain class="addBtn">新增课程类型</el-button> -->
   </div>
 </template>
 <script>
@@ -301,87 +321,125 @@ export default {
       boolOptionsOptions: objectToOptions(boolOptions),
       memberEnumList,
       memberPrice: {},
+      memberPriceList: [],
       getMemberFeeFlag: true
     };
   },
-  mounted() {},
+  async mounted() {
+    console.log(this.form.memberList, 'this.form.memberList')
+    this.form.memberList.forEach(async (item, index) => {
+      await this.changeMember(item.memberRankSettingId, index)
+    })
+  },
   methods: {
-    changeMemberperiodEnum(val) {
-      console.log(this.memberPrice);
+    onVisibleChange(value, id) {
+      if(!value) return
+      const tempId = id ? id[id.length - 1] : null
+      const ids = []
+      this.form.memberList.forEach(item => {
+        const itemId = item.memberRankSettingId ? item.memberRankSettingId[item.memberRankSettingId.length - 1] : null
+        if(itemId !== tempId) {
+          ids.push(itemId)
+        }
+      })
+      console.log(ids, 'ids')
+      console.log(value, id, 'teachList', this.memberRankList)
+      this.memberRankList.forEach((item) => {
+        if(ids.includes(item.id)) {
+          item.disabled = true;
+        } else {
+          item.disabled = false;
+        }
+
+        if(item.children && item.children.length > 0) {
+          item.children.forEach(child => {
+            if(ids.includes(child.id)) {
+              child.disabled = true;
+            } else {
+              child.disabled = false;
+            }
+          })
+        }
+      })
+      this.$forceUpdate();
+    },
+    changeMemberperiodEnum(val, index) {
+      console.log(this.memberPriceList, val, index);
       if (val == "DAY") {
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "actualAmount",
-          this.memberPrice.groupPurchaseDayFee * this.form.memberList[0].num
+          this.memberPriceList[index].groupPurchaseDayFee * this.form.memberList[index].num
         );
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "originalAmount",
-          this.memberPrice.originalDayFee * this.form.memberList[0].num
+          this.memberPriceList[index].originalDayFee * this.form.memberList[index].num
         );
       }
       if (val == "MONTH") {
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "actualAmount",
-          this.memberPrice.groupPurchaseMonthFee * this.form.memberList[0].num
+          this.memberPriceList[index].groupPurchaseMonthFee * this.form.memberList[index].num
         );
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "originalAmount",
-          this.memberPrice.originalMonthFee * this.form.memberList[0].num
+          this.memberPriceList[index].originalMonthFee * this.form.memberList[index].num
         );
       }
       if (val == "QUARTERLY") {
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "actualAmount",
-          this.memberPrice.groupPurchaseQuarterlyFee *
-            this.form.memberList[0].num
+          this.memberPriceList[index].groupPurchaseQuarterlyFee *
+            this.form.memberList[index].num
         );
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "originalAmount",
-          this.memberPrice.originalQuarterlyFee * this.form.memberList[0].num
+          this.memberPriceList[index].originalQuarterlyFee * this.form.memberList[index].num
         );
       }
       if (val == "YEAR_HALF") {
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "actualAmount",
-          this.memberPrice.groupPurchaseHalfYearFee *
-            this.form.memberList[0].num
+          this.memberPriceList[index].groupPurchaseHalfYearFee *
+            this.form.memberList[index].num
         );
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "originalAmount",
-          this.memberPrice.originalHalfYearFee * this.form.memberList[0].num
+          this.memberPriceList[index].originalHalfYearFee * this.form.memberList[index].num
         );
       }
       if (val == "YEAR") {
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "actualAmount",
-          this.memberPrice.groupPurchaseYearFee * this.form.memberList[0].num
+          this.memberPriceList[index].groupPurchaseYearFee * this.form.memberList[index].num
         );
         this.$set(
-          this.form.memberList[0],
+          this.form.memberList[index],
           "originalAmount",
-          this.memberPrice.originalYearFee * this.form.memberList[0].num
+          this.memberPriceList[index].originalYearFee * this.form.memberList[index].num
         );
       }
     },
-    change() {},
-    async changeMember(val) {
-      if (val) {
+    async changeMember(val, index) {
+      if (val && val.length > 0) {
         if (this.getMemberFeeFlag) {
           this.getMemberFeeFlag = false;
           try {
             const res = await getMemberFee({
-              rankId: val,
+              rankId: val[val.length - 1],
               organId: this.organId
             });
-            this.memberPrice = res.data;
+            // this.memberPrice = res.data;
+            console.log(val, index, 'index')
+            this.memberPriceList[index] = res.data
             this.getMemberFeeFlag = true;
             if (!res.data) {
               this.$bus.$emit("showguide", ["memberList"]);
@@ -440,16 +498,12 @@ export default {
         return callback();
       }
       return callback(new Error(`定价应在${min}-${max}之间`));
-    }
-  },
-  watch: {
-    form: {
-      deep: true,
-      handler(val) {
-        if (val.memberList[0].memberRankSettingId && !this.memberPrice.id) {
-          this.changeMember(val.memberList[0].memberRankSettingId);
-        }
-      }
+    },
+    onRemove(index) {
+      console.log(index, '1212')
+      this.memberPriceList.splice(index, 1)
+      this.$forceUpdate();
+      this.$listeners.remove && this.$listeners.remove(index)
     }
   },
   computed: {

+ 1 - 1
src/views/resetTeaming/modals/payTeamCourse.vue

@@ -229,7 +229,7 @@
       <el-table-column prop="close" key="close">
         <template slot-scope="scope">
           <div
-            style="color: #fa6400; cursor: pointer"
+            style="color: #fa6400; cursor: pointer; display: inline-block;"
             v-if="!isDisabled && form.eclass.length > 1"
             @click="$listeners.remove && $listeners.remove(scope.$index)"
           >

+ 6 - 13
src/views/resetTeaming/modals/review-detail.vue

@@ -201,21 +201,21 @@
       </el-table-column>
     </el-table>
     <el-alert
-      title="云练习"
+      title="学练宝"
       :closable="false"
       class="alert"
       type="info"
-      v-if="memberRankSettingId"
+      v-if="member.length > 0"
     >
     </el-alert>
     <el-table
-      :data="[{ ...member }]"
+      :data="member"
       stripe
-      v-if="memberRankSettingId"
+      v-if="member.length > 0"
       style="width: 100%; margin-top: 10px"
       :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
     >
-      <el-table-column prop="name" label="会员类型" width="120">
+      <el-table-column prop="name" label="学练宝版本" width="120">
       </el-table-column>
       <el-table-column prop="optionalFlag" label="是否必选" width="100px">
         <template slot-scope="scope">{{
@@ -235,7 +235,7 @@
         </template>
       </el-table-column>
       <el-table-column prop="num" label="数量" width="120"> </el-table-column>
-      <el-table-column prop="actualAmount" label="价(元)" width="120">
+      <el-table-column prop="actualAmount" label="团购价(元)" width="120">
         <template slot="header">
           <p style="position: relative">
             售价(元)
@@ -518,13 +518,6 @@ export default {
       }
       return "";
     },
-    memberRankSettingId() {
-      const active = this.member?.memberRankSettingId;
-      if (active) {
-        return active;
-      }
-      return "";
-    },
     calenderFeeJson() {
       const calenderFee = this.calender?.calenderFeeJson;
       if (calenderFee) {

+ 16 - 2
src/views/resetTeaming/modals/signUpPayment.less

@@ -29,7 +29,12 @@
     padding-bottom: 2px;
     width: 100%;
     justify-content: space-between;
-
+    .title-name {
+      max-width: 77%;
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+    }
     .icon_video {
       margin-left: 9px;
       display: inline-block;
@@ -39,7 +44,7 @@
       background-size: 100%;
     }
 
-    > span {
+    .lookVideo {
       display: flex;
       font-size: 11px;
       line-height: 1.5;
@@ -339,6 +344,15 @@
   font-size: 14px;
 }
 
+.option-intro {
+  padding-top: 3px;
+  .el-col {
+    font-size: 13px;
+    color: #777777;
+    line-height: 20px;
+  }
+}
+
 .option-row {
   line-height: 26px;
   font-size: 14px;

+ 59 - 62
src/views/resetTeaming/modals/subject-preview.vue

@@ -32,10 +32,26 @@
       :accessStatus="accessOries.length > 0"
       @onCheckItem="onCheckItem"
     >
-      <div class="section" v-if="toolsPackage.length > 0" key="toolsPackage">
+      <template  v-if="toolsPackage.length > 0">
+        <div  v-for="(item, index) in toolsPackage" :key="index">
+        <div class="yunTrain">
+        <img :src="trainBg" />
+        <div class="toolText">
+          <p class="toolTitle">
+            <span class="title-name">管乐AI学练宝{{ item.name }}</span>
+            <span class="lookVideo"
+              >查看视频<i class="icon_video" @click="videoStatus = true"></i
+            ></span>
+          </p>
+          <p class="toolDate">
+            购买后根据教学情况激活使用,详情咨询机构老师
+          </p>
+        </div>
+      </div>
+      <div class="section" >
         <el-row class="title-row">
           <el-col :span="12"
-            >练习系统{{
+            >学练宝版本{{
               isGiveAccessories && accessStatus ? "(赠送辅件一套)" : null
             }}</el-col
           >
@@ -45,33 +61,31 @@
             >售价</el-col
           > -->
         </el-row>
-        <div v-for="(item, index) in toolsPackage" :key="index">
-          <template v-for="(child, index) in formatList">
+        <div>
             <el-row class="option-row" style="cursor: default;" :key="index">
               <el-col :span="12" style="padding-left: 0.05rem">
                 <span style="display: flex; align-items: center;">
-                  {{ child.title }}
+                  {{ item.name }}
                 </span>
               </el-col>
               <el-col :span="5">
                 <span style="color: #AAA; font-size: 12px;"
-                  >{{ item.num | unitFormatMonth(item.period) }}个月</span
+                  >{{ item.num  }}{{ item.period | unitFormat }}</span
                 >
               </el-col>
               <el-col :span="7" style="text-align: right;">
                 <del style="color: #1A1A1A; font-size: 14px;width: 100%"
                   >¥{{
-                    child.monthPrice
-                      | unitFormatPrice(
-                        item.period,
-                        item.num,
-                        child.halfYearPrice
-                      )
+                    item.originalAmount | moneyFormat
                   }}</del
                 >
               </el-col>
             </el-row>
-          </template>
+            <el-row class="option-intro">
+              <el-col :span="24" style="padding-left: 0.05rem">
+                {{ item.intro }}
+              </el-col>
+            </el-row>
 
           <div class="paymentSection" @click="onCheckItem(item, 'train')">
             <i
@@ -83,11 +97,14 @@
             ></i>
             <div class="paymentPrice">
               <span>优惠价:¥{{ item.actualAmount | moneyFormat }}</span>
-              <del>原价:¥ {{ onCalcSinglePrice(item) }}</del>
+              <!-- <del>原价:¥ {{ onCalcSinglePrice(item) }}</del> -->
             </div>
           </div>
         </div>
       </div>
+      </div>
+      </template>
+      
     </member>
 
     <instrument-model
@@ -199,6 +216,24 @@
 
       <a class="btn-submit">购买</a>
     </div> -->
+
+    <el-dialog
+      title="视频"
+      :visible.sync="videoStatus"
+      :modal-append-to-body="false"
+      :append-to-body="true"
+      class="videoDialog"
+      width="30%"
+    >
+      <videoTcplayer
+        v-if="videoStatus"
+        style="width: 100%"
+        controls="controls"
+        class="ql-video"
+        :src="'https://oss.dayaedu.com/daya/202105/SWmqmvW.mp4'"
+        :poster="require('../../../assets/images/musicGroup/video_bg.png')"
+      />
+    </el-dialog>
   </div>
 </template>
 <script>
@@ -408,27 +443,15 @@ export default {
 
       let tempInfo =
         paymentCalender && paymentCalender.course ? paymentCalender.course : [];
-      let memberPrivilegesItemList = tempResult.memberPrivilegesItemList
-        ? tempResult.memberPrivilegesItemList
-        : [];
-      let tempMember = [];
-      memberPrivilegesItemList.forEach(member => {
-        if (
-          member.memberPrivilegesItems &&
-          member.memberPrivilegesItems.length > 0
-        ) {
-          member.memberPrivilegesItems.forEach(item => {
-            tempMember.push(item.name);
-          });
-        }
-      });
+
       // 云练习
       const member =
-        paymentCalender && paymentCalender.member ? paymentCalender.member : {};
+        paymentCalender && paymentCalender.member ? paymentCalender.member : [];
 
-      member.isStatus = true;
-      this.toolsPackage = member && !member.memberRankSettingId ? [] : [member];
-      console.log(this.toolsPackage, "this.toolsPackage");
+      member.forEach((item) => {
+        item.isStatus = true;
+      })
+      this.toolsPackage = member;
 
       // 乐器保养
       const repair =
@@ -942,38 +965,12 @@ export default {
   filters: {
     unitFormat(val) {
       let template = {
-        YEAR: "年",
-        MONTH: "月",
-        QUARTERLY: "季度",
-        YEAR_HALF: "半年"
+        YEAR: "()",
+        MONTH: "()",
+        QUARTERLY: "(季度)",
+        YEAR_HALF: "(半年)"
       };
       return template[val];
-    },
-    unitFormatMonth(val, period) {
-      const tempNum = {
-        YEAR: 12,
-        MONTH: 1,
-        QUARTERLY: 3,
-        YEAR_HALF: 6
-      };
-      return val * (tempNum[period] || 1);
-    },
-    unitFormatPrice(val, type, nums, halfYearPrice) {
-      const tempNum = {
-        YEAR: 12,
-        MONTH: 1,
-        QUARTERLY: 3,
-        YEAR_HALF: 6
-      };
-      const num = (tempNum[type] || 1) * nums;
-      let price = 0;
-      if (num % 6 === 0) {
-        const halfYearNum = Number(num / 6);
-        price += Number(halfYearPrice * halfYearNum);
-      } else {
-        price += Number(val * num);
-      }
-      return numeral(price).format("0,0.00");
     }
   }
 };