优化套餐新建版本的逻辑
This commit is contained in:
@@ -58,6 +58,7 @@
|
||||
<div class="build-card__desc">按产品库基础价生成套餐产品列表,可再导入 Excel 修改价格</div>
|
||||
</button>
|
||||
<button
|
||||
v-if="showImportInherit"
|
||||
type="button"
|
||||
class="build-card build-card--import"
|
||||
:class="{ selected: isImportBuildMode(priceBuildMode) }"
|
||||
@@ -247,7 +248,12 @@ const props = defineProps({
|
||||
/** True when build mode changed locally and not saved yet */
|
||||
buildModeDirty: { type: Boolean, default: false },
|
||||
/** False while parent still loading package data — avoid first click being wiped by applySetData */
|
||||
buildModeReady: { type: Boolean, default: true }
|
||||
buildModeReady: { type: Boolean, default: true },
|
||||
/**
|
||||
* Show「按上一版 Excel 建价」(IMPORT). Hidden for brand-new package create
|
||||
* (no prior version); keep for newVersion / copy / edit.
|
||||
*/
|
||||
showImportInherit: { type: Boolean, default: true }
|
||||
})
|
||||
|
||||
const emit = defineEmits(['update:psvId', 'update:priceBuildMode', 'update:pefId'])
|
||||
|
||||
@@ -173,7 +173,8 @@ const noneSc = '无'
|
||||
const isFixed = computed(() => isFixedType(props.setType))
|
||||
const title = computed(() => {
|
||||
const v = props.version || {}
|
||||
return (v.versionNo || '-') + ' · 版本明细'
|
||||
const eff = v.effectiveTime || '未设置生效时间'
|
||||
return eff + ' · 版本明细'
|
||||
})
|
||||
const detailTitleText = computed(() => {
|
||||
const p = activeProduct.value || {}
|
||||
|
||||
@@ -19,13 +19,10 @@
|
||||
</el-tabs>
|
||||
|
||||
<el-table :data="filteredVersions" border empty-text="暂无版本">
|
||||
<el-table-column :label="colNo" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click="openDetails(row)">{{ row.versionNo || '-' }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colEff" min-width="170">
|
||||
<template #default="{ row }">{{ row.effectiveTime || '-' }}</template>
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click="openDetails(row)">{{ row.effectiveTime || '未设置' }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colExp" min-width="170">
|
||||
<template #default="{ row }">{{ row.expireTime || '-' }}</template>
|
||||
@@ -90,7 +87,6 @@ const props = defineProps({
|
||||
const emit = defineEmits(['update:modelValue', 'create-version', 'open-details', 'view-import-attach', 'activate', 'reschedule', 'edit', 'remove'])
|
||||
|
||||
const title = '套餐版本'
|
||||
const colNo = '版本号'
|
||||
const colEff = '生效时间'
|
||||
const colExp = '失效时间'
|
||||
const colStatus = '状态'
|
||||
@@ -121,10 +117,33 @@ function tabLabel(key) {
|
||||
|
||||
const hasDraft = computed(() => (props.versions || []).some(v => isDraftVersion(v)))
|
||||
|
||||
function toEffMs(v) {
|
||||
if (!v || !v.effectiveTime) return NaN
|
||||
const t = new Date(String(v.effectiveTime).replace(/-/g, '/')).getTime()
|
||||
return Number.isNaN(t) ? NaN : t
|
||||
}
|
||||
|
||||
/** Sort by effective time descending; drafts without time last. */
|
||||
function sortByEffectiveTime(list) {
|
||||
return (list || []).slice().sort((a, b) => {
|
||||
const ta = toEffMs(a)
|
||||
const tb = toEffMs(b)
|
||||
const aNull = Number.isNaN(ta)
|
||||
const bNull = Number.isNaN(tb)
|
||||
if (aNull && bNull) return (Number(b.versionSeq) || 0) - (Number(a.versionSeq) || 0)
|
||||
if (aNull) return 1
|
||||
if (bNull) return -1
|
||||
if (tb !== ta) return tb - ta
|
||||
return (Number(b.versionSeq) || 0) - (Number(a.versionSeq) || 0)
|
||||
})
|
||||
}
|
||||
|
||||
const filteredVersions = computed(() => {
|
||||
const list = props.versions || []
|
||||
if (statusTab.value === 'all') return list
|
||||
return list.filter(v => String(v.status) === statusTab.value)
|
||||
const filtered = statusTab.value === 'all'
|
||||
? list
|
||||
: list.filter(v => String(v.status) === statusTab.value)
|
||||
return sortByEffectiveTime(filtered)
|
||||
})
|
||||
|
||||
function detailCount(row) {
|
||||
|
||||
Reference in New Issue
Block a user