|
@@ -1,27 +1,32 @@
|
|
|
-import React, { useCallback, useMemo, useRef, useState } from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
-import { Button, Checkbox, DatePicker, Input, Select } from 'antd'
|
|
|
+import { Button, Checkbox, DatePicker, Input, Popconfirm, 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 { A4voucherItemType, A4voucherSearchType, IA4voucherParams } from './types'
|
|
|
+import history, { downFileFu } 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'
|
|
|
+import { MessageFu } from '@/utils/message'
|
|
|
+import { A4_APIDownload, A4_APIList } from '@/store/action/A4voucher'
|
|
|
+import { filterEmptyStrings } from '@/utils/objects'
|
|
|
+import { fileImgArr } from '@/store/action/layout'
|
|
|
+import { BUSINESS_DETAIL_PATH_MAP } from '../A3flow/data'
|
|
|
|
|
|
const { RangePicker } = DatePicker
|
|
|
|
|
|
function A4voucher() {
|
|
|
// 从仓库拿数据
|
|
|
- const tableInfo = useSelector((state: RootState) => state.F1exhibition.tableInfo)
|
|
|
+ const tableInfo = useSelector((state: RootState) => state.A4voucher.tableInfo)
|
|
|
const [formData, setFormData] = useState({ ...DEFAULT_A4VOUCHER_PARAMS })
|
|
|
const formDataRef = useRef({ ...DEFAULT_A4VOUCHER_PARAMS })
|
|
|
const dispatch = useDispatch()
|
|
|
+ // 获取下载权限
|
|
|
+ const downImg = useSelector((state: RootState) => state.A0Layout.downImg)
|
|
|
|
|
|
// 输入框的改变
|
|
|
const txtChangeFu = useCallback(
|
|
@@ -53,7 +58,7 @@ function A4voucher() {
|
|
|
options={item.data}
|
|
|
placeholder='全部'
|
|
|
allowClear={true}
|
|
|
- value={formData[item.key as 'num'] ? formData[item.key as 'num'] : null}
|
|
|
+ value={formData[item.key as 'goodNum'] ? formData[item.key as 'goodNum'] : null}
|
|
|
onChange={e => setFormData({ ...formData, [item.key]: e })}
|
|
|
/>
|
|
|
) : item.type === '日期选择' ? (
|
|
@@ -108,49 +113,58 @@ function A4voucher() {
|
|
|
// @ts-ignore
|
|
|
rest.endTime = date[1]
|
|
|
}
|
|
|
- dispatch(A3_APIList(rest))
|
|
|
+ dispatch(A4_APIList(filterEmptyStrings(rest)))
|
|
|
}, [dispatch])
|
|
|
|
|
|
// 点击操作按钮
|
|
|
- const tableBtnFu = useCallback((item: any, key: string) => {}, [])
|
|
|
-
|
|
|
- // 点击删除
|
|
|
- const delTableFu = useCallback(async (item: any) => {}, [])
|
|
|
+ const tableBtnFu = useCallback((item: A4voucherItemType, key: string) => {
|
|
|
+ switch (key) {
|
|
|
+ case '1':
|
|
|
+ history.push(`/${BUSINESS_DETAIL_PATH_MAP[item.moduleName]}/4/${item.moduleId}`)
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }, [])
|
|
|
|
|
|
const tableLastBtn = useMemo(() => {
|
|
|
return [
|
|
|
{
|
|
|
title: '操作',
|
|
|
render: (item: any) => {
|
|
|
- let obj = btnFlagFu(item)
|
|
|
- return !Object.values(obj).some(Boolean) ? (
|
|
|
- '-'
|
|
|
- ) : (
|
|
|
- <>
|
|
|
- {obj['编辑'] ? (
|
|
|
- <Button size='small' type='text' onClick={() => tableBtnFu(item, '2')}>
|
|
|
- 编辑
|
|
|
- </Button>
|
|
|
- ) : null}
|
|
|
+ const fileNameArr = item.fileName.split('.')
|
|
|
+ const fileNameLast = fileNameArr[fileNameArr.length - 1]
|
|
|
|
|
|
- {obj['审批'] ? (
|
|
|
- <Button size='small' type='text' onClick={() => tableBtnFu(item, '3')}>
|
|
|
- 审批
|
|
|
- </Button>
|
|
|
- ) : null}
|
|
|
- {obj['查看'] ? (
|
|
|
- <Button size='small' type='text' onClick={() => tableBtnFu(item, '4')}>
|
|
|
- 查看
|
|
|
+ return (
|
|
|
+ <>
|
|
|
+ <Button size='small' type='text' onClick={() => tableBtnFu(item, '1')}>
|
|
|
+ 查看
|
|
|
+ </Button>
|
|
|
+ {downImg['图片'] === '原图和缩略图' && fileImgArr.includes(fileNameLast) ? (
|
|
|
+ <Popconfirm
|
|
|
+ title='请选择图片规格'
|
|
|
+ onConfirm={() => downFileFu(item.filePath)}
|
|
|
+ onCancel={() => downFileFu(item.thumb)}
|
|
|
+ okText='原图'
|
|
|
+ cancelText='缩略图'
|
|
|
+ >
|
|
|
+ <Button size='small' type='text'>
|
|
|
+ 下载
|
|
|
+ </Button>
|
|
|
+ </Popconfirm>
|
|
|
+ ) : (
|
|
|
+ <Button
|
|
|
+ size='small'
|
|
|
+ type='text'
|
|
|
+ onClick={() => downFileFu(item.thumb || item.filePath)}
|
|
|
+ >
|
|
|
+ 下载
|
|
|
</Button>
|
|
|
- ) : null}
|
|
|
-
|
|
|
- {obj['删除'] ? <MyPopconfirm txtK='删除' onConfirm={() => delTableFu(item)} /> : null}
|
|
|
+ )}
|
|
|
</>
|
|
|
)
|
|
|
}
|
|
|
}
|
|
|
]
|
|
|
- }, [delTableFu, tableBtnFu])
|
|
|
+ }, [tableBtnFu])
|
|
|
|
|
|
// 多选
|
|
|
const [checkArr, setCheckArr] = useState<number[]>([])
|
|
@@ -175,6 +189,27 @@ function A4voucher() {
|
|
|
]
|
|
|
}, [checkArr, checkFu])
|
|
|
|
|
|
+ const downsFu = useCallback(
|
|
|
+ async (type: 1 | 2) => {
|
|
|
+ const res = await A4_APIDownload(checkArr, type)
|
|
|
+ if (res.code === 0) {
|
|
|
+ MessageFu.success('下载成功')
|
|
|
+ downFileFu(res.data, () => {
|
|
|
+ setCheckArr([])
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ [checkArr]
|
|
|
+ )
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ getListFu()
|
|
|
+ }, [getListFu, timeKey])
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ formDataRef.current = formData
|
|
|
+ }, [formData])
|
|
|
+
|
|
|
return (
|
|
|
<div className={styles.A4voucher}>
|
|
|
<div className='pageTitle'>凭证管理</div>
|
|
@@ -186,7 +221,23 @@ function A4voucher() {
|
|
|
|
|
|
{/* 第二行 */}
|
|
|
<div className='C1top C1top2'>
|
|
|
- <Button type='primary'>批量导出</Button>
|
|
|
+ {downImg['图片'] === '原图和缩略图' ? (
|
|
|
+ <Popconfirm
|
|
|
+ title='请选择图片规格'
|
|
|
+ onConfirm={() => downsFu(1)}
|
|
|
+ onCancel={() => downsFu(2)}
|
|
|
+ okText='原图'
|
|
|
+ cancelText='缩略图'
|
|
|
+ >
|
|
|
+ <Button type='primary' disabled={checkArr.length === 0}>
|
|
|
+ 批量下载
|
|
|
+ </Button>
|
|
|
+ </Popconfirm>
|
|
|
+ ) : (
|
|
|
+ <Button type='primary' disabled={checkArr.length === 0} onClick={() => downsFu(2)}>
|
|
|
+ 批量下载
|
|
|
+ </Button>
|
|
|
+ )}
|
|
|
 
|
|
|
<Button type='primary' onClick={clickSearch}>
|
|
|
查询
|