fl-web-component 0.1.1 → 1.0.0
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.
- package/dist/fl-web-component.common.js +14751 -54489
- package/dist/fl-web-component.common.js.map +1 -1
- package/dist/fl-web-component.css +1 -1
- package/dist/fl-web-component.umd.js +14751 -54489
- package/dist/fl-web-component.umd.js.map +1 -1
- package/dist/fl-web-component.umd.min.js +3 -3
- package/dist/fl-web-component.umd.min.js.map +1 -1
- package/package.json +26 -5
- package/packages/components/button/index.vue +18 -17
- package/packages/components/com-card/card-page.vue +51 -49
- package/packages/components/com-card/index.vue +20 -21
- package/packages/components/com-dialogWrapper/index.vue +18 -21
- package/packages/components/com-flcanvas/components/bspline.js +91 -0
- package/packages/components/com-flcanvas/components/entityFormatting.js +503 -0
- package/packages/components/com-flcanvas/components/round10.js +24 -0
- package/packages/components/com-flcanvas/index.vue +259 -0
- package/packages/components/com-formDialog/index.vue +76 -75
- package/packages/components/com-graphics/index.vue +1059 -226
- package/packages/components/com-graphics/per-control.vue +109 -0
- package/packages/components/com-graphics/pid.vue +168 -0
- package/packages/components/com-page/index.vue +33 -33
- package/packages/components/com-selectTree/index.vue +61 -63
- package/packages/components/com-table/column-default.vue +9 -14
- package/packages/components/com-table/column-dynamic.vue +4 -8
- package/packages/components/com-table/column-menu.vue +8 -8
- package/packages/components/com-table/column-slot.vue +4 -4
- package/packages/components/com-table/column.vue +7 -15
- package/packages/components/com-table/config.js +9 -9
- package/packages/components/com-table/index.vue +35 -35
- package/packages/components/com-table/table-page.vue +17 -17
- package/packages/components/com-tabs/index.vue +19 -19
- package/packages/components/com-treeDynamic/index.vue +45 -45
- package/packages/components/model/api/index.js +59 -67
- package/packages/components/model/api/mock/detecttree.js +38 -38
- package/packages/components/model/api/mock/getmodel-line.js +15830 -79332
- package/packages/components/model/api/mock/init.js +1 -1
- package/packages/components/model/api/mock/pbstree.js +486 -495
- package/packages/components/model/components/TextOverTooltip/index.vue +3 -3
- package/packages/components/model/components/annotation-toolbar.vue +4 -19
- package/packages/components/model/components/check-proofing-model.vue +26 -29
- package/packages/components/model/components/clipping-type.vue +22 -14
- package/packages/components/model/components/com-dialogWrapper/index.vue +22 -25
- package/packages/components/model/components/detect-panel.vue +38 -26
- package/packages/components/model/components/detect-tree.vue +9 -24
- package/packages/components/model/components/firstPer-panel.vue +23 -25
- package/packages/components/model/components/header-button.vue +31 -107
- package/packages/components/model/components/imageViewer/index.vue +34 -35
- package/packages/components/model/components/import-model.vue +127 -127
- package/packages/components/model/components/location-panel.vue +25 -29
- package/packages/components/model/components/measure-type.vue +15 -15
- package/packages/components/model/components/pbs-tree.vue +139 -144
- package/packages/components/model/components/proof-config.vue +2 -10
- package/packages/components/model/components/proof-for-pc.vue +35 -32
- package/packages/components/model/components/proof-history.vue +136 -154
- package/packages/components/model/components/proof-panel-detail.vue +166 -165
- package/packages/components/model/components/proof-panel.vue +281 -205
- package/packages/components/model/components/proof-project-user.vue +13 -50
- package/packages/components/model/components/proof-publish.vue +130 -130
- package/packages/components/model/components/proof-role.vue +93 -124
- package/packages/components/model/components/props-panel.vue +63 -54
- package/packages/components/model/index.vue +3225 -3213
- package/packages/components/model/utils/annotation-tool.js +75 -82
- package/packages/components/model/utils/cursor.js +15 -10
- package/packages/components/model/utils/detect-v1.js +23 -35
- package/packages/components/model/utils/index.js +25 -25
- package/packages/components/model/utils/threejs/measure-angle.js +180 -180
- package/packages/components/model/utils/threejs/measure-area.js +196 -184
- package/packages/components/model/utils/threejs/measure-distance.js +154 -152
- package/packages/components/model/utils/threejs/measure-volume.js +64 -61
- package/src/assets/test.png +0 -0
- package/src/assets/worker.glb +0 -0
- package/src/main.js +11 -8
- package/src/utils/flgltf-parser.js +141 -0
- package/src/utils/instance-parser.js +402 -0
- package/src/utils/mock.js +84746 -0
- package/src/utils/threejs/measure-angle.js +240 -0
- package/src/utils/threejs/measure-area.js +249 -0
- 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"
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
|
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
|
-
|
|
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({
|
|
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) &&
|
|
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
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
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>
|