From 632bb5a9a0f07c01ffba53e9009d69c4a50c2bd7 Mon Sep 17 00:00:00 2001
From: yangyang
Date: 星期五, 21 三月 2025 12:50:01 +0800
Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop

---
 rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx   |    2 
 rsf-admin/src/page/basicInfo/loc/BatchModal.jsx            |   33 +++++
 rsf-admin/src/page/basicInfo/locType/LocTypeEdit.jsx       |    7 +
 rsf-admin/package.json                                     |    1 
 rsf-admin/src/page/basicInfo/locType/LocTypeList.jsx       |    1 
 rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx          |   52 ++++++++--
 rsf-admin/src/page/basicInfo/loc/InitModal.jsx             |   16 +--
 rsf-admin/src/page/basicInfo/loc/LocCreate.jsx             |    6 +
 rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx |    1 
 rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx          |    2 
 rsf-admin/src/page/basicInfo/locType/LocTypeCreate.jsx     |    7 +
 rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx   |    1 
 rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx |    4 
 rsf-admin/src/i18n/zh.js                                   |    1 
 rsf-admin/src/page/basicInfo/loc/LocEdit.jsx               |    6 +
 rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx           |    2 
 rsf-admin/package-lock.json                                |  125 ++++++++++++++++--------
 rsf-admin/pnpm-lock.yaml                                   |   12 ++
 rsf-admin/src/i18n/en.js                                   |    1 
 rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx   |    4 
 rsf-admin/.env                                             |    4 
 21 files changed, 208 insertions(+), 80 deletions(-)

diff --git a/rsf-admin/.env b/rsf-admin/.env
index a8ce658..ac2bce4 100644
--- a/rsf-admin/.env
+++ b/rsf-admin/.env
@@ -1,3 +1,3 @@
-VITE_BASE_IP=192.168.4.24
-# VITE_BASE_IP=47.76.147.249
+VITE_BASE_IP=192.168.4.16
+#VITE_BASE_IP=47.76.147.249
 VITE_BASE_PORT=8080
diff --git a/rsf-admin/package-lock.json b/rsf-admin/package-lock.json
index 28a49f8..2c2e71f 100644
--- a/rsf-admin/package-lock.json
+++ b/rsf-admin/package-lock.json
@@ -23,14 +23,17 @@
         "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",
         "react-router-dom": "^6.26.1",
         "react-syntax-highlighter": "^15.5.0",
+        "react-to-print": "^3.0.5",
         "three": "^0.155.0",
         "tweedle.js": "^2.1.0"
       },
