lbq
6 天以前 72139f39a0845f8de31fd44bc5dd7077df17d48e
仓库和库区页面优化
17个文件已修改
697 ■■■■■ 已修改文件
rsf-admin/src/i18n/core/chineseMessages.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/zh.js 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/basicInfo/warehouse/WarehousePanel.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/locPreview/LocPreviewList.jsx 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/outStock/OutOrderList.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/preparation/MatPreparationItemList.jsx 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/preparation/MatPreparationList.jsx 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/preparation/MatPreparationPanel.jsx 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/orders/preparation/MatPreparationPublic.jsx 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx 121 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx 179 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/page/warehouseAreas/WarehouseAreasList.jsx 86 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/themes/ThemeSwapper.jsx 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-admin/src/i18n/core/chineseMessages.js
@@ -126,9 +126,9 @@
      skip_nav: "Skip to content",
    },
    sort: {
      sort_by: "Sort by %{field} %{order}",
      ASC: "ascending",
      DESC: "descending",
      sort_by: "按照 \"%{field}\" %{order}",
      ASC: "升序排列",
      DESC: "降序排列",
    },
    auth: {
      auth_check_error: "Please login to continue",
rsf-admin/src/i18n/zh.js
@@ -162,7 +162,7 @@
        locItem: '库存明细',
        locType: '库位类型(废)',
        locArea: '逻辑分区(废)',
        locAreaMat: '逻辑分区(废)',
        locAreaMat: '逻辑分区',
        locAreaMatRela: '库区物料关系',
        container: '容器管理(废)',
        contract: '合同信息(废)',
@@ -175,7 +175,7 @@
        serialRule: '编码规则',
        asnOrder: '入库通知单',
        asnOrderItem: '收货明细',
        asnOrderLog: '收货历史单',
        asnOrderLog: '历史通知单',
        asnOrderItemLog: '收货历史明细',
        purchase: 'PO单',
        purchaseItem: 'PO单明细',
@@ -184,7 +184,7 @@
        fieldsItem: '扩展字段明细',
        warehouseAreasItem: '收货库存',
        deviceSite: '路径管理',
        waitPakin: '组托通知档',
        waitPakin: '组托档',
        waitPakinItem: '组托档明细',
        waitPakinLog: '组托历史档',
        waitPakinItemLog: '组托历史档明细',
@@ -221,7 +221,7 @@
        transfer: '调拔单',
        transferItem: '调拔单明细',
        locRevise: '库存调整',
        statisticReport: '日志报表',
        statisticReport: '报表管理',
        locDeadReport: '库存停滞报表',
        stockStatistic: '日入库汇总查询',
        outStatistic: '日出库汇总查询',
@@ -232,7 +232,9 @@
        preparation: '备料单',
        check: '盘点管理',
        abnormal: '异常管理',
        platform: '平台管理'
        platform: '平台管理',
        freeze: '库存冻结',
        transferPoces: '调拨管理',
    },
    table: {
        field: {
@@ -419,7 +421,7 @@
            warehouse: {
                name: "仓库名称",
                code: "仓库编码",
                factory: "工厂",
                factory: "使用组织",
                address: "地址",
                longitude: "经度",
                latgitude: "纬度",
@@ -437,7 +439,7 @@
                supplierId: "供应商",
                flagMinus: "允许负库存",
                flagLabelMange: "标签管理",
                flagMix: "混放",
                flagMix: "允许混放",
            },
            warehouseAreasItem: {
                asnCode: '单号',
@@ -648,7 +650,7 @@
            },
            asnOrder: {
                code: "ASN单号",
                poCode: "PO编码",
                poCode: "单据编码",
                poId: "PO标识",
                type: "单据类型",
                wkType: "业务类型",
@@ -662,12 +664,12 @@
            },
            outStock: {
                code: "出库单号",
                poCode: "DO单号",
                poCode: "单据编码",
                poId: "DO标识",
                type: "类型",
                wkType: "业务类型",
                anfme: "数量",
                workQty: '执行数',
                anfme: "应出数量",
                workQty: '实出数量',
                qty: "完成数",
                logisNo: "物流单号",
                arrTime: "预计到达时间",
@@ -788,7 +790,7 @@
                orderId: "主单标识",
                orderCode: "单号",
                poDetlId: "PO单ID",
                poDetlCode: "PO单",
                poDetlCode: "单据编码",
                platItemId: '行号',
                matnrId: "物料标识",
                platOrderCode: '客户单号',
@@ -820,19 +822,19 @@
            outStockItem: {
                orderId: "主单标识",
                orderCode: "单号",
                poCode: 'DO单号',
                poCode: '单据编码',
                poDetlId: "平台明细ID",
                poDetlCode: "DO单",
                matnrId: "物料标识",
                maktx: "物料名称",
                matnrCode: "物料编码",
                platOrderCode: '客单号',
                anfme: "计划出库数",
                anfme: "应出数量",
                stockUnit: "库存单位",
                workQty: '已出数量',
                purQty: "下单数量",
                purUnit: "单位",
                qty: "完成数量",
                qty: "实出数量",
                splrBatch: "批次",
                splrCode: "供应商编码",
                splrName: "供应商名称",
@@ -1402,6 +1404,7 @@
        recover: "继续收货",
        modiftySite: '修改库口',
        selectWave: '波次规则',
        transformation: "转换",
    },
    placeholder: {
        warehouseAreasCode: "用于库位编码前缀占位符",
rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx
@@ -114,11 +114,11 @@
                                    <TextInput
                                        label="table.field.warehouse.address"
                                        source="address"
                                        validate={[required()]}
                                        // validate={[required()]}
                                        parse={v => v}
                                    />
                                </Grid>
                                <Grid item xs={6} display="flex" gap={1}>
                                {/* <Grid item xs={6} display="flex" gap={1}>
                                    <TextInput
                                        label="table.field.warehouse.longitude"
                                        source="longitude"
@@ -143,7 +143,7 @@
                                        label="table.field.warehouse.height"
                                        source="height"
                                    />
                                </Grid>
                                </Grid> */}
                                <Grid item xs={6} display="flex" gap={1}>
                                    <StatusSelectInput />
@@ -155,8 +155,8 @@
                                        parse={v => v}
                                        fullWidth
                                        multiline
                                        minRows={2}
                                        autoFocus
                                        // minRows={2}
                                        // autoFocus
                                    />
                                    {/* <Stack direction="column" spacing={1} width={'100%'}>
                                        <MemoInput />
rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx
@@ -70,14 +70,6 @@
                                source="factory"
                                validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouse.name"
                                source="name"
                                validate={[required()]}
                                parse={v => v}
                                autoFocus
                            />
                        </Stack>
@@ -89,16 +81,23 @@
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouse.address"
                                source="address"
                                label="table.field.warehouse.name"
                                source="name"
                                validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouse.address"
                                source="address"
                                // validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
                        {/* <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouse.longitude"
                                source="longitude"
@@ -126,21 +125,24 @@
                                label="table.field.warehouse.height"
                                source="height"
                            />
                        </Stack>
                        </Stack> */}
                        <Stack direction='row' gap={2}>
                            <SelectInput
                                label="common.field.status"
                                source="status"
                                validate={[required()]}
                                choices={[
                                    { id: '1', name: 'common.enums.statusTrue' },
                                    { id: '0', name: 'common.enums.statusFalse' },
                                ]}
                                resettable
                            />
                        </Stack>
                          <Stack direction='row' gap={2}>
                            <TextInput
                                label="common.field.memo"
                                source="memo"
                                validate={[required()]}
                                // validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx
@@ -70,33 +70,30 @@
// }));
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <TextInput source="name" label="table.field.warehouse.name" />,
    <TextInput source="code" label="table.field.warehouse.code" />,
    <SearchInput source="condition" placeholder="搜索仓库名称" alwaysOn />,
    <TextInput source="factory" label="table.field.warehouse.factory" />,
    <TextInput source="address" label="table.field.warehouse.address" />,
    <TextInput source="longitude" label="table.field.warehouse.longitude" />,
    <TextInput source="latgitude" label="table.field.warehouse.latgitude" />,
    <NumberInput source="length" label="table.field.warehouse.length" />,
    <NumberInput source="width" label="table.field.warehouse.width" />,
    <NumberInput source="height" label="table.field.warehouse.height" />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
        source="status"
        choices={[
            { id: '1', name: 'common.enums.statusTrue' },
            { id: '0', name: 'common.enums.statusFalse' },
        ]}
        resettable
    />,
    <TextInput source="code" label="table.field.warehouse.code" />,
    <TextInput source="name" label="table.field.warehouse.name" />,
    // <TextInput source="address" label="table.field.warehouse.address" />,
    // <TextInput source="longitude" label="table.field.warehouse.longitude" />,
    // <TextInput source="latgitude" label="table.field.warehouse.latgitude" />,
    // <NumberInput source="length" label="table.field.warehouse.length" />,
    // <NumberInput source="width" label="table.field.warehouse.width" />,
    // <NumberInput source="height" label="table.field.warehouse.height" />,
    // <TextInput label="common.field.memo" source="memo" />,
    // <SelectInput
    //     label="common.field.status"
    //     source="status"
    //     choices={[
    //         { id: '1', name: 'common.enums.statusTrue' },
    //         { id: '0', name: 'common.enums.statusFalse' },
    //     ]}
    //     resettable
    // />,
]
const WarehouseList = () => {
    const translate = useTranslate();
    const [createDialog, setCreateDialog] = useState(false);
    const [drawerVal, setDrawerVal] = useState(false);
@@ -129,19 +126,18 @@
                    preferenceKey='warehouse'
                    bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
                    rowClick={(id, resource, record) => false} 
                    omit={['id', 'factory', 'createTime', 'createBy', 'memo', 'longitude', 'latgitude', 'length', 'width', 'height']}
                    omit={['id', 'updateTime', 'updateBy', 'createTime', 'createBy', 'longitude', 'latgitude', 'length', 'width', 'height']}
                >
                    <NumberField source="id" />
                    <TextField source="factory" label="table.field.warehouse.factory" />
                    <TextField source="code" label="table.field.warehouse.code" />
                    <TextField source="name" label="table.field.warehouse.name" />
                    <TextField source="address" label="table.field.warehouse.address" />
                    <TextField source="factory" label="table.field.warehouse.factory" />
                    <TextField source="longitude" label="table.field.warehouse.longitude" />
                    {/* <TextField source="longitude" label="table.field.warehouse.longitude" />
                    <TextField source="latgitude" label="table.field.warehouse.latgitude" />
                    <NumberField source="length" label="table.field.warehouse.length" />
                    <NumberField source="width" label="table.field.warehouse.width" />
                    <NumberField source="height" label="table.field.warehouse.height" />
                    <NumberField source="height" label="table.field.warehouse.height" /> */}
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
                    </ReferenceField>
rsf-admin/src/page/basicInfo/warehouse/WarehousePanel.jsx
@@ -64,7 +64,7 @@
                                property={record.address}
                            />
                        </Grid>
                        <Grid item xs={3}>
                        {/* <Grid item xs={3}>
                            <PanelTypography
                                title="table.field.warehouse.longitude" 
                                property={record.longitude}
@@ -93,7 +93,7 @@
                                title="table.field.warehouse.height" 
                                property={record.height}
                            />
                        </Grid>
                        </Grid> */}
                    </Grid>
                </CardContent>
rsf-admin/src/page/locPreview/LocPreviewList.jsx
@@ -201,6 +201,8 @@
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }}  label="toolbar.detail" />
                        {/* <LocButton sx={{ padding: '1px', fontSize: '.75rem' }} ></LocButton>
                        <UnLockButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /><UnLockButton /> */}
                    </WrapperField>
                </StyledDatagrid>
            </List>
@@ -209,3 +211,62 @@
}
export default LocPreviewList;
/**
 * 操作
 * @returns
 */
const LocButton = (props) => {
    // const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const clickComplete = () => {
        completeTask(record)
    };
    //完成任务
    const completeTask = async (row) => {
        const { data: { code, data, msg } } = await request.post(`task/complete/` + row.id);
        if (code === 200) {
            notify(msg);
            refresh();
        } else {
            notify(msg);
        }
    }
    return (
        <ConfirmButton label={"冻结"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />
    )
}
/**
 * 取消按钮
 * @returns
 */
const UnLockButton = () => {
    const record = useRecordContext();
    const notify = useNotify();
    const refresh = useRefresh();
    const clickCancel = () => {
        cancleTask(record)
    };
    //取消任务
    const cancleTask = async (row) => {
        const { data: { code, data, msg } } = await request.post(`/task/remove/` + row.id);
        if (code === 200) {
            notify(msg);
            refresh();
        } else {
            notify(msg);
        }
    }
    return (
        (record.taskStatus == 1 || record.taskStatus == 101) && (record.taskType == 1 || record.taskType == 101 || record.taskType == 10 || record.taskType == 107 || record.taskType == 103 || record.taskType == 11) ?
            <ConfirmButton
                onConfirm={clickCancel}
                startIcon={<CancelIcon />}
                label={"toolbar.cancel"}>
            </ConfirmButton>
            :
            <></>
    )
}
rsf-admin/src/page/orders/asnOrder/AsnOrderItemList.jsx
@@ -217,7 +217,7 @@
          <TextField source="nickname" />
        </ReferenceField>,
        <DateField source="createTime" label="common.field.createTime" showTime />,
        <TextField source="memo" label="common.field.memo" sortable={false} />,
        // <TextField source="memo" label="common.field.memo" sortable={false} />,
      ]
      setColumns([...arr, ...fields, ...lastArr]);
    } else {
rsf-admin/src/page/orders/outStock/OutOrderList.jsx
@@ -72,7 +72,7 @@
  '& .column-name': {
  },
  '& .opt': {
    width: 220
    width: 420
  },
  '& .wkType': {
    width: 110
@@ -190,7 +190,6 @@
          <DateField source="updateTime" label="common.field.updateTime" showTime />
          <TextField source="createBy$" label="common.field.createBy" />
          <DateField source="createTime" label="common.field.createTime" showTime />
          <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" />
          <TextField source="memo" label="common.field.memo" sortable={false} />
          {/* 银座新增 */}
@@ -200,6 +199,7 @@
          <TextField source="customerId" label="客户编码" />
          <TextField source="customerName" label="客户" />     
          <BillStatusField cellClassName="status" source="exceStatus" label="table.field.outStock.exceStatus" />
          <WrapperField cellClassName="opt" label="common.field.opt" >
            <MyButton setCreateDialog={setManualDialog} setmodalType={setmodalType} />
            <EditButton label="toolbar.detail" icon={(<DetailsIcon />)}></EditButton>
rsf-admin/src/page/orders/preparation/MatPreparationItemList.jsx
@@ -49,10 +49,10 @@
    <SearchInput source="condition" alwaysOn />,
    // <DateInput label='common.time.after' source="timeStart" />,
    // <DateInput label='common.time.before' source="timeEnd" />,
    <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
    <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
    <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
    <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
    // <NumberInput source="taskId" label="table.field.taskItem.taskId" />,
    // <NumberInput source="orderId" label="table.field.taskItem.orderId" />,
    // <NumberInput source="orderType" label="table.field.taskItem.orderType" />,
    // <NumberInput source="orderItemId" label="table.field.taskItem.orderItemId" />,
    <NumberInput source="matnrId" label="table.field.taskItem.matnrId" />,
    <TextInput source="maktx" label="table.field.taskItem.maktx" />,
    <TextInput source="matnrCode" label="table.field.taskItem.matnrCode" />,
@@ -142,24 +142,31 @@
        const { data: { code, data, msg }, } = await request.get("/fields/enable/list");
        if (code == 200) {
            const arr = [
                <NumberField source="id" />,
                // <NumberField source="taskId" label="table.field.taskItem.taskId" />,
                // <NumberField source="orderId" label="table.field.taskItem.orderId" />,
                // <NumberField source="orderType$" label="table.field.taskItem.orderType" />,
                // <NumberField source="wkType$" label="table.field.taskItem.wkType" />,
                <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />,
                <NumberField source="matnrId" label="table.field.taskItem.matnrId" />,
                <TextField source="maktx" label="table.field.taskItem.maktx" />,
                <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />,
                <TextField source="unit" label="table.field.taskItem.unit" />,
                <NumberField source="anfme" label="table.field.taskItem.anfme" />,
                <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="batch" label="table.field.taskItem.batch" />,
                <TextField source="isptResult$" label="table.field.taskItem.isptResult" />,
                <TextField source="spec" label="table.field.taskItem.spec" />,
                <TextField source="model" label="table.field.taskItem.model" />,
                <TextField source="matnrCode" label="物料编码" />,
                <TextField source="maktx" label="物料名称" />,
                <TextField source="spec" label="规格" />,
                <TextField source="unit" label="单位" />,
                <TextField source="anfme" label="数量" />,
                // <NumberField source="id" />,
                // // <NumberField source="taskId" label="table.field.taskItem.taskId" />,
                // // <NumberField source="orderId" label="table.field.taskItem.orderId" />,
                // // <NumberField source="orderType$" label="table.field.taskItem.orderType" />,
                // // <NumberField source="wkType$" label="table.field.taskItem.wkType" />,
                // <NumberField source="orderItemId" label="table.field.taskItem.orderItemId" />,
                // <NumberField source="matnrId" label="table.field.taskItem.matnrId" />,
                // <TextField source="maktx" label="table.field.taskItem.maktx" />,
                // <TextField source="matnrCode" label="table.field.taskItem.matnrCode" />,
                // <TextField source="unit" label="table.field.taskItem.unit" />,
                // <NumberField source="anfme" label="table.field.taskItem.anfme" />,
                // <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="batch" label="table.field.taskItem.batch" />,
                // <TextField source="isptResult$" label="table.field.taskItem.isptResult" />,
                // <TextField source="spec" label="table.field.taskItem.spec" />,
                // <TextField source="model" label="table.field.taskItem.model" />,
            ]
            const fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />)
            const lastArr = [
rsf-admin/src/page/orders/preparation/MatPreparationList.jsx
@@ -144,7 +144,7 @@
                sort={{ field: "sort", order: "desc" }}
                actions={(
                    <TopToolbar>
                        <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/>
                        {/* <BulkAutoStartButton autoExce={autoExce} setAutoExce={setAutoExce}/> */}
                        <BulkAutoPauseButton autoExce={autoExce} setAutoExce={setAutoExce} />
                        <FilterButton />
                        <SelectColumnsButton preferenceKey='preparation' />
@@ -158,7 +158,7 @@
                    rowClick={false}
                    expand={<MatPreparationPanel />}
                    expandSingle={true}
                    omit={['id', 'sort', 'taskCode', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status','warehType$']}
                    omit={['id', 'sort', 'createTime', 'createBy$', 'memo', 'robotCode', 'exceStatus', 'expDesc', 'expCode', 'status','warehType$']}
                >
                    <NumberField source="id" />
                    <TextField source="taskCode" label="备料号" />
@@ -188,11 +188,11 @@
                    <TextField source="memo" label="common.field.memo" sortable={false} /> */}
                    <WrapperField cellClassName="opt" label="common.field.opt" onClick={(e) => e.stopPropagation()} >
                        <EditButton label="toolbar.detail" />
                        <DoneButton sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton>
                        <DoneButton title="转换" label="转换" sx={{ padding: '1px', fontSize: '.75rem' }} ></DoneButton>
                        <CancelButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                        <CheckButton />
                        <PickButton />
                        <SetTopButton />
                        {/* <SetTopButton /> */}
                    </WrapperField>
                </StyledDatagrid>
            </List>
@@ -311,7 +311,7 @@
        }
    }
    return (
        ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198)) || (record?.taskType == 11 && record?.taskStatus == 101) ? (<ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
        ((record?.taskStatus < 98) || (record?.taskType >= 101 && record?.taskStatus < 198)) || (record?.taskType == 11 && record?.taskStatus == 101) ? (<ConfirmButton label={"转换"} color="secondary" startIcon={<TaskAltIcon />} onConfirm={clickComplete} />) : (<></>)
    )
}
rsf-admin/src/page/orders/preparation/MatPreparationPanel.jsx
@@ -28,6 +28,32 @@
    '& .opt': {
        width: 200
    },
    // 添加列宽样式
    '& .col-code': {
        width: 120,
        minWidth: 120,
        maxWidth: 150,
    },
    '& .col-name': {
        width: 180,
        minWidth: 150,
        maxWidth: 250,
    },
    '& .col-spec': {
        width: 120,
        minWidth: 120,
        maxWidth: 200,
    },
    '& .col-unit': {
        width: 80,
        minWidth: 60,
        maxWidth: 100,
    },
    '& .col-quantity': {
        width: 100,
        minWidth: 80,
        maxWidth: 120,
    },
}));
const MatPreparationPanel = () => {
@@ -60,11 +86,16 @@
                        expandSingle
                        omit={['id', 'taskId', 'createTime', 'createBy$', 'memo', 'taskId', 'orderId', 'orderItemId', 'matnrId']}
                    >
                        <NumberField source="id" />
                        {/* <NumberField source="taskId" label="table.field.taskItem.taskId" /> */}
                        <TextField source="matnrCode" label="物料编码" cellClassName="col-code" />,
                        <TextField source="maktx" label="物料名称" cellClassName="col-name" />,
                        {/* <TextField source="spec" label="规格" cellClassName="col-spec" />, */}
                        {/* <TextField source="unit" label="单位" cellClassName="col-unit" />, */}
                        <TextField source="anfme" label="数量" cellClassName="col-quantity" />,
                        {/* <NumberField source="id" />
                        <NumberField source="taskId" label="table.field.taskItem.taskId" />
                        <NumberField source="orderId" label="table.field.preparationItem.orderId" />
                        <NumberField source="orderType$" label="table.field.preparationItem.orderType" />
                        {/* <TextField source="sourceCode" label="table.field.taskItem.sourceCode" /> */}
                        <TextField source="sourceCode" label="table.field.taskItem.sourceCode" />
                        <NumberField source="orderItemId" label="table.field.preparationItem.orderItemId" />
                        <NumberField source="matnrId" label="table.field.preparationItem.matnrId" />
                        <TextField source="maktx" label="table.field.preparationItem.maktx" />
@@ -73,7 +104,7 @@
                        <NumberField source="anfme" label="table.field.preparationItem.anfme" />
                        <TextField source="batch" label="table.field.preparationItem.batch" />
                        <TextField source="spec" label="table.field.preparationItem.spec" />
                        <TextField source="model" label="table.field.preparationItem.model" />
                        <TextField source="model" label="table.field.preparationItem.model" /> */}
                        {/* <TextField source="updateBy$" label="common.field.updateBy"/>
                        <TextField source="createBy$" label="common.field.createBy"/>
                        <DateField source="updateTime" label="common.field.updateTime" showTime />
rsf-admin/src/page/orders/preparation/MatPreparationPublic.jsx
@@ -208,7 +208,12 @@
                                    </>}
                                    omit={['id', 'splrName', 'qty', 'poCode',]}
                                >
                                    <NumberField source="id" />
                                    <TextField source="matnrCode" label="物料编码" />,
                                    <TextField source="maktx" label="物料名称" />,
                                    <TextField source="spec" label="规格" />,
                                    <TextField source="unit" label="单位" />,
                                    <TextField source="anfme" label="数量" />,
                                    {/* <NumberField source="id" />
                                    <TextField source="asnCode" label="table.field.outStockItem.orderCode" />
                                    <TextField source="poCode" label="table.field.outStockItem.poCode" />
                                    <TextField source="matnrCode" label="table.field.outStockItem.matnrCode" />
@@ -217,7 +222,7 @@
                                    <NumberField source="workQty" label="table.field.outStockItem.workQty" />
                                    <NumberField source="qty" label="table.field.outStockItem.qty" />
                                    <TextField source="stockUnit" label="table.field.outStockItem.stockUnit" />
                                    <TextField source="splrName" label="table.field.outStockItem.splrName" />
                                    <TextField source="splrName" label="table.field.outStockItem.splrName" /> */}
                                </StyledDatagrid>
                            </List>
                        </Card>
rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
@@ -92,29 +92,6 @@
            <DialogContent sx={{ mt: 2 }}>
              <Grid container rowSpacing={2} columnSpacing={2}>
                <Grid item xs={12} display="flex" gap={1}>
                  <TextInput
                    label="table.field.warehouseAreas.name"
                    source="name"
                    validate={[required()]}
                    parse={(v) => v}
                  />
                  <TextInput
                    label="table.field.warehouseAreas.code"
                    source="code"
                    validate={[required()]}
                    parse={(v) => v}
                    placeholder={translate("placeholder.warehouseAreasCode")}
                  />
                  <AutocompleteInput
                    choices={dicts}
                    optionText="label"
                    label="table.field.warehouseAreas.type"
                    source="type"
                    optionValue="value"
                    parse={v => v}
                  />
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <ReferenceInput
                    source="warehouseId"
                    reference="warehouse"
@@ -126,7 +103,59 @@
                      filterToQuery={(val) => ({ name: val })}
                    />
                  </ReferenceInput>
                  <TextInput
                    label="table.field.warehouseAreas.code"
                    source="code"
                    validate={[required()]}
                    parse={(v) => v}
                    placeholder={translate("placeholder.warehouseAreasCode")}
                  />
                  <TextInput
                    label="table.field.warehouseAreas.name"
                    source="name"
                    validate={[required()]}
                    parse={(v) => v}
                  />
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <AutocompleteInput
                    choices={dicts}
                    optionText="label"
                    label="table.field.warehouseAreas.type"
                    source="type"
                    optionValue="value"
                    parse={v => v}
                    validate={[required()]}
                  />
                  {/* <SelectInput
                    label="table.field.warehouseAreas.flagLabelMange"
                    source="flagLabelMange"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: " 否" },
                      { id: 1, name: " 是" },
                    ]}
                  /> */}
                  <SelectInput
                    label="table.field.warehouseAreas.flagMix"
                    source="flagMix"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                    <SelectInput
                    label="table.field.warehouseAreas.flagMinus"
                    source="flagMinus"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <ReferenceInput source="shipperId" reference="companys" filter={{ type: 'shipper' }}>
                    <AutocompleteInput
                      label="table.field.warehouseAreas.shipperId"
