cnhis-design-vue 2.1.79 → 2.1.81

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 (130) hide show
  1. package/CHANGELOG.md +52 -4
  2. package/es/affix/index.js +8 -8
  3. package/es/age/index.js +10 -10
  4. package/es/alert/index.js +8 -8
  5. package/es/anchor/index.js +8 -8
  6. package/es/auto-complete/index.js +8 -8
  7. package/es/avatar/index.js +8 -8
  8. package/es/back-top/index.js +8 -8
  9. package/es/badge/index.js +8 -8
  10. package/es/base/index.js +8 -8
  11. package/es/big-table/index.js +115 -95
  12. package/es/big-table/style.css +1 -1
  13. package/es/breadcrumb/index.js +8 -8
  14. package/es/button/index.js +22 -22
  15. package/es/calendar/index.js +8 -8
  16. package/es/captcha/index.js +3 -3
  17. package/es/card/index.js +8 -8
  18. package/es/carousel/index.js +8 -8
  19. package/es/cascader/index.js +8 -8
  20. package/es/checkbox/index.js +9 -9
  21. package/es/col/index.js +8 -8
  22. package/es/collapse/index.js +8 -8
  23. package/es/color-picker/index.js +1 -1
  24. package/es/comment/index.js +8 -8
  25. package/es/config-provider/index.js +8 -8
  26. package/es/date-picker/index.js +8 -8
  27. package/es/descriptions/index.js +8 -8
  28. package/es/divider/index.js +8 -8
  29. package/es/drag-layout/index.js +3 -3
  30. package/es/drawer/index.js +8 -8
  31. package/es/dropdown/index.js +8 -8
  32. package/es/editor/index.js +1 -1
  33. package/es/ellipsis/index.js +1 -1
  34. package/es/empty/index.js +8 -8
  35. package/es/fabric-chart/index.js +9 -9
  36. package/es/form/index.js +8 -8
  37. package/es/form-model/index.js +8 -8
  38. package/es/form-table/index.js +66 -66
  39. package/es/index/index.js +4328 -1795
  40. package/es/index/style.css +1 -1
  41. package/es/input/index.js +9 -9
  42. package/es/input-number/index.js +8 -8
  43. package/es/layout/index.js +8 -8
  44. package/es/list/index.js +8 -8
  45. package/es/locale-provider/index.js +8 -8
  46. package/es/map/index.js +9 -9
  47. package/es/mentions/index.js +8 -8
  48. package/es/menu/index.js +8 -8
  49. package/es/message/index.js +8 -8
  50. package/es/multi-chat/index.js +76 -76
  51. package/es/multi-chat-client/index.js +70 -70
  52. package/es/multi-chat-history/index.js +4 -4
  53. package/es/multi-chat-record/index.js +14 -14
  54. package/es/multi-chat-setting/index.js +22 -22
  55. package/es/multi-chat-sip/index.js +1 -1
  56. package/es/notification/index.js +8 -8
  57. package/es/page-header/index.js +8 -8
  58. package/es/pagination/index.js +8 -8
  59. package/es/popconfirm/index.js +8 -8
  60. package/es/popover/index.js +8 -8
  61. package/es/progress/index.js +8 -8
  62. package/es/radio/index.js +9 -9
  63. package/es/rate/index.js +8 -8
  64. package/es/result/index.js +8 -8
  65. package/es/row/index.js +8 -8
  66. package/es/scale-container/index.js +1 -1
  67. package/es/scale-view/index.js +52 -50
  68. package/es/scale-view/style.css +1 -1
  69. package/es/select/index.js +12 -12
  70. package/es/select-label/index.js +36 -34
  71. package/es/select-label/style.css +1 -1
  72. package/es/select-person/index.js +2 -2
  73. package/es/select-tag/index.js +4248 -0
  74. package/es/select-tag/style.css +1 -0
  75. package/es/shortcut-setter/index.js +10 -10
  76. package/es/skeleton/index.js +8 -8
  77. package/es/slider/index.js +8 -8
  78. package/es/space/index.js +8 -8
  79. package/es/spin/index.js +8 -8
  80. package/es/statistic/index.js +8 -8
  81. package/es/steps/index.js +8 -8
  82. package/es/switch/index.js +8 -8
  83. package/es/table-filter/index.js +3158 -1350
  84. package/es/table-filter/style.css +1 -1
  85. package/es/tabs/index.js +8 -8
  86. package/es/tag/index.js +9 -9
  87. package/es/time-picker/index.js +8 -8
  88. package/es/timeline/index.js +8 -8
  89. package/es/tooltip/index.js +8 -8
  90. package/es/transfer/index.js +8 -8
  91. package/es/tree/index.js +8 -8
  92. package/es/tree-select/index.js +8 -8
  93. package/es/upload/index.js +8 -8
  94. package/es/verification-code/index.js +2 -2
  95. package/lib/cui.common.js +4369 -1699
  96. package/lib/cui.umd.js +4369 -1699
  97. package/lib/cui.umd.min.js +82 -82
  98. package/package.json +1 -1
  99. package/packages/big-table/src/BigTable.vue +15 -3
  100. package/packages/big-table/src/assets/style/table-base.less +7 -4
  101. package/packages/index.js +3 -0
  102. package/packages/select-label/select-label.vue +18 -2
  103. package/packages/select-tag/index.js +14 -0
  104. package/packages/select-tag/label-classify.vue +133 -0
  105. package/packages/select-tag/labelFormContent.vue +295 -0
  106. package/packages/select-tag/select-label.vue +274 -0
  107. package/packages/table-filter/src/base-search-com/BaseSearch.vue +11 -15
  108. package/packages/table-filter/src/components/TextOverTooltip.vue +24 -11
  109. package/packages/table-filter/src/components/age-com/index.vue +3 -3
  110. package/packages/table-filter/src/components/checkbox-group/CheckboxGroup.vue +53 -0
  111. package/packages/table-filter/src/components/multi-select/multi-select.vue +7 -1
  112. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +5 -119
  113. package/packages/table-filter/src/components/range-age/index.vue +11 -12
  114. package/packages/table-filter/src/components/render-widget/components/DateRangeQuick.vue +216 -0
  115. package/packages/table-filter/src/components/render-widget/components/Label.vue +209 -0
  116. package/packages/table-filter/src/components/render-widget/components/NumberRange.vue +147 -0
  117. package/packages/table-filter/src/components/render-widget/components/SelectDynamic.vue +280 -0
  118. package/packages/table-filter/src/components/render-widget/components/SelectLabel.vue +80 -0
  119. package/packages/table-filter/src/components/render-widget/components/index.js +6 -4
  120. package/packages/table-filter/src/components/render-widget/enums.js +29 -22
  121. package/packages/table-filter/src/components/render-widget/index.vue +45 -5
  122. package/packages/table-filter/src/components/render-widget/mixins/dynamic-method.js +164 -0
  123. package/packages/table-filter/src/components/render-widget/mixins/label-method.js +23 -0
  124. package/packages/table-filter/src/components/render-widget/widgetCfgMaps.js +194 -46
  125. package/packages/table-filter/src/components/search-filter/SearchFilter.vue +3 -1
  126. package/packages/table-filter/src/components/search-modal/set-classification.vue +5 -1
  127. package/packages/table-filter/src/mixins/mixins.js +192 -133
  128. package/packages/table-filter/src/mixins/out-quick-method.js +123 -0
  129. package/packages/table-filter/src/mixins/renderWidget.js +21 -13
  130. package/packages/table-filter/src/quick-search/QuickSearch.vue +201 -133
