fix(bom): 另存为版本自增基准改响应式,修复 V1.1→V1.2 未升级
- originalVersion/currentBomNo 为普通 let,computed 读不到变化;且 handleSaveAs 在赋值前就算版本候选,导致从 V1.1 另存得到 V1.1 覆盖原版本 - 新增响应式 upgradeBaseVersion/upgradeBaseBomNo,versionOptions 改读 ref;handleSaveAs 先锁定基准再计算 - 修复后:V1.1→V1.2、V1.9→V1.10、主版本→V2.0,占用号自动跳过
This commit is contained in:
@ -424,6 +424,9 @@ const isSaveAsMode = ref(false)
|
||||
const isReadOnlyMode = ref(false)
|
||||
let originalVersion = ''
|
||||
let currentBomNo = ''
|
||||
// ★ 版本升级的响应式基准(plain let 不是响应式,computed 读不到变化 → 1.1 升次版本会算出错的候选)
|
||||
const upgradeBaseVersion = ref('')
|
||||
const upgradeBaseBomNo = ref('')
|
||||
let originalChildren: ChildRow[] = []
|
||||
let pendingDraftBomNo = ''
|
||||
let pendingDraftVersion = ''
|
||||
@ -617,11 +620,11 @@ const form = reactive({
|
||||
const pureBomNo = computed(() => form.bom_no)
|
||||
|
||||
const versionOptions = computed(() => {
|
||||
const ver = originalVersion || 'V1.0'
|
||||
const ver = upgradeBaseVersion.value || 'V1.0'
|
||||
const allItems: any[] = []
|
||||
groupCache.value.forEach((items) => allItems.push(...items))
|
||||
const occupiedVersions = new Set(
|
||||
allItems.filter((item: any) => item.bom_no === currentBomNo).map((item: any) => item.version)
|
||||
allItems.filter((item: any) => item.bom_no === upgradeBaseBomNo.value).map((item: any) => item.version)
|
||||
)
|
||||
const getNextMinor = (baseMajor: number, baseMinor: number): string => {
|
||||
let minor = baseMinor + 1
|
||||
@ -1008,10 +1011,15 @@ const handleSaveAs = async (row: any) => {
|
||||
form.bom_no = (raw.parent_spec || row.bom_no).split('/')[0].trim()
|
||||
form.remark = raw.remark || ''
|
||||
form.versionUpgradeType = 'minor'
|
||||
form.version = versionOptions.value?.minor || 'V1.1'
|
||||
|
||||
// ★ 先锁定升级基准(原版本号 + 该 BOM),再计算目标版本,保证 V1.1 → V1.2 等正确且跳过已占用号
|
||||
originalVersion = raw.version || ''
|
||||
currentBomNo = row.bom_no
|
||||
upgradeBaseVersion.value = originalVersion
|
||||
upgradeBaseBomNo.value = currentBomNo
|
||||
const upgradeOpts = versionOptions.value
|
||||
form.version = upgradeOpts?.minor || upgradeOpts?.major || 'V1.1'
|
||||
|
||||
originalChildren = JSON.parse(JSON.stringify(form.children))
|
||||
originalDraftHash.value = getDraftHash()
|
||||
|
||||
@ -1207,6 +1215,8 @@ const resetForm = () => {
|
||||
isReadOnlyMode.value = false
|
||||
originalVersion = ''
|
||||
currentBomNo = ''
|
||||
upgradeBaseVersion.value = ''
|
||||
upgradeBaseBomNo.value = ''
|
||||
childSearchKeyword.value = ''
|
||||
parentNameInput.value = ''
|
||||
originalDraftHash.value = ''
|
||||
|
||||
Reference in New Issue
Block a user