Pārlūkot izejas kodu

写不完 根本写不完

shaogen1995 5 mēneši atpakaļ
vecāks
revīzija
62c4a389b1
37 mainītis faili ar 1410 papildinājumiem un 124 dzēšanām
  1. 6 0
      src/assets/styles/base.css
  2. 21 0
      src/assets/styles/base.less
  3. 10 0
      src/components/MyTable/index.module.scss
  4. 37 15
      src/components/MyTable/index.tsx
  5. 9 0
      src/pages/B_enterTibet/B3_4page/B3entering.tsx
  6. 9 0
      src/pages/B_enterTibet/B3_4page/B4enterTibet.tsx
  7. 27 0
      src/pages/B_enterTibet/B3_4page/index.module.scss
  8. 245 0
      src/pages/B_enterTibet/B3_4page/index.tsx
  9. 12 0
      src/pages/B_enterTibet/B3_4page/type.d.ts
  10. 0 4
      src/pages/B_enterTibet/B3entering/index.module.scss
  11. 0 14
      src/pages/B_enterTibet/B3entering/index.tsx
  12. 0 4
      src/pages/B_enterTibet/B4enterTibet/index.module.scss
  13. 0 14
      src/pages/B_enterTibet/B4enterTibet/index.tsx
  14. 2 4
      src/pages/D_storeManage/D1storage/D1Loc/index.module.scss
  15. 39 7
      src/pages/D_storeManage/D1storage/D1Loc/index.tsx
  16. 19 2
      src/pages/D_storeManage/D1storage/D1goods/data.ts
  17. 3 5
      src/pages/D_storeManage/D1storage/D1goods/index.module.scss
  18. 157 11
      src/pages/D_storeManage/D1storage/D1goods/index.tsx
  19. 8 0
      src/pages/D_storeManage/D1storage/D1goods/type.d.ts
  20. 13 0
      src/pages/D_storeManage/D1storage/index.module.scss
  21. 20 4
      src/pages/D_storeManage/D1storage/index.tsx
  22. 42 36
      src/pages/Layout/data.ts
  23. 1 1
      src/pages/Layout/index.tsx
  24. 79 0
      src/pages/Y_goodsDetails/Y1cathet/Y11com.tsx
  25. 47 0
      src/pages/Y_goodsDetails/Y1cathet/Y1main.tsx
  26. 25 0
      src/pages/Y_goodsDetails/Y1cathet/Y22com.tsx
  27. 53 0
      src/pages/Y_goodsDetails/Y1cathet/Y33com.tsx
  28. 39 0
      src/pages/Y_goodsDetails/Y1cathet/Y44com.tsx
  29. 65 0
      src/pages/Y_goodsDetails/Y1cathet/data.ts
  30. 155 0
      src/pages/Y_goodsDetails/Y1cathet/index.module.scss
  31. 32 0
      src/pages/Y_goodsDetails/Y1cathet/index.tsx
  32. 1 0
      src/pages/Y_goodsDetails/Y2look/data.ts
  33. 44 0
      src/pages/Y_goodsDetails/Y2look/index.module.scss
  34. 123 0
      src/pages/Y_goodsDetails/Y2look/index.tsx
  35. 0 1
      src/pages/Z_system/Z4organization/index.module.scss
  36. 2 2
      src/store/action/layout.ts
  37. 65 0
      src/utils/tableData.ts

+ 6 - 0
src/assets/styles/base.css

@@ -179,3 +179,9 @@ textarea {
   max-height: 500px !important;
   overflow-y: auto !important;
 }
+.Y2xia {
+  display: block;
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}

+ 21 - 0
src/assets/styles/base.less

@@ -284,3 +284,24 @@ textarea {
   max-height: 500px !important;
   overflow-y: auto !important;
 }
+
+// 热点页面打开透明的变化
+// #Y1cathet {
+//   animation: Y1cathet 0.5s linear forwards;
+// }
+// @keyframes Y1cathet {
+//   0% {
+//     right: -700px;
+//   }
+
+//   100% {
+//     right: 0;
+//   }
+// }
+
+.Y2xia {
+  display: block;
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}

+ 10 - 0
src/components/MyTable/index.module.scss

@@ -16,6 +16,16 @@
       .tabx {
         color: #ff4d4d;
       }
+      .MTclick {
+        cursor: pointer;
+        text-decoration: underline;
+        &:hover {
+          color: var(--themeColor);
+        }
+      }
+      // .MTclickAc {
+      //   color: var(--themeColor);
+      // }
     }
   }
 }

+ 37 - 15
src/components/MyTable/index.tsx

@@ -1,7 +1,8 @@
-import React, { useCallback, useEffect, useMemo } from 'react'
+import React, { useCallback, useEffect, useMemo, useState } from 'react'
 import styles from './index.module.scss'
 import { Table } from 'antd'
 import ImageLazy from '../ImageLazy'
