wolyshaw %!s(int64=4) %!d(string=hai) anos
pai
achega
d832779974

+ 52 - 18
src/views/categroyManager/specialSetup/modals/chargesForm.vue

@@ -60,12 +60,13 @@
               <el-select v-model.trim="item.courseType"
                           size="mini"
                           clearable
+                          @change="() => courseItemChange(item, index)"
                           filterable>
-                <el-option  v-for="item in courseTypeOptions"
-                            :key="item.value"
-                            :label="item.label"
-                            :disabled="isOptionDisabled(item.value)"
-                            :value="item.value">
+                <el-option  v-for="item in courseTypes"
+                            :key="item.courseType"
+                            :label="courseType[item.courseType]"
+                            :disabled="isOptionDisabled(item.courseType)"
+                            :value="item.courseType">
                 </el-option>
               </el-select>
             </el-form-item>
@@ -78,7 +79,7 @@
                           clearable
                           filterable>
                 <el-option  v-for="item in boolOptions"
-                            :key="item.value"
+                            :key="item.label"
                             :label="item.label"
                             :value="item.value">
                 </el-option>
@@ -96,37 +97,38 @@
                 :controls="false"
                 :precision="0"
                 :min="1"
+                @change="() => courseItemChange(item, index)"
                 placeholder="课程总时长"
               />
             </el-form-item>
             <el-form-item
-              :prop="`details.${index}.courseOriginalPrice`"
-              :rules="[{required: true, message: '请输入课程价', trigger: 'blur'}]"
+              :prop="`details.${index}.courseCurrentPrice`"
+              :rules="[{required: true, message: '请输入课程价', trigger: 'blur'}]"
             >
               <el-input-number
                 size="mini"
                 style="width: 90%!important;"
                 class="number-input"
-                v-model="item.courseOriginalPrice"
+                v-model="item.courseCurrentPrice"
                 :controls="false"
                 :precision="0"
                 :min="1"
-                placeholder="课程价"
+                placeholder="课程价"
               />
             </el-form-item>
             <el-form-item
-              :prop="`details.${index}.courseCurrentPrice`"
-              :rules="[{required: true, message: '请输入课程价', trigger: 'blur'}]"
+              :prop="`details.${index}.courseOriginalPrice`"
+              :rules="[{required: true, message: '请输入课程价', trigger: 'blur'}]"
             >
               <el-input-number
                 size="mini"
                 style="width: 90%!important;"
                 class="number-input"
-                v-model="item.courseCurrentPrice"
+                v-model="item.courseOriginalPrice"
                 :controls="false"
                 :precision="0"
                 :min="1"
-                placeholder="课程价"
+                placeholder="课程价"
               />
             </el-form-item>
             <span class="ctrl">
@@ -175,7 +177,11 @@ const initItem = {
   courseOriginalPrice: '',
   courseCurrentPrice: '',
 }
-import { musicGroupOrganizationCourseSettingsAdd, musicGroupOrganizationCourseSettingsUpdate } from '@/api/specialSetting'
+import {
+  musicGroupOrganizationCourseSettingsAdd,
+  musicGroupOrganizationCourseSettingsUpdate,
+  getOrganizationCourseUnitPriceSettings
+} from '@/api/specialSetting'
 import { classTimeList } from '@/utils/searchArray'
 import { courseType, boolOptions } from '@/constant'
 import { objectToOptions }  from '@/utils'
@@ -183,9 +189,9 @@ import numeral from 'numeral'
 
 const plusNum = (items = [], key) => {
   let money = 0
-  const _items = items.filter(item => item.isStudentOptional < 1)
+  const _items = items.filter(item => !item.isStudentOptional)
   for (const item of _items) {
-    money += parseFloat(item[key] || 0).toFixed(2) || 0
+    money += parseFloat(parseFloat(item[key] || 0).toFixed(2) || 0)
   }
   return money
 }
