lex 1 년 전
부모
커밋
8f77f44cbc
35개의 변경된 파일790개의 추가작업 그리고 443개의 파일을 삭제
  1. 0 0
      dist/index.html
  2. 0 0
      dist/static/css/chunk-13e8999c.543a731e.css
  3. 1 0
      dist/static/css/chunk-177578a1.fc3113bb.css
  4. 0 0
      dist/static/css/chunk-223b1a3c.bd8c57b1.css
  5. 0 1
      dist/static/css/chunk-4344e48c.e70aac1c.css
  6. 0 0
      dist/static/css/chunk-4468dd01.6dba419a.css
  7. 1 0
      dist/static/css/chunk-5f20233e.1abaa712.css
  8. 0 0
      dist/static/css/chunk-78fc3600.dd5deb1f.css
  9. 0 0
      dist/static/css/chunk-ad7acf52.98effbb5.css
  10. 0 0
      dist/static/css/chunk-ca5130c4.dff1c558.css
  11. 0 0
      dist/static/css/chunk-d492af60.642a9667.css
  12. 0 0
      dist/static/css/chunk-e2437bb6.ec1cc742.css
  13. 0 0
      dist/static/js/app.44a55d03.js
  14. 4 0
      dist/static/js/chunk-13e8999c.2e8dfb49.js
  15. 0 0
      dist/static/js/chunk-177578a1.3ba1ea4e.js
  16. 0 0
      dist/static/js/chunk-223b1a3c.2a7c79d6.js
  17. 0 0
      dist/static/js/chunk-284059be.662183fb.js
  18. 0 0
      dist/static/js/chunk-4468dd01.54b52245.js
  19. 0 0
      dist/static/js/chunk-5f20233e.9247d214.js
  20. 0 0
      dist/static/js/chunk-78fc3600.e79f3e37.js
  21. 0 0
      dist/static/js/chunk-ad7acf52.b59c82e5.js
  22. 2 0
      dist/static/js/chunk-ca5130c4.467413ad.js
  23. 0 0
      dist/static/js/chunk-d492af60.c7922879.js
  24. 0 0
      dist/static/js/chunk-e2437bb6.35f59f92.js
  25. 10 4
      src/views/businessManager/orderManager/financeManager.vue
  26. 430 273
      src/views/contentManager/contentOperation.vue
  27. 1 1
      src/views/productService/model/rechargeModel.vue
  28. 1 1
      src/views/productService/model/serviceModel.vue
  29. 10 4
      src/views/resetTeaming/components/payInfoDetail.vue
  30. 1 1
      src/views/resetTeaming/modals/giveMemberModel.vue
  31. 2 2
      src/views/resetTeaming/modals/member.vue
  32. 5 3
      src/views/resetTeaming/modals/payTeamCourse.vue
  33. 152 45
      src/views/resetTeaming/modals/subject-preview.vue
  34. 168 106
      src/views/teamBuild/components/teamBaseInfo.vue
  35. 2 2
      vue.config.js

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/index.html


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-13e8999c.543a731e.css


+ 1 - 0
dist/static/css/chunk-177578a1.fc3113bb.css

