From 8adf7bbd561e30fcb5de802abb6f9281d72d8699 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期四, 27 三月 2025 15:44:38 +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 | 27 ----
rsf-admin/src/page/components/DictSelect.jsx | 60 ++++++++++
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java | 4
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java | 11 +
rsf-admin/src/page/asnOrder/AsnWareModal.jsx | 76 ++++++++++--
rsf-admin/src/page/components/DictionarySelect.jsx | 1
rsf-admin/pnpm-lock.yaml | 48 +++++--
rsf-admin/src/page/basicInfo/loc/LocList.jsx | 11 +
rsf-admin/src/page/asnOrder/AsnOrderModal.jsx | 110 ++++++++++-------
9 files changed, 243 insertions(+), 105 deletions(-)
diff --git a/rsf-admin/pnpm-lock.yaml b/rsf-admin/pnpm-lock.yaml
index 1e1c44c..470bcd3 100644
--- a/rsf-admin/pnpm-lock.yaml
+++ b/rsf-admin/pnpm-lock.yaml
@@ -25,7 +25,7 @@
version: 6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)
'@mui/x-data-grid':
specifier: ^7.27.3
- version: 7.27.3(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ version: 7.28.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/x-tree-view':
specifier: ^7.16.0
version: 7.26.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -217,6 +217,10 @@
'@babel/runtime@7.26.9':
resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==}
+ engines: {node: '>=6.9.0'}
+
+ '@babel/runtime@7.27.0':
+ resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==}
engines: {node: '>=6.9.0'}
'@babel/template@7.26.9':
@@ -618,14 +622,14 @@
'@types/react':
optional: true
- '@mui/x-data-grid@7.27.3':
- resolution: {integrity: sha512-7zbDbFrhV6ODjyn3ImOZG34nbMbCvmHgqYTYP273TNAj8hMy4BiLyiKFFZTzVddIj3KQ6qLzBpByhqifGgEDOg==}
+ '@mui/x-data-grid@7.28.1':
+ resolution: {integrity: sha512-uDJcjRB7zfRoquZb4G8iw0NWbhziVVPsHisi/EIzvOPHP+a1ZUnG0bLEnY+cy6eEwDrO1dNzYpwGFCcjl8ZKfA==}
engines: {node: '>=14.0.0'}
peerDependencies:
'@emotion/react': ^11.9.0
'@emotion/styled': ^11.8.1
- '@mui/material': ^5.15.14 || ^6.0.0
- '@mui/system': ^5.15.14 || ^6.0.0
+ '@mui/material': ^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta
+ '@mui/system': ^5.15.14 || ^6.0.0 || ^7.0.0 || ^7.0.0-beta
react: ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0
peerDependenciesMeta:
@@ -636,6 +640,12 @@
'@mui/x-internals@7.26.0':
resolution: {integrity: sha512-VxTCYQcZ02d3190pdvys2TDg9pgbvewAVakEopiOgReKAUhLdRlgGJHcOA/eAuGLyK1YIo26A6Ow6ZKlSRLwMg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ react: ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ '@mui/x-internals@7.28.0':
+ resolution: {integrity: sha512-p4GEp/09bLDumktdIMiw+OF4p+pJOOjTG0VUvzNxjbHB9GxbBKoMcHrmyrURqoBnQpWIeFnN/QAoLMFSpfwQbw==}
engines: {node: '>=14.0.0'}
peerDependencies:
react: ^17.0.0 || ^18.0.0 || ^19.0.0
@@ -2702,6 +2712,10 @@
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/runtime@7.27.0':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
'@babel/template@7.26.9':
dependencies:
'@babel/code-frame': 7.26.2
@@ -2728,7 +2742,7 @@
'@emotion/babel-plugin@11.13.5':
dependencies:
'@babel/helper-module-imports': 7.25.9
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
'@emotion/hash': 0.9.2
'@emotion/memoize': 0.9.0
'@emotion/serialize': 1.3.3
@@ -2759,7 +2773,7 @@
'@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
'@emotion/babel-plugin': 11.13.5
'@emotion/cache': 11.14.0
'@emotion/serialize': 1.3.3
@@ -2785,7 +2799,7 @@
'@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
'@emotion/babel-plugin': 11.13.5
'@emotion/is-prop-valid': 1.3.1
'@emotion/react': 11.14.0(@types/react@18.3.18)(react@18.3.1)
@@ -3080,13 +3094,13 @@
optionalDependencies:
'@types/react': 18.3.18
- '@mui/x-data-grid@7.27.3(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ '@mui/x-data-grid@7.28.1(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@mui/material@5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@mui/system@6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
'@mui/material': 5.16.14(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@mui/system': 6.4.7(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@emotion/styled@11.14.0(@emotion/react@11.14.0(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1))(@types/react@18.3.18)(react@18.3.1)
'@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
- '@mui/x-internals': 7.26.0(@types/react@18.3.18)(react@18.3.1)
+ '@mui/x-internals': 7.28.0(@types/react@18.3.18)(react@18.3.1)
clsx: 2.1.1
prop-types: 15.8.1
react: 18.3.1
@@ -3102,6 +3116,14 @@
'@mui/x-internals@7.26.0(@types/react@18.3.18)(react@18.3.1)':
dependencies:
'@babel/runtime': 7.26.9
+ '@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
+ react: 18.3.1
+ transitivePeerDependencies:
+ - '@types/react'
+
+ '@mui/x-internals@7.28.0(@types/react@18.3.18)(react@18.3.1)':
+ dependencies:
+ '@babel/runtime': 7.27.0
'@mui/utils': 6.4.6(@types/react@18.3.18)(react@18.3.1)
react: 18.3.1
transitivePeerDependencies:
@@ -3672,7 +3694,7 @@
babel-plugin-macros@3.1.0:
dependencies:
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
cosmiconfig: 7.1.0
resolve: 1.22.10
@@ -4880,7 +4902,7 @@
react-error-boundary@4.1.2(react@18.3.1):
dependencies:
- '@babel/runtime': 7.26.9
+ '@babel/runtime': 7.27.0
react: 18.3.1
react-hook-form@7.54.2(react@18.3.1):
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
index 39e22a4..cd9fdb1 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderList.jsx
@@ -111,29 +111,6 @@
const inspection = () => { };
const print = () => {
- // const imageUrls = ['https://www.baidu.com/img/flexible/logo/pc/result@2.png',]
- // const iframe = document.createElement('iframe');
- // iframe.style.display = 'none';
- // document.body.appendChild(iframe);
-
- // const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
- // iframeDoc.open();
- // iframeDoc.write('<html><head><title>Print Images</title></head><body>');
-
- // // 灏嗗浘鐗囨彃鍏ュ埌 iframe 涓�
- // imageUrls.forEach((imageUrl) => {
- // iframeDoc.write(`<img src="${imageUrl}" style="margin: 10px;">`);
- // });
-
- // iframeDoc.write('</body></html>');
- // iframeDoc.close();
-
- // // 绛夊緟鍥剧墖鍔犺浇瀹屾垚鍚庤Е鍙戞墦鍗�
- // iframe.contentWindow.onload = () => {
- // iframe.contentWindow.print();
- // // 鎵撳嵃瀹屾垚鍚庣Щ闄� iframe
- // document.body.removeChild(iframe);
- // };
};
@@ -198,9 +175,9 @@
<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" >
- <Button label="toolbar.print" onClick={print}>
+ {/* <Button label="toolbar.print" onClick={print}>
<FileDownloadIcon />
- </Button>
+ </Button> */}
{/* <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} /> */}
<MyButton setCreateDialog={setCreateDialog} setmodalType={setmodalType} />
{/* <Button
diff --git a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
index debec59..ce14597 100644
--- a/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnOrderModal.jsx
@@ -54,6 +54,7 @@
import _ from 'lodash';
import { DataGrid } from '@mui/x-data-grid';
import DictionarySelect from "../components/DictionarySelect";
+import DictSelect from "../components/DictSelect";
const AsnOrderModal = (props) => {
const { open, setOpen, asnId } = props;
@@ -61,6 +62,7 @@
const translate = useTranslate();
const notify = useNotify();
const refresh = useRefresh();
+
const [createDialog, setCreateDialog] = useState(false);
useEffect(() => {
@@ -74,13 +76,14 @@
if (reason !== "backdropClick") {
setOpen(false);
refresh();
- setFormData({ type: '' })
+ setFormData({ type: '', wkType: '' })
setTableData([])
}
};
const [formData, setFormData] = useState({
type: '',
+ wkType: '',
});
const [tabelData, setTableData] = useState([]);
@@ -99,6 +102,7 @@
"orders": formData,
"items": tabelData,
}
+
const res = await request.post(`/asnOrder/items/save`, parmas);
if (res?.data?.code === 200) {
setOpen(false);
@@ -107,8 +111,21 @@
notify(res.data.msg);
}
} else {
- setOpen(false);
+ const parmas = {
+ "orders": formData,
+ "items": tabelData,
+ }
+ console.log(parmas);
+ // const res = await request.post(`/asnOrder/items/save`, parmas);
+ // if (res?.data?.code === 200) {
+ // setOpen(false);
+ // refresh();
+ // } else {
+ // notify(res.data.msg);
+ // }
+ // setOpen(false);
}
+
};
@@ -141,14 +158,6 @@
}
}
- const requestSetHead = async () => {
- if (asnId !== 0) {
- const res = await request.post(`/asnOrder/update`, { ...formData });
- refresh()
- }
- }
-
-
return (
<>
<Dialog
@@ -176,25 +185,24 @@
<Form>
<Grid container spacing={2}>
<Grid item xs={4}>
- <DictionarySelect
+ <DictSelect
label={translate("table.field.asnOrder.type")}
- name="type"
value={formData.type}
- onChange={(e) => handleChange(+e.target.value, 'type')}
- size="small"
+ onChange={(e) => handleChange(e.target.value, 'type')}
dictTypeCode="sys_order_type"
+ required
/>
+
</Grid>
<Grid item xs={4}>
- <DictionarySelect
+ <DictSelect
label={translate("table.field.asnOrder.wkType")}
- name="wkType"
value={formData.wkType}
- onChange={(e) => handleChange(+e.target.value, 'wkType')}
- size="small"
+ onChange={(e) => handleChange(e.target.value, 'wkType')}
dictTypeCode="sys_business_type"
+ required
/>
</Grid>
</Grid>
@@ -237,14 +245,14 @@
const AsnOrderModalTable = ({ tabelData, setTableData, asnId }) => {
const translate = useTranslate();
+ const notify = useNotify();
- const columns = [
+ const [columns, setColumns] = useState([
{
field: 'action',
headerName: '鎿嶄綔',
- minWidth: 100,
- sticky: 'right',
- flex: 1,
+ width: 70,
+ lockPosition: 'left',
renderCell: (params) => (
<Tooltip title="Delete">
<IconButton onClick={() => handleDelete(params.row)}>
@@ -252,6 +260,7 @@
</IconButton>
</Tooltip>
),
+
},
{
field: 'matnrId',
@@ -291,7 +300,7 @@
headerName: translate('table.field.asnOrderItem.stockUnit'),
minWidth: 100,
flex: 1,
- editable: true,
+ editable: false,
},
{
field: 'purQty',
@@ -305,7 +314,7 @@
headerName: translate('table.field.asnOrderItem.purUnit'),
minWidth: 100,
flex: 1,
- editable: true,
+ editable: false,
},
{
field: 'splrCode',
@@ -322,20 +331,6 @@
editable: true,
},
{
- field: 'qrcode',
- headerName: translate('table.field.asnOrderItem.qrcode'),
- minWidth: 100,
- flex: 1,
- editable: true,
- },
- {
- field: 'barcode',
- headerName: translate('table.field.asnOrderItem.barcode'),
- minWidth: 100,
- flex: 1,
- editable: true,
- },
- {
field: 'packName',
headerName: translate('table.field.asnOrderItem.packName'),
minWidth: 100,
@@ -343,17 +338,42 @@
editable: true,
},
- ];
+ ])
- const requestSetBody = async (row) => {
- if (asnId !== 0) {
- const res = await request.post(`/asnOrderItem/update`, row);
+ let cdata = useRef([]);
+
+
+ useEffect(() => {
+ getDynamicFields();
+ }, []);
+
+ useEffect(() => {
+ cdata.current = tabelData
+ }, [tabelData]);
+
+
+ const getDynamicFields = async () => {
+ const {
+ data: { code, data, msg },
+ } = await request.get("/fields/enable/list");
+ if (code === 200) {
+ const cols = data.map(el => ({
+ field: el.fields,
+ headerName: el.fieldsAlise,
+ minWidth: 100,
+ flex: 1,
+ editable: el.unique
+ }))
+ setColumns([...columns, ...cols])
+ } else {
+ notify(msg);
}
-
}
+
+
const handleDelete = (row) => {
- const newData = _.filter(tabelData, (item) => item.matnrId !== row.matnrId);
+ const newData = _.filter(cdata.current, (item) => item.matnrId !== row.matnrId);
setTableData(newData);
};
@@ -365,7 +385,6 @@
)
);
- requestSetBody(newRow)
return newRow;
};
@@ -382,6 +401,7 @@
disableColumnSorting
disableMultipleColumnsSorting
processRowUpdate={processRowUpdate}
+ autoPageSize
/>
</div>
);
diff --git a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
index 52e92f7..612eab5 100644
--- a/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
+++ b/rsf-admin/src/page/asnOrder/AsnWareModal.jsx
@@ -18,6 +18,7 @@
import request from '@/utils/request';
import { DataGrid } from '@mui/x-data-grid';
import SaveIcon from '@mui/icons-material/Save';
+import { use } from "react";
const AsnWareModal = (props) => {
const { open, setOpen, data, setData } = props;
@@ -39,6 +40,7 @@
});
const [tableData, setTableData] = useState([]);
+ const [dyFields, setDyFields] = useState([]);
const [selectedRows, setSelectedRows] = useState([]);
const handleChange = (e) => {
@@ -49,26 +51,40 @@
}));
};
- const handleSubmit = () => {
- const selectedData = selectedRows.map(id => tableData.find(row => row.id === id));
+ const reset = () => {
+ setFormData({
+ name: '',
+ code: ''
+ })
+ }
+ const handleSubmit = () => {
+ const hasarr = data.map(el => +el.matnrId)
+ const selectedData = selectedRows.filter(item => !hasarr.includes(item)).map(id => (tableData.find(row => row.id === id)));
const value = selectedData.map((el => {
+ const dynamicFields = dyFields.reduce((acc, item) => {
+ acc[item.fields] = el['extendFields']?.[item.fields] || '';
+ return acc;
+ }, {});
return {
matnrId: el.id,
maktx: el.name,
stockUnit: el.stockUnit || '',
purUnit: el.purchaseUnit || '',
+ ...dynamicFields
}
}))
- setData(value);
+ setData([...data, ...value]);
setOpen(false);
- // refresh();
+ reset();
};
const getData = async () => {
const res = await request.post(`/matnr/page`, {
...formData,
- pageSize: 199
+ current: 1,
+ pageSize: 199,
+ orderBy: "create_time desc"
});
if (res?.data?.code === 200) {
setTableData(res.data.data.records);
@@ -79,7 +95,7 @@
useEffect(() => {
getData();
- }, []);
+ }, [open]);
const handleSearch = () => {
getData()
@@ -146,9 +162,14 @@
</Stack>
</Box>
<Box sx={{ mt: 2, height: 400, width: '100%' }}>
- <AsnWareModalTable tableData={tableData} setTableData={setTableData}
+ <AsnWareModalTable
+ tableData={tableData}
+ setTableData={setTableData}
+ dyFields={dyFields}
+ setDyFields={setDyFields}
selectedRows={selectedRows}
- setSelectedRows={setSelectedRows} />
+ setSelectedRows={setSelectedRows}
+ />
</Box>
</DialogContent>
<DialogActions sx={{ position: 'sticky', bottom: 0, backgroundColor: 'background.paper', zIndex: 1000 }}>
@@ -164,30 +185,58 @@
export default AsnWareModal;
-const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows }) => {
+const AsnWareModalTable = ({ tableData, setTableData, selectedRows, setSelectedRows, dyFields, setDyFields }) => {
const translate = useTranslate();
+ const notify = useNotify();
- const columns = [
+ const [columns, setColumns] = useState([
{ field: 'id', headerName: 'ID', width: 100 },
{ field: 'name', headerName: translate('table.field.matnr.name'), width: 100 },
{ field: 'code', headerName: translate('table.field.matnr.code'), width: 100 },
{ field: 'spec', headerName: translate('table.field.matnr.spec'), width: 100 },
{ field: 'model', headerName: translate('table.field.matnr.model'), width: 100 },
{ field: 'weight', headerName: translate('table.field.matnr.weight'), width: 100 },
- { field: 'color', headerName: translate('table.field.matnr.color'), width: 100 },
- { field: 'size', headerName: translate('table.field.matnr.size'), width: 100 },
+
{ field: 'describle', headerName: translate('table.field.matnr.describle'), width: 100 },
{ field: 'nromNum', headerName: translate('table.field.matnr.nromNum'), width: 100 },
{ field: 'unit', headerName: translate('table.field.matnr.unit'), width: 100 },
{ field: 'purchaseUnit', headerName: translate('table.field.matnr.purUnit'), width: 100 },
{ field: 'stockUnit', headerName: translate('table.field.matnr.stockUnit'), width: 100 },
{ field: 'stockLeval$', headerName: translate('table.field.matnr.stockLevel'), width: 100, sortable: false },
- ];
+ ])
+
+
const handleSelectionChange = (ids) => {
setSelectedRows(ids)
};
+
+ useEffect(() => {
+ getDynamicFields();
+ }, []);
+
+ const getDynamicFields = async () => {
+ const {
+ data: { code, data, msg },
+ } = await request.get("/fields/enable/list");
+ if (code === 200) {
+ const cols = data.map(el => ({
+ field: el.fields,
+ headerName: el.fieldsAlise,
+ minWidth: 100,
+ flex: 1,
+ editable: el.unique,
+ valueGetter: (value, row) => {
+ return row.extendFields?.[el.fields] || '';
+ },
+ }))
+ setDyFields(data)
+ setColumns([...columns, ...cols])
+ } else {
+ notify(msg);
+ }
+ }
return (
<div style={{ height: 400, width: '100%' }}>
@@ -201,7 +250,6 @@
disableColumnMenu={true}
disableColumnSorting
disableMultipleColumnsSorting
- columnBufferPx={100}
/>
</div>
);
diff --git a/rsf-admin/src/page/basicInfo/loc/LocList.jsx b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
index c218a18..b425f38 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocList.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocList.jsx
@@ -75,7 +75,14 @@
},
'& .RaDatagrid-rowCell': {
textAlign: 'left'
- }
+ },
+ '& .type .MuiTypography-root': {
+ whiteSpace: 'nowrap',
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
+ display: 'block',
+ width: '200px',
+ },
}));
const filters = [
@@ -215,7 +222,7 @@
<NumberField source="warehouseId$" label="table.field.loc.warehouseId" />
<NumberField source="areaId$" label="table.field.loc.areaId" />
<TextField source="code" label="table.field.loc.code" />
- <TextField source="typeIds$" label="table.field.loc.type" />
+ <TextField source="typeIds$" label="table.field.loc.type" cellClassName="type" />
{/* <TextField source="name" label="table.field.loc.name" /> */}
{/* <NumberField source="flagLogic" label="table.field.loc.flagLogic" />
<TextField source="fucAtrrs" label="table.field.loc.fucAtrrs" />
diff --git a/rsf-admin/src/page/components/DictSelect.jsx b/rsf-admin/src/page/components/DictSelect.jsx
new file mode 100644
index 0000000..72c9d76
--- /dev/null
+++ b/rsf-admin/src/page/components/DictSelect.jsx
@@ -0,0 +1,60 @@
+import { useState, useEffect } from 'react';
+import {
+ useTranslate, useNotify
+} from 'react-admin';
+import request from '@/utils/request';
+import { Select, MenuItem, FormControl, InputLabel } from '@mui/material';
+
+const DictSelect = (props) => {
+ const { dictTypeCode, label, value, onChange, ...params } = props;
+ const translate = useTranslate();
+ const notify = useNotify();
+ const [list, setList] = useState([]);
+
+ useEffect(() => {
+ http();
+ }, [dictTypeCode]);
+
+ const http = async () => {
+ const res = await request.post('/dictData/page', { dictTypeCode });
+ if (res?.data?.code === 200) {
+ setList(res.data.data.records.map((item) => {
+ return {
+ value: item.value,
+ label: item.label
+ };
+ }));
+ } else {
+ notify(res.data.msg);
+ }
+ };
+
+ const handleChange = (event) => {
+ const selectedValue = event.target.value;
+ if (onChange) {
+ onChange(event);
+ }
+ };
+
+ const validValue = list.some(item => item.value === value) ? value : '';
+
+ return (
+ <FormControl fullWidth>
+ <InputLabel id="demo-select-small-label">{label}</InputLabel>
+ <Select
+ labelId="demo-select-small-label"
+ value={validValue}
+ onChange={handleChange}
+ size='small'
+ >
+ {list.map((item) => (
+ <MenuItem key={item.value} value={item.value}>
+ {item.label}
+ </MenuItem>
+ ))}
+ </Select>
+ </FormControl>
+ );
+};
+
+export default DictSelect;
\ No newline at end of file
diff --git a/rsf-admin/src/page/components/DictionarySelect.jsx b/rsf-admin/src/page/components/DictionarySelect.jsx
index 2523c5d..2a0a428 100644
--- a/rsf-admin/src/page/components/DictionarySelect.jsx
+++ b/rsf-admin/src/page/components/DictionarySelect.jsx
@@ -36,6 +36,7 @@
<SelectInput
source={name}
choices={list}
+
{...parmas}
/>
);
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
index 0563c68..6b915c8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/DeviceSiteParame.java
@@ -20,12 +20,12 @@
private List<Long> typeIds;
@ApiModelProperty("浣滀笟绔欑偣")
- private List<String> sites;
+ private String sites;
@ApiModelProperty("璁惧缂栧彿")
private String deviceCode;
@ApiModelProperty("璁惧浣滀笟绔欑偣")
- private List<String> deviceSites;
+ private String deviceSites;
}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
index 9328ef1..33a5a6c 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/DeviceSiteServiceImpl.java
@@ -1,5 +1,6 @@
package com.vincent.rsf.server.manager.service.impl;
+import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.framework.exception.CoolException;
import com.vincent.rsf.server.manager.controller.params.DeviceSiteParame;
@@ -30,18 +31,20 @@
throw new CoolException("鍒濆鍖栧け璐ワ細 鍒犻櫎绔欑偣澶辫触锛侊紒");
}
}
- if (Objects.isNull(param.getDeviceSites()) || param.getDeviceSites().isEmpty()) {
+ if (Objects.isNull(param.getDeviceSites()) || StringUtils.isBlank(param.getDeviceSites())) {
throw new CoolException("鍒濆鍖栧け璐ワ細 璁惧浣滀笟绔欑偣涓嶈兘涓虹┖锛侊紒");
}
- if (Objects.isNull(param.getSites()) || param.getSites().isEmpty()) {
+ if (Objects.isNull(param.getSites()) || StringUtils.isBlank(param.getSites())) {
throw new CoolException("鍒濆鍖栧け璐�: 浣滀笟绔欑偣涓嶈兘涓虹┖锛侊紒");
}
if (Objects.isNull(param.getTypeIds()) || param.getTypeIds().isEmpty()) {
throw new CoolException("鍒濆鍖栧け璐ワ細 浣滀笟绫诲瀷涓嶈兘涓虹┖锛侊紒");
}
+ List<String> sites = Arrays.asList(StringUtils.split(param.getSites(), ","));
+ List<String> dvSites = Arrays.asList(StringUtils.split(param.getDeviceSites(), ","));
List<DeviceSite> deviceSites = new ArrayList<>();
- for (String site : param.getSites()) {
- for (String deviceSite : param.getDeviceSites()) {
+ for (String site : sites) {
+ for (String deviceSite : dvSites) {
for (Long id : param.getTypeIds()) {
DeviceSite site1 = new DeviceSite();
site1.setType(id + "")
--
Gitblit v1.9.1