@@ -6,11 +6,8 @@
6
6
  <div
7
7
  class="quick-item"
8
8
  v-for="item in quickSearch"
9
- :key="item.sid"
10
- :class="{
11
- 'quick-block':
12
- item.con == 'DATE' || item.con == 'BIRTHDAY' || item.con == 'CONVERT' || item.LABELAttr || item._isBlock
13
- }"
9
+ :key="item.sid || item.columnName"
10
+ :class="{ 'quick-block': quickClassName(item) }"
14
11
  >
15
12
  <div class="quick-row">
16
13
  <!-- title -->
@@ -18,7 +15,12 @@
18
15
  class="quick-item-title"
19
16
  :class="{ 'quick-item-title-default': source !== 'editTable' }"
20
17
  >
21
- <span>{{ handleName(item, "title") }}&nbsp;&nbsp;</span>
18
+ <!-- <span>{{ handleName(item, "title") }}&nbsp;&nbsp;</span> -->
19
+ <text-over-tooltip
20
+ :refName="`quick-search-title-${item.columnName}`"
21
+ class="quick-search-title-tool-tip"
22
+ :content="item.alias || item.title"
23
+ ></text-over-tooltip>
22
24
  <a-tooltip
23
25
  v-if="searchFieldLimit[item.columnName] && searchFieldLimit[item.columnName].tips"
24
26
  :title="searchFieldLimit[item.columnName].tips"
@@ -29,7 +31,7 @@
29
31
  </div>
30
32
  <div class="quick-item-col" :class="{ 'quick-item-col-default': source !== 'editTable' }">
31
33
  <!-- 直接渲染组件 -->
32
- <RenderWidget v-if="item.isRender" :cfg="item" v-model="item.value" />
34
+ <RenderWidget v-if="item.isRender" :cfg="item" v-model="item.value" source="quickSearch" :filterApiConfig="filterApiConfig" />
33
35
  <!-- age -->
34
36
  <!-- TODO: 清除,跨表 -->
35
37
  <div v-else-if="item.AGEAttr" class="age-container">
@@ -47,12 +49,12 @@
47
49
  <div class="edit-label">{{ k }}:</div>
48
50
 
49
51
  <div
50
- class="edit-content quickSearch_label-container"
52
+ class="quickSearch_label-container"
51
53
  :class="{
52
54
  'label-container-height': !v.isUnfold && v.itemList && v.isShowBtn
53
55
  }"
54
56
  >
55
- <div class="label-content" v-resize="el => onResize(el, v)">
57
+ <div class="quick-label-content" v-resize="el => onResize(el, v)">
56
58
  <a-checkable-tag
57
59
  v-for="(v, i) in v.itemList"
58
60
  v-model="v.isSelect"
@@ -60,7 +62,7 @@
60
62
  :key="i"
61
63
  :style="handleLabelColor(v)"
62
64
  >
63
- <a-tooltip placement="topLeft">
65
+ <a-tooltip placement="topLeft" :mouseEnterDelay="0.5" :mouseLeaveDelay="0">
64
66
  <template slot="title">
65
67
  <span>{{ v.labelName }}</span>
66
68
  </template>
