import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react' import styles from './index.module.scss' import { useParams } from 'react-router-dom' import { Button, Input } from 'antd' import MyPopconfirm from '@/components/MyPopconfirm' import { B2_APIcreate, B2_APIdel, B2_APIgetInfo, B2_APIrevocation, B2_APIsaveApply, B2_APIsaveAudit, B2_APIsaveCreate, B2_APIsaveDraft } from '@/store/action/B2identify' import { MessageFu } from '@/utils/message' import history, { btnFlagFu2 } from '@/utils/history' import { EXbtnFu } from '@/utils/EXBtn' import { pageTitTxtObj } from '@/pages/D_storeManage/D4impStor/D4edit' import X3auditInfo from '@/pages/X_stock/X3auditInfo' import { B2TableC2, statusObj } from '@/utils/tableData' import TextArea from 'antd/es/input/TextArea' import MyTable from '@/components/MyTable' import ZflowTable from '../../../../components/ZflowTable' import ZupFileTable from '@/components/ZupFileTable' import ZGaddNow from '../../../../components/ZGaddNow' import Y1cathet from '@/pages/Y_goodsDetails/Y1cathet' import { C1GoodType } from '@/pages/A3_ledger/C1ledger/type' import classNames from 'classnames' import B2MoAdd from './B2MoAdd' import { B2keyFliterFu } from '../data' import { FourTableType } from '../../B1collect/type' function B2edit() { const { key, id } = useParams() // key:1 新增 2编辑 3审批 4查看 // 滚到顶部 const sollrDom = useRef(null) // 顶部数据 const [topInfo, setTopInfo] = useState({} as FourTableType) // 藏品清单快照数据 const [snaps, setSnaps] = useState([]) const delSnapIdsRef = useRef([]) const snapsID2ref = useRef<{ goodsId: number; id: number }[]>([]) // -------新增藏品-新字段------------- const [openInfo, setOpenInfo] = useState({} as C1GoodType) // 打开侧边栏 const [cathet, setCathet] = useState(0) const startBtn = useMemo(() => { return [ { title: '藏品编号', render: (item: C1GoodType) => { return ( setCathet(item.id)} className={classNames('D1GtNum', item.id === cathet ? 'D1GtNumAc' : '')} > {item.num || '(空)'} ) } } ] }, [cathet]) const tableLastBtn = useMemo(() => { return [ { title: '操作', render: (item: any) => { return ( <> {['3', '4'].includes(key) ? null : ( { if (item.id2 && !delSnapIdsRef.current.includes(item.id2)) delSnapIdsRef.current.push(item.id2) setSnaps(snaps.filter(v => v.id !== item.id)) }} /> )} ) } } ] }, [snaps, key]) // -------新增藏品-新字段------------- // 创建订单 const creatFu = useCallback(async () => { const res = await B2_APIcreate() if (res.code === 0) { setTopInfo(res.data) } }, []) // 获取详情 const getInfoFu = useCallback(async () => { const res = await B2_APIgetInfo(id) if (res.code === 0) { const data = res.data setTopInfo(data) // 藏品清单快照信息id对比 const arrTemp: any = [] const snapsTemp = data.snaps || [] snapsTemp.forEach((v: any) => { snapsID2ref.current.push({ goodsId: v.goodsId, id: v.id }) const obj = JSON.parse(v.snap || '{}') if (obj.id) obj.id2 = v.id arrTemp.push(obj) }) setSnaps(arrTemp) } }, [id]) useEffect(() => { if (key === '1') creatFu() else getInfoFu() if (sollrDom.current) sollrDom.current.scrollTop = 0 }, [creatFu, getInfoFu, key]) // 审批意见的ref const ZAuditRef = useRef(null) // 审批的sta const [auditSta, setAuDitSta] = useState('') // 新增的底部按钮点击 const btnClickFu = useCallback( async (val: '草稿' | '创建' | '保存' | '审批') => { if (val !== '草稿') { if (snaps.length === 0) return MessageFu.warning('请添加藏品') } if (val === '审批') { // console.log('审批信息富文本', rtf2) if (!auditSta) { if (sollrDom.current) sollrDom.current.scrollTop = 0 return MessageFu.warning('请选择审批结果') } const rtf2 = ZAuditRef.current?.resData() const res = await B2_APIsaveAudit({ orderId: topInfo.id, rtfOpinion: rtf2, status: auditSta === '同意' ? 1 : 2 }) if (res.code === 0) { MessageFu.success('审批成功') // 跳详情页 history.push(`/identify_edit/4/${topInfo.id}`) } } else { const obj = { ...topInfo, goodsIds: snaps.map(v => v.id).join(','), delSnapIds: delSnapIdsRef.current.length ? delSnapIdsRef.current : '', snaps: snaps.map(v => ({ goodsId: v.id, id: v.id2 ? v.id2 : null, orderId: topInfo.id, snap: JSON.stringify(B2keyFliterFu(v)) })) } // console.log(123, obj) // if (1 + 1 === 2) return if (val === '草稿') { // 存草稿 当前页保存 不跳转 const res = await B2_APIsaveDraft(obj) if (res.code === 0) { MessageFu.success('草稿保存成功') } } else { const res = val === '创建' ? await B2_APIsaveCreate(obj) : await B2_APIsaveApply(obj) if (res.code === 0) { MessageFu.success(`${val}成功`) // 跳到详情页 history.push(`/identify_edit/4/${topInfo.id}`) } } } }, [auditSta, snaps, topInfo] ) // 查看的按钮创建-提交-撤回 const lookBtnFu = useCallback( async (val: '创建' | '提交' | '撤回') => { if (val !== '撤回') { if (snaps.length === 0) return MessageFu.warning('请添加藏品') } const obj = { ...topInfo, goodsIds: snaps.map(v => v.id).join(','), delSnapIds: delSnapIdsRef.current.length ? delSnapIdsRef.current : '', snaps: snaps.map(v => ({ goodsId: v.id, id: v.id2 ? v.id2 : null, orderId: topInfo.id, snap: JSON.stringify(B2keyFliterFu(v)) })) } const res = val === '创建' ? await B2_APIsaveCreate(obj) : val === '提交' ? await B2_APIsaveApply(obj) : await B2_APIrevocation(id) if (res.code === 0) { if (sollrDom.current) sollrDom.current.scrollTop = 0 MessageFu.success(val + '成功') getInfoFu() } }, [snaps, getInfoFu, id, topInfo] ) // 查看模式点击删除 const delFu = useCallback(async () => { const res = await B2_APIdel(id) if (res.code === 0) { MessageFu.success('删除成功') history.push('/identify') } }, [id]) // 查看模式点击审批 编辑 const lookJumpFu = useCallback( (val: '审批' | '编辑') => { history.push(`/identify_edit/${val === '审批' ? 3 : 2}/${id}`) MessageFu.success(`已跳转至${val}页面`) }, [id] ) // 查看模式下的按钮 const lookBtn = useMemo(() => { return ( <> {btnFlagFu2(topInfo)['创建'] ? ( ) : null} {btnFlagFu2(topInfo)['提交'] ? ( ) : null} {btnFlagFu2(topInfo)['撤回'] ? ( lookBtnFu('撤回')} Dom={ } /> ) : null} {btnFlagFu2(topInfo)['审批'] ? ( ) : null} {btnFlagFu2(topInfo)['编辑'] ? ( ) : null} {btnFlagFu2(topInfo)['重新提交'] ? ( ) : null} {EXbtnFu(topInfo)} {btnFlagFu2(topInfo)['删除'] ? ( delFu()} Dom={ } /> ) : null} ) }, [delFu, lookBtnFu, lookJumpFu, topInfo]) // 申请记录 const [auditsShow, setAuditsShow] = useState(false) // 点击新增 const [nowSta, setNowSta] = useState({ key: '', id: '' }) return (
藏品鉴定-{Reflect.get(pageTitTxtObj, key)}
{['3'].includes(key) ? ( setAuDitSta(val)} ref={ZAuditRef} /> ) : null} {/* 表单字段、附件等 */}
申请信息 {key === '1' ? null : ( )}
业务单号:
{topInfo.num}
业务名称:
{topInfo.name}
发起人:
{topInfo.creatorName} {['3', '4'].includes(key) ? ' - ' + topInfo.createTime || '' : ''}
发起部门:
{topInfo.deptName}
鉴定单位:
setTopInfo({ ...topInfo, authUnit: e.target.value })} placeholder={['3', '4'].includes(key) ? '(空)' : '请填入内容'} />
核准单位:
setTopInfo({ ...topInfo, confirmUnit: e.target.value })} placeholder={['3', '4'].includes(key) ? '(空)' : '请填入内容'} />
鉴定人员: