mirror of
https://gitee.com/chu1204505056/vue-admin-beautiful.git
synced 2025-05-06 14:16:34 +08:00
193 lines
4.7 KiB
JavaScript
193 lines
4.7 KiB
JavaScript
import { loadingText, messageDuration, title } from "@/config/settings";
|
|
import * as lodash from "lodash";
|
|
import { Loading, Message, MessageBox, Notification } from "element-ui";
|
|
import store from "@/store";
|
|
import { getAccessToken } from "@/utils/accessToken";
|
|
|
|
const accessToken = store.getters["user/accessToken"];
|
|
const layout = store.getters["settings/layout"];
|
|
|
|
const install = (Vue, opts = {}) => {
|
|
/* 全局accessToken */
|
|
Vue.prototype.$baseAccessToken = () => {
|
|
return accessToken || getAccessToken();
|
|
};
|
|
/* 全局标题 */
|
|
Vue.prototype.$baseTitle = (() => {
|
|
return title;
|
|
})();
|
|
/* 全局加载层 */
|
|
Vue.prototype.$baseLoading = (index, text, callback) => {
|
|
let loading;
|
|
if (!index) {
|
|
loading = Loading.service({
|
|
lock: true,
|
|
text: text || loadingText,
|
|
background: "hsla(0,0%,100%,.8)",
|
|
});
|
|
} else {
|
|
loading = Loading.service({
|
|
lock: true,
|
|
text: text || loadingText,
|
|
spinner: "vab-loading-type" + index,
|
|
background: "hsla(0,0%,100%,.8)",
|
|
});
|
|
}
|
|
if (callback) {
|
|
callback(loading);
|
|
} else {
|
|
setTimeout(() => {
|
|
loading.close();
|
|
}, messageDuration);
|
|
}
|
|
};
|
|
/* 全局多彩加载层 */
|
|
Vue.prototype.$baseColorfullLoading = (index, text, callback) => {
|
|
let loading;
|
|
if (!index) {
|
|
loading = Loading.service({
|
|
lock: true,
|
|
text: text || loadingText,
|
|
spinner: "dots-loader",
|
|
background: "hsla(0,0%,100%,.8)",
|
|
});
|
|
} else {
|
|
switch (index) {
|
|
case 1:
|
|
index = "dots";
|
|
break;
|
|
case 2:
|
|
index = "gauge";
|
|
break;
|
|
case 3:
|
|
index = "inner-circles";
|
|
break;
|
|
case 4:
|
|
index = "plus";
|
|
break;
|
|
}
|
|
loading = Loading.service({
|
|
lock: true,
|
|
text: text || loadingText,
|
|
spinner: index + "-loader",
|
|
background: "hsla(0,0%,100%,.8)",
|
|
});
|
|
}
|
|
if (callback) {
|
|
callback(loading);
|
|
} else {
|
|
setTimeout(() => {
|
|
loading.close();
|
|
}, messageDuration);
|
|
}
|
|
};
|
|
/* 全局Message */
|
|
Vue.prototype.$baseMessage = (message, type) => {
|
|
Message({
|
|
offset: 60,
|
|
showClose: true,
|
|
message: message,
|
|
type: type,
|
|
dangerouslyUseHTMLString: true,
|
|
duration: messageDuration,
|
|
});
|
|
};
|
|
|
|
/* 全局Alert */
|
|
Vue.prototype.$baseAlert = (content, title, callback) => {
|
|
MessageBox.alert(content, title || "温馨提示", {
|
|
confirmButtonText: "确定",
|
|
dangerouslyUseHTMLString: true,
|
|
callback: (action) => {
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
},
|
|
});
|
|
};
|
|
|
|
/* 全局Confirm */
|
|
Vue.prototype.$baseConfirm = (content, title, callback1, callback2) => {
|
|
MessageBox.confirm(content, title || "温馨提示", {
|
|
confirmButtonText: "确定",
|
|
cancelButtonText: "取消",
|
|
closeOnClickModal: false,
|
|
type: "warning",
|
|
})
|
|
.then(() => {
|
|
if (callback1) {
|
|
callback1();
|
|
}
|
|
})
|
|
.catch(() => {
|
|
if (callback2) {
|
|
callback2();
|
|
}
|
|
});
|
|
};
|
|
|
|
/* 全局Notification */
|
|
Vue.prototype.$baseNotify = (message, title, type, position) => {
|
|
Notification({
|
|
title: title,
|
|
message: message,
|
|
position: position || "top-right",
|
|
type: type || "success",
|
|
duration: messageDuration,
|
|
});
|
|
};
|
|
|
|
/* 全局TableHeight */
|
|
Vue.prototype.$baseTableHeight = (formType) => {
|
|
let height = window.innerHeight;
|
|
let paddingHeight = 400;
|
|
const formHeight = 50;
|
|
|
|
if (layout === "vertical") {
|
|
paddingHeight = 340;
|
|
}
|
|
|
|
if ("number" == typeof formType) {
|
|
height = height - paddingHeight - formHeight * formType;
|
|
} else {
|
|
height = height - paddingHeight;
|
|
}
|
|
return height;
|
|
};
|
|
|
|
/* 全局map图层 */
|
|
Vue.prototype.$baseMap = () => {
|
|
return new maptalks.Map("map", {
|
|
center: [116.41348403785, 39.910843952376],
|
|
zoom: 12,
|
|
minZoom: 1,
|
|
maxZoom: 19,
|
|
spatialReference: {
|
|
projection: "baidu",
|
|
},
|
|
attribution: {
|
|
content: "© vue-admin-beautiful",
|
|
},
|
|
baseLayer: new maptalks.TileLayer("base", {
|
|
cssFilter: "sepia(100%) invert(90%)",
|
|
urlTemplate:
|
|
"http://online{s}.map.bdimg.com/onlinelabel/?qt=tile&x={x}&y={y}&z={z}&styles=pl&scaler=1&p=1",
|
|
subdomains: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
|
|
attribution:
|
|
'© <a target="_blank" href="http://map.baidu.com">Baidu</a>',
|
|
}),
|
|
});
|
|
};
|
|
|
|
/* 全局lodash */
|
|
Vue.prototype.$baseLodash = lodash;
|
|
/* 全局事件总线 */
|
|
Vue.prototype.$baseEventBus = new Vue();
|
|
};
|
|
|
|
if (typeof window !== "undefined" && window.Vue) {
|
|
install(window.Vue);
|
|
}
|
|
|
|
export default install;
|