@@ -89,12 +91,12 @@
89
91
  </div>
90
92
  </div>
91
93
  </slot>
92
- <a-input v-else style="width: 200px" v-model="item.inputVal" allowClear></a-input>
94
+ <a-input v-else style="width: 100%" v-model="item.inputVal" allowClear :placeholder="item.placeholder || `请输入${item.alias || item.title}`"></a-input>
93
95
  </div>
94
96
  <!-- label -->
95
97
 
96
98
  <!-- EVALUATE -->
97
- <div v-else-if="item.EVALUATEAttr">
99
+ <div v-else-if="item.EVALUATEAttr" class="evaluate-attr-container">
98
100
  <template v-for="tag in EVALUATEList">
99
101
  <a-checkable-tag
100
102
  :key="tag.value"
@@ -109,7 +111,7 @@
109
111
  <!-- EVALUATE -->
110
112
 
111
113
  <!-- NUMBERFiled -->
112
- <div v-else-if="item.NUMBERFiled" class="ant-calendar-picker" style="width: 300px">
114
+ <div v-else-if="item.NUMBERFiled" class="ant-calendar-picker" style="width: 100%">
113
115
  <span
114
116
  class="ant-calendar-picker-input ant-input num-picker"
115
117
  :class="{ 'num-picker-unit': item.inputUnit }"
@@ -159,25 +161,25 @@
159
161
  <template v-if="showPercent(item)">
160
162
  <a-input-number
161
163
  class="CL-input"
162
- :style="`width: ${getEleWidth(item)}`"
164
+ :style="`width: 100%`"
163
165
  v-model="item.CL"
164
166
  :min="0"
165
167
  :max="100"
166
168
  allowClear
167
- :placeholder="item.placeholder"
169
+ :placeholder="item.placeholder || `请输入${item.alias || item.title}`"
168
170
  />
169
171
  </template>
170
172
  <template v-else>
171
173
  <a-input
172
174
  class="CL-input"
173
175
  :style="{
174
- width: `${getEleWidth(item)}`,
176
+ width: `100%`,
175
177
  'font-family': item.PASSWORDTYPE ? 'text-security-disc' : 'inherit'
176
178
  }"
177
179
  v-model="item.CL"
178
180
  :class="{ 'psw-icon': item.comAttr == 'PASSWORD' }"
179
181
  allowClear
180
- :placeholder="item.placeholder"
182
+ :placeholder="item.placeholder || `请输入${item.alias || item.title}`"
181
183
  >
182
184
  <template slot="suffix" v-if="item.comAttr == 'PASSWORD'">
183
185
  <svg-icon
@@ -194,12 +196,12 @@
194
196
  <template v-if="showPercent(item)">
195
197
  <a-input-number
196
198
  class="EQ-input"
197
- :style="`width: ${getEleWidth(item)}`"
199
+ :style="`width: 100%`"
198
200
  v-model="item.EQ"
199
201
  :min="0"
200
202
  :max="100"
201
203
  allowClear
202
- :placeholder="item.placeholder"
204
+ :placeholder="item.placeholder|| `请输入${item.alias || item.title}`"
203
205
  />
204
206
  </template>
205
207
  <template v-else>
@@ -207,11 +209,11 @@
207
209
  :class="{ 'psw-icon': item.comAttr == 'PASSWORD' }"
208
210
  class="EQ-input"
209
211
  :style="{
210
- width: `${getEleWidth(item)}`,
212
+ width: `100%`,
211
213
  'font-family': item.PASSWORDTYPE ? 'text-security-disc' : 'inherit'
212
214
  }"
213
215
  v-model="item.EQ"
214
- :placeholder="item.placeholder || item.isPreciseSearch || item.fieldType == 'JSONB' ? '' : getI18nText('1.9.6', '区间搜素用~分割')"
216
+ :placeholder="item.placeholder || `请输入${item.alias || item.title}`"
215
217
  allowClear
216
218
  >
217
219
  <template slot="suffix" v-if="item.comAttr == 'PASSWORD'">
@@ -294,11 +296,13 @@
294
296
  style="width: 60px; margin-right: 10px"
295
297
  v-model="item.BIRTHDAY.start_val"
296
298
  allowClear
299
+ :placeholder="`开始${item.alias || item.title}`"
297
300
  />
298
301
  <a-input
299
302
  style="width: 60px; margin-right: 10px"
300
303
  v-model="item.BIRTHDAY.end_val"
301
304
  allowClear
305
+ :placeholder="`截止${item.alias || item.title}`"
302
306
  />
303
307
  <a-select
304
308
  v-model="item.BIRTHDAY.unit"
@@ -306,6 +310,7 @@
306
310
  showSearch
307
311
  :filterOption="filterOption"
308
312
  allowClear
313
+ :placeholder="`请选择${item.alias || item.title}`"
309
314
  >
310
315
  <a-select-option
311
316
  v-for="v in item.BIRTHDAY.units"
@@ -322,27 +327,6 @@
322
327
  }}</span>
323
328
  </a-radio-group>
324
329
  </div>
