新增代理系列授权
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"> <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>
<div class="cost-price-input-wrapper">
<ElInputNumber <ElInputNumber
v-model="pkg.cost_price" v-model="pkg.cost_price"
:min="0" :min="pkg.original_cost_price || 0"
:precision="2" :precision="2"
:step="0.01" :step="0.01"
:controls="false" :controls="false"
placeholder="成本价(元)" placeholder="成本价(元)"
style="width: 150px" 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) => ({ // 加载该系列下的套餐选项,以便获取原始成本价
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, 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) 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 {