Bläddra i källkod

总账导入01

shaogen1995 2 månader sedan
förälder
incheckning
5d89116b69

+ 3 - 0
src/pages/A3_ledger/ComPage/C4import/C4impImg/index.module.scss

@@ -16,5 +16,8 @@
         }
       }
     }
+    .ant-table-cell {
+      padding: 8px !important;
+    }
   }
 }

+ 6 - 2
src/pages/A3_ledger/ComPage/C4import/index.module.scss

@@ -17,7 +17,7 @@
 
       .C4top11 {
         display: inline-block;
-        margin-right: 200px;
+        margin-right: 180px;
         .ant-btn {
           margin-left: 0px;
           margin-right: 15px;
@@ -26,13 +26,17 @@
 
       .jianGe {
         display: inline-block;
-        width: 100px;
+        width: 50px;
       }
       .ant-btn {
         margin-left: 15px;
       }
     }
 
+    .ant-table-cell {
+      padding: 8px !important;
+    }
+
     .C4base {
       height: 80%;
       display: flex;

+ 96 - 11
src/pages/A3_ledger/ComPage/C4import/index.tsx

@@ -1,4 +1,4 @@
-import React, { useMemo, useRef, useState } from 'react'
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
 import styles from './index.module.scss'
 import { Button } from 'antd'
 import MyTable from '@/components/MyTable'
@@ -8,20 +8,89 @@ import B1upXLSX from '@/pages/B_enterTibet/B1collect/B1edit/B1upXLSX'
 import { TypeinfoXLSX } from '@/pages/B_enterTibet/B1collect/type'
 import C4impImg from './C4impImg'
 import { C4tableCFu } from '@/utils/tableData'
+import { A3m_APIdel, A3m_APIgetList, A3m_APIlookInfo } from '@/store/action/A3machineReg'
+import { MessageFu } from '@/utils/message'
+import { B1Xtype } from '@/pages/B_enterTibet/B1collect/data'
 
 type Props = {
   colseFu: (flag: boolean) => void
 }
 
 function C4import({ colseFu }: Props) {
+  const [formData, setFormData] = useState({
+    pageNum: 1,
+    pageSize: 10
+  })
+
+  // 列表数据
+  const [tableObj, setTableObj] = useState({
+    list: [],
+    total: 0
+  })
+
+  // 获取列表信息
+  const getListFu = useCallback(async () => {
+    const res = await A3m_APIgetList({
+      ...formData,
+      type: '4'
+    })
+    if (res.code === 0) {
+      setTableObj({
+        list: res.data.records || [],
+        total: res.data.total
+      })
+    }
+  }, [formData])
+
+  useEffect(() => {
+    getListFu()
+  }, [getListFu])
+
   const [acTxt, setAcTxt] = useState('导入藏品数据')
 
+  const delFu = useCallback(
+    async (id: number) => {
+      const res = await A3m_APIdel(id)
+      if (res.code === 0) {
+        MessageFu.success('删除成功')
+        getListFu()
+      }
+    },
+    [getListFu]
+  )
+
+  // 点击查看
+  const lookTableFu = useCallback(async (id: number) => {
+    const res = await A3m_APIlookInfo('4', id)
+    if (res.code === 0) {
+      const succArr: B1Xtype[] = []
+      const errArr: B1Xtype[] = []
+      res.data.forEach((v: any) => {
+        if (v.importError === 0) succArr.push({ ...v, row: v.id })
+        else {
+          errArr.push({
+            ...v,
+            row: v.id,
+            error: JSON.parse(v.importDesc || '[]')
+          })
+        }
+      })
+
+      setInfoXLSX({
+        show: true,
+        succ: succArr,
+        err: errArr,
+        type: '查看'
+      })
+    }
+  }, [])
+
   const tableLastBtn = useMemo(() => {
     return [
       {
         title: '导入结果',
         render: (item: any) => (
-          <Button size='small' type='text'>
+          <Button size='small' type='text' onClick={() => lookTableFu(item.id)}>
             查看
           </Button>
         )
@@ -30,16 +99,20 @@ function C4import({ colseFu }: Props) {
         title: '操作',
         render: (item: any) => {
           return (
-            <Button size='small' type='text' danger>
-              删除记录
-            </Button>
+            <MyPopconfirm
+              txtK='删除'
+              onConfirm={() => delFu(item.id)}
+              Dom={
+                <Button size='small' type='text' danger>
+                  删除记录
+                </Button>
+              }
+            />
           )
         }
       }
     ]
-  }, [])
-
-  const [list, setList] = useState<any[]>([])
+  }, [delFu, lookTableFu])
 
   const flagRef = useRef(false)
   // 导入合格数据之后变成true
@@ -53,6 +126,11 @@ function C4import({ colseFu }: Props) {
     err: []
   })
 
+  // 页码变化
+  const paginationChange = useCallback((pageNum: number, pageSize: number) => {
+    setFormData({ pageNum, pageSize })
+  }, [])
+
   // 待完善
   return (
     <div className={styles.C4import}>
@@ -98,12 +176,16 @@ function C4import({ colseFu }: Props) {
               </Button>
               <span className='C4tit'>每组数据最多1000条</span>
               <B1upXLSX
+                pageType='藏品总账'
                 ref={B1upXLSXRef}
                 closeFu={() => setInfoXLSX({ show: false, succ: [], err: [] })}
                 infoXLSX={infoXLSX}
                 upSuccFu={(succ, err) => setInfoXLSX({ show: true, succ, err })}
                 isZongZhang={true}
+                url='cms/import/im/upload/excel'
                 clickSuccFu={arr => {
+                  // console.log(123, arr)
+                  getListFu()
                   // 导入成功
                   flagRef.current = true
                 }}
@@ -117,11 +199,14 @@ function C4import({ colseFu }: Props) {
       <div hidden={acTxt !== '导入藏品数据'}>
         <MyTable
           classKey='C4import'
-          yHeight={700}
-          list={list}
+          yHeight={655}
+          list={tableObj.list}
           columnsTemp={C4tableCFu('导入藏品数据')}
           lastBtn={tableLastBtn}
-          pagingInfo={false}
+          pageNum={formData.pageNum}
+          pageSize={formData.pageSize}
+          total={tableObj.total}
+          onChange={(pageNum, pageSize) => paginationChange(pageNum, pageSize)}
         />
       </div>
 

+ 97 - 30
src/pages/B_enterTibet/B1collect/B1edit/B1upXLSX/index.tsx

@@ -11,9 +11,23 @@ import MyTable from '@/components/MyTable'
 import { B1TableC2up } from '@/utils/tableData'
 import { B1X_APIadds } from '@/store/action/B1collect'
 import { forwardRef, useImperativeHandle } from 'react'
-
-// 删掉前面2个
-const arrTemp = ['dictAge', 'dictAgeFirst', 'dictType', 'source']
+import { A3m_APIaddGoods_2, A3m_APIaddZip } from '@/store/action/A3machineReg'
+
+// 删掉前面2个  0,10000,12008,12563 == 12008,12563
+const arrTemp = [
+  'dictAge',
+  'dictAgeFirst',
+  'dictType',
+  'source',
+  'dictTexture1',
+  'dictTexture2',
+  'dictTexture3',
+  'inDictDateScope',
+  'qualityDictScope',
+  'qualityUnit',
+  'dictTorn',
+  'preserveState'
+]
 
 type Props = {
   closeFu: () => void
@@ -22,9 +36,14 @@ type Props = {
   clickSuccFu: (arr: B1Xtype[]) => void
   isZongZhang?: boolean
   ref: any //当前自己的ref,给父组件调用
+  url: string
+  pageType: '藏品总账' | '藏品征集'
 }
 
-function B1upXLSX({ closeFu, infoXLSX, clickSuccFu, upSuccFu, isZongZhang }: Props, ref: any) {
+function B1upXLSX(
+  { closeFu, infoXLSX, clickSuccFu, upSuccFu, isZongZhang, url, pageType }: Props,
+  ref: any
+) {
   // 藏品总账导入的类型 一普 和省平台
   const zongZhnagType = useRef('')
 
@@ -55,11 +74,16 @@ function B1upXLSX({ closeFu, infoXLSX, clickSuccFu, upSuccFu, isZongZhang }: Pro
         e.target.value = ''
 
         try {
-          const res = await API_upFile(fd, 'cms/orderCollect/uploadZj')
+          const res = await API_upFile(fd, url)
 
           if (res.code === 0) {
             MessageFu.success('上传成功!')
-            const arrAll: any[] = res.data || []
+            const arrAll: any[] = (pageType === '藏品总账' ? res.data.excel : res.data) || []
+
+            if (pageType === '藏品总账') {
+              fileInfo.current = { fileName: res.data.fileName, filePath: res.data.filePath }
+            }
+
             const succArr: B1Xtype[] = []
             const errArr: B1Xtype[] = []
 
@@ -84,34 +108,71 @@ function B1upXLSX({ closeFu, infoXLSX, clickSuccFu, upSuccFu, isZongZhang }: Pro
         }
       }
     },
-    [upSuccFu]
+    [pageType, upSuccFu, url]
   )
 
   const [btnAc, setBtnAc] = useState('成功')
 
+  // 藏品总账才有的 附件名和附件路径
+  const fileInfo = useRef({ fileName: '', filePath: '' })
+
   // 点击导入当前数据
   const btnOk = useCallback(async () => {
-    const res = await B1X_APIadds(
-      infoXLSX.succ.map(v => ({
-        ...v,
-        id: null
-      }))
-    )
-    if (res.code === 0) {
-      MessageFu.success('导入成功')
-      clickSuccFu(res.data)
-      closeFu()
+    if (pageType === '藏品征集') {
+      const res = await B1X_APIadds(
+        infoXLSX.succ.map(v => ({
+          ...v,
+          id: null
+        }))
+      )
+      if (res.code === 0) {
+        MessageFu.success('导入成功')
+        clickSuccFu(res.data)
+        closeFu()
+      }
+    } else {
+      const obj = {
+        fileName: fileInfo.current.fileName,
+        filePath: fileInfo.current.filePath,
+        pcsError: infoXLSX.err.length,
+        pcsSuccess: infoXLSX.succ.length,
+        pcsTotal: infoXLSX.err.length + infoXLSX.succ.length,
+        type: zongZhnagType.current
+      }
+
+      const res1 = await A3m_APIaddZip(obj)
+
+      if (res1.code === 0) {
+        const obj2 = [...infoXLSX.succ, ...infoXLSX.err].map(v => ({
+          ...v,
+          id: null,
+          importId: res1.data.id,
+          importDesc: JSON.stringify(v.error || '[]'),
+          importError: v.isTrue === 1 ? '0' : '1'
+          // importRow: v.row
+        }))
+
+        const res2 = await A3m_APIaddGoods_2(obj2)
+
+        if (res2.code === 0) {
+          MessageFu.success('导入成功')
+          clickSuccFu(res2.data)
+          closeFu()
+        }
+      }
     }
-  }, [clickSuccFu, closeFu, infoXLSX.succ])
+  }, [clickSuccFu, closeFu, infoXLSX, pageType])
 
   // 让父组件调用
   const openUpFu = useCallback((val: string) => {
-    console.log(123, val)
+    // console.log(123, val)
     zongZhnagType.current = val
 
-    // upBiaoGeRef.current?.click()
+    upBiaoGeRef.current?.click()
   }, [])
 
+  // 藏品总账点击查看
+
   // 可以让父组件调用子组件的方法
   useImperativeHandle(ref, () => ({
     openUpFu
@@ -160,21 +221,27 @@ function B1upXLSX({ closeFu, infoXLSX, clickSuccFu, upSuccFu, isZongZhang }: Pro
               classKey='B1upXLSX'
               yHeight={500}
               list={btnAc === '成功' ? infoXLSX.succ : infoXLSX.err}
-              columnsTemp={B1TableC2up(btnAc)}
+              columnsTemp={B1TableC2up(btnAc, pageType === '藏品总账')}
               lastBtn={[]}
               pagingInfo={false}
             />
 
             <div className='B1XLbtn'>
-              <Button type='primary' onClick={() => upBiaoGeRef.current?.click()}>
-                重新上传表格
-              </Button>
-              &emsp;
-              <Button type='primary' disabled={infoXLSX.succ.length === 0} onClick={btnOk}>
-                导入当前数据
-              </Button>
-              &emsp;
-              <MyPopconfirm txtK='取消' onConfirm={closeFu} Dom={<Button>取消导入</Button>} />
+              {infoXLSX.type === '查看' ? (
+                <Button onClick={closeFu}>关闭</Button>
+              ) : (
+                <>
+                  <Button type='primary' onClick={() => upBiaoGeRef.current?.click()}>
+                    重新上传表格
+                  </Button>
+                  &emsp;
+                  <Button type='primary' disabled={infoXLSX.succ.length === 0} onClick={btnOk}>
+                    导入当前数据
+                  </Button>
+                  &emsp;
+                  <MyPopconfirm txtK='取消' onConfirm={closeFu} Dom={<Button>取消导入</Button>} />
+                </>
+              )}
             </div>
           </div>
         </Modal>

+ 2 - 0
src/pages/B_enterTibet/B1collect/B1edit/index.tsx

@@ -370,10 +370,12 @@ function B1edit() {
                     <Button>下载模板</Button>
                   </a>
                   <B1upXLSX
+                    pageType='藏品征集'
                     closeFu={() => setInfoXLSX({ show: false, succ: [], err: [] })}
                     infoXLSX={infoXLSX}
                     upSuccFu={(succ, err) => setInfoXLSX({ show: true, succ, err })}
                     clickSuccFu={arr => setClueArr([...arr, ...clueArr])}
+                    url='cms/orderCollect/uploadZj'
                   />
 
                   <Button onClick={() => setUpFile(true)} disabled={clueArr.length === 0}>

+ 1 - 0
src/pages/B_enterTibet/B1collect/type.d.ts

@@ -118,4 +118,5 @@ export type TypeinfoXLSX = {
   show: boolean
   succ: B1Xtype[]
   err: B1Xtype[]
+  type?: '查看'
 }

+ 12 - 0
src/pages/C_goodsManage/C1register/C1look/index.tsx

@@ -123,6 +123,12 @@ function C1look() {
     }
   }, [auditSta, topInfo.id])
 
+  // 跳到审批页面
+  const toAuditFu = useCallback(() => {
+    MessageFu.success('已跳转至审批页面')
+    history.push(`/register_edit/3/${id}`)
+  }, [id])
+
   return (
     <div className={styles.C1look}>
       <div className='pageTitle'>藏品登记-{Reflect.get(pageTitTxtObj, key)}</div>
@@ -254,6 +260,12 @@ function C1look() {
               EXPORT_WORD_ENUM.COLLECTION_ARCHIVES
             ])}
 
+            {C22infoBtnFu(topInfo)['审批'] ? (
+              <Button type='primary' onClick={toAuditFu}>
+                审批
+              </Button>
+            ) : null}
+
             {C22infoBtnFu(topInfo)['撤回'] ? (
               <MyPopconfirm
                 txtK='撤回'

+ 12 - 0
src/pages/C_goodsManage/C22goodEdit/C22look/index.tsx

@@ -185,6 +185,12 @@ function C22look() {
     ]
   }, [tableLastBtn2Fu])
 
+  // 跳到审批页面
+  const toAuditFu = useCallback(() => {
+    MessageFu.success('已跳转至审批页面')
+    history.push(`/goodEdit_edit/3/${id}`)
+  }, [id])
+
   return (
     <div className={styles.C22look}>
       <div className='pageTitle'>藏品编辑-{Reflect.get(pageTitTxtObj, key)}</div>
@@ -304,6 +310,12 @@ function C22look() {
 
             {EXbtnFu(topInfo)}
 
+            {C22infoBtnFu(topInfo)['审批'] ? (
+              <Button type='primary' onClick={toAuditFu}>
+                审批
+              </Button>
+            ) : null}
+
             {C22infoBtnFu(topInfo)['撤回'] ? (
               <MyPopconfirm
                 txtK='撤回'

+ 7 - 20
src/store/action/A3machineReg.ts

@@ -15,6 +15,13 @@ export const A3m_APIaddZip_2 = (data: any) => {
 }
 
 /**
+ * 总账分账导入-藏品点击导入当前数据-2
+ */
+export const A3m_APIaddGoods_2 = (data: any) => {
+  return http.post('cms/import/im/batch/add', data)
+}
+
+/**
  * 总账分账导入-列表数据
  */
 export const A3m_APIgetList = (data: any) => {
@@ -34,23 +41,3 @@ export const A3m_APIlookInfo = (type: '3' | '4', id: number) => {
 export const A3m_APIdel = (id: number) => {
   return http.get(`cms/import/remove/${id}`)
 }
-
-// /**
-//  * 总账分账导入-获取分页列表
-//  */
-// export const C3_APIgetList = (data: any, exportFlag?: boolean): any => {
-//   if (exportFlag) return http.post('cms/goodsFocus/page', data)
-//   else {
-//     return async (dispatch: AppDispatch) => {
-//       const res = await http.post('cms/goodsFocus/page', data)
-//       if (res.code === 0) {
-//         const obj = {
-//           list: res.data.records,
-//           total: res.data.total
-//         }
-
-//         dispatch({ type: 'C3/getList', payload: obj })
-//       }
-//     }
-//   }
-// }

+ 6 - 5
src/utils/tableData.ts

@@ -93,14 +93,15 @@ export const B1TableC2 = [
 ]
 
 // 藏品征集表格导入
-export const B1TableC2up = (val: string) => {
-  let arr: any = [
-    ['txt', '数据行数', 'row'],
-    ['txt', '藏品名称', 'name']
-  ]
+export const B1TableC2up = (val: string, flag: boolean) => {
+  let arr: any = [['txt', '藏品名称', 'name']]
   if (val === '失败') {
     arr.push(['txtArr', '失败原因', 'error'])
   }
+
+  if (flag) arr.unshift(['txt', '藏品编号', 'num'])
+  else arr.unshift(['txt', '数据行数', 'row'])
+
   return arr
 }