cnhis-design-vue 0.1.77-beta → 0.1.81-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 (35) hide show
  1. package/es/big-table/index.js +44 -25
  2. package/es/big-table/style.css +1 -1
  3. package/es/img/no-data2.0ca9388b.png +0 -0
  4. package/es/index/index.js +642 -358
  5. package/es/index/style.css +1 -1
  6. package/es/multi-chat/index.js +91 -64
  7. package/es/multi-chat/style.css +1 -1
  8. package/es/multi-chat-client/index.js +8 -0
  9. package/es/multi-chat-setting/index.js +32 -19
  10. package/es/multi-chat-setting/style.css +1 -1
  11. package/es/scale-view/index.js +46 -37
  12. package/es/scale-view/style.css +1 -1
  13. package/es/table-filter/index.js +428 -204
  14. package/es/table-filter/style.css +1 -1
  15. package/es/utils/vexutils.js +21 -0
  16. package/lib/cui.common.js +902 -572
  17. package/lib/cui.umd.js +902 -572
  18. package/lib/cui.umd.min.js +40 -40
  19. package/lib/img/no-data2.0ca9388b.png +0 -0
  20. package/package.json +2 -2
  21. package/packages/big-table/src/BigTable.vue +20 -1
  22. package/packages/big-table/src/assets/style/table-base.less +9 -1
  23. package/packages/multi-chat/chat/index.vue +2 -1
  24. package/packages/multi-chat/chat/scrollList.vue +56 -28
  25. package/packages/multi-chat/img/no-data2.png +0 -0
  26. package/packages/multi-chat/setting/baseInfo/index.vue +5 -0
  27. package/packages/scale-view/scaleView.vue +13 -8
  28. package/packages/table-filter/src/base-search-com/BaseSearch.vue +53 -44
  29. package/packages/table-filter/src/components/multi-select/multi-select.vue +69 -20
  30. package/packages/table-filter/src/components/multi-select/select-pages.vue +72 -0
  31. package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +13 -37
  32. package/packages/table-filter/src/mixins/mixins.js +7 -0
  33. package/packages/table-filter/src/mixins/wordBookutils.js +98 -0
  34. package/packages/table-filter/src/quick-search/QuickSearch.vue +22 -38
  35. package/src/utils/vexutils.js +17 -1
@@ -4,6 +4,7 @@
4
4
  v-if="item.com == 'SelectMui'"
5
5
  :placeholder="`请选择${item.alias || item.title}`"
6
6
  style="width: 160px"
7
+ :dropdownMatchSelectWidth="false"
7
8
  :maxTagCount="handleMaxTagCount(item)"
8
9
  :maxTagPlaceholder="handleMaxTag(item)"
9
10
  showSearch
@@ -20,41 +21,58 @@
20
21
  <a-spin v-if="fetchingWordbook" slot="notFoundContent" size="small" />
21
22
  <template v-if="item.comType == 'SelectMuiWordBook'">
22
23
  <a-select-option
23
- v-for="sea in item.dataSource"
24
+ v-for="(sea, k) in item.dataSource"
24
25
  :key="item.sid + sea.myName"
25
26
  :value="sea.myName"
26
27
  :title="sea.showKeys || sea.myName"
28
+ :disabled="k === 0 && hasShowKeys && item.hasFieldList"
27
29
  >
28
- {{ sea.showKeys || sea.myName }}
30
+ <div
31
+ v-if="item.hasFieldList && sea.showKeys"
32
+ :class="{
33
+ 'c-s-title-line': k === 0,
34
+ }"
35
+ style="display: flex;"
36
+ >
37
+ <span style="flex: 1;" v-for="(v1, k1) in sea.showKeys.split('<&=&>')" :key="k1" class="c-s-content-item">{{ v1 }}</span>
38
+ </div>
39
+ <span v-else>
40
+ {{ sea.showKeys || sea.myName }}
41
+ </span>
29
42
  </a-select-option>
30
43
  </template>
31
44
  <template v-else>
32
45
  <a-select-option v-for="(i, d) in item.labelList" :key="d">
33
- {{ i.labelName || "" }}
46
+ {{ i.labelName || '' }}
34
47
  </a-select-option>
35
48
  </template>
