perf: 商业版支持限制泛域名数量

This commit is contained in:
xiaojunnuo
2026-05-16 02:18:06 +08:00
parent 59b9ffadd0
commit c63745d1ba
31 changed files with 804 additions and 395 deletions
@@ -6,6 +6,9 @@ export default {
specifications: "Specifications",
pipeline: "Pipeline",
domain: "Domain",
totalDomain: "Total Domain Count",
wildcardDomain: "Wildcard Domain",
includedWildcardDomain: "Included Wildcard Domain Count",
deployTimes: "Deployments",
monitorCount: "DomainMonitors",
duration: "Duration",
@@ -24,7 +27,8 @@ export default {
please_select_package: "Please select a package",
package: "Package",
addon_package: "Addon Package",
domain_count: "Domain Count",
domain_count: "Total Domain Count",
wildcard_domain_count: "Wildcard Domain Count",
unit_count: "pcs",
pipeline_count: "Pipeline Count",
unit_item: "items",
@@ -42,6 +46,7 @@ export default {
intro: "Introduction",
packageContent: "Package Content",
maxDomainCount: "Max Domain Count",
maxWildcardDomainCount: "Max Wildcard Domain Count",
maxPipelineCount: "Max Pipeline Count",
maxDeployCount: "Max Deploy Count",
maxMonitorCount: "Max Monitor Count",
@@ -51,6 +56,10 @@ export default {
addon: "Addon",
typeHelper: "Suite: Only the most recently purchased one is active at a time\nAddon: Multiple can be purchased, effective immediately without affecting the suite\nThe quantities of suite and addon can be accumulated",
pipelineCount: "Pipeline Count",
wildcardDomainCount: "Wildcard Domain Count",
wildcardDomainCountPart: "Included Wildcard Domain Count",
wildcardDomainCountSub: "- Wildcard Domain Count",
wildcardDomainCountHelper: "Wildcard domains are also limited by the total domain count: each wildcard domain consumes both domain count and wildcard domain count quota.",
unitPipeline: "pipelines",
deployCount: "Deployment Count",
unitDeploy: "times",
@@ -6,6 +6,9 @@ export default {
specifications: "规格",
pipeline: "流水线",
domain: "域名",
totalDomain: "域名总数量",
wildcardDomain: "泛域名",
includedWildcardDomain: "其中泛域名数量",
deployTimes: "部署次数",
monitorCount: "域名监控数",
duration: "时长",
@@ -24,7 +27,8 @@ export default {
please_select_package: "请选择套餐",
package: "套餐",
addon_package: "加量包",
domain_count: "域名数量",
domain_count: "域名数量",
wildcard_domain_count: "泛域名数量",
unit_count: "个",
pipeline_count: "流水线数量",
unit_item: "条",
@@ -42,6 +46,7 @@ export default {
intro: "介绍",
packageContent: "套餐内容",
maxDomainCount: "最大域名数",
maxWildcardDomainCount: "最大泛域名数",
maxPipelineCount: "最大流水线数",
maxDeployCount: "最大部署数",
maxMonitorCount: "最大监控数",
@@ -51,6 +56,10 @@ export default {
addon: "加量包",
typeHelper: "套餐:同一时间只有最新购买的一个生效\n加量包:可购买多个,购买后立即生效,不影响套餐\n套餐和加量包数量可叠加",
pipelineCount: "流水线数量",
wildcardDomainCount: "泛域名数量",
wildcardDomainCountPart: "其中泛域名数量",
wildcardDomainCountSub: "- 泛域名数量",
wildcardDomainCountHelper: "泛域名数量受域名总数量限制:泛域名会同时占用域名总数量和泛域名数量额度;注意:如果域名总数有限制,泛域名数量不要设置为无限制。",
unitPipeline: "条",
deployCount: "部署次数",
unitDeploy: "次",
@@ -14,6 +14,7 @@ export type SuiteDetail = {
expiresTime?: number;
pipelineCount?: SuiteValue;
domainCount?: SuiteValue;
wildcardDomainCount?: SuiteValue;
deployCount?: SuiteValue;
monitorCount?: SuiteValue;
};
@@ -147,7 +147,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
},
"content.maxDomainCount": {
title: "域名数量",
title: "域名数量",
type: "text",
form: {
key: ["content", "maxDomainCount"],
@@ -168,6 +168,28 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
align: "center",
},
},
"content.maxWildcardDomainCount": {
title: "其中泛域名数量",
type: "text",
form: {
key: ["content", "maxWildcardDomainCount"],
component: {
name: SuiteValueEdit,
vModel: "modelValue",
unit: "个",
},
rules: [{ required: true, message: "此项必填" }],
},
column: {
width: 120,
component: {
name: SuiteValue,
vModel: "modelValue",
unit: "个",
},
align: "center",
},
},
"content.maxPipelineCount": {
title: "流水线数量",
type: "text",
@@ -11,7 +11,10 @@
<span class="label">{{ $t("certd.order.specifications") }}</span>
<span class="flex-o flex-wrap">
<span class="flex-o"> {{ $t("certd.order.pipeline") }}<suite-value class="ml-5" :model-value="product.content.maxPipelineCount" :unit="$t('certd.order.unit.pieces')" /> </span>
<span class="flex-o"> {{ $t("certd.order.domain") }}<suite-value class="ml-5" :model-value="product.content.maxDomainCount" :unit="$t('certd.order.unit.count')" /> </span>
<span class="flex-o"> {{ $t("certd.order.totalDomain") }}<suite-value class="ml-5" :model-value="product.content.maxDomainCount" :unit="$t('certd.order.unit.count')" /> </span>
<span class="flex-o" style="padding-left: 2em">
- {{ $t("certd.order.includedWildcardDomain") }}<suite-value class="ml-5" :model-value="product.content.maxWildcardDomainCount" :unit="$t('certd.order.unit.count')" />
</span>
<span class="flex-o"> {{ $t("certd.order.deployTimes") }}<suite-value class="ml-5" :model-value="product.content.maxDeployCount" :unit="$t('certd.order.unit.times')" /> </span>
<span class="flex-o"> {{ $t("certd.order.monitorCount") }}<suite-value class="ml-5" :model-value="product.content.maxMonitorCount" :unit="$t('certd.order.unit.times')" /> </span>
</span>
@@ -1,7 +1,7 @@
<template>
<a-card :title="product.title" class="product-card">
<template #extra>
<fs-values-format v-model="product.type" :dict="productTypeDictRef"></fs-values-format>
<fs-values-format :model-value="product.type" :dict="productTypeDictRef"></fs-values-format>
</template>
<div class="product-intro">{{ product.intro || "暂无介绍" }}</div>
@@ -12,9 +12,13 @@
<suite-value :model-value="product.content.maxPipelineCount" unit="条" />
</div>
<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="product.content.maxDomainCount" unit="个" />
</div>
<div class="flex-between mt-5">
<div class="flex-o" style="padding-left: 2em">- 其中泛域名数量</div>
<suite-value :model-value="product.content.maxWildcardDomainCount" unit="个" />
</div>
<div class="flex-between mt-5">
<div class="flex-o">
<fs-icon icon="ant-design:check-outlined" class="color-green mr-5" />
@@ -20,10 +20,14 @@
<div class="flex-between mt-5">
<div class="flex-o">
<fs-icon icon="ant-design:check-outlined" class="color-green mr-5" />
域名数量
域名数量
</div>
<suite-value :model-value="detail.domainCount.max" :used="detail.domainCount.used" unit="个" />
</div>
<div class="flex-between mt-5">
<div class="flex-o ml-20">- 其中泛域名数量</div>
<suite-value :model-value="detail.wildcardDomainCount.max" :used="detail.wildcardDomainCount.used" unit="个" />
</div>
<div class="flex-between mt-5">
<div class="flex-o">
<fs-icon icon="ant-design:check-outlined" class="color-green mr-5" />
@@ -59,7 +59,7 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
content: {
header: t("certd.packageContent"),
columns: ["content.maxDomainCount", "content.maxPipelineCount", "content.maxDeployCount", "content.maxMonitorCount"],
columns: ["content.maxDomainCount", "content.maxWildcardDomainCount", "content.maxPipelineCount", "content.maxDeployCount", "content.maxMonitorCount"],
},
price: {
header: t("certd.price"),
@@ -154,6 +154,28 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
},
},
},
"content.maxWildcardDomainCount": {
title: t("certd.wildcardDomainCountPart"),
type: "text",
form: {
key: ["content", "maxWildcardDomainCount"],
helper: t("certd.wildcardDomainCountHelper"),
component: {
name: SuiteValueEdit,
vModel: "modelValue",
unit: t("certd.unitCount"),
},
rules: [{ required: true, message: t("certd.requiredField") }],
},
column: {
width: 120,
component: {
name: SuiteValue,
vModel: "modelValue",
unit: t("certd.unitCount"),
},
},
},
"content.maxPipelineCount": {
title: t("certd.pipelineCount"),
type: "text",
@@ -17,6 +17,7 @@
<div style="height: 400px">
<ProductManager @refreshed="onTableRefresh"></ProductManager>
</div>
<div class="helper">泛域名数量受域名总数量限制泛域名会同时占用域名总数量和泛域名数量额度</div>
<div class="helper">不建议设置免费套餐可以在下方配置注册赠送套餐或者在用户套餐管理中手动赠送套餐</div>
</a-form-item>
@@ -223,6 +223,29 @@ export default function ({ crudExpose, context }: CreateCrudOptionsProps): Creat
align: "center",
},
},
"content.maxWildcardDomainCount": {
title: t("certd.wildcardDomainCountPart"),
type: "text",
form: {
show: false,
key: ["content", "maxWildcardDomainCount"],
component: {
name: SuiteValueEdit,
vModel: "modelValue",
unit: t("certd.unit_count"),
},
rules: [{ required: true, message: t("certd.field_required") }],
},
column: {
width: 120,
component: {
name: SuiteValue,
vModel: "modelValue",
unit: t("certd.unit_count"),
},
align: "center",
},
},
"content.maxPipelineCount": {
title: t("certd.pipeline_count"),
type: "text",