@fmdeui/fmui 1.0.5 → 1.0.7
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/components/chart/index.d.ts +1 -1
- package/es/components/chart/src/index.vue.d.ts +1 -1
- package/es/components/index.d.ts +1 -0
- package/es/components/svgIcon/index.d.ts +26 -0
- package/es/components/svgIcon/index.vue.d.ts +27 -0
- package/es/hooks/index.d.ts +3 -0
- package/es/index.mjs +3 -0
- package/es/packages/hooks/dateTimeShortCust.mjs +23 -0
- package/es/packages/hooks/idleTimeout.mjs +127 -0
- package/es/packages/hooks/index.mjs +3 -0
- package/es/packages/hooks/sysInfo.mjs +59 -0
- package/es/packages/hooks/useInfo.mjs +44 -0
- package/es/packages/theme-chalk/assets/logo.png.mjs +3 -0
- package/es/packages/utils/signalR.mjs +47 -0
- package/es/utils/arrayOperation.d.ts +23 -0
- package/es/utils/auto-update.d.ts +11 -0
- package/es/utils/base64Conver.d.ts +30 -0
- package/es/utils/data-signature.d.ts +17 -0
- package/es/utils/download.d.ts +46 -0
- package/es/utils/exportExcel.d.ts +12 -0
- package/es/utils/flowLoading.d.ts +19 -0
- package/es/utils/fontts/font-awesome.d.ts +1 -0
- package/es/utils/fontts/font_2298093_rnp72ifj3ba.d.ts +1 -0
- package/es/utils/formRule.d.ts +36 -0
- package/es/utils/formValidate.d.ts +21 -0
- package/es/utils/formatTime.d.ts +37 -0
- package/es/utils/getStyleSheets.d.ts +12 -0
- package/es/utils/gpsConvertor.d.ts +30 -0
- package/es/utils/index.d.ts +23 -0
- package/es/utils/json-utils.d.ts +6 -0
- package/es/utils/loading.d.ts +4 -0
- package/es/utils/md5Signature.d.ts +1 -0
- package/es/utils/mitt.d.ts +4 -0
- package/es/utils/request.d.ts +53 -0
- package/es/utils/saulVModel.d.ts +4 -0
- package/es/utils/setIconfont.d.ts +12 -0
- package/es/utils/signalR.d.ts +3 -0
- package/es/utils/storage.d.ts +27 -0
- package/es/utils/theme.d.ts +13 -0
- package/es/utils/toolsValidate.d.ts +148 -0
- package/es/utils/watermark.d.ts +10 -0
- package/index.js +144 -1
- package/index.min.js +4 -4
- package/index.min.mjs +4 -4
- package/index.mjs +123 -2
- package/lib/components/chart/index.d.ts +1 -1
- package/lib/components/chart/src/index.vue.d.ts +1 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/svgIcon/index.d.ts +26 -0
- package/lib/components/svgIcon/index.vue.d.ts +27 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/index.js +25 -0
- package/lib/packages/hooks/dateTimeShortCust.js +25 -0
- package/lib/packages/hooks/idleTimeout.js +131 -0
- package/lib/packages/hooks/index.js +25 -0
- package/lib/packages/hooks/sysInfo.js +62 -0
- package/lib/packages/hooks/useInfo.js +64 -0
- package/lib/packages/theme-chalk/assets/logo.png.js +7 -0
- package/lib/packages/utils/signalR.js +68 -0
- package/lib/utils/arrayOperation.d.ts +23 -0
- package/lib/utils/auto-update.d.ts +11 -0
- package/lib/utils/base64Conver.d.ts +30 -0
- package/lib/utils/data-signature.d.ts +17 -0
- package/lib/utils/download.d.ts +46 -0
- package/lib/utils/exportExcel.d.ts +12 -0
- package/lib/utils/flowLoading.d.ts +19 -0
- package/lib/utils/fontts/font-awesome.d.ts +1 -0
- package/lib/utils/fontts/font_2298093_rnp72ifj3ba.d.ts +1 -0
- package/lib/utils/formRule.d.ts +36 -0
- package/lib/utils/formValidate.d.ts +21 -0
- package/lib/utils/formatTime.d.ts +37 -0
- package/lib/utils/getStyleSheets.d.ts +12 -0
- package/lib/utils/gpsConvertor.d.ts +30 -0
- package/lib/utils/index.d.ts +23 -0
- package/lib/utils/json-utils.d.ts +6 -0
- package/lib/utils/loading.d.ts +4 -0
- package/lib/utils/md5Signature.d.ts +1 -0
- package/lib/utils/mitt.d.ts +4 -0
- package/lib/utils/request.d.ts +53 -0
- package/lib/utils/saulVModel.d.ts +4 -0
- package/lib/utils/setIconfont.d.ts +12 -0
- package/lib/utils/signalR.d.ts +3 -0
- package/lib/utils/storage.d.ts +27 -0
- package/lib/utils/theme.d.ts +13 -0
- package/lib/utils/toolsValidate.d.ts +148 -0
- package/lib/utils/watermark.d.ts +10 -0
- package/{es/index.css → lib/version.css} +2 -2
- package/locale/en.js +1 -1
- package/locale/en.min.js +1 -1
- package/locale/en.min.mjs +1 -1
- package/locale/en.mjs +1 -1
- package/locale/zh-cn.js +1 -1
- package/locale/zh-cn.min.js +1 -1
- package/locale/zh-cn.min.mjs +1 -1
- package/locale/zh-cn.mjs +1 -1
- package/package.json +1 -1
- /package/{lib/component.css → es/make-installer.css} +0 -0
|
@@ -9,8 +9,8 @@ export declare const FChart: {
|
|
|
9
9
|
id: string;
|
|
10
10
|
options: Record<string, any>;
|
|
11
11
|
theme: string;
|
|
12
|
-
isEmpty: boolean | ((options: Record<string, any>) => boolean);
|
|
13
12
|
description: string;
|
|
13
|
+
isEmpty: boolean | ((options: Record<string, any>) => boolean);
|
|
14
14
|
}, {}, string, {}, GlobalComponents, GlobalDirectives, string, ComponentProvideOptions> & VNodeProps & AllowedComponentProps & ComponentCustomProps & (new () => {
|
|
15
15
|
$slots: {
|
|
16
16
|
empty?(_: {}): any;
|
|
@@ -16,8 +16,8 @@ declare const __VLS_component: DefineComponent<FChartProps, {}, {}, {}, {}, Comp
|
|
|
16
16
|
id: string;
|
|
17
17
|
options: Record<string, any>;
|
|
18
18
|
theme: string;
|
|
19
|
-
isEmpty: boolean | ((options: Record<string, any>) => boolean);
|
|
20
19
|
description: string;
|
|
20
|
+
isEmpty: boolean | ((options: Record<string, any>) => boolean);
|
|
21
21
|
}, {}, {}, {}, string, ComponentProvideOptions, false, {
|
|
22
22
|
echartRef: HTMLDivElement;
|
|
23
23
|
}, HTMLDivElement>;
|
package/es/components/index.d.ts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DefineComponent, ExtractPropTypes, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
|
+
export declare const FSvgIcon: DefineComponent<ExtractPropTypes<{
|
|
3
|
+
name: {
|
|
4
|
+
type: StringConstructor;
|
|
5
|
+
};
|
|
6
|
+
size: {
|
|
7
|
+
type: NumberConstructor;
|
|
8
|
+
default: () => number;
|
|
9
|
+
};
|
|
10
|
+
color: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
};
|
|
13
|
+
}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
|
|
14
|
+
name: {
|
|
15
|
+
type: StringConstructor;
|
|
16
|
+
};
|
|
17
|
+
size: {
|
|
18
|
+
type: NumberConstructor;
|
|
19
|
+
default: () => number;
|
|
20
|
+
};
|
|
21
|
+
color: {
|
|
22
|
+
type: StringConstructor;
|
|
23
|
+
};
|
|
24
|
+
}>> & Readonly<{}>, {
|
|
25
|
+
size: number;
|
|
26
|
+
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DefineComponent, ExtractPropTypes, ComponentOptionsMixin, PublicProps, ComponentProvideOptions } from 'vue';
|
|
2
|
+
declare const _default: DefineComponent<ExtractPropTypes<{
|
|
3
|
+
name: {
|
|
4
|
+
type: StringConstructor;
|
|
5
|
+
};
|
|
6
|
+
size: {
|
|
7
|
+
type: NumberConstructor;
|
|
8
|
+
default: () => number;
|
|
9
|
+
};
|
|
10
|
+
color: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
};
|
|
13
|
+
}>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly< ExtractPropTypes<{
|
|
14
|
+
name: {
|
|
15
|
+
type: StringConstructor;
|
|
16
|
+
};
|
|
17
|
+
size: {
|
|
18
|
+
type: NumberConstructor;
|
|
19
|
+
default: () => number;
|
|
20
|
+
};
|
|
21
|
+
color: {
|
|
22
|
+
type: StringConstructor;
|
|
23
|
+
};
|
|
24
|
+
}>> & Readonly<{}>, {
|
|
25
|
+
size: number;
|
|
26
|
+
}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
|
|
27
|
+
export default _default;
|
package/es/hooks/index.d.ts
CHANGED
package/es/index.mjs
CHANGED
|
@@ -23,14 +23,17 @@ export { feature, useSysApi } from './packages/api/sys/index.mjs';
|
|
|
23
23
|
export { flowLoading } from './packages/utils/flowLoading.mjs';
|
|
24
24
|
export { formatAxis, formatDate, formatPast, getWeek } from './packages/utils/formatTime.mjs';
|
|
25
25
|
export { gcj02ToBd09, wgs84ToBd09, wgs84ToGcj02 } from './packages/utils/gpsConvertor.mjs';
|
|
26
|
+
export { hasPrivilege, hasRoleCode, isAdmin, isMember, isNormalUser, isSupperAdmin, isTenantAdmin, orgId, orgName, posId, posName, roles, tenantId, userAccount, userEmail, userFriendName, userId, userName, userPhone } from './packages/hooks/useInfo.mjs';
|
|
26
27
|
export { initBackEndControlRoutes, setDynamicViewsModules } from './packages/router/backEnd.mjs';
|
|
27
28
|
export { initFrontEndControlRoutes } from './packages/router/frontEnd.mjs';
|
|
28
29
|
export { judgementIdCard, verifiyNumberInteger, verifyAccount, verifyAndSpace, verifyCarNum, verifyCnAndSpace, verifyEmail, verifyEnAndSpace, verifyFullName, verifyIPAddress, verifyIdCard, verifyNumberCnUppercase, verifyNumberComma, verifyNumberIntegerAndFloat, verifyNumberPercentage, verifyNumberPercentageFloat, verifyPassword, verifyPasswordPowerful, verifyPasswordStrength, verifyPhone, verifyPostalCode, verifyTelPhone, verifyTextColor, verifyUrl } from './packages/utils/toolsValidate.mjs';
|
|
30
|
+
export { loadSysInfo, updateFavicon } from './packages/hooks/sysInfo.mjs';
|
|
29
31
|
export { saulVModel } from './packages/utils/saulVModel.mjs';
|
|
30
32
|
export { setCssCdn, setJsCdn } from './packages/utils/setIconfont.mjs';
|
|
31
33
|
export { signatureByKSort } from './packages/utils/data-signature.mjs';
|
|
32
34
|
export { useApi, useBaseApi } from './packages/api/base/index.mjs';
|
|
33
35
|
export { useChangeColor } from './packages/utils/theme.mjs';
|
|
36
|
+
export { useDateTimeShortCust } from './packages/hooks/dateTimeShortCust.mjs';
|
|
34
37
|
export { useFormRulePresets } from './packages/utils/formRule.mjs';
|
|
35
38
|
export { useKeepALiveNames } from './packages/stores/keepAliveNames.mjs';
|
|
36
39
|
export { useRequestOldRoutes } from './packages/stores/requestOldRoutes.mjs';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const useDateTimeShortCust = () => {
|
|
2
|
+
return [
|
|
3
|
+
{ text: "\u4ECA\u5929", value: /* @__PURE__ */ new Date() },
|
|
4
|
+
{
|
|
5
|
+
text: "\u6628\u5929",
|
|
6
|
+
value: () => {
|
|
7
|
+
const date = /* @__PURE__ */ new Date();
|
|
8
|
+
date.setTime(date.getTime() - 3600 * 1e3 * 24);
|
|
9
|
+
return date;
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
text: "\u4E0A\u5468",
|
|
14
|
+
value: () => {
|
|
15
|
+
const date = /* @__PURE__ */ new Date();
|
|
16
|
+
date.setTime(date.getTime() - 3600 * 1e3 * 24 * 7);
|
|
17
|
+
return date;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { useDateTimeShortCust };
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { debounce } from 'lodash-es';
|
|
2
|
+
import { Local, Session } from '../utils/storage.mjs';
|
|
3
|
+
import { ElMessageBox } from 'element-plus';
|
|
4
|
+
import { accessTokenKey, refreshAccessTokenKey } from '../utils/request.mjs';
|
|
5
|
+
import { useLocale } from './useLocale.mjs';
|
|
6
|
+
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
9
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
10
|
+
let signalR;
|
|
11
|
+
async function loadSignalR() {
|
|
12
|
+
if (!signalR) {
|
|
13
|
+
const module = await import('../utils/signalR.mjs');
|
|
14
|
+
signalR = module.signalR;
|
|
15
|
+
}
|
|
16
|
+
return signalR;
|
|
17
|
+
}
|
|
18
|
+
const { t } = useLocale();
|
|
19
|
+
class IdleTimeoutManager {
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
__publicField(this, "timerId", null);
|
|
22
|
+
__publicField(this, "config");
|
|
23
|
+
__publicField(this, "debouncedReset");
|
|
24
|
+
/** 检查闲置超时时间间隔 */
|
|
25
|
+
__publicField(this, "checkTimeoutInterval", 2 * 1e3);
|
|
26
|
+
__publicField(this, "handleVisibilityChange", () => {
|
|
27
|
+
if (document.visibilityState === "visible") {
|
|
28
|
+
this.setLastActivityTime();
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
this.config = {
|
|
32
|
+
timeout: 30 * 60,
|
|
33
|
+
events: ["mousewheel", "keydown", "click"],
|
|
34
|
+
onTimeout: this.timeOutExec.bind(this),
|
|
35
|
+
debounceInterval: 200,
|
|
36
|
+
...config
|
|
37
|
+
};
|
|
38
|
+
this.debouncedReset = this.config.debounceInterval > 0 ? debounce(this.setLastActivityTime.bind(this), this.config.debounceInterval) : this.setLastActivityTime.bind(this);
|
|
39
|
+
this.init();
|
|
40
|
+
}
|
|
41
|
+
init() {
|
|
42
|
+
this.config.events.forEach((event) => {
|
|
43
|
+
window.addEventListener(event, this.debouncedReset);
|
|
44
|
+
});
|
|
45
|
+
document.addEventListener("visibilitychange", this.handleVisibilityChange);
|
|
46
|
+
this.setLastActivityTime();
|
|
47
|
+
this.updateIdleTimeout(this.config.timeout);
|
|
48
|
+
}
|
|
49
|
+
/** 设置最后活动时间 */
|
|
50
|
+
setLastActivityTime() {
|
|
51
|
+
Local.set("lastActivityTime", (/* @__PURE__ */ new Date()).getTime());
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 更新空闲超时时间
|
|
55
|
+
* @param timeout - 新的超时时间(毫秒)
|
|
56
|
+
*/
|
|
57
|
+
updateIdleTimeout(timeout) {
|
|
58
|
+
this.config.timeout = timeout;
|
|
59
|
+
if (this.config.timeout > 0 && this.timerId == null) {
|
|
60
|
+
this.timerId = window.setInterval(this.checkTimeout.bind(this), this.checkTimeoutInterval);
|
|
61
|
+
} else if (this.config.timeout == 0 && this.timerId != null) {
|
|
62
|
+
window.clearInterval(this.timerId);
|
|
63
|
+
this.timerId = null;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** 检查是否超时 */
|
|
67
|
+
checkTimeout() {
|
|
68
|
+
const currentTime = (/* @__PURE__ */ new Date()).getTime();
|
|
69
|
+
const lastActivityTime = Number(Local.get("lastActivityTime"));
|
|
70
|
+
if (lastActivityTime == 0) return;
|
|
71
|
+
const accessToken = Local.get(accessTokenKey);
|
|
72
|
+
if (!accessToken || accessToken == "invalid_token") return;
|
|
73
|
+
const timeout = this.config.timeout * 1e3;
|
|
74
|
+
if (currentTime - lastActivityTime > timeout) {
|
|
75
|
+
this.destroy();
|
|
76
|
+
this.config.onTimeout();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/** 销毁实例 */
|
|
80
|
+
destroy() {
|
|
81
|
+
this.config.events.forEach((event) => {
|
|
82
|
+
window.removeEventListener(event, this.debouncedReset);
|
|
83
|
+
});
|
|
84
|
+
document.removeEventListener("visibilitychange", this.handleVisibilityChange);
|
|
85
|
+
if (this.timerId !== null) {
|
|
86
|
+
window.clearInterval(this.timerId);
|
|
87
|
+
this.timerId = null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/** 超时时执行 */
|
|
91
|
+
timeOutExec() {
|
|
92
|
+
const appEl = document.getElementById("app");
|
|
93
|
+
appEl == null ? void 0 : appEl.remove();
|
|
94
|
+
loadSignalR().then((signalR2) => {
|
|
95
|
+
signalR2.stop();
|
|
96
|
+
});
|
|
97
|
+
Local.remove(accessTokenKey);
|
|
98
|
+
Local.remove(refreshAccessTokenKey);
|
|
99
|
+
Session.clear();
|
|
100
|
+
ElMessageBox.alert(t("plus.list.idleTimeoutMessage"), t("plus.list.sysMessage"), {
|
|
101
|
+
type: "warning",
|
|
102
|
+
draggable: true,
|
|
103
|
+
callback: () => {
|
|
104
|
+
window.location.reload();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
function initIdleTimeout(config) {
|
|
110
|
+
if (!window.__IDLE_TIMEOUT__) {
|
|
111
|
+
window.__IDLE_TIMEOUT__ = new IdleTimeoutManager(config);
|
|
112
|
+
}
|
|
113
|
+
return window.__IDLE_TIMEOUT__;
|
|
114
|
+
}
|
|
115
|
+
function destroyIdleTimeout() {
|
|
116
|
+
if (window.__IDLE_TIMEOUT__) {
|
|
117
|
+
window.__IDLE_TIMEOUT__.destroy();
|
|
118
|
+
window.__IDLE_TIMEOUT__ = void 0;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function updateIdleTimeout(timeout) {
|
|
122
|
+
if (window.__IDLE_TIMEOUT__) {
|
|
123
|
+
window.__IDLE_TIMEOUT__.updateIdleTimeout(timeout);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export { destroyIdleTimeout, initIdleTimeout, updateIdleTimeout };
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export { buildLocaleContext, buildTranslator, translate, useLocale } from './useLocale.mjs';
|
|
2
2
|
export { auth, authAll, auths, hAuth, hAuthAll, hAuths } from './authFunction.mjs';
|
|
3
3
|
export { useVxeTable } from './useVxeTableOptionsHook.mjs';
|
|
4
|
+
export { loadSysInfo, updateFavicon } from './sysInfo.mjs';
|
|
5
|
+
export { hasPrivilege, hasRoleCode, isAdmin, isMember, isNormalUser, isSupperAdmin, isTenantAdmin, orgId, orgName, posId, posName, roles, tenantId, userAccount, userEmail, userFriendName, userId, userName, userPhone } from './useInfo.mjs';
|
|
6
|
+
export { useDateTimeShortCust } from './dateTimeShortCust.mjs';
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Local } from '../utils/storage.mjs';
|
|
2
|
+
import { storeToRefs } from 'pinia';
|
|
3
|
+
import { useThemeConfig } from '../stores/themeConfig.mjs';
|
|
4
|
+
import img from '../theme-chalk/assets/logo.png.mjs';
|
|
5
|
+
import { updateIdleTimeout } from './idleTimeout.mjs';
|
|
6
|
+
import '../api/index.mjs';
|
|
7
|
+
import { feature } from '../api/sys/index.mjs';
|
|
8
|
+
import { useBaseApi } from '../api/base/index.mjs';
|
|
9
|
+
|
|
10
|
+
const storesThemeConfig = useThemeConfig();
|
|
11
|
+
const { themeConfig } = storeToRefs(storesThemeConfig);
|
|
12
|
+
async function loadSysInfo(tenantid) {
|
|
13
|
+
var _a;
|
|
14
|
+
const [err, res] = await feature(useBaseApi("sysTenant").gcomm(null, "sysInfo/" + Number(tenantid)));
|
|
15
|
+
if (err) {
|
|
16
|
+
themeConfig.value.logoUrl = img;
|
|
17
|
+
Local.remove("themeConfig");
|
|
18
|
+
Local.set("themeConfig", storesThemeConfig.themeConfig);
|
|
19
|
+
return;
|
|
20
|
+
} else {
|
|
21
|
+
if (res.data.type != "success" || res.data.result == null) return;
|
|
22
|
+
const data = res.data.result;
|
|
23
|
+
themeConfig.value.logoUrl = data.logo;
|
|
24
|
+
themeConfig.value.globalTitle = data.title;
|
|
25
|
+
themeConfig.value.globalViceTitle = data.viceTitle;
|
|
26
|
+
themeConfig.value.globalViceTitleMsg = data.viceDesc;
|
|
27
|
+
themeConfig.value.icp = data.icp;
|
|
28
|
+
themeConfig.value.icpUrl = data.icpUrl;
|
|
29
|
+
themeConfig.value.isWatermark = data.watermark != null;
|
|
30
|
+
themeConfig.value.watermarkText = data.watermark;
|
|
31
|
+
themeConfig.value.copyright = data.copyright;
|
|
32
|
+
themeConfig.value.version = data.version;
|
|
33
|
+
themeConfig.value.carouselFiles = data.carouselFiles;
|
|
34
|
+
themeConfig.value.primary = data.themeColor;
|
|
35
|
+
themeConfig.value.layout = data.layout;
|
|
36
|
+
themeConfig.value.animation = data.animation;
|
|
37
|
+
themeConfig.value.secondVer = data.secondVer;
|
|
38
|
+
themeConfig.value.captcha = data.captcha;
|
|
39
|
+
themeConfig.value.forceChangePassword = data.forceChangePassword;
|
|
40
|
+
themeConfig.value.passwordExpirationTime = data.passwordExpirationTime;
|
|
41
|
+
themeConfig.value.i18NSwitch = data.i18NSwitch;
|
|
42
|
+
themeConfig.value.idleTimeout = data.idleTimeout;
|
|
43
|
+
themeConfig.value.onlineNotice = data.onlineNotice;
|
|
44
|
+
themeConfig.value.mobileLogin = data.mobileLogin;
|
|
45
|
+
themeConfig.value.scanLogin = data.scanLogin;
|
|
46
|
+
themeConfig.value.signUp = data.signUp;
|
|
47
|
+
window.__env__.VITE_SM_PUBLIC_KEY = data.publicKey;
|
|
48
|
+
updateFavicon(data.logo);
|
|
49
|
+
updateIdleTimeout((_a = themeConfig.value.idleTimeout) != null ? _a : 0);
|
|
50
|
+
Local.remove("themeConfig");
|
|
51
|
+
Local.set("themeConfig", storesThemeConfig.themeConfig);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const updateFavicon = (url) => {
|
|
55
|
+
const favicon = document.getElementById("favicon");
|
|
56
|
+
favicon.href = url ? url : "data:;base64,=";
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export { loadSysInfo, updateFavicon };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { useUserInfo } from '../stores/userInfo.mjs';
|
|
2
|
+
|
|
3
|
+
const { userInfos } = useUserInfo();
|
|
4
|
+
const isSupperAdmin = () => {
|
|
5
|
+
return (userInfos == null ? void 0 : userInfos.accountType) === 999;
|
|
6
|
+
};
|
|
7
|
+
const isTenantAdmin = () => {
|
|
8
|
+
return (userInfos == null ? void 0 : userInfos.accountType) === 888;
|
|
9
|
+
};
|
|
10
|
+
const isAdmin = () => {
|
|
11
|
+
return isSupperAdmin() || isTenantAdmin();
|
|
12
|
+
};
|
|
13
|
+
const isNormalUser = () => {
|
|
14
|
+
return (userInfos == null ? void 0 : userInfos.accountType) === 777;
|
|
15
|
+
};
|
|
16
|
+
const isMember = () => {
|
|
17
|
+
return (userInfos == null ? void 0 : userInfos.accountType) === 666;
|
|
18
|
+
};
|
|
19
|
+
const userEmail = () => {
|
|
20
|
+
return userInfos == null ? void 0 : userInfos.email;
|
|
21
|
+
};
|
|
22
|
+
const userName = () => {
|
|
23
|
+
return userInfos == null ? void 0 : userInfos.userName;
|
|
24
|
+
};
|
|
25
|
+
const userFriendName = () => (userInfos == null ? void 0 : userInfos.realName) ? userInfos == null ? void 0 : userInfos.realName : (userInfos == null ? void 0 : userInfos.account) ? userInfos == null ? void 0 : userInfos.account : userInfos == null ? void 0 : userInfos.email;
|
|
26
|
+
const tenantId = () => {
|
|
27
|
+
return userInfos == null ? void 0 : userInfos.tenantId;
|
|
28
|
+
};
|
|
29
|
+
const userAccount = () => userInfos == null ? void 0 : userInfos.account;
|
|
30
|
+
const userPhone = () => userInfos == null ? void 0 : userInfos.phone;
|
|
31
|
+
const userId = () => userInfos == null ? void 0 : userInfos.id;
|
|
32
|
+
const orgId = () => userInfos == null ? void 0 : userInfos.orgId;
|
|
33
|
+
const orgName = () => userInfos == null ? void 0 : userInfos.orgName;
|
|
34
|
+
const posId = () => userInfos == null ? void 0 : userInfos.posId;
|
|
35
|
+
const posName = () => userInfos == null ? void 0 : userInfos.posName;
|
|
36
|
+
const roles = () => userInfos == null ? void 0 : userInfos.roles;
|
|
37
|
+
const hasRoleCode = (code) => {
|
|
38
|
+
return userInfos.roles.find((u) => u.code === code) ? true : false;
|
|
39
|
+
};
|
|
40
|
+
const hasPrivilege = (privilege) => {
|
|
41
|
+
return userInfos.authApiList.includes(privilege);
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
export { hasPrivilege, hasRoleCode, isAdmin, isMember, isNormalUser, isSupperAdmin, isTenantAdmin, orgId, orgName, posId, posName, roles, tenantId, userAccount, userEmail, userFriendName, userId, userName, userPhone };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFwmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjUtMDQtMDRUMDE6MjM6MzArMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDY0Mzc1NWEtZTM4ZC1hMzQxLWFmODgtNmFhY2FmYmI4ZDY0IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTdlYzEzMTgtNmY3Mi1mYjQ4LWI3YjUtMzg2MDJkYWY0NzBhIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MjIxZmJhNjktOWRkMi03MDQxLWE0N2UtZTk2MGEwMGFmZDA2IiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6MjIxZmJhNjktOWRkMi03MDQxLWE0N2UtZTk2MGEwMGFmZDA2IiBzdEV2dDp3aGVuPSIyMDI1LTA0LTA0VDAxOjIzOjMwKzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIi8+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0NjQzNzU1YS1lMzhkLWEzNDEtYWY4OC02YWFjYWZiYjhkNjQiIHN0RXZ0OndoZW49IjIwMjUtMDQtMDRUMDE6MjM6MzArMDg6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ekvpIgAADMZJREFUeJztW3twVOUVv3cf2YQQwivFBFqUtlIdrG9HSqmDM2Jbh1ItM44MEzRRMIqCMIMyKahFKiCgtIbGUl46kVAIgRiCYIBAAiRAAsnm/d7dZN937z7v+36nf5DVZffefdwEdCpn5vyx9/vu+c75fd893/nO+RYHAOzHTqrvW4EfAt0GAbsNAoZht0HAMOw2CBiG/YhAWHvKrP601pEi2QgA/9e8+FAfvqfBmW7384UGN7vm5VIDHt5Hc4snBFt5fEA1abRWk56s1mpUuAoAw0QEyMeJvC0gCFuenoxGaqx/X3aOLvjT1OOpWvy3GIZh3QS7VBAl4qKbPRNfNrkmdjrZXIpD9QiAhTiIEVC70c3ll7a6s5YejZy5WFzSQmZSPKoPl9vlZJa8eKg/Qh4ONyFiLGokx8+amvrSpFTtQp0Gv5sVodMe4A+Y3NwpghJsjAAsjuPYGJ0qbfIY7X1T0pNeGJesfj5cDitiHQyPOkhGOKe30QfL2tymnX+eKqlwzmEDvvD+8dNn3JHy8vgUzbNJKmxaeJ9ugl26ocq6c89fwmSM5Kzvu0qM7SbYPIISi64MUk/uqHOkrjhmUsXz7kslffjaykH1wWZyUh/JrgqfxUsDgSek3lt8qB8vbnJltDuYbF5ElmgrTG4ljIjxq78eUF8eDMzpdbHLz/X5H9xaY9MNR96yciO+7yoxtn4w8FSbg1l0qJm8I+dwpPIfn7clX7VQv49m+LBByD3cj3941pK0tcamy/9mUC3Xr8FMze1yMks2n7MljQSoofyqhE/YVmNL7nGxy+L1McMC4fNrxDh7QCgMFUQLSH/NQj2zZZizrYQLau2pNj9fkKjxwwIhyCe7vdNDhSEAFgGwjoCw66CenHSzjf+y0TXR7OU3KTU+FISckmH4hF31zjFSggMcqtXb6OfWVZplPxelvLvemd5qZxYGOFQ7HOMBADgRDF93eX8hNU5CSu1tIMYiJD0bRjeXv6POnjoSxm+tsekuGgMzfaxYNdzZb3Mwiw7oyYw1J+V9WsIKnun13cfwqF1qQEZA7cVNrgylxr932qy5aAzMpLjIQCdeEhAQjoCwq8FMzS1ucmUs+8oYM9hSpOxVMy27LSEA9lSP995E5K2sGFA1Wan5nIAMSo2neaQnKKGobiAw++PztuRExo+r02tlRnxPA5Ee/P1KqQFvttEL5BTiEViuDAaejCV3baVZ3eZgFik1HABAROAb8HLrP79KjIs21nunzZoCmc81LhDK2913dhNsXuiz9WcsWoISiuSUYwXoqejwTJOSt63Gltxooef5WFQlICCUGE9QQtHJbu/0tyrkI9I3vjKqqnq99xtIbg0joPYmKz1/sZIt8qNqq85FC8Wne70zwtv+cdGeEk1RTgTDtpClubXGpjtv8D9GUEKRiMCXqOE0j/SXBwNzPqiyaOX0XVlhUhU3uTJqTYFZvSS7PHScTieTqwiEBjM11+rnt78j410vGv0zoylu8nDr/qsnf1LaSma5aKE4UcM5EQydTia3pIXMfO+UWSOn54Yqi/aA3pXRR7Kr5HaUTieTm30wQRDeLDepXLRQfKzDc5dcn9zD/biHEY8lalw0EhAQBCUUNdvoBYdbySw5D59T0o/vvOxM63NFHrikqNPJ5GYnuhKq+/0PAwB8eM4a9UzwxTViHCNIb5uJkIjA5+fE6kYrNS9aWL673pk+4OHWJypfEQgEJRSRtFAidYgJZ6OHy1dqPAJgTR5u3ZCPkZRf1Oia0E2weT5WrOJEULSVKgKBFVDP5YHAnGh9gry+yqI1+/hNiShl8/MFB5vJSXll0st9R5099XSvd0a367rxSgwPpS6CWSJ1JJc1anO1NQkhYOONAL9sck0kaaEkliI0j/Rn+3wP7KhzpC45ErnCVlSYVDuvONPqBgKzvax4crhhc5AQAHuu3/eglO6yidZHp4yajuNY0qCX88ZKp+28QqQtemD8iRQN/pBUe4BDNfaAcGjAy59rtlGdeY9lBH535+gb+vztjEU7Z1rajPefzPpgjE71x1hjRiPAMI7i0SV7QDjkYcQOLyNaTR7OeMHkJ2dPHS3xgszMkrRYAgCw5uRA1NPhf6440+TQ93Oo2kEJu462uafklkYuw9fLDfipHu+98aygaCQi8FE8qvexYhVJCyXtDiZ7f5NrotxnFs7RGgEAIJpT/OSCLVlKKYSANbq5/HdORAK44phJdazDc5eDEnYNx/AgUTyqvzQQeGLjOWtStkSuYERAyCuTBmHV8QGV2RvpCHtc7LKNElvqjjp7apONmu+khL2MgNqVfOsiAp8zIOyt6PBM21xtTXqxpE/W6PzKQfW+q8TYWlNglsXLb3n7hLKjNAAArJaYTQDAjrS6p4QrearHe29uWIVnU7U16YLR/7iSaFEE8LU56EUVnZ5pO+rsqSuPR89cF9TaU8/2+R5otFLzjB4uP9SxbqmxysYdkg+zryMMAACbqyNndckRA95io58P9kEA7OleX8TZ4mAzOSmRrc0eEArbnUz2BaP/8ZIWMvOjaqvulSPxL3GLj98iJ3uThB1RQYCQlfDFtcgj6tYam87q47cDXP/+e0l2eThIrXZmYaJL/niXZ5rcyovFS4704/YAXygpGAA2RYl6Y1al7xqn+3n4szSdOkmnwadgGIY5KWHPv+oc/wy2rT1lVm+cO3n/PRm6IhzDkhLZ2sxe3rlp7mQxkXeCNHWcTpOkwjPl2kUA2VJbTBCmT0zOe7XMiIc+YwRREAHzYRiGdRHs7s1DRdT3z1g0Sx/NyB+XEllSi4cWPzihb2O1LSHggvSbn6b+KkWrmiHXTgtIttArCwInQi+GYdjEUeqcKelJNwRVA16eo3nU62FR2TmD/1rw+R/uTp85ZYz2/dC+CDC/CJgLMIyLZYgax8Yv/PX4VfmVZnWsvuH0UNaojUlqPKL+iGEYxgjQ7KGRfNFV7jtpttELggmJkhYyM7y9xuB/xOjm8oO/Cy85UkMzTSICX4eDeemDKot223lb8jUL9Uy8vqHZRi/IPiS//YXz0qNGXE4WAECLnX4+2vuyDbvriXROvJ747HWxy1eH7bOfXLAnXzD6Hw/+1lvp54KDMgJqbzBTc986NvDtlvZRtU0XLwgCAuLSAPVEvCAcafNEbNehdKiFvEMRCMvKTXho6rui0xuRL9xw9rs0l93/nWcemvUIme0OJjteICge1e+7SoyNBwSaR/posjZEScdFBQEAsNCMUS/JLn+jXD5YCUaPnU4md6VM8nN5hUklQvy5RU4EQ/gKDOeiRteEWHKkcghxg9BJsLlBQQiAvWahJWcYALChYAk+u+wcHU1mo5Wel0iG2ernt8vJWltpVvtZVB3tfYObWxNNn5ggbL9oT3EGhL1BgTSP9J/WOkZJ9f1rpVmtt9LPrf46+szllRnxRE+NcnmAodqGLIkIfIWXHDFLgzG/t/AiC0kLJa/LJD63xVn5qTUFZiUaTYbvUJU93ntipe2HCrkx9YnZ4YCezOBFuOEaTKeTyc2RuAoXL799YlDdT7KrEwHBRQnFO6/nLrDDLe6sWGcSTgRDnSkwe0RAAABsaCu8gVrtzMLXvjIpBqKkxZ2ZCAgAAD5WrGowU3Pj8SmDXu7viyXyiYpBWF9l0bIC9IQPZPJw6z5SeGMlp7QfT+S+UZDiqVwxAmovbXVnxatL3EoP7dk3EAJgLT5+y/4m10QlQAwdb0ecqg3+hxPRIyGlGy3UPCmHxotgqezx3RMteyPH9WbqqZEEoItglqyIUqQdNgh5ZUbc5hcK5BRwUUJxeYfnzmXl8fuK1ScG1TyCqPcP4yUfK1atjxEdDhsEAMC2X3DcEDtIkYjAZ/Jw63ZccqS+ejR2xtfgZtcMt77ACtBTeMmp6LqQomu9n1x0JL9w37hNk0Zr3ozWTwTMJQLmRggoTgSjjxUbnJRQSwvIpcbxpPRk9bSMVO3TY5NVzyaagAklmoeG/XpyTs5D42PWSCRJCXIAgK35ZlDd6WS+DavjJRGBjxfBIiAgRqK6ZA/whduj1DDjYcUvwpCPqDH4HxmuIUqp1U4vfPfU8K8ODuvlIB/QuzIsPn6LktsnSoighKITXd5f5hxWHrWG8oiAAHC9gHvNQj3jYcVjNwMMBMD6OVTdRbBL4jkUfS8gBPnd0xZ1m4NZNNJAmDzcuuDZYaR5xAWG8meXnaP7SG6VkhtqCIC1+fmCYr0r40WFNcZ4+ab88yWcckqNeFaaVpWZptFNStOmTUjRZKQnqzNTNKoMHMdUjABODyNYSFp02AOC1+LjGbOXEz+b/7Nb8kfuWwKCHOWUGnAcw7Fdz94aY+XoewXhh0I/mj+HRqPbIGAY9j88X5w73RopXgAAAABJRU5ErkJggg==";
|
|
2
|
+
|
|
3
|
+
export { img as default };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as SignalR from '@microsoft/signalr';
|
|
2
|
+
import { ElNotification } from 'element-plus';
|
|
3
|
+
import { getToken } from './request.mjs';
|
|
4
|
+
|
|
5
|
+
const connection = new SignalR.HubConnectionBuilder().configureLogging(SignalR.LogLevel.Warning).withUrl(`${window.__env__.VITE_API_URL}/hubs/onlineUser?token=${getToken()}`, { transport: SignalR.HttpTransportType.WebSockets, skipNegotiation: true }).withAutomaticReconnect({
|
|
6
|
+
nextRetryDelayInMilliseconds: () => {
|
|
7
|
+
return 5e3;
|
|
8
|
+
}
|
|
9
|
+
}).build();
|
|
10
|
+
connection.keepAliveIntervalInMilliseconds = 15 * 1e3;
|
|
11
|
+
connection.serverTimeoutInMilliseconds = 30 * 1e3;
|
|
12
|
+
connection.start().then(() => {
|
|
13
|
+
});
|
|
14
|
+
connection.onclose(async () => {
|
|
15
|
+
});
|
|
16
|
+
connection.onreconnecting(() => {
|
|
17
|
+
ElNotification({
|
|
18
|
+
title: "\u63D0\u793A",
|
|
19
|
+
message: "\u8FDE\u63A5\u5DF2\u65AD\u5F00 >>>>>",
|
|
20
|
+
type: "error",
|
|
21
|
+
position: "bottom-right"
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
connection.onreconnected(() => {
|
|
25
|
+
ElNotification({
|
|
26
|
+
title: "\u63D0\u793A",
|
|
27
|
+
message: "\u8FDE\u63A5\u5DF2\u6062\u590D >>>>>",
|
|
28
|
+
type: "success",
|
|
29
|
+
position: "bottom-right"
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
connection.on("OnlineUserList", () => {
|
|
33
|
+
});
|
|
34
|
+
connection.on("ReceiveMessage", (message) => {
|
|
35
|
+
var tmpMsg = `<div style="white-space: pre-wrap;">${message.message}<div><br/>`;
|
|
36
|
+
tmpMsg += `<p style="color:#808080; font-size:10px;float:right"> ${message.sendUserName} ${message.sendTime}<p>`;
|
|
37
|
+
ElNotification({
|
|
38
|
+
title: `${message.title}`,
|
|
39
|
+
message: tmpMsg,
|
|
40
|
+
type: message.messageType.toString().toLowerCase(),
|
|
41
|
+
position: "top-right",
|
|
42
|
+
dangerouslyUseHTMLString: true,
|
|
43
|
+
duration: 5e3
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export { connection as signalR };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 判断两数组字符串是否相同(用于按钮权限验证),数组字符串中存在相同时会自动去重(按钮权限标识不会重复)
|
|
3
|
+
* @param news 新数据
|
|
4
|
+
* @param old 源数据
|
|
5
|
+
* @returns 两数组相同返回 `true`,反之则反
|
|
6
|
+
*/
|
|
7
|
+
export declare function judgementSameArr(newArr: unknown[] | string[], oldArr: string[]): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* 判断两个对象是否相同
|
|
10
|
+
* @param a 要比较的对象一
|
|
11
|
+
* @param b 要比较的对象二
|
|
12
|
+
* @returns 相同返回 true,反之则反
|
|
13
|
+
*/
|
|
14
|
+
export declare function isObjectValueEqual<T extends Record<string, any>>(a: T, b: T): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* 数组、数组对象去重
|
|
17
|
+
* 支持普通数组和对象数组去重,类型安全,且兼容原有所有调用方式
|
|
18
|
+
* @param arr 数组内容
|
|
19
|
+
* @param attr 需要去重的键值(数组对象)
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export declare function removeDuplicate<T>(arr: T[], attr?: string): T[];
|
|
23
|
+
export declare const clone: <T>(value: T) => T;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*通过监听当前页面的JS的SRC来判断当前网页是否有更新
|
|
3
|
+
*使用方法 main.js import checkUpdate from "/@/utils/auto-update";
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* 定时器定时检测是否更新,有更新则执行回调函数
|
|
7
|
+
* @param callbackFn
|
|
8
|
+
* @param interval
|
|
9
|
+
*/
|
|
10
|
+
declare function checkUpdateInterval(callbackFn: any, interval?: number): void;
|
|
11
|
+
export default checkUpdateInterval;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description: base64 to blob
|
|
3
|
+
*/
|
|
4
|
+
export declare function dataURLtoBlob(base64Buf: string): Blob;
|
|
5
|
+
/**
|
|
6
|
+
* img url to base64
|
|
7
|
+
* @param url
|
|
8
|
+
*/
|
|
9
|
+
export declare function urlToBase64(url: string, mineType?: string): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* File转Base64
|
|
12
|
+
* @param file
|
|
13
|
+
*/
|
|
14
|
+
export declare function fileToBase64(file: Blob): Promise<unknown>;
|
|
15
|
+
/**
|
|
16
|
+
* Base64转File
|
|
17
|
+
* @param dataURL {String} base64
|
|
18
|
+
* @param fileName {String} 文件名
|
|
19
|
+
* @param mimeType {String} [可选]文件类型,默认为base64中的类型
|
|
20
|
+
* @returns {File}
|
|
21
|
+
*/
|
|
22
|
+
export declare function base64ToFile(dataURL: string, fileName: string, mimeType?: null): File;
|
|
23
|
+
/**
|
|
24
|
+
* Blob转File
|
|
25
|
+
* @param blob {Blob} blob
|
|
26
|
+
* @param fileName {String} 文件名
|
|
27
|
+
* @param mimeType {String} 文件类型
|
|
28
|
+
* @return {File}
|
|
29
|
+
*/
|
|
30
|
+
export declare function blobToFile(blob: Blob, fileName: string, mimeType?: string): File;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成 KSort 签名
|
|
3
|
+
* @param appId APP_ID
|
|
4
|
+
* @param appKey APP_KEY
|
|
5
|
+
* @param command 命令
|
|
6
|
+
* @param data 数据
|
|
7
|
+
* @param timestamp 时间戳(可选)
|
|
8
|
+
* @returns
|
|
9
|
+
*/
|
|
10
|
+
export declare function signatureByKSort(appId: string, appKey: string, command: string, data: any, timestamp?: number | null): {
|
|
11
|
+
app_id: string;
|
|
12
|
+
app_key: string;
|
|
13
|
+
command: string;
|
|
14
|
+
data: string;
|
|
15
|
+
timestamp: number;
|
|
16
|
+
signature: any;
|
|
17
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { AxiosResponseHeaders, RawAxiosResponseHeaders } from 'axios';
|
|
2
|
+
/**
|
|
3
|
+
* Download online pictures
|
|
4
|
+
* @param url
|
|
5
|
+
* @param filename
|
|
6
|
+
* @param mime
|
|
7
|
+
* @param bom
|
|
8
|
+
*/
|
|
9
|
+
export declare function downloadByOnlineUrl(url: string, filename: string, mime?: string, bom?: BlobPart): void;
|
|
10
|
+
/**
|
|
11
|
+
* Download pictures based on base64
|
|
12
|
+
* @param buf
|
|
13
|
+
* @param filename
|
|
14
|
+
* @param mime
|
|
15
|
+
* @param bom
|
|
16
|
+
*/
|
|
17
|
+
export declare function downloadByBase64(buf: string, filename: string, mime?: string, bom?: BlobPart): void;
|
|
18
|
+
/**
|
|
19
|
+
* Download according to the background interface file stream
|
|
20
|
+
* @param {*} data
|
|
21
|
+
* @param {*} filename
|
|
22
|
+
* @param {*} mime
|
|
23
|
+
* @param {*} bom
|
|
24
|
+
*/
|
|
25
|
+
export declare function downloadByData(data: BlobPart, filename: string, mime?: string, bom?: BlobPart): void;
|
|
26
|
+
/**
|
|
27
|
+
* Download file according to file address
|
|
28
|
+
* @param {*} sUrl
|
|
29
|
+
*/
|
|
30
|
+
export declare function downloadByUrl({ url, target, fileName }: {
|
|
31
|
+
url: string;
|
|
32
|
+
target?: string;
|
|
33
|
+
fileName?: string;
|
|
34
|
+
}): boolean;
|
|
35
|
+
export declare function openWindow(url: string, opt?: {
|
|
36
|
+
target?: string | string;
|
|
37
|
+
noopener?: boolean;
|
|
38
|
+
noreferrer?: boolean;
|
|
39
|
+
}): void;
|
|
40
|
+
export declare function getFileName(headers: RawAxiosResponseHeaders | AxiosResponseHeaders): any;
|
|
41
|
+
/**
|
|
42
|
+
* 文件流下载
|
|
43
|
+
* @param res
|
|
44
|
+
* @param fileName 文件名
|
|
45
|
+
*/
|
|
46
|
+
export declare function downloadStreamFile(res: any, fileName?: string | undefined): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { EmptyObjectType } from 'fmdeui-fmui/es/types';
|
|
2
|
+
/**
|
|
3
|
+
* @description:
|
|
4
|
+
* @param {Object} json 服务端发过来的数据
|
|
5
|
+
* @param {String} name 导出Excel文件名字
|
|
6
|
+
|
|
7
|
+
* @param {String} titleArr 导出Excel表头
|
|
8
|
+
|
|
9
|
+
* @param {String} sheetName 导出sheetName名字
|
|
10
|
+
* @return:
|
|
11
|
+
**/
|
|
12
|
+
export declare function exportExcel(jsonarr: Array<EmptyObjectType>, name: string, header: Array<EmptyObjectType>, sheetName: string): void;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Component, Ref } from 'vue';
|
|
2
|
+
import { LoadingOptions } from 'element-plus/es/components/loading/src/types';
|
|
3
|
+
interface LoadingController {
|
|
4
|
+
step: (text: string | Ref<string>) => LoadingController;
|
|
5
|
+
end: () => void;
|
|
6
|
+
}
|
|
7
|
+
type CustomLoadingOptions = Omit<LoadingOptions, 'text'> & {
|
|
8
|
+
text?: string | Ref<string>;
|
|
9
|
+
spinner?: string | Component;
|
|
10
|
+
};
|
|
11
|
+
declare class FlowLoadingManager {
|
|
12
|
+
private instance;
|
|
13
|
+
start(options?: string | Ref<string> | CustomLoadingOptions): LoadingController;
|
|
14
|
+
private normalizeOptions;
|
|
15
|
+
private validateConfig;
|
|
16
|
+
private createController;
|
|
17
|
+
}
|
|
18
|
+
export declare const flowLoading: FlowLoadingManager;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const fontAwesomeClassList: Array<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const iconfonntClassList: Array<string>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FormItemRule } from 'element-plus';
|
|
2
|
+
import { Ref } from 'vue';
|
|
3
|
+
import { Arrayable } from 'element-plus/es/utils';
|
|
4
|
+
export declare function useFormRulePresets(): {
|
|
5
|
+
required: (label?: string, trigger?: FormItemRule["trigger"]) => FormItemRule;
|
|
6
|
+
requiredIf: (required?: boolean, label?: string, trigger?: FormItemRule["trigger"]) => FormItemRule;
|
|
7
|
+
validatorIf: (shouldError: () => boolean, formRef?: Ref<any>, label?: string) => {
|
|
8
|
+
validator: (_: any, __: any, callback: (error?: Error) => void) => void;
|
|
9
|
+
trigger: readonly ["blur", "change"];
|
|
10
|
+
};
|
|
11
|
+
maxLen: (len: number, label?: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
12
|
+
minLen: (len: number, label?: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
13
|
+
pattern: (re: RegExp, msg: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
14
|
+
validator: (fn: (value: any) => true | string | Promise<true | string>, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
15
|
+
phone: () => FormItemRule;
|
|
16
|
+
idCard: () => FormItemRule;
|
|
17
|
+
email: () => FormItemRule;
|
|
18
|
+
digits: (label?: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
19
|
+
intRange: (min: number, max: number, label?: string) => FormItemRule;
|
|
20
|
+
confirmSame: (getOther: () => any, label?: string) => FormItemRule;
|
|
21
|
+
dateAfterToday: (label?: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
22
|
+
dateBeforeToday: (label?: string, trigger?: Arrayable<string> | undefined) => FormItemRule;
|
|
23
|
+
numberPrecision: (maxIntDigits: number | null, maxFracDigits: number | null, label?: string) => FormItemRule;
|
|
24
|
+
validateRequired: (value: any, fieldName?: string) => boolean;
|
|
25
|
+
validateNumber: (value: any, fieldName?: string) => boolean;
|
|
26
|
+
validateIntRange: (value: any, min: number, max: number, fieldName?: string) => boolean;
|
|
27
|
+
validateChinese: (value: any, fieldName?: string) => boolean;
|
|
28
|
+
validateLength: (value: any, maxLength: number, fieldName?: string) => boolean;
|
|
29
|
+
validateEmail: (value: any, fieldName?: string) => boolean;
|
|
30
|
+
validatePhone: (value: any, fieldName?: string) => boolean;
|
|
31
|
+
validateIdCard: (value: any, fieldName?: string) => boolean;
|
|
32
|
+
validatePattern: (value: any, pattern: RegExp, message: string) => boolean;
|
|
33
|
+
validateMultiple: (value: any, validators: Array<(value: any) => boolean>) => boolean;
|
|
34
|
+
validateField: (value: any, type: string, fieldName: string, options?: any) => boolean;
|
|
35
|
+
validateDecimalPrecision: (value: any, maxIntDigits: number, maxFracDigits: number, fieldName?: string) => boolean;
|
|
36
|
+
};
|