@fmdeui/fmui 1.0.6 → 1.0.8

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.
Files changed (52) hide show
  1. package/es/components/chart/index.d.ts +1 -1
  2. package/es/components/chart/src/index.vue.d.ts +1 -1
  3. package/es/components/index.d.ts +1 -0
  4. package/es/components/svgIcon/index.d.ts +26 -0
  5. package/es/components/svgIcon/index.vue.d.ts +27 -0
  6. package/es/hooks/commonFunction.d.ts +24 -0
  7. package/es/hooks/index.d.ts +5 -0
  8. package/es/index.d.ts +3 -0
  9. package/es/index.mjs +6 -1
  10. package/es/packages/hooks/commonFunction.mjs +182 -0
  11. package/es/packages/hooks/dateTimeShortCust.mjs +23 -0
  12. package/es/packages/hooks/idleTimeout.mjs +127 -0
  13. package/es/packages/hooks/index.mjs +4 -0
  14. package/es/packages/hooks/sysInfo.mjs +59 -0
  15. package/es/packages/hooks/useInfo.mjs +44 -0
  16. package/es/packages/theme-chalk/assets/logo.png.mjs +3 -0
  17. package/es/packages/utils/signalR.mjs +47 -0
  18. package/es/types/layout/index.d.ts +47 -1
  19. package/es/types/pinia/index.d.ts +1 -0
  20. package/index.js +329 -2
  21. package/index.min.js +4 -4
  22. package/index.min.mjs +4 -4
  23. package/index.mjs +307 -5
  24. package/lib/components/chart/index.d.ts +1 -1
  25. package/lib/components/chart/src/index.vue.d.ts +1 -1
  26. package/lib/components/index.d.ts +1 -0
  27. package/lib/components/svgIcon/index.d.ts +26 -0
  28. package/lib/components/svgIcon/index.vue.d.ts +27 -0
  29. package/lib/hooks/commonFunction.d.ts +24 -0
  30. package/lib/hooks/index.d.ts +5 -0
  31. package/lib/index.d.ts +3 -0
  32. package/lib/index.js +33 -3
  33. package/lib/packages/hooks/commonFunction.js +186 -0
  34. package/lib/packages/hooks/dateTimeShortCust.js +25 -0
  35. package/lib/packages/hooks/idleTimeout.js +131 -0
  36. package/lib/packages/hooks/index.js +27 -0
  37. package/lib/packages/hooks/sysInfo.js +62 -0
  38. package/lib/packages/hooks/useInfo.js +64 -0
  39. package/lib/packages/theme-chalk/assets/logo.png.js +7 -0
  40. package/lib/packages/utils/signalR.js +68 -0
  41. package/lib/types/layout/index.d.ts +47 -1
  42. package/lib/types/pinia/index.d.ts +1 -0
  43. package/locale/en.js +1 -1
  44. package/locale/en.min.js +1 -1
  45. package/locale/en.min.mjs +1 -1
  46. package/locale/en.mjs +1 -1
  47. package/locale/zh-cn.js +1 -1
  48. package/locale/zh-cn.min.js +1 -1
  49. package/locale/zh-cn.min.mjs +1 -1
  50. package/locale/zh-cn.mjs +1 -1
  51. package/package.json +1 -1
  52. /package/lib/{component.css → version.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>;
@@ -7,3 +7,4 @@ export * from './select';
7
7
  export * from './select-table';
8
8
  export * from './query-condition';
9
9
  export * from './form';
10
+ export * from './svgIcon';
@@ -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;
@@ -0,0 +1,24 @@
1
+ import { EmptyArrayType } from 'fmdeui-fmui/es/types';
2
+ import { MessageHandler } from 'element-plus';
3
+ export default function (): {
4
+ percentFormat: (row: EmptyArrayType, column: number, cellValue: string) => string;
5
+ dateFormatYMD: (row: EmptyArrayType, column: number, cellValue: string) => string;
6
+ dateFormatYMDHMS: (row: EmptyArrayType, column: number, cellValue: string) => string;
7
+ dateFormatHMS: (row: EmptyArrayType, column: number, cellValue: string) => string;
8
+ scaleFormat: (value?: string, scale?: number) => string;
9
+ scale2Format: (value?: string) => string;
10
+ groupSeparator: (value: number, minimumFractionDigits?: number) => string;
11
+ copyText: (text: string) => Promise<unknown>;
12
+ removeHtmlSub: (value: string) => string;
13
+ removeHtml: (value: string) => string;
14
+ getEnumDesc: (key: any, lstEnum: any) => any;
15
+ appendQueryParams: (url: string, params: {
16
+ [key: string]: any;
17
+ }) => string;
18
+ getNameAbbr: (text: string, callback?: (abbr: any) => void) => Promise<any> | MessageHandler | undefined;
19
+ handleConditionalClear: (condition: boolean, fieldValue: any, clearValue?: any) => any;
20
+ getTimeRangePickerShortcuts: () => {
21
+ text: string;
22
+ value: () => Date[];
23
+ }[];
24
+ };
@@ -1,3 +1,8 @@
1
+ import { default as commonFunction } from './commonFunction';
1
2
  export * from './useLocale';
2
3
  export * from './authFunction';
3
4
  export * from './useVxeTableOptionsHook';
5
+ export * from './sysInfo';
6
+ export * from './useInfo';
7
+ export * from './dateTimeShortCust';
8
+ export { commonFunction };
package/es/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  import { default as installer } from './defaults';
2
+ import { default as mittBus } from './utils/mitt';
3
+ import { default as setIntroduction } from './utils/setIconfont';
2
4
  import { App } from 'vue';
5
+ export { mittBus, setIntroduction };
3
6
  export * from './types';
4
7
  export * from './api';
5
8
  export * from './utils';
package/es/index.mjs CHANGED
@@ -1,4 +1,6 @@
1
1
  import installer from './defaults.mjs';
2
+ export { default as mittBus } from './packages/utils/mitt.mjs';
3
+ export { setCssCdn, default as setIntroduction, setJsCdn } from './packages/utils/setIconfont.mjs';
2
4
  import './packages/types/index.mjs';
3
5
  export { AccountTypeEnum, HttpMethodEnum, JobCreateTypeEnum } from './packages/api/index.mjs';
4
6
  import './packages/utils/index.mjs';
@@ -15,6 +17,7 @@ export { auth, authAll, auths, hAuth, hAuthAll, hAuths } from './packages/hooks/
15
17
  export { base64ToFile, blobToFile, dataURLtoBlob, fileToBase64, urlToBase64 } from './packages/utils/base64Conver.mjs';
16
18
  export { buildLocaleContext, buildTranslator, translate, useLocale } from './packages/hooks/useLocale.mjs';
17
19
  export { clone, isObjectValueEqual, judgementSameArr, removeDuplicate } from './packages/utils/arrayOperation.mjs';
20
+ export { default as commonFunction } from './packages/hooks/commonFunction.mjs';
18
21
  export { configureRoutes, setPathPrefix } from './packages/router/route.mjs';
19
22
  export { downloadByBase64, downloadByData, downloadByOnlineUrl, downloadByUrl, downloadStreamFile, getFileName, openWindow } from './packages/utils/download.mjs';
20
23
  export { default as en } from './packages/locale/lang/en.mjs';
@@ -23,14 +26,16 @@ export { feature, useSysApi } from './packages/api/sys/index.mjs';
23
26
  export { flowLoading } from './packages/utils/flowLoading.mjs';
24
27
  export { formatAxis, formatDate, formatPast, getWeek } from './packages/utils/formatTime.mjs';
25
28
  export { gcj02ToBd09, wgs84ToBd09, wgs84ToGcj02 } from './packages/utils/gpsConvertor.mjs';
29
+ 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
30
  export { initBackEndControlRoutes, setDynamicViewsModules } from './packages/router/backEnd.mjs';
27
31
  export { initFrontEndControlRoutes } from './packages/router/frontEnd.mjs';
28
32
  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';
33
+ export { loadSysInfo, updateFavicon } from './packages/hooks/sysInfo.mjs';
29
34
  export { saulVModel } from './packages/utils/saulVModel.mjs';
30
- export { setCssCdn, setJsCdn } from './packages/utils/setIconfont.mjs';
31
35
  export { signatureByKSort } from './packages/utils/data-signature.mjs';
32
36
  export { useApi, useBaseApi } from './packages/api/base/index.mjs';
33
37
  export { useChangeColor } from './packages/utils/theme.mjs';
38
+ export { useDateTimeShortCust } from './packages/hooks/dateTimeShortCust.mjs';
34
39
  export { useFormRulePresets } from './packages/utils/formRule.mjs';
35
40
  export { useKeepALiveNames } from './packages/stores/keepAliveNames.mjs';
36
41
  export { useRequestOldRoutes } from './packages/stores/requestOldRoutes.mjs';
@@ -0,0 +1,182 @@
1
+ import { useClipboard } from '@vueuse/core';
2
+ import { ElMessage } from 'element-plus';
3
+ import { useI18n } from 'vue-i18n';
4
+ import '../utils/index.mjs';
5
+ import '../stores/index.mjs';
6
+ import '../api/index.mjs';
7
+ import { useThemeConfig } from '../stores/themeConfig.mjs';
8
+ import { formatDate } from '../utils/formatTime.mjs';
9
+ import { useBaseApi } from '../api/base/index.mjs';
10
+
11
+ const themeStore = useThemeConfig();
12
+ function commonFunction() {
13
+ const { t } = useI18n();
14
+ const { copy, isSupported } = useClipboard();
15
+ const percentFormat = (row, column, cellValue) => {
16
+ return cellValue ? `${cellValue}%` : "-";
17
+ };
18
+ const dateFormatYMD = (row, column, cellValue) => {
19
+ if (!cellValue) return "-";
20
+ return formatDate(new Date(cellValue), "YYYY-mm-dd");
21
+ };
22
+ const dateFormatYMDHMS = (row, column, cellValue) => {
23
+ if (!cellValue) return "-";
24
+ return formatDate(new Date(cellValue), "YYYY-mm-dd HH:MM:SS");
25
+ };
26
+ const dateFormatHMS = (row, column, cellValue) => {
27
+ if (!cellValue) return "-";
28
+ let time = 0;
29
+ if (typeof row === "number") time = row;
30
+ if (typeof cellValue === "number") time = cellValue;
31
+ return formatDate(new Date(time * 1e3), "HH:MM:SS");
32
+ };
33
+ const scaleFormat = (value = "0", scale = 4) => {
34
+ return Number.parseFloat(value).toFixed(scale);
35
+ };
36
+ const scale2Format = (value = "0") => {
37
+ return Number.parseFloat(value).toFixed(2);
38
+ };
39
+ const groupSeparator = (value, minimumFractionDigits = 2) => {
40
+ return value.toLocaleString("en-US", {
41
+ minimumFractionDigits,
42
+ maximumFractionDigits: 2
43
+ });
44
+ };
45
+ const copyText = (text) => {
46
+ return new Promise((resolve, reject) => {
47
+ try {
48
+ if (!isSupported.value) {
49
+ console.error("\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u526A\u8D34\u677F API");
50
+ reject("\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u526A\u8D34\u677F API");
51
+ } else {
52
+ copy(text);
53
+ ElMessage.success(t("message.layout.copyTextSuccess"));
54
+ resolve(text);
55
+ }
56
+ } catch (e) {
57
+ ElMessage.error(t("message.layout.copyTextError"));
58
+ reject(e);
59
+ }
60
+ });
61
+ };
62
+ const removeHtmlSub = (value) => {
63
+ var str = value.replace(/<[^>]+>/g, "");
64
+ if (str.length > 50) return str.substring(0, 50) + "......";
65
+ else return str;
66
+ };
67
+ const removeHtml = (value) => {
68
+ return value.replace(/<[^>]+>/g, "");
69
+ };
70
+ const getEnumDesc = (key, lstEnum) => {
71
+ var _a;
72
+ return (_a = lstEnum.find((x) => x.value == key)) == null ? void 0 : _a.describe;
73
+ };
74
+ const appendQueryParams = (url, params) => {
75
+ if (!params || Object.keys(params).length == 0) return url;
76
+ const queryString = Object.keys(params).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join("&");
77
+ return `${url}${url.includes("?") ? "&" : "?"}${queryString}`;
78
+ };
79
+ const getNameAbbr = (text, callback) => {
80
+ if (!text) return ElMessage.error("\u83B7\u53D6\u7B80\u79F0\u6587\u672C\u4E0D\u80FD\u4E3A\u7A7A");
81
+ try {
82
+ return useBaseApi("sysCommon").post({ text }, "nameAbbr").then((res) => {
83
+ if (callback) callback(res.data.result);
84
+ return res.data.result;
85
+ });
86
+ } catch (e) {
87
+ ElMessage.error("\u83B7\u53D6\u5931\u8D25");
88
+ }
89
+ };
90
+ const handleConditionalClear = (condition, fieldValue, clearValue = void 0) => {
91
+ if (condition) {
92
+ return clearValue;
93
+ }
94
+ return fieldValue;
95
+ };
96
+ const getTimeRangePickerShortcuts = () => {
97
+ return [
98
+ {
99
+ text: "\u8FD1\u4E00\u5468",
100
+ value: () => {
101
+ const now = new Date(themeStore.themeConfig.serverTime);
102
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
103
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7);
104
+ return [start, end];
105
+ }
106
+ },
107
+ {
108
+ text: "\u8FD1\u4E00\u6708",
109
+ value: () => {
110
+ const now = new Date(themeStore.themeConfig.serverTime);
111
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
112
+ const start = new Date(now.getFullYear(), now.getMonth() - 1, now.getDate());
113
+ return [start, end];
114
+ }
115
+ },
116
+ {
117
+ text: "\u8FD1\u4E09\u6708",
118
+ value: () => {
119
+ const now = new Date(themeStore.themeConfig.serverTime);
120
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
121
+ const start = new Date(now.getFullYear(), now.getMonth() - 3, now.getDate());
122
+ return [start, end];
123
+ }
124
+ },
125
+ {
126
+ text: "\u8FD1\u534A\u5E74",
127
+ value: () => {
128
+ const now = new Date(themeStore.themeConfig.serverTime);
129
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
130
+ const start = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate());
131
+ return [start, end];
132
+ }
133
+ },
134
+ {
135
+ text: "\u672C\u5E74",
136
+ value: () => {
137
+ const now = new Date(themeStore.themeConfig.serverTime);
138
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
139
+ const start = new Date(now.getFullYear(), 0, 1);
140
+ return [start, end];
141
+ }
142
+ },
143
+ {
144
+ text: "\u8FD1\u4E24\u5E74",
145
+ value: () => {
146
+ const now = new Date(themeStore.themeConfig.serverTime);
147
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
148
+ const start = new Date(now.getFullYear() - 1, 0, 1);
149
+ return [start, end];
150
+ }
151
+ },
152
+ {
153
+ text: "\u8FD1\u4E09\u5E74",
154
+ value: () => {
155
+ const now = new Date(themeStore.themeConfig.serverTime);
156
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
157
+ const start = new Date(now.getFullYear() - 2, 0, 1);
158
+ return [start, end];
159
+ }
160
+ }
161
+ ];
162
+ };
163
+ return {
164
+ percentFormat,
165
+ dateFormatYMD,
166
+ dateFormatYMDHMS,
167
+ dateFormatHMS,
168
+ scaleFormat,
169
+ scale2Format,
170
+ groupSeparator,
171
+ copyText,
172
+ removeHtmlSub,
173
+ removeHtml,
174
+ getEnumDesc,
175
+ appendQueryParams,
176
+ getNameAbbr,
177
+ handleConditionalClear,
178
+ getTimeRangePickerShortcuts
179
+ };
180
+ }
181
+
182
+ export { commonFunction as default };
@@ -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,7 @@
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';
7
+ export { default as commonFunction } from './commonFunction.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,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFwmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjUtMDQtMDRUMDE6MjM6MzArMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDY0Mzc1NWEtZTM4ZC1hMzQxLWFmODgtNmFhY2FmYmI4ZDY0IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTdlYzEzMTgtNmY3Mi1mYjQ4LWI3YjUtMzg2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";
2
+
3
+ export { img as default };