Kaynağa Gözat

Merge branch '11/24SAAS' of http://git.dayaedu.com/yonge/dy-admin-manager into 11/24SAAS

lex-xin 3 yıl önce
ebeveyn
işleme
05ff248423

+ 2 - 2
src/constant/index.js

@@ -64,7 +64,7 @@ export const genderType = {
 }
 
 export const paymentPatternType = {
-  0: '按月',
+  // 0: '按月',
   1: '按学期',
 }
 
@@ -360,4 +360,4 @@ export const tenantStatus = {
   "TENANT_OPEN": '机构开通缴费',
   "TENANT_RENEW": '机构续费',
   "CLOUD_TEACHER": '激活团练宝'
-}
+}

+ 1 - 0
src/router/notKeepAliveList.js

@@ -111,4 +111,5 @@ export default [
   '/courseRulersManager',
   '/earlyWarning',
   '/holidaySetting',
+  '/business/studentPaySet'
 ]

+ 14 - 2
src/views/courseRulersManager/components/offlineTeamRules.vue

@@ -87,7 +87,7 @@
         </el-row>
         <el-alert
           style="margin: 20px 0"
-          title="签到规则"
+          title="乐团签到规则"
           :closable="false"
           type="info"
         >
@@ -332,7 +332,7 @@
         </el-row>
         <el-alert
           style="margin: 10px 0"
-          title="签退规则"
+          title="乐团签退规则"
           :closable="false"
           type="info"
         >
@@ -621,6 +621,11 @@
           <el-form-item
             prop="184"
             :rules="[
+            {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
               {
                 required: false,
                 pattern: /^[1-9][0-9]*$/,
@@ -628,6 +633,7 @@
               },
             ]"
           >
+           <span style="color: #f56c6c; margin-right: 4px">*</span>
             老师在课程结束后
             <el-input v-model="form['184']" placeholder="请输入时间">
               <template slot="append">天</template> </el-input
@@ -638,6 +644,11 @@
           <el-form-item
             prop="185"
             :rules="[
+            {
+                required: true,
+                message: '请输入时间',
+                trigger: 'blur',
+              },
               {
                 required: false,
                 pattern: /^[1-9][0-9]*$/,
@@ -645,6 +656,7 @@
               },
             ]"
           >
+           <span style="color: #f56c6c; margin-right: 4px">*</span>
             管理员可以在次月
             <el-input v-model="form['185']" placeholder="请输入时间">
               <template slot="append">号</template> </el-input

+ 5 - 5
src/views/courseRulersManager/components/onlineCloudRules.vue

@@ -316,12 +316,12 @@
           云教室连堂课:
           <el-tooltip placement="top" popper-class="mTooltip">
             <div slot="content">
-              <p style="color: #fff">
-                1.同一班级中,两节课的时间间隔在N分钟之内视为连堂课。
-              </p>
-              <p style="color: #fff">
+              <div style="color: #fff">
+                1.同一班级中,两节课的时间间隔在{{form['50']?form['50']:'--'}}分钟之内视为连堂课。
+              </div>
+              <div style="color: #fff">
                 2.连堂课仅需在第一节课正常签到、最后一节课正常签退,课程中间无需签到签退。
-              </p>
+              </div>
             </div>
             <i
               class="el-icon-question micon el-tooltip"

+ 0 - 1
src/views/recodeManager/recodeList.vue

@@ -266,7 +266,6 @@
               <auth auths="teacherAttendance/addComplaints">
                 <el-button
                   v-if="
-                    scope.row.jobNature != 'FULL_TIME' &&
                     (scope.row.complaintsStatus == null ||
                       scope.row.complaintsStatus == 3)
                   "

+ 226 - 98
src/views/resetTeaming/components/payInfoDetail.vue

@@ -1,96 +1,163 @@
 <template>
   <div class="m-container">
-    <el-page-header
-      @back="goback"
-      style="padding-bottom: 30px"
-      content="创建学员缴费"
-    >
-    </el-page-header>
-    <div class="m-core">
-      <el-form :inline="true" :model="form">
-        <div class="payTitle">
-          <div class="squrt"></div>
-          <p>基础信息设置</p>
-        </div>
-        <el-form-item
-          :rules="[
-            { required: false, message: '请选择缴费时间', trigger: 'blur' },
-          ]"
-        >
-          <template slot="label">
-            <p style="position: relative">
-              缴费时间
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">在改时间段内学员才可缴费</div>
-                <i
-                  class="el-icon-question"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    position: relative;
-                    top: 2px;
-                  "
-                ></i>
-              </el-tooltip>
-            </p>
-          </template>
-          <el-date-picker
-            v-model="form.paymentDate"
-            type="daterange"
-            style="width: 280px"
-            :picker-options="{ firstDayOfWeek: 1 }"
-            range-separator="-"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          >
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item
-          label="备注"
-          prop="memo"
-          :rules="[{ required: false, message: '请输入备注', trigger: 'blur' }]"
+    <div class="payInfoWrap">
+      <div class="left">
+        <el-page-header
+          @back="goback"
+          style="padding-bottom: 30px"
+          content="创建学员缴费"
         >
