@meethive/components 0.0.2 → 0.0.4

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 (111) hide show
  1. package/es/AutoComplete/AutoComplete.js +71 -80
  2. package/es/BadgeStatus/Badge.js +38 -47
  3. package/es/CardSelect/CardSelect.js +115 -137
  4. package/es/CheckButton/CheckButton.js +102 -118
  5. package/es/ConfigProvider/ConfigProvider.js +44 -68
  6. package/es/DragModal/DragModal.js +191 -212
  7. package/es/EditTable/Body.js +158 -189
  8. package/es/EditTable/CellRender.js +10 -12
  9. package/es/EditTable/EditTable.js +385 -434
  10. package/es/EditTable/FormItem.js +140 -169
  11. package/es/EditTable/Group.js +171 -204
  12. package/es/EditTable/Header.js +57 -63
  13. package/es/EditTable/HeaderRender.js +10 -12
  14. package/es/EditTable/components/ContextMenu/Menu.js +78 -86
  15. package/es/EditTable/components/Search/Search.js +151 -163
  16. package/es/EditTable/components/Search/Sort.js +104 -119
  17. package/es/Ellipsis/Ellipsis.js +144 -148
  18. package/es/Empty/Empty.js +51 -57
  19. package/es/FullPage/FullPage.js +20 -19
  20. package/es/Icon/Icon.js +42 -49
  21. package/es/LocaleProvider/LocaleProvider.js +38 -31
  22. package/es/Markdown/Markdown.js +101 -118
  23. package/es/PermissionButton/PermissionButton.js +118 -118
  24. package/es/ProLayout/Basic/BasicLayout.js +301 -418
  25. package/es/ProLayout/Basic/Header.js +91 -111
  26. package/es/ProLayout/PageContainer/index.js +267 -344
  27. package/es/ProLayout/SiderMenu/BaseMenu.js +186 -240
  28. package/es/ProTable/Alert.js +39 -40
  29. package/es/ProTable/Content.js +84 -97
  30. package/es/ProTable/Header.js +32 -33
  31. package/es/ProTable/Pagination.js +56 -55
  32. package/es/ProTable/ProTable.js +256 -276
  33. package/es/RadioButton/RadioButton.js +48 -53
  34. package/es/Scrollbar/Bar.js +65 -76
  35. package/es/Scrollbar/Scrollbar.js +129 -161
  36. package/es/Scrollbar/Thumb.js +101 -150
  37. package/es/Search/Item.js +208 -236
  38. package/es/Search/Search.js +90 -90
  39. package/es/Skeleton/Skeleton.js +26 -27
  40. package/es/Skeleton/components/DashBoardCard.js +26 -27
  41. package/es/Skeleton/components/DashBoardChart.js +26 -27
  42. package/es/Skeleton/components/Detail.js +26 -27
  43. package/es/Skeleton/components/Drawer.js +26 -27
  44. package/es/Skeleton/components/Item.js +55 -54
  45. package/es/Skeleton/components/List.js +29 -27
  46. package/es/Skeleton/components/ListCard.js +28 -28
  47. package/es/Skeleton/components/ListCardItem.js +20 -20
  48. package/es/Skeleton/components/ListTable.js +26 -27
  49. package/es/Skeleton/components/Page.js +27 -26
  50. package/es/Skeleton/components/Search.js +16 -16
  51. package/es/Skeleton/components/Tree.js +26 -27
  52. package/es/TimeFormat/TimeFormat.js +32 -36
  53. package/es/Title/Title.js +23 -26
  54. package/es/ValueItem/ValueItem.js +100 -113
  55. package/es/VirtualTable/VirtualTable.js +235 -271
  56. package/lib/AutoComplete/AutoComplete.js +71 -80
  57. package/lib/BadgeStatus/Badge.js +38 -47
  58. package/lib/CardSelect/CardSelect.js +115 -137
  59. package/lib/CheckButton/CheckButton.js +102 -118
  60. package/lib/ConfigProvider/ConfigProvider.js +44 -68
  61. package/lib/DragModal/DragModal.js +191 -212
  62. package/lib/EditTable/Body.js +158 -189
  63. package/lib/EditTable/CellRender.js +10 -12
  64. package/lib/EditTable/EditTable.js +385 -434
  65. package/lib/EditTable/FormItem.js +140 -169
  66. package/lib/EditTable/Group.js +171 -204
  67. package/lib/EditTable/Header.js +57 -63
  68. package/lib/EditTable/HeaderRender.js +10 -12
  69. package/lib/EditTable/components/ContextMenu/Menu.js +78 -86
  70. package/lib/EditTable/components/Search/Search.js +151 -163
  71. package/lib/EditTable/components/Search/Sort.js +104 -119
  72. package/lib/Ellipsis/Ellipsis.js +144 -148
  73. package/lib/Empty/Empty.js +51 -57
  74. package/lib/FullPage/FullPage.js +20 -19
  75. package/lib/Icon/Icon.js +42 -49
  76. package/lib/LocaleProvider/LocaleProvider.js +38 -31
  77. package/lib/Markdown/Markdown.js +101 -118
  78. package/lib/PermissionButton/PermissionButton.js +118 -118
  79. package/lib/ProLayout/Basic/BasicLayout.js +301 -418
  80. package/lib/ProLayout/Basic/Header.js +91 -111
  81. package/lib/ProLayout/PageContainer/index.js +267 -344
  82. package/lib/ProLayout/SiderMenu/BaseMenu.js +186 -240
  83. package/lib/ProTable/Alert.js +39 -40
  84. package/lib/ProTable/Content.js +84 -97
  85. package/lib/ProTable/Header.js +32 -33
  86. package/lib/ProTable/Pagination.js +56 -55
  87. package/lib/ProTable/ProTable.js +256 -276
  88. package/lib/RadioButton/RadioButton.js +48 -53
  89. package/lib/Scrollbar/Bar.js +65 -76
  90. package/lib/Scrollbar/Scrollbar.js +129 -161
  91. package/lib/Scrollbar/Thumb.js +101 -150
  92. package/lib/Search/Item.js +208 -236
  93. package/lib/Search/Search.js +90 -90
  94. package/lib/Skeleton/Skeleton.js +26 -27
  95. package/lib/Skeleton/components/DashBoardCard.js +26 -27
  96. package/lib/Skeleton/components/DashBoardChart.js +26 -27
  97. package/lib/Skeleton/components/Detail.js +26 -27
  98. package/lib/Skeleton/components/Drawer.js +26 -27
  99. package/lib/Skeleton/components/Item.js +55 -54
  100. package/lib/Skeleton/components/List.js +29 -27
  101. package/lib/Skeleton/components/ListCard.js +28 -28
  102. package/lib/Skeleton/components/ListCardItem.js +20 -20
  103. package/lib/Skeleton/components/ListTable.js +26 -27
  104. package/lib/Skeleton/components/Page.js +27 -26
  105. package/lib/Skeleton/components/Search.js +16 -16
  106. package/lib/Skeleton/components/Tree.js +26 -27
  107. package/lib/TimeFormat/TimeFormat.js +32 -36
  108. package/lib/Title/Title.js +23 -26
  109. package/lib/ValueItem/ValueItem.js +100 -113
  110. package/lib/VirtualTable/VirtualTable.js +235 -271
  111. package/package.json +1 -1
