three-trees-ui 1.0.22 → 1.0.24

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-trees-ui",
3
- "version": "1.0.22",
3
+ "version": "1.0.24",
4
4
  "publicPath": "/ui",
5
5
  "author": "hotent",
6
6
  "private": false,
@@ -106,6 +106,7 @@
106
106
  @reset="reset"
107
107
  @row-click="(row) => $emit('row-click', row)"
108
108
  @page-change="(page) => $emit('page-change', page)"
109
+ @size-change="(size) => $emit('size-change', size)"
109
110
  >
110
111
  <template #detail="{ item }">
111
112
  <ht-icon
@@ -128,9 +129,17 @@
128
129
  />
129
130
  <p
130
131
  class="selector-selected__label"
131
- :title="`${select[selectLabel]}(${select['code']})`"
132
+ :title="
133
+ `${select[selectLabel]}${
134
+ select['code'] ? `(${select['code']})` : ''
135
+ }`
136
+ "
132
137
  >
133
- {{ `${select[selectLabel]}(${select['code']})` }}
138
+ {{
139
+ `${select[selectLabel]}${
140
+ select['code'] ? `(${select['code']})` : ''
141
+ }`
142
+ }}
134
143
  </p>
135
144
  </template>
136
145
  </ht-list-selector>
@@ -28,6 +28,7 @@
28
28
  @search="handleSearch"
29
29
  @reset="handleReset"
30
30
  @page-change="handlePageChange"
31
+ @size-change="handleSizeChange"
31
32
  @row-click="(row) => $emit('row-click', row)"
32
33
  @select-data="(data) => $emit('select-data', data)"
33
34
  ></ht-dimension-selector>
@@ -150,6 +151,10 @@
150
151
  // 搜索模式下或者未进行过滤时,查询所有数据
151
152
  this.handleLoad(page)
152
153
  },
154
+ handleSizeChange(size) {
155
+ this.pagination.pageSize = size
156
+ this.handlePageChange(this.pagination.page)
157
+ },
153
158
  // 获取查询参数中的分页信息(不传page时默认查询第一页)
154
159
  getPageBean(page) {
155
160
  const pageBean = { ...this.pagination }
@@ -41,6 +41,7 @@
41
41
  @reset="reset"
42
42
  @row-click="(row) => $emit('row-click', row)"
43
43
  @page-change="(page) => $emit('page-change', page)"
44
+ @size-change="(size) => $emit('size-change', size)"
44
45
  >
45
46
  <template #detail="{ item }">
46
47
  <ht-icon
@@ -63,9 +64,17 @@
63
64
  />
64
65
  <p
65
66
  class="selector-selected__label"
66
- :title="`${select[selectLabel]}(${select['code']})`"
67
+ :title="
68
+ `${select[selectLabel]}${
69
+ select['code'] ? `(${select['code']})` : ''
70
+ }`
71
+ "
67
72
  >
68
- {{ `${select[selectLabel]}(${select['code']})` }}
73
+ {{
74
+ `${select[selectLabel]}${
75
+ select['code'] ? `(${select['code']})` : ''
76
+ }`
77
+ }}
69
78
  </p>
70
79
  </template>
71
80
  </ht-list-selector>
@@ -103,6 +103,7 @@
103
103
  @row-click="(row) => $emit('row-click', row)"
104
104
  @select-data="(data) => $emit('select-data', data)"
105
105
  @page-change="(page) => $emit('page-change', page)"
106
+ @size-change="(size) => $emit('size-change', size)"
106
107
  />
107
108
  </div>
108
109
  </template>
@@ -30,6 +30,7 @@
30
30
  @search="handleSearch"
31
31
  @reset="handleReset"
32
32
  @page-change="handlePageChange"
33
+ @size-change="handleSizeChange"
33
34
  @row-click="(row) => $emit('row-click', row)"
34
35
  @select-data="(data) => $emit('select-data', data)"
35
36
  ></ht-job-selector>
@@ -155,6 +156,10 @@
155
156
  // 搜索模式下或者未进行过滤时,查询所有数据
156
157
  this.handleLoad(page)
157
158
  },
