import OHeader from '@/components/o-header' import { Cell, CellGroup, Icon, Image, List, Picker, Popup, Step, Steps, Swipe, SwipeItem } from 'vant' import { defineComponent, onMounted, reactive, ref } from 'vue' import { useRoute, useRouter } from 'vue-router' import styles from './index.module.less' import iconEdit from './images/icon-edit.png' import iconStep from './images/icon-step.png' import iconStepCalendar from './images/icon-step-calendar.png' import request from '@/helpers/request' import { state as baseState } from '@/state' import OFullRefresh from '@/components/o-full-refresh' import OEmpty from '@/components/o-empty' import dayjs from 'dayjs' import OVideo from '@/components/o-video' import baseEvent from '@/base-event' export default defineComponent({ name: 'orchestra-story', setup() { const route = useRoute() const router = useRouter() const state = reactive({ orchestraStatus: false, orchestraList: [] as any, selectOrchestra: {} as any, isClick: false, list: [] as any, listState: { dataShow: true, // 判断是否有数据 loading: false, finished: false, refreshing: false, height: 0 // 页面头部高度,为了处理下拉刷新用的 }, params: { type: null, page: 1, rows: 20 } }) // 获取乐团列表 const getOrchestras = async () => { try { const { data } = await request.post('/api-school/orchestra/page', { data: { page: 1, rows: 100, schoolId: baseState.user.data.school.id, status: 'DONE' } }) const temps = data.rows || [] const s = [] as any temps.forEach((item: any) => { s.push({ text: item.name, value: item.id }) }) state.orchestraList = [...s] // 判断是否有乐团 if (s.length > 0) { const orchestraId = sessionStorage.getItem('orchestraStoryId') if (orchestraId) { const item = s.find((child: any) => child.value === orchestraId) state.selectOrchestra = item || s[0] } else { state.selectOrchestra = s[0] } getList() } } catch { // } } const getList = async () => { try { if (state.isClick) return state.isClick = true const res = await request.post('/api-school/orchestraStory/page', { data: { orchestraId: state.selectOrchestra.value } }) state.listState.loading = false state.listState.refreshing = false const result = res.data || {} // 处理重复请求数据 if (state.list.length > 0 && result.current === 1) { return } state.list = state.list.concat(result.rows || []) state.listState.finished = result.current >= result.pages state.params.page = result.current + 1 state.listState.dataShow = state.list.length > 0 state.isClick = false } catch { state.listState.dataShow = false state.listState.finished = true state.listState.refreshing = false state.isClick = false } } const onRefresh = () => { state.params.page = 1 state.list = [] state.listState.dataShow = true // 判断是否有数据 state.listState.loading = false state.listState.finished = false getList() } const onEdit = async (item: any) => { router.push({ path: '/story-operation', query: { id: item.id, orchestraId: state.selectOrchestra.value } }) } const videoRef: any = ref([]) const onPlay = (index: any) => { videoRef.value.forEach((item: any, child: any) => { if (child !== index) { item.onStop() } }) } onMounted(async () => { getOrchestras() }) return () => (
{{ right: () => ( { router.push('/story-operation') }} > 添加 ) }} {state.orchestraList.length > 0 && (
(state.orchestraStatus = true)} >
)} {state.listState.dataShow ? ( // {state.list.map((item: any, index: number) => ( , 'active-icon': () => }} >
{dayjs(item.createTime).format('YYYY年MM月DD日')}
onEdit(item)}> 编辑

{item.content}

{item.attachments && item.attachments.map((child: any) => ( {item.type === 'IMAGE' && (
)} {item.type === 'VIDEO' && ( (videoRef.value[index] = el)} src={child.url} height={'100%'} poster={child.coverImage} class={styles.swipeImg} onPlay={() => onPlay(index)} /> )}
))}
))}
) : ( )} (state.orchestraStatus = false)} onConfirm={(val: any) => { state.selectOrchestra = val.selectedOptions[0] state.orchestraStatus = false sessionStorage.setItem('orchestraStoryId', state.selectOrchestra.value) onRefresh() }} />
) } })