@jari-ace/element-plus-component 0.1.10 → 0.2.1

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 (156) hide show
  1. package/README.md +1 -18
  2. package/dist/components/form/JaForm.vue.d.ts +0 -3
  3. package/dist/components/form/JaForm.vue.d.ts.map +1 -1
  4. package/dist/components/form/JaForm.vue.js +68 -22
  5. package/dist/components/form/JaForm.vue.js.map +1 -1
  6. package/dist/components/formItem/JaFormItem.vue.d.ts +0 -4
  7. package/dist/components/formItem/JaFormItem.vue.d.ts.map +1 -1
  8. package/dist/components/formItem/JaFormItem.vue.js +8 -26
  9. package/dist/components/formItem/JaFormItem.vue.js.map +1 -1
  10. package/dist/components/userPicker/src/UserPicker.vue.d.ts +17 -0
  11. package/dist/components/userPicker/src/UserPicker.vue.d.ts.map +1 -1
  12. package/dist/components/userPicker/src/UserPicker.vue.js +15 -0
  13. package/dist/components/userPicker/src/UserPicker.vue.js.map +1 -1
  14. package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts +17 -0
  15. package/dist/components/userSelectDialog/src/userSelectDialog.vue.d.ts.map +1 -1
  16. package/dist/components/userSelectDialog/src/userSelectDialog.vue.js +15 -0
  17. package/dist/components/userSelectDialog/src/userSelectDialog.vue.js.map +1 -1
  18. package/dist/hooks/useBackendValidations.js +0 -1
  19. package/dist/hooks/useBackendValidations.js.map +1 -1
  20. package/dist/hooks/useClassificationLevels.d.ts +21 -0
  21. package/dist/hooks/useClassificationLevels.d.ts.map +1 -0
  22. package/dist/hooks/useClassificationLevels.js +55 -0
  23. package/dist/hooks/useClassificationLevels.js.map +1 -0
  24. package/dist/hooks/useUserRefQuery.d.ts +6 -0
  25. package/dist/hooks/useUserRefQuery.d.ts.map +1 -1
  26. package/dist/hooks/useUserRefQuery.js +4 -0
  27. package/dist/hooks/useUserRefQuery.js.map +1 -1
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +2 -0
  31. package/dist/index.js.map +1 -1
  32. package/lib/index.css +1 -1
  33. package/lib/index.js +1808 -1774
  34. package/lib/index.umd.cjs +2 -2
  35. package/package.json +61 -61
  36. package/packages/components/autoComplete/JaAutoComplete.vue +47 -47
  37. package/packages/components/autoComplete/index.ts +5 -5
  38. package/packages/components/avatar/JaAvatar.vue +126 -126
  39. package/packages/components/avatar/avatarToken.ts +11 -11
  40. package/packages/components/avatar/defaultImg.ts +14 -14
  41. package/packages/components/avatar/index.ts +7 -7
  42. package/packages/components/button/JaButton.vue +51 -51
  43. package/packages/components/button/index.ts +4 -4
  44. package/packages/components/channelPicker/index.ts +7 -7
  45. package/packages/components/channelPicker/src/ChannelPicker.vue +43 -43
  46. package/packages/components/channelPicker/src/JaChannelPicker.vue +42 -42
  47. package/packages/components/checkbox/JaCheckbox.vue +73 -73
  48. package/packages/components/checkbox/index.ts +4 -4
  49. package/packages/components/checkboxGroup/JaCheckboxGroup.vue +45 -45
  50. package/packages/components/checkboxGroup/index.ts +4 -4
  51. package/packages/components/customGroupTree/index.ts +10 -10
  52. package/packages/components/customGroupTree/src/customGroupTree.vue +91 -91
  53. package/packages/components/datePicker/JaDatePicker.vue +52 -52
  54. package/packages/components/datePicker/index.ts +4 -4
  55. package/packages/components/departmentPicker/index.ts +4 -4
  56. package/packages/components/departmentPicker/src/DepartmentPicker.vue +107 -107
  57. package/packages/components/departmentPicker/src/consts.ts +2 -2
  58. package/packages/components/departmentTree/index.ts +10 -10
  59. package/packages/components/departmentTree/src/departmentTree.vue +135 -135
  60. package/packages/components/dropdownButton/JaDropdownButton.vue +59 -59
  61. package/packages/components/dropdownButton/index.ts +4 -4
  62. package/packages/components/enumList/EnumListInput.vue +107 -107
  63. package/packages/components/enumList/JaEnumList.vue +39 -39
  64. package/packages/components/enumList/index.ts +7 -7
  65. package/packages/components/enumPicker/index.ts +5 -5
  66. package/packages/components/enumPicker/src/EnumPicker.vue +103 -103
  67. package/packages/components/form/JaForm.vue +186 -146
  68. package/packages/components/form/index.ts +5 -5
  69. package/packages/components/form/types.ts +4 -4
  70. package/packages/components/formItem/JaFormItem.vue +68 -87
  71. package/packages/components/formItem/index.ts +4 -4
  72. package/packages/components/index.ts +34 -34
  73. package/packages/components/input/JaInput.vue +143 -143
  74. package/packages/components/input/index.ts +4 -4
  75. package/packages/components/inputI18n/I18nBundleEditor.vue +76 -76
  76. package/packages/components/inputI18n/InputI18n.vue +146 -146
  77. package/packages/components/inputI18n/JaInputI18n.vue +50 -50
  78. package/packages/components/inputI18n/index.ts +8 -8
  79. package/packages/components/inputNumber/JaInputNumber.vue +98 -98
  80. package/packages/components/inputNumber/index.ts +4 -4
  81. package/packages/components/mapItemList/JaMapItemList.vue +35 -35
  82. package/packages/components/mapItemList/MapItemListInput.vue +191 -191
  83. package/packages/components/mapItemList/index.ts +7 -7
  84. package/packages/components/numberList/JaNumberList.vue +36 -36
  85. package/packages/components/numberList/NumberListInput.vue +111 -111
  86. package/packages/components/numberList/index.ts +7 -7
  87. package/packages/components/properyPicker/JaPropertyPicker.vue +38 -38
  88. package/packages/components/properyPicker/PropertyPicker.vue +314 -314
  89. package/packages/components/properyPicker/index.ts +7 -7
  90. package/packages/components/radioGroup/JaRadioGroup.vue +50 -50
  91. package/packages/components/radioGroup/index.ts +4 -4
  92. package/packages/components/rolePicker/RoleEditor.vue +129 -129
  93. package/packages/components/rolePicker/RolePicker.vue +44 -44
  94. package/packages/components/rolePicker/RolePickerRaw.vue +56 -56
  95. package/packages/components/rolePicker/baseRolePicker.vue +87 -87
  96. package/packages/components/rolePicker/index.ts +10 -10
  97. package/packages/components/scrollbar/Scrollbar.vue +89 -89
  98. package/packages/components/scrollbar/index.ts +5 -5
  99. package/packages/components/scrollbar/utils.ts +17 -17
  100. package/packages/components/select/JaSelect.vue +48 -48
  101. package/packages/components/select/index.ts +4 -4
  102. package/packages/components/stringList/JaStringList.vue +36 -36
  103. package/packages/components/stringList/StringListInput.vue +96 -96
  104. package/packages/components/stringList/index.ts +7 -7
  105. package/packages/components/switch/JaSwitch.vue +50 -50
  106. package/packages/components/switch/index.ts +4 -4
  107. package/packages/components/timePicker/JaTimePicker.vue +52 -52
  108. package/packages/components/timePicker/index.ts +5 -5
  109. package/packages/components/tip/index.ts +4 -4
  110. package/packages/components/tip/src/AceTip.vue +43 -43
  111. package/packages/components/upload/index.ts +6 -6
  112. package/packages/components/upload/src/Upload.vue +25 -25
  113. package/packages/components/upload/src/type.ts +3 -3
  114. package/packages/components/userGroupPicker/index.ts +4 -4
  115. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +94 -94
  116. package/packages/components/userGroupTree/index.ts +10 -10
  117. package/packages/components/userGroupTree/src/userGroupTree.vue +149 -149
  118. package/packages/components/userPicker/index.ts +10 -10
  119. package/packages/components/userPicker/src/CustomGroupManager.vue +189 -189
  120. package/packages/components/userPicker/src/JaUserList.vue +283 -283
  121. package/packages/components/userPicker/src/JaUserPicker.vue +37 -37
  122. package/packages/components/userPicker/src/UserPicker.vue +376 -368
  123. package/packages/components/userSelectDialog/index.ts +6 -6
  124. package/packages/components/userSelectDialog/src/userSelectDialog.vue +462 -455
  125. package/packages/components/userTag/UserInfoTag.vue +397 -397
  126. package/packages/components/userTag/index.ts +6 -6
  127. package/packages/components/userTag/sharedAxios.ts +8 -8
  128. package/packages/directives/auth/index.ts +41 -41
  129. package/packages/directives/autofocus/index.ts +29 -29
  130. package/packages/directives/index.ts +10 -10
  131. package/packages/directives/shortcut/index.ts +192 -192
  132. package/packages/hooks/useAppInstances.ts +34 -34
  133. package/packages/hooks/useBackendValidations.ts +81 -81
  134. package/packages/hooks/useBridage.ts +157 -157
  135. package/packages/hooks/useClassificationLevels.ts +62 -0
  136. package/packages/hooks/useDateTimeShortCuts.ts +65 -65
  137. package/packages/hooks/useRealms.ts +28 -28
  138. package/packages/hooks/useTreeData.ts +45 -45
  139. package/packages/hooks/useUserRefQuery.ts +232 -224
  140. package/packages/index.ts +24 -22
  141. package/packages/list.json +7 -7
  142. package/packages/types/custom.d.ts +13 -13
  143. package/packages/types/window.d.ts +16 -16
  144. package/packages/utils/install.ts +43 -43
  145. package/packages/utils/objectUtils.ts +31 -31
  146. package/theme-style/fonts/iconfont.json +5196 -5196
  147. package/theme-style/index.scss +10 -10
  148. package/theme-style/styles/element-plus-var.scss +1419 -1419
  149. package/theme-style/styles/iconfont.css +2979 -2979
  150. package/theme-style/styles/theme-var.scss +72 -72
  151. package/theme-style/styles/transition.scss +122 -122
  152. package/dist/utils/formUtils.d.ts +0 -7
  153. package/dist/utils/formUtils.d.ts.map +0 -1
  154. package/dist/utils/formUtils.js +0 -54
  155. package/dist/utils/formUtils.js.map +0 -1
  156. package/packages/utils/formUtils.ts +0 -57
