index.tsx 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. import React, { useCallback, useEffect, useMemo, useState } from 'react'
  2. import styles from './index.module.scss'
  3. import { useParams } from 'react-router-dom'
  4. import { API_getGoodsInfo } from '@/store/action/B1ledger'
  5. import { B1listType } from '../B1ledger/data'
  6. import classNames from 'classnames'
  7. import { Button, Dropdown, MenuProps } from 'antd'
  8. import Tab1info from './Tab1info'
  9. import Tab2log from './Tab2log'
  10. import Tab3stock from './Tab3stock'
  11. import { MessageFu } from '@/utils/message'
  12. import A0addGoods from '../A0addGoods'
  13. import history from '@/utils/history'
  14. import { B4_APIcreate } from '@/store/action/B4delete'
  15. const topBtnArr = ['藏品信息', '编辑记录', '库存状态']
  16. function A0goodsInfo() {
  17. const { id } = useParams<any>()
  18. const getInfoFu = useCallback(async () => {
  19. const res = await API_getGoodsInfo(id)
  20. if (res.code === 0) {
  21. setGoodsInfo(res.data)
  22. }
  23. }, [id])
  24. useEffect(() => {
  25. getInfoFu()
  26. }, [getInfoFu])
  27. // 所有藏品信息
  28. const [goodsInfo, setGoodsInfo] = useState({} as B1listType)
  29. // tab切换
  30. const [btnAc, setBtnAc] = useState('藏品信息')
  31. // 点击藏品编辑(修改)
  32. const [isEdit, setIsEdit] = useState(false)
  33. const items1 = useMemo(() => {
  34. let arr: MenuProps['items'] = [
  35. {
  36. key: '1',
  37. label: (
  38. <span
  39. className='AIdroRow'
  40. onClick={() => {
  41. if (goodsInfo.status === 2) MessageFu.warning('该藏品修改审核中,无法重复修改')
  42. else setIsEdit(true)
  43. }}
  44. >
  45. 修改
  46. </span>
  47. )
  48. },
  49. {
  50. key: '2',
  51. label: (
  52. <span
  53. className='AIdroRow'
  54. style={{ color: '#ff4d4d' }}
  55. onClick={async () => {
  56. if (goodsInfo.status === 3) MessageFu.warning('该藏品删除审核中,无法重复删除')
  57. else if (goodsInfo.status === 2) MessageFu.warning('该藏品修改审核中,无法删除')
  58. else {
  59. // 创建订单
  60. const res = await B4_APIcreate(goodsInfo)
  61. if (res.code === 0) {
  62. history.push(`/delete_look/1/${res.data.id}`)
  63. }
  64. }
  65. }}
  66. >
  67. 删除
  68. </span>
  69. )
  70. }
  71. ]
  72. return arr
  73. }, [goodsInfo])
  74. const items2 = useMemo(() => {
  75. let arr: MenuProps['items'] = [
  76. {
  77. key: '1',
  78. label: <span className='AIdroRow'>入库</span>
  79. },
  80. {
  81. key: '2',
  82. label: <span className='AIdroRow'>移库</span>
  83. },
  84. {
  85. key: '3',
  86. label: <span className='AIdroRow'>出库</span>
  87. }
  88. ]
  89. return arr
  90. }, [])
  91. return (
  92. <div className={styles.A0goodsInfo}>
  93. <div className='pageTitle'>藏品详情</div>
  94. <div className='AItop'>
  95. <div className='AItop1'>
  96. {topBtnArr.map(v => (
  97. <div
  98. key={v}
  99. className={classNames('AItop1Row', btnAc === v ? 'AItop1RowAc' : '')}
  100. onClick={() => setBtnAc(v)}
  101. >
  102. {v}
  103. </div>
  104. ))}
  105. </div>
  106. <div className='AItop2'>
  107. <Dropdown menu={{ items: items1 }} placement='bottom' arrow>
  108. <Button type='primary'>档案管理</Button>
  109. </Dropdown>
  110. &emsp;
  111. <Dropdown menu={{ items: items2 }} placement='bottom' arrow>
  112. <Button type='primary'>库房管理</Button>
  113. </Dropdown>
  114. </div>
  115. </div>
  116. {goodsInfo.id ? (
  117. <div className='AImain'>
  118. {btnAc === '藏品信息' ? <Tab1info info={goodsInfo} /> : null}
  119. {btnAc === '编辑记录' ? <Tab2log sId={goodsInfo.id} /> : null}
  120. {btnAc === '库存状态' ? <Tab3stock /> : null}
  121. </div>
  122. ) : null}
  123. {/* 点击藏品修改 */}
  124. {isEdit && goodsInfo.id ? (
  125. <A0addGoods sId={goodsInfo.id} closeFu={() => setIsEdit(false)} isEdit={true} />
  126. ) : null}
  127. </div>
  128. )
  129. }
  130. const MemoA0goodsInfo = React.memo(A0goodsInfo)
  131. export default MemoA0goodsInfo