feat: 支持发起人撤回审批
- 在我发起和审批详情中提供申请人撤回操作并恢复资源状态 - 补齐审批说明列表展示、动作权限校验和防重复提交 - 为审批决策增加行锁并补充撤回权限回归测试
This commit is contained in:
@@ -17,6 +17,7 @@ import {
|
||||
ElTag,
|
||||
} from 'element-plus';
|
||||
|
||||
import { hasPermission } from '#/api/common/hasPermission';
|
||||
import { api } from '#/api/request';
|
||||
import { $t } from '#/locales';
|
||||
import { router } from '#/router';
|
||||
@@ -41,11 +42,24 @@ const actionLabelMap: Record<string, string> = {
|
||||
PUBLISH: $t('approval.action.publish'),
|
||||
};
|
||||
|
||||
const canApproveAction = computed(
|
||||
() =>
|
||||
!!detail.value?.canApprove &&
|
||||
hasPermission(['/api/v1/approvalInstance/approve']),
|
||||
);
|
||||
const canRejectAction = computed(
|
||||
() =>
|
||||
!!detail.value?.canReject &&
|
||||
hasPermission(['/api/v1/approvalInstance/reject']),
|
||||
);
|
||||
const canRevokeAction = computed(
|
||||
() =>
|
||||
!!detail.value?.canRevoke &&
|
||||
hasPermission(['/api/v1/approvalInstance/revoke']),
|
||||
);
|
||||
const canOperate = computed(() => {
|
||||
return (
|
||||
!!detail.value?.canApprove ||
|
||||
!!detail.value?.canReject ||
|
||||
!!detail.value?.canRevoke
|
||||
canApproveAction.value || canRejectAction.value || canRevokeAction.value
|
||||
);
|
||||
});
|
||||
|
||||
@@ -258,7 +272,7 @@ function formatEventInfo(row: Record<string, any>) {
|
||||
|
||||
<div v-if="canOperate" class="flex items-center gap-3">
|
||||
<ElButton
|
||||
v-if="detail?.canApprove"
|
||||
v-if="canApproveAction"
|
||||
type="success"
|
||||
:disabled="Boolean(approvalActionLoading)"
|
||||
:loading="approvalActionLoading === 'approve'"
|
||||
@@ -267,7 +281,7 @@ function formatEventInfo(row: Record<string, any>) {
|
||||
{{ $t('approval.action.approve') }}
|
||||
</ElButton>
|
||||
<ElButton
|
||||
v-if="detail?.canReject"
|
||||
v-if="canRejectAction"
|
||||
type="danger"
|
||||
:disabled="Boolean(approvalActionLoading)"
|
||||
:loading="approvalActionLoading === 'reject'"
|
||||
@@ -276,7 +290,7 @@ function formatEventInfo(row: Record<string, any>) {
|
||||
{{ $t('approval.action.reject') }}
|
||||
</ElButton>
|
||||
<ElButton
|
||||
v-if="detail?.canRevoke"
|
||||
v-if="canRevokeAction"
|
||||
type="warning"
|
||||
:disabled="Boolean(approvalActionLoading)"
|
||||
:loading="approvalActionLoading === 'revoke'"
|
||||
|
||||
Reference in New Issue
Block a user