123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- import ODialog from '@/components/o-dialog'
- import OEmpty from '@/components/o-empty'
- import OHeader from '@/components/o-header'
- import OSticky from '@/components/o-sticky'
- import { trainCourseEmnu } from '@/constant'
- import request from '@/helpers/request'
- import { state } from '@/state'
- import dayjs from 'dayjs'
- import { Button, Cell, CellGroup, showDialog, showToast, Tag } from 'vant'
- import { defineComponent, onMounted, reactive } from 'vue'
- import { useRouter } from 'vue-router'
- import { forms, weekFormat } from '../../create'
- import styles from './index.module.less'
- export default defineComponent({
- name: 'train-content',
- setup() {
- // SINGLE_DELIVERY("单交付团"),
- // MULTIPLE_DELIVERY("多交付常规团"),
- // MULTIPLE_DELIVERY_SCHOOL("多交付合并团"),
- // SINGLE("单技"),
- // MUSIC_THEORY("乐理"),
- // INSTRUMENTAL_ENSEMBLE("合奏");
- /**
- * 1、单交付团,所在课程时间为120分钟
- * 2、多交付团,乐理45分钟,其它60分钟
- * 3、多交付合并团,单技60分钟,合奏60分钟
- * */
- const router = useRouter()
- const base = reactive({
- dialogStatus: false,
- dialogMessage: '',
- contentList: [] as any,
- SINGLE_DELIVERY: {
- SINGLE: 120,
- MUSIC_THEORY: 120
- },
- MULTIPLE_DELIVERY: {
- SINGLE: 45,
- MUSIC_THEORY: 60,
- INSTRUMENTAL_ENSEMBLE: 60
- },
- MULTIPLE_DELIVERY_SCHOOL: {
- SINGLE: 60,
- MUSIC_THEORY: 60,
- INSTRUMENTAL_ENSEMBLE: 60
- },
- disabled: false // 判断是否有班级
- })
- const getClasses = async () => {
- try {
- const { data } = await request.get(
- '/api-school/orchestra/trainingContent/' + state.user.data.school.id
- )
- base.contentList = data || []
- } catch {
- //
- }
- }
- const onSubmit = async () => {
- try {
- if (base.contentList.length <= 0) {
- base.dialogStatus = true
- base.dialogMessage = '暂无可排课班级'
- return
- }
- const list = base.contentList
- const trainingPlanClassList: any = []
- console.log(forms, 'forms')
- list.forEach((item: any) => {
- trainingPlanClassList.push({
- orchestraId: item.orchestraId,
- classGroupIdList: item.classGroupIdList,
- courseNum: forms.times,
- startTime: dayjs(forms.trainStartTime).format('HH:mm:ss'),
- endTime: dayjs(forms.trainStartTime).add(120, 'minute').format('HH:mm:ss'),
- singleCourseTime: base[item.deliveryType][item.classType]
- })
- })
- const params = {
- week: forms.week,
- schoolId: state.user.data.school.id,
- skipHoliday: forms.skipHoliday ? true : false,
- type: 'STANDARD',
- startDate: dayjs(forms.trainStartDate).format('YYYY-MM-DD'),
- trainingPlanClassList
- }
- const res = await request.post('/api-school/orchestra/trainingPlanList', {
- data: {
- ...params
- }
- })
- // 判断数据是否已经过期
- if (res.code === 999) {
- base.dialogStatus = true
- base.dialogMessage = res.message
- return
- }
- // 初始化 课程预览时选中的乐团编号 课程预览时选中的课程组编号
- forms.selectOrchestraId = null
- forms.selectClassGroupId = null
- console.log(res.data, 'date')
- router.push({
- path: '/course-preview',
- query: {
- cacheId: res.data
- }
- })
- } catch {
- //
- }
- }
- onMounted(() => {
- getClasses()
- })
- return () => (
- <div class={base.contentList.length <= 0 && 'emptyRootContainer'}>
- <OHeader />
- {/* 训练内容 */}
- {base.contentList.map((item: any) => (
- <CellGroup inset class={styles.cellGroup}>
- <Cell center>
- {{
- title: () => (
- <div class={styles.classType}>
- {trainCourseEmnu[item.classType]}
- <Tag round type="primary" size="medium" class={styles.classNum}>
- {forms.times}课时
- </Tag>
- </div>
- ),
- value: () => (
- <span class={styles.classTime}>
- 每{weekFormat(forms.week)} {dayjs(forms.trainStartTime || '').format('HH:mm')}-
- {dayjs(forms.trainStartTime || '')
- .add(base[item.deliveryType][item.classType], 'minute')
- .format('HH:mm')}
- </span>
- )
- }}
- </Cell>
- <Cell center>
- {{
- title: () => (
- <div class={styles.orchestra}>
- <p class={styles.name}>{item.orchestraName}</p>
- <p class={styles.class}>
- 共<span>{item.classGroupIdList && item.classGroupIdList.length}</span>个班级
- </p>
- </div>
- )
- }}
- </Cell>
- </CellGroup>
- ))}
- {base.contentList && base.contentList.length <= 0 && (
- <OEmpty btnStatus={false} tips="暂无训练内容" />
- )}
- <OSticky position="bottom">
- <div class={'btnGroup'}>
- <Button round type="primary" block onClick={onSubmit}>
- 下一步
- </Button>
- </div>
- </OSticky>
- <ODialog
- title="提示"
- v-model:show={base.dialogStatus}
- message={base.dialogMessage}
- confirmButtonText="确定"
- onConfirm={() => {
- router.back()
- }}
- />
- </div>
- )
- }
- })
|