From 9b9678b0b641016bdbdbacdc7b94369ccaf14aca Mon Sep 17 00:00:00 2001 From: huazhongmin Date: Wed, 24 Dec 2025 15:58:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E7=AE=A1=E7=90=86=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E5=AD=97=E5=85=B8=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web-admin/src/api/dictionary.ts | 71 +++++ web-admin/src/config/menu.ts | 5 + web-admin/src/router/index.ts | 27 ++ web-admin/src/types/dictionary.ts | 46 ++++ .../src/views/dictionary/DictionaryForm.vue | 173 +++++++++++++ .../src/views/dictionary/DictionaryList.vue | 243 ++++++++++++++++++ 6 files changed, 565 insertions(+) create mode 100644 web-admin/src/api/dictionary.ts create mode 100644 web-admin/src/types/dictionary.ts create mode 100644 web-admin/src/views/dictionary/DictionaryForm.vue create mode 100644 web-admin/src/views/dictionary/DictionaryList.vue diff --git a/web-admin/src/api/dictionary.ts b/web-admin/src/api/dictionary.ts new file mode 100644 index 0000000..22cbd4f --- /dev/null +++ b/web-admin/src/api/dictionary.ts @@ -0,0 +1,71 @@ +import request from '@/utils/request' +import type { + DictionaryPageRequest, + DictionaryCreateRequest, + DictionaryUpdateRequest, + Dictionary +} from '@/types/dictionary' +import type { ApiResponse, PageResult } from '@/types/common' + +// 分页查询字典 +export function getDictionaryPage(params: DictionaryPageRequest) { + return request>>({ + url: '/dictionary/list', + method: 'get', + params + }) +} + +// 根据ID获取字典详情 +export function getDictionaryById(id: string) { + return request>({ + url: '/dictionary/detail', + method: 'get', + params: { id } + }) +} + +// 创建字典 +export function createDictionary(data: DictionaryCreateRequest) { + return request>({ + url: '/dictionary', + method: 'post', + data + }) +} + +// 更新字典 +export function updateDictionary(data: DictionaryUpdateRequest) { + return request>({ + url: '/dictionary', + method: 'put', + data + }) +} + +// 删除字典 +export function deleteDictionary(id: string) { + return request>({ + url: '/dictionary/delete', + method: 'delete', + params: { id } + }) +} + +// 根据字典类型查询字典集合 +export function getDictionariesByType(dictType: string) { + return request>({ + url: '/dictionary/byType', + method: 'get', + params: { dictType } + }) +} + +// 根据字典类型查询启用的字典集合 +export function getEnabledDictionariesByType(dictType: string) { + return request>({ + url: '/dictionary/enabledByType', + method: 'get', + params: { dictType } + }) +} \ No newline at end of file diff --git a/web-admin/src/config/menu.ts b/web-admin/src/config/menu.ts index 6bb7479..c391692 100644 --- a/web-admin/src/config/menu.ts +++ b/web-admin/src/config/menu.ts @@ -27,6 +27,11 @@ export const menuConfig: MenuItem[] = [ title: 'AI配置管理', icon: 'Setting' }, + { + path: '/dictionary', + title: '字典管理', + icon: 'Document' + }, { path: '/tools', title: '开发工具', diff --git a/web-admin/src/router/index.ts b/web-admin/src/router/index.ts index 92d552c..0b30358 100644 --- a/web-admin/src/router/index.ts +++ b/web-admin/src/router/index.ts @@ -63,6 +63,33 @@ const routes: RouteRecordRaw[] = [ } ] }, + { + path: '/dictionary', + component: Layout, + redirect: '/dictionary/list', + meta: { title: '字典管理', icon: 'Document' }, + children: [ + { + path: 'list', + name: 'DictionaryList', + component: () => import('@/views/dictionary/DictionaryList.vue'), + meta: { title: '字典列表' } + }, + { + path: 'create', + name: 'DictionaryCreate', + component: () => import('@/views/dictionary/DictionaryForm.vue'), + meta: { title: '创建字典', hidden: true } + }, + { + path: 'edit/:id', + name: 'DictionaryEdit', + component: () => import('@/views/dictionary/DictionaryForm.vue'), + meta: { title: '编辑字典', hidden: true }, + props: true + } + ] + }, { path: '/tools', component: Layout, diff --git a/web-admin/src/types/dictionary.ts b/web-admin/src/types/dictionary.ts new file mode 100644 index 0000000..ae1b6f2 --- /dev/null +++ b/web-admin/src/types/dictionary.ts @@ -0,0 +1,46 @@ +// 字典相关类型定义 + +export interface Dictionary { + id: string + dictType: string + dictCode: string + dictName: string + dictValue?: string + sortOrder?: number + status: number + createBy?: string + updateBy?: string + remarks?: string + createTime?: string + updateTime?: string +} + +export interface DictionaryPageRequest { + current: number + size: number + dictType?: string + dictCode?: string + dictName?: string + status?: number +} + +export interface DictionaryCreateRequest { + dictType: string + dictCode: string + dictName: string + dictValue?: string + sortOrder?: number + status: number + remarks?: string +} + +export interface DictionaryUpdateRequest { + id: string + dictType: string + dictCode: string + dictName: string + dictValue?: string + sortOrder?: number + status: number + remarks?: string +} \ No newline at end of file diff --git a/web-admin/src/views/dictionary/DictionaryForm.vue b/web-admin/src/views/dictionary/DictionaryForm.vue new file mode 100644 index 0000000..24ffa05 --- /dev/null +++ b/web-admin/src/views/dictionary/DictionaryForm.vue @@ -0,0 +1,173 @@ + + + + + \ No newline at end of file diff --git a/web-admin/src/views/dictionary/DictionaryList.vue b/web-admin/src/views/dictionary/DictionaryList.vue new file mode 100644 index 0000000..89b60ea --- /dev/null +++ b/web-admin/src/views/dictionary/DictionaryList.vue @@ -0,0 +1,243 @@ + + + + + \ No newline at end of file