feat(审批): 添加撤回审批功能并优化审批状态显示

- 在approval.js中添加withdrawApproval API方法
- 在leave.vue和goout.vue中启用撤回按钮并调用新API
- 在todo/index.vue中优化审批状态显示逻辑
This commit is contained in:
砂糖
2026-03-11 16:03:14 +08:00
parent 30a06d297b
commit f561b4eb0b
4 changed files with 62 additions and 32 deletions

View File

@@ -40,39 +40,32 @@
<div class="custom-tabs-nav">
<div
class="custom-tabs-item"
:class="{ active: queryParams.approvalStatus === undefined || queryParams.approvalStatus === '' }"
@click="handleTabClick('approvalStatus', '')"
:class="{ active: queryParams.taskStatus === undefined || queryParams.taskStatus === '' }"
@click="handleTabClick('taskStatus', '')"
>
全部
</div>
<div
class="custom-tabs-item"
:class="{ active: queryParams.approvalStatus === '待审批' }"
@click="handleTabClick('approvalStatus', '待审批')"
:class="{ active: queryParams.taskStatus === 'pending' }"
@click="handleTabClick('taskStatus', 'pending')"
>
待审批
</div>
<div
class="custom-tabs-item"
:class="{ active: queryParams.approvalStatus === '已同意' }"
@click="handleTabClick('approvalStatus', '已同意')"
:class="{ active: queryParams.taskStatus === 'approved' }"
@click="handleTabClick('taskStatus', 'approved')"
>
已同意
</div>
<div
class="custom-tabs-item"
:class="{ active: queryParams.approvalStatus === '已驳回' }"
@click="handleTabClick('approvalStatus', '已驳回')"
:class="{ active: queryParams.taskStatus === 'rejected' }"
@click="handleTabClick('taskStatus', 'rejected')"
>
已驳回
</div>
<div
class="custom-tabs-item"
:class="{ active: queryParams.approvalStatus === '已撤销' }"
@click="handleTabClick('approvalStatus', '已撤销')"
>
已撤回
</div>
</div>
</div>
@@ -110,6 +103,13 @@
{{ scope.row.endTime ? formatTime(scope.row.endTime) : '-' }}
</template>
</el-table-column>
<el-table-column prop="taskStatus" label="整体状态" align="center">
<template slot-scope="scope">
<el-tag :type="getInstStatusTagType(scope.row.approvalStatus)">
{{ getInstStatusText(scope.row.approvalStatus) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="taskStatus" label="审批状态" align="center">
<template slot-scope="scope">
<el-tag :type="getStatusTagType(scope.row.taskStatus)">
@@ -127,7 +127,7 @@
详情
</el-button>
<el-button
v-if="scope.row.approvalStatus === '待审批'"
v-if="scope.row.taskStatus === 'pending'"
size="small"
icon="el-icon-check"
@click="handleApprove(scope.row)"
@@ -136,7 +136,7 @@
同意
</el-button>
<el-button
v-if="scope.row.approvalStatus === '待审批'"
v-if="scope.row.taskStatus === 'pending'"
size="small"
icon="el-icon-close"
@click="handleReject(scope.row)"
@@ -369,6 +369,27 @@ export default {
return this.parseTime(time, '{y}-{m}-{d} {h}')
},
// 获取审批状态对应的标签类型
getInstStatusTagType(status) {
const typeMap = {
'待审批': 'warning',
'已同意': 'success',
'已驳回': 'danger',
'已撤销': 'info',
}
return typeMap[status] || 'default'
},
// 获取审批状态的中文文本
getInstStatusText(status) {
const textMap = {
'待审批': '待审批',
'已同意': '已同意',
'已驳回': '已驳回',
'已撤销': '已撤销',
}
return textMap[status] || '未知状态'
},
// 获取审批状态对应的标签类型
getStatusTagType(status) {
const typeMap = {