|
@@ -8,34 +8,29 @@
|
|
|
<el-form-item
|
|
<el-form-item
|
|
|
v-for="(item, index) in formData.approverListInfo"
|
|
v-for="(item, index) in formData.approverListInfo"
|
|
|
:key="item.approvalOrder"
|
|
:key="item.approvalOrder"
|
|
|
- :label="`第${item.approvalOrder + 1}步,${item.deptName}`"
|
|
|
|
|
- :prop="'approverListInfo.' + index + '.approverName'"
|
|
|
|
|
|
|
+ :label="`第${item.approvalOrder + 1}步,${item.deptName}(${item.approvalType ? '或签' : '会签'})`"
|
|
|
|
|
+ :prop="'approverListInfo.' + index + '.approverList'"
|
|
|
:rules="{ required: true, message: '请选择审批人', trigger: 'change' }"
|
|
:rules="{ required: true, message: '请选择审批人', trigger: 'change' }"
|
|
|
>
|
|
>
|
|
|
<el-select
|
|
<el-select
|
|
|
- v-model="item.approverName"
|
|
|
|
|
|
|
+ v-model="item.approverList"
|
|
|
placeholder="请输入审批人"
|
|
placeholder="请输入审批人"
|
|
|
value-key="id"
|
|
value-key="id"
|
|
|
filterable
|
|
filterable
|
|
|
|
|
+ multiple
|
|
|
remote
|
|
remote
|
|
|
- :disabled="formDisabled"
|
|
|
|
|
|
|
+ :disabled="!item.approverType"
|
|
|
:remote-method="remoteMethod"
|
|
:remote-method="remoteMethod"
|
|
|
:loading="loading"
|
|
:loading="loading"
|
|
|
- @change="(value) => selectKeeper(value, index)"
|
|
|
|
|
>
|
|
>
|
|
|
- <el-option
|
|
|
|
|
- v-for="item in userOptions"
|
|
|
|
|
- :key="item.id"
|
|
|
|
|
- :label="`${item.realname}(${item.username})${item.deptName}`"
|
|
|
|
|
- :value="item"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ <el-option v-for="item in userOptions" :key="item.id" :label="item.realname" :value="item" />
|
|
|
</el-select>
|
|
</el-select>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</el-form>
|
|
</el-form>
|
|
|
</template>
|
|
</template>
|
|
|
<template #footer>
|
|
<template #footer>
|
|
|
<el-button type="primary" @click="handleSumbit">提交</el-button>
|
|
<el-button type="primary" @click="handleSumbit">提交</el-button>
|
|
|
- <el-button @click="handleCancel">取消</el-button>
|
|
|
|
|
|
|
+ <el-button @click="closeDialog">取消</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
</BasicDialog>
|
|
</BasicDialog>
|
|
|
</template>
|
|
</template>
|
|
@@ -47,39 +42,88 @@
|
|
|
import type { QueryUserInfoByUserNameRes } from '@/types/person-group/type';
|
|
import type { QueryUserInfoByUserNameRes } from '@/types/person-group/type';
|
|
|
import { queryUserInfoByUserName } from '@/api/system/person-group';
|
|
import { queryUserInfoByUserName } from '@/api/system/person-group';
|
|
|
import { FormInstance } from 'element-plus';
|
|
import { FormInstance } from 'element-plus';
|
|
|
- import { rules } from '@/types/camera/constant';
|
|
|
|
|
|
|
|
|
|
const props = defineProps<{
|
|
const props = defineProps<{
|
|
|
- approvalData: DrillApprovalItem;
|
|
|
|
|
|
|
+ approvalData: DrillApprovalItem[];
|
|
|
}>();
|
|
}>();
|
|
|
const emits = defineEmits<{
|
|
const emits = defineEmits<{
|
|
|
- (e: 'success'): void;
|
|
|
|
|
|
|
+ (e: 'filled', data: DrillApprovalRuleForm): void;
|
|
|
}>();
|
|
}>();
|
|
|
|
|
|
|
|
const basicDialogRef = ref<InstanceType<typeof BasicDialog>>();
|
|
const basicDialogRef = ref<InstanceType<typeof BasicDialog>>();
|
|
|
const formRef = ref<FormInstance>();
|
|
const formRef = ref<FormInstance>();
|
|
|
|
|
|
|
|
const openDialog = () => {
|
|
const openDialog = () => {
|
|
|
- initForm();
|
|
|
|
|
|
|
+ initForm(props.approvalData);
|
|
|
basicDialogRef.value?.openDialog();
|
|
basicDialogRef.value?.openDialog();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const formDisabled = ref(props.approvalData.approverType === 0);
|
|
|
|
|
|
|
+ const closeDialog = () => {
|
|
|
|
|
+ if (!basicDialogRef.value) return;
|
|
|
|
|
+ clearForm();
|
|
|
|
|
+ basicDialogRef.value.closeDialog();
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
const formData = reactive<DrillApprovalRuleForm>({
|
|
const formData = reactive<DrillApprovalRuleForm>({
|
|
|
approvalDescription: '',
|
|
approvalDescription: '',
|
|
|
approverListInfo: [],
|
|
approverListInfo: [],
|
|
|
});
|
|
});
|
|
|
|
|
+ function initForm(originalData: DrillApprovalItem[]) {
|
|
|
|
|
+ // 初始化转换结果
|
|
|
|
|
+ const result: {
|
|
|
|
|
+ approvalOrder: number;
|
|
|
|
|
+ approvalType: number;
|
|
|
|
|
+ approverType: number;
|
|
|
|
|
+ deptName: string;
|
|
|
|
|
+ approverList: any[];
|
|
|
|
|
+ approverIds?: number[];
|
|
|
|
|
+ // approverName: string[];
|
|
|
|
|
+ }[] = [];
|
|
|
|
|
+ // 遍历原始数据数组
|
|
|
|
|
+ originalData.forEach((item) => {
|
|
|
|
|
+ if (item.approverType === 0) {
|
|
|
|
|
+ // 固定
|
|
|
|
|
|
|
|
- function initForm() {
|
|
|
|
|
- props.approvalData.processInfoList.forEach((x, index) => {
|
|
|
|
|
- formData.approverListInfo.push({
|
|
|
|
|
- approvalOrder: index,
|
|
|
|
|
- deptName: x.approvalDeptName,
|
|
|
|
|
- approverId: x.approverId,
|
|
|
|
|
- approverName: x.approverName,
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ // 收集当前审批环节的所有审批人ID和名称
|
|
|
|
|
+ const approverIds: number[] = [];
|
|
|
|
|
+ const approverNames: string[] = [];
|
|
|
|
|
+ // 默认为第一个流程项的部门名称
|
|
|
|
|
+ let deptName = '';
|
|
|
|
|
+ // 处理流程列表
|
|
|
|
|
+ item.processInfoList.forEach((process, index) => {
|
|
|
|
|
+ // 收集审批人信息
|
|
|
|
|
+ approverIds.push(process.approverId);
|
|
|
|
|
+ approverNames.push(process.approverName);
|
|
|
|
|
+ // 设置部门名称(取第一个流程项的部门名称)
|
|
|
|
|
+ if (index === 0) {
|
|
|
|
|
+ deptName = process.approvalDeptName;
|
|
|
|
|
+ }
|
|
|
|
|
+ });
|
|
|
|
|
+ // 添加到转换结果中
|
|
|
|
|
+ result.push({
|
|
|
|
|
+ approvalOrder: item.approvalOrder,
|
|
|
|
|
+ approverType: item.approverType,
|
|
|
|
|
+ approvalType: item.processInfoList[0].approvalType,
|
|
|
|
|
+ deptName,
|
|
|
|
|
+ approverList: approverNames,
|
|
|
|
|
+ approverIds: approverIds,
|
|
|
|
|
+ // approverName: approverNames,
|
|
|
|
|
+ });
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 自选
|
|
|
|
|
+ result.push({
|
|
|
|
|
+ approvalOrder: item.approvalOrder,
|
|
|
|
|
+ approverType: item.approverType,
|
|
|
|
|
+ approvalType: item.processInfoList[0].approvalType,
|
|
|
|
|
+ deptName: '',
|
|
|
|
|
+ approverList: [],
|
|
|
|
|
+ // approverId: [],
|
|
|
|
|
+ // approverName: [],
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ formData.approverListInfo = result;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
function clearForm() {
|
|
function clearForm() {
|
|
@@ -94,16 +138,14 @@
|
|
|
});
|
|
});
|
|
|
});
|
|
});
|
|
|
if (!validate) return;
|
|
if (!validate) return;
|
|
|
- console.log(formData);
|
|
|
|
|
- // 提交表单接口
|
|
|
|
|
- // emits('success');
|
|
|
|
|
|
|
+ emits('filled', formData);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const handleCancel = () => {
|
|
|
|
|
- if (!basicDialogRef.value) return;
|
|
|
|
|
- clearForm();
|
|
|
|
|
- basicDialogRef.value.closeDialog();
|
|
|
|
|
- };
|
|
|
|
|
|
|
+ // const handleCancel = () => {
|
|
|
|
|
+ // if (!basicDialogRef.value) return;
|
|
|
|
|
+ // clearForm();
|
|
|
|
|
+ // basicDialogRef.value.closeDialog();
|
|
|
|
|
+ // };
|
|
|
|
|
|
|
|
// 人员选择
|
|
// 人员选择
|
|
|
const userOptions = ref<QueryUserInfoByUserNameRes[]>([]);
|
|
const userOptions = ref<QueryUserInfoByUserNameRes[]>([]);
|
|
@@ -117,11 +159,6 @@
|
|
|
userOptions.value = await queryUserInfoByUserName(query);
|
|
userOptions.value = await queryUserInfoByUserName(query);
|
|
|
loading.value = false;
|
|
loading.value = false;
|
|
|
};
|
|
};
|
|
|
- function selectKeeper(value, index) {
|
|
|
|
|
- if (!value) return;
|
|
|
|
|
- formData.approverListInfo[index].approverId = value.id;
|
|
|
|
|
- formData.approverListInfo[index].approverName = value.realname;
|
|
|
|
|
- }
|
|
|
|
|
|
|
|
|
|
const refreshFromData = () => {
|
|
const refreshFromData = () => {
|
|
|
formRef.value?.clearValidate();
|
|
formRef.value?.clearValidate();
|
|
@@ -129,6 +166,7 @@
|
|
|
|
|
|
|
|
defineExpose({
|
|
defineExpose({
|
|
|
openDialog,
|
|
openDialog,
|
|
|
|
|
+ closeDialog,
|
|
|
});
|
|
});
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|