/** * 订单列表业务逻辑 */ import { reactive, ref, watch, nextTick, onMounted } from "vue"; import { request } from "@/utils/network/request.js"; import { stringToJson } from "@/utils/network/encryption"; import { onLoad, onUnload, onReachBottom, onPullDownRefresh } from "@dcloudio/uni-app"; import { getItem, StorageKeys } from "@/utils/storage"; import { hasLogin, msg } from "@/utils/utils"; import { orderList } from "@/utils/network/api"; import { PageData } from "@/datas/enum"; export default function useOrderListItem(props) { //搜索关键字 const searchKeyWords = ref(''); //订单列表数据 const ordersList = ref([]); const config = { emptyHint: { hint: '~ 暂无订单数据 ~', icon: '', mode: 'order' }, contentTxt: { contentdown: '~上拉加载更多~', contentrefresh: '努力加载中...', contentnomore: '-- 我是有底线的 --' } } //请求参数 const params = reactive({ pageNum: PageData.NUM, pageSize: PageData.SIZE, total: 0, status: 'more', reload: false, }) //搜索 const doSearch = () => { if (!searchKeyWords.value) { msg('请输入需要搜索的车牌号!'); return; } refreshList(true); } //订单车牌号输入 const onKeyInput = (event) => { searchKeyWords.value = event.target.value; if (searchKeyWords.value == '') { refreshList(true); } } /* 刷新列表 */ const refreshList = (isLoading) => { params.pageNum = 1; params.total = 0; params.status = 'more'; params.reload = false; getList(); } /* 加载更多 */ const loadMore = () => { if (params.total > ordersList.value.length) { params.status = 'loading'; params.pageNum++; getList(); } else { params.status = 'noMore'; } } /* 获取列表数据 */ const getList = async (isLoading = true) => { if (!hasLogin()) { uni.stopPullDownRefresh(); uni.$emit('refreshFinish'); return; } let res: any = null; const options = { type: 2, data: { "opId": getItem(StorageKeys.OpenId), "source": "WECHAT", "vehiclePlate": searchKeyWords.value, "tabIndex": props.index + '', "pageNo": params.pageNum, "pageSize": params.pageSize }, method: 'POST', // showLoading: isLoading ? (params.pageNum === 1 ? true : false) : false , } try { res = await request(orderList, options); const data = stringToJson(res.bizContent); console.log("aaa", data) params.total = data.totalCount; if (params.pageNum === 1) { ordersList.value = []; } if (params.total > 0) { const curList = data.data || []; ordersList.value = params.reload ? curList : ordersList.value.concat(curList); params.reload = false; } if (params.total === ordersList.value.length) { params.reload = false; params.status = 'noMore'; } if (params.pageNum === 1) { uni.stopPullDownRefresh(); } uni.$emit('refreshFinish'); } catch (e) { uni.stopPullDownRefresh(); uni.$emit('refreshFinish'); } } watch(() => props.index, () => { refreshList(true); }); watch(() => props.refresh, (nv) => { if (nv) { refreshList(false); } }); onMounted(() => { if (props.refresh) { refreshList(false); } }) onPullDownRefresh(() => { refreshList(true); }); onReachBottom(() => { loadMore(); }); return { config, params, ordersList, doSearch, onKeyInput }; }