325
- <!-- <a-select
326
- v-if="item.con == 'QUOTE'"
327
- v-model="item.QUOTE"
328
- mode="multiple"
329
- :placeholder="$t('1.1.6.7')"
330
- :tokenSeparators="['|#|']"
331
- style="width: 200px"
332
- :filter-option="false"
333
- @dropdownVisibleChange="dropdownVisibleChange($event, item)"
334
- @search="handleSearch($event, item)"
335
- showSearch
336
- allowClear
337
- >
338
- <a-select-option
339
- v-for="sea in item.dataSource"
340
- :key="item.sid + sea.myName"
341
- :value="sea.myName"
342
- >
343
- {{ sea.showKeys || sea.myName }}
344
- </a-select-option>
345
- </a-select> -->
346
330
  <template v-if="item.con == 'QUOTE' || item.com == 'SelectMui'">
347
331
  <c-tree-select
348
332
  v-if="item.comType === 'treeSelect'"
@@ -361,13 +345,13 @@
361
345
  :fetchingWordbook="fetchingWordbook"
362
346
  ></multiSelect>
363
347
  </template>
364
-
365
- <a-checkbox-group
366
- class="check-box"
348
+ <CheckboxGroup
367
349
  v-else-if="item.con == 'CONVERT'"
368
- :options="item.setting&&item.setting.showSetting"
350
+ class="check-box"
369
351
  v-model="item.CONVERT"
370
- />
352
+ :options="item.setting && item.setting.showSetting || []"
353
+ :multiple="String(item.advanceOptionSetting) != '0'"
354
+ ></CheckboxGroup>
371
355
  </slot>
372
356
  </div>
373
357
  </div>
@@ -394,7 +378,12 @@
394
378
  class="quick-item-title"
395
379
  :class="{ 'quick-item-title-default': source !== 'editTable' }"
396
380
  >
397
- <span>{{ handleName(item, "title") }}&nbsp;&nbsp;</span>
381
+ <!-- <span>{{ handleName(item, "title") }}&nbsp;&nbsp;</span> -->
382
+ <text-over-tooltip
383
+ :refName="`quick-search-title-${item.columnName}`"
384
+ class="quick-search-title-tool-tip"
385
+ :content="item.alias || item.title"
386
+ ></text-over-tooltip>
398
387
  </div>
399
388
  <div
400
389
  class="quick-item-col"
@@ -404,8 +393,8 @@
404
393
  <slot v-if="item.labelObj && Object.keys(item.labelObj || {}).length > 0">
405
394
  <div v-for="(v, k) in item.labelObj" :key="k" class="edit-label-content">
406
395
  <div class="edit-label">{{ k }}:</div>
407
- <div class="edit-content">
408
- <div class="label-content">
396
+ <div class="quickSearch_label-container">
397
+ <div class="quick-label-content">
409
398
  <a-checkable-tag
410
399
  v-for="(v, i) in v.itemList"
411
400
  v-model="v.isSelect"
@@ -413,7 +402,7 @@
413
402
  :key="i"
414
403
  :class="['label-tag-' + handleLabelColorClass(v)]"
415
404
  >
416
- <a-tooltip placement="topLeft">
405
+ <a-tooltip placement="topLeft" :mouseEnterDelay="0.5" :mouseLeaveDelay="0">
417
406
  <template slot="title">
418
407
  <span>{{ v.labelName }}</span>
419
408
  </template>
@@ -424,11 +413,11 @@
424
413
  </div>
425
414
  </div>
426
415
  </slot>
427
- <a-input v-else style="width: 200px" v-model="item.inputVal"> </a-input>
416
+ <a-input v-else style="width: 100%" v-model="item.inputVal" :placeholder="item.placeholder || `请输入${item.alias || item.title}`"> </a-input>
428
417
  </div>
429
418
 
430
419
  <!-- EVALUATE -->
431
- <div v-else-if="item.EVALUATEAttr">
420
+ <div v-else-if="item.EVALUATEAttr" class="evaluate-attr-container">
432
421
  <template v-for="tag in EVALUATEList">
433
422
  <a-checkable-tag
434
423
  :key="tag.value"
@@ -443,7 +432,7 @@
443
432
  <!-- EVALUATE -->
444
433
 
445
434
  <!-- NUMBERFiled -->
446
- <div v-else-if="item.NUMBERFiled" class="ant-calendar-picker" style="width: 300px">
435
+ <div v-else-if="item.NUMBERFiled" class="ant-calendar-picker" style="width: 100%">
447
436
  <span
448
437
  class="ant-calendar-picker-input ant-input num-picker"
449
438
  :class="{ 'num-picker-unit': item.inputUnit }"
@@ -494,15 +483,16 @@
494
483
  <template v-if="showPercent(item)">
495
484
  <a-input-number
496
485
  class="CL-input"
497
- :style="`width: ${getEleWidth(item)}`"
486
+ :style="`width: 100%`"
498
487
  v-model="item.CL"
499
488
  :min="0"
500
489
  :max="100"
501
490
  allowClear
491
+ :placeholder="item.placeholder || `请输入${item.alias || item.title}`"
502
492
  />
503
493
  </template>
504
494
  <template v-else>
505
- <a-input class="CL-input" :style="`width: ${getEleWidth(item)}`" v-model="item.CL" allowClear>
495
+ <a-input class="CL-input" :style="`width: 100%`" v-model="item.CL" allowClear :placeholder="item.placeholder || `请输入${item.alias || item.title}`">
506
496
  </a-input>
507
497
  </template>
508
498
  </template>
@@ -510,19 +500,20 @@
510
500
  <template v-if="showPercent(item)">
511
501
  <a-input-number
512
502
  class="EQ-input"
