Files
geg-gas-web/src/views/workflow/task/components/flow/ApproveUser.vue
2024-02-05 09:15:37 +08:00

130 lines
3.5 KiB
Vue

<template>
<a-modal
:width="1000"
:visible="true"
:title="t('下一节点审批人')"
:maskClosable="false"
:closable="false"
:cancel-button-props="{
disabled: true,
}"
:okText="t('确认')"
:cancelText="t('取消')"
@ok="submit"
>
<div class="p-5">
<NodeHead :nodeName="t('信息')" />
<div class="mt-5 mb-5 ml-5">{{
t('请在十分钟内指定相关审批人员,时限内未完成指定的话,系统将按照现有默认人员进行处理。')
}}</div>
<a-tabs v-model:activeKey="data.index">
<a-tab-pane v-for="(item, index) in data.tasks" :key="index" :tab="item.taskName">
<SelectApproveUser
:schemaId="props.schemaId"
:taskId="item.taskId"
:hasMoreBtn="item.provisionalApprover"
v-model:select-ids="data.tasks[index].selectIds"
/>
</a-tab-pane>
</a-tabs>
</div>
</a-modal>
</template>
<script setup lang="ts">
import { onMounted, reactive } from 'vue';
import SelectApproveUser from './SelectApproveUser.vue';
import { batchApproverUsers } from '/@/api/workflow/task';
import { NodeHead } from '/@/components/ModalPanel/index';
import { ApproveTask, BatchApproverUsersParams } from '/@/model/workflow/bpmnConfig';
import { notification } from 'ant-design-vue';
import { useI18n } from '/@/hooks/web/useI18n';
const { t } = useI18n();
const props = withDefaults(
defineProps<{
taskList: Array<ApproveTask>;
schemaId: string | undefined;
}>(),
{
taskList: () => {
return [];
},
schemaId: '',
},
);
let emits = defineEmits(['change']);
let data: {
index: number;
tasks: Array<ApproveTask>;
} = reactive({
index: 0,
tasks: [],
});
onMounted(() => {
if (props.schemaId && props.taskList.length > 0) {
props.taskList.forEach(async (item) => {
data.tasks.push({
taskId: item.taskId,
taskName: item.taskName,
provisionalApprover: item.provisionalApprover,
selectIds: [],
});
});
}
});
async function submit() {
let approveUserList: BatchApproverUsersParams = [];
let msgs: Array<string> = [];
data.tasks.forEach((element) => {
if (element.selectIds.length > 0) {
approveUserList.push({
taskId: element.taskId,
approvedUsers: element.selectIds,
});
} else {
msgs.push(t('任务:') + element.taskName + t('未选择下一节点审批人'));
}
});
if (msgs.length > 0) {
msgs.forEach((msg) => {
notification.open({
type: 'error',
message: t('下一节点审批人'),
description: msg,
});
});
} else {
try {
if (props.schemaId) {
let res = await batchApproverUsers(props.schemaId, approveUserList);
if (res) {
emits('change');
} else {
notification.open({
type: 'error',
message: t('下一节点审批人'),
description: t('选择下一节点审批人失败'),
});
}
}
} catch (_error) {
notification.open({
type: 'error',
message: t('下一节点审批人'),
description: t('选择下一节点审批人失败'),
});
}
}
}
</script>
<style lang="less" scoped>
:deep(.list-page-box) {
display: flex;
flex-wrap: wrap;
overflow-y: auto;
padding: 10px 0;
}
</style>