@@ -1,239 +1,211 @@
1
- function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
- import { defineComponent, computed, ref, reactive, watch, isRef } from 'vue'
3
- import { Select } from 'ant-design-vue'
4
- import { componentProps, componentType, typeOptions } from './setting'
5
- import { getTermOptions, getItemDefaultValue } from './util'
6
- import { useLocaleReceiver } from '../LocaleReciver'
7
- import { useColumnsMap, useDefaultValue, useOptionMap } from './hooks'
8
- import { isArray, isFunction } from 'lodash-es'
9
- import useSearchStyle from './style'
10
-
11
- export default defineComponent({
12
- name: 'JSearchItem',
13
- components: { Select },
14
- props: {
15
- column: {
16
- type: String
17
- },
18
- value: {
19
- type: String
20
- },
21
- termType: {
22
- type: String,
23
- default: 'like'
24
- },
25
- type: {
26
- type: String,
27
- default: 'or'
28
- },
29
- expand: {
30
- type: Boolean,
31
- default: false
32
- },
33
- onlyValue: {
34
- type: Boolean,
35
- default: true
36
- },
37
- labelWidth: {
38
- type: Number,
39
- default: 40
40
- },
41
- index: {
42
- type: Number,
43
- default: 1
44
- }
45
- },
46
- emits: ['update:value', 'update:termType', 'update:type', 'update:column'],
47
- setup(props, { emit }) {
48
- const termsModel = reactive({
49
- type: props.type || 'or',
50
- value: props.value || '',
51
- termType: props.termType || 'like',
52
- column: props.column || undefined
53
- })
54
-
55
- const [contextLocale] = useLocaleReceiver('Search')
56
- const optionsMap = useOptionMap()
57
- const columnsMap = useColumnsMap()
58
- const columnsValues = useDefaultValue()
59
-
60
- const targetComponents = ref({})
61
- const valueOptions = ref()
62
-
63
- const btwKeys = computed(() => {
64
- const record = findItemByColumn()
65
- if (record.search.isBtw && Array.isArray(record.search.isBtw)) {
66
- return [...record.search.isBtw, 'in', 'nin']
67
- }
68
- return ['in', 'nin']
69
- })
70
-
71
- const prefixCls = computed(() => 'JSearch')
72
- const [wrapSSR, hashId] = useSearchStyle(prefixCls)
73
-
74
- const termTypeOptions = computed(() => {
75
- const columnTarget = findItemByColumn()
76
- const columnSearch = _optionalChain([columnTarget, 'optionalAccess', _ => _.search])
77
- let _termsOptions = getTermOptions(targetComponents.value.type, contextLocale.value)
78
-
79
- if (_optionalChain([columnSearch, 'optionalAccess', _2 => _2.termOptions])) {
80
- _termsOptions = columnSearch.termOptions
81
- } else if (_optionalChain([columnSearch, 'optionalAccess', _3 => _3.termFilter, 'optionalAccess', _4 => _4.length])) {
82
- _termsOptions = _termsOptions.filter(
83
- (item) => !_optionalChain([columnSearch, 'access', _5 => _5.termFilter, 'optionalAccess', _6 => _6.includes, 'call', _7 => _7(item.value)])
84
- )
85
- }
86
-
87
- return _termsOptions
88
- })
89
-
90
- const columnOptions = computed(() => {
91
- return Object.values(columnsMap.value)
92
- .sort((a, b) => a._sort_index - b._sort_index)
93
- .map((item) => ({ label: item.title, value: item.dataIndex }))
94
- })
95
-
96
- const findItemByColumn = () => {
97
- return columnsMap.value[termsModel.column ]
98
- }
99
-
100
- const findOptionsByColumn = () => {
101
- return optionsMap.value[termsModel.column ]
102
- }
103
-
1
+ import { defineComponent, computed, ref, reactive, watch, isRef } from 'vue';
2
+ import { Select } from 'ant-design-vue';
3
+ import { componentProps, componentType, typeOptions } from './setting';
4
+ import { getTermOptions, getItemDefaultValue } from './util';
5
+ import { useLocaleReceiver } from '../LocaleReciver';
6
+ import { useColumnsMap, useDefaultValue, useOptionMap } from './hooks';
7
+ import { isArray, isFunction } from 'lodash-es';
8
+ import useSearchStyle from './style';
9
+ export default defineComponent({
10
+ name: 'JSearchItem',
11
+ components: {
12
+ Select
13
+ },
14
+ props: {
15
+ column: {
16
+ type: String
17
+ },
18
+ value: {
19
+ type: String
20
+ },
21
+ termType: {
22
+ type: String,
23
+ default: 'like'
24
+ },
25
+ type: {
26
+ type: String,
27
+ default: 'or'
28
+ },
29
+ expand: {
30
+ type: Boolean,
31
+ default: false
32
+ },
33
+ onlyValue: {
34
+ type: Boolean,
35
+ default: true
36
+ },
37
+ labelWidth: {
38
+ type: Number,
39
+ default: 40
40
+ },
41
+ index: {
42
+ type: Number,
43
+ default: 1
44
+ }
45
+ },
46
+ emits: ['update:value', 'update:termType', 'update:type', 'update:column'],
47
+ setup(props, {
48
+ emit
49
+ }) {
50
+ const termsModel = reactive({
51
+ type: props.type || 'or',
52
+ value: props.value || '',
53
+ termType: props.termType || 'like',
54
+ column: props.column || undefined
55
+ });
56
+ const [contextLocale] = useLocaleReceiver('Search');
57
+ const optionsMap = useOptionMap();
58
+ const columnsMap = useColumnsMap();
59
+ const columnsValues = useDefaultValue();
60
+ const targetComponents = ref({});
61
+ const valueOptions = ref();
62
+ const btwKeys = computed(() => {
63
+ const record = findItemByColumn();
64
+ if (record.search.isBtw && Array.isArray(record.search.isBtw)) {
65
+ return [...record.search.isBtw, 'in', 'nin'];
66
+ }
67
+ return ['in', 'nin'];
68
+ });
69
+ const prefixCls = computed(() => 'JSearch');
70
+ const [wrapSSR, hashId] = useSearchStyle(prefixCls);
71
+ const termTypeOptions = computed(() => {
72
+ const columnTarget = findItemByColumn();
73
+ const columnSearch = columnTarget?.search;
74
+ let _termsOptions = getTermOptions(targetComponents.value.type, contextLocale.value);
75
+ if (columnSearch?.termOptions) {
76
+ _termsOptions = columnSearch.termOptions;
77
+ } else if (columnSearch?.termFilter?.length) {
78
+ _termsOptions = _termsOptions.filter(item => !columnSearch.termFilter?.includes(item.value));
79
+ }
80
+ return _termsOptions;
81
+ });
82
+ const columnOptions = computed(() => {
83
+ return Object.values(columnsMap.value).sort((a, b) => a._sort_index - b._sort_index).map(item => ({
84
+ label: item.title,
85
+ value: item.dataIndex
86
+ }));
87
+ });
88
+ const findItemByColumn = () => {
89
+ return columnsMap.value[termsModel.column];
90
+ };
91
+ const findOptionsByColumn = () => {
92
+ return optionsMap.value[termsModel.column];
93
+ };
94
+
104
95
  /**
105
96
  * 处理options
106
97
  * @param _options
107
- */
108
- const handleColumnsOptions = async (_options) => {
109
- if (isFunction(_options)) {
110
- valueOptions.value = await _options()
111
- optionsMap.value[props.column ] = [...valueOptions.value]
112
- } else if (isArray(_options)) {
113
- valueOptions.value = _options
114
- } else if (isRef(_options) || (typeof _options === 'object' && 'value' in _options)) {
115
- valueOptions.value = _options.value
116
- }
117
- }
118
-
119
- const onTypeChange = () => {
120
- emit('update:type', termsModel.type)
121
- }
122
-
123
- const onColumnChange = () => {
124
- const record = findItemByColumn()
125
- const defaultValue = getItemDefaultValue(record, columnsValues.value)
126
-
127
- // 处理默认选项
128
- termsModel.termType = defaultValue.termType
129
- // 处理默认值
130
- termsModel.value = defaultValue.value
131
-
132
- emit('update:column', termsModel.column)
133
- onTermTypeChange()
134
- onValueChange()
135
- }
136
-
137
- const onTermTypeChange = () => {
138
- const isBtw = btwKeys.value.includes(termsModel.termType)
139
-
140
- if (!isBtw && termsModel.value && Array.isArray(termsModel.value)) {
141
- termsModel.value = termsModel.value[0]
142
- onValueChange()
143
- } else if (isBtw && termsModel.value && !Array.isArray(termsModel.value)) {
144
- termsModel.value = [termsModel.value]
145
- onValueChange()
146
- }
147
-
148
- emit('update:termType', termsModel.termType)
149
- }
150
-
151
- const onValueChange = () => {
152
- emit('update:value', termsModel.value)
153
- }
154
-
155
- const handleTermsModelValue = (isBtw) => {
156
- if (isBtw) {
157
- if (termsModel.value && !Array.isArray(termsModel.value)) {
158
- termsModel.value = [termsModel.value]
159
- } else if (!termsModel.value) {
160
- termsModel.value = []
161
- }
162
- } else {
163
- if (termsModel.value && Array.isArray(termsModel.value)) {
164
- termsModel.value = termsModel.value[0]
165
- } else if (!termsModel.value) {
166
- termsModel.value = undefined
167
- }
168
- }
169
- }
170
-
171
- watch(
172
- () => [targetComponents.value.name, termsModel.termType],
173
- () => {
174
- const isBtw = btwKeys.value.includes(termsModel.termType)
175
-
176
- if (targetComponents.value.type === componentType.treeSelect) {
177
- targetComponents.value.props = {
178
- ...targetComponents.value.props,
179
- multiple: isBtw
180
- }
181
- handleTermsModelValue(isBtw)
182
- } else if (targetComponents.value.type === componentType.select) {
183
- targetComponents.value.props = {
184
- ...targetComponents.value.props,
185
- mode: isBtw ? 'multiple' : 'combobox'
186
- }
187
- handleTermsModelValue(isBtw)
188
- }
189
- },
190
- { immediate: true, deep: true }
191
- )
192
-
193
- watch(
194
- () => [termsModel.column, columnsMap.value],
195
- async () => {
196
- // 根据column从map中获取record,再解析search属性
197
- const record = findItemByColumn()
198
- if (!record) return
199
-
200
- const options = findOptionsByColumn()
201
- targetComponents.value = componentProps(record.search)
202
- targetComponents.value.label = record.title
203
-
204
- // 处理options
205
- if (options) {
206
- valueOptions.value = options
207
- } else {
208
- await handleColumnsOptions(record.search.options)
209
- }
210
- },
211
- { immediate: true, deep: true }
212
- )
213
-
214
- watch(
215
- () => [props.value, props.termType, props.column, props.type],
216
- () => {
217
- termsModel.value = props.value
218
- termsModel.termType = props.termType
219
- termsModel.column = props.column
220
- termsModel.type = props.type
221
- }
222
- )
223
-
224
- return {
225
- termsModel,
226
- contextLocale,
227
- targetComponents,
228
- valueOptions,
229
- hashId,
230
- termTypeOptions,
231
- columnOptions,
232
- typeOptions,
233
- onTypeChange,
234
- onColumnChange,
235
- onTermTypeChange,
236
- onValueChange
237
- }
238
- }
239
- })
98
+ */
99
+ const handleColumnsOptions = async _options => {
100
+ if (isFunction(_options)) {
101
+ valueOptions.value = await _options();
102
+ optionsMap.value[props.column] = [...valueOptions.value];
103
+ } else if (isArray(_options)) {
104
+ valueOptions.value = _options;
105
+ } else if (isRef(_options) || typeof _options === 'object' && 'value' in _options) {
106
+ valueOptions.value = _options.value;
107
+ }
108
+ };
109
+ const onTypeChange = () => {
110
+ emit('update:type', termsModel.type);
111
+ };
112
+ const onColumnChange = () => {
113
+ const record = findItemByColumn();
114
+ const defaultValue = getItemDefaultValue(record, columnsValues.value);
115
+
116
+ // 处理默认选项
117
+ termsModel.termType = defaultValue.termType;
118
+ // 处理默认值
119
+ termsModel.value = defaultValue.value;
120
+ emit('update:column', termsModel.column);
121
+ onTermTypeChange();
122
+ onValueChange();
123
+ };
124
+ const onTermTypeChange = () => {
125
+ const isBtw = btwKeys.value.includes(termsModel.termType);
126
+ if (!isBtw && termsModel.value && Array.isArray(termsModel.value)) {
127
+ termsModel.value = termsModel.value[0];
128
+ onValueChange();
129
+ } else if (isBtw && termsModel.value && !Array.isArray(termsModel.value)) {
130
+ termsModel.value = [termsModel.value];
131
+ onValueChange();
132
+ }
133
+ emit('update:termType', termsModel.termType);
134
+ };
135
+ const onValueChange = () => {
136
+ emit('update:value', termsModel.value);
137
+ };
138
+ const handleTermsModelValue = isBtw => {
139
+ if (isBtw) {
140
+ if (termsModel.value && !Array.isArray(termsModel.value)) {
141
+ termsModel.value = [termsModel.value];
142
+ } else if (!termsModel.value) {
143
+ termsModel.value = [];
144
+ }
145
+ } else {
146
+ if (termsModel.value && Array.isArray(termsModel.value)) {
147
+ termsModel.value = termsModel.value[0];
148
+ } else if (!termsModel.value) {
149
+ termsModel.value = undefined;
150
+ }
151
+ }
152
+ };
153
+ watch(() => [targetComponents.value.name, termsModel.termType], () => {
154
+ const isBtw = btwKeys.value.includes(termsModel.termType);
155
+ if (targetComponents.value.type === componentType.treeSelect) {
156
+ targetComponents.value.props = {
157
+ ...targetComponents.value.props,
158
+ multiple: isBtw
159
+ };
160
+ handleTermsModelValue(isBtw);
161
+ } else if (targetComponents.value.type === componentType.select) {
162
+ targetComponents.value.props = {
163
+ ...targetComponents.value.props,
164
+ mode: isBtw ? 'multiple' : 'combobox'
165
+ };
166
+ handleTermsModelValue(isBtw);
167
+ }
168
+ }, {
169
+ immediate: true,
170
+ deep: true
171
+ });
172
+ watch(() => [termsModel.column, columnsMap.value], async () => {
173
+ // 根据column从map中获取record,再解析search属性
174
+ const record = findItemByColumn();
175
+ if (!record) return;
176
+ const options = findOptionsByColumn();
177
+ targetComponents.value = componentProps(record.search);
178
+ targetComponents.value.label = record.title;
179
+
180
+ // 处理options
181
+ if (options) {
182
+ valueOptions.value = options;
183
+ } else {
184
+ await handleColumnsOptions(record.search.options);
185
+ }
186
+ }, {
187
+ immediate: true,
188
+ deep: true
189
+ });
190
+ watch(() => [props.value, props.termType, props.column, props.type], () => {
191
+ termsModel.value = props.value;
192
+ termsModel.termType = props.termType;
193
+ termsModel.column = props.column;
194
+ termsModel.type = props.type;
195
+ });
196
+ return {
197
+ termsModel,
198
+ contextLocale,
199
+ targetComponents,
200
+ valueOptions,
201
+ hashId,
202
+ termTypeOptions,
203
+ columnOptions,
204
+ typeOptions,
205
+ onTypeChange,
206
+ onColumnChange,
207
+ onTermTypeChange,
208
+ onValueChange
209
+ };
210
+ }
211
+ });
@@ -1,90 +1,90 @@
1
-
2
- import { defineComponent, reactive, ref, computed, inject, useAttrs } from 'vue'
3
- import { searchProps } from './setting'
4
- import { useLocaleReceiver } from '../LocaleReciver'
5
- import { Button, Col, Form, FormItemRest, Row } from 'ant-design-vue'
6
- import { SearchConfig } from '../utils/constants'
7
- import Item from './Item.js'
8
- import { useHandleColumns, useOptionMapContent } from './hooks'
9
- import { termsParamsFormat } from './util'
10
- import useSearchStyle from './style'
11
-
12
- export default defineComponent({
13
- name: 'JSearch',
14
- components: {
15
- Button,
16
- Col,
17
- Form,
18
- FormItemRest,
19
- Row,
20
- Item
21
- },
22
- inheritAttrs: false,
23
- props: {
24
- ...searchProps()
25
- } ,
26
- emits: ['search'],
27
- setup(props, { emit, expose }) {
28
- const [contextLocale] = useLocaleReceiver('Search')
29
- const attrs = useAttrs()
30
-
31
- const columnsOptionMap = ref({}) // 存储每个columnItem的option
32
- const terms = reactive({ terms: [] }) // 当前查询条件
33
-
34
- const context = inject(SearchConfig, { align: props.align })
35
-
36
- const { initValues, columnsMap } = useHandleColumns(props, terms)
37
-
38
- const prefixCls = computed(() => 'JSearch')
39
- const [wrapSSR, hashId] = useSearchStyle(prefixCls)
40
-
41
- useOptionMapContent(columnsOptionMap)
42
-
43
- const footerStyles = computed(() => {
44
- const align = context.align || props.align
45
- if (align === 'value') {
46
- return { paddingLeft: `${props.labelWidth + 8}px` }
47
- }
48
- return {}
49
- })
50
-
51
- const searchSubmit = () => {
52
- emit('search', termsParamsFormat(terms, columnsMap.value, 'low', props.type))
53
- }
54
-
55
- const reset = () => {
56
- initValues()
57
- }
58
-
59
- const handleDefaultValues = (value) => {
60
- const isObject = Object.prototype.toString.call(value) === '[object Object]'
61
- let _params = isObject
62
- ? Object.keys(value).map((key) => ({ column: key, value: value[key], termType: 'eq' }))
63
- : [...value]
64
-
65
- terms.terms.forEach((item) => {
66
- const paramsItem = _params.find((paramsItem) => paramsItem.column === item.column)
67
- if (paramsItem) {
68
- item.value = paramsItem.value
69
- }
70
- })
71
-
72
- emit('search', termsParamsFormat(terms, columnsMap.value))
73
- }
74
-
75
- expose({
76
- setValues: handleDefaultValues,
77
- reset
78
- })
79
-
80
- return {
81
- contextLocale,
82
- attrs,
83
- terms,
84
- hashId,
85
- footerStyles,
86
- searchSubmit,
87
- reset
88
- }
89
- }
90
- })
1
+ import { defineComponent, reactive, ref, computed, inject, useAttrs } from 'vue';
2
+ import { searchProps } from './setting';
3
+ import { useLocaleReceiver } from '../LocaleReciver';
4
+ import { Button, Col, Form, FormItemRest, Row } from 'ant-design-vue';
5
+ import { SearchConfig } from '../utils/constants';
6
+ import Item from './Item.js';
7
+ import { useHandleColumns, useOptionMapContent } from './hooks';
8
+ import { termsParamsFormat } from './util';
9
+ import useSearchStyle from './style';
10
+ export default defineComponent({
11
+ name: 'JSearch',
12
+ components: {
13
+ Button,
14
+ Col,
15
+ Form,
16
+ FormItemRest,
17
+ Row,
18
+ Item
19
+ },
20
+ inheritAttrs: false,
21
+ props: {
22
+ ...searchProps()
23
+ },
24
+ emits: ['search'],
25
+ setup(props, {
26
+ emit,
27
+ expose
28
+ }) {
29
+ const [contextLocale] = useLocaleReceiver('Search');
30
+ const attrs = useAttrs();
31
+ const columnsOptionMap = ref({}); // 存储每个columnItem的option
32
+ const terms = reactive({
33
+ terms: []
34
+ }); // 当前查询条件
35
+
36
+ const context = inject(SearchConfig, {
37
+ align: props.align
38
+ });
39
+ const {
40
+ initValues,
41
+ columnsMap
42
+ } = useHandleColumns(props, terms);
43
+ const prefixCls = computed(() => 'JSearch');
44
+ const [wrapSSR, hashId] = useSearchStyle(prefixCls);
45
+ useOptionMapContent(columnsOptionMap);
46
+ const footerStyles = computed(() => {
47
+ const align = context.align || props.align;
48
+ if (align === 'value') {
49
+ return {
50
+ paddingLeft: `${props.labelWidth + 8}px`
51
+ };
52
+ }
53
+ return {};
54
+ });
55
+ const searchSubmit = () => {
56
+ emit('search', termsParamsFormat(terms, columnsMap.value, 'low', props.type));
57
+ };
58
+ const reset = () => {
59
+ initValues();
60
+ };
61
+ const handleDefaultValues = value => {
62
+ const isObject = Object.prototype.toString.call(value) === '[object Object]';
63
+ let _params = isObject ? Object.keys(value).map(key => ({
64
+ column: key,
65
+ value: value[key],
66
+ termType: 'eq'
67
+ })) : [...value];
68
+ terms.terms.forEach(item => {
69
+ const paramsItem = _params.find(paramsItem => paramsItem.column === item.column);
70
+ if (paramsItem) {
71
+ item.value = paramsItem.value;
72
+ }
73
+ });
74
+ emit('search', termsParamsFormat(terms, columnsMap.value));
75
+ };
76
+ expose({
77
+ setValues: handleDefaultValues,
78
+ reset
79
+ });
80
+ return {
81
+ contextLocale,
82
+ attrs,
83
+ terms,
84
+ hashId,
85
+ footerStyles,
86
+ searchSubmit,
87
+ reset
88
+ };
89
+ }
90
+ });