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: { 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 = { 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 (
{this.form.subjectPrice && this.form.subjectPrice.length > 0 && ( { this.subjectStatus = true }} > {this.form.subjectPrice.map((item: any) => ( { 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} */} ))} )} {!this.form.subjectPrice.length && ( { this.subjectStatus = true }} rules={[{ required: true, message: '请选择可教授乐器' }]} placeholder="请选择可教授乐器" /> )} { this.classTimeStatus = true }} rules={[{ required: true, message: '请选择单课时时长' }]} placeholder="请选择单课时时长" v-slots={{ button: () => 分钟 }} /> {this.form.subjectPrice && this.form.subjectPrice.length > 0 && ( {this.form.subjectPrice.map((item: any) => ( }} /> ))} )} (this.form.skipHolidayFlag = val)} > {['1', '0'].map((item: string) => { const isActive = Number(item) === Number(this.form.skipHolidayFlag) const type = isActive ? 'primary' : 'default' return ( {this.chargeTypeArr[item]} ) })}
) } })