cnhis-design-vue 0.2.13-beta → 0.2.17-beta

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 (41) hide show
  1. package/es/age/index.js +2 -2
  2. package/es/big-table/index.js +21 -21
  3. package/es/button/index.js +2 -2
  4. package/es/captcha/index.js +3 -3
  5. package/es/checkbox/index.js +1 -1
  6. package/es/color-picker/index.js +1 -1
  7. package/es/drag-layout/index.js +3 -3
  8. package/es/editor/index.js +36 -23
  9. package/es/editor/style.css +1 -1
  10. package/es/fabric-chart/index.js +9 -9
  11. package/es/index/index.js +612 -308
  12. package/es/index/style.css +1 -1
  13. package/es/input/index.js +1 -1
  14. package/es/map/index.js +1 -1
  15. package/es/multi-chat/index.js +24 -24
  16. package/es/multi-chat-client/index.js +18 -18
  17. package/es/multi-chat-history/index.js +4 -4
  18. package/es/multi-chat-record/index.js +4 -4
  19. package/es/multi-chat-setting/index.js +20 -20
  20. package/es/multi-chat-sip/index.js +1 -1
  21. package/es/radio/index.js +1 -1
  22. package/es/scale-view/index.js +367 -97
  23. package/es/scale-view/style.css +1 -1
  24. package/es/select/index.js +3 -3
  25. package/es/select-label/index.js +445 -77
  26. package/es/select-label/style.css +1 -1
  27. package/es/select-person/index.js +2 -2
  28. package/es/table-filter/index.js +120 -92
  29. package/es/table-filter/style.css +1 -1
  30. package/es/tag/index.js +1 -1
  31. package/es/verification-code/index.js +2 -2
  32. package/package.json +1 -1
  33. package/packages/editor/src/Editor.vue +3 -0
  34. package/packages/select-label/label-classify.vue +121 -0
  35. package/packages/select-label/labelFormContent.vue +134 -60
  36. package/packages/select-label/select-label.vue +59 -4
  37. package/packages/table-filter/src/base-search-com/BaseSearch.vue +5 -5
  38. package/packages/table-filter/src/components/c-tree-select/tree-select.vue +1 -1
  39. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +3 -3
  40. package/packages/table-filter/src/mixins/mixins.js +10 -2
  41. package/packages/table-filter/src/quick-search/QuickSearch.vue +10 -2
@@ -6,7 +6,37 @@
6
6
  </div>
7
7
  <div v-show="!allDisable" style="height: 100%;">
8
8
  <div class="label-wrap">
9
+ <!-- 表单内嵌打开标签组件的样式 -->
10
+ <div v-if="explicit" class="explicit-continer">
11
+ <a-tabs hideAdd :activeKey="labelAnchorKey" @change="labelAnchorTabsOnChange" tab-position="top">
12
+ <template v-for="(v, i) in labelConfig">
13
+ <a-tab-pane :key="v.curKey">
14
+ <span slot="tab">
15
+ {{ i }}
16
+ <span class="edit-label-type">({{ v.multipleChoice == 2 ? '单' : '多' }}选)</span>
17
+ </span>
18
+ <div class="explicit-label-wrap left-label-wrap">
19
+ <div class="edit-label-content">
20
+ <labelClassify
21
+ :classifyItem="v"
22
+ :handleLabelChange="handleLabelChange"
23
+ :handleLabelColor="handleLabelColor"
24
+ :handleDelLabel="handleDelLabel"
25
+ :hanldeBlur="hanldeBlur"
26
+ :handleAddLabel="handleAddLabel"
27
+ :clearaddVal="clearaddVal"
28
+ :isEdit="isEdit"
29
+ :sourceType="sourceType"
30
+ />
31
+ </div>
32
+ </div>
33
+ </a-tab-pane>
34
+ </template>
35
+ </a-tabs>
36
+ </div>
37
+ <!-- 普通标签样式 -->
9
38
  <div
39
+ v-else
10
40
  class="left-label-wrap"
11
41
  :class="{
