新增代理系列授权
Some checks failed
构建并部署前端到测试环境 / build-and-deploy (push) Failing after 4m36s

This commit is contained in:
sexygoat
2026-03-06 16:28:58 +08:00
parent 4d94f7efa6
commit 1ebc0b8929

View File

@@ -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 {