新增混炼示方选择弹窗及相关功能,支持规格选择与参照新增,优化用户交互体验。
This commit is contained in:
@@ -20,7 +20,15 @@
|
||||
<tr>
|
||||
<th class="formTitle required" rowspan="3">规格</th>
|
||||
<td class="formValue" colspan="3" rowspan="3">
|
||||
<a-input v-model:value="sheetForm.specName" :disabled="!showFooter" :bordered="false" class="form-input" />
|
||||
<a-input
|
||||
:value="sheetForm.specName"
|
||||
readonly
|
||||
placeholder="请点击选择混炼示方"
|
||||
:disabled="!showFooter"
|
||||
:bordered="false"
|
||||
:class="['form-input', 'mixing-picker-input', { 'is-filled': !!sheetForm.specName }]"
|
||||
@click="openSpecPicker"
|
||||
/>
|
||||
</td>
|
||||
<th class="formTitle" colspan="2">机台</th>
|
||||
<th class="formTitle" colspan="1">制作日期</th>
|
||||
@@ -421,6 +429,7 @@
|
||||
<MesXslMixerPsCompileSelectModal @register="registerIssueNumberModal" @select="onIssueNumberSelect" />
|
||||
<MesXslMixingMaterialSelectModal @register="registerMixingMaterialModal" @select="onMixingMaterialSelect" />
|
||||
<MesXslMixingSpecStepHistorySelectModal @register="registerHistoryStepModal" @select="onHistoryStepSelect" />
|
||||
<MesXslMixingSpecSelectModal @register="registerSpecPickerModal" @edit="onSpecPickerEdit" @referenceAdd="onSpecPickerReferenceAdd" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
@@ -471,6 +480,7 @@ import {
|
||||
calcMixingFillVolume,
|
||||
resolveMixingSpecificGravity,
|
||||
cloneMixingHistoryStepRows,
|
||||
cloneMixingSpecPageForReferenceAdd,
|
||||
MIXING_MATERIAL_ROW_NUMBER_WIDTH,
|
||||
MIXING_MATERIAL_FOOTER_ROW_HEIGHT,
|
||||
MIXING_MATERIAL_MIN_COLUMN_WIDTH,
|
||||
@@ -488,6 +498,7 @@ import { queryById as queryEquipmentById } from '/@/views/xslmes/mesXslEquipment
|
||||
import MesXslMixerPsCompileSelectModal from '/@/views/xslmes/mesXslMixerPsCompile/components/MesXslMixerPsCompileSelectModal.vue';
|
||||
import MesXslMixingMaterialSelectModal from './MesXslMixingMaterialSelectModal.vue';
|
||||
import MesXslMixingSpecStepHistorySelectModal from './MesXslMixingSpecStepHistorySelectModal.vue';
|
||||
import MesXslMixingSpecSelectModal from './MesXslMixingSpecSelectModal.vue';
|
||||
|
||||
const emit = defineEmits(['register', 'success']);
|
||||
const { createMessage } = useMessage();
|
||||
@@ -895,6 +906,9 @@ const [registerMixingMaterialModal, { openModal: openMixingMaterialModalInner, c
|
||||
//update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A58】参照历史混合步骤选择弹窗-----------
|
||||
const [registerHistoryStepModal, { openModal: openHistoryStepModalInner, closeModal: closeHistoryStepModal, setModalProps: setHistoryStepModalProps }] = useModal();
|
||||
//update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A58】参照历史混合步骤选择弹窗-----------
|
||||
//update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A59】规格点击选择混炼示方-----------
|
||||
const [registerSpecPickerModal, { openModal: openSpecPickerModalInner, closeModal: closeSpecPickerModal, setModalProps: setSpecPickerModalProps }] = useModal();
|
||||
//update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A59】规格点击选择混炼示方-----------
|
||||
|
||||
//update-begin---author:cursor ---date:20260525 for:【XSLMES-20260525-A52】关闭混炼示方弹窗时同步关闭嵌套选料弹窗-----------
|
||||
function closeNestedPickers() {
|
||||
@@ -902,6 +916,7 @@ function closeNestedPickers() {
|
||||
closeMachineModal();
|
||||
closeIssueNumberModal();
|
||||
closeHistoryStepModal();
|
||||
closeSpecPickerModal();
|
||||
materialPickerRow.value = null;
|
||||
}
|
||||
//update-end---author:cursor ---date:20260525 for:【XSLMES-20260525-A52】关闭混炼示方弹窗时同步关闭嵌套选料弹窗-----------
|
||||
@@ -931,6 +946,80 @@ function openIssueNumberPicker() {
|
||||
openIssueNumberModalInner(true, { psCompileId: mixerPsCompilePickerId.value || '' });
|
||||
}
|
||||
|
||||
//update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A59】规格点击选择混炼示方-----------
|
||||
function openSpecPicker() {
|
||||
if (!showFooter.value) {
|
||||
return;
|
||||
}
|
||||
setSpecPickerModalProps({ zIndex: 1500 });
|
||||
openSpecPickerModalInner(true, { machineId: sheetForm.machineId || '' });
|
||||
}
|
||||
|
||||
async function applyMixingSpecPageData(row: Recordable, mode: 'edit' | 'referenceAdd') {
|
||||
const pageData = mode === 'referenceAdd' ? cloneMixingSpecPageForReferenceAdd(row) : row;
|
||||
isUpdate.value = mode === 'edit';
|
||||
Object.assign(sheetForm, pageData || {});
|
||||
if (mode === 'referenceAdd') {
|
||||
sheetForm.id = '';
|
||||
const userInfo = userStore.getUserInfo || {};
|
||||
refreshSignDisplay({
|
||||
createBy_dictText: userInfo.realname,
|
||||
createBy: userInfo.username,
|
||||
});
|
||||
} else {
|
||||
refreshSignDisplay(pageData || {});
|
||||
}
|
||||
await loadMachineEffectiveVolume(sheetForm.machineId);
|
||||
await loadMixerStepOptions(sheetForm.machineId);
|
||||
await syncSheetToForm();
|
||||
materialData.value = ensureMixingDetailRows(pageData?.materialList || [], DEFAULT_MIXING_MATERIAL_ROW_COUNT);
|
||||
convertFactorApplying.value = true;
|
||||
initMaterialBaseUnitWeights(materialData.value, sheetForm.convertFactor, true);
|
||||
lastConvertFactor.value = normalizeMixingConvertFactor(sheetForm.convertFactor);
|
||||
applyMaterialAccumWeight(materialData.value);
|
||||
convertFactorApplying.value = false;
|
||||
stepData.value = ensureMixingDetailRows(pageData?.stepList || [], DEFAULT_MIXING_STEP_ROW_COUNT);
|
||||
downStepData.value = ensureMixingDetailRows(pageData?.downStepList || [], DEFAULT_MIXING_DOWN_STEP_ROW_COUNT);
|
||||
tcuData.value = ensureTcuDefaultRows(pageData?.tcuList || []);
|
||||
}
|
||||
|
||||
async function onSpecPickerEdit(payload: Recordable | null) {
|
||||
if (!payload?.mixingSpecId) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const raw = await queryById({ id: payload.mixingSpecId });
|
||||
const row = (raw as Recordable)?.specName != null ? raw : (raw as Recordable)?.result;
|
||||
if (!row?.id) {
|
||||
createMessage.warning('未找到混炼示方数据');
|
||||
return;
|
||||
}
|
||||
await applyMixingSpecPageData(row, 'edit');
|
||||
createMessage.success(`已加载示方「${row.specName || ''}」`);
|
||||
} catch {
|
||||
createMessage.error('加载混炼示方失败');
|
||||
}
|
||||
}
|
||||
|
||||
async function onSpecPickerReferenceAdd(payload: Recordable | null) {
|
||||
if (!payload?.mixingSpecId) {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const raw = await queryById({ id: payload.mixingSpecId });
|
||||
const row = (raw as Recordable)?.specName != null ? raw : (raw as Recordable)?.result;
|
||||
if (!row?.id) {
|
||||
createMessage.warning('未找到混炼示方数据');
|
||||
return;
|
||||
}
|
||||
await applyMixingSpecPageData(row, 'referenceAdd');
|
||||
createMessage.success(`已参照示方「${row.specName || ''}」新增`);
|
||||
} catch {
|
||||
createMessage.error('参照混炼示方失败');
|
||||
}
|
||||
}
|
||||
//update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A59】规格点击选择混炼示方-----------
|
||||
|
||||
function onIssueNumberSelect(payload: Recordable | null) {
|
||||
if (!payload) {
|
||||
return;
|
||||
@@ -1075,22 +1164,7 @@ const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data
|
||||
if (isUpdate.value && data?.record?.id) {
|
||||
const raw = await queryById({ id: data.record.id });
|
||||
const row = raw?.result || raw;
|
||||
Object.assign(sheetForm, row || {});
|
||||
refreshSignDisplay(row || {});
|
||||
await loadMachineEffectiveVolume(sheetForm.machineId);
|
||||
await loadMixerStepOptions(sheetForm.machineId);
|
||||
await syncSheetToForm();
|
||||
//update-begin---author:cursor ---date:20260522 for:【XSLMES-20260522-A39】编辑页明细补齐默认空行与新增一致-----------
|
||||
materialData.value = ensureMixingDetailRows(row?.materialList || [], DEFAULT_MIXING_MATERIAL_ROW_COUNT);
|
||||
convertFactorApplying.value = true;
|
||||
initMaterialBaseUnitWeights(materialData.value, sheetForm.convertFactor, true);
|
||||
lastConvertFactor.value = normalizeMixingConvertFactor(sheetForm.convertFactor);
|
||||
applyMaterialAccumWeight(materialData.value);
|
||||
convertFactorApplying.value = false;
|
||||
stepData.value = ensureMixingDetailRows(row?.stepList || [], DEFAULT_MIXING_STEP_ROW_COUNT);
|
||||
downStepData.value = ensureMixingDetailRows(row?.downStepList || [], DEFAULT_MIXING_DOWN_STEP_ROW_COUNT);
|
||||
//update-end---author:cursor ---date:20260522 for:【XSLMES-20260522-A39】编辑页明细补齐默认空行与新增一致-----------
|
||||
tcuData.value = ensureTcuDefaultRows(row?.tcuList || []);
|
||||
await applyMixingSpecPageData(row, 'edit');
|
||||
} else {
|
||||
const userInfo = userStore.getUserInfo || {};
|
||||
//update-begin---author:cursor ---date:20260522 for:【XSLMES-20260522-A33】新增混炼示方制作日期默认当天-----------
|
||||
@@ -1270,6 +1344,10 @@ async function handleSubmit() {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
:deep(.mixing-picker-input:not(.is-filled) input::placeholder) {
|
||||
color: #bfbfbf;
|
||||
}
|
||||
|
||||
:deep(.mixing-picker-input.is-filled) {
|
||||
color: #262626;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user