From 565799e21ef3bc4ed9b351a489a29c249946f6dc Mon Sep 17 00:00:00 2001 From: yxh Date: Mon, 18 Mar 2024 10:20:49 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E8=B7=AF=E7=94=B1=E5=88=86=E7=BB=84?= =?UTF-8?q?=E3=80=81=E7=BC=93=E5=AD=98=E5=BA=94=E7=94=A8=E5=89=8D=E7=BC=80?= =?UTF-8?q?=E3=80=81=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E9=80=89=E6=8B=A9=E8=A6=86=E7=9B=96=E3=80=81=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E5=8F=82=E6=95=B0=E6=88=AA?= =?UTF-8?q?=E5=8F=96=E3=80=81=E9=87=8D=E6=96=B0=E6=89=93=E5=BC=80=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=A4=B4=E5=83=8F=E4=B8=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/role/index.ts | 9 +++++ src/router/backEnd.ts | 5 ++- src/stores/userInfo.ts | 19 ++++++---- .../system/tools/gen/component/basicInfo.vue | 37 ++++++++++++++++++- src/views/system/tools/gen/component/edit.vue | 36 +++++++++++++++++- src/views/system/tools/gen/component/model.ts | 3 +- vite.config.ts | 2 +- 7 files changed, 97 insertions(+), 14 deletions(-) diff --git a/src/api/system/role/index.ts b/src/api/system/role/index.ts index 68dc955..3cd86d4 100644 --- a/src/api/system/role/index.ts +++ b/src/api/system/role/index.ts @@ -67,4 +67,13 @@ export function roleDeptTreeSelect(roleId:number) { }) } +// 根据角色ID查询菜单树结构 +export function roleMenuTreeSelect(roleId:number) { + return request({ + url: '/api/v1/system/role/menuTreeSelect', + method: 'get', + params:{roleId} + }) +} + diff --git a/src/router/backEnd.ts b/src/router/backEnd.ts index c957492..9ec316c 100644 --- a/src/router/backEnd.ts +++ b/src/router/backEnd.ts @@ -106,7 +106,8 @@ export async function setAddRoute() { export async function getBackEndControlRoutes() { let menuRoute = Session.get('userMenu') let permissions = Session.get('permissions') - if (!menuRoute || !permissions) { + let userInfo = Session.get('userInfo') + if (!menuRoute || !permissions ||!userInfo) { await refreshBackEndControlRoutes() } } @@ -121,7 +122,9 @@ export async function refreshBackEndControlRoutes() { await getUserMenus().then((res:any)=>{ Session.set('userMenu',res.data.menuList) Session.set('permissions',res.data.permissions) + Session.set('userInfo',res.data.userInfo) }) + await useUserInfo().setUserInfos() await useUserInfo().setPermissions() } diff --git a/src/stores/userInfo.ts b/src/stores/userInfo.ts index aaebd87..e6ba112 100644 --- a/src/stores/userInfo.ts +++ b/src/stores/userInfo.ts @@ -2,7 +2,7 @@ import { defineStore } from 'pinia'; import Cookies from 'js-cookie'; import { UserInfosStates } from './interface'; import { Session } from '/@/utils/storage'; - +import {getUpFileUrl} from '/@/utils/gfast' /** * 用户信息 * @methods setUserInfos 设置用户信息 @@ -48,17 +48,20 @@ export const useUserInfo = defineStore('userInfo', { id:0, userName: userName, userNickname: "", - avatar: - userName === 'admin' - ? 'https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1813762643,1914315241&fm=26&gp=0.jpg' - : 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=317673774,2961727727&fm=26&gp=0.jpg', + avatar:'', time: new Date().getTime(), roles: defaultRoles, authBtnList: defaultAuthBtnList, }; - if (Session.get('userInfo')) { - this.userInfos = Session.get('userInfo'); - } else { + const sessUserInfo = Session.get('userInfo') + if(sessUserInfo){ + if(sessUserInfo.avatar!=''){ + sessUserInfo.avatar = getUpFileUrl(sessUserInfo.avatar) + }else{ + sessUserInfo.avatar = '/favicon.ico' + } + this.userInfos=sessUserInfo + }else { this.userInfos = userInfos; } }, diff --git a/src/views/system/tools/gen/component/basicInfo.vue b/src/views/system/tools/gen/component/basicInfo.vue index c40fcbc..d5220cb 100644 --- a/src/views/system/tools/gen/component/basicInfo.vue +++ b/src/views/system/tools/gen/component/basicInfo.vue @@ -48,7 +48,7 @@ - + @@ -79,6 +79,15 @@ + + + + + + + + + @@ -105,6 +114,25 @@ export default defineComponent({ emits: ['goNext','close'], setup(props, { emit }) { const basicInfoFormRef = ref(); + const overwriteOptions = ref([ + {key:"api",name:"覆盖api"}, + {key:"controller",name:"覆盖controller"}, + {key:"dao",name:"覆盖dao"}, + {key:"dao_internal",name:"覆盖dao_internal"}, + {key:"logic",name:"覆盖logic"}, + {key:"model",name:"覆盖model"}, + {key:"model_do",name:"覆盖model_do"}, + {key:"model_entity",name:"覆盖model_entity"}, + {key:"router",name:"覆盖router"}, + {key:"router_func",name:"覆盖router_func"}, + {key:"service",name:"覆盖service"}, + {key:"sql",name:"覆盖菜单sql"}, + {key:"tsApi",name:"覆盖tsApi"}, + {key:"tsModel",name:"覆盖tsModel"}, + {key:"vue",name:"覆盖vue-list"}, + {key:"vueDetail",name:"覆盖vue-detail"}, + {key:"vueEdit",name:"覆盖vue-edit"}, + ]) const info = inject('tableData') as TableDataInfo; const nextTip = (): boolean => { //表单验证 @@ -123,6 +151,11 @@ export default defineComponent({ }; const close = ()=>{ emit('close') + } + const overwriteChange = (value:boolean)=>{ + info.value.overwriteInfo.map((item:any)=>{ + item.value = value + }) } const rules = reactive({ tableName: [{ required: true, message: '请输入表名称', trigger: 'blur' }], @@ -136,7 +169,9 @@ export default defineComponent({ basicInfoFormRef, info, rules, + overwriteOptions, nextTip, + overwriteChange, close }; }, diff --git a/src/views/system/tools/gen/component/edit.vue b/src/views/system/tools/gen/component/edit.vue index b9c396d..139058c 100644 --- a/src/views/system/tools/gen/component/edit.vue +++ b/src/views/system/tools/gen/component/edit.vue @@ -82,10 +82,41 @@ export default defineComponent({ active.value = args; } }; + const defaultOverwriteInfo = [ + {key:"api",value:false}, + {key:"controller",value:false}, + {key:"dao",value:false}, + {key:"dao_internal",value:false}, + {key:"logic",value:false}, + {key:"model",value:false}, + {key:"model_do",value:false}, + {key:"model_entity",value:false}, + {key:"router",value:false}, + {key:"router_func",value:false}, + {key:"service",value:false}, + {key:"sql",value:false}, + {key:"tsApi",value:false}, + {key:"tsModel",value:false}, + {key:"vue",value:false}, + {key:"vueDetail",value:false}, + {key:"vueEdit",value:false}, + ] // 表详细信息 - const info = ref({}); + const info = ref({overwriteInfo:defaultOverwriteInfo}); provide('tableData', info); - onBeforeMount(() => { + const mergeArraysByKey = (arrays:Array>, key:string) :Array => { + const merged:any={} + // 遍历所有数组,后面的数组会覆盖前面的数组 + arrays.forEach(array => { + array.forEach((obj:any) => { + // 使用key的值作为键,将对象存储在merged对象中 + merged[obj[key]] = obj; + }); + }); + // 将merged对象转换为数组 + return Object.values(merged); + } + onBeforeMount(() => { const tableId = route.query?.tableId; if (tableId) { // 获取表详细信息 @@ -96,6 +127,7 @@ export default defineComponent({ }); const data: TableDataInfo = res.data.info as TableDataInfo; data.columns = columnsTmp; + data.overwriteInfo = data.overwriteInfo?mergeArraysByKey([defaultOverwriteInfo,data.overwriteInfo],'key'):defaultOverwriteInfo info.value = data; }); } else { diff --git a/src/views/system/tools/gen/component/model.ts b/src/views/system/tools/gen/component/model.ts index 241218d..25ea2d7 100644 --- a/src/views/system/tools/gen/component/model.ts +++ b/src/views/system/tools/gen/component/model.ts @@ -77,7 +77,8 @@ export interface TableDataInfo extends TableData{ functionName:string; linkTableName:string; useVirtual:boolean; - columns:TableColumns[] + columns:TableColumns[], + overwriteInfo:Array } export interface TableDataState { ids:number[]; diff --git a/vite.config.ts b/vite.config.ts index 1810f7d..85b3a1c 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -17,7 +17,7 @@ const alias: Record = { const viteConfig = defineConfig((mode: ConfigEnv) => { const env = loadEnv(mode.mode, process.cwd()); return { - plugins: [vue(), vueSetupExtend(), viteCompression()], + plugins: [vue(), vueSetupExtend(), viteCompression({disable:true})], root: process.cwd(), resolve: { alias }, base: mode.command === 'serve' ? './' : env.VITE_PUBLIC_PATH,