From 05951bf4f4eacc72552eb6763c640aa8b2067105 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期二, 08 四月 2025 17:27:40 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-admin/src/page/asnOrder/AsnOrderList.jsx | 58 ++++++++++++++----- rsf-admin/src/page/components/BillStatusField.jsx | 30 ++++++++++ rsf-admin/src/page/components/EditTopToolBar.jsx | 2 rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx | 7 +- rsf-admin/src/page/components/ConfirmButton.jsx | 2 rsf-admin/src/config/MyDataProvider.js | 2 rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx | 13 +++ rsf-admin/src/i18n/zh.js | 4 rsf-admin/.env | 2 rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx | 2 rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx | 18 ++++- rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 12 +++ 12 files changed, 118 insertions(+), 34 deletions(-) diff --git a/rsf-admin/.env b/rsf-admin/.env index a3c69b2..a8ce658 100644 --- a/rsf-admin/.env +++ b/rsf-admin/.env @@ -1,3 +1,3 @@ -VITE_BASE_IP=127.0.0.1 +VITE_BASE_IP=192.168.4.24 # VITE_BASE_IP=47.76.147.249 VITE_BASE_PORT=8080 diff --git a/rsf-admin/src/config/MyDataProvider.js b/rsf-admin/src/config/MyDataProvider.js index cfc312f..897d7ab 100644 --- a/rsf-admin/src/config/MyDataProvider.js +++ b/rsf-admin/src/config/MyDataProvider.js @@ -60,7 +60,6 @@ // create a record create: async (resource, params) => { - console.log("create", resource, params); const res = await request.post(resource + "/save", params?.data); const { code, msg, data } = res.data; if (code === 200) { @@ -75,7 +74,6 @@ // update a record based on a patch update: async (resource, params) => { - console.log("update", resource, params); const res = await request.post(resource + "/update", { id: params.id, ...params.data, diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index c19a91a..8b0c4ab 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -271,7 +271,7 @@ name: "鐗╂枡鍚嶇О", code: "鐗╂枡缂栫爜", shipperId: "璐т富鏍囪瘑", - groupId: "鍒嗙粍鏍囪瘑", + groupId: "鐗╂枡鍒嗙粍", rglarId: "鎵规瑙勫垯鏍囪瘑", platCode: "ERP缂栫爜", spec: "瑙勬牸", @@ -557,7 +557,7 @@ asnCode: "涓诲崟缂栫爜", platItemId: "erp鏍囪瘑", poDetlId: "PO鍗曟爣璇�", - poCode: "PO鍗曠紪鐮�", + poDetlCode: "PO鍗曠紪鐮�", fieldsIndex: "瀛楁绱㈠紩", matnrId: "鐗╂枡鏍囪瘑", matnrCode: "鐗╂枡缂栫爜", diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx index c4da83b..561522a 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx @@ -41,6 +41,8 @@ import EmptyData from "../components/EmptyData"; import MyCreateButton from "../components/MyCreateButton"; import MyExportButton from '../components/MyExportButton'; +import BillStatusField from '../components/BillStatusField'; +import ConfirmButton from '../components/ConfirmButton'; import PageDrawer from "../components/PageDrawer"; import MyField from "../components/MyField"; import { PAGE_DRAWER_WIDTH, OPERATE_MODE, DEFAULT_PAGE_SIZE } from '@/config/setting'; @@ -49,8 +51,9 @@ import FileDownloadIcon from '@mui/icons-material/FileDownload'; import EditIcon from '@mui/icons-material/Edit'; import TaskIcon from '@mui/icons-material/Task'; +import CloseIcon from '@mui/icons-material/Close'; import request from '@/utils/request'; - +import DictionarySelect from "../components/DictionarySelect"; const StyledDatagrid = styled(DatagridConfigurable)(({ theme }) => ({ '& .css-1vooibu-MuiSvgIcon-root': { @@ -62,7 +65,10 @@ '& .column-name': { }, '& .opt': { - width: 300 + width: 320 + }, + '& .status': { + width: 100 }, })); @@ -85,15 +91,12 @@ />, <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 + <DictionarySelect + label='common.field.status' + name="exceStatus" + dictTypeCode="sys_asn_exce_status" />, + ] const AsnOrderList = () => { @@ -164,8 +167,7 @@ <TextField source="nickname" /> </ReferenceField> <DateField source="createTime" label="common.field.createTime" showTime /> - <TextField source="exceStatus$" label="common.field.status" /> - {/* <BooleanField source="statusBool" label="common.field.status" sortable={false} /> */} + <BillStatusField cellClassName="status" source="exceStatus" label="common.field.status" /> <TextField source="memo" label="common.field.memo" sortable={false} /> <WrapperField cellClassName="opt" label="common.field.opt" width={300} > {/* <Button label="toolbar.print" onClick={print}> @@ -183,7 +185,8 @@ </Button> */} <InspectionButton /> <CompleteButton /> - <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> + {/* <DeleteButton sx={{ padding: '1px', fontSize: '.75rem' }} mutationMode={OPERATE_MODE} /> */} + <CloseButton /> </WrapperField> </StyledDatagrid> </List> @@ -301,8 +304,33 @@ return ( - <Button onClick={requestComplete} label={"toolbar.complete"} color="success"> + record.exceStatus === 1 && (record.anfme === record.qty ? <Button onClick={requestComplete} label={"toolbar.complete"} color="success"> <TaskIcon /> - </Button> + </Button> : <ConfirmButton label={"toolbar.complete"} color="success" data={'褰撳墠鏀惰揣鏁伴噺灏忎簬璁″垝鏁伴噺锛屾槸鍚︾‘璁ゅ畬鎴�'} startIcon={<TaskIcon />} onConfirm={requestComplete} />) + + ) + + +} + +const CloseButton = () => { + const record = useRecordContext(); + const notify = useNotify(); + const refresh = useRefresh(); + const requestClose = async () => { + const { data: { code, data, msg } } = await request.post(`/asnOrder/close/${record.id}`); + + if (code === 200) { + notify(msg); + refresh() + } else { + notify(msg); + } + } + + return ( + (<Button onClick={requestClose} label={"toolbar.close"} color="error"> + <CloseIcon /> + </Button>) ) } diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx index 90e2269..e8fa4ac 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx @@ -73,6 +73,7 @@ requestGetHead() requestGetBody() } + setDisabled(false) }, [open]) const handleClose = (event, reason) => { @@ -98,6 +99,14 @@ [name]: value })); }; + + const resetData = () => { + setFormData({ + type: '', + wkType: '', + }) + setTableData([]) + } const setFinally = () => { const rows = tableRef.current.state.editRows; @@ -126,6 +135,7 @@ setOpen(false); refresh(); billReload?.current() + resetData() } else { notify(res.data.msg); } @@ -139,7 +149,7 @@ setOpen(false); refresh(); billReload?.current() - + resetData() } else { notify(res.data.msg); } diff --git a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx index 61763e5..00c0a89 100644 --- a/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx +++ b/rsf-admin/src/page/asnOrder/AsnOrderPanel.jsx @@ -14,7 +14,7 @@ import debounce from 'lodash/debounce'; import { DataGrid } from '@mui/x-data-grid'; import PrintModal from './PrintModal'; -import { width } from "@mui/system"; +import PrintIcon from '@mui/icons-material/Print'; const AsnOrderPanel = ({ billReload }) => { const record = useRecordContext(); if (!record) return null; @@ -157,6 +157,7 @@ <DataGrid + sx={{ width: 'calc(100vw - 280px)' }} size="small" rows={rows} columns={columns} @@ -196,7 +197,7 @@ return ( <> - <Button size="small" variant="contained" color="secondary" onClick={modalChange}>{translate("toolbar.batchPrint")}</Button> + <Button size="small" color="secondary" onClick={modalChange} startIcon={<PrintIcon />}>{translate("toolbar.batchPrint")}</Button> <PrintModal open={createDialog} @@ -218,7 +219,7 @@ return ( <> - <Button size="small" variant="contained" color="secondary" onClick={() => setCreateDialog(true)}>{translate("toolbar.print")}</Button> + <Button size="small" color="secondary" onClick={() => setCreateDialog(true)} startIcon={<PrintIcon />}>{translate("toolbar.print")}</Button> <PrintModal open={createDialog} diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx index ffec017..04ff032 100644 --- a/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx +++ b/rsf-admin/src/page/basicInfo/matnr/MatnrEdit.jsx @@ -74,7 +74,6 @@ const MatnrEdit = () => { const translate = useTranslate(); const [value, setValue] = React.useState(0); - const form = useForm(); const notify = useNotify(); const [dynamicFields, setDynamicFields] = useState([]); @@ -268,7 +267,7 @@ {dynamicFields.map((item) => { return ( <Grid key={item.id} item xs={6} display="flex" gap={1}> - <TextInput + <DynamicFields label={item.fieldsAlise} source={item.fields} validate={item.unique === 1 ? required() : false} @@ -276,8 +275,6 @@ </Grid> ) })} - - </Grid> @@ -367,3 +364,16 @@ } export default MatnrEdit; + +const DynamicFields = (props) => { + const { ...parmas } = props; + const form = useFormContext(); + const field = `extendFields.${parmas.source}`; + const value = form.getValues(field); + value && form.setValue(parmas.source, value); + return ( + <TextInput + {...parmas} + /> + ) +} diff --git a/rsf-admin/src/page/components/BillStatusField.jsx b/rsf-admin/src/page/components/BillStatusField.jsx new file mode 100644 index 0000000..b60ff1c --- /dev/null +++ b/rsf-admin/src/page/components/BillStatusField.jsx @@ -0,0 +1,30 @@ +import React, { useState, useRef, useEffect, useMemo, useCallback } from "react"; +import { + useRecordContext, +} from 'react-admin'; +import { Box, Typography, Card, Stack } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import CircleIcon from '@mui/icons-material/Circle'; + +const BillStatusField = () => { + const record = useRecordContext(); + const theme = useTheme(); + const color = { + 0: '#BFBFBF', + 1: '#FFC53D', + 2: '#52C41A', + 3: '#595959', + 4: '#FF4D4F', + } + return ( + <Typography + variant="body2" + sx={{ display: 'flex', alignItems: 'center' }} + > + <CircleIcon sx={{ fontSize: 10, color: color[record.exceStatus || 0], marginRight: '3px' }} /> {record.exceStatus$} + </Typography > + ) + +} + +export default BillStatusField; \ No newline at end of file diff --git a/rsf-admin/src/page/components/ConfirmButton.jsx b/rsf-admin/src/page/components/ConfirmButton.jsx index e39fe98..c315e7c 100644 --- a/rsf-admin/src/page/components/ConfirmButton.jsx +++ b/rsf-admin/src/page/components/ConfirmButton.jsx @@ -44,7 +44,7 @@ <DialogTitle>{translate('common.msg.confirm.tip')}</DialogTitle> <DialogContent> <DialogContentText> - {translate('common.msg.confirm.desc')} + {data ? data : translate('common.msg.confirm.desc')} </DialogContentText> </DialogContent> <DialogActions> diff --git a/rsf-admin/src/page/components/EditTopToolBar.jsx b/rsf-admin/src/page/components/EditTopToolBar.jsx index fbbdb38..8a5c8f6 100644 --- a/rsf-admin/src/page/components/EditTopToolBar.jsx +++ b/rsf-admin/src/page/components/EditTopToolBar.jsx @@ -9,7 +9,7 @@ const resource = useResourceContext(); const translate = useTranslate(); - + return ( <TopToolbar sx={{ marginTop: 1, diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx index 80fac6f..d04c3e1 100644 --- a/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataEdit.jsx @@ -19,6 +19,8 @@ required, useRecordContext, DeleteButton, + useNotify, + useRedirect, } from 'react-admin'; import { useWatch, useFormContext } from "react-hook-form"; import { Stack, Grid, Box, Typography } from '@mui/material'; @@ -30,11 +32,18 @@ import StatusSelectInput from "../../../components/StatusSelectInput"; const FormToolbar = () => { - const { getValues } = useFormContext(); + const form = useFormContext(); + 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 /> + <SaveButton type="button" mutationOptions={{ onSuccess }} /> <DeleteButton mutationMode="optimistic" /> </Toolbar> ) diff --git a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx index 7af9d9d..5506184 100644 --- a/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx +++ b/rsf-admin/src/page/system/dicts/dictData/DictDataList.jsx @@ -62,8 +62,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="dictTypeId" label="table.field.dictData.dictTypeId" />, <TextInput source="dictTypeCode" label="table.field.dictData.dictTypeCode" />, -- Gitblit v1.9.1