From db67c55c72b4f506db5f3afaf30ce8af1dcc2312 Mon Sep 17 00:00:00 2001
From: skyouc <creaycat@gmail.com>
Date: 星期五, 26 十二月 2025 11:00:22 +0800
Subject: [PATCH] no message

---
 rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx                                  |    3 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java    |    2 
 rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx                                         |    2 -
 rsf-admin/src/i18n/zh.js                                                                    |    3 +
 rsf-admin/src/page/system/menu/MenuList.jsx                                                 |   87 +++++++++++++++++++++++++++++++++++++------
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java       |    9 +++-
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java |    5 +-
 rsf-admin/src/i18n/en.js                                                                    |    5 ++
 8 files changed, 92 insertions(+), 24 deletions(-)

diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index b4c4cc8..152654b 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -217,7 +217,7 @@
         locDeadReport: 'Locs Dead Report',
         stockStatistic: 'Stock Statistic',
         statisticCount: 'Statistic Count',
-
+        preparation: "澶囨枡鍗�",
     },
     table: {
         field: {
@@ -1364,6 +1364,9 @@
         selectWave: 'Select Wave Rule',
 
     },
+    placeholder: {
+        warehouseAreasCode: "use for warehouse areas code prefix",
+    },
     request: {
         error: {
             stock: "Insufficient inventory to deliver 锛侊紒",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index ee0284b..18da485 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -1381,6 +1381,9 @@
         modiftySite: '淇敼搴撳彛',
         selectWave: '娉㈡瑙勫垯',
     },
+    placeholder: {
+        warehouseAreasCode: "鐢ㄤ簬搴撲綅缂栫爜鍓嶇紑鍗犱綅绗�",
+    },
     request: {
         error: {
             stock: "搴撳瓨涓嶈冻锛屾棤娉曟彁浜わ紒锛�",
diff --git a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
index 11ed2a0..c51b714 100644
--- a/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
+++ b/rsf-admin/src/page/orders/asnOrder/AsnOrderList.jsx
@@ -406,8 +406,6 @@
     // </Button> : )
     record.exceStatus === 1 ? <ConfirmButton label={"toolbar.complete"} color="secondary" startIcon={<TaskIcon />} onConfirm={requestComplete} /> : <></>
   )
-
-
 }
 
 const CloseButton = () => {
diff --git a/rsf-admin/src/page/system/menu/MenuList.jsx b/rsf-admin/src/page/system/menu/MenuList.jsx
index ab0e3c7..74e8c36 100644
--- a/rsf-admin/src/page/system/menu/MenuList.jsx
+++ b/rsf-admin/src/page/system/menu/MenuList.jsx
@@ -127,6 +127,8 @@
     textOverflow: 'ellipsis',
     whiteSpace: 'nowrap',
     maxWidth: 600,
+    // 纭繚鎵�鏈夊崟鍏冩牸鏈夊熀鏈殑鍐呰竟璺�
+    padding: '8px 16px',
 }));
 
 const TreeTableRow = (props) => {
@@ -139,15 +141,41 @@
 
     const isOpen = openNodes[row.id] || false;
 
+    // 鏇存槑鏄剧殑閫忔槑搴︽笎鍙�
+    const getOpacity = (currentDepth) => {
+        // 绗竴绾э細100%锛岀浜岀骇锛�75%锛岀涓夌骇锛�50%锛岀鍥涚骇锛�40%
+        const opacities = [1, 0.9, 0.8, 0.7];
+        return opacities[currentDepth] || 0.4;
+    };
+
+    const opacity = getOpacity(depth);
+
     return (
         <React.Fragment>
-            <StyledTableRow hover tabIndex={-1} key={row.id}>
-                <StyledTableCell sx={{ padding: 0 }}>
-                    {row.children && (
+            <StyledTableRow 
+                hover 
+                tabIndex={-1} 
+                key={row.id}
+                sx={{
+                    opacity: depth > 0 ? opacity : 1,
+                    // 娣诲姞鑳屾櫙鑹叉笎鍙樺寮烘晥鏋�
+                    backgroundColor: depth > 0 ? `rgba(0, 0, 0, ${0.02 * (3 - depth)})` : 'inherit',
+                }}
+            >
+                <StyledTableCell sx={{ 
+                    padding: 0, 
+                    width: 60,
+                    // 杩涗竴姝ュ噺灏忕缉杩涜窛绂诲埌12px
+                    paddingLeft: depth * 4
+                }}>
+                    {row.children && row.children.length > 0 && (
                         <IconButton
                             aria-label="expand row"
                             size="small"
                             onClick={() => toggleNode(row.id)}
+                            sx={{
+                                opacity: depth > 0 ? opacity : 1,
+                            }}
                         >
                             {isOpen ? <KeyboardArrowDownIcon /> : <KeyboardArrowRightIcon />}
                         </IconButton>
@@ -164,10 +192,19 @@
                                 key={column.id}
                                 align={column.align || 'left'}
                                 style={{
-                                    paddingLeft: idx === 0 && (depth * 16 + 16),
-                                    opacity: column.id === 'icon' && .6
+                                    // 鍚嶇О鍒椾篃浣跨敤12px缂╄繘
+                                    paddingLeft: idx === 0 ? (depth * 24 + 16) : 16,
+                                    // opacity: column.id === 'icon' && .6
                                 }}
-                                onClick={() => toggleNode(row.id)}
+                                onClick={() => column.id === 'name' && toggleNode(row.id)}
+                                sx={{
+                                    opacity: column.id === 'icon' ? 0.6 : (depth > 0 ? opacity : 1),
+                                    fontWeight: 400,
+                                    // 浣跨敤瀛椾綋澶у皬鎴栭鑹叉潵鍖哄垎灞傜骇
+                                    fontSize: depth === 0 ? '0.95rem' : '0.9rem',
+                                    // 鎴栬�呬娇鐢ㄤ笉鍚岀殑棰滆壊
+                                    color: depth === 0 ? 'text.primary' : `rgba(0, 0, 0, ${opacity})`,
+                                }}
                             >
                                 {column.format ? column.format(value) : value}
                             </StyledTableCell>
@@ -176,18 +213,30 @@
                 })}
                 <StyledTableCell>
                     <Tooltip title="Edit">
-                        <IconButton onClick={() => onEdit(row)}>
+                        <IconButton 
+                            onClick={() => onEdit(row)}
+                            sx={{
+                                opacity: depth > 0 ? opacity : 1,
+                            }}
+                            size="small"
+                        >
                             <Edit />
                         </IconButton>
                     </Tooltip>
                     <Tooltip title="Delete">
-                        <IconButton onClick={() => onDelete(row)}>
+                        <IconButton 
+                            onClick={() => onDelete(row)}
+                            sx={{
+                                opacity: depth > 0 ? opacity : 1,
+                            }}
+                            size="small"
+                        >
                             <Delete />
                         </IconButton>
                     </Tooltip>
                 </StyledTableCell>
             </StyledTableRow>
-            {row.children && isOpen && (
+            {row.children && row.children.length > 0 && isOpen && (
                 row.children.map((child) => (
                     <TreeTableRow
                         key={child.id}
@@ -217,6 +266,14 @@
     const [editRecord, setEditRecord] = React.useState(null);
     const [openNodes, setOpenNodes] = React.useState({});
     const [expandAll, setExpandAll] = React.useState(false);
+    const notifyState = React.useRef({ last: '', at: 0 });
+    const pushNotify = React.useCallback((type, msg) => {
+        const text = typeof msg === 'string' ? msg : (msg || '');
+        const now = Date.now();
+        if (notifyState.current.last === text && now - notifyState.current.at < 1500) return;
+        notifyState.current = { last: text, at: now };
+        notify(text, { type, messageArgs: { _: text } });
+    }, [notify]);
 
     const http = async () => {
         const res = await request.post(RESOURCE + '/tree', {
@@ -225,7 +282,8 @@
         if (res?.data?.code === 200) {
             setTreeData(res.data.data);
         } else {
-            notify(res.data.msg);
+            const msg = translate('ra.notification.http_error', { _: res?.data?.msg || 'Request failed' });
+            pushNotify('warning', msg);
         }
     }
 
@@ -255,10 +313,12 @@
                 {
                     onSuccess: () => {
                         handleRefresh();
-                        notify('Department deleted successfully', { type: 'info', messageArgs: { _: 'Department deleted successfully' } });
+                        const msg = translate('ra.message.delete_success', { _: 'Deleted successfully' });
+                        pushNotify('success', msg);
                     },
                     onError: (error) => {
-                        notify(`Error: ${error.message}`, { type: 'warning', messageArgs: { _: `Error: ${error.message}` } });
+                        const msg = translate('ra.notification.http_error', { _: error?.message || 'Network error' });
+                        pushNotify('error', msg);
                     },
                 }
             );
@@ -270,6 +330,7 @@
             const newExpandAll = !prevExpandAll;
             const newOpenNodes = {};
             const updateOpenNodes = (nodes) => {
+                if (!nodes) return;
                 nodes.forEach(node => {
                     newOpenNodes[node.id] = newExpandAll;
                     if (node.children) {
@@ -392,4 +453,4 @@
     );
 };
 
-export default MenuList;
\ No newline at end of file
+export default MenuList;
diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
index 3d0ee89..f7af039 100644
--- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
+++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
@@ -103,11 +103,12 @@
                     source="code"
                     validate={[required()]}
                     parse={(v) => v}
+                    placeholder={translate("placeholder.warehouseAreasCode")}
                   />
                   <AutocompleteInput
                     choices={dicts}
                     optionText="label"
-                    label="table.field.asnOrder.type"
+                    label="table.field.warehouseAreas.type"
                     source="type"
                     optionValue="value"
                     parse={v => v}
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java
index e68e8c8..bf11e25 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java
@@ -127,10 +127,13 @@
     public R update(@RequestBody Loc loc) {
         loc.setUpdateBy(getLoginUserId());
         String join = StringUtils.join(loc.getTypeIds(), ",");
-        loc.setType(join);
-        if (Objects.isNull(loc.getTypeIds())) {
-            throw new CoolException("搴撲綅绫诲瀷涓嶈兘涓虹┖锛侊紒");
+        if (!Objects.isNull(loc.getTypeIds())) {
+            loc.setType(join);
         }
+        if (Objects.isNull(loc.getTypeIds()) && !Objects.isNull(loc.getType())) {
+            loc.setTypeIds(Arrays.asList(Long.valueOf(loc.getType())));
+        }
+
         if (!locService.updateById(loc)) {
             return R.error("Update Fail");
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java
index 86ee120..e14b884 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java
@@ -104,18 +104,17 @@
 
         Warehouse warehouse1 = warehouseService.getById(warehouse.getId());
         if (!warehouse.getName().equals(warehouse1.getName())) {
-            List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getName, warehouse1.getName()));
+            List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getName, warehouse.getName()));
             if (!areasList.isEmpty()) {
                 throw new CoolException("浠撳簱鍚嶅凡瀛樺湪锛侊紒");
             }
         }
         if (!warehouse.getCode().equals(warehouse1.getCode())) {
-            List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getCode, warehouse1.getCode()));
+            List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getCode, warehouse.getCode()));
             if (!areasList.isEmpty()) {
                 throw new CoolException("浠撳簱缂栫爜宸插瓨鍦紒锛�");
             }
         }
-
 
         if (!warehouseService.updateById(warehouse)) {
             return R.error("Update Fail");
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
index 0e59c09..9c7b6cc 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -115,7 +115,7 @@
         Integer chanl = 0; //榛樿绗竴宸烽亾
         for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
             try{
-                Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getChannel(),param.getStartRow());
+                Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getChannel(), param.getStartRow());
                 for (List<Integer> node : shelves.nodes){
                     if (node.contains(r)) {
                         if (!Cools.isEmpty(param.getStartChannel()) && param.getStartChannel() > 0){

--
Gitblit v1.9.1