49
+
50
+ <div slot="dropdownRender" class="drop-down-container" slot-scope="menu">
51
+ <a-spin :spinning="fetchingWordbook">
52
+ <v-nodes :vnodes="menu" />
53
+ <select-pages v-if="!isnoPages" :searchPageConfig="item.searchPageConfig" :handleSearchChangePage="handleSearchChangePage" />
54
+ </a-spin>
55
+ </div>
36
56
  </a-select>
37
57
  </template>
38
58
  <script>
39
59
  import { Select, Spin, Icon } from 'ant-design-vue';
40
60
  import utils from '@/utils/utils-map';
61
+ import selectPages from './select-pages';
41
62
  export default {
42
- name: "multiSelect",
63
+ name: 'multiSelect',
43
64
  components: {
44
- [Select.name]:Select,
65
+ [Select.name]: Select,
45
66
  [Select.Option.name]: Select.Option,
46
67
  [Spin.name]: Spin,
47
- [Icon.name]: Icon
68
+ [Icon.name]: Icon,
69
+ selectPages,
70
+ VNodes: {
71
+ functional: true,
72
+ render: (h, ctx) => ctx.props.vnodes
73
+ }
48
74
  },
49
- props: [
50
- "item",
51
- "maxTagPlaceholder",
52
- "outFilterChange",
53
- "handleWordBookSearch",
54
- "dropdownVisibleChange",
55
- "source",
56
- "fetchingWordbook"
57
- ],
75
+ props: ['item', 'maxTagPlaceholder', 'outFilterChange', 'handleWordBookSearch', 'dropdownVisibleChange', 'source', 'fetchingWordbook'],
58
76
  data() {
59
77
  return {};
60
78
  },
@@ -70,9 +88,22 @@ export default {
70
88
  handleMaxTag() {
71
89
  return function(item) {
72
90
  let len = this.maxTagPlaceholder(item);
73
- if (len <= 1) return "";
91
+ if (len <= 1) return '';
74
92
  return `已选${this.maxTagPlaceholder(item)}个${item.alias || item.title}`;
75
93
  };
94
+ },
95
+
96
+ // 有没有分页配置
97
+ isnoPages(){
98
+ const { searchPageConfig } = this.item || {};
99
+ if(!searchPageConfig) return;
100
+
101
+ return searchPageConfig.page <= 1 && !searchPageConfig.hasNextPage;
102
+ },
103
+
104
+ hasShowKeys(){
105
+ let showKeys = this?.item?.setting?.wordbook?.showKeys || [];
106
+ return showKeys.length > 0
76
107
  }
77
108
  },
78
109
  watch: {},
@@ -88,11 +119,13 @@ export default {
88
119
  let refDom = this.$refs.quickInputSelect;
89
120
  if (!refDom) return;
90
121
  let selectDom = refDom.$el;
91
- let pDom = selectDom.querySelector(".ant-select-selection--multiple");
92
- let hasTag = pDom.querySelector(".quick-input-select-span");
122
+ if(!selectDom) return;
123
+
124
+ let pDom = selectDom.querySelector('.ant-select-selection--multiple');
125
+ let hasTag = pDom.querySelector('.quick-input-select-span');
93
126
  if (!hasTag) {
94
- let tag = document.createElement("span");
95
- tag.className = "quick-input-select-span";
127
+ let tag = document.createElement('span');
128
+ tag.className = 'quick-input-select-span';
96
129
  let icon = `<i aria-label="图标: down" class="anticon anticon-down ant-select-arrow-icon"><svg viewBox="64 64 896 896" data-icon="down" width="1em" height="1em" fill="currentColor" aria-hidden="true" focusable="false" class=""><path d="M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z"></path></svg></i>`;
97
130
  tag.innerHTML = icon;
98
131
  pDom.appendChild(tag);
@@ -101,6 +134,13 @@ export default {
101
134
 
102
135
  filterOption(...arg) {
103
136
  return utils.filterOption(...arg);
137
+ },
138
+
139
+ handleSearchChangePage(type) {
140
+ let cType = type || 'next';
141
+ let { page, keyword = undefined } = this?.item?.searchPageConfig;
142
+ page = cType === 'next' ? page + 1 : page - 1;
143
+ this.handleWordBookSearch(keyword, this.item, { page });
104
144
  }
105
145
  }
106
146
  };
@@ -138,4 +178,13 @@ export default {
138
178
  margin-right: 8px;
139
179
  height: 32px;
140
180
  }
181
+
182
+ .c-s-title-line {
183
+ font-weight: 700;
184
+ color: #000;
185
+ font-size: 14px;
186
+ }
187
+ .c-s-content-item {
188
+ padding: 0 5px;
189
+ }
141
190
  </style>
@@ -0,0 +1,72 @@
1
+ <template functional>
2
+ <div class="form-select-btn" @mousedown="e => e.preventDefault()">
3
+ <a-button
4
+ :disabled="props.searchPageConfig.page <= 1"
5
+ type="dashed"
6
+ block
7
+ @click.self.stop="props.handleSearchChangePage('prev')"
8
+ >
9
+ <a-icon type="left" /> 上一页
10
+ </a-button>
11
+ <a-button
12
+ :disabled="!props.searchPageConfig.hasNextPage"
13
+ type="dashed"
14
+ block
15
+ @click.self.stop="props.handleSearchChangePage('next')"
16
+ >
17
+ 下一页 <a-icon type="right" />
18
+ </a-button>
19
+ </div>
20
+ </template>
21
+
22
+ <script>
23
+ import {Button,Icon} from 'ant-design-vue'
24
+ export default {
25
+ name: "selectPages",
26
+ components:{
27
+ [Button.name]:Button,
28
+ [Icon.name]:Icon
29
+ },
30
+ props: {
31
+ searchPageConfig: {
32
+ type: Object,
33
+ default: () => ({
34
+ page: 1,
35
+ total: 1,
36
+ hasNextPage: false
37
+ })
38
+ },
39
+ handleSearchChangePage: {
40
+ type: Function,
41
+ default: () => {}
42
+ }
43
+ }
44
+ };
45
+ </script>
46
+
47
+ <style lang="less" scoped>
48
+ .form-select-btn {
49
+ width: 100%;
50
+ overflow: hidden;
51
+ display: flex;
52
+ justify-content: space-around;
53
+ border-top: 1px solid #d5d5d5;
54
+ border-bottom-right-radius: 4px;
55
+ border-bottom-left-radius: 4px;
56
+ /deep/ .ant-btn {
57
+ border: none;
58
+ border-radius: 0 0 4px 4px;
59
+ &:hover {
60
+ opacity: 0.7;
61
+ }
62
+ }
63
+ /deep/ .ant-btn-dashed[disabled] {
64
+ background-color: #fff !important;
65
+ }
66
+
67
+ .ant-btn + .ant-btn {
68
+ border-left: 1px solid #d5d5d5;
69
+ border-bottom-left-radius: 0;
70
+ }
71
+ }
72
+ </style>
@@ -91,6 +91,7 @@
91
91
 
92
92
  import multiSelect from '../multi-select/multi-select';
93
93
  import { filterApiFn } from '../../mixins/mixins';
94
+ import wordBookutils from '../../mixins/wordBookutils';
94
95
 
95
96
  const EVALUATEList = [
96
97
  {
@@ -149,7 +150,7 @@ export default {
149
150
 
150
151
  // 方法
151
152
  methods: {
152
- handleWordBookSearch(value, item) {
153
+ handleWordBookSearch(value, item, config = {}) {
153
154
  if (item.comType != "SelectMuiWordBook") return;
154
155
  let curAutograph = item.settingObj.wordbook && item.settingObj.wordbook.autograph;
155
156
  let params = {
@@ -163,8 +164,9 @@ export default {
163
164
  obj[item.p_name] = item.p_value;
164
165
  });
165
166
  }
166
- this.getWordbookData(item.setting.wordbook, { ...params, ...obj }).then(({ data }) => {
167
- this.handleWordbookData(item, data);
167
+ let rp = { ...params, ...obj, ...config }
168
+ this.getWordbookData(item.setting.wordbook, rp).then(({ data }) => {
169
+ this.handleWordbookData(item, data, rp);
168
170
  });
169
171
  },
170
172
  dropdownVisibleChange(open, item) {
@@ -180,43 +182,16 @@ export default {
180
182
  obj.autograph = item.settingObj.wordbook.autograph;
181
183
  }
182
184
  this.getWordbookData(item.setting.wordbook, obj).then(({ data }) => {
183
- this.handleWordbookData(item, data);
185
+ this.handleWordbookData(item, data, obj);
184
186
  });
185
187
  }
186
188
  },
187
- handleWordbookData(item, data) {
188
- let { setting = {} } = item;
189
- let { showKeys = [], defaultValue, defaultValueTitle } = setting.wordbook || {};
190
- let defaultItem = null;
191
- if (defaultValue && defaultValueTitle) {
192
- defaultItem = {
193
- myName: defaultValue,
194
- showKeys: defaultValueTitle
195
- };
196
- }
197
- if (data && data.result) {
198
- // 数组赋值并添加唯一name
199
- item.dataSource = data.map.rows.map(row => {
200
- let showKeysStr = [];
201
- showKeys.forEach(ren => {
202
- showKeysStr.push(row[ren]);
203
- });
204
- return Object.assign(row, {
205
- myName: row[item.setting.wordbook.field_key],
206
- showKeys: showKeysStr.join("")
207
- });
208
- });
209
- // 数组对象去重
210
- let obj = {};
211
- let arr = item.dataSource.reduce((cur, next) => {
212
- obj[next.myName] ? "" : (obj[next.myName] = true && cur.push(next));
213
- return cur;
214
- }, []);
215
- if (defaultItem) {
216
- arr.unshift(defaultItem);
217
- }
218
- item.dataSource = arr;
219
- }
189
+ handleWordbookData(item, data, params) {
190
+ this.$set(item, "hasFieldList", false);
191
+ const {rows,hasFieldList,searchPageConfig} = wordBookutils.handleWordbookData(item,data,params);
192
+ this.$set(item, "hasFieldList", hasFieldList);
193
+ this.$set(item, "dataSource", rows);
194
+ item.searchPageConfig = Object.assign(item.searchPageConfig, searchPageConfig);
220
195
  },
221
196
  getWordbookData(o, obj) {
222
197
  let { id, filterKeys, wordbookType } = o;
@@ -227,6 +202,7 @@ export default {
227
202
  wordbookId: id,
228
203
  fieldKeys: resFieldKeys,
229
204
  wordbookType: wordbookType || "WORDBOOK",
205
+ asyncCount: 1, // 开启性能模式
230
206
  ...obj
231
207
  };
232
208
  return this.handleGetConfigApi(params, 'requestGetWordbookData', { fields: o }).then(res => {
@@ -402,6 +402,13 @@ export const outQuickSearchFn = {
402
402
  this.$set(el, "comType", "SelectMuiWordBook");
403
403
  this.$set(el, "value", []);
404
404
  this.$set(el, "dataSource", []);
405
+ this.$set(el, "searchPageConfig", {
406
+ keyword: undefined,
407
+ isRequest: false, // 是否已请求
408
+ page: 1, // 当前页
409
+ total: 1, // 总页数
410
+ hasNextPage: false
411
+ });
405
412
  } else {
406
413
  if (["MONEY", "PERCENTAGE", "AGE", "NUMBER"].includes(attr) || el.fieldType == "NUMBER") {
407
414
  this.$set(el, "con", "BIGANDLESS");
@@ -0,0 +1,98 @@
1
+ import vexutils from '@/utils/vexutils';
2
+
3
+ const SYMBOL = "<&=&>"
4
+ /**
5
+ * 处理 getWordbookData 接口返回的数据以及配置
6
+ */
7
+ const formatWordbookDataUtils = {
8
+ hasArray: (arr) => Array.isArray(arr) && arr.length > 0,
9
+ handleWordbookData(item, data, params) {
10
+ // this.$set(item, "hasFieldList", false);
11
+ let { setting = {} } = item;
12
+ let { showKeys = [], defaultValue, defaultValueTitle } = setting.wordbook || {};
13
+ let defaultItem = null;
14
+
15
+ let resArr = [];
16
+ let hasFieldList = false;
17
+ let searchPageConfig = {};
18
+
19
+ if (defaultValue && defaultValueTitle) {
20
+ defaultItem = {
21
+ myName: defaultValue,
22
+ showKeys: defaultValueTitle
23
+ };
24
+ }
25
+ if (data && data.result) {
26
+ let { page, hasNextPage,fieldList } = data.map;
27
+ searchPageConfig = Object.assign(item.searchPageConfig, {
28
+ page,
29
+ hasNextPage,
30
+ isRequest: true,
31
+ keyword: params?.keyword || undefined
32
+ });
33
+ // 数组赋值并添加唯一name
34
+ let rows = data.map.rows.map(row => {
35
+ let showKeysStr = [];
36
+ showKeys.forEach(ren => {
37
+ let str = vexutils.stringToValue(row[ren],'change_text')
38
+ showKeysStr.push(str);
39
+ });
40
+ let name = vexutils.stringToValue(row[item.setting.wordbook.field_key],'value')
41
+ return Object.assign(row, {
42
+ myName: name,
43
+ showKeys: showKeysStr.join(SYMBOL)
44
+ });
45
+ });
46
+ // 数组对象去重
47
+ let obj = {};
48
+ resArr = rows.reduce((cur, next) => {
49
+ obj[next.myName] ? "" : (obj[next.myName] = true && cur.push(next));
50
+ return cur;
51
+ }, []);
52
+ if (defaultItem) {
53
+ resArr.unshift(defaultItem);
54
+ }
55
+ if(formatWordbookDataUtils.hasArray(fieldList) && formatWordbookDataUtils.hasArray(showKeys) && showKeys.length > 1){
56
+ let t = formatWordbookDataUtils.getTitleHeader(fieldList,showKeys);
57
+ resArr.unshift({
58
+ myName: t,
59
+ showKeys: t,
60
+ sid: Math.random()
61
+ })
62
+ // this.$set(item, "hasFieldList", true);
63
+ hasFieldList = true;
64
+ }
65
+ // this.$set(item, "dataSource", resArr);
66
+ }
67
+
68
+ return {
69
+ rows:resArr,
70
+ hasFieldList,
71
+ searchPageConfig
72
+ }
73
+ },
74
+
75
+ // 下拉搜索框获取字段title
76
+ getTitleHeader(fieldList, renderKey) {
77
+ let titleHeader = [];
78
+ let renderKeyArr = [];
79
+ if (Array.isArray(renderKey)) {
80
+ renderKeyArr = [...renderKey];
81
+ } else {
82
+ renderKeyArr = [renderKey];
83
+ }
84
+ renderKeyArr.forEach(render => {
85
+ for (let i = 0; i < fieldList.length; i++) {
86
+ if (render === fieldList[i].columnName) {
87
+ titleHeader.push(`${fieldList[i].title}`);
88
+ break;
89
+ }
90
+ }
91
+ });
92
+ let res = titleHeader.join(SYMBOL);
93
+ return res;
94
+ },
95
+ }
96
+
97
+
98
+ export default formatWordbookDataUtils;
@@ -714,6 +714,8 @@ import rangeAge from '../components/range-age/index';
714
714
  import multiSelect from '../components/multi-select/multi-select';
715
715
  import resize from 'vue-resize-directive';
716
716
  import { durationMixin, $utils, filterApiFn } from '../mixins/mixins';
717
+ import vexutils from '@/utils/vexutils';
718
+ import wordBookutils from '../mixins/wordBookutils';
717
719
  import create from '@/core/create';
718
720
  export default create({
719
721
  name: "quick-search",
@@ -980,6 +982,13 @@ export default create({
980
982
  this.$set(el, "value", []);
981
983
  this.$set(el, "com", "SelectMui");
982
984
  this.$set(el, "comType", "SelectMuiWordBook");
985
+ this.$set(el, "searchPageConfig", {
986
+ keyword: undefined,
987
+ isRequest: false, // 是否已请求
988
+ page: 1, // 当前页
989
+ total: 1, // 总页数
990
+ hasNextPage: false
991
+ });
983
992
  return;
984
993
  } else if (el.setting.showSetting && el.setting.showSetting.length > 0) {
985
994
  this.$set(el, "con", "CONVERT");
@@ -1095,6 +1104,7 @@ export default create({
1095
1104
  wordbookId: id,
1096
1105
  fieldKeys: resFieldKeys,
1097
1106
  wordbookType: wordbookType || "WORDBOOK",
1107
+ asyncCount: 1, // 开启性能模式
1098
1108
  ...obj
1099
1109
  };
1100
1110
  return this.handleGetConfigApi(params, 'requestGetWordbookData', { fields: o }).then(res => {
@@ -1104,39 +1114,12 @@ export default create({
1104
1114
  this.fetchingWordbook = false;
1105
1115
  });
1106
1116
  },
1107
- handleWordbookData(item, data) {
1108
- let { setting = {} } = item;
1109
- let { showKeys = [], defaultValue, defaultValueTitle } = setting.wordbook || {};
1110
- let defaultItem = null;
1111
- if (defaultValue && defaultValueTitle) {
1112
- defaultItem = {
1113
- myName: defaultValue,
1114
- showKeys: defaultValueTitle
1115
- };
1116
- }
1117
- if (data && data.result) {
1118
- // 数组赋值并添加唯一name
1119
- let rows = data.map.rows.map(row => {
1120
- let showKeysStr = [];
1121
- showKeys.forEach(ren => {
1122
- showKeysStr.push(row[ren]);
1123
- });
1124
- return Object.assign(row, {
1125
- myName: row[item.setting.wordbook.field_key],
1126
- showKeys: showKeysStr.join("")
1127
- });
1128
- });
1129
- // 数组对象去重
1130
- let obj = {};
1131
- let arr = rows.reduce((cur, next) => {
1132
- obj[next.myName] ? "" : (obj[next.myName] = true && cur.push(next));
1133
- return cur;
1134
- }, []);
1135
- if (defaultItem) {
1136
- arr.unshift(defaultItem);
1137
- }
1138
- this.$set(item, "dataSource", arr);
1139
- }
1117
+ handleWordbookData(item, data, params) {
1118
+ this.$set(item, "hasFieldList", false);
1119
+ const {rows,hasFieldList,searchPageConfig} = wordBookutils.handleWordbookData(item,data,params);
1120
+ this.$set(item, "hasFieldList", hasFieldList);
1121
+ this.$set(item, "dataSource", rows);
1122
+ item.searchPageConfig = Object.assign(item.searchPageConfig, searchPageConfig);
1140
1123
  },
1141
1124
  filterChange() {},
1142
1125
  maxTagPlaceholder(item) {
@@ -1161,14 +1144,14 @@ export default create({
1161
1144
  this.curAutograph = item.settingObj.wordbook && item.settingObj.wordbook.autograph;
1162
1145
  this.searchItem = item;
1163
1146
  this.getWordbookData(item.setting.wordbook, obj).then(({ data }) => {
1164
- this.handleWordbookData(item, data);
1147
+ this.handleWordbookData(item, data, obj);
1165
1148
  });
1166
1149
  }
1167
1150
  },
1168
1151
  /**
1169
1152
  * 输入自动联想
1170
1153
  */
1171
- handleSearch(value, item) {
1154
+ handleSearch(value, item, config={}) {
1172
1155
  let params = {
1173
1156
  keyword: value,
1174
1157
  autograph: this.curAutograph
@@ -1180,14 +1163,15 @@ export default create({
1180
1163
  obj[item.p_name] = item.p_value;
1181
1164
  });
1182
1165
  }
1183
- this.getWordbookData(this.curWordbookData, { ...params, ...obj }).then(({ data }) => {
1184
- this.handleWordbookData(this.searchItem, data);
1166
+ let rp = { ...params, ...obj, ...config };
1167
+ this.getWordbookData(this.curWordbookData, rp).then(({ data }) => {
1168
+ this.handleWordbookData(this.searchItem, data, rp);
1185
1169
  });
1186
1170
  },
1187
1171
  onSave() {
1188
1172
  let mergeConObj = this.getMergeConObj();
1189
1173
  this.resetChangeWindow();
1190
-
1174
+
1191
1175
  if (!this.validConObj(mergeConObj, this.searchFieldList, this.searchFieldLimit)) return false;
1192
1176
  this.$emit("onSave", mergeConObj);
1193
1177
  return this.quickSearch;
@@ -681,7 +681,23 @@ XEUtils.mixin({
681
681
  },
682
682
  filterOption(input, option) {
683
683
  return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0;
684
- }
684
+ },
685
+
686
+ /**
687
+ * 转换含有###的值
688
+ * @param {*} item
689
+ * @param {*} k key
690
+ * @returns
691
+ */
692
+ stringToValue(item, k = "value") {
693
+ if (XEUtils.isString(item)) {
694
+ if (item && item.startsWith("###{")) {
695
+ let temp = JSON.parse(item.replace("###", ""));
696
+ item = temp[k];
697
+ }
698
+ }
699
+ return item;
700
+ },
685
701
  });
686
702
 
687
703
  export default XEUtils;