From 18a2dc33667c279d82a59ddc68db290bc1c0cd57 Mon Sep 17 00:00:00 2001 From: ziv Date: Fri, 29 Apr 2022 01:46:10 +0000 Subject: [PATCH 001/110] =?UTF-8?q?decodeFields=20=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=88=9D=E5=A7=8B=E5=8C=96=E8=83=BD=E5=8A=9B?= =?UTF-8?q?,=20=E5=AE=8C=E7=BE=8E=E6=94=AF=E6=8C=81=E5=AD=90=E7=BA=A7?= =?UTF-8?q?=E5=85=83=E7=B4=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-ui-admin/src/utils/formGenerator.js | 27 +++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/yudao-ui-admin/src/utils/formGenerator.js b/yudao-ui-admin/src/utils/formGenerator.js index 248e0b23e..d7417d9b1 100644 --- a/yudao-ui-admin/src/utils/formGenerator.js +++ b/yudao-ui-admin/src/utils/formGenerator.js @@ -1,13 +1,32 @@ /** * 将服务端返回的 fields 字符串数组,解析成 JSON 数组 + * 如果指定了 variables 参数可对表单进行初始化 * * @param fields JSON 字符串数组 + * @param variables Object 表单初始值 * @returns {*[]} JSON 数组 */ -export function decodeFields(fields) { - const drawingList = [] - fields.forEach(item => { - drawingList.push(JSON.parse(item)) +export function decodeFields(fields, variables) { + const drawingList = (fields || []).map(json => { + const item = JSON.parse(json) + + if (typeof variables === 'undefined' ) return item + + const setDefault = (item, variables) => { + if (typeof variables[item.__vModel__] !== 'undefined') { + item.__config__.defaultValue = variables[item.__vModel__] + } + if (item.__config__.children && item.__config__.children.length) { + item.__config__.children.forEach(child => { + setDefault(child, variables) + }) + } + } + + setDefault(item, variables) + + return item }) + return drawingList } From b8e5eeb271cc9b783916083a085c0d1cd7efdb18 Mon Sep 17 00:00:00 2001 From: "@C" Date: Wed, 27 Jul 2022 07:24:36 +0000 Subject: [PATCH 002/110] =?UTF-8?q?update=20yudao-server/src/test/java/cn/?= =?UTF-8?q?iocoder/yudao/ProjectReactor.java.=20=E8=A7=A3=E5=86=B3=20?= =?UTF-8?q?=E4=B8=80=E9=94=AE=E6=94=B9=E5=8C=85=20=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E5=8F=91=E7=94=9F=E7=9A=84=E7=9B=AE=E5=BD=95=E9=97=AE=E9=A2=98?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/cn/iocoder/yudao/ProjectReactor.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java b/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java index e3b8c11c8..2d0861f1b 100644 --- a/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java +++ b/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java @@ -53,6 +53,11 @@ public class ProjectReactor { log.info("[main][新项目目录检测 ({})已存在,请更改新的目录,程序退出]", projectBaseDirNew); return; } + //如果新目录中存在 PACKAGE_NAME, ARTIFACT_ID 等关键字,路径会被替换,导致生成的文件不在预期目录 + if(StrUtil.containsAny(projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID, StrUtil.upperFirst(ARTIFACT_ID))) { + log.info("[main][新项目目录检测 ({}) 存在冲突名称「{}」或者「{}」,请更改新的目录,程序退出]", projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID); + return; + } log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew); // 获得需要复制的文件 log.info("[main][开始获得需要重写的文件,预计需要 10-20 秒]"); From b6df0c336ca5b352d831bcd88277aea176f9e84a Mon Sep 17 00:00:00 2001 From: wangzaikun <15100409853@163.com> Date: Sun, 31 Jul 2022 10:07:29 +0800 Subject: [PATCH 003/110] =?UTF-8?q?fix:=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E6=A8=A1=E6=9D=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/codegen/vue3/api/api.ts.vm | 12 ++++++------ .../main/resources/codegen/vue3/views/index.vue.vm | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm index b37365a07..69da81493 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/api/api.ts.vm @@ -5,31 +5,31 @@ const request = useAxios() #set ($baseURL = "/${table.moduleName}/${simpleClassName_strikeCase}") // 查询${table.classComment}列表 -export const getPostPageApi = async (params: ${simpleClassName}PageReqVO) => { +export const get${simpleClassName}PageApi = async (params: ${simpleClassName}PageReqVO) => { return await request.get({ url: '${baseURL}/page', params }) } // 查询${table.classComment}详情 -export const getPostApi = async (id: number) => { +export const get${simpleClassName}Api = async (id: number) => { return await request.get({ url: '${baseURL}/get?id=' + id }) } // 新增${table.classComment} -export const createPostApi = async (data: ${simpleClassName}VO) => { +export const create${simpleClassName}Api = async (data: ${simpleClassName}VO) => { return await request.post({ url: '${baseURL}/create', data }) } // 修改${table.classComment} -export const updatePostApi = async (data: ${simpleClassName}VO) => { +export const update${simpleClassName}Api = async (data: ${simpleClassName}VO) => { return await request.put({ url: '${baseURL}/update', data }) } // 删除${table.classComment} -export const deletePostApi = async (id: number) => { +export const delete${simpleClassName}Api = async (id: number) => { return await request.delete({ url: '${baseURL}/delete?id=' + id }) } // 导出${table.classComment} Excel -export const exportPostApi = async (params: ${simpleClassName}ExcelReqVO) => { +export const export${simpleClassName}Api = async (params: ${simpleClassName}ExcelReqVO) => { return await request.download({ url: '${baseURL}/export-excel', params }) } diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm index 7d1b18b4f..c497a1801 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3/views/index.vue.vm @@ -6,9 +6,9 @@ import { useTable } from '@/hooks/web/useTable' import { useI18n } from '@/hooks/web/useI18n' import { FormExpose } from '@/components/Form' - import type { ${simpleClassName}VO } from '@/api/system/post/types' - import { rules, allSchemas } from './post.data' - import * as ${simpleClassName}Api from '@/api/system/post' + import type { ${simpleClassName}VO } from '@/api/${table.moduleName}/${simpleClassName}/types' + import { rules, allSchemas } from './${simpleClassName}.data' + import * as ${simpleClassName}Api from '@/api/${table.moduleName}/${simpleClassName}' const { t } = useI18n() // 国际化 // ========== 列表相关 ========== From c8fcb6d3ed35266a25af45819c6377aa0ce6698e Mon Sep 17 00:00:00 2001 From: cksspk Date: Mon, 1 Aug 2022 09:36:57 +0800 Subject: [PATCH 004/110] =?UTF-8?q?[fix]=20=E4=BB=A3=E7=A0=81=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E8=A7=84=E8=8C=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/cn/iocoder/yudao/ProjectReactor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java b/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java index 2d0861f1b..5a8da1b20 100644 --- a/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java +++ b/yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java @@ -50,12 +50,12 @@ public class ProjectReactor { String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录 log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew); if (FileUtil.exist(projectBaseDirNew)) { - log.info("[main][新项目目录检测 ({})已存在,请更改新的目录,程序退出]", projectBaseDirNew); + log.error("[main][新项目目录检测 ({})已存在,请更改新的目录!程序退出]", projectBaseDirNew); return; } - //如果新目录中存在 PACKAGE_NAME, ARTIFACT_ID 等关键字,路径会被替换,导致生成的文件不在预期目录 - if(StrUtil.containsAny(projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID, StrUtil.upperFirst(ARTIFACT_ID))) { - log.info("[main][新项目目录检测 ({}) 存在冲突名称「{}」或者「{}」,请更改新的目录,程序退出]", projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID); + // 如果新目录中存在 PACKAGE_NAME,ARTIFACT_ID 等关键字,路径会被替换,导致生成的文件不在预期目录 + if (StrUtil.containsAny(projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID, StrUtil.upperFirst(ARTIFACT_ID))) { + log.error("[main][新项目目录检测 ({}) 存在冲突名称「{}」或者「{}」,请更改新的目录!程序退出]", projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID); return; } log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew); From 340790dec4a080af91132d61c7579b47939c2d60 Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 1 Aug 2022 09:47:11 +0800 Subject: [PATCH 005/110] chore: update deps --- sql/mysql/vue3-menu.sql | 2 ++ yudao-ui-admin-vue3/package.json | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/sql/mysql/vue3-menu.sql b/sql/mysql/vue3-menu.sql index c5df92186..a92da0d1b 100644 --- a/sql/mysql/vue3-menu.sql +++ b/sql/mysql/vue3-menu.sql @@ -257,5 +257,7 @@ INSERT INTO `system_menu` VALUES (1264, '客户端查询', 'system:oauth2-client INSERT INTO `system_menu` VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0'); INSERT INTO `system_menu` VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0'); INSERT INTO `system_menu` VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1281, '可视化报表', '', 1, 12, 0, '/visualization', 'chart', NULL, 0, b'1', b'1', '1', '2022-07-10 20:22:15', '1', '2022-07-10 20:33:30', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1282, '积木报表', '', 2, 1, 1281, 'jimu-report', 'example', 'visualization/jmreport/index', 0, b'1', b'1', '1', '2022-07-10 20:26:36', '1', '2022-07-28 21:17:34', b'0'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json index 667a2f1a1..22024f5f0 100644 --- a/yudao-ui-admin-vue3/package.json +++ b/yudao-ui-admin-vue3/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi-vue-pro-vue3", - "version": "1.6.3.1601", + "version": "1.6.3.1611", "description": "基于vue3、element-plus、typesScript、vite3", "author": "xingyu", "private": false, @@ -69,7 +69,7 @@ "@typescript-eslint/parser": "^5.31.0", "@vitejs/plugin-vue": "^3.0.1", "@vitejs/plugin-vue-jsx": "^2.0.0", - "autoprefixer": "^10.4.7", + "autoprefixer": "^10.4.8", "eslint": "^8.20.0", "eslint-config-prettier": "^8.5.0", "eslint-define-config": "^1.5.1", @@ -92,15 +92,15 @@ "stylelint-order": "^5.0.0", "typescript": "4.7.4", "unplugin-vue-define-options": "^0.6.2", - "vite": "3.0.3", + "vite": "3.0.4", "vite-plugin-compression": "^0.5.1", "vite-plugin-eslint": "^1.7.0", "vite-plugin-html": "^3.2.0", "vite-plugin-purge-icons": "^0.8.2", - "vite-plugin-style-import": "^1.4.1", + "vite-plugin-style-import": "1.4.1", "vite-plugin-svg-icons": "^2.0.1", "vite-plugin-windicss": "^1.8.7", - "vue-tsc": "^0.39.2", + "vue-tsc": "^0.39.4", "windicss": "^3.5.6" }, "engines": { From 58cdc0be132964df2997195674a32aed915ca843 Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 1 Aug 2022 09:58:19 +0800 Subject: [PATCH 006/110] fix: fix menu active bug --- sql/mysql/vue3-menu.sql | 4 ++-- yudao-ui-admin-vue3/src/api/infra/codegen/types.ts | 1 + .../src/components/Menu/src/Menu.vue | 4 ++-- .../Menu/src/components/useRenderMenuItem.tsx | 14 ++++++-------- .../src/components/TagsView/src/TagsView.vue | 6 ++---- yudao-ui-admin-vue3/src/views/Home/Index.vue | 7 ++++++- 6 files changed, 19 insertions(+), 17 deletions(-) diff --git a/sql/mysql/vue3-menu.sql b/sql/mysql/vue3-menu.sql index a92da0d1b..9e9c709b5 100644 --- a/sql/mysql/vue3-menu.sql +++ b/sql/mysql/vue3-menu.sql @@ -257,7 +257,7 @@ INSERT INTO `system_menu` VALUES (1264, '客户端查询', 'system:oauth2-client INSERT INTO `system_menu` VALUES (1265, '客户端创建', 'system:oauth2-client:create', 3, 2, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:23', b'0'); INSERT INTO `system_menu` VALUES (1266, '客户端更新', 'system:oauth2-client:update', 3, 3, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:28', b'0'); INSERT INTO `system_menu` VALUES (1267, '客户端删除', 'system:oauth2-client:delete', 3, 4, 1263, '', '', '', 0, b'1', b'1', '', '2022-05-10 16:26:33', '1', '2022-05-11 00:31:33', b'0'); -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1281, '可视化报表', '', 1, 12, 0, '/visualization', 'chart', NULL, 0, b'1', b'1', '1', '2022-07-10 20:22:15', '1', '2022-07-10 20:33:30', b'0'); -INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1282, '积木报表', '', 2, 1, 1281, 'jimu-report', 'example', 'visualization/jmreport/index', 0, b'1', b'1', '1', '2022-07-10 20:26:36', '1', '2022-07-28 21:17:34', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1281, '可视化报表', '', 1, 12, 0, '/visualization', 'ep:histogram', NULL, 0, b'1', b'1', '1', '2022-07-10 20:22:15', '1', '2022-07-10 20:33:30', b'0'); +INSERT INTO `system_menu` (`id`, `name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`, `visible`, `keep_alive`, `creator`, `create_time`, `updater`, `update_time`, `deleted`) VALUES (1282, '积木报表', '', 2, 1, 1281, 'jimu-report', 'ep:histogram', 'visualization/jmreport/index', 0, b'1', b'1', '1', '2022-07-10 20:26:36', '1', '2022-07-28 21:17:34', b'0'); SET FOREIGN_KEY_CHECKS = 1; diff --git a/yudao-ui-admin-vue3/src/api/infra/codegen/types.ts b/yudao-ui-admin-vue3/src/api/infra/codegen/types.ts index d4f87f3a9..57d9e3871 100644 --- a/yudao-ui-admin-vue3/src/api/infra/codegen/types.ts +++ b/yudao-ui-admin-vue3/src/api/infra/codegen/types.ts @@ -1,4 +1,5 @@ export type CodegenTableVO = { + id: number tableId: number isParentMenuIdValid: boolean dataSourceConfigId: number diff --git a/yudao-ui-admin-vue3/src/components/Menu/src/Menu.vue b/yudao-ui-admin-vue3/src/components/Menu/src/Menu.vue index 78cede0c1..9fc79961e 100644 --- a/yudao-ui-admin-vue3/src/components/Menu/src/Menu.vue +++ b/yudao-ui-admin-vue3/src/components/Menu/src/Menu.vue @@ -94,8 +94,8 @@ export default defineComponent({ > {{ default: () => { - const { renderMenuItem } = useRenderMenuItem(unref(routers), unref(menuMode)) - return renderMenuItem() + const { renderMenuItem } = useRenderMenuItem(unref(menuMode)) + return renderMenuItem(unref(routers)) } }} diff --git a/yudao-ui-admin-vue3/src/components/Menu/src/components/useRenderMenuItem.tsx b/yudao-ui-admin-vue3/src/components/Menu/src/components/useRenderMenuItem.tsx index 4e785d232..17a520a61 100644 --- a/yudao-ui-admin-vue3/src/components/Menu/src/components/useRenderMenuItem.tsx +++ b/yudao-ui-admin-vue3/src/components/Menu/src/components/useRenderMenuItem.tsx @@ -1,23 +1,21 @@ import { ElSubMenu, ElMenuItem } from 'element-plus' import type { RouteMeta } from 'vue-router' -import { getAllParentPath, hasOneShowingChild } from '../helper' +import { hasOneShowingChild } from '../helper' import { isUrl } from '@/utils/is' import { useRenderMenuTitle } from './useRenderMenuTitle' import { useDesign } from '@/hooks/web/useDesign' import { pathResolve } from '@/utils/routerHelper' export const useRenderMenuItem = ( - allRouters: AppRouteRecordRaw[] = [], + // allRouters: AppRouteRecordRaw[] = [], menuMode: 'vertical' | 'horizontal' ) => { - const renderMenuItem = (routers?: AppRouteRecordRaw[]) => { - return (routers || allRouters).map((v) => { + const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => { + return routers.map((v) => { const meta = (v.meta ?? {}) as RouteMeta if (!meta.hidden) { const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v) - const fullPath = isUrl(v.path) - ? v.path - : getAllParentPath(allRouters, v.path).join('/') + const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath(allRouters, v.path).join('/') const { renderMenuTitle } = useRenderMenuTitle() @@ -46,7 +44,7 @@ export const useRenderMenuItem = ( > {{ title: () => renderMenuTitle(meta), - default: () => renderMenuItem(v.children) + default: () => renderMenuItem(v.children!, fullPath) }} ) diff --git a/yudao-ui-admin-vue3/src/components/TagsView/src/TagsView.vue b/yudao-ui-admin-vue3/src/components/TagsView/src/TagsView.vue index 64e701b6f..f5662dc42 100644 --- a/yudao-ui-admin-vue3/src/components/TagsView/src/TagsView.vue +++ b/yudao-ui-admin-vue3/src/components/TagsView/src/TagsView.vue @@ -492,15 +492,12 @@ watch( } } - &__item + &__item { - margin-left: 4px; - } - &__item { position: relative; top: 2px; height: calc(~'100% - 4px'); padding-right: 25px; + margin-left: 4px; font-size: 12px; cursor: pointer; border: 1px solid #d9d9d9; @@ -528,6 +525,7 @@ watch( &__item.is-active { color: var(--el-color-white); background-color: var(--el-color-primary); + border: 1px solid var(--el-color-primary); .@{prefix-cls}__item--close { :deep(span) { color: var(--el-color-white) !important; diff --git a/yudao-ui-admin-vue3/src/views/Home/Index.vue b/yudao-ui-admin-vue3/src/views/Home/Index.vue index 695e73c23..db371fb03 100644 --- a/yudao-ui-admin-vue3/src/views/Home/Index.vue +++ b/yudao-ui-admin-vue3/src/views/Home/Index.vue @@ -208,7 +208,12 @@ const getUserAccessSource = async () => { 'legend.data', data.map((v) => t(v.name)) ) - set(pieOptionsData, 'series.data', data) + pieOptionsData!.series![0].data = data.map((v) => { + return { + name: t(v.name), + value: v.value + } + }) } const barOptionsData = reactive(barOptions) as EChartsOption From 7a164ecdffe3a7db01b612538c2ab3b3b51fb498 Mon Sep 17 00:00:00 2001 From: zy <317328629@qq.com> Date: Mon, 1 Aug 2022 14:54:21 +0800 Subject: [PATCH 007/110] =?UTF-8?q?fix=EF=BC=9A=E6=89=93=E5=BC=80=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=8E=A7=E5=88=B6=E5=8F=B0?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/controller/admin/spu/ProductSpuController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java index 71bfa82bd..82c6b5df5 100755 --- a/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java +++ b/yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java @@ -69,7 +69,7 @@ public class ProductSpuController { @GetMapping("/list") @ApiOperation("获得商品spu列表") - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = Long.class) + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class) @PreAuthorize("@ss.hasPermission('product:spu:query')") public CommonResult> getSpuList(@RequestParam("ids") Collection ids) { List list = spuService.getSpuList(ids); From 85287e1f7f0dc402135e8bae317583e158469377 Mon Sep 17 00:00:00 2001 From: xingyu Date: Mon, 1 Aug 2022 19:03:27 +0800 Subject: [PATCH 008/110] =?UTF-8?q?feat:=20=E5=AE=8C=E5=96=84=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PermissionAssignUserRoleReqVO.java | 4 +- .../src/api/system/permission/index.ts | 33 +++++++ .../src/api/system/permission/types.ts | 15 +++ .../src/api/system/role/index.ts | 29 +++--- .../src/components/CountTo/src/CountTo.vue | 2 +- .../src/views/system/role/index.vue | 74 +++++++++++---- .../src/views/system/user/index.vue | 91 ++++++++++++++++++- .../src/views/system/user/user.data.ts | 2 +- 8 files changed, 210 insertions(+), 40 deletions(-) create mode 100644 yudao-ui-admin-vue3/src/api/system/permission/index.ts create mode 100644 yudao-ui-admin-vue3/src/api/system/permission/types.ts diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/permission/PermissionAssignUserRoleReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/permission/PermissionAssignUserRoleReqVO.java index 75671bcd2..93cc8ffa2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/permission/PermissionAssignUserRoleReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/permission/vo/permission/PermissionAssignUserRoleReqVO.java @@ -12,8 +12,8 @@ import java.util.Set; @Data public class PermissionAssignUserRoleReqVO { - @ApiModelProperty(value = "角色编号", required = true, example = "1") - @NotNull(message = "角色编号不能为空") + @ApiModelProperty(value = "用户编号", required = true, example = "1") + @NotNull(message = "用户编号不能为空") private Long userId; @ApiModelProperty(value = "角色编号列表", example = "1,3,5") diff --git a/yudao-ui-admin-vue3/src/api/system/permission/index.ts b/yudao-ui-admin-vue3/src/api/system/permission/index.ts new file mode 100644 index 000000000..f498826ea --- /dev/null +++ b/yudao-ui-admin-vue3/src/api/system/permission/index.ts @@ -0,0 +1,33 @@ +import { useAxios } from '@/hooks/web/useAxios' +import type { + PermissionAssignRoleDataScopeReqVO, + PermissionAssignRoleMenuReqVO, + PermissionAssignUserRoleReqVO +} from './types' + +const request = useAxios() + +// 查询角色拥有的菜单权限 +export const listRoleMenusApi = async (roleId: number) => { + return await request.get({ url: '/system/permission/list-role-resources?roleId=' + roleId }) +} + +// 赋予角色菜单权限 +export const assignRoleMenuApi = async (data: PermissionAssignRoleMenuReqVO) => { + return await request.post({ url: '/system/permission/assign-role-menu', data }) +} + +// 赋予角色数据权限 +export const assignRoleDataScopeApi = async (data: PermissionAssignRoleDataScopeReqVO) => { + return await request.post({ url: '/system/permission/assign-role-data-scope', data }) +} + +// 查询用户拥有的角色数组 +export const listUserRolesApi = async (userId: number) => { + return await request.get({ url: '/system/permission/list-user-roles?userId=' + userId }) +} + +// 赋予用户角色 +export const aassignUserRoleApi = async (data: PermissionAssignUserRoleReqVO) => { + return await request.post({ url: '/system/permission/assign-user-role', data }) +} diff --git a/yudao-ui-admin-vue3/src/api/system/permission/types.ts b/yudao-ui-admin-vue3/src/api/system/permission/types.ts new file mode 100644 index 000000000..1050c39e2 --- /dev/null +++ b/yudao-ui-admin-vue3/src/api/system/permission/types.ts @@ -0,0 +1,15 @@ +export type PermissionAssignUserRoleReqVO = { + userId: number + roleIds: number[] +} + +export type PermissionAssignRoleMenuReqVO = { + roleId: number + menuIds: number[] +} + +export type PermissionAssignRoleDataScopeReqVO = { + roleId: number + dataScope: number + dataScopeDeptIds: number[] +} diff --git a/yudao-ui-admin-vue3/src/api/system/role/index.ts b/yudao-ui-admin-vue3/src/api/system/role/index.ts index 99c8a2d93..c5b3589f0 100644 --- a/yudao-ui-admin-vue3/src/api/system/role/index.ts +++ b/yudao-ui-admin-vue3/src/api/system/role/index.ts @@ -4,31 +4,36 @@ import type { RoleVO } from './types' const request = useAxios() // 查询角色列表 -export const getRolePageApi = (params) => { - return request.get({ url: '/system/role/page', params }) +export const getRolePageApi = async (params) => { + return await request.get({ url: '/system/role/page', params }) +} + +// 查询角色(精简)列表 +export const listSimpleRolesApi = async () => { + return await request.get({ url: '/system/role/list-all-simple' }) } // 查询角色详情 -export const getRoleApi = (id: number) => { - return request.get({ url: '/system/role/get?id=' + id }) +export const getRoleApi = async (id: number) => { + return await request.get({ url: '/system/role/get?id=' + id }) } // 新增角色 -export const createRoleApi = (data: RoleVO) => { - return request.post({ url: '/system/role/create', data }) +export const createRoleApi = async (data: RoleVO) => { + return await request.post({ url: '/system/role/create', data }) } // 修改角色 -export const updateRoleApi = (data: RoleVO) => { - return request.put({ url: '/system/role/update', data }) +export const updateRoleApi = async (data: RoleVO) => { + return await request.put({ url: '/system/role/update', data }) } // 修改角色状态 -export const updateRoleStatusApi = (data: RoleVO) => { - return request.put({ url: '/system/role/update-status', data }) +export const updateRoleStatusApi = async (data: RoleVO) => { + return await request.put({ url: '/system/role/update-status', data }) } // 删除角色 -export const deleteRoleApi = (id: number) => { - return request.delete({ url: '/system/role/delete?id=' + id }) +export const deleteRoleApi = async (id: number) => { + return await request.delete({ url: '/system/role/delete?id=' + id }) } diff --git a/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue b/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue index 7d8d37b1e..cab8ea965 100644 --- a/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue +++ b/yudao-ui-admin-vue3/src/components/CountTo/src/CountTo.vue @@ -157,7 +157,7 @@ const count = (timestamp: number) => { } else { state.printVal = state.printVal > endVal ? endVal : state.printVal } - state.displayValue = formatNumber(state.printVal) + state.displayValue = formatNumber(state.printVal!) if (progress < (state.localDuration as number)) { state.rAF = requestAnimationFrame(count) } else { diff --git a/yudao-ui-admin-vue3/src/views/system/role/index.vue b/yudao-ui-admin-vue3/src/views/system/role/index.vue index 12e3f0eb6..dfae295b1 100644 --- a/yudao-ui-admin-vue3/src/views/system/role/index.vue +++ b/yudao-ui-admin-vue3/src/views/system/role/index.vue @@ -1,14 +1,6 @@ + - + @@ -491,14 +492,15 @@ getList() - - - + From fa79f4226e4ffff387ce011f83011de8222941d6 Mon Sep 17 00:00:00 2001 From: xingyu Date: Tue, 2 Aug 2022 09:54:46 +0800 Subject: [PATCH 014/110] chore: update deps --- yudao-ui-admin-vue3/package.json | 6 +++--- yudao-ui-admin-vue3/vite.config.ts | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/yudao-ui-admin-vue3/package.json b/yudao-ui-admin-vue3/package.json index 4e7ebb03e..c221f0d68 100644 --- a/yudao-ui-admin-vue3/package.json +++ b/yudao-ui-admin-vue3/package.json @@ -65,8 +65,8 @@ "@types/nprogress": "^0.2.0", "@types/qrcode": "^1.4.2", "@types/qs": "^6.9.7", - "@typescript-eslint/eslint-plugin": "^5.31.0", - "@typescript-eslint/parser": "^5.31.0", + "@typescript-eslint/eslint-plugin": "^5.32.0", + "@typescript-eslint/parser": "^5.32.0", "@vitejs/plugin-vue": "^3.0.1", "@vitejs/plugin-vue-jsx": "^2.0.0", "autoprefixer": "^10.4.8", @@ -91,7 +91,7 @@ "stylelint-config-standard": "^26.0.0", "stylelint-order": "^5.0.0", "typescript": "4.7.4", - "unplugin-vue-define-options": "^0.6.2", + "unplugin-vue-define-options": "^0.7.1", "vite": "3.0.4", "vite-plugin-compression": "^0.5.1", "vite-plugin-eslint": "^1.7.0", diff --git a/yudao-ui-admin-vue3/vite.config.ts b/yudao-ui-admin-vue3/vite.config.ts index 835c7e9f3..ef8ffe395 100644 --- a/yudao-ui-admin-vue3/vite.config.ts +++ b/yudao-ui-admin-vue3/vite.config.ts @@ -138,6 +138,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => { 'vue-router', 'vue-types', 'vue-i18n', + 'element-plus/es', 'element-plus/es/locale/lang/zh-cn', 'element-plus/es/locale/lang/en', '@iconify/iconify', From 93a97cd52635423db6dde8bfa908f851962d5d50 Mon Sep 17 00:00:00 2001 From: xingyu Date: Tue, 2 Aug 2022 10:19:02 +0800 Subject: [PATCH 015/110] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E6=A0=A1=E9=AA=8C=E5=92=8C=E6=9F=A5=E8=AF=A2=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- yudao-ui-admin-vue3/src/utils/tree.ts | 4 ++-- .../infra/apiAccessLog/apiAccessLog.data.ts | 11 ++++++++++- .../views/infra/apiErrorLog/apiErrorLog.data.ts | 11 ++++++++++- .../src/views/infra/codegen/codegen.data.ts | 9 +++++++++ .../src/views/infra/config/config.data.ts | 9 +++++++++ .../dataSourceConfig/dataSourceConfig.data.ts | 9 +++++++++ .../views/infra/fileConfig/fileConfig.data.ts | 9 +++++++++ .../src/views/infra/fileList/fileList.data.ts | 9 +++++++++ .../src/views/pay/app/app.data.ts | 16 +++++++++++++--- .../src/views/pay/merchant/merchant.data.ts | 13 +++++++++++-- .../src/views/pay/order/order.data.ts | 16 ++++++++++++++++ .../src/views/pay/refund/refund.data.ts | 9 +++++++++ .../src/views/system/dept/dept.data.ts | 14 ++++++++++++++ .../src/views/system/dept/index.vue | 4 ++-- .../src/views/system/dict/dict.data.ts | 4 ++-- .../src/views/system/menu/index.vue | 17 +++++++++-------- .../src/views/system/notice/notice.data.ts | 3 +-- .../src/views/system/post/post.data.ts | 3 +-- .../system/sms/smsTemplate/sms.template.data.ts | 7 +++---- .../src/views/system/user/index.vue | 2 +- .../src/views/system/user/user.data.ts | 12 +++++++++++- yudao-ui-admin/src/views/system/dept/index.vue | 2 +- .../src/views/system/tenant/index.vue | 2 -- 23 files changed, 161 insertions(+), 34 deletions(-) diff --git a/yudao-ui-admin-vue3/src/utils/tree.ts b/yudao-ui-admin-vue3/src/utils/tree.ts index a82fb1c27..76ec0a2e1 100644 --- a/yudao-ui-admin-vue3/src/utils/tree.ts +++ b/yudao-ui-admin-vue3/src/utils/tree.ts @@ -213,7 +213,7 @@ export const eachTree = (treeDatas: any[], callBack: Fn, parentNode = {}) => { * @param {*} parentId 父节点字段 默认 'parentId' * @param {*} children 孩子节点字段 默认 'children' */ -export const handleTree = (data, id?: string, parentId?: string, children?: string) => { +export const handleTree = (data: any[], id?: string, parentId?: string, children?: string) => { const config = { id: id || 'id', parentId: parentId || 'parentId', @@ -222,7 +222,7 @@ export const handleTree = (data, id?: string, parentId?: string, children?: stri const childrenListMap = {} const nodeIds = {} - const tree = [] + const tree: any[] = [] for (const d of data) { const parentId = d[config.parentId] diff --git a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts index 97fae4357..69423dd9d 100644 --- a/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/apiAccessLog/apiAccessLog.data.ts @@ -50,7 +50,16 @@ const crudSchemas = reactive([ }, { label: '请求时间', - field: 'beginTime' + field: 'beginTime', + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } + } }, { label: '执行时长', diff --git a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts index 8ded13e8e..404262be5 100644 --- a/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/apiErrorLog/apiErrorLog.data.ts @@ -50,7 +50,16 @@ const crudSchemas = reactive([ }, { label: '异常发生时间', - field: 'exceptionTime' + field: 'exceptionTime', + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } + } }, { label: '异常名', diff --git a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts index 5253c9636..27e49ff31 100644 --- a/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/codegen/codegen.data.ts @@ -50,6 +50,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts index c040d4fe3..425918d15 100644 --- a/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/config/config.data.ts @@ -91,6 +91,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts index 2d5869f2a..4431c0c45 100644 --- a/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/dataSourceConfig/dataSourceConfig.data.ts @@ -58,6 +58,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts index 6dd5e5e4a..b2383346f 100644 --- a/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/fileConfig/fileConfig.data.ts @@ -76,6 +76,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts index 6984e693e..e203fd4cf 100644 --- a/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts +++ b/yudao-ui-admin-vue3/src/views/infra/fileList/fileList.data.ts @@ -36,6 +36,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts index 652da6359..544428cba 100644 --- a/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts +++ b/yudao-ui-admin-vue3/src/views/pay/app/app.data.ts @@ -8,9 +8,10 @@ const { t } = useI18n() // 国际化 // 表单校验 export const rules = reactive({ name: [required], - code: [required], - sort: [required], - status: [required] + status: [required], + payNotifyUrl: [required], + refundNotifyUrl: [required], + merchantId: [required] }) // CrudSchema @@ -53,6 +54,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts index 7db448ea9..53a2dc581 100644 --- a/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts +++ b/yudao-ui-admin-vue3/src/views/pay/merchant/merchant.data.ts @@ -7,9 +7,9 @@ const { t } = useI18n() // 国际化 // 表单校验 export const rules = reactive({ + no: [required], name: [required], - code: [required], - sort: [required], + shortName: [required], status: [required] }) @@ -77,6 +77,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts index e16b9979f..8cdf1c9b0 100644 --- a/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts +++ b/yudao-ui-admin-vue3/src/views/pay/order/order.data.ts @@ -157,6 +157,22 @@ const crudSchemas = reactive([ label: '渠道订单号', field: 'channelOrderNo' }, + { + label: t('common.createTime'), + field: 'createTime', + form: { + show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } + } + }, { label: t('table.action'), field: 'action', diff --git a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts index 19c8e8ec9..6d1fef177 100644 --- a/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts +++ b/yudao-ui-admin-vue3/src/views/pay/refund/refund.data.ts @@ -84,6 +84,15 @@ const crudSchemas = reactive([ field: 'createTime', form: { show: false + }, + search: { + show: true, + component: 'DatePicker', + componentProps: { + type: 'datetimerange', + valueFormat: 'YYYY-MM-DD HH:mm:ss', + defaultTime: [new Date(2000, 1, 1, 0, 0, 0), new Date(2000, 2, 1, 23, 59, 59)] + } } }, { diff --git a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts index 0116a6463..ad6458699 100644 --- a/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts +++ b/yudao-ui-admin-vue3/src/views/system/dept/dept.data.ts @@ -1,5 +1,19 @@ import { required } from '@/utils/formRules' import { reactive } from 'vue' +// 表单校验 +export const rules = reactive({ + name: [required], + sort: [required], + email: [required], + phone: [ + { + pattern: + /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/, + trigger: 'blur', + message: '请输入正确的手机号码' + } + ] +}) export const modelSchema = reactive([ { diff --git a/yudao-ui-admin-vue3/src/views/system/dept/index.vue b/yudao-ui-admin-vue3/src/views/system/dept/index.vue index 020e38d89..5dcbd10b5 100644 --- a/yudao-ui-admin-vue3/src/views/system/dept/index.vue +++ b/yudao-ui-admin-vue3/src/views/system/dept/index.vue @@ -5,7 +5,7 @@ import { handleTree } from '@/utils/tree' import { onMounted, ref, unref, watch } from 'vue' import * as DeptApi from '@/api/system/dept' import { Form, FormExpose } from '@/components/Form' -import { modelSchema } from './dept.data' +import { modelSchema, rules } from './dept.data' import { DeptVO } from '@/api/system/dept/types' import { useMessage } from '@/hooks/web/useMessage' import { getListSimpleUsersApi } from '@/api/system/user' @@ -159,7 +159,7 @@ onMounted(async () => {
-
+