@@ -0,0 +1 @@
+.m-container[data-v-1b31ac3b]{min-width:100%}.el-input[data-v-1b31ac3b]{width:400px}[data-v-1b31ac3b] .ql-editor{min-height:300px;padding:0}[data-v-1b31ac3b] .ql-container .ql-editor{max-height:500px}.el-row[data-v-1b31ac3b]{margin-top:40px}.el-col[data-v-1b31ac3b]{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:20px;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;margin-right:50%}.el-input-group[data-v-1b31ac3b]{width:200px;margin:0 20px}[data-v-1b31ac3b] .el-tree-node__content{height:40px!important}[data-v-1b31ac3b] .avatar-uploader .el-upload,[data-v-1b31ac3b] .upload-demo .el-upload{border-radius:6px;cursor:pointer;position:relative;overflow:hidden}.avatar-uploader .el-upload[data-v-1b31ac3b]:hover{border-color:#409eff}.avatar-uploader-icon[data-v-1b31ac3b]{border:1px dashed #d9d9d9;font-size:28px;color:#8c939d;width:120px;height:120px;line-height:120px;text-align:center}.avatar[data-v-1b31ac3b]{width:120px;height:120px;display:block}.ivu-upload[data-v-1b31ac3b]{display:none}.sd-container h2[data-v-1b31ac3b]{height:auto;font-weight:500;color:#444;line-height:37px;font-size:26px;margin-bottom:10px}.sd-container .titleInfo[data-v-1b31ac3b]{height:15px;line-height:15px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;color:#444;margin-bottom:25px}.sd-container .imgWrap[data-v-1b31ac3b]{margin-bottom:.15rem}.sd-container .imgWrap p[data-v-1b31ac3b]{font-size:.16rem;font-family:PingFangSC;font-weight:400;color:#444;line-height:.28rem;text-indent:.32rem}.sd-container .imgWrap img[data-v-1b31ac3b]{width:100%}.imageSize[data-v-1b31ac3b]{color:red;line-height:1.5}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-223b1a3c.bd8c57b1.css


+ 0 - 1
dist/static/css/chunk-4344e48c.e70aac1c.css

@@ -1 +0,0 @@
-.chioseWrap[data-v-368e77bc]{text-align:center;font-size:16px}.chioseWrap>p[data-v-368e77bc]{font-weight:600;padding-bottom:15px;line-height:1.5}.chioseWrap>p span[data-v-368e77bc]{color:red;padding:0 3px}.dialog-footer[data-v-368e77bc]{text-align:right;display:block;padding-top:15px}.chioseWrap[data-v-66f6a067]{font-size:16px}.chioseWrap>p[data-v-66f6a067]{font-weight:500;padding-bottom:15px}.chioseWrap>p span[data-v-66f6a067]{color:red;padding:0 3px}.dialog-footer[data-v-66f6a067]{text-align:right;display:block;padding-top:15px}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-4468dd01.6dba419a.css


+ 1 - 0
dist/static/css/chunk-5f20233e.1abaa712.css

@@ -0,0 +1 @@
+.chioseWrap[data-v-368e77bc]{text-align:center;font-size:16px}.chioseWrap>p[data-v-368e77bc]{font-weight:600;padding-bottom:15px;line-height:1.5}.chioseWrap>p span[data-v-368e77bc]{color:red;padding:0 3px}.dialog-footer[data-v-368e77bc]{text-align:right;display:block;padding-top:15px}.chioseWrap[data-v-825b85c8]{font-size:16px}.chioseWrap>p[data-v-825b85c8]{font-weight:500;padding-bottom:15px}.chioseWrap>p span[data-v-825b85c8]{color:red;padding:0 3px}.dialog-footer[data-v-825b85c8]{text-align:right;display:block;padding-top:15px}

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-78fc3600.dd5deb1f.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-ad7acf52.98effbb5.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-ca5130c4.dff1c558.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-d492af60.642a9667.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/css/chunk-e2437bb6.ec1cc742.css


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/app.44a55d03.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 4 - 0
dist/static/js/chunk-13e8999c.2e8dfb49.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-177578a1.3ba1ea4e.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-223b1a3c.2a7c79d6.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-284059be.662183fb.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-4468dd01.54b52245.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-5f20233e.9247d214.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-78fc3600.e79f3e37.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-ad7acf52.b59c82e5.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 0
dist/static/js/chunk-ca5130c4.467413ad.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-d492af60.c7922879.js


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 0
dist/static/js/chunk-e2437bb6.35f59f92.js


+ 10 - 4
src/views/businessManager/orderManager/financeManager.vue

@@ -710,7 +710,10 @@
             </div>
             <el-form-item
               label="销售金额"
-              v-if="form.applyType == 'SELL' || !isAdd"
+              v-if="
+                form.applyType == 'SELL' ||
+                  (!isAdd && form.saleAmount && !form.calenderId)
+              "
               prop="saleAmount"
               :label-width="formLabelWidth"
             >
@@ -724,7 +727,10 @@
             </el-form-item>
             <el-form-item
               label="服务金额"
-              v-if="form.applyType == 'SERVICE' || !isAdd"
+              v-if="
+                form.applyType == 'SERVICE' ||
+                  (!isAdd && form.serviceAmount && !form.calenderId)
+              "
               prop="serviceAmount"
               :label-width="formLabelWidth"
             >
@@ -737,7 +743,7 @@
               />
             </el-form-item>
           </div>
-          <div v-if="form.calenderId && isAdd">
+          <div v-if="form.calenderId">
             <el-form-item
               label="回款金额"
               prop="routeAmount"
@@ -1317,7 +1323,7 @@ export default {
               saleAmount: res.data.goodsAmount,
               schoolId:
                 parseInt(orderInfo.musicGroupId) || res.data.coopName || "",
-              applyType: "SELL",
+              applyType: "",
               calenderId: res.data.calenderId ? res.data.calenderId : ""
             }),
               this.$set(

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 430 - 273
src/views/contentManager/contentOperation.vue


+ 1 - 1
src/views/productService/model/rechargeModel.vue

@@ -140,7 +140,7 @@ export default {
               tenantId +
               "&returnUrl=" +
               returnUrl +
-              "&notifyUrl=" +
+              "&onotifyUrl=" +
               notifyUrl +
               "&type=" +
               res.data.type +

+ 1 - 1
src/views/productService/model/serviceModel.vue

@@ -214,7 +214,7 @@ export default {
               tenantId +
               "&returnUrl=" +
               returnUrl +
-              "&notifyUrl=" +
+              "&onotifyUrl=" +
               notifyUrl +
               "&type=" +
               res.data.type +

+ 10 - 4
src/views/resetTeaming/components/payInfoDetail.vue

@@ -198,6 +198,7 @@
                 @remove="removeExtraClass"
                 @moneyChange="syncAllMoney"
                 @priceChange="priceChange"
+                @priceChange2="priceChange2"
               />
               <payMember
                 ref="payMember"
@@ -907,6 +908,11 @@ export default {
       this.$set(this.form, "eclass", [..._]);
       this.syncAllMoney();
     },
+    priceChange2(item, index) {
+      const _ = [...this.form.eclass];
+      _[index] = item;
+      this.$set(this.form, "eclass", [..._]);
+    },
     syncAllMoney() {
       let money = 0;
       let first = 0;
@@ -1121,7 +1127,7 @@ export default {
           }
         });
       }
-      // console.log(memberObj, 'memberObj', activeList)
+      console.log(memberObj, "memberObj", activeList, form.eclass);
       let tempCourseList = form.eclass?.length > 0 ? form.eclass : [];
       let courseList = [];
       if (tempCourseList.length > 0) {
@@ -1283,7 +1289,8 @@ export default {
       handler(newValue, oldValue) {
         let oldString = JSON.stringify({ ...oldValue });
         let newString = JSON.stringify({ ...newValue });
-        console.log("type", newValue, oldValue, this.initDetail, "detail");
+
+        // console.log(oldString, newString, this.initDetail, "Eclass");
         if (this.initDetail || oldString == newString) {
           this.initDetail = false;
           return;
@@ -1301,8 +1308,7 @@ export default {
           this.$set(this.form, "teacherFeeList", arr);
         }
       },
-      deep: true,
-      immediate: true
+      deep: true
     },
     // "form.calenderFeeType"(val, oldValue) {
     //   if (val == "TEACHER" && !oldValue) {

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

@@ -152,7 +152,7 @@ export default {
               tenantId +
               "&returnUrl=" +
               returnUrl +
-              "&notifyUrl=" +
+              "&onotifyUrl=" +
               notifyUrl +
               "&wxAppId=" +
               wxAppId;

+ 2 - 2
src/views/resetTeaming/modals/member.vue

@@ -10,13 +10,13 @@
         <img :src="trainBg" />
         <div class="toolText">
           <p class="toolTitle">
-            团练宝
+            云练工具套装
             <span @click="videoStatus = true"
               >查看视频<i class="icon_video"
             /></span>
           </p>
           <p class="toolDate">
-            购买后由机构根据教学情况激活使用详细问题请咨询机构老师
+            购买后根据教学情况激活使用详细请咨询机构老师
           </p>
         </div>
       </div>

+ 5 - 3
src/views/resetTeaming/modals/payTeamCourse.vue

@@ -190,8 +190,8 @@
               :controls="false"
               :precision="0"
               :min="0"
-              @change="$listeners.priceChange(scope.row, scope.$index)"
               placeholder="请输入售价"
+              @change="$listeners.priceChange2(scope.row, scope.$index)"
             />
           </el-form-item>
         </template>
@@ -221,7 +221,9 @@
               @change="$listeners.priceChange(scope.row, scope.$index)"
               :disabled="false"
               placeholder="请输入原价"
+              @change="$listeners.priceChange2(scope.row, scope.$index)"
             />
+            <!--  -->
           </el-form-item>
         </template>
       </el-table-column>
@@ -266,9 +268,9 @@ export default {
   methods: {
     courseItemChange(row, index) {
       if (this.form.leixing == 2) {
-        console.log(row, "courseItemChange", index);
+        // console.log(row, "courseItemChange", index);
         const course = this.courseUnitPriceSettingsByType[row.courseType];
-        console.log(course, "course");
+        // console.log(course, "course");
         this.form.eclass[index].unitPrice = course.unitPrice || 0;
       }
     },

+ 152 - 45
src/views/resetTeaming/modals/subject-preview.vue

@@ -34,58 +34,58 @@
     >
       <div class="section" v-if="toolsPackage.length > 0" key="toolsPackage">
         <el-row class="title-row">
-          <el-col :span="isShowSalePrice ? 9 : 14"
+          <el-col :span="12"
             >练习系统{{
               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 :span="7" 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="onCheckItem(item, 'train')">
-            <el-col :span="isShowSalePrice ? 9 : 14">
-              <i
-                class="check_default"
-                :class="[
-                  item.isStatus ? 'check_active' : '',
-                  item.optionalFlag ? 'disabled' : ''
-                ]"
-              ></i>
-              <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>
+          <template v-for="(child, index) in formatList">
+            <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 }}
+                </span>
+              </el-col>
+              <el-col :span="5">
+                <span style="color: #AAA; font-size: 12px;"
+                  >{{ item.num | unitFormatMonth(item.period) }}个月</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
+                      )
+                  }}</del
+                >
+              </el-col>
+            </el-row>
+          </template>
+
+          <div class="paymentSection" @click="onCheckItem(item, 'train')">
+            <i
+              class="check_default"
+              :class="[
+                item.isStatus ? 'check_active' : '',
+                item.optionalFlag ? 'disabled' : ''
+              ]"
+            ></i>
+            <div class="paymentPrice">
+              <span>优惠价:¥{{ item.actualAmount | moneyFormat }}</span>
+              <del>原价:¥ {{ onCalcSinglePrice(item) }}</del>
+            </div>
+          </div>
         </div>
       </div>
     </member>
@@ -205,6 +205,7 @@
 import { permission } from "@/utils/directivePage";
 import { getSubjectGoodsAndInfoPreview, getType } from "@/api/buildTeam";
 import dayjs from "dayjs";
+import numeral from "numeral";
 const paymentPatternType = {
   0: "按月",
   1: "按学期",
@@ -294,7 +295,40 @@ export default {
         isShowVipCourseForPay: true,
         isShowMusicCourseForPay: true
       },
-      isShowSalePrice: true // 是否显示原价
+      isShowSalePrice: true, // 是否显示原价
+      formatList: [
+        {
+          title: "声部云练",
+          monthPrice: 240,
+          halfYearPrice: 980
+        },
+        {
+          title: "合奏云练",
+          monthPrice: 160,
+          halfYearPrice: 580
+        },
+        {
+          title: "独奏云练",
+          monthPrice: 160,
+          halfYearPrice: 580
+        },
+        {
+          title: "考级云练",
+          monthPrice: 160,
+          halfYearPrice: 580
+        },
+        {
+          title: "云课程",
+          monthPrice: 240,
+          halfYearPrice: 980
+        }
+      ],
+      tempNum: {
+        YEAR: 12,
+        MONTH: 1,
+        QUARTERLY: 3,
+        YEAR_HALF: 6
+      }
     };
   },
   mounted() {
@@ -874,6 +908,28 @@ export default {
     },
     permission(str) {
       return permission(str);
+    },
+    onCalcSinglePrice(item) {
+      const tempNum = {
+        YEAR: 12,
+        MONTH: 1,
+        QUARTERLY: 3,
+        YEAR_HALF: 6
+      };
+      const num = (tempNum[item.period] || 1) * item.num;
+      let price = 0;
+      if (num % 6 === 0) {
+        const halfYearNum = Number(num / 6);
+        this.formatList.forEach(format => {
+          price += Number(format.halfYearPrice * halfYearNum);
+        });
+      } else {
+        this.formatList.forEach(format => {
+          price += Number(format.monthPrice * num);
+        });
+      }
+
+      return numeral(Number(price)).format("0,0.00");
     }
   },
   filters: {
@@ -885,10 +941,61 @@ export default {
         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");
     }
   }
 };
 </script>
 <style lang="less" scoped>
 @import url("./signUpPayment.less");