@@ -142,44 +171,22 @@
                    />
                  </ReferenceInput>
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <SelectInput
                    label="table.field.warehouseAreas.flagMinus"
                    source="flagMinus"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                  <SelectInput
                    label="table.field.warehouseAreas.flagLabelMange"
                    source="flagLabelMange"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: " 否" },
                      { id: 1, name: " 是" },
                    ]}
                  />
                  <SelectInput
                    label="table.field.warehouseAreas.flagMix"
                    source="flagMix"
                    validate={[required()]}
                    choices={[
                      { id: 0, name: "否" },
                      { id: 1, name: "是" },
                    ]}
                  />
                </Grid>
                <Grid item xs={6} display="flex" gap={1}>
                  <StatusSelectInput />
                </Grid>
                <Grid item xs={12} display="flex" gap={1}>
                  <StatusSelectInput />
                  <TextInput
                    label="common.field.memo"
                    source="memo"
                    parse={v => v}
                    // fullWidth
                    multiline
                  />
                </Grid>
                {/* <Grid item xs={12} display="flex" gap={1}>
                  <Stack direction="column" spacing={1} width={"100%"}>
                    <MemoInput />
                  </Stack>
                </Grid>
                </Grid> */}
              </Grid>
            </DialogContent>
            <DialogActions
rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx
@@ -61,8 +61,8 @@
                defaultValues={{}}
            // validate={(values) => { }}
            >
                <Grid container width={{ xs: '100%', xl: '100%' }} rowSpacing={3} columnSpacing={3}>
                    <Grid item xs={16} md={10}>
                <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={1} columnSpacing={3}>
                    <Grid item xs={12} md={6} display="flex" flexDirection="column" gap={1} sx={{ '& .MuiFormControl-root': { mb: 0 } }}>
                        <Typography variant="h6" gutterBottom>
                            {translate('common.edit.title.main')}
                        </Typography>
@@ -75,28 +75,11 @@
                                autoFocus
                            />
                        </Stack> */}
                        <Stack xs={16} direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouseAreas.name"
                                source="name"
                                validate={[required()]}
                                parse={v => v}
                            />
                            <TextInput
                                label="table.field.warehouseAreas.code"
                                source="code"
                                validate={[required()]}
                                parse={v => v}
                            />
                            <DictionarySelect
                                label='table.field.warehouseAreas.type'
                                name="type"
                                dictTypeCode="sys_ware_areas_type"
                                alwaysOn
                            />
                        <Stack direction='row' gap={2}>
                            <ReferenceInput
                                source="warehouseId"
                                reference="warehouse"
                                autoFocus
                            >
                                <AutocompleteInput
                                    label="table.field.warehouseAreas.wareId"
