mirror of
https://github.com/certd/certd.git
synced 2026-04-24 04:17:25 +08:00
chore: 兼容数据库
This commit is contained in:
@@ -35,7 +35,9 @@ export type SysPublicSetting = {
|
||||
managerOtherUserPipeline?: boolean;
|
||||
icpNo?: string;
|
||||
};
|
||||
|
||||
export type SuiteSetting = {
|
||||
enabled?: boolean;
|
||||
};
|
||||
export type SysPrivateSetting = {
|
||||
httpProxy?: string;
|
||||
httpsProxy?: string;
|
||||
@@ -67,6 +69,7 @@ export type AllSettings = {
|
||||
siteInfo: SiteInfo;
|
||||
siteEnv: SiteEnv;
|
||||
headerMenus: HeaderMenus;
|
||||
suiteSetting: SuiteSetting;
|
||||
};
|
||||
|
||||
export async function loadAllSettings(): Promise<AllSettings> {
|
||||
|
||||
@@ -138,7 +138,7 @@ export const certdResources = [
|
||||
meta: {
|
||||
show: () => {
|
||||
const settingStore = useSettingStore();
|
||||
return settingStore.isComm;
|
||||
return settingStore.isComm && settingStore.isSuiteEnabled;
|
||||
},
|
||||
icon: "ion:cart-outline",
|
||||
auth: true
|
||||
|
||||
@@ -5,7 +5,7 @@ import * as _ from "lodash-es";
|
||||
import { LocalStorage } from "/src/utils/util.storage";
|
||||
|
||||
import * as basicApi from "/@/api/modules/api.basic";
|
||||
import { HeaderMenus, PlusInfo, SiteEnv, SiteInfo, SysInstallInfo, SysPublicSetting } from "/@/api/modules/api.basic";
|
||||
import { 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";
|
||||
@@ -37,6 +37,7 @@ export interface SettingState {
|
||||
siteEnv?: SiteEnv;
|
||||
headerMenus?: HeaderMenus;
|
||||
inited?: boolean;
|
||||
suiteSetting?: SuiteSetting;
|
||||
}
|
||||
|
||||
const defaultThemeConfig = {
|
||||
@@ -88,6 +89,7 @@ export const useSettingStore = defineStore({
|
||||
headerMenus: {
|
||||
menus: []
|
||||
},
|
||||
suiteSetting: { enabled: false },
|
||||
inited: false
|
||||
}),
|
||||
getters: {
|
||||
@@ -124,6 +126,10 @@ export const useSettingStore = defineStore({
|
||||
getHeaderMenus() {
|
||||
// @ts-ignore
|
||||
return this.headerMenus?.menus || { menus: [] };
|
||||
},
|
||||
isSuiteEnabled() {
|
||||
// @ts-ignore
|
||||
return this.suiteSetting?.enabled === true;
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
@@ -142,6 +148,7 @@ export const useSettingStore = defineStore({
|
||||
_.merge(this.siteEnv, allSettings.siteEnv || {});
|
||||
_.merge(this.plusInfo, allSettings.plusInfo || {});
|
||||
_.merge(this.headerMenus, allSettings.headerMenus || {});
|
||||
_.merge(this.suiteSetting, allSettings.suiteSetting || {});
|
||||
//@ts-ignore
|
||||
this.initSiteInfo(allSettings.siteInfo || {});
|
||||
},
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
<product-info :product="item" @order="doOrder" />
|
||||
</a-col>
|
||||
</a-row>
|
||||
|
||||
<a-empty v-if="suites.length == 0 && addons.length == 0" class="w-100 mt-10" description="暂无套餐可购买" />
|
||||
</div>
|
||||
|
||||
<order-modal ref="orderModalRef" />
|
||||
|
||||
@@ -36,6 +36,9 @@
|
||||
</span>
|
||||
<span>(<expires-time-text :value="item.expiresTime" />)</span>
|
||||
</a-tag>
|
||||
<div class="flex-o ml-5">
|
||||
暂无套餐 <a-button v-if="detail.suites?.length === 0" class="ml-5" type="primary" size="small" @click="goBuy">去购买</a-button>
|
||||
</div>
|
||||
</div>
|
||||
</a-popover>
|
||||
</div>
|
||||
@@ -48,6 +51,7 @@ import { ref } from "vue";
|
||||
import ExpiresTimeText from "/@/components/expires-time-text.vue";
|
||||
import api, { SuiteDetail } from "/@/views/certd/suite/mine/api";
|
||||
import { FsIcon } from "@fast-crud/fast-crud";
|
||||
import { useRouter } from "vue-router";
|
||||
|
||||
defineOptions({
|
||||
name: "SuiteCard"
|
||||
@@ -60,4 +64,11 @@ async function loadSuiteDetail() {
|
||||
}
|
||||
|
||||
loadSuiteDetail();
|
||||
|
||||
const router = useRouter();
|
||||
function goBuy() {
|
||||
router.push({
|
||||
path: "/certd/suite/buy"
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -45,6 +45,7 @@ import { notification } from "ant-design-vue";
|
||||
import { request } from "/@/api/service";
|
||||
import SuiteDurationSelector from "/@/views/sys/suite/setting/suite-duration-selector.vue";
|
||||
import ProductManager from "/@/views/sys/suite/product/index.vue";
|
||||
import { useSettingStore } from "/@/store/modules/settings";
|
||||
|
||||
defineOptions({
|
||||
name: "SettingsSuite"
|
||||
@@ -83,11 +84,13 @@ async function loadSettings() {
|
||||
merge(formState, data);
|
||||
}
|
||||
|
||||
const settingsStore = useSettingStore();
|
||||
loadSettings();
|
||||
const onClick = async () => {
|
||||
const form = await formRef.value.validateFields();
|
||||
await api.SuiteSettingSave(form);
|
||||
await loadSettings();
|
||||
await settingsStore.loadSysSettings();
|
||||
notification.success({
|
||||
message: "保存成功"
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user