+
+.paymentSection {
+  display: flex;
+  align-items: center;
+  margin-top: 13px;
+  background: #f7f7f7;
+  border-radius: 6px;
+  padding: 10px 6px;
+  cursor: pointer;
+
+  .paymentPrice {
+    span {
+      font-size: 15px;
+      font-weight: 500;
+      color: #f10100;
+      line-height: 21px;
+    }
+
+    del {
+      padding-left: 8px;
+      font-size: 13px;
+      color: #777777;
+    }
+  }
+}
 </style>

+ 168 - 106
src/views/teamBuild/components/teamBaseInfo.vue

@@ -96,8 +96,13 @@
             <p style="position: relative; display: inline-block">
               教学地点
               <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">如果已生成课表,则会修改未上课时的教学点</div>
-                <i class="el-icon-question" style="font-size: 18px; color: #f56c6c"></i>
+                <div slot="content">
+                  如果已生成课表,则会修改未上课时的教学点
+                </div>
+                <i
+                  class="el-icon-question"
+                  style="font-size: 18px; color: #f56c6c"
+                ></i>
               </el-tooltip>
             </p>
           </template>
@@ -199,8 +204,15 @@
 
           </el-select>
         </el-form-item> -->
-        <el-form-item label="机构类型" prop="ownershipType" v-if="tenantId == 1">
-          <el-select v-model.trim="topFrom.ownershipType" :disabled="basdisabled">
+        <el-form-item
+          label="机构类型"
+          prop="ownershipType"
+          v-if="tenantId == 1"
+        >
+          <el-select
+            v-model.trim="topFrom.ownershipType"
+            :disabled="basdisabled"
+          >
             <el-option label="自有" value="OWN"></el-option>
             <el-option label="三方" value="COOPERATION"></el-option>
             <!-- <el-option label="租赁"