@@ -107,6 +90,103 @@
                                />
                            </ReferenceInput>
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouseAreas.code"
                                source="code"
                                validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="table.field.warehouseAreas.name"
                                source="name"
                                validate={[required()]}
                                parse={v => v}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <DictionarySelect
                                label='table.field.warehouseAreas.type'
                                name="type"
                                dictTypeCode="sys_ware_areas_type"
                                alwaysOn
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <SelectInput
                                label="table.field.warehouseAreas.flagMix"
                                source="flagMix"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: '否' },
                                    { id: 1, name: '是' },
                                ]}
                            />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <SelectInput
                                label="table.field.warehouseAreas.flagMinus"
                                source="flagMinus"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: '否' },
                                    { id: 1, name: '是' },
                                ]}
                            />
                        </Stack>
                        {/* <Stack direction='row' gap={2}>
                            <ReferenceInput
                                source="shipperId"
                                reference="companys"
                                filter={{ type: 'shipper' }}
                            >
                                <AutocompleteInput
                                    label="table.field.warehouseAreas.shipperId"
                                    optionText="name"
                                    filterToQuery={(val) => ({ name: val })}
                                />
                            </ReferenceInput>
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <ReferenceInput
                                source="supplierId"
                                reference="companys"
                                filter={{ type: 'supplier' }}
                            >
                                <AutocompleteInput
                                    label="table.field.warehouseAreas.supplierId"
                                    optionText="name"
                                    filterToQuery={(val) => ({ name: val })}
                                />
                            </ReferenceInput>
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <StatusSelectInput />
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="common.field.memo"
                                source="memo"
                                parse={v => v}
                                multiline
                            />
                        </Stack> */}
                    </Grid>
                    {/* <Grid item xs={8} md={2}>
                        <Typography variant="h6" gutterBottom>
                            {translate('common.edit.title.common')}
                        </Typography>
                        <StatusSelectInput />
                        <Box mt="2em" />
                        <MemoInput />
                    </Grid> */}
                    <Grid item xs={12} md={6} display="flex" flexDirection="column" gap={1} sx={{ '& .MuiFormControl-root': { mb: 0 } }}>
                        <Typography variant="h6" gutterBottom>
                            &nbsp;
                            {/* {translate('common.edit.title.main')} */}
                        </Typography>
                        <Stack direction='row' gap={2}>
                            <ReferenceInput
                                source="shipperId"