513
- :style="`width: ${getEleWidth(item)}`"
503
+ :style="`width: 100%`"
514
504
  v-model="item.EQ"
515
505
  :min="0"
516
506
  :max="100"
517
507
  allowClear
508
+ :placeholder="item.placeholder|| `请输入${item.alias || item.title}`"
518
509
  />
519
510
  </template>
520
511
  <template v-else>
521
512
  <a-input
522
513
  class="EQ-input"
523
- :style="`width: ${getEleWidth(item)}`"
514
+ :style="`width: 100%`"
524
515
  v-model="item.EQ"
525
- :placeholder="item.placeholder || item.isPreciseSearch || item.fieldType == 'JSONB' ? '' : getI18nText('1.9.6', '区间搜素用~分割')"
516
+ :placeholder="item.placeholder || `请输入${item.alias || item.title}`"
526
517
  allowClear
527
518
  >
528
519
  </a-input>
@@ -533,7 +524,7 @@
533
524
  <div v-if="item.con == 'DATE'">
534
525
  <a-radio-group v-model="item.DATE.con" buttonStyle="solid">
535
526
  <a-radio-button
536
- v-for="date in dateTeam"
527
+ v-for="date in useDateTeam"
537
528
  v-show="!item.showDate"
538
529
  @click="clickRadioGroup(item.DATE, date.con)"
539
530
  :key="date.con"
@@ -548,9 +539,9 @@
548
539
  format="YYYY-MM-DD HH:mm:ss"
549
540
  v-model="item.DATE.start_val"
550
541
  :show-time="{
551
- format: 'HH:mm:ss'
542
+ defaultValue: $moment('00:00:00', 'HH:mm:ss')
552
543
  }"
553
- :placeholder="'起始日期'"
544
+ :placeholder="getI18nText('1.1.4.53', '开始时间')"
554
545
  style="width: 120px"
555
546
  allowClear
556
547
  />
@@ -558,9 +549,9 @@
558
549
  <a-date-picker
559
550
  format="YYYY-MM-DD HH:mm:ss"
560
551
  v-model="item.DATE.end_val"
561
- :placeholder="'截止日期'"
552
+ :placeholder="getI18nText('1.9.147', '结束时间')"
562
553
  :show-time="{
563
- format: 'HH:mm:ss'
554
+ defaultValue: $moment('23:59:59', 'HH:mm:ss')
564
555
  }"
565
556
  style="width: 120px"
566
557
  allowClear
@@ -568,27 +559,6 @@
568
559
  </div>
569
560
  </a-radio-group>
570
561
  </div>
571
- <!-- <a-select
572
- v-if="item.con == 'QUOTE'"
573
- v-model="item.QUOTE"
574
- mode="multiple"
575
- :placeholder="$t('1.1.6.7')"
576
- :tokenSeparators="['|#|']"
577
- style="width: 200px"
578
- :filter-option="false"
579
- @dropdownVisibleChange="dropdownVisibleChange($event, item)"
580
- @search="handleSearch($event, item)"
581
- showSearch
582
- allowClear
583
- >
584
- <a-select-option
585
- v-for="sea in item.dataSource"
586
- :key="item.sid + sea.myName"
587
- :value="sea.myName"
588
- >
589
- {{ sea.myName }}
590
- </a-select-option>
591
- </a-select> -->
592
562
  <template v-if="item.con == 'QUOTE' || item.com == 'SelectMui'">
593
563
  <c-tree-select
594
564
  v-if="item.comType === 'treeSelect'"
@@ -607,13 +577,13 @@
607
577
  :fetchingWordbook="fetchingWordbook"
608
578
  ></multiSelect>
609
579
  </template>
610
-
611
- <a-checkbox-group
612
- class="check-box"
580
+ <CheckboxGroup
613
581
  v-else-if="item.con == 'CONVERT'"
614
- :options="item.setting&&item.setting.showSetting"
582
+ class="check-box"
615
583
  v-model="item.CONVERT"
616
- />
584
+ :options="item.setting && item.setting.showSetting || []"
585
+ :multiple="String(item.advanceOptionSetting) != '0'"
586
+ ></CheckboxGroup>
617
587
  </slot>
618
588
  </div>
619
589
  </div>
@@ -748,6 +718,11 @@ import utils from '@/utils/utils-map';
748
718
  import {dataOptions} from '../const/dataOptions'
749
719
 
750
720
  import RenderWidget from '../components/render-widget/index.vue';
721
+ import TextOverTooltip from "../components/TextOverTooltip";
722
+ import CheckboxGroup from '../components/checkbox-group/CheckboxGroup.vue'
723
+ import svgIcon from '@/component/svg/index.vue';
724
+
725
+ const baseActiveColor = 'rgb(85, 133, 245)';
751
726
 
