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