diff --git a/src/api/bpm/processInstance/index.ts b/src/api/bpm/processInstance/index.ts index ed23510..4a03054 100644 --- a/src/api/bpm/processInstance/index.ts +++ b/src/api/bpm/processInstance/index.ts @@ -66,3 +66,13 @@ export function createProcessInstance(data: { export function cancelProcessInstanceByStartUser(id: string, reason: string) { return http.delete('/bpm/process-instance/cancel-by-start-user', { id, reason }) } + +/** 查询管理员流程实例分页 */ +export function getProcessInstanceManagerPage(params: PageParam) { + return http.get>('/bpm/process-instance/manager-page', params) +} + +/** 管理员取消流程实例 */ +export function cancelProcessInstanceByAdmin(id: string, reason: string) { + return http.delete('/bpm/process-instance/cancel-by-admin', { id, reason }) +} diff --git a/src/api/bpm/task/index.ts b/src/api/bpm/task/index.ts index aa5d426..115ba2e 100644 --- a/src/api/bpm/task/index.ts +++ b/src/api/bpm/task/index.ts @@ -18,9 +18,11 @@ export interface Task { status: number createTime: Date endTime?: Date + durationInMillis?: number // 持续时间 reason?: string assigneeUser?: TaskUser ownerUser?: TaskUser + processInstanceId?: string // 流程实例 ID processInstance: ProcessInstance } @@ -48,3 +50,8 @@ export function rejectTask(data: { id: string, reason: string }) { export function getTaskListByProcessInstanceId(processInstanceId: string) { return http.get(`/bpm/task/list-by-process-instance-id?processInstanceId=${processInstanceId}`) } + +/** 查询任务管理分页 */ +export function getTaskManagerPage(params: PageParam) { + return http.get>('/bpm/task/manager-page', params) +} diff --git a/src/pages-bpm/processInstance/manager/components/search-form.vue b/src/pages-bpm/processInstance/manager/components/search-form.vue new file mode 100644 index 0000000..051f9af --- /dev/null +++ b/src/pages-bpm/processInstance/manager/components/search-form.vue @@ -0,0 +1,222 @@ + + + diff --git a/src/pages-bpm/processInstance/manager/index.vue b/src/pages-bpm/processInstance/manager/index.vue new file mode 100644 index 0000000..298a53b --- /dev/null +++ b/src/pages-bpm/processInstance/manager/index.vue @@ -0,0 +1,231 @@ + + + + + diff --git a/src/pages-bpm/task/manager/components/search-form.vue b/src/pages-bpm/task/manager/components/search-form.vue new file mode 100644 index 0000000..298b4eb --- /dev/null +++ b/src/pages-bpm/task/manager/components/search-form.vue @@ -0,0 +1,128 @@ + + + diff --git a/src/pages-bpm/task/manager/index.vue b/src/pages-bpm/task/manager/index.vue new file mode 100644 index 0000000..a77ec60 --- /dev/null +++ b/src/pages-bpm/task/manager/index.vue @@ -0,0 +1,166 @@ + + + + + diff --git a/src/pages/index/index.ts b/src/pages/index/index.ts index 3be5e19..648a693 100644 --- a/src/pages/index/index.ts +++ b/src/pages/index/index.ts @@ -30,6 +30,7 @@ const menuGroupsData: MenuGroup[] = [ key: 'system', name: '系统管理', menus: [ + // === 用户权限相关(蓝色系)=== { key: 'user', name: '用户管理', @@ -41,9 +42,9 @@ const menuGroupsData: MenuGroup[] = [ { key: 'role', name: '角色管理', - icon: 'usergroup', + icon: 'secured', // 安全/权限 url: '/pages-system/role/index', - iconColor: '#52c41a', + iconColor: '#2f54eb', permission: 'system:role:query', }, { @@ -51,13 +52,14 @@ const menuGroupsData: MenuGroup[] = [ name: '菜单管理', icon: 'menu-fold', url: '/pages-system/menu/index', - iconColor: '#fa8c16', + iconColor: '#597ef7', permission: 'system:menu:query', }, + // === 组织架构相关(青色系)=== { key: 'dept', name: '部门管理', - icon: 'attach', + icon: 'layers', // 层级结构 url: '/pages-system/dept/index', iconColor: '#13c2c2', permission: 'system:dept:query', @@ -67,13 +69,14 @@ const menuGroupsData: MenuGroup[] = [ name: '岗位管理', icon: 'flag', url: '/pages-system/post/index', - iconColor: '#eb2f96', + iconColor: '#36cfc9', permission: 'system:post:query', }, + // === 日志相关(紫色系)=== { key: 'operateLog', name: '操作日志', - icon: 'format-horizontal-align-top', + icon: 'history', // 历史记录 url: '/pages-system/operate-log/index', iconColor: '#722ed1', permission: 'system:operate-log:query', @@ -81,25 +84,26 @@ const menuGroupsData: MenuGroup[] = [ { key: 'loginLog', name: '登录日志', - icon: 'view-list', + icon: 'login', // 登录 url: '/pages-system/login-log/index', - iconColor: '#1677ff', + iconColor: '#9254de', permission: 'system:login-log:query', }, + // === 消息通知相关(橙色系)=== { key: 'notice', name: '通知公告', - icon: 'spool', + icon: 'notification', // 通知 url: '/pages-system/notice/index', - iconColor: '#faad14', + iconColor: '#fa8c16', permission: 'system:notice:query', }, { key: 'sms', name: '短信管理', - icon: 'chat1', + icon: 'chat1', // 消息 url: '/pages-system/sms/index', - iconColor: '#36cfc9', + iconColor: '#faad14', permission: 'system:sms-channel:query', }, { @@ -107,23 +111,24 @@ const menuGroupsData: MenuGroup[] = [ name: '邮件管理', icon: 'mail', url: '/pages-system/mail/index', - iconColor: '#40a9ff', + iconColor: '#ffc53d', permission: 'system:mail-account:query', }, { key: 'notify', name: '站内信管理', - icon: 'read', + icon: 'read', // 阅读/消息 url: '/pages-system/notify/index', - iconColor: '#ff85c0', + iconColor: '#ff7a45', permission: 'system:notify-template:query', }, + // === 系统配置相关(粉色系)=== { key: 'tenant', name: '租户管理', icon: 'shop', url: '/pages-system/tenant/index', - iconColor: '#9254de', + iconColor: '#eb2f96', permission: 'system:tenant:query', }, { @@ -131,23 +136,23 @@ const menuGroupsData: MenuGroup[] = [ name: '三方用户', icon: 'share', url: '/pages-system/social/index', - iconColor: '#08979c', + iconColor: '#f759ab', permission: 'system:social-client:query', }, { key: 'oauth2', name: 'OAuth2.0', - icon: 'transfer', + icon: 'lock-on', // 授权/锁 url: '/pages-system/oauth2/index', - iconColor: '#d48806', + iconColor: '#ff85c0', permission: 'system:oauth2-client:query', }, { key: 'dict', name: '字典管理', - icon: 'hourglass', + icon: 'books', // 字典/书籍 url: '/pages-system/dict/index', - iconColor: '#faad14', + iconColor: '#c41d7f', permission: 'system:dict:query', }, { @@ -155,7 +160,7 @@ const menuGroupsData: MenuGroup[] = [ name: '地区管理', icon: 'location', url: '/pages-system/area/index', - iconColor: '#d50f0f', + iconColor: '#f5222d', }, ], }, @@ -163,12 +168,13 @@ const menuGroupsData: MenuGroup[] = [ key: 'infra', name: '基础设施', menus: [ + // === 日志监控相关(红蓝色系)=== { key: 'accessLog', name: '访问日志', - icon: 'laptop', + icon: 'view-list', // 列表/日志 url: '/pages-infra/api-access-log/index', - iconColor: '#2f54eb', + iconColor: '#1890ff', permission: 'infra:api-access-log:query', }, { @@ -179,72 +185,77 @@ const menuGroupsData: MenuGroup[] = [ iconColor: '#f5222d', permission: 'infra:api-error-log:query', }, + // === 配置相关(青紫色系)=== { key: 'config', name: '参数配置', icon: 'setting', url: '/pages-infra/config/index', - iconColor: '#597ef7', + iconColor: '#722ed1', permission: 'infra:config:query', }, { key: 'dataSourceConfig', name: '数据源配置', - icon: 'setting', + icon: 'server', // 服务器/数据源 url: '/pages-infra/data-source-config/index', - iconColor: '#13c2c2', + iconColor: '#9254de', permission: 'infra:data-source-config:query', }, + // === 文件存储相关(蓝色系)=== { key: 'file', name: '文件管理', icon: 'folder', url: '/pages-infra/file/index', - iconColor: '#1890ff', + iconColor: '#2f54eb', permission: 'infra:file:query', }, + // === 通信相关(青色系)=== { key: 'websocket', name: 'WebSocket', - icon: 'chat', + icon: 'wifi', // 网络连接 url: '/pages-infra/web-socket/index', - iconColor: '#36cfc9', + iconColor: '#13c2c2', }, + // === 任务调度相关(橙色系)=== { key: 'job', name: '定时任务', - icon: 'clock', + icon: 'time', // 时间/定时 url: '/pages-infra/job/index', - iconColor: '#eb2f96', + iconColor: '#fa8c16', permission: 'infra:job:query', }, + // === 开发工具相关(绿色系)=== { key: 'codegen', name: '代码生成', - icon: 'chevron-up-rectangle', + icon: 'code', url: ONLY_PC_PAGE, - iconColor: '#1677ff', + iconColor: '#52c41a', }, { key: 'build', name: '表单构建', icon: 'edit-outline', url: ONLY_PC_PAGE, - iconColor: '#722ed1', + iconColor: '#73d13d', }, { key: 'swagger', name: 'API 接口', icon: 'link', url: ONLY_PC_PAGE, - iconColor: '#52c41a', + iconColor: '#95de64', }, { key: 'druid', name: '监控中心', - icon: 'computer', + icon: 'dashboard', // 仪表盘 url: ONLY_PC_PAGE, - iconColor: '#fa8c16', + iconColor: '#389e0d', }, ], }, @@ -252,20 +263,21 @@ const menuGroupsData: MenuGroup[] = [ key: 'bpm', name: '工作流程', menus: [ + // === 个人工作台(蓝色系)=== { key: 'bpmMy', name: '我的流程', - icon: 'list', + icon: 'user-circle', // 个人 url: '/pages/bpm/index?tab=my', - iconColor: '#597ef7', + iconColor: '#1890ff', permission: 'bpm:process-instance:query', }, { key: 'bpmTodo', name: '待办任务', - icon: 'clock', + icon: 'time', // 待处理/时间 url: '/pages/bpm/index?tab=todo', - iconColor: '#ff7a45', + iconColor: '#fa8c16', permission: 'bpm:task:query', }, { @@ -273,7 +285,7 @@ const menuGroupsData: MenuGroup[] = [ name: '已办任务', icon: 'check-circle', url: '/pages/bpm/index?tab=done', - iconColor: '#73d13d', + iconColor: '#52c41a', permission: 'bpm:task:query', }, { @@ -281,29 +293,31 @@ const menuGroupsData: MenuGroup[] = [ name: '抄送我的', icon: 'mail', url: '/pages/bpm/index?tab=copy', - iconColor: '#5cdbd3', + iconColor: '#13c2c2', permission: 'bpm:process-instance-cc:query', }, + // === 流程设计相关(紫色系)=== { key: 'bpmModel', name: '流程模型', - icon: 'app', + icon: 'app', // 应用/模型 url: ONLY_PC_PAGE, - iconColor: '#1677ff', + iconColor: '#722ed1', permission: 'bpm:process-definition:query', }, { key: 'bpmForm', name: '流程表单', - icon: 'edit-1', + icon: 'edit-1', // 编辑/表单 url: ONLY_PC_PAGE, - iconColor: '#722ed1', + iconColor: '#9254de', permission: 'bpm:form:query', }, + // === 流程配置相关(橙黄色系)=== { key: 'bpmCategory', name: '流程分类', - icon: 'folder', + icon: 'folder-open', // 分类/文件夹 url: '/pages-bpm/category/index', iconColor: '#faad14', permission: 'bpm:category:query', @@ -313,15 +327,16 @@ const menuGroupsData: MenuGroup[] = [ name: '用户分组', icon: 'usergroup', url: '/pages-bpm/user-group/index', - iconColor: '#52c41a', + iconColor: '#ffc53d', permission: 'bpm:user-group:query', }, + // === 流程扩展相关(粉色系)=== { key: 'bpmProcessListener', name: '流程监听器', - icon: 'bell', + icon: 'sound', // 监听/声音 url: '/pages-bpm/process-listener/index', - iconColor: '#1890ff', + iconColor: '#eb2f96', permission: 'bpm:process-listener:query', }, { @@ -329,9 +344,26 @@ const menuGroupsData: MenuGroup[] = [ name: '流程表达式', icon: 'code', url: '/pages-bpm/process-expression/index', - iconColor: '#eb2f96', + iconColor: '#f759ab', permission: 'bpm:process-expression:query', }, + // === 流程管理相关(青色系)=== + { + key: 'bpmProcessInstanceManager', + name: '流程实例', + icon: 'queue', // 队列/实例 + url: '/pages-bpm/processInstance/manager/index', + iconColor: '#36cfc9', + permission: 'bpm:process-instance:manager-query', + }, + { + key: 'bpmTaskManager', + name: '流程任务', + icon: 'bulletpoint', // 任务列表 + url: '/pages-bpm/task/manager/index', + iconColor: '#5cdbd3', + permission: 'bpm:task:manager-query', + }, ], }, ]