@@ -253,7 +265,12 @@
           prop="teacher"
           :rules="[{ required: true, message: '乐团主管不能为空' }]"
         >
-          <el-select v-model.trim="topFrom.teacher" :disabled="true" filterable clearable>
+          <el-select
+            v-model.trim="topFrom.teacher"
+            :disabled="true"
+            filterable
+            clearable
+          >
             <el-option
               v-for="(item, key) in educationList"
               :key="key"
@@ -384,8 +401,8 @@
               {
                 pattern: /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/,
                 message: '请输入正确的金额',
-                trigger: 'blur',
-              },
+                trigger: 'blur'
+              }
             ]"
           >
             <el-input
@@ -393,7 +410,9 @@
               placeholder="请输入收费标准"
               :disabled="basdisabled"
             >
-              <i slot="suffix" class="el-input__icon" style="padding-right: 5px">元</i>
+              <i slot="suffix" class="el-input__icon" style="padding-right: 5px"
+                >元</i
+              >
             </el-input>
           </el-form-item>
           <el-form-item
@@ -403,17 +422,19 @@
               { required: true, message: '请输入单次训练时长' },
               {
                 pattern: /(^[0-9+]*$)/,
-                message: '请输入正确的时长',
-              },
+                message: '请输入正确的时长'
+              }
             ]"
           >
             <el-select
+              ref="singleTrainMinutesRef"
               v-model.trim="topFrom.singleTrainMinutes"
               filterable
               :disabled="basdisabled"
               allow-create
               default-first-option
               clearable
+              @blur="onSingleTrainMin"
             >
               <el-option
                 v-for="(item, index) in singleTrainMinutesList"
@@ -429,10 +450,14 @@
             :rules="[{ required: true, message: '请选择课程配置' }]"
           >
             <el-select
