123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- <template>
- <el-form
- ref="form"
- :model="list"
- >
- <el-table
- :data="form"
- style="width: 100%;text-alogn: center;"
- >
- <el-table-column
- label="课程类型"
- prop="courseType"
- key="courseType"
- width="150">
- <template slot-scope="scope">
- <el-form-item
- :prop="'form.' + scope.$index + '.courseType'"
- :rules="{ required: true, message: '请选择课程类型', trigger: 'change' }"
- >
- <el-select
- style="width: 90%!important;"
- size="small"
- v-model="list.form[scope.$index].courseType"
- placeholder="课程类型"
- clearable
- @change="$listeners.priceChange(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="是否可选"
- v-if="isCommon"
- prop="isStudentOptional"
- key="isStudentOptional"
- width="150">
- <template slot-scope="scope">
- <el-form-item
- :prop="'form.' + scope.$index + '.isStudentOptional'"
- :rules="{ required: true, message: '请选择是否可选', trigger: 'change' }"
- >
- <el-select
- style="width: 90%!important;"
- size="small"
- v-model="list.form[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="150">
- <template slot-scope="scope">
- <el-form-item
- :prop="'form.' + scope.$index + '.courseTotalMinuties'"
- :rules="{ required: true, message: '请输入课程时长', trigger: 'blur' }"
- >
- <el-input-number
- size="small"
- style="width: 90%!important;"
- class="number-input"
- v-model="list.form[scope.$index].courseTotalMinuties"
- :controls="false"
- :precision="0"
- @change="$listeners.priceChange(scope.row, scope.$index)"
- :min="1"
- :disabled="isDisabled"
- placeholder="课程时长"
- />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column
- label="现价(元)"
- prop="courseCurrentPrice"
- key="courseCurrentPrice"
- width="150">
- <template slot-scope="scope">
- <el-form-item
- :prop="'form.' + scope.$index + '.courseCurrentPrice'"
- :rules="{ required: true, message: '请输入现价', trigger: 'blur' }"
- >
- <!-- $listeners.moneyChange -->
- <el-input-number
- size="small"
- style="width: 90%!important;"
- class="number-input"
- v-model="list.form[scope.$index].courseCurrentPrice"
- :controls="false"
- :precision="2"
- :min="0"
- @change="change"
- :disabled="!isUserType"
- placeholder="请输入现价"
- />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column
- prop="courseOriginalPrice"
- key="courseOriginalPrice"
- label="原价(元)">
- <template slot-scope="scope">
- <el-form-item
- :prop="'form.' + scope.$index + '.courseOriginalPrice'"
- :rules="{ required: true, message: '请输入原价', trigger: 'blur' }"
- >
- <el-input-number
- size="small"
- style="width: 90%!important;"
- class="number-input"
- :disabled="isDisabled"
- v-model="list.form[scope.$index].courseOriginalPrice"
- :controls="false"
- :precision="2"
- :min="0"
- placeholder="请输入原价"
- />
- </el-form-item>
- </template>
- </el-table-column>
- <el-table-column
- v-if="clearable"
- prop="close"
- key="close"
- width="60">
- <template slot-scope="scope">
- <i v-if="form.length > 1" @click="$listeners.remove && $listeners.remove(scope.$index)" class="el-icon-circle-close"></i>
- </template>
- </el-table-column>
- </el-table>
- <el-button
- icon="el-icon-circle-plus-outline"
- plain
- v-if="!isCommon && $listeners.create"
- type="info"
- size="small"
- style="width: 100%;margin: 20px 0;"
- @click="$listeners.create"
- >新增课程类型</el-button>
- </el-form>
- </template>
- <script>
- import { courseType, boolOptions } from '@/constant'
- import { objectToOptions } from '@/utils'
- import numeral from 'numeral'
- export default {
- props: ['form', 'isCommon', 'isDisabled', 'isUserType', 'courseUnitPriceSettingsByType', 'clearable'],
- data() {
- return {
- courseType,
- courseTypeOptions: this.courseUnitPriceSettingsByType,
- boolOptionsOptions: objectToOptions(boolOptions),
- }
- },
- computed: {
- list() {
- console.log(this.form)
- return {
- form: this.form
- }
- }
- },
- methods: {
- change(val) {
- this.$listeners.moneyChange()
- },
- isOptionDisabled(key) {
- const selected = this.form.map(item => item.courseType)
- return selected.includes(key)
- },
- getOldMoney(index) {
- return numeral(this.list.form[index].courseTotalMinuties * this.list.form[index].unitPrice).format('0,0.00')
- },
- },
- }
- </script>
- <style lang="less" scoped>
- .number-input{
- /deep/ .el-input__inner {
- text-align: left;
- }
- }
- </style>
|