提交 f7616295 authored 作者: liuluyu's avatar liuluyu

增加转办转阅人员选择

上级 eaebc31b
<template>
<BasicModal
v-bind="$attrs"
@register="register"
:centered="true"
title="任务转办"
destroyOnClose
width="50%"
@cancel="handleCancel"
:helpMessage="['帮助']"
@ok="saveAssign"
>
<BasicForm @register="registerForm" style="margin: 0px 0px 0 0px" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, reactive, nextTick } from 'vue'
import { useForm, BasicForm, FormSchema } from '/@/components/Form'
import { BasicModal, useModalInner } from '/@/components/Modal'
import { assign } from "/@/components/Process/api/todo"
const flowTodoTask = ref({})
const onSuccess = ref()
const [register, { closeModal, setModalProps }] = useModalInner(async (data) => {
flowTodoTask.value = data.data
// 保存传入的onSuccess回调
onSuccess.value = data.onSuccess
});
const formSchemas: FormSchema[] = [
{
label: '接收人',
field: 'checkSendUser',
component: 'JSelectUser',
required: true,
componentProps: {
allowClear: true,
rowKey: 'id',
labelKey: 'realname',
showButton: false,
modalTitle: '选择接收人',
placeholder: '请选择接收人',
mode: 'multiple',
},
},
];
const [registerForm, { setProps, validate }] = useForm({
schemas: formSchemas,
showActionButtonGroup: false,
});
const handleCancel = () => {
closeModal();
}
const saveAssign = async () => {
const formDataTmp = await validate();
formDataTmp["instanceId"] = flowTodoTask.value.procInsId
formDataTmp["deployId"] = flowTodoTask.value.deployId
formDataTmp["taskId"] = flowTodoTask.value.taskId
formDataTmp["comment"] = ''
formDataTmp["values"] = {}
// 处理转办数据
if (formDataTmp.checkSendUser) {
formDataTmp.values['targetUserId'] = formDataTmp.checkSendUser;
formDataTmp.values['approvalType'] = 'user';
}
// 获取表单URL中的参数
const formUrl = flowTodoTask.value.formUrl || '';
const dataId = formUrl.split('=').pop();
formDataTmp.values['dataId'] = dataId;
const lastEqualIndex = formUrl.lastIndexOf('=');
let startIndex = formUrl.lastIndexOf('&', lastEqualIndex);
if (startIndex === -1) {
startIndex = formUrl.lastIndexOf('?', lastEqualIndex);
}
const dataName = formUrl.substring(startIndex + 1, lastEqualIndex);
formDataTmp.values['dataName'] = dataName;
await assign(formDataTmp).then(res => {
closeModal()
// 调用传入的onSuccess回调
if (onSuccess.value) {
onSuccess.value()
}
});
}
</script>
<style scoped>
</style>
\ No newline at end of file
<template>
<BasicModal
v-bind="$attrs"
@register="register"
:centered="true"
title="任务转阅"
destroyOnClose
width="50%"
@cancel="handleCancel"
:helpMessage="['帮助']"
@ok="saveAssignRead"
>
<BasicForm @register="registerForm" style="margin: 0px 0px 0 0px" />
</BasicModal>
</template>
<script lang="ts" setup>
import { ref, reactive, nextTick } from 'vue'
import { useForm, BasicForm, FormSchema } from '/@/components/Form'
import { BasicModal, useModalInner } from '/@/components/Modal'
import { assignRead } from "/@/components/Process/api/todo"
const flowTodoTask = ref({})
const onSuccess = ref()
const [register, { closeModal, setModalProps }] = useModalInner(async (data) => {
flowTodoTask.value = data.data
// 保存传入的onSuccess回调
onSuccess.value = data.onSuccess
});
const formSchemas: FormSchema[] = [
{
label: '接收人',
field: 'checkSendUser',
component: 'JSelectUser',
required: true,
componentProps: {
allowClear: true,
rowKey: 'id',
labelKey: 'realname',
showButton: false,
modalTitle: '选择接收人',
placeholder: '请选择接收人',
mode: 'multiple',
},
},
];
const [registerForm, { setProps, validate }] = useForm({
schemas: formSchemas,
showActionButtonGroup: false,
});
const handleCancel = () => {
closeModal();
}
const saveAssignRead = async () => {
const formDataTmp = await validate();
formDataTmp["instanceId"] = flowTodoTask.value.procInsId
formDataTmp["deployId"] = flowTodoTask.value.deployId
formDataTmp["taskId"] = flowTodoTask.value.taskId
formDataTmp["comment"] = ''
formDataTmp["values"] = {}
// 处理转阅数据
if (formDataTmp.checkSendUser) {
formDataTmp.values['targetUserId'] = formDataTmp.checkSendUser;
formDataTmp.values['approvalType'] = 'user';
}
// 获取表单URL中的参数
const formUrl = flowTodoTask.value.formUrl || '';
const dataId = formUrl.split('=').pop();
formDataTmp.values['dataId'] = dataId;
const lastEqualIndex = formUrl.lastIndexOf('=');
let startIndex = formUrl.lastIndexOf('&', lastEqualIndex);
if (startIndex === -1) {
startIndex = formUrl.lastIndexOf('?', lastEqualIndex);
}
const dataName = formUrl.substring(startIndex + 1, lastEqualIndex);
formDataTmp.values['dataName'] = dataName;
await assignRead(formDataTmp).then(res => {
closeModal()
// 调用传入的onSuccess回调
if (onSuccess.value) {
onSuccess.value()
}
});
}
</script>
<style scoped>
</style>
\ No newline at end of file
...@@ -188,6 +188,8 @@ ...@@ -188,6 +188,8 @@
<!-- 弹窗组件 --> <!-- 弹窗组件 -->
<Approve @register="registerApprove" ref="refApprove" /> <Approve @register="registerApprove" ref="refApprove" />
<Reject @register="registerReject" ref="refReject" /> <Reject @register="registerReject" ref="refReject" />
<Assign @register="registerAssign" ref="refAssign" />
<AssignRead @register="registerAssignRead" ref="refAssignRead" />
</div> </div>
</template> </template>
...@@ -219,6 +221,8 @@ ...@@ -219,6 +221,8 @@
import FlowInnerForm from '/@/views/flowable/task/components/FlowInnerForm.vue'; import FlowInnerForm from '/@/views/flowable/task/components/FlowInnerForm.vue';
import Approve from './Approve.vue'; import Approve from './Approve.vue';
import Reject from './Reject.vue'; import Reject from './Reject.vue';
import Assign from './Assign.vue';
import AssignRead from './AssignRead.vue';
// 工具 // 工具
import { useForm, BasicForm } from '/@/components/Form'; import { useForm, BasicForm } from '/@/components/Form';
...@@ -274,9 +278,38 @@ ...@@ -274,9 +278,38 @@
// 弹窗 // 弹窗
const refApprove = ref(null); const refApprove = ref(null);
const refReject = ref(null); const refReject = ref(null);
const refAssign = ref(null);
const refAssignRead = ref(null);
const [registerApprove, { openModal: openApproveModal }] = useModal(); const [registerApprove, { openModal: openApproveModal }] = useModal();
const [registerReject, { openModal: openRejectModal }] = useModal(); const [registerReject, { openModal: openRejectModal }] = useModal();
const [registerAssign, { openModal: openAssignModal }] = useModal();
const [registerAssignRead, { openModal: openAssignReadModal }] = useModal();
// 转办表单配置
const assignFormSchemas = [
{
label: computed(() => (isApproval.value ? '审批人' : '接收人')),
field: 'checkSendUser',
component: 'JSelectUser',
required: true,
componentProps: {
allowClear: true,
rowKey: 'id',
labelKey: 'realname',
showButton: false,
modalTitle: computed(() => (isApproval.value ? '选择审批人' : '选择接收人')),
placeholder: computed(() => (isApproval.value ? '请选择审批人' : '请选择接收人')),
mode: 'multiple',
},
},
];
// 转办表单注册
const [registerAssignForm, { validate: validateAssign }] = useForm({
schemas: assignFormSchemas,
showActionButtonGroup: false,
});
// 计算属性 // 计算属性
// const isFixed = computed(() => { // const isFixed = computed(() => {
...@@ -755,112 +788,29 @@ ...@@ -755,112 +788,29 @@
}; };
//转办处理 //转办处理
const handleAssignTask = async () => { const handleAssignTask = () => {
if (assigning.value) return; openAssignModal(true, {
try { isUpdate: false,
assigning.value = true; data: workFlowData.value,
const submitData = { onSuccess: () => {
instanceId: taskForm.instanceId,
deployId: taskForm.deployId,
taskId: taskForm.taskId,
comment: '',
values: {},
};
const formData = await validate();
Object.assign(submitData, formData);
submitData.comment = submitData.comment || '';
//test1 1958436761110269953
// submitData.values['targetUserId'] = '1959869916657950721';
if (userType.value === 'user') {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
if (formData.checkSendUser) {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
}
} else if (formData.checkSendRole) {
submitData.values['targetUserId'] = formData.checkSendRole;
submitData.values['approvalType'] = 'role';
}
const dataId = formUrl.value.split('=').pop();
submitData.values['dataId'] = dataId;
const lastEqualIndex = formUrl.value.lastIndexOf('=');
// 往前找到 & 或 ? 的位置
let startIndex = formUrl.value.lastIndexOf('&', lastEqualIndex);
if (startIndex === -1) {
startIndex = formUrl.value.lastIndexOf('?', lastEqualIndex);
}
const dataName = formUrl.value.substring(startIndex + 1, lastEqualIndex);
submitData.values['dataName'] = dataName;
// 执行发送
const result = await assign(submitData);
message.success('任务转办成功'); message.success('任务转办成功');
emit('success', result); emit('success');
emit('callback'); emit('callback');
} catch (error: any) { },
if (error.errorFields) { });
message.error('请完善表单信息');
} else {
console.error('发送任务失败:', error);
message.error(error.message || '转办任务失败');
}
} finally {
assigning.value = false;
}
}; };
//转阅处理 //转阅处理
const handleAssignReadTask = async () => { const handleAssignReadTask = () => {
if (assiReadgning.value) return; openAssignReadModal(true, {
try { isUpdate: false,
assiReadgning.value = true; data: workFlowData.value,
const submitData = { onSuccess: () => {
instanceId: taskForm.instanceId,
deployId: taskForm.deployId,
taskId: taskForm.taskId,
comment: '',
values: {},
};
const formData = await validate();
Object.assign(submitData, formData);
submitData.comment = submitData.comment || '';
//test1 1958436761110269953
// submitData.values['targetUserId'] = '1959869916657950721';
if (userType.value === 'user') {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
if (formData.checkSendUser) {
submitData.values['targetUserId'] = formData.checkSendUser;
submitData.values['approvalType'] = 'user';
}
} else if (formData.checkSendRole) {
submitData.values['targetUserId'] = formData.checkSendRole;
submitData.values['approvalType'] = 'role';
}
// 执行发送
const result = await assignRead(submitData);
message.success('任务转阅成功'); message.success('任务转阅成功');
emit('success', result); emit('success');
emit('callback'); emit('callback');
} catch (error: any) { },
if (error.errorFields) { });
message.error('请完善表单信息');
} else {
console.error('转阅任务失败:', error);
message.error(error.message || '转阅任务失败');
}
} finally {
assiReadgning.value = false;
}
}; };
defineExpose({ defineExpose({
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论