From 401e85bb3749bb9107f65ddaa15868a0a9ba852e Mon Sep 17 00:00:00 2001
From: verou <857149855@qq.com>
Date: 星期五, 11 四月 2025 14:18:46 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop
---
rsf-admin/src/page/purchase/PurchaseItemList.jsx | 25
rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx | 173 ++++++++
rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx | 98 ++--
rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx | 13
rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java | 3
rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx | 2
rsf-admin/src/page/system/dicts/dictType/DictDataCreate.jsx | 12
rsf-admin/src/page/system/serialRule/SerialRuleItemEdit.jsx | 158 +++++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java | 14
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java | 43 ++
rsf-admin/src/page/purchase/PurchaseItemCreate.jsx | 0
rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx | 23
rsf-admin/src/i18n/zh.js | 11
rsf-admin/src/page/purchase/PurchaseItemEdit.jsx | 0
rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx | 2
rsf-admin/src/i18n/en.js | 3
rsf-admin/src/page/ResourceContent.js | 18
rsf-admin/.env | 2
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java | 9
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java | 20
rsf-admin/src/page/system/dicts/dictType/DictDataEdit.jsx | 163 +++++++
rsf-admin/src/page/system/serialRule/SerialRuleList.jsx | 27
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java | 15
rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx | 18
rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx | 47 +-
rsf-admin/src/page/taskLog/TaskItemLogList.jsx | 1
rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml | 1
rsf-admin/src/page/purchase/PurchaseEdit.jsx | 201 ++++-----
rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx | 42 -
/dev/null | 18
rsf-admin/src/page/system/dicts/dictType/index.jsx | 2
rsf-admin/src/page/purchase/PurchaseList.jsx | 24
rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx | 34 -
33 files changed, 837 insertions(+), 385 deletions(-)
diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..a3c69b2 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
+VITE_BASE_IP=127.0.0.1
# VITE_BASE_IP=47.76.147.249
VITE_BASE_PORT=8080
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index daf2177..c18734e 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -9,6 +9,9 @@
fail: "Fail",
dataError: "Submit data was error, Please check",
},
+ button: {
+ edit: "Edit",
+ },
field: {
id: 'ID',
uuid: 'uuid',
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 7a43338..f2bf06e 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -9,6 +9,9 @@
fail: "鏈嶅姟鍣ㄩ敊璇�",
dataError: "鏁版嵁閿欒锛岃浠旂粏妫�鏌�",
},
+ button: {
+ edit: "缂栬緫",
+ },
field: {
id: 'ID',
uuid: '缂栧彿',
@@ -507,14 +510,14 @@
code: "ASN鍗曞彿",
poCode: "PO缂栫爜",
poId: "PO鏍囪瘑",
- type: "鍗曟嵁绫诲瀷",
+ type: "绫诲瀷",
wkType: "涓氬姟绫诲瀷",
anfme: "鏁伴噺",
- qty: "宸插畬鎴愭暟閲�",
+ qty: "瀹屾垚鏁伴噺",
logisNo: "鐗╂祦鍗曞彿",
arrTime: "棰勮鍒拌揪鏃堕棿",
- rleStatus: "閲婃斁鐘舵��",
- ntyStatus: "璐ㄦ涓婃姤鐘舵��",
+ rleStatus: "鐘舵��",
+ ntyStatus: "涓婃姤鐘舵��",
},
asnOrderItem: {
asnId: "涓诲崟鏍囪瘑",
diff --git a/rsf-admin/src/page/ResourceContent.js b/rsf-admin/src/page/ResourceContent.js
index 2ead1d2..82f7ee1 100644
--- a/rsf-admin/src/page/ResourceContent.js
+++ b/rsf-admin/src/page/ResourceContent.js
@@ -23,18 +23,18 @@
import qlyInspect from './qlyInspect';
import qlyIsptItem from './qlyIsptItem';
import dictType from './system/dicts/dictType';
-import dictData from './system/dicts/dictData';
+// import dictData from './system/dicts/dictData';
import companys from './basicInfo/companys';
import locType from './basicInfo/locType';
import locArea from './basicInfo//locArea';
import locAreaMatRela from './basicInfo/locAreaMatRela';
import locAreaMat from './basicInfo/locAreaMat';
-import serialRuleItem from './system/serialRuleItem';
+// import serialRuleItem from './system/serialRuleItem';
import serialRule from './system/serialRule';
import whMat from './basicInfo/whMat';
import asnOrder from './asnOrder';
import asnOrderItem from './asnOrderItem';
-import purchaseItem from './purchaseItem';
+// import purchaseItem from './purchaseItem';
import purchase from './purchase';
import fields from './fields';
import fieldsItem from './fieldsItem';
@@ -89,12 +89,12 @@
return qlyIsptItem;
case 'dictType':
return dictType;
- case 'dictData':
- return dictData;
+ // case 'dictData':
+ // return dictData;
case 'companys':
return companys;
- case 'serialRuleItem':
- return serialRuleItem;
+ // case 'serialRuleItem':
+ // return serialRuleItem;
case 'serialRule':
return serialRule;
case 'whMat':
@@ -105,8 +105,8 @@
return asnOrderItem;
case 'asnOrderLog':
return asnOrderLog;
- case 'purchaseItem':
- return purchaseItem;
+ // case 'purchaseItem':
+ // return purchaseItem;
case 'purchase':
return purchase;
case 'fields':
diff --git a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogCreate.jsx b/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogCreate.jsx
deleted file mode 100644
index e1c793e..0000000
--- a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogCreate.jsx
+++ /dev/null
@@ -1,265 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
-
-const AsnOrderItemLogCreate = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify('common.response.success');
- };
-
- const handleError = async (error) => {
- notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
- };
-
- return (
- <>
- <CreateBase
- record={{}}
- transform={(data) => {
- return data;
- }}
- mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
- >
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <Form>
- <DialogTitle id="form-dialog-title" sx={{
- position: 'sticky',
- top: 0,
- backgroundColor: 'background.paper',
- zIndex: 1000
- }}
- >
- {translate('create.title')}
- <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
- <DialogContent sx={{ mt: 2 }}>
- <Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.asnOrderItemLog.asnId"
- source="asnId"
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.asnCode"
- source="asnCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.platItemId"
- source="platItemId"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.asnOrderItemLog.poDetlId"
- source="poDetlId"
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.poCode"
- source="poCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.fieldsIndex"
- source="fieldsIndex"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.matnrId"
- source="matnrId"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.matnrCode"
- source="matnrCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.maktx"
- source="maktx"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.asnOrderItemLog.anfme"
- source="anfme"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.stockUnit"
- source="stockUnit"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.asnOrderItemLog.purQty"
- source="purQty"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.purUnit"
- source="purUnit"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.asnOrderItemLog.qty"
- source="qty"
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.splrCode"
- source="splrCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.splrBatch"
- source="splrBatch"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.splrName"
- source="splrName"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.qrcode"
- source="qrcode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.trackCode"
- source="trackCode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.barcode"
- source="barcode"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.asnOrderItemLog.packName"
- source="packName"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <SelectInput
- label="table.field.asnOrderItemLog.ntyStatus"
- source="ntyStatus"
- 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}>
- <Stack direction="column" spacing={1} width={'100%'}>
- <MemoInput />
- </Stack>
- </Grid>
- </Grid>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <SaveButton />
- </Toolbar>
- </DialogActions>
- </Form>
- </Dialog>
- </CreateBase>
- </>
- )
-}
-
-export default AsnOrderItemLogCreate;
diff --git a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogEdit.jsx b/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogEdit.jsx
deleted file mode 100644
index dab571c..0000000
--- a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogEdit.jsx
+++ /dev/null
@@ -1,238 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const AsnOrderItemLogEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.asnOrderItemLog.asnId"
- source="asnId"
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.asnCode"
- source="asnCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.platItemId"
- source="platItemId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.asnOrderItemLog.poDetlId"
- source="poDetlId"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.poCode"
- source="poCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.fieldsIndex"
- source="fieldsIndex"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.matnrId"
- source="matnrId"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.matnrCode"
- source="matnrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.maktx"
- source="maktx"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.asnOrderItemLog.anfme"
- source="anfme"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.stockUnit"
- source="stockUnit"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.asnOrderItemLog.purQty"
- source="purQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.purUnit"
- source="purUnit"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.asnOrderItemLog.qty"
- source="qty"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.splrCode"
- source="splrCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.splrBatch"
- source="splrBatch"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.splrName"
- source="splrName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.qrcode"
- source="qrcode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.trackCode"
- source="trackCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.barcode"
- source="barcode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.asnOrderItemLog.packName"
- source="packName"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <SelectInput
- label="table.field.asnOrderItemLog.ntyStatus"
- source="ntyStatus"
- choices={[
- { id: 0, name: ' 鏈笂鎶�' },
- { id: 1, name: ' 宸蹭笂鎶�' },
- ]}
- validate={required()}
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default AsnOrderItemLogEdit;
diff --git a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogList.jsx b/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogList.jsx
deleted file mode 100644
index 6161f34..0000000
--- a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogList.jsx
+++ /dev/null
@@ -1,193 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import AsnOrderItemLogCreate from "./AsnOrderItemLogCreate";
-import AsnOrderItemLogPanel from "./AsnOrderItemLogPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
-}));
-
-const filters = [
- <SearchInput source="condition" alwaysOn />,
-
- <NumberInput source="asnId" label="table.field.asnOrderItemLog.asnId" />,
- <TextInput source="asnCode" label="table.field.asnOrderItemLog.asnCode" />,
- <TextInput source="platItemId" label="table.field.asnOrderItemLog.platItemId" />,
- <NumberInput source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />,
- <TextInput source="poCode" label="table.field.asnOrderItemLog.poCode" />,
- <TextInput source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" />,
- <TextInput source="matnrId" label="table.field.asnOrderItemLog.matnrId" />,
- <TextInput source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" />,
- <TextInput source="maktx" label="table.field.asnOrderItemLog.maktx" />,
- <NumberInput source="anfme" label="table.field.asnOrderItemLog.anfme" />,
- <TextInput source="stockUnit" label="table.field.asnOrderItemLog.stockUnit" />,
- <NumberInput source="purQty" label="table.field.asnOrderItemLog.purQty" />,
- <TextInput source="purUnit" label="table.field.asnOrderItemLog.purUnit" />,
- <NumberInput source="qty" label="table.field.asnOrderItemLog.qty" />,
- <TextInput source="splrCode" label="table.field.asnOrderItemLog.splrCode" />,
- <TextInput source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" />,
- <TextInput source="splrName" label="table.field.asnOrderItemLog.splrName" />,
- <TextInput source="qrcode" label="table.field.asnOrderItemLog.qrcode" />,
- <TextInput source="trackCode" label="table.field.asnOrderItemLog.trackCode" />,
- <TextInput source="barcode" label="table.field.asnOrderItemLog.barcode" />,
- <TextInput source="packName" label="table.field.asnOrderItemLog.packName" />,
- <SelectInput source="ntyStatus" label="table.field.asnOrderItemLog.ntyStatus"
- 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 AsnOrderItemLogList = () => {
- const translate = useTranslate();
-
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
-
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.asnOrderItemLog"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='asnOrderItemLog' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='asnOrderItemLog'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <NumberField source="asnId" label="table.field.asnOrderItemLog.asnId" />
- <TextField source="asnCode" label="table.field.asnOrderItemLog.asnCode" />
- <TextField source="platItemId" label="table.field.asnOrderItemLog.platItemId" />
- <NumberField source="poDetlId" label="table.field.asnOrderItemLog.poDetlId" />
- <TextField source="poCode" label="table.field.asnOrderItemLog.poCode" />
- <TextField source="fieldsIndex" label="table.field.asnOrderItemLog.fieldsIndex" />
- <TextField source="matnrId" label="table.field.asnOrderItemLog.matnrId" />
- <TextField source="matnrCode" label="table.field.asnOrderItemLog.matnrCode" />
- <TextField source="maktx" label="table.field.asnOrderItemLog.maktx" />
- <NumberField source="anfme" label="table.field.asnOrderItemLog.anfme" />
- <NumberField source="purQty" label="table.field.asnOrderItemLog.purQty" />
- <TextField source="purUnit" label="table.field.asnOrderItemLog.purUnit" />
- <NumberField source="qty" label="table.field.asnOrderItemLog.qty" />
- <TextField source="splrCode" label="table.field.asnOrderItemLog.splrCode" />
- <TextField source="splrBatch" label="table.field.asnOrderItemLog.splrBatch" />
- <TextField source="splrName" label="table.field.asnOrderItemLog.splrName" />
- <TextField source="qrcode" label="table.field.asnOrderItemLog.qrcode" />
- <TextField source="trackCode" label="table.field.asnOrderItemLog.trackCode" />
- <TextField source="packName" label="table.field.asnOrderItemLog.packName" />
- <TextField source="ntyStatus$" label="table.field.asnOrderItemLog.ntyStatus" sortable={false} />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <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 />
- <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>
- </StyledDatagrid>
- </List>
- <AsnOrderItemLogCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='AsnOrderItemLog Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
-}
-
-export default AsnOrderItemLogList;
diff --git a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogPanel.jsx b/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogPanel.jsx
deleted file mode 100644
index 8fb6c06..0000000
--- a/rsf-admin/src/page/asnOrderItemLog/AsnOrderItemLogPanel.jsx
+++ /dev/null
@@ -1,183 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const AsnOrderItemLogPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.asnOrderItemLog.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.asnId"
- property={record.asnId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.asnCode"
- property={record.asnCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.platItemId"
- property={record.platItemId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.poDetlId"
- property={record.poDetlId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.poCode"
- property={record.poCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.fieldsIndex"
- property={record.fieldsIndex}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.matnrId"
- property={record.matnrId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.matnrCode"
- property={record.matnrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.maktx"
- property={record.maktx}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.anfme"
- property={record.anfme}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.stockUnit"
- property={record.stockUnit}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.purQty"
- property={record.purQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.purUnit"
- property={record.purUnit}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.qty"
- property={record.qty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.splrCode"
- property={record.splrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.splrBatch"
- property={record.splrBatch}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.splrName"
- property={record.splrName}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.qrcode"
- property={record.qrcode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.trackCode"
- property={record.trackCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.barcode"
- property={record.barcode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.packName"
- property={record.packName}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.asnOrderItemLog.ntyStatus"
- property={record.ntyStatus$}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default AsnOrderItemLogPanel;
diff --git a/rsf-admin/src/page/asnOrderItemLog/index.jsx b/rsf-admin/src/page/asnOrderItemLog/index.jsx
deleted file mode 100644
index 555b583..0000000
--- a/rsf-admin/src/page/asnOrderItemLog/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import AsnOrderItemLogList from "./AsnOrderItemLogList";
-import AsnOrderItemLogEdit from "./AsnOrderItemLogEdit";
-
-export default {
- list: AsnOrderItemLogList,
- edit: AsnOrderItemLogEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx
index f3701ff..3160580 100644
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx
+++ b/rsf-admin/src/page/asnOrderLog/AsnOrderLogEdit.jsx
@@ -141,7 +141,7 @@
{translate('common.edit.title.common')}
</Typography>
</Grid>
- <AsnOrderItemLogList />
+ {/* <AsnOrderItemLogList /> */}
</>
)
}
diff --git a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx b/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx
index 29c4a09..ceb24f6 100644
--- a/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx
+++ b/rsf-admin/src/page/asnOrderLog/AsnOrderLogList.jsx
@@ -60,7 +60,6 @@
const filters = [
<SearchInput source="condition" alwaysOn />,
-
<TextInput source="code" label="table.field.asnOrderLog.code" />,
<TextInput source="poCode" label="table.field.asnOrderLog.poCode" />,
<NumberInput source="poId" label="table.field.asnOrderLog.poId" />,
@@ -128,32 +127,27 @@
>
<StyledDatagrid
preferenceKey='asnOrderLog'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ bulkActionButtons={false}
rowClick={'edit'}
expand={false}
expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
+ omit={['id', 'createTime', 'createBy', 'memo', 'rleStatus']}
>
<NumberField source="id" />
<TextField source="code" label="table.field.asnOrderLog.code" />
<TextField source="poCode" label="table.field.asnOrderLog.poCode" />
<NumberField source="poId" label="table.field.asnOrderLog.poId" />
- <TextField source="type" label="table.field.asnOrderLog.type" />
- <TextField source="wkType" label="table.field.asnOrderLog.wkType" />
+ <TextField source="type$" label="table.field.asnOrderLog.type" />
+ <TextField source="wkType$" label="table.field.asnOrderLog.wkType" />
<NumberField source="anfme" label="table.field.asnOrderLog.anfme" />
<NumberField source="qty" label="table.field.asnOrderLog.qty" />
<TextField source="logisNo" label="table.field.asnOrderLog.logisNo" />
<DateField source="arrTime" label="table.field.asnOrderLog.arrTime" showTime />
<TextField source="rleStatus$" label="table.field.asnOrderLog.rleStatus" sortable={false} />
<TextField source="ntyStatus$" label="table.field.asnOrderLog.ntyStatus" sortable={false} />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy"/>
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-admin/src/page/batchRegular/BatchRegularCreate.jsx b/rsf-admin/src/page/batchRegular/BatchRegularCreate.jsx
deleted file mode 100644
index 74b73e1..0000000
--- a/rsf-admin/src/page/batchRegular/BatchRegularCreate.jsx
+++ /dev/null
@@ -1,132 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from '@mui/material';
-import DialogCloseButton from "../components/DialogCloseButton";
-import StatusSelectInput from "../components/StatusSelectInput";
-import MemoInput from "../components/MemoInput";
-
-const BatchRegularCreate = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify('common.response.success');
- };
-
- const handleError = async (error) => {
- notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
- };
-
- return (
- <>
- <CreateBase
- record={{}}
- transform={(data) => {
- return data;
- }}
- mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
- >
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <Form>
- <DialogTitle id="form-dialog-title" sx={{
- position: 'sticky',
- top: 0,
- backgroundColor: 'background.paper',
- zIndex: 1000
- }}
- >
- {translate('create.title')}
- <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
- <DialogContent sx={{ mt: 2 }}>
- <Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.batchRegular.name"
- source="name"
- parse={v => v}
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.batchRegular.code"
- source="code"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.batchRegular.property"
- source="property"
- parse={v => v}
- />
- </Grid>
-
- <Grid item xs={6} display="flex" gap={1}>
- <StatusSelectInput />
- </Grid>
- <Grid item xs={12} display="flex" gap={1}>
- <Stack direction="column" spacing={1} width={'100%'}>
- <MemoInput />
- </Stack>
- </Grid>
- </Grid>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <SaveButton />
- </Toolbar>
- </DialogActions>
- </Form>
- </Dialog>
- </CreateBase>
- </>
- )
-}
-
-export default BatchRegularCreate;
diff --git a/rsf-admin/src/page/batchRegular/BatchRegularEdit.jsx b/rsf-admin/src/page/batchRegular/BatchRegularEdit.jsx
deleted file mode 100644
index 36629d5..0000000
--- a/rsf-admin/src/page/batchRegular/BatchRegularEdit.jsx
+++ /dev/null
@@ -1,104 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../components/EditBaseAside";
-import CustomerTopToolBar from "../components/EditTopToolBar";
-import MemoInput from "../components/MemoInput";
-import StatusSelectInput from "../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const BatchRegularEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.batchRegular.name"
- source="name"
- parse={v => v}
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.batchRegular.code"
- source="code"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.batchRegular.property"
- source="property"
- parse={v => v}
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default BatchRegularEdit;
diff --git a/rsf-admin/src/page/batchRegular/BatchRegularList.jsx b/rsf-admin/src/page/batchRegular/BatchRegularList.jsx
deleted file mode 100644
index 5a19e66..0000000
--- a/rsf-admin/src/page/batchRegular/BatchRegularList.jsx
+++ /dev/null
@@ -1,156 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
-import { useNavigate } from 'react-router-dom';
-import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
-} from 'react-admin';
-import { Box, Typography, Card, Stack } from '@mui/material';
-import { styled } from '@mui/material/styles';
-import BatchRegularCreate from "./BatchRegularCreate";
-import BatchRegularPanel from "./BatchRegularPanel";
-import EmptyData from "../components/EmptyData";
-import MyCreateButton from "../components/MyCreateButton";
-import MyExportButton from '../components/MyExportButton';
-import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
-import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- '& .css-1vooibu-MuiSvgIcon-root': {
- height: '.9em'
- },
- '& .RaDatagrid-row': {
- cursor: 'auto'
- },
- '& .column-name': {
- },
- '& .opt': {
- width: 200
- },
-}));
-
-const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label='common.time.after' source="timeStart" alwaysOn />,
- <DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
- <TextInput source="name" label="table.field.batchRegular.name" />,
- <TextInput source="code" label="table.field.batchRegular.code" />,
- <TextInput source="property" label="table.field.batchRegular.property" />,
-
- <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 BatchRegularList = () => {
- const translate = useTranslate();
-
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
-
- return (
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(['all'], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: !!drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.batchRegular"}
- empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
- filters={filters}
- sort={{ field: "create_time", order: "desc" }}
- actions={(
- <TopToolbar>
- <FilterButton />
- <MyCreateButton onClick={() => { setCreateDialog(true) }} />
- <SelectColumnsButton preferenceKey='batchRegular' />
- <MyExportButton />
- </TopToolbar>
- )}
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey='batchRegular'
- bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
- expand={() => <BatchRegularPanel />}
- expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
- >
- <NumberField source="id" />
- <TextField source="name" label="table.field.batchRegular.name" />
- <TextField source="code" label="table.field.batchRegular.code" />
- <TextField source="property" label="table.field.batchRegular.property" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
- <DateField source="updateTime" label="common.field.updateTime" showTime />
- <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 />
- <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>
- </StyledDatagrid>
- </List>
- <BatchRegularCreate
- open={createDialog}
- setOpen={setCreateDialog}
- />
- <PageDrawer
- title='BatchRegular Detail'
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- >
- </PageDrawer>
- </Box>
- )
-}
-
-export default BatchRegularList;
diff --git a/rsf-admin/src/page/batchRegular/BatchRegularPanel.jsx b/rsf-admin/src/page/batchRegular/BatchRegularPanel.jsx
deleted file mode 100644
index d1c80be..0000000
--- a/rsf-admin/src/page/batchRegular/BatchRegularPanel.jsx
+++ /dev/null
@@ -1,69 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const BatchRegularPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.batchRegular.name'))}: {record.name}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.batchRegular.name"
- property={record.name}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.batchRegular.code"
- property={record.code}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.batchRegular.property"
- property={record.property}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default BatchRegularPanel;
diff --git a/rsf-admin/src/page/batchRegular/index.jsx b/rsf-admin/src/page/batchRegular/index.jsx
deleted file mode 100644
index 5752ce6..0000000
--- a/rsf-admin/src/page/batchRegular/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import BatchRegularList from "./BatchRegularList";
-import BatchRegularEdit from "./BatchRegularEdit";
-
-export default {
- list: BatchRegularList,
- edit: BatchRegularEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.name}`
- }
-};
diff --git a/rsf-admin/src/page/purchase/PurchaseEdit.jsx b/rsf-admin/src/page/purchase/PurchaseEdit.jsx
index b12726f..93bb094 100644
--- a/rsf-admin/src/page/purchase/PurchaseEdit.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseEdit.jsx
@@ -28,12 +28,13 @@
import CustomerTopToolBar from "../components/EditTopToolBar";
import MemoInput from "../components/MemoInput";
import StatusSelectInput from "../components/StatusSelectInput";
+import PurchaseItemList from "./PurchaseItemList";
const FormToolbar = () => {
const { getValues } = useFormContext();
return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
+ <Toolbar sx={{ justifyContent: 'end' }}>
<SaveButton />
<DeleteButton mutationMode="optimistic" />
</Toolbar>
@@ -44,26 +45,27 @@
const translate = useTranslate();
return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
+ <>
+ <Edit
+ redirect="list"
+ mutationMode={EDIT_MODE}
+ actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
>
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- {/* <Stack direction='row' gap={2}>
+ <SimpleForm
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ // validate={(values) => { }}
+ >
+ <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={18} md={10}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ {/* <Stack direction='row' gap={2}>
<TextInput
label="table.field.purchase.code"
source="code"
@@ -71,95 +73,80 @@
autoFocus
/>
</Stack> */}
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.purchase.type"
- source="type"
- parse={v => v}
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.purchase.source"
- source="source"
- parse={v => v}
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.purchase.type"
+ source="type$"
+ parse={v => v}
+ validate={required()}
+ />
+ <TextInput
+ label="table.field.purchase.source"
+ source="source"
+ parse={v => v}
+ validate={required()}
+ />
+ <DateInput
+ label="table.field.purchase.preArr"
+ source="preArr"
+ />
+ <NumberInput
+ label="table.field.purchase.anfme"
+ source="anfme"
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.purchase.qty"
+ source="qty"
+ validate={required()}
+ />
+ <NumberInput
+ label="table.field.purchase.workQty"
+ source="workQty"
+ validate={required()}
+ />
+ <TextInput
+ label="table.field.purchase.channel"
+ source="channel"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.purchase.platCode"
+ source="platCode"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
<DateInput
- label="table.field.purchase.preArr"
- source="preArr"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.purchase.anfme"
- source="anfme"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.purchase.qty"
- source="qty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.purchase.workQty"
- source="workQty"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.purchase.channel"
- source="channel"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.purchase.platCode"
- source="platCode"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <DateInput
- label="table.field.purchase.startTime"
- source="startTime"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <DateInput
- label="table.field.purchase.endTime"
- source="endTime"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.purchase.project"
- source="project"
- parse={v => v}
- />
- </Stack>
-
+ label="table.field.purchase.startTime"
+ source="startTime"
+ />
+ <DateInput
+ label="table.field.purchase.endTime"
+ source="endTime"
+ />
+ <TextInput
+ label="table.field.purchase.project"
+ source="project"
+ parse={v => v}
+ />
+ </Stack>
+ </Grid>
+ <Grid item xs={6} md={2}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
</Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
+ </SimpleForm>
+ </Edit >
+ <PurchaseItemList />
+ </>
)
}
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx b/rsf-admin/src/page/purchase/PurchaseItemCreate.jsx
similarity index 100%
rename from rsf-admin/src/page/purchaseItem/PurchaseItemCreate.jsx
rename to rsf-admin/src/page/purchase/PurchaseItemCreate.jsx
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemEdit.jsx b/rsf-admin/src/page/purchase/PurchaseItemEdit.jsx
similarity index 100%
rename from rsf-admin/src/page/purchaseItem/PurchaseItemEdit.jsx
rename to rsf-admin/src/page/purchase/PurchaseItemEdit.jsx
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx b/rsf-admin/src/page/purchase/PurchaseItemList.jsx
similarity index 87%
rename from rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
rename to rsf-admin/src/page/purchase/PurchaseItemList.jsx
index ce3083d..970263d 100644
--- a/rsf-admin/src/page/purchaseItem/PurchaseItemList.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseItemList.jsx
@@ -31,19 +31,16 @@
ReferenceArrayInput,
AutocompleteInput,
DeleteButton,
+ useGetRecordId,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
import PurchaseItemCreate from "./PurchaseItemCreate";
-import PurchaseItemPanel from "./PurchaseItemPanel";
import EmptyData from "../components/EmptyData";
import MyCreateButton from "../components/MyCreateButton";
import MyExportButton from '../components/MyExportButton';
import PageDrawer from "../components/PageDrawer";
-import MyField from "../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-import CustomerTopToolBar from "../components/EditTopToolBar";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -90,19 +87,15 @@
const PurchaseItemList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
-
- const location = useLocation();
- const queryParams = new URLSearchParams(location.search);
- const poId = queryParams.get("poId");
+ const poId = useGetRecordId();
return (
<>
- {poId && <CustomerTopToolBar backPrevious={true} />}
<Box display="flex">
<List
+ resource="purchaseItem"
sx={{
flexGrow: 1,
transition: (theme) =>
@@ -114,6 +107,7 @@
title={"menu.purchaseItem"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
filters={filters}
+ filter={{ purchaseId: poId }}
sort={{ field: "create_time", order: "desc" }}
actions={(
<TopToolbar>
@@ -129,7 +123,7 @@
preferenceKey='purchaseItem'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
rowClick={(id, resource, record) => false}
- omit={['id', 'createTime', 'createBy', 'memo']}
+ omit={['id', 'createTime','purchaseId', 'platItemId', 'createBy', 'memo']}
>
<NumberField source="id" />
<NumberField source="purchaseId" label="table.field.purchaseItem.purchaseId" />
@@ -145,14 +139,9 @@
<TextField source="splrName" label="table.field.purchaseItem.splrName" />
<TextField source="splrCode" label="table.field.purchaseItem.splrCode" />
<TextField source="splrBatch" label="table.field.purchaseItem.splrBatch" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" reference="user" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-admin/src/page/purchase/PurchaseList.jsx b/rsf-admin/src/page/purchase/PurchaseList.jsx
index ffdb648..0a45197 100644
--- a/rsf-admin/src/page/purchase/PurchaseList.jsx
+++ b/rsf-admin/src/page/purchase/PurchaseList.jsx
@@ -124,20 +124,13 @@
preferenceKey='purchase'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
rowClick={'edit'}
- expand={() => <PurchasePanel />}
+ expand={false}
expandSingle={true}
- omit={['id', 'createTime', 'createBy', 'memo']}
+ omit={['id', 'createTime', 'createBy', 'memo', 'preArr', 'channel','startTime','workQty', 'endTime']}
>
<NumberField source="id" />
- <MyField
- source="code"
- label="table.field.purchase.code"
- onClick={(event, record, val) => {
- event.stopPropagation();
- assign(record);
- }}
- />
- <TextField source="type" label="table.field.purchase.type" />
+ <TextField source="code" label="table.field.purchase.code" />
+ <TextField source="type$" label="table.field.purchase.type" />
<TextField source="source" label="table.field.purchase.source" />
<DateField source="preArr" label="table.field.purchase.preArr" showTime />
<NumberField source="anfme" label="table.field.purchase.anfme" />
@@ -148,14 +141,9 @@
<DateField source="startTime" label="table.field.purchase.startTime" showTime />
<DateField source="endTime" label="table.field.purchase.endTime" showTime />
<TextField source="project" label="table.field.purchase.project" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-admin/src/page/purchaseItem/PurchaseItemPanel.jsx b/rsf-admin/src/page/purchaseItem/PurchaseItemPanel.jsx
deleted file mode 100644
index 0662e94..0000000
--- a/rsf-admin/src/page/purchaseItem/PurchaseItemPanel.jsx
+++ /dev/null
@@ -1,129 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const PurchaseItemPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.purchaseItem.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.purchaseId"
- property={record.purchaseId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.platItemId"
- property={record.platItemId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.matnrCode"
- property={record.matnrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.matnrName"
- property={record.matnrName}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.unit"
- property={record.unit}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.anfme"
- property={record.anfme}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.qty"
- property={record.qty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.nromQty"
- property={record.nromQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.asnQty"
- property={record.asnQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.printQty"
- property={record.printQty}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.splrName"
- property={record.splrName}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.splrCode"
- property={record.splrCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.purchaseItem.splrBatch"
- property={record.splrBatch}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default PurchaseItemPanel;
diff --git a/rsf-admin/src/page/purchaseItem/index.jsx b/rsf-admin/src/page/purchaseItem/index.jsx
deleted file mode 100644
index 022b7ea..0000000
--- a/rsf-admin/src/page/purchaseItem/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import PurchaseItemList from "./PurchaseItemList";
-import PurchaseItemEdit from "./PurchaseItemEdit";
-
-export default {
- list: PurchaseItemList,
- edit: PurchaseItemEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
index d04c3e1..55f78a6 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx
@@ -21,10 +21,10 @@
DeleteButton,
useNotify,
useRedirect,
+ useEditContext,
} from 'react-admin';
import { useWatch, useFormContext } from "react-hook-form";
import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
import EditBaseAside from "../../../components/EditBaseAside";
import CustomerTopToolBar from "../../../components/EditTopToolBar";
@@ -33,17 +33,13 @@
const FormToolbar = () => {
const form = useFormContext();
+ const { record, isPending } = useEditContext();
const redirect = useRedirect();
- const notify = useNotify();
- const onSuccess = (data) => {
- const { dictTypeId, dictTypeCode } = data
- notify(`淇敼鎴愬姛!`);
- redirect(`/dictData?dictTypeId=${dictTypeId}&code=${dictTypeCode}`);
- }
-
return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton type="button" mutationOptions={{ onSuccess }} />
+ <Toolbar sx={{ justifyContent: 'end' }}>
+ <SaveButton type="button" mutationOptions={{onSuccess:() => {
+ redirect('/dictType/' + record?.dictTypeId)
+ } }}/>
<DeleteButton mutationMode="optimistic" />
</Toolbar>
)
@@ -52,17 +48,15 @@
const DictDataEdit = () => {
const translate = useTranslate();
-
return (
<Edit
redirect="list"
+ resource="dictData"
mutationMode={EDIT_MODE}
actions={<CustomerTopToolBar backPrevious={true} />}
aside={<EditBaseAside />}
>
<SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
toolbar={<FormToolbar />}
mode="onTouched"
defaultValues={{}}
@@ -77,8 +71,8 @@
<TextInput
label="table.field.dictData.dictTypeId"
source="dictTypeId"
+ readOnly
parse={v => v}
- autoFocus
validate={required()}
/>
</Stack>
@@ -86,6 +80,7 @@
<TextInput
label="table.field.dictData.dictTypeCode"
source="dictTypeCode"
+ readOnly
parse={v => v}
validate={required()}
/>
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
index 5506184..2b0b618 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx
@@ -31,19 +31,18 @@
ReferenceArrayInput,
AutocompleteInput,
DeleteButton,
+ useGetRecordId,
+ useGetPathForRecord,
+ useGetOne,
} from 'react-admin';
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
import DictDataCreate from "./DictDataCreate";
-import DictDataPanel from "./DictDataPanel";
import EmptyData from "../../../components/EmptyData";
import MyCreateButton from "../../../components/MyCreateButton";
import MyExportButton from '../../../components/MyExportButton';
import PageDrawer from "../../../components/PageDrawer";
-import MyField from "../../../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
-import CustomerTopToolBar from "../../../components/EditTopToolBar";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
@@ -62,14 +61,12 @@
const filters = [
<SearchInput source="condition" alwaysOn />,
-
<TextInput source="dictTypeId" label="table.field.dictData.dictTypeId" />,
<TextInput source="dictTypeCode" label="table.field.dictData.dictTypeCode" />,
<TextInput source="value" label="table.field.dictData.value" />,
<TextInput source="label" label="table.field.dictData.label" />,
<NumberInput source="sort" label="table.field.dictData.sort" />,
// <TextInput source="color" label="table.field.dictData.color" />,
-
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
label="common.field.status"
@@ -84,21 +81,16 @@
const DictDataList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
- const [fit, setFilters] = useState(filters);
- const location = useLocation();
- const queryParams = new URLSearchParams(location.search);
- const dictTypeId = queryParams.get('dictTypeId');
- const dictTypeCode = queryParams.get('code');
-
+ const dictId = useGetRecordId();
+ const {data: dicts, isPending, error} = useGetOne('dictType', {id: dictId});
+
return (
<>
- {dictTypeId && <CustomerTopToolBar backPrevious={true} />}
<Box display="flex" >
-
<List
+ resource="dictData"
sx={{
flexGrow: 1,
transition: (theme) =>
@@ -110,7 +102,7 @@
title={"menu.dictData"}
empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
filters={filters}
- filter={dictTypeId ? { dictTypeId } : undefined}
+ filter={{ dictTypeId: dictId }}
sort={{ field: "create_time", order: "desc" }}
actions={(
<TopToolbar>
@@ -125,7 +117,7 @@
<StyledDatagrid
preferenceKey='dictData'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
+ rowClick="edit"
omit={['id', 'createTime', 'createBy', 'memo']}
>
<NumberField source="id" />
@@ -134,28 +126,22 @@
<TextField source="value" label="table.field.dictData.value" />
<TextField source="label" label="table.field.dictData.label" />
<NumberField source="sort" label="table.field.dictData.sort" />
- {/* <TextField source="color" label="table.field.dictData.color" /> */}
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<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} />
+ <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} />
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} redirect={"/dictType/" + dictId} />
</WrapperField>
</StyledDatagrid>
</List>
<DictDataCreate
open={createDialog}
+ record={dicts}
setOpen={setCreateDialog}
- row={{ dictTypeId, dictTypeCode }}
/>
<PageDrawer
title='DictData Detail'
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx
deleted file mode 100644
index 1f38976..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataPanel.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../../../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const DictDataPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.dictData.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.dictTypeId"
- property={record.dictTypeId$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.dictTypeCode"
- property={record.dictTypeCode}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.value"
- property={record.value}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.label"
- property={record.label}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.sort"
- property={record.sort}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.dictData.color"
- property={record.color}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default DictDataPanel;
diff --git a/rsf-admin/src/page/system/dicts/dictData/index.jsx b/rsf-admin/src/page/system/dicts/dictData/index.jsx
deleted file mode 100644
index 31b11ac..0000000
--- a/rsf-admin/src/page/system/dicts/dictData/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import DictDataList from "./DictDataList";
-import DictDataEdit from "./DictDataEdit";
-
-export default {
- list: DictDataList,
- edit: DictDataEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx b/rsf-admin/src/page/system/dicts/dictType/DictDataCreate.jsx
similarity index 94%
rename from rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
rename to rsf-admin/src/page/system/dicts/dictType/DictDataCreate.jsx
index afc4ea0..058996b 100644
--- a/rsf-admin/src/page/system/dicts/dictData/DictDataCreate.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictDataCreate.jsx
@@ -32,8 +32,7 @@
import MemoInput from "../../../components/MemoInput";
const DictDataCreate = (props) => {
- const { open, setOpen, row } = props;
-
+ const { open, setOpen, record } = props;
const translate = useTranslate();
const notify = useNotify();
@@ -55,6 +54,7 @@
return (
<>
<CreateBase
+ resource="dictData"
record={{}}
transform={(data) => {
return data;
@@ -88,10 +88,10 @@
<TextInput
label="table.field.dictData.dictTypeId"
source="dictTypeId"
+ defaultValue={record?.id}
parse={v => v}
- autoFocus
+ readOnly
validate={required()}
- defaultValue={row.dictTypeId}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -99,8 +99,9 @@
label="table.field.dictData.dictTypeCode"
source="dictTypeCode"
parse={v => v}
+ readOnly
+ defaultValue={record?.code}
validate={required()}
- defaultValue={row.dictTypeCode}
/>
</Grid>
<Grid item xs={6} display="flex" gap={1}>
@@ -115,6 +116,7 @@
<TextInput
label="table.field.dictData.label"
validate={required()}
+ autoFocus
source="label"
parse={v => v}
/>
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictType/DictDataEdit.jsx
new file mode 100644
index 0000000..c80fbfc
--- /dev/null
+++ b/rsf-admin/src/page/system/dicts/dictType/DictDataEdit.jsx
@@ -0,0 +1,163 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Edit,
+ SimpleForm,
+ Form,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+ DeleteButton,
+ useNotify,
+ useRedirect,
+ useEditContext,
+ EditBase,
+} from 'react-admin';
+import { useWatch, useFormContext } from "react-hook-form";
+import { Stack, Grid, Box, Typography, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import DialogCloseButton from "../../../components/DialogCloseButton";
+import EditBaseAside from "../../../components/EditBaseAside";
+import MemoInput from "../../../components/MemoInput";
+import StatusSelectInput from "../../../components/StatusSelectInput";
+
+const EditToolbar = () => {
+ const form = useFormContext();
+ const { record, isPending } = useEditContext();
+ const redirect = useRedirect();
+ return (
+ <Toolbar sx={{ justifyContent: 'end' }}>
+ <SaveButton type="button" mutationOptions={{
+ onSuccess: () => {
+ redirect('/dictType/' + record?.dictTypeId)
+ }
+ }} />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ )
+}
+
+const DictDataEdit = (props) => {
+ const { open, setOpen, record } = props;
+ const translate = useTranslate();
+ const handleClose = (event, reason) => {
+ if (reason !== "backdropClick") {
+ setOpen(false);
+ }
+ };
+ return (
+ <>
+ <Edit
+ id={record?.id}
+ resource="dictData"
+ mutationMode={EDIT_MODE}
+ >
+ <Dialog
+ open={open}
+ onClose={handleClose}
+ aria-labelledby="form-dialog-title"
+ fullWidth
+ disableRestoreFocus
+ maxWidth="md"
+ >
+ <Form>
+ <DialogTitle id="form-dialog-title" sx={{
+ position: 'sticky',
+ top: 0,
+ backgroundColor: 'background.paper',
+ zIndex: 1000
+ }}
+ >
+ {translate('update.title')}
+ <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+ <DialogCloseButton onClose={handleClose} />
+ </Box>
+ </DialogTitle>
+ <DialogContent sx={{ mt: 2 }}>
+ <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={12} md={8}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.dictData.dictTypeId"
+ source="dictTypeId"
+ readOnly
+ defaultValue={record?.id}
+ parse={v => v}
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.dictData.dictTypeCode"
+ source="dictTypeCode"
+ defaultValue={record?.code}
+ readOnly
+ parse={v => v}
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.dictData.value"
+ source="value"
+ parse={v => v}
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.dictData.label"
+ source="label"
+ validate={required()}
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.dictData.sort"
+ source="sort"
+ />
+ </Stack>
+ </Grid>
+ <Grid item xs={12} md={4}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
+ </Grid>
+ </DialogContent>
+ <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
+ <Toolbar sx={{ width: '100%', justifyContent: 'end' }} >
+ <SaveButton type="button" mutationOptions={{
+ onSuccess: () => {
+ setOpen(false)
+ }
+ }} />
+ </Toolbar>
+ </DialogActions>
+ </Form>
+ </Dialog>
+ </Edit >
+ </>
+ )
+}
+
+export default DictDataEdit;
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx
new file mode 100644
index 0000000..c039b96
--- /dev/null
+++ b/rsf-admin/src/page/system/dicts/dictType/DictDataList.jsx
@@ -0,0 +1,173 @@
+import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
+import { useNavigate, useLocation } from 'react-router-dom';
+import {
+ List,
+ DatagridConfigurable,
+ SearchInput,
+ TopToolbar,
+ SelectColumnsButton,
+ EditButton,
+ FilterButton,
+ CreateButton,
+ ExportButton,
+ BulkDeleteButton,
+ WrapperField,
+ useRecordContext,
+ useTranslate,
+ useNotify,
+ useListContext,
+ FunctionField,
+ TextField,
+ NumberField,
+ DateField,
+ BooleanField,
+ ReferenceField,
+ TextInput,
+ DateTimeInput,
+ DateInput,
+ SelectInput,
+ NumberInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ DeleteButton,
+ useGetRecordId,
+ useGetPathForRecord,
+ useGetOne,
+ Button,
+} from 'react-admin';
+import { Box, Typography, Card, Stack } from '@mui/material';
+import { styled } from '@mui/material/styles';
+import DictDataCreate from "./DictDataCreate";
+import EmptyData from "../../../components/EmptyData";
+import MyCreateButton from "../../../components/MyCreateButton";
+import MyExportButton from '../../../components/MyExportButton';
+import PageDrawer from "../../../components/PageDrawer";
+import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
+import DictDataEdit from "./DictDataEdit";
+import { use } from "react";
+
+
+const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
+ '& .css-1vooibu-MuiSvgIcon-root': {
+ height: '.9em'
+ },
+ '& .RaDatagrid-row': {
+ cursor: 'auto'
+ },
+ '& .column-name': {
+ },
+ '& .opt': {
+ width: 200
+ },
+}));
+
+const filters = [
+ <SearchInput source="condition" alwaysOn />,
+ <TextInput source="dictTypeId" label="table.field.dictData.dictTypeId" />,
+ <TextInput source="dictTypeCode" label="table.field.dictData.dictTypeCode" />,
+ <TextInput source="value" label="table.field.dictData.value" />,
+ <TextInput source="label" label="table.field.dictData.label" />,
+ <NumberInput source="sort" label="table.field.dictData.sort" />,
+ // <TextInput source="color" label="table.field.dictData.color" />,
+ <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 DictDataList = () => {
+ const translate = useTranslate();
+ const [createDialog, setCreateDialog] = useState(false);
+ const [editDialog, setEditDialog] = useState(false);
+ const [drawerVal, setDrawerVal] = useState(false);
+ const [select, setSelect] = useState({});
+ const dictId = useGetRecordId();
+ const { data: dicts, isPending, error } = useGetOne('dictType', { id: dictId });
+
+ return (
+ <>
+ <Box display="flex" >
+ <List
+ resource="dictData"
+ sx={{
+ flexGrow: 1,
+ transition: (theme) =>
+ theme.transitions.create(['all'], {
+ duration: theme.transitions.duration.enteringScreen,
+ }),
+ marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
+ }}
+ title={"menu.dictData"}
+ empty={<EmptyData onClick={() => { setCreateDialog(true) }} />}
+ filters={filters}
+ filter={{ dictTypeId: dictId }}
+ sort={{ field: "create_time", order: "desc" }}
+ actions={(
+ <TopToolbar>
+ <FilterButton />
+ <MyCreateButton onClick={() => { setCreateDialog(true) }} />
+ <SelectColumnsButton preferenceKey='dictData' />
+ <MyExportButton />
+ </TopToolbar>
+ )}
+ perPage={DEFAULT_PAGE_SIZE}
+ >
+ <StyledDatagrid
+ bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
+ rowClick={(id, resource ,record)=> {
+ setSelect(record)
+ setEditDialog(true)
+ }}
+ omit={['id', 'createTime', 'createBy', 'memo']}
+ >
+ <NumberField source="id" />
+ <TextField source="dictTypeId" label="table.field.dictData.dictTypeId" />
+ <TextField source="dictTypeCode" label="table.field.dictData.dictTypeCode" />
+ <TextField source="value" label="table.field.dictData.value" />
+ <TextField source="label" label="table.field.dictData.label" />
+ <NumberField source="sort" label="table.field.dictData.sort" />
+ <TextField source="updateBy$" label="common.field.updateBy" />
+ <DateField source="updateTime" label="common.field.updateTime" showTime />
+ <TextField source="createBy$" label="common.field.createBy" />
+ <DateField source="createTime" label="common.field.createTime" showTime />
+ <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' }} type="button" redirect={"/dictType/" + dictId} onClick={()=> {
+ setEditDialog(true)
+ }} /> */}
+ <Button onClick={()=>{setEditDialog(true)}}>缂栬緫</Button>
+ <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode='pessimistic' redirect={"/dictType/" + dictId} />
+ </WrapperField>
+ </StyledDatagrid>
+ </List>
+ <DictDataEdit
+ open={editDialog}
+ record={select}
+ setOpen={setEditDialog}
+ />
+ <DictDataCreate
+ open={createDialog}
+ record={dicts}
+ setOpen={setCreateDialog}
+ />
+ <PageDrawer
+ title='DictData Detail'
+ drawerVal={drawerVal}
+ setDrawerVal={setDrawerVal}
+ >
+ </PageDrawer>
+ </Box>
+ </>
+
+ )
+}
+
+export default DictDataList;
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
index 8acd215..0a31d6f 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeCreate.jsx
@@ -33,10 +33,8 @@
const DictTypeCreate = (props) => {
const { open, setOpen } = props;
-
const translate = useTranslate();
const notify = useNotify();
-
const handleClose = (event, reason) => {
if (reason !== "backdropClick") {
setOpen(false);
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
index 6155c7b..c9905f0 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeEdit.jsx
@@ -28,11 +28,13 @@
import CustomerTopToolBar from "../../../components/EditTopToolBar";
import MemoInput from "../../../components/MemoInput";
import StatusSelectInput from "../../../components/StatusSelectInput";
+import DictDataEdit from "./DictDataEdit";
+import DictDataList from "./DictDataList";
const FormToolbar = () => {
const { getValues } = useFormContext();
return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
+ <Toolbar sx={{ justifyContent: 'end' }}>
<SaveButton />
<DeleteButton mutationMode="optimistic" />
</Toolbar>
@@ -41,61 +43,51 @@
const DictTypeEdit = () => {
const translate = useTranslate();
-
return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
+ <>
+ <Edit
+ redirect="list"
+ mutationMode={EDIT_MODE}
+ actions={<CustomerTopToolBar />}
+ aside={<EditBaseAside />}
>
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.dictType.code"
- source="code"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.dictType.name"
- source="name"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.dictType.description"
- source="description"
- parse={v => v}
- />
- </Stack>
-
+ <SimpleForm
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ // validate={(values) => { }}
+ >
+ <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={14} md={10}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.dictType.code"
+ readOnly
+ source="code"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.dictType.name"
+ source="name"
+ parse={v => v}
+ />
+ <TextInput
+ label="table.field.dictType.description"
+ source="description"
+ parse={v => v}
+ />
+ </Stack>
+ </Grid>
</Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
+ </SimpleForm>
+ </Edit >
+ <DictDataList />
+ </>
)
}
diff --git a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
index e7d18bd..e5b7332 100644
--- a/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/DictTypeList.jsx
@@ -35,14 +35,10 @@
import { Box, Typography, Card, Stack } from '@mui/material';
import { styled } from '@mui/material/styles';
import DictTypeCreate from "./DictTypeCreate";
-import DictTypePanel from "./DictTypePanel";
import EmptyData from "../../../components/EmptyData";
import MyCreateButton from "../../../components/MyCreateButton";
import MyExportButton from '../../../components/MyExportButton';
-import PageDrawer from "../../../components/PageDrawer";
-import MyField from "../../../components/MyField";
import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting';
-import * as Common from '@/utils/common';
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
'& .css-1vooibu-MuiSvgIcon-root': {
@@ -62,11 +58,9 @@
<SearchInput source="condition" alwaysOn />,
<DateInput label='common.time.after' source="timeStart" alwaysOn />,
<DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
<TextInput source="code" label="table.field.dictType.code" />,
<TextInput source="name" label="table.field.dictType.name" />,
<TextInput source="description" label="table.field.dictType.description" />,
-
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
label="common.field.status"
@@ -81,15 +75,8 @@
const DictTypeList = () => {
const translate = useTranslate();
-
const [createDialog, setCreateDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
-
- const navigate = useNavigate();
- const assign = (record) => {
- navigate(`/dictData?dictTypeId=${record.id}&code=${record.code}`);
- }
-
return (
<Box display="flex">
<List
@@ -118,26 +105,21 @@
<StyledDatagrid
preferenceKey='dictType'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
- rowClick={(id, resource, record) => false}
+ rowClick={'edit'}
omit={['id', 'createTime', 'createBy', 'memo']}
>
<NumberField source="id" />
- <MyField source="code" label="table.field.dictType.code"
- onClick={(event, record, val) => {
- event.stopPropagation();
- assign(record);
- }}
+ <TextField source="code" label="table.field.dictType.code"
+ // onClick={(event, record, val) => {
+ // event.stopPropagation();
+ // assign(record);
+ // }}
/>
<TextField source="name" label="table.field.dictType.name" />
<TextField source="description" label="table.field.dictType.description" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-admin/src/page/system/dicts/dictType/index.jsx b/rsf-admin/src/page/system/dicts/dictType/index.jsx
index 7dc7dcb..b0f025e 100644
--- a/rsf-admin/src/page/system/dicts/dictType/index.jsx
+++ b/rsf-admin/src/page/system/dicts/dictType/index.jsx
@@ -11,7 +11,7 @@
export default {
list: DictTypeList,
edit: DictTypeEdit,
- show: ShowGuesser,
+ // show: ShowGuesser,
recordRepresentation: (record) => {
return `${record.name}`
}
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
deleted file mode 100644
index c3d15cc..0000000
--- a/rsf-admin/src/page/system/serialRule/SerialRuleDetail.jsx
+++ /dev/null
@@ -1,90 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from "react-admin";
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from "@mui/material";
-import DialogCloseButton from "../../components/DialogCloseButton";
-import SerialRuleItem from "../serialRuleItem/index";
-
-const SerialRuleDetail = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify("common.response.success");
- };
-
- const handleError = async (error) => {
- notify(error.message || "common.response.fail", {
- type: "error",
- messageArgs: { _: error.message },
- });
- };
-
- return (
- <>
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="xl" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <DialogTitle
- id="form-dialog-title"
- sx={{
- position: "sticky",
- top: 0,
- backgroundColor: "background.paper",
- zIndex: 1000,
- }}
- >
- {translate("create.title")}
- <Box sx={{ position: "absolute", top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
-
- <DialogContent sx={{ mt: 2 }}>
- <SerialRuleItem.list />
- </DialogContent>
- </Dialog>
- </>
- );
-};
-
-export default SerialRuleDetail;
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleItemEdit.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleItemEdit.jsx
new file mode 100644
index 0000000..ca3b86c
--- /dev/null
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleItemEdit.jsx
@@ -0,0 +1,158 @@
+import React, { useState, useRef, useEffect, useMemo } from "react";
+import {
+ Edit,
+ Form,
+ SimpleForm,
+ FormDataConsumer,
+ useTranslate,
+ TextInput,
+ NumberInput,
+ BooleanInput,
+ DateInput,
+ SelectInput,
+ ReferenceInput,
+ ReferenceArrayInput,
+ AutocompleteInput,
+ SaveButton,
+ Toolbar,
+ Labeled,
+ NumberField,
+ required,
+ useRecordContext,
+ DeleteButton,
+} from 'react-admin';
+import { useWatch, useFormContext } from "react-hook-form";
+import { Stack, Grid, Box, Typography, Dialog, DialogContent, DialogTitle, DialogActions } from '@mui/material';
+import * as Common from '@/utils/common';
+import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
+import EditBaseAside from "../../components/EditBaseAside";
+import DialogCloseButton from "../../components/DialogCloseButton";
+import CustomerTopToolBar from "../../components/EditTopToolBar";
+import MemoInput from "../../components/MemoInput";
+import StatusSelectInput from "../../components/StatusSelectInput";
+
+const FormToolbar = () => {
+ const { getValues } = useFormContext();
+
+ return (
+ <Toolbar sx={{ justifyContent: 'space-between' }}>
+ <SaveButton />
+ <DeleteButton mutationMode="optimistic" />
+ </Toolbar>
+ )
+}
+
+const SerialRuleItemEdit = (props) => {
+ const { open, setOpen, record } = props;
+ const translate = useTranslate();
+ const handleClose = (event, reason) => {
+ if (reason !== "backdropClick") {
+ setOpen(false);
+ }
+ };
+ return (
+ <Edit
+ id={record.id}
+ redirect="list"
+ resource="serialRuleItem"
+ mutationMode={EDIT_MODE}
+ >
+ <Dialog
+ open={open}
+ onClose={handleClose}
+ aria-labelledby="form-dialog-title"
+ fullWidth
+ disableRestoreFocus
+ maxWidth="md"
+ >
+ <Form
+ shouldUnregister
+ warnWhenUnsavedChanges
+ toolbar={<FormToolbar />}
+ mode="onTouched"
+ defaultValues={{}}
+ >
+ <DialogTitle id="form-dialog-title" sx={{
+ position: 'sticky',
+ top: 0,
+ backgroundColor: 'background.paper',
+ zIndex: 1000
+ }}
+ >
+ {translate('update.title')}
+ <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
+ <DialogCloseButton onClose={handleClose} />
+ </Box>
+ </DialogTitle>
+ <DialogContent>
+ <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
+ <Grid item xs={12} md={8}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.main')}
+ </Typography>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.serialRuleItem.ruleId"
+ source="ruleId"
+ readOnly
+ autoFocus
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.serialRuleItem.wkType"
+ source="wkType$"
+ readOnly
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <TextInput
+ label="table.field.serialRuleItem.feildValue"
+ source="feildValue"
+ parse={v => v}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.serialRuleItem.len"
+ source="len"
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.serialRuleItem.lenStr"
+ source="lenStr"
+ validate={required()}
+ />
+ </Stack>
+ <Stack direction='row' gap={2}>
+ <NumberInput
+ label="table.field.serialRuleItem.sort"
+ source="sort"
+ validate={required()}
+ />
+ </Stack>
+
+ </Grid>
+ <Grid item xs={12} md={4}>
+ <Typography variant="h6" gutterBottom>
+ {translate('common.edit.title.common')}
+ </Typography>
+ <StatusSelectInput />
+ <Box mt="2em" />
+ <MemoInput />
+ </Grid>
+ </Grid>
+ </DialogContent>
+ <DialogActions>
+
+ </DialogActions>
+ </Form>
+
+ </Dialog>
+ </Edit >
+ )
+}
+
+export default SerialRuleItemEdit;
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
index c99a1bc..d21dae8 100644
--- a/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleItemList.jsx
@@ -38,6 +38,7 @@
AutocompleteInput,
DeleteButton,
useGetRecordId,
+ Button,
} from "react-admin";
import { Box, Typography, Card, Stack } from "@mui/material";
import { styled } from "@mui/material/styles";
@@ -54,6 +55,7 @@
} from "@/config/setting";
import * as Common from "@/utils/common";
import CustomerTopToolBar from "../../components/EditTopToolBar";
+import SerialRuleItemEdit from "./SerialRuleItemEdit";
const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
"& .css-1vooibu-MuiSvgIcon-root": {
@@ -93,7 +95,9 @@
const SerialRuleItemList = () => {
const translate = useTranslate();
const [createDialog, setCreateDialog] = useState(false);
+ const [editDialog, setEditDialog] = useState(false);
const [drawerVal, setDrawerVal] = useState(false);
+ const [select, setSelect] = useState({});
const ruleId = useGetRecordId();
return (
@@ -110,13 +114,7 @@
marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
}}
title={"menu.serialRuleItem"}
- empty={
- <EmptyData
- onClick={() => {
- setCreateDialog(true);
- }}
- />
- }
+ empty={false}
filters={filters}
filter={{ ruleId: ruleId }}
sort={{ field: "create_time", order: "desc" }}
@@ -139,7 +137,10 @@
bulkActionButtons={() => (
<BulkDeleteButton mutationMode={OPERATE_MODE} />
)}
- rowClick={false}
+ rowClick={(id, resource, record) => {
+ setSelect(record)
+ setEditDialog(true)
+ }}
omit={["id", "createTime", "createBy", "memo"]}
>
<NumberField source="id" />
@@ -164,29 +165,19 @@
source="sort"
label="table.field.serialRuleItem.sort"
/>
- <ReferenceField
- source="updateBy"
+ <TextField
+ source="updateBy$"
label="common.field.updateBy"
- reference="user"
- link={false}
- sortable={false}
- >
- <TextField source="nickname" />
- </ReferenceField>
+ />
<DateField
source="updateTime"
label="common.field.updateTime"
showTime
/>
- <ReferenceField
- source="createBy"
+ <TextField
+ source="createBy$"
label="common.field.createBy"
- reference="user"
- link={false}
- sortable={false}
- >
- <TextField source="nickname" />
- </ReferenceField>
+ />
<DateField
source="createTime"
label="common.field.createTime"
@@ -203,15 +194,21 @@
sortable={false}
/>
<WrapperField cellClassName="opt" label="common.field.opt">
- <EditButton sx={{ padding: "1px", fontSize: ".75rem" }} />
+ <Button onClick={() => {
+ setSelect(re)
+ setEditDialog(true)
+ }} label={'ra.action.edit'}
+ > </Button>
<DeleteButton
sx={{ padding: "1px", fontSize: ".75rem" }}
mutationMode={OPERATE_MODE}
+ redirect={'/serialRule/' + ruleId}
/>
</WrapperField>
</StyledDatagrid>
</List>
<SerialRuleItemCreate open={createDialog} setOpen={setCreateDialog} />
+ <SerialRuleItemEdit open={editDialog} setOpen={setEditDialog} record={select} />
<PageDrawer
title="SerialRuleItem Detail"
drawerVal={drawerVal}
diff --git a/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx b/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
index 8b4c623..d7a19a9 100644
--- a/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
+++ b/rsf-admin/src/page/system/serialRule/SerialRuleList.jsx
@@ -41,8 +41,6 @@
import { Box, Typography, Card, Stack } from "@mui/material";
import { styled } from "@mui/material/styles";
import SerialRuleCreate from "./SerialRuleCreate";
-import SerialRuleDetail from "./SerialRuleDetail";
-import SerialRulePanel from "./SerialRulePanel";
import EmptyData from "../../components/EmptyData";
import MyCreateButton from "../../components/MyCreateButton";
import MyExportButton from "../../components/MyExportButton";
@@ -79,7 +77,6 @@
<TextInput source="resetDep" label="table.field.serialRule.resetDep" />,
<TextInput source="currValue" label="table.field.serialRule.currValue" />,
<TextInput source="lastCode" label="table.field.serialRule.lastCode" />,
-
<TextInput label="common.field.memo" source="memo" />,
<SelectInput
label="common.field.status"
@@ -165,29 +162,19 @@
label="table.field.serialRule.lastCode"
/>
- <ReferenceField
- source="updateBy"
+ <TextField
+ source="updateBy$"
label="common.field.updateBy"
- reference="user"
- link={false}
- sortable={false}
- >
- <TextField source="nickname" />
- </ReferenceField>
+ />
<DateField
source="updateTime"
label="common.field.updateTime"
showTime
/>
- <ReferenceField
- source="createBy"
+ <TextField
+ source="createBy$"
label="common.field.createBy"
- reference="user"
- link={false}
- sortable={false}
- >
- <TextField source="nickname" />
- </ReferenceField>
+ />
<DateField
source="createTime"
label="common.field.createTime"
@@ -209,7 +196,7 @@
</StyledDatagrid>
</List>
<SerialRuleCreate open={createDialog} setOpen={setCreateDialog} />
- <SerialRuleDetail open={detailDialog} setOpen={setDetailDialog} />
+ {/* <SerialRuleDetail open={detailDialog} setOpen={setDetailDialog} /> */}
<PageDrawer
title="SerialRule Detail"
drawerVal={drawerVal}
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx
deleted file mode 100644
index f51326e..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemCreate.jsx
+++ /dev/null
@@ -1,151 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- CreateBase,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SaveButton,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- Toolbar,
- required,
- useDataProvider,
- useNotify,
- Form,
- useCreateController,
-} from 'react-admin';
-import {
- Dialog,
- DialogActions,
- DialogContent,
- DialogTitle,
- Stack,
- Grid,
- Box,
-} from '@mui/material';
-import DialogCloseButton from "../../components/DialogCloseButton";
-import StatusSelectInput from "../../components/StatusSelectInput";
-import MemoInput from "../../components/MemoInput";
-
-const SerialRuleItemCreate = (props) => {
- const { open, setOpen } = props;
-
- const translate = useTranslate();
- const notify = useNotify();
-
- const handleClose = (event, reason) => {
- if (reason !== "backdropClick") {
- setOpen(false);
- }
- };
-
- const handleSuccess = async (data) => {
- setOpen(false);
- notify('common.response.success');
- };
-
- const handleError = async (error) => {
- notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
- };
-
- return (
- <>
- <CreateBase
- record={{}}
- transform={(data) => {
- return data;
- }}
- mutationOptions={{ onSuccess: handleSuccess, onError: handleError }}
- >
- <Dialog
- open={open}
- onClose={handleClose}
- aria-labelledby="form-dialog-title"
- fullWidth
- disableRestoreFocus
- maxWidth="md" // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
- >
- <Form>
- <DialogTitle id="form-dialog-title" sx={{
- position: 'sticky',
- top: 0,
- backgroundColor: 'background.paper',
- zIndex: 1000
- }}
- >
- {translate('create.title')}
- <Box sx={{ position: 'absolute', top: 8, right: 8, zIndex: 1001 }}>
- <DialogCloseButton onClose={handleClose} />
- </Box>
- </DialogTitle>
- <DialogContent sx={{ mt: 2 }}>
- <Grid container rowSpacing={2} columnSpacing={2}>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.serialRuleItem.ruleId"
- source="ruleId"
- autoFocus
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.serialRuleItem.wkType"
- source="wkType"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <TextInput
- label="table.field.serialRuleItem.feildValue"
- source="feildValue"
- parse={v => v}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.serialRuleItem.len"
- source="len"
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.serialRuleItem.lenStr"
- source="lenStr"
- validate={required()}
- />
- </Grid>
- <Grid item xs={6} display="flex" gap={1}>
- <NumberInput
- label="table.field.serialRuleItem.sort"
- source="sort"
- validate={required()}
- />
- </Grid>
-
- <Grid item xs={6} display="flex" gap={1}>
- <StatusSelectInput />
- </Grid>
- <Grid item xs={12} display="flex" gap={1}>
- <Stack direction="column" spacing={1} width={'100%'}>
- <MemoInput />
- </Stack>
- </Grid>
- </Grid>
- </DialogContent>
- <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
- <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} >
- <SaveButton />
- </Toolbar>
- </DialogActions>
- </Form>
- </Dialog>
- </CreateBase>
- </>
- )
-}
-
-export default SerialRuleItemCreate;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx
deleted file mode 100644
index ecd5ba0..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemEdit.jsx
+++ /dev/null
@@ -1,123 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- Edit,
- SimpleForm,
- FormDataConsumer,
- useTranslate,
- TextInput,
- NumberInput,
- BooleanInput,
- DateInput,
- SelectInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- SaveButton,
- Toolbar,
- Labeled,
- NumberField,
- required,
- useRecordContext,
- DeleteButton,
-} from 'react-admin';
-import { useWatch, useFormContext } from "react-hook-form";
-import { Stack, Grid, Box, Typography } from '@mui/material';
-import * as Common from '@/utils/common';
-import { EDIT_MODE, REFERENCE_INPUT_PAGESIZE } from '@/config/setting';
-import EditBaseAside from "../../components/EditBaseAside";
-import CustomerTopToolBar from "../../components/EditTopToolBar";
-import MemoInput from "../../components/MemoInput";
-import StatusSelectInput from "../../components/StatusSelectInput";
-
-const FormToolbar = () => {
- const { getValues } = useFormContext();
-
- return (
- <Toolbar sx={{ justifyContent: 'space-between' }}>
- <SaveButton />
- <DeleteButton mutationMode="optimistic" />
- </Toolbar>
- )
-}
-
-const SerialRuleItemEdit = () => {
- const translate = useTranslate();
-
- return (
- <Edit
- redirect="list"
- mutationMode={EDIT_MODE}
- actions={<CustomerTopToolBar />}
- aside={<EditBaseAside />}
- >
- <SimpleForm
- shouldUnregister
- warnWhenUnsavedChanges
- toolbar={<FormToolbar />}
- mode="onTouched"
- defaultValues={{}}
- // validate={(values) => { }}
- >
- <Grid container width={{ xs: '100%', xl: '80%' }} rowSpacing={3} columnSpacing={3}>
- <Grid item xs={12} md={8}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.main')}
- </Typography>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.serialRuleItem.ruleId"
- source="ruleId"
- autoFocus
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.serialRuleItem.wkType"
- source="wkType"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <TextInput
- label="table.field.serialRuleItem.feildValue"
- source="feildValue"
- parse={v => v}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.serialRuleItem.len"
- source="len"
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.serialRuleItem.lenStr"
- source="lenStr"
- validate={required()}
- />
- </Stack>
- <Stack direction='row' gap={2}>
- <NumberInput
- label="table.field.serialRuleItem.sort"
- source="sort"
- validate={required()}
- />
- </Stack>
-
- </Grid>
- <Grid item xs={12} md={4}>
- <Typography variant="h6" gutterBottom>
- {translate('common.edit.title.common')}
- </Typography>
- <StatusSelectInput />
- <Box mt="2em" />
- <MemoInput />
- </Grid>
- </Grid>
- </SimpleForm>
- </Edit >
- )
-}
-
-export default SerialRuleItemEdit;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx
deleted file mode 100644
index 703190d..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemList.jsx
+++ /dev/null
@@ -1,234 +0,0 @@
-import React, {
- useState,
- useRef,
- useEffect,
- useMemo,
- useCallback,
-} from "react";
-import { useNavigate, useLocation } from "react-router-dom";
-import {
- List,
- DatagridConfigurable,
- SearchInput,
- TopToolbar,
- SelectColumnsButton,
- EditButton,
- FilterButton,
- CreateButton,
- ExportButton,
- BulkDeleteButton,
- WrapperField,
- useRecordContext,
- useTranslate,
- useNotify,
- useListContext,
- FunctionField,
- TextField,
- NumberField,
- DateField,
- BooleanField,
- ReferenceField,
- TextInput,
- DateTimeInput,
- DateInput,
- SelectInput,
- NumberInput,
- ReferenceInput,
- ReferenceArrayInput,
- AutocompleteInput,
- DeleteButton,
-} from "react-admin";
-import { Box, Typography, Card, Stack } from "@mui/material";
-import { styled } from "@mui/material/styles";
-import SerialRuleItemCreate from "./SerialRuleItemCreate";
-import SerialRuleItemPanel from "./SerialRuleItemPanel";
-import EmptyData from "../../components/EmptyData";
-import MyCreateButton from "../../components/MyCreateButton";
-import MyExportButton from "../../components/MyExportButton";
-import PageDrawer from "../../components/PageDrawer";
-import MyField from "../../components/MyField";
-import {
- PAGE_DRAWER_WIDTH,
- OPERATE_MODE,
- DEFAULT_PAGE_SIZE,
-} from "@/config/setting";
-import * as Common from "@/utils/common";
-import CustomerTopToolBar from "../../components/EditTopToolBar";
-
-const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({
- "& .css-1vooibu-MuiSvgIcon-root": {
- height: ".9em",
- },
- "& .RaDatagrid-row": {
- cursor: "auto",
- },
- "& .column-name": {},
- "& .opt": {
- width: 200,
- },
-}));
-
-const filters = [
- <SearchInput source="condition" alwaysOn />,
- <DateInput label="common.time.after" source="timeStart" alwaysOn />,
- <DateInput label="common.time.before" source="timeEnd" alwaysOn />,
-
- <NumberInput source="ruleId" label="table.field.serialRuleItem.ruleId" />,
- <TextInput source="wkType" label="table.field.serialRuleItem.wkType" />,
- <TextInput
- source="feildValue"
- label="table.field.serialRuleItem.feildValue"
- />,
- <NumberInput source="len" label="table.field.serialRuleItem.len" />,
- <NumberInput source="lenStr" label="table.field.serialRuleItem.lenStr" />,
- <NumberInput source="sort" label="table.field.serialRuleItem.sort" />,
-
- <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 SerialRuleItemList = () => {
- const translate = useTranslate();
- const [createDialog, setCreateDialog] = useState(false);
- const [drawerVal, setDrawerVal] = useState(false);
-
- const location = useLocation();
- const queryParams = new URLSearchParams(location.search);
- const ruleId = queryParams.get("ruleId");
-
- return (
- <>
- {ruleId && <CustomerTopToolBar backPrevious={true} />}
- <Box display="flex">
- <List
- sx={{
- flexGrow: 1,
- transition: (theme) =>
- theme.transitions.create(["all"], {
- duration: theme.transitions.duration.enteringScreen,
- }),
- marginRight: drawerVal ? `${PAGE_DRAWER_WIDTH}px` : 0,
- }}
- title={"menu.serialRuleItem"}
- empty={
- <EmptyData
- onClick={() => {
- setCreateDialog(true);
- }}
- />
- }
- filters={filters}
- filter={ruleId ? { ruleId } : undefined}
- sort={{ field: "create_time", order: "desc" }}
- actions={
- <TopToolbar>
- <FilterButton />
- <MyCreateButton
- onClick={() => {
- setCreateDialog(true);
- }}
- />
- <SelectColumnsButton preferenceKey="serialRuleItem" />
- <MyExportButton />
- </TopToolbar>
- }
- perPage={DEFAULT_PAGE_SIZE}
- >
- <StyledDatagrid
- preferenceKey="serialRuleItem"
- bulkActionButtons={() => (
- <BulkDeleteButton mutationMode={OPERATE_MODE} />
- )}
- rowClick={(id, resource, record) => false}
- omit={["id", "createTime", "createBy", "memo"]}
- >
- <NumberField source="id" />
- <NumberField
- source="ruleId"
- label="table.field.serialRuleItem.ruleId"
- />
- <TextField
- source="wkType"
- label="table.field.serialRuleItem.wkType"
- />
- <TextField
- source="feildValue"
- label="table.field.serialRuleItem.feildValue"
- />
- <NumberField source="len" label="table.field.serialRuleItem.len" />
- <NumberField
- source="lenStr"
- label="table.field.serialRuleItem.lenStr"
- />
- <NumberField
- source="sort"
- label="table.field.serialRuleItem.sort"
- />
-
- <ReferenceField
- source="updateBy"
- label="common.field.updateBy"
- reference="user"
- link={false}
- sortable={false}
- >
- <TextField source="nickname" />
- </ReferenceField>
- <DateField
- source="updateTime"
- label="common.field.updateTime"
- showTime
- />
- <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
- />
- <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>
- </StyledDatagrid>
- </List>
- <SerialRuleItemCreate open={createDialog} setOpen={setCreateDialog} />
- <PageDrawer
- title="SerialRuleItem Detail"
- drawerVal={drawerVal}
- setDrawerVal={setDrawerVal}
- ></PageDrawer>
- </Box>
- </>
- );
-};
-
-export default SerialRuleItemList;
diff --git a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx b/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx
deleted file mode 100644
index 47d94ce..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/SerialRuleItemPanel.jsx
+++ /dev/null
@@ -1,87 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import { Box, Card, CardContent, Grid, Typography, Tooltip } from '@mui/material';
-import {
- useTranslate,
- useRecordContext,
-} from 'react-admin';
-import PanelTypography from "../../components/PanelTypography";
-import * as Common from '@/utils/common'
-
-const SerialRuleItemPanel = () => {
- const record = useRecordContext();
- if (!record) return null;
- const translate = useTranslate();
- return (
- <>
- <Card sx={{ width: { xs: 300, sm: 500, md: 600, lg: 800 }, margin: 'auto' }}>
- <CardContent>
- <Grid container spacing={2}>
- <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'space-between' }}>
- <Typography variant="h6" gutterBottom align="left" sx={{
- maxWidth: { xs: '100px', sm: '180px', md: '260px', lg: '360px' },
- whiteSpace: 'nowrap',
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- }}>
- {Common.camelToPascalWithSpaces(translate('table.field.serialRuleItem.id'))}: {record.id}
- </Typography>
- {/* inherit, primary, secondary, textPrimary, textSecondary, error */}
- <Typography variant="h6" gutterBottom align="right" >
- ID: {record.id}
- </Typography>
- </Grid>
- </Grid>
- <Grid container spacing={2}>
- <Grid item xs={12} container alignContent="flex-end">
- <Typography variant="caption" color="textSecondary" sx={{ wordWrap: 'break-word', wordBreak: 'break-all' }}>
- {Common.camelToPascalWithSpaces(translate('common.field.memo'))}:{record.memo}
- </Typography>
- </Grid>
- </Grid>
- <Box height={20}> </Box>
- <Grid container spacing={2}>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.ruleId"
- property={record.ruleId}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.wkType"
- property={record.wkType$}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.feildValue"
- property={record.feildValue}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.len"
- property={record.len}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.lenStr"
- property={record.lenStr}
- />
- </Grid>
- <Grid item xs={6}>
- <PanelTypography
- title="table.field.serialRuleItem.sort"
- property={record.sort}
- />
- </Grid>
-
- </Grid>
- </CardContent>
- </Card >
- </>
- );
-};
-
-export default SerialRuleItemPanel;
diff --git a/rsf-admin/src/page/system/serialRuleItem/index.jsx b/rsf-admin/src/page/system/serialRuleItem/index.jsx
deleted file mode 100644
index d7a3bde..0000000
--- a/rsf-admin/src/page/system/serialRuleItem/index.jsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { useState, useRef, useEffect, useMemo } from "react";
-import {
- ListGuesser,
- EditGuesser,
- ShowGuesser,
-} from "react-admin";
-
-import SerialRuleItemList from "./SerialRuleItemList";
-import SerialRuleItemEdit from "./SerialRuleItemEdit";
-
-export default {
- list: SerialRuleItemList,
- edit: SerialRuleItemEdit,
- show: ShowGuesser,
- recordRepresentation: (record) => {
- return `${record.id}`
- }
-};
diff --git a/rsf-admin/src/page/taskLog/TaskItemLogList.jsx b/rsf-admin/src/page/taskLog/TaskItemLogList.jsx
index acf1ae7..8659c06 100644
--- a/rsf-admin/src/page/taskLog/TaskItemLogList.jsx
+++ b/rsf-admin/src/page/taskLog/TaskItemLogList.jsx
@@ -57,7 +57,6 @@
<SearchInput source="condition" alwaysOn />,
<DateInput label='common.time.after' source="timeStart" alwaysOn />,
<DateInput label='common.time.before' source="timeEnd" alwaysOn />,
-
<NumberInput source="taskItemId" label="table.field.taskItemLog.taskItemId" />,
<NumberInput source="taskId" label="table.field.taskItemLog.taskId" />,
<NumberInput source="orderId" label="table.field.taskItemLog.orderId" />,
diff --git a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
index 21bc154..b1a0a68 100644
--- a/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
+++ b/rsf-admin/src/page/warehouseAreasItem/WarehouseAreasItemList.jsx
@@ -127,13 +127,13 @@
preferenceKey='warehouseAreasItem'
bulkActionButtons={() => <BulkDeleteButton mutationMode={OPERATE_MODE} />}
rowClick={(id, resource, record) => false}
- omit={['id', 'createTime', 'createBy', 'memo', 'areaId', 'matnrId']}
+ omit={['id', 'createTime', 'createBy', 'memo', 'areaId', 'matnrId', 'batch', 'shipperId', 'splrId']}
>
<NumberField source="id" />
<NumberField source="areaId" label="table.field.warehouseAreasItem.areaId" />
<TextField source="areaName" label="table.field.warehouseAreasItem.areaName" />
<NumberField source="matnrId" label="table.field.warehouseAreasItem.matnrId" />
- <TextField source="matnrName" label="table.field.warehouseAreasItem.matnrName" />
+ <TextField source="maktx" label="table.field.warehouseAreasItem.matnrName" />
<TextField source="matnrCode" label="table.field.warehouseAreasItem.matnrCode" />
<TextField source="trackCode" label="table.field.warehouseAreasItem.barcode" />
<NumberField source="anfme" label="table.field.warehouseAreasItem.anfme" />
@@ -148,14 +148,9 @@
<NumberField source="weight" label="table.field.warehouseAreasItem.weight" />
<TextField source="prodTime" label="table.field.warehouseAreasItem.prodTime" />
<TextField source="splrBtch" label="table.field.warehouseAreasItem.splrBtch" />
-
- <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="updateBy$" label="common.field.updateBy" />
<DateField source="updateTime" label="common.field.updateTime" showTime />
- <ReferenceField source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}>
- <TextField source="nickname" />
- </ReferenceField>
+ <TextField source="createBy$" label="common.field.createBy" />
<DateField source="createTime" label="common.field.createTime" showTime />
<BooleanField source="statusBool" label="common.field.status" sortable={false} />
<TextField source="memo" label="common.field.memo" sortable={false} />
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
index 43131e0..5f6e0c4 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/utils/ExcelUtil.java
@@ -14,6 +14,7 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -44,7 +45,7 @@
}
public static <T> Workbook create(List<T> list, Class<T> clz, boolean flagTemplate) {
- HSSFWorkbook workbook = new HSSFWorkbook();
+ XSSFWorkbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet(clz.getSimpleName());
Row header = sheet.createRow(0);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
index 2e9e296..b6458c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderController.java
@@ -13,6 +13,7 @@
import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams;
import com.vincent.rsf.server.manager.controller.params.BatchUpdateParam;
import com.vincent.rsf.server.manager.entity.AsnOrder;
+import com.vincent.rsf.server.manager.entity.Matnr;
import com.vincent.rsf.server.manager.service.AsnOrderService;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.controller.BaseController;
@@ -121,7 +122,13 @@
@PostMapping("/asnOrder/export")
@ApiOperation("瀵煎嚭")
public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- ExcelUtil.build(ExcelUtil.create(asnOrderService.list(), AsnOrder.class), response);
+ List<AsnOrder> orders = new ArrayList<>();
+ if (!Objects.isNull(map.get("ids"))) {
+ orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().in(AsnOrder::getId, map.get("ids")).eq(AsnOrder::getStatus, 1));
+ } else {
+ orders = asnOrderService.list(new LambdaQueryWrapper<AsnOrder>().last("limit 1"));
+ }
+ ExcelUtil.build(ExcelUtil.create(orders, AsnOrder.class), response);
}
/**
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
index c04887e..267ca22 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemController.java
@@ -118,10 +118,17 @@
@PostMapping("/asnOrderItem/export")
@ApiOperation("瀵煎嚭鏀惰揣閫氱煡鍗曟槑缁�")
public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
- AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class);
- List<AsnOrderTemplate> list = new ArrayList<>();
- list.add(template);
- ExcelUtil.build(ExcelUtil.create(list, AsnOrderTemplate.class, true), response);
+// AsnOrderTemplate template = ExcelUtil.mockData(AsnOrderTemplate.class);
+// List<AsnOrderTemplate> list = new ArrayList<>();
+// list.add(template);
+ List<AsnOrderItem> orderItems = new ArrayList<>();
+ if (!Objects.isNull(map.get("ids"))) {
+ orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getId, map.get("ids")).eq(AsnOrderItem::getStatus, 1));
+ } else {
+ orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().last("limit 1"));
+ }
+
+ ExcelUtil.build(ExcelUtil.create(orderItems, AsnOrderItem.class, true), response);
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
index 346f37e..38b863f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
@@ -1,7 +1,12 @@
package com.vincent.rsf.server.manager.entity;
import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.*;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.service.DictDataService;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
@@ -206,6 +211,42 @@
// null // 澶囨敞
// );
+ public String getExceStatus$() {
+ if (Cools.isEmpty(this.exceStatus)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_ASN_EXCE_STATUS).eq(DictData::getValue, this.exceStatus));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
+ public String getType$(){
+ if (Cools.isEmpty(this.type)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE).eq(DictData::getValue, this.type));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
+ public String getWkType$(){
+ if (Cools.isEmpty(this.wkType)){
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictData = dictDataService.getOne(new LambdaQueryWrapper<DictData>().eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_BUSINESS_TYPE).eq(DictData::getValue, this.wkType));
+ if (Objects.isNull(dictData)) {
+ return null;
+ }
+ return dictData.getLabel();
+ }
+
public String getArrTime$(){
if (Cools.isEmpty(this.arrTime)){
return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java
index b348367..ec26c9b 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Purchase.java
@@ -1,8 +1,12 @@
package com.vincent.rsf.server.manager.entity;
import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.*;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.vincent.rsf.server.system.constant.DictTypeCode;
+import com.vincent.rsf.server.system.entity.DictData;
+import com.vincent.rsf.server.system.service.DictDataService;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
@@ -222,6 +226,20 @@
// null // 澶囨敞
// );
+ public String getType$() {
+ if (Cools.isEmpty(this.type)) {
+ return "";
+ }
+ DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
+ DictData dictDatas = dictDataService.getOne(new LambdaQueryWrapper<DictData>()
+ .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_ORDER_TYPE)
+ .eq(DictData::getValue, this.type));
+ if (Objects.isNull(dictDatas) || Objects.isNull(dictDatas.getLabel())) {
+ return null;
+ }
+ return dictDatas.getLabel();
+ }
+
public String getPreArr$(){
if (Cools.isEmpty(this.preArr)){
return "";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
index b2ee5fa..6c91462 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderServiceImpl.java
@@ -238,11 +238,6 @@
if (Objects.isNull(order)) {
throw new CoolException("鍗曟嵁涓嶅瓨鍦紒锛�");
}
- order.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val));
-
- if (!this.updateById(order)) {
- throw new CoolException("鍗曟嵁鍏抽棴澶辫触锛侊紒");
- }
try {
operateOrderLogs(order);
} catch (Exception e) {
@@ -263,6 +258,15 @@
if (Objects.isNull(asrder) || Objects.isNull(asrder.getId())) {
throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
}
+ asrder.setExceStatus(Short.parseShort(AsnExceStatus.ASN_EXCE_STATUS_TASK_CLOSE.val));
+
+ if (!this.updateById(asrder)) {
+ throw new CoolException("鍗曟嵁鍏抽棴澶辫触锛侊紒");
+ }
+ List<AsnOrderItem> orderItems = asnOrderItemService.list(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asrder.getId()));
+ if (orderItems.isEmpty()) {
+ throw new CoolException("鏀惰揣鏄庣粏涓虹┖锛侊紒");
+ }
if (Objects.isNull(asrder.getAnfme()) || asrder.getAnfme().compareTo(0.00) == 0) {
throw new CoolException("鏀惰揣鏁伴噺涓嶈兘涓洪浂锛侊紒");
}
diff --git a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
index 15f722f..aa6bbcf 100644
--- a/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
+++ b/rsf-server/src/main/resources/mapper/manager/AsnOrderItemMapper.xml
@@ -18,6 +18,7 @@
stock_unit,
pur_qty,
pur_unit,
+ prod_time,
qty,
splr_code,
splr_batch,
--
Gitblit v1.9.1