|
@@ -1,461 +1,464 @@
|
|
|
-import ColField from '@/components/col-field'
|
|
|
-import ColFieldGroup from '@/components/col-field-group'
|
|
|
-import SubjectModel from '@/business-components/subject-list'
|
|
|
-import ColPopup from '@/components/col-popup'
|
|
|
-import request from '@/helpers/request'
|
|
|
-import { postMessage } from '@/helpers/native-message'
|
|
|
-import {
|
|
|
- Form,
|
|
|
- Radio,
|
|
|
- RadioGroup,
|
|
|
- Tag,
|
|
|
- Sticky,
|
|
|
- Button,
|
|
|
- Field,
|
|
|
- ActionSheet,
|
|
|
- CheckboxGroup,
|
|
|
- Checkbox,
|
|
|
- Dialog,
|
|
|
- Toast
|
|
|
-} from 'vant'
|
|
|
-import { defineComponent } from 'vue'
|
|
|
-import styles from './practice-setting.module.less'
|
|
|
-import { verifyNumberIntegerAndFloat } from '@/helpers/toolsValidate'
|
|
|
-import Timer from './model/timer'
|
|
|
-
|
|
|
-export default defineComponent({
|
|
|
- name: 'PracticeSetting',
|
|
|
- data() {
|
|
|
- return {
|
|
|
- subjectList: [],
|
|
|
- chargeTypeArr: {
|
|
|
- 0: '否',
|
|
|
- 1: '是'
|
|
|
- },
|
|
|
- classTimeStatus: false,
|
|
|
- subjectStatus: false,
|
|
|
- timerStatus: false,
|
|
|
- timeSetting: {
|
|
|
- courseMinutes: 25,
|
|
|
- freeMinutes: 5,
|
|
|
- startSetting: '08:00',
|
|
|
- endSetting: '18:00'
|
|
|
- },
|
|
|
- timerObject: {} as any,
|
|
|
- form: {
|
|
|
- enableFlag: 1,
|
|
|
- courseMinutes: null as any,
|
|
|
- freeMinutes: 0,
|
|
|
- subjectIdTemp: '',
|
|
|
- subjectId: [] as any[],
|
|
|
- subjectPrice: [] as any[],
|
|
|
- skipHolidayFlag: 1,
|
|
|
- setting: ''
|
|
|
- },
|
|
|
- minutes: [] as any,
|
|
|
- rate: 0
|
|
|
- }
|
|
|
- },
|
|
|
- computed: {
|
|
|
- choiceSubjectId() {
|
|
|
- const form = this.form as any
|
|
|
- const ids = form.subjectIdTemp ? form.subjectIdTemp.split(',') : []
|
|
|
- return ids.map((item: any) => Number(item)) || []
|
|
|
- }
|
|
|
- },
|
|
|
- async mounted() {
|
|
|
- try {
|
|
|
- // 获取手续费和分钟数
|
|
|
- let config = await request.get(
|
|
|
- '/api-teacher/sysConfig/queryByParamNameList',
|
|
|
- {
|
|
|
- params: {
|
|
|
- paramNames:
|
|
|
- 'practice_times_setting,practice_service_fee,course_start_setting,course_end_setting'
|
|
|
- }
|
|
|
- }
|
|
|
- )
|
|
|
- let configData = config.data || []
|
|
|
- configData.forEach((item: any) => {
|
|
|
- if (item.paramName === 'practice_times_setting') {
|
|
|
- let mins = item.paramValue ? JSON.parse(item.paramValue) : []
|
|
|
- let tempArr = [] as any
|
|
|
- mins.forEach((item: any) => {
|
|
|
- tempArr.push({
|
|
|
- ...item,
|
|
|
- name: item.courseMinutes
|
|
|
- })
|
|
|
- })
|
|
|
- this.minutes = [...tempArr]
|
|
|
- }
|
|
|
- if (item.paramName === 'practice_service_fee') {
|
|
|
- this.rate = item.paramValue
|
|
|
- }
|
|
|
- if (item.paramName === 'course_start_setting') {
|
|
|
- this.timeSetting.startSetting = item.paramValue
|
|
|
- }
|
|
|
- if (item.paramName === 'course_end_setting') {
|
|
|
- this.timeSetting.endSetting = item.paramValue
|
|
|
- }
|
|
|
- })
|
|
|
- //
|
|
|
- let teacher = await request.post('/api-teacher/teacher/querySubject')
|
|
|
- this.subjectList = teacher.data || []
|
|
|
-
|
|
|
- // 获取课程设置
|
|
|
- const setting = await request.post(
|
|
|
- '/api-teacher/teacherFreeTime/getDetail',
|
|
|
- {
|
|
|
- data: {
|
|
|
- defaultFlag: 1
|
|
|
- }
|
|
|
- }
|
|
|
- )
|
|
|
- const sr = setting.data
|
|
|
- if (sr) {
|
|
|
- this.timeSetting.courseMinutes = sr.courseMinutes
|
|
|
- this.timeSetting.freeMinutes = sr.freeMinutes
|
|
|
-
|
|
|
- this.timerObject = {
|
|
|
- monday: sr.monday ? JSON.parse(sr.monday) : [],
|
|
|
- tuesday: sr.tuesday ? JSON.parse(sr.tuesday) : [],
|
|
|
- wednesday: sr.wednesday ? JSON.parse(sr.wednesday) : [],
|
|
|
- thursday: sr.thursday ? JSON.parse(sr.thursday) : [],
|
|
|
- friday: sr.friday ? JSON.parse(sr.friday) : [],
|
|
|
- saturday: sr.saturday ? JSON.parse(sr.saturday) : [],
|
|
|
- sunday: sr.sunday ? JSON.parse(sr.sunday) : []
|
|
|
- }
|
|
|
-
|
|
|
- let tempIds: any = []
|
|
|
- let tempPrices: any = []
|
|
|
- const subjectPrice = sr.subjectPrice || []
|
|
|
- subjectPrice.forEach((item: any) => {
|
|
|
- tempIds.push(item.subjectId)
|
|
|
- tempPrices.push({
|
|
|
- subjectId: item.subjectId,
|
|
|
- subjectPrice: item.subjectPrice,
|
|
|
- subjectName: item.subjectName
|
|
|
- })
|
|
|
- })
|
|
|
- const to = this.timerObject
|
|
|
- this.form = {
|
|
|
- enableFlag: sr.enableFlag,
|
|
|
- courseMinutes: sr.courseMinutes,
|
|
|
- freeMinutes: sr.freeMinutes,
|
|
|
- subjectIdTemp: tempIds.join(','),
|
|
|
- subjectId: tempIds,
|
|
|
- subjectPrice: tempPrices,
|
|
|
- skipHolidayFlag: sr.skipHolidayFlag,
|
|
|
- setting:
|
|
|
- to.monday.length > 0 ||
|
|
|
- to.tuesday.length > 0 ||
|
|
|
- to.wednesday.length > 0 ||
|
|
|
- to.thursday.length > 0 ||
|
|
|
- to.friday.length > 0 ||
|
|
|
- to.saturday.length > 0 ||
|
|
|
- to.sunday.length > 0
|
|
|
- ? '已设置'
|
|
|
- : ''
|
|
|
- }
|
|
|
- }
|
|
|
- } catch {}
|
|
|
- },
|
|
|
- methods: {
|
|
|
- onSelect(item: any) {
|
|
|
- // 如果分钟数不同,则清空
|
|
|
- if (this.form.courseMinutes !== item.courseMinutes) {
|
|
|
- this.timerObject = {}
|
|
|
- this.form.setting = ''
|
|
|
- }
|
|
|
- this.form.courseMinutes = item.courseMinutes
|
|
|
- this.form.freeMinutes = item.freeMinutes
|
|
|
- },
|
|
|
- async onTimer() {
|
|
|
- try {
|
|
|
- const form = this.form
|
|
|
- if (!form.courseMinutes) {
|
|
|
- Toast('请选择单课时时长')
|
|
|
- return
|
|
|
- }
|
|
|
- this.timeSetting.courseMinutes = Number(form.courseMinutes)
|
|
|
- this.timeSetting.freeMinutes = Number(form.freeMinutes)
|
|
|
- this.timerStatus = true
|
|
|
- } catch {}
|
|
|
- },
|
|
|
- onChoiceTimer(item: any, status: boolean) {
|
|
|
- this.form.setting = status ? '已设置' : ''
|
|
|
- this.timerObject = item
|
|
|
- this.timerStatus = false
|
|
|
- },
|
|
|
- onChoice(item: any) {
|
|
|
- console.log(item)
|
|
|
- const tempItem = item || []
|
|
|
- this.form.subjectId = tempItem
|
|
|
- this.form.subjectIdTemp = tempItem.join(',') || ''
|
|
|
- let subjectPriceList = [...this.form.subjectPrice]
|
|
|
- tempItem.forEach((item: any) => {
|
|
|
- const index = subjectPriceList.findIndex(
|
|
|
- (subject: any) => subject.subjectId === item
|
|
|
- )
|
|
|
- if (index === -1) {
|
|
|
- subjectPriceList.push({
|
|
|
- subjectId: item,
|
|
|
- subjectPrice: null as any,
|
|
|
- subjectName: ''
|
|
|
- })
|
|
|
- }
|
|
|
- })
|
|
|
-
|
|
|
- const temp: any = []
|
|
|
- subjectPriceList.forEach((item: any) => {
|
|
|
- const isExist = tempItem.some(
|
|
|
- (subjectId: any) => subjectId === item.subjectId
|
|
|
- )
|
|
|
- isExist && temp.push(item)
|
|
|
- })
|
|
|
- this.form.subjectPrice = temp
|
|
|
- this.subjectStatus = false
|
|
|
- },
|
|
|
- getSubjectName(id: any) {
|
|
|
- const subject: any = this.subjectList.find((item: any) => item.id === id)
|
|
|
- return subject ? subject.name : ''
|
|
|
- },
|
|
|
- onFormatter(val: any) {
|
|
|
- return verifyNumberIntegerAndFloat(val)
|
|
|
- },
|
|
|
- async onSubmit() {
|
|
|
- try {
|
|
|
- const form = this.form
|
|
|
- form.subjectPrice.forEach((item: any) => {
|
|
|
- item.subjectName = this.getSubjectName(item.subjectId)
|
|
|
- })
|
|
|
- await request.post('/api-teacher/teacherFreeTime/upSet', {
|
|
|
- data: {
|
|
|
- ...form,
|
|
|
- ...this.timerObject
|
|
|
- }
|
|
|
- })
|
|
|
- Toast('设置成功')
|
|
|
- setTimeout(() => {
|
|
|
- postMessage({ api: 'back', content: {} })
|
|
|
- }, 500)
|
|
|
- } catch {}
|
|
|
- }
|
|
|
- },
|
|
|
- render() {
|
|
|
- return (
|
|
|
- <Form style={{ paddingTop: '15px' }} onSubmit={this.onSubmit}>
|
|
|
- <ColFieldGroup>
|
|
|
- <ColField title="是否开启陪练课" required border={false}>
|
|
|
- <RadioGroup
|
|
|
- class={styles['radio-group']}
|
|
|
- modelValue={this.form.enableFlag}
|
|
|
- onUpdate:modelValue={val => (this.form.enableFlag = val)}
|
|
|
- >
|
|
|
- {['1', '0'].map((item: string) => {
|
|
|
- const isActive = Number(item) === Number(this.form.enableFlag)
|
|
|
- const type = isActive ? 'primary' : 'default'
|
|
|
- return (
|
|
|
- <Radio class={styles.radio} name={item}>
|
|
|
- <Tag size="large" plain={isActive} type={type}>
|
|
|
- {this.chargeTypeArr[item]}
|
|
|
- </Tag>
|
|
|
- </Radio>
|
|
|
- )
|
|
|
- })}
|
|
|
- </RadioGroup>
|
|
|
- </ColField>
|
|
|
- <ColField title="可教授乐器" required>
|
|
|
- {this.form.subjectPrice && this.form.subjectPrice.length > 0 && (
|
|
|
- <CheckboxGroup
|
|
|
- modelValue={this.form.subjectId}
|
|
|
- class={styles['checkbox-group']}
|
|
|
- disabled
|
|
|
- onClick={() => {
|
|
|
- this.subjectStatus = true
|
|
|
- }}
|
|
|
- >
|
|
|
- {this.form.subjectPrice.map((item: any) => (
|
|
|
- <Checkbox class={styles.checkbox}>
|
|
|
- <Tag
|
|
|
- plain={true}
|
|
|
- type={'primary'}
|
|
|
- round
|
|
|
- closeable
|
|
|
- size="large"
|
|
|
- style={{ backgroundColor: '#E9FFF8' }}
|
|
|
- onClick={e => {
|
|
|
- e.stopPropagation()
|
|
|
- e.preventDefault()
|
|
|
- }}
|
|
|
- onClose={e => {
|
|
|
- e.stopPropagation()
|
|
|
- e.preventDefault()
|
|
|
- Dialog.confirm({
|
|
|
- title: '提示',
|
|
|
- message: '您是否要删除选择的乐器?',
|
|
|
- confirmButtonColor: 'var(--van-primary)'
|
|
|
- }).then(() => {
|
|
|
- const index = this.form.subjectId.indexOf(
|
|
|
- item.subjectId
|
|
|
- )
|
|
|
- if (index !== -1) {
|
|
|
- this.form.subjectId.splice(index, 1)
|
|
|
- }
|
|
|
-
|
|
|
- const index2 = this.form.subjectPrice.findIndex(
|
|
|
- (subject: any) =>
|
|
|
- subject.subjectId === item.subjectId
|
|
|
- )
|
|
|
- if (index2 !== -1) {
|
|
|
- this.form.subjectPrice.splice(index2, 1)
|
|
|
- }
|
|
|
- this.form.subjectIdTemp =
|
|
|
- this.form.subjectId.join(',')
|
|
|
- })
|
|
|
- }}
|
|
|
- >
|
|
|
- {this.getSubjectName(item.subjectId)}
|
|
|
- {/* {item.subjectName} */}
|
|
|
- </Tag>
|
|
|
- </Checkbox>
|
|
|
- ))}
|
|
|
- </CheckboxGroup>
|
|
|
- )}
|
|
|
- {!this.form.subjectPrice.length && (
|
|
|
- <Field
|
|
|
- v-model={this.form.subjectIdTemp}
|
|
|
- name="courseMinutes"
|
|
|
- readonly
|
|
|
- onClick={() => {
|
|
|
- this.subjectStatus = true
|
|
|
- }}
|
|
|
- rules={[{ required: true, message: '请选择可教授乐器' }]}
|
|
|
- placeholder="请选择可教授乐器"
|
|
|
- />
|
|
|
- )}
|
|
|
- </ColField>
|
|
|
- <ColField title="单课时时长" required>
|
|
|
- <Field
|
|
|
- v-model={this.form.courseMinutes}
|
|
|
- name="courseMinutes"
|
|
|
- readonly
|
|
|
- isLink
|
|
|
- onClick={() => {
|
|
|
- this.classTimeStatus = true
|
|
|
- }}
|
|
|
- rules={[{ required: true, message: '请选择单课时时长' }]}
|
|
|
- placeholder="请选择单课时时长"
|
|
|
- v-slots={{
|
|
|
- button: () => <span>分钟</span>
|
|
|
- }}
|
|
|
- />
|
|
|
- </ColField>
|
|
|
- </ColFieldGroup>
|
|
|
- {this.form.subjectPrice && this.form.subjectPrice.length > 0 && (
|
|
|
- <ColFieldGroup>
|
|
|
- {this.form.subjectPrice.map((item: any) => (
|
|
|
- <ColField
|
|
|
- title={`${this.getSubjectName(item.subjectId)}声部陪练价格`}
|
|
|
- required
|
|
|
- >
|
|
|
- <Field
|
|
|
- v-model={item.subjectPrice}
|
|
|
- name="singleMins"
|
|
|
- type="number"
|
|
|
- labelWidth={'auto'}
|
|
|
- label={`${this.form.courseMinutes || 0}分钟 / `}
|
|
|
- rules={[
|
|
|
- {
|
|
|
- required: true,
|
|
|
- message: `请选择声部陪练价格`
|
|
|
- }
|
|
|
- ]}
|
|
|
- formatter={this.onFormatter}
|
|
|
- maxlength={8}
|
|
|
- placeholder={`请选择声部陪练价格`}
|
|
|
- v-slots={{
|
|
|
- button: () => <span>元</span>
|
|
|
- }}
|
|
|
- />
|
|
|
- </ColField>
|
|
|
- ))}
|
|
|
- </ColFieldGroup>
|
|
|
- )}
|
|
|
-
|
|
|
- <ColFieldGroup>
|
|
|
- <ColField title="可陪练时间段">
|
|
|
- <Field
|
|
|
- modelValue={this.form.setting}
|
|
|
- name="singleMins"
|
|
|
- readonly
|
|
|
- isLink
|
|
|
- onClick={this.onTimer}
|
|
|
- placeholder="未设置"
|
|
|
- />
|
|
|
- </ColField>
|
|
|
- </ColFieldGroup>
|
|
|
-
|
|
|
- <ColFieldGroup>
|
|
|
- <ColField required title="是否跳过节假日" border={false}>
|
|
|
- <RadioGroup
|
|
|
- class={styles['radio-group']}
|
|
|
- modelValue={this.form.skipHolidayFlag}
|
|
|
- onUpdate:modelValue={val => (this.form.skipHolidayFlag = val)}
|
|
|
- >
|
|
|
- {['1', '0'].map((item: string) => {
|
|
|
- const isActive =
|
|
|
- Number(item) === Number(this.form.skipHolidayFlag)
|
|
|
- const type = isActive ? 'primary' : 'default'
|
|
|
- return (
|
|
|
- <Radio class={styles.radio} name={item}>
|
|
|
- <Tag size="large" plain={isActive} type={type}>
|
|
|
- {this.chargeTypeArr[item]}
|
|
|
- </Tag>
|
|
|
- </Radio>
|
|
|
- )
|
|
|
- })}
|
|
|
- </RadioGroup>
|
|
|
- </ColField>
|
|
|
- </ColFieldGroup>
|
|
|
-
|
|
|
- <Sticky offsetBottom={0} position="bottom">
|
|
|
- <div class={'btnGroup'}>
|
|
|
- <Button block round type="primary" native-type="submit">
|
|
|
- 提交
|
|
|
- </Button>
|
|
|
- </div>
|
|
|
- </Sticky>
|
|
|
-
|
|
|
- <ColPopup v-model={this.subjectStatus} destroy>
|
|
|
- <SubjectModel
|
|
|
- max={5}
|
|
|
- single
|
|
|
- subjectList={this.subjectList}
|
|
|
- choiceSubjectIds={this.choiceSubjectId}
|
|
|
- onChoice={this.onChoice}
|
|
|
- />
|
|
|
- </ColPopup>
|
|
|
-
|
|
|
- <ColPopup v-model={this.timerStatus} destroy>
|
|
|
- <Timer
|
|
|
- onChoice={this.onChoiceTimer}
|
|
|
- timerObject={this.timerObject}
|
|
|
- courseMinutes={Number(this.timeSetting.courseMinutes)}
|
|
|
- freeMinutes={Number(this.timeSetting.freeMinutes)}
|
|
|
- startSetting={this.timeSetting.startSetting}
|
|
|
- endSetting={this.timeSetting.endSetting}
|
|
|
- />
|
|
|
- </ColPopup>
|
|
|
-
|
|
|
- <ActionSheet
|
|
|
- v-model:show={this.classTimeStatus}
|
|
|
- actions={this.minutes}
|
|
|
- cancelText="取消"
|
|
|
- closeOnClickAction
|
|
|
- onSelect={this.onSelect}
|
|
|
- />
|
|
|
- </Form>
|
|
|
- )
|
|
|
- }
|
|
|
-})
|
|
|
+import ColField from '@/components/col-field'
|
|
|
+import ColFieldGroup from '@/components/col-field-group'
|
|
|
+import SubjectModel from '@/business-components/subject-list'
|
|
|
+import ColPopup from '@/components/col-popup'
|
|
|
+import request from '@/helpers/request'
|
|
|
+import { postMessage } from '@/helpers/native-message'
|
|
|
+import {
|
|
|
+ Form,
|
|
|
+ Radio,
|
|
|
+ RadioGroup,
|
|
|
+ Tag,
|
|
|
+ Sticky,
|
|
|
+ Button,
|
|
|
+ Field,
|
|
|
+ ActionSheet,
|
|
|
+ CheckboxGroup,
|
|
|
+ Checkbox,
|
|
|
+ Dialog,
|
|
|
+ Toast
|
|
|
+} from 'vant'
|
|
|
+import { defineComponent } from 'vue'
|
|
|
+import styles from './practice-setting.module.less'
|
|
|
+import { verifyNumberIntegerAndFloat } from '@/helpers/toolsValidate'
|
|
|
+import Timer from './model/timer'
|
|
|
+import ColHeader from '@/components/col-header'
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'PracticeSetting',
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ subjectList: [],
|
|
|
+ chargeTypeArr: {
|
|
|
+ 0: '否',
|
|
|
+ 1: '是'
|
|
|
+ },
|
|
|
+ classTimeStatus: false,
|
|
|
+ subjectStatus: false,
|
|
|
+ timerStatus: false,
|
|
|
+ timeSetting: {
|
|
|
+ courseMinutes: 25,
|
|
|
+ freeMinutes: 5,
|
|
|
+ startSetting: '08:00',
|
|
|
+ endSetting: '18:00'
|
|
|
+ },
|
|
|
+ timerObject: {} as any,
|
|
|
+ form: {
|
|
|
+ enableFlag: 1,
|
|
|
+ courseMinutes: null as any,
|
|
|
+ freeMinutes: 0,
|
|
|
+ subjectIdTemp: '',
|
|
|
+ subjectId: [] as any[],
|
|
|
+ subjectPrice: [] as any[],
|
|
|
+ skipHolidayFlag: 1,
|
|
|
+ setting: ''
|
|
|
+ },
|
|
|
+ minutes: [] as any,
|
|
|
+ rate: 0
|
|
|
+ }
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ choiceSubjectId() {
|
|
|
+ const form = this.form as any
|
|
|
+ const ids = form.subjectIdTemp ? form.subjectIdTemp.split(',') : []
|
|
|
+ return ids.map((item: any) => Number(item)) || []
|
|
|
+ }
|
|
|
+ },
|
|
|
+ async mounted() {
|
|
|
+ try {
|
|
|
+ // 获取手续费和分钟数
|
|
|
+ const config = await request.get(
|
|
|
+ '/api-teacher/sysConfig/queryByParamNameList',
|
|
|
+ {
|
|
|
+ params: {
|
|
|
+ paramNames:
|
|
|
+ 'practice_times_setting,practice_service_fee,course_start_setting,course_end_setting'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+ const configData = config.data || []
|
|
|
+ configData.forEach((item: any) => {
|
|
|
+ if (item.paramName === 'practice_times_setting') {
|
|
|
+ const mins = item.paramValue ? JSON.parse(item.paramValue) : []
|
|
|
+ const tempArr = [] as any
|
|
|
+ mins.forEach((item: any) => {
|
|
|
+ tempArr.push({
|
|
|
+ ...item,
|
|
|
+ name: item.courseMinutes
|
|
|
+ })
|
|
|
+ })
|
|
|
+ this.minutes = [...tempArr]
|
|
|
+ }
|
|
|
+ if (item.paramName === 'practice_service_fee') {
|
|
|
+ this.rate = item.paramValue
|
|
|
+ }
|
|
|
+ if (item.paramName === 'course_start_setting') {
|
|
|
+ this.timeSetting.startSetting = item.paramValue
|
|
|
+ }
|
|
|
+ if (item.paramName === 'course_end_setting') {
|
|
|
+ this.timeSetting.endSetting = item.paramValue
|
|
|
+ }
|
|
|
+ })
|
|
|
+ //
|
|
|
+ const teacher = await request.post('/api-teacher/teacher/querySubject')
|
|
|
+ this.subjectList = teacher.data || []
|
|
|
+
|
|
|
+ // 获取课程设置
|
|
|
+ const setting = await request.post(
|
|
|
+ '/api-teacher/teacherFreeTime/getDetail',
|
|
|
+ {
|
|
|
+ data: {
|
|
|
+ defaultFlag: 1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ )
|
|
|
+ const sr = setting.data
|
|
|
+ if (sr) {
|
|
|
+ this.timeSetting.courseMinutes = sr.courseMinutes
|
|
|
+ this.timeSetting.freeMinutes = sr.freeMinutes
|
|
|
+
|
|
|
+ this.timerObject = {
|
|
|
+ monday: sr.monday ? JSON.parse(sr.monday) : [],
|
|
|
+ tuesday: sr.tuesday ? JSON.parse(sr.tuesday) : [],
|
|
|
+ wednesday: sr.wednesday ? JSON.parse(sr.wednesday) : [],
|
|
|
+ thursday: sr.thursday ? JSON.parse(sr.thursday) : [],
|
|
|
+ friday: sr.friday ? JSON.parse(sr.friday) : [],
|
|
|
+ saturday: sr.saturday ? JSON.parse(sr.saturday) : [],
|
|
|
+ sunday: sr.sunday ? JSON.parse(sr.sunday) : []
|
|
|
+ }
|
|
|
+
|
|
|
+ const tempIds: any = []
|
|
|
+ const tempPrices: any = []
|
|
|
+ const subjectPrice = sr.subjectPrice || []
|
|
|
+ subjectPrice.forEach((item: any) => {
|
|
|
+ tempIds.push(item.subjectId)
|
|
|
+ tempPrices.push({
|
|
|
+ subjectId: item.subjectId,
|
|
|
+ subjectPrice: item.subjectPrice,
|
|
|
+ subjectName: item.subjectName
|
|
|
+ })
|
|
|
+ })
|
|
|
+ const to = this.timerObject
|
|
|
+ this.form = {
|
|
|
+ enableFlag: sr.enableFlag,
|
|
|
+ courseMinutes: sr.courseMinutes,
|
|
|
+ freeMinutes: sr.freeMinutes,
|
|
|
+ subjectIdTemp: tempIds.join(','),
|
|
|
+ subjectId: tempIds,
|
|
|
+ subjectPrice: tempPrices,
|
|
|
+ skipHolidayFlag: sr.skipHolidayFlag,
|
|
|
+ setting:
|
|
|
+ to.monday.length > 0 ||
|
|
|
+ to.tuesday.length > 0 ||
|
|
|
+ to.wednesday.length > 0 ||
|
|
|
+ to.thursday.length > 0 ||
|
|
|
+ to.friday.length > 0 ||
|
|
|
+ to.saturday.length > 0 ||
|
|
|
+ to.sunday.length > 0
|
|
|
+ ? '已设置'
|
|
|
+ : ''
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch {}
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onSelect(item: any) {
|
|
|
+ // 如果分钟数不同,则清空
|
|
|
+ if (this.form.courseMinutes !== item.courseMinutes) {
|
|
|
+ this.timerObject = {}
|
|
|
+ this.form.setting = ''
|
|
|
+ }
|
|
|
+ this.form.courseMinutes = item.courseMinutes
|
|
|
+ this.form.freeMinutes = item.freeMinutes
|
|
|
+ },
|
|
|
+ async onTimer() {
|
|
|
+ try {
|
|
|
+ const form = this.form
|
|
|
+ if (!form.courseMinutes) {
|
|
|
+ Toast('请选择单课时时长')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ this.timeSetting.courseMinutes = Number(form.courseMinutes)
|
|
|
+ this.timeSetting.freeMinutes = Number(form.freeMinutes)
|
|
|
+ this.timerStatus = true
|
|
|
+ } catch {}
|
|
|
+ },
|
|
|
+ onChoiceTimer(item: any, status: boolean) {
|
|
|
+ this.form.setting = status ? '已设置' : ''
|
|
|
+ this.timerObject = item
|
|
|
+ this.timerStatus = false
|
|
|
+ },
|
|
|
+ onChoice(item: any) {
|
|
|
+ console.log(item)
|
|
|
+ const tempItem = item || []
|
|
|
+ this.form.subjectId = tempItem
|
|
|
+ this.form.subjectIdTemp = tempItem.join(',') || ''
|
|
|
+ const subjectPriceList = [...this.form.subjectPrice]
|
|
|
+ tempItem.forEach((item: any) => {
|
|
|
+ const index = subjectPriceList.findIndex(
|
|
|
+ (subject: any) => subject.subjectId === item
|
|
|
+ )
|
|
|
+ if (index === -1) {
|
|
|
+ subjectPriceList.push({
|
|
|
+ subjectId: item,
|
|
|
+ subjectPrice: null as any,
|
|
|
+ subjectName: ''
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ const temp: any = []
|
|
|
+ subjectPriceList.forEach((item: any) => {
|
|
|
+ const isExist = tempItem.some(
|
|
|
+ (subjectId: any) => subjectId === item.subjectId
|
|
|
+ )
|
|
|
+ isExist && temp.push(item)
|
|
|
+ })
|
|
|
+ this.form.subjectPrice = temp
|
|
|
+ this.subjectStatus = false
|
|
|
+ },
|
|
|
+ getSubjectName(id: any) {
|
|
|
+ const subject: any = this.subjectList.find((item: any) => item.id === id)
|
|
|
+ return subject ? subject.name : ''
|
|
|
+ },
|
|
|
+ onFormatter(val: any) {
|
|
|
+ return verifyNumberIntegerAndFloat(val)
|
|
|
+ },
|
|
|
+ async onSubmit() {
|
|
|
+ try {
|
|
|
+ const form = this.form
|
|
|
+ form.subjectPrice.forEach((item: any) => {
|
|
|
+ item.subjectName = this.getSubjectName(item.subjectId)
|
|
|
+ })
|
|
|
+ await request.post('/api-teacher/teacherFreeTime/upSet', {
|
|
|
+ data: {
|
|
|
+ ...form,
|
|
|
+ ...this.timerObject
|
|
|
+ }
|
|
|
+ })
|
|
|
+ Toast('设置成功')
|
|
|
+ setTimeout(() => {
|
|
|
+ postMessage({ api: 'back', content: {} })
|
|
|
+ }, 500)
|
|
|
+ } catch {}
|
|
|
+ }
|
|
|
+ },
|
|
|
+ render() {
|
|
|
+ return (
|
|
|
+ <Form style={{ paddingTop: '15px' }} onSubmit={this.onSubmit}>
|
|
|
+ <ColHeader />
|
|
|
+ <ColFieldGroup>
|
|
|
+ <ColField title="是否开启陪练课" required border={false}>
|
|
|
+ <RadioGroup
|
|
|
+ class={styles['radio-group']}
|
|
|
+ modelValue={this.form.enableFlag}
|
|
|
+ onUpdate:modelValue={val => (this.form.enableFlag = val)}
|
|
|
+ >
|
|
|
+ {['1', '0'].map((item: string) => {
|
|
|
+ const isActive = Number(item) === Number(this.form.enableFlag)
|
|
|
+ const type = isActive ? 'primary' : 'default'
|
|
|
+ return (
|
|
|
+ <Radio class={styles.radio} name={item}>
|
|
|
+ <Tag size="large" plain={isActive} type={type}>
|
|
|
+ {this.chargeTypeArr[item]}
|
|
|
+ </Tag>
|
|
|
+ </Radio>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </RadioGroup>
|
|
|
+ </ColField>
|
|
|
+ <ColField title="可教授乐器" required>
|
|
|
+ {this.form.subjectPrice && this.form.subjectPrice.length > 0 && (
|
|
|
+ <CheckboxGroup
|
|
|
+ modelValue={this.form.subjectId}
|
|
|
+ class={styles['checkbox-group']}
|
|
|
+ disabled
|
|
|
+ onClick={() => {
|
|
|
+ this.subjectStatus = true
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {this.form.subjectPrice.map((item: any) => (
|
|
|
+ <Checkbox class={styles.checkbox}>
|
|
|
+ <Tag
|
|
|
+ plain={true}
|
|
|
+ type={'primary'}
|
|
|
+ round
|
|
|
+ closeable
|
|
|
+ size="large"
|
|
|
+ style={{ backgroundColor: '#E9FFF8' }}
|
|
|
+ onClick={e => {
|
|
|
+ e.stopPropagation()
|
|
|
+ e.preventDefault()
|
|
|
+ }}
|
|
|
+ onClose={e => {
|
|
|
+ e.stopPropagation()
|
|
|
+ e.preventDefault()
|
|
|
+ Dialog.confirm({
|
|
|
+ title: '提示',
|
|
|
+ message: '您是否要删除选择的乐器?',
|
|
|
+ confirmButtonColor: 'var(--van-primary)'
|
|
|
+ }).then(() => {
|
|
|
+ const index = this.form.subjectId.indexOf(
|
|
|
+ item.subjectId
|
|
|
+ )
|
|
|
+ if (index !== -1) {
|
|
|
+ this.form.subjectId.splice(index, 1)
|
|
|
+ }
|
|
|
+
|
|
|
+ const index2 = this.form.subjectPrice.findIndex(
|
|
|
+ (subject: any) =>
|
|
|
+ subject.subjectId === item.subjectId
|
|
|
+ )
|
|
|
+ if (index2 !== -1) {
|
|
|
+ this.form.subjectPrice.splice(index2, 1)
|
|
|
+ }
|
|
|
+ this.form.subjectIdTemp =
|
|
|
+ this.form.subjectId.join(',')
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ {this.getSubjectName(item.subjectId)}
|
|
|
+ {/* {item.subjectName} */}
|
|
|
+ </Tag>
|
|
|
+ </Checkbox>
|
|
|
+ ))}
|
|
|
+ </CheckboxGroup>
|
|
|
+ )}
|
|
|
+ {!this.form.subjectPrice.length && (
|
|
|
+ <Field
|
|
|
+ v-model={this.form.subjectIdTemp}
|
|
|
+ name="courseMinutes"
|
|
|
+ readonly
|
|
|
+ onClick={() => {
|
|
|
+ this.subjectStatus = true
|
|
|
+ }}
|
|
|
+ rules={[{ required: true, message: '请选择可教授乐器' }]}
|
|
|
+ placeholder="请选择可教授乐器"
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ </ColField>
|
|
|
+ <ColField title="单课时时长" required>
|
|
|
+ <Field
|
|
|
+ v-model={this.form.courseMinutes}
|
|
|
+ name="courseMinutes"
|
|
|
+ readonly
|
|
|
+ isLink
|
|
|
+ onClick={() => {
|
|
|
+ this.classTimeStatus = true
|
|
|
+ }}
|
|
|
+ rules={[{ required: true, message: '请选择单课时时长' }]}
|
|
|
+ placeholder="请选择单课时时长"
|
|
|
+ v-slots={{
|
|
|
+ button: () => <span>分钟</span>
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </ColField>
|
|
|
+ </ColFieldGroup>
|
|
|
+ {this.form.subjectPrice && this.form.subjectPrice.length > 0 && (
|
|
|
+ <ColFieldGroup>
|
|
|
+ {this.form.subjectPrice.map((item: any) => (
|
|
|
+ <ColField
|
|
|
+ title={`${this.getSubjectName(item.subjectId)}声部陪练价格`}
|
|
|
+ required
|
|
|
+ >
|
|
|
+ <Field
|
|
|
+ v-model={item.subjectPrice}
|
|
|
+ name="singleMins"
|
|
|
+ type="number"
|
|
|
+ labelWidth={'auto'}
|
|
|
+ label={`${this.form.courseMinutes || 0}分钟 / `}
|
|
|
+ rules={[
|
|
|
+ {
|
|
|
+ required: true,
|
|
|
+ message: `请选择声部陪练价格`
|
|
|
+ }
|
|
|
+ ]}
|
|
|
+ formatter={this.onFormatter}
|
|
|
+ maxlength={8}
|
|
|
+ placeholder={`请选择声部陪练价格`}
|
|
|
+ v-slots={{
|
|
|
+ button: () => <span>元</span>
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </ColField>
|
|
|
+ ))}
|
|
|
+ </ColFieldGroup>
|
|
|
+ )}
|
|
|
+
|
|
|
+ <ColFieldGroup>
|
|
|
+ <ColField title="可陪练时间段">
|
|
|
+ <Field
|
|
|
+ modelValue={this.form.setting}
|
|
|
+ name="singleMins"
|
|
|
+ readonly
|
|
|
+ isLink
|
|
|
+ onClick={this.onTimer}
|
|
|
+ placeholder="未设置"
|
|
|
+ />
|
|
|
+ </ColField>
|
|
|
+ </ColFieldGroup>
|
|
|
+
|
|
|
+ <ColFieldGroup>
|
|
|
+ <ColField required title="是否跳过节假日" border={false}>
|
|
|
+ <RadioGroup
|
|
|
+ class={styles['radio-group']}
|
|
|
+ modelValue={this.form.skipHolidayFlag}
|
|
|
+ onUpdate:modelValue={val => (this.form.skipHolidayFlag = val)}
|
|
|
+ >
|
|
|
+ {['1', '0'].map((item: string) => {
|
|
|
+ const isActive =
|
|
|
+ Number(item) === Number(this.form.skipHolidayFlag)
|
|
|
+ const type = isActive ? 'primary' : 'default'
|
|
|
+ return (
|
|
|
+ <Radio class={styles.radio} name={item}>
|
|
|
+ <Tag size="large" plain={isActive} type={type}>
|
|
|
+ {this.chargeTypeArr[item]}
|
|
|
+ </Tag>
|
|
|
+ </Radio>
|
|
|
+ )
|
|
|
+ })}
|
|
|
+ </RadioGroup>
|
|
|
+ </ColField>
|
|
|
+ </ColFieldGroup>
|
|
|
+
|
|
|
+ <Sticky offsetBottom={0} position="bottom">
|
|
|
+ <div class={'btnGroup'}>
|
|
|
+ <Button block round type="primary" native-type="submit">
|
|
|
+ 提交
|
|
|
+ </Button>
|
|
|
+ </div>
|
|
|
+ </Sticky>
|
|
|
+
|
|
|
+ <ColPopup v-model={this.subjectStatus} destroy>
|
|
|
+ <ColHeader />
|
|
|
+ <SubjectModel
|
|
|
+ max={5}
|
|
|
+ single
|
|
|
+ subjectList={this.subjectList}
|
|
|
+ choiceSubjectIds={this.choiceSubjectId}
|
|
|
+ onChoice={this.onChoice}
|
|
|
+ />
|
|
|
+ </ColPopup>
|
|
|
+
|
|
|
+ <ColPopup v-model={this.timerStatus} destroy>
|
|
|
+ <Timer
|
|
|
+ onChoice={this.onChoiceTimer}
|
|
|
+ timerObject={this.timerObject}
|
|
|
+ courseMinutes={Number(this.timeSetting.courseMinutes)}
|
|
|
+ freeMinutes={Number(this.timeSetting.freeMinutes)}
|
|
|
+ startSetting={this.timeSetting.startSetting}
|
|
|
+ endSetting={this.timeSetting.endSetting}
|
|
|
+ />
|
|
|
+ </ColPopup>
|
|
|
+
|
|
|
+ <ActionSheet
|
|
|
+ v-model:show={this.classTimeStatus}
|
|
|
+ actions={this.minutes}
|
|
|
+ cancelText="取消"
|
|
|
+ closeOnClickAction
|
|
|
+ onSelect={this.onSelect}
|
|
|
+ />
|
|
|
+ </Form>
|
|
|
+ )
|
|
|
+ }
|
|
|
+})
|