import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import styles from './index.module.scss' import { Button, DatePicker, Input, Select } from 'antd' import { useDispatch, useSelector } from 'react-redux' import { D5_APIdel, D5_APIgetList } from '@/store/action/D5moveStor' import { MessageFu } from '@/utils/message' import history, { btnFlagFu } from '@/utils/history' import { FourTableType } from '@/pages/B_enterTibet/B1collect/type' import MyPopconfirm from '@/components/MyPopconfirm' import { D4baseFormData, D4InputKeyType } from '../D4impStor/data' import store, { RootState } from '@/store' import { D5tableC, statusObj } from '@/utils/tableData' import dayjs from 'dayjs' import { selectObj } from '@/utils/select' import MyTable from '@/components/MyTable' const { RangePicker } = DatePicker function D5moveStor() { const dispatch = useDispatch() const [formData, setFormData] = useState(D4baseFormData) const formDataRef = useRef(D4baseFormData) const formDataOldRef = useRef(D4baseFormData) useEffect(() => { formDataRef.current = formData }, [formData]) // 点击搜索的 时间戳 const [timeKey, setTimeKey] = useState(0) // 点击搜索 const clickSearch = useCallback(() => { setFormData({ ...formData, pageNum: 1 }) setTimeout(() => { setTimeKey(Date.now()) }, 50) }, [formData]) // 时间选择器改变 const timeChange = useCallback( (date: any, dateString: any) => { let businessTimeStart = '' let businessTimeEnd = '' if (dateString[0] && dateString[1]) { businessTimeStart = dateString[0] + ' 00:00:00' businessTimeEnd = dateString[1] + ' 23:59:59' } setFormData({ ...formData, businessTimeStart, businessTimeEnd }) }, [formData] ) const timeChange2 = useCallback( (date: any, dateString: any) => { let startTime = '' let endTime = '' if (dateString[0] && dateString[1]) { startTime = dateString[0] + ' 00:00:00' endTime = dateString[1] + ' 23:59:59' } setFormData({ ...formData, startTime, endTime }) }, [formData] ) // 封装发送请求的函数 const getListFu = useCallback(() => { formDataOldRef.current = { ...formDataRef.current } dispatch(D5_APIgetList(formDataRef.current)) }, [dispatch]) useEffect(() => { getListFu() }, [getListFu, timeKey]) // 输入框的改变 const txtChangeFu = useCallback( (txt: string, key: D4InputKeyType) => { setFormData({ ...formData, [key]: txt }) }, [formData] ) // 点击重置 const resetSelectFu = useCallback(() => { setFormData(D4baseFormData) setTimeout(() => { setTimeKey(Date.now()) }, 50) }, []) // 页码变化 const paginationChange = useCallback( (pageNum: number, pageSize: number) => { setFormData({ ...formData, pageNum, pageSize }) setTimeout(() => { setTimeKey(Date.now()) }, 50) }, [formData] ) // 点击删除 const delTableFu = useCallback( async (id: number) => { const res = await D5_APIdel(id) if (res.code === 0) { MessageFu.success('删除成功') getListFu() } }, [getListFu] ) // 点击各种操作按钮 const tableBtnFu = useCallback((id: number, key: string) => { history.push(`/moveStor_edit/${key}/${id}`) }, []) const tableLastBtn = useMemo(() => { return [ { title: '操作', render: (item: FourTableType) => { let obj = btnFlagFu(item) return !Object.values(obj).some(Boolean) ? ( '-' ) : ( <> {obj['编辑'] ? ( tableBtnFu(item.id, '2')}> 编辑 ) : null} {obj['审批'] ? ( tableBtnFu(item.id, '3')}> 审批 ) : null} {obj['查看'] ? ( tableBtnFu(item.id, '4')}> 查看 ) : null} {obj['删除'] ? ( delTableFu(item.id)} /> ) : null} > ) } } ] }, [delTableFu, tableBtnFu]) // 从仓库拿数据 const tableInfo = useSelector((state: RootState) => state.D5moveStor.tableInfo) // 点击导出 const deriveFu = useCallback(async () => { const res = await D5_APIgetList( { ...formDataOldRef.current, pageNum: 1, pageSize: 99999 }, true ) if (res.code === 0) { if (res.data.records.length <= 0) return MessageFu.warning('当前搜索条件没有数据!') store.dispatch({ type: 'layout/exInfo', payload: { name: '藏品移库', show: true, arr: [ { key: 'date', txt: '移库日期' }, { key: 'num', txt: '移库单编号' }, { key: 'sonNum2', txt: '出库分库缩写' }, { key: 'sonNum', txt: '入库分库缩写' }, { key: 'deptName', txt: '发起部门' }, { key: 'creatorName', txt: '发起人' }, { key: 'createTime', txt: '发起日期' }, { key: 'status', txt: '申请状态' } ], data: res.data.records.map((v: FourTableType) => ({ ...v, status: statusObj[v.status as 1] })) } }) } }, []) return ( 藏品移库 移库日期范围: 移库单编号: txtChangeFu(e.target.value, 'num')} /> 发起部门: txtChangeFu(e.target.value, 'deptName')} /> 批量导出 history.push('/moveStor_edit/1/null')}> 新增 发起人: txtChangeFu(e.target.value, 'userName')} /> 发起日期范围: 申请状态: setFormData({ ...formData, status: e })} options={selectObj['申请状态'].filter(v => v.label !== '待盘点')} /> 选择角色: setFormData({ ...formData, userType: e })} /> 查询 重置 {/* 表格 */} paginationChange(pageNum, pageSize)} /> ) } const MemoD5moveStor = React.memo(D5moveStor) export default MemoD5moveStor