bri-components 1.2.57 → 1.2.58

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 (40) hide show
  1. package/package.json +2 -2
  2. package/src/components/controls/base/BriUpload/BriUpload.vue +1 -1
  3. package/src/components/controls/base/DshCascader/DshCascader.vue +48 -203
  4. package/src/components/controls/base/DshCascader/{cascaderModal.vue → components/cascaderModal.vue} +22 -31
  5. package/src/components/controls/base/DshCascader/{cascaderPicker.vue → components/cascaderPicker.vue} +22 -18
  6. package/src/components/controls/base/DshCascader/components/cascaderSimple.vue +141 -0
  7. package/src/components/controls/base/DshCoordinates.vue +1 -1
  8. package/src/components/controls/base/DshDate/DshDate.vue +1 -1
  9. package/src/components/controls/base/DshDate/DshDaterange.vue +1 -1
  10. package/src/components/controls/base/DshDivider.vue +1 -1
  11. package/src/components/controls/base/DshEditor.vue +1 -1
  12. package/src/components/controls/base/DshInput/BriInputs.vue +1 -1
  13. package/src/components/controls/base/DshInput/DshInput.vue +1 -1
  14. package/src/components/controls/base/DshNumber/DshNumber.vue +1 -1
  15. package/src/components/controls/base/DshNumber/DshNumberange.vue +1 -1
  16. package/src/components/controls/base/DshSelect/DshCheckbox.vue +1 -1
  17. package/src/components/controls/base/DshSelect/DshSelect.vue +1 -1
  18. package/src/components/controls/base/DshSwitch/switchMixin.js +1 -1
  19. package/src/components/controls/extra/themeColor.vue +1 -1
  20. package/src/components/controls/extra/themeIcon.vue +1 -1
  21. package/src/components/controls/{base/DshCascader → mixins}/cascaderMixin.js +16 -33
  22. package/src/components/controls/{base/DshCascader → mixins}/cascaderPickerMixin.js +52 -44
  23. package/src/components/controls/{base/DshSelect → mixins}/selectMixin.js +1 -1
  24. package/src/components/controls/senior/BriLabels.vue +1 -1
  25. package/src/components/controls/senior/DshPackage.vue +1 -1
  26. package/src/components/controls/senior/cascaderTable.vue +1 -1
  27. package/src/components/controls/senior/flatTable.vue +1 -1
  28. package/src/components/controls/senior/selectDepartments.vue +1 -1
  29. package/src/components/controls/senior/selectUsers/selectUsers.vue +1 -1
  30. package/src/components/controls/special/DshBack.vue +1 -1
  31. package/src/components/controls/special/DshUndeveloped.vue +1 -1
  32. package/src/components/form/DshAdvSearch.vue +1 -1
  33. package/src/components/list/DshBox/DshCard.vue +153 -38
  34. package/src/components/list/DshBox/DshPanel.vue +260 -93
  35. package/src/components/small/BriTooltip.vue +2 -2
  36. package/src/components/unit/DshFormUnit.vue +6 -18
  37. package/src/styles/components/index.less +0 -2
  38. package/src/styles/components/list/DshBox/DshCard.less +0 -59
  39. package/src/styles/components/list/DshBox/DshPanel.less +0 -107
  40. /package/src/components/controls/{controlMixin.js → mixins/controlMixin.js} +0 -0
@@ -1,21 +1,16 @@
1
1
  <template>
2
2
  <div class="DshCard">
3
- <!-- 无数据 -->
4
- <div
5
- v-if="!data.length"
6
- class="dsh-tip"
7
- >{{noDataText}}</div>
8
-
9
3
  <!-- 有数据 -->
10
- <template v-else>
4
+ <template v-if="data.length">
11
5
  <div
12
- class="DshCard-item"
13
6
  v-for="(dataItem, dataIndex) in data"
14
7
  :key="dataIndex"
8
+ class="DshCard-item"
15
9
  @click="clickRow(dataItem)"
16
10
  >
17
11
  <!-- 下拉操作(定位css) -->
