| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import { reactive } from 'vue'
- import axios from 'axios'
- import plus from '@/utils/h5plus'
- interface AppConfig {
- appId: string;
- appName: string; // 应用名称
- version: string; // 应用版本
- versionCode: string; // 应用版本号
- apiUrl: string; // API地址
- quoteUrl: string; // WS地址
- tradeUrl: string; // WS地址
- tokenStore: 'session' | 'local'; // token 存储方式
- locales: string[]; // 多语言配置
- loginVerifyCodeEnabled: boolean; // 是否启用登录验证码
- }
- export default new (class {
- /** 服务配置信息 */
- private appConfig = reactive<AppConfig>({
- appId: '',
- appName: '',
- version: '1.0.0',
- versionCode: '100000',
- apiUrl: '',
- quoteUrl: '',
- tradeUrl: '',
- tokenStore: 'session',
- locales: [],
- loginVerifyCodeEnabled: true
- })
- /** 服务初始化完成状态 */
- isReady = false
- /**
- * 手动初始化
- */
- private onload = Promise.resolve()
- /**
- * 初始化服务配置
- */
- private async init() {
- const filePath = './config/appconfig.json'
- if (plus.hasPlus()) {
- const res = await plus.getLocalFileContent(filePath)
- Object.assign(this.appConfig, JSON.parse(res))
- } else {
- const res = await axios(filePath)
- Object.assign(this.appConfig, res.data)
- }
- this.isReady = true
- }
- /**
- * 服务初始化完成时触发
- */
- onReady() {
- if (!this.isReady) {
- this.onload = this.init()
- }
- // 确保当前只有一个初始化实例
- return this.onload
- }
- /**
- * 获取服务配置地址
- * @param key
- * @returns
- */
- getConfig<K extends keyof AppConfig>(key: K) {
- return this.appConfig[key]
- }
- })
|