【功能重构】减签功能页面重构
parent
71de0c3ecf
commit
21fc3fd7e6
|
@ -261,9 +261,7 @@ const configForm = tempConfigForm as Ref<CopyTaskFormType>
|
||||||
// 抄送人策略, 去掉发起人自选 和 发起人自己
|
// 抄送人策略, 去掉发起人自选 和 发起人自己
|
||||||
const copyUserStrategies = computed(() => {
|
const copyUserStrategies = computed(() => {
|
||||||
return CANDIDATE_STRATEGY.filter(
|
return CANDIDATE_STRATEGY.filter(
|
||||||
(item) =>
|
(item) => item.value !== CandidateStrategy.START_USER
|
||||||
item.value !== CandidateStrategy.START_USER_SELECT &&
|
|
||||||
item.value !== CandidateStrategy.START_USER
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
// 改变抄送人设置策略
|
// 改变抄送人设置策略
|
||||||
|
|
|
@ -331,13 +331,57 @@
|
||||||
</el-popover>
|
</el-popover>
|
||||||
|
|
||||||
<!-- 【减签】按钮 -->
|
<!-- 【减签】按钮 -->
|
||||||
<div
|
<el-popover
|
||||||
@click="openChildrenTask()"
|
:visible="popOverVisible.deleteSign"
|
||||||
class="hover-bg-gray-100 rounded-xl p-6px"
|
placement="top-start"
|
||||||
|
:width="420"
|
||||||
|
trigger="click"
|
||||||
v-if="runningTask?.children.length > 0"
|
v-if="runningTask?.children.length > 0"
|
||||||
>
|
>
|
||||||
<Icon :size="14" icon="ep:semi-select" /> 减签
|
<template #reference>
|
||||||
</div>
|
<div @click="openPopover('deleteSign')" class="hover-bg-gray-100 rounded-xl p-6px">
|
||||||
|
<Icon :size="14" icon="ep:semi-select" /> 减签
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<div class="flex flex-col flex-1 pt-20px px-20px" v-loading="formLoading">
|
||||||
|
<el-form
|
||||||
|
label-position="top"
|
||||||
|
class="mb-auto"
|
||||||
|
ref="formRef"
|
||||||
|
:model="genericForm"
|
||||||
|
:rules="genericRule"
|
||||||
|
label-width="100px"
|
||||||
|
>
|
||||||
|
<el-form-item label="减签人员" prop="deleteSignTaskId">
|
||||||
|
<el-select v-model="genericForm.deleteSignTaskId" clearable style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="item in runningTask.children"
|
||||||
|
:key="item.id"
|
||||||
|
:label="getDeleteSignUserLabel(item)"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
|
||||||
|
<el-form-item label="审批意见" prop="reason">
|
||||||
|
<el-input
|
||||||
|
v-model="genericForm.reason"
|
||||||
|
clearable
|
||||||
|
placeholder="请输入审批意见"
|
||||||
|
type="textarea"
|
||||||
|
:rows="3"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item>
|
||||||
|
<el-button :disabled="formLoading" type="primary" @click="handlerDeleteSign()">
|
||||||
|
减签
|
||||||
|
</el-button>
|
||||||
|
<el-button @click="popOverVisible.deleteSign = false"> 取消 </el-button>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
</div>
|
||||||
|
</el-popover>
|
||||||
|
|
||||||
<!-- 【退回】按钮 -->
|
<!-- 【退回】按钮 -->
|
||||||
<el-popover
|
<el-popover
|
||||||
|
@ -446,13 +490,11 @@
|
||||||
>
|
>
|
||||||
<Icon :size="14" icon="ep:refresh" /> 再次提交
|
<Icon :size="14" icon="ep:refresh" /> 再次提交
|
||||||
</div>
|
</div>
|
||||||
<!-- 弹窗:子任务 -->
|
|
||||||
<TaskSignList ref="taskSignListRef" @success="reload" />
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { useUserStoreWithOut } from '@/store/modules/user'
|
import { useUserStoreWithOut } from '@/store/modules/user'
|
||||||
import TaskSignList from './dialog/TaskSignList.vue'
|
|
||||||
import { setConfAndFields2 } from '@/utils/formCreate'
|
import { setConfAndFields2 } from '@/utils/formCreate'
|
||||||
import * as TaskApi from '@/api/bpm/task'
|
import * as TaskApi from '@/api/bpm/task'
|
||||||
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
|
import * as ProcessInstanceApi from '@/api/bpm/processInstance'
|
||||||
|
@ -486,7 +528,8 @@ const popOverVisible = ref({
|
||||||
addSign: false,
|
addSign: false,
|
||||||
return: false,
|
return: false,
|
||||||
copy: false,
|
copy: false,
|
||||||
cancel: false
|
cancel: false,
|
||||||
|
deleteSign: false
|
||||||
}) // 气泡卡是否展示
|
}) // 气泡卡是否展示
|
||||||
const returnList = ref([] as any) // 退回节点
|
const returnList = ref([] as any) // 退回节点
|
||||||
|
|
||||||
|
@ -504,6 +547,7 @@ const genericRule = reactive({
|
||||||
assigneeUserId: [{ required: true, message: '新审批人不能为空', trigger: 'change' }],
|
assigneeUserId: [{ required: true, message: '新审批人不能为空', trigger: 'change' }],
|
||||||
delegateUserId: [{ required: true, message: '接收人不能为空', trigger: 'change' }],
|
delegateUserId: [{ required: true, message: '接收人不能为空', trigger: 'change' }],
|
||||||
addSignUserIds: [{ required: true, message: '加签处理人不能为空', trigger: 'change' }],
|
addSignUserIds: [{ required: true, message: '加签处理人不能为空', trigger: 'change' }],
|
||||||
|
deleteSignTaskId: [{ required: true, message: '减签人员不能为空', trigger: 'change' }],
|
||||||
targetTaskDefinitionKey: [{ required: true, message: '退回节点不能为空', trigger: 'change' }]
|
targetTaskDefinitionKey: [{ required: true, message: '退回节点不能为空', trigger: 'change' }]
|
||||||
}) // 表单校验规则
|
}) // 表单校验规则
|
||||||
|
|
||||||
|
@ -742,12 +786,36 @@ const handleReCreate = async () => {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 子任务 */
|
/** 获取减签人员标签 */
|
||||||
const taskSignListRef = ref()
|
const getDeleteSignUserLabel = (task:any) : string => {
|
||||||
const openChildrenTask = () => {
|
const deptName = task?.assigneeUser?.deptName || task?.ownerUser?.deptName
|
||||||
taskSignListRef.value.open(runningTask.value)
|
const nickname = task?.assigneeUser?.nickname || task?.ownerUser?.nickname
|
||||||
|
return `${nickname} ( 所属部门:${deptName} )`;
|
||||||
|
}
|
||||||
|
/** 处理减签 */
|
||||||
|
const handlerDeleteSign = async () => {
|
||||||
|
formLoading.value = true
|
||||||
|
try {
|
||||||
|
const deleteFormRef = proxy.$refs['formRef']
|
||||||
|
// 1.1 校验表单
|
||||||
|
const elForm = unref(deleteFormRef)
|
||||||
|
if (!elForm) return
|
||||||
|
const valid = await elForm.validate()
|
||||||
|
if (!valid) return
|
||||||
|
// 1.2 提交减签
|
||||||
|
const data = {
|
||||||
|
id: genericForm.value.deleteSignTaskId,
|
||||||
|
reason: genericForm.value.reason,
|
||||||
|
}
|
||||||
|
await TaskApi.signDeleteTask(data)
|
||||||
|
message.success('减签成功')
|
||||||
|
popOverVisible.value.deleteSign = false
|
||||||
|
// 2 加载最新数据
|
||||||
|
reload()
|
||||||
|
} finally {
|
||||||
|
formLoading.value = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 重新加载数据 */
|
/** 重新加载数据 */
|
||||||
const reload = () => {
|
const reload = () => {
|
||||||
emit('success')
|
emit('success')
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<div v-for="(task, idx) in activity.tasks" :key="idx" class="flex items-center">
|
<div v-for="(task, idx) in activity.tasks" :key="idx" class="flex items-center">
|
||||||
<div class="flex flex-col pr-2 gap2">
|
<div class="flex flex-col pr-2 gap2">
|
||||||
<div
|
<div
|
||||||
class="position-relative flex flex-wrap gap2"
|
class="position-relative pt-2 flex flex-wrap gap2"
|
||||||
v-if="task.assigneeUser || task.ownerUser"
|
v-if="task.assigneeUser || task.ownerUser"
|
||||||
>
|
>
|
||||||
<!-- 信息:头像昵称 -->
|
<!-- 信息:头像昵称 -->
|
||||||
|
|
Loading…
Reference in New Issue