|
@@ -1,8 +1,174 @@
|
|
-import { defineComponent } from 'vue';
|
|
|
|
|
|
+import MHeader from '@/components/m-header';
|
|
|
|
+import { Cell, CellGroup, Col, Icon, Row, Tag, Image } from 'vant';
|
|
|
|
+import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
|
+import styles from './detail.module.less';
|
|
|
|
+import { toChinesNum } from '@/helpers/utils';
|
|
|
|
+import SOLO from './images/SOLO.png';
|
|
|
|
+import MImagePreview from '@/components/m-image-preview';
|
|
|
|
+import SkeletionIndexModal from './skeletion-index-modal';
|
|
|
|
+import SkeletionDetailModal from './skeletion-detail-modal';
|
|
|
|
+import request from '@/helpers/request';
|
|
|
|
+import { useRoute } from 'vue-router';
|
|
|
|
+import { activeStatus, activityStatus } from '@/helpers/constant';
|
|
|
|
+import dayjs from 'dayjs';
|
|
|
|
+import { formatterTimer } from './operation';
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'detail-page',
|
|
name: 'detail-page',
|
|
setup() {
|
|
setup() {
|
|
- return () => <>详情</>;
|
|
|
|
|
|
+ const route = useRoute();
|
|
|
|
+ // console.log(toChinesNum(11));
|
|
|
|
+ const forms = reactive({
|
|
|
|
+ id: route.query.id,
|
|
|
|
+ imageShow: false,
|
|
|
|
+ imagePreview: [] as any,
|
|
|
|
+ startPosition: 0,
|
|
|
|
+ headerLoading: true,
|
|
|
|
+ detailLoading: true,
|
|
|
|
+ detail: [] as any[],
|
|
|
|
+ headerDetail: {} as any
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ const getDetail = async () => {
|
|
|
|
+ try {
|
|
|
|
+ const { data } = await request.get(
|
|
|
|
+ '/api-web/schoolActivity/detail/' + forms.id
|
|
|
|
+ );
|
|
|
|
+ const { detail, ...res } = data || {};
|
|
|
|
+ forms.detail = detail;
|
|
|
|
+ forms.headerDetail = { ...res };
|
|
|
|
+ } catch {
|
|
|
|
+ //
|
|
|
|
+ } finally {
|
|
|
|
+ forms.headerLoading = false;
|
|
|
|
+ forms.detailLoading = false;
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ onMounted(() => {
|
|
|
|
+ // setTimeout(() => {
|
|
|
|
+ // // forms.headerLoading = false;
|
|
|
|
+ // // forms.detailLoading = false;
|
|
|
|
+ // }, 1000);
|
|
|
|
+ getDetail();
|
|
|
|
+ });
|
|
|
|
+ return () => (
|
|
|
|
+ <div class={styles.detail}>
|
|
|
|
+ <MHeader />
|
|
|
|
+
|
|
|
|
+ <SkeletionIndexModal
|
|
|
|
+ v-model:show={forms.headerLoading}
|
|
|
|
+ showCount={[1]}
|
|
|
|
+ isLink={false}>
|
|
|
|
+ <CellGroup inset class={styles.cellGroup}>
|
|
|
|
+ <Cell center isLink class={styles.cellTitle} clickable={false}>
|
|
|
|
+ {{
|
|
|
|
+ icon: () => (
|
|
|
|
+ <Tag plain type="primary" class={styles.tag}>
|
|
|
|
+ {activityStatus[forms.headerDetail.type]}
|
|
|
|
+ </Tag>
|
|
|
|
+ ),
|
|
|
|
+ title: () => (
|
|
|
|
+ <div class={[styles.title, 'van-ellipsis']}>
|
|
|
|
+ {forms.headerDetail.name}
|
|
|
|
+ </div>
|
|
|
|
+ )
|
|
|
|
+ }}
|
|
|
|
+ </Cell>
|
|
|
|
+ <Cell
|
|
|
|
+ class={styles.cellTimer}
|
|
|
|
+ center
|
|
|
|
+ title={`活动日期:${dayjs(forms.headerDetail.startTime).format(
|
|
|
|
+ 'YYYY年MM月DD日'
|
|
|
|
+ )}`}
|
|
|
|
+ value={activeStatus[forms.headerDetail.status]}
|
|
|
|
+ valueClass={
|
|
|
|
+ forms.headerDetail.status === 'PROCESSING' ? styles.ing : ''
|
|
|
|
+ }></Cell>
|
|
|
|
+ </CellGroup>
|
|
|
|
+ </SkeletionIndexModal>
|
|
|
|
+
|
|
|
|
+ <SkeletionDetailModal
|
|
|
|
+ v-model:show={forms.detailLoading}
|
|
|
|
+ showCount={[1, 2]}>
|
|
|
|
+ {forms.detail.map((item: any, index: number) => (
|
|
|
|
+ <>
|
|
|
|
+ <div class={styles.pTitle}>节目{toChinesNum(index + 1)}</div>
|
|
|
|
+
|
|
|
|
+ <CellGroup inset class={styles.pCellGroup}>
|
|
|
|
+ <Cell center>
|
|
|
|
+ {{
|
|
|
|
+ icon: () => <img src={SOLO} class={styles.imgType} />,
|
|
|
|
+ title: () => (
|
|
|
|
+ <div class={[styles.title, 'van-ellipsis']}>
|
|
|
|
+ {item.name}
|
|
|
|
+ </div>
|
|
|
|
+ ),
|
|
|
|
+ value: () => {
|
|
|
|
+ const timer = formatterTimer(item.time);
|
|
|
|
+ return (
|
|
|
|
+ <span class={styles.time}>
|
|
|
|
+ {timer.minute}分{timer.secord}秒
|
|
|
|
+ </span>
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ }}
|
|
|
|
+ </Cell>
|
|
|
|
+ <Cell
|
|
|
|
+ center
|
|
|
|
+ class={styles.moreCell}
|
|
|
|
+ valueClass={styles.valueClass}>
|
|
|
|
+ <Row class={styles.item}>
|
|
|
|
+ <Col span={5} class={styles.label}>
|
|
|
|
+ 表演乐团
|
|
|
|
+ </Col>
|
|
|
|
+ <Col span={19} class={styles.content}>
|
|
|
|
+ {item.musicGroupName}
|
|
|
|
+ <span>
|
|
|
|
+ 共{item.studentNum}名 <Icon name="arrow" />
|
|
|
|
+ </span>
|
|
|
|
+ </Col>
|
|
|
|
+ </Row>
|
|
|
|
+ <Row class={styles.item}>
|
|
|
|
+ <Col span={5} class={styles.label}>
|
|
|
|
+ 表演团队
|
|
|
|
+ </Col>
|
|
|
|
+ <Col span={19} class={styles.content}>
|
|
|
|
+ {item.subjectNameList}
|
|
|
|
+ </Col>
|
|
|
|
+ </Row>
|
|
|
|
+ {item.attachmentUrl ? (
|
|
|
|
+ <div class={styles.photoList}>
|
|
|
|
+ {[1, 2, 3, 4, 5].map((i: any, index: number) => (
|
|
|
|
+ <div class={styles.photo}>
|
|
|
|
+ <Image
|
|
|
|
+ src={
|
|
|
|
+ 'https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/4854b7cb932d461fbaa4cc329666dbd6_mergeImage.png'
|
|
|
|
+ }
|
|
|
|
+ />
|
|
|
|
+ {[1, 2, 3, 4, 5].length > 4 && index === 3 ? (
|
|
|
|
+ <div class={styles.photoMore}>+8</div>
|
|
|
|
+ ) : (
|
|
|
|
+ ''
|
|
|
|
+ )}
|
|
|
|
+ </div>
|
|
|
|
+ ))}
|
|
|
|
+ </div>
|
|
|
|
+ ) : (
|
|
|
|
+ ''
|
|
|
|
+ )}
|
|
|
|
+ </Cell>
|
|
|
|
+ </CellGroup>
|
|
|
|
+ </>
|
|
|
|
+ ))}
|
|
|
|
+ </SkeletionDetailModal>
|
|
|
|
+
|
|
|
|
+ <MImagePreview
|
|
|
|
+ v-model:show={forms.imageShow}
|
|
|
|
+ images={forms.imagePreview}
|
|
|
|
+ startPosition={forms.startPosition}
|
|
|
|
+ />
|
|
|
|
+ </div>
|
|
|
|
+ );
|
|
}
|
|
}
|
|
});
|
|
});
|