fl-web-component 0.1.1 → 1.0.1

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 (78) hide show
  1. package/dist/fl-web-component.common.js +14751 -54489
  2. package/dist/fl-web-component.common.js.map +1 -1
  3. package/dist/fl-web-component.css +1 -1
  4. package/dist/fl-web-component.umd.js +14751 -54489
  5. package/dist/fl-web-component.umd.js.map +1 -1
  6. package/dist/fl-web-component.umd.min.js +3 -3
  7. package/dist/fl-web-component.umd.min.js.map +1 -1
  8. package/package.json +28 -5
  9. package/packages/components/button/index.vue +18 -17
  10. package/packages/components/com-card/card-page.vue +51 -49
  11. package/packages/components/com-card/index.vue +20 -21
  12. package/packages/components/com-dialogWrapper/index.vue +18 -21
  13. package/packages/components/com-flcanvas/components/bspline.js +91 -0
  14. package/packages/components/com-flcanvas/components/entityFormatting.js +503 -0
  15. package/packages/components/com-flcanvas/components/round10.js +24 -0
  16. package/packages/components/com-flcanvas/index.vue +259 -0
  17. package/packages/components/com-formDialog/index.vue +76 -75
  18. package/packages/components/com-graphics/index.vue +1057 -226
  19. package/packages/components/com-graphics/per-control.vue +109 -0
  20. package/packages/components/com-graphics/pid.vue +168 -0
  21. package/packages/components/com-page/index.vue +33 -33
  22. package/packages/components/com-selectTree/index.vue +61 -63
  23. package/packages/components/com-table/column-default.vue +9 -14
  24. package/packages/components/com-table/column-dynamic.vue +4 -8
  25. package/packages/components/com-table/column-menu.vue +8 -8
  26. package/packages/components/com-table/column-slot.vue +4 -4
  27. package/packages/components/com-table/column.vue +7 -15
  28. package/packages/components/com-table/config.js +9 -9
  29. package/packages/components/com-table/index.vue +35 -35
  30. package/packages/components/com-table/table-page.vue +17 -17
  31. package/packages/components/com-tabs/index.vue +19 -19
  32. package/packages/components/com-treeDynamic/index.vue +45 -45
  33. package/packages/components/model/api/index.js +59 -67
  34. package/packages/components/model/api/mock/detecttree.js +38 -38
  35. package/packages/components/model/api/mock/getmodel-line.js +15830 -79332
  36. package/packages/components/model/api/mock/init.js +1 -1
  37. package/packages/components/model/api/mock/pbstree.js +486 -495
  38. package/packages/components/model/components/TextOverTooltip/index.vue +3 -3
  39. package/packages/components/model/components/annotation-toolbar.vue +4 -19
  40. package/packages/components/model/components/check-proofing-model.vue +26 -29
  41. package/packages/components/model/components/clipping-type.vue +22 -14
  42. package/packages/components/model/components/com-dialogWrapper/index.vue +22 -25
  43. package/packages/components/model/components/detect-panel.vue +38 -26
  44. package/packages/components/model/components/detect-tree.vue +9 -24
  45. package/packages/components/model/components/firstPer-panel.vue +23 -25
  46. package/packages/components/model/components/header-button.vue +31 -107
  47. package/packages/components/model/components/imageViewer/index.vue +34 -35
  48. package/packages/components/model/components/import-model.vue +127 -127
  49. package/packages/components/model/components/location-panel.vue +25 -29
  50. package/packages/components/model/components/measure-type.vue +15 -15
  51. package/packages/components/model/components/pbs-tree.vue +139 -144
  52. package/packages/components/model/components/proof-config.vue +2 -10
  53. package/packages/components/model/components/proof-for-pc.vue +35 -32
  54. package/packages/components/model/components/proof-history.vue +136 -154
  55. package/packages/components/model/components/proof-panel-detail.vue +166 -165
  56. package/packages/components/model/components/proof-panel.vue +281 -205
  57. package/packages/components/model/components/proof-project-user.vue +13 -50
  58. package/packages/components/model/components/proof-publish.vue +130 -130
  59. package/packages/components/model/components/proof-role.vue +93 -124
  60. package/packages/components/model/components/props-panel.vue +63 -54
  61. package/packages/components/model/index.vue +3225 -3213
  62. package/packages/components/model/utils/annotation-tool.js +75 -82
  63. package/packages/components/model/utils/cursor.js +15 -10
  64. package/packages/components/model/utils/detect-v1.js +23 -35
  65. package/packages/components/model/utils/index.js +25 -25
  66. package/packages/components/model/utils/threejs/measure-angle.js +180 -180
  67. package/packages/components/model/utils/threejs/measure-area.js +196 -184
  68. package/packages/components/model/utils/threejs/measure-distance.js +154 -152
  69. package/packages/components/model/utils/threejs/measure-volume.js +64 -61
  70. package/src/assets/test.png +0 -0
  71. package/src/assets/worker.glb +0 -0
  72. package/src/main.js +11 -8
  73. package/src/utils/flgltf-parser.js +141 -0
  74. package/src/utils/instance-parser.js +402 -0
  75. package/src/utils/mock.js +84746 -0
  76. package/src/utils/threejs/measure-angle.js +240 -0
  77. package/src/utils/threejs/measure-area.js +249 -0
  78. package/src/utils/threejs/measure-distance.js +195 -0
