From b83b554e7e35cdb36fd136830032a5e395fe7c49 Mon Sep 17 00:00:00 2001 From: herenshan112 Date: Fri, 19 Dec 2025 16:08:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=88=E6=9D=83=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/system/roleapi/postrole.ts | 24 + src/api/system/roleapi/types.ts | 6 + src/assets/icons/xiala.svg | 1 + src/assets/icons/xiala1.svg | 1 + src/directive/index.ts | 3 +- src/directive/permission/button.ts | 43 +- src/store/modules/knowledge.ts | 1 + src/views/system/monitor/online/index.vue | 1016 ++++++-------- .../system/monitor/online/index_20251217.vue | 1189 +++++++++++++++++ .../monitor/online/powerPage/appTabsPower.vue | 409 ++++++ .../online/powerPage/apptablepower.vue | 249 ++++ .../online/roleConfig/setRolePeople.vue | 4 +- src/views/sysworkflow/lowCodeTasks/index.vue | 3 +- .../appPage/appPageForm/openAppFormPage.vue | 3 +- src/views/sysworkflow/lowcodepage/index.vue | 15 +- .../lowcodepage/runApp/runAppForm.vue | 1 - 16 files changed, 2325 insertions(+), 643 deletions(-) create mode 100644 src/assets/icons/xiala.svg create mode 100644 src/assets/icons/xiala1.svg create mode 100644 src/views/system/monitor/online/index_20251217.vue create mode 100644 src/views/system/monitor/online/powerPage/appTabsPower.vue create mode 100644 src/views/system/monitor/online/powerPage/apptablepower.vue diff --git a/src/api/system/roleapi/postrole.ts b/src/api/system/roleapi/postrole.ts index 821b760..c46e719 100644 --- a/src/api/system/roleapi/postrole.ts +++ b/src/api/system/roleapi/postrole.ts @@ -192,3 +192,27 @@ export function gainAppEmpowerPower(data?: any){ data:data }); } +/** +@ 作者: 秦东 +@ 时间: 2025-12-11 14:23:55 +@ 功能: 初始化应用授权选项 +*/ +export function appInitAuthorization(data?: any){ + return request({ + url: '/systemapi/grant/appInitAuthorization', + method: 'post', + data:data + }); +} +/** +@ 作者: 秦东 +@ 时间: 2025-12-11 14:23:55 +@ 功能: 初始化应用授权选项 +*/ +export function tabsAuthorizationMode(data?: any){ + return request({ + url: '/systemapi/grant/tabsAuthorizationMode', + method: 'post', + data:data + }); +} diff --git a/src/api/system/roleapi/types.ts b/src/api/system/roleapi/types.ts index ffb55ce..edd7a1d 100644 --- a/src/api/system/roleapi/types.ts +++ b/src/api/system/roleapi/types.ts @@ -57,6 +57,11 @@ export interface systemCont{ sort?:number; //排序 state?:number; //状态 time?:number; //编辑时间 + isPick?:boolean; //是否选中 + icon?:string; //图标 + name?:string; //名称 + code?:string; //编码 + org?:string; //组织 } //菜单列表 @@ -289,6 +294,7 @@ export interface custerAppTablePower extends custerAppInfo{ //获取平台授权项目 export interface getSystemPower{ powerType:string; + appId:string; appType:string; appSystem:string; roleId:string; diff --git a/src/assets/icons/xiala.svg b/src/assets/icons/xiala.svg new file mode 100644 index 0000000..0c487f2 --- /dev/null +++ b/src/assets/icons/xiala.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/xiala1.svg b/src/assets/icons/xiala1.svg new file mode 100644 index 0000000..3545744 --- /dev/null +++ b/src/assets/icons/xiala1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/directive/index.ts b/src/directive/index.ts index 420f18d..492ac9b 100644 --- a/src/directive/index.ts +++ b/src/directive/index.ts @@ -1,7 +1,7 @@ import type { App } from 'vue'; import { hasPerm } from './permission'; -import { hasButton,hasApp,hasAppGroup } from './permission/button'; +import { hasButton,hasApp,hasAppGroup,hasGroupApp,hasCustomAppGroup } from './permission/button'; // 全局注册 directive export function setupDirective(app: App) { @@ -10,4 +10,5 @@ export function setupDirective(app: App) { app.directive('hasButton', hasButton); app.directive('hasApp', hasApp); app.directive('hasAppGroup', hasAppGroup); + app.directive('hasGroupApp', hasGroupApp); } diff --git a/src/directive/permission/button.ts b/src/directive/permission/button.ts index 5c80640..c343fa4 100644 --- a/src/directive/permission/button.ts +++ b/src/directive/permission/button.ts @@ -58,7 +58,7 @@ export const hasAppGroup: Directive = { mounted(el: HTMLElement, binding: DirectiveBinding) { const userStore = useUserStore(); const { value } = binding; - // console.log("app权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.appKeyAry,"-->",userStore.myPower); + // console.log("app权限",el,"-->",binding,"-->",value,"-->",userStore.myPower.appGroupPower,"-->",userStore.myPower); // console.log("我的App--->",userStore.myPower) if (value) { const requiredPerms = value; // DOM绑定需要的app权限标识 @@ -98,9 +98,9 @@ export const appHasPower = (signCode:string,buttonKey:string) => { @ 时间: 2025-12-12 09:33:21 @ 功能: 判断表单级权限 */ -export const formHasPower = (signCode:string,tormCode:string,buttonKey:string,classType:int) => { +export const formHasPower = (signCode:string,tormCode:string,buttonKey:string,classType:number) => { const userStore = useUserStore(); - // console.log("判断表单级权限-1111-->",userStore.myPower.appSystemPower) + // console.log("判断表单级权限-1111-->",signCode,userStore.myPower.appSystemPower) if(userStore.myPower.appSystemPower && Array.isArray(userStore.myPower.appSystemPower)){ return userStore.myPower.appSystemPower.some((perm: any) => { @@ -136,7 +136,7 @@ export const formHasPower = (signCode:string,tormCode:string,buttonKey:string,cl @ 功能: 判断自定义App菜单 */ export const hasCustomAppMenu = (appKey:string,menuKey:string) => { - console.log("判断自定义App菜单--->",appKey,menuKey) + // console.log("判断自定义App菜单--->",appKey,menuKey) const userStore = useUserStore(); if(userStore.myPower.appSystemPower && Array.isArray(userStore.myPower.appSystemPower)){ return userStore.myPower.appSystemPower.some((perm: any) => { @@ -149,3 +149,38 @@ export const hasCustomAppMenu = (appKey:string,menuKey:string) => { } return false; } + +//自定义App分组 +export const hasGroupApp: Directive = { + mounted(el: HTMLElement, binding: DirectiveBinding) { + const userStore = useUserStore(); + const { value } = binding; + // console.log("app权限appGroupMenu",el,"-->",binding,"-->",value,"-->",userStore.myPower.appGroupMenu,"-->",userStore.myPower); + // console.log("我的App--->",userStore.myPower) + if (value) { + const requiredPerms = value; // DOM绑定需要的app权限标识 + const hasPerm = userStore.myPower.appGroupMenu.some((perm: any) => { + // console.log("我的App-判断值-->",requiredPerms.includes(perm)) + return requiredPerms.includes(perm); + }); + if (!hasPerm) { + el.parentNode?.removeChild(el); + } + } + } +} + + +export const hasCustomAppGroup = (appKey:string) => { + + const userStore = useUserStore(); + if(userStore.myPower.appGroupMenu && Array.isArray(userStore.myPower.appGroupMenu)){ + return userStore.myPower.appGroupMenu.some((perm: any) => { + // console.log("--->",perm,appKey) + if (perm == appKey){ + return true + } + }); + } + return false; +} diff --git a/src/store/modules/knowledge.ts b/src/store/modules/knowledge.ts index 9d1f2ff..2e6ed43 100644 --- a/src/store/modules/knowledge.ts +++ b/src/store/modules/knowledge.ts @@ -1,4 +1,5 @@ import { defineStore } from 'pinia' +import { ref } from 'vue' import { ShowTitle } from '@/api/knowledge/types'; // 第一个参数是应用程序中 store 的唯一 id export const useKnowledgeStore = defineStore('knowledge', { diff --git a/src/views/system/monitor/online/index.vue b/src/views/system/monitor/online/index.vue index fce951d..9003efc 100644 --- a/src/views/system/monitor/online/index.vue +++ b/src/views/system/monitor/online/index.vue @@ -1,29 +1,39 @@ -