| | |
| | | orderCode: "单号", |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | | platWorkCode: '工单号', |
| | | platWorkCode: '计划跟踪号', |
| | | projectCode: '项目号', |
| | | maktx: "物料名称", |
| | | spec: "规格", |
| | |
| | | model: "型号", |
| | | fieldsIndex: "字段索引", |
| | | platOrderCode: "客单号", |
| | | platWorkCode: "工单号", |
| | | platWorkCode: "计划跟踪号", |
| | | projectCode: "项目单号", |
| | | }, |
| | | |
| | |
| | | platItemId: '行号', |
| | | matnrId: "物料标识", |
| | | platOrderCode: '客户单号', |
| | | platWorkCode: '工单号', |
| | | platWorkCode: '计划跟踪号', |
| | | projectCode: '项目号', |
| | | maktx: "物料名称", |
| | | spec: "规格", |
| | |
| | | import { styled } from '@mui/material/styles'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | |
| | | import request from '@/utils/request'; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import { fetchInOrderItemColumns } from '../config/orderItemColumns'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | }, []); |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />, |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />, |
| | | // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />, |
| | | // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />, |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />, |
| | | <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />, |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" />, |
| | | <TextField source="model" label="table.field.asnOrderItem.model" />, |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" />, |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />, |
| | | <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />, |
| | | <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />, |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />, |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" />, |
| | | <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />, |
| | | <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />, |
| | | <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />, |
| | | <TextField source="packName" label="table.field.asnOrderItem.packName" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | const result = await fetchInOrderItemColumns(); |
| | | if (result.success) { |
| | | setColumns(result.columns); |
| | | } else { |
| | | notify(msg); |
| | | notify(result.msg); |
| | | } |
| | | } |
| | | |
| New file |
| | |
| | | import React from "react"; |
| | | import { |
| | | TextField, |
| | | NumberField, |
| | | DateField, |
| | | ReferenceField, |
| | | } from 'react-admin'; |
| | | import request from '@/utils/request'; |
| | | |
| | | /** |
| | | * 获取出库订单明细的基础列配置 |
| | | * @returns {Array} 基础列数组 |
| | | */ |
| | | export const getOutOrderItemBaseColumns = () => [ |
| | | <NumberField source="id" key="id" />, // id |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号 |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号 |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码 |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称 |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号 |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码 |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称 |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次 |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格 |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量 |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量 |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位 |
| | | ]; |
| | | |
| | | /** |
| | | * 获取入库订单明细的基础列配置 |
| | | * @returns {Array} 基础列数组 |
| | | */ |
| | | export const getInOrderItemBaseColumns = () => [ |
| | | <NumberField source="id" key="id" />, // id |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" key="orderCode" />, // 订单号 |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" key="platWorkCode" />, //计划跟踪号 |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" key="splrCode" />, //供应商编码 |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" key="splrName" />, //供应商名称 |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" key="platItemId" />, //行号 |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" key="matnrCode" />, //物料编码 |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" key="maktx" />, //物料名称 |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" key="splrBatch" />, //批次 |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" key="spec" />, //规格 |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" key="anfme" />, //应收数量 |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" key="qty" />, //实收数量 |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" key="stockUnit" />, //单位 |
| | | ]; |
| | | |
| | | /** |
| | | * 获取动态扩展字段列 |
| | | * @param {Array} fieldsData - 动态字段数据 |
| | | * @returns {Array} 动态字段列数组 |
| | | */ |
| | | export const getExtendFieldColumns = (fieldsData) => { |
| | | return fieldsData.map(el => ( |
| | | <TextField |
| | | key={el.fields} |
| | | source={`extendFields.[${el.fields}]`} |
| | | label={el.fieldsAlise} |
| | | /> |
| | | )); |
| | | }; |
| | | |
| | | /** |
| | | * 获取订单明细的尾部列配置(时间和操作人信息) |
| | | * @returns {Array} 尾部列数组 |
| | | */ |
| | | export const getLastColumns = () => [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime key="updateTime" />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false} key="updateBy"> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false} key="createBy"> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime key="createTime" />, |
| | | ]; |
| | | |
| | | /** |
| | | * 组合入库订单明细所有列配置 |
| | | * @param {Array} extendFieldsData - 动态扩展字段数据 |
| | | * @returns {Array} 完整的列配置数组 |
| | | */ |
| | | export const buildInOrderItemColumns = (extendFieldsData = []) => { |
| | | return [ |
| | | ...getInOrderItemBaseColumns(), |
| | | ...getExtendFieldColumns(extendFieldsData), |
| | | ...getLastColumns() |
| | | ]; |
| | | }; |
| | | |
| | | /** |
| | | * 组合出库订单明细所有列配置 |
| | | * @param {Array} extendFieldsData - 动态扩展字段数据 |
| | | * @returns {Array} 完整的列配置数组 |
| | | */ |
| | | export const buildOutOrderItemColumns = (extendFieldsData = []) => { |
| | | return [ |
| | | ...getOutOrderItemBaseColumns(), |
| | | ...getExtendFieldColumns(extendFieldsData), |
| | | ...getLastColumns() |
| | | ]; |
| | | }; |
| | | |
| | | /** |
| | | * 获取动态字段并构建完整列配置 |
| | | * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>} |
| | | */ |
| | | export const fetchInOrderItemColumns = async () => { |
| | | try { |
| | | const { data: { code, data, msg } } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | return { success: true, columns: buildInOrderItemColumns(data) }; |
| | | } else { |
| | | return { success: false, msg }; |
| | | } |
| | | } catch (error) { |
| | | return { success: false, msg: error.message }; |
| | | } |
| | | }; |
| | | |
| | | /** |
| | | * 获取动态字段并构建完整列配置 |
| | | * @returns {Promise<{success: boolean, columns?: Array, msg?: string}>} |
| | | */ |
| | | export const fetchOutOrderItemColumns = async () => { |
| | | try { |
| | | const { data: { code, data, msg } } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | return { success: true, columns: buildOutOrderItemColumns(data) }; |
| | | } else { |
| | | return { success: false, msg }; |
| | | } |
| | | } catch (error) { |
| | | return { success: false, msg: error.message }; |
| | | } |
| | | }; |
| | |
| | | import { styled } from '@mui/material/styles'; |
| | | import PageDrawer from "../../components/PageDrawer"; |
| | | |
| | | import request from '@/utils/request'; |
| | | import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; |
| | | import { fetchOutOrderItemColumns } from '../config/orderItemColumns'; |
| | | |
| | | const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ |
| | | '& .css-1vooibu-MuiSvgIcon-root': { |
| | |
| | | }, []); |
| | | |
| | | const getDynamicFields = async () => { |
| | | const { data: { code, data, msg }, } = await request.get("/fields/enable/list"); |
| | | if (code == 200) { |
| | | const arr = [ |
| | | <NumberField source="id" />, |
| | | <NumberField source="orderId" label="table.field.asnOrderItem.orderId" />, |
| | | <TextField source="orderCode" label="table.field.asnOrderItem.orderCode" />, |
| | | // <TextField source="poDetlId" label="table.field.asnOrderItem.poDetlId" />, |
| | | // <TextField source="poDetlCode" label="table.field.asnOrderItem.poDetlCode" />, |
| | | <TextField source="platItemId" label="table.field.asnOrderItem.platItemId" />, |
| | | <TextField source="matnrId" label="table.field.asnOrderItem.matnrId" />, |
| | | <TextField source="matnrCode" label="table.field.asnOrderItem.matnrCode" />, |
| | | <TextField source="maktx" label="table.field.asnOrderItem.maktx" />, |
| | | <TextField source="splrBatch" label="table.field.asnOrderItem.splrBatch" />, |
| | | <TextField source="platOrderCode" label="table.field.asnOrderItem.platOrderCode" />, |
| | | <TextField source="platWorkCode" label="table.field.asnOrderItem.platWorkCode" />, |
| | | <TextField source="projectCode" label="table.field.asnOrderItem.projectCode" />, |
| | | <TextField source="spec" label="table.field.asnOrderItem.spec" />, |
| | | <TextField source="model" label="table.field.asnOrderItem.model" />, |
| | | <NumberField source="anfme" label="table.field.asnOrderItem.anfme" />, |
| | | <NumberField source="qty" label="table.field.asnOrderItem.qty" />, |
| | | <TextField source="stockUnit" label="table.field.asnOrderItem.stockUnit" />, |
| | | <NumberField source="purQty" label="table.field.asnOrderItem.purQty" />, |
| | | <TextField source="purUnit" label="table.field.asnOrderItem.purUnit" />, |
| | | <TextField source="splrCode" label="table.field.asnOrderItem.splrCode" />, |
| | | <TextField source="splrName" label="table.field.asnOrderItem.splrName" />, |
| | | <TextField source="isptResult$" label="table.field.asnOrderItem.isptResult" />, |
| | | <TextField source="qrcode" label="table.field.asnOrderItem.qrcode" />, |
| | | <TextField source="trackCode" label="table.field.asnOrderItem.barcode" />, |
| | | <TextField source="packName" label="table.field.asnOrderItem.packName" />, |
| | | ] |
| | | const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />) |
| | | const lastArr = [ |
| | | <DateField source="updateTime" label="common.field.updateTime" showTime />, |
| | | <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> |
| | | <TextField source="nickname" /> |
| | | </ReferenceField>, |
| | | <DateField source="createTime" label="common.field.createTime" showTime />, |
| | | ] |
| | | setColumns([...arr, ...fields, ...lastArr]); |
| | | const result = await fetchOutOrderItemColumns(); |
| | | if (result.success) { |
| | | setColumns(result.columns); |
| | | } else { |
| | | notify(msg); |
| | | notify(result.msg); |
| | | } |
| | | } |
| | | |