🌈 style(eslint): add eslint rules
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
import SegmentedControl from '@/components/segmentedControl'
|
||||
import { FC, memo, useCallback, useEffect, useState } from 'react'
|
||||
import SegmentedControl from '@/components/segmentedControl'
|
||||
import { EnumSaleorderStatus } from '@/api/index'
|
||||
|
||||
type PropsType = {
|
||||
onChangeStatus?: (data: {id: number, name: string}) => void
|
||||
interface PropsType {
|
||||
onChangeStatus?: (data: { id: number; name: string }) => void
|
||||
}
|
||||
|
||||
const DeliveryStatusList = memo<PropsType>((props) => {
|
||||
const { onChangeStatus } = props
|
||||
const { onChangeStatus } = props
|
||||
const { fetchData } = EnumSaleorderStatus()
|
||||
const [statusList, setStatusList] = useState([
|
||||
{
|
||||
@@ -16,12 +16,12 @@ const DeliveryStatusList = memo<PropsType>((props) => {
|
||||
},
|
||||
])
|
||||
// 请求
|
||||
const getDeliveryStatusList = async () => {
|
||||
const getDeliveryStatusList = async() => {
|
||||
const res = await fetchData()
|
||||
console.log(res.data.list);
|
||||
console.log(res.data.list)
|
||||
setStatusList(
|
||||
res.data.list.filter((item) => {
|
||||
return item.id === 3 || item.id === 4 // 待发货 已完成
|
||||
return item.id === 3 || item.id === 4 // 待发货 已完成
|
||||
}),
|
||||
)
|
||||
}
|
||||
@@ -32,8 +32,8 @@ const DeliveryStatusList = memo<PropsType>((props) => {
|
||||
|
||||
// //状态改变
|
||||
const changeStatus = useCallback(
|
||||
(data: {id:number, name: string}) => {
|
||||
onChangeStatus && onChangeStatus({ id: data.id, name: data.name })
|
||||
(data: { id: number; name: string }) => {
|
||||
onChangeStatus && onChangeStatus({ id: data.id, name: data.name })
|
||||
},
|
||||
[onChangeStatus],
|
||||
)
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
import { View } from '@tarojs/components'
|
||||
import Taro from '@tarojs/taro'
|
||||
import classnames from 'classnames'
|
||||
import type { FC } from 'react'
|
||||
import React, { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import dayjs from 'dayjs'
|
||||
import styles from './index.module.scss'
|
||||
import NormalButton from '@/components/normalButton'
|
||||
import Popup from '@/components/popup'
|
||||
import { View } from '@tarojs/components'
|
||||
import classnames from 'classnames'
|
||||
import styles from './index.module.scss'
|
||||
import React, { FC, memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import Search from '@/components/search'
|
||||
import IconFont from '@/components/iconfont/iconfont'
|
||||
import { EnumDeliveryNoticeTypeList } from '@/api/index'
|
||||
import dayjs from 'dayjs'
|
||||
import { getFilterData } from '@/common/util'
|
||||
import Taro from '@tarojs/taro'
|
||||
|
||||
interface SearchFilter {
|
||||
type?: number
|
||||
@@ -80,25 +81,25 @@ const DeliveryFilter = memo<DeliveryPropsType>((props) => {
|
||||
const handleSelectedType = (type: string | number) => {
|
||||
console.log('type==>', type)
|
||||
if (typeof type === 'string' && type === 'default') {
|
||||
setSearchFilter((e) => ({ ...e, type: undefined }))
|
||||
} else {
|
||||
setSearchFilter((e) => ({ ...e, type: type as number }))
|
||||
setSearchFilter(e => ({ ...e, type: undefined }))
|
||||
}
|
||||
else {
|
||||
setSearchFilter(e => ({ ...e, type: type as number }))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const typeList = useMemo<{ id: number; name: string }[]>(() => {
|
||||
return state.data.list
|
||||
}, [state])
|
||||
|
||||
useEffect(() => {
|
||||
if (!!!typeList?.length) {
|
||||
if (!typeList?.length) {
|
||||
getEnumData()
|
||||
console.log('getEnumData')
|
||||
}
|
||||
}, [typeList])
|
||||
|
||||
const getEnumData = async () => {
|
||||
const getEnumData = async() => {
|
||||
await fetchData()
|
||||
}
|
||||
|
||||
@@ -107,18 +108,16 @@ const DeliveryFilter = memo<DeliveryPropsType>((props) => {
|
||||
date_max: undefined,
|
||||
})
|
||||
|
||||
|
||||
|
||||
const handleSelectedTime = (timeOptionId) => {
|
||||
setSearchFilter((e) => ({ ...e, timeKey: timeOptionId }))
|
||||
setSearchFilter(e => ({ ...e, timeKey: timeOptionId }))
|
||||
// 不是设置了自定义时间
|
||||
if (timeOptionId !== '6') {
|
||||
setCustomTime({
|
||||
date_min: filterTimeOptions[timeOptionId]['date_min'],
|
||||
date_max: filterTimeOptions[timeOptionId]['date_max'],
|
||||
date_min: filterTimeOptions[timeOptionId].date_min,
|
||||
date_max: filterTimeOptions[timeOptionId].date_max,
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
onSearchTime?.()
|
||||
}
|
||||
|
||||
@@ -144,8 +143,8 @@ const DeliveryFilter = memo<DeliveryPropsType>((props) => {
|
||||
<FilterButton isActive={searchFilter.type == undefined} onClick={() => handleSelectedType('default')}>
|
||||
不限
|
||||
</FilterButton>
|
||||
{!!typeList?.length &&
|
||||
typeList?.map(item => {
|
||||
{!!typeList?.length
|
||||
&& typeList?.map((item) => {
|
||||
return (
|
||||
<FilterButton isActive={searchFilter.type === item?.id} onClick={() => handleSelectedType(item?.id)}>
|
||||
{item.name}
|
||||
@@ -166,15 +165,15 @@ const DeliveryFilter = memo<DeliveryPropsType>((props) => {
|
||||
)
|
||||
})}
|
||||
<FilterButton isActive={searchFilter.timeKey === '6'} customClassName={styles.filterTimeButton} onClick={() => handleSelectedTime('6')}>
|
||||
自定义时间<IconFont name='icon-chakanquanbukehu' size={40} color={searchFilter.timeKey === '6' ? '#4581ff' : '#909090'}></IconFont>
|
||||
自定义时间<IconFont name="icon-chakanquanbukehu" size={40} color={searchFilter.timeKey === '6' ? '#4581ff' : '#909090'}></IconFont>
|
||||
</FilterButton>
|
||||
</View>
|
||||
</View>
|
||||
<View className={styles.filterController}>
|
||||
<NormalButton plain type='primary' round customClassName={classnames(styles.btn, styles.rest_btn)} onClick={handleReset}>
|
||||
<NormalButton plain type="primary" round customClassName={classnames(styles.btn, styles.rest_btn)} onClick={handleReset}>
|
||||
重置
|
||||
</NormalButton>
|
||||
<NormalButton type='primary' round customClassName={classnames(styles.btn, styles.verify_btn)} onClick={handleConfirm}>
|
||||
<NormalButton type="primary" round customClassName={classnames(styles.btn, styles.verify_btn)} onClick={handleConfirm}>
|
||||
确认
|
||||
</NormalButton>
|
||||
</View>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { Text, View } from '@tarojs/components'
|
||||
import type { FC } from 'react'
|
||||
import classnames from 'classnames'
|
||||
import styles from './index.module.scss'
|
||||
import LayoutBlock from '@/components/layoutBlock'
|
||||
import Divider from '@/components/divider'
|
||||
import { View, Text } from '@tarojs/components'
|
||||
import { FC } from 'react'
|
||||
import NormalButton from '@/components/normalButton'
|
||||
import styles from './index.module.scss'
|
||||
import classnames from 'classnames'
|
||||
import { EnumSaleMode } from '@/common/Enumerate'
|
||||
import { formatDateTime, formatMeterDiv } from '@/common/format'
|
||||
import { goLink } from '@/common/common'
|
||||
@@ -13,12 +13,12 @@ import { goLink } from '@/common/common'
|
||||
import SaleModeTag from '@/components/saleModeTag'
|
||||
// import { alert } from '@/common/common'
|
||||
|
||||
type PropsType = {
|
||||
interface PropsType {
|
||||
itemData: Record<string, any>
|
||||
onSuccess?: Function
|
||||
}
|
||||
|
||||
const ItemList:FC<PropsType> = (props) => {
|
||||
const ItemList: FC<PropsType> = (props) => {
|
||||
const { itemData, onSuccess } = props
|
||||
// 查看详情
|
||||
const handleDetail = (itemData: Record<string, any>) => {
|
||||
@@ -41,7 +41,7 @@ const ItemList:FC<PropsType> = (props) => {
|
||||
// confirmColor: '#337FFF',
|
||||
// success: async (res) => {
|
||||
// if (res.confirm) {
|
||||
// const res = await fetchData({ id })
|
||||
// const res = await fetchData({ id })
|
||||
// if (res.success) {
|
||||
// Taro.showToast({ title: '审核成功', icon: 'success' })
|
||||
// onSuccess?.()
|
||||
@@ -63,12 +63,12 @@ const ItemList:FC<PropsType> = (props) => {
|
||||
</View>
|
||||
<Text className={styles.topBar__orderType}>{itemData?.type_name}</Text>
|
||||
</View>
|
||||
<Divider direction='horizontal' customStyles={{ margin: '20rpx 0 10rpx 0' }}></Divider>
|
||||
<Divider direction="horizontal" customStyles={{ margin: '20rpx 0 10rpx 0' }}></Divider>
|
||||
<View className={styles.content}>
|
||||
<View className={classnames(styles.content__row, styles.bord)}>
|
||||
<View className={styles.content__row__left}>货品信息:</View>
|
||||
<View className={styles.content__row__right}>
|
||||
<SaleModeTag saleMode={itemData.sale_mode} size='small' customClassName={styles.tag}></SaleModeTag>
|
||||
<SaleModeTag saleMode={itemData.sale_mode} size="small" customClassName={styles.tag}></SaleModeTag>
|
||||
{itemData.delivery_product_nums}种面料,{itemData.delivery_product_color_nums}种颜色,共
|
||||
{itemData?.sale_mode === EnumSaleMode.Bulk ? `${itemData?.delivery_roll}条` : `${formatMeterDiv(itemData?.delivery_length)}米`}
|
||||
</View>
|
||||
@@ -86,10 +86,11 @@ const ItemList:FC<PropsType> = (props) => {
|
||||
<NormalButton
|
||||
customClassName={styles.bottomBar__button}
|
||||
plain
|
||||
type='info'
|
||||
type="info"
|
||||
customStyles={{ color: '#636363', borderColor: '#c8c8c8' }}
|
||||
round
|
||||
onClick={() => handleDetail(itemData)}>
|
||||
onClick={() => handleDetail(itemData)}
|
||||
>
|
||||
查看详情
|
||||
</NormalButton>
|
||||
{/* {itemData?.status === 0 && (
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
import { View, Text } from '@tarojs/components'
|
||||
import { useCallback, useEffect, useMemo, useRef, useState, FC, memo } from 'react'
|
||||
import { Text, View } from '@tarojs/components'
|
||||
import Taro, { useDidShow, useRouter } from '@tarojs/taro'
|
||||
import type { FC } from 'react'
|
||||
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
||||
import styles from './index.module.scss'
|
||||
import ItemList from './components/ItemList'
|
||||
import DeliveryStatusList from './components/DeliveryStatusList'
|
||||
import type { SearchField } from './components/Filter'
|
||||
import DeliveryFilter from './components/Filter'
|
||||
import Search from '@/components/search'
|
||||
import { DeliverNoticeOrderList, EnumSaleorderStatus } from '@/api/index'
|
||||
import Taro, { useDidShow } from '@tarojs/taro'
|
||||
import { useRouter } from '@tarojs/taro'
|
||||
import InfiniteScroll from '@/components/infiniteScroll'
|
||||
import { dataLoadingStatus, getFilterData } from '@/common/util'
|
||||
import IconText from '@/components/iconText'
|
||||
import IconFont from '@/components/iconfont/iconfont'
|
||||
import ItemList from './components/ItemList'
|
||||
import DeliveryStatusList from './components/DeliveryStatusList'
|
||||
import Popup from '@/components/popup'
|
||||
import DeliveryFilter, { SearchField } from './components/Filter'
|
||||
import TimePickerPopup from '@/components/timePickerPopup'
|
||||
|
||||
type SearchData = {
|
||||
interface SearchData {
|
||||
delivery_notice_order_no?: string // 发货单号
|
||||
delivery_notice_order_status?: number | string // 发货状态
|
||||
date_min?: string // 开始时间
|
||||
@@ -25,8 +26,6 @@ type SearchData = {
|
||||
size: number
|
||||
}
|
||||
|
||||
|
||||
|
||||
const defaultSearchFields = {
|
||||
delivery_notice_order_status: 0, // 待发货
|
||||
page: 1,
|
||||
@@ -41,51 +40,51 @@ const Delivery: FC = () => {
|
||||
const isFirst = useRef(true)
|
||||
|
||||
const { fetchData: FetchDeliveryOrderList, state: orderState } = DeliverNoticeOrderList()
|
||||
//数据加载状态
|
||||
// 数据加载状态
|
||||
const statusMore = useMemo(() => {
|
||||
return dataLoadingStatus({ list: deliveryOrderList.list, total: deliveryOrderList.total, status: orderState.loading! })
|
||||
}, [deliveryOrderList, orderState])
|
||||
|
||||
//输入搜索关键字
|
||||
// 输入搜索关键字
|
||||
const getSearchData = useCallback((searchValue: string) => {
|
||||
setSearch((prevProps) => ({ ...prevProps, delivery_notice_order_no: searchValue }))
|
||||
setSearch(prevProps => ({ ...prevProps, delivery_notice_order_no: searchValue }))
|
||||
console.log('searchValue==>', searchValue)
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
if(!isFirst.current){
|
||||
if (!isFirst.current) {
|
||||
getData()
|
||||
}
|
||||
}, [search])
|
||||
|
||||
useDidShow(()=>{
|
||||
useDidShow(() => {
|
||||
getData()
|
||||
})
|
||||
|
||||
//上拉加载数据
|
||||
// 上拉加载数据
|
||||
const pageNum = useRef({ size: search.size, page: search.page })
|
||||
|
||||
const getScrollToLower = useCallback(() => {
|
||||
if (deliveryOrderList.list.length < deliveryOrderList.total) {
|
||||
pageNum.current.page++
|
||||
const size = pageNum.current.size * pageNum.current.page
|
||||
setSearch((e) => ({ ...e, size }))
|
||||
setSearch(e => ({ ...e, size }))
|
||||
console.log(search, 11111)
|
||||
}
|
||||
}, [deliveryOrderList])
|
||||
|
||||
//列表下拉刷新
|
||||
// 列表下拉刷新
|
||||
const [refresherTriggeredStatus, setRefresherTriggeredStatus] = useState(false)
|
||||
|
||||
const getRefresherRefresh = async () => {
|
||||
const getRefresherRefresh = async() => {
|
||||
pageNum.current.size = 1
|
||||
setRefresherTriggeredStatus(true)
|
||||
setSearch((val) => ({ ...val, size: 10 }))
|
||||
setSearch(val => ({ ...val, size: 10 }))
|
||||
}
|
||||
const getData = async () => {
|
||||
const getData = async() => {
|
||||
const res = await FetchDeliveryOrderList(getFilterData(search))
|
||||
|
||||
setDeliveryOrderList((e) => ({ ...e, list: res.data?.list, total: res.data?.total }))
|
||||
setDeliveryOrderList(e => ({ ...e, list: res.data?.list, total: res.data?.total }))
|
||||
setRefresherTriggeredStatus(() => false)
|
||||
}
|
||||
|
||||
@@ -95,11 +94,12 @@ const Delivery: FC = () => {
|
||||
let fuckingBadCodeId: string | number = 0
|
||||
if (statusId === 3) {
|
||||
fuckingBadCodeId = 0
|
||||
} else if (statusId === 4) {
|
||||
}
|
||||
else if (statusId === 4) {
|
||||
fuckingBadCodeId = '1,2'
|
||||
}
|
||||
setCurrentStatus(statusName)
|
||||
setSearch((e) => ({ ...e, delivery_notice_order_status: fuckingBadCodeId }))
|
||||
setSearch(e => ({ ...e, delivery_notice_order_status: fuckingBadCodeId }))
|
||||
}
|
||||
|
||||
const handleAuditSuccess = () => {
|
||||
@@ -142,9 +142,10 @@ const Delivery: FC = () => {
|
||||
console.log('changedFields==>changedFields', changedFields)
|
||||
// 自定义时间
|
||||
if (timeKey === '6') {
|
||||
setSearch((prevProps) => ({ ...prevProps, ...changedFields, date_min: start, date_max: end }))
|
||||
} else {
|
||||
setSearch((prevProps) => ({ ...prevProps, ...changedFields }))
|
||||
setSearch(prevProps => ({ ...prevProps, ...changedFields, date_min: start, date_max: end }))
|
||||
}
|
||||
else {
|
||||
setSearch(prevProps => ({ ...prevProps, ...changedFields }))
|
||||
}
|
||||
handlePopupClose()
|
||||
}
|
||||
@@ -159,7 +160,7 @@ const Delivery: FC = () => {
|
||||
const handleScan = () => {
|
||||
Taro.scanCode({
|
||||
success(res) {
|
||||
setSearch((e) => ({ ...e, delivery_notice_order_no: res.result }))
|
||||
setSearch(e => ({ ...e, delivery_notice_order_no: res.result }))
|
||||
},
|
||||
fail(res) {
|
||||
console.log(res)
|
||||
@@ -168,7 +169,7 @@ const Delivery: FC = () => {
|
||||
}
|
||||
return (
|
||||
<View onClick={handleScan} className={styles.scanHandler}>
|
||||
<IconFont name='icon-saomiao' size={40}></IconFont>
|
||||
<IconFont name="icon-saomiao" size={40}></IconFont>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
@@ -176,9 +177,9 @@ const Delivery: FC = () => {
|
||||
return (
|
||||
<View className={styles.delivery}>
|
||||
<View className={styles.searchBox}>
|
||||
<Search placeholder='请输入或扫描条形码' showBtn={false} changeOnSearch={getSearchData} debounceTime={300} customRightSlot={scanIcon()}>
|
||||
<Search placeholder="请输入或扫描条形码" showBtn={false} changeOnSearch={getSearchData} debounceTime={300} customRightSlot={scanIcon()}>
|
||||
<View onClick={onShowFilter} className={styles.icon__filter}>
|
||||
<IconText svg iconName='icon-shaixuan' text='筛选' customClass={styles['icon--filter']} />
|
||||
<IconText svg iconName="icon-shaixuan" text="筛选" customClass={styles['icon--filter']} />
|
||||
</View>
|
||||
</Search>
|
||||
</View>
|
||||
@@ -189,9 +190,10 @@ const Delivery: FC = () => {
|
||||
<InfiniteScroll
|
||||
statusMore={statusMore}
|
||||
selfonScrollToLower={getScrollToLower}
|
||||
refresherEnabled={true}
|
||||
refresherEnabled
|
||||
refresherTriggered={refresherTriggeredStatus}
|
||||
selfOnRefresherRefresh={getRefresherRefresh}>
|
||||
selfOnRefresherRefresh={getRefresherRefresh}
|
||||
>
|
||||
<Text className={styles['listBox--total']}>
|
||||
{currentStatus}共 {deliveryOrderList.total} 单
|
||||
</Text>
|
||||
@@ -200,10 +202,10 @@ const Delivery: FC = () => {
|
||||
})}
|
||||
</InfiniteScroll>
|
||||
</View>
|
||||
<Popup show={showFilter} title='筛选列表' onClose={handlePopupClose}>
|
||||
<Popup show={showFilter} title="筛选列表" onClose={handlePopupClose}>
|
||||
<DeliveryFilter onSearchTime={handleSearchTime} onConfirm={handleConfirm} onReset={handleReset} />
|
||||
</Popup>
|
||||
<TimePickerPopup start={start} end={end} showTime={showTime} closePopup={handClose} onSelectDate={(e) => handTime(e)}></TimePickerPopup>
|
||||
<TimePickerPopup start={start} end={end} showTime={showTime} closePopup={handClose} onSelectDate={e => handTime(e)}></TimePickerPopup>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user