From a17da68fcd3bcfd823ef92593a6600b81831e8f3 Mon Sep 17 00:00:00 2001 From: peng Date: Fri, 24 Oct 2025 08:36:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E4=BA=A7=E7=AE=A1=E7=90=86=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=89=8D=E7=AB=AF=20-=20=E5=BC=80=E5=8F=91=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=AD=97=E5=85=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dictionary/components/CategoryForm.tsx | 159 ++++++++ .../dictionary/components/CategoryList.tsx | 211 ++++++++++ .../components/DeleteConfirmDialog.tsx | 84 ++++ .../central-config/system/dictionary/page.tsx | 381 +++++++++++++++++- .../system/dictionary/reducer.ts | 109 +++++ .../central-config/system/dictionary/types.ts | 67 +++ crop-x/src/components/ui/select.tsx | 2 +- 7 files changed, 1007 insertions(+), 6 deletions(-) create mode 100644 crop-x/src/app/(app)/central-config/system/dictionary/components/CategoryForm.tsx create mode 100644 crop-x/src/app/(app)/central-config/system/dictionary/components/CategoryList.tsx create mode 100644 crop-x/src/app/(app)/central-config/system/dictionary/components/DeleteConfirmDialog.tsx create mode 100644 crop-x/src/app/(app)/central-config/system/dictionary/reducer.ts create mode 100644 crop-x/src/app/(app)/central-config/system/dictionary/types.ts diff --git a/crop-x/src/app/(app)/central-config/system/dictionary/components/CategoryForm.tsx b/crop-x/src/app/(app)/central-config/system/dictionary/components/CategoryForm.tsx new file mode 100644 index 0000000..bffc759 --- /dev/null +++ b/crop-x/src/app/(app)/central-config/system/dictionary/components/CategoryForm.tsx @@ -0,0 +1,159 @@ +'use client'; + +import React from 'react'; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogFooter } from '@/components/ui/dialog'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { Label } from '@/components/ui/label'; +import { Textarea } from '@/components/ui/textarea'; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; +import { Switch } from '@/components/ui/switch'; +import { CategoryFormData, CategoryDictionary } from '../types'; + +interface CategoryFormProps { + open: boolean; + editing: CategoryDictionary | null; + formData: CategoryFormData; + onFormDataChange: (data: Partial) => void; + onOpenChange: (open: boolean) => void; + onSave: () => void; +} + +export function CategoryForm({ + open, + editing, + formData, + onFormDataChange, + onOpenChange, + onSave, +}: CategoryFormProps) { + const handleSave = () => { + if (!formData.code.trim() || !formData.name.trim() || !formData.value.trim() || !formData.label.trim()) { + return false; + } + onSave(); + return true; + }; + + return ( + + + + + {editing ? '编辑字典' : '新增字典'} + + + {editing ? '编辑数据字典' : '添加新数据字典'} + + +
+
+
+ + onFormDataChange({ code: e.target.value })} + placeholder="GENDER_MALE" + disabled={editing?.isSystem} + /> +
+
+ + onFormDataChange({ name: e.target.value })} + placeholder="性别-男" + /> +
+
+
+ + +
+
+
+ + onFormDataChange({ value: e.target.value })} + placeholder="male" + disabled={editing?.isSystem} + /> +

+ 程序中使用的值,建议使用英文 +

+
+
+ + onFormDataChange({ label: e.target.value })} + placeholder="男" + /> +

+ 界面上显示的文本 +

+
+
+
+ +