cloud-web-corejs 1.0.54-dev.6 → 1.0.54-dev.60

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 (88) hide show
  1. package/package.json +8 -2
  2. package/src/components/VabUpload/index.vue +2 -1
  3. package/src/components/VabUpload/mixins.js +1 -1
  4. package/src/components/VabUpload/view.vue +2 -1
  5. package/src/components/excelExport/exportFieldDialog.vue +160 -22
  6. package/src/components/excelExport/index.js +6 -5
  7. package/src/components/excelExport/index.vue +8 -5
  8. package/src/components/excelExport/mixins.js +4 -1
  9. package/src/components/excelImport/index.vue +2 -1
  10. package/src/components/excelImport/mixins.js +1 -1
  11. package/src/components/fileLibrary/fileObjAuthDialog.vue +125 -103
  12. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -1
  13. package/src/components/fileLibrary/fileObjNotifyEdit.vue +192 -0
  14. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +16 -9
  15. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +4 -1
  16. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +1 -1
  17. package/src/components/fileLibrary/mixins/indexMixins.js +31 -17
  18. package/src/components/onlineTalk/index.vue +327 -5
  19. package/src/components/onlineTalk/mixins.js +1 -1
  20. package/src/components/table/index.js +2 -1
  21. package/src/components/tempStorage/tempStorageDialog.vue +2 -2
  22. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +1 -0
  23. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +1 -0
  24. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +2 -2
  25. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +10 -2
  26. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +3 -1
  27. package/src/components/xform/form-designer/form-widget/dialog/preformDialog.vue +2 -2
  28. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +5 -4
  29. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +2 -2
  30. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +3 -2
  31. package/src/components/xform/form-designer/form-widget/field-widget/echart-bar-widget.vue +1 -1
  32. package/src/components/xform/form-designer/form-widget/field-widget/echart-category-widget.vue +1 -1
  33. package/src/components/xform/form-designer/form-widget/field-widget/echart-pie-widget.vue +1 -1
  34. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +982 -1
  35. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +12 -1
  36. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +6 -0
  37. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +6 -0
  38. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +5 -1
  39. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +77 -0
  40. package/src/components/xform/form-designer/indexMixin.js +771 -1
  41. package/src/components/xform/form-designer/setting-panel/form-setting.vue +6 -3
  42. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +8 -0
  43. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onAfterConfirmFile-editor.vue +30 -0
  44. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +2 -2
  45. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +160 -69
  46. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +184 -82
  47. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +84 -39
  48. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +3 -0
  49. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  50. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +1 -0
  51. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +8 -0
  52. package/src/components/xform/form-render/container-item/data-table-mixin.js +1668 -1
  53. package/src/components/xform/form-render/indexMixin.js +1 -23
  54. package/src/mixins/selectDialog/index.js +1 -1
  55. package/src/router/modules/customer.js +15 -0
  56. package/src/store/config/index.js +1 -1
  57. package/src/store/modules/permission.js +1 -1
  58. package/src/utils/renderUtils.js +76 -0
  59. package/src/utils/request.js +28 -28
  60. package/src/utils/vab.js +1 -963
  61. package/src/views/bd/setting/bd_attach_setting/edit.vue +1 -1
  62. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +1 -1
  63. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +105 -0
  64. package/src/views/bd/setting/form_template/edit.vue +2 -2
  65. package/src/views/bd/setting/form_template/list.vue +4 -2
  66. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +280 -0
  67. package/src/views/bd/setting/form_template/mixins/edit.js +1 -1
  68. package/src/views/bd/setting/form_template/mixins/wf_list.js +434 -0
  69. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +254 -0
  70. package/src/views/bd/setting/form_template/wf_list.vue +127 -0
  71. package/src/views/bd/setting/menu_kind/authDialog.vue +1 -1
  72. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +1 -1
  73. package/src/views/bd/setting/table_model/list.vue +4 -2
  74. package/src/views/user/area/dialog.vue +21 -8
  75. package/src/views/user/company_info/dialog.vue +17 -8
  76. package/src/views/user/file_type/edit.vue +30 -1
  77. package/src/views/user/file_type/list.vue +28 -0
  78. package/src/views/user/groups/edit.vue +2 -0
  79. package/src/views/user/groups/list.vue +1 -0
  80. package/src/views/user/login/default.vue +4 -2
  81. package/src/views/user/outLink/form_view.vue +39 -12
  82. package/src/views/user/outLink/view.vue +39 -13
  83. package/src/views/user/user/edit.vue +7 -7
  84. package/src/views/user/user/form_edit.vue +117 -49
  85. package/src/views/user/user/form_list.vue +1 -0
  86. package/src/views/user/wf/wf_obj_config/list.vue +30 -2
  87. package/src/views/user/wf/wf_obj_config/wfBizDataSettingDialog.vue +292 -0
  88. package/src/components/excelExport/export-panel.js +0 -458