18
12
  <dsh-dropdown
13
+ v-if="operationList.length"
19
14
  class="DshCard-item-dropdown"
20
15
  :dropdownObj="dropdownObj"
21
16
  :list="operationList"
@@ -34,36 +29,41 @@
34
29
  <!-- 内容 -->
35
30
  <div class="DshCard-item-info">
36
31
  <!-- 标题 -->
37
- <div class="DshCard-item-info-title dsh-ellipsis">
38
- <bri-tooltip
39
- placement="top"
40
- :transfer="true"
41
- :content="dataItem[propsObj.titleField]"
42
- >
43
- <div class="dsh-ellipsis">{{ dataItem[propsObj.titleField] }}</div>
44
- </bri-tooltip>
45
- </div>
32
+ <bri-tooltip
33
+ class="title"
34
+ :content="dataItem[propsObj.titleField]"
35
+ placement="top"
36
+ :transfer="true"
37
+ >
38
+ <div class="title-name">
39
+ {{ dataItem[propsObj.titleField] }}
40
+ </div>
41
+ </bri-tooltip>
46
42
 
47
43
  <!-- 显示字段 -->
48
44
  <div
49
- class="DshCard-item-info-col unit"
50
45
  v-for="colItem in selfColumns"
51
46
  :key="colItem._key"
47
+ class="unit"
52
48
  >
53
49
  <!-- 左 label -->
54
- <bri-tooltip
55
- class="unit-label"
56
- placement="top"
57
- :transfer="true"
58
- maxWidth="200"
59
- :content="colItem._name"
60
- >
61
- <span class="dsh-ellipsis">{{ colItem._name }}</span>
62
- </bri-tooltip>
63
- <span class="unit-colon">:</span>
50
+ <div class="unit-label">
51
+ <bri-tooltip
52
+ class="unit-label-tooltip"
53
+ :content="colItem._name"
54
+ :transfer="true"
55
+ >
56
+ <span class="unit-label-name">
57
+ {{ colItem._name }}
58
+ </span>
59
+ <span class="unit-label-colon">
60
+
61
+ </span>
62
+ </bri-tooltip>
63
+ </div>
64
64
 
65
65
  <!-- 右 val -->
66
- <div class="unit-value dsh-ellipsis">
66
+ <div class="unit-control">
67
67
  <dsh-list-render
68
68
  v-if="colItem.renderBodyCell"
69
69
  :row="dataItem"
@@ -79,13 +79,23 @@
79
79
 
80
80
  <span
81
81
  v-else
82
- class="unit-value-text"
83
- >{{ dataItem[colItem._key] }}</span>
82
+ class="unit-control-text"
83
+ >
84
+ {{ dataItem[colItem._key] }}
85
+ </span>
84
86
  </div>
85
87
  </div>
86
88
  </div>
87
89
  </div>
88
90
  </template>
91
+
92
+ <!-- 无数据 -->
93
+ <div
94
+ v-else
95
+ class="dsh-tip"
96
+ >
97
+ {{ noDataText }}
98
+ </div>
89
99
  </div>
90
100
  </template>
91
101
 
@@ -132,24 +142,41 @@
132
142
  color: "#E9ECF4",
133
143
  showDropdownItemIcon: false
134
144
  },
135
- defaultImgObj: {
136
- url: this.$imageSrcMap.app.projectCard
137
- },
138
145
 
139
146
  getCardBgImgSrc (dataItem) {
140
147
  const fileList = dataItem[this.propsObj.imageField] || [];
141
- const imgObj = fileList.find(fileItem => fileItem.mimetype.includes("image")) || this.defaultImgObj;
148
+ const imgObj = fileList.find(fileItem => fileItem.mimetype.includes("image")) || {
149
+ url: this.$imageSrcMap.app.projectCard
150
+ };
142
151
  return imgObj.url;
143
152
  }
144
153
  };
145
154
  },
