From 7972683f56368cd8ce7ef8bb7f1d087416f4a3e7 Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期一, 02 二月 2026 13:23:35 +0800
Subject: [PATCH] 容器管理-编辑可入库区  选中数据排序  选择文字排序 兼容修改后的其他调用方法

---
 rsf-admin/src/page/components/DictionarySelect.jsx |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)

diff --git a/rsf-admin/src/page/components/DictionarySelect.jsx b/rsf-admin/src/page/components/DictionarySelect.jsx
index aa489d2..41101ee 100644
--- a/rsf-admin/src/page/components/DictionarySelect.jsx
+++ b/rsf-admin/src/page/components/DictionarySelect.jsx
@@ -1,10 +1,11 @@
 import EditIcon from '@mui/icons-material/Edit';
-import { useState, useEffect } from 'react';
+import { useState, useEffect, useMemo } from 'react';
 import {
     Button, useListContext, SelectInput,
     required, SelectArrayInput,
     useTranslate, useNotify
 } from 'react-admin';
+import { useFormContext } from 'react-hook-form';
 import request from '@/utils/request';
 
 const DictionarySelect = (props) => {
@@ -19,8 +20,12 @@
     } = props;
     const translate = useTranslate();
     const notify = useNotify();
+    const { watch } = useFormContext();
     const [list, setList] = useState([]);
     const [loading, setLoading] = useState(false);
+    
+    // 鑾峰彇褰撳墠琛ㄥ崟鍊�
+    const currentValue = watch(name);
 
     useEffect(() => {
         http();
@@ -54,12 +59,33 @@
         }
     };
 
+    // 纭繚褰撳墠鍊煎湪閫夐」涓紝濡傛灉涓嶅湪涓旀鍦ㄥ姞杞斤紝娣诲姞鍗犱綅閫夐」
+    const choices = useMemo(() => {
+        if (!list || list.length === 0) {
+            // 濡傛灉鍒楄〃涓虹┖浣嗗綋鍓嶆湁鍊硷紝娣诲姞鍗犱綅閫夐」浠ラ伩鍏嶈鍛�
+            if (currentValue !== undefined && currentValue !== null && currentValue !== '') {
+                return [{ id: currentValue, name: String(currentValue) }];
+            }
+            return [];
+        }
+        
+        // 妫�鏌ュ綋鍓嶅�兼槸鍚﹀湪閫夐」涓�
+        const valueExists = list.some(item => String(item.id) === String(currentValue));
+        
+        // 濡傛灉褰撳墠鍊间笉鍦ㄩ�夐」涓紝娣诲姞瀹冿紙鍙兘鏄姞杞藉欢杩熷鑷寸殑锛�
+        if (currentValue !== undefined && currentValue !== null && currentValue !== '' && !valueExists) {
+            return [...list, { id: currentValue, name: String(currentValue) }];
+        }
+        
+        return list;
+    }, [list, currentValue]);
+
     const InputComponent = multiple ? SelectArrayInput : SelectInput;
 
     return (
         <InputComponent
             source={name}
-            choices={list}
+            choices={choices}
             isLoading={loading}
             {...parmas}
         />

--
Gitblit v1.9.1