import { PropType, computed, defineComponent, onMounted, reactive, watch } from 'vue'; import { IApiUserPaymentOrderPage, api_userPaymentOrderPage, api_userPaymentOrderStudentRefundOrderPage, type_OrderStatus } from '../api'; import Item from './item'; import MFullRefresh from '@/components/m-full-refresh'; import { Button, DatePicker, List, Popup, showToast } from 'vant'; import MEmpty from '@/components/m-empty'; import ItemSkelete from './item-skelete'; import icon_arrow from '../image/icon_arrow.svg'; import styles from './list.module.less'; import { usePageVisibility } from '@vant/use'; import { listenerMessage } from '@/helpers/native-message'; export default defineComponent({ name: 'collection-record-list', props: { orderStatus: { type: String, default: '' }, refundIndex: { type: Number, default: 0 } }, emits: ['refund'], setup(props, { emit }) { const time = new Date(); const data = reactive({ page: 1, dateTime: [ time.getFullYear().toString(), (time.getMonth() + 1).toString().padStart(2, '0') ], minDate: new Date(time.getFullYear(), 0, 1), maxDate: new Date(time.getFullYear() + 10, 5, 1), list: [], skelete: true, refreshing: false, finished: false, loading: false, dataOpen: false }); const statusTypes: { [_: string]: string } = { WAIT_PAY: '待领取', PAYING: '待领取', PAID: '领取成功', CLOSED: '已关闭' }; const statusColors: { [_: string]: string } = { WAIT_PAY: 'rgba(64, 196, 203, 1)', PAYING: 'rgba(64, 196, 203, 1)', PAID: 'rgba(28, 172, 241, 1)', CLOSED: 'rgba(170, 170, 170, 1)', ING: 'rgba(153, 153, 153, 1)', REJECT: 'rgba(255, 90, 86, 1)', PASS: 'rgba(255, 162, 68, 1)' }; const refundTypes: { [_: string]: string } = { ING: '退回申请中', REJECT: '退回失败', PASS: '退回成功', CLOSED: '退回关闭' }; const getList = async () => { data.loading = true; let res = {} as any; if (props.orderStatus === 'REFUNDED') { res = await api_userPaymentOrderStudentRefundOrderPage({ page: data.page, rows: 10, refundMonth: data.dateTime.join('-') }); if (res?.code === 200 && Array.isArray(res?.data?.rows)) { data.list = res.data.rows.map((item: any) => { return { ...item, createTime: item.refundTime, statusName: refundTypes[item.refundAudit], statusColor: statusColors[item.status], isRefund: true // 是退款列表 }; }); data.finished = !res.data.next; data.page = data.page + 1; } } else { try { res = await api_userPaymentOrderPage({ page: data.page, rows: 10, orderStatus: props.orderStatus as any, payMonth: data.dateTime.join('-') }); } catch (error) {} if (res?.code === 200 && Array.isArray(res?.data?.rows)) { data.list = res.data.rows.map((item: any) => { return { ...item, createTime: item.payTime, statusName: statusTypes[item.status], statusColor: statusColors[item.status] }; }); data.finished = !res.data.next; data.page = data.page + 1; } } setTimeout(() => { data.refreshing = false; }, 500); data.loading = false; data.skelete = false; }; watch( () => props.refundIndex, () => handlStart() ); onMounted(() => { getList(); listenerMessage('webViewOnResume', () => handlStart()); }); const handlStart = () => { data.finished = false; data.page = 1; getList(); }; const timeName = computed(() => { return `${data.dateTime[0]}年${data.dateTime[1]}月`; }); return () => ( <> { data.refreshing = true; console.log('下拉'); handlStart(); }}> {data.skelete && new Array(5).fill(1).map(i => )} {data.list.length !== 0 && ( {data.list.map(item => { return ( handlStart()} onRefund={() => emit('refund')} /> ); })} )} {!data.skelete && data.list.length === 0 && ( )} { data.dataOpen = false; console.log(data.dateTime); handlStart(); }} /> ); } });