shaogen1995 1 час назад
Родитель
Сommit
45eed4c8c9

+ 8 - 3
public/myData/index.js

@@ -103,10 +103,10 @@ const dictStrTemp = {
     { value: '未定级', label: '未定级' }
   ],
   相符情况: [
-    { value: '相符 注:总登记账数量=相符件数', label: '相符 注:总登记账数量=相符件数' },
-    { value: '不相符 注:不相符数量不为0', label: '不相符 注:不相符数量不为0' }
+    { value: '相符', label: '相符' },
+    { value: '不相符', label: '不相符' }
   ],
-  不符情: [
+  不符情: [
     { value: '数量不符', label: '数量不符' },
     { value: '赝品/复仿制品', label: '赝品/复仿制品' },
     { value: '长期出借,无法确认', label: '长期出借,无法确认' },
@@ -123,5 +123,10 @@ const dictStrTemp = {
   生效状态: [
     { value: '生效中', label: '生效中' },
     { value: '已作废', label: '已作废' }
+  ],
+  盘点状态: [
+    { value: '未盘点', label: '未盘点' },
+    { value: '已盘点', label: '已盘点' },
+    { value: '待核实', label: '待核实' }
   ]
 }

+ 1 - 1
src/assets/styles/base.css

@@ -167,7 +167,7 @@ textarea {
 .pageTitle::before {
   position: absolute;
   left: 20px;
-  top: 50%;
+  top: 45%;
   transform: translateY(-50%);
   content: '';
   width: 6px;

+ 1 - 1
src/assets/styles/base.less

@@ -212,7 +212,7 @@ textarea {
   &::before {
     position: absolute;
     left: 20px;
-    top: 50%;
+    top: 45%;
     transform: translateY(-50%);
     content: '';
     width: 6px;

+ 17 - 6
src/pages/A1check/A1ledger/index.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, useRef } from 'react'
+import React, { useCallback, useMemo, useRef } from 'react'
 import styles from './index.module.scss'
 import TopSearch from '@/pages/ZcomPage/TopSearch'
 import { A1tableType, A1topArr } from './data'
@@ -6,7 +6,7 @@ import AAbtn from '@/pages/ZcomPage/AAbtn'
 import { MessageFu } from '@/utils/message'
 import { Button } from 'antd'
 import { downloadFileByUrl, openLink } from '@/utils/history'
-import { A1_APIgetList } from '@/store/action/A1check/A1ledger'
+import { A1_APIgetList, A1_APIreset } from '@/store/action/A1check/A1ledger'
 import { useSelector } from 'react-redux'
 import { RootState } from '@/store'
 import UpBtn from '@/pages/ZcomPage/UpBtn'
@@ -38,15 +38,22 @@ function A1ledger() {
 
   const tableInfo = useSelector((state: RootState) => state.A1ledger.tableInfo)
 
+  const resetFu = useCallback(async () => {
+    const res = await A1_APIreset()
+    if (res.code === 0) {
+      MessageFu.success('重置数据成功')
+      topDomRef.current.clickReset()
+    }
+  }, [])
+
   return (
     <div className={styles.A1ledger}>
       <div className='pageTitle'>
         盘库总账
         <AAbtn
-          // 待完善
           txt={3}
           txtArr={['该操作将清空藏品盘点所有相关数据,请谨慎操作', '清空数据']}
-          onClick={() => {}}
+          onClick={resetFu}
           tit='重置盘点数据'
           width={120}
         />
@@ -57,7 +64,7 @@ function A1ledger() {
         leftArr={A1topArr}
         rightBtn={rightBtn}
         waiWidth={490}
-        sonWidth='13.3%'
+        sonWidth='13.8%'
         getListAPI={A1_APIgetList}
         tableInfo={tableInfo}
         columnsTemp={[
@@ -83,7 +90,11 @@ function A1ledger() {
             width: 100,
             render: (item: A1tableType) => {
               return (
-                <Button size='small' type='text' onClick={() => openLink(`/goodsLook/${item.id}`)}>
+                <Button
+                  size='small'
+                  type='text'
+                  onClick={() => openLink(`/goodsLook/${item.numName || null}/${item.num || null}`)}
+                >
                   查看
                 </Button>
               )

+ 61 - 0
src/pages/A1check/A2manage/A2info/index.module.scss

@@ -0,0 +1,61 @@
+.A2info {
+  position: absolute;
+  top: 0;
+  left: 0;
+  z-index: 10;
+  width: 100%;
+  height: 100%;
+  background-color: #fcf9f5;
+  border-radius: 10px;
+  padding: 15px 24px 0;
+  :global {
+    .A2Itit {
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      .A2Itit1 {
+        font-size: 18px;
+        font-weight: 700;
+        & > span {
+          font-weight: 400;
+          font-size: 14px;
+          margin-left: 20px;
+        }
+      }
+      .A2Itit2 {
+        display: flex;
+      }
+    }
+    .A2top {
+      margin: 15px 0;
+      display: flex;
+      flex-wrap: wrap;
+      justify-content: flex-start;
+      align-content: flex-start;
+      .A2topRow {
+        display: flex;
+        font-size: 16px;
+        border: 1px solid #dfcece;
+        // border-right: 0;
+        & > div {
+          text-align: center;
+          font-weight: 700;
+          width: 110px;
+          background-color: #ecdfce;
+          padding: 8px 0;
+        }
+        & > p {
+          padding: 8px 0;
+          padding-left: 10px;
+          width: calc(100% - 110px);
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+        }
+      }
+    }
+    .ant-table-cell {
+      padding: 8px !important;
+    }
+  }
+}

+ 123 - 0
src/pages/A1check/A2manage/A2info/index.tsx

@@ -0,0 +1,123 @@
+import React, { useCallback, useEffect, useRef, useState } from 'react'
+import styles from './index.module.scss'
+import { GoodsType } from '@/pages/AAnew/data'
+import { Button } from 'antd'
+import AAbtn from '@/pages/ZcomPage/AAbtn'
+import { A2_APIgetInfo, A2_APIgetListSon } from '@/store/action/A1check/A2manage'
+import { MessageFu } from '@/utils/message'
+import TopSearch from '@/pages/ZcomPage/TopSearch'
+import { A2columns, A2topArr } from '../data'
+import { openLink } from '@/utils/history'
+import { useSelector } from 'react-redux'
+import { RootState } from '@/store'
+
+const txtArr: any[] = [
+  { key: 'name', name: '盘点名称' },
+  { key: 'effect', name: '生效状态' },
+  { key: 'handler', name: '经办人' },
+  { key: 'remark', name: '盘点说明', width: '66%' },
+  { key: 'owner', name: '负责人' }
+]
+
+type Props = {
+  sId: number
+  closeFu: () => void
+}
+
+function A2info({ sId, closeFu }: Props) {
+  const [info, setInfo] = useState({} as GoodsType)
+
+  const getInfoFu = useCallback(async () => {
+    const res = await A2_APIgetInfo(sId)
+    if (res.code === 0) {
+      setInfo(res.data)
+    }
+  }, [sId])
+
+  useEffect(() => {
+    getInfoFu()
+  }, [getInfoFu])
+
+  const tab2Ref = useRef<any>(null)
+
+  const tableInfoSon = useSelector((state: RootState) => state.A2manage.tableInfoSon)
+
+  return (
+    <div className={styles.A2info}>
+      {info.id ? (
+        <>
+          <div className='A2Itit'>
+            <div className='A2Itit1'>盘点详情</div>
+            <div className='A2Itit2'>
+              <AAbtn txt={2} onClick={closeFu} tit='返回' />
+            </div>
+          </div>
+
+          <div className='A2top'>
+            {txtArr.map((item, index) => (
+              <div key={index} className='A2topRow' style={{ width: item.width || '33%' }}>
+                <div>{item.name}</div>
+                <p title={item.resFu ? item.resFu(info) : info[item.key]}>
+                  {item.resFu ? item.resFu(info) : info[item.key] || '(空)'}
+                </p>
+              </div>
+            ))}
+          </div>
+
+          <div className='A2Itit'>
+            <div className='A2Itit1'>
+              {/*  // 待完善 */}
+              盘点藏品 <span>账物相符 190 | 账物不符 10 | 待登记 0</span>
+            </div>
+            <div className='A2Itit2'>
+              <AAbtn txt={1} onClick={() => MessageFu.warning('功能开发中')} tit='新增' />
+            </div>
+          </div>
+
+          <TopSearch
+            waiId={info.id}
+            classKey='A2info'
+            yHeight={450}
+            ref={tab2Ref}
+            leftArr={A2topArr}
+            rightBtn={
+              <>
+                <AAbtn txt={1} onClick={() => tab2Ref.current.clickSearch()} tit='查询' />
+                <AAbtn txt={2} onClick={() => tab2Ref.current.clickReset()} />
+              </>
+            }
+            waiWidth={190}
+            sonWidth='10.7%'
+            getListAPI={A2_APIgetListSon}
+            tableInfo={tableInfoSon}
+            columnsTemp={A2columns('详情')}
+            tableLastBtn={[
+              {
+                title: '操作',
+                fixed: 'right',
+                width: 100,
+                render: (item: any) => {
+                  return (
+                    <Button
+                      size='small'
+                      type='text'
+                      onClick={() =>
+                        openLink(`/goodsLook/${item.numName || null}/${item.num || null}`)
+                      }
+                    >
+                      查看
+                    </Button>
+                  )
+                }
+              }
+            ]}
+          />
+        </>
+      ) : null}
+    </div>
+  )
+}
+
+const MemoA2info = React.memo(A2info)
+
+export default MemoA2info

+ 9 - 10
src/pages/A1check/A2manage/A2tab1/index.tsx

@@ -8,7 +8,11 @@ import MyTable from '@/components/MyTable'
 import { RootState } from '@/store'
 import { Button } from 'antd'
 
-function A2tab1(_: any, ref: any) {
+type Props = {
+  setLookIdFu: (id: number) => void
+}
+
+function A2tab1({ setLookIdFu }: Props, ref: any) {
   const dispatch = useDispatch()
 
   const [formData, setFormData] = useState<any>({ pageNum: 1, pageSize: 10 })
@@ -44,12 +48,13 @@ function A2tab1(_: any, ref: any) {
   return (
     <div className={styles.A2tab1}>
       <MyTable
+        classKey='A2tab1'
         scrollX={150}
         yHeight={675}
         list={tableInfo.list || []}
         columnsTemp={[
           ['txt2', '盘点名称', 'name', 150],
-          ['txt2', '盘点说明', 'remark', 200],
+          ['txt2', '盘点说明', 'remark', 400],
           ['txt', '登记馆藏文物总数', '待完善'],
           ['txt', '账物相符总数', '待完善'],
           ['txt', '账物不符总数', '待完善'],
@@ -58,7 +63,7 @@ function A2tab1(_: any, ref: any) {
           ['txt', '负责人', 'owner'],
           ['txt', '创建时间', 'createTime'],
           ['txt', '创建人', 'creatorName'],
-          ['txt', '生效状态', '待完善']
+          ['txt', '生效状态', 'effect']
         ]}
         lastBtn={[
           {
@@ -67,13 +72,7 @@ function A2tab1(_: any, ref: any) {
             width: 100,
             render: (item: any) => {
               return (
-                <Button
-                  size='small'
-                  type='text'
-                  onClick={() => {
-                    console.log('待完善')
-                  }}
-                >
+                <Button size='small' type='text' onClick={() => setLookIdFu(item.id)}>
                   查看
                 </Button>
               )

+ 29 - 5
src/pages/A1check/A2manage/data.ts

@@ -36,21 +36,45 @@ export const A2topArr = [
     options: resDictStr('相符情况')
   },
   {
-    key: '待完善2',
-    placeholder: '不符情',
+    key: 'unInfo',
+    placeholder: '不符情',
     type: 'Select',
-    options: resDictStr('不符情')
+    options: resDictStr('不符情')
   },
   {
-    key: '待完善3',
+    key: 'reasonInfo',
     placeholder: '不符原因',
     type: 'Select',
     options: resDictStr('不符原因')
   },
   {
-    key: '待完善4',
+    key: 'effect',
     placeholder: '生效状态',
     type: 'Select',
     options: resDictStr('生效状态')
   }
 ]
+
+export const A2columns = (val: '列表' | '详情') => {
+  const arr1 = [
+    ['index', '序号', 100],
+    ['txt2', '编号类型', 'numName', 150],
+    ['txt2', '编号', 'num', 150],
+    ['txt2', '名称', 'name', 150],
+    ['txt', '级别', 'level'],
+    ['txt', '类别', 'type'],
+    ['txt', '藏品总登记账具体数量(件)', 'pcsRegister'],
+    ['txt', '账物相符(件)', 'pcsConform'],
+    ['txt', '账物不符(件)', 'pcsUnConform'],
+    ['txt', '不符情形', 'unInfo'],
+    ['txt', '不符原因', 'reasonInfo'],
+    ['txt', '备注', 'remark']
+  ]
+  const arr2 = [
+    ['txt', '盘点名称', 'name'],
+    ['txt', '经办人', 'handler'],
+    ['txt', '负责人', 'owner'],
+    ['txt', '生效状态', 'effect']
+  ]
+  return val === '列表' ? [...arr1, ...arr2] : arr1
+}

+ 1 - 1
src/pages/A1check/A2manage/index.module.scss

@@ -10,7 +10,7 @@
       & > div {
         display: flex;
         #AAbtn {
-          margin-left: 10px;
+          margin-left: 5px;
         }
       }
     }

+ 17 - 24
src/pages/A1check/A2manage/index.tsx

@@ -6,10 +6,11 @@ import { downloadFileByUrl, openLink } from '@/utils/history'
 import UpBtn from '@/pages/ZcomPage/UpBtn'
 import A2tab1 from './A2tab1'
 import TopSearch from '@/pages/ZcomPage/TopSearch'
-import { A2topArr } from './data'
+import { A2columns, A2topArr } from './data'
 import { A2_APIgetList2 } from '@/store/action/A1check/A2manage'
 import { useSelector } from 'react-redux'
 import { RootState } from '@/store'
+import A2info from './A2info'
 
 const tabArr = ['按盘点批次', '按藏品明细']
 
@@ -21,9 +22,12 @@ function A2manage() {
 
   const tableInfo = useSelector((state: RootState) => state.A2manage.tableInfo2)
 
+  // 按盘点批次-点击查看
+  const [lookId, setLookId] = useState(0)
+
   return (
     <div className={styles.A2manage}>
-      <div className='pageTitle'>盘库管理</div>
+      <div className='pageTitle'>{lookId ? '实盘详情' : '盘库管理'}</div>
 
       <div className='A2top'>
         <div>
@@ -56,10 +60,11 @@ function A2manage() {
         </div>
       </div>
 
-      {tabAc === '按盘点批次' ? <A2tab1 ref={tab1Ref} /> : null}
+      {tabAc === '按盘点批次' ? <A2tab1 setLookIdFu={id => setLookId(id)} ref={tab1Ref} /> : null}
 
       {tabAc === '按藏品明细' ? (
         <TopSearch
+          classKey='A2manage'
           yHeight={593}
           ref={tab2Ref}
           leftArr={A2topArr}
@@ -69,28 +74,11 @@ function A2manage() {
               <AAbtn txt={2} onClick={() => tab2Ref.current.clickReset()} />
             </>
           }
-          waiWidth={200}
-          sonWidth='10.4%'
+          waiWidth={190}
+          sonWidth='10.7%'
           getListAPI={A2_APIgetList2}
           tableInfo={tableInfo}
-          columnsTemp={[
-            ['index', '序号', 100],
-            ['txt2', '编号类型', 'numName', 150],
-            ['txt2', '编号', 'num', 150],
-            ['txt2', '名称', 'name', 150],
-            ['txt', '级别', 'level'],
-            ['txt', '类别', 'type'],
-            ['txt', '藏品总登记账具体数量(件)', '待完善'],
-            ['txt', '账物相符(件)', '待完善'],
-            ['txt', '账物不符(件)', '待完善'],
-            ['txt', '不符情况', '待完善'],
-            ['txt', '不符原因', '待完善'],
-            ['txt', '备注', '待完善'],
-            ['txt', '盘点名称', '待完善'],
-            ['txt', '经办人', '待完善'],
-            ['txt', '负责人', '待完善'],
-            ['txt', '生效状态', '待完善']
-          ]}
+          columnsTemp={A2columns('列表')}
           tableLastBtn={[
             {
               title: '操作',
@@ -101,7 +89,9 @@ function A2manage() {
                   <Button
                     size='small'
                     type='text'
-                    onClick={() => openLink(`/goodsLook/${item.id}`)}
+                    onClick={() =>
+                      openLink(`/goodsLook/${item.numName || null}/${item.num || null}`)
+                    }
                   >
                     查看
                   </Button>
@@ -111,6 +101,9 @@ function A2manage() {
           ]}
         />
       ) : null}
+
+      {/* 按盘点批次-点击查看详情页 */}
+      {lookId ? <A2info sId={lookId} closeFu={() => setLookId(0)} /> : null}
     </div>
   )
 }

+ 62 - 0
src/pages/A1check/A3result/data.ts

@@ -0,0 +1,62 @@
+import { resDictStr } from '@/utils/select'
+
+export const A3topArr = [
+  {
+    key: 'numName',
+    placeholder: '编号类型',
+    type: 'Select',
+    options: resDictStr('编号类型')
+  },
+  {
+    key: 'num',
+    placeholder: '请输入编号',
+    type: 'Input'
+  },
+  {
+    key: 'name',
+    placeholder: '搜索名称/原名',
+    type: 'Input'
+  },
+  {
+    key: 'level',
+    placeholder: '级别',
+    type: 'Select',
+    options: resDictStr('文物级别')
+  },
+  {
+    key: 'type',
+    placeholder: '类别',
+    type: 'Select',
+    options: resDictStr('类别')
+  },
+  {
+    key: 'status',
+    placeholder: '盘点状态',
+    type: 'Select',
+    options: resDictStr('盘点状态')
+  },
+  {
+    key: '待完善1',
+    placeholder: '相符情况',
+    type: 'Select',
+    options: resDictStr('相符情况')
+  },
+  {
+    key: 'unInfo',
+    placeholder: '不符情形',
+    type: 'Select',
+    options: resDictStr('不符情形')
+  },
+  {
+    key: 'reasonInfo',
+    placeholder: '不符原因',
+    type: 'Select',
+    options: resDictStr('不符原因')
+  },
+  {
+    key: 'effect',
+    placeholder: '生效状态',
+    type: 'Select',
+    options: resDictStr('生效状态')
+  }
+]

+ 6 - 2
src/pages/A1check/A3result/index.module.scss

@@ -1,4 +1,8 @@
 .A3result {
-  :global {
-  }
+  background-color: #fcf9f5;
+  border-radius: 10px;
+  padding: 15px 24px 0;
+  position: relative;
+  // :global {
+  // }
 }

+ 72 - 2
src/pages/A1check/A3result/index.tsx

@@ -1,9 +1,79 @@
-import React from 'react'
+import React, { useMemo, useRef } from 'react'
 import styles from './index.module.scss'
+import TopSearch from '@/pages/ZcomPage/TopSearch'
+import AAbtn from '@/pages/ZcomPage/AAbtn'
+import { A3topArr } from './data'
+import { A3_APIgetList } from '@/store/action/A1check/A3result'
+import { useSelector } from 'react-redux'
+import { RootState } from '@/store'
+import { Button } from 'antd'
+import { openLink } from '@/utils/history'
 function A3result() {
+  const topDomRef = useRef<any>(null)
+
+  const tableInfo = useSelector((state: RootState) => state.A3result.tableInfo)
+
+  // --------------右侧按钮
+  const rightBtn = useMemo(() => {
+    return (
+      <>
+        <AAbtn txt={1} onClick={() => topDomRef.current.clickSearch()} tit='查询' />
+        <AAbtn txt={2} onClick={() => topDomRef.current.clickReset()} />
+      </>
+    )
+  }, [])
+
   return (
     <div className={styles.A3result}>
-      <h1>A3result</h1>
+      <div className='pageTitle'>盘库结果</div>
+
+      <TopSearch
+        yHeight={650}
+        ref={topDomRef}
+        leftArr={A3topArr}
+        rightBtn={rightBtn}
+        waiWidth={190}
+        sonWidth='9.6%'
+        getListAPI={A3_APIgetList}
+        tableInfo={tableInfo}
+        columnsTemp={[
+          ['index', '序号', 100],
+          ['txt2', '编号类型', 'numName', 150],
+          ['txt2', '编号', 'num', 150],
+          ['txt2', '名称', 'name', 150],
+          ['txt', '级别', 'level'],
+          ['txt', '类别', 'type'],
+          ['txt', '盘点状态', 'status'],
+          ['txt', '藏品总登记账具体数量(件)', 'pcsRegister'],
+          ['txt', '账物相符(件)', 'pcsConform'],
+          ['txt', '账物不符(件)', 'pcsUnConform'],
+          ['txt', '不符情形', 'unInfo'],
+          ['txt', '不符原因', 'reasonInfo'],
+          ['txt', '备注', 'remark'],
+          ['txt', '最新盘点名称', '待完善'],
+          ['txt', '盘点时间', 'updateTime'],
+          ['txt', '经办人', 'checkHandler'],
+          ['txt', '负责人', 'checkOwner']
+        ]}
+        tableLastBtn={[
+          {
+            title: '操作',
+            fixed: 'right',
+            width: 100,
+            render: (item: any) => {
+              return (
+                <Button
+                  size='small'
+                  type='text'
+                  onClick={() => openLink(`/goodsLook/${item.numName || null}/${item.num || null}`)}
+                >
+                  查看
+                </Button>
+              )
+            }
+          }
+        ]}
+      />
     </div>
   )
 }

+ 1 - 1
src/pages/Layout/data.ts

@@ -54,7 +54,7 @@ const tabLeftArr: RouterType = [
       {
         id: 9901,
         name: '藏品详情',
-        path: '/goodsLook/:id',
+        path: '/goodsLook/:numName/:num',
         pathLast: '/goodsLook',
         Com: React.lazy(() => import('../ZgoodsInfo'))
       }

+ 4 - 2
src/pages/ZcomPage/TopSearch/index.module.scss

@@ -11,7 +11,8 @@
         flex-wrap: wrap;
 
         & > div {
-          margin-right: 10px;
+          margin-right: 5px;
+          margin-bottom: 10px;
           .ant-select {
             width: 100%;
             height: 40px;
@@ -34,8 +35,9 @@
       .TT2 {
         display: flex;
         flex-wrap: wrap;
+        justify-content: flex-end;
         #AAbtn {
-          margin-left: 10px;
+          margin-left: 5px;
           margin-bottom: 10px;
           &:nth-of-type(1) {
             margin-left: 0;

+ 12 - 2
src/pages/ZcomPage/TopSearch/index.tsx

@@ -15,6 +15,8 @@ type Props = {
   getListAPI: any
   tableInfo: any
   yHeight?: number
+  waiId?: number
+  classKey?: string
 }
 
 function TopSearch(
@@ -27,6 +29,8 @@ function TopSearch(
     tableLastBtn,
     getListAPI,
     tableInfo,
+    classKey,
+    waiId,
     yHeight = 670
   }: Props,
   ref: any
@@ -55,8 +59,13 @@ function TopSearch(
   // 封装发送请求的函数
   const getListFu = useCallback(() => {
     formDataOldRef.current = { ...formDataRef.current }
-    dispatch(getListAPI(formDataRef.current))
-  }, [dispatch, getListAPI])
+
+    const obj: any = { ...formDataRef.current }
+
+    if (waiId) obj.firmVersionId = waiId
+
+    if (getListAPI) dispatch(getListAPI(obj))
+  }, [dispatch, getListAPI, waiId])
 
   useEffect(() => {
     getListFu()
@@ -127,6 +136,7 @@ function TopSearch(
 
       <div className='TOP2'>
         <MyTable
+          classKey={classKey}
           scrollX={150}
           yHeight={yHeight}
           list={tableInfo.list || []}

+ 4 - 0
src/pages/ZgoodsInfo/GI_file/index.module.scss

@@ -0,0 +1,4 @@
+.GI_file {
+  :global {
+  }
+}

+ 13 - 0
src/pages/ZgoodsInfo/GI_file/index.tsx

@@ -0,0 +1,13 @@
+import React from 'react'
+import styles from './index.module.scss'
+function GI_file() {
+  return (
+    <div className={styles.GI_file}>
+      <h1>功能开发中</h1>
+    </div>
+  )
+}
+
+const MemoGI_file = React.memo(GI_file)
+
+export default MemoGI_file

+ 5 - 0
src/pages/ZgoodsInfo/GI_log/index.module.scss

@@ -0,0 +1,5 @@
+// .GI_log {
+//   :global {
+
+//   }
+// }

+ 57 - 0
src/pages/ZgoodsInfo/GI_log/index.tsx

@@ -0,0 +1,57 @@
+import React, { useState } from 'react'
+import styles from './index.module.scss'
+import MyTable from '@/components/MyTable'
+import { Button } from 'antd'
+import A2info from '@/pages/A1check/A2manage/A2info'
+function GI_log() {
+  // 按盘点批次-点击查看
+  const [lookId, setLookId] = useState(0)
+
+  return (
+    <div className={styles.GI_log}>
+      {/* 待完善 */}
+      <MyTable
+        classKey='GI_log'
+        scrollX={150}
+        yHeight={630}
+        list={[]}
+        pagingInfo={false}
+        columnsTemp={[
+          ['txt2', '盘点名称', 'name', 150],
+          ['txt2', '藏品总登记账具体数量(件)', 'pcsRegister', 150],
+          ['txt2', '账物相符(件)', 'pcsConform', 100],
+          ['txt2', '账物不符(件)', 'pcsUnConform', 100],
+          ['txt', '不符情形', 'unInfo'],
+          ['txt', '不符原因', 'reasonInfo'],
+          ['txt', '备注', 'remark'],
+          ['txt', '经办人', 'handler'],
+          ['txt', '负责人', 'owner'],
+          ['txt', '创建时间', 'createTime'],
+          ['txt', '创建人', 'creatorName'],
+          ['txt', '生效状态', 'effect']
+        ]}
+        lastBtn={[
+          {
+            title: '操作',
+            fixed: 'right',
+            width: 100,
+            render: (item: any) => {
+              return (
+                // 待完善
+                <Button size='small' type='text' onClick={() => setLookId(item.id)}>
+                  查看
+                </Button>
+              )
+            }
+          }
+        ]}
+      />
+      {/* 按盘点批次-点击查看详情页 */}
+      {lookId ? <A2info sId={lookId} closeFu={() => setLookId(0)} /> : null}
+    </div>
+  )
+}
+
+const MemoGI_log = React.memo(GI_log)
+
+export default MemoGI_log

+ 55 - 29
src/pages/ZgoodsInfo/data.ts

@@ -1,41 +1,67 @@
 import { tablePingFu } from '../A1check/A1ledger/data'
 import { GoodsType } from '../AAnew/data'
-
+const obj = {
+  checkHandler: '张三',
+  checkName: '库内盘点20260324',
+  checkOwner: '李四',
+  checkRemark: '这是一个模拟数据',
+  conform: '',
+  createTime: '2026-03-25 14:14:00',
+  creatorId: 1,
+  creatorName: '',
+  deptId: 8,
+  effect: '生效中',
+  id: 213,
+  level: '未定级',
+  name: '中华民国青花花鸟双耳瓷瓶',
+  num: 'B1C4800',
+  numName: '藏品总登记号',
+  pcsConform: 0,
+  pcsRegister: 1,
+  pcsUnConform: 1,
+  reasonInfo: '记录错误',
+  remark: '',
+  status: '已盘点',
+  type: '瓷器',
+  unInfo: '数量不符',
+  updateTime: '2026-03-25 14:14:00'
+}
+// 待完善
 export const GIrowArr1: any[] = [
-  { key: '创建日期', name: '创建日期' },
-  { key: '创建人', name: '创建人' },
-  { key: '编号类型', name: '编号类型' },
-  { key: '藏品编号', name: '藏品编号' },
-  { key: '名称', name: '名称' },
-  { key: '原名', name: '原名' },
-  { key: '分类号', name: '分类号' },
-  { key: '文物类别', name: '文物类别' },
-  { key: '入馆凭证号', name: '入馆凭证号' },
-  { key: '原登记号', name: '原登记号' },
+  { key: 'createTime', name: '创建日期' },
+  { key: '待完善创建人', name: '创建人' },
+  { key: 'numName', name: '编号类型' },
+  { key: 'num', name: '藏品编号' },
+  { key: 'name', name: '名称' },
+  { key: 'namePrimitive', name: '原名' },
+  { key: '待完善分类号', name: '分类号' },
+  { key: 'type', name: '文物类别' },
+  { key: '待完善入馆凭证号', name: '入馆凭证号' },
+  { key: '待完善原登记号', name: '原登记号' },
   { key: '年代', name: '年代', resFu: (info: GoodsType) => tablePingFu(info, '年代') },
-  { key: '具体年代', name: '具体年代' },
+  { key: 'ageInfo', name: '具体年代' },
   { key: '质地', name: '质地', resFu: (info: GoodsType) => tablePingFu(info, '年代') },
-  { key: '藏品分类', name: '藏品分类' },
-  { key: '是否完成数字化采集', name: '是否完成数字化采集' },
-  { key: '是否为革命文物', name: '是否为革命文物' },
-  { key: '数量', name: '数量' },
-  { key: '外形尺寸', name: '外形尺寸' },
-  { key: '具体尺寸', name: '具体尺寸' },
+  { key: 'category', name: '藏品分类' },
+  { key: 'isDigital', name: '是否完成数字化采集' },
+  { key: 'isRevolution', name: '是否为革命文物' },
+  { key: 'pcsRegister', name: '数量' },
+  { key: '待完善外形尺寸', name: '外形尺寸' },
+  { key: 'sizeInfo', name: '具体尺寸' },
   { key: '质量范围', name: '质量范围' },
-  { key: '具体质量', name: '具体质量' },
-  { key: '单位', name: '单位' },
-  { key: '文物级别', name: '文物级别' },
-  { key: '文物来源', name: '文物来源' },
-  { key: '具体来源', name: '具体来源' },
+  { key: 'quality', name: '具体质量' },
+  { key: 'qualityUnit', name: '单位' },
+  { key: 'level', name: '文物级别' },
+  { key: 'source', name: '文物来源' },
+  { key: 'sourceInfo', name: '具体来源' },
   { key: '完残程度', name: '完残程度' },
-  { key: '完残状况', name: '完残状况' },
+  { key: 'torn', name: '完残状况' },
   { key: '保存状态', name: '保存状态' },
   { key: '入藏时间范围', name: '入藏时间范围' },
-  { key: '入藏年度', name: '入藏年度' },
-  { key: '著者', name: '著者' },
-  { key: '版本', name: '版本' },
-  { key: '存卷', name: '存卷' },
-  { key: '备注', name: '备注' }
+  { key: 'inYear', name: '入藏年度' },
+  { key: 'pressAuthor', name: '著者' },
+  { key: 'pressVersion', name: '版本' },
+  { key: 'pressFile', name: '存卷' },
+  { key: 'remark', name: '备注' }
 ]
 
 export const GIrowArr2: any[] = [

+ 18 - 10
src/pages/ZgoodsInfo/index.tsx

@@ -8,21 +8,26 @@ import GiInfo from './GI_info'
 import { GoodsType } from '../AAnew/data'
 import { useParams } from 'react-router-dom'
 import { API_getGoodsInfo } from '@/store/action/A1check/A1ledger'
+import GIFile from './GI_file'
+import GILog from './GI_log'
 
 const tabArr = ['藏品信息', '盘点记录', '藏品附件']
 
 function ZgoodsInfo() {
-  const { id } = useParams<any>()
+  const { numName, num } = useParams<any>()
   const [info, setInfo] = useState({} as GoodsType)
 
   const getInfoFu = useCallback(async () => {
-    const res = await API_getGoodsInfo(id)
-
+    if (numName === 'null' || num === 'null') {
+      MessageFu.error('参数错误')
+      return
+    }
+    const obj = { numName, num }
+    const res = await API_getGoodsInfo(obj)
     if (res.code === 0) {
-      // 待完善
-      console.log('------', res)
+      setInfo(res.data)
     }
-  }, [id])
+  }, [num, numName])
 
   useEffect(() => {
     getInfoFu()
@@ -36,11 +41,12 @@ function ZgoodsInfo() {
 
       {info.id ? (
         <>
-          {' '}
           <div className='ZGtop'>
             <div>
-              <h3>这个藏品名称</h3>
-              <Tag className='AA1Itop1'>待处理</Tag>
+              <h3>{info.name}</h3>
+              <Tag className='AA1Itop1'>{info.status}</Tag>
+              {/* 待完善 */}
+              <Tag className='AA1Itop1'>账物相符</Tag>
             </div>
             <div>
               <AAbtn txt={3} onClick={() => MessageFu.warning('功能开发中')} />
@@ -59,7 +65,9 @@ function ZgoodsInfo() {
             ))}
           </div>
           <div className='GImain'>
-            {tabAc === '藏品信息' ? <GiInfo info={{ id: 1 }} fileList={[]} /> : null}
+            {tabAc === '藏品信息' ? <GiInfo info={info} fileList={[]} /> : null}
+            {tabAc === '盘点记录' ? <GILog /> : null}
+            {tabAc === '藏品附件' ? <GIFile /> : null}
           </div>
         </>
       ) : null}

+ 5 - 5
src/store/action/A1check/A1ledger.ts

@@ -23,13 +23,13 @@ export const A1_APIgetList = (data: any, exportFlag?: boolean): any => {
 /**
  * 盘库总账-重置所有数据
  */
-// export const A1_APIgetInfo = (id: number) => {
-//   return http.get(`cms/antique/detail/${id}`)
-// }
+export const A1_APIreset = () => {
+  return http.get('cms/importLedger/reset')
+}
 
 /**
  * 查看藏品详情
  */
-export const API_getGoodsInfo = (id: number) => {
-  return http.get(`cms/antique/detail/${id}`)
+export const API_getGoodsInfo = (data: any) => {
+  return http.post('cms/checkMatch/findByNum', data)
 }

+ 20 - 4
src/store/action/A1check/A2manage.ts

@@ -39,8 +39,24 @@ export const A2_APIgetList2 = (data: any, exportFlag?: boolean): any => {
 }
 
 /**
- * 盘库管理-详情
+ * 盘库管理-按盘点批次-里面的列表
  */
-// export const A2_APIgetInfo = (id: number) => {
-//   return http.get(`cms/antique/detail/${id}`)
-// }
+export const A2_APIgetListSon = (data: any): any => {
+  return async (dispatch: AppDispatch) => {
+    const res = await http.post('cms/importFirm/pageList', data)
+    if (res.code === 0) {
+      const obj = {
+        list: res.data.records,
+        total: res.data.total
+      }
+      dispatch({ type: 'A2/getListSon', payload: obj })
+    }
+  }
+}
+
+/**
+ * 盘库管理-按盘点批次-详情
+ */
+export const A2_APIgetInfo = (id: number) => {
+  return http.get(`cms/checkFirmVersion/detail/${id}`)
+}

+ 21 - 0
src/store/action/A1check/A3result.ts

@@ -0,0 +1,21 @@
+import { AppDispatch } from '@/store'
+import http from '@/utils/http'
+
+/**
+ * 盘库结果 - 获取分页列表
+ */
+export const A3_APIgetList = (data: any, exportFlag?: boolean): any => {
+  if (exportFlag) return http.post('cms/checkMatch/pageList', data)
+  else {
+    return async (dispatch: AppDispatch) => {
+      const res = await http.post('cms/checkMatch/pageList', data)
+      if (res.code === 0) {
+        const obj = {
+          list: res.data.records,
+          total: res.data.total
+        }
+        dispatch({ type: 'A3/getList', payload: obj })
+      }
+    }
+  }
+}

+ 10 - 1
src/store/reducer/A1check/A2manage.ts

@@ -10,6 +10,10 @@ const initState = {
   tableInfo2: {
     list: [] as GoodsType[],
     total: 0
+  },
+  tableInfoSon: {
+    list: [] as GoodsType[],
+    total: 0
   }
 }
 
@@ -23,7 +27,10 @@ type Props =
       type: 'A2/getList2'
       payload: { list: GoodsType[]; total: number }
     }
-
+  | {
+      type: 'A2/getListSon'
+      payload: { list: GoodsType[]; total: number }
+    }
 // reducer
 export default function userReducer(state = initState, action: Props) {
   switch (action.type) {
@@ -32,6 +39,8 @@ export default function userReducer(state = initState, action: Props) {
       return { ...state, tableInfo1: action.payload }
     case 'A2/getList2':
       return { ...state, tableInfo2: action.payload }
+    case 'A2/getListSon':
+      return { ...state, tableInfoSon: action.payload }
 
     default:
       return state

+ 28 - 0
src/store/reducer/A1check/A3result.ts

@@ -0,0 +1,28 @@
+import { GoodsType } from '@/pages/AAnew/data'
+
+// 初始化状态
+const initState = {
+  // 列表数据
+  tableInfo: {
+    list: [] as GoodsType[],
+    total: 0
+  }
+}
+
+// 定义 action 类型
+type Props = {
+  type: 'A3/getList'
+  payload: { list: GoodsType[]; total: number }
+}
+
+// reducer
+export default function userReducer(state = initState, action: Props) {
+  switch (action.type) {
+    // 获取列表数据
+    case 'A3/getList':
+      return { ...state, tableInfo: action.payload }
+
+    default:
+      return state
+  }
+}

+ 2 - 0
src/store/reducer/index.ts

@@ -4,6 +4,7 @@ import { combineReducers } from 'redux'
 // 导入 登录 模块的 reducer
 import A1ledger from './A1check/A1ledger'
 import A2manage from './A1check/A2manage'
+import A3result from './A1check/A3result'
 import AA1onePu from './AAnew/AA1onePu'
 
 import A0Layout from './layout'
@@ -16,6 +17,7 @@ import Z7log from './Z7log'
 const rootReducer = combineReducers({
   A1ledger,
   A2manage,
+  A3result,
   AA1onePu,
   A0Layout,
   Z1dict,

+ 0 - 8
src/utils/http.ts

@@ -42,14 +42,6 @@ http.interceptors.request.use(
     axajInd++
 
     const { token } = getTokenInfo()
-    // console.log(token)
-
-    // 如果 token 存在,将其作为查询参数添加到 URL
-    // if (token) {
-    //   // 检查 URL 是否已有查询参数
-    //   const separator = config.url.includes('?') ? '&' : '?'
-    //   config.url = `${config.url}${separator}tkToken=${encodeURIComponent(token)}`
-    // }
 
     if (token) config.headers.token = token
     return config

+ 2 - 1
src/utils/select.ts

@@ -5,9 +5,10 @@ export type DictStrType =
   | '质地'
   | '文物级别'
   | '相符情况'
-  | '不符情'
+  | '不符情'
   | '不符原因'
   | '生效状态'
+  | '盘点状态'
 
 // 输出字典
 export const resDictStr = (val: DictStrType) => {