import React, { useEffect, useState, useRef } from 'react'
import { Tag, Tooltip, Input, Button } from 'antd'
import consts from '@/consts'
import { useModel, connect } from 'umi'
import { queryLock } from '@/services/product'
import LocksDetail from '@/pages/Product/Lock/LockStore/components/LocksDetail'
import ContactDetail from '@/pages/Customer/Client/components/ClientDetail'
import SoftwareDetail from '@/pages/Product/Lock/LockStore/components/SoftwareDetail'
import { useModal } from '@/components/Modal'
import CompanyDetail from '@/pages/Customer/Company/components/CompanyDetail'
import { refactorSortField } from '@/utils/utils'
import ReceiveLock from './components/ReceiveLock'
// import ReceiveNewLock from './components/ReceiveNewLock'
import { PermDataTypeEunm } from '@/pages/Customer/Company/components/PermSelect'
import BasicTable from '@/components/Table'
import { getPermAuthCache } from '@/utils/auth'
import FilterDatePicker from '@/components/Table/src/components/FilterDatePicker'
// import { DownOutlined } from '@ant-design/icons'
// 渲染产品标签
export const ProductLabel = ({ data }) => {
if (!data) return null
let newData
if (!Array.isArray(data)) {
newData = data.split('+')
}
return (
{newData.map((item, idx) => (
{item}
))}
)
}
// const longleStatusNum = {
// 1: {
// text: '生成'
// },
// 2: {
// text: '接收'
// },
// 3: {
// text: '借出'
// },
// 4: {
// text: '销售'
// },
// 5: {
// text: '升级'
// },
// 6: {
// text: '更换'
// },
// 7: {
// text: '收回'
// },
// 8: {
// text: '备注'
// },
// 9: {
// text: '赠送'
// }
// }
// 出库状态
const longleStockStatusNum = {
1: { text: '生成' },
2: { text: '接收' }
}
// 销售状态
export const longleSellStatusNum = {
1: { text: '借出' },
2: { text: '销售' },
3: { text: '赠送' }
}
// 维护状态
const longlePreserveStatusNum = {
1: { text: '升级' },
2: { text: '更换' },
3: { text: '收回' }
}
const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => {
const tRef = useRef()
const { toggleDrawer, setDrawerProps, toggleModal, setModalProps } = useModal()
// 刷新
const refreshData = () => {
tRef.current?.reload()
}
const showReceiveLockModal = () => {
setModalProps({
width: '60vw',
modalRender: () => ,
onCancel: () => toggleModal()
})
toggleModal()
}
// const showReceiveNewLockModal = () => {
// setModalProps({
// width: '60vw',
// modalRender: () => ,
// onCancel: () => toggleModal()
// })
// toggleModal()
// }
const { initialState: { permData } = { permData: {} } } = useModel('@@initialState')
const [state, setState] = useState({
data: [],
totalOld: 0, // 待接收锁总数
totalNew: 0,
orderIds: []
})
const handleSearch = value => {
setState({ ...state, params: { ...state.params, search: value } })
}
useEffect(() => {
// 获取软件锁产品列表
function fetchSoftProducts() {
dispatch({
type: 'lock/fetchProdList'
})
}
if (!prodList?.length) {
fetchSoftProducts()
}
if (shouldUpdate) {
tRef.current.reload()
}
}, [shouldUpdate])
// 展示drawer
const showDrawer = id => {
setDrawerProps({
closable: true,
onClose: () => toggleDrawer(),
bodyStyle: {
height: '100vh'
// overflowY: 'hidden'
},
children:
})
toggleDrawer()
}
// 展示DrawerClient
const showDrawerClient = id => {
setDrawerProps({
closable: true,
onClose: () => toggleDrawer(),
bodyStyle: {
height: '100vh',
overflowY: 'hidden'
},
children:
})
toggleDrawer()
}
// 展示DrawerResponsible
const showDrawerResponsible = id => {
setDrawerProps({
closable: true,
onClose: () => toggleDrawer(),
bodyStyle: {
height: '100vh',
overflowY: 'hidden'
},
children:
})
toggleDrawer()
}
// 展示单位详情抽屉
const showCompanyDrawer = id => {
setDrawerProps({
closable: true,
onClose: () => toggleDrawer(),
bodyStyle: {
height: '100vh',
overflowY: 'hidden'
},
children:
})
toggleDrawer()
}
const columns = [
{
title: '锁号',
dataIndex: 'keyNum',
width: 90,
fixed: 'left',
render: (keyNum, record) => (
showDrawer(record.id)}
className="text-primary cursor-pointer hover:text-[#967bbd]"
>
{keyNum}
)
},
{
title: '产品',
dataIndex: 'product',
key: 'product',
width: 200,
fixed: 'left',
filters: true,
filterMultiple: false,
valueEnum: prodList.reduce((prev, curr) => {
const obj = { ...prev }
obj[curr.title] = {
text: curr.title
}
return obj
}, {}),
render: (_, record) =>
},
{
title: '出库状态',
dataIndex: 'stockStatus',
key: 'stockStatus',
width: 70,
render: (_, { stockStatus }) => {
return <>{longleStockStatusNum[stockStatus]?.text}>
}
},
{
title: '出库时间',
dataIndex: 'stockTime',
valueType: 'date',
key: 'stockTime',
filterDropdown: filterDropdownProps => ,
filters: true,
sorter: true,
width: 100
},
// {
// title: '状态',
// dataIndex: 'status',
// width: 60,
// filters: true,
// onFilter: true,
// valueType: 'select',
// valueEnum: longleStatusNum,
// renderText: (_, { status }) => longleStatusNum[status]?.text
// },
{
title: '销售状态',
dataIndex: 'sellStatus',
key: 'sellStatus',
width: 70,
render: (_, { sellStatus }) => {
return <>{longleSellStatusNum[sellStatus]?.text}>
}
},
{
title: '销售时间',
dataIndex: 'sellTime',
valueType: 'date',
key: 'sellTime',
width: 90
},
{
title: '维护状态',
dataIndex: 'preserveStatus',
key: 'preserveStatus',
width: 60,
render: (_, { preserveStatus }) => {
return <>{longlePreserveStatusNum[preserveStatus]?.text}>
}
},
{
title: '维护时间',
dataIndex: 'preserveTime',
key: 'preserveTime',
valueType: 'date',
width: 90
},
{
title: '客户',
dataIndex: 'client',
key: 'client',
sorter: true,
width: 150,
render: (text, record) => (
showDrawerClient(record.clientId)}
className="text-primary cursor-pointer hover:text-[#967bbd]"
>
{text}
)
},
{
title: '单位名称',
dataIndex: 'customerName',
key: 'customerName',
sorter: true,
width: 300,
render: (text, record) => (
showCompanyDrawer(record.customerId)}
className="text-primary cursor-pointer hover:text-[#967bbd]"
>
{text}
)
},
{
title: '负责人',
dataIndex: 'responsible',
width: 80,
render: (text, record) => (
showDrawerResponsible(record.responsibleId)}
className="text-primary cursor-pointer hover:text-[#967bbd]"
>
{text}
)
},
{
title: '期限',
dataIndex: 'allotedTime',
width: 90
},
{
title: '办事处',
dataIndex: 'category',
width: 90
},
{
title: '纵横部门',
dataIndex: 'departmentName',
width: 90
}
]
const columnsStateMap = {
preserveStatus: {
show: false
},
preserveTime: {
show: false
}
}
// const dropDownMenClick = ({ key }) => {
// if (key === '1') {
// showReceiveLockModal()
// } else {
// showReceiveNewLockModal()
// }
// }
const [defaultPermAuthCache] = getPermAuthCache(PermDataTypeEunm.PRODUCT)
return (
record.id}
mainMenuType="product"
columnStateType="LOCKSTORE"
search={false}
actionRef={tRef}
params={state.params}
columns={columns}
request={async (params, sort, filter) => {
const srotOrder = refactorSortField(sort)
const {
code = -1,
data: { longle = [], total = 0, totalOld = 0, totalNew = 0 } = {
longle: [],
total: 0,
totalOld: 0,
totalNew: 0
}
} = await queryLock({ ...params, ...srotOrder, ...filter })
setState({ ...state, totalOld, totalNew, orderIds: longle.map(item => item.id) })
return {
data: longle,
success: code === consts.RET_CODE.SUCCESS,
total
}
}}
columnsStateMap={columnsStateMap}
headerTitle={
//
// {state.totalOld ? 接收旧锁 : null}
// {state.totalNew ? 接收新锁 : null}
//
// }>
//
//
state.totalOld ? (
) : null
}
toolbar={{
search: (
item.value === defaultPermAuthCache
)?.label
}下搜索`}
onSearch={handleSearch}
/>
)
// actions: [
//
// {
// const [time1, time2] = time || [null, null]
// setState({
// ...state,
// params: {
// ...state.params,
// beginTime: time1 ? time1.format('YYYY-MM-DD') : null,
// endTime: time2 ? time2.format('YYYY-MM-DD') : null
// }
// })
// }}
// />
//
// ]
}}
/>
)
}
export default connect(({ lock, refresh }) => ({
prodList: lock.prodList,
shouldUpdate: refresh.longle
}))(LockStore)