|
@@ -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
|