混炼示方优化

This commit is contained in:
geht
2026-06-12 19:38:33 +08:00
parent 75bc744fc8
commit ece8e590e4
22 changed files with 1425 additions and 23 deletions

View File

@@ -536,6 +536,7 @@ import {
MIXING_STEP_MIN_COLUMN_WIDTH,
} from '../MesXslMixingSpec.data';
import { saveOrUpdate, queryById } from '../MesXslMixingSpec.api';
import { queryHistoryById } from '../MesXslMixingSpecHistory.api';
import { resolveFormulaSpecUserDisplayName } from '/@/views/xslmes/mesXslFormulaSpec/MesXslFormulaSpec.data';
import { MIXING_SPEC_BIZ_TABLE, loadRecordWithTrace } from '/@/views/xslmes/approval/integration/traceRecordHelper';
import MesXslMixingMaterialColumnSetting from './MesXslMixingMaterialColumnSetting.vue';
@@ -556,6 +557,8 @@ const userStore = useUserStore();
const isUpdate = ref(false);
const showFooter = ref(true);
const isHistoryView = ref(false);
const historyVersion = ref('');
const mixerPsCompilePickerId = ref('');
//update-begin---author:cursor ---date:20260522 for【XSLMES-20260522-A34】混合步骤动作/组合下拉选项-----------
const mixerActionOptions = ref<{ title: string; value: string }[]>([]);
@@ -1245,11 +1248,21 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data
downStepData.value = [];
tcuData.value = ensureTcuDefaultRows([]);
await loadMixerStepOptions('');
isHistoryView.value = !!data?.isHistoryView;
historyVersion.value = data?.historyVersion || '';
isUpdate.value = !!data?.isUpdate;
showFooter.value = !!data?.showFooter;
showFooter.value = !!data?.showFooter && !isHistoryView.value;
await setProps({ disabled: !showFooter.value });
setModalProps({ showOkBtn: showFooter.value, showCancelBtn: showFooter.value, confirmLoading: false });
if (isUpdate.value && data?.record?.id) {
if (isHistoryView.value && data?.historyId) {
const row = await queryHistoryById({ id: data.historyId });
if (!row?.id) {
createMessage.warning('未找到历史记录数据');
return;
}
historyVersion.value = historyVersion.value || data?.historyVersion || '';
await applyMixingSpecPageData(row, 'edit');
} else if (isUpdate.value && data?.record?.id) {
const row = await loadRecordWithTrace(data.record.id, MIXING_SPEC_BIZ_TABLE, queryById, data.record);
await applyMixingSpecPageData(row, 'edit');
} else {
@@ -1271,11 +1284,46 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data
}
});
const title = computed(() => (!showFooter.value && unref(isUpdate) ? '混炼示方详情' : !unref(isUpdate) ? '新增混炼示方' : '编辑混炼示方'));
const title = computed(() => {
if (unref(isHistoryView)) {
const version = unref(historyVersion);
return version ? `混炼示方历史详情(${version}` : '混炼示方历史详情';
}
return !showFooter.value && unref(isUpdate) ? '混炼示方详情' : !unref(isUpdate) ? '新增混炼示方' : '编辑混炼示方';
});
function resolveValidateErrorMessage(error: unknown) {
const err = error as { errorFields?: { name?: string[]; errors?: string[] }[] };
const messages = (err?.errorFields || [])
.flatMap((item) => item?.errors || [])
.filter((msg) => !!msg);
if (messages.length) {
return messages.join('');
}
const fieldLabelMap: Recordable<string> = {
specName: '规格',
purpose: '用途',
issueNumber: '发行编号',
};
const fields = (err?.errorFields || [])
.map((item) => item?.name?.[0])
.filter(Boolean)
.map((name) => fieldLabelMap[name as string] || name);
if (fields.length) {
return `请完善必填项:${fields.join('、')}`;
}
return '请完善表单必填项';
}
async function handleSubmit() {
await syncSheetToForm();
const formValues = await validate();
let formValues: Recordable;
try {
formValues = await validate();
} catch (error) {
createMessage.warning(resolveValidateErrorMessage(error));
return;
}
const materialList = resolveMaterialTableRawRows();
applyMaterialAccumWeight(materialList);
const stepList = stepRef.value?.getTableData?.() || stepData.value;