@@ -27,7 +27,7 @@
27
27
 
28
28
  <script>
29
29
  export default {
30
- name: "TextOverTooltip",
30
+ name: 'TextOverTooltip',
31
31
  props: {
32
32
  // 显示的文字内容
33
33
  content: {
@@ -42,12 +42,12 @@ export default {
42
42
  // 默认主题
43
43
  effect: {
44
44
  type: String,
45
- default: "dark",
45
+ default: 'dark',
46
46
  },
47
47
  // tooltip 出现的位置
48
48
  placement: {
49
49
  type: String,
50
- default: "top",
50
+ default: 'top',
51
51
  },
52
52
  },
53
53
  data() {
@@ -1,11 +1,6 @@
1
1
  <template>
2
2
  <div class="toolbar">
3
- <el-tooltip
4
- class="item"
5
- effect="dark"
6
- content="提示:双击空白处输入文字"
7
- placement="top-start"
8
- >
3
+ <el-tooltip class="item" effect="dark" content="提示:双击空白处输入文字" placement="top-start">
9
4
  <el-button
10
5
  type="text"
11
6
  class="icon_toolbar icon_title"
@@ -43,12 +38,7 @@
43
38
  title="橡皮擦"
44
39
  @click="handleDrawCanvas({ cursor: 'eraser', type: 'Rubber' })"
45
40
  />
46
- <el-popover
47
- popper-class="toolbar_stroke-width"
48
- placement="top"
49
- width="100"
50
- v-model="visible"
51
- >
41
+ <el-popover popper-class="toolbar_stroke-width" placement="top" width="100" v-model="visible">
52
42
  <el-button
53
43
  type="text"
54
44
  class="icon_toolbar icon_stroke_width_1x"
@@ -70,12 +60,7 @@
70
60
  @click="handleDrawCanvas({ strokeWidth: 5 })"
71
61
  title="加粗"
72
62
  />
73
- <el-button
74
- type="text"
75
- class="icon_toolbar icon_mark_stroke"
76
- title="粗细"
77
- slot="reference"
78
- />
63
+ <el-button type="text" class="icon_toolbar icon_mark_stroke" title="粗细" slot="reference" />
79
64
  </el-popover>
80
65
 
81
66
  <el-button type="text" class="icon_toolbar icon_color" title="颜色">
@@ -422,4 +407,4 @@ export default {
422
407
  display: flex;
423
408
  justify-content: space-around;
424
409
  }
425
- </style>
410
+ </style>
@@ -1,42 +1,39 @@
1
1
  <template>
2
- <div v-if="show">
3
- <el-empty>
4
- <el-button type="text" @click="handleClick">载入模型</el-button>
5
- </el-empty>
6
- </div>
2
+ <div v-if="show">
3
+ <el-empty>
4
+ <el-button type="text" @click="handleClick">载入模型</el-button>
5
+ </el-empty>
6
+ </div>
7
7
  </template>
8
8
 
9
9
  <script>
10
- import * as modelApi from "../api/index";
10
+ import * as modelApi from '../api/index';
11
11
 
12
12
  export default {
13
- name: 'CheckProofingModel',
14
- data() {
15
- return {
16
- show: false,
17
- }
18
- },
19
- props: {
20
- defaultParams: {
13
+ name: 'CheckProofingModel',
14
+ data() {
15
+ return {
16
+ show: false,
17
+ };
18
+ },
19
+ props: {
20
+ defaultParams: {
21
21
  type: Object,
22
22
  default() {
23
23
  return {};
24
24
  },
25
25
  },
26
- },
27
- mounted() {
28
- },
29
- methods: {
30
- handleClick(){
31
- this.$emit('click')
32
- },
33
- showCheckProofingModel(){
34
- this.show = true;
35
- }
36
- }
37
- }
26
+ },
27
+ mounted() {},
28
+ methods: {
29
+ handleClick() {
30
+ this.$emit('click');
31
+ },
32
+ showCheckProofingModel() {
33
+ this.show = true;
34
+ },
35
+ },
36
+ };
38
37
  </script>
39
38
 
40
- <style type="scss" scoped>
41
-
42
- </style>
39
+ <style type="scss" scoped></style>
@@ -1,6 +1,14 @@
1
1
  <template>
2
2
  <div class="clipping-type action-box">
3
- <div v-for="item of clippingList" :key="item.id" :class="[active === item.id ? 'active' : 'unactive', 'btn-item']" @click="clippingType(item.id)"><span class="span-txt">{{item.name}}</span><img :src="item.imgUrl" :alt="item.name" class="btn-bg"></div>
3
+ <div
4
+ v-for="item of clippingList"
5
+ :key="item.id"
6
+ :class="[active === item.id ? 'active' : 'unactive', 'btn-item']"
7
+ @click="clippingType(item.id)"
8
+ >
9
+ <span class="span-txt">{{ item.name }}</span
10
+ ><img :src="item.imgUrl" :alt="item.name" class="btn-bg" />
11
+ </div>
4
12
  </div>
5
13
  </template>
6
14
  <script>
@@ -12,40 +20,40 @@ export default {
12
20
  clippingList: [
13
21
  { name: '全局剖切', id: 'all', imgUrl: require('@/assets/clipping-all.png') },
14
22
  // { name: '局部剖切', id: 'local', imgUrl: require('@/assets/clipping-local.png') }
15
- ]
16
- }
23
+ ],
24
+ };
17
25
  },
18
26
  methods: {
19
27
  clippingType(type) {
20
28
  if (type !== this.active) {
21
- this.$set(this, 'active', type)
22
- this.$emit('clippingType', type)
29
+ this.$set(this, 'active', type);
30
+ this.$emit('clippingType', type);
23
31
  }
24
- }
25
- }
26
- }
32
+ },
33
+ },
34
+ };
27
35
  </script>
