修改套餐规则
This commit is contained in:
@@ -95,7 +95,7 @@ function findPrev(row) {
|
||||
}
|
||||
function pickDefault(prev) {
|
||||
const d = new Date()
|
||||
d.setHours(0, 0, 0, 0)
|
||||
d.setHours(9, 0, 0, 0)
|
||||
const now = formatHour(d)
|
||||
if (!prev) return now
|
||||
return toMs(now) >= toMs(prev) ? now : prev
|
||||
|
||||
@@ -243,6 +243,7 @@ const importProgressMessage = ref('')
|
||||
const importProgressStatus = ref(undefined)
|
||||
|
||||
const finishing = ref(false)
|
||||
const editingExisting = ref(false)
|
||||
const localRemoves = ref([])
|
||||
const pendingImports = ref([])
|
||||
const previewDetailsByCode = ref({})
|
||||
@@ -327,6 +328,7 @@ async function bootstrap() {
|
||||
if (qPsv != null && qPsv !== '') {
|
||||
psvId.value = Number(qPsv)
|
||||
versionNo.value = (route.query && route.query.versionNo) ? String(route.query.versionNo) : ''
|
||||
editingExisting.value = true
|
||||
if (!buildMode.value) buildMode.value = 'IMPORT'
|
||||
await loadProducts()
|
||||
}
|
||||
@@ -381,7 +383,7 @@ function removeRow(row) {
|
||||
if (!row) return
|
||||
const code = row.productCode
|
||||
if (psvId.value && row.productId != null) {
|
||||
proxy.$modal.confirm('确认从草稿中移除该产品?').then(() => props.delFn(row.productId)).then(() => {
|
||||
proxy.$modal.confirm(editingExisting.value ? '确认移除该产品?' : '确认从草稿中移除该产品?').then(() => props.delFn(row.productId)).then(() => {
|
||||
proxy.$modal.msgSuccess('移除成功')
|
||||
loadProducts()
|
||||
}).catch(() => {})
|
||||
@@ -511,7 +513,7 @@ async function finishSave() {
|
||||
await applyPendingPreview(applyImportProgress)
|
||||
await savePendingExcelFiles()
|
||||
await applyLocalRemoves()
|
||||
proxy.$modal.msgSuccess('已保存到待生效草稿')
|
||||
proxy.$modal.msgSuccess(editingExisting.value ? '已保存' : '已保存到待生效草稿')
|
||||
goBack()
|
||||
} catch (e) {
|
||||
const msg = (e && e.message) || (e && e.msg) || 'save failed'
|
||||
|
||||
@@ -12,9 +12,10 @@
|
||||
<el-table-column :label="colLevel" prop="serviceLevel" width="90" align="center" />
|
||||
<el-table-column :label="colCargo" prop="cargoAttr" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column :label="colRegion" prop="destRegion" width="90" align="center" />
|
||||
<el-table-column :label="colAction" width="110" align="center" fixed="right">
|
||||
<el-table-column :label="colAction" :width="showSurcharge ? 180 : 110" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="view(row)">{{ viewText }}</el-button>
|
||||
<el-button v-if="showSurcharge" link type="primary" @click.stop="emit('surcharge', row)">{{ surchargeText }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -33,15 +34,17 @@ const L = {
|
||||
colRegion: "目的区域",
|
||||
colAction: "操作",
|
||||
view: "查看明细",
|
||||
surcharge: "附加费",
|
||||
countAll: "共 ",
|
||||
countUnit: " 个产品",
|
||||
countFilter: " 个产品(全部 ",
|
||||
countFilterEnd: " 个)"
|
||||
}
|
||||
const props = defineProps({
|
||||
listFn: { type: Function, required: true }
|
||||
listFn: { type: Function, required: true },
|
||||
showSurcharge: { type: Boolean, default: false }
|
||||
})
|
||||
const emit = defineEmits(['view'])
|
||||
const emit = defineEmits(['view', 'surcharge'])
|
||||
const visible = ref(false)
|
||||
const loading = ref(false)
|
||||
const rows = ref([])
|
||||
@@ -60,6 +63,8 @@ const colCargo = L.colCargo
|
||||
const colRegion = L.colRegion
|
||||
const colAction = L.colAction
|
||||
const viewText = L.view
|
||||
const surchargeText = L.surcharge
|
||||
const showSurcharge = computed(() => !!props.showSurcharge)
|
||||
const labQuery = "查询"
|
||||
const labReset = "重置"
|
||||
const filteredRows = computed(() => {
|
||||
|
||||
@@ -0,0 +1,206 @@
|
||||
<template>
|
||||
<div class="catalog-ver">
|
||||
<div class="ver-head">
|
||||
<div class="ver-title">
|
||||
<i class="ver-bar" />
|
||||
<span class="ver-text">{{ title }}</span>
|
||||
<el-tag size="small" type="info" effect="plain" round>{{ filteredVersions.length }}</el-tag>
|
||||
</div>
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="small"
|
||||
:disabled="hasDraft"
|
||||
v-hasPermi="[createPerm]"
|
||||
@click="emit('create')"
|
||||
>{{ createLabel }}</el-button>
|
||||
</div>
|
||||
|
||||
<el-tabs v-model="statusTab" class="ver-tabs">
|
||||
<el-tab-pane :label="tabLabel('all')" name="all" />
|
||||
<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-tabs>
|
||||
|
||||
<el-table v-loading="loading" :data="filteredVersions" border :empty-text="emptyText" @row-click="onRowClick">
|
||||
<el-table-column :label="colNo" width="120">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="emit('view-products', row)">{{ row.versionNo || '-' }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colEff" min-width="170">
|
||||
<template #default="{ row }">{{ row.effectiveTime || '-' }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colExp" min-width="170">
|
||||
<template #default="{ row }">{{ row.expireTime || '-' }}</template>
|
||||
</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>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="colProducts" prop="productCount" width="90" align="center" />
|
||||
<el-table-column :label="colRows" prop="detailCount" width="100" align="center" />
|
||||
<el-table-column :label="colAction" width="420" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="emit('view-products', row)">{{ labViewProducts }}</el-button>
|
||||
<el-button link type="primary" @click.stop="emit('view-attach', row)" v-hasPermi="[queryPerm]">{{ labViewAttach }}</el-button>
|
||||
<el-button
|
||||
v-if="showEditButton(row)"
|
||||
link
|
||||
type="primary"
|
||||
@click.stop="emit('edit', row)"
|
||||
>{{ labEdit }}</el-button>
|
||||
<el-button
|
||||
v-if="isDraftVersion(row)"
|
||||
link
|
||||
type="success"
|
||||
@click.stop="emit('activate', row)"
|
||||
v-hasPermi="[editPerm]"
|
||||
>{{ labStart }}</el-button>
|
||||
<el-button
|
||||
v-if="isDraftVersion(row) || isPendingVersion(row) || isEffectVersion(row)"
|
||||
link
|
||||
type="danger"
|
||||
:loading="isRemoving(row)"
|
||||
:disabled="removingPsvId != null"
|
||||
@click.stop="emit('remove', row)"
|
||||
v-hasPermi="[removePerm]"
|
||||
>{{ labDelete }}</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="CatalogVersionTable">
|
||||
import {
|
||||
versionStatusLabel,
|
||||
versionStatusTag,
|
||||
isDraftVersion,
|
||||
isPendingVersion,
|
||||
isEffectVersion,
|
||||
isPriceEditableVersion
|
||||
} from '@/views/price/set/utils/priceSet'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
|
||||
const props = defineProps({
|
||||
versions: { type: Array, default: () => [] },
|
||||
loading: { type: Boolean, default: false },
|
||||
title: { type: String, required: true },
|
||||
createLabel: { type: String, required: true },
|
||||
createPerm: { type: String, required: true },
|
||||
editPerm: { type: String, required: true },
|
||||
removePerm: { type: String, required: true },
|
||||
queryPerm: { type: String, required: true },
|
||||
removingPsvId: { type: [Number, String], default: null }
|
||||
})
|
||||
|
||||
const emit = defineEmits(['create', 'edit', 'view-products', 'view-attach', 'activate', 'remove'])
|
||||
|
||||
const colNo = '版本号'
|
||||
const colEff = '生效时间'
|
||||
const colExp = '失效时间'
|
||||
const colStatus = '状态'
|
||||
const colProducts = '产品数'
|
||||
const colRows = '明细行数'
|
||||
const colAction = '操作'
|
||||
const emptyText = '暂无版本'
|
||||
const labViewProducts = '查看产品'
|
||||
const labViewAttach = '查看附件'
|
||||
const labEdit = '编辑'
|
||||
const labStart = '启动'
|
||||
const labDelete = '删除'
|
||||
|
||||
const statusTab = ref('all')
|
||||
|
||||
const counts = computed(() => {
|
||||
const map = { all: 0, pending: 0, '1': 0, '2': 0 }
|
||||
;(props.versions || []).forEach(v => {
|
||||
map.all++
|
||||
const st = String(v.status == null ? '' : v.status)
|
||||
if (st === '0' || st === '3') map.pending++
|
||||
else if (map[st] != null) map[st]++
|
||||
})
|
||||
return map
|
||||
})
|
||||
|
||||
function tabLabel(key) {
|
||||
const labels = {
|
||||
all: '全部',
|
||||
pending: '待生效',
|
||||
'1': '已生效',
|
||||
'2': '已失效'
|
||||
}
|
||||
return labels[key] + ' (' + (counts.value[key] || 0) + ')'
|
||||
}
|
||||
|
||||
const hasDraft = computed(() => (props.versions || []).some(v => isDraftVersion(v)))
|
||||
|
||||
const filteredVersions = computed(() => {
|
||||
const list = props.versions || []
|
||||
if (statusTab.value === 'all') return list
|
||||
if (statusTab.value === 'pending') {
|
||||
return list.filter(v => {
|
||||
const st = String(v.status == null ? '' : v.status)
|
||||
return st === '0' || st === '3'
|
||||
})
|
||||
}
|
||||
return list.filter(v => String(v.status) === statusTab.value)
|
||||
})
|
||||
|
||||
function showEditButton(row) {
|
||||
if (!checkPermi([props.editPerm])) return false
|
||||
// Align with sales force-edit: draft / pending / effect can edit
|
||||
return isPriceEditableVersion(row) || isEffectVersion(row)
|
||||
}
|
||||
|
||||
function isRemoving(row) {
|
||||
return props.removingPsvId != null && row && String(props.removingPsvId) === String(row.psvId)
|
||||
}
|
||||
|
||||
function onRowClick(row) {
|
||||
emit('view-products', row)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.catalog-ver {
|
||||
background: #fff;
|
||||
border: 1px solid var(--el-border-color-lighter);
|
||||
border-radius: 8px;
|
||||
padding: 12px 16px 16px;
|
||||
}
|
||||
.ver-head {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 12px;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
.ver-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
min-width: 0;
|
||||
}
|
||||
.ver-bar {
|
||||
width: 3px;
|
||||
height: 14px;
|
||||
border-radius: 2px;
|
||||
background: #52c41a;
|
||||
flex: none;
|
||||
}
|
||||
.ver-text {
|
||||
font-size: 15px;
|
||||
font-weight: 600;
|
||||
color: #303133;
|
||||
}
|
||||
.ver-tabs {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.ver-tabs :deep(.el-tabs__header) {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
</style>
|
||||
@@ -5,112 +5,38 @@
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="mb16"
|
||||
title="已生效展示当前生效版本产品。待生效、已失效按版本展示;待生效可启动或删除整版。建价请点「新建产品价格」。"
|
||||
:title="alertTitle"
|
||||
/>
|
||||
|
||||
<el-tabs v-model="statusTab" class="catalog-tabs" @tab-change="onTabChange">
|
||||
<el-tab-pane label="已生效" name="effect" />
|
||||
<el-tab-pane label="待生效" name="pending" />
|
||||
<el-tab-pane label="已失效" name="expired" />
|
||||
</el-tabs>
|
||||
|
||||
<div v-show="statusTab === 'effect'">
|
||||
<basic-table
|
||||
ref="tableRef"
|
||||
:extra-params="extraParams"
|
||||
:columns="columns"
|
||||
:search-columns="searchColumns"
|
||||
:query="queryList"
|
||||
row-key="productId"
|
||||
:selection="false"
|
||||
>
|
||||
<template #toolbar>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['price:product:add']">新建产品价格</el-button>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
<template #col-cargoAttr="{ row }">
|
||||
<el-tag type="primary" size="small" effect="plain">{{ row.cargoAttr || '-' }}</el-tag>
|
||||
</template>
|
||||
|
||||
<template #col-status="{ row }">
|
||||
<dict-tag :options="bms_product_effect_status" :value="row.status" />
|
||||
</template>
|
||||
|
||||
<template #col-action="{ row }">
|
||||
<el-button link type="primary" title="产品明细" icon="View" @click="countryRef.open(row)" v-hasPermi="['price:product:query']"></el-button>
|
||||
<el-button link type="primary" title="附加费" icon="Money" @click="surchargeRef.open(row)" v-hasPermi="['price:surcharge:query']"></el-button>
|
||||
</template>
|
||||
</basic-table>
|
||||
</div>
|
||||
|
||||
<div v-show="statusTab === 'pending'">
|
||||
<el-row class="mb12">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['price:product:add']">新建产品价格</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="versionLoading" :data="versionRows" border empty-text="暂无待生效版本" @row-click="openVersionProducts">
|
||||
<el-table-column label="版本号" prop="versionNo" width="120" />
|
||||
<el-table-column label="生效时间" prop="effectiveTime" min-width="170" />
|
||||
<el-table-column label="失效时间" prop="expireTime" min-width="170" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">{{ versionStatusText(row.status) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品数" prop="productCount" width="90" align="center" />
|
||||
<el-table-column label="明细行数" prop="detailCount" width="100" align="center" />
|
||||
<el-table-column label="操作" width="360" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="onEditVersion(row)" v-hasPermi="['price:product:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click.stop="openVersionProducts(row)">查看产品</el-button>
|
||||
<el-button link type="primary" @click.stop="openExcel(row)" v-hasPermi="['price:product:query']">查看附件</el-button>
|
||||
<el-button link type="success" @click.stop="onStartVersion(row)" v-hasPermi="['price:product:edit']">启动</el-button>
|
||||
<el-button link type="danger" @click.stop="onDeleteVersion(row)" v-hasPermi="['price:product:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="versionTotal > 0"
|
||||
:total="versionTotal"
|
||||
v-model:page="versionQuery.pageNum"
|
||||
v-model:limit="versionQuery.pageSize"
|
||||
@pagination="loadVersions"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-show="statusTab === 'expired'">
|
||||
<el-table v-loading="versionLoading" :data="versionRows" border empty-text="暂无失效版本" @row-click="openVersionProducts">
|
||||
<el-table-column label="版本号" prop="versionNo" width="120" />
|
||||
<el-table-column label="生效时间" prop="effectiveTime" min-width="170" />
|
||||
<el-table-column label="失效时间" prop="expireTime" min-width="170" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">{{ versionStatusText(row.status) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品数" prop="productCount" width="90" align="center" />
|
||||
<el-table-column label="明细行数" prop="detailCount" width="100" align="center" />
|
||||
<el-table-column label="操作" width="220" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="openVersionProducts(row)">查看产品</el-button>
|
||||
<el-button link type="primary" @click.stop="openExcel(row)" v-hasPermi="['price:product:query']">查看附件</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="versionTotal > 0"
|
||||
:total="versionTotal"
|
||||
v-model:page="versionQuery.pageNum"
|
||||
v-model:limit="versionQuery.pageSize"
|
||||
@pagination="loadVersions"
|
||||
/>
|
||||
</div>
|
||||
<catalog-version-table
|
||||
:versions="versionRows"
|
||||
:loading="versionLoading"
|
||||
:removing-psv-id="removingPsvId"
|
||||
:title="verTitle"
|
||||
:create-label="createLabel"
|
||||
create-perm="price:product:add"
|
||||
edit-perm="price:product:edit"
|
||||
remove-perm="price:product:remove"
|
||||
query-perm="price:product:query"
|
||||
@create="handleAdd"
|
||||
@edit="onEditVersion"
|
||||
@view-products="openVersionProducts"
|
||||
@view-attach="openExcel"
|
||||
@activate="onStartVersion"
|
||||
@remove="onDeleteVersion"
|
||||
/>
|
||||
|
||||
<catalog-version-excel-drawer ref="excelRef" :list-fn="listProductVersionExcelFiles" />
|
||||
<product-country-drawer ref="countryRef" />
|
||||
<product-surcharge-drawer ref="surchargeRef" @success="() => tableRef.refresh()" />
|
||||
<catalog-version-products-drawer ref="versionProductsRef" :list-fn="listProduct" @view="(row) => countryRef.open(row)" />
|
||||
<product-surcharge-drawer ref="surchargeRef" />
|
||||
<catalog-version-products-drawer
|
||||
ref="versionProductsRef"
|
||||
:list-fn="listProduct"
|
||||
show-surcharge
|
||||
@view="(row) => countryRef.open(row)"
|
||||
@surcharge="(row) => surchargeRef.open(row)"
|
||||
/>
|
||||
<catalog-activate-dialog ref="activateRef" :load-versions="loadAllVersions" :activate-fn="activateProductVersion" @success="onActivated" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -120,53 +46,24 @@ import ProductSurchargeDrawer from './components/ProductSurchargeDrawer.vue'
|
||||
import CatalogVersionProductsDrawer from '../components/CatalogVersionProductsDrawer.vue'
|
||||
import CatalogVersionExcelDrawer from '../components/CatalogVersionExcelDrawer.vue'
|
||||
import CatalogActivateDialog from '../components/CatalogActivateDialog.vue'
|
||||
import CatalogVersionTable from '../components/CatalogVersionTable.vue'
|
||||
import { listProduct, listProductVersions, activateProductVersion, deleteProductVersion, listProductVersionExcelFiles } from '@/api/price/product'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const { bms_product_effect_status } = useDict('bms_product_effect_status')
|
||||
|
||||
const statusTab = ref('effect')
|
||||
const extraParams = reactive({ statusGroup: 'effect' })
|
||||
const alertTitle = "按版本管理产品价(与套餐版本一致)。点击版本可查看产品与明细;待生效(含草稿)可编辑、启动或硬删;已生效可软删(上一版自动恢复生效并清空失效时间)。建价请点「新建产品价格」。"
|
||||
const verTitle = '产品价版本'
|
||||
const createLabel = '新建产品价格'
|
||||
|
||||
const versionProductsRef = ref()
|
||||
const activateRef = ref()
|
||||
const versionLoading = ref(false)
|
||||
const removingPsvId = ref(null)
|
||||
const versionRows = ref([])
|
||||
const versionTotal = ref(0)
|
||||
const versionQuery = reactive({ pageNum: 1, pageSize: 10 })
|
||||
const tableRef = ref()
|
||||
const countryRef = ref()
|
||||
const surchargeRef = ref()
|
||||
const excelRef = ref()
|
||||
|
||||
const columns = [
|
||||
{ prop: 'productCode', label: '产品代码', minWidth: 110 },
|
||||
{ prop: 'productName', label: '产品名称', minWidth: 140, showOverflowTooltip: true },
|
||||
{ prop: 'serviceLevel', label: '时效等级', width: 90, align: 'center' },
|
||||
{ prop: 'cargoAttr', label: '走货属性', minWidth: 120, slot: 'cargoAttr' },
|
||||
{ prop: 'destRegion', label: '目的区域', width: 90, align: 'center' },
|
||||
{ prop: 'effectiveDate', label: '生效时间', width: 160, align: 'center' },
|
||||
{ prop: 'expireDate', label: '失效时间', width: 160, align: 'center' },
|
||||
{ prop: 'countryCount', label: '国家数', width: 80, align: 'center' },
|
||||
{ prop: 'surchargeCount', label: '附加费数', width: 90, align: 'center' },
|
||||
{ prop: 'status', label: '状态', width: 90, align: 'center', slot: 'status' },
|
||||
{ prop: 'updateNote', label: '更新内容', minWidth: 160, showOverflowTooltip: true },
|
||||
{ prop: 'action', label: '操作', width: 120, fixed: 'right', slot: 'action' }
|
||||
]
|
||||
|
||||
const searchColumns = [
|
||||
{ prop: 'productCode', label: '产品代码', component: 'input', placeholder: '产品代码' },
|
||||
{ prop: 'productName', label: '产品名称', component: 'input', placeholder: '产品名称' }
|
||||
]
|
||||
|
||||
function queryList(params) {
|
||||
const p = { ...(params || {}) }
|
||||
// Exact status search must not be limited by default statusGroup=active.
|
||||
if (p.status != null && p.status !== '') {
|
||||
delete p.statusGroup
|
||||
}
|
||||
return listProduct(p)
|
||||
}
|
||||
|
||||
function handleAdd() {
|
||||
proxy.$router.push({ path: '/price/product-create/index' })
|
||||
}
|
||||
@@ -179,32 +76,10 @@ function openExcel(row) {
|
||||
excelRef.value && excelRef.value.open(row)
|
||||
}
|
||||
|
||||
function onTabChange(name) {
|
||||
if (name === 'pending' || name === 'expired') {
|
||||
versionQuery.pageNum = 1
|
||||
loadVersions()
|
||||
return
|
||||
}
|
||||
extraParams.statusGroup = 'effect'
|
||||
nextTick(() => tableRef.value && tableRef.value.refresh())
|
||||
}
|
||||
|
||||
function versionStatusText(status) {
|
||||
const map = { '0': '草稿', '1': '已生效', '2': '已失效', '3': '待生效' }
|
||||
return map[String(status)] || status || '-'
|
||||
}
|
||||
|
||||
function loadVersions() {
|
||||
versionLoading.value = true
|
||||
const params = {
|
||||
pageNum: versionQuery.pageNum,
|
||||
pageSize: versionQuery.pageSize
|
||||
}
|
||||
if (statusTab.value === 'pending') params.statusGroup = 'pending'
|
||||
else params.status = '2'
|
||||
listProductVersions(params).then(res => {
|
||||
listProductVersions({ pageNum: 1, pageSize: 500 }).then(res => {
|
||||
versionRows.value = res.rows || []
|
||||
versionTotal.value = res.total || 0
|
||||
}).finally(() => { versionLoading.value = false })
|
||||
}
|
||||
|
||||
@@ -230,48 +105,33 @@ function onEditVersion(row) {
|
||||
function onStartVersion(row) {
|
||||
if (row && row.psvId != null) {
|
||||
activateRef.value && activateRef.value.open(row)
|
||||
return
|
||||
}
|
||||
loadAllVersions().then(list => {
|
||||
const pending = (list || []).filter(v => v && (String(v.status) === '0' || String(v.status) === '3'))
|
||||
if (!pending.length) {
|
||||
proxy.$modal.msgWarning('当前没有可启动的待生效版本')
|
||||
return
|
||||
}
|
||||
pending.sort((a, b) => (Number(b.versionSeq) || 0) - (Number(a.versionSeq) || 0))
|
||||
const draft = pending.find(v => String(v.status) === '0')
|
||||
activateRef.value && activateRef.value.open(draft || pending[0])
|
||||
})
|
||||
}
|
||||
|
||||
function onDeleteVersion(row) {
|
||||
if (!row || row.psvId == null) return
|
||||
proxy.$modal.confirm('确认硬删除该待生效版本?版本、产品、明细将从数据库真删除,且不可恢复。').then(() => deleteProductVersion(row.psvId)).then(() => {
|
||||
loadVersions()
|
||||
proxy.$modal.msgSuccess('删除成功')
|
||||
const effect = String(row.status) === '1'
|
||||
const msg = effect ? "确认软删除该已生效版本?版本及产品、明细将标记为已删除(列表不再展示)。" : "确认硬删除该版本?版本、产品、明细将从数据库真删除,且不可恢复。"
|
||||
proxy.$modal.confirm(msg).then(() => {
|
||||
removingPsvId.value = row.psvId
|
||||
proxy.$modal.loading("正在删除,请稍候...")
|
||||
return deleteProductVersion(row.psvId).then(() => {
|
||||
loadVersions()
|
||||
proxy.$modal.msgSuccess("删除成功")
|
||||
}).finally(() => {
|
||||
removingPsvId.value = null
|
||||
proxy.$modal.closeLoading()
|
||||
})
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
function onActivated() {
|
||||
if (statusTab.value === 'pending' || statusTab.value === 'expired') loadVersions()
|
||||
else if (tableRef.value) tableRef.value.refresh()
|
||||
loadVersions()
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => loadVersions())
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.mb16 { margin-bottom: 16px; }
|
||||
.mb12 { margin-bottom: 12px; }
|
||||
.catalog-tabs { margin-bottom: 8px; }
|
||||
.import-progress { padding: 8px 4px 4px; }
|
||||
.import-progress-msg {
|
||||
margin-top: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
word-break: break-word;
|
||||
max-height: 160px;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -5,163 +5,65 @@
|
||||
:closable="false"
|
||||
show-icon
|
||||
class="mb16"
|
||||
title="红线价已生效展示当前生效版本产品。待生效、已失效按版本展示;待生效可启动或删除整版。"
|
||||
:title="alertTitle"
|
||||
/>
|
||||
|
||||
<el-tabs v-model="statusTab" class="catalog-tabs" @tab-change="onTabChange">
|
||||
<el-tab-pane label="已生效" name="effect" />
|
||||
<el-tab-pane label="待生效" name="pending" />
|
||||
<el-tab-pane label="已失效" name="expired" />
|
||||
</el-tabs>
|
||||
|
||||
<div v-show="statusTab === 'effect'">
|
||||
<basic-table
|
||||
ref="tableRef"
|
||||
:extra-params="extraParams"
|
||||
:columns="columns"
|
||||
:search-columns="searchColumns"
|
||||
:query="queryList"
|
||||
row-key="productId"
|
||||
:selection="false"
|
||||
>
|
||||
<template #toolbar>
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['price:redline:add']">新建红线价</el-button>
|
||||
</el-col>
|
||||
</template>
|
||||
|
||||
<template #col-cargoAttr="{ row }">
|
||||
<el-tag type="primary" size="small" effect="plain">{{ row.cargoAttr || '-' }}</el-tag>
|
||||
</template>
|
||||
|
||||
<template #col-status="{ row }">
|
||||
<dict-tag :options="bms_product_effect_status" :value="row.status" />
|
||||
</template>
|
||||
|
||||
<template #col-action="{ row }">
|
||||
<el-button link type="primary" title="红线价明细" icon="View" @click="countryRef.open(row)" v-hasPermi="['price:redline:query']"></el-button>
|
||||
<el-button link type="primary" title="附加费" icon="Money" @click="surchargeRef.open(row)" v-hasPermi="['price:surcharge:query']"></el-button>
|
||||
</template>
|
||||
</basic-table>
|
||||
</div>
|
||||
|
||||
<div v-show="statusTab === 'pending'">
|
||||
<el-row class="mb12">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['price:redline:add']">新建红线价</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table v-loading="versionLoading" :data="versionRows" border empty-text="暂无待生效版本" @row-click="openVersionProducts">
|
||||
<el-table-column label="版本号" prop="versionNo" width="120" />
|
||||
<el-table-column label="生效时间" prop="effectiveTime" min-width="170" />
|
||||
<el-table-column label="失效时间" prop="expireTime" min-width="170" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">{{ versionStatusText(row.status) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品数" prop="productCount" width="90" align="center" />
|
||||
<el-table-column label="明细行数" prop="detailCount" width="100" align="center" />
|
||||
<el-table-column label="操作" width="360" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="onEditVersion(row)" v-hasPermi="['price:redline:edit']">编辑</el-button>
|
||||
<el-button link type="primary" @click.stop="openVersionProducts(row)">查看产品</el-button>
|
||||
<el-button link type="primary" @click.stop="openExcel(row)" v-hasPermi="['price:redline:query']">查看附件</el-button>
|
||||
<el-button link type="success" @click.stop="onStartVersion(row)" v-hasPermi="['price:redline:edit']">启动</el-button>
|
||||
<el-button link type="danger" @click.stop="onDeleteVersion(row)" v-hasPermi="['price:redline:remove']">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="versionTotal > 0"
|
||||
:total="versionTotal"
|
||||
v-model:page="versionQuery.pageNum"
|
||||
v-model:limit="versionQuery.pageSize"
|
||||
@pagination="loadVersions"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div v-show="statusTab === 'expired'">
|
||||
<el-table v-loading="versionLoading" :data="versionRows" border empty-text="暂无失效版本" @row-click="openVersionProducts">
|
||||
<el-table-column label="版本号" prop="versionNo" width="120" />
|
||||
<el-table-column label="生效时间" prop="effectiveTime" min-width="170" />
|
||||
<el-table-column label="失效时间" prop="expireTime" min-width="170" />
|
||||
<el-table-column label="状态" width="100" align="center">
|
||||
<template #default="{ row }">{{ versionStatusText(row.status) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="产品数" prop="productCount" width="90" align="center" />
|
||||
<el-table-column label="明细行数" prop="detailCount" width="100" align="center" />
|
||||
<el-table-column label="操作" width="220" align="center" fixed="right">
|
||||
<template #default="{ row }">
|
||||
<el-button link type="primary" @click.stop="openVersionProducts(row)">查看产品</el-button>
|
||||
<el-button link type="primary" @click.stop="openExcel(row)" v-hasPermi="['price:redline:query']">查看附件</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<pagination
|
||||
v-show="versionTotal > 0"
|
||||
:total="versionTotal"
|
||||
v-model:page="versionQuery.pageNum"
|
||||
v-model:limit="versionQuery.pageSize"
|
||||
@pagination="loadVersions"
|
||||
/>
|
||||
</div>
|
||||
<catalog-version-table
|
||||
:versions="versionRows"
|
||||
:loading="versionLoading"
|
||||
:removing-psv-id="removingPsvId"
|
||||
:title="verTitle"
|
||||
:create-label="createLabel"
|
||||
create-perm="price:redline:add"
|
||||
edit-perm="price:redline:edit"
|
||||
remove-perm="price:redline:remove"
|
||||
query-perm="price:redline:query"
|
||||
@create="handleAdd"
|
||||
@edit="onEditVersion"
|
||||
@view-products="openVersionProducts"
|
||||
@view-attach="openExcel"
|
||||
@activate="onStartVersion"
|
||||
@remove="onDeleteVersion"
|
||||
/>
|
||||
|
||||
<catalog-version-excel-drawer ref="excelRef" :list-fn="listRedlineVersionExcelFiles" />
|
||||
<redline-country-drawer ref="countryRef" />
|
||||
<redline-surcharge-drawer ref="surchargeRef" @success="() => tableRef.refresh()" />
|
||||
<catalog-version-products-drawer ref="versionProductsRef" :list-fn="listRedline" @view="(row) => countryRef.open(row)" />
|
||||
<redline-surcharge-drawer ref="surchargeRef" />
|
||||
<catalog-version-products-drawer
|
||||
ref="versionProductsRef"
|
||||
:list-fn="listRedline"
|
||||
show-surcharge
|
||||
@view="(row) => countryRef.open(row)"
|
||||
@surcharge="(row) => surchargeRef.open(row)"
|
||||
/>
|
||||
<catalog-activate-dialog ref="activateRef" :load-versions="loadAllVersions" :activate-fn="activateRedlineVersion" @success="onActivated" />
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="PriceProduct">
|
||||
<script setup name="PriceRedline">
|
||||
import RedlineCountryDrawer from './components/RedlineCountryDrawer.vue'
|
||||
import RedlineSurchargeDrawer from './components/RedlineSurchargeDrawer.vue'
|
||||
import CatalogVersionProductsDrawer from '../components/CatalogVersionProductsDrawer.vue'
|
||||
import CatalogVersionExcelDrawer from '../components/CatalogVersionExcelDrawer.vue'
|
||||
import CatalogActivateDialog from '../components/CatalogActivateDialog.vue'
|
||||
import CatalogVersionTable from '../components/CatalogVersionTable.vue'
|
||||
import { listRedline, listRedlineVersions, activateRedlineVersion, deleteRedlineVersion, listRedlineVersionExcelFiles } from '@/api/price/redline'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const { bms_product_effect_status } = useDict('bms_product_effect_status')
|
||||
|
||||
const statusTab = ref('effect')
|
||||
const extraParams = reactive({ statusGroup: 'effect' })
|
||||
const alertTitle = "按版本管理红线价(与套餐版本一致)。点击版本可查看产品与明细;待生效(含草稿)可编辑、启动或硬删;已生效可软删(上一版自动恢复生效并清空失效时间)。建价请点「新建红线价」。"
|
||||
const verTitle = '红线价版本'
|
||||
const createLabel = '新建红线价'
|
||||
|
||||
const versionProductsRef = ref()
|
||||
const activateRef = ref()
|
||||
const versionLoading = ref(false)
|
||||
const removingPsvId = ref(null)
|
||||
const versionRows = ref([])
|
||||
const versionTotal = ref(0)
|
||||
const versionQuery = reactive({ pageNum: 1, pageSize: 10 })
|
||||
const tableRef = ref()
|
||||
const countryRef = ref()
|
||||
const surchargeRef = ref()
|
||||
const excelRef = ref()
|
||||
|
||||
const columns = [
|
||||
{ prop: 'productCode', label: '产品代码', minWidth: 110 },
|
||||
{ prop: 'productName', label: '产品名称', minWidth: 140, showOverflowTooltip: true },
|
||||
{ prop: 'serviceLevel', label: '时效等级', width: 90, align: 'center' },
|
||||
{ prop: 'cargoAttr', label: '走货属性', minWidth: 120, slot: 'cargoAttr' },
|
||||
{ prop: 'destRegion', label: '目的区域', width: 90, align: 'center' },
|
||||
{ prop: 'effectiveDate', label: '生效时间', width: 160, align: 'center' },
|
||||
{ prop: 'expireDate', label: '失效时间', width: 160, align: 'center' },
|
||||
{ prop: 'countryCount', label: '国家数', width: 80, align: 'center' },
|
||||
{ prop: 'surchargeCount', label: '附加费数', width: 90, align: 'center' },
|
||||
{ prop: 'status', label: '状态', width: 90, align: 'center', slot: 'status' },
|
||||
{ prop: 'updateNote', label: '更新内容', minWidth: 160, showOverflowTooltip: true },
|
||||
{ prop: 'action', label: '操作', width: 120, fixed: 'right', slot: 'action' }
|
||||
]
|
||||
|
||||
const searchColumns = [
|
||||
{ prop: 'productCode', label: '产品代码', component: 'input', placeholder: '产品代码' },
|
||||
{ prop: 'productName', label: '产品名称', component: 'input', placeholder: '产品名称' }
|
||||
]
|
||||
|
||||
function queryList(params) {
|
||||
return listRedline(params)
|
||||
}
|
||||
|
||||
function handleAdd() {
|
||||
proxy.$router.push({ path: '/price/redline-create/index' })
|
||||
}
|
||||
@@ -174,32 +76,10 @@ function openExcel(row) {
|
||||
excelRef.value && excelRef.value.open(row)
|
||||
}
|
||||
|
||||
function onTabChange(name) {
|
||||
if (name === 'pending' || name === 'expired') {
|
||||
versionQuery.pageNum = 1
|
||||
loadVersions()
|
||||
return
|
||||
}
|
||||
extraParams.statusGroup = 'effect'
|
||||
nextTick(() => tableRef.value && tableRef.value.refresh())
|
||||
}
|
||||
|
||||
function versionStatusText(status) {
|
||||
const map = { '0': '草稿', '1': '已生效', '2': '已失效', '3': '待生效' }
|
||||
return map[String(status)] || status || '-'
|
||||
}
|
||||
|
||||
function loadVersions() {
|
||||
versionLoading.value = true
|
||||
const params = {
|
||||
pageNum: versionQuery.pageNum,
|
||||
pageSize: versionQuery.pageSize
|
||||
}
|
||||
if (statusTab.value === 'pending') params.statusGroup = 'pending'
|
||||
else params.status = '2'
|
||||
listRedlineVersions(params).then(res => {
|
||||
listRedlineVersions({ pageNum: 1, pageSize: 500 }).then(res => {
|
||||
versionRows.value = res.rows || []
|
||||
versionTotal.value = res.total || 0
|
||||
}).finally(() => { versionLoading.value = false })
|
||||
}
|
||||
|
||||
@@ -225,48 +105,33 @@ function onEditVersion(row) {
|
||||
function onStartVersion(row) {
|
||||
if (row && row.psvId != null) {
|
||||
activateRef.value && activateRef.value.open(row)
|
||||
return
|
||||
}
|
||||
loadAllVersions().then(list => {
|
||||
const pending = (list || []).filter(v => v && (String(v.status) === '0' || String(v.status) === '3'))
|
||||
if (!pending.length) {
|
||||
proxy.$modal.msgWarning('当前没有可启动的待生效版本')
|
||||
return
|
||||
}
|
||||
pending.sort((a, b) => (Number(b.versionSeq) || 0) - (Number(a.versionSeq) || 0))
|
||||
const draft = pending.find(v => String(v.status) === '0')
|
||||
activateRef.value && activateRef.value.open(draft || pending[0])
|
||||
})
|
||||
}
|
||||
|
||||
function onDeleteVersion(row) {
|
||||
if (!row || row.psvId == null) return
|
||||
proxy.$modal.confirm('确认硬删除该待生效版本?版本、产品、明细将从数据库真删除,且不可恢复。').then(() => deleteRedlineVersion(row.psvId)).then(() => {
|
||||
loadVersions()
|
||||
proxy.$modal.msgSuccess('删除成功')
|
||||
const effect = String(row.status) === '1'
|
||||
const msg = effect ? "确认软删除该已生效版本?版本及产品、明细将标记为已删除(列表不再展示)。" : "确认硬删除该版本?版本、产品、明细将从数据库真删除,且不可恢复。"
|
||||
proxy.$modal.confirm(msg).then(() => {
|
||||
removingPsvId.value = row.psvId
|
||||
proxy.$modal.loading("正在删除,请稍候...")
|
||||
return deleteRedlineVersion(row.psvId).then(() => {
|
||||
loadVersions()
|
||||
proxy.$modal.msgSuccess("删除成功")
|
||||
}).finally(() => {
|
||||
removingPsvId.value = null
|
||||
proxy.$modal.closeLoading()
|
||||
})
|
||||
}).catch(() => {})
|
||||
}
|
||||
|
||||
function onActivated() {
|
||||
if (statusTab.value === 'pending' || statusTab.value === 'expired') loadVersions()
|
||||
else if (tableRef.value) tableRef.value.refresh()
|
||||
loadVersions()
|
||||
}
|
||||
|
||||
|
||||
onMounted(() => loadVersions())
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.mb16 { margin-bottom: 16px; }
|
||||
.mb12 { margin-bottom: 12px; }
|
||||
.catalog-tabs { margin-bottom: 8px; }
|
||||
.import-progress { padding: 8px 4px 4px; }
|
||||
.import-progress-msg {
|
||||
margin-top: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
word-break: break-word;
|
||||
max-height: 160px;
|
||||
overflow: auto;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -63,9 +63,11 @@
|
||||
v-hasPermi="['price:set:edit']"
|
||||
>修改生效时间</el-button>
|
||||
<el-button
|
||||
v-if="isDraftVersion(row) || isPendingVersion(row)"
|
||||
v-if="isDraftVersion(row) || isPendingVersion(row) || isEffectVersion(row)"
|
||||
link
|
||||
type="danger"
|
||||
:loading="isRemoving(row)"
|
||||
:disabled="removingPsvId != null"
|
||||
@click="emit('remove', row)"
|
||||
v-hasPermi="['price:set:edit']"
|
||||
>删除</el-button>
|
||||
@@ -77,12 +79,13 @@
|
||||
|
||||
<script setup name="SetVersionTable">
|
||||
import SetSectionCard from './SetSectionCard.vue'
|
||||
import { versionStatusLabel, versionStatusTag, isDraftVersion, isPendingVersion, isPriceEditableVersion } from '../../utils/priceSet'
|
||||
import { versionStatusLabel, versionStatusTag, isDraftVersion, isPendingVersion, isEffectVersion, isPriceEditableVersion } from '../../utils/priceSet'
|
||||
import { checkPermi } from '@/utils/permission'
|
||||
|
||||
const props = defineProps({
|
||||
versions: { type: Array, default: () => [] },
|
||||
modelValue: { type: [Number, String], default: undefined }
|
||||
modelValue: { type: [Number, String], default: undefined },
|
||||
removingPsvId: { type: [Number, String], default: null }
|
||||
})
|
||||
const emit = defineEmits(['update:modelValue', 'create-version', 'open-details', 'view-import-attach', 'activate', 'reschedule', 'edit', 'remove'])
|
||||
|
||||
@@ -134,6 +137,10 @@ function showEditButton(row) {
|
||||
return isPriceEditableVersion(row) && checkPermi(['price:set:edit'])
|
||||
}
|
||||
|
||||
function isRemoving(row) {
|
||||
return props.removingPsvId != null && row && String(props.removingPsvId) === String(row.psvId)
|
||||
}
|
||||
|
||||
function openDetails(row) {
|
||||
if (!row || row.psvId == null) return
|
||||
emit('update:modelValue', row.psvId)
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
<set-version-table
|
||||
v-model="currentPsvId"
|
||||
:versions="set.versions || []"
|
||||
:removing-psv-id="removingPsvId"
|
||||
@create-version="onCreateVersion"
|
||||
@open-details="onOpenVersionDetails"
|
||||
@view-import-attach="onViewImportAttach"
|
||||
@@ -91,7 +92,7 @@ import { usePriceSetRefData } from './composables/usePriceSetRefData'
|
||||
import {
|
||||
getPriceSet, disablePriceSet, enablePriceSet, activatePriceSetVersion, deletePriceSetVersion
|
||||
} from '@/api/price/set'
|
||||
import { isDraftVersion, isPendingVersion } from './utils/priceSet'
|
||||
import { isDraftVersion, isPendingVersion, isEffectVersion } from './utils/priceSet'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const route = useRoute()
|
||||
@@ -99,6 +100,7 @@ const router = useRouter()
|
||||
const refData = usePriceSetRefData()
|
||||
|
||||
const loading = ref(false)
|
||||
const removingPsvId = ref(null)
|
||||
const set = ref({})
|
||||
const currentPsvId = ref()
|
||||
const detailDrawerVisible = ref(false)
|
||||
@@ -203,7 +205,7 @@ function normalizeToHour(val) {
|
||||
|
||||
function formatNow() {
|
||||
const d = new Date()
|
||||
d.setHours(0, 0, 0, 0)
|
||||
d.setHours(9, 0, 0, 0)
|
||||
return formatHour(d)
|
||||
}
|
||||
|
||||
@@ -391,13 +393,19 @@ function onCreateVersion() {
|
||||
}
|
||||
function onRemoveVersion(row) {
|
||||
if (!row || row.psvId == null) return
|
||||
const statusTip = isPendingVersion(row) ? '待生效' : '草稿'
|
||||
proxy.$modal.confirm(
|
||||
'确认删除' + statusTip + '版本 ' + (row.versionNo || '')
|
||||
+ '?其明细与附加费将一并删除。'
|
||||
).then(() => deletePriceSetVersion(row.psvId)).then(() => {
|
||||
proxy.$modal.msgSuccess('版本已删除')
|
||||
load()
|
||||
const msg = isEffectVersion(row)
|
||||
? "确认软删除已生效版本 " + (row.versionNo || '') + "?版本及产品、明细将标记为已删除,上一版将自动恢复生效并清空失效时间。"
|
||||
: "确认删除" + (isPendingVersion(row) ? "待生效" : "草稿") + "版本 " + (row.versionNo || '') + "?其明细与附加费将一并删除。"
|
||||
proxy.$modal.confirm(msg).then(() => {
|
||||
removingPsvId.value = row.psvId
|
||||
proxy.$modal.loading("正在删除,请稍候...")
|
||||
return deletePriceSetVersion(row.psvId).then(() => {
|
||||
proxy.$modal.msgSuccess("版本已删除")
|
||||
load()
|
||||
}).finally(() => {
|
||||
removingPsvId.value = null
|
||||
proxy.$modal.closeLoading()
|
||||
})
|
||||
}).catch(() => {})
|
||||
}
|
||||
function onEditVersion(row) {
|
||||
|
||||
@@ -86,6 +86,10 @@ export function isPendingVersion(row) {
|
||||
return !!row && String(row.status) === VER_STATUS.PENDING
|
||||
}
|
||||
|
||||
export function isEffectVersion(row) {
|
||||
return !!row && String(row.status) === VER_STATUS.EFFECT
|
||||
}
|
||||
|
||||
/** Draft or pending: may continue editing price details */
|
||||
export function isPriceEditableVersion(row) {
|
||||
return isDraftVersion(row) || isPendingVersion(row)
|
||||
|
||||
Reference in New Issue
Block a user