@@ -119,6 +199,17 @@
                                    filterToQuery={(val) => ({ name: val })}
                                />
                            </ReferenceInput>
                            {/* <SelectInput
                                label="table.field.warehouseAreas.flagLabelMange"
                                source="flagLabelMange"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: ' 否' },
                                    { id: 1, name: ' 是' },
                                ]}
                            /> */}
                        </Stack>
                        <Stack direction='row' gap={2}>
                            <ReferenceInput
                                source="supplierId"
                                reference="companys"
@@ -130,42 +221,28 @@
                                    filterToQuery={(val) => ({ name: val })}
                                />
                            </ReferenceInput>
                        </Stack>
                        <Stack direction='row' gap={2}>
                            {/* <StatusSelectInput /> */}
                            <SelectInput
                                label="table.field.warehouseAreas.flagMinus"
                                source="flagMinus"
                                label="common.field.status"
                                source="status"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: '否' },
                                    { id: 1, name: '是' },
                                    { id: '1', name: 'common.enums.statusTrue' },
                                    { id: '0', name: 'common.enums.statusFalse' },
                                ]}
                            />
                            <SelectInput
                                label="table.field.warehouseAreas.flagLabelMange"
                                source="flagLabelMange"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: ' 否' },
                                    { id: 1, name: ' 是' },
                                ]}
                            />
                            <SelectInput
                                label="table.field.warehouseAreas.flagMix"
                                source="flagMix"
                                validate={[required()]}
                                choices={[
                                    { id: 0, name: '否' },
                                    { id: 1, name: '是' },
                                ]}
                                resettable
                            />
                        </Stack>
                    </Grid>
                    <Grid item xs={8} md={2}>
                        <Typography variant="h6" gutterBottom>
                            {translate('common.edit.title.common')}
                        </Typography>
                        <StatusSelectInput />
                        <Box mt="2em" />
                        <MemoInput />
                        <Stack direction='row' gap={2}>
                            <TextInput
                                label="common.field.memo"
                                source="memo"
                                parse={v => v}
                                multiline
                            />
                        </Stack>
                    </Grid>
                </Grid>
            </SimpleForm>
