diff --git a/nkebao/src/components/DeviceSelection/index.tsx b/nkebao/src/components/DeviceSelection/index.tsx index 126d43fc..a62625d2 100644 --- a/nkebao/src/components/DeviceSelection/index.tsx +++ b/nkebao/src/components/DeviceSelection/index.tsx @@ -30,6 +30,7 @@ interface DeviceSelectionProps { selectedListMaxHeight?: number; // 新增,已选列表最大高度,默认500 showInput?: boolean; // 新增 showSelectedList?: boolean; // 新增 + readonly?: boolean; // 新增 } const PAGE_SIZE = 20; @@ -45,6 +46,7 @@ const DeviceSelection: React.FC = ({ selectedListMaxHeight = 300, // 默认300 showInput = true, showSelectedList = true, + readonly = false, }) => { // 弹窗控制 const [popupVisible, setPopupVisible] = useState(false); @@ -99,6 +101,7 @@ const DeviceSelection: React.FC = ({ // 打开弹窗时获取第一页 const openPopup = () => { + if (readonly) return; setSearchQuery(""); setCurrentPage(1); setRealVisible(true); @@ -155,6 +158,7 @@ const DeviceSelection: React.FC = ({ // 删除已选设备 const handleRemoveDevice = (id: string) => { + if (readonly) return; onSelect(selectedDevices.filter((d) => d !== id)); }; @@ -289,8 +293,13 @@ const DeviceSelection: React.FC = ({ value={getDisplayText()} onClick={openPopup} prefix={} - allowClear + allowClear={!readonly} size="large" + readOnly={readonly} + disabled={readonly} + style={ + readonly ? { background: "#f5f5f5", cursor: "not-allowed" } : {} + } /> )} @@ -332,30 +341,32 @@ const DeviceSelection: React.FC = ({ > {device.name} -