28
36
  <style lang="scss" scoped>
29
- .clipping-type{
37
+ .clipping-type {
30
38
  height: 45px;
31
39
  }
32
- .btn-item{
40
+ .btn-item {
33
41
  height: 45px;
34
42
  line-height: 45px;
35
43
  padding: 0 10px;
36
44
  cursor: pointer;
37
45
  }
38
- .btn-bg{
46
+ .btn-bg {
39
47
  display: inline-block;
40
48
  vertical-align: middle;
41
49
  }
42
- .unactive{
50
+ .unactive {
43
51
  color: #fff;
44
52
  }
45
- .span-txt{
53
+ .span-txt {
46
54
  padding-right: 5px;
47
55
  }
48
- .active{
56
+ .active {
49
57
  background: rgba(255, 255, 255, 0.5);
50
58
  }
51
59
  </style>
@@ -17,7 +17,6 @@
17
17
  :append-to-body="appendToBody"
18
18
  :modal-append-to-body="modalAppendToBody"
19
19
  >
20
-
21
20
  <!-- 弹窗title -->
22
21
  <template slot="title">
23
22
  <div class="custom_dialog_header">
@@ -49,69 +48,67 @@ export default {
49
48
  /* 弹窗 title标题 */
50
49
  dialogTitle: {
51
50
  type: String,
52
- default: '标题'
51
+ default: '标题',
53
52
  },
54
53
  /* 弹窗 width宽度 */
55
54
  popupWidth: {
56
55
  type: String,
57
- default: '35%'
56
+ default: '35%',
58
57
  },
59
58
  /* 弹窗 显示隐藏状态 */
60
59
  visible: {
61
60
  type: Boolean,
62
- default: false
61
+ default: false,
63
62
  },
64
63
  footerDisabled: {
65
64
  type: Boolean,
66
- default: false
65
+ default: false,
67
66
  },
68
67
  appendToBody: {
69
68
  type: Boolean,
70
- default: true
69
+ default: true,
71
70
  },
72
71
  modalAppendToBody: {
73
72
  type: Boolean,
74
- default: true
75
- }
73
+ default: true,
74
+ },
76
75
  },
77
76
  data() {
78
77
  return {
79
78
  openDialog: false,
80
- dialogFullScreen: false
81
- }
79
+ dialogFullScreen: false,
80
+ };
82
81
  },
83
82
  computed: {
84
83
  dialogVisible: {
85
84
  get() {
86
- console.log(this.visible)
85
+ console.log(this.visible);
87
86
  // 初始化数据
88
- if (this.visible) Object.assign(this.$data, this.$options.data())
89
- return this.visible
87
+ if (this.visible) Object.assign(this.$data, this.$options.data());
88
+ return this.visible;
90
89
  },
91
90
  set(val) {
92
91
  // 当visible改变的时候,触发父组件的 updateVisible方法,
93
92
  // 在该方法中更改传入子组件的 centerDialogVisible的值
94
- this.$emit('updateVisible', val)
95
- }
96
- }
93
+ this.$emit('updateVisible', val);
94
+ },
95
+ },
97
96
  },
98
97
  watch: {},
99
98
  created() {
100
- console.log('test')
99
+ console.log('test');
101
100
  },
102
101
  mounted() {},
103
102
  methods: {
104
103
  /* 关闭弹窗 */
105
104
  handleClose() {
106
- this.$emit('handleClose')
105
+ this.$emit('handleClose');
107
106
  },
108
107
  /* 弹窗 确认 操作 */
109
108
  handleSubmit() {
110
- this.$emit('submitDialogData')
111
- }
112
- }
113
- }
109
+ this.$emit('submitDialogData');
110
+ },
111
+ },
112
+ };
114
113
  </script>