-          <template slot="label">
-            <p style="position: relative">
-              备注
-              <el-tooltip placement="top" popper-class="mTooltip">
-                <div slot="content">本次缴费的内容描述</div>
-                <i
-                  class="el-icon-question"
-                  style="
-                    font-size: 18px;
-                    color: #f56c6c;
-                    position: relative;
-                    top: 2px;
-                  "
-                ></i>
-              </el-tooltip>
-            </p>
-          </template>
-          <el-input
-            type="textarea"
-            style="width: 280px"
-            :rows="2"
-            v-model="form.memo"
-            maxlength="50"
-            show-word-limit
-          ></el-input>
-        </el-form-item>
-        <div class="payTitle">
-          <div class="squrt"></div>
-          <p>基础信息设置</p>
+        </el-page-header>
+        <div class="m-core">
+          <el-form :inline="true" :model="form" label-width="120px">
+            <div class="payTitle">
+              <div class="squrt"></div>
+              <p>基础信息设置</p>
+            </div>
+            <el-form-item
+              :rules="[
+                { required: false, message: '请选择缴费时间', trigger: 'blur' },
+              ]"
+            >
+              <template slot="label">
+                <p style="position: relative">
+                  缴费时间
+                  <el-tooltip placement="top" popper-class="mTooltip">
+                    <div slot="content">在改时间段内学员才可缴费</div>
+                    <i
+                      class="el-icon-question"
+                      style="
+                        font-size: 18px;
+                        color: #f56c6c;
+                        position: relative;
+                        top: 2px;
+                      "
+                    ></i>
+                  </el-tooltip>
+                </p>
+              </template>
+              <el-date-picker
+                v-model="form.paymentDate"
+                type="daterange"
+                style="width: 280px"
+                :picker-options="{ firstDayOfWeek: 1 }"
+                range-separator="-"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-row>
+              <el-form-item
+                label="备注"
+                prop="memo"
+                :rules="[
+                  { required: false, message: '请输入备注', trigger: 'blur' },
+                ]"
+              >
+                <template slot="label">
+                  <p style="position: relative">
+                    备注
+                    <el-tooltip placement="top" popper-class="mTooltip">
+                      <div slot="content">本次缴费的内容描述</div>
+                      <i
+                        class="el-icon-question"
+                        style="
+                          font-size: 18px;
+                          color: #f56c6c;
+                          position: relative;
+                          top: 2px;
+                        "
+                      ></i>
+                    </el-tooltip>
+                  </p>
+                </template>
+                <el-input
+                  type="textarea"
+                  style="width: 280px"
+                  :rows="2"
+                  v-model="form.memo"
+                  maxlength="50"
+                  show-word-limit
+                ></el-input>
+              </el-form-item>
+            </el-row>
+            <div class="payTitle">
+              <div class="squrt"></div>
+              <p>基础项目配置</p>
+            </div>
+            <div class="checkWrap">
+              <div
+                class="checkBtn"
+                :class="teamCourse ? 'active' : ''"
+                @click.prevent="teamCourse = !teamCourse"
+              >
+                <p>乐团课</p>
+                <el-checkbox v-model="teamCourse"></el-checkbox>
+              </div>
+              <div
+                class="checkBtn"
+                :class="member ? 'active' : ''"
+                @click.prevent="member = !member"
+              >
+                <p>团练宝</p>
+                <el-checkbox v-model="member"></el-checkbox>
+              </div>
+              <div
+                class="checkBtn"
+                :class="leBao ? 'active' : ''"
+                @click.prevent="leBao = !leBao"
+              >
+                <p>乐保</p>
+                <el-checkbox v-model="leBao"></el-checkbox>
+              </div>
+              <div
+                class="checkBtn"
+                :class="teamActive ? 'active' : ''"
+                @click.prevent="teamActive = !teamActive"
+              >
+                <p>乐团活动</p>
+                <el-checkbox v-model="teamActive"></el-checkbox>
+              </div>
+            </div>
+            <div class="coreList">
+              <payTeamCourse :form="form" v-if="teamCourse"/>
+              <payMember :form="form"  v-if="member"/>
+              <payLeBao :form="form"  v-if="leBao"/>
+              <payTeamActive :form="form"  v-if="teamActive"/>
+            </div>
+          </el-form>
+          <div v-if="!teamCourse&&!member&&!leBao&&!teamActive">
+             <empty desc="暂无缴费项目配置" />
+          </div>
         </div>