159
+ handleSizeChange(size) {
160
+ this.pagination.pageSize = size
161
+ this.handlePageChange(this.pagination.page)
162
+ },
158
163
  // 获取查询参数中的分页信息(不传page时默认查询第一页)
159
164
  getPageBean(page) {
160
165
  const pageBean = { ...this.pagination }
@@ -14,6 +14,15 @@
14
14
  </div>
15
15
  <div class="selector-main__body">
16
16
  <el-scrollbar v-if="data.length > 0" class="selector-list__scroll">
17
+ <el-checkbox
18
+ v-if="!single"
19
+ v-model="checkAll"
20
+ class="check-all"
21
+ :indeterminate="isIndeterminate"
22
+ @change="handleCheckAllChange"
23
+ >
24
+ 全选
25
+ </el-checkbox>
17
26
  <ul
18
27
  class="selector-main__list"
19
28
  :class="{ 'two-columns': isSearchMode }"
@@ -44,7 +53,7 @@
44
53
  </div>
45
54
  <div v-if="data.length > 0" class="selector-main__pager">
46
55
  <el-pagination
47
- layout="prev, pager, next"
56
+ layout="sizes,prev, pager, next"
48
57
  :disabled="loading"
49
58
  :page-sizes="pageSizeArr"
50
59
  :page-size="pagination.pageSize"
@@ -52,6 +61,7 @@
52
61
  :total="pagination.total"
53
62
  :current-page="pagination.page"
54
63
  @current-change="handleCurrentChange"
64
+ @size-change="handleSizeChange"
55
65
  ></el-pagination>
56
66
  </div>
57
67
  </div>
@@ -112,7 +122,8 @@
112
122
  <script>
113
123
  import Locale from '@/mixins/locale'
114
124
  import mobileMode from '@/mixins/mobileMode.js'
115
- import { debounce } from 'lodash'
125
+ import { debounce, cloneDeep } from 'lodash'
126
+ import utils from '@/utils.js'
116
127
  const draggable = require('vuedraggable')
117
128
 
118
129
  export default {
@@ -171,7 +182,9 @@
171
182
  selects: [],
172
183
  currentSelectData: [],
173
184
  noDataImg: require('@/assets/no-data.png'),
174
- pageSizeArr: [10, 50, 100, 200, 300],
185
+ pageSizeArr: [10, 20, 50, 100, 200, 300],
186
+ checkAll: false,
187
+ isIndeterminate: false,
175
188
  }
176
189
  },
177
190
  computed: {
@@ -204,10 +217,10 @@
204
217
  }
205
218
  },
206
219
  rangeSpan() {
207
- return this.isSearchMode ? 0 : 7
220
+ return this.isSearchMode ? 0 : 6
208
221
  },
209
222
  mainSpan() {
210
- return this.isSearchMode ? 17 : 10
223
+ return this.isSearchMode ? 17 : 11
211
224
  },
212
225
  currentPageSelectedCount() {
213
226
  return this.single
@@ -239,6 +252,19 @@
239
252
  },
240
253
  deep: true,
241
254
  },
255
+ currentPageSelectedCount(val) {
256
+ this.checkAll = val === this.data.length
257
+ this.isIndeterminate = val > 0 && val < this.data.length
258
+ },
259
+ data: {
260
+ handler(val) {
261
+ this.checkAll = this.currentPageSelectedCount === val.length
262
+ this.isIndeterminate =
263
+ this.currentPageSelectedCount > 0 &&
264
+ this.currentPageSelectedCount < val.length
265
+ },
266
+ deep: true,
267
+ },
242
268
  },
