|
|
@@ -1,6 +1,5 @@
|
|
|
-import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
+import { useCallback, useMemo, useState } from 'react'
|
|
|
import styles from './index.module.scss'
|
|
|
-import { selectObj } from '@/utils/dataChange'
|
|
|
import { useParams } from 'react-router-dom'
|
|
|
import dayjs from 'dayjs'
|
|
|
import { Button, Cascader, DatePicker, Input } from 'antd'
|
|
|
@@ -8,40 +7,22 @@ import classNames from 'classnames'
|
|
|
import TextArea from 'antd/es/input/TextArea'
|
|
|
import { useInfo } from '../InfoContext'
|
|
|
import Z3upFiles from '@/components/Z3upFiles'
|
|
|
-import { API_objType } from '@/store/action/Dmanage/D1register'
|
|
|
-import { editPageToTopFu } from '@/utils/authority'
|
|
|
import { FileUpInfoType } from '../data'
|
|
|
import SelectGoods from '@/pages/Zother/SelectGoods'
|
|
|
import { GoodsType } from '../SonGoodsList/data'
|
|
|
|
|
|
-export const pageKeyTxtObj = {
|
|
|
- 1: '新增',
|
|
|
- 2: '编辑',
|
|
|
- 3: '审批',
|
|
|
- 4: '查看'
|
|
|
-}
|
|
|
-
|
|
|
-export const auditBtnArr = [
|
|
|
- { value: 1, label: '同意' },
|
|
|
- { value: 2, label: '不同意' }
|
|
|
-]
|
|
|
-
|
|
|
type Props = {
|
|
|
// 顶部信息录入
|
|
|
rowArr: any[]
|
|
|
- // 页面字段
|
|
|
- pageTxt: string
|
|
|
- // api
|
|
|
- APIobj: API_objType
|
|
|
// 上传附件的信息
|
|
|
fileUpInfo: FileUpInfoType
|
|
|
Tit: string
|
|
|
}
|
|
|
|
|
|
-function EditTopDom({ rowArr, pageTxt, APIobj, fileUpInfo, Tit }: Props) {
|
|
|
- const { info, setInfoFu, snaps, setSnapsFu, timeKey, auditInfo, setAuditInfoFu } = useInfo()
|
|
|
+function EditTopDom({ rowArr, fileUpInfo, Tit }: Props) {
|
|
|
+ const { info, setInfoFu, snaps, setSnapsFu } = useInfo()
|
|
|
|
|
|
- const { key, id } = useParams<any>()
|
|
|
+ const { key } = useParams<any>()
|
|
|
// key:1 新增 2编辑 3审批 4查看
|
|
|
|
|
|
const isLook = useMemo(() => {
|
|
|
@@ -51,57 +32,6 @@ function EditTopDom({ rowArr, pageTxt, APIobj, fileUpInfo, Tit }: Props) {
|
|
|
// 控制选择藏品弹窗显示
|
|
|
const [showChildTable, setShowChildTable] = useState(false)
|
|
|
|
|
|
- // 创建订单
|
|
|
- const createFu = useCallback(async () => {
|
|
|
- const res = await APIobj['创建订单']()
|
|
|
- if (res.code === 0) {
|
|
|
- setInfoFu(res.data)
|
|
|
- }
|
|
|
- }, [APIobj, setInfoFu])
|
|
|
-
|
|
|
- // 获取详情
|
|
|
- const getInfoFu = useCallback(
|
|
|
- async (id: number) => {
|
|
|
- const res = await APIobj['获取详情'](id)
|
|
|
- if (res.code === 0) {
|
|
|
- // 回到顶部
|
|
|
- editPageToTopFu()
|
|
|
-
|
|
|
- const data = res.data
|
|
|
- setInfoFu(data)
|
|
|
-
|
|
|
- // 设置有关藏品的信息
|
|
|
- // 藏品清单快照信息id对比
|
|
|
- const arrTemp: any = []
|
|
|
- const snapsTemp = data.snaps || []
|
|
|
- snapsTemp.forEach((v: any, i: number) => {
|
|
|
- const obj = JSON.parse(v.snap || '{}')
|
|
|
-
|
|
|
- const flag = v.pageType === 'clue' && !v.clueId
|
|
|
- if (obj.id === null || obj.isNew || flag) obj.id = Date.now() + i
|
|
|
-
|
|
|
- obj.idTemp = obj.id
|
|
|
-
|
|
|
- arrTemp.push(obj)
|
|
|
- })
|
|
|
- // console.log('-------', arrTemp)
|
|
|
-
|
|
|
- setSnapsFu(arrTemp)
|
|
|
- }
|
|
|
- },
|
|
|
- [APIobj, setInfoFu, setSnapsFu]
|
|
|
- )
|
|
|
-
|
|
|
- useEffect(() => {
|
|
|
- if (key === '1') createFu()
|
|
|
- else getInfoFu(id)
|
|
|
- }, [createFu, getInfoFu, id, key, timeKey])
|
|
|
-
|
|
|
- // 页面最上部文字
|
|
|
- const pageKeyTxt = useMemo(() => {
|
|
|
- return Reflect.get(pageKeyTxtObj, key)
|
|
|
- }, [key])
|
|
|
-
|
|
|
// 数据改变
|
|
|
const dataChangeFu = useCallback(
|
|
|
(val: any, item: any) => {
|
|
|
@@ -123,72 +53,12 @@ function EditTopDom({ rowArr, pageTxt, APIobj, fileUpInfo, Tit }: Props) {
|
|
|
[info, setInfoFu]
|
|
|
)
|
|
|
|
|
|
- // 订单申请状态
|
|
|
- const statusTxt = useMemo(() => {
|
|
|
- let txt = ''
|
|
|
- const obj = selectObj['订单审批状态'].find(v => v.value === info.status)
|
|
|
-
|
|
|
- // 新增的时候看不到状态
|
|
|
- if (key !== '1' && obj) txt = obj.label
|
|
|
- return txt
|
|
|
- }, [info.status, key])
|
|
|
-
|
|
|
return (
|
|
|
<div className={styles.EditTop}>
|
|
|
- <div className='pageTitle'>
|
|
|
- {pageTxt}-{pageKeyTxt}
|
|
|
- </div>
|
|
|
-
|
|
|
{info.id ? (
|
|
|
<>
|
|
|
- {key === '3' ? (
|
|
|
- <>
|
|
|
- <div className='EdTit'>
|
|
|
- <div>审批信息</div>
|
|
|
- </div>
|
|
|
- <div className='Edtop1'>
|
|
|
- <div className='Edtop1row Edtop1rowFull'>
|
|
|
- <div className='Edtop1ll'>
|
|
|
- <span>* </span>审批结果:
|
|
|
- </div>
|
|
|
- <div className='Edtop1rr'>
|
|
|
- {auditBtnArr.map(btn => (
|
|
|
- <Button
|
|
|
- key={btn.value}
|
|
|
- type={btn.value === auditInfo.status ? 'primary' : 'default'}
|
|
|
- onClick={() => setAuditInfoFu('status', btn.value)}
|
|
|
- >
|
|
|
- {btn.label}
|
|
|
- </Button>
|
|
|
- ))}
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
- <div className='Edtop1row Edtop1rowFull'>
|
|
|
- <div className='Edtop1ll'>审批意见:</div>
|
|
|
- <div className='Edtop1rr'>
|
|
|
- <TextArea
|
|
|
- placeholder='请输入'
|
|
|
- value={auditInfo.rtfOpinion}
|
|
|
- onChange={e => setAuditInfoFu('rtfOpinion', e.target.value)}
|
|
|
- maxLength={500}
|
|
|
- showCount
|
|
|
- />
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </>
|
|
|
- ) : null}
|
|
|
-
|
|
|
<div className='EdTit'>
|
|
|
- <div>
|
|
|
- {Tit}
|
|
|
- {statusTxt ? (
|
|
|
- <Button className='EdTitBtn' type='dashed'>
|
|
|
- {statusTxt}
|
|
|
- </Button>
|
|
|
- ) : null}
|
|
|
- </div>
|
|
|
+ <div>{Tit}</div>
|
|
|
</div>
|
|
|
<div className='Edtop1'>
|
|
|
{rowArr.map((item, index) => (
|
|
|
@@ -277,14 +147,10 @@ function EditTopDom({ rowArr, pageTxt, APIobj, fileUpInfo, Tit }: Props) {
|
|
|
// 需要过滤掉已经有id的-不替换数据,没有id的替换数据 因为数据可能已经在另外一个弹窗更新了
|
|
|
const nowIds = snaps.map(v => v.id)
|
|
|
const dataRes: GoodsType[] = data.map((v, i) => {
|
|
|
- v.idTemp = v.id + 'clue'
|
|
|
+ v.idTemp = v.id + 'goood'
|
|
|
// 优先使用已存在的snap数据,否则使用新数据
|
|
|
const item = nowIds.includes(v.id) ? snaps[i] : v
|
|
|
- // 如果是线索选择,添加标识
|
|
|
- // if (isClueSelect) {
|
|
|
- // // 因为征集和藏品表分开的,所以在藏品里面拿征集信息,自己加上这个标识
|
|
|
- // return { ...item, pageType: 'clue' }
|
|
|
- // }
|
|
|
+
|
|
|
return item
|
|
|
})
|
|
|
|