@@ -44,6 +44,9 @@ modules = {
44
44
  getObjectForeignId: () => {
45
45
  return this.objectForeignId;
46
46
  },
47
+ getFileStoreArea: () => {
48
+ return this.fileStoreArea;
49
+ }
47
50
  };
48
51
  },
49
52
  async created() {
@@ -73,6 +76,7 @@ modules = {
73
76
  billDialogContent: null,
74
77
  checkBillDatas: [],
75
78
  title: "",
79
+ fileStoreArea: {},
76
80
  folderStatus: false,
77
81
  filterText: "",
78
82
  defaultProps: {
@@ -1004,36 +1008,44 @@ modules = {
1004
1008
  rows.forEach((value) => {
1005
1009
  value.leaf = !value.hasChild;
1006
1010
  });
1011
+ let items = [];
1007
1012
  if (node.level === 0) {
1013
+ let item = {
1014
+ parent: null,
1015
+ fileName: this.title,
1016
+ leaf: rows.length == 0,
1017
+ allFileBtn: true,
1018
+ id: 0,
1019
+ children: rows,
1020
+ };
1021
+ items.push(item);
1008
1022
  setTimeout(() => {
1009
1023
  this.$refs.tree.setCurrentKey(node.childNodes[0].data);
1010
1024
  this.handleNodeData(node.childNodes[0]);
1011
1025
  node.childNodes[0].expand();
1026
+ if (this.option.treeExpandAll) {
1027
+ //默认全部展开树分类
1028
+ node.childNodes[0].childNodes.forEach(item => {
1029
+ if (!item.data.leaf) item.expand();
1030
+ })
1031
+ }
1012
1032
  }, 200);
1013
1033
  this.$nextTick(() => {
1014
1034
  callback && callback();
1015
1035
  });
1016
1036
  this.searchEvent();
1017
1037
  } else {
1038
+ items = rows;
1018
1039
  this.$nextTick(() => {
1040
+ if (this.option.treeExpandAll) {
1041
+ //默认全部展开树分类
1042
+ node.childNodes.forEach(item => {
1043
+ if (!item.data.leaf) item.expand();
1044
+ })
1045
+ }
1019
1046
  callback && callback();
1020
1047
  });
1021
1048
  }
1022
- let items = [];
1023
- if (node.level === 0) {
1024
- let item = {
1025
- parent: null,
1026
- fileName: this.title,
1027
- leaf: rows.length == 0,
1028
- allFileBtn: true,
1029
- id: 0,
1030
- children: rows,
1031
- };
1032
- items.push(item);
1033
- } else {
1034
- items = rows;
1035
- }
1036
-
1037
1049
  resolve(items);
1038
1050
  },
1039
1051
  });
@@ -1403,6 +1415,7 @@ modules = {
1403
1415
  success: (res) => {
1404
1416
  let fileStoreArea = res.objx;
1405
1417
  if (fileStoreArea) {
1418
+ this.fileStoreArea = fileStoreArea;
1406
1419
  this.title = fileStoreArea.storeAreaName;
1407
1420
  this.$nextTick(() => {
1408
1421
  treeScollx({target: this, type: "default"});
@@ -1749,11 +1762,12 @@ modules = {
1749
1762
  }
1750
1763
  },
1751
1764
  downloadSingerFile(attachment) {
1765
+
1752
1766
  let fileObjAuth = this.fileObjAuth;
1753
1767
  if (attachment.dirs || !fileObjAuth.downloadAuth) return
1754
1768
  let url = attachment.domain + attachment.url;
1755
- let loginAccount = this.$store.getters.loginAccount;
1756
- if (fileObjAuth.downWatermarkAuth) {
1769
+ if (this.fileStoreArea.toDownWatermark && fileObjAuth.downWatermarkAuth) {
1770
+ let loginAccount = this.$store.getters.loginAccount;
1757
1771
  url += '?_w=' + encode(loginAccount)
1758
1772
  }
1759
1773
  this.$commonFileUtil.downloadFile(url, attachment.fileName)
@@ -42,10 +42,21 @@
42
42
  <template v-if="item.contentType == 0">
43
43
  {{ item.content }}
44
44
  </template>
45
- <template v-else>
45
+ <template v-else-if="item.contentType == 1">
46
46
  <baseUpload accept="file" multi="false" :file.sync="item.file" :edit="false"
47
47
  :showProperties="false" :showSize="true" :createBy="false"></baseUpload>
48
48
  </template>
49
+ <template v-else-if="item.contentType == 2">
50
+ <ul class="onlieTalk-search-list">
51
+ <div class="tit"><i class="el-icon-chat-round"></i><b>猜你想问</b></div>
52
+ <div class="o-cont">
53
+ <li v-for="(answer,index) in item.answers" :key="index">
54
+ <a href="javascript:void(0);" class="a-link"
55
+ @click="answerCheckHandle(answer)">{{index+1}}、{{ answer.question }}</a>
56
+ </li>
57
+ </div>
58
+ </ul>
59
+ </template>
49
60
  </div>
50
61
  </div>
51
62
  </template>
@@ -60,6 +71,16 @@
60
71
  <i class="el-icon-folder-opened btn" @click="addFile" :disabled="!talkUserId"></i>
61
72
  </el-tooltip>
62
73
  </div> -->
74
+ <!-- <div class="pop-inputTips" v-show="false">
75
+ <p>该商品的<span>有效</span>日期?</p>
76
+ <p><span>有效</span>使用时间是什么时候?</p>
77
+ <p>该商品的<span>有效</span>日期?</p>
78
+ <p><span>有效</span>使用时间是什么时候?</p>
79
+ <p>该商品的<span>有效</span>日期?</p>
80
+ <p><span>有效</span>使用时间是什么时候?</p>
81
+ <p>该商品的<span>有效</span>日期?</p>
82
+ <p><span>有效</span>使用时间是什么时候?</p>
83
+ </div>-->
63
84
  <el-input type="textarea" :rows="6" class="txt-textarea" v-model="talkUser.content" placeholder="请输入
64
85
  选择此处,可粘贴文件(Ctrl+V)"
65
86
  :disabled="!talkUserId" ref="contentRef" @paste.native="pasteMessage"
@@ -117,6 +138,9 @@
117
138
  <i class="iconfont icon-wendangshangchuan"></i>
118
139
  从个人文档工作区选择
119
140
  </el-button>
141
+ <el-button type="info" plain class="button-sty" @click="openHistoryDialog"><i
142
+ class="el-icon-time"></i>历史记录
143
+ </el-button>
120
144
  </div>
121
145
  <div class="fr">
122
146
  <span class="t">Ctrl + Enter </span>
@@ -191,6 +215,63 @@
191
215
  </el-button>
192
216
  </span>
193
217
  </el-dialog>
218
+
219
+ <el-dialog
220
+ title="历史记录"
221
+ :append-to-body="true"
222
+ :modal-append-to-body="true"
223
+ :close-on-click-modal="false"
224
+ v-if="showHistoryDialog"
225
+ :visible.sync="showHistoryDialog"
226
+ :modal="false"
227
+ custom-class="dialog-style list-dialog history-dialog"
228
+ width="586px"
229
+ v-el-drag-dialog
230
+ v-el-dialog-center
231
+ >
232
+ <div class="history-box">
233
+ <div class="h-form">
234
+ <div class="search-box">
235
+ <div class="search-classify" v-if="historyType == 2" @click="checkHistoryType(null)"><i
236
+ class="el-icon-files"></i><span>文件</span><i
237
+ class='el-icon-close'></i></div>
238
+ <div class="search-classify" v-if="historyType == 1" @click="checkHistoryType(null)"><i
239
+ class="el-icon-files"></i><span>图片</span><i
240
+ class='el-icon-close'></i></div>
241
+ <el-input class="search-input" v-model="historyKeyword" clearable @input="changeHistoryKeyword"></el-input>
242
+ </div>
243
+ <div class="keys-box">
244
+ <span @click="checkHistoryType(2)">文件</span>
245
+ <span @click="checkHistoryType(1)">图片</span>
246
+ </div>
247
+ </div>
248
+ <div class="h-list" @scroll="handleScrollH" >
249
+ <div class="item" v-for="(item,index) in talkHRecords" :key="index" :class="'talk_h'+item.id">
250
+ <div class="name">{{ item.sendUserName }}</div>
251
+ <div class="time">{{ item.createDate }}</div>
252
+ <div>
253
+ <template v-if="item.contentType == 0">
254
+ {{ item.content }}
255
+ </template>
256
+ <template v-else-if="item.contentType == 1">
257
+ <baseUpload accept="file" multi="false" :file.sync="item.file" :edit="false"
258
+ :showProperties="false" :showSize="true" :createBy="false"></baseUpload>
259
+ </template>
260
+ <template v-else-if="item.contentType == 2">
261
+ <ul class="onlieTalk-search-list">
262
+ <div class="tit"><i class="el-icon-chat-round"></i><b>猜你想问</b></div>
263
+ <div class="o-cont">
264
+ <li v-for="(answer,index) in item.answers" :key="index">
265
+ <a href="javascript:void(0);" class="a-link">{{index+1}}、{{ answer.question }}</a>
266
+ </li>
267
+ </div>
268
+ </ul>
269
+ </template>
270
+ </div>
271
+ </div>
272
+ </div>
273
+ </div>
274
+ </el-dialog>
194
275
  </div>
195
276
  </template>
196
277
 
@@ -203,11 +284,213 @@ export default {
203
284
  components: {
204
285
  userDialog,
205
286
  privateProfileDialog: () => import('../../components/VabUpload/privateProfileDialog')
206
- }
287
+ },
288
+ data() {
289
+ return {};
290
+ },
291
+ mounted() {
292
+ },
207
293
  };
208
294
  </script>
209
295
  <style scoped lang="scss">
210
296
  @import '~@/styles/variables.scss';
297
+ .onlieTalk-search-list{
298
+ list-style: none;margin: -8px -4px 0;padding: 0;min-width: 360px;max-width: 90%;
299
+ .tit{color: #333;font-size: 14px;margin: 10px 0 3px;padding-left: 6px;
300
+ i{margin-right: 3px;}
301
+ }
302
+ .o-cont{background: #FFF;border-radius: 5px;margin-top: 7px;padding: 0 12px;}
303
+ li{
304
+ padding: 10px 2px;border-bottom: dashed 1px #dfdfdf;display: block;position: relative;font-size: 12px;cursor: pointer;
305
+ &:after{content:"\e6e0";font-family: element-icons!important;color:#747474;height:30px;border-radius: 50%;position: absolute;top:50%;margin-top:-15px;right:0;line-height:30px;}
306
+ &:last-child{
307
+ border-bottom: none;
308
+ }
309
+ }
310
+ }
311
+ .history-box {
312
+ .h-form {
313
+ padding: 2px 16px 10px;
314
+
315
+ .search-classify {
316
+ background: #F4F4F4;
317
+ line-height: 28px;
318
+ height: 28px;
319
+ padding: 0 8px;
320
+ border-radius: 3px;
321
+
322
+ > i, > span {
323
+ vertical-align: middle;
324
+ font-size: 13px;
325
+ margin-top: 2px;
326
+ }
327
+
328
+ > span {
329
+ margin: 0 2px 0 4px
330
+ }
331
+
332
+ .el-icon-close {
333
+ cursor: pointer;
334
+ }
335
+ }
336
+
337
+ ::v-deep .search-box {
338
+ border: solid 1px #eee;
339
+ padding: 5px;
340
+ border-radius: 8px;
341
+ display: flex;
342
+ background: #FFF;
343
+
344
+ .el-input {
345
+ flex: 1;
346
+
347
+ .el-input__inner {
348
+ border: none;
349
+ }
350
+ }
351
+ }
352
+
353
+ .keys-box {
354
+ margin-top: 10px;
355
+ padding: 0 2px;
356
+
357
+ span {
358
+ display: inline-block;
359
+ margin-right: 42px;
360
+ font-size: 13px;
361
+ color: #2A6494;
362
+ cursor: pointer;
363
+ border-bottom: solid 1px #F7F7F7;
364
+
365
+ &:hover {
366
+ border-bottom: solid 1px #2A6494
367
+ }
368
+ }
369
+ }
370
+ }
371
+
372
+ .h-list {
373
+ height: 520px;
374
+ overflow: auto;
375
+ padding: 2px 0;
376
+ background-color: #FFF;
377
+
378
+ .item {
379
+ border-bottom: solid 1px #f2f2f2;
380
+ position: relative;
381
+ padding: 12px 16px;
382
+ color: #323232;
383
+ font-size: 13px;
384
+ overflow: hidden;
385
+ .onlieTalk-search-list{
386
+ border: solid 1px #eee;padding:0 8px 6px;border-radius: 6px;margin: 10px 0 4px;background: #f7f7f7;overflow: hidden;
387
+ }
388
+ .name {
389
+ color: #999;
390
+ margin-bottom: 5px;
391
+ font-size: 12px;
392
+ }
393
+
394
+ .time {
395
+ position: absolute;
396
+ right: 16px;
397
+ top: 14px;
398
+ font-size: 12px;
399
+ color: #999;
400
+ }
401
+ ::v-deep .upload-box{margin:-10px 0 0 0 !important;border-top:none}
402
+ &:hover {
403
+ background: #f7f7f7;
404
+ }
405
+
406
+ }
407
+ }
408
+
409
+ .h-pic {
410
+ height: 520px;
411
+ overflow: auto;
412
+ padding: 8px 14px;
413
+ background-color: #FFF;
414
+
415
+ .item {
416
+ width: 133px;
417
+ height: 133px;
418
+ display: inline-block;
419
+ vertical-align: middle;
420
+ margin: 3px;
421
+
422
+ .el-image {
423
+ width: 100%;
424
+ height: 100%;
425
+ }
426
+
427
+ &:hover .el-image {
428
+ border: solid 1px #2A6494
429
+ }
430
+ }
431
+ }
432
+
433
+ .h-file {
434
+ height: 520px;
435
+ overflow: auto;
436
+ padding: 8px 0;
437
+ background-color: #FFF;
438
+
439
+ .item {
440
+ position: relative;
441
+ padding: 8px 16px 0;
442
+ color: #323232;
443
+ font-size: 13px;
444
+ display: flex;
445
+
446
+ .img {
447
+ width: 58px;
448
+ height: 58px;
449
+
450
+ .el-image {
451
+ width: 100%;
452
+ height: 100%;
453
+ }
454
+ }
455
+
456
+ .txt {
457
+ border-bottom: solid 1px #f2f2f2;
458
+ flex: 1;
459
+ display: flex;
460
+ color: #999;
461
+ font-size: 12px;
462
+ padding: 0 0 6px;
463
+ margin-left: 12px;
464
+
465
+ p {
466
+ margin: 0 0 8px;
467
+ }
468
+
469
+ .name {
470
+ color: #323232;
471
+ font-size: 13px;
472
+ }
473
+
474
+ .t-l {
475
+ flex: 1
476
+ }
477
+
478
+ .t-r {
479
+ font-size: 12px;
480
+ text-align: right;
481
+
482
+ .ico {
483
+ display: inline-block;
484
+ color: #2A6494;
485
+ margin-left: 8px;
486
+ font-size: 16px;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ }
492
+ }
493
+
211
494
 
212
495
  .ico-online {
213
496
  background: url(~@/resources/images/ico-service.png) no-repeat center 19px #FFF;
@@ -333,7 +616,8 @@ export default {
333
616
 
334
617
  .item {
335
618
  margin: 10px 0;
336
- font-size:14px;
619
+ font-size: 14px;
620
+
337
621
  .name {
338
622
  color: rgba(102, 102, 102, 0.6);
339
623
  margin-bottom: 4px;
@@ -378,7 +662,8 @@ export default {
378
662
 
379
663
  &.right {
380
664
  text-align: right;
381
- font-size:14px;
665
+ font-size: 14px;
666
+
382
667
  .cont {
383
668
  background-color: #D8E8F9;
384
669
 
@@ -414,6 +699,36 @@ export default {
414
699
  display: flex;
415
700
  flex-direction: column;
416
701
 
702
+ .pop-inputTips {
703
+ position: absolute;
704
+ background: #FFF;
705
+ left: 10px;
706
+ border: solid 1px #eee;
707
+ overflow: auto;
708
+ height: 160px;
709
+ width: 400px;
710
+ font-size: 13px;
711
+ bottom: 100%;
712
+ margin-bottom: -22px;
713
+ z-index: 22;
714
+ box-shadow: 0 0 14px rgb(0 0 0 / 11%);
715
+ padding: 2px 0;
716
+
717
+ p {
718
+ padding: 10px 16px;
719
+ margin: 0;
720
+ cursor: pointer;
721
+
722
+ &:hover {
723
+ background: #f7f7f7
724
+ }
725
+
726
+ span {
727
+ color: $red
728
+ }
729
+ }
730
+ }
731
+
417
732
  .btns {
418
733
  background-color: #FAFAFA;
419
734
  height: 36px;
@@ -429,7 +744,7 @@ export default {
429
744
 
430
745
  .txt-textarea {
431
746
  flex: 1;
432
- padding-top: 6px;
747
+ padding-top: 20px;
433
748
 
434
749
  .el-textarea__inner {
435
750
  border: none;
@@ -584,6 +899,13 @@ export default {
584
899
  }
585
900
  }
586
901
 
902
+ .fl {
903
+ .button-sty .el-icon-time {
904
+ margin-bottom: 2px;
905
+ margin-right: 2px;
906
+ }
907
+ }
908
+
587
909
  .fr {
588
910
  .t {
589
911
  vertical-align: middle;