This commit is contained in:
@@ -190,7 +190,13 @@
|
|||||||
<ElTableColumn label="统计范围" width="140">
|
<ElTableColumn label="统计范围" width="140">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<ElTag size="small" type="warning">
|
<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>
|
</ElTag>
|
||||||
</template>
|
</template>
|
||||||
</ElTableColumn>
|
</ElTableColumn>
|
||||||
@@ -289,7 +295,7 @@
|
|||||||
<ElOption
|
<ElOption
|
||||||
v-for="pkg in packageOptions"
|
v-for="pkg in packageOptions"
|
||||||
:key="pkg.id"
|
:key="pkg.id"
|
||||||
:label="`${pkg.package_name} (${pkg.package_code})`"
|
:label="pkg.package_name"
|
||||||
:value="pkg.id"
|
:value="pkg.id"
|
||||||
/>
|
/>
|
||||||
</ElSelect>
|
</ElSelect>
|
||||||
@@ -305,19 +311,24 @@
|
|||||||
class="package-item"
|
class="package-item"
|
||||||
>
|
>
|
||||||
<span class="package-name">{{ getPackageName(pkg.package_id) }}</span>
|
<span class="package-name">{{ getPackageName(pkg.package_id) }}</span>
|
||||||
<ElInputNumber
|
<div class="cost-price-input-wrapper">
|
||||||
v-model="pkg.cost_price"
|
<ElInputNumber
|
||||||
:min="0"
|
v-model="pkg.cost_price"
|
||||||
:precision="2"
|
:min="pkg.original_cost_price || 0"
|
||||||
:step="0.01"
|
:precision="2"
|
||||||
:controls="false"
|
:step="0.01"
|
||||||
placeholder="成本价(元)"
|
:controls="false"
|
||||||
style="width: 150px"
|
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>
|
<ElButton type="danger" size="small" @click="removePackage(index)">删除</ElButton>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-tip">设置每个套餐的成本价(单位:元)</div>
|
<div class="form-tip">设置每个套餐的成本价(单位:元),不能低于套餐原始成本价</div>
|
||||||
</ElFormItem>
|
</ElFormItem>
|
||||||
</ElForm>
|
</ElForm>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@@ -790,7 +801,7 @@
|
|||||||
// 获取套餐名称
|
// 获取套餐名称
|
||||||
const getPackageName = (packageId: number) => {
|
const getPackageName = (packageId: number) => {
|
||||||
const pkg = packageOptions.value.find((p) => p.id === packageId)
|
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) => {
|
addedIds.forEach((id) => {
|
||||||
if (!form.packages.find((p: any) => p.package_id === 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) {
|
if (detail.packages && detail.packages.length > 0) {
|
||||||
form.packages = detail.packages.map((pkg) => ({
|
// 加载该系列下的套餐选项,以便获取原始成本价
|
||||||
package_id: pkg.package_id,
|
if (detail.series_id) {
|
||||||
cost_price: pkg.cost_price / 100 // 将分转换为元
|
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, // 将分转换为元
|
||||||
|
original_cost_price: originalCostPrice // 保存原始成本价用于验证
|
||||||
|
}
|
||||||
|
})
|
||||||
selectedPackageIds.value = detail.packages.map((pkg) => pkg.package_id)
|
selectedPackageIds.value = detail.packages.map((pkg) => pkg.package_id)
|
||||||
} else {
|
} else {
|
||||||
form.packages = []
|
form.packages = []
|
||||||
selectedPackageIds.value = []
|
selectedPackageIds.value = []
|
||||||
}
|
}
|
||||||
|
|
||||||
// 加载该系列下的套餐选项
|
|
||||||
if (detail.series_id) {
|
|
||||||
await loadPackageOptions()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取详情失败:', error)
|
console.error('获取详情失败:', error)
|
||||||
@@ -1507,6 +1532,18 @@
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
color: var(--el-text-color-regular);
|
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 {
|
.info-row {
|
||||||
|
|||||||
Reference in New Issue
Block a user