import { defineStore } from 'pinia'; import { http } from '/nerv-lib/saas'; import { useApi, HttpRequestConfig } from '/nerv-lib/use/use-api'; interface AppConfig { projectType: string; projectName: string; baseApi: string; timeout: number; pagePermission: boolean; actionPermission: boolean; showProject: boolean; resourceName: string; useHistoryTag: boolean; siderPosition: string; //菜单位置 userLoginApi: string; //登录接口 userCustomRouterGuard?: Function; //使用自己的路由守卫 userResourceApi: string; //获取资源接口 userInfoApi: string; //登录详情接口 enablePermissions: boolean; //是否开启权限 updatePassWordInfo?: object; //修改密码配置 headerBellInfo?: object; customInitMessageCount?: Function; // 自定义消息数量获取事件 iframe?: false; dropOut?: Function; //退出登录 defaultResource?: object; //默认权限 resourceInfo?: resourceInfoModul; //权限提交配置 strategyInfoApi?: string; // 获取系统密码策略 themeConfig?: object; initThemeCoinfig?: boolean; } interface loginData { userName: string; password: string; } interface resourceInfoModul { application: object; token: string; api: string; dealReosurceList?: Function; } const { httpRequest } = useApi(); const requestConfig: HttpRequestConfig = { method: 'POST' }; export const appConfigStore = defineStore({ id: 'appConfig', state(): AppConfig { return { projectType: 'web', baseApi: '/api', timeout: 15 * 1000, pagePermission: true, actionPermission: true, userLoginApi: '', siderPosition: 'top', userResourceApi: '', userInfoApi: '', resourceName: '', showProject: false, useHistoryTag: false, enablePermissions: false, updatePassWordInfo: {}, dropOut: undefined, iframe: false, userCustomRouterGuard: undefined, defaultResource: undefined, headerBellInfo: { isShow: false, api: '', toRouterName: '', }, themeConfig: {}, initThemeCoinfig: false, resourceInfo: { application: {}, api: '', token: '', }, }; }, getters: { getThemeConfig: (state: any) => state.themeConfig, getHeaderBellInfo: (state: any) => state.headerBellInfo, getInitThemeCoinfig: (state: any) => state.initThemeCoinfig, }, actions: { setInitThemeCoinfig(val: boolean) { this.initThemeCoinfig = val; }, setUserInfo(val: any) { this.userBasicInfo = val; }, setThemeConfig(val: any) { this.themeConfig = val; }, setConfig(config: AppConfig) { Object.keys(config).forEach((key) => { this[key] = config[key]; }); }, initDefaultResource(data: any) { this.defaultResource = data; }, setParams(config: Object) { Object.keys(config).forEach((key) => { this[key] = config[key]; }); }, userLogin(data: loginData) { if (this.userLoginApi) { console.log(data); return httpRequest({ api: this.userLoginApi, params: data, pathParams: {}, requestConfig }); // return http.post(this.userLoginApi, data); } else { return null; } }, userInfo() { if (this.userInfoApi) { return httpRequest({ api: this.userInfoApi, params: {}, pathParams: {}, requestConfig }); } else { return { data: {} }; } }, userResource(params = {}) { if (this.userResourceApi) { return httpRequest({ api: this.userResourceApi, params, pathParams: {}, requestConfig, }); } else { return { data: [] }; } }, }, });