243
269
  methods: {
244
270
  getSelectedData() {
@@ -288,12 +314,35 @@
288
314
  handleCurrentChange(currentPage) {
289
315
  this.$emit('page-change', currentPage)
290
316
  },
317
+ handleSizeChange(size) {
318
+ this.$emit('size-change', size)
319
+ },
291
320
  removeSelected(item) {
292
321
  this.selects.remove(item)
293
322
  },
294
323
  clearAllSelects() {
295
324
  this.selects = []
296
325
  },
326
+ handleCheckAllChange(val) {
327
+ if (val) {
328
+ const currentPageData = cloneDeep(this.data)
329
+ this.selects = this.selects.length
330
+ ? utils.uniqueArrayObject(
331
+ [...this.selects, ...currentPageData],
332
+ this.primaryFieldProp
333
+ )
334
+ : currentPageData
335
+ } else {
336
+ if (this.selects.length > this.data.length) {
337
+ const cancelSelectedIds = this.data.map((it) => it.id)
338
+ this.selects = this.selects.filter(
339
+ (item) => !cancelSelectedIds.includes(item.id)
340
+ )
341
+ } else {
342
+ this.selects = []
343
+ }
344
+ }
345
+ },
297
346
  },
298
347
  }
299
348
  </script>
@@ -356,7 +405,9 @@
356
405
  .selector-list__scroll {
357
406
  height: calc(100% - 42px);
358
407
  }
359
-
408
+ .check-all {
409
+ padding: 16px 20px 2px 20px;
410
+ }
360
411
  .selector-main__list {
361
412
  list-style: none;
362
413
  padding: 10px 20px;
@@ -425,6 +476,27 @@
425
476
  .el-pager {
426
477
  line-height: 25px;
427
478
  }
479
+ .el-select .el-input {
480
+ width: 86px;
481
+
482
+ .el-input__inner {
483
+ text-align: left;
484
+ padding-left: 10px;
485
+ padding-right: 0;
486
+ border-radius: 2px;
487
+ color: #333;
488
+ background: #f4f4f5;
489
+ border: none;
490
+ }
491
+ .el-select__caret {
492
+ color: #333;
493
+ }
494
+ }
495
+ .el-pagination__sizes {
496
+ .el-icon-arrow-up:before {
497
+ content: '\e78f';
498
+ }
499
+ }
428
500
  }
429
501
  }
430
502
  }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <el-dialog
3
- width="900px"
3
+ width="1060px"
4
4
  :title="title"
5
5
  class="orgdialog-selector__wrapper"
6
6
  :visible.sync="dialogVisible"
@@ -41,6 +41,7 @@
41
41
  @reset="reset"
42
42
  @row-click="(row) => $emit('row-click', row)"
43
43
  @page-change="(page) => $emit('page-change', page)"
44
+ @size-change="(size) => $emit('size-change', size)"
44
45
  >
45
46
  <el-card slot="range" class="selector-range__card" shadow="hover">
46
47
  <el-tabs v-model="activeRange">
@@ -84,9 +85,17 @@
84
85
  />
85
86
  <p
86
87
  class="selector-selected__label"
87
- :title="`${select[selectLabel]}(${select['code']})`"
88
+ :title="
89
+ `${select[selectLabel]}${
90
+ select['code'] ? `(${select['code']})` : ''
91
+ }`
92
+ "
88
93
  >
89
- {{ `${select[selectLabel]}(${select['code']})` }}
94
+ {{
95
+ `${select[selectLabel]}${
96
+ select['code'] ? `(${select['code']})` : ''
97
+ }`
98
+ }}
90
99
  </p>
91
100
  </template>
92
101
  </ht-list-selector>
@@ -86,6 +86,7 @@
86
86
  @row-click="(row) => $emit('row-click', row)"
87
87
  @select-data="(data) => $emit('select-data', data)"
88
88
  @page-change="(page) => $emit('page-change', page)"
89
+ @size-change="(size) => $emit('size-change', size)"
89
90
  @contact-group-change="(group) => $emit('contact-group-change', group)"
90
91
  @load-org="(org) => $emit('load-org', org)"
91
92
  @load-policy-org="(policy) => $emit('load-policy-org', policy)"
@@ -32,6 +32,7 @@
32
32
  @search="handleSearch"
33
33
  @reset="handleReset"
34
34
  @page-change="handlePageChange"
35
+ @size-change="handleSizeChange"
35
36
  @load-org="loadOrg"
36
37
  @load-policy-org="loadPolicyOrg"
37
38
  @row-click="(row) => $emit('row-click', row)"
@@ -146,6 +147,10 @@
146
147
  }
