agilebuilder-ui 1.1.41 → 1.1.42

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 (28) hide show
  1. package/lib/{401-deb6f978.js → 401-89fd25ba.js} +1 -1
  2. package/lib/{404-ca0b33ee.js → 404-4264aeb1.js} +1 -1
  3. package/lib/{iframe-page-eb39ba95.js → iframe-page-4a8dcdbb.js} +1 -1
  4. package/lib/{index-a36c91b2.js → index-50fdf8ae.js} +4630 -4580
  5. package/lib/super-ui.css +1 -1
  6. package/lib/super-ui.js +1 -1
  7. package/lib/super-ui.umd.cjs +85 -85
  8. package/lib/{tab-content-iframe-index-094835e7.js → tab-content-iframe-index-16207fb9.js} +1 -1
  9. package/lib/{tab-content-index-92b24462.js → tab-content-index-8ae8c396.js} +1 -1
  10. package/lib/{tache-subprocess-history-0d32337a.js → tache-subprocess-history-110e29f2.js} +1 -1
  11. package/package.json +1 -1
  12. package/packages/fs-preview/src/fs-preview.vue +38 -29
  13. package/packages/fs-upload-new/src/fs-button-upload.vue +34 -1
  14. package/packages/fs-upload-new/src/fs-drag-upload.vue +43 -2
  15. package/packages/fs-upload-new/src/fs-preview-new.vue +6 -4
  16. package/packages/super-grid/src/custom-formatter.js +16 -10
  17. package/packages/super-grid/src/dynamic-input.vue +7 -2
  18. package/packages/super-grid/src/normal-column.vue +8 -4
  19. package/packages/super-grid/src/search-form-advancedQuery.vue +1 -1
  20. package/packages/super-grid/src/search-form-item.vue +23 -23
  21. package/packages/super-grid/src/search-form-open.vue +164 -158
  22. package/packages/super-grid/src/super-grid-service.js +141 -153
  23. package/packages/super-grid/src/super-grid.vue +43 -14
  24. package/packages/super-nine-grid/src/search-form.vue +465 -659
  25. package/packages/workgroup-tree-inline/src/workgroup-tree-inline.vue +515 -539
  26. package/packages/workgroup-user-tree-inline/src/workgroup-tree-inline-service.js +24 -44
  27. package/packages/workgroup-user-tree-inline/src/workgroup-user-tree-inline.vue +626 -665
  28. package/src/utils/permission.js +86 -9
@@ -1,704 +1,510 @@
1
1
  <template>
2
- <el-form
3
- v-if="searchableColumns.length > 0"
4
- ref="searchForm"
5
- :label-position="query.queryLabelPosition"
6
- :label-width="labelWidth"
7
- :model="searchForm"
8
- :rules="rules"
9
- class="grid-search-form"
10
- size="default"
11
- >
12
- <table>
13
- <tr v-for="r of rowNum" :key="r">
14
- <td
15
- v-for="n of getColumnNumPerRow(r, searchableColumns.length)"
16
- :key="n"
17
- >
18
- <el-form-item
19
- :label-width="
20
- searchableColumns[fieldNum * (r - 1) + (n - 1)].searchLabelWidth
21
- ? searchableColumns[fieldNum * (r - 1) + (n - 1)]
22
- .searchLabelWidth
23
- : '160px'
2
+ <el-form
3
+ v-if="searchableColumns.length > 0"
4
+ ref="searchForm"
5
+ :label-position="query.queryLabelPosition"
6
+ :label-width="labelWidth"
7
+ :model="searchForm"
8
+ :rules="rules"
9
+ class="grid-search-form"
10
+ size="default"
11
+ >
12
+ <el-row v-for="r of rowNum" :key="r">
13
+ <el-col
14
+ v-for="n of getColumnNumPerRow(r, searchableColumns.length)"
15
+ :key="n"
16
+ :span="6"
17
+ style="margin-bottom: 5px"
18
+ >
19
+ <el-form-item
20
+ :prop="searchableColumns[fieldNum * (r - 1) + (n - 1)].prop"
21
+ style="margin-left: 10px"
22
+ label-width="100px"
23
+ >
24
+ <template v-slot:label>
25
+ <span
26
+ v-if="
27
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].searchLabel &&
28
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].searchLabel !== ''
29
+ "
30
+ v-html="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchLabel.replace(/\\n/g, '</br>')"
31
+ />
32
+ <span v-else v-html="searchableColumns[fieldNum * (r - 1) + (n - 1)].label.replace(/\\n/g, '</br>')" />:
33
+ </template>
34
+ <el-date-picker
35
+ v-if="
36
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType === 'DATE' ||
37
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'date'
24
38
  "
