From 8a141fa444e3d605f05763c6003085c24880e5c6 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期五, 21 三月 2025 08:25:06 +0800 Subject: [PATCH] Merge branch 'front' into devlop --- rsf-admin/src/page/basicInfo/locArea/LocAreaList.jsx | 2 rsf-admin/package.json | 2 rsf-admin/src/page/asnOrder/AsnWareModal.jsx | 2 rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx | 89 +++++++++++++++++ rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx | 2 rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx | 2 rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx | 2 rsf-admin/src/page/components/TreeSelectInput.jsx | 2 rsf-admin/src/i18n/zh.js | 2 rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx | 142 +++++++++++++++++----------- rsf-admin/pnpm-lock.yaml | 27 +++++ rsf-admin/src/i18n/en.js | 2 rsf-admin/src/App.jsx | 10 - rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 2 14 files changed, 218 insertions(+), 70 deletions(-) diff --git a/rsf-admin/package.json b/rsf-admin/package.json index 69d4315..18c05b2 100644 --- a/rsf-admin/package.json +++ b/rsf-admin/package.json @@ -27,9 +27,11 @@ "pixi.js": "^7.4.0", "prop-types": "^15.8.1", "ra-i18n-polyglot": "^5.6.2", + "ra-language-chinese": "^2.0.10", "ra-language-english": "^5.6.2", "react": "^18.3.0", "react-admin": "^5.6.3", + "react-barcode": "^1.6.1", "react-dom": "^18.3.0", "react-hook-form": "^7.53.0", "react-router": "^6.22.0", diff --git a/rsf-admin/pnpm-lock.yaml b/rsf-admin/pnpm-lock.yaml index 7551cb5..c99442f 100644 --- a/rsf-admin/pnpm-lock.yaml +++ b/rsf-admin/pnpm-lock.yaml @@ -59,6 +59,9 @@ ra-i18n-polyglot: specifier: ^5.6.2 version: 5.6.2(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.54.2(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@6.30.0(react@18.3.1))(react@18.3.1) + ra-language-chinese: + specifier: ^2.0.10 + version: 2.0.10 ra-language-english: specifier: ^5.6.2 version: 5.6.2(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.54.2(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@6.30.0(react@18.3.1))(react@18.3.1) @@ -68,6 +71,9 @@ react-admin: specifier: ^5.6.3 version: 5.6.3(@mui/utils@6.4.6(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react-is@19.0.0)(react@18.3.1) + react-barcode: + specifier: ^1.6.1 + version: 1.6.1(react@18.3.1) react-dom: specifier: ^18.3.0 version: 18.3.1(react@18.3.1) @@ -1832,6 +1838,9 @@ resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true + jsbarcode@3.11.6: + resolution: {integrity: sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -2125,6 +2134,9 @@ ra-i18n-polyglot@5.6.3: resolution: {integrity: sha512-tuzq//7wVA6+A1gsQB+WXhVCNS622YdkHDGNEFjp9sXezFhNdeak1zh7vWGuny6ssrbiWn2ItgjEGgw9dItYRQ==} + ra-language-chinese@2.0.10: + resolution: {integrity: sha512-k+X6XdkBEZnmpKIJZj9Lb77Lj8LCmterilJTj2ovp3i8/H/dLo9IujASfjFypjHnVUpN7Y63LT19kgPrS6+row==} + ra-language-english@5.6.2: resolution: {integrity: sha512-afLZFHNnk3JEZUhZQSSv2nk4Rg69NiUiRiFuMnnImjWFKxICBN8Z1hKJhUauXrZdtyZslXl7nGYhVsuqxTOuQg==} @@ -2153,6 +2165,11 @@ peerDependencies: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 + + react-barcode@1.6.1: + resolution: {integrity: sha512-pc4ftnO5syHa/UjCruEeRsomlhoxKSugIgTA8T4dH0fvc89UMHL+/1Sp25IAphqG44pJkE5hMXhv89iS09jQyw==} + peerDependencies: + react: 16 - 19 react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} @@ -4420,6 +4437,8 @@ dependencies: argparse: 2.0.1 + jsbarcode@3.11.6: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -4759,6 +4778,8 @@ - react-router - react-router-dom + ra-language-chinese@2.0.10: {} + ra-language-english@5.6.2(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.54.2(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@6.30.0(react@18.3.1))(react@18.3.1): dependencies: ra-core: 5.6.2(react-dom@18.3.1(react@18.3.1))(react-hook-form@7.54.2(react@18.3.1))(react-router-dom@6.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-router@6.30.0(react@18.3.1))(react@18.3.1) @@ -4827,6 +4848,12 @@ - react-is - supports-color + react-barcode@1.6.1(react@18.3.1): + dependencies: + jsbarcode: 3.11.6 + prop-types: 15.8.1 + react: 18.3.1 + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 diff --git a/rsf-admin/src/App.jsx b/rsf-admin/src/App.jsx index 328a4b6..9efadba 100644 --- a/rsf-admin/src/App.jsx +++ b/rsf-admin/src/App.jsx @@ -29,18 +29,16 @@ } from "./config/setting"; import ResourceContent from "./page/ResourceContent"; import { getSystemInfo, getSystemDicts, tenants } from "@/api/auth"; +import chineseMessages from 'ra-language-chinese'; const i18nProvider = polyglotI18nProvider( (locale) => { if (locale === "en") { return import("./i18n/en").then((messages) => messages.default); } - // fallback - return zhMessages; + return { ...chineseMessages, ...zhMessages }; }, - // default - // 'en', - resolveBrowserLocale("zh", { fullLocale: true }), + "zh", [ { locale: "en", name: "English" }, { locale: "zh", name: "绠�浣撲腑鏂�" }, @@ -111,4 +109,4 @@ </StoreContextProvider> ); -export default AppWrapper; +export default AppWrapper; \ No newline at end of file diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 8130e2f..72fc56e 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -128,6 +128,7 @@ warehouseAreas: 'WarehouseAreas', loc: 'Loc', locType: 'LocType', + locArea: 'locArea', container: 'Container', contract: 'Contract', qlyInspect: 'QlyInspect', @@ -623,6 +624,7 @@ unenable: 'unenable', locInit: 'loc init', batch: 'batch', + confirm: 'confirm', }, }; diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 7008ad7..3a328f8 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -128,6 +128,7 @@ warehouseAreas: '浠撳簱搴撳尯', loc: '鍩虹搴撲綅', locType: '搴撲綅绫诲瀷', + locArea: '閫昏緫鍒嗗尯', container: '瀹瑰櫒绠$悊', contract: '鍚堝悓淇℃伅', qlyInspect: '璐ㄦ淇℃伅', @@ -625,6 +626,7 @@ unenable: '绂佺敤', locInit: '聽搴撲綅鍒濆鍖�', batch: '鎵归噺鎿嶄綔', + confirm: '纭', }, }; diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index 01da591..57035a4 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -216,7 +216,7 @@ <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> <Toolbar sx={{ width: '100%', justifyContent: 'space-between' }} > <Button onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}> - 纭 + {translate('toolbar.confirm')} </Button> </Toolbar> </DialogActions> diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx index a3d58ce..41750a4 100644 --- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx @@ -144,7 +144,7 @@ <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}> <Button onClick={handleSubmit} variant="contained" startIcon={<SaveIcon />}> - 纭 + {translate('toolbar.confirm')} </Button> </Box> </DialogActions> diff --git a/rsf-admin/src/page/basicInfo/locArea/LocAreaList.jsx b/rsf-admin/src/page/basicInfo/locArea/LocAreaList.jsx index d249f05..0c55a6a 100644 --- a/rsf-admin/src/page/basicInfo/locArea/LocAreaList.jsx +++ b/rsf-admin/src/page/basicInfo/locArea/LocAreaList.jsx @@ -60,8 +60,6 @@ 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.locArea.name" />, <TextInput source="code" label="table.field.locArea.code" />, diff --git a/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx b/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx index 24f97f7..9a461af 100644 --- a/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx +++ b/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx @@ -140,7 +140,7 @@ <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}> <Button type="submit" variant="contained" startIcon={<SaveIcon />}> - 纭 + {translate('toolbar.confirm')} </Button> </Box> </DialogActions> diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx index 72918ab..ba9be18 100644 --- a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx +++ b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx @@ -51,8 +51,10 @@ import { display, height, width } from "@mui/system"; import DashboardIcon from '@mui/icons-material/Dashboard'; import EditIcon from '@mui/icons-material/Edit'; +import PrintIcon from '@mui/icons-material/Print'; import request from '@/utils/request'; import BatchModal from './BatchModal'; +import PrintModal from './PrintModal'; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -151,7 +153,8 @@ const translate = useTranslate(); const notify = useNotify(); const { isLoading } = useListContext(); - const [dynamicFields, setDynamicFields] = useState([]); + + const [columns, setColumns] = useState([]); const refresh = useRefresh(); const { refetch } = useListContext(); @@ -165,8 +168,50 @@ data: { code, data, msg }, } = await request.get("/fields/enable/list"); if (code === 200) { - setDynamicFields(data); - refresh(); + const arr = [ + <NumberField key="id" source="id" />, + <TooltipField key="name" source="name" label="table.field.matnr.name" cellClassName="name" />, + <TextField key="code" source="code" label="table.field.matnr.code" />, + <TextField key="shipperId$" source="shipperId$" label="table.field.matnr.shipperId" />, + <ReferenceField key="groupId" source="groupId" label="table.field.matnr.groupId" reference="matnrGroup" link={false} sortable={false}> + <TextField source="name" /> + </ReferenceField>, + <TextField key="platCode" source="platCode" label="table.field.matnr.platCode" />, + <TextField key="spec" source="spec" label="table.field.matnr.spec" />, + <TextField key="model" source="model" label="table.field.matnr.model" />, + <NumberField key="weight" source="weight" label="table.field.matnr.weight" />, + <TextField key="describle" source="describle" label="table.field.matnr.describle" />, + <NumberField key="nromNum" source="nromNum" label="table.field.matnr.nromNum" />, + <TextField key="unit" source="unit" label="table.field.matnr.unit" />, + <TextField key="purchaseUnit" source="purchaseUnit" label="table.field.matnr.purUnit" />, + <TextField key="stockUnit" source="stockUnit" label="table.field.matnr.stockUnit" />, + <TextField key="stockLeval$" source="stockLeval$" label="table.field.matnr.stockLevel" sortable={false} />, + <TextField key="isLabelMange$" source="isLabelMange$" label="table.field.matnr.isLabelMange" sortable={false} />, + <NumberField key="safeQty" source="safeQty" label="table.field.matnr.safeQty" />, + <NumberField key="minQty" source="minQty" label="table.field.matnr.minQty" />, + <NumberField key="maxQty" source="maxQty" label="table.field.matnr.maxQty" />, + <NumberField key="stagn" source="stagn" label="table.field.matnr.stagn" />, + <NumberField key="valid" source="valid" label="table.field.matnr.valid" />, + <NumberField key="validWarn" source="validWarn" label="table.field.matnr.validWarn" />, + <NumberField key="flagCheck" source="flagCheck" label="table.field.matnr.flagCheck" />, + <ReferenceField key="updateBy" source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField>, + <DateField key="updateTime" source="updateTime" label="common.field.updateTime" showTime />, + <ReferenceField key="createBy" source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> + <TextField source="nickname" /> + </ReferenceField>, + <DateField key="createTime" source="createTime" label="common.field.createTime" showTime />, + <BooleanField key="statusBool" source="statusBool" label="common.field.status" sortable={false} />, + <TextField key="memo" source="memo" label="common.field.memo" sortable={false} />, + ] + const fields = data.map(el => <TextField key={el.fields} source={el.fields} label={el.fieldsAlise} />) + const opt = <WrapperField key="opt" cellClassName="opt" label="common.field.opt"> + <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> + <EnableButton /> + </WrapperField> + setColumns([...arr, ...fields, opt]); + } else { notify(msg); } @@ -174,48 +219,6 @@ notify('璇锋眰鍑洪敊'); } }; - - const columns = [ - <NumberField key="id" source="id" />, - <TooltipField key="name" source="name" label="table.field.matnr.name" cellClassName="name" />, - <TextField key="code" source="code" label="table.field.matnr.code" />, - <TextField key="shipperId$" source="shipperId$" label="table.field.matnr.shipperId" />, - <ReferenceField key="groupId" source="groupId" label="table.field.matnr.groupId" reference="matnrGroup" link={false} sortable={false}> - <TextField source="name" /> - </ReferenceField>, - <TextField key="platCode" source="platCode" label="table.field.matnr.platCode" />, - <TextField key="spec" source="spec" label="table.field.matnr.spec" />, - <TextField key="model" source="model" label="table.field.matnr.model" />, - <NumberField key="weight" source="weight" label="table.field.matnr.weight" />, - <TextField key="describle" source="describle" label="table.field.matnr.describle" />, - <NumberField key="nromNum" source="nromNum" label="table.field.matnr.nromNum" />, - <TextField key="unit" source="unit" label="table.field.matnr.unit" />, - <TextField key="purchaseUnit" source="purchaseUnit" label="table.field.matnr.purUnit" />, - <TextField key="stockUnit" source="stockUnit" label="table.field.matnr.stockUnit" />, - <TextField key="stockLeval$" source="stockLeval$" label="table.field.matnr.stockLevel" sortable={false} />, - <TextField key="isLabelMange$" source="isLabelMange$" label="table.field.matnr.isLabelMange" sortable={false} />, - <NumberField key="safeQty" source="safeQty" label="table.field.matnr.safeQty" />, - <NumberField key="minQty" source="minQty" label="table.field.matnr.minQty" />, - <NumberField key="maxQty" source="maxQty" label="table.field.matnr.maxQty" />, - <NumberField key="stagn" source="stagn" label="table.field.matnr.stagn" />, - <NumberField key="valid" source="valid" label="table.field.matnr.valid" />, - <NumberField key="validWarn" source="validWarn" label="table.field.matnr.validWarn" />, - <NumberField key="flagCheck" source="flagCheck" label="table.field.matnr.flagCheck" />, - <ReferenceField key="updateBy" source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField>, - <DateField key="updateTime" source="updateTime" label="common.field.updateTime" showTime />, - <ReferenceField key="createBy" source="createBy" label="common.field.createBy" reference="user" link={false} sortable={false}> - <TextField source="nickname" /> - </ReferenceField>, - <DateField key="createTime" source="createTime" label="common.field.createTime" showTime />, - <BooleanField key="statusBool" source="statusBool" label="common.field.status" sortable={false} />, - <TextField key="memo" source="memo" label="common.field.memo" sortable={false} />, - <WrapperField key="opt" cellClassName="opt" label="common.field.opt"> - <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> - <EnableButton /> - </WrapperField> - ]; return ( <Box sx={{ position: 'relative', minHeight: "60vh", }}> @@ -231,17 +234,22 @@ /> )} - <StyledDatagrid - preferenceKey='matnr' - bulkActionButtons={<> <BatchButton /><BulkDeleteButton mutationMode={OPERATE_MODE} /></>} - rowClick={(id, resource, record) => false} - omit={['id', 'shipperId', 'platCode', 'spec', 'model', 'weight', 'color', 'describle' - , 'nromNum', 'unit', 'purchaseUnit', 'stockUnit', 'stockLeval', 'isLabelMange', 'safeQty' - , 'minQty', 'maxQty', 'stagn', 'valid', 'validWarn', 'flagCheck', 'updateTime', 'updateBy' - , 'createTime', 'createBy', 'memo', 'rglarId', 'groupId', 'stockLevel', 'isLabelMange']} - > - {columns.map((column) => column)} - </StyledDatagrid> + {columns.length > 0 && + <StyledDatagrid + preferenceKey='matnr' + bulkActionButtons={<> + <BatchButton /> + <PrintButton /> + <BulkDeleteButton mutationMode={OPERATE_MODE} /> + </>} + rowClick={(id, resource, record) => false} + omit={['id', 'shipperId', 'platCode', 'spec', 'model', 'weight', 'color', 'describle' + , 'nromNum', 'unit', 'purchaseUnit', 'stockUnit', 'stockLeval', 'isLabelMange', 'safeQty' + , 'minQty', 'maxQty', 'stagn', 'valid', 'validWarn', 'flagCheck', 'updateTime', 'updateBy' + , 'createTime', 'createBy', 'memo', 'rglarId', 'groupId', 'stockLevel', 'isLabelMange']} + > + {columns.map((column) => column)} + </StyledDatagrid>} </Box> ); } @@ -348,4 +356,26 @@ </> ) +} + +const PrintButton = () => { + const record = useRecordContext(); + const notify = useNotify(); + const refresh = useRefresh(); + + const [createDialog, setCreateDialog] = useState(false); + + return ( + <> + <Button color="secondary" onClick={() => setCreateDialog(true)} label={"toolbar.print"}> + <PrintIcon /> + </Button> + + <PrintModal + open={createDialog} + setOpen={setCreateDialog} + /> + </> + + ) } \ No newline at end of file diff --git a/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx b/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx new file mode 100644 index 0000000..46c4d0d --- /dev/null +++ b/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx @@ -0,0 +1,89 @@ +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, + useListContext, + useRefresh, +} from 'react-admin'; +import { + Dialog, + DialogActions, + DialogContent, + DialogTitle, + Grid, + TextField, + Box, + Button, + Paper, + TableContainer, + Table, + TableHead, + TableBody, + TableRow, + TableCell, + Tooltip, + IconButton, + styled + + +} from '@mui/material'; +import DialogCloseButton from "../../components/DialogCloseButton"; +import DictionarySelect from "../../components/DictionarySelect"; +import { useForm, Controller, useWatch, FormProvider, useFormContext } from "react-hook-form"; +import SaveIcon from '@mui/icons-material/Save'; +import request from '@/utils/request'; +import { Add, Edit, Delete } from '@mui/icons-material'; +import _ from 'lodash'; +import { DataGrid } from '@mui/x-data-grid'; +import StatusSelectInput from "../../components/StatusSelectInput"; + + + +const InitModal = ({ open, setOpen }) => { + const refresh = useRefresh(); + const translate = useTranslate(); + + + const notify = useNotify(); + + + const handleClose = (event, reason) => { + if (reason !== "backdropClick") { + setOpen(false); + } + }; + + return ( + <Dialog open={open} maxWidth="sm" fullWidth> + <DialogCloseButton onClose={handleClose} /> + <DialogTitle>{translate('toolbar.print')}</DialogTitle> + <DialogContent sx={{ mt: 2 }}> + 1 + </DialogContent> + <DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}> + <Box sx={{ width: '100%', display: 'flex', justifyContent: 'space-between' }}> + <Button onClick={handleClose} variant="contained" startIcon={<SaveIcon />}> + {translate('toolbar.confirm')} + </Button> + </Box> + </DialogActions> + </Dialog> + ); +} + +export default InitModal; \ No newline at end of file diff --git a/rsf-admin/src/page/components/TreeSelectInput.jsx b/rsf-admin/src/page/components/TreeSelectInput.jsx index 4140b94..8243ce1 100644 --- a/rsf-admin/src/page/components/TreeSelectInput.jsx +++ b/rsf-admin/src/page/components/TreeSelectInput.jsx @@ -14,7 +14,7 @@ const [proxyVal, setProxyVal] = React.useState(''); const record = useRecordContext() - const val = value || record[source]; + const val = value || record?.[source]; useEffect(() => { const http = async (resource) => { diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx index f12d4fd..ab4847f 100644 --- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx +++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx @@ -118,7 +118,7 @@ </Grid> <Grid item xs={6} display="flex" gap={1}> <ReferenceInput - source="wareId" + source="warehouseId" reference="warehouse" > <AutocompleteInput diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx index f038e90..fcf1745 100644 --- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx +++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx @@ -90,7 +90,7 @@ </Stack> <Stack direction='row' gap={2}> <ReferenceInput - source="wareId" + source="warehouseId" reference="warehouse" > <AutocompleteInput -- Gitblit v1.9.1