增加价格变更日志
This commit is contained in:
@@ -12,10 +12,10 @@
|
||||
</template>
|
||||
<el-tabs v-model="statusTab" class="ver-tabs">
|
||||
<el-tab-pane :label="tabLabel('all')" name="all" />
|
||||
<el-tab-pane :label="tabLabel('0')" name="0" />
|
||||
<el-tab-pane :label="tabLabel('3')" name="3" />
|
||||
<el-tab-pane :label="tabLabel('pending')" name="pending" />
|
||||
<el-tab-pane :label="tabLabel('1')" name="1" />
|
||||
<el-tab-pane :label="tabLabel('2')" name="2" />
|
||||
<el-tab-pane :label="tabLabel('del')" name="del" />
|
||||
</el-tabs>
|
||||
|
||||
<el-table :data="filteredVersions" border empty-text="暂无版本">
|
||||
@@ -32,9 +32,12 @@
|
||||
</el-table-column>
|
||||
<el-table-column :label="colStatus" width="100" align="center">
|
||||
<template #default="{ row }">
|
||||
<el-tag :type="versionStatusTag(row.status)" size="small">{{ versionStatusLabel(row.status) }}</el-tag>
|
||||
<el-tag :type="isDeletedVersion(row) ? 'danger' : versionStatusTag(row.status)" size="small">{{ statusText(row) }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colCreate" min-width="170" align="center">
|
||||
<template #default="{ row }">{{ row.createTime || '-' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colRows" width="100" align="center">
|
||||
<template #default="{ row }">{{ detailCount(row) }}</template>
|
||||
</el-table-column>
|
||||
@@ -49,27 +52,27 @@
|
||||
@click="emit('view-price-log', row)"
|
||||
>变更记录</el-button>
|
||||
<el-button
|
||||
v-if="showEditButton(row)"
|
||||
v-if="!isDeletedVersion(row) && showEditButton(row)"
|
||||
link
|
||||
type="primary"
|
||||
@click="emit('edit', row)"
|
||||
>编辑</el-button>
|
||||
<el-button
|
||||
v-if="isDraftVersion(row)"
|
||||
v-if="!isDeletedVersion(row) && isDraftVersion(row)"
|
||||
link
|
||||
type="success"
|
||||
@click="emit('activate', row)"
|
||||
v-hasPermi="editPerm"
|
||||
>启动</el-button>
|
||||
<el-button
|
||||
v-if="isPendingVersion(row)"
|
||||
v-if="!isDeletedVersion(row) && isPendingVersion(row)"
|
||||
link
|
||||
type="primary"
|
||||
@click="emit('reschedule', row)"
|
||||
v-hasPermi="editPerm"
|
||||
>修改生效时间</el-button>
|
||||
<el-button
|
||||
v-if="isDraftVersion(row) || isPendingVersion(row) || isEffectVersion(row)"
|
||||
v-if="!isDeletedVersion(row) && (isDraftVersion(row) || isPendingVersion(row) || isEffectVersion(row))"
|
||||
link
|
||||
type="danger"
|
||||
:loading="isRemoving(row)"
|
||||
@@ -102,6 +105,7 @@ const emit = defineEmits(['update:modelValue', 'create-version', 'open-details',
|
||||
|
||||
const title = '套餐版本'
|
||||
const colVer = '版本号'
|
||||
const colCreate = '创建时间'
|
||||
const colEff = '生效时间'
|
||||
const colExp = '失效时间'
|
||||
const colStatus = '状态'
|
||||
@@ -109,28 +113,42 @@ const colRows = '明细行数'
|
||||
const colAction = '操作'
|
||||
const statusTab = ref('all')
|
||||
|
||||
function isDeletedVersion(row) {
|
||||
return !!row && String(row.isDel) === '1'
|
||||
}
|
||||
|
||||
function statusText(row) {
|
||||
if (isDeletedVersion(row)) return '已删除'
|
||||
return versionStatusLabel(row.status)
|
||||
}
|
||||
|
||||
const activeVersions = computed(() => (props.versions || []).filter(v => !isDeletedVersion(v)))
|
||||
const deletedVersions = computed(() => (props.versions || []).filter(v => isDeletedVersion(v)))
|
||||
|
||||
const counts = computed(() => {
|
||||
const map = { all: 0, '0': 0, '3': 0, '1': 0, '2': 0 }
|
||||
;(props.versions || []).forEach(v => {
|
||||
const map = { all: 0, pending: 0, '1': 0, '2': 0, del: 0 }
|
||||
activeVersions.value.forEach(v => {
|
||||
map.all++
|
||||
const s = String(v.status == null ? '' : v.status)
|
||||
if (map[s] != null) map[s]++
|
||||
if (s === '0' || s === '3') map.pending++
|
||||
else if (map[s] != null) map[s]++
|
||||
})
|
||||
map.del = deletedVersions.value.length
|
||||
return map
|
||||
})
|
||||
|
||||
function tabLabel(key) {
|
||||
const labels = {
|
||||
all: '全部',
|
||||
'0': '草稿',
|
||||
'3': '待生效',
|
||||
pending: '待生效',
|
||||
'1': '已生效',
|
||||
'2': '已失效'
|
||||
'2': '已失效',
|
||||
del: '已删除'
|
||||
}
|
||||
return labels[key] + ' (' + (counts.value[key] || 0) + ')'
|
||||
}
|
||||
|
||||
const hasDraft = computed(() => (props.versions || []).some(v => isDraftVersion(v)))
|
||||
const hasDraft = computed(() => activeVersions.value.some(v => isDraftVersion(v)))
|
||||
|
||||
function toEffMs(v) {
|
||||
if (!v || !v.effectiveTime) return NaN
|
||||
@@ -166,10 +184,21 @@ function sortVersions(list) {
|
||||
}
|
||||
|
||||
const filteredVersions = computed(() => {
|
||||
const list = props.versions || []
|
||||
const filtered = statusTab.value === 'all'
|
||||
? list
|
||||
: list.filter(v => String(v.status) === statusTab.value)
|
||||
if (statusTab.value === 'del') {
|
||||
return sortVersions(deletedVersions.value)
|
||||
}
|
||||
const list = activeVersions.value
|
||||
let filtered
|
||||
if (statusTab.value === 'all') {
|
||||
filtered = list
|
||||
} else if (statusTab.value === 'pending') {
|
||||
filtered = list.filter(v => {
|
||||
const s = String(v.status)
|
||||
return s === '0' || s === '3'
|
||||
})
|
||||
} else {
|
||||
filtered = list.filter(v => String(v.status) === statusTab.value)
|
||||
}
|
||||
return sortVersions(filtered)
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user