@@ -205,8 +211,11 @@ export default {
     return {
       form: {...initForm},
       formLabelWidth: '120px',
+      courseType,
       courseTypeOptions: objectToOptions(courseType),
       boolOptions: objectToOptions(boolOptions),
+      courseTypes: [],
+      courseTypesByType: {},
     }
   },
   computed: {
@@ -219,14 +228,39 @@ export default {
   },
   watch: {
     rowDetail() {
-      console.log({...this.rowDetail})
       this.updateForm()
+    },
+    async 'form.chargeTypeId'() {
+      try {
+        const res = await getOrganizationCourseUnitPriceSettings({
+          chargeTypeId: this.form.chargeTypeId,
+          rows: 9999
+        })
+        const d = {}
+        this.courseTypes = res.data.rows
+        for (const item of this.courseTypes) {
+          d[item.courseType] = item
+        }
+        this.courseTypesByType = d
+      } catch (error) {}
     }
   },
   mounted() {
     this.updateForm()
   },
   methods: {
+    courseItemChange(item, index) {
+      if (item.courseType) {
+        const active = this.courseTypesByType[item.courseType] || {}
+        const _list = this.form.details
+        _list[index] = {
+          ...item,
+          courseCurrentPrice: Math.ceil(active.unitPrice * (item.courseTotalMinuties || 1)),
+          courseOriginalPrice: Math.ceil(active.unitPrice * (item.courseTotalMinuties || 1))
+        }
+        this.$set(this.form, `details`, [..._list])
+      }
+    },
     updateForm() {
       if (this.rowDetail) {
         const { organId, classTimeList, chargeTypeId, name, details } = this.rowDetail

+ 6 - 3
src/views/resetTeaming/components/resetPayList.vue

@@ -277,6 +277,7 @@
         @submited="payedSubmited"
         :type="payFormType"
         :baseInfo="baseInfo"
+        :paymentType="isNewGropu ? 0 : undefined"
         :musicGroupId="$route.query.id"
       />
     </el-dialog>
@@ -543,11 +544,10 @@ export default {
       }
 
       let obj = {}
-      obj.studentIds = this.chioseStudentList.map(stu => {
+      obj.userIdList = this.chioseStudentList.map(stu => {
         return stu.userId
-      }).join(',')
+      })
       obj.musicGroupPaymentCalenderId = this.musicGroupPaymentCalenderId
-      return
       musicGroupPaymentCalenderDetailBatchAdd(obj).then(res => {
         if (res.code == 200) {
           this.$message.success('添加成功')
@@ -612,6 +612,9 @@ export default {
 
   },
   watch: {
+    chioseStudentVisible() {
+      this.chioseStudentList = []
+    },
     qrcodeStatus (val) {
       if (!val) {
         this.qrcode.clear()

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

@@ -21,6 +21,7 @@
               v-model="list.form[scope.$index].courseType"
               placeholder="课程类型"
               clearable
+              :disabled="isDisabled"
             >
               <el-option
                 v-for="(item, index) in courseTypeOptions"
@@ -46,6 +47,7 @@
               size="small"
               v-model="list.form[scope.$index].isStudentOptional"
               placeholder="是否可选"
+              :disabled="isDisabled"
               clearable
             >
               <el-option
@@ -74,6 +76,7 @@
               :controls="false"
               :precision="0"
               :min="1"
+              :disabled="isDisabled"
               placeholder="课程时长"
             />
           </el-form-item>
@@ -97,6 +100,7 @@
               :precision="0"
               :min="1"
               @change="change"
+              :disabled="!isUserType"
               placeholder="请输入现价"
             />
           </el-form-item>
@@ -113,6 +117,7 @@
               size="small"
               style="width: 90%!important;"
               class="number-input"
+              disabled
               v-model="list.form[scope.$index].courseOriginalPrice"
               :controls="false"
               :precision="0"
@@ -146,7 +151,7 @@ import { courseType, boolOptions } from '@/constant'
 import { objectToOptions } from '@/utils'
 import numeral from 'numeral'
 export default {
-  props: ['form', 'isCommon'],
+  props: ['form', 'isCommon', 'isDisabled', 'isUserType'],
   data() {
     return {
       courseTypeOptions: objectToOptions(courseType),

+ 2 - 1
src/views/resetTeaming/modals/payment-cycle.vue

@@ -17,6 +17,7 @@
         :controls="false"
         :precision="2"
         :min="1"
+        :disabled="isUserType && isCommon"
         placeholder="请输入缴费金额"
       />
     </el-form-item>
@@ -69,7 +70,7 @@
 import { paymentPatternType } from '@/constant'
 import { objectToOptions } from '@/utils'
 export default {
-  props: ['form', 'className', 'isUserType'],
+  props: ['form', 'className', 'isUserType', 'isDisabled', 'isCommon'],
   data() {
     return {
       paymentPatternTypeOptions: objectToOptions(paymentPatternType),

+ 11 - 0
src/views/resetTeaming/modals/user-baseinfo.vue

@@ -51,6 +51,17 @@
         </el-option>
       </el-select>
     </el-form-item>
+    <el-alert
+      :closable="false"
+      style="margin-left: 160px;width: auto;"
+      v-if="isCommon"
+      type="warning">
+      <template #title>
+        <p>该乐团为3.0模式,若需创建其他模式的收费标准,请先乐团基本信息的乐团模式
+          <strong style="font-weight: 600;margin-left: 10px;cursor: pointer;">立即修改>></strong>
+      </p>
+      </template>
+    </el-alert>
   </el-form>
 </template>
 <script>

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

@@ -39,6 +39,8 @@
       @create="addExtraClass"
       @remove="removeExtraClass"
       @moneyChange="syncAllMoney"
+      :isUserType="isUserType"
+      :isDisabled="form.leixing === '1' || paymentType == '0'"
     />
     <template>
       <el-alert
@@ -51,6 +53,8 @@
         ref="cycle"
         :isUserType="isUserType"
         :form.sync="cycle"
+        :isCommon="isCommon"
+        :isDisabled="form.leixing === '1' || paymentType == '0'"
       />
     </template>
     <el-alert
@@ -129,6 +133,10 @@ export default {
     isCommon() {
       return this.form.leixing === '1'
     },
+    isDisabled() {
+      console.log(this.form.leixing === '1' || String(this.paymentType) === '0')
+      return this.form.leixing === '1' || String(this.paymentType) === '0'
+    },
     isUserType() {
       return this.type === 'user'
     },
@@ -144,6 +152,9 @@ export default {
     },
   },
   watch: {
+    type() {
+      this.$set(this.form, 'payUserType', this.type === 'user' ? 'STUDENT' : 'SCHOOL')
+    },
     baseInfo() {
       this.getCharges()
     },
@@ -151,7 +162,7 @@ export default {
       this.cycles = [{}]
       this.collapse = [0]
       this.cycle = {}
-      this.cycle.money = ''
+      this.cycle.paymentAmount = ''
       if (this.form.leixing === '1') {
         this.eclass = []
       } else if (this.form.leixing === '2') {
@@ -174,7 +185,7 @@ export default {
       for (const item of this.eclass) {
         money += item.courseCurrentPrice
       }
-      this.$set(this.cycle, 'money', money)
+      this.$set(this.cycle, 'paymentAmount', money)
       return money
     },
     async getChargeTypeList() {