-      </el-form>
+      </div>
     </div>
   </div>
 </template>
 <script>
+import payTeamCourse from "../modals/payTeamCourse";
+import payMember from "../modals/payMember";
+import payLeBao from '../modals/payLeBao'
+import payTeamActive from '../modals/payTeamActive'
 export default {
+  components: {
+    payTeamCourse,
+    payMember,
+    payLeBao,
+    payTeamActive
+  },
   data() {
     return {
       form: {
         memo: "",
+        eclass: [{}],
       },
+      checkList: [],
+      teamCourse: false,
+      member: false,
+      teamActive: false,
+      leBao: false,
     };
   },
   mounted() {},
@@ -118,28 +185,89 @@ export default {
       }
     },
   },
+  watch: {
+    teamCourse(val) {
+      console.log(val);
+    },
+  },
 };
 </script>
 <style lang="scss" scoped>
-.payTitle {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  font-size: 18px;
-  font-weight: 600;
-  color: #1a1a1a;
-  height: 25px;
-  margin-bottom: 15px;
-  p {
-    line-height: 25px;
-  }
-  .squrt {
-    width: 4px;
-    height: 16px;
-    background: var(--color-primary);
-    margin-right: 5px;
-    position: relative;
-    top: -1px;
+.payInfoWrap {
+  .left {
+    /deep/.el-checkbox {
+      padding: 8px 10px 7px 10px;
+      border-radius: 4px;
+    }
+    /deep/.el-checkbox .el-checkbox__inner {
+      border-radius: 50%;
+      border: 1px solid #d9d9d9;
+      width: 16px;
+      height: 16px;
+      &:after {
+        height: 8px;
+        left: 5px;
+      }
+    }
+    /deep/.el-checkbox__inner:hover {
+      background-color: #fff;
+    }
+    /deep/.el-checkbox.is-checked {
+      border-color: #fff;
+      color: #fff;
+    }
+    .payTitle {
+      display: flex;
+      flex-direction: row;
+      align-items: center;
+      font-size: 18px;
+      font-weight: 600;
+      color: #1a1a1a;
+      height: 25px;
+      margin-bottom: 15px;
+      p {
+        line-height: 25px;
+      }
+      .squrt {
+        width: 4px;
+        height: 16px;
+        background: var(--color-primary);
+        margin-right: 5px;
+        position: relative;
+        top: -1px;
+      }
+    }
+    .checkWrap {
+      display: flex;
+      flex-direction: row;
+      justify-content: flex-start;
+      .checkBtn.active {
+        background-color: var(--color-primary);
+        color: #fff;
+      }
+      .checkBtn {
+        transition: border-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46),
+          background-color 0.25s cubic-bezier(0.71, -0.46, 0.29, 1.46);
+        transition-property: border-color, background-color;
+        transition-duration: 0.25s, 0.25s;
+        transition-timing-function: cubic-bezier(0.71, -0.46, 0.29, 1.46),
+          cubic-bezier(0.71, -0.46, 0.29, 1.46);
+        transition-delay: 0s, 0s;
+        margin-right: 12px;
+        padding-left: 14px;
+        display: flex;
+        flex-direction: row;
+        align-items: center;
+        cursor: pointer;
+        background: #f2f2f2;
+        border-radius: 6px;
+        height: 41px;
+        p {
+          height: 41px;
+          line-height: 41px;
+        }
+      }
+    }
   }
 }
 </style>

+ 6 - 6
src/views/resetTeaming/modals/extra-class.vue

@@ -20,7 +20,7 @@
           >
             <el-select
               style="width: 90%!important;"
-              
+
               v-model="list.form[scope.$index].courseType"
               placeholder="课程类型"
               clearable
@@ -51,7 +51,7 @@
           >
             <el-select
               style="width: 90%!important;"
-              
+
               v-model="list.form[scope.$index].isStudentOptional"
               placeholder="是否可选"
               :disabled="isDisabled"
@@ -80,7 +80,7 @@
             ]"
           >
             <el-input-number
-              
+
               style="width: 90%!important;"
               class="number-input"
               v-model="list.form[scope.$index].courseTotalMinuties"
@@ -118,7 +118,7 @@
           >
             <!-- $listeners.moneyChange -->
             <el-input-number
-              
+
               style="width: 90%!important;"
               class="number-input"
               v-model="list.form[scope.$index].courseCurrentPrice"