115
- <style lang="scss" scoped>
116
-
117
- </style>
114
+ <style lang="scss" scoped></style>
@@ -1,8 +1,12 @@
1
1
  <template>
2
- <div class="box-card" style="height: calc(100vh - 134px)">
2
+ <div class="box-card" style="height: calc(100vh - 134px)">
3
3
  <div class="box-title">
4
4
  <span class="box-title-desc">碰撞报告</span>
5
- <i class="el-icon-close box-title-close" style="cursor: pointer" @click="$emit('rightOperation', 'detect')" />
5
+ <i
6
+ class="el-icon-close box-title-close"
7
+ style="cursor: pointer"
8
+ @click="$emit('rightOperation', 'detect')"
9
+ />
6
10
  </div>
7
11
  <detect-tree
8
12
  v-if="showDetectTree"
@@ -12,7 +16,12 @@
12
16
  @highlight="highlight"
13
17
  />
14
18
  <div class="process-container" v-else>
15
- <el-progress class="process-percent" type="circle" :percentage="processPercent" :color="processPercentStatus"></el-progress>
19
+ <el-progress
20
+ class="process-percent"
21
+ type="circle"
22
+ :percentage="processPercent"
23
+ :color="processPercentStatus"
24
+ ></el-progress>
16
25
  <p v-if="!processCompleted">碰撞报告生成中...</p>
17
26
  <div v-else>
18
27
  <el-row>
@@ -31,7 +40,7 @@ import detectTree from './detect-tree.vue';
31
40
 
