import { View, Input, Button, ScrollView } from '@tarojs/components' import { useCallback, useEffect, useMemo, useRef, useState, } from 'react' import Search from '@/components/search' import { dataLoadingStatus, getFilterData } from '@/common/util' import styles from "./index.module.scss" import classnames from "classnames"; import Popup from '@/components/popup' import InfiniteScroll from '@/components/infiniteScroll' import Taro, { faceVerifyForPay, useDidShow } from '@tarojs/taro' import ItemList from './components/itemList' import { formatDateTime, formatHashTag, formatImgUrl, formatPriceDiv, formatWeightDiv } from '@/common/format' import { mpreturnApplyOrderlist, mpenumreturnStage, mpenumreturnType } from "@/api/refound" import Tabs from "./components/tabs" import TimePickerPopup from '@/components/timePickerPopup' import dayjs from 'dayjs' import IconFont from '@/components/iconfont/iconfont' export default () => { //页码和页数 const [searchField, setSearchField] = useState< { status: number | unknown; page: number; size: number; name: string; sale_mode: number | string; stage: number | string; return_type: number | string; sale_start_time: number | string; sale_end_time: number | string; }>({ status: 1, page: 1, size: 10, name: '', sale_mode: '不限', stage: '不限', return_type: '不限', sale_start_time: '', sale_end_time: '' }) const pageNum = useRef({ size: searchField.size, page: searchField.page }) //监听筛选条件变化 useEffect(() => { getOrderList() }, [searchField.size, searchField.name, searchField.status]) //获取订单列表 const { fetchData: listFetchData, state: orderState } = mpreturnApplyOrderlist() const [orderData, setOrderData] = useState<{ list: any[]; total: number }>({ list: [], total: 0 }) const getOrderList = async () => { let res = await listFetchData({ ...searchField // ...getFilterData(searchField), // ...getFilterData(searchObj) }) setOrderData((e) => ({ ...e, list: res.data?.list, total: res.data?.total })) // setshowPopup(false) setRefresherTriggeredStatus(false) } //输入了搜索关键字 const getSearchData = useCallback((e) => { pageNum.current.page = 1 setOrderData(() => ({ list: [], total: 0 })) setSearchField((val) => ({ ...val, name: e, size: 10 })) }, []) //列表下拉刷新 const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false) const getRefresherRefresh = async () => { pageNum.current.size = 1 setRefresherTriggeredStatus(true) setSearchField((val) => ({ ...val, size: 10 })) getOrderList() } //数据加载状态 const statusMore = useMemo(() => { return dataLoadingStatus({ list: orderData.list, total: orderData.total, status: orderState.loading }) }, [orderData, orderState]) //上拉加载数据 const getScrolltolower = useCallback(() => { if (orderData.list.length < orderData.total) { pageNum.current.page++ const size = pageNum.current.size * pageNum.current.page setSearchField({ ...searchField, size }) } }, [orderData]) //顶部栏 const [TarBarList, setTarBarList] = useState([{ id: 1, name: '售后申请', showBorder: true }, { id: 2, name: '申请记录', showBorder: false }]) const handChose = (item) => { if (item.id === searchField.status) return TarBarList.map(it => { if (it.id === item.id) { it.showBorder = true } else { it.showBorder = false } setTarBarList([...TarBarList]) pageNum.current.page = 1 setOrderData(() => ({ list: [], total: 0 })) setSearchField((val) => ({ ...val, size: 10, status: item.id })) // getOrderList() }) } //筛选内容展示 const [showPopup, setshowPopup] = useState(false) const showSelctPopup = () => { setshowPopup(true) } //关闭筛选内容展示 const closePopup = () => { setshowPopup(false) } //订单类型 const [modeList, setModeList] = useState([{ id: '', name: '不限' }, { id: 0, name: '大货' }, { id: 1, name: '剪版' }, { id: 2, name: '散剪' }]) //选择订单类型 const handCheckMode = (item) => { modeList.map(it => { if (it.id === item.id) { it.checked = true } else { it.checked = false } return it }) setModeList([...modeList]) setSearchField((e) => ({ ...e, sale_mode: item.id, })) } useEffect(() => { getStagelist() getTypeList() }, []) //售后状态 const [stageList, setStageList] = useState([]) const { fetchData: stageFetch } = mpenumreturnStage() const getStagelist = async () => { const res = await stageFetch() if (res.data) { res.data.list.unshift({ id: '', name: '不限', checked: false }) res.data.list.map(it => { it.checked = false return it }) setStageList([...res.data.list]) } } //选择售后状态 const handCheckStange = (item) => { stageList.map(it => { if (it.id === item.id) { it.checked = true } else { it.checked = false } return it }) setStageList([...stageList]) setSearchField((val) => ({ ...val, stage: item.id })) } //退款类型 const [typeList, setTypeList] = useState([]) const { fetchData: typeFetch } = mpenumreturnType() const getTypeList = async () => { const res = await typeFetch() if (res.data) { res.data.list.unshift({ id: '', name: '不限', checked: false }) res.data.list.map(it => { it.checked = false return it }) setTypeList([...res.data.list]) } } //选择售后类型 const handType = (item) => { typeList.map(it => { if (it.id === item.id) { it.checked = true } else { it.checked = false } return it }) setTypeList([...typeList]) setSearchField((val) => ({ ...val, return_type: item.id })) } //是否不允许确认筛选 const isDisabled = useMemo(() => { if (searchField.stage !== '不限' || searchField.sale_mode !== '不限' || searchField.return_type !== '不限' || searchField.sale_start_time !== '' || searchField.sale_end_time !== '' ) { return false } else { return true } }, [searchField]) //重置 const handReset = () => { const arrOne = resetArr(modeList) setModeList([...arrOne]) const arrTwo = resetArr(typeList) setTypeList([...arrTwo]) const arrThree = resetArr(stageList) setStageList([...arrThree]) setSearchField((e) => ({ ...e, sale_mode: '不限', stage: '不限', return_type: '不限', sale_start_time: '', sale_end_time: '', })) setStart(myDate.toLocaleDateString()) getOrderList() setEnd('') } //数组重置 const resetArr = (arr) => { arr.map(it => { it.checked = false return it }) return arr } //展示时间筛选 const [showTime, setShowTime] = useState(false) //关闭时间筛选 const handClose = () => { setShowTime(false) } let myDate = new Date(); const [start, setStart] = useState(myDate.toLocaleDateString()) const [end, setEnd] = useState('') //选择时间 const handTime = (eq) => { //直接进来点确定的时候做处理 if (Object.keys(eq).length === 0) { let obj = { start: '', end: '' } obj.start = `${dayjs(new Date(myDate?.toLocaleDateString() + ' ' + '00:00:00',)).format('YYYY-MM-DD')} 00:00:00`, obj.end = `${dayjs(new Date(obj?.start)).add(1, 'day').format('YYYY-MM-DD')} 00:00:00` eq.value = obj } setSearchField((val) => ({ ...val, sale_start_time: eq?.value?.start, sale_end_time: eq?.value?.end, size: 10 })) setStart(eq?.value?.start) setEnd(eq?.value?.end) setShowTime(false) } const timeArea = useMemo(() => { if (end !== '') { return start + ' ' + '-' + ' ' + end } else { return '自定义起始时间' } }, [end]) const handSure = () => { pageNum.current.page = 1 setSearchField((val) => ({ ...val, size: 10 })) setshowPopup?.(false) getOrderList() } useEffect(() => { setSearchField(searchField) }, [searchField]) return ( <> showSelctPopup()}> {/* */} 筛选 handChose?.(item)}> {orderData?.list?.map((item, index) => { return ( ) })} closePopup()}> 售后状态 { stageList.map((item, index) => { return ( { handCheckStange(item) }} className={classnames(item.checked ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} ) }) } 订单类型 { modeList.map((item, index) => { return ( { handCheckMode(item) }} className={classnames(item.checked ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} ) }) } 退款类型 { typeList.map((item, index) => { return ( { handType(item) }} className={classnames(item.checked ? styles.activemodeBox : styles.modeBox)} key={index}>{item.name} ) }) } 售后时间 { setShowTime(true) }}>{timeArea} { timeArea == '自定义起始时间' && } {/* */} handTime(e)} > ) }