vmf
Version:
vue micro service frame
254 lines (244 loc) • 7.59 kB
JavaScript
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.js.map
;