mirror of
https://github.com/m-xlsea/ruoyi-plus-soybean.git
synced 2025-09-24 07:49:47 +08:00
feat: 更新请假申请表单,添加流程类型选择和流程启动功能
This commit is contained in:
@ -37,11 +37,11 @@ const value = defineModel<CommonType.IdType[]>('value', { required: false, defau
|
||||
|
||||
let fileNum = 0;
|
||||
const fileList = ref<UploadFileInfo[]>([]);
|
||||
const needRelaodData = defineModel<boolean>('needRelaodData', {
|
||||
default: false
|
||||
});
|
||||
|
||||
const needRelaodData = ref<boolean>(false);
|
||||
defineExpose({
|
||||
refreshList: needRelaodData
|
||||
refreshList: needRelaodData,
|
||||
fileList
|
||||
});
|
||||
watch(
|
||||
() => fileList.value,
|
||||
|
103
src/components/custom/workflow-task-apply-modal.vue
Normal file
103
src/components/custom/workflow-task-apply-modal.vue
Normal file
@ -0,0 +1,103 @@
|
||||
<script setup lang="ts">
|
||||
import { reactive, ref, watch } from 'vue';
|
||||
import { messageTypeOptions } from '@/constants/workflow';
|
||||
import { fetchCompleteTask, fetchGetTask } from '@/service/api/workflow';
|
||||
import FileUpload from '@/components/custom/file-upload.vue';
|
||||
|
||||
defineOptions({
|
||||
name: 'WorkflowTaskApplyModal'
|
||||
});
|
||||
|
||||
interface Props {
|
||||
/** the task id */
|
||||
taskId: CommonType.IdType;
|
||||
/** the task variables */
|
||||
taskVariables: { [key: string]: any };
|
||||
}
|
||||
|
||||
const props = defineProps<Props>();
|
||||
|
||||
interface Emits {
|
||||
(e: 'finished'): void;
|
||||
}
|
||||
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
const visible = defineModel<boolean>('visible', {
|
||||
default: false
|
||||
});
|
||||
const title = defineModel<string>('title', {
|
||||
default: '流程发起'
|
||||
});
|
||||
|
||||
const fileUploadRef = ref<InstanceType<typeof FileUpload> | null>(null);
|
||||
|
||||
const accept = ref<string>('.doc,.docx,.xls,.xlsx,.ppt,.pptx,.txt,.pdf,.jpg,.jpeg,.png,.gif,.bmp,.webp');
|
||||
|
||||
type Model = Api.Workflow.CompleteTaskOperateParams;
|
||||
|
||||
const task = ref<Api.Workflow.Task>();
|
||||
|
||||
const model: Model = reactive(createDefaultModel());
|
||||
|
||||
function createDefaultModel(): Model {
|
||||
return {
|
||||
taskId: null,
|
||||
fileId: null,
|
||||
flowCopyList: [],
|
||||
messageType: ['1'],
|
||||
taskVariables: {},
|
||||
variables: {},
|
||||
assigneeMap: {}
|
||||
};
|
||||
}
|
||||
|
||||
async function getTask() {
|
||||
const { error, data } = await fetchGetTask(props.taskId);
|
||||
if (error) return;
|
||||
task.value = data;
|
||||
}
|
||||
|
||||
async function handleSubmit() {
|
||||
const fileList = fileUploadRef.value?.fileList;
|
||||
if (fileList?.length) {
|
||||
const fileIds = fileList.map(item => item.id);
|
||||
model.fileId = fileIds.join(',');
|
||||
}
|
||||
model.taskId = props.taskId;
|
||||
model.taskVariables = props.taskVariables;
|
||||
const { error } = await fetchCompleteTask(model);
|
||||
if (error) return;
|
||||
window.$message?.success('提交成功');
|
||||
visible.value = false;
|
||||
emit('finished');
|
||||
}
|
||||
|
||||
watch(visible, () => {
|
||||
if (visible.value) {
|
||||
getTask();
|
||||
Object.assign(model, createDefaultModel());
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NModal v-model:show="visible" :title="title" :native-scrollbar="false" closable>
|
||||
<NForm :model="model">
|
||||
<NFormItem label="通知方式" path="messageType">
|
||||
<NCheckboxGroup v-model:value="model.messageType">
|
||||
<NSpace item-style="display: flex;">
|
||||
<NCheckbox v-for="item in messageTypeOptions" :key="item.value" :value="item.value" :label="item.label" />
|
||||
</NSpace>
|
||||
</NCheckboxGroup>
|
||||
</NFormItem>
|
||||
<NFormItem label="附件" path="fileId">
|
||||
<FileUpload ref="fileUploadRef" :file-size="20" :max="20" upload-type="file" :accept="accept" />
|
||||
</NFormItem>
|
||||
</NForm>
|
||||
<template #footer>
|
||||
<NButton @click="visible = false">取消</NButton>
|
||||
<NButton type="primary" @click="handleSubmit">提交</NButton>
|
||||
</template>
|
||||
</NModal>
|
||||
</template>
|
Reference in New Issue
Block a user