25
- :prop="searchableColumns[fieldNum * (r - 1) + (n - 1)].prop"
26
- :style="{ paddingLeft: '10px', minWidth: '200px' }"
27
- >
28
- <template v-slot:label>
29
- <span
30
- v-if="
31
- searchableColumns[fieldNum * (r - 1) + (n - 1)].searchLabel &&
32
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
33
- .searchLabel !== ''
34
- "
35
- v-html="
36
- searchableColumns[
37
- fieldNum * (r - 1) + (n - 1)
38
- ].searchLabel.replace(/\\n/g, '</br>')
39
- "
40
- />
41
- <span
42
- v-else
43
- v-html="
44
- searchableColumns[fieldNum * (r - 1) + (n - 1)].label.replace(
45
- /\\n/g,
46
- '</br>'
47
- )
48
- "
49
- />
50
- </template>
51
- <el-date-picker
52
- v-if="
53
- searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType ===
54
- 'DATE' ||
55
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
56
- .componentType === 'date'
57
- "
58
- :end-placeholder="$t('imatrixUIMessage.endDate')"
59
- :model-value="
60
- getFormItemValue(
61
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
62
- )
63
- "
64
- :range-separator="$t('imatrixUIPublicModel.to')"
65
- :start-placeholder="$t('imatrixUIMessage.startDate')"
66
- :style="
67
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
68
- .searchControlWidth
69
- "
70
- type="daterange"
71
- unlink-panels
72
- value-format="YYYY-MM-DD"
73
- @input="
74
- setValueToModelProp(
75
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
76
- $event
77
- )
78
- "
79
- />
39
+ :end-placeholder="$t('imatrixUIMessage.endDate')"
40
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
41
+ :range-separator="$t('imatrixUIPublicModel.to')"
42
+ :start-placeholder="$t('imatrixUIMessage.startDate')"
43
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
44
+ type="daterange"
45
+ unlink-panels
46
+ value-format="YYYY-MM-DD"
47
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
48
+ />
80
49
 
81
- <el-date-picker
82
- v-else-if="
83
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
84
- .componentType === 'dateTimePicker'
85
- "
86
- :end-placeholder="$t('imatrixUIMessage.endDate')"
87
- :model-value="
88
- getFormItemValue(
89
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
90
- )
91
- "
92
- :range-separator="$t('imatrixUIPublicModel.to')"
93
- :start-placeholder="$t('imatrixUIMessage.startDate')"
94
- :style="
95
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
96
- .searchControlWidth
97
- "
98
- type="datetimerange"
99
- unlink-panels
100
- value-format="YYYY-MM-DD HH:mm:ss"
101
- @input="
102
- setValueToModelProp(
103
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
104
- $event
105
- )
106
- "
107
- />
50
+ <el-date-picker
51
+ v-else-if="searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'dateTimePicker'"
52
+ :end-placeholder="$t('imatrixUIMessage.endDate')"
53
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
54
+ :range-separator="$t('imatrixUIPublicModel.to')"
55
+ :start-placeholder="$t('imatrixUIMessage.startDate')"
56
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
57
+ type="datetimerange"
58
+ unlink-panels
59
+ value-format="YYYY-MM-DD HH:mm:ss"
60
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
61
+ />
108
62
 
109
- <el-date-picker
110
- v-else-if="
111
- searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType ===
112
- 'TIME' &&
113
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
114
- .componentType === 'timepicker'
115
- "
116
- :end-placeholder="$t('imatrixUIMessage.endDate')"
117
- :model-value="
118
- getFormItemValue(
119
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
120
- )
121
- "
122
- :range-separator="$t('imatrixUIPublicModel.to')"
123
- :start-placeholder="$t('imatrixUIMessage.startDate')"
124
- :style="
125
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
126
- .searchControlWidth
127
- "
128
- type="datetimerange"
129
- unlink-panels
130
- value-format="HH:mm:ss"
131
- @input="
132
- setValueToModelProp(
133
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
134
- $event
135
- )
136
- "
137
- />
63
+ <el-date-picker
64
+ v-else-if="
65
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType === 'TIME' &&
66
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'timepicker'
67
+ "
68
+ :end-placeholder="$t('imatrixUIMessage.endDate')"
69
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
70
+ :range-separator="$t('imatrixUIPublicModel.to')"
71
+ :start-placeholder="$t('imatrixUIMessage.startDate')"
72
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
73
+ type="datetimerange"
74
+ unlink-panels
75
+ value-format="HH:mm:ss"
76
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
77
+ />
138
78
 