147
148
  }
148
149
  },
150
+ handleSizeChange(size) {
151
+ this.pagination.pageSize = size
152
+ this.handlePageChange(this.pagination.page)
153
+ },
149
154
  // 处理过滤类型变化的事件
150
155
  handleFilterTypeChange(type) {
151
156
  this.filterType = type
@@ -41,6 +41,7 @@
41
41
  @reset="reset"
42
42
  @row-click="(row) => $emit('row-click', row)"
43
43
  @page-change="(page) => $emit('page-change', page)"
44
+ @size-change="(size) => $emit('size-change', size)"
44
45
  >
45
46
  <el-card slot="range" class="selector-range__card" shadow="hover">
46
47
  <el-tabs v-model="activeRange">
@@ -87,9 +88,17 @@
87
88
  />
88
89
  <p
89
90
  class="selector-selected__label"
90
- :title="`${select[selectLabel]}(${select['code']})`"
91
+ :title="
92
+ `${select[selectLabel]}${
93
+ select['code'] ? `(${select['code']})` : ''
94
+ }`
95
+ "
91
96
  >
92
- {{ `${select[selectLabel]}(${select['code']})` }}
97
+ {{
98
+ `${select[selectLabel]}${
99
+ select['code'] ? `(${select['code']})` : ''
100
+ }`
101
+ }}
93
102
  </p>
94
103
  </template>
95
104
  </ht-list-selector>
@@ -84,6 +84,7 @@
84
84
  @row-click="(row) => $emit('row-click', row)"
85
85
  @select-data="(data) => $emit('select-data', data)"
86
86
  @page-change="(page) => $emit('page-change', page)"
87
+ @size-change="(size) => $emit('size-change', size)"
87
88
  @load-org-post="(org) => $emit('load-org-post', org)"
88
89
  @load-policy-post="(policy) => $emit('load-policy-post', policy)"
89
90
  />
@@ -35,6 +35,7 @@
35
35
  @search="handleSearch"
36
36
  @reset="handleReset"
37
37
  @page-change="handlePageChange"
38
+ @size-change="handleSizeChange"
38
39
  @load-org-post="loadOrgPost"
39
40
  @load-policy-post="loadPolicyPost"
40
41
  @change="handleChange"
@@ -174,6 +175,10 @@
174
175
  }
175
176
  }
176
177
  },
178
+ handleSizeChange(size) {
179
+ this.pagination.pageSize = size
180
+ this.handlePageChange(this.pagination.page)
181
+ },
177
182
  // 处理过滤类型变化的事件
178
183
  handleFilterTypeChange(type) {
179
184
  this.filterType = type
@@ -41,6 +41,7 @@
41
41
  @reset="reset"
42
42
  @row-click="(row) => $emit('row-click', row)"
43
43
  @page-change="(page) => $emit('page-change', page)"
44
+ @size-change="(size) => $emit('size-change', size)"
44
45
  >
45
46
  <template #detail="{ item }">
46
47
  <ht-icon
@@ -63,9 +64,17 @@
63
64
  />
64
65
  <p
65
66
  class="selector-selected__label"
66
- :title="`${select[selectLabel]}(${select['code']})`"
67
+ :title="
68
+ `${select[selectLabel]}${
69
+ select['code'] ? `(${select['code']})` : ''
70
+ }`
71
+ "
67
72
  >
68
- {{ `${select[selectLabel]}(${select['code']})` }}
73
+ {{
74
+ `${select[selectLabel]}${
75
+ select['code'] ? `(${select['code']})` : ''
76
+ }`
77
+ }}
69
78
  </p>
70
79
  </template>
71
80
  </ht-list-selector>
@@ -104,6 +104,7 @@
104
104
  @row-click="(row) => $emit('row-click', row)"
105
105
  @select-data="(data) => $emit('select-data', data)"
106
106
  @page-change="(page) => $emit('page-change', page)"
107
+ @size-change="(size) => $emit('size-change', size)"
107
108
  />
108
109
  </div>
109
110
  </template>
@@ -30,6 +30,7 @@
30
30
  @search="handleSearch"
31
31
  @reset="handleReset"
32
32
  @page-change="handlePageChange"
33
+ @size-change="handleSizeChange"
33
34
  @row-click="(row) => $emit('row-click', row)"
34
35
  @select-data="(data) => $emit('select-data', data)"
35
36
  ></ht-role-selector>
@@ -155,6 +156,10 @@
155
156
  // 搜索模式下或者未进行过滤时,查询所有数据
156
157
  this.handleLoad(page)
157
158
  },
