This commit is contained in:
@@ -190,7 +190,13 @@
|
||||
<ElTableColumn label="统计范围" width="140">
|
||||
<template #default="{ row }">
|
||||
<ElTag size="small" type="warning">
|
||||
{{ row.stat_scope === 'self' ? '仅自己' : row.stat_scope === 'self_and_sub' ? '自己+下级' : '-' }}
|
||||
{{
|
||||
row.stat_scope === 'self'
|
||||
? '仅自己'
|
||||
: row.stat_scope === 'self_and_sub'
|
||||
? '自己+下级'
|
||||
: '-'
|
||||
}}
|
||||
</ElTag>
|
||||
</template>
|
||||
</ElTableColumn>
|
||||
@@ -289,7 +295,7 @@
|
||||
<ElOption
|
||||
v-for="pkg in packageOptions"
|
||||
:key="pkg.id"
|
||||
:label="`${pkg.package_name} (${pkg.package_code})`"
|
||||
:label="pkg.package_name"
|
||||
:value="pkg.id"
|
||||
/>
|
||||
</ElSelect>
|
||||
@@ -305,19 +311,24 @@
|
||||
class="package-item"
|
||||
>
|
||||
<span class="package-name">{{ getPackageName(pkg.package_id) }}</span>
|
||||
<div class="cost-price-input-wrapper">
|
||||
<ElInputNumber
|
||||
v-model="pkg.cost_price"
|
||||
:min="0"
|
||||
:min="pkg.original_cost_price || 0"
|
||||
:precision="2"
|
||||
:step="0.01"
|
||||
:controls="false"
|
||||
placeholder="成本价(元)"
|
||||
style="width: 150px"
|
||||
/>
|
||||
<span v-if="pkg.original_cost_price" class="min-cost-hint">
|
||||
(成本价: ¥{{ pkg.original_cost_price.toFixed(2) }})
|
||||
</span>
|
||||
</div>
|
||||
<ElButton type="danger" size="small" @click="removePackage(index)">删除</ElButton>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-tip">设置每个套餐的成本价(单位:元)</div>
|
||||
<div class="form-tip">设置每个套餐的成本价(单位:元),不能低于套餐原始成本价</div>
|
||||
</ElFormItem>
|
||||
</ElForm>
|
||||
<template #footer>
|
||||
@@ -790,7 +801,7 @@
|
||||
// 获取套餐名称
|
||||
const getPackageName = (packageId: number) => {
|
||||
const pkg = packageOptions.value.find((p) => p.id === packageId)
|
||||
return pkg ? `${pkg.package_name} (${pkg.package_code})` : `套餐ID: ${packageId}`
|
||||
return pkg ? pkg.package_name : `套餐ID: ${packageId}`
|
||||
}
|
||||
|
||||
// 监听套餐选择变化
|
||||
@@ -803,7 +814,14 @@
|
||||
// 添加新选中的套餐
|
||||
addedIds.forEach((id) => {
|
||||
if (!form.packages.find((p: any) => p.package_id === id)) {
|
||||
form.packages.push({ package_id: id, cost_price: 0 })
|
||||
// 从 packageOptions 中查找套餐,获取其成本价
|
||||
const pkg = packageOptions.value.find((p) => p.id === id)
|
||||
const costPrice = pkg?.cost_price ? pkg.cost_price / 100 : 0 // 将分转换为元
|
||||
form.packages.push({
|
||||
package_id: id,
|
||||
cost_price: costPrice,
|
||||
original_cost_price: costPrice // 保存原始成本价用于验证
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1187,20 +1205,27 @@
|
||||
|
||||
// 设置套餐数据
|
||||
if (detail.packages && detail.packages.length > 0) {
|
||||
form.packages = detail.packages.map((pkg) => ({
|
||||
// 加载该系列下的套餐选项,以便获取原始成本价
|
||||
if (detail.series_id) {
|
||||
await loadPackageOptions()
|
||||
}
|
||||
|
||||
form.packages = detail.packages.map((pkg) => {
|
||||
// 从 packageOptions 中查找套餐以获取原始成本价
|
||||
const pkgOption = packageOptions.value.find((p) => p.id === pkg.package_id)
|
||||
const originalCostPrice = pkgOption?.cost_price ? pkgOption.cost_price / 100 : 0
|
||||
|
||||
return {
|
||||
package_id: pkg.package_id,
|
||||
cost_price: pkg.cost_price / 100 // 将分转换为元
|
||||
}))
|
||||
cost_price: pkg.cost_price / 100, // 将分转换为元
|
||||
original_cost_price: originalCostPrice // 保存原始成本价用于验证
|
||||
}
|
||||
})
|
||||
selectedPackageIds.value = detail.packages.map((pkg) => pkg.package_id)
|
||||
} else {
|
||||
form.packages = []
|
||||
selectedPackageIds.value = []
|
||||
}
|
||||
|
||||
// 加载该系列下的套餐选项
|
||||
if (detail.series_id) {
|
||||
await loadPackageOptions()
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取详情失败:', error)
|
||||
@@ -1507,6 +1532,18 @@
|
||||
font-size: 14px;
|
||||
color: var(--el-text-color-regular);
|
||||
}
|
||||
|
||||
.cost-price-input-wrapper {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
|
||||
.min-cost-hint {
|
||||
font-size: 12px;
|
||||
color: var(--el-text-color-secondary);
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.info-row {
|
||||
|
||||
Reference in New Issue
Block a user