139
- <el-time-picker
140
- v-else-if="
141
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
142
- .componentType === 'timepicker' &&
143
- searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType !==
144
- 'TIME' &&
145
- searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType !==
146
- 'DATE'
147
- "
148
- :model-value="
149
- getFormItemValue(
150
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
151
- )
152
- "
153
- :placeholder="$t('imatrixUIMessage.selectTime')"
154
- style="width: 100%"
155
- type="fixed-time"
156
- value-format="HH:mm:ss"
157
- @input="
158
- setValueToModelProp(
159
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
160
- $event
161
- )
162
- "
163
- />
164
- <el-select
165
- v-else-if="
166
- (searchableColumns[fieldNum * (r - 1) + (n - 1)]
167
- .componentType &&
168
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
169
- .componentType === 'select') ||
170
- searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType ===
171
- 'BOOLEAN'
172
- "
173
- :model-value="
174
- getFormItemValue(
175
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
176
- )
177
- "
178
- :placeholder="$t('imatrixUIMessage.pleaseSelect')"
179
- :style="
180
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
181
- .searchControlWidth
182
- "
183
- clearable
184
- @input="
185
- setValueToModelProp(
186
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
187
- $event
188
- )
189
- "
190
- >
191
- <el-option
192
- v-for="item in searchableColumns[fieldNum * (r - 1) + (n - 1)]
193
- .valueSet"
194
- :key="item.value"
195
- :label="item.label"
196
- :value="item.value"
197
- />
198
- </el-select>
199
- <el-select
200
- v-else-if="
201
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
202
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
203
- .componentType === 'multiselect'
204
- "
205
- :model-value="
206
- getFormItemValue(
207
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
208
- )
209
- "
210
- :placeholder="$t('imatrixUIMessage.pleaseSelect')"
211
- :style="
212
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
213
- .searchControlWidth
214
- "
215
- clearable
216
- collapse-tags
217
- multiple
218
- @input="
219
- setValueToModelProp(
220
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
221
- $event
222
- )
223
- "
224
- >
225
- <el-option
226
- v-for="item in searchableColumns[fieldNum * (r - 1) + (n - 1)]
227
- .valueSet"
228
- :key="item.value"
229
- :label="item.label"
230
- :value="item.value"
231
- />
232
- </el-select>
233
- <!--
79
+ <el-time-picker
80
+ v-else-if="
81
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'timepicker' &&
82
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType !== 'TIME' &&
83
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType !== 'DATE'
84
+ "
85
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
86
+ :placeholder="$t('imatrixUIMessage.selectTime')"
87
+ style="width: 100%"
88
+ type="fixed-time"
89
+ value-format="HH:mm:ss"
90
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
91
+ />
92
+ <el-select
93
+ v-else-if="
94
+ (searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
95
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'select') ||
96
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].dataType === 'BOOLEAN'
97
+ "
98
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
99
+ :placeholder="$t('imatrixUIMessage.pleaseSelect')"
100
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
101
+ clearable
102
+ @change="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
103
+ >
104
+ <el-option
105
+ v-for="item in searchableColumns[fieldNum * (r - 1) + (n - 1)].valueSet"
106
+ :key="item.value"
107
+ :label="item.label"
108
+ :value="item.value"
109
+ />
110
+ </el-select>
111
+ <el-select
112
+ v-else-if="
113
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
114
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'multiselect'
115
+ "
116
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
117
+ :placeholder="$t('imatrixUIMessage.pleaseSelect')"
118
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
119
+ clearable
120
+ collapse-tags
121
+ multiple
122
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
123
+ >
124
+ <el-option
125
+ v-for="item in searchableColumns[fieldNum * (r - 1) + (n - 1)].valueSet"
126
+ :key="item.value"
127
+ :label="item.label"
128
+ :value="item.value"
129
+ />
130
+ </el-select>
131
+ <!--
234
132
  <el-input-number
235
133
  v-else-if="searchableColumns[fieldNum*(r-1)+(n-1)].componentType && searchableColumns[fieldNum*(r-1)+(n-1)].componentType==='inputNumber'"
236
134
  :value="getFormItemValue(searchableColumns[fieldNum*(r-1)+(n-1)].prop)"
237
135
  @input="setValueToModelProp(searchableColumns[fieldNum*(r-1)+(n-1)].prop,$event)"
238
136
  /> -->
239
137
 
240
- <search-form-number
241
- v-else-if="
242
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
243
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
244
- .componentType === 'inputNumber'
245
- "
246
- :n="n"
247
- :r="r"
248
- @setValue="setNumberValue"
249
- />
138
+ <search-form-number
139
+ v-else-if="
140
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
141
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'inputNumber'
142
+ "
143
+ :n="n"
144
+ :r="r"
145
+ @setValue="setNumberValue"
146
+ />
250
147
 
251
- <el-switch
252
- v-else-if="
253
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
254
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
255
- .componentType === 'switch'
256
- "
257
- :model-value="
258
- getFormItemValue(
259
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
260
- )
261
- "
262
- :style="
263
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
264
- .searchControlWidth
265
- "
266
- active-color="#13ce66"
267
- inactive-color="#ff4949"
268
- @input="
269
- setValueToModelProp(
270
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
271
- $event
272
- )
273
- "
274
- />
275
- <el-slider
276
- v-else-if="
277
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
278
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
279
- .componentType === 'slider'
280
- "
281
- :model-value="
282
- getFormItemValue(
283
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
284
- )
285
- "
286
- :style="
287
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
288
- .searchControlWidth
289
- "
290
- @input="
291
- setValueToModelProp(
292
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
293
- $event
294
- )
295
- "
296
- />
148
+ <el-switch
149
+ v-else-if="
150
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
151
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'switch'
152
+ "
153
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
154
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
155
+ active-color="#13ce66"
156
+ inactive-color="#ff4949"
157
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
158
+ />
159
+ <el-slider
160
+ v-else-if="
161
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
162
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'slider'
163
+ "
164
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
165
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
166
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
167
+ />
297
168
 
