perf: 优化加量包展示效果

v2-dev
xiaojunnuo 2025-09-08 14:43:36 +08:00
parent d75dd058d6
commit 3c65f37d84
2 changed files with 17 additions and 2 deletions

View File

@ -9,6 +9,7 @@ export type SuiteValue = {
export type SuiteDetail = { export type SuiteDetail = {
enabled?: boolean; enabled?: boolean;
suites?: any[]; suites?: any[];
addons?: any[];
expiresTime?: number; expiresTime?: number;
pipelineCount?: SuiteValue; pipelineCount?: SuiteValue;
domainCount?: SuiteValue; domainCount?: SuiteValue;

View File

@ -3,7 +3,16 @@
<div class="flex-o flex-wrap"> <div class="flex-o flex-wrap">
<a-popover> <a-popover>
<template #content> <template #content>
<div> <div style="width: 300px">
<div v-if="detail.addonList.length > 0" class="flex flex-wrap">
<a-tag v-for="(item, index) of detail.addonList" :key="index" color="green" class="pointer flex-o m-1">
<span class="mr-5">
{{ item.title }}
</span>
<span>(<expires-time-text :value="item.expiresTime" />)</span>
</a-tag>
<a-divider class="m-5" />
</div>
<div class="flex-between mt-5"> <div class="flex-between mt-5">
<div class="flex-o"><fs-icon icon="ant-design:check-outlined" class="color-green mr-5" /> 流水线条数</div> <div class="flex-o"><fs-icon icon="ant-design:check-outlined" class="color-green mr-5" /> 流水线条数</div>
<suite-value :model-value="detail.pipelineCount.max" :used="detail.pipelineCount.used" unit="条" /> <suite-value :model-value="detail.pipelineCount.max" :used="detail.pipelineCount.used" unit="条" />
@ -30,12 +39,13 @@
</template> </template>
<div class="flex-o"> <div class="flex-o">
<fs-icon icon="ant-design:gift-outlined" class="color-green mr-5" /> <fs-icon icon="ant-design:gift-outlined" class="color-green mr-5" />
<a-tag v-for="(item, index) of detail.suites" :key="index" color="green" class="pointer flex-o"> <a-tag v-for="(item, index) of detail.suiteList" :key="index" color="green" class="pointer flex-o">
<span class="mr-5"> <span class="mr-5">
{{ item.title }} {{ item.title }}
</span> </span>
<span>(<expires-time-text :value="item.expiresTime" />)</span> <span>(<expires-time-text :value="item.expiresTime" />)</span>
</a-tag> </a-tag>
<a-tag v-if="detail.addonList.length > 0" color="green" class="pointer flex-o">+{{ detail.addonList.length }}</a-tag>
<div v-if="detail.suites?.length === 0" class="flex-o ml-5">暂无套餐 <a-button class="ml-5" type="primary" size="small" @click="goBuy"></a-button></div> <div v-if="detail.suites?.length === 0" class="flex-o ml-5">暂无套餐 <a-button class="ml-5" type="primary" size="small" @click="goBuy"></a-button></div>
</div> </div>
</a-popover> </a-popover>
@ -59,6 +69,10 @@ const detail = ref<SuiteDetail>({});
async function loadSuiteDetail() { async function loadSuiteDetail() {
detail.value = await mySuiteApi.SuiteDetailGet(); detail.value = await mySuiteApi.SuiteDetailGet();
const suites = detail.value.suites.filter(item => item.productType === "suite");
const addons = detail.value.suites.filter(item => item.productType === "addon");
detail.value.suiteList = suites;
detail.value.addonList = addons;
} }
loadSuiteDetail(); loadSuiteDetail();