146
155
  computed: {
156
+ imageField () {
157
+ return this.propsObj.imageField;
158
+ },
159
+ // imageFieldObj () {
160
+ // return this.columns.find(colItem => colItem._key === this.imageField) || {};
161
+ // },
162
+ titleField () {
163
+ return this.propsObj.titleField;
164
+ },
165
+ // titleFieldObj () {
166
+ // return this.columns.find(colItem => colItem._key === this.titleField) || {};
167
+ // },
147
168
  selfColumns () {
148
- return this.columns.slice(0, 2);
169
+ return this.columns
170
+ .filter(colItem => ![this.imageField, this.titleField].includes(colItem._key))
171
+ .map(colItem => ({
172
+ ...colItem,
173
+ titleAlign: "left",
174
+ columnAlign: "left"
175
+ }))
176
+ .slice(0, 2);
149
177
  }
150
178
  },
151
- created () {
152
- },
179
+ created () {},
153
180
  methods: {
154
181
  // 点击某行
155
182
  clickRow (row) {
@@ -158,3 +185,91 @@
158
185
  }
159
186
  };
160
187
  </script>
188
+
189
+ <style lang="less">
190
+ .DshCard {
191
+ padding: 0 40px;
192
+ background-color: #ffffff;
193
+ display: flex;
194
+ flex-wrap: wrap;
195
+
196
+ &-item {
197
+ box-sizing: border-box;
198
+ width: 250px;
199
+ height: 210px;
200
+ margin: 10px 16px 30px;
201
+ border-radius: 6px;
202
+ box-shadow: 0px 4px 8px 0px rgba(222, 222, 222, 0.75);
203
+ cursor: pointer;
204
+ overflow: hidden;
205
+ position: relative;
206
+
207
+ display: flex;
208
+ flex-direction: column;
209
+
210
+ &-dropdown {
211
+ position: absolute;
212
+ top: 5px;
213
+ right: 5px;
214
+ }
215
+
216
+ &-image {
217
+ height: 122px;
218
+ padding-top: 20px;
219
+
220
+ img {
221
+ width: 100%;
222
+ }
223
+ }
224
+
225
+ &-info {
226
+ padding: 8px 15px;
227
+ background: #F7FBFF;
228
+ overflow: hidden;
229
+
230
+ .title {
231
+ height: 24px;
232
+ padding-right: 6px;
233
+ font-size: 14px;
234
+ font-weight: 600;
235
+
236
+ &-name {
237
+ .dsh-ellipsis();
238
+ }
239
+ }
240
+
241
+ .unit {
242
+ height: 24px;
243
+ display: flex;
244
+ flex-direction: row;
245
+
246
+ &-label {
247
+ font-weight: 400;
248
+ color: #515A6E;
249
+
250
+ &-name {
251
+ min-width: 70px;
252
+ max-width: 70px;
253
+ .dsh-ellipsis();
254
+ display: inline-block;
255
+ }
256
+
257
+ &-colon {
258
+
259
+ }
260
+ }
261
+
262
+ &-control {
263
+ flex: 1;
264
+ min-width: 0px;
265
+ overflow: hidden;
266
+
267
+ &-text {
268
+
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ }
275
+ </style>
@@ -7,29 +7,31 @@
7
7
  >
8
8
  <!-- 组 标头 -->
9
9
  <div
10
- class="DshPanel-group-title"
10
+ class="DshPanel-group-header"
11
11
  :style="{
12
12
  backgroundColor: getBgColor(groupItem),
13
13
  color: '#ffffff'
14
14
  }"
15
15
  >
16
- <span class="DshPanel-group-title-name">
17
- <bri-tooltip
18
- class="unit-label"
19
- placement="top"
20
- :transfer="true"
21
- :content="groupItem.name"
22
- >
23
- <span class="dsh-ellipsis">{{ groupItem.name }} &nbsp;</span>
24
- </bri-tooltip>
25
- </span>
16
+ <!-- 左 -->
17
+ <bri-tooltip
18
+ class="DshPanel-group-header-left"
19
+ :content="groupItem.name"
20
+ placement="top"
21
+ :transfer="true"
22
+ >
23
+ <span class="DshPanel-group-header-left-name">
24
+ {{ groupItem.name }}
25
+ </span>
26
+ </bri-tooltip>
27
+
28
+ <!-- 右 -->
26
29
  <span>
27
- <span class="DshPanel-group-title-number">
30
+ <span class="DshPanel-group-header-right">
28
31
  {{ groupItem.total }}
29
32
  </span>
30
-
33
+ 条(已加载{{ groupItem.list.length }}条)
31
34
  </span>
32
- <span>(已加载{{ groupItem.list.length }}条)</span>
33
35
  </div>
34
36
 
35
37
  <!-- 组 数据列 -->
@@ -39,91 +41,112 @@
39
41
  backgroundColor: $getColor(getBgColor(groupItem))
40
42
  }"
41
43
  >
42
- <!-- 无数据 -->
43
- <div
44
- v-if="!groupItem.list.length"
45
- class="dsh-tip"
46
- :style="{color: getBgColor(groupItem)}"
47
- >
48
- {{ noDataText }}
49
- </div>
50
-
51
- <!-- 拖拽 -->
52
- <dsh-draggable
53
- v-model="groupItem.list"
54
- group="panel"
55
- animation="300"
56
- class="list-drag"
57
- :disabled="!dragOperationObj"
58
- @update="$dshEmit(dragOperationObj, $event, groupItem, data.find(item => item._key === $event.from.id), { [groupField]: groupItem._key })"
59
- @add="$dshEmit(dragOperationObj, $event, groupItem, data.find(item => item._key === $event.from.id), { [groupField]: groupItem._key })"
60
- >
61
- <transition-group
62
- :id="groupItem._key"
63
- class="list-drag-transition"
64
- @scroll.native="groupScroll(groupItem, groupIndex, $event)"
44
+ <!-- 有数据 -->
45
+ <template v-if="groupItem.list.length">
46
+ <dsh-draggable
47
+ v-model="groupItem.list"
48
+ group="panel"
49
+ animation="300"
50
+ class="list-drag"
51
+ :disabled="!dragOperationObj"
52
+ @update="$dshEmit(dragOperationObj, $event, groupItem, data.find(item => item._key === $event.from.id), { [groupField]: groupItem._key })"
53
+ @add="$dshEmit(dragOperationObj, $event, groupItem, data.find(item => item._key === $event.from.id), { [groupField]: groupItem._key })"
65
54
  >
66
- <div
67
- v-for="(dataItem, dataIndex) in groupItem.list"
68
- :key="dataItem._id"
69
- :id="dataItem._id"
70
- class="row-item"
71
- @click="clickRow(dataItem, dataIndex)"
55
+ <transition-group
56
+ :id="groupItem._key"
57
+ class="list-drag-transition"
58
+ @scroll.native="groupScroll(groupItem, groupIndex, $event)"
72
59
  >
73
- <!-- 下拉操作 -->
74
- <dsh-dropdown
75
- class="row-item-dropdown"
76
- :dropdownObj="dropdownObj"
77
- :list="operationList"
78
- @click="$dshEmit($event, dataItem, dataIndex)"
79
- @click.native.stop="0"
80
- ></dsh-dropdown>
81
-
82
- <!-- 标题 -->
83
- <div class="row-item-title dsh-ellipsis">{{ dataItem[titleField] }}</div>
84
-
85
- <!-- 显示字段 -->
86
60
  <div
87
- class="row-item-cols unit"
88
- v-for="colItem in selfColumns"
89
- :key="colItem._key"
61
+ v-for="(dataItem, dataIndex) in groupItem.list"
62
+ :key="dataItem._id"
63
+ :id="dataItem._id"
64
+ class="row-item"
65
+ @click="clickRow(dataItem, dataIndex)"
90
66
  >
91
- <!-- label -->
92
- <bri-tooltip
93
- class="unit-label"
94
- placement="top"
95
- :transfer="true"
96
- maxWidth="200"
97
- :content="colItem._name"
98
- >
99
- <span class="dsh-ellipsis">{{ colItem._name }}</span>
100
- </bri-tooltip>
101
- <span class="unit-colon">:</span>
102
-
103
- <!-- val -->
104
- <div class="unit-value dsh-ellipsis">
105
- <dsh-list-render
106
- v-if="colItem.renderBodyCell"
107
- :row="dataItem"
108
- :column="colItem"
109
- :index="0"
110
- :render="colItem.renderBodyCell"
111
- ></dsh-list-render>
67
+ <!-- 下拉操作 -->
68
+ <dsh-dropdown
69
+ v-if="operationList.length"
70
+ class="row-item-dropdown"
71
+ :dropdownObj="dropdownObj"
72
+ :list="operationList"
73
+ @click="$dshEmit($event, dataItem, dataIndex)"
74
+ @click.native.stop="0"
75
+ ></dsh-dropdown>
76
+
77
+ <!-- 内容 -->
78
+ <div class="row-item-info">
79
+ <!-- 标题 -->
80
+ <bri-tooltip
81
+ class="title"
82
+ :content="dataItem[propsObj.titleField]"
83
+ placement="top"
84
+ :transfer="true"
85
+ >
86
+ <div class="title-name">
87
+ {{ dataItem[propsObj.titleField] }}
88
+ </div>
89
+ </bri-tooltip>
112
90
 
91
+ <!-- 显示字段 -->
113
92
  <div
114
- v-else-if="colItem.formatter"
115
- v-html="colItem.formatter(dataItem, 0)"
116
- ></div>
117
-
118
- <span
119
- v-else
120
- class="unit-value-text"
121
- >{{ dataItem[colItem._key] }}</span>
93
+ v-for="colItem in selfColumns"
94
+ :key="colItem._key"
95
+ class="unit"
96
+ >
97
+ <!-- 左 label -->
98
+ <bri-tooltip
99
+ class="unit-label"
100
+ :content="colItem._name"
101
+ :transfer="true"
102
+ >
103
+ <span class="unit-label-name">
104
+ {{ colItem._name }}
105
+ </span>
106
+ <span class="unit-label-colon">
107
+
108
+ </span>
109
+ </bri-tooltip>
110
+
111
+ <!-- 右 val -->
112
+ <div class="unit-control">
113
+ <dsh-list-render
114
+ v-if="colItem.renderBodyCell"
115
+ :row="dataItem"
116
+ :column="colItem"
117
+ :index="0"
118
+ :render="colItem.renderBodyCell"
119
+ ></dsh-list-render>
120
+
121
+ <div
122
+ v-else-if="colItem.formatter"
123
+ v-html="colItem.formatter(dataItem, 0)"
124
+ ></div>
125
+
126
+ <span
127
+ v-else
128
+ class="unit-control-text"
129
+ >
130
+ {{ dataItem[colItem._key] }}
131
+ </span>
132
+ </div>
133
+ </div>
122
134
  </div>
123
135
  </div>
124
- </div>
125
- </transition-group>
126
- </dsh-draggable>
136
+ </transition-group>
137
+ </dsh-draggable>
138
+ </template>
139
+
140
+ <!-- 无数据 -->
141
+ <div
142
+ v-else
143
+ class="dsh-tip"
144
+ :style="{
145
+ color: getBgColor(groupItem)
146
+ }"
147
+ >
148
+ {{ noDataText }}
149
+ </div>
127
150
 
128
151
  <!-- 组 操作按钮(添加) -->
129
152
  <dsh-buttons
@@ -202,11 +225,14 @@
202
225
  return this.propsObj.groupField;
203
226
  },
204
227
  groupFieldObj () {
205
- return this.propsObj.groupFieldObj || {};
228
+ return this.columns.find(colItem => colItem._key === this.groupField) || {};
206
229
  },
207
230
  titleField () {
208
231
  return this.propsObj.titleField;
209
232
  },
233
+ // titleFieldObj () {
234
+ // return this.columns.find(colItem => colItem._key === this.titleField) || {};
235
+ // },
210
236
  selfColumns () {
211
237
  return this.columns
212
238
  .filter(colItem => ![this.groupField, this.titleField].includes(colItem._key))
@@ -215,7 +241,7 @@
215
241
  titleAlign: "left",
216
242
  columnAlign: "left"
217
243
  }))