12
42
  'total-left-label-wrap': isChangeWindow
@@ -22,7 +52,9 @@
22
52
  </template>
23
53
  </a-tabs>
24
54
  </div>
55
+
25
56
  <div
57
+ v-if="!explicit"
26
58
  class="right-label-wrap"
27
59
  :class="{
28
60
  'total-right-label-wrap': isChangeWindow
@@ -38,43 +70,17 @@
38
70
  {{ k }}
39
71
  <span class="edit-label-type">({{ v.multipleChoice == 2 ? '单' : '多' }}选)</span>
40
72
  </div>
41
- <div class="edit-content">
42
- <!-- disable -->
43
- <div v-if="!v.itemList" class="label-disable-wrap">
44
- <p class="label-disable-title">无可选标签</p>
45
- <p class="label-disable-desc">请联系管理员进行标签管理设置</p>
46
- </div>
47
- <!-- -->
48
- <div v-else class="label-content">
49
- <a-checkable-tag
50
- v-for="item in v.itemList"
51
- v-model="item.isSelect"
52
- @change="handleLabelChange($event, item, v)"
53
- :key="item.labelId"
54
- :style="handleLabelColor(item)"
55
- :class="{ 'sys-label-tag': item.isPublic && item.isPublic == 1 }"
56
- >
57
- <a-tooltip placement="topLeft">
58
- <template slot="title">
59
- <span>{{ item.labelName }}</span>
60
- </template>
61
- {{ item.labelName }}
62
- </a-tooltip>
63
-
64
- <template v-if="sourceType != 'guage'">
65
- <a-icon class="label-close" v-show="!(item.isPublic && item.isPublic == 1)" type="close" @click.native.stop="handleDelLabel(item, v)" />
66
- </template>
67
- </a-checkable-tag>
68
- <a-button v-if="isEdit && !v.isNoAdd && sourceType != 'guage'" type="dashed" class="label-add" v-show="!v.showAdd" @click="handleAddLabel($event, v)">
69
- <a-icon type="plus" />
70
- <!-- {{ $t("1.1.2") }} -->
71
- 标签
72
- </a-button>
73
- <a-input v-if="isEdit && !v.isNoAdd && sourceType != 'guage'" class="label-add add-input" v-model.trim="v.addVal" v-show="v.showAdd" @blur="hanldeBlur($event, v)">
74
- <a-icon slot="suffix" type="close" @click.native.stop="clearaddVal($event, v)" />
75
- </a-input>
76
- </div>
77
- </div>
73
+ <labelClassify
74
+ :classifyItem="v"
75
+ :handleLabelChange="handleLabelChange"
76
+ :handleLabelColor="handleLabelColor"
77
+ :handleDelLabel="handleDelLabel"
78
+ :hanldeBlur="hanldeBlur"
79
+ :handleAddLabel="handleAddLabel"
80
+ :clearaddVal="clearaddVal"
81
+ :isEdit="isEdit"
82
+ :sourceType="sourceType"
83
+ />
78
84
  </div>
79
85
  </div>
80
86
  </div>
@@ -113,6 +119,8 @@ import utils from '@/utils/utils-map';
113
119
  import { Tooltip, Icon, Button, Input, Tag, Tabs, Anchor } from 'ant-design-vue';
114
120
  import create from '@/core/create';
115
121
  import vexutils from '@/utils/vexutils';