@@ -141,7 +141,7 @@
             :rules="{ required: true, message: '请输入原价', trigger: 'blur' }"
           >
             <el-input-number
-              
+
               style="width: 90%!important;"
               class="number-input"
               v-model="list.form[scope.$index].courseOriginalPrice"
@@ -173,7 +173,7 @@
       plain
       v-if="!isCommon && $listeners.create"
       type="info"
-      
+
       style="width: 100%;margin: 20px 0;"
       @click="$listeners.create"
     >新增课程类型</el-button>

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

@@ -109,7 +109,6 @@
   </el-form>
 </template>
 <script>
-import { paymentPatternType } from "@/constant";
 import { objectToOptions } from "@/utils";
 import { getAllmemberRank, getMemberFee } from "../api";
 export default {
@@ -123,7 +122,7 @@ export default {
   ],
   data() {
     return {
-      paymentPatternTypeOptions: objectToOptions(paymentPatternType),
+
       pickerOptions: {
         firstDayOfWeek: 1,
         disabledDate(time) {

+ 50 - 0
src/views/resetTeaming/modals/pay.scss

@@ -0,0 +1,50 @@
+
+
+.coreTitle {
+  height: 40px;
+  line-height: 40px;
+  background-color: #f2f2f2;
+  color: var(--color-primary);
+  font-size: 18px;
+  font-weight: 600;
+  padding: 0 10px;
+  margin-top: 20px;
+  border-radius: 6px 6px 0 0;
+  .dot {
+    display: inline-block;
+    width: 6px;
+    height: 6px;
+    background: var(--color-primary);
+    border-radius: 50%;
+    margin-left: 10px;
+    line-height: 40px;
+    position: relative;
+    top:-3px;
+  }
+}
+.teamCourseList {
+  margin-bottom: 15px;
+  background-color: #f9f9f9;
+  .teamCourseChiose {
+    background-color: #f2f2f2;
+    .el-form-item {
+      margin-right: 30px;
+      margin-bottom: 8px;
+    }
+  }
+  .addBtn {
+    width: 294px;
+    margin: 20px auto;
+    position: relative;
+    left: 50%;
+    margin-left: -149px;
+    color: var(--color-primary);
+  }
+  /deep/.number-input .el-input__inner,
+  .number-input .el-input__inner {
+    text-align: left;
+  }
+}
+.el-form-item {
+  margin-bottom:0;
+}

+ 138 - 0
src/views/resetTeaming/modals/payLeBao.vue

@@ -0,0 +1,138 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">乐保<span class="dot"></span></p>
+    <el-table
+      :data="form.eclass"
+      style="width: 100% !important; background: #f9f9f9"
+      :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+    >
+      <el-table-column
+      width="170px"
+        label="会员类型"
+        prop="memberRankSettingId"
+        key="memberRankSettingId"
+      >
+        <template slot-scope="scope">
+          <p>乐保保养</p>
+        </template>
+      </el-table-column>
+      <el-table-column label="年限" prop="periodEnum" key="periodEnum"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.periodEnum'"
+            :rules="[
+              {
+                required: true,
+                message: '请输入年限',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            <!--    @change="
+                            $listeners.priceChange(scope.row, scope.$index)
+                          " -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseTotalMinuties"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              :disabled="isDisabled"
+              placeholder="请输入年限"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column label="团购价(元)" prop="actualAmount" key="actualAmount"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.actualAmount'"
+            :rules="{
+              required: true,
+              message: '请输入团购价',
+              trigger: 'blur',
+            }"
+          >
+            <!-- $listeners.moneyChange -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].actualAmount"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              @change="change"
+              placeholder="请输入团购价"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="originalAmount"
+        key="originalAmount"
+        label="原价(元)"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.originalAmount'"
+            :rules="{
+              required: true,
+              message: '请输入原价',
+              trigger: 'blur',
+            }"
+          >
+            <!-- <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].originalAmount"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              placeholder="请输入原价"
+            /> -->
+            500
+          </el-form-item>
+        </template>
+      </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"
+            ></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>
+export default {
+  props: ["form"],
+  data() {
+    return {
+      charges: [],
+      clearable: false,
+      isDisabled: false,
+      courseUnitPriceSettingsByType: [],
+      boolOptionsOptions: [],
+    };
+  },
+  methods: {
+    courseItemChange(row, index) {},
+    priceChange(row, index) {},
+    isOptionDisabled(key) {},
+    change() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+</style>

+ 229 - 0
src/views/resetTeaming/modals/payMember.vue

@@ -0,0 +1,229 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">团练宝<span class="dot"></span></p>
+    <el-table
+      :data="form.eclass"
+      style="width: 100% !important; background: #f9f9f9"
+      :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+    >
+      <el-table-column
+       width="170px"
+        label="会员类型"
+        prop="memberRankSettingId"
+        key="memberRankSettingId"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.memberRankSettingId'"
+            :rules="{
+              required: true,
+              message: '请选择会员类型',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].courseType"
+              placeholder="会员类型"
+              clearable
+              @change="courseItemChange(scope.row, scope.$index)"
+              :disabled="isDisabled"
+            >
+              <el-option
+                v-for="(item, key) in courseUnitPriceSettingsByType"
+                :key="key"
+                :disabled="isOptionDisabled(key)"
+                :label="courseType[key]"
+                :value="key"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column label="是否必选" prop="optionalFlag" key="optionalFlag"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.optionalFlag'"
+            :rules="{
+              required: true,
+              message: '请选择是否必选',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].optionalFlag"
+              placeholder="是否必选"
+              :disabled="isDisabled"
+              clearable
+            >
+              <el-option
+                v-for="(item, index) in boolOptionsOptions"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column label="会员周期" prop="periodEnum" key="periodEnum"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.periodEnum'"
+            :rules="[
+              {
+                required: true,
+                message: '请选择会员周期',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            <!--    @change="
+                            $listeners.priceChange(scope.row, scope.$index)
+                          " -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseTotalMinuties"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              :disabled="isDisabled"
+              placeholder="课程时长"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+         <el-table-column label="会员数量" prop="periodEnum" key="periodEnum"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.periodEnum'"
+            :rules="[
+              {
+                required: true,
+                message: '请选择会员数量',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            <!--    @change="
+                            $listeners.priceChange(scope.row, scope.$index)
+                          " -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseTotalMinuties"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              :disabled="isDisabled"
+              placeholder="会员数量"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column label="现价(元)" prop="actualAmount" key="actualAmount"  width="170px">
+        <template slot="header">
+          <p style="position: relative">
+            现价(元)
+            <el-tooltip placement="top" popper-class="mTooltip">
+              <div slot="content">学生实际缴费金额</div>
+              <i
+                class="el-icon-question"
+                style="font-size: 18px; color: #f56c6c"
+              ></i>
+            </el-tooltip>
+          </p>
+        </template>
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.actualAmount'"
+            :rules="{
+              required: true,
+              message: '请输入现价',
+              trigger: 'blur',
+            }"
+          >
+            <!-- $listeners.moneyChange -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].actualAmount"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              @change="change"
+              placeholder="请输入现价"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="originalAmount"
+        key="originalAmount"
+        label="原价(元)"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.originalAmount'"
+            :rules="{
+              required: true,
+              message: '请输入原价',
+              trigger: 'blur',
+            }"
+          >
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].originalAmount"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              placeholder="请输入原价"
+            />
+          </el-form-item>
+        </template>
+      </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>
+        </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>
+export default {
+  props: ["form"],
+  data() {
+    return {
+      charges: [],
+      clearable: false,
+      isDisabled: false,
+      courseUnitPriceSettingsByType: [],
+      boolOptionsOptions: [],
+    };
+  },
+  methods: {
+    courseItemChange(row, index) {},
+    priceChange(row, index) {},
+    isOptionDisabled(key) {},
+    change() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+</style>

+ 198 - 0
src/views/resetTeaming/modals/payTeamActive.vue

@@ -0,0 +1,198 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">乐团活动<span class="dot"></span></p>
+    <el-table
+      :data="form.eclass"
+      style="width: 100% !important; background: #f9f9f9"
+      :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+    >
+      <el-table-column label="活动方案" prop="courseType" key="courseType"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseType'"
+            :rules="{
+              required: true,
+              message: '请选择活动方案',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].courseType"
+              placeholder="活动方案"
+              clearable
+              @change="courseItemChange(scope.row, scope.$index)"
+              :disabled="isDisabled"
+            >
+              <el-option
+                v-for="(item, key) in courseUnitPriceSettingsByType"
+                :key="key"
+                :disabled="isOptionDisabled(key)"
+                :label="courseType[key]"
+                :value="key"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="是否必选"
+        prop="isStudentOptional"
+        key="isStudentOptional"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.isStudentOptional'"
+            :rules="{
+              required: true,
+              message: '请选择是必选',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].isStudentOptional"
+              placeholder="是否必选"
+              :disabled="isDisabled"
+              clearable
+            >
+              <el-option
+                v-for="(item, index) in boolOptionsOptions"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="活动课程"
+        prop="courseTotalMinuties"
+        key="courseTotalMinuties"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <p>1v1</p>
+        </template>
+      </el-table-column>
+            <el-table-column
+        label="课时数"
+        prop="courseTotalMinuties"
+        key="courseTotalMinuties"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <p>180</p>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="现价(元)"
+        prop="courseCurrentPrice"
+        key="courseCurrentPrice"
+         width="170px"
+      >
+        <template slot="header">
+          <p style="position: relative">
+            现价(元)
+            <el-tooltip placement="top" popper-class="mTooltip">
+              <div slot="content">学生实际缴费金额</div>
+              <i
+                class="el-icon-question"
+                style="font-size: 18px; color: #f56c6c"
+              ></i>
+            </el-tooltip>
+          </p>
+        </template>
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseCurrentPrice'"
+            :rules="{
+              required: true,
+              message: '请输入现价',
+              trigger: 'blur',
+            }"
+          >
+            <!-- $listeners.moneyChange -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseCurrentPrice"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              @change="change"
+              placeholder="请输入现价"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="courseOriginalPrice"
+        key="courseOriginalPrice"
+        label="原价(元)"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseOriginalPrice'"
+            :rules="{
+              required: true,
+              message: '请输入原价',
+              trigger: 'blur',
+            }"
+          >
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseOriginalPrice"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              placeholder="请输入原价"
+            />
+          </el-form-item>
+        </template>
+      </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>
+        </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>
+export default {
+  props: ["form"],
+  data() {
+    return {
+       charges: [],
+      clearable: false,
+      isDisabled: false,
+      courseUnitPriceSettingsByType: [],
+      boolOptionsOptions: [],
+    };
+  },
+  methods: {
+    courseItemChange(row, index) {},
+    priceChange(row, index) {},
+    isOptionDisabled(key) {},
+    change() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+</style>

+ 261 - 0
src/views/resetTeaming/modals/payTeamCourse.vue

@@ -0,0 +1,261 @@
+<template>
+  <div class="teamCourseList">
+    <p class="coreTitle">乐团课<span class="dot"></span></p>
+    <div class="teamCourseChiose">
+      <el-form-item
+        label="缴费类型"
+        prop="leixing"
+        :rules="[
+          {
+            required: true,
+            message: '请选择缴费类型',
+            trigger: 'change',
+          },
+        ]"
+      >
+        <!-- &&courseViewType != 2 -->
+        <el-radio-group style="width: 100%" v-model="form.leixing">
+          <el-radio label="1">乐团续费</el-radio>
+          <el-radio label="2">临时加课</el-radio>
+        </el-radio-group>
+      </el-form-item>
+      <!-- !this.rowDetail&&       v-if="
+                    isCommon &&
+                    form.musicGroupOrganizationCourseSettingId != 0 &&
+                    courseViewType != 2
+                  "-->
+      <el-form-item
+
+        label="收费标准"
+        prop="musicGroupOrganizationCourseSettingId"
+        :rules="[
+          {
+            required: true,
+            message: '请选择收费标准',
+            trigger: 'change',
+          },
+        ]"
+      >
+        <el-select
+          style="width: 100% !important"
+          v-model="form.musicGroupOrganizationCourseSettingId"
+          placeholder="请选择收费标准"
+          size="mini"
+        >
+          <el-option
+            v-for="item in charges"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id"
+          >
+          </el-option>
+        </el-select>
+      </el-form-item>
+    </div>
+    <el-table
+      :data="form.eclass"
+      style="width: 100% !important; background: #f9f9f9"
+      :header-cell-style="{ background: '#F9F9F9', color: '#444' }"
+    >
+      <el-table-column label="课程类型" prop="courseType" key="courseType"  width="170px">
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseType'"
+            :rules="{
+              required: true,
+              message: '请选择课程类型',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].courseType"
+              placeholder="课程类型"
+              clearable
+              @change="courseItemChange(scope.row, scope.$index)"
+              :disabled="isDisabled"
+            >
+              <el-option
+                v-for="(item, key) in courseUnitPriceSettingsByType"
+                :key="key"
+                :disabled="isOptionDisabled(key)"
+                :label="courseType[key]"
+                :value="key"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="是否可选"
+        prop="isStudentOptional"
+        key="isStudentOptional"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.isStudentOptional'"
+            :rules="{
+              required: true,
+              message: '请选择是否可选',
+              trigger: 'change',
+            }"
+          >
+            <el-select
+              style="width: 90% !important"
+              v-model="form.eclass[scope.$index].isStudentOptional"
+              placeholder="是否可选"
+              :disabled="isDisabled"
+              clearable
+            >
+              <el-option
+                v-for="(item, index) in boolOptionsOptions"
+                :key="index"
+                :label="item.label"
+                :value="item.value"
+              ></el-option>
+            </el-select>
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="课程时长(分钟)"
+        prop="courseTotalMinuties"
+        key="courseTotalMinuties"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseTotalMinuties'"
+            :rules="[
+              {
+                required: true,
+                message: '请输入课程时长',
+                trigger: 'blur',
+              },
+            ]"
+          >
+            <!--    @change="
+                            $listeners.priceChange(scope.row, scope.$index)
+                          " -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseTotalMinuties"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              :disabled="isDisabled"
+              placeholder="课程时长"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="现价(元)"
+        prop="courseCurrentPrice"
+        key="courseCurrentPrice"
+         width="170px"
+      >
+        <template slot="header">
+          <p style="position: relative">
+            现价(元)
+            <el-tooltip placement="top" popper-class="mTooltip">
+              <div slot="content">学生实际缴费金额</div>
+              <i
+                class="el-icon-question"
+                style="font-size: 18px; color: #f56c6c"
+              ></i>
+            </el-tooltip>
+          </p>
+        </template>
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseCurrentPrice'"
+            :rules="{
+              required: true,
+              message: '请输入现价',
+              trigger: 'blur',
+            }"
+          >
+            <!-- $listeners.moneyChange -->
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseCurrentPrice"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              @change="change"
+              placeholder="请输入现价"
+            />
+          </el-form-item>
+        </template>
+      </el-table-column>
+      <el-table-column
+        prop="courseOriginalPrice"
+        key="courseOriginalPrice"
+        label="原价(元)"
+         width="170px"
+      >
+        <template slot-scope="scope">
+          <el-form-item
+            :prop="'eclass.' + scope.$index + '.courseOriginalPrice'"
+            :rules="{
+              required: true,
+              message: '请输入原价',
+              trigger: 'blur',
+            }"
+          >
+            <el-input-number
+              style="width: 90% !important"
+              class="number-input"
+              v-model="form.eclass[scope.$index].courseOriginalPrice"
+              :controls="false"
+              :precision="0"
+              :min="0"
+              placeholder="请输入原价"
+            />
+          </el-form-item>
+        </template>
+      </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"
+            ></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>
+export default {
+  props: ["form"],
+  data() {
+    return {
+       charges: [],
+      clearable: false,
+      isDisabled: false,
+      courseUnitPriceSettingsByType: [],
+      boolOptionsOptions: [],
+    };
+  },
+  methods: {
+    courseItemChange(row, index) {},
+    priceChange(row, index) {},
+    isOptionDisabled(key) {},
+    change() {},
+  },
+};
+</script>
+<style lang="scss" scoped>
+@import "~@/views/resetTeaming/modals/pay.scss";
+</style>

