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.

101 lines
2.6 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"
8 months ago
:fields="[{ name: 'treatment', label: $t('re.workflow.dialog.entity.treatment'), type: 'w-textarea', rows: 5, requiredIf: true }]"
10 months ago
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
10 months ago
.post(
Environment.apiContextPath('/api/re/resource/workflow/startProcessInstance/' + resourceIdRef.value),
{
bussinessKey: resourceCodeRef.value + ':' + resourceVersionRef.value,
variables: variables,
transientVariables: transientVariables,
autoCompleteFirstTask: true,
},
{ loading: true },
)
10 months ago
.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>