298
- <el-rate
299
- v-else-if="
300
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
301
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
302
- .componentType === 'rate'
303
- "
304
- :model-value="
305
- getFormItemValue(
306
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
307
- )
308
- "
309
- :style="
310
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
311
- .searchControlWidth
312
- "
313
- @input="
314
- setValueToModelProp(
315
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
316
- $event
317
- )
318
- "
319
- />
320
- <span
321
- v-else-if="
322
- customComponent(
323
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
324
- ) === true
325
- "
326
- >
327
- <component
328
- :is="
329
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentName
330
- "
331
- :ref="
332
- searchableColumns[fieldNum * (r - 1) + (n - 1)].componentName
333
- "
334
- :prop="searchableColumns[fieldNum * (r - 1) + (n - 1)].prop"
335
- :value="
336
- getFormItemValue(
337
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
338
- )
339
- "
340
- class="customComponent"
341
- @input="
342
- setValueToModelProp(
343
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
344
- $event
345
- )
346
- "
347
- />
348
- </span>
349
- <el-input
350
- v-else
351
- :model-value="
352
- getFormItemValue(
353
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop
354
- )
355
- "
356
- :style="
357
- searchableColumns[fieldNum * (r - 1) + (n - 1)]
358
- .searchControlWidth
359
- "
360
- @input="
361
- setValueToModelProp(
362
- searchableColumns[fieldNum * (r - 1) + (n - 1)].prop,
363
- $event
364
- )
365
- "
366
- @keyup.enter="submitForm('searchForm')"
367
- />
368
- </el-form-item>
369
- </td>
370
- </tr>
371
- </table>
169
+ <el-rate
170
+ v-else-if="
171
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType &&
172
+ searchableColumns[fieldNum * (r - 1) + (n - 1)].componentType === 'rate'
173
+ "
174
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
175
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
176
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
177
+ />
178
+ <span v-else-if="customComponent(searchableColumns[fieldNum * (r - 1) + (n - 1)]) === true">
179
+ <component
180
+ :is="searchableColumns[fieldNum * (r - 1) + (n - 1)].componentName"
181
+ :ref="searchableColumns[fieldNum * (r - 1) + (n - 1)].componentName"
182
+ :prop="searchableColumns[fieldNum * (r - 1) + (n - 1)].prop"
183
+ :value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
184
+ class="customComponent"
185
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
186
+ />
187
+ </span>
188
+ <el-input
189
+ v-else
190
+ :model-value="getFormItemValue(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop)"
191
+ :style="searchableColumns[fieldNum * (r - 1) + (n - 1)].searchControlWidth"
192
+ @input="setValueToModelProp(searchableColumns[fieldNum * (r - 1) + (n - 1)].prop, $event)"
193
+ @keyup.enter="submitForm('searchForm')"
194
+ />
195
+ </el-form-item>
196
+ </el-col>
197
+ <!-- <el-col :span="6">
198
+ <el-form-item style="margin-left: 10px" label-width="0px">
199
+ <el-button :loading="loading" size="default" type="primary" @click="submitForm('searchForm')">
200
+ {{ $t('imatrixUIPublicModel.sure') }}
201
+ </el-button>
202
+ <el-button :loading="loading" size="default" @click="resetForm('searchForm')">
203
+ {{ $t('imatrixUIPublicModel.reset') }}
204
+ </el-button>
205
+ </el-form-item>
206
+ </el-col> -->
207
+ </el-row>
372
208
 
373
- <el-form-item class="search-btn">
374
- <el-button
375
- :loading="loading"
376
- size="default"
377
- type="primary"
378
- @click="submitForm('searchForm')"
379
- >
380
- {{ $t('imatrixUIPublicModel.sure') }}
381
- </el-button>
382
- <el-button
383
- :loading="loading"
384
- size="default"
385
- @click="resetForm('searchForm')"
386
- >
387
- {{ $t('imatrixUIPublicModel.reset') }}
388
- </el-button>
389
- </el-form-item>
390
- </el-form>
209
+ <el-row class="search-btn">
210
+ <el-button :loading="loading" size="default" type="primary" @click="submitForm('searchForm')">
211
+ {{ $t('imatrixUIPublicModel.sure') }}
212
+ </el-button>
213
+ <el-button :loading="loading" size="default" @click="resetForm('searchForm')">
214
+ {{ $t('imatrixUIPublicModel.reset') }}
215
+ </el-button>
216
+ </el-row>
217
+ </el-form>
391
218
  </template>
392
219
 
393
220
  <script>
394
- import {$on, $off, $once, $emit} from '../../utils/gogocodeTransfer'
221
+ import { $on, $off, $once, $emit } from '../../utils/gogocodeTransfer'
395
222
  import searchMethods from './search-methods'
396
223
  import searchFormNumber from './search-form-number.vue'
397
224
  import store from './store'
398
225
  // import { isOptionFunction, getSearchObject } from './utils'
399
- import {addDynamicProp} from './utils'
226
+ import { addDynamicProp } from './utils'
400
227
  import * as Vue from 'vue'
401
228
 
