fl-web-component 1.2.12 → 1.2.14

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 (52) hide show
  1. package/README.md +4 -0
  2. package/dist/fl-web-component.common.1.js.map +1 -1
  3. package/dist/fl-web-component.common.2.js.map +1 -1
  4. package/dist/fl-web-component.common.3.js.map +1 -1
  5. package/dist/fl-web-component.common.js +140 -86
  6. package/dist/fl-web-component.common.js.map +1 -1
  7. package/dist/fl-web-component.css +1 -1
  8. package/package.json +1 -1
  9. package/packages/components/com-graphics/index.vue +42 -6
  10. package/src/utils/flgltf-parser.js +68 -50
  11. package/src/utils/instance-parser.js +39 -30
  12. package/packages/components/button/index.vue +0 -26
  13. package/packages/components/model/api/index.js +0 -421
  14. package/packages/components/model/api/mock/detecttree.js +0 -58
  15. package/packages/components/model/api/mock/getmodel-line.js +0 -15834
  16. package/packages/components/model/api/mock/init.js +0 -1
  17. package/packages/components/model/api/mock/pbstree.js +0 -826
  18. package/packages/components/model/api/mock/topology.json +0 -3238
  19. package/packages/components/model/components/TextOverTooltip/index.vue +0 -84
  20. package/packages/components/model/components/annotation-toolbar.vue +0 -410
  21. package/packages/components/model/components/check-proofing-model.vue +0 -39
  22. package/packages/components/model/components/clipping-type.vue +0 -59
  23. package/packages/components/model/components/com-dialogWrapper/Readme.md +0 -53
  24. package/packages/components/model/components/com-dialogWrapper/index.vue +0 -114
  25. package/packages/components/model/components/detect-panel.vue +0 -339
  26. package/packages/components/model/components/detect-tree.vue +0 -445
  27. package/packages/components/model/components/firstPer-panel.vue +0 -109
  28. package/packages/components/model/components/header-button.vue +0 -470
  29. package/packages/components/model/components/imageViewer/index.vue +0 -126
  30. package/packages/components/model/components/import-model.vue +0 -127
  31. package/packages/components/model/components/location-panel.vue +0 -91
  32. package/packages/components/model/components/measure-type.vue +0 -59
  33. package/packages/components/model/components/pbs-tree.vue +0 -497
  34. package/packages/components/model/components/proof-config.vue +0 -72
  35. package/packages/components/model/components/proof-for-pc.vue +0 -126
  36. package/packages/components/model/components/proof-history.vue +0 -300
  37. package/packages/components/model/components/proof-panel-detail.vue +0 -568
  38. package/packages/components/model/components/proof-panel.vue +0 -846
  39. package/packages/components/model/components/proof-project-user.vue +0 -445
  40. package/packages/components/model/components/proof-publish.vue +0 -130
  41. package/packages/components/model/components/proof-role.vue +0 -504
  42. package/packages/components/model/components/props-panel.vue +0 -258
  43. package/packages/components/model/index.vue +0 -3425
  44. package/packages/components/model/readme.md +0 -31
  45. package/packages/components/model/utils/annotation-tool.js +0 -333
  46. package/packages/components/model/utils/cursor.js +0 -23
  47. package/packages/components/model/utils/detect-v1.js +0 -329
  48. package/packages/components/model/utils/index.js +0 -48
  49. package/packages/components/model/utils/threejs/measure-angle.js +0 -258
  50. package/packages/components/model/utils/threejs/measure-area.js +0 -281
  51. package/packages/components/model/utils/threejs/measure-distance.js +0 -209
  52. package/packages/components/model/utils/threejs/measure-volume.js +0 -97
@@ -1,445 +0,0 @@
1
- <template>
2
- <div class="tree-box-item-card">
3
- <!-- <el-input
4
- placeholder="请输入位号"
5
- v-model="filterVal"
6
- clearable
7
- maxlength="30"
8
- class="input-with-pbs"
9
- @clear="getTree"
10
- @keyup.enter.native="queryPbs"
11
- >
12
- <i class="el-icon-search el-input__icon search-icon" slot="suffix" @click="queryPbs"> </i>
13
- </el-input> -->
14
-
15
- <!-- :render-content="renderContent" -->
16
- <el-scrollbar>
17
- <!-- @node-click="handleNodeClick" -->
18
- <!-- @check="handleCheckChange" -->
19
-
20
- <el-tree
21
- ref="tree"
22
- :data="formatTreeData"
23
- node-key="id"
24
- :expand-on-click-node="false"
25
- :current-node-key="currentKey"
26
- :props="defaultProps"
27
- :highlight-current="true"
28
- :default-expanded-keys="expanded"
29
- empty-text="暂无数据"
30
- >
31
- <span class="custom-tree-node" slot-scope="{ node, data }">
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"
34
- >碰撞点位:{{ node.label }}</span
35
- >
36
- <span class="node-parent" v-else :title="node.label">本体:{{ node.label }}</span>
37
-
38
- <span v-if="data.id != -1">
39
- <el-button
40
- title="定位"
41
- icon="el-icon-location-outline"
42
- type="text"
43
- @click="() => handleNodeClick(node, data, 'locate')"
44
- >
45
- </el-button>
46
- <el-button
47
- title="高亮"
48
- style="margin: 0 5px"
49
- icon="el-icon-s-opportunity"
50
- type="text"
51
- @click="() => handleNodeClick(node, data, 'highlight')"
52
- >
53
- </el-button>
54
- </span>
55
- </span>
56
- </el-tree>
57
- </el-scrollbar>
58
- </div>
59
- </template>
60
- <script>
61
- import { proofInit, getPbsTree } from '../api/index';
62
- import { loading, loadingClose } from '../utils/index';
63
-
64
- var projectId = null;
65
- var timeout = null; //防抖时间戳
66
- var checkedArr = [];
67
- const proofInfo = {
68
- // projectId: 566,
69
- // stageId: 2,
70
- projectId: 451,
71
- stageId: 1,
72
- };
73
- let selectedIds = [];
74
-
75
- export default {
76
- name: 'DetectTree',
77
- props: {
78
- folderId: {
79
- type: String,
80
- default() {
81
- return '';
82
- },
83
- },
84
- projectId: {
85
- type: String,
86
- default() {
87
- return '';
88
- },
89
- },
90
- version: {
91
- type: String,
92
- default: '',
93
- },
94
- flag: {
95
- type: Boolean,
96
- default() {
97
- return false;
98
- },
99
- },
100
- pbsVersion: {
101
- type: Object,
102
- default() {
103
- return {};
104
- },
105
- },
106
- treeData: {
107
- type: Array,
108
- default() {
109
- return [];
110
- },
111
- },
112
- },
113
- data() {
114
- return {
115
- defaultProps: {
116
- label: 'category',
117
- children: 'detect',
118
- // isLeaf: (data) => {
119
- // return !data.leaf
120
- // },
121
- // disabled: (data) => {
122
- // return data.type !== 0;
123
- // }
124
- },
125
- currentKey: null,
126
- expanded: [],
127
- checkedArr: [],
128
- node: '',
129
- filterVal: '',
130
- };
131
- },
132
- computed: {
133
- formatTreeData() {
134
- // let nodeCount = 0;
135
- // this.treeData.forEach((item) => {
136
- // nodeCount += item.detect.length;
137
- // });
138
-
139
- const root = [
140
- {
141
- category: `碰撞检查树(总数:${this.treeData.length})`,
142
- detect: this.treeData,
143
- id: -1,
144
- objectid: '',
145
- },
146
- ];
147
- return root;
148
- },
149
- },
150
- watch: {
151
- // folderId(val) {
152
- // if (val) this.getTree()
153
- // },
154
- // projectId(val) {
155
- // if (val) this.getTree()
156
- // },
157
- // flag(val) {
158
- // if (val) this.getTree()
159
- // },
160
- },
161
- created() {
162
- // proofInit(proofInfo).then(res => {
163
- // this.getTree()
164
- // }).catch()
165
- // console.log(this.pbsVersion)
166
- },
167
- methods: {
168
- expandNodes(data) {
169
- data.forEach((item) => {
170
- this.expanded.push(item.nodeId);
171
- if (item.children) {
172
- item.children.forEach((childrenItem) => {
173
- this.expanded.push(childrenItem.nodeId);
174
- this.expandNodes(childrenItem.children);
175
- });
176
- }
177
- });
178
- return this.expanded;
179
- },
180
- formatTree(data) {
181
- if (data.type !== 0) {
182
- data.disabled = true;
183
- } else {
184
- data.disabled = false;
185
- }
186
- if (data.child) {
187
- data.child.forEach((childrenItem) => {
188
- this.formatTree(childrenItem);
189
- });
190
- }
191
- return data;
192
- },
193
- // 获取pbs节点
194
- getPbsTree(params) {
195
- loading('加载中...');
196
-
197
- getPbsTree(params)
198
- .then((res) => {
199
- // res = this.formatTree(res)
200
-
201
- if (res) {
202
- this.$set(this, 'treeData', [res]);
203
- // this.$set(this, 'currentKey', [res])
204
- // this.$nextTick(() => {
205
- // this.scrollTo('2.441.2-MODELELEM-o.157.f.66dd4337-157')
206
- // this.$refs.tree.setChecked(, true, true)
207
- // this.handleCheckChange(this.$refs.tree.getNode(res.objectId).data)
208
-
209
- // })
210
- }
211
- })
212
- .catch(() => {
213
- console.log('error');
214
- this.treeData.splice(0);
215
- })
216
- .finally(() => {
217
- loadingClose();
218
- });
219
- },
220
- handleNodeClick(node, data, type) {
221
- this.node = data;
222
- type === 'locate' && this.$emit('locate', node, data);
223
- type === 'highlight' && this.$emit('highlight', node, data);
224
-
225
- // if (data.nodeType === 'Pbs') {
226
- // 这个有待考究 需不需要传版本数据 data里面没有版本数据的字段
227
- // this.getModelIdsByNodeIds(projectId, data, 'PbsClick')
228
- // }
229
- },
230
- setChecked(entityId) {
231
- modelApi
232
- .PbsInfo(entityId, projectId)
233
- .then((res) => {})
234
- .catch((err) => {
235
- this.$set(this, 'currentKey', '');
236
- this.$refs.tree.setCurrentKey(null);
237
- // this.$message({ type: 'error', message: err.msg })
238
- });
239
- },
240
- // 选中节点
241
- scrollTo(nodeId) {
242
- this.$refs.tree.setCurrentKey(nodeId);
243
- if (nodeId) {
244
- this.expanded.push(nodeId);
245
- this.$set(this, 'currentKey', nodeId);
246
- this.$nextTick(() => {
247
- const ele = document.querySelector('.is-current');
248
- setTimeout(() => {
249
- if (ele) {
250
- ele.scrollIntoView({
251
- block: 'center',
252
- behavior: 'smooth',
253
- });
254
- }
255
- }, 400);
256
- });
257
- } else {
258
- this.$message({
259
- type: 'warning',
260
- message: '未关联Pbs节点',
261
- });
262
- }
263
- },
264
- //获取复选框选中得到的数据
265
- handleCheckChange(data, node) {
266
- // type 为0的是组节点 加载模型 10是模型 (定位) 14是专业
267
- console.log(data, node);
268
- const tree = this.$refs.tree;
269
- console.log(tree.getNode(data));
270
- const currentNode = tree.getNode(data);
271
- const nodeData = currentNode.data;
272
- if (currentNode.checked) {
273
- this.selectAllChildren([nodeData]);
274
- } else {
275
- this.invertChildrenSelection([nodeData]);
276
- }
277
- // selectedIds = ['100']
278
- console.log(selectedIds);
279
- tree.setCheckedKeys(selectedIds);
280
-
281
- if (data.type === 0) {
282
- this.getModelIdsByNodeIds(projectId, selectedIds, 'checkChange');
283
- }
284
- // clearTimeout(timeout)
285
- // // 过滤一下数据
286
- // const checkedKeys = tree.getCheckedKeys();
287
- // console.log(checkedKeys)
288
- // // this.filterCheckArr(data)
289
- // timeout = setTimeout(() => {
290
- // this.getModelIdsByNodeIds(projectId, checkedKeys, 'checkChange')
291
- // checkedKeys.splice(0)
292
- // }, 500)
293
- },
294
- filterCheckArr(data) {
295
- if (data.children.length === 0) {
296
- checkedArr.push({
297
- folderId: data.nodeFolderId,
298
- nodeId: data.nodeId,
299
- version: this.pbsVersion[data.nodeFolderId],
300
- });
301
- } else {
302
- for (let index = 0; index < data.children.length; index++) {
303
- this.filterCheckArr(data.children[index]);
304
- }
305
- }
306
- },
307
- // 获取当前选中的节点中所对应的模型信息集合
308
- getModelIdsByNodeIds(projectId, nodes, type) {
309
- // this.$emit('checkChange', nodes)
310
- type === 'checkChange' && this.$emit('checkChange', nodes);
311
- type === 'PbsClick' && this.$emit('pbsNodeClick', nodes);
312
-
313
- // PbsApi.getModelIdsByNodeIds(projectId, parmas).then(res => {
314
- // // type === 'checkChange' && this.$emit('checkChange', this.formatterMsg(res))
315
- // // type === 'PbsClick' && this.$emit('PbsNodeClick', res, this.node)
316
- // this.$emit('PbsNodeClick', res, this.node)
317
- // }).catch((err) => {
318
- // this.$message({
319
- // type: 'warning',
320
- // message: err.msg
321
- // })
322
- // })
323
- },
324
- // 整合数据
325
- formatterMsg(data) {
326
- //整合数据以对象形式传递,{key:[]},key为titleName,[]是batchId去重后组成的数组
327
- const batchIdObj = {};
328
- for (let i = 0; i < data.length; i++) {
329
- if (data[i].batchIds) {
330
- let batchIds = JSON.parse(data[i].batchIds);
331
- for (let index = 0; index < batchIds.length; index++) {
332
- const element = batchIds[index];
333
- let modelPiece = element.titleName;
334
- if (Object.keys(batchIdObj).includes(modelPiece)) {
335
- !batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId) &&
336
- batchIdObj[modelPiece].batchIds.push(element.batchId);
337
- } else {
338
- batchIdObj[modelPiece] = {
339
- folderId: '',
340
- batchIds: [],
341
- };
342
- if (!batchIdObj[modelPiece].batchIds.find((item) => item === element.batchId)) {
343
- batchIdObj[modelPiece].batchIds.push(element.batchId);
344
- batchIdObj[modelPiece].folderId = data[i].groupId;
345
- }
346
- }
347
- }
348
- }
349
- }
350
- return batchIdObj;
351
- },
352
- // 判断节点是否拥有子节点
353
- hasChildren(data) {
354
- return data.hasOwnProperty('child') && data.child.length > 0;
355
- },
356
- // 选中当前节点的所有子节点
357
- selectAllChildren(items) {
358
- const childIds = this.collectChildIdsRecursive(items);
359
- selectedIds = [...new Set([...selectedIds, ...childIds])];
360
- },
361
- // 取消选中当前节点的所有子节点
362
- invertChildrenSelection(items) {
363
- const childIds = this.collectChildIdsRecursive(items);
364
- selectedIds = selectedIds.filter((id) => !childIds.includes(id));
365
- },
366
- // 递归收集节点及其子节点的ID
367
- collectChildIdsRecursive(items, result = []) {
368
- items.forEach((item) => {
369
- item.type === 0 && result.push(item.objectId);
370
- if (this.hasChildren(item)) this.collectChildIdsRecursive(item.child, result);
371
- });
372
- return result;
373
- },
374
- },
375
- };
376
- </script>
377
- <style lang="scss" scoped>
378
- ::v-deep .el-card__body {
379
- height: 100%;
380
- padding: 0;
381
- }
382
-
383
- ::v-deep .el-tree {
384
- margin-top: 10px;
385
- height: 100%;
386
- // color: #fff;
387
- background: none;
388
- }
389
-
390
- ::v-deep .el-tree__empty-text {
391
- // color: #fff;
392
- font-size: 12px;
393
- }
394
-
395
- ::v-deep .el-tree-node__content:hover {
396
- background: rgba(255, 255, 255, 0.3);
397
- }
398
-
399
- ::v-deep .el-tree-node:focus > .el-tree-node__content {
400
- background: rgba(255, 255, 255, 0.3);
401
- }
402
-
403
- .title {
404
- font-size: 16px;
405
- }
406
-
407
- ::v-deep .el-tree-node > .el-tree-node__children {
408
- overflow: unset;
409
- }
410
-
411
- ::v-deep .el-tree .is-disabled {
412
- display: none;
413
- }
414
-
415
- ::v-deep .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
416
- background: rgba(255, 255, 255, 0.3);
417
- }
418
-
419
- .custom-tree-node {
420
- flex: 1;
421
- display: flex;
422
- align-items: center;
423
- justify-content: space-between;
424
- font-size: 14px;
425
- padding-right: 8px;
426
- }
427
-
428
- .node-parent {
429
- width: 173px;
430
- white-space: nowrap;
431
- text-overflow: ellipsis;
432
- overflow: hidden;
433
- }
434
-
435
- .node-child {
436
- width: 155px;
437
- white-space: nowrap;
438
- text-overflow: ellipsis;
439
- overflow: hidden;
440
- }
441
-
442
- ::v-deep .el-scrollbar {
443
- height: 739px;
444
- }
445
- </style>
@@ -1,109 +0,0 @@
1
- <template>
2
- <div>
3
- <div class="key">
4
- <span>漫游</span>
5
- <div class="center">
6
- <div class="top"><span>W</span></div>
7
- <div class="cen">
8
- <span>A</span>
9
- <span>S</span>
10
- <span>D</span>
11
- </div>
12
- <span class="text">W向前移动、S向后移动、A向左移动、D向右移动</span>
13
- </div>
14
- </div>
15
- <div class="line"></div>
16
- <div class="mouse">
17
- <span>环视</span>
18
- <div class="center">
19
- <i class="iconfont icon-shubiao"></i>
20
- <span class="text">鼠标控制方向</span>
21
- </div>
22
- </div>
23
- <div class="line"></div>
24
- <div class="quit">
25
- <span>退出</span>
26
- <div class="center">
27
- <div class="cen"><span>Esc</span></div>
28
- <span class="text">使用Esc键退出漫游</span>
29
- </div>
30
- </div>
31
- <div class="button">
32
- <el-button @click="start(false)">好的,知道了</el-button>
33
- <el-button @click="start(true)" type="primary">不再提示</el-button>
34
- </div>
35
- </div>
36
- </template>
37
- <script>
38
- export default {
39
- name: 'FirstPerPanel',
40
- data() {
41
- return {};
42
- },
43
- created() {},
44
- methods: {
45
- start(val) {
46
- this.$emit('start', val);
47
- },
48
- },
49
- };
50
- </script>
51
- <style lang="scss" scoped>
52
- span {
53
- font-weight: bolder;
54
- }
55
- .text {
56
- margin-top: 20px;
57
- }
58
- .line {
59
- border-bottom: 1px solid #dcdfe6;
60
- margin: 20px 0;
61
- }
62
- .center {
63
- display: flex;
64
- flex-direction: column;
65
- align-items: center;
66
- .top,
67
- .cen {
68
- span {
69
- color: #53a8ff;
70
- display: inline-block;
71
- width: 40px;
72
- height: 40px;
73
- text-align: center;
74
- line-height: 30px;
75
- border: 1px solid #53a8ff;
76
- padding: 5px;
77
- margin-bottom: 10px;
78
- background-color: #e9f3ff;
79
- }
80
- }
81
- .cen {
82
- span {
83
- margin: 10px;
84
- }
85
- }
86
- }
87
- .button {
88
- display: flex;
89
- justify-content: end;
90
- margin-top: 20px;
91
- }
92
- @font-face {
93
- font-family: 'iconfont'; /* Project id 3226805 */
94
- src: url('//at.alicdn.com/t/font_3226805_qqvo3ag3r8.woff2?t=1646635700216') format('woff2'),
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');
97
- }
98
- .iconfont {
99
- font-family: 'iconfont' !important;
100
- font-size: 50px;
101
- font-style: normal;
102
- color: #53a8ff;
103
- -webkit-font-smoothing: antialiased;
104
- -moz-osx-font-smoothing: grayscale;
105
- }
106
- .icon-shubiao:before {
107
- content: '\e8a7';
108
- }
109
- </style>