权限相关调整

This commit is contained in:
fuenmao
2026-09-10 16:43:23 +08:00
parent 0db1848b10
commit 4371eca6c4
11 changed files with 347 additions and 36 deletions
+87 -10
View File
@@ -10,7 +10,7 @@
>
<template #tableHeader>
<div class="task-table-toolbar">
<el-button type="primary" icon="Plus" @click="openCreate">
<el-button v-auth="'onboardingTaskCreate'" type="primary" icon="Plus" @click="openCreate">
发起入职任务
</el-button>
<div class="task-metric-filters">
@@ -63,59 +63,77 @@
</el-button>
<el-button
v-auth="'onboardingTaskVariableEdit'"
v-if="['pending_fill', 'rejected'].includes(scope.row.taskStatus)"
link
type="primary"
icon="Setting"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="openContractVariables(scope.row)"
>
签署材料参数
</el-button>
<el-button
v-auth="'onboardingTaskCopy'"
link
type="success"
icon="CopyDocument"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="openCopyTask(scope.row)"
>
复制任务
</el-button>
<el-button
v-auth="'onboardingTaskLink'"
v-if="['pending_fill', 'rejected'].includes(scope.row.taskStatus)"
link
type="warning"
icon="CopyDocument"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="copyOrShareTaskLink(scope.row)"
>
复制链接
</el-button>
<el-button
v-auth="'onboardingTaskAudit'"
v-if="scope.row.taskStatus === 'reviewing'"
link
type="success"
icon="Check"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="approve(scope.row)"
>
通过
</el-button>
<el-button
v-auth="'onboardingTaskAudit'"
v-if="scope.row.taskStatus === 'reviewing'"
link
type="danger"
icon="Close"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="reject(scope.row)"
>
退回
</el-button>
<el-button
v-auth="'onboardingTaskArchive'"
v-if="scope.row.taskStatus === 'approved'"
link
type="info"
icon="FolderChecked"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="archive(scope.row)"
>
归档
@@ -132,20 +150,26 @@
</el-button>
<el-button
v-auth="'onboardingTaskRevoke'"
v-if="['pending_fill', 'reviewing', 'rejected'].includes(scope.row.taskStatus)"
link
type="danger"
icon="Delete"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="revoke(scope.row)"
>
撤销
</el-button>
<el-button
v-auth="'onboardingTaskDelete'"
v-if="scope.row.taskStatus === 'revoked'"
link
type="danger"
icon="Delete"
:disabled="!canManage(scope.row)"
:title="disabledReason(scope.row)"
@click="removeTask(scope.row)"
>
删除
@@ -813,19 +837,23 @@
<div v-if="detail.task.taskStatus === 'reviewing'" class="review-btn-group">
<el-button
v-auth="'onboardingTaskMaterialReview'"
size="small"
type="success"
plain
:disabled="item.reviewStatus === 'passed'"
:disabled="item.reviewStatus === 'passed' || !canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="reviewMaterial(item.id, 'passed')"
>
合格
</el-button>
<el-button
v-auth="'onboardingTaskMaterialReview'"
size="small"
type="danger"
plain
:disabled="item.reviewStatus === 'need_supplement'"
:disabled="item.reviewStatus === 'need_supplement' || !canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="reviewMaterial(item.id, 'need_supplement')"
>
需补充
@@ -854,11 +882,14 @@
</div>
<div class="contract-right">
<el-button
v-auth="'onboardingTaskContractGenerate'"
v-if="!item.generatedDocxFileId"
type="primary"
plain
size="small"
icon="DocumentChecked"
:disabled="!canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="generate(item.id)"
>
生成DOCX签署材料
@@ -911,25 +942,34 @@
<div v-if="detail" class="drawer-footer-actions">
<div class="drawer-footer-right">
<el-button
v-auth="'onboardingTaskAudit'"
v-if="detail.task.taskStatus === 'reviewing'"
type="danger"
icon="Close"
:disabled="!canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="reject(detail.task)"
>
退回修改
</el-button>
<el-button
v-auth="'onboardingTaskAudit'"
v-if="detail.task.taskStatus === 'reviewing'"
type="success"
icon="Check"
:disabled="!canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="approve(detail.task)"
>
审核通过并建档
</el-button>
<el-button
v-auth="'onboardingTaskArchive'"
v-if="detail.task.taskStatus === 'approved'"
type="info"
icon="FolderChecked"
:disabled="!canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="archive(detail.task)"
>
归档该任务
@@ -943,9 +983,12 @@
电子签约
</el-button>
<el-button
v-auth="'onboardingTaskDelete'"
v-if="detail.task.taskStatus === 'revoked'"
type="danger"
icon="Delete"
:disabled="!canManage(detail.task)"
:title="disabledReason(detail.task)"
@click="removeTask(detail.task)"
>
删除该任务
@@ -1014,9 +1057,12 @@
</div>
<el-button
v-auth="'onboardingTaskVariableEdit'"
type="primary"
size="small"
icon="Check"
:disabled="!canManage(contractVariableTask)"
:title="disabledReason(contractVariableTask)"
@click="saveContractVariables(group)"
>
保存《{{ group.contractName }}》参数
@@ -1096,7 +1142,15 @@
<template #footer>
<div class="dialog-footer-flex">
<el-button @click="contractVariablesVisible = false">关闭</el-button>
<el-button type="primary" icon="Check" :loading="savingAllVars" @click="saveAllContractVariables">
<el-button
v-auth="'onboardingTaskVariableEdit'"
type="primary"
icon="Check"
:loading="savingAllVars"
:disabled="!canManage(contractVariableTask)"
:title="disabledReason(contractVariableTask)"
@click="saveAllContractVariables"
>
一键保存全部签署材料参数
</el-button>
</div>
@@ -1277,7 +1331,14 @@
: '链接尚未生成或已过期,点击下方按钮自动刷新' }}
</div>
</div>
<el-button type="primary" plain @click="copyElectronicSignLink">
<el-button
v-auth="'onboardingTaskElectronicSign'"
type="primary"
plain
:disabled="!canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="copyElectronicSignLink"
>
获取并复制链接
</el-button>
</div>
@@ -1329,10 +1390,12 @@
<div class="electronic-sign-footer">
<div>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="electronicSignDetail?.hasProcess && canInvalidElectronicSign"
type="danger"
plain
:disabled="electronicSignLoading"
:disabled="electronicSignLoading || !canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="invalidElectronicSign"
>
作废流程
@@ -1341,27 +1404,34 @@
<div>
<el-button @click="electronicSignVisible = false">关闭</el-button>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="electronicSignDetail?.hasProcess && electronicSignDetail.signStatus === 'pending_employee_sign'"
:disabled="electronicSignLoading"
:disabled="electronicSignLoading || !canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="noticeElectronicSign"
>
催签
</el-button>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="electronicSignDetail?.hasProcess && electronicSignDetail.providerContractId"
:loading="electronicSignLoading"
:disabled="!canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="syncElectronicSign"
>
同步状态
</el-button>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="
electronicSignDetail?.hasProcess
&& electronicSignDetail.signStatus === 'pending_company_seal'
"
type="primary"
:loading="electronicSignLoading"
:disabled="!allEmployeeSignedDocumentsPreviewed"
:disabled="!allEmployeeSignedDocumentsPreviewed || !canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="confirmCompanySeal"
>
确认企业盖章
@@ -1374,20 +1444,24 @@
下载完整归档
</el-button>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="electronicSignDetail?.canReinitiate"
type="warning"
plain
:loading="electronicSignLoading"
:disabled="!electronicSignDetail.documents.length"
:disabled="!electronicSignDetail.documents.length || !canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="reinitiateElectronicSign"
>
重新发起签约
</el-button>
<el-button
v-auth="'onboardingTaskElectronicSign'"
v-if="electronicSignDetail?.canInitiate"
type="primary"
:loading="electronicSignLoading"
:disabled="!electronicSignDetail.documents.length"
:disabled="!electronicSignDetail.documents.length || !canManage(electronicSignTask)"
:title="disabledReason(electronicSignTask)"
@click="initiateElectronicSign"
>
{{ electronicSignDetail.hasProcess ? '继续/重试发起' : '确认发起电子签' }}
@@ -1434,6 +1508,9 @@ import {
} from "@/api/modules/biz/onboarding";
import type { ColumnProps, ProTableInstance } from "@/components/ProTable/interface";
import { getMessageBoxPromptResult, isMessageBoxConfirmed } from "@/utils/messageBox";
import { useOnboardingPermission } from "@/utils/onboardingPermission";
const { canManage, disabledReason } = useOnboardingPermission("onboardingTaskManageAll");
const proTable = ref<ProTableInstance>();