+import classNames from 'classnames'
 
 type Props = {
   yHeight?: number //设置表格的高度
@@ -24,18 +25,6 @@ type Props = {
   widthSet?: any
 }
 
-// 表格内容定制化
-const tableComObj = (key: string, val: string[]) => {
-  const obj = {
-    A: (
-      <a href={val[1]} target='_blank' title={val[1]} rel='noreferrer'>
-        {val[0]}
-      </a>
-    )
-  }
-  return Reflect.get(obj, key)
-}
-
 function MyTable({
   yHeight,
   list,
@@ -56,6 +45,39 @@ function MyTable({
   isNull = '(空)',
   widthSet
 }: Props) {
+  // 点击操作高亮
+  const [clickAc, setClickAc] = useState(0)
+
+  // 表格内容定制化
+  const tableComObj = useCallback(
+    (key: string, val: string[], id?: any, backFu?: (id: number) => void) => {
+      const obj = {
+        // 超链接打开
+        A: (
+          <a href={val[1]} target='_blank' title={val[1]} rel='noreferrer'>
+            {val[0]}
+          </a>
+        ),
+        // 点击触发事件
+        S: (
+          <span
+            className={classNames('MTclick', clickAc === id ? 'MTclickAc' : '')}
+            onClick={() => {
+              if (id && backFu) {
+                backFu(id)
+                setClickAc(id)
+              }
+            }}
+          >
+            {val[1]}
+          </span>
+        )
+      }
+      return Reflect.get(obj, key)
+    },
+    [clickAc]
+  )
+
   useEffect(() => {
     const dom = document.querySelector(`.MyTable${classKey} .ant-table-body`) as HTMLDivElement
 
@@ -113,7 +135,7 @@ function MyTable({
           }
 
           if (v[4]) {
-            tempCom = tableComObj(v[4], [tempCom, item[v[2]]])
+            tempCom = tableComObj(v[4], [tempCom, item[v[2]]], item.id, v[5])
           } else if (item[v[2]].length >= v[3]) {
             tempCom = (
               <span style={{ cursor: 'pointer' }} title={item[v[2]]}>
@@ -128,7 +150,7 @@ function MyTable({
 
       return Reflect.get(obj, v[0])
     },
-    [isNull, pageNum, pageSize]
+    [isNull, pageNum, pageSize, tableComObj]
   )
 
   const columns = useMemo(() => {

+ 9 - 0
src/pages/B_enterTibet/B3_4page/B3entering.tsx

@@ -0,0 +1,9 @@
+import React from 'react'
+import B34page from '.'
+function B3entering() {
+  return <B34page pageSta='入馆' />
+}
+
+const MemoB3entering = React.memo(B3entering)
+
+export default MemoB3entering

+ 9 - 0
src/pages/B_enterTibet/B3_4page/B4enterTibet.tsx

@@ -0,0 +1,9 @@
+import React from 'react'
+import B34page from '.'
+function B4enterTibet() {
+  return <B34page pageSta='入藏' />
+}
+
+const MemoB4enterTibet = React.memo(B4enterTibet)
+
+export default MemoB4enterTibet

+ 27 - 0
src/pages/B_enterTibet/B3_4page/index.module.scss

@@ -0,0 +1,27 @@
+.B34page {
+  background-color: #fff;
+  border-radius: 10px;
+  padding: 15px 24px 0;
+  :global {
+    .B3top {
+      display: flex;
+      justify-content: space-between;
+      margin-bottom: 15px;
+      .B3topll {
+        display: flex;
+        & > div {
+          position: relative;
+          margin-right: 15px;
+          display: flex;
+          align-items: center;
+          .ant-input {
+            width: 160px;
+          }
+        }
+      }
+    }
+    .ant-table-cell {
+      padding: 8px !important;
+    }
+  }
+}

+ 245 - 0
src/pages/B_enterTibet/B3_4page/index.tsx

@@ -0,0 +1,245 @@
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
+import styles from './index.module.scss'
+import { Button, DatePicker, Input, Select } from 'antd'
+import { TypeB3Form } from './type'
+import { useDispatch, useSelector } from 'react-redux'
+import { Z5_APIgetList } from '@/store/action/Z5role'
+import { RootState } from '@/store'
+import dayjs from 'dayjs'
+import MyTable from '@/components/MyTable'
+import MyPopconfirm from '@/components/MyPopconfirm'
+import { B3tableC } from '@/utils/tableData'
+const { RangePicker } = DatePicker
+
+type InputKeyType = 'aaaa' | 'bbbb' | 'cccc' | 'dddd'
+
+const inputKeyArr: {
+  name: string
+  key: InputKeyType
+}[] = [
+  { name: '申请编号', key: 'aaaa' },
+  { name: '业务名称', key: 'bbbb' },
+  { name: '发起部门', key: 'cccc' },
+  { name: '发起人', key: 'dddd' }
+]
+
+const baseFormData: TypeB3Form = {
+  pageSize: 10,
+  pageNum: 1,
+  aaaa: '',
+  bbbb: '',
+  cccc: '',
+  dddd: '',
+  startTime: '',
+  endTime: '',
+  eeee: '',
+  ffff: ''
+}
+
+type Props = {
+  pageSta: '入馆' | '入藏'
+}
+
+// 没有接入后端 待完善
+
+function B34page({ pageSta }: Props) {
+  // 角色
+  const dispatch = useDispatch()
+  useEffect(() => {
+    dispatch(
+      Z5_APIgetList({
+        pageNum: 1,
+        pageSize: 99999,
+        searchKey: ''
+      })
+    )
+  }, [dispatch])
+
+  const { list: roleList } = useSelector((state: RootState) => state.Z5role.tableInfo)
+
+  const [formData, setFormData] = useState(baseFormData)
+  const formDataRef = useRef(baseFormData)
+
+  useEffect(() => {
+    formDataRef.current = formData
+  }, [formData])
+
+  // 点击搜索的 时间戳
+  const [timeKey, setTimeKey] = useState(0)
+
+  // 点击搜索
+  const clickSearch = useCallback(() => {
+    setFormData({ ...formData, pageNum: 1 })
+    setTimeout(() => {
+      setTimeKey(Date.now())
+    }, 50)
+  }, [formData])
+
+  // 时间选择器改变
+  const timeChange = useCallback(
+    (date: any, dateString: any) => {
+      let startTime = ''
+      let endTime = ''
+      if (dateString[0] && dateString[1]) {
+        startTime = dateString[0] + ' 00:00:00'
+        endTime = dateString[1] + ' 23:59:59'
+      }
+      setFormData({ ...formData, startTime, endTime })
+    },
+    [formData]
+  )
+
+  // 封装发送请求的函数
+  const getListFu = useCallback(() => {
+    console.log('发送请求', formDataRef.current)
+  }, [])
+
+  useEffect(() => {
+    getListFu()
+  }, [getListFu, timeKey])
+
+  // 输入框的改变
+  const txtChangeFu = useCallback(
+    (txt: string, key: InputKeyType) => {
+      setFormData({
+        ...formData,
+        [key]: txt
+      })
+    },
+    [formData]
+  )
+
+  // 点击重置
+  const resetSelectFu = useCallback(() => {
+    setFormData(baseFormData)
+    setTimeout(() => {
+      setTimeKey(Date.now())
+    }, 50)
+  }, [])
+
+  // 页码变化
+  const paginationChange = useCallback(
+    (pageNum: number, pageSize: number) => {
+      setFormData({ ...formData, pageNum, pageSize })
+      setTimeout(() => {
+        setTimeKey(Date.now())
+      }, 50)
+    },
+    [formData]
+  )
+
+  // 点击删除
+  const delTableFu = useCallback(
+    async (id: number) => {
+      getListFu()
+    },
+    [getListFu]
+  )
+
+  const tableLastBtn = useMemo(() => {
+    return [
+      {
+        title: '操作',
+        render: (item: any) => {
+          return (
+            <>
+              <Button size='small' type='text'>
+                编辑
+              </Button>
+              <Button size='small' type='text'>
+                审批
+              </Button>
+              <Button size='small' type='text'>
+                查看
+              </Button>
+              <MyPopconfirm txtK='删除' onConfirm={() => delTableFu(item.id)} />
+            </>
+          )
+        }
+      }
+    ]
+  }, [delTableFu])
+
+  return (
+    <div className={styles.B34page}>
+      <div className='pageTitle'>藏品{pageSta}</div>
+
+      <div className='B3top'>
+        <div className='B3topll'>
+          {inputKeyArr.map(item => (
+            <div key={item.name}>
+              <span>{item.name}:</span>
+              <Input
+                placeholder={`请输入${item.name}`}
+                maxLength={30}
+                value={formData[item.key]}
+                onChange={e => txtChangeFu(e.target.value, item.key)}
+              />
+            </div>
+          ))}
+        </div>
+        <div className='B3toprr'>
+          <Button type='primary'>批量导出</Button>&emsp;<Button type='primary'>新增</Button>
+        </div>
+      </div>
+      <div className='B3top'>
+        <div className='B3topll'>
+          <div>
+            <span>发起日期范围:</span>
+            <RangePicker
+              value={
+                formData.startTime ? [dayjs(formData.startTime), dayjs(formData.endTime)] : null
+              }
+              onChange={timeChange}
+            />
+          </div>
+
+          <div>
+            <span>申请状态:</span>
+            <Select
+              placeholder='请选择'
+              style={{ width: 200 }}
+              value={formData.eeee}
+              onChange={e => setFormData({ ...formData, eeee: e })}
+              options={[{ value: '', label: '全部' }]}
+            />
+          </div>
+
+          <div>
+            <span>选择角色:</span>
+            <Select
+              style={{ width: 200 }}
+              placeholder='请选择'
+              options={[{ id: '', roleName: '全部' }, ...roleList.filter(v => v.id !== 1)]}
+              fieldNames={{ value: 'id', label: 'roleName' }}
+              value={formData.ffff}
+              onChange={e => setFormData({ ...formData, ffff: e })}
+            />
+          </div>
+        </div>
+        <div className='B3toprr'>
+          <Button type='primary' onClick={clickSearch}>
+            查询
+          </Button>
+          &emsp;<Button onClick={resetSelectFu}>重置</Button>
+        </div>
+      </div>
+
+      {/* 表格 */}
+      <MyTable
+        yHeight={610}
+        list={[{ id: 1 }]}
+        columnsTemp={B3tableC}
+        lastBtn={tableLastBtn}
+        pageNum={formData.pageNum}
+        pageSize={formData.pageSize}
+        total={0}
+        onChange={(pageNum, pageSize) => paginationChange(pageNum, pageSize)}
+      />
+    </div>
+  )
+}
+
+const MemoB34page = React.memo(B34page)
+
+export default MemoB34page

+ 12 - 0
src/pages/B_enterTibet/B3_4page/type.d.ts

@@ -0,0 +1,12 @@
+export type TypeB3Form = {
+  pageSize: number
+  pageNum: number
+  aaaa: string
+  bbbb: string
+  cccc: string
+  dddd: string
+  startTime: string
+  endTime: string
+  eeee: string
+  ffff: string
+}

+ 0 - 4
src/pages/B_enterTibet/B3entering/index.module.scss

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

+ 0 - 14
src/pages/B_enterTibet/B3entering/index.tsx

@@ -1,14 +0,0 @@
-import React from 'react'
-import styles from './index.module.scss'
-function B3entering() {
-  return (
-    <div className={styles.B3entering}>
-      <div className='pageTitle'>藏品入馆</div>
-      <p>待开发</p>
-    </div>
-  )
-}
-
-const MemoB3entering = React.memo(B3entering)
-
-export default MemoB3entering

+ 0 - 4
src/pages/B_enterTibet/B4enterTibet/index.module.scss

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

+ 0 - 14
src/pages/B_enterTibet/B4enterTibet/index.tsx

@@ -1,14 +0,0 @@
-import React from 'react'
-import styles from './index.module.scss'
-function B4enterTibet() {
-  return (
-    <div className={styles.B4enterTibet}>
-      <div className='pageTitle'>藏品入藏</div>
-      <p>待开发</p>
-    </div>
-  )
-}
-
-const MemoB4enterTibet = React.memo(B4enterTibet)
-
-export default MemoB4enterTibet

+ 2 - 4
src/pages/D_storeManage/D1storage/D1Loc/index.module.scss

@@ -11,13 +11,11 @@
       height: calc(100% - 24px);
       display: flex;
       .D1Lmainll {
-        width: 400px;
-        background-color: aqua;
+        width: 300px;
       }
       .D1Lmainrr {
         margin-left: 20px;
-        width: calc(100% - 420px);
-        background-color: red;
+        width: calc(100% - 320px);
       }
     }
   }

+ 39 - 7
src/pages/D_storeManage/D1storage/D1Loc/index.tsx

@@ -1,13 +1,18 @@
-import React, { useCallback, useEffect, useState } from 'react'
+import React, { useCallback, useEffect, useMemo, useState } from 'react'
 import styles from './index.module.scss'
-import { Checkbox } from 'antd'
+import { Button, Checkbox } from 'antd'
+import MyTable from '@/components/MyTable'
+import { D1tableC } from '@/utils/tableData'
 // import { D1_APIgetTree } from '@/store/action/D1storage'
 
-function D1Loc() {
+type Props = {
+  lookFu: (val: string[]) => void
+}
+
+function D1Loc({ lookFu }: Props) {
   const [isNull, setIsNull] = useState(false)
 
   const getTreeFu = useCallback(async () => {
-    // 待完善 报错
     // const res = await D1_APIgetTree()
     // if (res.code === 0) {
     //   console.log(123, res)
@@ -15,10 +20,25 @@ function D1Loc() {
   }, [])
 
   useEffect(() => {
-    // 待完善 isNull 的值来获取数据
+    // 待完善 isNull 的值来获取数据 没有接入后端接口
     getTreeFu()
   }, [getTreeFu])
 
+  const tableLastBtn = useMemo(() => {
+    return [
+      {
+        title: '相关藏品',
+        render: (item: any) => {
+          return (
+            <Button size='small' type='text' onClick={() => lookFu(['1', '2', '3', '4', '5'])}>
+              查看
+            </Button>
+          )
+        }
+      }
+    ]
+  }, [lookFu])
+
   return (
     <div className={styles.D1Loc}>
       <div className='D1Ltop'>
@@ -28,8 +48,20 @@ function D1Loc() {
       </div>
 
       <div className='D1Lmain'>
-        <div className='D1Lmainll'>树列表1</div>
-        <div className='D1Lmainrr'>表格1</div>
+        <div className='D1Lmainll'>
+          {1 + 1 === 2 ? <div className='D1null'>暂无数据</div> : '树列表'}
+        </div>
+        <div className='D1Lmainrr'>
+          {/* 表格 */}
+          <MyTable
+            yHeight={690}
+            list={[{ id: 1, name1: 'A' }]}
+            columnsTemp={D1tableC}
+            lastBtn={tableLastBtn}
+            pagingInfo={false}
+            widthSet={{ description: 400 }}
+          />
+        </div>
       </div>
     </div>
   )

+ 19 - 2
src/pages/D_storeManage/D1storage/D1goods/data.ts

@@ -1,6 +1,23 @@
-// 编号类型 (待完善)
+// 编号类型
 export const D1GselectNum = [
   { value: '', label: '全部' },
   { value: '藏品总登记号', label: '藏品总登记号' },
-  { value: '辅助账号', label: '辅助账号' }
+  { value: '辅助账号', label: '辅助账号' },
+  { value: '索书号', label: '索书号' },
+  { value: '档案编号', label: '档案编号' },
+  { value: '固定资产登记号', label: '固定资产登记号' },
+  { value: '财产登记号', label: '财产登记号' },
+  { value: '出土(水)登记号', label: '出土(水)登记号' },
+  { value: '其他编号', label: '其他编号' }
+]
+
+// 库存状态(待完善)
+export const D1GselectSta = [
+  { value: '', label: '全部' },
+  { value: 1, label: '待入库' },
+  { value: 2, label: '已入库' },
+  { value: 3, label: '待出库' },
+  { value: 4, label: '已出库' },
+  { value: 5, label: '盘点中' },
+  { value: 6, label: '注销中' }
 ]

+ 3 - 5
src/pages/D_storeManage/D1storage/D1goods/index.module.scss

@@ -6,7 +6,7 @@
       justify-content: flex-end;
       .D1GtRow {
         position: relative;
-        width: 150px;
+        width: 160px;
         margin-left: 15px;
         .D1GtRowTxt {
           top: -20px;
@@ -22,13 +22,11 @@
       height: calc(100% - 24px);
       display: flex;
       .D1Gmainll {
-        width: 400px;
-        background-color: aqua;
+        width: 300px;
       }
       .D1Gmainrr {
         margin-left: 20px;
-        width: calc(100% - 420px);
-        background-color: red;
+        width: calc(100% - 320px);
       }
     }
   }

+ 157 - 11
src/pages/D_storeManage/D1storage/D1goods/index.tsx

@@ -1,42 +1,188 @@
-import React from 'react'
+import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'
 import styles from './index.module.scss'
 import { Button, Input, Select } from 'antd'
-import { D1GselectNum } from './data'
+import { D1GselectNum, D1GselectSta } from './data'
+import { TypeD1Gform } from './type'
+import MyTable from '@/components/MyTable'
+import { D1GtableC } from '@/utils/tableData'
+import Y1cathet from '@/pages/Y_goodsDetails/Y1cathet'
+import history from '@/utils/history'
+
+const baseFormData: TypeD1Gform = {
+  pageSize: 10,
+  pageNum: 1,
+  aaaa: '',
+  bbbb: '',
+  cccc: '',
+  dddd: ''
+}
+// 待完善 没有接入后端
+
+type Props = {
+  lookData: string[]
+}
+
+function D1goods({ lookData }: Props) {
+  useEffect(() => {
+    console.log('获取参数', lookData)
+  }, [lookData])
+
+  const [formData, setFormData] = useState(baseFormData)
+  const formDataRef = useRef(baseFormData)
+
+  useEffect(() => {
+    formDataRef.current = formData
+  }, [formData])
+
+  // 点击搜索的 时间戳
+  const [timeKey, setTimeKey] = useState(0)
+
+  // 点击搜索
+  const clickSearch = useCallback(() => {
+    setFormData({ ...formData, pageNum: 1 })
+    setTimeout(() => {
+      setTimeKey(Date.now())
+    }, 50)
+  }, [formData])
+
+  // 封装发送请求的函数
+  const getListFu = useCallback(() => {
+    console.log('发送请求', formDataRef.current)
+  }, [])
+
+  useEffect(() => {
+    getListFu()
+  }, [getListFu, timeKey])
+
+  // 输入框的改变
+  const txtChangeFu = useCallback(
+    (txt: string, key: 'bbbb' | 'cccc') => {
+      setFormData({
+        ...formData,
+        [key]: txt
+      })
+    },
+    [formData]
+  )
+
+  // 点击重置
+  const resetSelectFu = useCallback(() => {
+    setFormData(baseFormData)
+    setTimeout(() => {
+      setTimeKey(Date.now())
+    }, 50)
+  }, [])
+
+  // 页码变化
+  // const paginationChange = useCallback(
+  //   (pageNum: number, pageSize: number) => {
+  //     setFormData({ ...formData, pageNum, pageSize })
+  //     setTimeout(() => {
+  //       setTimeKey(Date.now())
+  //     }, 50)
+  //   },
+  //   [formData]
+  // )
+
+  const tableLastBtn = useMemo(() => {
+    return [
+      {
+        title: '操作',
+        render: (item: any) => {
+          return (
+            <Button
+              size='small'
+              type='text'
+              onClick={() => history.push(`/storage_look/${item.id}`)}
+            >
+              查看
+            </Button>
+          )
+        }
+      }
+    ]
+  }, [])
+
+  // 打开侧边栏
+  const [cathet, setCathet] = useState(0)
+  const cathetFu = useCallback((id: number) => {
+    setCathet(id)
+  }, [])
 
-function D1goods() {
   return (
     <div className={styles.D1goods}>
       <div className='D1Gtop'>
         <div className='D1GtRow'>
           <span className='D1GtRowTxt'>编号类型:</span>
-          <Select options={D1GselectNum} style={{ width: 150 }} />
+          <Select
+            options={D1GselectNum}
+            style={{ width: 160 }}
+            value={formData.aaaa}
+            onChange={e => setFormData({ ...formData, aaaa: e })}
+          />
         </div>
 
         <div className='D1GtRow'>
           <span className='D1GtRowTxt'>藏品编号:</span>
-          <Input placeholder='请输入内容' maxLength={30} />
+          <Input
+            placeholder='请输入内容'
+            maxLength={30}
+            value={formData.bbbb}
+            onChange={e => txtChangeFu(e.target.value, 'bbbb')}
+          />
         </div>
 
         <div className='D1GtRow'>
           <span className='D1GtRowTxt'>藏品名称:</span>
-          <Input placeholder='请输入内容' maxLength={30} />
+          <Input
+            placeholder='请输入内容'
+            maxLength={30}
+            value={formData.cccc}
+            onChange={e => txtChangeFu(e.target.value, 'cccc')}
+          />
         </div>
 
         <div className='D1GtRow'>
           <span className='D1GtRowTxt'>库存状态:</span>
-          <Select options={[]} style={{ width: 150 }} />
+          <Select
+            options={D1GselectSta}
+            style={{ width: 160 }}
+            value={formData.dddd}
+            onChange={e => setFormData({ ...formData, dddd: e })}
+          />
         </div>
 
         <div className='D1GtRow'>
-          <Button type='primary'>查询</Button>&emsp;
-          <Button>重置</Button>
+          <Button type='primary' onClick={clickSearch}>
+            查询
+          </Button>
+          &emsp;
+          <Button onClick={resetSelectFu}>重置</Button>
         </div>
       </div>
 
       <div className='D1Gmain'>
-        <div className='D1Gmainll'>树列表</div>
-        <div className='D1Gmainrr'>表格</div>
+        <div className='D1Gmainll'>
+          {1 + 1 === 2 ? <div className='D1null'>暂无数据</div> : '树列表'}
+        </div>
+        <div className='D1Gmainrr'>
+          {/* 表格 */}
+          <MyTable
+            yHeight={666}
+            list={[
+              { id: 99, thumb: '', num: '一段编号_可点击' },
+              { id: 199, thumb: '', num: '一段编号_可点击' }
+            ]}
+            columnsTemp={D1GtableC(cathetFu)}
+            lastBtn={tableLastBtn}
+            pagingInfo={false}
+            widthSet={{ description: 200 }}
+          />
+        </div>
       </div>
+
+      {/* 打开侧边栏 */}
+      <Y1cathet sId={cathet} closeFu={() => setCathet(0)} />
     </div>
   )
 }

+ 8 - 0
src/pages/D_storeManage/D1storage/D1goods/type.d.ts

@@ -0,0 +1,8 @@
+export type TypeD1Gform = {
+  pageNum: number
+  pageSize: number
+  aaaa: string
+  bbbb: string
+  cccc: string
+  dddd: string
+}

+ 13 - 0
src/pages/D_storeManage/D1storage/index.module.scss

@@ -24,6 +24,19 @@
       & > div {
         width: 100%;
         height: 100%;
+        .D1null {
+          width: 100%;
+          height: 80%;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          font-size: 18px;
+          letter-spacing: 4px;
+          font-weight: 700;
+        }
+        .ant-table-cell {
+          padding: 8px !important;
+        }
       }
     }
   }

+ 20 - 4
src/pages/D_storeManage/D1storage/index.tsx

@@ -1,4 +1,4 @@
-import React, { useState } from 'react'
+import React, { useRef, useState } from 'react'
 import styles from './index.module.scss'
 import { Button } from 'antd'
 import D1Loc from './D1Loc'
@@ -11,20 +11,36 @@ const topBtnArr: TypeTopBtn[] = ['按库位查看', '按藏品查看']
 function D1storage() {
   const [topAc, setTopAc] = useState<TypeTopBtn>('按库位查看')
 
+  const lookData = useRef<string[]>([])
+
   return (
     <div className={styles.D1storage}>
       <div className='pageTitle'>库房管理</div>
       <div className='D1top'>
         <span className='D1topllTxt'>仓库列表</span>
         {topBtnArr.map(v => (
-          <Button onClick={() => setTopAc(v)} key={v} type={topAc === v ? 'primary' : 'default'}>
+          <Button
+            onClick={() => {
+              lookData.current = []
+              setTopAc(v)
+            }}
+            key={v}
+            type={topAc === v ? 'primary' : 'default'}
+          >
             {v}
           </Button>
         ))}
       </div>
       <div className='D1main'>
-        {topAc === '按库位查看' ? <D1Loc /> : null}
-        {topAc === '按藏品查看' ? <D1goods /> : null}
+        {topAc === '按库位查看' ? (
+          <D1Loc
+            lookFu={val => {
+              lookData.current = val
+              setTopAc('按藏品查看')
+            }}
+          />
+        ) : null}
+        {topAc === '按藏品查看' ? <D1goods lookData={lookData.current} /> : null}
       </div>
     </div>
   )

+ 42 - 36
src/pages/Layout/data.ts

@@ -26,36 +26,36 @@ const tabLeftArr: RouterType = [
       // }
     ]
   },
-  // {
-  //   id: 2,
-  //   name: '入藏管理',
-  //   son: [
-  //     {
-  //       id: 210,
-  //       name: '藏品征集',
-  //       path: '/collect',
-  //       Com: React.lazy(() => import('../B_enterTibet/B1collect'))
-  //     },
-  //     {
-  //       id: 220,
-  //       name: '藏品鉴定',
-  //       path: '/identify',
-  //       Com: React.lazy(() => import('../B_enterTibet/B2identify'))
-  //     },
-  //     {
-  //       id: 230,
-  //       name: '藏品入馆',
-  //       path: '/entering',
-  //       Com: React.lazy(() => import('../B_enterTibet/B3entering'))
-  //     },
-  //     {
-  //       id: 240,
-  //       name: '藏品入藏',
-  //       path: '/enterTibet',
-  //       Com: React.lazy(() => import('../B_enterTibet/B4enterTibet'))
-  //     }
-  //   ]
-  // },
+  {
+    id: 2,
+    name: '入藏管理',
+    son: [
+      // {
+      //   id: 210,
+      //   name: '藏品征集',
+      //   path: '/collect',
+      //   Com: React.lazy(() => import('../B_enterTibet/B1collect'))
+      // },
+      // {
+      //   id: 220,
+      //   name: '藏品鉴定',
+      //   path: '/identify',
+      //   Com: React.lazy(() => import('../B_enterTibet/B2identify'))
+      // },
+      {
+        id: 230,
+        name: '藏品入馆',
+        path: '/entering',
+        Com: React.lazy(() => import('../B_enterTibet/B3_4page/B3entering'))
+      },
+      {
+        id: 240,
+        name: '藏品入藏',
+        path: '/enterTibet',
+        Com: React.lazy(() => import('../B_enterTibet/B3_4page/B4enterTibet'))
+      }
+    ]
+  },
   // {
   //   id: 3,
   //   name: '藏品管理',
@@ -211,12 +211,12 @@ const tabLeftArr: RouterType = [
         path: '/numRule',
         Com: React.lazy(() => import('../Z_system/Z2numRule'))
       },
-      {
-        id: 730,
-        name: '流程设置',
-        path: '/flowSet',
-        Com: React.lazy(() => import('../Z_system/Z3flowSet'))
-      },
+      // {
+      //   id: 730,
+      //   name: '流程设置',
+      //   path: '/flowSet',
+      //   Com: React.lazy(() => import('../Z_system/Z3flowSet'))
+      // },
 
       {
         id: 740,
@@ -262,5 +262,11 @@ export const routerSon: RouterTypeRow = [
     name: '库房设置-库位设置',
     path: '/storSet_site/:id',
     Com: React.lazy(() => import('../D_storeManage/D2storSet/D2site'))
+  },
+  {
+    id: 3,
+    name: '库房管理-查看藏品详情',
+    path: '/storage_look/:id',
+    Com: React.lazy(() => import('../Y_goodsDetails/Y2look'))
   }
 ]

+ 1 - 1
src/pages/Layout/index.tsx

@@ -38,7 +38,7 @@ function Layout() {
     const userInfo = getTokenInfo().user
 
     // 获取权限
-    const getRoleRes = await API_getRoleArr(userInfo.id)
+    const getRoleRes = await API_getRoleArr(userInfo.roleId)
 
     if (getRoleRes.code === 0) {
       const getRoleArr: TypeZ5Role[] = getRoleRes.data || []

+ 79 - 0
src/pages/Y_goodsDetails/Y1cathet/Y11com.tsx

@@ -0,0 +1,79 @@
+import ImageLazy from '@/components/ImageLazy'
+import React from 'react'
+import classNames from 'classnames'
+import { Y11infoArr1, Y11infoArr2, Y11infoArr3, Y11infoArr4, Y11infoArr5 } from './data'
+
+function Y11com() {
+  return (
+    <div className='Y1rowZ'>
+      <div className='Y1tit'>档案信息</div>
+      <div className='Y1z1'>
+        <div className='Y1rowZll'>
+          {Y11infoArr1.map((v, i) => (
+            <div className='Y1row' key={v.name}>
+              <div className='Y1rowll'>{v.name}:</div>
+              <div className='Y1rowrr'>这是一段文本{i}</div>
+            </div>
+          ))}
+        </div>
+        <div className='Y1rowZrr'>
+          <ImageLazy width={200} height={200} srcBig={''} src={''} />
+        </div>
+      </div>
+
+      <div className='Y1z2'>
+        <div className='Y1tit'>藏品基本信息</div>
+        <div className='y1z2_1'>
+          {Y11infoArr2.map((v, i) => (
+            <div className={classNames('y1z2_1row1', v.full ? 'y1z2_1row1Full' : '')} key={v.name}>
+              <div className='y1z2_1r11'>{v.name}:</div>
+              <div className='y1z2_1r12'>这是一段文本{i}</div>
+            </div>
+          ))}
+        </div>
+      </div>
+
+      <div className='Y1z2'>
+        <div className='Y1tit'>尺寸和质量</div>
+        <div className='y1z2_1'>
+          {Y11infoArr3.map((v, i) => (
+            <div className={classNames('y1z2_1row1', v.full ? 'y1z2_1row1Full' : '')} key={v.name}>
+              <div className='y1z2_1r11'>{v.name}:</div>
+              <div className='y1z2_1r12'>这是一段文本{i}</div>
+            </div>
+          ))}
+        </div>
+      </div>
+
+      <div className='Y1z2'>
+        <div className='Y1tit'>入藏及来源</div>
+        <div className='y1z2_1'>
+          {Y11infoArr4.map((v, i) => (
+            <div className={classNames('y1z2_1row1', v.full ? 'y1z2_1row1Full' : '')} key={v.name}>
+              <div className='y1z2_1r11'>{v.name}:</div>
+              <div className='y1z2_1r12'>这是一段文本{i}</div>
+            </div>
+          ))}
+        </div>
+      </div>
+
+      <div className='Y1z2'>
+        <div className='Y1tit'>藏品历史及流传</div>
+        <div className='y1z2_1'>
+          {Y11infoArr5.map((v, i) => (
+            <div className={classNames('y1z2_1row1')} key={v.name}>
+              <div className={classNames('y1z2_1r11', v.name.length >= 7 ? 'y1z2_1r11long' : '')}>
+                {v.name}:
+              </div>
+              <div className='y1z2_1r12'>这是一段文本{i}</div>
+            </div>
+          ))}
+        </div>
+      </div>
+    </div>
+  )
+}
+
+const MemoY11com = React.memo(Y11com)
+
+export default MemoY11com

+ 47 - 0
src/pages/Y_goodsDetails/Y1cathet/Y1main.tsx

@@ -0,0 +1,47 @@
+import React, { useState } from 'react'
+import classNames from 'classnames'
+import Y11com from './Y11com'
+import Y22com from './Y22com'
+import Y33com from './Y33com'
+import Y44com from './Y44com'
+
+export type Y1TabArrType = '藏品信息' | '库存信息' | '藏品附件' | '藏品日志'
+
+export const Y1tabArr: Y1TabArrType[] = ['藏品信息', '库存信息', '藏品附件', '藏品日志']
+
+type Props = {
+  sId: number
+}
+
+// 待完善 没有接入接口
+
+function Y1main({ sId }: Props) {
+  const [tabAc, setTabAc] = useState<Y1TabArrType>('藏品信息')
+
+  return (
+    <div className='Y1main'>
+      <div className='Y1tab'>
+        {Y1tabArr.map(v => (
+          <div
+            key={v}
+            className={classNames('Y1tRow', tabAc === v ? 'Y1tRowAc' : '')}
+            onClick={() => setTabAc(v)}
+          >
+            {v}
+          </div>
+        ))}
+      </div>
+
+      <div className='Y1info'>
+        {tabAc === '藏品信息' ? <Y11com /> : null}
+        {tabAc === '库存信息' ? <Y22com /> : null}
+        {tabAc === '藏品附件' ? <Y33com /> : null}
+        {tabAc === '藏品日志' ? <Y44com /> : null}
+      </div>
+    </div>
+  )
+}
+
+const MemoY1main = React.memo(Y1main)
+
+export default MemoY1main

+ 25 - 0
src/pages/Y_goodsDetails/Y1cathet/Y22com.tsx

@@ -0,0 +1,25 @@
+import MyTable from '@/components/MyTable'
+import { Y22tableC } from '@/utils/tableData'
+import React from 'react'
+function Y22com() {
+  return (
+    <div className='Y22com'>
+      <div className='Y22sta'>库存状态:待入库</div>
+
+      {/* 表格 */}
+      <MyTable
+        classKey='Y22comTable'
+        yHeight={666}
+        list={[{ id: 1 }]}
+        columnsTemp={Y22tableC}
+        lastBtn={[]}
+        pagingInfo={false}
+        widthSet={{ description: 600 }}
+      />
+    </div>
+  )
+}
+
+const MemoY22com = React.memo(Y22com)
+
+export default MemoY22com

+ 53 - 0
src/pages/Y_goodsDetails/Y1cathet/Y33com.tsx

@@ -0,0 +1,53 @@
+import React, { useMemo, useState } from 'react'
+import { Y33BtnArr } from './data'
+import { Button } from 'antd'
+import MyTable from '@/components/MyTable'
+import { Y33tableC } from '@/utils/tableData'
+function Y33com() {
+  const [btnAc, setBtnAc] = useState('全部')
+
+  const tableLastBtn = useMemo(() => {
+    return [
+      {
+        title: '操作',
+        render: (item: any) => {
+          return (
+            <Button size='small' type='text'>
+              下载
+            </Button>
+          )
+        }
+      }
+    ]
+  }, [])
+
+  return (
+    <div className='Y33com'>
+      <div className='Y33top'>
+        {Y33BtnArr.map(v => (
+          <Button
+            key={v.name}
+            onClick={() => setBtnAc(v.name)}
+            type={btnAc === v.name ? 'primary' : 'default'}
+          >
+            {v.name}
+          </Button>
+        ))}
+      </div>
+
+      {/* 表格 */}
+      <MyTable
+        classKey='Y33comTable'
+        yHeight={666}
+        list={[{ id: 1, thumb: '' }]}
+        columnsTemp={Y33tableC}
+        lastBtn={tableLastBtn}
+        pagingInfo={false}
+      />
+    </div>
+  )
+}
+
+const MemoY33com = React.memo(Y33com)
+
+export default MemoY33com

+ 39 - 0
src/pages/Y_goodsDetails/Y1cathet/Y44com.tsx

@@ -0,0 +1,39 @@
+import MyTable from '@/components/MyTable'
+import { Y44tableC } from '@/utils/tableData'
+import { Button } from 'antd'
+import React, { useMemo } from 'react'
+function Y44com() {
+  const tableLastBtn = useMemo(() => {
+    return [
+      {
+        title: '操作',
+        render: (item: any) => {
+          return (
+            <Button size='small' type='text'>
+              {/* 待完善 新窗口打开 */}
+              查看
+            </Button>
+          )
+        }
+      }
+    ]
+  }, [])
+
+  return (
+    <div className='Y44com'>
+      {/* 表格 */}
+      <MyTable
+        classKey='Y44comTable'
+        yHeight={666}
+        list={[{ id: 1 }]}
+        columnsTemp={Y44tableC}
+        lastBtn={tableLastBtn}
+        pagingInfo={false}
+      />
+    </div>
+  )
+}
+
+const MemoY44com = React.memo(Y44com)
+
+export default MemoY44com

+ 65 - 0
src/pages/Y_goodsDetails/Y1cathet/data.ts

@@ -0,0 +1,65 @@
+export const Y11infoArr1 = [
+  { name: '编号类型', key: '' },
+  { name: '藏品编号', key: '' },
+  { name: '制档人', key: '' },
+  { name: '分类号', key: '' },
+  { name: '制档日期', key: '' }
+]
+
+export const Y11infoArr2 = [
+  { name: '藏品名称', key: '' },
+  { name: '藏品原名', key: '' },
+  { name: '文物级别', key: '' },
+  { name: '文物类别', key: '' },
+  { name: '年代', key: '' },
+  { name: '制作时间', key: '' },
+  { name: '作者', key: '' },
+  { name: '作者介绍', key: '' },
+  { name: '数量', key: '' },
+  { name: '实际数量', key: '' },
+  { name: '质地', key: '', full: true },
+  { name: '完残程度', key: '' },
+  { name: '完残情况', key: '' },
+  { name: '保存状态', key: '', full: true },
+  { name: '色泽', key: '' },
+  { name: '用途', key: '' },
+  { name: '形状描述', key: '' },
+  { name: '著者', key: '' },
+  { name: '版本', key: '' },
+  { name: '存卷', key: '' },
+  { name: '备注', key: '', full: true }
+]
+
+export const Y11infoArr3 = [
+  { name: '尺寸', key: '', full: true },
+  { name: '具体尺寸', key: '', full: true },
+  { name: '质量范围', key: '' },
+  { name: '具体质量', key: '' }
+]
+
+export const Y11infoArr4 = [
+  { name: '入馆凭证号', key: '' },
+  { name: '入藏凭证号', key: '' },
+  { name: '入藏日期', key: '' },
+  { name: '入藏日期范围', key: '' },
+  { name: '来源', key: '' },
+  { name: '来源详情', key: '' },
+  { name: '征集经过', key: '' },
+  { name: '铭记题跋', key: '' },
+  { name: '鉴藏印记', key: '', full: true }
+]
+
+export const Y11infoArr5 = [
+  { name: '著作及有关书目', key: '' },
+  { name: '流传经历', key: '' }
+]
+
+export const Y33BtnArr = [
+  { name: '全部', key: '' },
+  { name: '图像', key: '' },
+  { name: '3D', key: '' },
+  { name: '音频', key: '' },
+  { name: '视频', key: '' },
+  { name: '文档', key: '' },
+  { name: '其他', key: '' }
+]

+ 155 - 0
src/pages/Y_goodsDetails/Y1cathet/index.module.scss

@@ -0,0 +1,155 @@
+.Y1cathet {
+  position: fixed;
+  top: 0;
+  right: -900px;
+  width: 900px;
+  height: 100%;
+  z-index: 9999;
+  background-color: #fff;
+  box-shadow: 1px 1px 4px 4px #ccc;
+  padding: 24px;
+  transition: all 0.4s;
+  :global {
+    .Y1top {
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
+    }
+    .Y1main {
+      margin-top: 25px;
+      height: calc(100% - 40px);
+      .Y1tab {
+        display: flex;
+        justify-content: space-around;
+        border-bottom: 1px solid #ccc;
+        .Y1tRow {
+          cursor: pointer;
+          font-size: 18px;
+          height: 36px;
+        }
+        .Y1tRowAc {
+          color: var(--themeColor);
+          position: relative;
+          &::before {
+            content: '';
+            position: absolute;
+            width: 110%;
+            left: -5%;
+            bottom: -2px;
+            height: 4px;
+            background-color: var(--themeColor);
+          }
+        }
+      }
+      .Y1info {
+        width: 100%;
+        margin-top: 5px;
+        height: calc(100% - 35px);
+        font-size: 16px;
+        padding: 15px;
+        overflow-y: auto;
+        .Y1tit {
+          font-size: 18px;
+          padding-left: 15px;
+          font-weight: 700;
+          position: relative;
+          margin-bottom: 15px;
+          color: var(--themeColor);
+          &::before {
+            position: absolute;
+            left: 0px;
+            top: 50%;
+            transform: translateY(-50%);
+            content: '';
+            width: 6px;
+            height: 18px;
+            background-color: var(--themeColor);
+          }
+        }
+
+        .Y1row {
+          width: 100%;
+          display: flex;
+          margin-bottom: 10px;
+          .Y1rowll {
+            width: 120px;
+            text-align: right;
+            font-weight: 700;
+          }
+          .Y1rowrr {
+            width: calc(100% - 120px);
+          }
+        }
+
+        // ------------------------档案信息
+        .Y1rowZ {
+          .Y1z1 {
+            margin-bottom: 20px;
+            display: flex;
+            justify-content: space-between;
+            .Y1rowZll {
+              width: 48%;
+              display: flex;
+              flex-direction: column;
+              justify-content: center;
+            }
+            .Y1rowZrr {
+              display: flex;
+              align-items: center;
+              width: 48%;
+            }
+          }
+
+          .Y1z2 {
+            margin-bottom: 20px;
+            .y1z2_1 {
+              display: flex;
+              flex-wrap: wrap;
+              justify-content: space-between;
+              width: 100%;
+              .y1z2_1row1 {
+                margin-bottom: 10px;
+                width: 48%;
+                display: flex;
+                .y1z2_1r11 {
+                  width: 120px;
+                  text-align: right;
+                  font-weight: 700;
+                }
+                .y1z2_1r11long {
+                  width: 132px;
+                  position: relative;
+                  left: -6px;
+                }
+                .y1z2_1r12 {
+                  width: calc(100% - 120px);
+                }
+              }
+              .y1z2_1row1Full {
+                width: 100%;
+              }
+            }
+          }
+        }
+
+        // ------------------------库存信息
+        .Y22com {
+          .Y22sta {
+            font-weight: 700;
+            font-size: 18px;
+            margin-bottom: 20px;
+          }
+        }
+
+        // ------------------------藏品附件
+        .Y33com {
+          .Y33top {
+            margin-bottom: 20px;
+            display: flex;
+            justify-content: space-around;
+          }
+        }
+      }
+    }
+  }
+}

+ 32 - 0
src/pages/Y_goodsDetails/Y1cathet/index.tsx

@@ -0,0 +1,32 @@
+import React from 'react'
+import styles from './index.module.scss'
+import { Button } from 'antd'
+import Y1main from './Y1main'
+import history from '@/utils/history'
+
+type Props = {
+  sId: number
+  closeFu: () => void
+}
+
+function Y1cathet({ sId, closeFu }: Props) {
+  return (
+    <div className={styles.Y1cathet} style={{ right: sId ? '0px' : '-900px' }}>
+      <div className='Y1top'>
+        <h2>藏品详情</h2>
+        <div>
+          <span>更多操作请在详情页中进行</span>&emsp;
+          <Button type='primary' onClick={() => history.push(`/storage_look/${sId}`)}>
+            查看详情
+          </Button>
+          &emsp;<Button onClick={closeFu}>收起</Button>
+        </div>
+      </div>
+      {sId ? <Y1main sId={sId} key={sId} /> : null}
+    </div>
+  )
+}
+
+const MemoY1cathet = React.memo(Y1cathet)
+
+export default MemoY1cathet

+ 1 - 0
src/pages/Y_goodsDetails/Y2look/data.ts

@@ -0,0 +1 @@
+export const a = ''

+ 44 - 0
src/pages/Y_goodsDetails/Y2look/index.module.scss

@@ -0,0 +1,44 @@
+.Y2look {
+  background-color: #fff;
+  border-radius: 10px;
+  padding: 24px;
+  :global {
+    .Y2top {
+      display: flex;
+      justify-content: space-between;
+      border-bottom: 1px solid #ccc;
+
+      .Y2topll {
+        width: 40%;
+        display: flex;
+        justify-content: space-around;
+        .Y1tRow {
+          cursor: pointer;
+          font-size: 18px;
+          height: 36px;
+        }
+        .Y1tRowAc {
+          color: var(--themeColor);
+          position: relative;
+          &::before {
+            content: '';
+            position: absolute;
+            width: 110%;
+            left: -5%;
+            bottom: -2px;
+            height: 4px;
+            background-color: var(--themeColor);
+          }
+        }
+      }
+      .Y2toprr {
+        display: flex;
+        justify-content: flex-end;
+        width: 60%;
+        .Y2xia {
+          text-align: center;
+        }
+      }
+    }
+  }
+}

+ 123 - 0
src/pages/Y_goodsDetails/Y2look/index.tsx

@@ -0,0 +1,123 @@
+import React, { useEffect, useMemo, useState } from 'react'
+import styles from './index.module.scss'
+import { useParams } from 'react-router-dom'
+import { Y1tabArr, Y1TabArrType } from '../Y1cathet/Y1main'
+import classNames from 'classnames'
+import { Button, Dropdown, MenuProps } from 'antd'
+import MyPopconfirm from '@/components/MyPopconfirm'
+import history from '@/utils/history'
+
+function Y2look() {
+  const { id: sId } = useParams<any>()
+
+  useEffect(() => {
+    console.log('获取ID', sId)
+  }, [sId])
+
+  const [tabAc, setTabAc] = useState<Y1TabArrType>('藏品信息')
+
+  // 待完善 各种按钮跳转等等
+  const items1 = useMemo(() => {
+    let arr: MenuProps['items'] = [
+      {
+        key: '1',
+        label: <span className='Y2xia'>编辑</span>
+      },
+      {
+        key: '2',
+        label: (
+          <MyPopconfirm
+            txtK='删除'
+            onConfirm={() => {}}
+            Dom={<span className='Y2xia'>删除</span>}
+          />
+        )
+      }
+    ]
+    return arr
+  }, [])
+
+  const items2 = useMemo(() => {
+    let arr: MenuProps['items'] = [
+      {
+        key: '1',
+        label: <span className='Y2xia'>入库</span>
+      },
+      {
+        key: '2',
+        label: <span className='Y2xia'>移库</span>
+      },
+      {
+        key: '3',
+        label: <span className='Y2xia'>出库</span>
+      },
+      {
+        key: '4',
+        label: <span className='Y2xia'>注销</span>
+      }
+    ]
+    return arr
+  }, [])
+
+  const items3 = useMemo(() => {
+    let arr: MenuProps['items'] = [
+      {
+        key: '1',
+        label: <span className='Y2xia'>事故登记</span>
+      },
+      {
+        key: '2',
+        label: <span className='Y2xia'>残损登记</span>
+      },
+      {
+        key: '3',
+        label: <span className='Y2xia'>现状登记</span>
+      },
+      {
+        key: '4',
+        label: <span className='Y2xia'>修复登记</span>
+      }
+    ]
+    return arr
+  }, [])
+
+  return (
+    <div className={styles.Y2look}>
+      <div className='pageTitle'>藏品详情</div>
+      <div className='Y2top'>
+        <div className='Y2topll'>
+          {Y1tabArr.map(v => (
+            <div
+              key={v}
+              className={classNames('Y1tRow', tabAc === v ? 'Y1tRowAc' : '')}
+              onClick={() => setTabAc(v)}
+            >
+              {v}
+            </div>
+          ))}
+        </div>
+        <div className='Y2toprr'>
+          <Button type='primary'>关注</Button>&emsp;
+          <Button type='primary'>藏品卡片</Button>&emsp;
+          <Dropdown menu={{ items: items1 }} placement='bottom' arrow>
+            <Button type='primary'>档案管理</Button>
+          </Dropdown>
+          &emsp;
+          <Dropdown menu={{ items: items2 }} placement='bottom' arrow>
+            <Button type='primary'>库存管理</Button>
+          </Dropdown>
+          &emsp;
+          <Dropdown menu={{ items: items3 }} placement='bottom' arrow>
+            <Button type='primary'>保管管理</Button>
+          </Dropdown>
+          &emsp;
+          <Button onClick={() => history.go(-1)}>返回</Button>
+        </div>
+      </div>
+    </div>
+  )
+}
+
+const MemoY2look = React.memo(Y2look)
+
+export default MemoY2look

+ 0 - 1
src/pages/Z_system/Z4organization/index.module.scss

@@ -33,7 +33,6 @@
           }
           .ant-tree {
             min-height: 100%;
-            padding: 10px;
           }
         }
         .Z4m1rr {

+ 2 - 2
src/store/action/layout.ts

@@ -51,6 +51,6 @@ export const API_upFile = (data: any, url: string) => {
 /**
  * 获取用户权限管理
  */
-export const API_getRoleArr = (userId: number) => {
-  return http.get(`sys/user/perm/getUserTree/${userId}`)
+export const API_getRoleArr = (roleId: number) => {
+  return http.get(`sys/resource/getTreeRolePermissions/${roleId}`)
 }

+ 65 - 0
src/utils/tableData.ts

@@ -14,6 +14,43 @@
 //     ["text", "创建日期",'description', 50,A],
 //   ];
 
+// 待完善
+export const D1GtableC = (backFu: (id: number) => void) => {
+  return [
+    ['img', '封面图', 'thumb'],
+    ['text', '编号类型', 'num', 50, 'S', backFu],
+    ['txt', '藏品编号', 'userName'],
+    ['txt', '藏品名称', 'userName'],
+    ['txt', '数量', 'userName'],
+    ['txt', '库存状态', 'userName'],
+    ['txt', '区域名称', 'userName'],
+    ['txt', '排架', 'userName'],
+    ['txt', '层数', 'userName'],
+    ['txt', '表格', 'userName'],
+    ['txt', '库位说明', 'description']
+  ]
+}
+
+// 待完善
+export const B3tableC = [
+  ['txt', '申请编号', 'userName'],
+  ['txt', '业务名称', 'userName'],
+  ['txt', '发起部门', 'userName'],
+  ['txt', '发送人', 'userName'],
+  ['txt', '发起日期', 'userName'],
+  ['txt', '申请状态', 'userName']
+]
+
+// 待完善
+export const D1tableC = [
+  ['txt', '区域名称', 'name1'],
+  ['txt', '排架', 'userName'],
+  ['txt', '层数', 'userName'],
+  ['txt', '层格', 'userName'],
+  ['txt', '库位说明', 'description'],
+  ['txt', '是否空置', 'userName']
+]
+
 export const D2tableC = [
   ['txt', '仓库名称', 'name'],
   ['txt', '仓库编码', 'num'],
@@ -30,6 +67,34 @@ export const D2tableCSon = [
   ['text', '库位说明', 'description', 50]
 ]
 
+// 待完善
+export const Y22tableC = [
+  ['txt', '库存信息', 'userName'],
+  ['txt', '库存详情', 'description']
+]
+
+// 待完善
+export const Y33tableC = [
+  ['txt', '附件类型', 'userName'],
+  ['img', '缩略图', 'thumb'],
+  ['txt', '附件名称', 'description'],
+  ['txt', '用途', 'description'],
+  ['txt', '上传日期', 'description'],
+  ['txt', '上传人', 'description'],
+  ['txt', '文件大小', 'description']
+]
+
+// 待完善
+export const Y44tableC = [
+  ['txt', '业务类型', 'userName'],
+  ['txt', '申请编号', 'description'],
+  ['txt', '业务名称', 'description'],
+  ['txt', '发起部门', 'description'],
+  ['txt', '发起人', 'description'],
+  ['txt', '发起日期', 'description'],
+  ['txt', '申请状态', 'description']
+]
+
 export const Z2tableC = [
   ['txt', '编号类型', 'name'],
   ['txt', '前缀', 'prefix'],