zhou zhou
5 天以前 a2fe95b85d01f9382b1b43ed41fb24b84573d406
#前端页面
3个文件已修改
1个文件已添加
242 ■■■■■ 已修改文件
rsf-admin/src/i18n/zh.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/config/orderItemColumns.jsx 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js
@@ -720,7 +720,7 @@
                orderCode: "单号",
                matnrId: "物料标识",
                platOrderCode: '客户单号',
                platWorkCode: '工单号',
                platWorkCode: '计划跟踪号',
                projectCode: '项目号',
                maktx: "物料名称",
                spec: "规格",
@@ -778,7 +778,7 @@
                model: "型号",
                fieldsIndex: "字段索引",
                platOrderCode: "客单号",
                platWorkCode: "工单号",
                platWorkCode: "计划跟踪号",
                projectCode: "项目单号",
            },
@@ -815,7 +815,7 @@
                platItemId: '行号',
                matnrId: "物料标识",
                platOrderCode: '客户单号',
                platWorkCode: '工单号',
                platWorkCode: '计划跟踪号',
                projectCode: '项目号',
                maktx: "物料名称",
                spec: "规格",
rsf-admin/src/page/orders/asnOrderItem/AsnOrderItemList.jsx
@@ -39,8 +39,8 @@
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': {
@@ -147,50 +147,11 @@
    }, []);
    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);
        }
    }
rsf-admin/src/page/orders/config/orderItemColumns.jsx
New file
@@ -0,0 +1,138 @@
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 };
    }
};
rsf-admin/src/page/orders/outStockItem/OutStockItemList.jsx
@@ -39,8 +39,8 @@
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': {
@@ -147,50 +147,11 @@
    }, []);
    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);
        }
    }