import React, { useState, useEffect } from 'react'; import { Form, Card, Row, Col, Input, Steps, Tabs, Button, Table , Image} from 'antd'; import classNames from 'classnames'; import { connect } from 'umi'; import moment from 'moment' import useFormTable from '@/useHooks/useFormTable'; import { dispatchHandle } from "@/utils/publicHandle"; import utilsStyles from '@/utils/utils.less'; import storageCount from '../utils/storageCountButtons' import StepGroupBar from '@/components/Customized/StepGroupBar'; import style from '../index.less' import RelativeOrderInfo from '@/components/RelativeOrderInfo'; const { TextArea } = Input; const { TabPane } = Tabs; // 已入库状态详情页 const AlreadyDetailStorage = (props) => { const { dispatch, loading, location: { query }, warehousing: { storageOrderDetail, storageDetailMaterialList, }, } = props; const [form] = Form.useForm(); const [listTabs, setListTabs] = useState(1) const getListItems = (payload = {}) => { payload.orderId = query?.id const result = { ...payload, inCount: listTabs } delete result.remarks dispatchHandle( dispatch, 'warehousing/warehouse_service_in_material_count_detail_post', result ) } const { tableProps, search } = useFormTable(getListItems, { form }) /** * @列表信息已入库tabs切换 */ const tabsChange = (activeKey) => { setListTabs(activeKey) search.submit({ inCount: activeKey }) } const columns = [ { title: '序号', dataIndex: 'index', render: (text, record, index) => <>{index + 1}</> }, { title: '物料图片', dataIndex: ['materialInfoSnapshort', 'picture'], render: (text, record) => ( <Image style={{ width: 50, height: 50 }} src={record?.materialInfoSnapshort?.picture || '/pageImg/default@2x.png'} alt="" placeholder={true} /> ) }, { title: '物料编号', dataIndex: ['materialInfoSnapshort', 'materialCode'] }, { title: '品名', dataIndex: ['materialInfoSnapshort', 'materialName'] }, { title: '品牌', dataIndex: ['materialInfoSnapshort', 'brand'] }, { title: '规格/型号', dataIndex: ['materialInfoSnapshort', 'mmodel'] }, { title: '产地', dataIndex: ['materialInfoSnapshort', 'produceArea'] }, { title: '单位', dataIndex: ['materialInfoSnapshort', 'munit'] }, { title: '单价(元)', dataIndex: ['materialInfoSnapshort', 'materialPrice'] }, { title: '供应商', dataIndex: ['materialInfoSnapshort', 'supplierName'] }, { title: '供应商代码', dataIndex: ['materialInfoSnapshort', 'supplierCode'] }, { title: '需入库数', dataIndex: 'totalNum' }, { title: '待入库数', dataIndex: 'unNum', render: (text) => <>{text || 0}</> }, { title: '入库数', dataIndex: 'currentNum', render: (text) => <>{text || 0}</> }, { title: '备注', dataIndex: 'remarks' }, ]; const formItemLayout = { labelCol: { span: 8 }, wrapperCol: { span: 16 } }; const stepGroupItemArr = [ { itemType: 'create', dataTsFlowIndex: 0,// 对应 tsFlow 里面的data所在的值 itemName: '已创建' }, // 4 领料 5 出库,6 退料 { itemType: 'audit', itemName: '审批', }, { itemType: 'business', itemName: '领料', moduleType: 'pick', nodeCode: 4 }, { itemType: 'finished', itemName: '已完成' } ]; useEffect(() => { dispatchHandle( dispatch, 'warehousing/warehouse_service_in_material_detail_all_id_get', { id: query?.id }, res => { form.setFieldsValue({ ...res }) } ) }, []); const storageUser = () => { if (storageDetailMaterialList && storageDetailMaterialList.list && storageDetailMaterialList.list.length > 0) { const { inMaterialCount: { inUserName, createTime } } = storageDetailMaterialList.list[0] return { inUserName, createTime } } } return ( <Row style={{ width: '100%' }}> <Col span={24} > <Card> <Form form={form}> <h4 className={style.h3_title}> 基本信息</h4> <Row gutter={10} className={classNames(utilsStyles.gutterBox)}> <Col span={6}> <Form.Item name='aa' className={classNames(utilsStyles.antFormItem)} label='入库单号' {...formItemLayout}> <span>{storageOrderDetail?.inStockSheet || ''}</span> </Form.Item> </Col> <Col span={6}> <Form.Item name='bb' className={classNames(utilsStyles.antFormItem)} label='入库类型' {...formItemLayout}> <span>{storageOrderDetail?.inStockStyleName || ''}</span> </Form.Item> </Col> <Col span={6}> <Form.Item name='cc' className={classNames(utilsStyles.antFormItem)} label='入库仓库' {...formItemLayout}> <span>{storageOrderDetail?.warehouseName || ''}</span> </Form.Item> </Col> <Col span={6}> <Form.Item name='dd' className={classNames(utilsStyles.antFormItem)} label='仓管员' {...formItemLayout}> <span>{storageOrderDetail?.warehouse || ''}</span> </Form.Item> </Col> <Col span={6}> <Form.Item name='ee' className={classNames(utilsStyles.antLightFormItem)} label='关联单号' {...formItemLayout}> {/* <span>{storageOrderDetail?.refSheet || ''}</span> */} <RelativeOrderInfo detail={storageOrderDetail}/> </Form.Item> </Col> <Col span={24}> <Form.Item name="remarks" className={style.note} label='备注'> <TextArea value={storageOrderDetail?.remarks || ''} rows={5} style={{ marginLeft: '-15px' }} disabled /> </Form.Item> </Col> </Row> </Form> </Card> { storageOrderDetail?.orderProcessBOS ? ( <Card style={{ marginTop: '15px' }}> <h3 className={style.h3_title}>处理流程</h3> <div style={{ paddingTop: 10 }}> <StepGroupBar businessCode={4} data={storageOrderDetail?.orderProcessBOS} stepGroupItemArr={stepGroupItemArr} auditDetail={storageOrderDetail?.auditDetail} /> </div> </Card> ) : null } <Card style={{ marginTop: 15 }}> <h4 className={style.h3_title}>列表信息</h4> <Tabs onChange={tabsChange} type="card"> { storageCount(storageOrderDetail?.inCount || 0) && storageCount(storageOrderDetail.inCount || 0).length > 0 && storageCount(storageOrderDetail.inCount || 0).map((item, index) => ( <TabPane tab={item} key={index + 1} /> )) } </Tabs> <> <p style={{ marginTop: 10 }}> 入库时间: <span>{storageUser()?.createTime ? moment(storageUser()?.createTime || '').format('YYYY-MM-DD HH:mm:ss') : '暂无'}</span> </p> <p style={{ marginBottom: 10 }}> 仓管员: <span>{storageUser()?.inUserName || ''}</span> </p> <Table loading={loading} columns={columns} dataSource={storageDetailMaterialList.list} pagination={storageDetailMaterialList.pagination} rowKey={record => record.id} style={{ marginTop: '10px' }} {...tableProps} /> </> </Card> </Col> </Row> ) } export default connect(({ warehousing, user, loading }) => ({ warehousing, user, loading: loading.effects['warehousing/warehouse_service_in_material_count_detail_post'] }))(AlreadyDetailStorage);