import React, { useEffect, useState, useRef } from 'react' import { Tag, Tooltip, Input, Button } from 'antd' import consts from '@/consts' import { connect } from '@@/plugin-dva' import { useModel } from '@umijs/max' import { queryLock } from '@/services/product' import { generateSortField } from '@/utils/utils' 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 { useModal } from '@/components/ModalStore' import { PageContainer } from '@ant-design/pro-layout' // 渲染产品标签 export const ProductLabel = ({ data }) => { if (!data) return null let newData if (!Array.isArray(data)) { newData = data.split('+') } return ( {newData.map((item, idx) => ( {item} ))} ) } // 出库状态 const longleStockStatusNum = { 1: { text: '生成' }, 2: { text: '接收' } } // 销售状态 export const longleSellStatusNum = { 1: { text: '借出' }, 2: { text: '销售' }, 3: { text: '赠送' } } // 维护状态 export const longlePreserveStatusNum = { 1: { text: '升级' }, 2: { text: '更换' }, 3: { text: '收回' } } const LockStore = ({ prodList = [], dispatch, shouldUpdate }) => { const tRef = useRef() const dispatchModal = useModal() const refreshData = () => { tRef.current?.reload() } const { initialState: { permData } = { permData: {} } } = useModel('@@initialState') const [state, setState] = useState({ data: [], totalOld: 0, // 待接收锁总数 totalNew: 0, orderIds: [] }) const handleSearch = value => { tRef.current?.reloadAndRest() setState({ ...state, params: { ...state.params, search: value } }) } useEffect(() => { // 获取软件锁产品列表 function fetchSoftProducts() { dispatch({ type: 'lock/fetchProdList' }) } if (!prodList?.length) { fetchSoftProducts() } if (shouldUpdate) { tRef.current.reload() } }, [shouldUpdate]) const columns = [ { title: '锁号', dataIndex: 'keyNum', width: 90, fixed: 'left', render: (keyNum, record) => ( dispatchModal('D_LOCK_DETAIL', { dataId: record.id, orderIds: state.orderIds })} className="text-primary cursor-pointer hover:text-hex-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: 95, filters: true, filterMultiple: false, valueEnum: { 1: { text: '生成' }, 2: { text: '接收' } }, render: (_, { stockStatus }) => { return <>{longleStockStatusNum[stockStatus]?.text} } }, { title: '出库时间', dataIndex: 'stockTime', valueType: 'date', key: 'stockTime', filterDropdown: filterDropdownProps => , filters: true, sorter: true, width: 110 }, // { // title: '状态', // dataIndex: 'status', // width: 60, // filters: true, // onFilter: true, // valueType: 'select', // valueEnum: longleStatusNum, // renderText: (_, { status }) => longleStatusNum[status]?.text // }, { title: '销售状态', dataIndex: 'sellStatus', key: 'sellStatus', width: 95, filters: true, filterMultiple: false, valueEnum: { 99: { text: '未销售' }, 1: { text: '借出' }, 2: { text: '销售' }, 3: { text: '赠送' } }, render: (_, { sellStatus }) => { return <>{longleSellStatusNum[sellStatus]?.text} } }, { title: '销售时间', dataIndex: 'sellTime', key: 'sellTime', filterDropdown: filterDropdownProps => , filters: true, sorter: true, width: 110 }, { title: '维护状态', dataIndex: 'preserveStatus', key: 'preserveStatus', width: 95, filters: true, filterMultiple: false, valueEnum: { 1: { text: '升级' }, 2: { text: '更换' }, 3: { text: '收回' }, 99: { text: '无维护' } }, render: (_, { preserveStatus }) => { return <>{longlePreserveStatusNum[preserveStatus]?.text} } }, { title: '维护时间', dataIndex: 'preserveTime', key: 'preserveTime', valueType: 'date', width: 95 }, { title: '客户', dataIndex: 'client', key: 'client', sorter: true, width: 150, render: (text, record) => ( dispatchModal('D_CLIENT_DETAIL', { updateKey: 'longle', dataId: record.clientId })} className="text-primary cursor-pointer hover:text-hex-967bbd"> {text} ) }, { title: '单位名称', dataIndex: 'customerName', key: 'customerName', sorter: true, width: 300, render: (text, record) => ( record.customerId && dispatchModal('D_COMPANY_DETAIL', { updateKey: 'longle', dataId: record.customerId }) } className="text-primary cursor-pointer hover:text-hex-967bbd"> {text} ) }, { title: '负责人', dataIndex: 'responsible', width: 80, render: (text, record) => ( dispatchModal('D_SOFTWARE_DETAIL', { updateKey: 'longle', dataId: record.responsibleId }) } className="text-primary cursor-pointer hover:text-hex-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 [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 { code = -1, data: { longle = [], total = 0, totalOld = 0, totalNew = 0 } = { longle: [], total: 0, totalOld: 0, totalNew: 0 } } = await queryLock({ ...params, ...sort, ...filter }) setState({ ...state, totalOld, totalNew, orderIds: longle.map(item => item.id) }) return { data: longle, success: code === consts.RET_CODE.SUCCESS, total } }} columnsStateMap={columnsStateMap} 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.software }))(LockStore)