@fmdevui/fm-dev 1.0.27 → 1.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/packages/core/utils/other/index.mjs +3 -4
- package/es/{defaults.css → version.css} +5 -4
- package/index.js +305 -306
- package/index.min.js +24 -24
- package/index.min.mjs +27 -27
- package/index.mjs +305 -306
- package/lib/defaults.css +3 -3
- package/lib/packages/core/utils/other/index.js +5 -6
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! fm-dev v1.0.
|
|
1
|
+
/*! fm-dev v1.0.28 */
|
|
2
2
|
(function (global, factory) {
|
|
3
3
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('vue'), require('element-plus'), require('crypto'), require('url'), require('http'), require('https'), require('util'), require('stream'), require('assert'), require('zlib')) :
|
|
4
4
|
typeof define === 'function' && define.amd ? define(['exports', 'vue', 'element-plus', 'crypto', 'url', 'http', 'https', 'util', 'stream', 'assert', 'zlib'], factory) :
|
|
@@ -36720,311 +36720,6 @@
|
|
|
36720
36720
|
dict.label = text !== dict.langMessage && !text.endsWith(`${dict.typeCode}_${dict.value}`) ? text : dict.label;
|
|
36721
36721
|
};
|
|
36722
36722
|
|
|
36723
|
-
function useTitle() {
|
|
36724
|
-
const stores = useThemeConfig(pinia);
|
|
36725
|
-
const { themeConfig } = storeToRefs(stores);
|
|
36726
|
-
const router = useRouter();
|
|
36727
|
-
vue.nextTick(() => {
|
|
36728
|
-
let webTitle = "";
|
|
36729
|
-
let globalTitle = themeConfig.value.globalTitle;
|
|
36730
|
-
const { path, meta } = router.currentRoute.value;
|
|
36731
|
-
if (path === "/login") {
|
|
36732
|
-
webTitle = meta.title;
|
|
36733
|
-
} else {
|
|
36734
|
-
webTitle = setTagsViewNameI18n(router.currentRoute.value);
|
|
36735
|
-
}
|
|
36736
|
-
document.title = `${webTitle} - ${globalTitle}` || globalTitle;
|
|
36737
|
-
});
|
|
36738
|
-
}
|
|
36739
|
-
function setTagsViewNameI18n(item) {
|
|
36740
|
-
let tagsViewName = "";
|
|
36741
|
-
const { query, params, meta } = item;
|
|
36742
|
-
const i18n = useI18n();
|
|
36743
|
-
const pattern = /^\{("(zh-CN|en|zh-TW)":"[^,]+",?){1,3}}$/;
|
|
36744
|
-
if (query?.tagsViewName || params?.tagsViewName) {
|
|
36745
|
-
if (pattern.test(query?.tagsViewName) || pattern.test(params?.tagsViewName)) {
|
|
36746
|
-
const urlTagsParams = query?.tagsViewName && JSON.parse(query?.tagsViewName) || params?.tagsViewName && JSON.parse(params?.tagsViewName);
|
|
36747
|
-
tagsViewName = urlTagsParams[i18n.locale.value];
|
|
36748
|
-
} else {
|
|
36749
|
-
tagsViewName = query?.tagsViewName || params?.tagsViewName;
|
|
36750
|
-
}
|
|
36751
|
-
} else {
|
|
36752
|
-
tagsViewName = i18n.t(`message.menu.${meta.title}`);
|
|
36753
|
-
}
|
|
36754
|
-
return tagsViewName;
|
|
36755
|
-
}
|
|
36756
|
-
const lazyImg = (el, arr) => {
|
|
36757
|
-
const io = new IntersectionObserver((res) => {
|
|
36758
|
-
res.forEach((v) => {
|
|
36759
|
-
if (v.isIntersecting) {
|
|
36760
|
-
const { img, key } = v.target.dataset;
|
|
36761
|
-
v.target.src = img;
|
|
36762
|
-
v.target.onload = () => {
|
|
36763
|
-
io.unobserve(v.target);
|
|
36764
|
-
arr[key]["loading"] = false;
|
|
36765
|
-
};
|
|
36766
|
-
}
|
|
36767
|
-
});
|
|
36768
|
-
});
|
|
36769
|
-
vue.nextTick(() => {
|
|
36770
|
-
document.querySelectorAll(el).forEach((img) => io.observe(img));
|
|
36771
|
-
});
|
|
36772
|
-
};
|
|
36773
|
-
const globalComponentSize = () => {
|
|
36774
|
-
const stores = useThemeConfig(pinia);
|
|
36775
|
-
const { themeConfig } = storeToRefs(stores);
|
|
36776
|
-
return Local.get("themeConfig")?.globalComponentSize || themeConfig.value?.globalComponentSize;
|
|
36777
|
-
};
|
|
36778
|
-
function deepClone(obj) {
|
|
36779
|
-
let newObj;
|
|
36780
|
-
try {
|
|
36781
|
-
newObj = obj.push ? [] : {};
|
|
36782
|
-
} catch (error) {
|
|
36783
|
-
newObj = {};
|
|
36784
|
-
}
|
|
36785
|
-
for (let attr in obj) {
|
|
36786
|
-
if (obj[attr] && typeof obj[attr] === "object") {
|
|
36787
|
-
newObj[attr] = deepClone(obj[attr]);
|
|
36788
|
-
} else {
|
|
36789
|
-
newObj[attr] = obj[attr];
|
|
36790
|
-
}
|
|
36791
|
-
}
|
|
36792
|
-
return newObj;
|
|
36793
|
-
}
|
|
36794
|
-
function isMobile() {
|
|
36795
|
-
if (navigator.userAgent.match(/('phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone')/i)) {
|
|
36796
|
-
return true;
|
|
36797
|
-
} else {
|
|
36798
|
-
return false;
|
|
36799
|
-
}
|
|
36800
|
-
}
|
|
36801
|
-
function handleEmpty(list) {
|
|
36802
|
-
const arr = [];
|
|
36803
|
-
for (const i in list) {
|
|
36804
|
-
const d = [];
|
|
36805
|
-
for (const j in list[i]) {
|
|
36806
|
-
d.push(list[i][j]);
|
|
36807
|
-
}
|
|
36808
|
-
const leng = d.filter((item) => item === "").length;
|
|
36809
|
-
if (leng !== d.length) {
|
|
36810
|
-
arr.push(list[i]);
|
|
36811
|
-
}
|
|
36812
|
-
}
|
|
36813
|
-
return arr;
|
|
36814
|
-
}
|
|
36815
|
-
function handleOpenLink(val) {
|
|
36816
|
-
const { origin, pathname } = window.location;
|
|
36817
|
-
const router = useRouter();
|
|
36818
|
-
router.push(val.path);
|
|
36819
|
-
if (verifyUrl(val.meta?.isLink)) window.open(val.meta?.isLink);
|
|
36820
|
-
else window.open(`${origin}${pathname}#${val.meta?.isLink}`);
|
|
36821
|
-
}
|
|
36822
|
-
const other = {
|
|
36823
|
-
useTitle: () => {
|
|
36824
|
-
useTitle();
|
|
36825
|
-
},
|
|
36826
|
-
setTagsViewNameI18n(route) {
|
|
36827
|
-
return setTagsViewNameI18n(route);
|
|
36828
|
-
},
|
|
36829
|
-
lazyImg: (el, arr) => {
|
|
36830
|
-
lazyImg(el, arr);
|
|
36831
|
-
},
|
|
36832
|
-
globalComponentSize: () => {
|
|
36833
|
-
return globalComponentSize();
|
|
36834
|
-
},
|
|
36835
|
-
deepClone: (obj) => {
|
|
36836
|
-
return deepClone(obj);
|
|
36837
|
-
},
|
|
36838
|
-
isMobile: () => {
|
|
36839
|
-
return isMobile();
|
|
36840
|
-
},
|
|
36841
|
-
handleEmpty: (list) => {
|
|
36842
|
-
return handleEmpty(list);
|
|
36843
|
-
},
|
|
36844
|
-
handleOpenLink: (val) => {
|
|
36845
|
-
handleOpenLink(val);
|
|
36846
|
-
}
|
|
36847
|
-
};
|
|
36848
|
-
|
|
36849
|
-
const cssCdnUrlList = [
|
|
36850
|
-
// 调整为从本地引入,注释下面的 url
|
|
36851
|
-
// '//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css',
|
|
36852
|
-
// '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
|
|
36853
|
-
];
|
|
36854
|
-
const jsCdnUrlList = [];
|
|
36855
|
-
function setCssCdn() {
|
|
36856
|
-
if (cssCdnUrlList.length <= 0) return false;
|
|
36857
|
-
cssCdnUrlList.map((v) => {
|
|
36858
|
-
let link = document.createElement("link");
|
|
36859
|
-
link.rel = "stylesheet";
|
|
36860
|
-
link.href = v;
|
|
36861
|
-
link.crossOrigin = "anonymous";
|
|
36862
|
-
document.getElementsByTagName("head")[0].appendChild(link);
|
|
36863
|
-
});
|
|
36864
|
-
}
|
|
36865
|
-
function setJsCdn() {
|
|
36866
|
-
if (jsCdnUrlList.length <= 0) return false;
|
|
36867
|
-
jsCdnUrlList.map((v) => {
|
|
36868
|
-
let link = document.createElement("script");
|
|
36869
|
-
link.src = v;
|
|
36870
|
-
document.body.appendChild(link);
|
|
36871
|
-
});
|
|
36872
|
-
}
|
|
36873
|
-
const setIntroduction = {
|
|
36874
|
-
// 设置css
|
|
36875
|
-
cssCdn: () => {
|
|
36876
|
-
setCssCdn();
|
|
36877
|
-
},
|
|
36878
|
-
// 设置js
|
|
36879
|
-
jsCdn: () => {
|
|
36880
|
-
setJsCdn();
|
|
36881
|
-
}
|
|
36882
|
-
};
|
|
36883
|
-
|
|
36884
|
-
const NextLoading = {
|
|
36885
|
-
// 创建 loading
|
|
36886
|
-
start: () => {
|
|
36887
|
-
const bodys = document.body;
|
|
36888
|
-
const div = document.createElement("div");
|
|
36889
|
-
div.setAttribute("class", "loading-next");
|
|
36890
|
-
const htmls = `
|
|
36891
|
-
<div class="loading-next-box">
|
|
36892
|
-
<div class="loading-next-box-warp">
|
|
36893
|
-
<div class="loading-next-box-item"></div>
|
|
36894
|
-
<div class="loading-next-box-item"></div>
|
|
36895
|
-
<div class="loading-next-box-item"></div>
|
|
36896
|
-
<div class="loading-next-box-item"></div>
|
|
36897
|
-
<div class="loading-next-box-item"></div>
|
|
36898
|
-
<div class="loading-next-box-item"></div>
|
|
36899
|
-
<div class="loading-next-box-item"></div>
|
|
36900
|
-
<div class="loading-next-box-item"></div>
|
|
36901
|
-
<div class="loading-next-box-item"></div>
|
|
36902
|
-
</div>
|
|
36903
|
-
</div>
|
|
36904
|
-
`;
|
|
36905
|
-
div.innerHTML = htmls;
|
|
36906
|
-
bodys.insertBefore(div, bodys.childNodes[0]);
|
|
36907
|
-
window.nextLoading = true;
|
|
36908
|
-
},
|
|
36909
|
-
// 移除 loading
|
|
36910
|
-
done: (time = 0) => {
|
|
36911
|
-
vue.nextTick(() => {
|
|
36912
|
-
setTimeout(() => {
|
|
36913
|
-
window.nextLoading = false;
|
|
36914
|
-
const el = document.querySelector(".loading-next");
|
|
36915
|
-
el?.parentNode?.removeChild(el);
|
|
36916
|
-
}, time);
|
|
36917
|
-
});
|
|
36918
|
-
}
|
|
36919
|
-
};
|
|
36920
|
-
|
|
36921
|
-
function authDirective(app) {
|
|
36922
|
-
app.directive("auth", {
|
|
36923
|
-
mounted(el, binding) {
|
|
36924
|
-
const stores = useUserInfo();
|
|
36925
|
-
if (!stores.userInfos.authApiList) {
|
|
36926
|
-
el.parentNode.removeChild(el);
|
|
36927
|
-
} else {
|
|
36928
|
-
if (!stores.userInfos.authApiList.some((v) => v === binding.value)) el.parentNode.removeChild(el);
|
|
36929
|
-
}
|
|
36930
|
-
}
|
|
36931
|
-
});
|
|
36932
|
-
app.directive("auths", {
|
|
36933
|
-
mounted(el, binding) {
|
|
36934
|
-
let flag = false;
|
|
36935
|
-
const stores = useUserInfo();
|
|
36936
|
-
stores.userInfos.authApiList.map((val) => {
|
|
36937
|
-
binding.value.map((v) => {
|
|
36938
|
-
if (val === v) flag = true;
|
|
36939
|
-
});
|
|
36940
|
-
});
|
|
36941
|
-
if (!flag) el.parentNode.removeChild(el);
|
|
36942
|
-
}
|
|
36943
|
-
});
|
|
36944
|
-
app.directive("auth-all", {
|
|
36945
|
-
mounted(el, binding) {
|
|
36946
|
-
const stores = useUserInfo();
|
|
36947
|
-
const flag = judgementSameArr(binding.value, stores.userInfos.authApiList);
|
|
36948
|
-
if (!flag) el.parentNode.removeChild(el);
|
|
36949
|
-
}
|
|
36950
|
-
});
|
|
36951
|
-
}
|
|
36952
|
-
|
|
36953
|
-
function wavesDirective(app) {
|
|
36954
|
-
app.directive("waves", {
|
|
36955
|
-
mounted(el, binding) {
|
|
36956
|
-
el.classList.add("waves-effect");
|
|
36957
|
-
binding.value && el.classList.add(`waves-${binding.value}`);
|
|
36958
|
-
function setConvertStyle(obj) {
|
|
36959
|
-
let style = "";
|
|
36960
|
-
for (let i in obj) {
|
|
36961
|
-
if (obj.hasOwnProperty(i)) style += `${i}:${obj[i]};`;
|
|
36962
|
-
}
|
|
36963
|
-
return style;
|
|
36964
|
-
}
|
|
36965
|
-
function onCurrentClick(e) {
|
|
36966
|
-
let elDiv = document.createElement("div");
|
|
36967
|
-
elDiv.classList.add("waves-ripple");
|
|
36968
|
-
el.appendChild(elDiv);
|
|
36969
|
-
let styles = {
|
|
36970
|
-
left: `${e.layerX}px`,
|
|
36971
|
-
top: `${e.layerY}px`,
|
|
36972
|
-
opacity: 1,
|
|
36973
|
-
transform: `scale(${el.clientWidth / 100 * 10})`,
|
|
36974
|
-
"transition-duration": `750ms`,
|
|
36975
|
-
"transition-timing-function": `cubic-bezier(0.250, 0.460, 0.450, 0.940)`
|
|
36976
|
-
};
|
|
36977
|
-
elDiv.setAttribute("style", setConvertStyle(styles));
|
|
36978
|
-
setTimeout(() => {
|
|
36979
|
-
elDiv.setAttribute(
|
|
36980
|
-
"style",
|
|
36981
|
-
setConvertStyle({
|
|
36982
|
-
opacity: 0,
|
|
36983
|
-
transform: styles.transform,
|
|
36984
|
-
left: styles.left,
|
|
36985
|
-
top: styles.top
|
|
36986
|
-
})
|
|
36987
|
-
);
|
|
36988
|
-
setTimeout(() => {
|
|
36989
|
-
elDiv && el.removeChild(elDiv);
|
|
36990
|
-
}, 750);
|
|
36991
|
-
}, 450);
|
|
36992
|
-
}
|
|
36993
|
-
el.addEventListener("mousedown", onCurrentClick, false);
|
|
36994
|
-
},
|
|
36995
|
-
unmounted(el) {
|
|
36996
|
-
el.addEventListener("mousedown", () => {
|
|
36997
|
-
});
|
|
36998
|
-
}
|
|
36999
|
-
});
|
|
37000
|
-
}
|
|
37001
|
-
function reclickDirective(app) {
|
|
37002
|
-
app.directive("reclick", {
|
|
37003
|
-
mounted(el, time) {
|
|
37004
|
-
el.addEventListener("click", () => {
|
|
37005
|
-
if (!el.disabled) {
|
|
37006
|
-
el.disabled = true;
|
|
37007
|
-
setTimeout(
|
|
37008
|
-
() => {
|
|
37009
|
-
el.disabled = false;
|
|
37010
|
-
},
|
|
37011
|
-
time.value === void 0 ? 500 : time.value
|
|
37012
|
-
);
|
|
37013
|
-
}
|
|
37014
|
-
});
|
|
37015
|
-
},
|
|
37016
|
-
unmounted(el) {
|
|
37017
|
-
el.disabled = false;
|
|
37018
|
-
}
|
|
37019
|
-
});
|
|
37020
|
-
}
|
|
37021
|
-
|
|
37022
|
-
function directive(app) {
|
|
37023
|
-
authDirective(app);
|
|
37024
|
-
wavesDirective(app);
|
|
37025
|
-
reclickDirective(app);
|
|
37026
|
-
}
|
|
37027
|
-
|
|
37028
36723
|
var de = {
|
|
37029
36724
|
name: "de",
|
|
37030
36725
|
el: {
|
|
@@ -50301,6 +49996,310 @@
|
|
|
50301
49996
|
});
|
|
50302
49997
|
}
|
|
50303
49998
|
|
|
49999
|
+
function useTitle() {
|
|
50000
|
+
const stores = useThemeConfig(pinia);
|
|
50001
|
+
const { themeConfig } = storeToRefs(stores);
|
|
50002
|
+
const router = useRouter();
|
|
50003
|
+
vue.nextTick(() => {
|
|
50004
|
+
let webTitle = "";
|
|
50005
|
+
let globalTitle = themeConfig.value.globalTitle;
|
|
50006
|
+
const { path, meta } = router.currentRoute.value;
|
|
50007
|
+
if (path === "/login") {
|
|
50008
|
+
webTitle = meta.title;
|
|
50009
|
+
} else {
|
|
50010
|
+
webTitle = setTagsViewNameI18n(router.currentRoute.value);
|
|
50011
|
+
}
|
|
50012
|
+
document.title = `${webTitle} - ${globalTitle}` || globalTitle;
|
|
50013
|
+
});
|
|
50014
|
+
}
|
|
50015
|
+
function setTagsViewNameI18n(item) {
|
|
50016
|
+
let tagsViewName = "";
|
|
50017
|
+
const { query, params, meta } = item;
|
|
50018
|
+
const pattern = /^\{("(zh-CN|en|zh-TW)":"[^,]+",?){1,3}}$/;
|
|
50019
|
+
if (query?.tagsViewName || params?.tagsViewName) {
|
|
50020
|
+
if (pattern.test(query?.tagsViewName) || pattern.test(params?.tagsViewName)) {
|
|
50021
|
+
const urlTagsParams = query?.tagsViewName && JSON.parse(query?.tagsViewName) || params?.tagsViewName && JSON.parse(params?.tagsViewName);
|
|
50022
|
+
tagsViewName = urlTagsParams[i18n.global.locale.value];
|
|
50023
|
+
} else {
|
|
50024
|
+
tagsViewName = query?.tagsViewName || params?.tagsViewName;
|
|
50025
|
+
}
|
|
50026
|
+
} else {
|
|
50027
|
+
tagsViewName = i18n.global.t(`message.menu.${meta.title}`);
|
|
50028
|
+
}
|
|
50029
|
+
return tagsViewName;
|
|
50030
|
+
}
|
|
50031
|
+
const lazyImg = (el, arr) => {
|
|
50032
|
+
const io = new IntersectionObserver((res) => {
|
|
50033
|
+
res.forEach((v) => {
|
|
50034
|
+
if (v.isIntersecting) {
|
|
50035
|
+
const { img, key } = v.target.dataset;
|
|
50036
|
+
v.target.src = img;
|
|
50037
|
+
v.target.onload = () => {
|
|
50038
|
+
io.unobserve(v.target);
|
|
50039
|
+
arr[key]["loading"] = false;
|
|
50040
|
+
};
|
|
50041
|
+
}
|
|
50042
|
+
});
|
|
50043
|
+
});
|
|
50044
|
+
vue.nextTick(() => {
|
|
50045
|
+
document.querySelectorAll(el).forEach((img) => io.observe(img));
|
|
50046
|
+
});
|
|
50047
|
+
};
|
|
50048
|
+
const globalComponentSize = () => {
|
|
50049
|
+
const stores = useThemeConfig(pinia);
|
|
50050
|
+
const { themeConfig } = storeToRefs(stores);
|
|
50051
|
+
return Local.get("themeConfig")?.globalComponentSize || themeConfig.value?.globalComponentSize;
|
|
50052
|
+
};
|
|
50053
|
+
function deepClone(obj) {
|
|
50054
|
+
let newObj;
|
|
50055
|
+
try {
|
|
50056
|
+
newObj = obj.push ? [] : {};
|
|
50057
|
+
} catch (error) {
|
|
50058
|
+
newObj = {};
|
|
50059
|
+
}
|
|
50060
|
+
for (let attr in obj) {
|
|
50061
|
+
if (obj[attr] && typeof obj[attr] === "object") {
|
|
50062
|
+
newObj[attr] = deepClone(obj[attr]);
|
|
50063
|
+
} else {
|
|
50064
|
+
newObj[attr] = obj[attr];
|
|
50065
|
+
}
|
|
50066
|
+
}
|
|
50067
|
+
return newObj;
|
|
50068
|
+
}
|
|
50069
|
+
function isMobile() {
|
|
50070
|
+
if (navigator.userAgent.match(/('phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone')/i)) {
|
|
50071
|
+
return true;
|
|
50072
|
+
} else {
|
|
50073
|
+
return false;
|
|
50074
|
+
}
|
|
50075
|
+
}
|
|
50076
|
+
function handleEmpty(list) {
|
|
50077
|
+
const arr = [];
|
|
50078
|
+
for (const i in list) {
|
|
50079
|
+
const d = [];
|
|
50080
|
+
for (const j in list[i]) {
|
|
50081
|
+
d.push(list[i][j]);
|
|
50082
|
+
}
|
|
50083
|
+
const leng = d.filter((item) => item === "").length;
|
|
50084
|
+
if (leng !== d.length) {
|
|
50085
|
+
arr.push(list[i]);
|
|
50086
|
+
}
|
|
50087
|
+
}
|
|
50088
|
+
return arr;
|
|
50089
|
+
}
|
|
50090
|
+
function handleOpenLink(val) {
|
|
50091
|
+
const { origin, pathname } = window.location;
|
|
50092
|
+
const router = useRouter();
|
|
50093
|
+
router.push(val.path);
|
|
50094
|
+
if (verifyUrl(val.meta?.isLink)) window.open(val.meta?.isLink);
|
|
50095
|
+
else window.open(`${origin}${pathname}#${val.meta?.isLink}`);
|
|
50096
|
+
}
|
|
50097
|
+
const other = {
|
|
50098
|
+
useTitle: () => {
|
|
50099
|
+
useTitle();
|
|
50100
|
+
},
|
|
50101
|
+
setTagsViewNameI18n(route) {
|
|
50102
|
+
return setTagsViewNameI18n(route);
|
|
50103
|
+
},
|
|
50104
|
+
lazyImg: (el, arr) => {
|
|
50105
|
+
lazyImg(el, arr);
|
|
50106
|
+
},
|
|
50107
|
+
globalComponentSize: () => {
|
|
50108
|
+
return globalComponentSize();
|
|
50109
|
+
},
|
|
50110
|
+
deepClone: (obj) => {
|
|
50111
|
+
return deepClone(obj);
|
|
50112
|
+
},
|
|
50113
|
+
isMobile: () => {
|
|
50114
|
+
return isMobile();
|
|
50115
|
+
},
|
|
50116
|
+
handleEmpty: (list) => {
|
|
50117
|
+
return handleEmpty(list);
|
|
50118
|
+
},
|
|
50119
|
+
handleOpenLink: (val) => {
|
|
50120
|
+
handleOpenLink(val);
|
|
50121
|
+
}
|
|
50122
|
+
};
|
|
50123
|
+
|
|
50124
|
+
const cssCdnUrlList = [
|
|
50125
|
+
// 调整为从本地引入,注释下面的 url
|
|
50126
|
+
// '//at.alicdn.com/t/c/font_2298093_rnp72ifj3ba.css',
|
|
50127
|
+
// '//netdna.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
|
|
50128
|
+
];
|
|
50129
|
+
const jsCdnUrlList = [];
|
|
50130
|
+
function setCssCdn() {
|
|
50131
|
+
if (cssCdnUrlList.length <= 0) return false;
|
|
50132
|
+
cssCdnUrlList.map((v) => {
|
|
50133
|
+
let link = document.createElement("link");
|
|
50134
|
+
link.rel = "stylesheet";
|
|
50135
|
+
link.href = v;
|
|
50136
|
+
link.crossOrigin = "anonymous";
|
|
50137
|
+
document.getElementsByTagName("head")[0].appendChild(link);
|
|
50138
|
+
});
|
|
50139
|
+
}
|
|
50140
|
+
function setJsCdn() {
|
|
50141
|
+
if (jsCdnUrlList.length <= 0) return false;
|
|
50142
|
+
jsCdnUrlList.map((v) => {
|
|
50143
|
+
let link = document.createElement("script");
|
|
50144
|
+
link.src = v;
|
|
50145
|
+
document.body.appendChild(link);
|
|
50146
|
+
});
|
|
50147
|
+
}
|
|
50148
|
+
const setIntroduction = {
|
|
50149
|
+
// 设置css
|
|
50150
|
+
cssCdn: () => {
|
|
50151
|
+
setCssCdn();
|
|
50152
|
+
},
|
|
50153
|
+
// 设置js
|
|
50154
|
+
jsCdn: () => {
|
|
50155
|
+
setJsCdn();
|
|
50156
|
+
}
|
|
50157
|
+
};
|
|
50158
|
+
|
|
50159
|
+
const NextLoading = {
|
|
50160
|
+
// 创建 loading
|
|
50161
|
+
start: () => {
|
|
50162
|
+
const bodys = document.body;
|
|
50163
|
+
const div = document.createElement("div");
|
|
50164
|
+
div.setAttribute("class", "loading-next");
|
|
50165
|
+
const htmls = `
|
|
50166
|
+
<div class="loading-next-box">
|
|
50167
|
+
<div class="loading-next-box-warp">
|
|
50168
|
+
<div class="loading-next-box-item"></div>
|
|
50169
|
+
<div class="loading-next-box-item"></div>
|
|
50170
|
+
<div class="loading-next-box-item"></div>
|
|
50171
|
+
<div class="loading-next-box-item"></div>
|
|
50172
|
+
<div class="loading-next-box-item"></div>
|
|
50173
|
+
<div class="loading-next-box-item"></div>
|
|
50174
|
+
<div class="loading-next-box-item"></div>
|
|
50175
|
+
<div class="loading-next-box-item"></div>
|
|
50176
|
+
<div class="loading-next-box-item"></div>
|
|
50177
|
+
</div>
|
|
50178
|
+
</div>
|
|
50179
|
+
`;
|
|
50180
|
+
div.innerHTML = htmls;
|
|
50181
|
+
bodys.insertBefore(div, bodys.childNodes[0]);
|
|
50182
|
+
window.nextLoading = true;
|
|
50183
|
+
},
|
|
50184
|
+
// 移除 loading
|
|
50185
|
+
done: (time = 0) => {
|
|
50186
|
+
vue.nextTick(() => {
|
|
50187
|
+
setTimeout(() => {
|
|
50188
|
+
window.nextLoading = false;
|
|
50189
|
+
const el = document.querySelector(".loading-next");
|
|
50190
|
+
el?.parentNode?.removeChild(el);
|
|
50191
|
+
}, time);
|
|
50192
|
+
});
|
|
50193
|
+
}
|
|
50194
|
+
};
|
|
50195
|
+
|
|
50196
|
+
function authDirective(app) {
|
|
50197
|
+
app.directive("auth", {
|
|
50198
|
+
mounted(el, binding) {
|
|
50199
|
+
const stores = useUserInfo();
|
|
50200
|
+
if (!stores.userInfos.authApiList) {
|
|
50201
|
+
el.parentNode.removeChild(el);
|
|
50202
|
+
} else {
|
|
50203
|
+
if (!stores.userInfos.authApiList.some((v) => v === binding.value)) el.parentNode.removeChild(el);
|
|
50204
|
+
}
|
|
50205
|
+
}
|
|
50206
|
+
});
|
|
50207
|
+
app.directive("auths", {
|
|
50208
|
+
mounted(el, binding) {
|
|
50209
|
+
let flag = false;
|
|
50210
|
+
const stores = useUserInfo();
|
|
50211
|
+
stores.userInfos.authApiList.map((val) => {
|
|
50212
|
+
binding.value.map((v) => {
|
|
50213
|
+
if (val === v) flag = true;
|
|
50214
|
+
});
|
|
50215
|
+
});
|
|
50216
|
+
if (!flag) el.parentNode.removeChild(el);
|
|
50217
|
+
}
|
|
50218
|
+
});
|
|
50219
|
+
app.directive("auth-all", {
|
|
50220
|
+
mounted(el, binding) {
|
|
50221
|
+
const stores = useUserInfo();
|
|
50222
|
+
const flag = judgementSameArr(binding.value, stores.userInfos.authApiList);
|
|
50223
|
+
if (!flag) el.parentNode.removeChild(el);
|
|
50224
|
+
}
|
|
50225
|
+
});
|
|
50226
|
+
}
|
|
50227
|
+
|
|
50228
|
+
function wavesDirective(app) {
|
|
50229
|
+
app.directive("waves", {
|
|
50230
|
+
mounted(el, binding) {
|
|
50231
|
+
el.classList.add("waves-effect");
|
|
50232
|
+
binding.value && el.classList.add(`waves-${binding.value}`);
|
|
50233
|
+
function setConvertStyle(obj) {
|
|
50234
|
+
let style = "";
|
|
50235
|
+
for (let i in obj) {
|
|
50236
|
+
if (obj.hasOwnProperty(i)) style += `${i}:${obj[i]};`;
|
|
50237
|
+
}
|
|
50238
|
+
return style;
|
|
50239
|
+
}
|
|
50240
|
+
function onCurrentClick(e) {
|
|
50241
|
+
let elDiv = document.createElement("div");
|
|
50242
|
+
elDiv.classList.add("waves-ripple");
|
|
50243
|
+
el.appendChild(elDiv);
|
|
50244
|
+
let styles = {
|
|
50245
|
+
left: `${e.layerX}px`,
|
|
50246
|
+
top: `${e.layerY}px`,
|
|
50247
|
+
opacity: 1,
|
|
50248
|
+
transform: `scale(${el.clientWidth / 100 * 10})`,
|
|
50249
|
+
"transition-duration": `750ms`,
|
|
50250
|
+
"transition-timing-function": `cubic-bezier(0.250, 0.460, 0.450, 0.940)`
|
|
50251
|
+
};
|
|
50252
|
+
elDiv.setAttribute("style", setConvertStyle(styles));
|
|
50253
|
+
setTimeout(() => {
|
|
50254
|
+
elDiv.setAttribute(
|
|
50255
|
+
"style",
|
|
50256
|
+
setConvertStyle({
|
|
50257
|
+
opacity: 0,
|
|
50258
|
+
transform: styles.transform,
|
|
50259
|
+
left: styles.left,
|
|
50260
|
+
top: styles.top
|
|
50261
|
+
})
|
|
50262
|
+
);
|
|
50263
|
+
setTimeout(() => {
|
|
50264
|
+
elDiv && el.removeChild(elDiv);
|
|
50265
|
+
}, 750);
|
|
50266
|
+
}, 450);
|
|
50267
|
+
}
|
|
50268
|
+
el.addEventListener("mousedown", onCurrentClick, false);
|
|
50269
|
+
},
|
|
50270
|
+
unmounted(el) {
|
|
50271
|
+
el.addEventListener("mousedown", () => {
|
|
50272
|
+
});
|
|
50273
|
+
}
|
|
50274
|
+
});
|
|
50275
|
+
}
|
|
50276
|
+
function reclickDirective(app) {
|
|
50277
|
+
app.directive("reclick", {
|
|
50278
|
+
mounted(el, time) {
|
|
50279
|
+
el.addEventListener("click", () => {
|
|
50280
|
+
if (!el.disabled) {
|
|
50281
|
+
el.disabled = true;
|
|
50282
|
+
setTimeout(
|
|
50283
|
+
() => {
|
|
50284
|
+
el.disabled = false;
|
|
50285
|
+
},
|
|
50286
|
+
time.value === void 0 ? 500 : time.value
|
|
50287
|
+
);
|
|
50288
|
+
}
|
|
50289
|
+
});
|
|
50290
|
+
},
|
|
50291
|
+
unmounted(el) {
|
|
50292
|
+
el.disabled = false;
|
|
50293
|
+
}
|
|
50294
|
+
});
|
|
50295
|
+
}
|
|
50296
|
+
|
|
50297
|
+
function directive(app) {
|
|
50298
|
+
authDirective(app);
|
|
50299
|
+
wavesDirective(app);
|
|
50300
|
+
reclickDirective(app);
|
|
50301
|
+
}
|
|
50302
|
+
|
|
50304
50303
|
function auth(value) {
|
|
50305
50304
|
const stores = useUserInfo();
|
|
50306
50305
|
return stores.userInfos.authApiList.some((v) => v === value);
|