UNPKG

vmf

Version:

vue micro service frame

254 lines (244 loc) 7.6 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } var Vue = _interopDefault(require('vue')); var Filter = _interopDefault(require('@vmf/filter')); var I18n = require('@vmf/i18n'); var I18n__default = _interopDefault(I18n); var Power = require('@vmf/power'); var Power__default = _interopDefault(Power); var Utils = require('@vmf/shared'); var router = require('@vmf/router'); var vuex = require('@vmf/vuex'); var VueMeta = _interopDefault(require('vue-meta')); var request = require('@vmf/request'); var storage = require('@vmf/storage'); /** * Created by henian.xu on 2019/11/24. * */ var Plugin = (vue) => { const { appConfig = {} } = Utils.GlobalVar; vue.prototype.$defaultImg = appConfig.DEFAULT_IMG; vue.use(VueMeta, appConfig.VUE_META); }; /** * Created by henian.xu on 2020/2/14. * */ const Http = Object.freeze({ get: request.get, post: request.post, postJson: request.postJson, href: request.href, createCancelToken: request.createCancelToken, }); var Api = (vue) => { Object.defineProperty(vue, '$http', { get() { return Http; }, }); Object.defineProperty(vue.prototype, '$http', { get() { return Http; }, }); }; /** * Created by henian.xu on 2019/11/25. * */ var UtilsInstall = (vue) => { Object.defineProperty(vue, '$utils', { get() { return Utils; }, }); Object.defineProperty(vue.prototype, '$utils', { get() { return Utils; }, }); }; /** * Created by henian.xu on 2020/1/8. * */ const rawData = storage.localStorage.get('__USER_DATA__') || {}; if (rawData.token) { request.setToken(rawData.token); } vuex.registerModule('User', { namespaced: true, state: { rawData, }, getters: { userData(state) { return state.rawData; }, userInfo(state, getters) { return (getters.userData || {}).user || {}; }, token(state) { return state.rawData.token; }, account(state, getters) { const { userInfo } = getters; return userInfo.account || ''; }, fullName(state, getters) { const { userInfo } = getters; return userInfo.fullName || ''; }, }, mutations: { setRawData(state, data) { state.rawData = data || {}; if (data) request.setToken(data.token); storage.localStorage.set('__USER_DATA__', data); }, setUserInfo(state, data) { if (!state.rawData) state.rawData = {}; rawData.user = { ...state.rawData.user, ...data, }; storage.localStorage.set('__USER_DATA__', state.rawData); }, }, actions: { async login({ commit }, options) { const params = { ...options, password: options.password ? Utils.Md5(options.password) : '', }; const { data } = await request.post(`${Utils.GlobalVar.appConfig.USER_API}/login`, params, { isSuccessTip: true, isAxiosResponseData: true, }); commit('setRawData', data); try { commit('remoteSelectCache/clearCacheData', null, { root: true }); } catch (e) { console.error(e); } }, async logout() { await request.post(`${Utils.GlobalVar.appConfig.USER_API}/logout`, {}, { isSuccessTip: true, }); Object.values(router.initialMethodMap).forEach(initialMethod => { initialMethod.isCalled = false; }); const backUrl = `?backUrl=${encodeURIComponent('/')}`; await router.router.replace(`/login${backUrl}`); }, async modifyPassword({ commit }, options) { const params = { ...options, password: options.password ? Utils.Md5(options.password) : '', oldPassword: options.oldPassword ? Utils.Md5(options.oldPassword) : '', }; await request.post(`${Utils.GlobalVar.appConfig.USER_API}/modifyPwdByUser`, params, { isSuccessTip: true, }); }, async clearCache() { await request.post(`${Utils.GlobalVar.appConfig.USER_API}/clearCache`, {}, { isSuccessTip: true, }); }, }, }); vuex.registerModule('App', { namespaced: true, state: { rawData: null, }, getters: { appList(state) { return state.rawData; }, }, mutations: { setRawData(state, data) { state.rawData = data; }, }, actions: { async getAppList({ state, commit }) { if (state.rawData !== null) return; const { data } = await request.get(Utils.GlobalVar.appConfig.APP_LIST_API, {}, { isAxiosResponseData: true, }); commit('setRawData', data); }, }, }); /** * Created by henian.xu on 2019/11/18. * */ Vue.use(Filter); Vue.use(Power__default); Vue.use(Plugin); Vue.use(Api); Vue.use(UtilsInstall); // TODO 处理使用 cdn 引用vue.min.js 时无效的问题 // Vue.config.productionTip = Utils.GlobalVar.productionTip; const beforeCreateFns = []; const requireProject = require.context('@', true, /main\.js$/); requireProject.keys().forEach((fileName) => { // 只会获取1级和2级目录下的main.js文件 if (fileName.split('/').length > 3) return; const res = requireProject(fileName); if (res.beforeCreate) beforeCreateFns.push(res.beforeCreate()); }); Vue.use(I18n__default); Promise.all(beforeCreateFns).then(res => { // vue-meta 处理标题 const keyName = (Utils.GlobalVar.appConfig && Utils.GlobalVar.appConfig.VUE_META && Utils.GlobalVar.appConfig.VUE_META.keyName) || 'metaInfo'; new Vue({ router: router.router, store: vuex.store, [keyName]() { const { meta: { title = '', subTitle = '', i18nKey = '' }, } = this.$route; return { title: this.$$t(i18nKey || '', `${title}${subTitle ? `-${subTitle}` : subTitle}` || Utils.GlobalVar.DocTitle), }; }, render: h => h('div', { attrs: { id: 'app', }, }, [h('router-view')]), }).$mount('#app'); }); Object.keys(router).forEach(function (k) { if (k !== 'default') exports[k] = router[k]; }); Object.keys(vuex).forEach(function (k) { if (k !== 'default') exports[k] = vuex[k]; }); Object.keys(request).forEach(function (k) { if (k !== 'default') exports[k] = request[k]; }); Object.keys(storage).forEach(function (k) { if (k !== 'default') exports[k] = storage[k]; }); exports.Vue = Vue; exports.$$t = I18n.$$t; exports.create$$t = I18n.create$$t; exports.addPower = Power.addPower; exports.hasPower = Power.hasPower; exports.GlobalVar = Utils.GlobalVar; exports.Utils = Utils; //# sourceMappingURL=vmf.cjs.prod.js.map