|
@@ -1,6 +1,6 @@
|
|
|
-import React, { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
-import { Button, Checkbox, Input, Modal, Select } from 'antd'
|
|
|
+import { Button, Cascader, Checkbox, Input, Modal, Select } from 'antd'
|
|
|
import MyPopconfirm from '@/components/MyPopconfirm'
|
|
|
import MyTable from '@/components/MyTable'
|
|
|
import { B3eTableC } from '@/utils/tableData'
|
|
@@ -9,6 +9,11 @@ import { MessageFu } from '@/utils/message'
|
|
|
import { C1GoodType } from '@/pages/C_goodsManage/C1ledger/type'
|
|
|
import { API_goodsNowAdd } from '@/store/action/C1ledger'
|
|
|
import { selectObj } from '@/utils/select'
|
|
|
+import { useSelector } from 'react-redux'
|
|
|
+import { RootState } from '@/store'
|
|
|
+import { cascaderArr } from '../B3GaddNew/data'
|
|
|
+import { B3nowSearchType } from './type'
|
|
|
+import { B3baseFormData, B3nowArr1, B3nowArr2 } from './data'
|
|
|
|
|
|
type Props = {
|
|
|
closeFu: () => void
|
|
@@ -17,23 +22,70 @@ type Props = {
|
|
|
dataResFu: (data: C1GoodType[]) => void
|
|
|
isOne?: boolean //从藏品编辑进来 只能选择一个藏品
|
|
|
oldCheckArr: C1GoodType[]
|
|
|
+ canObj?: any //其他页面带过来的参数
|
|
|
}
|
|
|
|
|
|
-function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr }: Props) {
|
|
|
- // 待完善 根据key值不同 来设置不同的下拉框数据,待完善筛选条件
|
|
|
+function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr, canObj }: Props) {
|
|
|
+ // 入藏状态特别过滤
|
|
|
+ const RuChangSelect = useMemo(() => {
|
|
|
+ let arr = selectObj['入藏状态']
|
|
|
+ if (nowSta.key === '1') arr = arr.filter(v => v.label === '已鉴定')
|
|
|
+ else if (['2', '3'].includes(nowSta.key)) arr = arr.filter(v => v.value !== 3)
|
|
|
+ return arr
|
|
|
+ }, [nowSta.key])
|
|
|
+
|
|
|
+ const [formData, setFormData] = useState(B3baseFormData)
|
|
|
+ const formDataRef = useRef(B3baseFormData)
|
|
|
+
|
|
|
+ useEffect(() => {
|
|
|
+ formDataRef.current = { ...formData }
|
|
|
+ }, [formData])
|
|
|
+
|
|
|
+ // 点击搜索的 时间戳
|
|
|
+ const [timeKey, setTimeKey] = useState(0)
|
|
|
+
|
|
|
+ // 点击搜索
|
|
|
+ const clickSearch = useCallback(() => {
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ }, [])
|
|
|
+
|
|
|
+ // 点击重置
|
|
|
+ const resetSelectFu = useCallback(() => {
|
|
|
+ setFormData(B3baseFormData)
|
|
|
+ setTimeout(() => {
|
|
|
+ setTimeKey(Date.now())
|
|
|
+ }, 50)
|
|
|
+ }, [])
|
|
|
|
|
|
const [tableList, setTableList] = useState<C1GoodType[]>([])
|
|
|
+ const [tableListAll, setTableListAll] = useState<C1GoodType[]>([])
|
|
|
|
|
|
- const getList = useCallback(async (url: string, data: any) => {
|
|
|
- const res = await API_goodsNowAdd(url, data)
|
|
|
+ // 封装发送请求的函数
|
|
|
+ const getList = useCallback(async () => {
|
|
|
+ let canObjTemp = canObj || {}
|
|
|
+ const obj = {
|
|
|
+ ...formDataRef.current,
|
|
|
+ ...canObjTemp
|
|
|
+ }
|
|
|
+ const res = await API_goodsNowAdd(nowSta.id, obj)
|
|
|
if (res.code === 0) {
|
|
|
- setTableList(res.data)
|
|
|
+ const arr: any = res.data.map((v: any) => ({
|
|
|
+ ...v,
|
|
|
+ statusCollect: (selectObj['入藏状态'].find(c => c.value === v.statusCollect) || {}).label,
|
|
|
+ statusStorage: (selectObj['库存状态'].find(c => c.value === v.statusStorage) || {}).label
|
|
|
+ }))
|
|
|
+
|
|
|
+ setTableList(arr)
|
|
|
+
|
|
|
+ if (timeKey === 0) setTableListAll(arr)
|
|
|
}
|
|
|
- }, [])
|
|
|
+ }, [canObj, nowSta.id, timeKey])
|
|
|
|
|
|
useEffect(() => {
|
|
|
- getList(nowSta.id, {})
|
|
|
- }, [getList, nowSta.id])
|
|
|
+ getList()
|
|
|
+ }, [getList])
|
|
|
|
|
|
// 多选
|
|
|
const [checkArr, setCheckArr] = useState<C1GoodType[]>([])
|
|
@@ -48,10 +100,10 @@ function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr }: P
|
|
|
|
|
|
// 过滤掉 tableList 里面没有的id
|
|
|
const resNum = useMemo(() => {
|
|
|
- const tableIds = tableList.map(v => v.id)
|
|
|
+ const tableIds = tableListAll.map(v => v.id)
|
|
|
const arr = checkArr.filter(v => tableIds.includes(v.id))
|
|
|
return arr.length
|
|
|
- }, [checkArr, tableList])
|
|
|
+ }, [checkArr, tableListAll])
|
|
|
|
|
|
const checkFu = useCallback(
|
|
|
(item: C1GoodType) => {
|
|
@@ -102,6 +154,16 @@ function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr }: P
|
|
|
]
|
|
|
}, [])
|
|
|
|
|
|
+ // 所有级联的数据平铺
|
|
|
+ const { dictAll } = useSelector((state: RootState) => state.Z1dict)
|
|
|
+ const cascaderObj = useMemo(() => {
|
|
|
+ let obj: any = {}
|
|
|
+ if (dictAll && dictAll.length) {
|
|
|
+ obj = cascaderArr(dictAll)
|
|
|
+ }
|
|
|
+ return obj
|
|
|
+ }, [dictAll])
|
|
|
+
|
|
|
// 点击提交
|
|
|
const btnOk = useCallback(() => {
|
|
|
dataResFu(checkArr)
|
|
@@ -109,6 +171,50 @@ function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr }: P
|
|
|
closeFu()
|
|
|
}, [checkArr, closeFu, dataResFu, isOne])
|
|
|
|
|
|
+ // 顶部筛选
|
|
|
+ const searchDom = useCallback(
|
|
|
+ (arr: B3nowSearchType) => {
|
|
|
+ return arr.map(item => {
|
|
|
+ return (
|
|
|
+ <div key={item.name}>
|
|
|
+ <span>{item.name}:</span>
|
|
|
+ {item.type === '输入框' ? (
|
|
|
+ <Input
|
|
|
+ value={formData[item.key as 'num']}
|
|
|
+ onChange={e => setFormData({ ...formData, [item.key]: e.target.value })}
|
|
|
+ style={{ width: 195 }}
|
|
|
+ placeholder={item.name}
|
|
|
+ maxLength={30}
|
|
|
+ />
|
|
|
+ ) : item.type === '下拉框' ? (
|
|
|
+ <Select
|
|
|
+ options={
|
|
|
+ item.name === '入藏状态'
|
|
|
+ ? RuChangSelect
|
|
|
+ : selectObj[(item.nameKey || item.name) as '入藏状态']
|
|
|
+ }
|
|
|
+ placeholder='全部'
|
|
|
+ allowClear={true}
|
|
|
+ value={formData[item.key] || null}
|
|
|
+ onChange={e => setFormData({ ...formData, [item.key]: e })}
|
|
|
+ />
|
|
|
+ ) : (
|
|
|
+ <Cascader
|
|
|
+ options={cascaderObj[item.nameKey || item.name]}
|
|
|
+ placeholder='全部'
|
|
|
+ fieldNames={{ label: 'name', value: 'id', children: 'children' }}
|
|
|
+ allowClear={true}
|
|
|
+ value={formData[item.key] ? (formData[item.key] as string).split(',') : []}
|
|
|
+ onChange={e => setFormData({ ...formData, [item.key]: e ? e.join(',') : '' })}
|
|
|
+ />
|
|
|
+ )}
|
|
|
+ </div>
|
|
|
+ )
|
|
|
+ })
|
|
|
+ },
|
|
|
+ [RuChangSelect, cascaderObj, formData]
|
|
|
+ )
|
|
|
+
|
|
|
return (
|
|
|
<Modal
|
|
|
wrapClassName={styles.B3GaddNow}
|
|
@@ -124,64 +230,25 @@ function B3GaddNow({ nowSta, closeFu, isOne = false, dataResFu, oldCheckArr }: P
|
|
|
>
|
|
|
<div className='B3GaMain'>
|
|
|
<div className='B3GaTop'>
|
|
|
- <div className='B3Gatopll'>
|
|
|
- <div>
|
|
|
- <span>藏品编号:</span>
|
|
|
- <Input style={{ width: 185 }} placeholder='藏品编号' maxLength={30} />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>藏品名称:</span>
|
|
|
- <Input style={{ width: 185 }} placeholder='请输入藏品名称' maxLength={30} />
|
|
|
- </div>
|
|
|
-
|
|
|
- <div>
|
|
|
- <span>编号类型:</span>
|
|
|
- <Select options={selectObj['藏品编号类型']} defaultValue='藏品总登记号' />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>文物级别:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>类别:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div className='B3Gatopll'>{searchDom(B3nowArr1)}</div>
|
|
|
<div>
|
|
|
- <Checkbox>我关注的</Checkbox>
|
|
|
+ <Checkbox
|
|
|
+ checked={formData.isFocus === 1}
|
|
|
+ onChange={e => setFormData({ ...formData, isFocus: e.target.checked ? 1 : 0 })}
|
|
|
+ >
|
|
|
+ 我关注的
|
|
|
+ </Checkbox>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
<div className='B3GaTop'>
|
|
|
- <div className='B3Gatopll'>
|
|
|
- <div>
|
|
|
- <span>年代:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>质地:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>完残程度:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>来源:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>入藏状态:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- <div>
|
|
|
- <span>库存状态:</span>
|
|
|
- <Select />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
+ <div className='B3Gatopll'>{searchDom(B3nowArr2)}</div>
|
|
|
<div>
|
|
|
- <Button type='primary'>查询</Button> 
|
|
|
- <Button>重置</Button>
|
|
|
+ <Button type='primary' onClick={clickSearch}>
|
|
|
+ 查询
|
|
|
+ </Button>
|
|
|
+  
|
|
|
+ <Button onClick={resetSelectFu}>重置</Button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|