+ 4 - 6
src/views/resetTeaming/modals/payment-cycle.vue

@@ -23,7 +23,7 @@
         placeholder="请输入缴费金额"
       />
     </el-form-item>
-    <el-form-item
+    <!-- <el-form-item
       label="缴费方式"
       prop="paymentPattern"
       v-if="!hidePaymentPattern"
@@ -37,7 +37,7 @@
           :value="item.value">
         </el-option>
       </el-select>
-    </el-form-item>
+    </el-form-item> -->
     <el-form-item
       label="缴费时间"
       prop="paymentDate"
@@ -55,7 +55,7 @@
       </el-date-picker>
     </el-form-item>
 
-    <el-form-item
+    <!-- <el-form-item
       label="缴费有效期"
       prop="paymentValid"
       v-if="courseViewType!=2 || (courseViewType==2&&paymentType=== undefined)"
@@ -70,17 +70,15 @@
         start-placeholder="开始日期"
         end-placeholder="结束日期">
       </el-date-picker>
-    </el-form-item>
+    </el-form-item> -->
   </el-form>
 </template>
 <script>
-import { paymentPatternType } from '@/constant'
 import { objectToOptions } from '@/utils'
 export default {
   props: ['form', 'className', 'isUserType', 'isDisabled', 'isCommon', 'hidePaymentPattern','hideMoney','courseViewType','paymentType'],
   data() {
     return {
-      paymentPatternTypeOptions: objectToOptions(paymentPatternType),
          pickerOptions: {
         firstDayOfWeek: 1,
         disabledDate (time) {

+ 0 - 3
src/views/resetTeaming/modals/review-detail.vue

@@ -199,9 +199,6 @@
       <descriptions-item label="缴费金额:">{{
         numeral(item.paymentAmount + item.memberPaymentAmount).format("0,0")
       }}</descriptions-item>
-      <descriptions-item label="缴费方式:">{{
-        item.paymentPattern | paymentPatternTypeFormat
-      }}</descriptions-item>
       <descriptions-item
         :span="3"
         v-if="item.payUserType !== 'SCHOOL'"

+ 4 - 4
src/views/resetTeaming/modals/user-pay-form.vue

@@ -130,7 +130,7 @@
         >
           <el-input :disabled="true" v-model="cloudFee"></el-input>
         </el-form-item> -->
-          <el-form-item
+          <!-- <el-form-item
             label-width="160px"
             label="缴费方式"
             prop="paymentPattern"
@@ -152,7 +152,7 @@
               >
               </el-option>
             </el-select>
-          </el-form-item>
+          </el-form-item> -->
         </el-form>
         <template
           v-if="isMulticycle && paymentTypeString !== 'SPAN_GROUP_CLASS_ADJUST'"
@@ -419,7 +419,7 @@ export default {
       if (val === "1") {
         this.eclass = [];
       } else if (val === "2") {
-        this.payment.paymentPattern = '1'
+        // this.payment.paymentPattern = '1'
         this.eclass = [{}];
       }
     },
@@ -758,7 +758,7 @@ export default {
           ...this.form,
           ...this.other,
 
-          paymentPattern: this.payment.paymentPattern,
+          // paymentPattern: this.payment.paymentPattern,
           musicGroupPaymentDateRangeList: [
             ...this.cycles.map((item) => {
               const { paymentDate, paymentValid, ...other } = item;

+ 15 - 51
src/views/teamDetail/components/modals/create-user-pay.vue

@@ -115,7 +115,7 @@
     <el-alert title="缴费设置" :closable="false" class="alert" type="info">
     </el-alert>
     <el-form ref="payment" :model="payment">
-      <el-form-item
+      <!-- <el-form-item
         label="缴费方式"
         prop="paymentPattern"
         label-width="160px"
@@ -137,47 +137,11 @@
           >
           </el-option>
         </el-select>
-      </el-form-item>
+      </el-form-item> -->
     </el-form>
-    <template v-if="payment.paymentPattern == 0">
-      <el-collapse :value="collapse" @change="collapseChange">
-        <el-collapse-item
-          v-for="(item, index) in cycles"
-          :key="index"
-          :name="index"
-        >
-          <template slot="title">
-            <div class="collapse-title">
-              <span>缴费周期 {{ index + 1 }}</span>
-              <i
-                v-if="cycles.length > 1"
-                class="el-icon-circle-close"
-                @click.stop="removeCycle(index)"
-              ></i>
-            </div>
-          </template>
-          <paymentCycle
-            ref="cycles"
-            :form="item"
-            :hidePaymentPattern="true"
-            :isUserType="true"
-            :isCommon="false"
-            :isDisabled="true"
-          />
-        </el-collapse-item>
-      </el-collapse>
-      <el-button
-        icon="el-icon-circle-plus-outline"
-        plain
-        type="info"
-        
-        style="width: 100%; margin: 20px 0"
-        @click="addCycle"
-        >新增缴费周期</el-button
-      >
-    </template>
+
     <paymentCycle
-      v-else
+
       ref="cycle"
       :isUserType="true"
       :hidePaymentPattern="true"
@@ -277,25 +241,25 @@ export default {
     "form.highonline"() {
       this.classChange();
     },
-    "payment.paymentPattern"() {
-      this.syncAllMoney();
-    },
+    // "payment.paymentPattern"() {
+    //   this.syncAllMoney();
+    // },
     "memberForm.memberPaymentAmount"() {
       this.syncAllMoney();
     },
     baseInfo(val) {
       this.formatCourse();
       this.courseViewType = val.courseViewType;
-      if (val.courseViewType == 2) {
-        this.payment.paymentPattern = "1";
-      }
+      // if (val.courseViewType == 2) {
+      //   this.payment.paymentPattern = "1";
+      // }
     },
   },
   mounted() {
     this.courseViewType = this.baseInfo.courseViewType;
-    if (this.baseInfo.courseViewType == 2) {
-      this.payment.paymentPattern = "1";
-    }
+    // if (this.baseInfo.courseViewType == 2) {
+    //   this.payment.paymentPattern = "1";
+    // }
     this.formatCourse();
   },
   methods: {
@@ -482,10 +446,10 @@ export default {
                 "paymentValidStartDate",
                 "paymentValidEndDate",
               ]),
-              paymentPattern: this.payment.paymentPattern,
+              // paymentPattern: this.payment.paymentPattern,
             };
           }),
-          paymentPattern: this.payment.paymentPattern,
+          // paymentPattern: this.payment.paymentPattern,
           musicGroupId: this.musicGroupId,
           paymentType: "ADD_STUDENT",
           payUserType: "STUDENT",