From b725cca0ff60728be04ef2ddb4cde5fcdf80bf8e Mon Sep 17 00:00:00 2001
From: liu <2021943741@qq.com>
Date: 星期一, 14 九月 2026 16:15:24 +0800
Subject: [PATCH] feat(bpm): 流程模型列表新增「免审批」开关与全局总开关
---
src/views/bpm/model/modules/category-draggable-model.vue | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/src/views/bpm/model/modules/category-draggable-model.vue b/src/views/bpm/model/modules/category-draggable-model.vue
index 4071c1e..4950b9c 100644
--- a/src/views/bpm/model/modules/category-draggable-model.vue
+++ b/src/views/bpm/model/modules/category-draggable-model.vue
@@ -21,11 +21,13 @@
Dropdown,
Menu,
message,
+ Switch,
Tag,
Tooltip,
} from 'ant-design-vue';
import { useVbenVxeGrid } from '#/adapter/vxe-table';
+import { updateAutoApproveByKey } from '#/api/bpm/autoApprove';
import { deleteCategory } from '#/api/bpm/category';
import {
cleanModel,
@@ -64,6 +66,7 @@
const isModelSorting = ref(false);
const originalData = ref<BpmModelApi.Model[]>([]);
const modelList = ref<BpmModelApi.Model[]>([]);
+const autoApproveLoadingId = ref<null | number>(null); // 鍏嶅鎵瑰紑鍏筹細姝e湪鎻愪氦鐨勬ā鍨嬬紪鍙�
// TODO @jason锛氬彲浠ュ叏閮ㄥ睍寮�涔堬紵 @鑺嬭壙 涓婃璁ㄨ銆傚ソ鍍忔槸鍥犱负鎬ц兘闂鎵嶅彧灞曞紑绗竴涓垎绫�
const isExpand = ref(props.isFirst); // 鏍规嵁鏄惁涓虹涓�涓垎绫�, 鏉ヨ缃垵濮嬪睍寮�鐘舵��
@@ -81,6 +84,10 @@
});
const hasPermiDeploy = computed(() => {
return hasAccessByCodes(['bpm:model:deploy']);
+});
+/** 鍏嶅鎵瑰紑鍏崇殑鏉冮檺锛氭棤鏉冮檺鏃跺紑鍏崇疆鐏帮紝閬垮厤鐐逛簡鎵嶆姤閿� */
+const hasPermiAutoApprove = computed(() => {
+ return hasAccessByCodes(['bpm:process-auto-approve:update']);
});
const [Grid, gridApi] = useVbenVxeGrid({
@@ -287,6 +294,32 @@
message.success(`鍙戝竷[${row.name}]娴佺▼鎴愬姛`);
// 鍒锋柊鍒楄〃
emit('success');
+}
+
+/** 鍒囨崲鍏嶅鎵瑰紑鍏筹細寮�鍚悗璇ユ祦绋嬫彁浜ゆ椂涓嶅啀杩涘叆浜哄伐瀹℃壒锛岀敱绯荤粺鑷姩閫氳繃 */
+async function handleAutoApproveChange(checked: boolean, row: any) {
+ const oldValue = row.autoApprove;
+ // 涔愯鏇存柊锛岄伩鍏嶇瓑寰呮帴鍙f湡闂村紑鍏崇姸鎬佸洖璺�
+ row.autoApprove = checked;
+ gridApi.setGridOptions({ data: modelList.value });
+ autoApproveLoadingId.value = row.id;
+ try {
+ await updateAutoApproveByKey(row.key, checked);
+ message.success(
+ checked
+ ? `宸插紑鍚痆${row.name}]鍏嶅鎵癸細璇ユ祦绋嬫彁浜ゅ悗灏嗙敱绯荤粺鑷姩閫氳繃`
+ : `宸插叧闂璠${row.name}]鍏嶅鎵癸細鎭㈠涓烘甯镐汉宸ュ鎵筦,
+ );
+ // 閲嶆柊鎷夊彇鍒楄〃锛屼繚璇佸墠绔姸鎬佷笌鍚庣涓�鑷�
+ emit('success');
+ } catch (error) {
+ // 澶辫触鍥炴粴
+ row.autoApprove = oldValue;
+ gridApi.setGridOptions({ data: modelList.value });
+ console.error('璁剧疆鍏嶅鎵瑰紑鍏冲け璐�', error);
+ } finally {
+ autoApproveLoadingId.value = null;
+ }
}
/** '鏇村'鎿嶄綔鎸夐挳 */
@@ -661,6 +694,28 @@
</Tag>
</div>
</template>
+ <template #autoApprove="{ row }">
+ <div class="flex items-center gap-1">
+ <Switch
+ :checked="row.autoApprove"
+ :loading="autoApproveLoadingId === row.id"
+ :disabled="!hasPermiAutoApprove"
+ size="small"
+ @change="
+ (checked: any) => handleAutoApproveChange(checked, row)
+ "
+ />
+ <Tooltip
+ v-if="!row.processDefinition"
+ title="娴佺▼灏氭湭鍙戝竷锛屽厤瀹℃壒寮�鍏充笉浼氱敓鏁堬紝璇峰厛鍙戝竷娴佺▼"
+ >
+ <IconifyIcon
+ icon="lucide:alert-circle"
+ class="text-base text-orange-400"
+ />
+ </Tooltip>
+ </div>
+ </template>
<template #actions="{ row }">
<div class="flex items-center space-x-0">
<Button
--
Gitblit v1.9.3