bri-components 1.2.0 → 1.2.2

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 (68) hide show
  1. package/lib/0.bri-components.min.js +1 -1
  2. package/lib/1.bri-components.min.js +1 -1
  3. package/lib/2.bri-components.min.js +1 -1
  4. package/lib/3.bri-components.min.js +1 -1
  5. package/lib/4.bri-components.min.js +1 -1
  6. package/lib/5.bri-components.min.js +1 -1
  7. package/lib/6.bri-components.min.js +1 -1
  8. package/lib/7.bri-components.min.js +1 -1
  9. package/lib/8.bri-components.min.js +1 -1
  10. package/lib/9.bri-components.min.js +1 -1
  11. package/lib/bri-components.min.js +6 -6
  12. package/package.json +1 -1
  13. package/src/.DS_Store +0 -0
  14. package/src/abolish/DshFlatTable.vue +1 -1
  15. package/src/components/.DS_Store +0 -0
  16. package/src/components/controls/.DS_Store +0 -0
  17. package/src/components/controls/base/BriUpload/BriUpload.vue +2 -1
  18. package/src/components/controls/base/BriUpload/BriUploadImage.vue +45 -32
  19. package/src/components/controls/base/BriUpload/uploadMixin.js +3 -2
  20. package/src/components/controls/base/DshCascader/DshCascader.vue +52 -53
  21. package/src/components/controls/base/DshCascader/InfoCascader.vue +3 -4
  22. package/src/components/controls/base/DshCheckbox.vue +133 -140
  23. package/src/components/controls/base/DshCoordinates.vue +121 -147
  24. package/src/components/controls/base/DshDaterange.vue +1 -1
  25. package/src/components/controls/base/DshEditor.vue +2 -1
  26. package/src/components/controls/base/DshSelect.vue +4 -14
  27. package/src/components/controls/base/DshSwitch.vue +13 -20
  28. package/src/components/controls/controlMap.js +4 -0
  29. package/src/components/controls/controlMixin.js +23 -12
  30. package/src/components/controls/senior/.DS_Store +0 -0
  31. package/src/components/controls/senior/BriLabels.vue +170 -158
  32. package/src/components/controls/senior/selectDepartments.vue +380 -0
  33. package/src/components/controls/senior/selectUsers/DepartmentMenu.vue +191 -0
  34. package/src/components/controls/senior/selectUsers/selectUsers.vue +482 -0
  35. package/src/components/list/BriCard.vue +52 -0
  36. package/src/components/list/BriTreeItem.vue +110 -0
  37. package/src/components/small/DshTags.vue +132 -9
  38. package/src/index.js +7 -3
  39. package/src/styles/.DS_Store +0 -0
  40. package/src/styles/common/control.less +61 -56
  41. package/src/styles/components/.DS_Store +0 -0
  42. package/src/styles/components/controls/.DS_Store +0 -0
  43. package/src/styles/components/controls/base/BriUpload/BriUpload.less +11 -3
  44. package/src/styles/components/controls/base/BriUpload/BriUploadImage.less +6 -0
  45. package/src/styles/components/controls/base/DshCascader/DshCascader.less +33 -81
  46. package/src/styles/components/controls/base/DshCheckbox.less +72 -103
  47. package/src/styles/components/controls/base/DshCoordinates.less +1 -35
  48. package/src/styles/components/controls/base/DshEditor.less +3 -2
  49. package/src/styles/components/controls/base/DshInput.less +4 -8
  50. package/src/styles/components/controls/base/DshNumber.less +2 -2
  51. package/src/styles/components/controls/base/DshSelect.less +19 -4
  52. package/src/styles/components/controls/base/DshSwitch.less +1 -31
  53. package/src/styles/components/controls/senior/.DS_Store +0 -0
  54. package/src/styles/components/controls/senior/BriLabels.less +32 -118
  55. package/src/styles/components/controls/senior/cascaderTable.less +1 -1
  56. package/src/styles/components/controls/senior/flatTable.less +1 -1
  57. package/src/styles/components/controls/senior/selectDepartments.less +106 -0
  58. package/src/styles/components/controls/senior/selectUsers/DepartmentMenu.less +37 -0
  59. package/src/styles/components/controls/senior/selectUsers/index.less +2 -0
  60. package/src/styles/components/controls/senior/selectUsers/selectUsers.less +167 -0
  61. package/src/styles/components/form/DshDefaultSearch.less +1 -2
  62. package/src/styles/components/index.less +7 -3
  63. package/src/styles/components/list/BriCard.less +50 -0
  64. package/src/styles/components/list/BriFlatTable.less +1 -1
  65. package/src/styles/components/list/BriTreeItem.less +50 -0
  66. package/src/styles/components/small/DshModal.less +20 -42
  67. package/src/styles/components/small/DshTags.less +32 -14
  68. package/src/styles/components/unit/DshFormItem.less +3 -26
