@jari-ace/element-plus-component 0.0.2 → 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 (128) hide show
  1. package/README.md +18 -18
  2. package/dist/components/rolePicker/RoleEditor.vue.js +2 -2
  3. package/dist/components/rolePicker/RoleEditor.vue.js.map +1 -1
  4. package/dist/components/tip/index.d.ts +1 -35
  5. package/dist/components/tip/index.d.ts.map +1 -1
  6. package/dist/components/upload/index.d.ts +1 -1
  7. package/dist/components/upload/index.d.ts.map +1 -1
  8. package/dist/hooks/useBridage.d.ts +3 -3
  9. package/dist/hooks/useBridage.d.ts.map +1 -1
  10. package/dist/hooks/useBridage.js +29 -22
  11. package/dist/hooks/useBridage.js.map +1 -1
  12. package/dist/hooks/useUserRefQuery.d.ts +2 -2
  13. package/lib/index.css +1 -1
  14. package/lib/index.js +148 -141
  15. package/lib/index.umd.cjs +2 -2
  16. package/package.json +61 -61
  17. package/packages/components/autoComplete/JaAutoComplete.vue +47 -47
  18. package/packages/components/autoComplete/index.ts +5 -5
  19. package/packages/components/avatar/JaAvatar.vue +126 -126
  20. package/packages/components/avatar/avatarToken.ts +11 -11
  21. package/packages/components/avatar/defaultImg.ts +14 -14
  22. package/packages/components/avatar/index.ts +7 -7
  23. package/packages/components/button/JaButton.vue +51 -51
  24. package/packages/components/button/index.ts +4 -4
  25. package/packages/components/channelPicker/index.ts +7 -7
  26. package/packages/components/channelPicker/src/ChannelPicker.vue +43 -43
  27. package/packages/components/channelPicker/src/JaChannelPicker.vue +42 -42
  28. package/packages/components/checkbox/JaCheckbox.vue +73 -73
  29. package/packages/components/checkbox/index.ts +4 -4
  30. package/packages/components/checkboxGroup/JaCheckboxGroup.vue +45 -45
  31. package/packages/components/checkboxGroup/index.ts +4 -4
  32. package/packages/components/customGroupTree/index.ts +10 -10
  33. package/packages/components/customGroupTree/src/customGroupTree.vue +91 -91
  34. package/packages/components/datePicker/JaDatePicker.vue +52 -52
  35. package/packages/components/datePicker/index.ts +4 -4
  36. package/packages/components/departmentPicker/index.ts +4 -4
  37. package/packages/components/departmentPicker/src/DepartmentPicker.vue +107 -107
  38. package/packages/components/departmentPicker/src/consts.ts +2 -2
  39. package/packages/components/departmentTree/index.ts +10 -10
  40. package/packages/components/departmentTree/src/departmentTree.vue +135 -135
  41. package/packages/components/dropdownButton/JaDropdownButton.vue +59 -59
  42. package/packages/components/dropdownButton/index.ts +4 -4
  43. package/packages/components/enumList/EnumListInput.vue +107 -107
  44. package/packages/components/enumList/JaEnumList.vue +39 -39
  45. package/packages/components/enumList/index.ts +7 -7
  46. package/packages/components/form/JaForm.vue +126 -126
  47. package/packages/components/form/index.ts +5 -5
  48. package/packages/components/form/types.ts +4 -4
  49. package/packages/components/formItem/JaFormItem.vue +68 -68
  50. package/packages/components/formItem/index.ts +4 -4
  51. package/packages/components/index.ts +33 -33
  52. package/packages/components/input/JaInput.vue +143 -143
  53. package/packages/components/input/index.ts +4 -4
  54. package/packages/components/inputI18n/I18nBundleEditor.vue +76 -76
  55. package/packages/components/inputI18n/InputI18n.vue +142 -142
  56. package/packages/components/inputI18n/JaInputI18n.vue +50 -50
  57. package/packages/components/inputI18n/index.ts +8 -8
  58. package/packages/components/inputNumber/JaInputNumber.vue +98 -98
  59. package/packages/components/inputNumber/index.ts +4 -4
  60. package/packages/components/mapItemList/JaMapItemList.vue +35 -35
  61. package/packages/components/mapItemList/MapItemListInput.vue +191 -191
  62. package/packages/components/mapItemList/index.ts +7 -7
  63. package/packages/components/numberList/JaNumberList.vue +36 -36
  64. package/packages/components/numberList/NumberListInput.vue +111 -111
  65. package/packages/components/numberList/index.ts +7 -7
  66. package/packages/components/properyPicker/JaPropertyPicker.vue +38 -38
  67. package/packages/components/properyPicker/PropertyPicker.vue +314 -314
  68. package/packages/components/properyPicker/index.ts +7 -7
  69. package/packages/components/radioGroup/JaRadioGroup.vue +50 -50
  70. package/packages/components/radioGroup/index.ts +4 -4
  71. package/packages/components/rolePicker/RoleEditor.vue +129 -129
  72. package/packages/components/rolePicker/RolePicker.vue +44 -44
  73. package/packages/components/rolePicker/RolePickerRaw.vue +56 -56
  74. package/packages/components/rolePicker/baseRolePicker.vue +86 -86
  75. package/packages/components/rolePicker/index.ts +10 -10
  76. package/packages/components/scrollbar/Scrollbar.vue +89 -89
  77. package/packages/components/scrollbar/index.ts +5 -5
  78. package/packages/components/scrollbar/utils.ts +17 -17
  79. package/packages/components/select/JaSelect.vue +48 -48
  80. package/packages/components/select/index.ts +4 -4
  81. package/packages/components/stringList/JaStringList.vue +36 -36
  82. package/packages/components/stringList/StringListInput.vue +96 -96
  83. package/packages/components/stringList/index.ts +7 -7
  84. package/packages/components/switch/JaSwitch.vue +50 -50
  85. package/packages/components/switch/index.ts +4 -4
  86. package/packages/components/timePicker/JaTimePicker.vue +52 -52
  87. package/packages/components/timePicker/index.ts +5 -5
  88. package/packages/components/tip/index.ts +4 -4
  89. package/packages/components/tip/src/AceTip.vue +43 -43
  90. package/packages/components/upload/index.ts +6 -6
  91. package/packages/components/upload/src/Upload.vue +25 -25
  92. package/packages/components/upload/src/type.ts +3 -3
  93. package/packages/components/userGroupPicker/index.ts +4 -4
  94. package/packages/components/userGroupPicker/src/UserGroupPicker.vue +94 -94
  95. package/packages/components/userGroupTree/index.ts +10 -10
  96. package/packages/components/userGroupTree/src/userGroupTree.vue +149 -149
  97. package/packages/components/userPicker/index.ts +10 -10
  98. package/packages/components/userPicker/src/CustomGroupManager.vue +189 -189
  99. package/packages/components/userPicker/src/JaUserList.vue +283 -283
  100. package/packages/components/userPicker/src/JaUserPicker.vue +37 -37
  101. package/packages/components/userPicker/src/UserPicker.vue +366 -366
  102. package/packages/components/userSelectDialog/index.ts +6 -6
  103. package/packages/components/userSelectDialog/src/userSelectDialog.vue +447 -447
  104. package/packages/components/userTag/UserInfoTag.vue +397 -397
  105. package/packages/components/userTag/index.ts +6 -6
  106. package/packages/components/userTag/sharedAxios.ts +8 -8
  107. package/packages/directives/auth/index.ts +41 -41
  108. package/packages/directives/autofocus/index.ts +29 -29
  109. package/packages/directives/index.ts +10 -10
  110. package/packages/directives/shortcut/index.ts +192 -192
  111. package/packages/hooks/useAppInstances.ts +34 -34
  112. package/packages/hooks/useBackendValidations.ts +55 -55
  113. package/packages/hooks/useBridage.ts +157 -148
  114. package/packages/hooks/useDateTimeShortCuts.ts +65 -65
  115. package/packages/hooks/useTreeData.ts +45 -45
  116. package/packages/hooks/useUserRefQuery.ts +222 -222
  117. package/packages/index.ts +21 -21
  118. package/packages/list.json +7 -7
  119. package/packages/types/custom.d.ts +13 -13
  120. package/packages/types/window.d.ts +16 -16
  121. package/packages/utils/install.ts +43 -43
  122. package/packages/utils/objectUtils.ts +31 -31
  123. package/theme-style/fonts/iconfont.json +5196 -5196
  124. package/theme-style/index.scss +10 -10
  125. package/theme-style/styles/element-plus-var.scss +1419 -1419
  126. package/theme-style/styles/iconfont.css +2979 -2979
  127. package/theme-style/styles/theme-var.scss +72 -72
  128. 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
+ }