import {getDays, addDeliver} from '@apis'; import {useMutation, useQuery} from '@tanstack/react-query'; import dayjs from 'dayjs'; import {useEffect, useState, useMemo} from 'react'; import {showLoading, hideLoading, showToast, showModal} from '@tarojs/taro'; import {useNavigate} from '@hooks'; export function useDate(customerNo) { const [date, setDate] = useState(''); const {data} = useQuery({ queryKey: [getDays.name, customerNo], async queryFn() { showLoading({title: '获取发货时长', mask: true}); const data = await getDays(customerNo); hideLoading({noConflict: true}); if (data.code === '200') return Number(data.data.days); return 0; }, enabled: customerNo.length > 0, initialData: 0, }); useEffect( function () { setDate(dayjs().add(data, 'day').format('YYYY-MM-DD')); }, [data], ); function onDateChagne(e) { setDate(e.detail.value); } return [date, onDateChagne]; } export function useSubmit({goodsList, customerNo, truckNo, date}) { const dataList = useMemo( function () { return goodsList.map(function ({no, num}) { return {partNumber: no, qty: num}; }); }, [goodsList], ); const {pop} = useNavigate(); const {isLoading, mutate} = useMutation({ mutationFn: addDeliver, onSuccess({code}) { if (code === '200') { pop(); showToast({title: '上传成功', icon: 'success'}); } }, }); function onSubmit() { if (!customerNo || !truckNo) { return showToast({title: '请先扫码', icon: 'error'}); } showModal({ title: '提交发货', content: `你确定要提交${truckNo}${customerNo}发货单吗?`, success({confirm}) { confirm && mutate({dataList, customer: customerNo, truckNo, arrivalTime: date}); }, }); } return [isLoading, onSubmit]; }