@@ -0,0 +1,482 @@
1
+ <template>
2
+ <div class="selectUsers">
3
+ <bri-tooltip
4
+ :content="showVal"
5
+ placement="top"
6
+ :transfer="true"
7
+ maxWidth="200"
8
+ >
9
+ <!-- 编辑 -->
10
+ <div
11
+ v-if="canEdit"
12
+ :class="{
13
+ ...commonClass,
14
+ 'selectUsers-edit': true
15
+ }"
16
+ @mouseenter="isHover = true"
17
+ @mouseleave="isHover = false"
18
+ @click="clickInput"
19
+ >
20
+ <template v-if="!$isEmptyData(curValList)">
21
+ <dsh-tags
22
+ class="text"
23
+ :list="curValList"
24
+ :propsObj="{
25
+ disabled: !finalCanEdit
26
+ }"
27
+ @delete="clickDeleteItem"
28
+ ></dsh-tags>
29
+
30
+ <Icon
31
+ v-if="selfPropsObj._clearable && isHover"
32
+ class="icon-close"
33
+ type="md-close"
34
+ @click.stop="clickClear"
35
+ />
36
+ <Icon
37
+ v-else
38
+ class="icon-default"
39
+ :type="`${multiple ? 'ios-people' : 'ios-person'}`"
40
+ />
41
+ </template>
42
+
43
+ <template v-else>
44
+ {{ emptyShowVal }}
45
+ </template>
46
+ </div>
47
+
48
+ <!-- 查看 -->
49
+ <div
50
+ v-else
51
+ :class="{
52
+ ...commonClass,
53
+ 'selectUsers-show': true
54
+ }"
55
+ >
56
+ <dsh-tags
57
+ v-if="!$isEmptyData(curValList)"
58
+ class="text"
59
+ :list="curValList"
60
+ :propsObj="{
61
+ closable: false
62
+ }"
63
+ ></dsh-tags>
64
+
65
+ <template v-else>
66
+ {{ emptyShowVal }}
67
+ </template>
68
+ </div>
69
+ </bri-tooltip>
70
+
71
+ <!-- 搜索选择框 -->
72
+ <dsh-modal
73
+ v-if="finalCanEdit"
74
+ class="selectUsers-modal"
75
+ v-model="showModal"
76
+ :propsObj="modalPropsObj"
77
+ mode="custom"
78
+ @cancel="clickCancel"
79
+ >
80
+ <div class="selectUsers-modal-wrap">
81
+ <!-- 左 -->
82
+ <div class="selectUsers-modal-wrap-left">
83
+ <!-- 上 筛选 -->
84
+ <div
85
+ v-if="curDepartment._key !== '_highSearch'"
86
+ class="search"
87
+ >
88
+ <dsh-input
89
+ :value="searchData"
90
+ :propsObj="inputPropsObj"
91
+ @change="search"
92
+ ></dsh-input>
93
+ </div>
94
+
95
+ <!-- 下 -->
96
+ <div class="content">
97
+ <!-- 左 部门 -->
98
+ <department-menu
99
+ class="content-menu"
100
+ :canEdit="false"
101
+ :list="departmentList"
102
+ @departClick="changeDepartment"
103
+ ></department-menu>
104
+
105
+ <!-- 右 部门对应的成员 -->
106
+ <div class="content-users">
107
+ <bri-loading v-if="loading" />
108
+
109
+ <template v-else>
110
+ <!-- 有数据 -->
111
+ <div
112
+ v-if="userList.length"
113
+ class="content-users-list"
114
+ >
115
+ <!-- 上 全选 -->
116
+ <div
117
+ v-if="multiple"
118
+ class="content-users-list-checkAll"
119
+ >
120
+ <Checkbox
121
+ :indeterminate="false"
122
+ :value="curCheckAll"
123
+ @click.prevent.native="clickCheckAll"
124
+ >
125
+ 全选
126
+ </Checkbox>
127
+ </div>
128
+
129
+ <!-- 下 列表-->
130
+ <div class="content-users-list-selects">
131
+ <div
132
+ v-for="userItem in userList"
133
+ :key="userItem._key"
134
+ class="content-users-list-selects-item"
135
+ >
136
+ <Checkbox
137
+ :value="isSelect(userItem._key)"
138
+ @on-change="clickSelectUserItem(userItem, ...arguments)"
139
+ >
140
+ {{ userItem.realname || userItem.mobile }}
141
+ </Checkbox>
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
+ <!-- 无数据 -->
147
+ <div
148
+ v-else
149
+ class="content-users-nodata"
150
+ >
151
+ <img
152
+ :src="$imageSrcMap.nodata"
153
+ alt="该部门暂无人员"
154
+ >
155
+ <div>
156
+ 该部门暂无人员
157
+ </div>
158
+ </div>
159
+ </template>
160
+ </div>
161
+ </div>
162
+ </div>
163
+
164
+ <!-- 中 图标 -->
165
+ <div class="selectUsers-modal-wrap-center">
166
+ <Icon
167
+ class="icon"
168
+ type="ios-arrow-forward"
169
+ />
170
+ </div>
171
+
172
+ <!-- 右 已选择项 -->
173
+ <div class="selectUsers-modal-wrap-right">
174
+ <div class="list">
175
+ <span
176
+ v-for="(userItem, userIndex) in newValList"
177
+ :key="userIndex"
178
+ class="list-item"
179
+ >
180
+ <span class="list-item-name">
181
+ {{ userItem.realname || userItem.mobile }}
182
+ </span>
183
+ <Icon
184
+ class="list-item-delete"
185
+ type="md-close"
186
+ @click="clickDeleteUserItem(userItem, userIndex, newValList)"
187
+ />
188
+ </span>
189
+ </div>
190
+ </div>
191
+ </div>
192
+
193
+ <!-- footer -->
194
+ <div class="selectUsers-modal-wrap-footer">
195
+ <dsh-buttons
196
+ :list="$getOperationList(['cancel', 'confirm'])"
197
+ @click="$dispatchEvent($event)"
198
+ ></dsh-buttons>
199
+ </div>
200
+ </dsh-modal>
201
+ </div>
202
+ </template>
203
+
204
+ <script>
205
+ import controlMixin from "../../controlMixin.js";
206
+ import departmentMenu from "./DepartmentMenu.vue";
207
+
208
+ export default {
209
+ name: "selectUsers",
210
+ mixins: [
211
+ controlMixin
212
+ ],
213
+ components: {
214
+ departmentMenu
215
+ },
216
+ props: {
217
+ showSelectUserModalOnly: Boolean
218
+ },
219
+ data () {
220
+ return {
221
+ isHover: false,
222
+
223
+ // 弹框
224
+ newValList: [],
225
+ showModal: false,
226
+ modalPropsObj: {
227
+ title: "选择成员",
228
+ showSlotClose: false,
229
+ closable: true
230
+ },
231
+ // 筛选
232
+ searchData: {
233
+ name: ""
234
+ },
235
+ inputPropsObj: {
236
+ _name: "成员名称",
237
+ _key: "name",
238
+ _search: true,
239
+ _clearable: false
240
+ },
241
+ curDepartment: {},
242
+ hightUsers: [
243
+ {
244
+ _key: "dyn_myself",
245
+ realname: "当前用户"
246
+ }
247
+ ],
248
+
249
+ loading: false,
250
+ userList: [],
251
+ departmentList: [],
252
+ // 分页
253
+ total: 0,
254
+ pagePropsObj: {
255
+ page: 1,
256
+ pagesize: 500,
257
+ showSizer: false
258
+ },
259
+ isSelect (_key) {
260
+ return !!this.newValList.find(newItem => newItem._key === _key);
261
+ },
262
+
263
+ operationMap: {
264
+ cancel: {
265
+ name: "取消",
266
+ type: "clickCancel",
267
+ btnType: "cancel",
268
+ event: "clickCancel"
269
+ },
270
+ confirm: {
271
+ name: "完成",
272
+ btnType: "primary",
273
+ type: "clickConfirm",
274
+ event: "clickConfirm"
275
+ }
276
+ }
277
+ };
278
+ },
279
+ computed: {
280
+ selfPropsObj () {
281
+ return {
282
+ _multiple: false,
283
+ _highSearch: false,
284
+
285
+ ...this.propsObj,
286
+ ...this.commonDealPropsObj
287
+ };
288
+ },
289
+
290
+ multiple () {
291
+ return this.selfPropsObj._multiple;
292
+ },
293
+ highSearch () {
294
+ return this.selfPropsObj._highSearch;
295
+ },
296
+ // 审签单定制需求使用字段
297
+ transmit_type () {
298
+ return this.selfPropsObj.transmit_type;
299
+ },
300
+ current_step_sp_user_key () {
301
+ return this.selfPropsObj.current_step_sp_user_key;
302
+ },
303
+ stepKey () {
304
+ return this.selfPropsObj.stepKey;
305
+ },
306
+
307
+ curCheckAll () {
308
+ return this.userList.every(userItem => this.newValList.find(newItem => newItem._key == userItem._key));
309
+ },
310
+ showVal () {
311
+ return this.$isEmptyData(this.curValList)
312
+ ? this.emptyShowVal
313
+ : this.curValList.map(userItem => userItem.realname || userItem.mobile).join("、");
314
+ }
315
+ },
316
+ created () {},
317
+ methods: {
318
+ // 外部也在使用
319
+ openModal () {
320
+ this.showModal = true;
321
+ },
322
+ closeModal () {
323
+ this.showModal = false;
324
+ },
325
+ init () {
326
+ this.searchData = {
327
+ name: ""
328
+ };
329
+ this.curDepartment = {};
330
+ this.pagePropsObj.page = 1;
331
+ this.getUserList();
332
+ this.getDepartmentList();
333
+ },
334
+
335
+ search () {
336
+ this.pagePropsObj.page = 1;
337
+ this.getUserList();
338
+ },
339
+ // 选择部门
340
+ changeDepartment (departmentItem) {
341
+ this.pagePropsObj.page = 1;
342
+ this.curDepartment = departmentItem;
343
+
344
+ if (departmentItem._key === "_highSearch") {
345
+ this.userList = this.hightUsers;
346
+ this.total = 1;
347
+ } else {
348
+ this.getUserList();
349
+ }
350
+ },
351
+ clickInput () {
352
+ if (this.finalCanEdit) {
353
+ this.openModal();
354
+ this.newValList = this.$deepCopy(this.curValList);
355
+ this.init();
356
+ }
357
+ },
358
+ clickDeleteItem (deleteItem) {
359
+ this.curValList = this.curValList.filter(item => item._key !== deleteItem._key);
360
+ },
361
+ clickClear () {
362
+ this.curValList = [];
363
+ },
364
+
365
+ /* ---------- 弹框里 --------- */
366
+ clickCheckAll () {
367
+ if (this.curCheckAll) {
368
+ this.newValList = this.newValList.filter(newItem =>
369
+ !this.userList.some(userItem => newItem._key === userItem._key)
370
+ );
371
+ } else {
372
+ this.newValList = [
373
+ ...this.newValList,
374
+ this.userList.filter(userItem =>
375
+ !this.newValList.some(newItem => newItem._key === userItem._key)
376
+ )
377
+ ];
378
+ }
379
+ },
380
+ clickSelectUserItem (curUserItem, bool) {
381
+ if (this.multiple) {
382
+ if (this.newValList.some(newItem => newItem._key === curUserItem._key)) {
383
+ this.newValList = this.newValList.filter(newItem => newItem._key !== curUserItem._key);
384
+ } else {
385
+ this.newValList = [...this.newValList, curUserItem];
386
+ }
387
+ } else {
388
+ this.newValList = bool === true ? [curUserItem] : [];
389
+ }
390
+ },
391
+ clickDeleteUserItem (item, index, list) {
392
+ list.splice(index, 1);
393
+ },
394
+ clickCancel () {
395
+ this.closeModal();
396
+ },
397
+ clickConfirm () {
398
+ this.closeModal();
399
+ this.curValList = this.newValList;
400
+ },
401
+
402
+ /* ----------- 接口方法 ------------- */
403
+ getUserList () {
404
+ this.loading = true;
405
+ this.userList = [];
406
+ let searchName = this.searchData.name;
407
+ let search = {};
408
+ if (searchName && searchName !== "") {
409
+ search["realname"] = {
410
+ "$regex": `.*${this.$speciaWord(searchName)}.*`, $options: "i"
411
+ };
412
+ } else {
413
+ delete search["realname"];
414
+ }
415
+ this.$https({
416
+ url: {
417
+ module: "company",
418
+ name: "userIndex"
419
+ },
420
+ params: {
421
+ search: search,
422
+ department: this.curDepartment._key,
423
+ transmit_type: this.transmit_type,
424
+ current_step_sp_user_key: this.current_step_sp_user_key,
425
+ stepKey: this.stepKey,
426
+ pagination: {
427
+ page: this.pagePropsObj.page,
428
+ pagesize: this.pagePropsObj.pagesize
429
+ }
430
+ },
431
+ callback: data => {
432
+ this.total = data.total;
433
+ this.userList = data.list;
434
+ this.loading = false;
435
+ }
436
+ });
437
+ },
438
+ getDepartmentList () {
439
+ this.$https({
440
+ url: {
441
+ module: "company",
442
+ name: "compDepartCascaderAll"
443
+ },
444
+ params: {
445
+ transmit_type: this.transmit_type,
446
+ current_step_sp_user_key: this.current_step_sp_user_key,
447
+ stepKey: this.stepKey,
448
+ searchString: this.propsObj.searchString
449
+ },
450
+ callback: data => {
451
+ let depart = [{
452
+ is_leaf: true,
453
+ level: 1,
454
+ name: "全部",
455
+ _key: ""
456
+ }];
457
+ if (this.highSearch) {
458
+ depart.unshift({
459
+ is_leaf: true,
460
+ level: 1,
461
+ name: "高级选项",
462
+ _key: "_highSearch"
463
+ });
464
+ }
465
+ this.departmentList = depart.concat(data.list);
466
+ }
467
+ });
468
+ }
469
+ },
470
+ watch: {
471
+ showSelectUserModalOnly (nV, oV) {
472
+ nV && this.init();
473
+ nV && this.openModal();
474
+ }
475
+ },
476
+ filters: {
477
+ isActive (item, list) {
478
+ return list.some(o => o._key === item._key) ? "selectUsers-list-item-active" : "";
479
+ }
480
+ }
481
+ };
482
+ </script>
@@ -0,0 +1,52 @@
1
+ <template>
2
+ <div class="BriCard">
3
+ <template v-if="data.length">
4
+ <div
5
+ v-for="item in data"
6
+ :key="item._key"
7
+ class="item"
8
+ @click="change(item)"
9
+ >
10
+ <div :class="{
11
+ 'item-normal': true,
12
+ 'item-active': item.checked
13
+ }">
14
+ <span class="label">{{ item.name }}</span>
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <div
20
+ v-else
21
+ class="BriCard-nodata"
22
+ >
23
+ 暂无数据……
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script>
29
+ export default {
30
+ name: "BriCard",
31
+ mixins: [],
32
+ components: {},
33
+ props: {
34
+ data: {
35
+ type: Array,
36
+ default () {
37
+ return [];
38
+ }
39
+ }
40
+ },
41
+ data () {
42
+ return {};
43
+ },
44
+ computed: {},
45
+ created () {},
46
+ methods: {
47
+ change () {
48
+ this.$emit("on-change", this.value);
49
+ }
50
+ }
51
+ };
52
+ </script>
@@ -0,0 +1,110 @@
1
+ <template>
2
+ <div class="BriTreeItem">
3
+ <!-- 当前节点 -->
4
+ <div class="BriTreeItem-content">
5
+ <!-- 展开icon -->
6
+ <div class="BriTreeItem-content-expand">
7
+ <i
8
+ v-if="hasChildren"
9
+ :class="{
10
+ 'BriTreeItem-content-expand-icon': true,
11
+ 'ivu-icon': true,
12
+ 'ivu-icon-ios-arrow-down': expand,
13
+ 'ivu-icon-ios-arrow-forward': !expand
14
+ }"
15
+ @click="toggleExpand"
16
+ ></i>
17
+ </div>
18
+
19
+ <!-- 有选择框 意味着该节点可以选择 -->
20
+ <Checkbox
21
+ v-if="changeOnSelect || !hasChildren"
22
+ :class="{
23
+ 'BriTreeItem-content-select': true,
24
+ 'BriTreeItem-content-select-radio': !multiple
25
+ }"
26
+ v-model="value.checked"
27
+ @on-change="onChange(value)"
28
+ >
29
+ {{ value.title || value.name }}
30
+ </Checkbox>
31
+ <!-- 无选择框 -->
32
+ <span
33
+ v-else
34
+ class="BriTreeItem-content-text"
35
+ >
36
+ {{ value.title || value.name }}
37
+ </span>
38
+ </div>
39
+
40
+ <!-- 当前节点 的子节点列表 -->
41
+ <transition
42
+ name="default"
43
+ enter-class="default-enter"
44
+ leave-to-class="default-leave-to"
45
+ >
46
+ <div
47
+ v-if="showChildren"
48
+ class="BriTreeItem-children"
49
+ >
50
+ <yc-tree-item
51
+ v-for="item in value.children"
52
+ :key="item._key"
53
+ :value="item"
54
+ :changeOnSelect="changeOnSelect"
55
+ :multiple="multiple"
56
+ @on-change="onChange"
57
+ ></yc-tree-item>
58
+ </div>
59
+ </transition>
60
+ </div>
61
+ </template>
62
+
63
+ <script>
64
+ export default {
65
+ name: "BriTreeItem",
66
+ props: {
67
+ value: {
68
+ type: Object,
69
+ default: () => ({})
70
+ },
71
+
72
+ changeOnSelect: {
73
+ type: Boolean,
74
+ default: true
75
+ },
76
+ multiple: {
77
+ type: Boolean,
78
+ default: false
79
+ }
80
+ },
81
+ data () {
82
+ return {
83
+ expand: false
84
+ };
85
+ },
86
+ computed: {
87
+ hasChildren () {
88
+ return this.value.children && this.value.children.length;
89
+ },
90
+ showChildren () {
91
+ return this.expand && this.hasChildren;
92
+ }
93
+ },
94
+ created () {
95
+ this.init();
96
+ },
97
+ methods: {
98
+ init () {
99
+ this.expand = this.value.expand;
100
+ },
101
+
102
+ toggleExpand () {
103
+ this.expand = !this.expand;
104
+ },
105
+ onChange (item) {
106
+ this.$emit("on-change", item);
107
+ }
108
+ }
109
+ };
110
+ </script>