import React, { useCallback, useMemo, useRef, useState } from 'react'
import styles from './index.module.scss'
import { Button, Checkbox, DatePicker, Input, Select } from 'antd'
import MyTable from '@/components/MyTable'
import { useDispatch, useSelector } from 'react-redux'
import { RootState } from '@/store'
import { A4voucherSearchType, IA4voucherParams } from './types'
import history, { btnFlagFu } from '@/utils/history'
import {
A4VOUCHER_PARAM_ROWS,
A4VOUCHER_TABLE_COLUMNS,
DEFAULT_A4VOUCHER_PARAMS
} from './constants'
import MyPopconfirm from '@/components/MyPopconfirm'
import { A3_APIList } from '@/store/action/A3flow'
const { RangePicker } = DatePicker
function A4voucher() {
// 从仓库拿数据
const tableInfo = useSelector((state: RootState) => state.F1exhibition.tableInfo)
const [formData, setFormData] = useState({ ...DEFAULT_A4VOUCHER_PARAMS })
const formDataRef = useRef({ ...DEFAULT_A4VOUCHER_PARAMS })
const dispatch = useDispatch()
// 输入框的改变
const txtChangeFu = useCallback(
(txt: string, key: keyof IA4voucherParams) => {
setFormData({
...formData,
[key]: txt
})
},
[formData]
)
// 顶部筛选
const searchDom = useCallback(
(arr: A4voucherSearchType[]) => {
return arr.map(item => {
return (
{item.name}:
{item.type === '输入框' ? (
txtChangeFu(e.target.value, item.key)}
/>
) : item.type === '下拉框' ? (
)
})
},
[formData, txtChangeFu]
)
// 点击搜索的 时间戳
const [timeKey, setTimeKey] = useState(0)
// 点击搜索
const clickSearch = useCallback(() => {
setFormData({ ...formData, pageNum: 1 })
setTimeout(() => {
setTimeKey(Date.now())
}, 50)
}, [formData])
// 点击重置
const resetSelectFu = useCallback(() => {
setFormData({ ...DEFAULT_A4VOUCHER_PARAMS })
setTimeout(() => {
setTimeKey(Date.now())
}, 50)
}, [])
// 页码变化
const paginationChange = useCallback(
(pageNum: number, pageSize: number) => {
setFormData({ ...formData, pageNum, pageSize })
setTimeout(() => {
setTimeKey(Date.now())
}, 50)
},
[formData]
)
// 封装发送请求的函数
const getListFu = useCallback(() => {
const { date, ...rest } = formDataRef.current
if (Array.isArray(date) && date.length) {
// @ts-ignore
rest.startTime = date[0]
// @ts-ignore
rest.endTime = date[1]
}
dispatch(A3_APIList(rest))
}, [dispatch])
// 点击操作按钮
const tableBtnFu = useCallback((item: any, key: string) => {}, [])
// 点击删除
const delTableFu = useCallback(async (item: any) => {}, [])
const tableLastBtn = useMemo(() => {
return [
{
title: '操作',
render: (item: any) => {
let obj = btnFlagFu(item)
return !Object.values(obj).some(Boolean) ? (
'-'
) : (
<>
{obj['编辑'] ? (
) : null}
{obj['审批'] ? (
) : null}
{obj['查看'] ? (
) : null}
{obj['删除'] ? delTableFu(item)} /> : null}
>
)
}
}
]
}, [delTableFu, tableBtnFu])
// 多选
const [checkArr, setCheckArr] = useState([])
const checkFu = useCallback(
(id: number) => {
if (checkArr.includes(id)) setCheckArr(checkArr.filter(v => v !== id))
else setCheckArr([...checkArr, id])
},
[checkArr]
)
const startBtn = useMemo(() => {
return [
{
title: '选择',
width: 60,
render: (item: any) => (
checkFu(item.id)} />
)
}
]
}, [checkArr, checkFu])
return (
凭证管理
{/* 第一行 */}
{searchDom(A4VOUCHER_PARAM_ROWS)}
{/* 第二行 */}
{/* 表格 */}
paginationChange(pageNum, pageSize)}
/>
)
}
const MemoA4voucher = React.memo(A4voucher)
export default MemoA4voucher