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