@@ -1,81 +1,81 @@
1
- import type { FormRules ,FormItemRule} from "element-plus";
2
- import type { IAceAxios, ValidationError } from "@jari-ace/app-bolts";
3
- import { createAxiosWithoutCache } from "@jari-ace/app-bolts";
4
- import { reactive } from "vue";
5
- import {mergeRules} from '../utils/formUtils'
6
- export type ValidationInstance = {
7
- axios: IAceAxios;
8
- rules: FormRules;
9
- removeFieldError: (prop: string) => void;
10
- clearFiledErrors: () => void;
11
- };
12
-
13
- /**
14
- * 后端校验
15
- * @param props
16
- * @param axios
17
- * @param customRules
18
- */
19
- export function useBackendValidations(
20
- props: string[],
21
- axios?: IAceAxios,
22
- customRules?: FormRules,
23
- ): ValidationInstance {
24
- const rules = reactive<FormRules>({});
25
- let errors: ValidationError[] = [];
26
- if (!axios) axios = createAxiosWithoutCache();
27
- axios!.setDefaultRequestConfig({
28
- validationErrorProcessor: (errs) => {
29
- errors = errs;
30
- },
31
- });
32
-
33
- for (const p of props) {
34
- // rules[p] = [
35
- const rule = {
36
- trigger: "blur",
37
- validator: (rule: any, value: any, callback: any) => {
38
- if (!errors) return;
39
- let hasErr = false;
40
- for (const err of errors) {
41
- let fn = err.fieldName;
42
- if (fn?.endsWith("[]")) {
43
- fn = fn.substring(0, fn.length - 2);
44
- }
45
- if (fn === p) {
46
- hasErr = true;
47
- callback(new Error(err.message));
48
- }
49
- }
50
- if (!hasErr) callback();
51
- },
52
- };
53
-
54
- if (customRules&&customRules[p]) {
55
- //合并数组customRules[p]
56
- if (Array.isArray(customRules[p])) {
57
- rules[p] = [rule,...customRules[p] as FormItemRule[]];
58
- } else {
59
- rules[p] = [rule, customRules[p] as FormItemRule];
60
- }
61
- }else{
62
- rules[p] = rule
63
- }
64
-
65
-
66
- }
67
- const removeFieldError = (prop: string) => {
68
- errors = errors.filter((err) => err.fieldName !== prop);
69
- };
70
- const clearFiledErrors = () => {
71
- errors = [];
72
- };
73
-
74
-
75
- return {
76
- removeFieldError,
77
- clearFiledErrors,
78
- axios,
79
- rules,
80
- };
81
- }
1
+ import type { FormRules ,FormItemRule} from "element-plus";
2
+ import type { IAceAxios, ValidationError } from "@jari-ace/app-bolts";
3
+ import { createAxiosWithoutCache } from "@jari-ace/app-bolts";
4
+ import { reactive } from "vue";
5
+
6
+ export type ValidationInstance = {
7
+ axios: IAceAxios;
8
+ rules: FormRules;
9
+ removeFieldError: (prop: string) => void;
10
+ clearFiledErrors: () => void;
11
+ };
12
+
13
+ /**
14
+ * 后端校验
15
+ * @param props
16
+ * @param axios
17
+ * @param customRules
18
+ */
19
+ export function useBackendValidations(
20
+ props: string[],
21
+ axios?: IAceAxios,
22
+ customRules?: FormRules,
23
+ ): ValidationInstance {
24
+ const rules = reactive<FormRules>({});
25
+ let errors: ValidationError[] = [];
26
+ if (!axios) axios = createAxiosWithoutCache();
27
+ axios!.setDefaultRequestConfig({
28
+ validationErrorProcessor: (errs) => {
29
+ errors = errs;
30
+ },
31
+ });
32
+
33
+ for (const p of props) {
34
+ // rules[p] = [
35
+ const rule = {
36
+ trigger: "blur",
37
+ validator: (rule: any, value: any, callback: any) => {
38
+ if (!errors) return;
39
+ let hasErr = false;
40
+ for (const err of errors) {
41
+ let fn = err.fieldName;
42
+ if (fn?.endsWith("[]")) {
43
+ fn = fn.substring(0, fn.length - 2);
44
+ }
45
+ if (fn === p) {
46
+ hasErr = true;
47
+ callback(new Error(err.message));
48
+ }
49
+ }
50
+ if (!hasErr) callback();
51
+ },
52
+ };
53
+
54
+ if (customRules&&customRules[p]) {
55
+ //合并数组customRules[p]
56
+ if (Array.isArray(customRules[p])) {
57
+ rules[p] = [rule,...customRules[p] as FormItemRule[]];
58
+ } else {
59
+ rules[p] = [rule, customRules[p] as FormItemRule];
60
+ }
61
+ }else{
62
+ rules[p] = rule
63
+ }
64
+
65
+
66
+ }
67
+ const removeFieldError = (prop: string) => {
68
+ errors = errors.filter((err) => err.fieldName !== prop);
69
+ };
70
+ const clearFiledErrors = () => {
71
+ errors = [];
72
+ };
73
+
74
+
75
+ return {
76
+ removeFieldError,
77
+ clearFiledErrors,
78
+ axios,
79
+ rules,
80
+ };
81
+ }
@@ -1,157 +1,157 @@
1
- import type {
2
- AppMessageType,
3
- BaseAppDispatchMessage,
4
- BaseAppMessageType,
5
- BaseAppPayloadTypes,
6
- BaseMessage,
7
- } from '@jari-ace/app-bolts';
8
-
9
- import { onUnmounted, ref } from 'vue';
10
-
11
- type Listener = (data: AppMessageType) => void;
12
- type GlobalListener = (data: BaseMessage<any>) => void;
13
- type Listeners = Set<Listener>;
14
- // type ReceivedMessageList = AppMessageType[];
15
-
16
- /**
17
- * 应用之间的通信
18
- * @param appName
19
- * @returns
20
- */
21
- export function useBridge(appName: string) {
22
- // 处理应用名称为空的情况
23
- if (!appName) {
24
- throw new Error(
25
- '无法获取到应用名称,请确保VITE_APP_NAME环境变量已配置或者在创建时传入appName参数。',
26
- );
27
- }
28
-
29
- if (!window.microApp) {
30
- throw new Error('无法获取到window.microApp。');
31
- }
32
- // 监听事件集合
33
- const listeners = ref<Listeners>(new Set());
34
-
35
- // 已接收消息集合 暂时没有记录的必要
36
- // const receivedMessage = ref<ReceivedMessageList>([])
37
- // const receivedGloablMessage = ref<BaseMessage<any>[]>([])
38
-
39
- // 这里需要获取到应用名称
40
- /**
41
- * 发送消息( 子应用 → 基座)
42
- * @param data
43
- * @param force force为true会强制发送数据,将不再与缓存里的值做比对,无论数据是否变化。
44
- */
45
- const sendMessage = (
46
- payload: BaseAppPayloadTypes,
47
- force: boolean = true,
48
- isClearCache: boolean = true,
49
- ) => {
50
- const message: BaseAppMessageType = {
51
- sender: appName, // 将自己的appName填入sender字段
52
- timestamp: Date.now(),
53
- payload,
54
- };
55
-
56
- if (force) {
57
- // forceDispatch方法拥有和dispatch一样的参数和行为,唯一不同的是forceDispatch会强制发送数据,无论数据是否变化。
58
- window.microApp.forceDispatch(message);
59
- } else {
60
- window.microApp.dispatch(message, (res: any[]) => {
61
- console.log('消息是否有返回值', res); // ['返回值1', '返回值2']
62
- });
63
- }
64
- if (!isClearCache) return;
65
- // 当设置了clear-data,子应用卸载时会同时清空主应用发送给当前子应用,和当前子应用发送给主应用的数据。
66
- clearCache();
67
- };
68
-
69
- // 向所有应用发送消息
70
- // 不做类型定义
71
- /**
72
- * 发送全局消息(包括基座)
73
- * @param payload 消息体
74
- * @param isClearCache 是否清空缓存,默认true
75
- */
76
- const sendGlobalMessage = (payload: any, isClearCache: boolean = true) => {
77
- const globalMessage: BaseMessage<any> = {
78
- sender: 'app-demo',
79
- timestamp: Date.now(),
80
- payload,
81
- };
82
- window.microApp.setGlobalData(globalMessage);
83
- if (!isClearCache) return;
84
- clearCache();
85
- };
86
-
87
- // 监听全局消息
88
- const onGlobalMessage = (
89
- listener: GlobalListener,
90
- autoTrigger: boolean = true,
91
- ) => {
92
- window.microApp.addGlobalDataListener(listener, autoTrigger);
93
- };
94
-
95
- /**
96
- * 获取主应用下发的消息
97
- * @returns 主应用下发的消息
98
- */
99
- const getBaseAppData = (): BaseAppDispatchMessage => {
100
- return window.microApp.getData();
101
- };
102
-
103
- /**
104
- * 清除缓存
105
- */
106
- const clearCache = () => {
107
- // 当设置了clear-data,子应用卸载时会同时清空主应用发送给当前子应用,和当前子应用发送给主应用的数据。
108
- window.microApp.clearData();
109
- };
110
-
111
- // 套装监听函数并保存消息
112
- // const saveMessage = (listener:Listener,message: AppMessageType) => {
113
- // //保存消息
114
- // receivedMessage.value.push(message)
115
- // listener(message)
116
- // }
117
-
118
- /**
119
- * 绑定监听函数接收消息( 基座 → 子应用 )
120
- * @param listener 绑定函数
121
- * @param autoTrigger 在初次绑定监听函数时如果有缓存数据,是否需要主动触发一次,默认为false
122
- */
123
- const onMessage = (listener: Listener, autoTrigger: boolean = false) => {
124
- // microApp.addDataListener(appName, listener, autoTrigger)
125
- window.microApp.addDataListener(listener, autoTrigger);
126
- // 保存监听函数
127
- listeners.value.add(listener);
128
- };
129
-
130
- /**
131
- * 移除指定监听函数
132
- * @param listener 要移除的监听函数
133
- */
134
- const offMessage = (listener: Listener) => {
135
- // 解绑监听函数
136
- window.microApp.removeDataListener(listener);
137
- listeners.value.delete(listener);
138
- };
139
-
140
- // 清理监听(避免内存泄漏)
141
- onUnmounted(() => {
142
- window.microApp.clearDataListener();
143
- listeners.value.clear();
144
- });
145
-
146
- return {
147
- sendMessage, // 发送消息的方法
148
- onMessage, // 监听消息的方法
149
- clearCache, // 清除缓存
150
- getBaseAppData, // 获取主应用下发的消息
151
- offMessage, // 移除指定监听函数
152
- listeners, // 应用的监听函数集合
153
- // receivedMessage, // 接收到的消息列表
154
- sendGlobalMessage, // 发送全局消息的方法
155
- onGlobalMessage, // 监听全局消息的方法
156
- };
157
- }
1
+ import type {
2
+ AppMessageType,
3
+ BaseAppDispatchMessage,
4
+ BaseAppMessageType,
5
+ BaseAppPayloadTypes,
6
+ BaseMessage,
7
+ } from '@jari-ace/app-bolts';
8
+
9
+ import { onUnmounted, ref } from 'vue';
10
+
11
+ type Listener = (data: AppMessageType) => void;
12
+ type GlobalListener = (data: BaseMessage<any>) => void;
13
+ type Listeners = Set<Listener>;
14
+ // type ReceivedMessageList = AppMessageType[];
15
+
16
+ /**
17
+ * 应用之间的通信
18
+ * @param appName
19
+ * @returns
20
+ */
21
+ export function useBridge(appName: string) {
22
+ // 处理应用名称为空的情况
23
+ if (!appName) {
24
+ throw new Error(
25
+ '无法获取到应用名称,请确保VITE_APP_NAME环境变量已配置或者在创建时传入appName参数。',
26
+ );
27
+ }
28
+
29
+ if (!window.microApp) {
30
+ throw new Error('无法获取到window.microApp。');
31
+ }
32
+ // 监听事件集合
33
+ const listeners = ref<Listeners>(new Set());
34
+
35
+ // 已接收消息集合 暂时没有记录的必要
36
+ // const receivedMessage = ref<ReceivedMessageList>([])
37
+ // const receivedGloablMessage = ref<BaseMessage<any>[]>([])
38
+
39
+ // 这里需要获取到应用名称
40
+ /**
41
+ * 发送消息( 子应用 → 基座)
42
+ * @param data
43
+ * @param force force为true会强制发送数据,将不再与缓存里的值做比对,无论数据是否变化。
44
+ */
45
+ const sendMessage = (
46
+ payload: BaseAppPayloadTypes,
47
+ force: boolean = true,
48
+ isClearCache: boolean = true,
49
+ ) => {
50
+ const message: BaseAppMessageType = {
51
+ sender: appName, // 将自己的appName填入sender字段
52
+ timestamp: Date.now(),
53
+ payload,
54
+ };
55
+
56
+ if (force) {
57
+ // forceDispatch方法拥有和dispatch一样的参数和行为,唯一不同的是forceDispatch会强制发送数据,无论数据是否变化。
58
+ window.microApp.forceDispatch(message);
59
+ } else {
60
+ window.microApp.dispatch(message, (res: any[]) => {
61
+ console.log('消息是否有返回值', res); // ['返回值1', '返回值2']
62
+ });
63
+ }
64
+ if (!isClearCache) return;
65
+ // 当设置了clear-data,子应用卸载时会同时清空主应用发送给当前子应用,和当前子应用发送给主应用的数据。
66
+ clearCache();
67
+ };
68
+
69
+ // 向所有应用发送消息
70
+ // 不做类型定义
71
+ /**
72
+ * 发送全局消息(包括基座)
73
+ * @param payload 消息体
74
+ * @param isClearCache 是否清空缓存,默认true
75
+ */
76
+ const sendGlobalMessage = (payload: any, isClearCache: boolean = true) => {
77
+ const globalMessage: BaseMessage<any> = {
78
+ sender: 'app-demo',
79
+ timestamp: Date.now(),
80
+ payload,
81
+ };
82
+ window.microApp.setGlobalData(globalMessage);
83
+ if (!isClearCache) return;
84
+ clearCache();
85
+ };
86
+
87
+ // 监听全局消息
88
+ const onGlobalMessage = (
89
+ listener: GlobalListener,
90
+ autoTrigger: boolean = true,
91
+ ) => {
92
+ window.microApp.addGlobalDataListener(listener, autoTrigger);
93
+ };
94
+
95
+ /**
96
+ * 获取主应用下发的消息
97
+ * @returns 主应用下发的消息
98
+ */
99
+ const getBaseAppData = (): BaseAppDispatchMessage => {
100
+ return window.microApp.getData();
101
+ };
102
+
103
+ /**
104
+ * 清除缓存
105
+ */
106
+ const clearCache = () => {
107
+ // 当设置了clear-data,子应用卸载时会同时清空主应用发送给当前子应用,和当前子应用发送给主应用的数据。
108
+ window.microApp.clearData();
109
+ };
110
+
111
+ // 套装监听函数并保存消息
112
+ // const saveMessage = (listener:Listener,message: AppMessageType) => {
113
+ // //保存消息
114
+ // receivedMessage.value.push(message)
115
+ // listener(message)
116
+ // }
117
+
118
+ /**
119
+ * 绑定监听函数接收消息( 基座 → 子应用 )
120
+ * @param listener 绑定函数
121
+ * @param autoTrigger 在初次绑定监听函数时如果有缓存数据,是否需要主动触发一次,默认为false
122
+ */
123
+ const onMessage = (listener: Listener, autoTrigger: boolean = false) => {
124
+ // microApp.addDataListener(appName, listener, autoTrigger)
125
+ window.microApp.addDataListener(listener, autoTrigger);
126
+ // 保存监听函数
127
+ listeners.value.add(listener);
128
+ };
129
+
130
+ /**
131
+ * 移除指定监听函数
132
+ * @param listener 要移除的监听函数
133
+ */
134
+ const offMessage = (listener: Listener) => {
135
+ // 解绑监听函数
136
+ window.microApp.removeDataListener(listener);
137
+ listeners.value.delete(listener);
138
+ };
139
+
140
+ // 清理监听(避免内存泄漏)
141
+ onUnmounted(() => {
142
+ window.microApp.clearDataListener();
143
+ listeners.value.clear();
144
+ });
145
+
146
+ return {
147
+ sendMessage, // 发送消息的方法
148
+ onMessage, // 监听消息的方法
149
+ clearCache, // 清除缓存
150
+ getBaseAppData, // 获取主应用下发的消息
151
+ offMessage, // 移除指定监听函数
152
+ listeners, // 应用的监听函数集合
153
+ // receivedMessage, // 接收到的消息列表
154
+ sendGlobalMessage, // 发送全局消息的方法
155
+ onGlobalMessage, // 监听全局消息的方法
156
+ };
157
+ }
@@ -0,0 +1,62 @@
1
+ import {
2
+ type ClassificationLevelList,
3
+ createAxiosWithoutCache,
4
+ useAppServiceApi
5
+ } from "@jari-ace/app-bolts";
6
+ import {ref} from "vue";
7
+
8
+ const levelList = ref<ClassificationLevelList>()
9
+
10
+ async function loadLevels(serviceName: string) {
11
+ if (!levelList.value) {
12
+ if (!serviceName) serviceName = 'ace-global-app'
13
+ const axios = createAxiosWithoutCache()
14
+ const api = useAppServiceApi(axios)
15
+ levelList.value = await api.getClassificationLevels(serviceName)
16
+ }
17
+ }
18
+
19
+ /**
20
+ * 获取系统密级
21
+ * @param serviceName 服务名
22
+ */
23
+ export async function useSystemClassificationLevels(serviceName?: string) {
24
+ await loadLevels(serviceName);
25
+ return levelList.value.system;
26
+ }
27
+
28
+ /**
29
+ * 获取用户密级
30
+ * @param serviceName 服务名
31
+ */
32
+ export async function useUserClassificationLevel(serviceName?: string) {
33
+ await loadLevels(serviceName);
34
+ return levelList.value.user;
35
+ }
36
+
37
+ /**
38
+ * 获取用户密级反向映射,可以根据密级获取密级对应的中文标签
39
+ * @param serviceName 服务名
40
+ */
41
+ export async function useUserClassificationLevelMap(serviceName?: string) {
42
+ await loadLevels(serviceName);
43
+ const map = new Map<number, string>()
44
+ for (let i = 0; i < levelList.value.user.length; i++) {
45
+ const l = levelList.value.user[i];
46
+ map.set(l.value, l.label);
47
+ }
48
+ return map;
49
+ }
50
+ /**
51
+ * 获取系统密级反向映射,可以根据密级获取密级对应的中文标签
52
+ * @param serviceName 服务名
53
+ */
54
+ export async function useSystemClassificationLevelMap(serviceName?: string){
55
+ await loadLevels(serviceName);
56
+ const map = new Map<number, string>()
57
+ for (let i = 0; i < levelList.value.system.length; i++) {
58
+ const l = levelList.value.system[i];
59
+ map.set(l.value, l.label);
60
+ }
61
+ return map;
62
+ }
@@ -1,65 +1,65 @@
1
- export const shortcuts = [
2
- {
3
- text: '近一天',
4
- value: () => {
5
- const end = new Date()
6
- const start = new Date()
7
- start.setDate(start.getDate() - 1)
8
- return [start, end]
9
- },
10
- },
11
- {
12
- text: '近三天',
13
- value: () => {
14
- const end = new Date()
15
- const start = new Date()
16
- start.setDate(start.getDate() - 3)
17
- return [start, end]
18
- },
19
- },
20
- {
21
- text: '近一周',
22
- value: () => {
23
- const end = new Date()
24
- const start = new Date()
25
- start.setDate(start.getDate() - 7)
26
- return [start, end]
27
- },
28
- },
29
- {
30
- text: '近一月',
31
- value: () => {
32
- const end = new Date()
33
- const start = new Date()
34
- start.setMonth(start.getMonth() - 1)
35
- return [start, end]
36
- },
37
- },
38
- {
39
- text: '近三月',
40
- value: () => {
41
- const end = new Date()
42
- const start = new Date()
43
- start.setMonth(start.getMonth() - 3)
44
- return [start, end]
45
- },
46
- },
47
- {
48
- text: '近半年',
49
- value: () => {
50
- const end = new Date()
51
- const start = new Date()
52
- start.setMonth(start.getMonth() - 6)
53
- return [start, end]
54
- },
55
- },
56
- {
57
- text: '近一年',
58
- value: () => {
59
- const end = new Date()
60
- const start = new Date()
61
- start.setFullYear(start.getFullYear() - 1)
62
- return [start, end]
63
- },
64
- },
65
- ]
1
+ export const shortcuts = [
2
+ {
3
+ text: '近一天',
4
+ value: () => {
5
+ const end = new Date()
6
+ const start = new Date()
7
+ start.setDate(start.getDate() - 1)
8
+ return [start, end]
9
+ },
10
+ },
11
+ {
12
+ text: '近三天',
13
+ value: () => {
14
+ const end = new Date()
15
+ const start = new Date()
16
+ start.setDate(start.getDate() - 3)
17
+ return [start, end]
18
+ },
19
+ },
20
+ {
21
+ text: '近一周',
22
+ value: () => {
23
+ const end = new Date()
24
+ const start = new Date()
25
+ start.setDate(start.getDate() - 7)
26
+ return [start, end]
27
+ },
28
+ },
29
+ {
30
+ text: '近一月',
31
+ value: () => {
32
+ const end = new Date()
33
+ const start = new Date()
34
+ start.setMonth(start.getMonth() - 1)
35
+ return [start, end]
36
+ },
37
+ },
38
+ {
39
+ text: '近三月',
40
+ value: () => {
41
+ const end = new Date()
42
+ const start = new Date()
43
+ start.setMonth(start.getMonth() - 3)
44
+ return [start, end]
45
+ },
46
+ },
47
+ {
48
+ text: '近半年',
49
+ value: () => {
50
+ const end = new Date()
51
+ const start = new Date()
52
+ start.setMonth(start.getMonth() - 6)
53
+ return [start, end]
54
+ },
55
+ },
56
+ {
57
+ text: '近一年',
58
+ value: () => {
59
+ const end = new Date()
60
+ const start = new Date()
61
+ start.setFullYear(start.getFullYear() - 1)
62
+ return [start, end]
63
+ },
64
+ },
65
+ ]