Просмотр исходного кода

瞎几把写 我自己都不知道自己写的啥

shaogen1995 недель назад: 2
Родитель
Сommit
082ae0c2ff

+ 4 - 2
src/components/MyTable/index.tsx

@@ -25,6 +25,7 @@ type Props = {
   isNull?: string
   isNull?: string
   // 设置宽度
   // 设置宽度
   widthSet?: any
   widthSet?: any
+  rowKey?: string
 }
 }
 
 
 // 表格内容定制化
 // 表格内容定制化
@@ -58,7 +59,8 @@ function MyTable({
   merge,
   merge,
   myTitle,
   myTitle,
   isNull = '(空)',
   isNull = '(空)',
-  widthSet
+  widthSet,
+  rowKey
 }: Props) {
 }: Props) {
   useEffect(() => {
   useEffect(() => {
     const dom = document.querySelector(`.MyTable${classKey} .ant-table-body`) as HTMLDivElement
     const dom = document.querySelector(`.MyTable${classKey} .ant-table-body`) as HTMLDivElement
@@ -177,7 +179,7 @@ function MyTable({
       scroll={{ y: yHeight ? yHeight : '' }}
       scroll={{ y: yHeight ? yHeight : '' }}
       dataSource={list}
       dataSource={list}
       columns={[...staBtn, ...columns, ...lastBtn]}
       columns={[...staBtn, ...columns, ...lastBtn]}
-      rowKey='id'
+      rowKey={rowKey ? rowKey : 'id'}
       pagination={
       pagination={
         pagingInfo
         pagingInfo
           ? {
           ? {

+ 3 - 3
src/pages/Eculture/E2story/E2edit/index.tsx

@@ -9,7 +9,7 @@ import TextArea from 'antd/es/input/TextArea'
 import MyPopconfirm from '@/components/MyPopconfirm'
 import MyPopconfirm from '@/components/MyPopconfirm'
 import { storyAndGoodsTableC, goodsSonTableC } from '@/utils/tableData'
 import { storyAndGoodsTableC, goodsSonTableC } from '@/utils/tableData'
 import { Button, Input } from 'antd'
 import { Button, Input } from 'antd'
-import history, { backPageFu } from '@/utils/history'
+import { backPageFu } from '@/utils/history'
 import { useParams } from 'react-router-dom'
 import { useParams } from 'react-router-dom'
 import { API_getFileListByIds } from '@/store/action/Cledger/C4file'
 import { API_getFileListByIds } from '@/store/action/Cledger/C4file'
 import { API_getGoodsList } from '@/store/action/Cledger/C1ledger'
 import { API_getGoodsList } from '@/store/action/Cledger/C1ledger'
@@ -219,7 +219,7 @@ function E2edit() {
         <div className={styles.EditBtn}>
         <div className={styles.EditBtn}>
           {isView ? (
           {isView ? (
             <div>
             <div>
-              <Button type='default' onClick={() => backPageFu('-1')}>
+              <Button type='default' onClick={() => backPageFu('/story')}>
                 返回
                 返回
               </Button>
               </Button>
             </div>
             </div>
@@ -228,7 +228,7 @@ function E2edit() {
               <Button type='primary' onClick={() => submitFu()}>
               <Button type='primary' onClick={() => submitFu()}>
                 提交
                 提交
               </Button>
               </Button>
-              <MyPopconfirm txtK='取消' onConfirm={() => backPageFu('-1')} />
+              <MyPopconfirm txtK='取消' onConfirm={() => backPageFu('/story')} />
             </div>
             </div>
           )}
           )}
         </div>
         </div>

+ 1 - 6
src/pages/Zother/AddGoods/index.tsx

@@ -15,7 +15,6 @@ import { API_getGoodsInfo } from '@/store/action/Cledger/C1ledger'
 import { MessageFu } from '@/utils/message'
 import { MessageFu } from '@/utils/message'
 import { API_getFileListByIds } from '@/store/action/Cledger/C4file'
 import { API_getFileListByIds } from '@/store/action/Cledger/C4file'
 import { FileUpInfoType } from '../data'
 import { FileUpInfoType } from '../data'
-import { useInfo } from '../InfoContext'
 
 
 // 级联的数据转换成字符串
 // 级联的数据转换成字符串
 export const cascaderChArr = [
 export const cascaderChArr = [
@@ -50,8 +49,6 @@ type Props = {
 }
 }
 
 
 function AddGoods({ closeFu, succFu, isEdit, moduleId, info, APIsave, fileUpInfo }: Props) {
 function AddGoods({ closeFu, succFu, isEdit, moduleId, info, APIsave, fileUpInfo }: Props) {
-  const { delSnapIdsRef } = useInfo()
-
   // 获取标签 树结构
   // 获取标签 树结构
   const E1tree = useSelector((state: RootState) => state.E1tag.treeData)
   const E1tree = useSelector((state: RootState) => state.E1tag.treeData)
 
 
@@ -166,15 +163,13 @@ function AddGoods({ closeFu, succFu, isEdit, moduleId, info, APIsave, fileUpInfo
         const resObj = { ...res.data }
         const resObj = { ...res.data }
         if (info.pageType === 'clue') {
         if (info.pageType === 'clue') {
           resObj.clueId = info.id
           resObj.clueId = info.id
-          if (info.id2 && !delSnapIdsRef.current.includes(info.id2))
-            delSnapIdsRef.current.push(info.id2)
         }
         }
 
 
         succFu(info.id > 0 ? '编辑' : '新增', resObj)
         succFu(info.id > 0 ? '编辑' : '新增', resObj)
         closeFu()
         closeFu()
       }
       }
     },
     },
-    [APIsave, closeFu, delSnapIdsRef, info, succFu]
+    [APIsave, closeFu, info, succFu]
   )
   )
 
 
   return (
   return (

+ 2 - 5
src/pages/Zother/EditBtn/index.tsx

@@ -31,7 +31,7 @@ function EditBtn({
   verifyArr = [{ key: 'num', txt: '请输入申请编号' }],
   verifyArr = [{ key: 'num', txt: '请输入申请编号' }],
   verifyBackFu
   verifyBackFu
 }: Props) {
 }: Props) {
-  const { info, snaps, delSnapIdsRef, setTimeKeyFu, auditInfo } = useInfo()
+  const { info, snaps, setTimeKeyFu, auditInfo } = useInfo()
 
 
   const [btnCan, setBtnCan] = useState({ status: 0, creatorId: 0 })
   const [btnCan, setBtnCan] = useState({ status: 0, creatorId: 0 })
 
 
@@ -97,7 +97,6 @@ function EditBtn({
 
 
           snapsArr.push({
           snapsArr.push({
             goodId: v.isNew || flag ? null : v.id,
             goodId: v.isNew || flag ? null : v.id,
-            id: v.id2 ? v.id2 : null,
             orderId: info.id,
             orderId: info.id,
             snap: JSON.stringify({
             snap: JSON.stringify({
               ...v,
               ...v,
@@ -111,12 +110,11 @@ function EditBtn({
           fileIds: fileIdsResFu(info.files),
           fileIds: fileIdsResFu(info.files),
           goodIds: goodIdArr.join(','),
           goodIds: goodIdArr.join(','),
           collectIds: collectIdArr.join(','),
           collectIds: collectIdArr.join(','),
-          delSnapIds: delSnapIdsRef.current.length ? delSnapIdsRef.current : '',
           snaps: snapsArr
           snaps: snapsArr
         }
         }
 
 
         // if (1 + 1 === 2) {
         // if (1 + 1 === 2) {
-        //   console.log('xxxxxxxxx', obj)
+        //   console.log('xxxxxxxxx', obj.snaps)
         //   return
         //   return
         // }
         // }
 
 
@@ -231,7 +229,6 @@ function EditBtn({
       APIobj,
       APIobj,
       auditInfo,
       auditInfo,
       checkListTxt,
       checkListTxt,
-      delSnapIdsRef,
       info,
       info,
       isLook,
       isLook,
       key,
       key,

+ 4 - 21
src/pages/Zother/EditTop/index.tsx

@@ -36,16 +36,7 @@ type Props = {
 }
 }
 
 
 function EditTop({ rowArr, pageTxt, APIobj, fileUpInfo }: Props) {
 function EditTop({ rowArr, pageTxt, APIobj, fileUpInfo }: Props) {
-  const {
-    info,
-    setInfoFu,
-    setSnapsFu,
-    snapsID2ref,
-    timeKey,
-    auditInfo,
-    setAuditInfoFu,
-    delSnapIdsRef
-  } = useInfo()
+  const { info, setInfoFu, setSnapsFu, timeKey, auditInfo, setAuditInfoFu } = useInfo()
 
 
   const { key, id } = useParams<any>()
   const { key, id } = useParams<any>()
   // key:1 新增 2编辑 3审批 4查看
   // key:1 新增 2编辑 3审批 4查看
@@ -67,9 +58,6 @@ function EditTop({ rowArr, pageTxt, APIobj, fileUpInfo }: Props) {
     async (id: number) => {
     async (id: number) => {
       const res = await APIobj['获取详情'](id)
       const res = await APIobj['获取详情'](id)
       if (res.code === 0) {
       if (res.code === 0) {
-        // 这里需要清空这个数组重置数据。不然页面key变化的时候数据一直push
-        delSnapIdsRef.current = []
-
         // 回到顶部
         // 回到顶部
         editPageToTopFu()
         editPageToTopFu()
 
 
@@ -81,18 +69,13 @@ function EditTop({ rowArr, pageTxt, APIobj, fileUpInfo }: Props) {
         const arrTemp: any = []
         const arrTemp: any = []
         const snapsTemp = data.snaps || []
         const snapsTemp = data.snaps || []
         snapsTemp.forEach((v: any, i: number) => {
         snapsTemp.forEach((v: any, i: number) => {
-          const tempArr: any[] = []
-          tempArr.push({ goodId: v.goodId, id: v.id })
-
-          // 这里不能push,需要重新赋值
-          snapsID2ref.current = tempArr
-
           const obj = JSON.parse(v.snap || '{}')
           const obj = JSON.parse(v.snap || '{}')
 
 
           const flag = v.pageType === 'clue' && !v.clueId
           const flag = v.pageType === 'clue' && !v.clueId
           if (obj.id === null || obj.isNew || flag) obj.id = Date.now() + i
           if (obj.id === null || obj.isNew || flag) obj.id = Date.now() + i
 
 
-          if (obj.id) obj.id2 = v.id
+          v.idTemp = v.id
+
           arrTemp.push(obj)
           arrTemp.push(obj)
         })
         })
         // console.log('-------', arrTemp)
         // console.log('-------', arrTemp)
@@ -100,7 +83,7 @@ function EditTop({ rowArr, pageTxt, APIobj, fileUpInfo }: Props) {
         setSnapsFu(arrTemp)
         setSnapsFu(arrTemp)
       }
       }
     },
     },
-    [APIobj, delSnapIdsRef, setInfoFu, setSnapsFu, snapsID2ref]
+    [APIobj, setInfoFu, setSnapsFu]
   )
   )
 
 
   useEffect(() => {
   useEffect(() => {

+ 1 - 11
src/pages/Zother/InfoContext.tsx

@@ -1,16 +1,12 @@
-import { createContext, ReactNode, useCallback, useContext, useMemo, useRef, useState } from 'react'
+import { createContext, ReactNode, useCallback, useContext, useMemo, useState } from 'react'
 import { Typetable } from './data'
 import { Typetable } from './data'
 import { GoodsType } from './SonGoodsList/data'
 import { GoodsType } from './SonGoodsList/data'
 
 
-export type SnapsID2refType = { goodId: number; id: number }
-
 type InfoContextValue = {
 type InfoContextValue = {
   info: Typetable
   info: Typetable
   setInfoFu: (info: Typetable | ((prevInfo: Typetable) => Typetable)) => void
   setInfoFu: (info: Typetable | ((prevInfo: Typetable) => Typetable)) => void
   snaps: GoodsType[]
   snaps: GoodsType[]
   setSnapsFu: (snaps: GoodsType[]) => void
   setSnapsFu: (snaps: GoodsType[]) => void
-  delSnapIdsRef: React.MutableRefObject<number[]>
-  snapsID2ref: React.MutableRefObject<SnapsID2refType[]>
   timeKey: number
   timeKey: number
   setTimeKeyFu: () => void
   setTimeKeyFu: () => void
   auditInfo: { status: number; rtfOpinion: string }
   auditInfo: { status: number; rtfOpinion: string }
@@ -62,18 +58,12 @@ export function InfoProvider({ children }: Props) {
     setSnaps(snaps)
     setSnaps(snaps)
   }, [])
   }, [])
 
 
-  // 藏品清单快照数据
-  const delSnapIdsRef = useRef<number[]>([])
-  const snapsID2ref = useRef<SnapsID2refType[]>([])
-
   const value = useMemo(
   const value = useMemo(
     () => ({
     () => ({
       info,
       info,
       setInfoFu,
       setInfoFu,
       snaps,
       snaps,
       setSnapsFu,
       setSnapsFu,
-      delSnapIdsRef,
-      snapsID2ref,
       timeKey,
       timeKey,
       setTimeKeyFu,
       setTimeKeyFu,
       auditInfo,
       auditInfo,

+ 5 - 14
src/pages/Zother/SonClueList/index.tsx

@@ -16,7 +16,7 @@ type Props = {
 }
 }
 
 
 function SonClueList({ fileUpInfo }: Props) {
 function SonClueList({ fileUpInfo }: Props) {
-  const { info, snaps, setSnapsFu, delSnapIdsRef, snapsID2ref } = useInfo()
+  const { info, snaps, setSnapsFu } = useInfo()
 
 
   const { key } = useParams<any>()
   const { key } = useParams<any>()
   // key:1 新增 2编辑 3审批 4查看
   // key:1 新增 2编辑 3审批 4查看
@@ -61,9 +61,6 @@ function SonClueList({ fileUpInfo }: Props) {
                 <MyPopconfirm
                 <MyPopconfirm
                   txtK='删除'
                   txtK='删除'
                   onConfirm={() => {
                   onConfirm={() => {
-                    if (item.id2 && !delSnapIdsRef.current.includes(item.id2)) {
-                      delSnapIdsRef.current.push(item.id2)
-                    }
                     setSnapsFu(snaps.filter(v => v.id !== item.id))
                     setSnapsFu(snaps.filter(v => v.id !== item.id))
                   }}
                   }}
                 />
                 />
@@ -73,7 +70,7 @@ function SonClueList({ fileUpInfo }: Props) {
         )
         )
       }
       }
     ]
     ]
-  }, [delSnapIdsRef, isLook, setSnapsFu, snaps])
+  }, [isLook, setSnapsFu, snaps])
 
 
   return (
   return (
     <div className={styles.SonClueList}>
     <div className={styles.SonClueList}>
@@ -114,20 +111,14 @@ function SonClueList({ fileUpInfo }: Props) {
           closeFu={() => setOpenInfo({} as GoodsType)}
           closeFu={() => setOpenInfo({} as GoodsType)}
           moduleId={info.id}
           moduleId={info.id}
           succFu={(val: '新增' | '编辑', info: GoodsType) => {
           succFu={(val: '新增' | '编辑', info: GoodsType) => {
-            let objTemp = { ...info }
-            const id2Obj = snapsID2ref.current.find(c => c.goodId === objTemp.id)
-            if (id2Obj) objTemp.id2 = id2Obj.id
-            if (val === '新增') {
-              // 是新增
-              setSnapsFu([objTemp, ...snaps])
-            } else {
+            if (val === '新增') setSnapsFu([info, ...snaps])
+            else
               setSnapsFu(
               setSnapsFu(
                 snaps.map(v => {
                 snaps.map(v => {
-                  if (v.id === objTemp.id) return objTemp
+                  if (v.id === info.id) return info
                   else return v
                   else return v
                 })
                 })
               )
               )
-            }
           }}
           }}
         />
         />
       ) : null}
       ) : null}

+ 1 - 1
src/pages/Zother/SonGoodsList/data.ts

@@ -12,7 +12,7 @@ export type GoodsType = {
   file: any[]
   file: any[]
   fileIds: string
   fileIds: string
   id: number
   id: number
-  id2: number
+  idTemp: string
   inGoodYear: string
   inGoodYear: string
   inGoodYearScope: string
   inGoodYearScope: string
   intro: string
   intro: string

+ 17 - 36
src/pages/Zother/SonGoodsList/index.tsx

@@ -41,7 +41,7 @@ function SonGoodsList({
   btnTxt,
   btnTxt,
   addShow = true
   addShow = true
 }: Props) {
 }: Props) {
-  const { info, snaps, setSnapsFu, delSnapIdsRef, snapsID2ref } = useInfo()
+  const { info, snaps, setSnapsFu } = useInfo()
 
 
   const { key } = useParams<any>()
   const { key } = useParams<any>()
   // key:1 新增 2编辑 3审批 4查看
   // key:1 新增 2编辑 3审批 4查看
@@ -74,9 +74,6 @@ function SonGoodsList({
                   <MyPopconfirm
                   <MyPopconfirm
                     txtK='删除'
                     txtK='删除'
                     onConfirm={() => {
                     onConfirm={() => {
-                      if (item.id2 && !delSnapIdsRef.current.includes(item.id2)) {
-                        delSnapIdsRef.current.push(item.id2)
-                      }
                       setSnapsFu(snaps.filter(v => v.id !== item.id))
                       setSnapsFu(snaps.filter(v => v.id !== item.id))
                     }}
                     }}
                   />
                   />
@@ -87,7 +84,7 @@ function SonGoodsList({
         }
         }
       }
       }
     ]
     ]
-  }, [addShow, delSnapIdsRef, isLook, setSnapsFu, snaps])
+  }, [addShow, isLook, setSnapsFu, snaps])
 
 
   // 从征集线索中添加
   // 从征集线索中添加
   const [clueShow, setClueShow] = useState(false)
   const [clueShow, setClueShow] = useState(false)
@@ -113,6 +110,7 @@ function SonGoodsList({
       </div>
       </div>
       <div className='SonGoodsListTable'>
       <div className='SonGoodsListTable'>
         <MyTable
         <MyTable
+          rowKey='idTemp'
           classKey='SonGoodsList'
           classKey='SonGoodsList'
           list={snaps}
           list={snaps}
           columnsTemp={goodsSonTableC()}
           columnsTemp={goodsSonTableC()}
@@ -128,21 +126,17 @@ function SonGoodsList({
           isEdit={false}
           isEdit={false}
           closeFu={() => setOpenInfo({} as GoodsType)}
           closeFu={() => setOpenInfo({} as GoodsType)}
           moduleId={info.id}
           moduleId={info.id}
-          succFu={(val: '新增' | '编辑', info: GoodsType) => {
-            let objTemp = { ...info }
-            const id2Obj = snapsID2ref.current.find(c => c.goodId === objTemp.id)
-            if (id2Obj) objTemp.id2 = id2Obj.id
-            if (val === '新增') {
-              // 是新增
-              setSnapsFu([objTemp, ...snaps])
-            } else {
+          succFu={(val: '新增' | '编辑', infoTemp: GoodsType) => {
+            const info: GoodsType = { ...infoTemp, idTemp: infoTemp.id + 'goods' }
+
+            if (val === '新增') setSnapsFu([info, ...snaps])
+            else
               setSnapsFu(
               setSnapsFu(
                 snaps.map(v => {
                 snaps.map(v => {
-                  if (v.id === objTemp.id || v.id === objTemp.clueId) return objTemp
+                  if (v.id === info.id || v.id === info.clueId) return info
                   else return v
                   else return v
                 })
                 })
               )
               )
-            }
           }}
           }}
         />
         />
       ) : null}
       ) : null}
@@ -158,31 +152,18 @@ function SonGoodsList({
           closeFu={() => setClueShow(false)}
           closeFu={() => setClueShow(false)}
           oldCheckArr={snaps}
           oldCheckArr={snaps}
           dataResFu={data => {
           dataResFu={data => {
-            //需要过滤掉已经有id的-不替换数据,没有id的替换数据 因为数据可能已经在另外一个弹窗更新了
+            // 需要过滤掉已经有id的-不替换数据,没有id的替换数据 因为数据可能已经在另外一个弹窗更新了
             const nowIds = snaps.map(v => v.id)
             const nowIds = snaps.map(v => v.id)
-            let dataRes = data.map((v, i) => {
-              if (nowIds.includes(v.id)) {
-                if (v.id2 && delSnapIdsRef.current.includes(v.id2)) {
-                  delSnapIdsRef.current = delSnapIdsRef.current.filter(c => c !== v.id2)
-                }
-                return snaps[i]
-              } else {
-                if (v.id2 && !delSnapIdsRef.current.includes(v.id2)) {
-                  delSnapIdsRef.current.push(v.id2)
-                }
-                return v
-              }
-            })
-
-            dataRes.forEach(v => {
+            const dataRes: GoodsType[] = data.map((v, i) => {
+              v.idTemp = v.id + 'clue'
+              // 优先使用已存在的snap数据,否则使用新数据
+              const item = nowIds.includes(v.id) ? snaps[i] : v
+              // 如果是线索选择,添加标识
               if (isClueSelect) {
               if (isClueSelect) {
                 // 因为征集和藏品表分开的,所以在藏品里面拿征集信息,自己加上这个标识
                 // 因为征集和藏品表分开的,所以在藏品里面拿征集信息,自己加上这个标识
-                v.pageType = 'clue'
+                return { ...item, pageType: 'clue' }
               }
               }
-              // id2表示的是自己这条数据的id id才是goodId
-              const obj = snapsID2ref.current.find(c => c.goodId === v.id)
-
-              if (obj) v.id2 = obj.id
+              return item
             })
             })
 
 
             setSnapsFu(dataRes)
             setSnapsFu(dataRes)