rsf-admin/src/page/warehouseAreas/WarehouseAreasList.jsx
@@ -67,7 +67,7 @@
}));
const filters = [
    <SearchInput source="condition" alwaysOn />,
    <SearchInput source="condition" placeholder="搜索库区名称" alwaysOn />,
    <ReferenceInput
        source="warehouseId"
        label="table.field.loc.warehouseId"
@@ -79,42 +79,41 @@
            filterToQuery={(val) => ({ name: val })}
        />
    </ReferenceInput>,
    <TextInput source="uuid" label="table.field.warehouseAreas.uuid" />,
    <TextInput source="name" label="table.field.warehouseAreas.name" />,
    // <TextInput source="uuid" label="table.field.warehouseAreas.uuid" />,
    <TextInput source="code" label="table.field.warehouseAreas.code" />,
    <TextInput source="name" label="table.field.warehouseAreas.name" />,
    <ReferenceInput source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper">
        <AutocompleteInput label="table.field.warehouseAreas.shipperId" optionText="name" filterToQuery={(val) => ({ name: val })} />
    </ReferenceInput>,
    <NumberInput source="supplierId" label="table.field.warehouseAreas.supplierId" />,
    <SelectInput source="flagMinus" label="table.field.warehouseAreas.flagMinus"
        choices={[
            { id: 0, name: '否' },
            { id: 1, name: '是' },
        ]}
    />,
    <SelectInput source="flagLabelMange" label="table.field.warehouseAreas.flagLabelMange"
        choices={[
            { id: 0, name: ' 否' },
            { id: 1, name: ' 是' },
        ]}
    />,
    <SelectInput source="flagMix" label="table.field.warehouseAreas.flagMix"
        choices={[
            { id: 0, name: '否' },
            { id: 1, name: '是' },
        ]}
    />,
    <TextInput label="common.field.memo" source="memo" />,
    <SelectInput
        label="common.field.status"
        source="status"
        choices={[
            { id: '1', name: 'common.enums.statusTrue' },
            { id: '0', name: 'common.enums.statusFalse' },
        ]}
        resettable
    />,
    // <SelectInput source="flagMinus" label="table.field.warehouseAreas.flagMinus"
    //     choices={[
    //         { id: 0, name: '否' },
    //         { id: 1, name: '是' },
    //     ]}
    // />,
    // <SelectInput source="flagLabelMange" label="table.field.warehouseAreas.flagLabelMange"
    //     choices={[
    //         { id: 0, name: ' 否' },
    //         { id: 1, name: ' 是' },
    //     ]}
    // />,
    // <SelectInput source="flagMix" label="table.field.warehouseAreas.flagMix"
    //     choices={[
    //         { id: 0, name: '否' },
    //         { id: 1, name: '是' },
    //     ]}
    // />,
    // <TextInput label="common.field.memo" source="memo" />,
    // <SelectInput
    //     label="common.field.status"
    //     source="status"
    //     choices={[
    //         { id: '1', name: 'common.enums.statusTrue' },
    //         { id: '0', name: 'common.enums.statusFalse' },
    //     ]}
    //     resettable
    // />,
]
const WarehouseAreasList = () => {
@@ -147,9 +146,6 @@
                )}
                perPage={DEFAULT_PAGE_SIZE}
            > 
                <StyledDatagrid                                    
                    preferenceKey='warehouseAreas'
                    bulkActionButtons={
@@ -161,23 +157,17 @@
                        </>
                    }
                    rowClick={(id, resource, record) => false}
                    omit={['id', 'createTime', 'createBy', 'memo','statusBool','flagMix$','flagLabelMange$','shipperId$','supplierId']}
                    omit={['id', 'createTime', 'createBy', 'statusBool', 'flagLabelMange$','shipperId$','supplierId', 'updateBy', 'updateTime']}
                >
                    <NumberField source="id" />
                    {/* <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> */}
                    <TextField source="warehouseId$" label="table.field.warehouseAreas.wareId" />
                    <TextField source="code" label="table.field.warehouseAreas.code" />
                    <TextField source="name" label="table.field.warehouseAreas.name" />
                    <TextField source="type$" label="table.field.warehouseAreas.type"/>
                    {/* <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}>
                        <TextField source="name" />
                    </ReferenceField> */}
                    <TextField source="warehouseId$" label="table.field.warehouseAreas.wareId" />
                    <TextField source="shipperId$" label="table.field.warehouseAreas.shipperId" />
                    <NumberField source="supplierId" label="table.field.warehouseAreas.supplierId" />
                    <TextField source="flagMinus$" label="table.field.warehouseAreas.flagMinus" sortable={false} />
                    <TextField source="flagLabelMange$" label="table.field.warehouseAreas.flagLabelMange" sortable={false} />
                    <TextField source="flagMix$" label="table.field.warehouseAreas.flagMix" sortable={false} />
                    <TextField source="flagMinus$" label="table.field.warehouseAreas.flagMinus" sortable={false} />
                    <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
                        <TextField source="nickname" />
                    </ReferenceField>
