fix(xispeak): 修复BPM表单输入被刷掉和新增表单带入旧数据

- BPM表单:processInstanceId变化时仅刷新反馈列表,不再全量重载主表数据
- 编辑表单:新增时同步重置为默认值,弹窗强制重建组件避免数据残留

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
wsm
2026-06-11 14:29:29 +08:00
co-authored by Claude Opus 4.7
parent af956a0e75
commit 9c2d5d1363
3 changed files with 62 additions and 35 deletions
@@ -497,7 +497,16 @@
initFormData(); initFormData();
}); });
watch([() => props.formData?.dataId, () => processInfo.value.processInstanceId], () => initFormData()); watch(
() => props.formData?.dataId,
() => initFormData()
);
watch(
() => processInfo.value.processInstanceId,
(newVal) => {
if (newVal) loadFeedbackList();
}
);
watch(showDeptFeedback, () => { watch(showDeptFeedback, () => {
loadFeedbackList(); loadFeedbackList();
@@ -161,7 +161,8 @@
const emit = defineEmits(['register', 'ok']); const emit = defineEmits(['register', 'ok']);
let model: Nullable<Recordable> = null; let model: Nullable<Recordable> = null;
const formData = reactive<Record<string, any>>({ function getDefaultFormData(): Record<string, any> {
return {
id: '', id: '',
pid: '', pid: '',
speakStatus: '', speakStatus: '',
@@ -189,7 +190,10 @@
delFlag: undefined, delFlag: undefined,
bpmStatus: undefined, bpmStatus: undefined,
supervisionCount: undefined, supervisionCount: undefined,
}); };
}
const formData = reactive<Record<string, any>>(getDefaultFormData());
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 6 } }); const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 6 } });
@@ -289,13 +293,24 @@
} }
function edit(record) { function edit(record) {
// 新增:同步重置,不带入任何旧数据
if (!record.id) {
const defaults = getDefaultFormData();
for (const key of Object.keys(formData)) {
formData[key] = defaults[key];
}
sdwLeaderNames.value = '';
model = {};
return;
}
// 编辑/详情
nextTick(async () => { nextTick(async () => {
resetFields(); resetFields();
expandedRowKeys.value = []; expandedRowKeys.value = [];
// 非BPM模式且有ID时,从API查询完整数据,避免列表行数据不完整导致字段不显示
let data = record; let data = record;
if (record.id && !props.formBpm) { if (!props.formBpm) {
try { try {
const res = await defHttp.get({ url: queryByIdUrl, params: { id: record.id } }); const res = await defHttp.get({ url: queryByIdUrl, params: { id: record.id } });
data = res || record; data = res || record;
@@ -1,6 +1,6 @@
<template> <template>
<j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭"> <j-modal :title="title" :width="width" :visible="visible" @ok="handleOk" :okButtonProps="{ class: { 'jee-hidden': disableSubmit } }" @cancel="handleCancel" cancelText="关闭">
<BgXiSpeakForm ref="registerForm" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></BgXiSpeakForm> <BgXiSpeakForm ref="registerForm" :key="formKey" @ok="submitCallback" :formDisabled="disableSubmit" :formBpm="false"></BgXiSpeakForm>
<template #footer> <template #footer>
<a-button @click="handleCancel">取消</a-button> <a-button @click="handleCancel">取消</a-button>
<a-button :class="{ 'jee-hidden': disableSubmit }" type="primary" @click="handleOk">确认</a-button> <a-button :class="{ 'jee-hidden': disableSubmit }" type="primary" @click="handleOk">确认</a-button>
@@ -20,12 +20,14 @@
const visible = ref<boolean>(false); const visible = ref<boolean>(false);
const disableSubmit = ref<boolean>(false); const disableSubmit = ref<boolean>(false);
const registerForm = ref(); const registerForm = ref();
const formKey = ref(0);
const emit = defineEmits(['register', 'success']); const emit = defineEmits(['register', 'success']);
/** /**
* 新增 * 新增
*/ */
function add(obj={}) { function add(obj={}) {
formKey.value++;
title.value = '新增'; title.value = '新增';
visible.value = true; visible.value = true;
nextTick(() => { nextTick(() => {
@@ -38,6 +40,7 @@
* @param record * @param record
*/ */
function edit(record) { function edit(record) {
formKey.value++;
title.value = disableSubmit.value ? '详情' : '编辑'; title.value = disableSubmit.value ? '详情' : '编辑';
visible.value = true; visible.value = true;
nextTick(() => { nextTick(() => {