402
229
  export default {
403
- name: 'SearchForm',
404
- components: {
405
- searchFormNumber,
406
- },
407
- props: {
408
- columns: {
409
- type: Array,
410
- default: null,
411
- },
412
- code: {
413
- type: String,
414
- default: null,
415
- },
416
- url: {
417
- type: String,
418
- default: null,
419
- },
420
- pagination: {
421
- type: Object,
422
- default: null,
423
- },
424
- query: {
425
- type: Object,
426
- default: null,
427
- },
428
- searchParam: {
429
- type: Object,
430
- default: null,
431
- },
432
- initSearchProps: {
433
- type: Array,
434
- default: null,
435
- },
436
- // 九宫格组件的id
437
- gridId: {
438
- type: String,
439
- default: '_nineGrid',
440
- },
441
- },
442
- data() {
443
- const storeId = this.code + '~' + this.gridId
444
- const customComponentNames = new Set()
445
- const gridParams = store.get(storeId)
446
- let searchForm = {}
447
- if (this.searchParam !== null) {
448
- searchForm = JSON.parse(JSON.stringify(this.searchParam))
449
- // searchForm = this.searchParam
450
- }
451
- console.log('searchForm=', searchForm)
452
- const searchColumns = this.getSearchableColumns()
453
- if (this.initSearchProps === undefined || this.initSearchProps === null) {
454
- this.initSearchProps = []
455
- }
456
- searchColumns.forEach((column) => {
457
- if (this.initSearchProps.indexOf(column.prop) < 0) {
458
- // 表示没有默认初始查询字段
459
- if (column.prop.indexOf('.') > 0) {
460
- // 动态给searchForm添加属性,包括多级嵌套属性,属性的初始值都为 null
461
- addDynamicProp(searchForm, column.prop)
462
- } else {
463
- searchForm[column.prop] = null
464
- }
465
- }
466
- })
230
+ name: 'SearchForm',
231
+ components: {
232
+ searchFormNumber
233
+ },
234
+ props: {
235
+ columns: {
236
+ type: Array,
237
+ default: null
238
+ },
239
+ code: {
240
+ type: String,
241
+ default: null
242
+ },
243
+ url: {
244
+ type: String,
245
+ default: null
246
+ },
247
+ pagination: {
248
+ type: Object,
249
+ default: null
250
+ },
251
+ query: {
252
+ type: Object,
253
+ default: null
254
+ },
255
+ searchParam: {
256
+ type: Object,
257
+ default: null
258
+ },
259
+ initSearchProps: {
260
+ type: Array,
261
+ default: null
262
+ },
263
+ // 九宫格组件的id
264
+ gridId: {
265
+ type: String,
266
+ default: '_nineGrid'
267
+ }
268
+ },
269
+ data() {
270
+ const storeId = this.code + '~' + this.gridId
271
+ const customComponentNames = new Set()
272
+ const gridParams = store.get(storeId)
273
+ let searchForm = {}
274
+ if (this.searchParam !== null) {
275
+ searchForm = JSON.parse(JSON.stringify(this.searchParam))
276
+ // searchForm = this.searchParam
277
+ }
278
+ console.log('searchForm=', searchForm)
279
+ const searchColumns = this.getSearchableColumns()
280
+ if (this.initSearchProps === undefined || this.initSearchProps === null) {
281
+ this.initSearchProps = []
282
+ }
283
+ searchColumns.forEach((column) => {
284
+ if (this.initSearchProps.indexOf(column.prop) < 0) {
285
+ // 表示没有默认初始查询字段
286
+ if (column.prop.indexOf('.') > 0) {
287
+ // 动态给searchForm添加属性,包括多级嵌套属性,属性的初始值都为 null
288
+ addDynamicProp(searchForm, column.prop)
289
+ } else {
290
+ searchForm[column.prop] = null
291
+ }
292
+ }
293
+ })
467
294
 
468
- const spanNum = this.getSpanNum(storeId)
469
- const fieldNum = this.getFieldNumPerRow(storeId)
470
- const rowNum = Math.ceil(searchColumns.length / fieldNum)
471
- // console.log('searchColumns.length=' + searchColumns.length + ',fieldNum=' + fieldNum + ',rowNum=' + rowNum)
472
- // // -2是把
473
- // const dateSpanNum = (spanNum - 2) / 2
295
+ const spanNum = this.getSpanNum(storeId)
296
+ const fieldNum = this.getFieldNumPerRow(storeId)
297
+ const rowNum = Math.ceil(searchColumns.length / fieldNum)
298
+ // console.log('searchColumns.length=' + searchColumns.length + ',fieldNum=' + fieldNum + ',rowNum=' + rowNum)
299
+ // // -2是把
300
+ // const dateSpanNum = (spanNum - 2) / 2
474
301
 
475
- return {
476
- searchForm,
477
- rules: {},
478
- searchParams: [],
479
- labelWidth:
480
- gridParams.options.search && gridParams.options.search.labelWidth
481
- ? gridParams.options.search.labelWidth
482
- : '80px',
483
- customComponentNames: customComponentNames,
484
- componentName: '',
485
- spanNum: spanNum,
486
- fieldNum: fieldNum, // 每行放的字段个数
487
- rowNum: rowNum, // 一共有几行
488
- loading: false, // 是否正在查询,默认时否
489
- storeId, // 缓存的列表id
490
- }
491
- },
492
- computed: {
493
- searchableColumns() {
494
- return this.getSearchableColumns()
495
- },
496
- },
497
- methods: {
498
- ...searchMethods,
499
- // 获得每行排放的字段个数
500
- getColumnNumPerRow(rowIndex, searchColumnsLength) {
501
- let columnNumPerRow = this.fieldNum
502
- if (this.fieldNum * rowIndex > searchColumnsLength) {
503
- // 表示字段无法填满最后一行
504
- columnNumPerRow = searchColumnsLength - this.fieldNum * (rowIndex - 1)
505
- }
506
- return columnNumPerRow
507
- },
508
- // 每行放的字段个数
509
- getFieldNumPerRow(storeId) {
510
- const gridParams = store.get(storeId)
511
- // console.log('gridParamsgridParamsgridParamsgridParams', gridParams)
512
- return gridParams.options.search && gridParams.options.search.fieldNum
513
- ? gridParams.options.search.fieldNum
514
- : 4
515
- },
516
- // 根据每行显示的字段个数,确定栅栏个数,默认是4个字段。最多就只能放6个字段
517
- getSpanNum(storeId) {
518
- const fieldNum = this.getFieldNumPerRow(storeId)
519
- if (fieldNum === 1) {
520
- return 14
521
- } else if (fieldNum === 2) {
522
- return 10
523
- } else if (fieldNum === 3) {
524
- return 8
525
- } else if (fieldNum === 4) {
526
- return 6
527
- } else {
528
- // 6个字段
529
- return 4
530
- }
531
- },
532
- setValueToModelProp(prop, value) {
533
- if (prop.indexOf('.') > 0) {
534
- const parentOjbect = this.getParentObject(prop)
535
- // 嵌套属性中的最后一个属性是属于这个中间父对象的,所有要通过中间父对象来赋值
536
- parentOjbect[prop.substring(prop.lastIndexOf('.') + 1)] = value
537
- } else {
538
- this.searchForm[prop] = value
539
- }
540
- },
541
- getSearchableColumns(columns, searchColumns) {
542
- // console.log('columnscolumnscolumns', columns)
543
- if (!this.customComponentNames) {
544
- this.customComponentNames = new Set()
545
- }
546
- if (!searchColumns) {
547
- searchColumns = []
548
- }
549
- if (!columns) {
550
- columns = this.columns
551
- }
552
- for (let i = 0; i < columns.length; i++) {
553
- const column = columns[i]
554
- if (
555
- column.prop === '$index' ||
556
- column.prop === '$selection' ||
557
- column.dynamic
558
- ) {
559
- // 序号和复选框列、动态列 不属于该组件的查询字段
560
- continue
561
- }
562
- if (column.groupHeader) {
563
- // 组合表头中子表头的字段查询
564
- this.getSearchableColumns(column.children, searchColumns)
565
- } else {
566
- if (
567
- column.queryType === 'normal' &&
568
- !column.custom &&
569
- column.prop !== ''
570
- ) {
571
- // 表示是普通查询,且不是占位符列,是查询字段
572
- if (
573
- typeof column.componentType === 'undefined' ||
574
- column.componentType === ''
575
- ) {
576
- column.componentType = 'input'
577
- }
578
- if (column.querySetting && column.querySetting !== '') {
579
- const querySetting = JSON.parse(column.querySetting)
580
- if (querySetting.width) {
581
- column.searchControlWidth = 'width:' + querySetting.width + 'px'
582
- }
583
- if (querySetting.labelWidth) {
584
- column.searchLabelWidth = querySetting.labelWidth + 'px'
585
- }
586
- if (querySetting.label) {
587
- column.searchLabel = querySetting.label
588
- }
589
- }
590
- // 行编辑时自定义编辑组件
591
- if (column.componentType.indexOf('custom:') >= 0) {
592
- column.componentName = column.componentType.substring(
593
- column.componentType.indexOf(':') + 1
594
- )
595
- this.customComponentNames.add(column.componentName)
596
- } else {
597
- column.componentName = ''
598
- }
599
- searchColumns.push(column)
600
- }
601
- }
602
- }
603
- return searchColumns
604
- },
605
- customComponent(column) {
606
- const gridParams = store.get(this.storeId)
607
- if (column.componentName && column.componentName !== '') {
608
- this.customComponentNames.add(column.componentName)
609
- return true
610
- }
611
- if (
612
- (!column.componentName || column.componentName === '') &&
613
- gridParams.options &&
614
- gridParams.options.search &&
615
- gridParams.options.search.customSearchElements
616
- ) {
617
- // 定义了自定义查询组件
618
- const propSearchEle =
619
- gridParams.options.search.customSearchElements[column.prop]
620
- // console.log('customComponent-customSearchElements-propSearchEle-', column.prop)
621
- if (propSearchEle) {
622
- column.componentName = 'custom-' + column.prop
623
- const component = propSearchEle.call(this, column)
624
- // console.log('customComponent-customSearchElements-')
625
- if (component) {
626
- this.customComponentNames.add(column.componentName)
627
- window.$vueApp.component(column.componentName, component)
628
- return true
629
- }
630
- }
631
- }
632
- return false
633
- },
634
- submitForm(formName) {
635
- this.$refs[formName].validate((valid) => {
636
- if (valid) {
637
- // const searchDemo = [
638
- // { leftBracket: '', propName: 'name', enumName: '', operator: 'contain', propValue: '系统', rightBracket: '', joinSign: 'and', dataType: 'TEXT' },
639
- // { leftBracket: '', propName: 'createdTime', enumName: '', operator: 'eq', startValue: '2019-01-29', endValue: '2019-01-30', propValue: '2019-01-30', rightBracket: '', joinSign: 'and', dataType: 'DATE' },
640
- // { leftBracket: '', propName: 'enabledState', enumName: 'tech.imatrix.enumeration.MenuState', operator: 'eq', propValue: 'ENABLE', rightBracket: '', joinSign: 'and', dataType: 'ENUM' }
641
- // ]
642
- this.loading = true
643
- this.searchParams = this.packageSearchParam()
644
- $emit(this, 'search', this.searchParams, true)
645
- } else {
646
- // console.log('error submit!!')
647
- return false
648
- }
649
- })
650
- },
302
+ return {
303
+ searchForm,
304
+ rules: {},
305
+ searchParams: [],
306
+ labelWidth:
307
+ gridParams.options.search && gridParams.options.search.labelWidth
308
+ ? gridParams.options.search.labelWidth
309
+ : '80px',
310
+ customComponentNames: customComponentNames,
311
+ componentName: '',
312
+ spanNum: spanNum,
313
+ fieldNum: fieldNum, // 每行放的字段个数
314
+ rowNum: rowNum, // 一共有几行
315
+ loading: false, // 是否正在查询,默认时否
316
+ storeId // 缓存的列表id
317
+ }
318
+ },
319
+ computed: {
320
+ searchableColumns() {
321
+ return this.getSearchableColumns()
322
+ }
323
+ },
324
+ methods: {
325
+ ...searchMethods,
326
+ // 获得每行排放的字段个数
327
+ getColumnNumPerRow(rowIndex, searchColumnsLength) {
328
+ let columnNumPerRow = this.fieldNum
329
+ if (this.fieldNum * rowIndex > searchColumnsLength) {
330
+ // 表示字段无法填满最后一行
331
+ columnNumPerRow = searchColumnsLength - this.fieldNum * (rowIndex - 1)
332
+ }
333
+ return columnNumPerRow
334
+ },
335
+ // 每行放的字段个数
336
+ getFieldNumPerRow(storeId) {
337
+ const gridParams = store.get(storeId)
338
+ // console.log('gridParamsgridParamsgridParamsgridParams', gridParams)
339
+ return gridParams.options.search && gridParams.options.search.fieldNum ? gridParams.options.search.fieldNum : 4
340
+ },
341
+ // 根据每行显示的字段个数,确定栅栏个数,默认是4个字段。最多就只能放6个字段
342
+ getSpanNum(storeId) {
343
+ const fieldNum = this.getFieldNumPerRow(storeId)
344
+ if (fieldNum === 1) {
345
+ return 14
346
+ } else if (fieldNum === 2) {
347
+ return 10
348
+ } else if (fieldNum === 3) {
349
+ return 8
350
+ } else if (fieldNum === 4) {
351
+ return 6
352
+ } else {
353
+ // 6个字段
354
+ return 4
355
+ }
356
+ },
357
+ setValueToModelProp(prop, value) {
358
+ if (prop.indexOf('.') > 0) {
359
+ const parentOjbect = this.getParentObject(prop)
360
+ // 嵌套属性中的最后一个属性是属于这个中间父对象的,所有要通过中间父对象来赋值
361
+ parentOjbect[prop.substring(prop.lastIndexOf('.') + 1)] = value
362
+ } else {
363
+ this.searchForm[prop] = value
364
+ }
365
+ },
366
+ getSearchableColumns(columns, searchColumns) {
367
+ // console.log('columnscolumnscolumns', columns)
368
+ if (!this.customComponentNames) {
369
+ this.customComponentNames = new Set()
370
+ }
371
+ if (!searchColumns) {
372
+ searchColumns = []
373
+ }
374
+ if (!columns) {
375
+ columns = this.columns
376
+ }
377
+ for (let i = 0; i < columns.length; i++) {
378
+ const column = columns[i]
379
+ if (column.prop === '$index' || column.prop === '$selection' || column.dynamic) {
380
+ // 序号和复选框列、动态列 不属于该组件的查询字段
381
+ continue
382
+ }
383
+ if (column.groupHeader) {
384
+ // 组合表头中子表头的字段查询
385
+ this.getSearchableColumns(column.children, searchColumns)
386
+ } else {
387
+ if (column.queryType === 'normal' && !column.custom && column.prop !== '') {
388
+ // 表示是普通查询,且不是占位符列,是查询字段
389
+ if (typeof column.componentType === 'undefined' || column.componentType === '') {
390
+ column.componentType = 'input'
391
+ }
392
+ if (column.querySetting && column.querySetting !== '') {
393
+ const querySetting = JSON.parse(column.querySetting)
394
+ if (querySetting.width) {
395
+ column.searchControlWidth = 'width:' + querySetting.width + 'px'
396
+ }
397
+ if (querySetting.labelWidth) {
398
+ column.searchLabelWidth = querySetting.labelWidth + 'px'
399
+ }
400
+ if (querySetting.label) {
401
+ column.searchLabel = querySetting.label
402
+ }
403
+ }
404
+ // 行编辑时自定义编辑组件
405
+ if (column.componentType.indexOf('custom:') >= 0) {
406
+ column.componentName = column.componentType.substring(column.componentType.indexOf(':') + 1)
407
+ this.customComponentNames.add(column.componentName)
408
+ } else {
409
+ column.componentName = ''
410
+ }
411
+ searchColumns.push(column)
412
+ }
413
+ }
414
+ }
415
+ return searchColumns
416
+ },
417
+ customComponent(column) {
418
+ const gridParams = store.get(this.storeId)
419
+ if (column.componentName && column.componentName !== '') {
420
+ this.customComponentNames.add(column.componentName)
421
+ return true
422
+ }
423
+ if (
424
+ (!column.componentName || column.componentName === '') &&
425
+ gridParams.options &&
426
+ gridParams.options.search &&
427
+ gridParams.options.search.customSearchElements
428
+ ) {
429
+ // 定义了自定义查询组件
430
+ const propSearchEle = gridParams.options.search.customSearchElements[column.prop]
431
+ // console.log('customComponent-customSearchElements-propSearchEle-', column.prop)
432
+ if (propSearchEle) {
433
+ column.componentName = 'custom-' + column.prop
434
+ const component = propSearchEle.call(this, column)
435
+ // console.log('customComponent-customSearchElements-')
436
+ if (component) {
437
+ this.customComponentNames.add(column.componentName)
438
+ window.$vueApp.component(column.componentName, component)
439
+ return true
440
+ }
441
+ }
442
+ }
443
+ return false
444
+ },
445
+ submitForm(formName) {
446
+ this.$refs[formName].validate((valid) => {
447
+ if (valid) {
448
+ // const searchDemo = [
449
+ // { leftBracket: '', propName: 'name', enumName: '', operator: 'contain', propValue: '系统', rightBracket: '', joinSign: 'and', dataType: 'TEXT' },
450
+ // { leftBracket: '', propName: 'createdTime', enumName: '', operator: 'eq', startValue: '2019-01-29', endValue: '2019-01-30', propValue: '2019-01-30', rightBracket: '', joinSign: 'and', dataType: 'DATE' },
451
+ // { leftBracket: '', propName: 'enabledState', enumName: 'tech.imatrix.enumeration.MenuState', operator: 'eq', propValue: 'ENABLE', rightBracket: '', joinSign: 'and', dataType: 'ENUM' }
452
+ // ]
453
+ this.loading = true
454
+ this.searchParams = this.packageSearchParam()
455
+ $emit(this, 'search', this.searchParams, true)
456
+ } else {
457
+ // console.log('error submit!!')
458
+ return false
459
+ }
460
+ })
461
+ },
651
462
 
652
- resetForm(formName) {
653
- // console.log('customComponentNames=', this.customComponentNames)
654
- for (const componentName of this.customComponentNames) {
655
- // 遍历
656
- this.$refs[componentName][0].resetField()
657
- }
658
- // this.$refs[formName].resetFields()
463
+ resetForm(formName) {
464
+ // console.log('customComponentNames=', this.customComponentNames)
465
+ for (const componentName of this.customComponentNames) {
466
+ // 遍历
467
+ this.$refs[componentName][0].resetField()
468
+ }
469
+ // this.$refs[formName].resetFields()
659
470
 
660
- this.searchableColumns.forEach((column) => {
661
- // 表示没有默认初始查询字段
662
- if (column.prop.indexOf('.') > 0) {
663
- // 动态给searchForm添加属性,包括多级嵌套属性,属性的初始值都为 null
664
- addDynamicProp(this.searchForm, column.prop)
665
- } else {
666
- this.searchForm[column.prop] = null
667
- }
668
- })
669
- $emit(this, 'reset')
670
- },
671
- setNumberValue(value, r, n) {
672
- let itemValue = this.getFormItemValue(
673
- this.searchableColumns[this.fieldNum * (r - 1) + (n - 1)].prop
674
- )
675
- itemValue = value
676
- this.setValueToModelProp(
677
- this.searchableColumns[this.fieldNum * (r - 1) + (n - 1)].prop,
678
- itemValue
679
- )
680
- },
681
- },
682
- emits: ['search', 'reset'],
471
+ this.searchableColumns.forEach((column) => {
472
+ // 表示没有默认初始查询字段
473
+ if (column.prop.indexOf('.') > 0) {
474
+ // 动态给searchForm添加属性,包括多级嵌套属性,属性的初始值都为 null
475
+ addDynamicProp(this.searchForm, column.prop)
476
+ } else {
477
+ this.searchForm[column.prop] = null
478
+ }
479
+ })
480
+ $emit(this, 'reset')
481
+ },
482
+ setNumberValue(value, r, n) {
483
+ let itemValue = this.getFormItemValue(this.searchableColumns[this.fieldNum * (r - 1) + (n - 1)].prop)
484
+ itemValue = value
485
+ this.setValueToModelProp(this.searchableColumns[this.fieldNum * (r - 1) + (n - 1)].prop, itemValue)
486
+ }
487
+ },
488
+ emits: ['search', 'reset']
683
489
  }
684
490
  </script>
685
491
 
686
492
  <style scoped>
687
493
  .grid-search-form {
688
- overflow: auto;
494
+ overflow: auto;
689
495
  }
690
496
 
691
497
  .grid-search-form :deep(.el-form-item) {
692
- margin-bottom: 0px;
498
+ margin-bottom: 0px;
693
499
  }
694
500
 
695
501
  .grid-search-form :deep(.search-btn) {
696
- margin-bottom: 5px;
697
- text-align: center;
502
+ justify-content: center; /* 确保按钮居中 */
503
+ /* 可选:间距更美观 */
698
504
  }
699
505
 
700
506
  .grid-search-form :deep(.el-select),
701
507
  .grid-search-form :deep(.customComponent) {
702
- width: 100%;
508
+ width: 100%;
703
509
  }
704
510
  </style>