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.
- package/es/big-table/index.js +44 -25
- package/es/big-table/style.css +1 -1
- package/es/img/no-data2.0ca9388b.png +0 -0
- package/es/index/index.js +642 -358
- package/es/index/style.css +1 -1
- package/es/multi-chat/index.js +91 -64
- package/es/multi-chat/style.css +1 -1
- package/es/multi-chat-client/index.js +8 -0
- package/es/multi-chat-setting/index.js +32 -19
- package/es/multi-chat-setting/style.css +1 -1
- package/es/scale-view/index.js +46 -37
- package/es/scale-view/style.css +1 -1
- package/es/table-filter/index.js +428 -204
- package/es/table-filter/style.css +1 -1
- package/es/utils/vexutils.js +21 -0
- package/lib/cui.common.js +902 -572
- package/lib/cui.umd.js +902 -572
- package/lib/cui.umd.min.js +40 -40
- package/lib/img/no-data2.0ca9388b.png +0 -0
- package/package.json +2 -2
- package/packages/big-table/src/BigTable.vue +20 -1
- package/packages/big-table/src/assets/style/table-base.less +9 -1
- package/packages/multi-chat/chat/index.vue +2 -1
- package/packages/multi-chat/chat/scrollList.vue +56 -28
- package/packages/multi-chat/img/no-data2.png +0 -0
- package/packages/multi-chat/setting/baseInfo/index.vue +5 -0
- package/packages/scale-view/scaleView.vue +13 -8
- package/packages/table-filter/src/base-search-com/BaseSearch.vue +53 -44
- package/packages/table-filter/src/components/multi-select/multi-select.vue +69 -20
- package/packages/table-filter/src/components/multi-select/select-pages.vue +72 -0
- package/packages/table-filter/src/components/out-quick-search/out-quick-search.vue +13 -37
- package/packages/table-filter/src/mixins/mixins.js +7 -0
- package/packages/table-filter/src/mixins/wordBookutils.js +98 -0
- package/packages/table-filter/src/quick-search/QuickSearch.vue +22 -38
- 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
|
-
|
|
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:
|
|
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
|
-
|
|
92
|
-
|
|
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(
|
|
95
|
-
tag.className =
|
|
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
|
-
|
|
167
|
-
|
|
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
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
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
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
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
|
-
|
|
1184
|
-
|
|
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;
|
package/src/utils/vexutils.js
CHANGED
|
@@ -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;
|