mirror of https://github.com/certd/certd
perf: 专业版7天试用
parent
3f5499be90
commit
c58250e1f0
|
@ -91,24 +91,6 @@ const formState = reactive({
|
||||||
code: ""
|
code: ""
|
||||||
});
|
});
|
||||||
|
|
||||||
const vipTypeDefine = {
|
|
||||||
free: {
|
|
||||||
title: "基础版",
|
|
||||||
type: "free",
|
|
||||||
privilege: ["证书申请功能无限制", "证书流水线数量10条", "常用的主机、cdn等部署插件"]
|
|
||||||
},
|
|
||||||
plus: {
|
|
||||||
title: "专业版",
|
|
||||||
type: "plus",
|
|
||||||
privilege: ["可加VIP群,需求优先实现", "证书流水线数量无限制", "免配置发邮件功能", "支持宝塔、易盾、群晖、1Panel、cdnfly等部署插件"]
|
|
||||||
},
|
|
||||||
comm: {
|
|
||||||
title: "商业版",
|
|
||||||
type: "comm",
|
|
||||||
privilege: ["拥有专业版所有特权", "允许商用,可修改logo、标题", "数据统计", "插件管理", "多用户无限制", "支持用户支付(敬请期待)"]
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
async function doActive() {
|
async function doActive() {
|
||||||
if (!formState.code) {
|
if (!formState.code) {
|
||||||
|
@ -155,6 +137,36 @@ function openUpgrade() {
|
||||||
title = "续期专业版/升级商业版";
|
title = "续期专业版/升级商业版";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const vipTypeDefine = {
|
||||||
|
free: {
|
||||||
|
title: "基础版",
|
||||||
|
type: "free",
|
||||||
|
privilege: ["证书申请功能无限制", "证书流水线数量10条", "常用的主机、cdn等部署插件"]
|
||||||
|
},
|
||||||
|
plus: {
|
||||||
|
title: "专业版",
|
||||||
|
type: "plus",
|
||||||
|
privilege: ["可加VIP群,需求优先实现", "证书流水线数量无限制", "免配置发邮件功能", "支持宝塔、易盾、群晖、1Panel、cdnfly等部署插件"],
|
||||||
|
trial: {
|
||||||
|
title: "7天试用",
|
||||||
|
message: "绑定账号即可获得7天专业版试用,点击立即前往绑定账号",
|
||||||
|
click: () => {
|
||||||
|
goAccount();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
comm: {
|
||||||
|
title: "商业版",
|
||||||
|
type: "comm",
|
||||||
|
privilege: ["拥有专业版所有特权", "允许商用,可修改logo、标题", "数据统计", "插件管理", "多用户无限制", "支持用户支付(敬请期待)"]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
function goAccount() {
|
||||||
|
router.push("/sys/account");
|
||||||
|
modalRef.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
const modalRef = modal.confirm({
|
const modalRef = modal.confirm({
|
||||||
title,
|
title,
|
||||||
async onOk() {
|
async onOk() {
|
||||||
|
@ -193,7 +205,16 @@ function openUpgrade() {
|
||||||
slots.push(
|
slots.push(
|
||||||
<a-col span={8}>
|
<a-col span={8}>
|
||||||
<div class={vipBlockClass}>
|
<div class={vipBlockClass}>
|
||||||
<h3 class="block-header">{item.title}</h3>
|
<h3 class="block-header">
|
||||||
|
<span>{item.title}</span>
|
||||||
|
{item.trial && (
|
||||||
|
<span class="trial">
|
||||||
|
<a-tooltip title={item.trial.message}>
|
||||||
|
<a onClick={item.trial.click}>{item.trial.title}</a>
|
||||||
|
</a-tooltip>
|
||||||
|
</span>
|
||||||
|
)}
|
||||||
|
</h3>
|
||||||
<ul>
|
<ul>
|
||||||
{item.privilege.map((p: string) => (
|
{item.privilege.map((p: string) => (
|
||||||
<li>
|
<li>
|
||||||
|
@ -206,10 +227,6 @@ function openUpgrade() {
|
||||||
</a-col>
|
</a-col>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
function goAccount() {
|
|
||||||
router.push("/sys/account");
|
|
||||||
modalRef.destroy();
|
|
||||||
}
|
|
||||||
return (
|
return (
|
||||||
<div class="mt-10 mb-10 vip-active-modal">
|
<div class="mt-10 mb-10 vip-active-modal">
|
||||||
<div class="vip-type-vs">
|
<div class="vip-type-vs">
|
||||||
|
@ -270,6 +287,12 @@ function openUpgrade() {
|
||||||
}
|
}
|
||||||
.block-header {
|
.block-header {
|
||||||
padding: 0px;
|
padding: 0px;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
.trial {
|
||||||
|
font-size: 12px;
|
||||||
|
font-wight: 400;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,9 +36,9 @@ const iframeSrcRef = computed(() => {
|
||||||
|
|
||||||
type SubjectInfo = {
|
type SubjectInfo = {
|
||||||
subjectId: string;
|
subjectId: string;
|
||||||
installTime?: number;
|
installAt?: number;
|
||||||
vipType?: string;
|
vipType?: string;
|
||||||
expiresTime?: number;
|
expiresAt?: number;
|
||||||
};
|
};
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
const iframeClient = new IframeClient(iframeRef.value, (e: any) => {
|
const iframeClient = new IframeClient(iframeRef.value, (e: any) => {
|
||||||
|
@ -50,9 +50,9 @@ onMounted(() => {
|
||||||
iframeClient.register("getSubjectInfo", async (req: any) => {
|
iframeClient.register("getSubjectInfo", async (req: any) => {
|
||||||
const subjectInfo: SubjectInfo = {
|
const subjectInfo: SubjectInfo = {
|
||||||
subjectId: settingStore.installInfo.siteId,
|
subjectId: settingStore.installInfo.siteId,
|
||||||
installTime: settingStore.installInfo.installTime,
|
installAt: settingStore.installInfo.installTime,
|
||||||
vipType: settingStore.plusInfo.vipType || "free",
|
vipType: settingStore.plusInfo.vipType || "free",
|
||||||
expiresTime: settingStore.plusInfo.expireTime
|
expiresAt: settingStore.plusInfo.expireTime
|
||||||
};
|
};
|
||||||
return subjectInfo;
|
return subjectInfo;
|
||||||
});
|
});
|
||||||
|
|
|
@ -22,13 +22,6 @@ typeorm:
|
||||||
default:
|
default:
|
||||||
database: './data/db-comm-pro.sqlite'
|
database: './data/db-comm-pro.sqlite'
|
||||||
|
|
||||||
plus:
|
|
||||||
server:
|
|
||||||
baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn']
|
|
||||||
|
|
||||||
account:
|
|
||||||
server:
|
|
||||||
baseUrl: 'https://ai.handsfree.work/subject'
|
|
||||||
|
|
||||||
#
|
#
|
||||||
#plus:
|
#plus:
|
||||||
|
|
|
@ -9,19 +9,9 @@
|
||||||
# dataSource:
|
# dataSource:
|
||||||
# default:
|
# default:
|
||||||
# database: './data/db.sqlite'
|
# database: './data/db.sqlite'
|
||||||
plus:
|
|
||||||
server:
|
|
||||||
baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn']
|
|
||||||
|
|
||||||
account:
|
account:
|
||||||
server:
|
server:
|
||||||
baseUrl: 'https://ai.handsfree.work/subject'
|
baseUrl: 'https://app.handfree.work/subject'
|
||||||
|
|
||||||
|
|
||||||
#plus:
|
|
||||||
# server:
|
|
||||||
# baseUrls: ['http://127.0.0.1:11007']
|
|
||||||
#
|
|
||||||
#account:
|
|
||||||
# server:
|
|
||||||
# baseUrl: 'http://127.0.0.1:1017/subject'
|
|
||||||
|
|
|
@ -9,13 +9,6 @@ typeorm:
|
||||||
dataSource:
|
dataSource:
|
||||||
default:
|
default:
|
||||||
database: './data/db-new.sqlite'
|
database: './data/db-new.sqlite'
|
||||||
plus:
|
|
||||||
server:
|
|
||||||
baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn']
|
|
||||||
|
|
||||||
account:
|
|
||||||
server:
|
|
||||||
baseUrl: 'https://ai.handsfree.work/subject'
|
|
||||||
|
|
||||||
|
|
||||||
#plus:
|
#plus:
|
||||||
|
|
|
@ -20,7 +20,7 @@
|
||||||
typeorm:
|
typeorm:
|
||||||
dataSource:
|
dataSource:
|
||||||
default:
|
default:
|
||||||
database: './data/db-plus-dev.sqlite'
|
database: './data/db-plus-dev-1.sqlite'
|
||||||
|
|
||||||
# plus server: 'http://127.0.0.1:11007'
|
# plus server: 'http://127.0.0.1:11007'
|
||||||
|
|
||||||
|
|
|
@ -7,9 +7,6 @@ typeorm:
|
||||||
logging: false
|
logging: false
|
||||||
|
|
||||||
|
|
||||||
plus:
|
|
||||||
server:
|
|
||||||
baseUrls: ['https://api.ai.handsfree.work', 'https://api.ai.docmirror.cn']
|
|
||||||
account:
|
account:
|
||||||
server:
|
server:
|
||||||
baseUrl: 'https://ai.handsfree.work/subject'
|
baseUrl: 'https://app.handfree.work/subject'
|
||||||
|
|
Loading…
Reference in New Issue