159
+ handleSizeChange(size) {
160
+ this.pagination.pageSize = size
161
+ this.handlePageChange(this.pagination.page)
162
+ },
158
163
  // 获取查询参数中的分页信息(不传page时默认查询第一页)
159
164
  getPageBean(page) {
160
165
  const pageBean = { ...this.pagination }
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <el-dialog
3
- width="900px"
3
+ width="1060px"
4
4
  :title="title"
5
5
  class="userdialog-selector__wrapper"
6
6
  :visible.sync="dialogVisible"
@@ -41,6 +41,7 @@
41
41
  @reset="reset"
42
42
  @row-click="(row) => $emit('row-click', row)"
43
43
  @page-change="(page) => $emit('page-change', page)"
44
+ @size-change="(size) => $emit('size-change', size)"
44
45
  >
45
46
  <el-card slot="range" class="selector-range__card" shadow="hover">
46
47
  <el-tabs v-model="activeRange">
@@ -111,9 +112,17 @@
111
112
  />
112
113
  <p
113
114
  class="selector-selected__label"
114
- :title="`${select[selectLabel]}(${select['account']})`"
115
+ :title="
116
+ `${select[selectLabel]}${
117
+ select['account'] ? `(${select['account']})` : ''
118
+ }`
119
+ "
115
120
  >
116
- {{ `${select[selectLabel]}(${select['account']})` }}
121
+ {{
122
+ `${select[selectLabel]}${
123
+ select['account'] ? `(${select['account']})` : ''
124
+ }`
125
+ }}
117
126
  </p>
118
127
  </template>
119
128
  </ht-list-selector>
@@ -99,6 +99,7 @@
99
99
  @row-click="(row) => $emit('row-click', row)"
100
100
  @select-data="(data) => $emit('select-data', data)"
101
101
  @page-change="(page) => $emit('page-change', page)"
102
+ @size-change="(size) => $emit('size-change', size)"
102
103
  @contact-group-change="(group) => $emit('contact-group-change', group)"
103
104
  @load-org-user="(org) => $emit('load-org-user', org)"
104
105
  @load-policy-user="(policy) => $emit('load-policy-user', policy)"
@@ -31,6 +31,7 @@
31
31
  @search="handleSearch"
32
32
  @reset="handleReset"
33
33
  @page-change="handlePageChange"
34
+ @size-change="handleSizeChange"
34
35
  @contact-group-change="loadContactUser"
35
36
  @load-org-user="loadOrgUser"
36
37
  @load-policy-user="loadPolicyUser"
@@ -145,6 +146,10 @@
145
146
  }
146
147
  }
147
148
  },
149
+ handleSizeChange(size) {
150
+ this.pagination.pageSize = size
151
+ this.handlePageChange(this.pagination.page)
152
+ },
148
153
  // 处理过滤类型变化的事件
149
154
  handleFilterTypeChange(type) {
150
155
  this.filterType = type
package/src/utils.js CHANGED
@@ -51,6 +51,20 @@ var utils = {
51
51
  })
52
52
  return result
53
53
  },
54
+ /**
55
+ *数组对象去重
56
+ *
57
+ * @export
58
+ * @param {any[]} array 要去重的数组
59
+ * @param {string} key 要去重的对象属性值
60
+ * @return {*} {any[]}
61
+ */
62
+ uniqueArrayObject(array, key) {
63
+ return array.reduce((pre, cur) => {
64
+ const keys = pre.map((item) => item[key])
65
+ return keys.includes(cur[key]) ? pre : [...pre, cur]
66
+ }, [])
67
+ },
54
68
  // 获取随机的名称
55
69
  getName: () => {
56
70
  return Math.random()