feat(web-admin): prefill quote submit approvers from tenant setting

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-08-01 13:06:59 +08:00
1 parent 209f5cb7a8
commit 98f33644f1
3 files changed
+71 -14

No files matched your search

@@ -84,6 +84,7 @@ import { ref, reactive } from 'vue'
import type { FormInstance, FormRules } from 'element-plus'
import { Check, Close } from '@element-plus/icons-vue'
import { fetchUserOptions } from '@/api/admin'
import { getQuoteApproverSetting } from '@/api/crm/quote'
const emit = defineEmits(['submit', 'close'])
@@ -94,7 +95,7 @@ const formRef = ref<FormInstance>()
const userList = ref<any[]>([])
const form = reactive({
approverIds: [] as number[],
approverIds: [] as string[],
remark: ''
})
@@ -103,9 +104,22 @@ const rules = reactive<FormRules>({
remark: [{ required: true, message: '请输入审批说明', trigger: 'blur' }]
})
const open = () => {
async function resolvePrefillApproverIds(userList: { userId: string | number }[]) {
try {
const { data } = await getQuoteApproverSetting()
if (!data || String(data.status) !== '0') return [] as string[]
const valid = new Set(userList.map((u) => String(u.userId)))
return (data.approverIds || []).map(String).filter((id) => valid.has(id))
} catch {
return []
}
}
const open = async () => {
dialogVisible.value = true
loadUsers()
await loadUsers()
form.approverIds = await resolvePrefillApproverIds(userList.value)
form.remark = ''
}
const handleClose = () => {
@@ -463,6 +463,14 @@
scroll-to-error
:scroll-into-view-options="{ behavior: 'smooth', block: 'center' }"
>
<el-alert
v-if="submitPrefillTip"
type="success"
:closable="false"
show-icon
title="已按「报价单审批人设置」预填审批人,可修改后提交"
style="margin-bottom: 12px"
/>
<div class="form-grid-2">
<el-form-item prop="approverIds" class="form-col-span-2">
<template #label>
@@ -495,7 +503,7 @@
import { useDictStore } from '@/store/modules/dict'
import { $modal } from '@/utils/modal'
import { ref, computed, onMounted, type ComponentInternalInstance } from 'vue';
import { getQuote, addQuote, updateQuote, submitQuote } from '@/api/crm/quote';
import { getQuote, addQuote, updateQuote, submitQuote, getQuoteApproverSetting } from '@/api/crm/quote';
import type { QuoteForm, QuoteProductForm } from '@/api/crm/quote';
import type { FormInstance } from 'element-plus';
import { useRouter, useRoute } from 'vue-router';
@@ -689,6 +697,7 @@ const submitForm = ref({
const submitRules = ref({
approverIds: [{ required: true, message: '请选择审批人', trigger: 'change' }]
});
const submitPrefillTip = ref(false);
const submitFormRef = ref<FormInstance>();
// 用户列表(负责人 + 审批人候选)
@@ -1099,6 +1108,17 @@ const loadUserList = async () => {
}
};
async function resolvePrefillApproverIds(userList: { userId: string | number }[]) {
try {
const { data } = await getQuoteApproverSetting();
if (!data || String(data.status) !== '0') return [] as string[];
const valid = new Set(userList.map((u) => String(u.userId)));
return (data.approverIds || []).map(String).filter((id) => valid.has(id));
} catch {
return [];
}
}
/** 加载供方信息列表 */
const loadSupplierList = async () => {
try {
@@ -1692,15 +1712,14 @@ const handleSubmit = async () => {
}
}
// 重置提交表单
await loadUserList();
const prefillIds = await resolvePrefillApproverIds(userList.value);
submitForm.value = {
id: form.value.id,
approverIds: [],
approverIds: prefillIds,
remark: ''
};
// 加载用户列表
await loadUserList();
submitPrefillTip.value = prefillIds.length > 0;
// 打开审批对话框
submitDialog.value.visible = true;
+29 -5
View File
@@ -415,6 +415,14 @@
scroll-to-error
:scroll-into-view-options="{ behavior: 'smooth', block: 'center' }"
>
<el-alert
v-if="submitPrefillTip"
type="success"
:closable="false"
show-icon
title="已按「报价单审批人设置」预填审批人,可修改后提交"
style="margin-bottom: 12px"
/>
<div class="form-grid-2">
<el-form-item prop="approverIds" class="form-col-span-2">
<template #label>
@@ -732,6 +740,7 @@ import {
delQuote,
exportQuote,
submitQuote,
getQuoteApproverSetting,
generatePdf,
generateShare,
createNewVersion,
@@ -1034,6 +1043,7 @@ const submitForm = ref({
const submitRules = ref({
approverIds: [{ required: true, message: '请选择审批人', trigger: 'change' }]
});
const submitPrefillTip = ref(false);
// 用户列表(审批人候选)
const userList = ref<UserVO[]>([]);
@@ -1289,12 +1299,14 @@ const handleView = (row?: QuoteVO) => {
/** 详情弹窗内提交审批 */
const handleQuoteDetailSubmit = async (quote: QuoteVO) => {
await loadUserList();
const prefillIds = await resolvePrefillApproverIds(userList.value);
submitForm.value = {
id: quote.id,
approverIds: [],
approverIds: prefillIds,
remark: ''
};
await loadUserList();
submitPrefillTip.value = prefillIds.length > 0;
submitDialog.visible = true;
};
@@ -1385,6 +1397,17 @@ const loadUserList = async () => {
}
};
async function resolvePrefillApproverIds(userList: { userId: string | number }[]) {
try {
const { data } = await getQuoteApproverSetting();
if (!data || String(data.status) !== '0') return [] as string[];
const valid = new Set(userList.map((u) => String(u.userId)));
return (data.approverIds || []).map(String).filter((id) => valid.has(id));
} catch {
return [];
}
}
/** 提交审批 */
const handleSubmit = async (row?: QuoteVO) => {
if (!row && ids.value.length !== 1) {
@@ -1397,13 +1420,14 @@ const handleSubmit = async (row?: QuoteVO) => {
$modal.msgWarning('只能提交草稿状态的报价单');
return;
}
await loadUserList();
const prefillIds = await resolvePrefillApproverIds(userList.value);
submitForm.value = {
id: id,
approverIds: [],
approverIds: prefillIds,
remark: ''
};
// 加载用户列表
await loadUserList();
submitPrefillTip.value = prefillIds.length > 0;
submitDialog.visible = true;
};