218
- .slice(0, 1);
244
+ .slice(0, 2);
219
245
  },
220
246
 
221
247
  groupBtnOperationList () {
@@ -279,3 +305,144 @@
279
305
  }
280
306
  };
281
307
  </script>
308
+
309
+ <style lang="less">
310
+ .DshPanel {
311
+ min-width: 100%;
312
+ height: 100%;
313
+ display: flex;
314
+ flex-direction: row;
315
+
316
+ &-group {
317
+ width: 300px;
318
+ min-width: 300px;
319
+ max-width: 300px;
320
+ height: 100%;
321
+ padding: 10px;
322
+ overflow: hidden;
323
+ display: flex;
324
+ flex-direction: column;
325
+
326
+ &-header {
327
+ width: 100%;
328
+ height: 50px;
329
+ padding: 15px 10px;
330
+ border-radius: 10px 10px 0px 0px;
331
+ font-size: 14px;
332
+ display: flex;
333
+ justify-content: space-between;
334
+
335
+ &-left {
336
+ flex: 1;
337
+ min-width: 0px;
338
+
339
+ &-name {
340
+ .dsh-ellipsis();
341
+ }
342
+ }
343
+
344
+ &-right {
345
+ margin-left: 5px;
346
+ font-weight: bold;
347
+ }
348
+ }
349
+
350
+ &-list {
351
+ width: 100%;
352
+ flex: 1;
353
+ min-height: 0px;
354
+ border: 1px dashed #cccccc;
355
+ border-top: none;
356
+ display: flex;
357
+ flex-direction: column;
358
+ justify-content: space-between;
359
+
360
+ .list-drag {
361
+ width: 100%;
362
+ flex: 1;
363
+ min-height: 0px;
364
+
365
+ &-transition {
366
+ display: block;
367
+ width: 100%;
368
+ height: 100%;
369
+ padding: 10px;
370
+ overflow: auto;
371
+
372
+ .row-item {
373
+ min-height: 60px;
374
+ margin-bottom: 10px;
375
+ border: 1px solid rgba(102, 110, 126, 0.1);
376
+ border-radius: 4px;
377
+ background: #FFFFFF;
378
+ cursor: pointer;
379
+ position: relative;
380
+
381
+ &-dropdown {
382
+ position: absolute;
383
+ top: 5px;
384
+ right: 5px;
385
+ }
386
+
387
+ &-info {
388
+ padding: 8px 10px;
389
+ background: #ffffff;
390
+ overflow: hidden;
391
+
392
+ .title {
393
+ height: 24px;
394
+ padding-right: 6px;
395
+ font-size: 14px;
396
+ font-weight: 600;
397
+
398
+ &-name {
399
+ .dsh-ellipsis();
400
+ }
401
+ }
402
+
403
+ .unit {
404
+ height: 24px;
405
+ display: flex;
406
+ flex-direction: row;
407
+
408
+ &-label {
409
+ font-weight: 400;
410
+ color: #515A6E;
411
+
412
+ &-name {
413
+ min-width: 70px;
414
+ max-width: 70px;
415
+ .dsh-ellipsis();
416
+ display: inline-block;
417
+ }
418
+
419
+ &-colon {
420
+
421
+ }
422
+ }
423
+
424
+ &-control {
425
+ flex: 1;
426
+ min-width: 0px;
427
+ overflow: hidden;
428
+
429
+ &-text {
430
+
431
+ }
432
+ }
433
+ }
434
+ }
435
+ }
436
+ }
437
+ }
438
+
439
+ .list-btns {
440
+ width: 100%;
441
+ height: 40px;
442
+ padding: 0px 10px;
443
+ text-align: center;
444
+ }
445
+ }
446
+ }
447
+ }
448
+ </style>