فهرست منبع

Merge branch 'Nov16thResetMusic' of http://git.dayaedu.com/molingzhide/dy-admin-manager into Nov16thResetMusic

mo 4 سال پیش
والد
کامیت
4c39c623c2

+ 11 - 1
src/utils/searchArray.js

@@ -211,7 +211,7 @@ export const auditTypeList = getValueForKey(auditType)
 export const auditPaymentTypeList = getValueForKey(auditPaymentType)
 export const orderServerList = getValueForKey(orderServerType)
 export const orderAuditTypeList = getValueForKey(orderAuditType)
-function getValueForKey (obj) {
+export function getValueForKey (obj) {
   let arr = []
   for (let k in obj) {
     arr.push({ label: obj[k], value: k })
@@ -219,6 +219,16 @@ function getValueForKey (obj) {
   return arr
 }
 
+export const array2object = (array, [lk, vk] = ['value', 'label']) => {
+  const object = {}
+  if (array && array.length) {
+    for (const item of array) {
+      object[item[lk]] = item[vk]
+    }
+  }
+  return object
+}
+
 // export {
 //   courseType,
 //   attendance,

+ 21 - 3
src/views/categroyManager/specialSetup/modals/chargesForm.vue

@@ -83,8 +83,12 @@
                 </el-option>
               </el-select>
             </el-form-item>
-            <el-form-item :prop="`details.${index}.courseTotalMinuties`"
-                          :rules="[{required: true, message: '请输入课程总时长', trigger: 'blur'}]">
+            <el-form-item
+              :prop="`details.${index}.courseTotalMinuties`"
+              :rules="[
+                { required: true, message: '请输入课程时长', trigger: 'blur' },
+                { validator: validatorCourseTotalMinuties(index, item), trigger: 'blur' }
+              ]">
               <el-input-number size="mini"
                                style="width: 90%!important;"
                                class="number-input"
@@ -169,8 +173,8 @@ import {
   musicGroupOrganizationCourseSettingsUpdate,
   getOrganizationCourseUnitPriceSettings
 } from '@/api/specialSetting'
+import { classTimeList, array2object } from '@/utils/searchArray'
 import { queryByMusicGroupOrganizationCourseSettingsId } from '../../../resetTeaming/api'
-import { classTimeList } from '@/utils/searchArray'
 import { courseType, boolOptions } from '@/constant'
 import { objectToOptions } from '@/utils'
 import numeral from 'numeral'
@@ -213,6 +217,9 @@ export default {
     },
     totalCurrentPrice () {
       return plusNum(this.form.details, 'courseCurrentPrice')
+    },
+    classTimeList() {
+      return array2object(classTimeList)
     }
   },
   watch: {
@@ -261,6 +268,7 @@ export default {
           courseCurrentPrice: Math.ceil(active.unitPrice * (item.courseTotalMinuties || 1)),
           courseOriginalPrice: Math.ceil(active.unitPrice * (item.courseTotalMinuties || 1))
         }
+        this.$refs.form.validateField(`details.${index}.courseTotalMinuties`)
         this.$set(this.form, `details`, [..._list])
       }
     },
@@ -318,6 +326,16 @@ export default {
           } catch (error) { }
         }
       })
+    },
+    validatorCourseTotalMinuties(index, item) {
+      return (rule, value, callback) => {
+        const { courseType } = item
+        if (courseType && value && this.classTimeList[courseType] &&  value < this.classTimeList[courseType]) {
+          callback(new Error(`单节课不得少于${this.classTimeList[courseType]}分钟`))
+          return
+        }
+        callback()
+      }
     }
   },
 }

+ 23 - 2
src/views/resetTeaming/modals/extra-class.vue

@@ -23,7 +23,7 @@
               v-model="list.form[scope.$index].courseType"
               placeholder="课程类型"
               clearable
-              @change="$listeners.priceChange(scope.row, scope.$index)"
+              @change="courseItemChange(scope.row, scope.$index)"
               :disabled="isDisabled"
             >
               <el-option
@@ -74,7 +74,10 @@
         <template slot-scope="scope">
           <el-form-item
             :prop="'form.' + scope.$index + '.courseTotalMinuties'"
-            :rules="{ required: true, message: '请输入课程时长', trigger: 'blur' }"
+            :rules="[
+              { required: true, message: '请输入课程时长', trigger: 'blur' },
+              { validator: validatorCourseTotalMinuties(scope.$index), trigger: 'blur' }
+            ]"
           >
             <el-input-number
               size="small"
@@ -168,6 +171,7 @@
 <script>
 import { courseType, boolOptions } from '@/constant'
 import { objectToOptions } from '@/utils'
+import { classTimeList, array2object } from '@/utils/searchArray'
 import numeral from 'numeral'
 export default {
   props: ['form', 'isCommon', 'isDisabled', 'isUserType', 'courseUnitPriceSettingsByType', 'clearable'],
@@ -183,6 +187,9 @@ export default {
       return {
         form: this.form
       }
+    },
+    classTimeList() {
+      return array2object(classTimeList)
     }
   },
   methods: {
@@ -196,6 +203,20 @@ export default {
     getOldMoney(index) {
       return numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
     },
+    courseItemChange(item, index) {
+      this.$listeners.priceChange(item, index)
+      this.$refs.form.validateField(`form.${index}.courseTotalMinuties`)
+    },
+    validatorCourseTotalMinuties(index) {
+      return (rule, value, callback) => {
+        const { courseType } = this.list.form[index]
+        if (courseType && value && this.classTimeList[courseType] &&  value < this.classTimeList[courseType]) {
+          callback(new Error(`单节课不得少于${this.classTimeList[courseType]}分钟`))
+          return
+        }
+        callback()
+      }
+    }
   },
 }
 </script>