+              ref="coursePlanRef"
               v-model.trim="topFrom.coursePlan"
               filterable
               :disabled="basdisabled"
+              allow-create
+              default-first-option
               clearable
+              @blur="onCoursePlan"
             >
               <el-option
                 v-for="(item, index) in coursePlanList"
@@ -460,9 +485,9 @@
                 :value="item.value"
                 :disabled="
                   item.value <=
-                  (topFrom.firstRecruitGrade.length > 0
-                    ? Math.max(...topFrom.firstRecruitGrade)
-                    : 0)
+                    (topFrom.firstRecruitGrade.length > 0
+                      ? Math.max(...topFrom.firstRecruitGrade)
+                      : 0)
                 "
               ></el-option>
             </el-select>
@@ -535,7 +560,10 @@
                 <div slot="content">
                   学员提交乐团课后作业时,群聊中是否发送作业提交消息
                 </div>
-                <i class="el-icon-question" style="font-size: 18px; color: #f56c6c"></i>
+                <i
+                  class="el-icon-question"
+                  style="font-size: 18px; color: #f56c6c"
+                ></i>
               </el-tooltip>
             </p>
           </template>
@@ -558,7 +586,10 @@
               是否赠送辅件
               <el-tooltip placement="top" popper-class="mTooltip">
                 <div slot="content">购买团练宝是否赠送辅件</div>
-                <i class="el-icon-question" style="font-size: 18px; color: #f56c6c"></i>
+                <i
+                  class="el-icon-question"
+                  style="font-size: 18px; color: #f56c6c"
+                ></i>
               </el-tooltip>
             </p>
           </template>
@@ -624,7 +655,11 @@
         <div class="nextBtn" @click="gotoNext()" v-if="!basdisabled">
           {{ this.teamStatus == "teamDraft" ? "下一步" : "保存" }}
         </div>
-        <div class="nextBtn" v-if="this.teamStatus == 'teamAudit'" @click="gotoNext()">
+        <div
+          class="nextBtn"
+          v-if="this.teamStatus == 'teamAudit'"
+          @click="gotoNext()"
+        >
           下一步
         </div>
       </div>
@@ -644,7 +679,7 @@ import {
   getOrganRole,
   getTeacher,
   createTeam,
-  getGradeList,
+  getGradeList
 } from "@/api/buildTeam";
 import dayjs from "dayjs";
 import merge from "webpack-merge";