32
41
  export default {
33
42
  name: 'Details',
34
- components:{
43
+ components: {
35
44
  DetectTree: detectTree,
36
45
  },
37
46
  props: {
@@ -46,7 +55,7 @@ export default {
46
55
  default() {
47
56
  return [];
48
57
  },
49
- }
58
+ },
50
59
  },
51
60
  data() {
52
61
  return {
@@ -61,20 +70,23 @@ export default {
61
70
  };
62
71
  },
63
72
  mounted() {
64
- this.init({queryParams: {...this.defaultParams, rebuild: 0}}, { contentType: 'application/x-www-form-urlencoded'});
73
+ this.init(
74
+ { queryParams: { ...this.defaultParams, rebuild: 0 } },
75
+ { contentType: 'application/x-www-form-urlencoded' },
76
+ );
65
77
  },
66
78
  computed: {
67
- processPercentStatus(){
79
+ processPercentStatus() {
68
80
  return this.processCompleted ? '#5cb87a' : '';
69
81
  },
70
- processCompleted(){
82
+ processCompleted() {
71
83
  return this.processPercent == 100;
72
- }
84
+ },
73
85
  },
74
86
  watch: {
75
87
  treeData(val) {
76
88
  this.processPercent = 100;
77
- }
89
+ },
78
90
  },
79
91
  methods: {
80
92
  init(params, options) {
@@ -113,29 +125,29 @@ export default {
113
125
  .catch((action) => {
114
126
  action == 'cancel' &&
115
127
  this.init(
116
- { queryParams: {...this.defaultParams, rebuild: 1} },
117
- { contentType: 'application/x-www-form-urlencoded' }
128
+ { queryParams: { ...this.defaultParams, rebuild: 1 } },
129
+ { contentType: 'application/x-www-form-urlencoded' },
118
130
  );
119
131
  });
120
132
  },
121
- initDetect(){
133
+ initDetect() {
122
134
  this.init(
123
- { queryParams: {...this.defaultParams, rebuild: 1} },
124
- { contentType: 'application/x-www-form-urlencoded' }
135
+ { queryParams: { ...this.defaultParams, rebuild: 1 } },
136
+ { contentType: 'application/x-www-form-urlencoded' },
125
137
  );
126
138
  },
127
- viewReport(){
139
+ viewReport() {
128
140
  this.showDetectTree = true;
129
141
  },
130
142
  // 生成一个0到100之间的随机整数百分比
131
143
  getRandomPercentage() {
132
144
  return Math.floor(Math.random() * 100);
133
145
  },
134
- locate(node, data){
135
- this.$emit('locate', node, data)
146
+ locate(node, data) {
147
+ this.$emit('locate', node, data);
136
148
  },
137
- highlight(node, data){
138
- this.$emit('highlight', node, data)
149
+ highlight(node, data) {
150
+ this.$emit('highlight', node, data);
139
151
  },
140
152
  },
141
153
  destroyed() {
@@ -292,7 +304,7 @@ export default {
292
304
  padding-bottom: 0;
293
305
  background: #fff;
294
306
  width: 360px;
295
- .box-title{
307
+ .box-title {
296
308
  display: flex;
297
309
  justify-content: space-between;
298
310
  align-items: center;
@@ -301,26 +313,26 @@ export default {
301
313
  padding-left: 8px;
302
314
  padding-right: 8px;
303
315
  border-bottom: 1px solid #dfdfdf;
304
- .box-title-desc{
316
+ .box-title-desc {
305
317
  font-size: 14px;
306
318
  font-weight: bold;
307
319
  }
308
- .box-title-close{
320
+ .box-title-close {
309
321
  font-size: 24px;
310
322
  }
311
323
  }
312
324
  }
313
- .process-container{
325
+ .process-container {
314
326
  display: flex;
315
327
  flex-direction: column;
316
328
  justify-content: center;
317
329
  align-items: center;
318
330
  height: calc(75% - 54px);
319
- .process-percent{
331
+ .process-percent {
320
332
  padding: 20px;
321
333
  }
322
334
  }
323
- ::v-deep .el-progress__text{
335
+ ::v-deep .el-progress__text {
324
336
  font-size: 32px !important;
325
337
  font-weight: bold;
326
338
  }
@@ -29,18 +29,11 @@
29
29
  empty-text="暂无数据"
30
30
  >
31
31
  <span class="custom-tree-node" slot-scope="{ node, data }">
32
- <span class="node-root" v-if="data.id == -1" :title="node.label">{{
33
- node.label
34
- }}</span>
35
- <span
36
- class="node-child"
37
- v-else-if="node.isLeaf && data.id != -1"
38
- :title="node.label"
32
+ <span class="node-root" v-if="data.id == -1" :title="node.label">{{ node.label }}</span>
33
+ <span class="node-child" v-else-if="node.isLeaf && data.id != -1" :title="node.label"
39
34
  >碰撞点位:{{ node.label }}</span
40
35
  >
41
- <span class="node-parent" v-else :title="node.label"
42
- >本体:{{ node.label }}</span
43
- >
36
+ <span class="node-parent" v-else :title="node.label">本体:{{ node.label }}</span>
44
37
 
45
38
  <span v-if="data.id != -1">
46
39
  <el-button
@@ -339,19 +332,14 @@ export default {
339
332
  const element = batchIds[index];
340
333
  let modelPiece = element.titleName;
341
334
  if (Object.keys(batchIdObj).includes(modelPiece)) {
342
- !batchIdObj[modelPiece].batchIds.find(
343
- (item) => item === element.batchId
344
- ) && batchIdObj[modelPiece].batchIds.push(element.batchId);
335
+ !batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId) &&
336
+ batchIdObj[modelPiece].batchIds.push(element.batchId);
345
337
  } else {
346
338
  batchIdObj[modelPiece] = {
347
339
  folderId: '',
348
340
  batchIds: [],
349
341
  };
350
- if (
351
- !batchIdObj[modelPiece].batchIds.find(
352
- (item) => item === element.batchId
353
- )
354
- ) {
342
+ if (!batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId)) {
355
343
  batchIdObj[modelPiece].batchIds.push(element.batchId);
356
344
  batchIdObj[modelPiece].folderId = data[i].groupId;
357
345
  }
@@ -379,8 +367,7 @@ export default {
379
367
  collectChildIdsRecursive(items, result = []) {
380
368
  items.forEach((item) => {
381
369
  item.type === 0 && result.push(item.objectId);
382
- if (this.hasChildren(item))
383
- this.collectChildIdsRecursive(item.child, result);
370
+ if (this.hasChildren(item)) this.collectChildIdsRecursive(item.child, result);
384
371
  });
385
372
  return result;
386
373
  },
@@ -425,9 +412,7 @@ export default {
425
412
  display: none;
426
413
  }
427
414
 
428
- ::v-deep .el-tree--highlight-current
429
- .el-tree-node.is-current
430
- > .el-tree-node__content {
415
+ ::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
431
416
  background: rgba(255, 255, 255, 0.3);
432
417
  }
433
418
 
@@ -454,7 +439,7 @@ export default {
454
439
  overflow: hidden;
455
440
  }
456
441
 
457
- ::v-deep .el-scrollbar{
442
+ ::v-deep .el-scrollbar {
458
443
  height: 739px;
459
444
  }
460
445
  </style>
@@ -38,36 +38,34 @@
38
38
  export default {
39
39
  name: 'FirstPerPanel',
40
40
  data() {
41
- return {
42
-
43
- }
44
- },
45
- created() {
41
+ return {};
46
42
  },
43
+ created() {},
47
44
  methods: {
48
45
  start(val) {
49
- this.$emit('start', val)
50
- }
51
- }
52
- }
46
+ this.$emit('start', val);
47
+ },
48
+ },
49
+ };
53
50
  </script>
54
51
  <style lang="scss" scoped>
55
- span{
52
+ span {
56
53
  font-weight: bolder;
57
54
  }
58
- .text{
55
+ .text {
59
56
  margin-top: 20px;
60
57
  }
61
- .line{
62
- border-bottom: 1px solid #DCDFE6;
58
+ .line {
59
+ border-bottom: 1px solid #dcdfe6;
63
60
  margin: 20px 0;
64
61
  }
65
- .center{
62
+ .center {
66
63
  display: flex;
67
64
  flex-direction: column;
68
65
  align-items: center;
69
- .top,.cen{
70
- span{
66
+ .top,
67
+ .cen {
68
+ span {
71
69
  color: #53a8ff;
72
70
  display: inline-block;
73
71
  width: 40px;
@@ -77,28 +75,28 @@ span{
77
75
  border: 1px solid #53a8ff;
78
76
  padding: 5px;
79
77
  margin-bottom: 10px;
80
- background-color: #E9F3FF;
78
+ background-color: #e9f3ff;
81
79
  }
82
80
  }
83
- .cen{
84
- span{
81
+ .cen {
82
+ span {
85
83
  margin: 10px;
86
84
  }
87
85
  }
88
86
  }
89
- .button{
87
+ .button {
90
88
  display: flex;
91
89
  justify-content: end;
92
90
  margin-top: 20px;
93
91
  }
94
92
  @font-face {
95
- font-family: "iconfont"; /* Project id 3226805 */
93
+ font-family: 'iconfont'; /* Project id 3226805 */
96
94
  src: url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216') format('woff2'),
97
- url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216') format('woff'),
98
- url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216') format('truetype');
95
+ url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff?t=1646635700216') format('woff'),
96
+ url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.ttf?t=1646635700216') format('truetype');
99
97
  }
100
98
  .iconfont {
101
- font-family: "iconfont" !important;
99
+ font-family: 'iconfont' !important;
102
100
  font-size: 50px;
103
101
  font-style: normal;
104
102
  color: #53a8ff;
@@ -106,6 +104,6 @@ span{
106
104
  -moz-osx-font-smoothing: grayscale;
107
105
  }
108
106
  .icon-shubiao:before {
109
- content: "\e8a7";
107
+ content: '\e8a7';
110
108
  }
111
109
  </style>