import ODialog from '@/components/o-dialog' import OEmpty from '@/components/o-empty' import OFullRefresh from '@/components/o-full-refresh' import OHeader from '@/components/o-header' import OPopup from '@/components/o-popup' import OSticky from '@/components/o-sticky' import request from '@/helpers/request' import { router } from '@/router/routes-common' import dayjs from 'dayjs' import { ActionSheet, Button, Cell, Icon, Image, List, showConfirmDialog } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import { useRoute, useRouter } from 'vue-router' import styles from './orchestra-information.module.less' export default defineComponent({ props: { type: { type: String, default: '' }, headHeight: { type: Number, default: 0 } }, emits: ['changeList'], name: 'orchestra-information-list', setup(props, { emit }) { const route = useRoute() const router = useRouter() const state = reactive({ addStatus: false, isLoading: false, dialogStatus: false, list: [] as any, listState: { dataShow: true, // 判断是否有数据 loading: false, finished: false, refreshing: false, height: 0 // 页面头部高度,为了处理下拉刷新用的 }, params: { type: 'HOT_CONSULTATION', clientType: 'SCHOOL', page: 1, rows: 20 }, oPopover: false, selectItem: {} as any, selectType: 'add' }) const getList = async () => { try { if (state.isLoading) return state.isLoading = true const res = await request.post('/api-school/sysNewsInformation/page', { data: { ...state.params, status: props.type === '1' ? true : false, orchestraPhotoAlbumId: route.query.photoId } }) state.listState.loading = false state.listState.refreshing = false const result = res.data || {} // 处理重复请求数据 if (state.list.length > 0 && result.current === 1) { return } const rows = result.rows || [] state.list = state.list.concat(rows) state.listState.finished = result.current >= result.pages state.params.page = result.current + 1 state.listState.dataShow = state.list.length > 0 state.isLoading = false } catch { state.listState.dataShow = false state.listState.finished = true state.listState.refreshing = false state.isLoading = false } emit('changeList') } const onSearch = () => { state.params.page = 1 state.list = [] state.listState.dataShow = true // 判断是否有数据 state.listState.loading = false state.listState.finished = false getList() } const onDetail = (item: any) => { try { if (item.linkUrl) { window.location.href = item.linkUrl } else { router.push({ path: '/information-detail', query: { id: item.id } }) } } catch { // } } const onUpdate = async () => { // state.selectType = 'update' // state.addStatus = true router.push({ name: 'add-information', query: { id: state.selectItem.id } }) } const onRemove = async () => { showConfirmDialog({ message: '您确认删除该资讯吗?' }).then(async () => { try { await request.post('/api-school/sysNewsInformation/remove', { requestType: 'form', data: { id: state.selectItem.id } }) onSearch() } catch { // } }) } onMounted(() => { getList() }) return () => (