agilebuilder-ui 1.1.40 → 1.1.41-sit1

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