122
+
123
+ import labelClassify from './label-classify.vue';
116
124
  export default create({
117
125
  name: 'label-form-content',
118
126
  components: {
@@ -125,7 +133,8 @@ export default create({
125
133
  [Tooltip.name]: Tooltip,
126
134
  [Button.name]: Button,
127
135
  [Tag.name]: Tag,
128
- [Tag.CheckableTag.name]: Tag.CheckableTag
136
+ [Tag.CheckableTag.name]: Tag.CheckableTag,
137
+ labelClassify
129
138
  },
130
139
  props: {
131
140
  item: {
@@ -156,7 +165,13 @@ export default create({
156
165
  labelOptions: {
157
166
  type: Object
158
167
  },
159
- sourceType: String
168
+ sourceType: String,
169
+
170
+ explicit: {
171
+ // 标签选择外显
172
+ type: Boolean,
173
+ default: false
174
+ }
160
175
  },
161
176
  inject: {},
162
177
  data() {
@@ -193,12 +208,12 @@ export default create({
193
208
  }
194
209
  },
195
210
  watch: {
196
- labelOptions:{
197
- immediate:true,
211
+ labelOptions: {
212
+ immediate: true,
198
213
  deep: true,
199
- handler(val){
200
- if(!val) return;
201
- this.handleLabelInit()
214
+ handler(val) {
215
+ if (!val) return;
216
+ this.handleLabelInit();
202
217
  }
203
218
  }
204
219
  // labelVisible: {
@@ -223,16 +238,25 @@ export default create({
223
238
 
224
239
  handleLabelInit() {
225
240
  if (this.isLock) return;
226
- const copy = JSON.parse(JSON.stringify(this.labelOptions))
241
+ this.cacheLabelConfig = { ...this.labelConfig };
242
+ const copy = JSON.parse(JSON.stringify(this.labelOptions));
243
+
244
+ for (let key in copy) {
245
+ // let olbKey = this?.cacheLabelConfig[key]?.curKey
246
+ let typeId = copy[key]?.typeId || '';
247
+ Object.assign(copy[key], {
248
+ curKey: `${key}_${typeId}~${this.randomId()}`
249
+ });
250
+ }
251
+
227
252
  this.$set(this, 'labelConfig', copy);
228
253
  this.$nextTick(() => {
229
254
  this.hanldeBackfill();
230
- for (let key in this.labelConfig) {
231
- Object.assign(this.labelConfig[key], {
232
- curKey: this.randomId()
233
- });
255
+ let defKey = undefined;
256
+ if (this.explicit && this.inited) {
257
+ defKey = this.labelAnchorKey;
234
258
  }
235
- this.setLabelDeafultClick(this.labelConfig);
259
+ this.setLabelDeafultClick(this.labelConfig, defKey);
236
260
  this.inited = true;
237
261
  });
238
262
  },
@@ -246,10 +270,10 @@ export default create({
246
270
  let itemList = labelConfig[k]?.itemList || [];
247
271
  if (itemList.length) {
248
272
  itemList.forEach(v => {
249
- if(selectLabelId.includes(v.labelId)){
250
- this.$set(v,'isSelect', true)
273
+ if (selectLabelId.includes(v.labelId)) {
274
+ this.$set(v, 'isSelect', true);
251
275
  }
252
- })
276
+ });
253
277
  }
254
278
  });
255
279
  }
@@ -282,6 +306,7 @@ export default create({
282
306
  */
283
307
  isSelect = selectList.findIndex(i => i.labelId == n.labelId) !== -1;
284
308
  n.isSelect = isSelect; // 是否已选
309
+ this.$set(n, 'isSelect', isSelect);
285
310
  /**
286
311
  * typeName 按照分类处理
287
312
  * 没有分类创建分类,有则添加
@@ -326,11 +351,19 @@ export default create({
326
351
  }
327
352
  },
328
353
  // 默认选中第一个分类
329
- setLabelDeafultClick(labelObj) {
354
+ setLabelDeafultClick(labelObj, deafulteKey) {
330
355
  if (!labelObj) return;
331
356
  let objKeys = Object.keys(labelObj) || [];
332
357
  if (!objKeys.length) return;
333
358
  let curKey = labelObj[objKeys[0]].curKey;
359
+ // 找到默认选中的tab
360
+ if (deafulteKey && typeof deafulteKey === 'string') {
361
+ let [q] = deafulteKey.split('~');
362
+ let f = objKeys.find(k => labelObj[k] && labelObj[k].curKey && labelObj[k].curKey.includes(q));
363
+ if (f) {
364
+ curKey = labelObj[f].curKey;
365
+ }
366
+ }
334
367
  if (!curKey) return;
335
368
  this.labelAnchorTabsOnChange(curKey);
336
369
  },
@@ -463,7 +496,7 @@ export default create({
463
496
  if (status) {
464
497
  this.$message.success('添加成功!');
465
498
  // this.handleEditLabel(this.editLabelItem, true);
466
- this.$emit('updateLabelData')
499
+ this.$emit('updateLabelData');
467
500
  v.showAdd = false;
468
501
  }
469
502
  },
@@ -473,8 +506,7 @@ export default create({
473
506
  const multipleChoice = labelGroup.multipleChoice;
474
507
  // let selectedList = this.labelSelectedEdit || [];
475
508
  // 修复 标签多选 点击modal取消按钮 回显也会被选中
476
- let selectedList =
477
- (this.labelSelectedEdit?.length && vexutils.clone(this.labelSelectedEdit, true)) || [];
509
+ let selectedList = (this.labelSelectedEdit?.length && vexutils.clone(this.labelSelectedEdit, true)) || [];
478
510
  if (v) {
479
511
  if (selectedList.some(n => n.labelId == d.labelId)) {
480
512
  return;
@@ -497,6 +529,12 @@ export default create({
497
529
  }
498
530
  }
499
531
  this.labelSelectedEdit = [...selectedList];
532
+ this.$forceUpdate();
533
+
534
+ // 外显实时改变通知
535
+ if (this.explicit) {
536
+ this.$emit('explicitOnChange', [...this.labelSelectedEdit]);
537
+ }
500
538
  },
501
539
 
502
540
  async handleDelLabel(v) {
@@ -517,7 +555,7 @@ export default create({
517
555
  this.$emit('valueOnChange', [...selectObj], this.item);
518
556
  this.$emit('onChange', [...selectObj]);
519
557
  }
520
- this.$emit('updateLabelData')
558
+ this.$emit('updateLabelData');
521
559
  // this.handleEditLabel(this.editLabelItem, true);
522
560
  } else {
523
561
  this.$message.warning('删除失败');
@@ -570,8 +608,38 @@ export default create({
570
608
  * 重置label选项
571
609
  */
572
610
  handleResetOptions() {
573
- this.$set(this.item, "labelObj", {});
574
- this.$set(this.item, "labelList", null);
611
+ this.$set(this.item, 'labelObj', {});
612
+ this.$set(this.item, 'labelList', null);
613
+ },
614
+
615
+ /**
616
+ * 设置标签单个状态
617
+ */
618
+ hanldeSetLabelItem(id, state) {
619
+ const { labelConfig } = this;
620
+ if (typeof labelConfig === 'object') {
621
+ let keys = Object.keys(labelConfig || {});
622
+ keys.forEach(k => {
623
+ let itemList = labelConfig[k]?.itemList || [];
624
+ if (itemList.length) {
625
+ itemList.forEach(v => {
626
+ if (id == v.labelId) {
627
+ this.$set(v, 'isSelect', state);
628
+ }
629
+ });
630
+ }
631
+ });
632
+ }
633
+ // 如果是删除
634
+ if (false === state) {
635
+ // 删除选中list
636
+ if (Array.isArray(this.labelSelectedEdit)) {
637
+ const fdIndex = this.labelSelectedEdit.findIndex(n => n.labelId == id);
638
+ if (fdIndex != -1) {
639
+ this.labelSelectedEdit.splice(fdIndex, 1);
640
+ }
641
+ }
642
+ }
575
643
  }
576
644
  }
577
645
  });
@@ -592,6 +660,12 @@ export default create({
592
660
  height: calc(100vh - 109px);
593
661
  max-height: calc(100vh - 109px);
594
662
  }
663
+ &.explicit-label-wrap {
664
+ width: 100%;
665
+ height: auto;
666
+ overflow: hidden;
667
+ overflow-y: auto;
668
+ }
595
669
  /deep/.ant-tabs {
596
670
  height: 100%;
597
671
  .ant-tabs-nav-container {
@@ -4,17 +4,36 @@
4
4
  <a-tag v-for="v in labelSelectedList" :key="v.labelId" :style="handleLabelColor(v, true)" :closable="item_is_edit" @close="closeTag(v)">
5
5
  {{ v.labelName }}
6
6
  </a-tag>
7
- <span class="form-add-icon form-add-icon-label" @click="handleEditLabel" :class="{ disable: isLock }" v-show="item_is_edit">
7
+ <span v-if="!explicit" class="form-add-icon form-add-icon-label" @click="handleEditLabel" :class="{ disable: isLock }" v-show="item_is_edit">
8
8
  <a-icon class="add-icon" type="plus-circle" />
9
9
  新增
10
10
  </span>
11
11
  </div>
12
- <div class="common-label" v-if="sourceType == 'form' && commonLabelList.length && item_is_edit">
12
+ <div class="common-label" v-if="sourceType == 'form' && commonLabelList.length && item_is_edit && !explicit">
13
13
  <span>常用</span>
14
14
  <a-checkable-tag v-for="(item, i) in commonLabelList" v-model="item.isSelect" @change="handleCommonLabelChange($event, item)" :key="i" :style="handleLabelColor(item)">
15
15
  {{ item.labelName }}
16
16
  </a-checkable-tag>
17
17
  </div>
18
+ <div v-if="explicit">
19
+ <labelFormContent
20
+ :explicit="explicit"
21
+ v-bind="$attrs"
22
+ ref="labelFormContent"
23
+ :labelVisible="labelVisible"
24
+ :item="item"
25
+ :isEdit="isEdit"
26
+ :isLock="isLock"
27
+ :labelSelectedList="labelSelectedList"
28
+ :isChangeWindow="isChangeWindow"
29
+ :labelOptions="editLabelItem.labelObj"
30
+ :sourceType="sourceType"
31
+ @updateLabelData="updateLabelData"
32
+ @explicitOnChange="explicitOnChange"
33
+ ></labelFormContent>
34
+ </div>
35
+
36
+ <!-- 弹窗 -->
18
37
  <a-modal
19
38
  class="label-form-modal-wrap modal-wrap standard-modal standard-modal-white"
20
39
  v-model="labelVisible"
@@ -57,6 +76,7 @@
57
76
  </div>
58
77
  </template>
59
78
  <labelFormContent
79
+ :explicit="explicit"
60
80
  v-bind="$attrs"
61
81
  ref="labelFormContent"
62
82
  :labelVisible="labelVisible"
@@ -138,6 +158,16 @@ export default create({
138
158
  type: Function,
139
159
  default: () => Promise.resolve({ rows: [] })
140
160
  },
161
+
162
+ explicit:{ // 标签选择外显
163
+ type: Boolean,
164
+ default: false
165
+ },
166
+
167
+ explicitHeiht:{
168
+ type: String,
169
+ default: ""
170
+ }
141
171
  },
142
172
  computed: {
143
173
  item_is_edit() {
@@ -145,6 +175,12 @@ export default create({
145
175
  return (item.is_edit == 1 || item.isShow) && !this.isDetail;
146
176
  }
147
177
  },
178
+ mounted() {
179
+ // 外显初始化
180
+ if(this.explicit){
181
+ this.handleEditLabel();
182
+ }
183
+ },
148
184
  watch: {
149
185
  selectedList: {
150
186
  immediate: true,
@@ -188,6 +224,7 @@ export default create({
188
224
  selectedList.splice(fdIndex, 1);
189
225
  }
190
226
  this.handleEmit(selectedList);
227
+ this.hanldeSetLabelItem(d.labelId, false);
191
228
  },
192
229
  handleCommonLabelChange(v, d) {
193
230
  const selectedList = this.labelSelectedList || [];
@@ -216,10 +253,14 @@ export default create({
216
253
  },
217
254
  handleEditLabel() {
218
255
  if (this.isLock) return;
219
- this.labelVisible = true;
256
+ if(!this.explicit) {
257
+ this.labelVisible = true;
258
+ }
220
259
  this.handleGetLabelData(this.item)
221
260
  },
222
261
  handleLabelCancel() {
262
+ if(this.explicit) return;
263
+
223
264
  this.$refs.labelFormContent?.resetShowAdd();
224
265
  this.editLabelItem.showAdd = false;
225
266
  this.editLabelItem = {};
@@ -257,7 +298,7 @@ export default create({
257
298
 
258
299
  async handleGetLabelData(v, update) {
259
300
  const { rows, results } = await this.getLabelList(v);
260
- console.log(rows, results)
301
+ // console.log(rows, results)
261
302
  const labelList = rows || [];
262
303
  const labelObj = {};
263
304
  const cacheKey = `${v.val_key}_${v.name}`;
@@ -270,6 +311,7 @@ export default create({
270
311
  * typeName 按照分类处理
271
312
  * 没有分类创建分类,有则添加
272
313
  */
314
+ this.$set(n,'isSelect',false)
273
315
  if (labelObj[n.typeName]) {
274
316
  labelObj[n.typeName].itemList.push({ ...n });
275
317
  } else {
@@ -359,6 +401,19 @@ export default create({
359
401
  this.getCommonlabelsList(this.item.label_type);
360
402
  });
361
403
  }
404
+ },
405
+
406
+ // 标签外显发生变化
407
+ explicitOnChange(){
408
+ this.handleSaveLabel();
409
+ },
410
+
411
+ hanldeSetLabelItem(id, state){
412
+ if(this.explicit){
413
+ this.$nextTick(()=>{
414
+ this.$refs.labelFormContent?.hanldeSetLabelItem(id, state);
415
+ })
416
+ }
362
417
  }
363
418
  }
364
419
  });
@@ -913,7 +913,7 @@ export default create({
913
913
  onSaveSearch() {
914
914
  this.$refs.quicksearch?.onSave();
915
915
  },
916
- onSave(obj, isOutFilter = false) {
916
+ onSave(obj, isOutFilter = false, config = {}) {
917
917
  if (!this.validConObj(obj, this.searchFieldList, this.searchFieldLimit)) return false;
918
918
  let copy = [];
919
919
  if (this.outSearchFieldList.length) {
@@ -923,7 +923,7 @@ export default create({
923
923
  if (this.outRelationQuickSearch.length) {
924
924
  copyRelation = _.cloneDeep(this.outRelationQuickSearch, true);
925
925
  }
926
- this.$emit('onSave', obj, isOutFilter, copy, copyRelation);
926
+ this.$emit('onSave', obj, isOutFilter, copy, copyRelation, config);
927
927
  this.modalVisible = false;
928
928
  },
929
929
  // 外部调用
@@ -1631,7 +1631,7 @@ export default create({
1631
1631
  if(this.outSearchFieldList.some(v => !!v.explicitDefaultVal)){
1632
1632
  this.$emit('outSearchInit');
1633
1633
  if('reset' != config?.type){
1634
- this.outFilterChange();
1634
+ this.outFilterChange({type:'outSearchInit'});
1635
1635
  }
1636
1636
  }
1637
1637
  },
@@ -1669,9 +1669,9 @@ export default create({
1669
1669
  this.rowFoldHideBtnList = hideBtn;
1670
1670
  }
1671
1671
  },
1672
- outFilterChange() {
1672
+ outFilterChange(config= {}) {
1673
1673
  let conObj = this.getConObjParams() || [];
1674
- this.onSave(conObj, true);
1674
+ this.onSave(conObj, true, config);
1675
1675
  },
1676
1676
  visibleBtn(btn) {
1677
1677
  if (!btn.isVisible) return false;
@@ -223,7 +223,7 @@ export default {
223
223
  let [v] = this.treeData;
224
224
  this.item.value = v?.value ? [v.value] : [];
225
225
  if (typeof this.outFilterChange === 'function') {
226
- this.outFilterChange();
226
+ this.outFilterChange({type: 'outSearchInit'});
227
227
  }
228
228
  }
229
229
  },
@@ -227,7 +227,7 @@ export default {
227
227
  this.getWordbookData(item.setting.wordbook, obj).then(({ data }) => {
228
228
  this.handleWordbookData(item, data, obj);
229
229
  if('hasDefaultInit' == config?.type){
230
- this.outFilterChange();
230
+ this.outFilterChange({type:'outSearchInit'});
231
231
  }
232
232
  });
233
233
  }
@@ -301,8 +301,8 @@ export default {
301
301
  this.outFilterChange();
302
302
  }
303
303
  },
304
- outFilterChange() {
305
- this.$emit("outFilterChange");
304
+ outFilterChange(config = {}) {
305
+ this.$emit("outFilterChange",config);
306
306
  },
307
307
  maxTagPlaceholder(item) {
308
308
  if (Array.isArray(item.value)) {
@@ -383,7 +383,15 @@ export const outQuickSearchFn = {
383
383
  arr.forEach(el => {
384
384
  el.setting = typeof el.setting == "string" ? JSON.parse(el.setting) : el.setting;
385
385
  const attr = el?.settingObj?.attr || "";
386
+ const isPreciseSearch = el?.settingObj?.isPreciseSearch || "";
386
387
  const showSetting = el?.setting?.showSetting || []
388
+ /**
389
+ * NUMBER和TEXT属性字段
390
+ * 如果 开启了精准搜索,则传条件的时候 要传 EQ
391
+ * isPreciseSearch: 0/1
392
+ */
393
+ let textCon = el.fieldType == "TEXT" && isPreciseSearch == 1 ? 'EQ' : 'CL';
394
+
387
395
  // 映射优先级最高
388
396
  if (showSetting?.length) {
389
397
  let tvalue = []
@@ -484,7 +492,7 @@ export const outQuickSearchFn = {
484
492
  this.handleSetLabelOptions(el.setting.labelType, el);
485
493
  }
486
494
  } else if ("PASSWORD" === attr) {
487
- this.$set(el, "con", el.fieldType === "NUMBER" ? "EQ" : "CL");
495
+ this.$set(el, "con", el.fieldType === "NUMBER" ? "EQ" : textCon);
488
496
  this.$set(el, "comAttr", "PASSWORD");
489
497
  this.$set(el, "PASSWORDTYPE", true);
490
498
  this.$set(el, "value", "");
@@ -495,7 +503,7 @@ export const outQuickSearchFn = {
495
503
  this.$set(el, "com", "Text");
496
504
  this.$set(el, "attr", "DURATION");
497
505
  } else {
498
- this.$set(el, "con", "CL");
506
+ this.$set(el, "con", textCon);
499
507
  this.$set(el, "value", "");
500
508
  this.$set(el, "com", "Text");
501
509
  }
@@ -991,6 +991,8 @@ export default create({
991
991
  handlerInitSearchItem(arr) {
992
992
  if (!Array.isArray(arr)) return;
993
993
  arr.forEach(el => {
994
+ const isPreciseSearch = el?.settingObj?.isPreciseSearch || "";
995
+
994
996
  if (el.setting) {
995
997
  // el.seting 可能是 string / object
996
998
  el.setting = typeof el.setting == "string" ? JSON.parse(el.setting) : el.setting;
@@ -1085,8 +1087,14 @@ export default create({
1085
1087
  });
1086
1088
  }
1087
1089
  } else if (el.fieldType == "TEXT") {
1088
- this.$set(el, "con", "CL");
1089
- this.$set(el, "CL", "");
1090
+ /**
1091
+ * NUMBER和TEXT属性字段
1092
+ * 如果 开启了精准搜索,则传条件的时候 要传 EQ
1093
+ * isPreciseSearch: 0/1
1094
+ */
1095
+ let con = isPreciseSearch == 1 ? 'EQ': 'CL';
1096
+ this.$set(el, "con", con);
1097
+ this.$set(el, con, "");
1090
1098
  } else if (el.fieldType == "JSONB") {
1091
1099
  this.$set(el, "con", "EQ");
1092
1100
  this.$set(el, "EQ", "");