mirror of https://github.com/certd/certd
perf: 支持部署到lucky
parent
d66ade4e47
commit
e18e399ce6
|
@ -7,6 +7,11 @@ export type SiteEnv = {
|
|||
contactLink?: string;
|
||||
};
|
||||
};
|
||||
export type AppInfo = {
|
||||
version?: string;
|
||||
time?: number;
|
||||
deltaTime?: number;
|
||||
};
|
||||
export type SiteInfo = {
|
||||
title?: string;
|
||||
slogan?: string;
|
||||
|
@ -71,12 +76,13 @@ export type AllSettings = {
|
|||
siteEnv: SiteEnv;
|
||||
headerMenus: HeaderMenus;
|
||||
suiteSetting: SuiteSetting;
|
||||
app: AppInfo;
|
||||
};
|
||||
|
||||
export async function loadAllSettings(): Promise<AllSettings> {
|
||||
return await request({
|
||||
url: "/basic/settings/all",
|
||||
method: "get"
|
||||
method: "get",
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -84,7 +90,7 @@ export async function bindUrl(data: any): Promise<any> {
|
|||
return await request({
|
||||
url: "/sys/plus/bindUrl",
|
||||
method: "post",
|
||||
data
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -92,7 +98,7 @@ export async function sendSmsCode(data: any): Promise<any> {
|
|||
return await request({
|
||||
url: "/basic/code/sendSmsCode",
|
||||
method: "post",
|
||||
data
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -100,6 +106,6 @@ export async function sendEmailCode(data: any): Promise<any> {
|
|||
return await request({
|
||||
url: "/basic/code/sendEmailCode",
|
||||
method: "post",
|
||||
data
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { Modal, notification } from "ant-design-vue";
|
||||
import * as _ from "lodash-es";
|
||||
// @ts-ignore
|
||||
import { LocalStorage } from "/src/utils/util.storage";
|
||||
|
||||
import * as basicApi from "/@/api/modules/api.basic";
|
||||
import { HeaderMenus, PlusInfo, SiteEnv, SiteInfo, SuiteSetting, SysInstallInfo, SysPublicSetting } from "/@/api/modules/api.basic";
|
||||
import { AppInfo, HeaderMenus, PlusInfo, SiteEnv, SiteInfo, SuiteSetting, SysInstallInfo, SysPublicSetting } from "/@/api/modules/api.basic";
|
||||
import { useUserStore } from "/@/store/modules/user";
|
||||
import { mitter } from "/@/utils/util.mitt";
|
||||
import { env } from "/@/utils/util.env";
|
||||
|
@ -29,6 +26,11 @@ export interface SettingState {
|
|||
headerMenus?: HeaderMenus;
|
||||
inited?: boolean;
|
||||
suiteSetting?: SuiteSetting;
|
||||
app: {
|
||||
version?: string;
|
||||
time?: number;
|
||||
deltaTime?: number;
|
||||
};
|
||||
}
|
||||
|
||||
const defaultSiteInfo: SiteInfo = {
|
||||
|
@ -37,7 +39,7 @@ const defaultSiteInfo: SiteInfo = {
|
|||
logo: env.LOGO || "/static/images/logo/logo.svg",
|
||||
loginLogo: env.LOGIN_LOGO || "/static/images/logo/rect-block.svg",
|
||||
licenseTo: "",
|
||||
licenseToUrl: ""
|
||||
licenseToUrl: "",
|
||||
};
|
||||
export const useSettingStore = defineStore({
|
||||
id: "app.setting",
|
||||
|
@ -45,33 +47,38 @@ export const useSettingStore = defineStore({
|
|||
plusInfo: {
|
||||
isPlus: false,
|
||||
vipType: "free",
|
||||
isComm: false
|
||||
isComm: false,
|
||||
},
|
||||
sysPublic: {
|
||||
registerEnabled: false,
|
||||
managerOtherUserPipeline: false,
|
||||
icpNo: env.ICP_NO || ""
|
||||
icpNo: env.ICP_NO || "",
|
||||
},
|
||||
installInfo: {
|
||||
siteId: "",
|
||||
bindUserId: null,
|
||||
bindUrl: "",
|
||||
accountServerBaseUrl: "",
|
||||
appKey: ""
|
||||
appKey: "",
|
||||
},
|
||||
siteInfo: defaultSiteInfo,
|
||||
siteEnv: {
|
||||
agent: {
|
||||
enabled: undefined,
|
||||
contactText: "",
|
||||
contactLink: ""
|
||||
}
|
||||
contactLink: "",
|
||||
},
|
||||
},
|
||||
headerMenus: {
|
||||
menus: []
|
||||
menus: [],
|
||||
},
|
||||
suiteSetting: { enabled: false },
|
||||
inited: false
|
||||
inited: false,
|
||||
app: {
|
||||
version: "",
|
||||
time: 0,
|
||||
deltaTime: 0,
|
||||
},
|
||||
}),
|
||||
getters: {
|
||||
getSysPublic(): SysPublicSetting {
|
||||
|
@ -96,7 +103,7 @@ export const useSettingStore = defineStore({
|
|||
const vipLabelMap: any = {
|
||||
free: "基础版",
|
||||
plus: "专业版",
|
||||
comm: "商业版"
|
||||
comm: "商业版",
|
||||
};
|
||||
return vipLabelMap[this.plusInfo?.vipType || "free"];
|
||||
},
|
||||
|
@ -113,21 +120,21 @@ export const useSettingStore = defineStore({
|
|||
title: menu.title,
|
||||
icon: menu.icon,
|
||||
link: menu.path,
|
||||
order: 99999
|
||||
}
|
||||
order: 99999,
|
||||
},
|
||||
};
|
||||
});
|
||||
},
|
||||
isSuiteEnabled(): boolean {
|
||||
// @ts-ignore
|
||||
return this.suiteSetting?.enabled === true;
|
||||
}
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
checkPlus() {
|
||||
if (!this.isPlus) {
|
||||
notification.warn({
|
||||
message: "此为专业版功能,请先升级到专业版"
|
||||
message: "此为专业版功能,请先升级到专业版",
|
||||
});
|
||||
throw new Error("此为专业版功能,请升级到专业版");
|
||||
}
|
||||
|
@ -142,6 +149,12 @@ export const useSettingStore = defineStore({
|
|||
_.merge(this.suiteSetting, allSettings.suiteSetting || {});
|
||||
//@ts-ignore
|
||||
this.initSiteInfo(allSettings.siteInfo || {});
|
||||
this.initAppInfo(allSettings.app || {});
|
||||
},
|
||||
initAppInfo(appInfo: AppInfo) {
|
||||
this.app.time = appInfo.time;
|
||||
this.app.version = appInfo.version;
|
||||
this.app.deltaTime = new Date().getTime() - this.app.time;
|
||||
},
|
||||
initSiteInfo(siteInfo: SiteInfo) {
|
||||
//@ts-ignore
|
||||
|
@ -158,15 +171,15 @@ export const useSettingStore = defineStore({
|
|||
if (this.siteInfo.logo) {
|
||||
updatePreferences({
|
||||
logo: {
|
||||
source: this.siteInfo.logo
|
||||
}
|
||||
source: this.siteInfo.logo,
|
||||
},
|
||||
});
|
||||
}
|
||||
if (this.siteInfo.title) {
|
||||
updatePreferences({
|
||||
app: {
|
||||
name: this.siteInfo.title
|
||||
}
|
||||
name: this.siteInfo.title,
|
||||
},
|
||||
});
|
||||
useTitle(this.siteInfo.title);
|
||||
}
|
||||
|
@ -210,7 +223,7 @@ export const useSettingStore = defineStore({
|
|||
cancelText: "不是,回到原来的地址",
|
||||
onCancel: () => {
|
||||
window.location.href = bindUrl;
|
||||
}
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -224,8 +237,8 @@ export const useSettingStore = defineStore({
|
|||
}
|
||||
await this.init();
|
||||
this.inited = true;
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
mitter.on("app.login", async () => {
|
||||
|
|
|
@ -12,6 +12,7 @@ import {
|
|||
} from '@certd/lib-server';
|
||||
import { AppKey, getPlusInfo, isComm } from '@certd/plus-core';
|
||||
import { cloneDeep } from 'lodash-es';
|
||||
import {getVersion} from "../../utils/version.js";
|
||||
|
||||
/**
|
||||
*/
|
||||
|
@ -81,6 +82,8 @@ export class BasicSettingsController extends BaseController {
|
|||
const plusInfo = await this.plusInfo();
|
||||
const headerMenus = await this.getHeaderMenus();
|
||||
const suiteSetting = await this.getSuiteSetting();
|
||||
|
||||
const version = await getVersion()
|
||||
return this.ok({
|
||||
sysPublic,
|
||||
installInfo,
|
||||
|
@ -89,6 +92,10 @@ export class BasicSettingsController extends BaseController {
|
|||
plusInfo,
|
||||
headerMenus,
|
||||
suiteSetting,
|
||||
app:{
|
||||
time: new Date().getTime(),
|
||||
version,
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import { createCertDomainGetterInputDefine, createRemoteSelectInputDefine } from
|
|||
import { optionsUtils } from '@certd/basic/dist/utils/util.options.js';
|
||||
import { CertApplyPluginNames} from '@certd/plugin-cert';
|
||||
@IsTaskPlugin({
|
||||
//命名规范,插件名称+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
|
||||
//命名规范,插件类型+功能(就是目录plugin-demo中的demo),大写字母开头,驼峰命名
|
||||
name: 'DemoTest',
|
||||
title: 'Demo-测试插件',
|
||||
icon: 'clarity:plugin-line',
|
||||
|
|
Loading…
Reference in New Issue