@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
@@ -0,0 +1,186 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('@vueuse/core');
6
+ var elementPlus = require('element-plus');
7
+ var vueI18n = require('vue-i18n');
8
+ require('../utils/index.js');
9
+ require('../stores/index.js');
10
+ require('../api/index.js');
11
+ var themeConfig = require('../stores/themeConfig.js');
12
+ var formatTime = require('../utils/formatTime.js');
13
+ var index = require('../api/base/index.js');
14
+
15
+ const themeStore = themeConfig.useThemeConfig();
16
+ function commonFunction() {
17
+ const { t } = vueI18n.useI18n();
18
+ const { copy, isSupported } = core.useClipboard();
19
+ const percentFormat = (row, column, cellValue) => {
20
+ return cellValue ? `${cellValue}%` : "-";
21
+ };
22
+ const dateFormatYMD = (row, column, cellValue) => {
23
+ if (!cellValue) return "-";
24
+ return formatTime.formatDate(new Date(cellValue), "YYYY-mm-dd");
25
+ };
26
+ const dateFormatYMDHMS = (row, column, cellValue) => {
27
+ if (!cellValue) return "-";
28
+ return formatTime.formatDate(new Date(cellValue), "YYYY-mm-dd HH:MM:SS");
29
+ };
30
+ const dateFormatHMS = (row, column, cellValue) => {
31
+ if (!cellValue) return "-";
32
+ let time = 0;
33
+ if (typeof row === "number") time = row;
34
+ if (typeof cellValue === "number") time = cellValue;
35
+ return formatTime.formatDate(new Date(time * 1e3), "HH:MM:SS");
36
+ };
37
+ const scaleFormat = (value = "0", scale = 4) => {
38
+ return Number.parseFloat(value).toFixed(scale);
39
+ };
40
+ const scale2Format = (value = "0") => {
41
+ return Number.parseFloat(value).toFixed(2);
42
+ };
43
+ const groupSeparator = (value, minimumFractionDigits = 2) => {
44
+ return value.toLocaleString("en-US", {
45
+ minimumFractionDigits,
46
+ maximumFractionDigits: 2
47
+ });
48
+ };
49
+ const copyText = (text) => {
50
+ return new Promise((resolve, reject) => {
51
+ try {
52
+ if (!isSupported.value) {
53
+ console.error("\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u526A\u8D34\u677F API");
54
+ reject("\u6D4F\u89C8\u5668\u4E0D\u652F\u6301\u526A\u8D34\u677F API");
55
+ } else {
56
+ copy(text);
57
+ elementPlus.ElMessage.success(t("message.layout.copyTextSuccess"));
58
+ resolve(text);
59
+ }
60
+ } catch (e) {
61
+ elementPlus.ElMessage.error(t("message.layout.copyTextError"));
62
+ reject(e);
63
+ }
64
+ });
65
+ };
66
+ const removeHtmlSub = (value) => {
67
+ var str = value.replace(/<[^>]+>/g, "");
68
+ if (str.length > 50) return str.substring(0, 50) + "......";
69
+ else return str;
70
+ };
71
+ const removeHtml = (value) => {
72
+ return value.replace(/<[^>]+>/g, "");
73
+ };
74
+ const getEnumDesc = (key, lstEnum) => {
75
+ var _a;
76
+ return (_a = lstEnum.find((x) => x.value == key)) == null ? void 0 : _a.describe;
77
+ };
78
+ const appendQueryParams = (url, params) => {
79
+ if (!params || Object.keys(params).length == 0) return url;
80
+ const queryString = Object.keys(params).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`).join("&");
81
+ return `${url}${url.includes("?") ? "&" : "?"}${queryString}`;
82
+ };
83
+ const getNameAbbr = (text, callback) => {
84
+ if (!text) return elementPlus.ElMessage.error("\u83B7\u53D6\u7B80\u79F0\u6587\u672C\u4E0D\u80FD\u4E3A\u7A7A");
85
+ try {
86
+ return index.useBaseApi("sysCommon").post({ text }, "nameAbbr").then((res) => {
87
+ if (callback) callback(res.data.result);
88
+ return res.data.result;
89
+ });
90
+ } catch (e) {
91
+ elementPlus.ElMessage.error("\u83B7\u53D6\u5931\u8D25");
92
+ }
93
+ };
94
+ const handleConditionalClear = (condition, fieldValue, clearValue = void 0) => {
95
+ if (condition) {
96
+ return clearValue;
97
+ }
98
+ return fieldValue;
99
+ };
100
+ const getTimeRangePickerShortcuts = () => {
101
+ return [
102
+ {
103
+ text: "\u8FD1\u4E00\u5468",
104
+ value: () => {
105
+ const now = new Date(themeStore.themeConfig.serverTime);
106
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
107
+ const start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7);
108
+ return [start, end];
109
+ }
110
+ },
111
+ {
112
+ text: "\u8FD1\u4E00\u6708",
113
+ value: () => {
114
+ const now = new Date(themeStore.themeConfig.serverTime);
115
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
116
+ const start = new Date(now.getFullYear(), now.getMonth() - 1, now.getDate());
117
+ return [start, end];
118
+ }
119
+ },
120
+ {
121
+ text: "\u8FD1\u4E09\u6708",
122
+ value: () => {
123
+ const now = new Date(themeStore.themeConfig.serverTime);
124
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
125
+ const start = new Date(now.getFullYear(), now.getMonth() - 3, now.getDate());
126
+ return [start, end];
127
+ }
128
+ },
129
+ {
130
+ text: "\u8FD1\u534A\u5E74",
131
+ value: () => {
132
+ const now = new Date(themeStore.themeConfig.serverTime);
133
+ const end = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 59, 59, 999);
134
+ const start = new Date(now.getFullYear(), now.getMonth() - 6, now.getDate());
135
+ return [start, end];
136
+ }
137
+ },
138
+ {
139
+ text: "\u672C\u5E74",
140
+ value: () => {
141
+ const now = new Date(themeStore.themeConfig.serverTime);
142
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
143
+ const start = new Date(now.getFullYear(), 0, 1);
144
+ return [start, end];
145
+ }
146
+ },
147
+ {
148
+ text: "\u8FD1\u4E24\u5E74",
149
+ value: () => {
150
+ const now = new Date(themeStore.themeConfig.serverTime);
151
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
152
+ const start = new Date(now.getFullYear() - 1, 0, 1);
153
+ return [start, end];
154
+ }
155
+ },
156
+ {
157
+ text: "\u8FD1\u4E09\u5E74",
158
+ value: () => {
159
+ const now = new Date(themeStore.themeConfig.serverTime);
160
+ const end = new Date(now.getFullYear(), 11, 31, 23, 59, 59, 999);
161
+ const start = new Date(now.getFullYear() - 2, 0, 1);
162
+ return [start, end];
163
+ }
164
+ }
165
+ ];
166
+ };
167
+ return {
168
+ percentFormat,
169
+ dateFormatYMD,
170
+ dateFormatYMDHMS,
171
+ dateFormatHMS,
172
+ scaleFormat,
173
+ scale2Format,
174
+ groupSeparator,
175
+ copyText,
176
+ removeHtmlSub,
177
+ removeHtml,
178
+ getEnumDesc,
179
+ appendQueryParams,
180
+ getNameAbbr,
181
+ handleConditionalClear,
182
+ getTimeRangePickerShortcuts
183
+ };
184
+ }
185
+
186
+ exports.default = commonFunction;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+
3
+ const useDateTimeShortCust = () => {
4
+ return [
5
+ { text: "\u4ECA\u5929", value: /* @__PURE__ */ new Date() },
6
+ {
7
+ text: "\u6628\u5929",
8
+ value: () => {
9
+ const date = /* @__PURE__ */ new Date();
10
+ date.setTime(date.getTime() - 3600 * 1e3 * 24);
11
+ return date;
12
+ }
13
+ },
14
+ {
15
+ text: "\u4E0A\u5468",
16
+ value: () => {
17
+ const date = /* @__PURE__ */ new Date();
18
+ date.setTime(date.getTime() - 3600 * 1e3 * 24 * 7);
19
+ return date;
20
+ }
21
+ }
22
+ ];
23
+ };
24
+
25
+ exports.useDateTimeShortCust = useDateTimeShortCust;
@@ -0,0 +1,131 @@
1
+ 'use strict';
2
+
3
+ var lodashEs = require('lodash-es');
4
+ var storage = require('../utils/storage.js');
5
+ var elementPlus = require('element-plus');
6
+ var request = require('../utils/request.js');
7
+ var useLocale = require('./useLocale.js');
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
12
+ let signalR;
13
+ async function loadSignalR() {
14
+ if (!signalR) {
15
+ const module = await Promise.resolve().then(function () { return require('../utils/signalR.js'); });
16
+ signalR = module.signalR;
17
+ }
18
+ return signalR;
19
+ }
20
+ const { t } = useLocale.useLocale();
21
+ class IdleTimeoutManager {
22
+ constructor(config = {}) {
23
+ __publicField(this, "timerId", null);
24
+ __publicField(this, "config");
25
+ __publicField(this, "debouncedReset");
26
+ /** 检查闲置超时时间间隔 */
27
+ __publicField(this, "checkTimeoutInterval", 2 * 1e3);
28
+ __publicField(this, "handleVisibilityChange", () => {
29
+ if (document.visibilityState === "visible") {
30
+ this.setLastActivityTime();
31
+ }
32
+ });
33
+ this.config = {
34
+ timeout: 30 * 60,
35
+ events: ["mousewheel", "keydown", "click"],
36
+ onTimeout: this.timeOutExec.bind(this),
37
+ debounceInterval: 200,
38
+ ...config
39
+ };
40
+ this.debouncedReset = this.config.debounceInterval > 0 ? lodashEs.debounce(this.setLastActivityTime.bind(this), this.config.debounceInterval) : this.setLastActivityTime.bind(this);
41
+ this.init();
42
+ }
43
+ init() {
44
+ this.config.events.forEach((event) => {
45
+ window.addEventListener(event, this.debouncedReset);
46
+ });
47
+ document.addEventListener("visibilitychange", this.handleVisibilityChange);
48
+ this.setLastActivityTime();
49
+ this.updateIdleTimeout(this.config.timeout);
50
+ }
51
+ /** 设置最后活动时间 */
52
+ setLastActivityTime() {
53
+ storage.Local.set("lastActivityTime", (/* @__PURE__ */ new Date()).getTime());
54
+ }
55
+ /**
56
+ * 更新空闲超时时间
57
+ * @param timeout - 新的超时时间(毫秒)
58
+ */
59
+ updateIdleTimeout(timeout) {
60
+ this.config.timeout = timeout;
61
+ if (this.config.timeout > 0 && this.timerId == null) {
62
+ this.timerId = window.setInterval(this.checkTimeout.bind(this), this.checkTimeoutInterval);
63
+ } else if (this.config.timeout == 0 && this.timerId != null) {
64
+ window.clearInterval(this.timerId);
65
+ this.timerId = null;
66
+ }
67
+ }
68
+ /** 检查是否超时 */
69
+ checkTimeout() {
70
+ const currentTime = (/* @__PURE__ */ new Date()).getTime();
71
+ const lastActivityTime = Number(storage.Local.get("lastActivityTime"));
72
+ if (lastActivityTime == 0) return;
73
+ const accessToken = storage.Local.get(request.accessTokenKey);
74
+ if (!accessToken || accessToken == "invalid_token") return;
75
+ const timeout = this.config.timeout * 1e3;
76
+ if (currentTime - lastActivityTime > timeout) {
77
+ this.destroy();
78
+ this.config.onTimeout();
79
+ }
80
+ }
81
+ /** 销毁实例 */
82
+ destroy() {
83
+ this.config.events.forEach((event) => {
84
+ window.removeEventListener(event, this.debouncedReset);
85
+ });
86
+ document.removeEventListener("visibilitychange", this.handleVisibilityChange);
87
+ if (this.timerId !== null) {
88
+ window.clearInterval(this.timerId);
89
+ this.timerId = null;
90
+ }
91
+ }
92
+ /** 超时时执行 */
93
+ timeOutExec() {
94
+ const appEl = document.getElementById("app");
95
+ appEl == null ? void 0 : appEl.remove();
96
+ loadSignalR().then((signalR2) => {
97
+ signalR2.stop();
98
+ });
99
+ storage.Local.remove(request.accessTokenKey);
100
+ storage.Local.remove(request.refreshAccessTokenKey);
101
+ storage.Session.clear();
102
+ elementPlus.ElMessageBox.alert(t("plus.list.idleTimeoutMessage"), t("plus.list.sysMessage"), {
103
+ type: "warning",
104
+ draggable: true,
105
+ callback: () => {
106
+ window.location.reload();
107
+ }
108
+ });
109
+ }
110
+ }
111
+ function initIdleTimeout(config) {
112
+ if (!window.__IDLE_TIMEOUT__) {
113
+ window.__IDLE_TIMEOUT__ = new IdleTimeoutManager(config);
114
+ }
115
+ return window.__IDLE_TIMEOUT__;
116
+ }
117
+ function destroyIdleTimeout() {
118
+ if (window.__IDLE_TIMEOUT__) {
119
+ window.__IDLE_TIMEOUT__.destroy();
120
+ window.__IDLE_TIMEOUT__ = void 0;
121
+ }
122
+ }
123
+ function updateIdleTimeout(timeout) {
124
+ if (window.__IDLE_TIMEOUT__) {
125
+ window.__IDLE_TIMEOUT__.updateIdleTimeout(timeout);
126
+ }
127
+ }
128
+
129
+ exports.destroyIdleTimeout = destroyIdleTimeout;
130
+ exports.initIdleTimeout = initIdleTimeout;
131
+ exports.updateIdleTimeout = updateIdleTimeout;
@@ -3,6 +3,10 @@
3
3
  var useLocale = require('./useLocale.js');
4
4
  var authFunction = require('./authFunction.js');
5
5
  var useVxeTableOptionsHook = require('./useVxeTableOptionsHook.js');
6
+ var sysInfo = require('./sysInfo.js');
7
+ var useInfo = require('./useInfo.js');
8
+ var dateTimeShortCust = require('./dateTimeShortCust.js');
9
+ var commonFunction = require('./commonFunction.js');
6
10
 
7
11
 
8
12
 
@@ -17,3 +21,26 @@ exports.hAuth = authFunction.hAuth;
17
21
  exports.hAuthAll = authFunction.hAuthAll;
18
22
  exports.hAuths = authFunction.hAuths;
19
23
  exports.useVxeTable = useVxeTableOptionsHook.useVxeTable;
24
+ exports.loadSysInfo = sysInfo.loadSysInfo;
25
+ exports.updateFavicon = sysInfo.updateFavicon;
26
+ exports.hasPrivilege = useInfo.hasPrivilege;
27
+ exports.hasRoleCode = useInfo.hasRoleCode;
28
+ exports.isAdmin = useInfo.isAdmin;
29
+ exports.isMember = useInfo.isMember;
30
+ exports.isNormalUser = useInfo.isNormalUser;
31
+ exports.isSupperAdmin = useInfo.isSupperAdmin;
32
+ exports.isTenantAdmin = useInfo.isTenantAdmin;
33
+ exports.orgId = useInfo.orgId;
34
+ exports.orgName = useInfo.orgName;
35
+ exports.posId = useInfo.posId;
36
+ exports.posName = useInfo.posName;
37
+ exports.roles = useInfo.roles;
38
+ exports.tenantId = useInfo.tenantId;
39
+ exports.userAccount = useInfo.userAccount;
40
+ exports.userEmail = useInfo.userEmail;
41
+ exports.userFriendName = useInfo.userFriendName;
42
+ exports.userId = useInfo.userId;
43
+ exports.userName = useInfo.userName;
44
+ exports.userPhone = useInfo.userPhone;
45
+ exports.useDateTimeShortCust = dateTimeShortCust.useDateTimeShortCust;
46
+ exports.commonFunction = commonFunction.default;
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ var storage = require('../utils/storage.js');
4
+ var pinia = require('pinia');
5
+ var themeConfig$1 = require('../stores/themeConfig.js');
6
+ var logo = require('../theme-chalk/assets/logo.png.js');
7
+ var idleTimeout = require('./idleTimeout.js');
8
+ require('../api/index.js');
9
+ var index = require('../api/sys/index.js');
10
+ var index$1 = require('../api/base/index.js');
11
+
12
+ const storesThemeConfig = themeConfig$1.useThemeConfig();
13
+ const { themeConfig } = pinia.storeToRefs(storesThemeConfig);
14
+ async function loadSysInfo(tenantid) {
15
+ var _a;
16
+ const [err, res] = await index.feature(index$1.useBaseApi("sysTenant").gcomm(null, "sysInfo/" + Number(tenantid)));
17
+ if (err) {
18
+ themeConfig.value.logoUrl = logo.default;
19
+ storage.Local.remove("themeConfig");
20
+ storage.Local.set("themeConfig", storesThemeConfig.themeConfig);
21
+ return;
22
+ } else {
23
+ if (res.data.type != "success" || res.data.result == null) return;
24
+ const data = res.data.result;
25
+ themeConfig.value.logoUrl = data.logo;
26
+ themeConfig.value.globalTitle = data.title;
27
+ themeConfig.value.globalViceTitle = data.viceTitle;
28
+ themeConfig.value.globalViceTitleMsg = data.viceDesc;
29
+ themeConfig.value.icp = data.icp;
30
+ themeConfig.value.icpUrl = data.icpUrl;
31
+ themeConfig.value.isWatermark = data.watermark != null;
32
+ themeConfig.value.watermarkText = data.watermark;
33
+ themeConfig.value.copyright = data.copyright;
34
+ themeConfig.value.version = data.version;
35
+ themeConfig.value.carouselFiles = data.carouselFiles;
36
+ themeConfig.value.primary = data.themeColor;
37
+ themeConfig.value.layout = data.layout;
38
+ themeConfig.value.animation = data.animation;
39
+ themeConfig.value.secondVer = data.secondVer;
40
+ themeConfig.value.captcha = data.captcha;
41
+ themeConfig.value.forceChangePassword = data.forceChangePassword;
42
+ themeConfig.value.passwordExpirationTime = data.passwordExpirationTime;
43
+ themeConfig.value.i18NSwitch = data.i18NSwitch;
44
+ themeConfig.value.idleTimeout = data.idleTimeout;
45
+ themeConfig.value.onlineNotice = data.onlineNotice;
46
+ themeConfig.value.mobileLogin = data.mobileLogin;
47
+ themeConfig.value.scanLogin = data.scanLogin;
48
+ themeConfig.value.signUp = data.signUp;
49
+ window.__env__.VITE_SM_PUBLIC_KEY = data.publicKey;
50
+ updateFavicon(data.logo);
51
+ idleTimeout.updateIdleTimeout((_a = themeConfig.value.idleTimeout) != null ? _a : 0);
52
+ storage.Local.remove("themeConfig");
53
+ storage.Local.set("themeConfig", storesThemeConfig.themeConfig);
54
+ }
55
+ }
56
+ const updateFavicon = (url) => {
57
+ const favicon = document.getElementById("favicon");
58
+ favicon.href = url ? url : "data:;base64,=";
59
+ };
60
+
61
+ exports.loadSysInfo = loadSysInfo;
62
+ exports.updateFavicon = updateFavicon;
@@ -0,0 +1,64 @@
1
+ 'use strict';
2
+
3
+ var userInfo = require('../stores/userInfo.js');
4
+
5
+ const { userInfos } = userInfo.useUserInfo();
6
+ const isSupperAdmin = () => {
7
+ return (userInfos == null ? void 0 : userInfos.accountType) === 999;
8
+ };
9
+ const isTenantAdmin = () => {
10
+ return (userInfos == null ? void 0 : userInfos.accountType) === 888;
11
+ };
12
+ const isAdmin = () => {
13
+ return isSupperAdmin() || isTenantAdmin();
14
+ };
15
+ const isNormalUser = () => {
16
+ return (userInfos == null ? void 0 : userInfos.accountType) === 777;
17
+ };
18
+ const isMember = () => {
19
+ return (userInfos == null ? void 0 : userInfos.accountType) === 666;
20
+ };
21
+ const userEmail = () => {
22
+ return userInfos == null ? void 0 : userInfos.email;
23
+ };
24
+ const userName = () => {
25
+ return userInfos == null ? void 0 : userInfos.userName;
26
+ };
27
+ 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;
28
+ const tenantId = () => {
29
+ return userInfos == null ? void 0 : userInfos.tenantId;
30
+ };
31
+ const userAccount = () => userInfos == null ? void 0 : userInfos.account;
32
+ const userPhone = () => userInfos == null ? void 0 : userInfos.phone;
33
+ const userId = () => userInfos == null ? void 0 : userInfos.id;
34
+ const orgId = () => userInfos == null ? void 0 : userInfos.orgId;
35
+ const orgName = () => userInfos == null ? void 0 : userInfos.orgName;
36
+ const posId = () => userInfos == null ? void 0 : userInfos.posId;
37
+ const posName = () => userInfos == null ? void 0 : userInfos.posName;
38
+ const roles = () => userInfos == null ? void 0 : userInfos.roles;
39
+ const hasRoleCode = (code) => {
40
+ return userInfos.roles.find((u) => u.code === code) ? true : false;
41
+ };
42
+ const hasPrivilege = (privilege) => {
43
+ return userInfos.authApiList.includes(privilege);
44
+ };
45
+
46
+ exports.hasPrivilege = hasPrivilege;
47
+ exports.hasRoleCode = hasRoleCode;
48
+ exports.isAdmin = isAdmin;
49
+ exports.isMember = isMember;
50
+ exports.isNormalUser = isNormalUser;
51
+ exports.isSupperAdmin = isSupperAdmin;
52
+ exports.isTenantAdmin = isTenantAdmin;
53
+ exports.orgId = orgId;
54
+ exports.orgName = orgName;
55
+ exports.posId = posId;
56
+ exports.posName = posName;
57
+ exports.roles = roles;
58
+ exports.tenantId = tenantId;
59
+ exports.userAccount = userAccount;
60
+ exports.userEmail = userEmail;
61
+ exports.userFriendName = userFriendName;
62
+ exports.userId = userId;
63
+ exports.userName = userName;
64
+ exports.userPhone = userPhone;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABBCAYAAACO98lFAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFwmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyNS0wNC0wNFQwMToyMzozMCswODowMCIgeG1wOk1vZGlmeURhdGU9IjIwMjUtMDQtMDRUMDE6MjM6MzArMDg6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDY0Mzc1NWEtZTM4ZC1hMzQxLWFmODgtNmFhY2FmYmI4ZDY0IiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6MTdlYzEzMTgtNmY3Mi1mYjQ4LWI3YjUtMzg2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";
6
+
7
+ exports.default = img;
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var SignalR = require('@microsoft/signalr');
4
+ var elementPlus = require('element-plus');
5
+ var request = require('./request.js');
6
+
7
+ function _interopNamespaceDefault(e) {
8
+ var n = Object.create(null);
9
+ if (e) {
10
+ Object.keys(e).forEach(function (k) {
11
+ if (k !== 'default') {
12
+ var d = Object.getOwnPropertyDescriptor(e, k);
13
+ Object.defineProperty(n, k, d.get ? d : {
14
+ enumerable: true,
15
+ get: function () { return e[k]; }
16
+ });
17
+ }
18
+ });
19
+ }
20
+ n.default = e;
21
+ return Object.freeze(n);
22
+ }
23
+
24
+ var SignalR__namespace = /*#__PURE__*/_interopNamespaceDefault(SignalR);
25
+
26
+ const connection = new SignalR__namespace.HubConnectionBuilder().configureLogging(SignalR__namespace.LogLevel.Warning).withUrl(`${window.__env__.VITE_API_URL}/hubs/onlineUser?token=${request.getToken()}`, { transport: SignalR__namespace.HttpTransportType.WebSockets, skipNegotiation: true }).withAutomaticReconnect({
27
+ nextRetryDelayInMilliseconds: () => {
28
+ return 5e3;
29
+ }
30
+ }).build();
31
+ connection.keepAliveIntervalInMilliseconds = 15 * 1e3;
32
+ connection.serverTimeoutInMilliseconds = 30 * 1e3;
33
+ connection.start().then(() => {
34
+ });
35
+ connection.onclose(async () => {
36
+ });
37
+ connection.onreconnecting(() => {
38
+ elementPlus.ElNotification({
39
+ title: "\u63D0\u793A",
40
+ message: "\u8FDE\u63A5\u5DF2\u65AD\u5F00 >>>>>",
41
+ type: "error",
42
+ position: "bottom-right"
43
+ });
44
+ });
45
+ connection.onreconnected(() => {
46
+ elementPlus.ElNotification({
47
+ title: "\u63D0\u793A",
48
+ message: "\u8FDE\u63A5\u5DF2\u6062\u590D >>>>>",
49
+ type: "success",
50
+ position: "bottom-right"
51
+ });
52
+ });
53
+ connection.on("OnlineUserList", () => {
54
+ });
55
+ connection.on("ReceiveMessage", (message) => {
56
+ var tmpMsg = `<div style="white-space: pre-wrap;">${message.message}<div><br/>`;
57
+ tmpMsg += `<p style="color:#808080; font-size:10px;float:right"> ${message.sendUserName} ${message.sendTime}<p>`;
58
+ elementPlus.ElNotification({
59
+ title: `${message.title}`,
60
+ message: tmpMsg,
61
+ type: message.messageType.toString().toLowerCase(),
62
+ position: "top-right",
63
+ dangerouslyUseHTMLString: true,
64
+ duration: 5e3
65
+ });
66
+ });
67
+
68
+ exports.signalR = connection;
@@ -1 +1,47 @@
1
- export {};
1
+ import { RouteRecordRaw } from '../router';
2
+ export type AsideState = {
3
+ menuList: RouteRecordRaw[];
4
+ clientWidth: number;
5
+ };
6
+ export type ColumnsAsideState<T = any> = {
7
+ columnsAsideList: T[];
8
+ liIndex: number;
9
+ liOldIndex: null | number;
10
+ liHoverIndex: null | number;
11
+ liOldPath: null | string;
12
+ difference: number;
13
+ routeSplit: string[];
14
+ };
15
+ export type BreadcrumbState<T = any> = {
16
+ breadcrumbList: T[];
17
+ routeSplit: string[];
18
+ routeSplitFirst: string;
19
+ routeSplitIndex: number;
20
+ };
21
+ export type SearchState<T = any> = {
22
+ isShowSearch: boolean;
23
+ menuQuery: string;
24
+ tagsViewList: T[];
25
+ };
26
+ export type TagsViewState<T = any> = {
27
+ routeActive: string | T;
28
+ routePath: string | unknown;
29
+ dropdown: {
30
+ x: string | number;
31
+ y: string | number;
32
+ };
33
+ sortable: T;
34
+ tagsRefsIndex: number;
35
+ tagsViewList: T[];
36
+ tagsViewRoutesList: T[];
37
+ };
38
+ export type ParentViewState<T = any> = {
39
+ refreshRouterViewKey: string;
40
+ iframeRefreshKey: string;
41
+ keepAliveNameList: string[];
42
+ iframeList: T[];
43
+ };
44
+ export type LinkViewState = {
45
+ title: string;
46
+ isLink: string;
47
+ };
@@ -99,5 +99,6 @@ export interface ThemeConfigState {
99
99
  mobileLogin: boolean;
100
100
  scanLogin: boolean;
101
101
  signUp: boolean;
102
+ serverTime?: any;
102
103
  };
103
104
  }
package/locale/en.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! fmdeui-fmui v1.0.6 */
1
+ /*! fmdeui-fmui v1.0.8 */
2
2
 
3
3
  (function (global, factory) {
4
4
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :