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
@@ -7,7 +7,7 @@
7
7
  <i class="el-icon-close"></i>
8
8
  </el-button>
9
9
  </div>
10
- <el-form ref="form" :model="form" :rules="rules" label-width="50px">
10
+ <el-form ref="form" :model="form" :rules="rules" label-width="50px">
11
11
  <el-form-item label="姓名" prop="userName">
12
12
  <el-input type="text" v-model="form.userName" maxlength="50" show-word-limit></el-input>
13
13
  </el-form-item>
@@ -31,10 +31,10 @@ export default {
31
31
  default() {
32
32
  return {
33
33
  left: 0,
34
- top: 0
35
- }
36
- }
37
- }
34
+ top: 0,
35
+ };
36
+ },
37
+ },
38
38
  },
39
39
  data() {
40
40
  return {
@@ -44,52 +44,48 @@ export default {
44
44
  },
45
45
  style: `position: fixed; top: ${this.position.top}px; left: ${this.position.left}px;`,
46
46
  rules: {
47
- userName: [
48
- { required: true, message: '请输入人员姓名', trigger: 'blur' },
49
- ],
50
- userCode: [
51
- { required: true, message: '请输入人员编码', trigger: 'blur' },
52
- ]
53
- }
54
- }
47
+ userName: [{ required: true, message: '请输入人员姓名', trigger: 'blur' }],
48
+ userCode: [{ required: true, message: '请输入人员编码', trigger: 'blur' }],
49
+ },
50
+ };
55
51
  },
56
52
  watch: {
57
53
  position(val) {
58
- this.$refs.markPanel.$el.style.top = `${val.top}px`
59
- this.$refs.markPanel.$el.style.left = `${val.left}px`
60
- }
54
+ this.$refs.markPanel.$el.style.top = `${val.top}px`;
55
+ this.$refs.markPanel.$el.style.left = `${val.left}px`;
56
+ },
61
57
  },
62
58
  methods: {
63
59
  cancel() {
64
- this.$emit('cancel')
60
+ this.$emit('cancel');
65
61
  },
66
62
  sure(data) {
67
63
  this.$refs['form'].validate((valid) => {
68
64
  if (valid) {
69
- this.$emit('sureLocation', this.form)
65
+ this.$emit('sureLocation', this.form);
70
66
  } else {
71
- return false
67
+ return false;
72
68
  }
73
- })
69
+ });
74
70
  },
75
71
  resetForm() {
76
- this.$refs['form'].resetFields()
77
- }
78
- }
79
- }
72
+ this.$refs['form'].resetFields();
73
+ },
74
+ },
75
+ };
80
76
  </script>
81
77
  <style lang="scss" scoped>
82
- .mark-panel{
78
+ .mark-panel {
83
79
  transition: all 1s;
84
80
  }
85
- ::v-deep .el-card__header{
81
+ ::v-deep .el-card__header {
86
82
  padding: 10px 20px;
87
83
  }
88
- ::v-deep .el-input__inner{
84
+ ::v-deep .el-input__inner {
89
85
  height: 30px;
90
86
  line-height: 30px;
91
87
  }
92
- ::v-deep .icon-select .el-input__inner{
93
- color: rgba(255,255, 255, 0);
88
+ ::v-deep .icon-select .el-input__inner {
89
+ color: rgba(255, 255, 255, 0);
94
90
  }
95
91
  </style>
@@ -6,8 +6,8 @@
6
6
  :class="[active === item.id ? 'active' : 'unactive', 'btn-item']"
7
7
  @click="measureType(item.id)"
8
8
  >
9
- <span class="span-txt">{{item.name}}</span>
10
- <img :src="item.imgUrl" :alt="item.name" class="btn-bg">
9
+ <span class="span-txt">{{ item.name }}</span>
10
+ <img :src="item.imgUrl" :alt="item.name" class="btn-bg" />
11
11
  </div>
12
12
  </div>
13
13
  </template>
@@ -22,38 +22,38 @@ export default {
22
22
  { name: '面积测量', id: 'area', imgUrl: require('@/assets/area.png') },
23
23
  { name: '角度测量', id: 'angle', imgUrl: require('@/assets/angle.png') },
24
24
  // { name: '体积测量', id: 'volume', imgUrl: require('@/assets/area.png') }
25
- ]
26
- }
25
+ ],
26
+ };
27
27
  },
28
28
  methods: {
29
29
  measureType(type) {
30
- this.$set(this, 'active', type)
31
- this.$emit('measure', type)
32
- }
33
- }
34
- }
30
+ this.$set(this, 'active', type);
31
+ this.$emit('measure', type);
32
+ },
33
+ },
34
+ };
35
35
  </script>
36
36
  <style scoped>
37
- .measure-type{
37
+ .measure-type {
38
38
  height: 45px;
39
39
  }
40
- .btn-item{
40
+ .btn-item {
41
41
  height: 45px;
42
42
  line-height: 45px;
43
43
  padding: 0 10px;
44
44
  cursor: pointer;
45
45
  }
46
- .btn-bg{
46
+ .btn-bg {
47
47
  display: inline-block;
48
48
  vertical-align: middle;
49
49
  }
50
- .active{
50
+ .active {
51
51
  background: rgba(255, 255, 255, 0.5);
52
52
  }
53
- .unactive{
53
+ .unactive {
54
54
  color: #fff;
55
55
  }
56
- .span-txt{
56
+ .span-txt {
57
57
  padding-right: 5px;
58
58
  }
59
59
  </style>
@@ -15,38 +15,31 @@
15
15
 
16
16
  <!-- :render-content="renderContent" -->
17
17
  <el-scrollbar class="scrollbar">
18
- <el-tree
18
+ <el-tree
19
19
  v-if="treeEmptyText"
20
- ref="tree"
21
- :data="treeData"
22
- show-checkbox
23
- node-key="id"
20
+ ref="tree"
21
+ :data="treeData"
22
+ show-checkbox
23
+ node-key="id"
24
24
  :expand-on-click-node="false"
25
- :current-node-key="currentKey"
26
- :props="defaultProps"
27
- @node-click="handleNodeClick"
25
+ :current-node-key="currentKey"
26
+ :props="defaultProps"
27
+ @node-click="handleNodeClick"
28
28
  :highlight-current="true"
29
- :default-expanded-keys="expanded"
30
- @check="handleCheckChange"
29
+ :default-expanded-keys="expanded"
30
+ @check="handleCheckChange"
31
31
  :filter-node-method="filterNode"
32
- :check-strictly="true"
33
- :empty-text=treeEmptyText
32
+ :check-strictly="true"
33
+ :empty-text="treeEmptyText"
34
34
  >
35
35
  <span class="custom-tree-node" slot-scope="{ node, data }">
36
- <!-- 自定义节点名称 -->
37
- <!-- :style="cssNodeLabel" -->
38
- <text-over-tooltip
39
- class="node-label"
40
- :content="node.label"
41
- :ref-name="node.id"
42
- >
43
- <template slot="tooltip-content">
44
- <slot
45
- name="tree-node-label"
46
- v-bind="{ node, data }"
47
- >
48
- <!-- 自定义节点图标 -->
49
- <!-- <i
36
+ <!-- 自定义节点名称 -->
37
+ <!-- :style="cssNodeLabel" -->
38
+ <text-over-tooltip class="node-label" :content="node.label" :ref-name="node.id">
39
+ <template slot="tooltip-content">
40
+ <slot name="tree-node-label" v-bind="{ node, data }">
41
+ <!-- 自定义节点图标 -->
42
+ <!-- <i
50
43
  v-if="data.icon"
51
44
  :class="data.icon"
52
45
  style="margin-right: 3px"
@@ -56,27 +49,27 @@
56
49
  :class="'el-icon-coin'"
57
50
  style="margin-right: 3px"
58
51
  /> -->
59
- <span v-html="search(node.label, filterVal)" />
60
- </slot>
61
- </template>
62
- </text-over-tooltip>
63
- </span>
52
+ <span v-html="search(node.label, filterVal)" />
53
+ </slot>
54
+ </template>
55
+ </text-over-tooltip>
56
+ </span>
64
57
  </el-tree>
65
58
  <el-empty v-else></el-empty>
66
59
  </el-scrollbar>
67
60
  </div>
68
61
  </template>
69
62
  <script>
70
- import { proofInit, getPbsTree, getOriginalPbsTree } from '../api/index'
71
- import { loading, loadingClose } from '../utils/index'
72
- import _ from 'lodash'
73
- import TextOverTooltip from "./TextOverTooltip/index.vue";
63
+ import { proofInit, getPbsTree, getOriginalPbsTree } from '../api/index';
64
+ import { loading, loadingClose } from '../utils/index';
65
+ import _ from 'lodash';
66
+ import TextOverTooltip from './TextOverTooltip/index.vue';
74
67
 
75
- var projectId = null
76
- var timeout = null //防抖时间戳
77
- var checkedArr = []
68
+ var projectId = null;
69
+ var timeout = null; //防抖时间戳
70
+ var checkedArr = [];
78
71
 
79
- let selectedIds = []
72
+ let selectedIds = [];
80
73
  let allNodes = [];
81
74
  const NODE_TYPES = {
82
75
  model: 10,
@@ -94,36 +87,36 @@ export default {
94
87
  folderId: {
95
88
  type: String,
96
89
  default() {
97
- return ''
98
- }
90
+ return '';
91
+ },
99
92
  },
100
93
  projectId: {
101
94
  type: String,
102
95
  default() {
103
- return ''
104
- }
96
+ return '';
97
+ },
105
98
  },
106
99
  version: {
107
100
  type: String,
108
- default: ''
101
+ default: '',
109
102
  },
110
103
  flag: {
111
104
  type: Boolean,
112
105
  default() {
113
- return false
114
- }
106
+ return false;
107
+ },
115
108
  },
116
109
  pbsVersion: {
117
110
  type: Object,
118
111
  default() {
119
- return {}
120
- }
121
- }
112
+ return {};
113
+ },
114
+ },
122
115
  },
123
116
  components: {
124
- TextOverTooltip
117
+ TextOverTooltip,
125
118
  },
126
- destroyed(){
119
+ destroyed() {
127
120
  this.resetData();
128
121
  },
129
122
  data() {
@@ -136,7 +129,7 @@ export default {
136
129
  // },
137
130
  disabled: (data) => {
138
131
  return data.type !== 0;
139
- }
132
+ },
140
133
  },
141
134
  treeData: [],
142
135
  treeEmptyText: '',
@@ -145,7 +138,7 @@ export default {
145
138
  checkedArr: [],
146
139
  node: '',
147
140
  filterVal: '',
148
- }
141
+ };
149
142
  },
150
143
  watch: {
151
144
  // 监听节点名称变化,进行筛选
@@ -168,8 +161,7 @@ export default {
168
161
  // if (val) this.getTree()
169
162
  // },
170
163
  },
171
- created() {
172
- },
164
+ created() {},
173
165
  methods: {
174
166
  // // 搜索
175
167
  // queryPbs() {
@@ -191,16 +183,16 @@ export default {
191
183
  // })
192
184
  // },
193
185
  expandNodes(data) {
194
- data.forEach(item => {
195
- this.expanded.push(item.nodeId)
186
+ data.forEach((item) => {
187
+ this.expanded.push(item.nodeId);
196
188
  if (item.children) {
197
- item.children.forEach(childrenItem => {
198
- this.expanded.push(childrenItem.nodeId)
199
- this.expandNodes(childrenItem.children)
200
- })
189
+ item.children.forEach((childrenItem) => {
190
+ this.expanded.push(childrenItem.nodeId);
191
+ this.expandNodes(childrenItem.children);
192
+ });
201
193
  }
202
- })
203
- return this.expanded
194
+ });
195
+ return this.expanded;
204
196
  },
205
197
  formatTree(data) {
206
198
  if (data.type !== 0) {
@@ -209,18 +201,18 @@ export default {
209
201
  data.disabled = false;
210
202
  }
211
203
  if (data.child) {
212
- data.child.forEach(childrenItem => {
213
- this.formatTree(childrenItem)
214
- })
204
+ data.child.forEach((childrenItem) => {
205
+ this.formatTree(childrenItem);
206
+ });
215
207
  }
216
- return data
208
+ return data;
217
209
  },
218
210
  // 获取pbs节点
219
211
  getPbsTree(params) {
220
212
  this.treeEmptyText = '加载中...';
221
213
 
222
214
  getOriginalPbsTree(params)
223
- // getPbsTree(params)
215
+ // getPbsTree(params)
224
216
  .then((res) => {
225
217
  // console.log('getOriginalPbsTree', res)
226
218
  // res = this.formatTree(res)
@@ -229,17 +221,19 @@ export default {
229
221
  this.treeData = [res];
230
222
  this.allNodes = this.getAllNodes([res]);
231
223
  }
232
- }).catch(() => {
233
- console.log('error')
234
- this.treeData.splice(0)
235
- }).finally(() => {
236
- loadingClose()
237
- this.treeEmptyText = '暂无数据';
238
224
  })
225
+ .catch(() => {
226
+ console.log('error');
227
+ this.treeData.splice(0);
228
+ })
229
+ .finally(() => {
230
+ loadingClose();
231
+ this.treeEmptyText = '暂无数据';
232
+ });
239
233
  },
240
234
  getAllNodes(data) {
241
235
  const allNodes = [];
242
- data.forEach(node => {
236
+ data.forEach((node) => {
243
237
  allNodes.push(node);
244
238
  if (node.child && node.child.length > 0) {
245
239
  allNodes.push(...this.getAllNodes(node.child));
@@ -248,9 +242,9 @@ export default {
248
242
  return allNodes;
249
243
  },
250
244
  handleNodeClick(data) {
251
- this.node = data
245
+ this.node = data;
252
246
  if (data.type === NODE_TYPES.model) {
253
- this.getModelIdsByNodeIds(projectId, data.objectId, 'PbsClick')
247
+ this.getModelIdsByNodeIds(projectId, data.objectId, 'PbsClick');
254
248
  }
255
249
  // if (data.nodeType === 'Pbs') {
256
250
  // 这个有待考究 需不需要传版本数据 data里面没有版本数据的字段
@@ -259,52 +253,51 @@ export default {
259
253
  },
260
254
  // 选中节点
261
255
  scrollTo(selectNodeId) {
262
- const node = this.allNodes.find(item => item.objectId === selectNodeId)
263
-
256
+ const node = this.allNodes.find((item) => item.objectId === selectNodeId);
264
257
 
265
258
  if (node?.id) {
266
- this.$refs.tree.setCurrentKey(node.id)
267
- this.expanded.push(node.id)
268
- this.$set(this, 'currentKey', node.id)
259
+ this.$refs.tree.setCurrentKey(node.id);
260
+ this.expanded.push(node.id);
261
+ this.$set(this, 'currentKey', node.id);
269
262
  this.$nextTick(() => {
270
- const ele = document.querySelector('.is-current')
263
+ const ele = document.querySelector('.is-current');
271
264
  setTimeout(() => {
272
265
  if (ele) {
273
266
  ele.scrollIntoView({
274
267
  block: 'center',
275
- behavior: 'instant'
276
- })
268
+ behavior: 'instant',
269
+ });
277
270
  }
278
- }, 400)
279
- })
271
+ }, 400);
272
+ });
280
273
  } else {
281
274
  this.$message({
282
275
  type: 'warning',
283
- message: '未关联Pbs节点'
284
- })
276
+ message: '未关联Pbs节点',
277
+ });
285
278
  }
286
279
  },
287
280
  //获取复选框选中得到的数据
288
281
  handleCheckChange(data, node) {
289
282
  // type 为0的是组节点 加载模型 10是模型 (定位) 14是专业
290
- console.log(data, node)
283
+ console.log(data, node);
291
284
  const tree = this.$refs.tree;
292
- console.log(tree.getNode(data))
293
- const currentNode = tree.getNode(data)
285
+ console.log(tree.getNode(data));
286
+ const currentNode = tree.getNode(data);
294
287
  const nodeData = currentNode.data;
295
288
  if (currentNode.checked) {
296
- this.selectAllChildren([nodeData])
289
+ this.selectAllChildren([nodeData]);
297
290
  } else {
298
- this.invertChildrenSelection([nodeData])
291
+ this.invertChildrenSelection([nodeData]);
299
292
  }
300
293
  // selectedIds = ['100']
301
- console.log(selectedIds)
302
- const checkedKeys = selectedIds.map(item => item.id)
303
- tree.setCheckedKeys(checkedKeys)
294
+ console.log(selectedIds);
295
+ const checkedKeys = selectedIds.map((item) => item.id);
296
+ tree.setCheckedKeys(checkedKeys);
304
297
 
305
298
  if (data.type === NODE_TYPES.pbsGrp) {
306
- const groupIds = selectedIds.map(item => item.objectId)
307
- this.getModelIdsByNodeIds(projectId, groupIds, 'checkChange')
299
+ const groupIds = selectedIds.map((item) => item.objectId);
300
+ this.getModelIdsByNodeIds(projectId, groupIds, 'checkChange');
308
301
  }
309
302
  // clearTimeout(timeout)
310
303
  // // 过滤一下数据
@@ -318,18 +311,22 @@ export default {
318
311
  },
319
312
  filterCheckArr(data) {
320
313
  if (data.children.length === 0) {
321
- checkedArr.push({ folderId: data.nodeFolderId, nodeId: data.nodeId, version: this.pbsVersion[data.nodeFolderId] })
314
+ checkedArr.push({
315
+ folderId: data.nodeFolderId,
316
+ nodeId: data.nodeId,
317
+ version: this.pbsVersion[data.nodeFolderId],
318
+ });
322
319
  } else {
323
320
  for (let index = 0; index < data.children.length; index++) {
324
- this.filterCheckArr(data.children[index])
321
+ this.filterCheckArr(data.children[index]);
325
322
  }
326
323
  }
327
324
  },
328
325
  // 获取当前选中的节点中所对应的模型信息集合
329
326
  getModelIdsByNodeIds(projectId, nodes, type) {
330
327
  // this.$emit('checkChange', nodes)
331
- type === 'checkChange' && this.$emit('checkChange', nodes)
332
- type === 'PbsClick' && this.$emit('pbsNodeClick', nodes)
328
+ type === 'checkChange' && this.$emit('checkChange', nodes);
329
+ type === 'PbsClick' && this.$emit('pbsNodeClick', nodes);
333
330
 
334
331
  // PbsApi.getModelIdsByNodeIds(projectId, parmas).then(res => {
335
332
  // // type === 'checkChange' && this.$emit('checkChange', this.formatterMsg(res))
@@ -345,29 +342,30 @@ export default {
345
342
  // 整合数据
346
343
  formatterMsg(data) {
347
344
  //整合数据以对象形式传递,{key:[]},key为titleName,[]是batchId去重后组成的数组
348
- const batchIdObj = {}
345
+ const batchIdObj = {};
349
346
  for (let i = 0; i < data.length; i++) {
350
347
  if (data[i].batchIds) {
351
- let batchIds = JSON.parse(data[i].batchIds)
348
+ let batchIds = JSON.parse(data[i].batchIds);
352
349
  for (let index = 0; index < batchIds.length; index++) {
353
- const element = batchIds[index]
354
- let modelPiece = element.titleName
350
+ const element = batchIds[index];
351
+ let modelPiece = element.titleName;
355
352
  if (Object.keys(batchIdObj).includes(modelPiece)) {
356
- !batchIdObj[modelPiece].batchIds.find(item => item === element.batchId) && batchIdObj[modelPiece].batchIds.push(element.batchId)
353
+ !batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId) &&
354
+ batchIdObj[modelPiece].batchIds.push(element.batchId);
357
355
  } else {
358
356
  batchIdObj[modelPiece] = {
359
357
  folderId: '',
360
- batchIds: []
361
- }
362
- if (!batchIdObj[modelPiece].batchIds.find(item => item === element.batchId)) {
363
- batchIdObj[modelPiece].batchIds.push(element.batchId)
364
- batchIdObj[modelPiece].folderId = data[i].groupId
358
+ batchIds: [],
359
+ };
360
+ if (!batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId)) {
361
+ batchIdObj[modelPiece].batchIds.push(element.batchId);
362
+ batchIdObj[modelPiece].folderId = data[i].groupId;
365
363
  }
366
364
  }
367
365
  }
368
366
  }
369
367
  }
370
- return batchIdObj
368
+ return batchIdObj;
371
369
  },
372
370
  // 判断节点是否拥有子节点
373
371
  hasChildren(data) {
@@ -376,27 +374,27 @@ export default {
376
374
  // 选中当前节点的所有子节点
377
375
  selectAllChildren(items) {
378
376
  const childIds = this.collectChildIdsRecursive(items);
379
- selectedIds = _.uniqBy([...selectedIds, ...childIds], item => item.id);
377
+ selectedIds = _.uniqBy([...selectedIds, ...childIds], (item) => item.id);
380
378
  },
381
379
  // 取消选中当前节点的所有子节点
382
380
  invertChildrenSelection(items) {
383
381
  const childIds = this.collectChildIdsRecursive(items);
384
- const ids = childIds.map(childItem => childItem.id)
385
- selectedIds = selectedIds.filter(item => !ids.includes(item.id));
382
+ const ids = childIds.map((childItem) => childItem.id);
383
+ selectedIds = selectedIds.filter((item) => !ids.includes(item.id));
386
384
  },
387
385
  // 递归收集节点及其子节点的ID
388
386
  collectChildIdsRecursive(items, result = []) {
389
- items.forEach(item => {
390
- item.type === NODE_TYPES.pbsGrp && result.push({objectId: item.objectId, id: item.id});
391
- if (this.hasChildren(item)) this.collectChildIdsRecursive(item.child, result);
392
- });
393
- return result;
387
+ items.forEach((item) => {
388
+ item.type === NODE_TYPES.pbsGrp && result.push({ objectId: item.objectId, id: item.id });
389
+ if (this.hasChildren(item)) this.collectChildIdsRecursive(item.child, result);
390
+ });
391
+ return result;
394
392
  },
395
393
  search(val, searchData) {
396
- const Reg = new RegExp(searchData, 'ig')
394
+ const Reg = new RegExp(searchData, 'ig');
397
395
  if (val || val === 0) {
398
- const res = val.toString().replace(Reg, `<span>$&</span>`)
399
- return res
396
+ const res = val.toString().replace(Reg, `<span>$&</span>`);
397
+ return res;
400
398
  }
401
399
  },
402
400
  /* 查询节点名 */
@@ -418,13 +416,13 @@ export default {
418
416
  if (!value) return true;
419
417
  let nowVal = data[this.defaultProps.label].toUpperCase();
420
418
  return nowVal.indexOf(value.toUpperCase()) !== -1;
421
- // return node.label.indexOf(value) !== -1;
419
+ // return node.label.indexOf(value) !== -1;
422
420
  },
423
- resetData(){
421
+ resetData() {
424
422
  selectedIds = [];
425
- }
426
- }
427
- }
423
+ },
424
+ },
425
+ };
428
426
  </script>
429
427
  <style lang="scss" scoped>
430
428
  ::v-deep .el-card__body {
@@ -450,7 +448,7 @@ export default {
450
448
  min-width: 100%;
451
449
  }
452
450
 
453
- ::v-deep .el-tree-node:focus>.el-tree-node__content {
451
+ ::v-deep .el-tree-node:focus > .el-tree-node__content {
454
452
  background: rgba(255, 255, 255, 0.7);
455
453
  display: inline-block;
456
454
  min-width: 100%;
@@ -460,7 +458,7 @@ export default {
460
458
  font-size: 16px;
461
459
  }
462
460
 
463
- ::v-deep .el-tree-node>.el-tree-node__children {
461
+ ::v-deep .el-tree-node > .el-tree-node__children {
464
462
  overflow: unset;
465
463
  }
466
464
 
@@ -468,22 +466,19 @@ export default {
468
466
  display: none;
469
467
  }
470
468
 
471
- ::v-deep .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
469
+ ::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
472
470
  background: rgba(255, 255, 255, 0.7);
473
471
  display: inline-block;
474
472
  min-width: 100%;
475
473
  }
476
474
 
477
- ::v-deep
478
- .el-tree--highlight-current
479
- .el-tree-node.is-current
480
- > .el-tree-node__content,
481
- .is-checked .el-tree-node__content {
482
- color: #148ff3;
483
- font-weight: bold;
484
- display: inline-block;
485
- min-width: 100%;
486
- }
475
+ ::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content,
476
+ .is-checked .el-tree-node__content {
477
+ color: #148ff3;
478
+ font-weight: bold;
479
+ display: inline-block;
480
+ min-width: 100%;
481
+ }
487
482
 
488
483
  ::v-deep .el-button--text {
489
484
  font-size: 14px;
@@ -496,7 +491,7 @@ export default {
496
491
  display: inline-block;
497
492
  min-width: 100%;
498
493
  }
499
- ::v-deep .scrollbar{
494
+ ::v-deep .scrollbar {
500
495
  height: calc(100% - 25px);
501
496
  }
502
497
  </style>