|
@@ -1,5 +1,6 @@
|
|
|
import OSticky from '@/components/o-sticky'
|
|
|
import {
|
|
|
+ ActionSheet,
|
|
|
Button,
|
|
|
closeToast,
|
|
|
DatePicker,
|
|
@@ -52,8 +53,8 @@ export default defineComponent({
|
|
|
actionText: '上学期',
|
|
|
actionType: 'up',
|
|
|
actionTerm: [
|
|
|
- { text: '上学期', color: 'var(--van-primary-color)', value: 'up' },
|
|
|
- { text: '下学期', value: 'down' }
|
|
|
+ { name: '上学期', color: 'var(--van-primary-color)', value: 'up' },
|
|
|
+ { name: '下学期', value: 'down' }
|
|
|
],
|
|
|
oPopover: false,
|
|
|
check: [],
|
|
@@ -81,11 +82,12 @@ export default defineComponent({
|
|
|
|
|
|
// 选择学期
|
|
|
const onSelect = (val: any) => {
|
|
|
+ console.log(val, '1')
|
|
|
state.actionTerm.forEach((item: any) => {
|
|
|
item.color = null
|
|
|
})
|
|
|
val.color = 'var(--van-primary-color)'
|
|
|
- state.actionText = val.text
|
|
|
+ state.actionText = val.name
|
|
|
state.actionType = val.value
|
|
|
|
|
|
if (val.value === 'up') {
|
|
@@ -105,6 +107,7 @@ export default defineComponent({
|
|
|
.subtract(1, 'day')
|
|
|
.format('YYYY-MM-DD HH:mm:ss')
|
|
|
}
|
|
|
+ state.oPopover = false
|
|
|
onSearch()
|
|
|
}
|
|
|
|
|
@@ -258,120 +261,120 @@ export default defineComponent({
|
|
|
|
|
|
return () => (
|
|
|
<>
|
|
|
- <div style={{ padding: '12px 13px 16px', background: '#F8F8F8' }}>
|
|
|
- <div class={styles.searchBand} onClick={() => (state.timeShow = true)}>
|
|
|
- {state.currentData[0]}年 <Icon name={state.timeShow ? 'arrow-up' : 'arrow-down'} />
|
|
|
+ <div class={'searchGroup'}>
|
|
|
+ <div
|
|
|
+ class={['searchItem', state.timeShow ? 'searchItem-active' : '']}
|
|
|
+ onClick={() => (state.timeShow = true)}
|
|
|
+ >
|
|
|
+ {state.currentData[0]}年 <i class={'arrow'}></i>
|
|
|
</div>
|
|
|
- <Popover
|
|
|
- v-model:show={state.oPopover}
|
|
|
- actions={state.actionTerm}
|
|
|
- showArrow={false}
|
|
|
- placement="bottom"
|
|
|
- offset={[0, 12]}
|
|
|
- style={{ zIndex: '9999' }}
|
|
|
- onSelect={onSelect}
|
|
|
+ <div
|
|
|
+ class={['searchItem', state.oPopover ? 'searchItem-active' : '']}
|
|
|
+ onClick={() => (state.oPopover = true)}
|
|
|
>
|
|
|
- {{
|
|
|
- reference: () => (
|
|
|
- <div class={styles.searchBand} style="margin-left: 16px">
|
|
|
- {state.actionText} <Icon name={state.oPopover ? 'arrow-up' : 'arrow-down'} />
|
|
|
- </div>
|
|
|
- )
|
|
|
- }}
|
|
|
- </Popover>
|
|
|
+ {state.actionText} <i class={'arrow'}></i>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
- <Grid border={false} class={styles.gridContainer}>
|
|
|
- <GridItem>
|
|
|
- <p class={[styles.title, styles.red]}>
|
|
|
- <span id="currentStudentNum">{state.statistics.studentNum || 0}</span>
|
|
|
- <i> 名</i>
|
|
|
- </p>
|
|
|
- <p class={styles.name}>在读学生</p>
|
|
|
- </GridItem>
|
|
|
- <GridItem>
|
|
|
- <p class={[styles.title, styles.red]}>
|
|
|
- <span id="time1">{state.statistics.attendanceRate || 0}</span>%
|
|
|
- </p>
|
|
|
- <p class={styles.name}>到课率</p>
|
|
|
- </GridItem>
|
|
|
- <GridItem>
|
|
|
- <p class={[styles.title, styles.red]}>
|
|
|
- <span id="time2">{state.statistics.homeworkRate || 0}</span>%
|
|
|
- </p>
|
|
|
- <p class={styles.name}>作业提交率</p>
|
|
|
- </GridItem>
|
|
|
- <GridItem>
|
|
|
- <p class={[styles.title, styles.red]}>
|
|
|
- <span id="time3">{state.statistics.homeworkQualifiedRate || 0}</span>%
|
|
|
- </p>
|
|
|
- <p class={styles.name}>练习合格率</p>
|
|
|
- </GridItem>
|
|
|
- </Grid>
|
|
|
+ <div style="height: calc(100vh - var(--header-height) - 1.17333rem); overflow: hidden; overflow-y: auto;">
|
|
|
+ <Grid border={false} class={styles.gridContainer}>
|
|
|
+ <GridItem>
|
|
|
+ <p class={[styles.title, styles.red]}>
|
|
|
+ <span id="currentStudentNum">{state.statistics.studentNum || 0}</span>
|
|
|
+ <i> 名</i>
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>在读学生</p>
|
|
|
+ </GridItem>
|
|
|
+ <GridItem>
|
|
|
+ <p class={[styles.title, styles.red]}>
|
|
|
+ <span id="time1">{state.statistics.attendanceRate || 0}</span>%
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>到课率</p>
|
|
|
+ </GridItem>
|
|
|
+ <GridItem>
|
|
|
+ <p class={[styles.title, styles.red]}>
|
|
|
+ <span id="time2">{state.statistics.homeworkRate || 0}</span>%
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>作业提交率</p>
|
|
|
+ </GridItem>
|
|
|
+ <GridItem>
|
|
|
+ <p class={[styles.title, styles.red]}>
|
|
|
+ <span id="time3">{state.statistics.homeworkQualifiedRate || 0}</span>%
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>练习合格率</p>
|
|
|
+ </GridItem>
|
|
|
+ </Grid>
|
|
|
|
|
|
- {state.listState.dataShow ? (
|
|
|
- <List
|
|
|
- // v-model:loading={state.listState.loading}
|
|
|
- finished={state.listState.finished}
|
|
|
- finishedText=" "
|
|
|
- class={[styles.liveList]}
|
|
|
- onLoad={getList}
|
|
|
- immediateCheck={false}
|
|
|
- >
|
|
|
- {state.list.map((item: any) => (
|
|
|
- <div class={[styles.gridContainer, styles.gridClass]}>
|
|
|
- <div class={styles.className}>
|
|
|
- <i class={styles.line}></i>
|
|
|
- {item.name}
|
|
|
+ {state.listState.dataShow ? (
|
|
|
+ <List
|
|
|
+ // v-model:loading={state.listState.loading}
|
|
|
+ finished={state.listState.finished}
|
|
|
+ finishedText=" "
|
|
|
+ class={[styles.liveList]}
|
|
|
+ onLoad={getList}
|
|
|
+ immediateCheck={false}
|
|
|
+ >
|
|
|
+ {state.list.map((item: any) => (
|
|
|
+ <div class={[styles.gridContainer, styles.gridClass]}>
|
|
|
+ <div class={styles.className}>
|
|
|
+ <i class={styles.line}></i>
|
|
|
+ {item.name}
|
|
|
+ </div>
|
|
|
+ <Grid border={false} columnNum={3}>
|
|
|
+ <GridItem>
|
|
|
+ <p class={styles.title}>{item.preStudentNum || 0}</p>
|
|
|
+ <p class={styles.name}>在读学生</p>
|
|
|
+ </GridItem>
|
|
|
+ <GridItem>
|
|
|
+ <p class={[styles.title, styles.teacher, 'van-ellipsis']}>
|
|
|
+ {item.teacherName || '-'}
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>伴学指导</p>
|
|
|
+ </GridItem>
|
|
|
+ <GridItem>
|
|
|
+ <p class={styles.title}>
|
|
|
+ {item.completeCourseScheduleNum || 0}/{item.courseScheduleNum || 0}
|
|
|
+ </p>
|
|
|
+ <p class={styles.name}>课时</p>
|
|
|
+ </GridItem>
|
|
|
+ </Grid>
|
|
|
</div>
|
|
|
- <Grid border={false} columnNum={3}>
|
|
|
- <GridItem>
|
|
|
- <p class={styles.title}>{item.preStudentNum || 0}</p>
|
|
|
- <p class={styles.name}>在读学生</p>
|
|
|
- </GridItem>
|
|
|
- <GridItem>
|
|
|
- <p class={[styles.title, styles.teacher, 'van-ellipsis']}>
|
|
|
- {item.teacherName || '-'}
|
|
|
- </p>
|
|
|
- <p class={styles.name}>伴学指导</p>
|
|
|
- </GridItem>
|
|
|
- <GridItem>
|
|
|
- <p class={styles.title}>
|
|
|
- {item.completeCourseScheduleNum || 0}/{item.courseScheduleNum || 0}
|
|
|
- </p>
|
|
|
- <p class={styles.name}>课时</p>
|
|
|
- </GridItem>
|
|
|
- </Grid>
|
|
|
+ ))}
|
|
|
+ </List>
|
|
|
+ ) : (
|
|
|
+ <OEmpty btnStatus={false} tips="暂无班级" />
|
|
|
+ )}
|
|
|
+ {/* */}
|
|
|
+ {state.orchestraInfo.canSignUp && (
|
|
|
+ <OSticky position="bottom">
|
|
|
+ <div class={'btnGroup'}>
|
|
|
+ <Button
|
|
|
+ round
|
|
|
+ block
|
|
|
+ type="primary"
|
|
|
+ onClick={() => {
|
|
|
+ router.push({
|
|
|
+ path: 'save-share-image',
|
|
|
+ query: {
|
|
|
+ type: 'orchestra',
|
|
|
+ id: route.query.id
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }}
|
|
|
+ >
|
|
|
+ 报名二维码
|
|
|
+ </Button>
|
|
|
</div>
|
|
|
- ))}
|
|
|
- </List>
|
|
|
- ) : (
|
|
|
- <OEmpty btnStatus={false} tips="暂无班级" />
|
|
|
- )}
|
|
|
+ </OSticky>
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
|
|
|
- {/* */}
|
|
|
- {state.orchestraInfo.canSignUp && (
|
|
|
- <OSticky position="bottom">
|
|
|
- <div class={'btnGroup'}>
|
|
|
- <Button
|
|
|
- round
|
|
|
- block
|
|
|
- type="primary"
|
|
|
- onClick={() => {
|
|
|
- router.push({
|
|
|
- path: 'save-share-image',
|
|
|
- query: {
|
|
|
- type: 'orchestra',
|
|
|
- id: route.query.id
|
|
|
- }
|
|
|
- })
|
|
|
- }}
|
|
|
- >
|
|
|
- 报名二维码
|
|
|
- </Button>
|
|
|
- </div>
|
|
|
- </OSticky>
|
|
|
- )}
|
|
|
+ <ActionSheet
|
|
|
+ v-model:show={state.oPopover}
|
|
|
+ actions={state.actionTerm}
|
|
|
+ cancelText="取消"
|
|
|
+ onSelect={onSelect}
|
|
|
+ />
|
|
|
|
|
|
<Popup v-model:show={state.timeShow} position="bottom" round class={'popupBottomSearch'}>
|
|
|
<DatePicker
|