@@ -186,12 +176,18 @@
                        <TextField source="nickname" />
                    </ReferenceField>
                    <DateField source="createTime" label="common.field.createTime" showTime />
                    <BooleanField source="statusBool" label="common.field.status" sortable={false} />
                    {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */}
                    <TextField source="memo" label="common.field.memo" sortable={false} />
                    <WrapperField cellClassName="opt" label="common.field.opt">
                        <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                        <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
                    </WrapperField>
                    {/* <TextField source="flagLabelMange$" label="table.field.warehouseAreas.flagLabelMange" sortable={false} /> */}
                    {/* <TextField source="uuid" label="table.field.warehouseAreas.uuid" /> */}
                    {/* <ReferenceField source="shipperId" label="table.field.warehouseAreas.shipperId" reference="shipper" link={false} sortable={false}>
                        <TextField source="name" />
                    </ReferenceField> */}
                </StyledDatagrid>
                
            </List>
rsf-admin/src/themes/ThemeSwapper.jsx
@@ -41,7 +41,7 @@
                </IconButton>
            </Tooltip>
            {currentTheme?.dark ? <ToggleThemeButton /> : null}
            {/* <Menu open={open} onClose={handleClose} anchorEl={anchorEl}>
            <Menu open={open} onClose={handleClose} anchorEl={anchorEl}>
                {themes.map((theme, index) => (
                    <MenuItem
                        onClick={event => handleChange(event, index)}
@@ -52,7 +52,7 @@
                        {ucFirst(theme.name)}
                    </MenuItem>
                ))}
            </Menu> */}
            </Menu>
        </>
    );
};