|
@@ -0,0 +1,253 @@
|
|
|
+import MHeader from '@/components/m-header';
|
|
|
+import MSticky from '@/components/m-sticky';
|
|
|
+import { Cell, CellGroup, DropdownItem, DropdownMenu, Icon, Image } from 'vant';
|
|
|
+import { defineComponent, onMounted, reactive, ref } from 'vue';
|
|
|
+import styles from './index.module.less';
|
|
|
+import DropDownModal from './drop-down-modal';
|
|
|
+import iconSetting from '@/common/images/icon-setting.png';
|
|
|
+import iconMusic from '@/common/images/icon-music.png';
|
|
|
+import iconTeacher from '@/common/images/icon-teacher-default.png';
|
|
|
+// import iconEmpty from './images/icon-empty.png';
|
|
|
+import MImagePreview from '@/components/m-image-preview';
|
|
|
+import SkeletonModal from './skeleton-modal';
|
|
|
+import MEmpty from '@/components/m-empty';
|
|
|
+import MFullRefresh from '@/components/m-full-refresh';
|
|
|
+
|
|
|
+export default defineComponent({
|
|
|
+ name: 'site-management',
|
|
|
+ setup() {
|
|
|
+ const dropDownItemRef = ref();
|
|
|
+ const dropDownItemRef1 = ref();
|
|
|
+ const forms = reactive({
|
|
|
+ loading: true,
|
|
|
+ refreshing: false,
|
|
|
+ titleTimeValue: '',
|
|
|
+ titleOrchestraValue: '',
|
|
|
+ timeColumns: [
|
|
|
+ { text: '全部时间', value: '' },
|
|
|
+ { text: '杭州', value: 'Hangzhou' },
|
|
|
+ { text: '宁波', value: 'Ningbo' },
|
|
|
+ { text: '温州', value: 'Wenzhou' },
|
|
|
+ { text: '绍兴', value: 'Shaoxing' },
|
|
|
+ { text: '湖州', value: 'Huzhou' }
|
|
|
+ ],
|
|
|
+ imageShow: false,
|
|
|
+ startPosition: 0,
|
|
|
+ imagePreview: [
|
|
|
+ 'https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7108568f10844c1b25db8cebf971caa_mergeImage.png',
|
|
|
+ 'https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7d77ad6169c4b688cea7183dfabbae2_mergeImage.png',
|
|
|
+ 'https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/5714fa27180d4115b5bcae6cc2a9ea4f_mergeImage.png'
|
|
|
+ ] as string[]
|
|
|
+ });
|
|
|
+
|
|
|
+ const onDropDownClose = (item: any) => {
|
|
|
+ item.value && item.value.toggle();
|
|
|
+ };
|
|
|
+
|
|
|
+ const formatName = (type: string) => {
|
|
|
+ if (type === 'time') {
|
|
|
+ let name = '';
|
|
|
+ forms.timeColumns.forEach((item: any) => {
|
|
|
+ if (forms.titleTimeValue === item.value) {
|
|
|
+ name = item.text;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return name;
|
|
|
+ } else if (type === 'orchestra') {
|
|
|
+ let name = '';
|
|
|
+ forms.timeColumns.forEach((item: any) => {
|
|
|
+ if (forms.titleOrchestraValue === item.value) {
|
|
|
+ name = item.text;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ return name;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ onMounted(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ forms.loading = false;
|
|
|
+ }, 2000);
|
|
|
+ });
|
|
|
+ return () => (
|
|
|
+ <div class={styles.siteManagement}>
|
|
|
+ <MSticky position="top">
|
|
|
+ <MHeader>
|
|
|
+ {{
|
|
|
+ right: () => (
|
|
|
+ <Icon class={styles.iconSetting} name={iconSetting} dot />
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </MHeader>
|
|
|
+
|
|
|
+ <DropdownMenu>
|
|
|
+ <DropdownItem ref={dropDownItemRef} title={formatName('time')}>
|
|
|
+ <DropDownModal
|
|
|
+ selectValues={forms.titleTimeValue}
|
|
|
+ columns={forms.timeColumns}
|
|
|
+ open={dropDownItemRef.value.state.showPopup}
|
|
|
+ onDropDownClose={() => onDropDownClose(dropDownItemRef)}
|
|
|
+ onDropDownConfirm={(values: any) => {
|
|
|
+ forms.titleTimeValue = values[0];
|
|
|
+ console.log(values, 'time');
|
|
|
+ onDropDownClose(dropDownItemRef);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </DropdownItem>
|
|
|
+ <DropdownItem
|
|
|
+ ref={dropDownItemRef1}
|
|
|
+ title={formatName('orchestra')}>
|
|
|
+ <DropDownModal
|
|
|
+ selectValues={forms.titleOrchestraValue}
|
|
|
+ columns={forms.timeColumns}
|
|
|
+ open={dropDownItemRef1.value.state.showPopup}
|
|
|
+ onDropDownClose={() => onDropDownClose(dropDownItemRef1)}
|
|
|
+ onDropDownConfirm={(values: any) => {
|
|
|
+ forms.titleOrchestraValue = values[0];
|
|
|
+ console.log(values, 'orchestra');
|
|
|
+ onDropDownClose(dropDownItemRef1);
|
|
|
+ }}
|
|
|
+ />
|
|
|
+ </DropdownItem>
|
|
|
+ </DropdownMenu>
|
|
|
+ </MSticky>
|
|
|
+
|
|
|
+ <MFullRefresh
|
|
|
+ v-model:modelValue={forms.refreshing}
|
|
|
+ onRefresh={() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ forms.refreshing = false;
|
|
|
+ }, 1000);
|
|
|
+ }}
|
|
|
+ style={{
|
|
|
+ minHeight: `calc(100vh - var(--header-height))`
|
|
|
+ }}>
|
|
|
+ <SkeletonModal v-model:show={forms.loading}>
|
|
|
+ {/* <MEmpty
|
|
|
+ style={{
|
|
|
+ minHeight: `calc(100vh - var(--header-height))`
|
|
|
+ }}
|
|
|
+ description="暂无数据"
|
|
|
+ /> */}
|
|
|
+ <div class={styles.siteItem}>
|
|
|
+ <CellGroup class={styles.cellGroup} border={false}>
|
|
|
+ <Cell border={false} center>
|
|
|
+ {{
|
|
|
+ title: () => (
|
|
|
+ <div class={styles.orchestraName}>
|
|
|
+ <img src={iconMusic} class={styles.iconMusic} />
|
|
|
+ <p class={styles.overhide}>
|
|
|
+ 武汉小学乐团武汉小学乐团武汉小学乐团武汉小学乐团
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ ),
|
|
|
+ default: () => (
|
|
|
+ <p class={[styles.address, styles.overhide]}>
|
|
|
+ 1年级1班1年级1班1年级1班
|
|
|
+ </p>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </Cell>
|
|
|
+ <Cell center class={styles.username}>
|
|
|
+ {{
|
|
|
+ icon: () => (
|
|
|
+ <Image
|
|
|
+ src={iconTeacher}
|
|
|
+ class={styles.iconTeacher}
|
|
|
+ fit="contain"
|
|
|
+ />
|
|
|
+ ),
|
|
|
+ title: () => (
|
|
|
+ <div>
|
|
|
+ <div class={styles.classname}>声部课·上低音号</div>
|
|
|
+ <div class={styles.name}>王丹丹</div>
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </Cell>
|
|
|
+ </CellGroup>
|
|
|
+ <CellGroup class={styles.cellGroup}>
|
|
|
+ <div class={[styles.photoGroup]}>
|
|
|
+ <div class={styles.photoUp}>
|
|
|
+ <h3>
|
|
|
+ <span class={styles.photoTitle}>课前照片</span>
|
|
|
+ </h3>
|
|
|
+ <div class={styles.photoList}>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 0;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7108568f10844c1b25db8cebf971caa_mergeImage.png" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 1;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7d77ad6169c4b688cea7183dfabbae2_mergeImage.png" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 2;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/5714fa27180d4115b5bcae6cc2a9ea4f_mergeImage.png" />
|
|
|
+ <div class={styles.photoMore}>+8</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ {/* <div class={styles.photoEmpty}>
|
|
|
+ <img src={iconEmpty} class={styles.iconEmpty} />
|
|
|
+ <p>老师未上传照片~</p>
|
|
|
+ </div> */}
|
|
|
+ </div>
|
|
|
+ <div class={styles.photoDown}>
|
|
|
+ <h3>
|
|
|
+ <span class={styles.photoTitle}>课后照片</span>
|
|
|
+ </h3>
|
|
|
+ <div class={styles.photoList}>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 0;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7108568f10844c1b25db8cebf971caa_mergeImage.png" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 1;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/d7d77ad6169c4b688cea7183dfabbae2_mergeImage.png" />
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class={styles.photo}
|
|
|
+ onClick={() => {
|
|
|
+ forms.imageShow = true;
|
|
|
+ forms.startPosition = 2;
|
|
|
+ }}>
|
|
|
+ <Image src="https://lanhu-dds-backend.oss-cn-beijing.aliyuncs.com/merge_image/imgs/5714fa27180d4115b5bcae6cc2a9ea4f_mergeImage.png" />
|
|
|
+ <div class={styles.photoMore}>+8</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </CellGroup>
|
|
|
+ </div>
|
|
|
+ </SkeletonModal>
|
|
|
+ </MFullRefresh>
|
|
|
+
|
|
|
+ <MImagePreview
|
|
|
+ v-model:show={forms.imageShow}
|
|
|
+ images={forms.imagePreview}
|
|
|
+ startPosition={forms.startPosition}
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ );
|
|
|
+ }
|
|
|
+});
|