You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.5 KiB
97 lines
2.5 KiB
10 months ago
|
<template>
|
||
|
<w-dialog
|
||
|
ref="dialogRef"
|
||
|
:title="$t('re.workflow.dialog.title')"
|
||
|
width="600px"
|
||
|
:can-maximize="false"
|
||
|
:buttons="[
|
||
|
{
|
||
|
label: $t('submit'),
|
||
|
noCaps: true,
|
||
|
click: () => {
|
||
|
submit();
|
||
|
},
|
||
|
},
|
||
|
]"
|
||
|
>
|
||
|
<div class="p-3 text-red-500">{{ $t('re.workflow.dialog.tip') }}</div>
|
||
|
<w-form
|
||
|
ref="formRef"
|
||
|
:cols-num="1"
|
||
|
:fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'textarea', rows: 5, required: true }]"
|
||
|
class="p-2"
|
||
|
></w-form>
|
||
|
<w-select-assignee-dialog ref="selectAssigneeDialogRef" @assignee-selected="assigneeSelected"></w-select-assignee-dialog>
|
||
|
</w-dialog>
|
||
|
</template>
|
||
|
<script setup lang="ts">
|
||
|
import { ref } from 'vue';
|
||
|
import { axios, Environment, NotifyManager } from 'platform-core';
|
||
|
|
||
|
const props = defineProps({
|
||
|
opener: { type: Object, default: undefined },
|
||
|
foreignKey: { type: String, default: '' },
|
||
|
foreignValue: { type: String, default: '' },
|
||
|
});
|
||
|
|
||
|
const emit = defineEmits<{
|
||
|
(e: 'afterStarted', evt: Event): void;
|
||
|
}>();
|
||
|
|
||
|
const dialogRef = ref();
|
||
|
const formRef = ref();
|
||
|
const selectAssigneeDialogRef = ref();
|
||
|
const resourceIdRef = ref();
|
||
|
const resourceCodeRef = ref('');
|
||
|
const resourceVersionRef = ref('');
|
||
|
const resourceTargetStatusRef = ref('');
|
||
|
|
||
|
const submit = (assignee) => {
|
||
|
const data = formRef.value.getData();
|
||
|
const variables = { targetStatus: resourceTargetStatusRef.value };
|
||
|
const transientVariables = { task_treatment: data.treatment };
|
||
|
if (assignee) {
|
||
|
transientVariables.assignee = assignee;
|
||
|
}
|
||
|
axios
|
||
|
.post(Environment.apiContextPath('/api/re/resource/workflow/startProcessInstance/' + resourceIdRef.value), {
|
||
|
bussinessKey: resourceCodeRef.value + ':' + resourceVersionRef.value,
|
||
|
variables: variables,
|
||
|
transientVariables: transientVariables,
|
||
|
autoCompleteFirstTask: true,
|
||
|
})
|
||
|
.then((response) => {
|
||
|
if (response.data.code === 0) {
|
||
|
// 操作成功
|
||
|
NotifyManager.success();
|
||
|
close();
|
||
|
emit('afterStarted');
|
||
|
} else if (response.data.code === 1) {
|
||
|
// 需要选择处理人
|
||
|
selectAssigneeDialogRef.value.open(response.data);
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
const assigneeSelected = (assignee) => {
|
||
|
submit(assignee);
|
||
|
};
|
||
|
|
||
|
const open = (id, code, version, status) => {
|
||
|
resourceIdRef.value = id;
|
||
|
resourceCodeRef.value = code;
|
||
|
resourceVersionRef.value = version;
|
||
|
resourceTargetStatusRef.value = status;
|
||
|
dialogRef.value.show();
|
||
|
};
|
||
|
|
||
|
const close = () => {
|
||
|
dialogRef.value.hide();
|
||
|
};
|
||
|
|
||
|
defineExpose({
|
||
|
open,
|
||
|
close,
|
||
|
});
|
||
|
</script>
|