752
727
  export default create({
753
728
  name: "quick-search",
@@ -769,7 +744,8 @@ export default create({
769
744
  isOrgAdmin: Boolean,
770
745
  lastQuickSearchData: Array,
771
746
  show: Boolean,
772
- getFilterData: Function
747
+ getFilterData: Function,
748
+ libSource: String
773
749
  },
774
750
  components: {
775
751
  RenderWidget,
@@ -803,7 +779,10 @@ export default create({
803
779
  [Form.Item.name]: Form.Item,
804
780
  [Tag.CheckableTag.name]: Tag.CheckableTag,
805
781
  multiSelect,
806
- cTreeSelect
782
+ cTreeSelect,
783
+ TextOverTooltip,
784
+ CheckboxGroup,
785
+ svgIcon
807
786
  },
808
787
  computed: {
809
788
  showPercent() {
@@ -813,7 +792,7 @@ export default create({
813
792
  },
814
793
  getEleWidth(){
815
794
  return function(item) {
816
- return `${item.advanceColWidth||200}px`
795
+ return `${item.advanceColWidth || 200}px`
817
796
  }
818
797
  },
819
798
  hasRelationQuickSearch() {
@@ -831,6 +810,16 @@ export default create({
831
810
 
832
811
  $moment() {
833
812
  return moment;
813
+ },
814
+ useDateTeam() {
815
+ if(this.libSource !== 'crm') return this.dateTeam0;
816
+ return this.dateTeam0.map(v => {
817
+ let obj = {...v}
818
+ if(obj.con.includes('LAST_')) {
819
+ obj.con = obj.con.replace(/LAST_/g, 'UP_')
820
+ }
821
+ return obj
822
+ })
834
823
  }
835
824
  },
836
825
  data() {
@@ -844,23 +833,6 @@ export default create({
844
833
  searchItem: {},
845
834
  curWordbookData: undefined,
846
835
  curAutograph: "",
847
- dateTeam: [
848
- { con: 'TODAY', title: '1.1.4.37', name: '今天' },
849
- { con: 'TOMORROW', title: '1.1.4.38', name: '明天' },
850
- { con: 'YESTERDAY', title: '1.1.4.39', name: '昨天' },
851
- { con: 'THIS_WEEK', title: '1.1.4.40', name: '本周' },
852
- { con: 'NEXT_WEEK', title: '1.1.4.41', name: '下周' },
853
- { con: 'LAST_WEEK', title: '1.1.4.42', name: '上周' },
854
- { con: 'THIS_MONTH', title: '1.1.4.43', name: '本月' },
855
- { con: 'NEXT_MONTH', title: '1.1.4.44', name: '下月' },
856
- { con: 'LAST_MONTH', title: '1.1.4.45', name: '上月' },
857
- { con: 'THIS_SEASON', title: '1.1.4.46', name: '本季度' },
858
- { con: 'NEXT_SEASON', title: '1.1.4.47', name: '下季度' },
859
- { con: 'LAST_SEASON', title: '1.1.4.48', name: '上季度' },
860
- { con: 'THIS_YEAR', title: '1.1.4.49', name: '本年' },
861
- { con: 'NEXT_YEAR', title: '1.1.4.50', name: '下年' },
862
- { con: 'LAST_YEAR', title: '1.1.4.51', name: '上年' }
863
- ],
864
836
  birthdayTeam: [],
865
837
  limit_date: "",
866
838
  birthdayUnits: [
@@ -937,20 +909,40 @@ export default create({
937
909
  },
938
910
  created() {},
939
911
  methods: {
912
+ quickClassName(item) {
913
+ return item.con == 'DATE' || item.con == 'BIRTHDAY' || (item.con == 'CONVERT' && item.com !== 'SelectMui') || item.LABELAttr || item._isBlock || item.AGEAttr
914
+ },
940
915
  filterOption(...arg) {
941
916
  return utils.filterOption(...arg);
942
917
  },
943
- handleLabelColor(...arg) {
944
- return utils.handleLabelColor(...arg);
918
+ handleLabelColor(item) {
919
+ if('backgroundColor' in item) {
920
+ return item.isSelect ? {
921
+ background: item.backgroundColor || baseActiveColor,
922
+ borderColor: item.backgroundColor || baseActiveColor
923
+ } : {}
924
+ }
925
+ return utils.handleLabelColor(item);
945
926
  },
946
927
  init() {
947
928
  this.quickSearch = [];
948
929
  this.relationQuickSearch = [];
949
- this.birthdayTeam = this.dateTeam.filter(
950
- item => item.con != "THIS_YEAR" && item.con != "NEXT_YEAR" && item.con != "LAST_YEAR"
930
+ this.birthdayTeam = this.useDateTeam.filter(
931
+ item => {
932
+ if(this.libSource !== 'crm') return item.con != "THIS_YEAR" && item.con != "NEXT_YEAR" && item.con != "LAST_YEAR"
933
+ item.con != "THIS_YEAR" && item.con != "NEXT_YEAR" && item.con != "UP_YEAR"
934
+ }
951
935
  );
952
936
  let copyList = cloneDeep(this.searchFieldList);
953
- let mySearchFieldList = copyList.filter(i => i.isShowSearch == 1 && i.filterExplicit != 1) || [];
937
+ let mySearchFieldList = copyList.filter(i => {
938
+ let { isRender, rangeFilter, widgetType } = i.widgetCfg || {};
939
+ // 快速搜索中组件不同
940
+ if (isRender && rangeFilter && ['DATETIME_RANGE', 'DATE_RANGE'].includes(widgetType)) {
941
+ i.widgetType = 'DATE_RANGE_QUICK';
942
+ i.widgetCfg.widgetType = 'DATE_RANGE_QUICK';
943
+ }
944
+ return i.isShowSearch == 1 && i.filterExplicit != 1
945
+ }) || [];
954
946
  // let relationTableList = JSON.parse(JSON.stringify(this.relationTableList));
955
947
  let relationTableList = cloneDeep(this.relationTableList);
956
948
 
@@ -1007,7 +999,9 @@ export default create({
1007
999
  let advanceOptionSetting = item?.advanceOptionSetting;
1008
1000
  // 单选
1009
1001
  let optionSetting0 =String(advanceOptionSetting) == '0';
1010
- if(optionSetting0){
1002
+ let settingLen = item.setting?.showSetting?.length;
1003
+ let isCheck = optionSetting0 && settingLen && settingLen < 10;
1004
+ if(optionSetting0 && !isCheck){
1011
1005
  this.$set(this.quickSearch[index], "value", undefined);
1012
1006
  } else {
1013
1007
  if (item.CONVERT && Array.isArray(item.CONVERT)) {
@@ -1110,7 +1104,8 @@ export default create({
1110
1104
  /**
1111
1105
  * 映射方式的单选模式
1112
1106
  */
1113
- if(optionSetting0){
1107
+ let isCheck = optionSetting0 && showSetting.length && showSetting.length < 10
1108
+ if(optionSetting0 && !isCheck){
1114
1109
  this.$set(el, "com", "SelectMui");
1115
1110
  this.$set(el, "comType", "SelectMui");
1116
1111
  const labelList = el.setting.showSetting.map(i => {
@@ -1121,7 +1116,8 @@ export default create({
1121
1116
  }
1122
1117
 
1123
1118
  this.$set(el.setting, "showSetting", showSetting);
1124
- this.$set(el, "CONVERT",optionSetting0? "": []);
1119
+ let convertDef = optionSetting0 ? isCheck ? [] : "" : [];
1120
+ this.$set(el, "CONVERT", convertDef);
1125
1121
  return;
1126
1122
  }
1127
1123
  }
@@ -1144,6 +1140,7 @@ export default create({
1144
1140
  this.$set(el, "format", format);
1145
1141
  this.$set(el, "AGEAttr", true);
1146
1142
  } else if (el.setting?.attr === "PASSWORD") {
1143
+ this.$set(el, "con", "CL");
1147
1144
  this.$set(el, "comAttr", "PASSWORD");
1148
1145
  this.$set(el, "PASSWORDTYPE", true);
1149
1146
  } else if (el.fieldType == "NUMBER") {
@@ -1178,6 +1175,7 @@ export default create({
1178
1175
  end_val: hasValue ? value[1] : null
1179
1176
  });
1180
1177
  let dateTeam = optionSetting1 ? [] : this[`dateTeam${advanceOptionSetting}`] || this.dateTeam0;
1178
+ dateTeam = this.handleDateTeam(dateTeam);
1181
1179
  this.$set(el, 'dateTeam' , dateTeam)
1182
1180
  }
1183
1181
  } else if (el.fieldType == "TEXT") {
@@ -1196,6 +1194,17 @@ export default create({
1196
1194
  }
1197
1195
  });
1198
1196
  },
1197
+ // 兼容二次开发平台数据
1198
+ handleDateTeam(dateTeam){
1199
+ if(this.libSource !== 'crm') return dateTeam;
1200
+ return dateTeam.map(v => {
1201
+ let obj = {...v}
1202
+ if(obj.con.includes('LAST_')) {
1203
+ obj.con = obj.con.replace(/LAST_/g, 'UP_')
1204
+ }
1205
+ return obj
1206
+ })
1207
+ },
1199
1208
  // 字典推荐值 item处理
1200
1209
  handleDictionDef(el) {
1201
1210
  let { defaultValue, defaultValueTitle } = el?.dictionarieObj || {};
@@ -1433,12 +1442,17 @@ export default create({
1433
1442
  }
1434
1443
  }
1435
1444
  } else if (vexutils.anyNotEmpty(item.CONVERT) && Array.isArray(item.CONVERT)) {
1436
- value = item.CONVERT.map(item => {
1445
+ let optionSetting0 =String(advanceOptionSetting) === '0';
1446
+ let tempConvert = item.CONVERT.map(item => {
1437
1447
  if (item && vexutils.isJSON(item)) {
1438
1448
  return JSON.parse(item);
1439
1449
  }
1440
1450
  return item;
1441
1451
  });
1452
+ value = tempConvert
1453
+ if (optionSetting0) {
1454
+ value = tempConvert[0]
1455
+ }
1442
1456
  } else if (item.DATE && !item.AGEAttr) {
1443
1457
  // 年龄组件的不按照 date 类型处理
1444
1458
  if (item.DATE.start_val || item.DATE.end_val) {
@@ -1534,7 +1548,7 @@ export default create({
1534
1548
  };
1535
1549
  conObj.push(temp);
1536
1550
  }
1537
- let dateCons = this.dateTeam.map(item => item.con);
1551
+ let dateCons = this.useDateTeam.map(item => item.con);
1538
1552
  let res = conObj.filter(
1539
1553
  item =>
1540
1554
  item.value ||
@@ -1771,13 +1785,18 @@ export default create({
1771
1785
 
1772
1786
  /* 获取 label */
1773
1787
  handleRequestedLabel(v) {
1788
+ let requestedLabel = this.filterApiConfig?.requestedLabel
1789
+ if (requestedLabel && typeof requestedLabel === 'function') {
1790
+ return this.handleGetConfigApi(v, 'requestedLabel')
1791
+ }
1774
1792
  let params = { type: v, pageSize: 10000 };
1775
1793
  return this.axios.get("/label/list", { params: params });
1776
1794
  },
1777
1795
 
1778
1796
  async handleSetLabelOptions(labelType, el) {
1779
1797
  let labelObj = {};
1780
- let labelList = await this.handleGetConfigApi(labelType, 'requestedLabel');
1798
+ let res = (await this.handleRequestedLabel(labelType)) || {};
1799
+ let labelList = res?.data?.map?.rows ||[]
1781
1800
  labelList.forEach(n => {
1782
1801
  this.$set(n, 'isSelect', false);
1783
1802
  if (labelObj[n.typeName]) {
@@ -1952,14 +1971,24 @@ export default create({
1952
1971
  box-sizing: border-box;
1953
1972
  }
1954
1973
  .quick-item-title {
1955
- min-width: 80px;
1974
+ min-width: 134px;
1975
+ width: 134px;
1956
1976
  line-height: 32px;
1957
1977
  text-align: right;
1958
- padding-left: 12px;
1978
+ padding-left: 4px;
1979
+ padding-right: 4px;
1959
1980
  color: #000;
1981
+ box-sizing: border-box;
1960
1982
  }
1961
1983
  .quick-item-col {
1962
- padding: 0 12px;
1984
+ width: calc(100% - 134px);
1985
+ padding: 0 4px;
1986
+ .ant-tag {
1987
+ margin-right: 4px;
1988
+ }
1989
+ .ant-tag:last-child {
1990
+ margin-right: 0;
1991
+ }
1963
1992
  }
1964
1993
  .quick-item-title-default {
1965
1994
  width: 25%;
@@ -1979,10 +2008,10 @@ export default create({
1979
2008
  background-color: #ddd;
1980
2009
  cursor: pointer;
1981
2010
  &.ml {
1982
- margin-left: 20px;
2011
+ margin-left: 12px;
1983
2012
  }
1984
2013
  &.mr {
1985
- margin-right: 20px;
2014
+ margin-right: 12px;
1986
2015
  }
1987
2016
  }
1988
2017
  .check-date {
@@ -2040,8 +2069,8 @@ export default create({
2040
2069
  }
2041
2070
  .ant-radio-button-wrapper {
2042
2071
  padding: 0 8px;
2043
- height: 30px;
2044
- line-height: 30px;
2072
+ height: 32px;
2073
+ line-height: 32px;
2045
2074
  margin-top: 5px;
2046
2075
  }
2047
2076
 
@@ -2053,14 +2082,46 @@ export default create({
2053
2082
  line-height: 32px;
2054
2083
  padding-left: 0;;
2055
2084
  }
2085
+ .quickSearch_label-container{
2086
+ padding: 0;
2087
+ }
2056
2088
  .label-container-height {
2057
2089
  overflow: hidden;
2058
- // width: 380px;
2059
2090
  height: 74px;
2060
2091
  flex: none;
2061
2092
  }
2062
- .edit-content {
2063
- padding: 0;
2093
+ .quick-label-content {
2094
+ display: flex;
2095
+ flex-wrap: wrap;
2096
+ line-height: 34px;
2097
+ .ant-tag-checkable{
2098
+ cursor: pointer;
2099
+ position: relative;
2100
+ height: 32px;
2101
+ line-height: 32px;
2102
+ text-align: center;
2103
+ min-width: 108px;
2104
+ max-width: 108px;
2105
+ color: rgba(33, 33, 33, 0.6);
2106
+ background: rgb(250, 250, 250);
2107
+ border-color: rgba(213, 213, 213, 0.8);
2108
+ font-size: 14px;
2109
+ border-radius: 4px;
2110
+ margin-bottom: 8px;
2111
+ box-sizing: border-box;
2112
+ span {
2113
+ display: inline-block;
2114
+ width: 80px;
2115
+ height: 100%;
2116
+ line-height: 30px;
2117
+ overflow: hidden;
2118
+ text-overflow: ellipsis;
2119
+ white-space: nowrap;
2120
+ }
2121
+ }
2122
+ .ant-tag-checkable-checked {
2123
+ color: #fff !important;
2124
+ }
2064
2125
  }
2065
2126
  .label-unfold-btn {
2066
2127
  margin: 8px 0;
@@ -2083,6 +2144,9 @@ export default create({
2083
2144
  }
2084
2145
  }
2085
2146
  }
2147
+ .evaluate-attr-container {
2148
+ line-height: 32px;
2149
+ }
2086
2150
  &.quick-search-table {
2087
2151
  .module-title {
2088
2152
  color: #506493;
@@ -2092,9 +2156,12 @@ export default create({
2092
2156
  }
2093
2157
  .quick-item {
2094
2158
  display: inline-block;
2159
+ width: 20%;
2095
2160
  &.quick-block {
2096
2161
  display: block;
2162
+ width: 100%;
2097
2163
  }
2164
+
2098
2165
  }
2099
2166
  }
2100
2167
 
@@ -2122,8 +2189,9 @@ export default create({
2122
2189
  font-family: "Avenir", Helvetica, Arial, sans-serif;
2123
2190
  }
2124
2191
  }
2125
- // .age-container {
2126
- // }
2192
+ .age-container {
2193
+ width: 100%;
2194
+ }
2127
2195
  </style>
2128
2196
  <style lang="less">
2129
2197
  .quickSearch-saveToClass-modal {