@@ -656,7 +691,7 @@ import { getMusicGroupPlanMakingList } from "@/views/baseRulesManager/api";
 import mergeMusic from "../components/merge-music";
 const singleTrainMinutesList = [
   { name: "90+90", id: "90+90" },
-  { name: "90+90+45", id: "90+90+45" },
+  { name: "90+90+45", id: "90+90+45" }
 ];
 const coursePlanList = [
   { name: "PlanS", id: "PlanS" },
@@ -664,12 +699,12 @@ const coursePlanList = [
   { name: "PlanB", id: "PlanB" },
   { name: "PlanC", id: "PlanC" },
   { name: "PlanD", id: "PlanD" },
-  { name: "PlanE", id: "PlanE" },
+  { name: "PlanE", id: "PlanE" }
 ];
 export default {
   components: {
     mergeMusic,
-    qrCode,
+    qrCode
   },
   name: "teamBaseInfo",
   props: ["getTeamList"],
@@ -714,13 +749,13 @@ export default {
         saleActivityDesc: "", // 销售活动描述
         basicStudentNum: "", // 学生基数
         paymentUserType: "", // 缴费方
-        chargeMode: "", // 计费方式
+        chargeMode: "" // 计费方式
       },
       baseInfo: {},
       money: 580,
       orderInfo: {
         marketPrice: 0, // 原价总金额
-        referencePrice: 0, // 现价总金额
+        referencePrice: 0 // 现价总金额
       }, // 金额列表,金额计算
       sectionList: [], // 分部列表
       cooperationList: [], // 教学点列表
@@ -746,19 +781,21 @@ export default {
       paymentStatus: false,
 
       paymentForm: {
-        paymentExpireDate: null,
+        paymentExpireDate: null
         // feeType: null
       },
       paymentRules: {
         paymentExpireDate: [
-          { required: true, message: "请设置缴费截止日期", trigger: "blur" },
-        ],
+          { required: true, message: "请设置缴费截止日期", trigger: "blur" }
+        ]
       },
       extendForm: {
-        expireDate: null,
+        expireDate: null
       },
       extendRule: {
-        expireDate: [{ required: true, message: "请选择延长时间", trigger: "change" }],
+        expireDate: [
+          { required: true, message: "请选择延长时间", trigger: "change" }
+        ]
       },
       isPay: false,
       extendPaymentStatus: false, // 延长缴费
@@ -768,7 +805,7 @@ export default {
       tenantId: "",
       coursePlanList: coursePlanList,
       musicGroupPlanMakingList: [],
-      singleTrainMinutesList: singleTrainMinutesList,
+      singleTrainMinutesList: singleTrainMinutesList
     };
   },
   created() {},
@@ -837,7 +874,7 @@ export default {
             cancelButtonText: "否",
             type: "warning",
             closeOnClickModal: false,
-            distinguishCancelAndClose: true,
+            distinguishCancelAndClose: true
           })
             .then(async () => {
               // localStorage.setItem(
@@ -848,7 +885,7 @@ export default {
               console.log(b);
               return b;
             })
-            .catch((e) => {
+            .catch(e => {
               console.log(e);
               if (e == "close") {
                 return false;
@@ -868,8 +905,18 @@ export default {
         return true;
       }
     },
+    onSingleTrainMin() {
+      console.log(
+        this.$refs.singleTrainMinutesRef,
+        "this.$refs.singleTrainMinutesRef"
+      );
+      this.topFrom.singleTrainMinutes = this.$refs.singleTrainMinutesRef.selectedLabel;
+    },
+    onCoursePlan() {
+      this.topFrom.coursePlan = this.$refs.coursePlanRef.selectedLabel;
+    },
     //|| this.teamStatus === 'teamAudit'
-    isNotEditing: function () {
+    isNotEditing: function() {
       return !(
         this.teamStatus === "teamDraft" ||
         this.teamStatus === "newTeam" ||
@@ -898,7 +945,7 @@ export default {
             return time.getTime() + 86400000 < Date.now();
             //开始时间不选时,结束时间最大值小于等于当天
           }
-        },
+        }
       };
     },
     init() {
@@ -918,7 +965,7 @@ export default {
       // }
 
       // 获取建团编制
-      getMusicGroupPlanMakingList().then((res) => {
+      getMusicGroupPlanMakingList().then(res => {
         if (res.code == 200) {
           this.musicGroupPlanMakingList = res.data;
         }
@@ -941,10 +988,12 @@ export default {
         // 单团修改
         this.teamid = this.$route.query.id;
 
-        let sotrage = JSON.parse(localStorage.getItem(`${this.$route.query.id}base`));
+        let sotrage = JSON.parse(
+          localStorage.getItem(`${this.$route.query.id}base`)
+        );
 
         if (!sotrage?.section) {
-          getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
+          getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
             if (res.code == 200) {
               // if (this.$listeners.getBaseInfo) {
               //   this.$listeners.getBaseInfo(res.data);
@@ -983,7 +1032,7 @@ export default {
       this.getStudentStatus();
       this.$emit("getName", this.topFrom?.name);
 
-      Promise.all([getEmployeeOrgan()]).then((values) => {
+      Promise.all([getEmployeeOrgan()]).then(values => {
         console.log(values, "--------");
         if (values[0].code == 200) {
           this.sectionList = values[0].data;
@@ -1033,7 +1082,7 @@ export default {
       // 获取乐团主管
       try {
         const ruselt = await getOrganRole({
-          id: val,
+          id: val
         });
         // 乐团主管
         this.educationList = ruselt?.data?.EDUCATION;
@@ -1046,52 +1095,53 @@ export default {
         console.log(e);
       }
       // 获取指导老师
-      getTeacher({ organId: val }).then((res) => {
+      getTeacher({ organId: val }).then(res => {
         if (res.code == 200) {
           this.teacherList = res.data;
         }
       });
       // 获取年级
-      getGradeList({ id: val }).then((res) => {
+      getGradeList({ id: val }).then(res => {
         let result = res.data;
         this.gradeListObj = res.data;
         if (res.code == 200 && result) {
           for (let i in result) {
             this.gradeList.push({
               value: i,
-              label: result[i],
+              label: result[i]
             });
           }
         }
       });
-      Promise.all([queryByOrganId({ organId: val }), getSchool({ organId: val })]).then(
-        (values) => {
-          if (values[0].code == 200) {
-            this.cooperationList = values[0].data;
-          }
-          if (values[1].code == 200) {
-            this.addList = values[1].data;
-          }
-          let arr = [];
-          if (this.cooperationList.length <= 0) {
-            arr.push("cooperationOrgan");
-          }
-          if (this.addList.length <= 0) {
-            arr.push("school");
-          }
-          if (arr.length > 0) {
-            this.$bus.$emit("showguide", arr);
-            return;
-          }
+      Promise.all([
+        queryByOrganId({ organId: val }),
+        getSchool({ organId: val })
+      ]).then(values => {
+        if (values[0].code == 200) {
+          this.cooperationList = values[0].data;
         }
-      );
+        if (values[1].code == 200) {
+          this.addList = values[1].data;
+        }
+        let arr = [];
+        if (this.cooperationList.length <= 0) {
+          arr.push("cooperationOrgan");
+        }
+        if (this.addList.length <= 0) {
+          arr.push("school");
+        }
+        if (arr.length > 0) {
+          this.$bus.$emit("showguide", arr);
+          return;
+        }
+      });
     },
     chioseSchool(val) {
       // 清除教学点
       this.topFrom.teacher = null;
       if (val) {
         console.log(this.cooperationList);
-        this.cooperationList.forEach((item) => {
+        this.cooperationList.forEach(item => {
           if (item.id == val) {
             console.log(item);
             this.$set(this.topFrom, "teacher", item.educationUserId);
@@ -1205,12 +1255,12 @@ export default {
               basicStudentNum: this.topFrom.basicStudentNum,
               paymentUserType: this.topFrom.paymentUserType,
               chargeMode: this.topFrom.chargeMode,
-              gradeType: this.topFrom.gradeType,
+              gradeType: this.topFrom.gradeType
             };
             // obj.musicGroupPaymentEntities = [];
             // createTeam
             if (this.teamStatus != "newTeam") {
-              return await resetTeamBaseInfo(obj).then(async (res) => {
+              return await resetTeamBaseInfo(obj).then(async res => {
                 if (res.code == 200) {
                   localStorage.setItem(
                     `${this.teamid}base`,
@@ -1234,7 +1284,7 @@ export default {
               });
             } else {
               // 发送建团申请 成功后跳到第二页
-              createTeam(obj).then((res) => {
+              createTeam(obj).then(res => {
                 if (res.code == 200) {
                   // this.$message.success('建团成功,请设置声部信息')
                   // this.$emit("chiosetab", 1);
@@ -1243,13 +1293,13 @@ export default {
                     title: "提示",
                     message: h("p", null, [
                       h("p", null, "新乐团基础信息创建完成"),
-                      h("p", null, "请设置声部信息"),
+                      h("p", null, "请设置声部信息")
                     ]),
                     type: "warning",
                     confirmButtonText: "是",
                     cancelButtonText: "否",
                     showCancelButton: true,
-                    customClass: "messageBox-prompt-test",
+                    customClass: "messageBox-prompt-test"
                   })
                     .then(() => {
                       this.$router.push(
@@ -1257,10 +1307,10 @@ export default {
                           query: merge(this.$route.query, {
                             type: "teamDraft",
                             id: res.data,
-                            team_status: "DRAFT",
-                          }),
+                            team_status: "DRAFT"
+                          })
                         },
-                        (router) => {
+                        router => {
                           console.log(router);
                           router.meta.title = "乐团编辑中";
                         }
@@ -1276,10 +1326,10 @@ export default {
                           query: merge(this.$route.query, {
                             type: "teamDraft",
                             id: res.data,
-                            team_status: "DRAFT",
-                          }),
+                            team_status: "DRAFT"
+                          })
                         },
-                        (router) => {
+                        router => {
                           console.log(router);
                           router.meta.title = "乐团编辑中";
                         }
@@ -1335,7 +1385,7 @@ export default {
         saleActivityDesc: "",
         paymentUserType: "",
         chargeMode: "",
-        basicStudentNum: "",
+        basicStudentNum: ""
       };
       this.$refs["topinfo"].resetFields();
     },
@@ -1347,12 +1397,12 @@ export default {
       this.$confirm(`是否确认开团?`, "提示", {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
-        type: "warning",
+        type: "warning"
       })
         .then(() => {
           musicGroupFound({
-            musicGroupId: this.$route.query.id,
-          }).then((res) => {
+            musicGroupId: this.$route.query.id
+          }).then(res => {
             if (res.code == 200) {
               // let query = this.$route.query;
               // this.$message.success("开启成功");
@@ -1375,12 +1425,12 @@ export default {
       let obj = {
         musicGroupId: this.teamid,
         page: 1,
-        rows: 9999,
+        rows: 9999
       };
       if (!this.teamid) return;
-      getStudentList(obj).then((res) => {
+      getStudentList(obj).then(res => {
         if (res.code == 200) {
-          res.data.rows.forEach((item) => {
+          res.data.rows.forEach(item => {
             // '未开启缴费', '开启缴费', '已缴费'
             if (item.paymentStatus == 2) {
               this.paymentNum += 1;
@@ -1405,18 +1455,18 @@ export default {
           } else {
             return false;
           }
-        },
+        }
       };
     },
     onStartPayment(formName) {
       // 开启缴费
-      this.$refs[formName].validate((valid) => {
+      this.$refs[formName].validate(valid => {
         if (valid) {
           musicGroupOpenPay({
             musicGroupId: this.teamid,
-            expireDate: this.paymentForm.paymentExpireDate,
+            expireDate: this.paymentForm.paymentExpireDate
             // feeType: this.paymentForm.feeType
-          }).then((res) => {
+          }).then(res => {
             if (res.code == 200) {
               this.$message.success("开启成功");
               this.paymentStatus = false;
@@ -1453,7 +1503,7 @@ export default {
           } else {
             return false;
           }
-        },
+        }
       };
     },
     extendTime(isPay) {
@@ -1469,17 +1519,17 @@ export default {
       this.extendPaymentStatus = true;
     },
     onExtendPayment(formName, isPay) {
-      this.$refs[formName].validate((valid) => {
+      this.$refs[formName].validate(valid => {
         if (valid) {
           if (!isPay) {
             extensionApplyExpire({
               musicGroupId: this.teamid,
-              expireDate: this.extendForm.expireDate,
-            }).then((res) => {
+              expireDate: this.extendForm.expireDate
+            }).then(res => {
               if (res.code == 200) {
                 this.$message.success("延长报名成功");
                 this.extendPaymentStatus = false;
-                getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
+                getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
                   if (res.code == 200) {
                     this.applyExpireDate = res.data.musicGroup.applyExpireDate;
                     this.setBase(res);
@@ -1492,14 +1542,15 @@ export default {
           } else {
             extensionPayment({
               musicGroupId: this.teamid,
-              expireDate: this.extendForm.expireDate,
-            }).then((res) => {
+              expireDate: this.extendForm.expireDate
+            }).then(res => {
               if (res.code == 200) {
                 this.$message.success("延长缴费成功");
                 this.extendPaymentStatus = false;
-                getTeamBaseInfo({ musicGroupId: this.teamid }).then((res) => {
+                getTeamBaseInfo({ musicGroupId: this.teamid }).then(res => {
                   if (res.code == 200) {
-                    this.paymentExpireDate = res.data.musicGroup.paymentExpireDate;
+                    this.paymentExpireDate =
+                      res.data.musicGroup.paymentExpireDate;
                   }
                 });
               } else {
@@ -1534,7 +1585,7 @@ export default {
     },
     gotoStudentList() {
       this.$router.push({
-        query: merge(this.$route.query, { tabrouter: 7 }),
+        query: merge(this.$route.query, { tabrouter: 7 })
       });
       //  this.$router.replace({query:{...this.$route.query,tabrouter:7}})
     },
@@ -1544,8 +1595,10 @@ export default {
       this.topFrom.time = res.data.musicGroup.applyExpireDate;
       this.topFrom.startClass = res.data.musicGroup.enrollClasses.split(",");
       this.topFrom.paymentPattern = res.data.musicGroup.paymentPattern;
-      this.topFrom.paymentValidStartDate = res.data.musicGroup.paymentValidStartDate;
-      this.topFrom.paymentValidEndDate = res.data.musicGroup.paymentValidEndDate;
+      this.topFrom.paymentValidStartDate =
+        res.data.musicGroup.paymentValidStartDate;
+      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;
@@ -1567,20 +1620,26 @@ export default {
         : null;
       this.paymentExpireDate = res.data.musicGroup.paymentExpireDate;
       this.applyExpireDate = res.data.musicGroup.applyExpireDate;
-      this.topFrom.transactionTeacherId = res.data.musicGroup.transactionTeacherId || "";
+      this.topFrom.transactionTeacherId =
+        res.data.musicGroup.transactionTeacherId || "";
       this.topFrom.homeworkPushFlag = res.data.musicGroup.homeworkPushFlag;
-      this.topFrom.isGiveAccessories = res.data.musicGroup.isGiveAccessories + "";
+      this.topFrom.isGiveAccessories =
+        res.data.musicGroup.isGiveAccessories + "";
       console.log(this.topFrom.isGiveAccessories, "isGiveAccessories");
-      this.topFrom.memberCourseShowFlag = res.data.musicGroup.memberCourseShowFlag
+      this.topFrom.memberCourseShowFlag = res.data.musicGroup
+        .memberCourseShowFlag
         ? 1
         : 0;
-      this.topFrom.extracurricularTeacher = res.data.musicGroup.extracurricularTeacher;
+      this.topFrom.extracurricularTeacher =
+        res.data.musicGroup.extracurricularTeacher;
 
-      this.topFrom.musicGroupPlanMakingId = res.data.musicGroup.musicGroupPlanMakingId;
+      this.topFrom.musicGroupPlanMakingId =
+        res.data.musicGroup.musicGroupPlanMakingId;
       this.topFrom.firstRecruitGrade = res.data.musicGroup.firstRecruitGrade
         ? res.data.musicGroup.firstRecruitGrade.split(",")
         : [];
-      this.topFrom.defaultChargeStandard = res.data.musicGroup.defaultChargeStandard;
+      this.topFrom.defaultChargeStandard =
+        res.data.musicGroup.defaultChargeStandard;
       this.topFrom.singleTrainMinutes = res.data.musicGroup.singleTrainMinutes;
       this.topFrom.coursePlan = res.data.musicGroup.coursePlan;
       this.topFrom.graduateGrade = res.data.musicGroup.graduateGrade + "";
@@ -1600,19 +1659,22 @@ export default {
       if (this.teamStatus == "newTeam" || this.teamStatus == "teamDraft") {
         return false;
       } else {
-        if (this.topFrom.courseViewType == 0 || this.topFrom.courseViewType == 1) {
+        if (
+          this.topFrom.courseViewType == 0 ||
+          this.topFrom.courseViewType == 1
+        ) {
           // val ==2
           return false;
         } else {
           return val == 0 || val == 1;
         }
       }
-    },
+    }
   },
   computed: {
     startClassString() {
       return this.topFrom.startClass
-        .map((item) => {
+        .map(item => {
           for (let i in this.classStatus) {
             if (item == this.classStatus[i].value) {
               return this.classStatus[i].label;
@@ -1630,8 +1692,8 @@ export default {
         teamStatus == "teamAudit" ||
         teamStatus == "feeAudit"
       );
-    },
-  },
+    }
+  }
 };
 </script>
 <style lang="scss">

+ 2 - 2
vue.config.js

@@ -18,8 +18,8 @@ const name = defaultSettings.title || "管乐迷后台管理系统"; // page tit
 // let target = "https://online.dayaedu.com"; //线上
 // let target = 'http://192.168.3.20:8000' //邹璇
 // let target = "http://192.168.0.127:8000"; //勇哥
-// let target = "http://192.168.3.14:8000"; // 原谅
-let target = "https://dev.dayaedu.com"; //测试环境
+// let target = "http://192.168.3.14:8005"; // 原谅
+let target = "https://test.dayaedu.com"; //测试环境
 // All configuration item explanations can be find in https://cli.vuejs.org/config/
 module.exports = {
   /**

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.