From 6cb908e6884242b4e4bceb505f9294b27503e75a Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 7 Apr 2025 11:06:10 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20AppRouteRecordRaw=20types=EF=BC=88fr?= =?UTF-8?q?om=20xingyu=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../@core/base/typings/src/menu-record.ts | 22 +++++++++++++++-- packages/types/src/user.ts | 24 ++----------------- packages/utils/src/helpers/generate-menus.ts | 3 +-- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/packages/@core/base/typings/src/menu-record.ts b/packages/@core/base/typings/src/menu-record.ts index 21f6ab516..861bc6843 100644 --- a/packages/@core/base/typings/src/menu-record.ts +++ b/packages/@core/base/typings/src/menu-record.ts @@ -1,5 +1,23 @@ import type { Component } from 'vue'; -import type { RouteRecordRaw } from 'vue-router'; +import type { RouteMeta, RouteRecordRaw } from 'vue-router'; + +/** 路由元信息 */ +interface AppRouteRecordRaw extends Omit { + children?: AppRouteRecordRaw[]; + component?: any; + componentName?: string; + components?: any; + fullPath?: string; + icon?: string; + id?: any; + keepAlive?: boolean; + meta: RouteMeta; + name: string; + parentId?: number; + props?: any; + sort?: number; + visible?: boolean; +} /** * 扩展路由原始对象 @@ -73,4 +91,4 @@ interface MenuRecordRaw extends MenuRecordBadgeRaw { show?: boolean; } -export type { ExRouteRecordRaw, MenuRecordBadgeRaw, MenuRecordRaw }; +export type { ExRouteRecordRaw, MenuRecordBadgeRaw, MenuRecordRaw, AppRouteRecordRaw }; diff --git a/packages/types/src/user.ts b/packages/types/src/user.ts index baba7278f..478141537 100644 --- a/packages/types/src/user.ts +++ b/packages/types/src/user.ts @@ -1,5 +1,4 @@ -import type { BasicUserInfo } from '@vben-core/typings'; -import type { RouteMeta, RouteRecordRaw } from 'vue-router'; +import type { AppRouteRecordRaw, BasicUserInfo } from '@vben-core/typings'; /** 用户信息 */ interface UserInfo extends BasicUserInfo { @@ -21,23 +20,4 @@ interface AuthPermissionInfo { } -/** 路由元信息 */ -interface AppRouteRecordRaw extends Omit { - - children?: AppRouteRecordRaw[]; - component?: any; - componentName?: string; - components?: any; - fullPath?: string; - icon?: string; - keepAlive?: boolean; - meta: RouteMeta; - name: string; - parentId?: number; - props?: any; - sort?: number; - visible?: boolean; - -} - -export type { UserInfo, AuthPermissionInfo, AppRouteRecordRaw }; +export type { UserInfo, AuthPermissionInfo }; diff --git a/packages/utils/src/helpers/generate-menus.ts b/packages/utils/src/helpers/generate-menus.ts index 7f14a1a74..a4e453a45 100644 --- a/packages/utils/src/helpers/generate-menus.ts +++ b/packages/utils/src/helpers/generate-menus.ts @@ -1,9 +1,8 @@ import type { Router, RouteRecordRaw } from 'vue-router'; -import type { ExRouteRecordRaw, MenuRecordRaw, RouteRecordStringComponent } from '@vben-core/typings'; +import type { ExRouteRecordRaw, MenuRecordRaw, RouteRecordStringComponent, AppRouteRecordRaw } from '@vben-core/typings'; import { filterTree, mapTree, isHttpUrl } from '@vben-core/shared/utils'; -import type { AppRouteRecordRaw } from '@vben/types'; // TODO @芋艿:这里的报错,解决 /** * 根据 routes 生成菜单列表 From bc18fab476eeb69b20e2f214b9da5457be3853cd Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 7 Apr 2025 12:49:19 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat=EF=BC=9A=E5=A2=9E=E5=8A=A0=20dataSourc?= =?UTF-8?q?eConfig=20=E6=95=B0=E6=8D=AE=E6=BA=90=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/infra/data-source-config/index.ts | 38 ++++++ .../src/views/infra/dataSourceConfig/data.ts | 119 ++++++++++++++++++ .../views/infra/dataSourceConfig/index.vue | 114 +++++++++++++++++ .../infra/dataSourceConfig/modules/form.vue | 75 +++++++++++ 4 files changed, 346 insertions(+) create mode 100644 apps/web-antd/src/api/infra/data-source-config/index.ts create mode 100644 apps/web-antd/src/views/infra/dataSourceConfig/data.ts create mode 100644 apps/web-antd/src/views/infra/dataSourceConfig/index.vue create mode 100644 apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue diff --git a/apps/web-antd/src/api/infra/data-source-config/index.ts b/apps/web-antd/src/api/infra/data-source-config/index.ts new file mode 100644 index 000000000..2b9b7617b --- /dev/null +++ b/apps/web-antd/src/api/infra/data-source-config/index.ts @@ -0,0 +1,38 @@ +import { requestClient } from '#/api/request'; + +export namespace InfraDataSourceConfigApi { + /** 数据源配置信息 */ + export interface InfraDataSourceConfig { + id?: number; + name: string; + url: string; + username: string; + password: string; + createTime?: Date; + } +} + +/** 查询数据源配置列表 */ +export function getDataSourceConfigList() { + return requestClient.get('/infra/data-source-config/list'); +} + +/** 查询数据源配置详情 */ +export function getDataSourceConfig(id: number) { + return requestClient.get(`/infra/data-source-config/get?id=${id}`); +} + +/** 新增数据源配置 */ +export function createDataSourceConfig(data: InfraDataSourceConfigApi.InfraDataSourceConfig) { + return requestClient.post('/infra/data-source-config/create', data); +} + +/** 修改数据源配置 */ +export function updateDataSourceConfig(data: InfraDataSourceConfigApi.InfraDataSourceConfig) { + return requestClient.put('/infra/data-source-config/update', data); +} + +/** 删除数据源配置 */ +export function deleteDataSourceConfig(id: number) { + return requestClient.delete(`/infra/data-source-config/delete?id=${id}`); +} \ No newline at end of file diff --git a/apps/web-antd/src/views/infra/dataSourceConfig/data.ts b/apps/web-antd/src/views/infra/dataSourceConfig/data.ts new file mode 100644 index 000000000..71424a8f6 --- /dev/null +++ b/apps/web-antd/src/views/infra/dataSourceConfig/data.ts @@ -0,0 +1,119 @@ +import type { VbenFormSchema } from '#/adapter/form'; +import type { OnActionClickFn, VxeTableGridOptions } from '#/adapter/vxe-table'; +import type { InfraDataSourceConfigApi } from '#/api/infra/data-source-config'; + +import { useAccess } from '@vben/access'; + +const { hasAccessByCodes } = useAccess(); + +/** 新增/修改的表单 */ +export function useFormSchema(): VbenFormSchema[] { + return [ + { + component: 'Input', + fieldName: 'id', + dependencies: { + triggerFields: [''], + show: () => false, + }, + }, + { + fieldName: 'name', + label: '数据源名称', + component: 'Input', + componentProps: { + placeholder: '请输入数据源名称', + }, + rules: 'required', + }, + { + fieldName: 'url', + label: '数据源连接', + component: 'Input', + componentProps: { + placeholder: '请输入数据源连接', + }, + rules: 'required', + }, + { + fieldName: 'username', + label: '用户名', + component: 'Input', + componentProps: { + placeholder: '请输入用户名', + }, + rules: 'required', + }, + { + fieldName: 'password', + label: '密码', + component: 'Input', + componentProps: { + placeholder: '请输入密码', + type: 'password', + }, + rules: 'required', + }, + ]; +} + +/** 列表的字段 */ +export function useGridColumns( + onActionClick: OnActionClickFn, +): VxeTableGridOptions['columns'] { + return [ + { + field: 'id', + title: '主键编号', + minWidth: 100, + }, + { + field: 'name', + title: '数据源名称', + minWidth: 150, + }, + { + field: 'url', + title: '数据源连接', + minWidth: 300, + }, + { + field: 'username', + title: '用户名', + minWidth: 120, + }, + { + field: 'createTime', + title: '创建时间', + minWidth: 180, + formatter: 'formatDateTime', + }, + { + field: 'operation', + title: '操作', + minWidth: 130, + align: 'center', + fixed: 'right', + cellRender: { + attrs: { + nameField: 'name', + nameTitle: '数据源', + onClick: onActionClick, + }, + name: 'CellOperation', + options: [ + { + code: 'edit', + show: hasAccessByCodes(['infra:data-source-config:update']), + disabled: (row: any) => row.id === 0, + }, + { + code: 'delete', + show: hasAccessByCodes(['infra:data-source-config:delete']), + disabled: (row: any) => row.id === 0, + }, + ], + }, + }, + ]; +} diff --git a/apps/web-antd/src/views/infra/dataSourceConfig/index.vue b/apps/web-antd/src/views/infra/dataSourceConfig/index.vue new file mode 100644 index 000000000..eade76669 --- /dev/null +++ b/apps/web-antd/src/views/infra/dataSourceConfig/index.vue @@ -0,0 +1,114 @@ + + + \ No newline at end of file diff --git a/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue b/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue new file mode 100644 index 000000000..1978f9593 --- /dev/null +++ b/apps/web-antd/src/views/infra/dataSourceConfig/modules/form.vue @@ -0,0 +1,75 @@ + + +