Преглед изворни кода

Update 优化工作流启用可配置,我的任务菜单调整到右上角

YueYunyun пре 1 година
родитељ
комит
e38e85dad2

+ 5 - 5
SERVER/VberAdminPlusV3/.script/sql/flow.sql

@@ -151,11 +151,11 @@ VALUES (4, '工作流', 0, 4, 'workflow', '', '', '1', '0', 'M', '0', '0', '', '
        (1204, '表单删除', 157, 4, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', 'dash-square', 'btn btn-light-danger', 'handleDelete@0', 100, 1, SYSDATE(), NULL, NULL, ''),
        (1204, '表单删除', 157, 4, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:formManage:remove', 'dash-square', 'btn btn-light-danger', 'handleDelete@0', 100, 1, SYSDATE(), NULL, NULL, ''),
        (1205, '表单导出', 157, 5, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'cloud-download', 'btn btn-light-info', 'handleExport', 100, 1, SYSDATE(), NULL, NULL, ''),
        (1205, '表单导出', 157, 5, '#', '', '', 1, 0, 'F', '0', '0', 'workflow:formManage:export', 'cloud-download', 'btn btn-light-info', 'handleExport', 100, 1, SYSDATE(), NULL, NULL, ''),
 
 
-       (5, '我的任务', 0, 5, 'task', '', '', '1', '0', 'M', '0', '0', 'workflow:my', 'award', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
-       (161, '我发起的', 5, 1, 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '0', '0', 'workflow:my', 'file-person', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
-       (162, '我的待办', 5, 2, 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '0', '0', 'workflow:my', 'person-fill-exclamation', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
-       (163, '我的已办', 5, 3, 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '0', '0', 'workflow:my', 'person-fill-check', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
-       (164, '我的抄送', 5, 4, 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '0', '0', 'workflow:my', 'person-fill-up', '', '', 100, 1, SYSDATE(), NULL, NULL, '');
+       (5, '我的任务', 0, 5, 'task', '', '', '1', '0', 'M', '1', '0', 'workflow:task', 'award', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
+       (161, '我发起的', 5, 1, 'myDocument', 'workflow/task/myDocument', '', '1', '1', 'C', '1', '0', 'workflow:task:my', 'file-person', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
+       (162, '我的待办', 5, 2, 'taskWaiting', 'workflow/task/taskWaiting', '', '1', '1', 'C', '1', '0', 'workflow:task:wait', 'person-fill-exclamation', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
+       (163, '我的已办', 5, 3, 'taskFinish', 'workflow/task/taskFinish', '', '1', '1', 'C', '1', '0', 'workflow:task:finish', 'person-fill-check', '', '', 100, 1, SYSDATE(), NULL, NULL, ''),
+       (164, '我的抄送', 5, 4, 'taskCopyList', 'workflow/task/taskCopyList', '', '1', '1', 'C', '1', '0', 'workflow:task:copy', 'person-fill-up', '', '', 100, 1, SYSDATE(), NULL, NULL, '');
 
 
 -- 请假申请菜单
 -- 请假申请菜单
 INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, btn_class, btn_script, create_org, create_by, create_time, update_by, update_time, remark)
 INSERT INTO sys_menu(menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, btn_class, btn_script, create_org, create_by, create_time, update_by, update_time, remark)

+ 1 - 1
SERVER/VberAdminPlusV3/vber-admin/src/main/resources/application-dev.yml

@@ -1,6 +1,6 @@
 vb:
 vb:
   mode: dev
   mode: dev
-  workflowEnabled: false
+  workflowEnabled: true
 
 
 --- # 监控中心配置
 --- # 监控中心配置
 spring.boot.admin.client:
 spring.boot.admin.client:

+ 6 - 0
SERVER/VberAdminPlusV3/vber-modules/vber-workflow/src/main/java/com/vber/workflow/controller/ActTaskController.java

@@ -1,5 +1,6 @@
 package com.vber.workflow.controller;
 package com.vber.workflow.controller;
 
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.convert.Convert;
 import com.vber.common.core.domain.R;
 import com.vber.common.core.domain.R;
@@ -75,6 +76,7 @@ public class ActTaskController extends BaseController {
      *
      *
      * @param taskBo 参数
      * @param taskBo 参数
      */
      */
+    @SaCheckPermission("workflow:task")
     @GetMapping("/getPageByTaskWait")
     @GetMapping("/getPageByTaskWait")
     public TableDataInfo<TaskVo> getPageByTaskWait(TaskBo taskBo, PageQuery pageQuery) {
     public TableDataInfo<TaskVo> getPageByTaskWait(TaskBo taskBo, PageQuery pageQuery) {
         return actTaskService.getPageByTaskWait(taskBo, pageQuery);
         return actTaskService.getPageByTaskWait(taskBo, pageQuery);
@@ -85,6 +87,7 @@ public class ActTaskController extends BaseController {
      *
      *
      * @param taskBo 参数
      * @param taskBo 参数
      */
      */
+    @SaCheckPermission("workflow:task")
     @GetMapping("/getPageByAllTaskWait")
     @GetMapping("/getPageByAllTaskWait")
     public TableDataInfo<TaskVo> getPageByAllTaskWait(TaskBo taskBo, PageQuery pageQuery) {
     public TableDataInfo<TaskVo> getPageByAllTaskWait(TaskBo taskBo, PageQuery pageQuery) {
         return actTaskService.getPageByAllTaskWait(taskBo, pageQuery);
         return actTaskService.getPageByAllTaskWait(taskBo, pageQuery);
@@ -95,6 +98,7 @@ public class ActTaskController extends BaseController {
      *
      *
      * @param taskBo 参数
      * @param taskBo 参数
      */
      */
+    @SaCheckPermission("workflow:task")
     @GetMapping("/getPageByTaskFinish")
     @GetMapping("/getPageByTaskFinish")
     public TableDataInfo<TaskVo> getPageByTaskFinish(TaskBo taskBo, PageQuery pageQuery) {
     public TableDataInfo<TaskVo> getPageByTaskFinish(TaskBo taskBo, PageQuery pageQuery) {
         return actTaskService.getPageByTaskFinish(taskBo, pageQuery);
         return actTaskService.getPageByTaskFinish(taskBo, pageQuery);
@@ -105,6 +109,7 @@ public class ActTaskController extends BaseController {
      *
      *
      * @param taskBo 参数
      * @param taskBo 参数
      */
      */
+    @SaCheckPermission("workflow:task")
     @GetMapping("/getPageByTaskCopy")
     @GetMapping("/getPageByTaskCopy")
     public TableDataInfo<TaskVo> getPageByTaskCopy(TaskBo taskBo, PageQuery pageQuery) {
     public TableDataInfo<TaskVo> getPageByTaskCopy(TaskBo taskBo, PageQuery pageQuery) {
         return actTaskService.getPageByTaskCopy(taskBo, pageQuery);
         return actTaskService.getPageByTaskCopy(taskBo, pageQuery);
@@ -115,6 +120,7 @@ public class ActTaskController extends BaseController {
      *
      *
      * @param taskBo 参数
      * @param taskBo 参数
      */
      */
+    @SaCheckPermission("workflow:task")
     @GetMapping("/getPageByAllTaskFinish")
     @GetMapping("/getPageByAllTaskFinish")
     public TableDataInfo<TaskVo> getPageByAllTaskFinish(TaskBo taskBo, PageQuery pageQuery) {
     public TableDataInfo<TaskVo> getPageByAllTaskFinish(TaskBo taskBo, PageQuery pageQuery) {
         return actTaskService.getPageByAllTaskFinish(taskBo, pageQuery);
         return actTaskService.getPageByAllTaskFinish(taskBo, pageQuery);

+ 28 - 19
UI/VAP_V3.VUE/src/layouts/main/header/navbar/UserAccountMenu.vue

@@ -1,11 +1,13 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import appStore from "@/stores"
 import appStore from "@/stores"
 import apis from "@a"
 import apis from "@a"
-const router = useRouter()
+import VbWorkflow from "@/layouts/main/header/navbar/UserSubMenuWorkflow.vue"
+
 const user = appStore.authStore.user
 const user = appStore.authStore.user
 const dynamic = computed(() => {
 const dynamic = computed(() => {
 	return appStore.tenantStore.isDynamic()
 	return appStore.tenantStore.isDynamic()
 })
 })
+
 function clearCache() {
 function clearCache() {
 	appStore.dictStore.cleanDict().then(() => {
 	appStore.dictStore.cleanDict().then(() => {
 		message.msgSuccess("清除成功")
 		message.msgSuccess("清除成功")
@@ -27,7 +29,7 @@ function signOut() {
 	<div class="app-navbar-item ms-1 ms-md-3">
 	<div class="app-navbar-item ms-1 ms-md-3">
 		<div
 		<div
 			class="cursor-pointer symbol symbol-30px symbol-md-40px"
 			class="cursor-pointer symbol symbol-30px symbol-md-40px"
-			data-vb-menu-trigger="click"
+			data-vb-menu-trigger="{default: 'click', lg: 'hover'}"
 			data-vb-menu-attach="parent"
 			data-vb-menu-attach="parent"
 			data-vb-menu-placement="bottom-end">
 			data-vb-menu-placement="bottom-end">
 			<VbSymbol
 			<VbSymbol
@@ -59,34 +61,41 @@ function signOut() {
 					</div>
 					</div>
 				</div>
 				</div>
 			</div>
 			</div>
-
 			<div class="separator my-2"></div>
 			<div class="separator my-2"></div>
-
-			<div class="menu-item px-5" v-if="!dynamic">
+			<div class="menu-item" v-if="!dynamic">
 				<router-link to="/profile" class="menu-link px-5">
 				<router-link to="/profile" class="menu-link px-5">
-					<VbIcon icon-name="user" icon-type="duotone" class="me-2 fs-3"></VbIcon>
-					个人中心
+					<span class="menu-icon">
+						<VbIcon icon-name="user" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">个人中心</span>
 				</router-link>
 				</router-link>
 			</div>
 			</div>
-			<div class="menu-item px-5">
+			<VbWorkflow />
+			<div class="separator my-2"></div>
+			<div class="menu-item">
 				<span @click="clearCache" class="menu-link px-5">
 				<span @click="clearCache" class="menu-link px-5">
-					<VbIcon icon-name="eraser" icon-type="duotone" class="me-2 fs-3"></VbIcon>
-					清除缓存
+					<span class="menu-icon">
+						<VbIcon icon-name="eraser" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">清除缓存</span>
 				</span>
 				</span>
 			</div>
 			</div>
-			<div class="menu-item px-5">
+			<div class="menu-item">
 				<span @click="refreshConfig" class="menu-link px-5">
 				<span @click="refreshConfig" class="menu-link px-5">
-					<VbIcon icon-name="arrows-circle" icon-type="duotone" class="me-2 fs-3"></VbIcon>
-					刷新配置
+					<span class="menu-icon">
+						<VbIcon icon-name="arrows-circle" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">刷新配置</span>
 				</span>
 				</span>
 			</div>
 			</div>
 			<div class="separator my-2"></div>
 			<div class="separator my-2"></div>
-
-			<div class="menu-item px-5">
-				<a @click="signOut()" class="menu-link px-5">
-					<VbIcon icon-name="power" icon-type="duotone" class="me-2 fs-3"></VbIcon>
-					退出登录
-				</a>
+			<div class="menu-item">
+				<span @click="signOut()" class="menu-link px-5">
+					<span class="menu-icon">
+						<VbIcon icon-name="power" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">退出登录</span>
+				</span>
 			</div>
 			</div>
 		</div>
 		</div>
 	</div>
 	</div>

+ 56 - 0
UI/VAP_V3.VUE/src/layouts/main/header/navbar/UserSubMenuWorkflow.vue

@@ -0,0 +1,56 @@
+<script setup lang="ts">
+import appStore from "@s"
+
+const workflow = computed(() => {
+	return appStore.appConfigStore.isWorkflow()
+})
+</script>
+<template>
+	<div
+		v-if="workflow"
+		class="menu-item"
+		data-vb-menu-trigger="hover"
+		data-vb-menu-placement="left-start">
+		<span class="menu-link px-5">
+			<span class="menu-icon">
+				<VbIcon icon-name="calendar" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+			</span>
+			<span class="menu-title">我的任务</span>
+			<span class="menu-arrow"></span>
+		</span>
+		<div class="menu-sub menu-sub-dropdown w-175px p-3">
+			<div class="menu-item px-1" v-hasPermission="'workflow:task:my'">
+				<router-link to="/task/myDocument" class="menu-link">
+					<span class="menu-icon">
+						<VbIcon icon-name="calendar-add" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">我发起的</span>
+				</router-link>
+			</div>
+			<div class="menu-item px-1" v-hasPermission="'workflow:task:wait'">
+				<router-link to="/task/taskWaiting" class="menu-link">
+					<span class="menu-icon">
+						<VbIcon icon-name="calendar-edit" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">我的待办</span>
+				</router-link>
+			</div>
+			<div class="menu-item px-1" v-hasPermission="'workflow:task:finish'">
+				<router-link to="/task/taskFinish" class="menu-link">
+					<span class="menu-icon">
+						<VbIcon icon-name="calendar-tick" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">我的已办</span>
+				</router-link>
+			</div>
+			<div class="menu-item px-1" v-hasPermission="'workflow:task:copy'">
+				<router-link to="/task/taskCopyList" class="menu-link">
+					<span class="menu-icon">
+						<VbIcon icon-name="calendar-2" icon-type="duotone" class="me-2 fs-3"></VbIcon>
+					</span>
+					<span class="menu-title">我的抄送</span>
+				</router-link>
+			</div>
+		</div>
+	</div>
+</template>