@@ -367,7 +370,7 @@
     },
     "node_modules/@emotion/babel-plugin": {
       "version": "11.13.5",
-      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
+      "resolved": "https://registry.npmmirror.com/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz",
       "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==",
       "license": "MIT",
       "dependencies": {
@@ -386,13 +389,13 @@
     },
     "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": {
       "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
+      "resolved": "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-1.9.0.tgz",
       "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
       "license": "MIT"
     },
     "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
       "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
       "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
       "license": "MIT",
       "engines": {
@@ -435,7 +438,7 @@
     },
     "node_modules/@emotion/react": {
       "version": "11.14.0",
-      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz",
+      "resolved": "https://registry.npmmirror.com/@emotion/react/-/react-11.14.0.tgz",
       "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==",
       "license": "MIT",
       "dependencies": {
@@ -477,7 +480,7 @@
     },
     "node_modules/@emotion/styled": {
       "version": "11.14.0",
-      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz",
+      "resolved": "https://registry.npmmirror.com/@emotion/styled/-/styled-11.14.0.tgz",
       "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==",
       "license": "MIT",
       "dependencies": {
@@ -505,7 +508,7 @@
     },
     "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
       "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
+      "resolved": "https://registry.npmmirror.com/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz",
       "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==",
       "license": "MIT",
       "peerDependencies": {
@@ -1247,7 +1250,7 @@
     },
     "node_modules/@mui/private-theming": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/private-theming/-/private-theming-6.4.8.tgz",
       "integrity": "sha512-sWwQoNSn6elsPTAtSqCf+w5aaGoh7AASURNmpy+QTTD/zwJ0Jgwt0ZaaP6mXq2IcgHxYnYloM/+vJgHPMkRKTQ==",
       "license": "MIT",
       "dependencies": {
@@ -1274,7 +1277,7 @@
     },
     "node_modules/@mui/private-theming/node_modules/@mui/utils": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/utils/-/utils-6.4.8.tgz",
       "integrity": "sha512-C86gfiZ5BfZ51KqzqoHi1WuuM2QdSKoFhbkZeAfQRB+jCc4YNhhj11UXFVMMsqBgZ+Zy8IHNJW3M9Wj/LOwRXQ==",
       "license": "MIT",
       "dependencies": {
@@ -1304,13 +1307,13 @@
     },
     "node_modules/@mui/private-theming/node_modules/react-is": {
       "version": "19.0.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-19.0.0.tgz",
       "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
       "license": "MIT"
     },
     "node_modules/@mui/styled-engine": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/styled-engine/-/styled-engine-6.4.8.tgz",
       "integrity": "sha512-oyjx1b1FvUCI85ZMO4trrjNxGm90eLN3Ohy0AP/SqK5gWvRQg1677UjNf7t6iETOKAleHctJjuq0B3aXO2gtmw==",
       "license": "MIT",
       "dependencies": {
@@ -1344,7 +1347,7 @@
     },
     "node_modules/@mui/system": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/system/-/system-6.4.8.tgz",
       "integrity": "sha512-gV7iBHoqlsIenU2BP0wq14BefRoZcASZ/4LeyuQglayBl+DfLX5rEd3EYR3J409V2EZpR0NOM1LATAGlNk2cyA==",
       "license": "MIT",
       "dependencies": {
@@ -1384,7 +1387,7 @@
     },
     "node_modules/@mui/system/node_modules/@mui/utils": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/utils/-/utils-6.4.8.tgz",
       "integrity": "sha512-C86gfiZ5BfZ51KqzqoHi1WuuM2QdSKoFhbkZeAfQRB+jCc4YNhhj11UXFVMMsqBgZ+Zy8IHNJW3M9Wj/LOwRXQ==",
       "license": "MIT",
       "dependencies": {
@@ -1414,13 +1417,13 @@
     },
     "node_modules/@mui/system/node_modules/react-is": {
       "version": "19.0.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-19.0.0.tgz",
       "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
       "license": "MIT"
     },
     "node_modules/@mui/types": {
       "version": "7.2.24",
-      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.24.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/types/-/types-7.2.24.tgz",
       "integrity": "sha512-3c8tRt/CbWZ+pEg7QpSwbdxOk36EfmhbKf6AGZsD1EcLDLTSZoxxJ86FVtcjxvjuhdyBiWKSTGZFaXCnidO2kw==",
       "license": "MIT",
       "peerDependencies": {
@@ -2311,7 +2314,7 @@
     },
     "node_modules/@types/parse-json": {
       "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz",
+      "resolved": "https://registry.npmmirror.com/@types/parse-json/-/parse-json-4.0.2.tgz",
       "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==",
       "license": "MIT"
     },
@@ -2341,7 +2344,7 @@
     },
     "node_modules/@types/react-transition-group": {
       "version": "4.4.12",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz",
+      "resolved": "https://registry.npmmirror.com/@types/react-transition-group/-/react-transition-group-4.4.12.tgz",
       "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==",
       "license": "MIT",
       "peerDependencies": {
@@ -2356,7 +2359,7 @@
     },
     "node_modules/@types/trusted-types": {
       "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+      "resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz",
       "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
       "license": "MIT",
       "optional": true
@@ -2793,7 +2796,7 @@
     },
     "node_modules/attr-accept": {
       "version": "2.2.5",
-      "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.5.tgz",
+      "resolved": "https://registry.npmmirror.com/attr-accept/-/attr-accept-2.2.5.tgz",
       "integrity": "sha512-0bDNnY/u6pPwHDMoF0FieU354oBi0a8rD9FcsLwzcGWbc8KS8KPIi7y+s13OlVY+gMWc/9xEMUgNE6Qm8ZllYQ==",
       "license": "MIT",
       "engines": {
@@ -2802,7 +2805,7 @@
     },
     "node_modules/autosuggest-highlight": {
       "version": "3.3.4",
-      "resolved": "https://registry.npmjs.org/autosuggest-highlight/-/autosuggest-highlight-3.3.4.tgz",
+      "resolved": "https://registry.npmmirror.com/autosuggest-highlight/-/autosuggest-highlight-3.3.4.tgz",
       "integrity": "sha512-j6RETBD2xYnrVcoV1S5R4t3WxOlWZKyDQjkwnggDPSjF5L4jV98ZltBpvPvbkM1HtoSe5o+bNrTHyjPbieGeYA==",
       "license": "MIT",
       "dependencies": {
@@ -2836,7 +2839,7 @@
     },
     "node_modules/babel-plugin-macros": {
       "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
+      "resolved": "https://registry.npmmirror.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
       "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
       "license": "MIT",
       "dependencies": {
@@ -2851,7 +2854,7 @@
     },
     "node_modules/babel-plugin-macros/node_modules/resolve": {
       "version": "1.22.10",
-      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
+      "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz",
       "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
       "license": "MIT",
       "dependencies": {
@@ -3070,7 +3073,7 @@
     },
     "node_modules/cosmiconfig": {
       "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
+      "resolved": "https://registry.npmmirror.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
       "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
       "license": "MIT",
       "dependencies": {
@@ -3108,7 +3111,7 @@
     },
     "node_modules/css-mediaquery": {
       "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
+      "resolved": "https://registry.npmmirror.com/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
       "integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q==",
       "license": "BSD"
     },
@@ -3282,7 +3285,7 @@
     },
     "node_modules/dompurify": {
       "version": "3.2.4",
-      "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.4.tgz",
+      "resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.2.4.tgz",
       "integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
       "license": "(MPL-2.0 OR Apache-2.0)",
       "optionalDependencies": {
@@ -3302,7 +3305,7 @@
     },
     "node_modules/error-ex": {
       "version": "1.3.2",
-      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "resolved": "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
       "license": "MIT",
       "dependencies": {
@@ -3943,7 +3946,7 @@
     },
     "node_modules/file-selector": {
       "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-2.1.2.tgz",
+      "resolved": "https://registry.npmmirror.com/file-selector/-/file-selector-2.1.2.tgz",
       "integrity": "sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==",
       "license": "MIT",
       "dependencies": {
@@ -3955,7 +3958,7 @@
     },
     "node_modules/file-selector/node_modules/tslib": {
       "version": "2.8.1",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz",
       "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
       "license": "0BSD"
     },
@@ -3981,7 +3984,7 @@
     },
     "node_modules/find-root": {
       "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+      "resolved": "https://registry.npmmirror.com/find-root/-/find-root-1.1.0.tgz",
       "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==",
       "license": "MIT"
     },
@@ -4525,7 +4528,7 @@
     },
     "node_modules/is-arrayish": {
       "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "resolved": "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz",
       "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
       "license": "MIT"
     },
@@ -4586,7 +4589,7 @@
     },
     "node_modules/is-core-module": {
       "version": "2.16.1",
-      "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+      "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz",
       "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
       "license": "MIT",
       "dependencies": {
@@ -4927,6 +4930,12 @@
         "js-yaml": "bin/js-yaml.js"
       }
     },
+    "node_modules/jsbarcode": {
+      "version": "3.11.6",
+      "resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz",
+      "integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==",
+      "license": "MIT"
+    },
     "node_modules/jsesc": {
       "version": "2.5.2",
       "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz",
@@ -4946,7 +4955,7 @@
     },
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+      "resolved": "https://registry.npmmirror.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
       "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
       "license": "MIT"
     },
@@ -5021,7 +5030,7 @@
     },
     "node_modules/lines-and-columns": {
       "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+      "resolved": "https://registry.npmmirror.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
       "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
       "license": "MIT"
     },
@@ -5427,7 +5436,7 @@
     },
     "node_modules/parse-json": {
       "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+      "resolved": "https://registry.npmmirror.com/parse-json/-/parse-json-5.2.0.tgz",
       "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
       "license": "MIT",
       "dependencies": {
@@ -5737,6 +5746,12 @@
         "ra-core": "^5.6.3"
       }
     },
+    "node_modules/ra-language-chinese": {
+      "version": "2.0.10",
+      "resolved": "https://registry.npmmirror.com/ra-language-chinese/-/ra-language-chinese-2.0.10.tgz",
+      "integrity": "sha512-k+X6XdkBEZnmpKIJZj9Lb77Lj8LCmterilJTj2ovp3i8/H/dLo9IujASfjFypjHnVUpN7Y63LT19kgPrS6+row==",
+      "license": "MIT"
+    },
     "node_modules/ra-language-english": {
       "version": "5.6.3",
       "resolved": "https://registry.npmjs.org/ra-language-english/-/ra-language-english-5.6.3.tgz",
@@ -5764,7 +5779,7 @@
     },
     "node_modules/react-admin": {
       "version": "5.6.3",
-      "resolved": "https://registry.npmjs.org/react-admin/-/react-admin-5.6.3.tgz",
+      "resolved": "https://registry.npmmirror.com/react-admin/-/react-admin-5.6.3.tgz",
       "integrity": "sha512-nZAlX1uRKgQKAQcOxMwugkjbDL7CPuU799lxoaxLK59O7AbkQl161uVqWLNUo4eaZRCpXCVqIe2an4lGlxs10g==",
       "license": "MIT",
       "dependencies": {
@@ -5787,7 +5802,7 @@
     },
     "node_modules/react-admin/node_modules/@mui/core-downloads-tracker": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/core-downloads-tracker/-/core-downloads-tracker-6.4.8.tgz",
       "integrity": "sha512-vjP4+A1ybyCRhDZC7r5EPWu/gLseFZxaGyPdDl94vzVvk6Yj6gahdaqcjbhkaCrJjdZj90m3VioltWPAnWF/zw==",
       "license": "MIT",
       "funding": {
@@ -5797,7 +5812,7 @@
     },
     "node_modules/react-admin/node_modules/@mui/icons-material": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/icons-material/-/icons-material-6.4.8.tgz",
       "integrity": "sha512-LKGWiLWRyoOw3dWxZQ+lV//mK+4DVTTAiLd2ljmJdD6XV0rDB8JFKjRD9nyn9cJAU5XgWnii7ZR3c93ttUnMKg==",
       "license": "MIT",
       "dependencies": {
@@ -5823,7 +5838,7 @@
     },
     "node_modules/react-admin/node_modules/@mui/material": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/material/-/material-6.4.8.tgz",
       "integrity": "sha512-5S9UTjKZZBd9GfbcYh/nYfD9cv6OXmj5Y7NgKYfk7JcSoshp8/pW5zP4wecRiroBSZX8wcrywSgogpVNO+5W0Q==",
       "license": "MIT",
       "dependencies": {
@@ -5872,7 +5887,7 @@
     },
     "node_modules/react-admin/node_modules/@mui/utils": {
       "version": "6.4.8",
-      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.4.8.tgz",
+      "resolved": "https://registry.npmmirror.com/@mui/utils/-/utils-6.4.8.tgz",
       "integrity": "sha512-C86gfiZ5BfZ51KqzqoHi1WuuM2QdSKoFhbkZeAfQRB+jCc4YNhhj11UXFVMMsqBgZ+Zy8IHNJW3M9Wj/LOwRXQ==",
       "license": "MIT",
       "dependencies": {
@@ -5902,7 +5917,7 @@
     },
     "node_modules/react-admin/node_modules/ra-ui-materialui": {
       "version": "5.6.3",
-      "resolved": "https://registry.npmjs.org/ra-ui-materialui/-/ra-ui-materialui-5.6.3.tgz",
+      "resolved": "https://registry.npmmirror.com/ra-ui-materialui/-/ra-ui-materialui-5.6.3.tgz",
       "integrity": "sha512-3KOCo0JWBJ5BeqVb8g1cdnw00+GMnpI7jlX1VqX7YIyDT3TwDbFx1sDGUOvNiLrN7qZA5dIrZWfdYlutjZT/2Q==",
       "license": "MIT",
       "dependencies": {
@@ -5934,9 +5949,22 @@
     },
     "node_modules/react-admin/node_modules/react-is": {
       "version": "19.0.0",
-      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "resolved": "https://registry.npmmirror.com/react-is/-/react-is-19.0.0.tgz",
       "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
       "license": "MIT"
+    },
+    "node_modules/react-barcode": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmmirror.com/react-barcode/-/react-barcode-1.6.1.tgz",
+      "integrity": "sha512-pc4ftnO5syHa/UjCruEeRsomlhoxKSugIgTA8T4dH0fvc89UMHL+/1Sp25IAphqG44pJkE5hMXhv89iS09jQyw==",
+      "license": "ISC",
+      "dependencies": {
+        "jsbarcode": "^3.8.0",
+        "prop-types": "^15.6.2"
+      },
+      "peerDependencies": {
+        "react": "16 - 19"
+      }
     },
     "node_modules/react-dom": {
       "version": "18.3.1",
@@ -5952,7 +5980,7 @@
     },
     "node_modules/react-dropzone": {
       "version": "14.3.8",
-      "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz",
+      "resolved": "https://registry.npmmirror.com/react-dropzone/-/react-dropzone-14.3.8.tgz",
       "integrity": "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==",
       "license": "MIT",
       "dependencies": {
@@ -6097,6 +6125,15 @@
         "react": ">= 0.14.0"
       }
     },
+    "node_modules/react-to-print": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmmirror.com/react-to-print/-/react-to-print-3.0.5.tgz",
+      "integrity": "sha512-Z15MwMOzYCHWi26CZeFNwflAg7Nr8uWD6FTj+EkfIOjYyjr0MXGbI0c7rF4Fgrbj3XG9hFndb1ourxpPz2RAiA==",
+      "license": "MIT",
+      "peerDependencies": {
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ~19"
+      }
+    },
     "node_modules/react-transition-group": {
       "version": "4.4.5",
       "resolved": "https://registry.npmmirror.com/react-transition-group/-/react-transition-group-4.4.5.tgz",
@@ -6188,7 +6225,7 @@
     },
     "node_modules/remove-accents": {
       "version": "0.4.4",
-      "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.4.tgz",
+      "resolved": "https://registry.npmmirror.com/remove-accents/-/remove-accents-0.4.4.tgz",
       "integrity": "sha512-EpFcOa/ISetVHEXqu+VwI96KZBmq+a8LJnGkaeFw45epGlxIZz5dhEEnNZMsQXgORu3qaMoLX4qJCzOik6ytAg==",
       "license": "MIT"
     },
@@ -6442,7 +6479,7 @@
     },
     "node_modules/source-map": {
       "version": "0.5.7",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz",
       "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
       "license": "BSD-3-Clause",
       "engines": {
@@ -7076,7 +7113,7 @@
     },
     "node_modules/yaml": {
       "version": "1.10.2",
-      "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
+      "resolved": "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz",
       "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
       "license": "ISC",
       "engines": {
diff --git a/rsf-admin/package.json b/rsf-admin/package.json
index 18c05b2..3bf09ac 100644
--- a/rsf-admin/package.json
+++ b/rsf-admin/package.json
@@ -37,6 +37,7 @@
     "react-router": "^6.22.0",
     "react-router-dom": "^6.26.1",
     "react-syntax-highlighter": "^15.5.0",
+    "react-to-print": "^3.0.5",
     "three": "^0.155.0",
     "tweedle.js": "^2.1.0"
   },
diff --git a/rsf-admin/pnpm-lock.yaml b/rsf-admin/pnpm-lock.yaml
index c99442f..f66ce5c 100644
--- a/rsf-admin/pnpm-lock.yaml
+++ b/rsf-admin/pnpm-lock.yaml
@@ -89,6 +89,9 @@
       react-syntax-highlighter:
         specifier: ^15.5.0
         version: 15.6.1(react@18.3.1)
+      react-to-print:
+        specifier: ^3.0.5
+        version: 3.0.5(react@18.3.1)
       three:
         specifier: ^0.155.0
         version: 0.155.0
@@ -2244,6 +2247,11 @@
     resolution: {integrity: sha512-OqJ2/vL7lEeV5zTJyG7kmARppUjiB9h9udl4qHQjjgEos66z00Ia0OckwYfRxCSFrW8RJIBnsBwQsHZbVPspqg==}
     peerDependencies:
       react: '>= 0.14.0'
+
+  react-to-print@3.0.5:
+    resolution: {integrity: sha512-Z15MwMOzYCHWi26CZeFNwflAg7Nr8uWD6FTj+EkfIOjYyjr0MXGbI0c7rF4Fgrbj3XG9hFndb1ourxpPz2RAiA==}
+    peerDependencies:
+      react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ~19
 
   react-transition-group@4.4.5:
     resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==}
@@ -4921,6 +4929,10 @@
       react: 18.3.1
       refractor: 3.6.0
 
+  react-to-print@3.0.5(react@18.3.1):
+    dependencies:
+      react: 18.3.1
+
   react-transition-group@4.4.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
     dependencies:
       '@babel/runtime': 7.26.9
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index 72fc56e..dad32ca 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -358,6 +358,7 @@
             },
             locType: {
                 uuid: "uuid",
+                code: "code",
                 name: "name",
                 regex: "regex",
             },
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 3a328f8..f2ae4ea 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -359,6 +359,7 @@
             },
             locType: {
                 name: "搴撲綅绫诲瀷",
+                code: "缂栧彿",
                 regex: "瑙勫垯琛ㄨ揪寮�",
             },
             locArea: {
diff --git a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
index cee27c7..92b5fe3 100644
--- a/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/BatchModal.jsx
@@ -19,6 +19,7 @@
     useCreateController,
     useListContext,
     useRefresh,
+    SelectArrayInput
 } from 'react-admin';
 import {
     Dialog,
@@ -38,7 +39,8 @@
     TableCell,
     Tooltip,
     IconButton,
-    styled
+    styled,
+
 
 
 } from '@mui/material';
@@ -53,7 +55,6 @@
 import StatusSelectInput from "../../components/StatusSelectInput";
 
 
-
 const InitModal = ({ open, setOpen }) => {
     const refresh = useRefresh();
     const translate = useTranslate();
@@ -62,6 +63,7 @@
     const notify = useNotify();
 
     const [formData, setFormData] = useState({
+        "warehouseId": null,
         "areaId": null,
         "type": null,
         'status': null
@@ -80,8 +82,10 @@
 
     const reset = () => {
         setFormData({
+            "warehouseId": null,
             "areaId": null,
             "type": null,
+            "typeIds": null,
             'status': null
         })
     }
@@ -95,6 +99,7 @@
             ...prevData,
             [name]: value
         }));
+        refresh()
     };
 
     const removeEmptyKeys = (obj) => {
@@ -132,8 +137,25 @@
                         <Grid container spacing={2}>
                             <Grid item xs={4}>
                                 <ReferenceInput
+                                    source="warehouseId"
+                                    reference="warehouse"
+                                >
+                                    <AutocompleteInput
+                                        label="table.field.loc.warehouseId"
+                                        optionText="name"
+                                        onChange={(value) => handleChange(value, 'warehouseId')}
+                                        value={formData.warehouseId}
+                                        filterToQuery={(val) => ({ name: val })}
+                                    />
+                                </ReferenceInput>
+
+                            </Grid>
+
+                            <Grid item xs={4}>
+                                <ReferenceInput
                                     source="areaId"
                                     reference="warehouseAreas"
+                                    filter={{ warehouseId: formData.warehouseId }}
                                 >
                                     <AutocompleteInput
                                         label="table.field.loc.areaId"
@@ -147,14 +169,17 @@
                             </Grid>
 
                             <Grid item xs={4}>
-                                <DictionarySelect
+                                {/* <DictionarySelect
                                     label={translate("table.field.loc.type")}
                                     name="type"
                                     value={formData.type}
                                     onChange={(e) => handleChange(e.target.value, 'type')}
                                     size="small"
                                     dictTypeCode="sys_loc_type"
-                                />
+                                /> */}
+                                <ReferenceArrayInput source="typeIds" reference="locType" >
+                                    <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
+                                </ReferenceArrayInput>
                             </Grid>
 
                             <Grid item xs={4}>
diff --git a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx
index 80c6a2b..eab60e8 100644
--- a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx
@@ -19,6 +19,7 @@
     useCreateController,
     useListContext,
     useRefresh,
+    SelectArrayInput
 } from 'react-admin';
 import {
     Dialog,
@@ -70,7 +71,8 @@
         "startBay": undefined,
         "startLev": undefined,
         "startRow": undefined,
-        "type": ""
+        "type": "",
+        "typeIds": undefined,
     });
 
     const handleClose = (event, reason) => {
@@ -138,15 +140,9 @@
                             </Grid>
 
                             <Grid item xs={4}>
-                                <DictionarySelect
-                                    label={translate("table.field.loc.type")}
-                                    name="type"
-                                    value={formData.type}
-                                    onChange={(e) => handleChange(e.target.value, 'type')}
-                                    size="small"
-                                    validate={[required()]}
-                                    dictTypeCode="sys_loc_type"
-                                />
+                                <ReferenceArrayInput source="typeIds" reference="locType" >
+                                    <SelectArrayInput label="table.field.loc.type" onChange={(e) => handleChange(e.target.value, 'typeIds')} />
+                                </ReferenceArrayInput>
                             </Grid>
 
                             <Grid item xs={4}>
diff --git a/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx b/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx
index 00e9108..9b368c1 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocCreate.jsx
@@ -54,7 +54,11 @@
         notify(error.message || 'common.response.fail', { type: 'error', messageArgs: { _: error.message } });
     };
 
+    const [warehouseId, setWrehouseId] = useState();
 
+    const warehouseChange = (val) => {
+        setWrehouseId(val)
+    }
 
 
     return (
@@ -98,6 +102,7 @@
                                             label="table.field.loc.warehouseId"
                                             optionText="name"
                                             validate={[required()]}
+                                            onChange={warehouseChange}
                                             filterToQuery={(val) => ({ name: val })}
                                         />
                                     </ReferenceInput>
@@ -106,6 +111,7 @@
                                     <ReferenceInput
                                         source="areaId"
                                         reference="warehouseAreas"
+                                        filter={{ warehouseId }}
                                     >
                                         <AutocompleteInput
                                             label="table.field.loc.areaId"
diff --git a/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx
index 1505a82..89ad805 100644
--- a/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/loc/LocEdit.jsx
@@ -46,7 +46,11 @@
 const LocEdit = () => {
     const translate = useTranslate();
     const dicts = JSON.parse(localStorage.getItem('sys_dicts'))?.filter(dict => (dict.dictTypeCode == 'sys_loc_type')) || [];
+    const [warehouseId, setWrehouseId] = useState();
 
+    const warehouseChange = (val) => {
+        setWrehouseId(val)
+    }
 
     return (
         <Edit
@@ -78,6 +82,7 @@
                                         label="table.field.loc.warehouseId"
                                         optionText="name"
                                         validate={[required()]}
+                                        onChange={warehouseChange}
                                         filterToQuery={(val) => ({ name: val })}
                                     />
                                 </ReferenceInput>
@@ -86,6 +91,7 @@
                                 <ReferenceInput
                                     source="areaId"
                                     reference="warehouseAreas"
+                                    filter={{ warehouseId }}
                                 >
                                     <AutocompleteInput
                                         label="table.field.loc.areaId"
diff --git a/rsf-admin/src/page/basicInfo/locType/LocTypeCreate.jsx b/rsf-admin/src/page/basicInfo/locType/LocTypeCreate.jsx
index 7ba5cd2..562ede3 100644
--- a/rsf-admin/src/page/basicInfo/locType/LocTypeCreate.jsx
+++ b/rsf-admin/src/page/basicInfo/locType/LocTypeCreate.jsx
@@ -101,6 +101,13 @@
                                 </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
+                                        label="table.field.locType.code"
+                                        source="code"
+                                        parse={v => v}
+                                    />
+                                </Grid>
+                                <Grid item xs={6} display="flex" gap={1}>
+                                    <TextInput
                                         label="table.field.locType.regex"
                                         source="regex"
                                         parse={v => v}
diff --git a/rsf-admin/src/page/basicInfo/locType/LocTypeEdit.jsx b/rsf-admin/src/page/basicInfo/locType/LocTypeEdit.jsx
index 24b68d7..a630b99 100644
--- a/rsf-admin/src/page/basicInfo/locType/LocTypeEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/locType/LocTypeEdit.jsx
@@ -80,6 +80,13 @@
                         </Stack>
                         <Stack direction='row' gap={2}>
                             <TextInput
+                                label="table.field.locType.code"
+                                source="code"
+                                parse={v => v}
+                            />
+                        </Stack>
+                        <Stack direction='row' gap={2}>
+                            <TextInput
                                 label="table.field.locType.regex"
                                 source="regex"
                                 parse={v => v}
diff --git a/rsf-admin/src/page/basicInfo/locType/LocTypeList.jsx b/rsf-admin/src/page/basicInfo/locType/LocTypeList.jsx
index 7ce506d..45a4e4d 100644
--- a/rsf-admin/src/page/basicInfo/locType/LocTypeList.jsx
+++ b/rsf-admin/src/page/basicInfo/locType/LocTypeList.jsx
@@ -116,6 +116,7 @@
                     <NumberField source="id" />
                     {/* <TextField source="uuid" label="table.field.locType.uuid" /> */}
                     <TextField source="name" label="table.field.locType.name" />
+                    <TextField source="code" label="table.field.locType.code" />
                     <TextField source="regex" label="table.field.locType.regex" />
 
                     <ReferenceField source="updateBy" label="common.field.updateBy" reference="user" link={false} sortable={false}>
diff --git a/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx b/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx
index 9a461af..25a484e 100644
--- a/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/BatchModal.jsx
@@ -52,8 +52,6 @@
 import { DataGrid } from '@mui/x-data-grid';
 import StatusSelectInput from "../../components/StatusSelectInput";
 
-
-
 const InitModal = ({ open, setOpen }) => {
     const refresh = useRefresh();
     const translate = useTranslate();
diff --git a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
index ba9be18..98e6a0c 100644
--- a/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/MatnrList.jsx
@@ -205,7 +205,7 @@
                     <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 fields = data.map(el => <TextField key={el.fields} source={`extendFields.[${el.fields}]`} label={el.fieldsAlise} />)
                 const opt = <WrapperField key="opt" cellClassName="opt" label="common.field.opt">
                     <EditButton sx={{ padding: '1px', fontSize: '.75rem' }} />
                     <EnableButton />
diff --git a/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx b/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx
index 46c4d0d..4bb496e 100644
--- a/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx
+++ b/rsf-admin/src/page/basicInfo/matnr/PrintModal.jsx
@@ -29,11 +29,11 @@
     TextField,
     Box,
     Button,
-    Paper,
-    TableContainer,
-    Table,
-    TableHead,
-    TableBody,
+    Radio,
+    RadioGroup,
+    FormControlLabel,
+    FormControl,
+    FormLabel,
     TableRow,
     TableCell,
     Tooltip,
@@ -52,15 +52,14 @@
 import { DataGrid } from '@mui/x-data-grid';
 import StatusSelectInput from "../../components/StatusSelectInput";
 
-
+import { useReactToPrint } from "react-to-print";
 
 const InitModal = ({ open, setOpen }) => {
     const refresh = useRefresh();
     const translate = useTranslate();
-
-
     const notify = useNotify();
-
+    const contentRef = useRef(null);
+    const reactToPrintFn = useReactToPrint({ contentRef });
 
     const handleClose = (event, reason) => {
         if (reason !== "backdropClick") {
@@ -68,16 +67,45 @@
         }
     };
 
+    const [value, setValue] = useState('temp1');
+
+    const handleChange = (event) => {
+        setValue(event.target.value);
+    };
+
+    const handlePrint = () => {
+        // handleClose()
+        reactToPrintFn()
+    };
+
     return (
         <Dialog open={open} maxWidth="sm" fullWidth>
             <DialogCloseButton onClose={handleClose} />
             <DialogTitle>{translate('toolbar.print')}</DialogTitle>
-            <DialogContent sx={{ mt: 2 }}>
-                1
+            <DialogContent >
+                <FormControl >
+                    <RadioGroup
+                        row
+                        aria-labelledby="demo-controlled-radio-buttons-group"
+                        name="controlled-radio-buttons-group"
+                        value={value}
+                        onChange={handleChange}
+                        size="small"
+                        sx={{ justifyContent: 'center' }}
+                    >
+                        <FormControlLabel value="temp1" control={<Radio />} label="妯℃澘1" size="small" />
+                    </RadioGroup>
+                </FormControl>
+
+                <Box>
+                    <div ref={contentRef}>
+                        11
+                    </div>
+                </Box>
             </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 />}>
+                    <Button onClick={handlePrint} variant="contained" startIcon={<SaveIcon />}>
                         {translate('toolbar.confirm')}
                     </Button>
                 </Box>
diff --git a/rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx b/rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx
index 82d24d1..fc150e8 100644
--- a/rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx
+++ b/rsf-admin/src/page/basicInfo/warehouse/WarehouseCreate.jsx
@@ -94,14 +94,14 @@
                                     />
 
                                 </Grid>
-                                {/* <Grid item xs={6} display="flex" gap={1}>
+                                <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
                                         label="table.field.warehouse.code"
                                         source="code"
                                         validate={[required()]}
                                         parse={v => v}
                                     />
-                                </Grid> */}
+                                </Grid>
                                 <Grid item xs={6} display="flex" gap={1}>
                                     <TextInput
                                         label="table.field.warehouse.name"
diff --git a/rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx b/rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx
index e95a188..18c97bd 100644
--- a/rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx
+++ b/rsf-admin/src/page/basicInfo/warehouse/WarehouseEdit.jsx
@@ -80,14 +80,14 @@
                                 autoFocus
                             />
                         </Stack>
-                        {/* <Stack direction='row' gap={2}>
+                        <Stack direction='row' gap={2}>
                             <TextInput
                                 label="table.field.warehouse.code"
                                 source="code"
                                 validate={[required()]}
                                 parse={v => v}
                             />
-                        </Stack> */}
+                        </Stack>
 
                         <Stack direction='row' gap={2}>
                             <TextInput
diff --git a/rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx b/rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx
index f026d2f..ca962cd 100644
--- a/rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx
+++ b/rsf-admin/src/page/basicInfo/warehouse/WarehouseList.jsx
@@ -123,7 +123,7 @@
                     <NumberField source="id" />
                     <TextField source="factory" label="table.field.warehouse.factory" />
                     <TextField source="name" label="table.field.warehouse.name" />
-                    {/* <TextField source="code" label="table.field.warehouse.code" /> */}
+                    <TextField source="code" label="table.field.warehouse.code" />
                     <TextField source="address" label="table.field.warehouse.address" />
                     <TextField source="longitude" label="table.field.warehouse.longitude" />
                     <TextField source="latgitude" label="table.field.warehouse.latgitude" />
diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
index ab4847f..ea0d05f 100644
--- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
+++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasCreate.jsx
@@ -124,6 +124,7 @@
                     <AutocompleteInput
                       label="table.field.warehouseAreas.wareId"
                       optionText="name"
+                      validate={[required()]}
                       filterToQuery={(val) => ({ name: val })}
                     />
                   </ReferenceInput>
diff --git a/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx b/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx
index fcf1745..e197ebd 100644
--- a/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx
+++ b/rsf-admin/src/page/warehouseAreas/WarehouseAreasEdit.jsx
@@ -96,6 +96,7 @@
                                 <AutocompleteInput
                                     label="table.field.warehouseAreas.wareId"
                                     optionText="name"
+                                    validate={[required()]}
                                     filterToQuery={(val) => ({ name: val })}
                                 />
                             </ReferenceInput>

--
Gitblit v1.9.1