From 218001e6ae4cbc00085df1bf5fffe04084ada339 Mon Sep 17 00:00:00 2001 From: wuweihua <88888888> Date: Thu, 5 Nov 2026 13:15:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=96=E8=BE=91bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../set/components/create/StepDetails.vue | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/bms-front/src/views/price/set/components/create/StepDetails.vue b/bms-front/src/views/price/set/components/create/StepDetails.vue index 462219f2..ce80df24 100644 --- a/bms-front/src/views/price/set/components/create/StepDetails.vue +++ b/bms-front/src/views/price/set/components/create/StepDetails.vue @@ -385,18 +385,35 @@ const emptyTip = computed(() => { }) -/** Resolve version id: prop first, else reload package current version. */ +/** Resolve version id: editing prop/local first; never replace with package EFFECT version. */ const resolvedPsvId = ref(props.psvId) watch(() => props.psvId, v => { if (v != null && v !== '') resolvedPsvId.value = v }) +function knownPsvId() { + if (props.psvId != null && props.psvId !== '') return props.psvId + if (resolvedPsvId.value != null && resolvedPsvId.value !== '') return resolvedPsvId.value + return null +} + async function resolvePsvId(force) { - if (!force && resolvedPsvId.value != null && resolvedPsvId.value !== '') { - return resolvedPsvId.value + const known = knownPsvId() + // Keep the version being edited. force must NOT switch to data.version (EFFECT). + if (known != null && !force) { + resolvedPsvId.value = known + return known } - if (!props.priceSetId) return null + if (!props.priceSetId) return known const res = await api.getPriceSet(props.priceSetId) const data = res.data || {} const versions = data.versions || [] + if (known != null) { + const still = versions.find(v => v && String(v.psvId) === String(known)) + if (still && still.psvId != null) { + resolvedPsvId.value = still.psvId + return still.psvId + } + } + // Only when no editing psvId (e.g. brand-new draft): fall back to package current. const fromData = (data.version && data.version.psvId) ? data.version : null const current = fromData || versions[0] || {} if (current.psvId != null) { @@ -594,7 +611,8 @@ async function canOpenImport() { return false } if (props.livePersist) { - const psvId = await resolvePsvId(true) + // Use the version being edited (props.psvId). Do not force-refresh to EFFECT. + const psvId = await resolvePsvId(false) if (!psvId) { proxy.$modal.msgWarning('缺少套餐版本,请先保存基本信息') return false