fl-web-component 0.1.0 → 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.
Files changed (85) hide show
  1. package/README.md +35 -24
  2. package/dist/fl-web-component.common.js +27308 -65
  3. package/dist/fl-web-component.common.js.map +1 -1
  4. package/dist/fl-web-component.css +1 -1
  5. package/dist/fl-web-component.umd.js +27308 -65
  6. package/dist/fl-web-component.umd.js.map +1 -1
  7. package/dist/fl-web-component.umd.min.js +13 -1
  8. package/dist/fl-web-component.umd.min.js.map +1 -1
  9. package/package.json +80 -47
  10. package/packages/components/button/index.vue +16 -12
  11. package/packages/components/com-card/card-page.vue +102 -0
  12. package/packages/components/com-card/index.vue +53 -0
  13. package/packages/components/com-dialogWrapper/Readme.md +53 -0
  14. package/packages/components/com-dialogWrapper/index.vue +98 -0
  15. package/packages/components/com-flcanvas/components/bspline.js +91 -0
  16. package/packages/components/com-flcanvas/components/entityFormatting.js +503 -0
  17. package/packages/components/com-flcanvas/components/round10.js +24 -0
  18. package/packages/components/com-flcanvas/index.vue +259 -0
  19. package/packages/components/com-formDialog/Readme.md +409 -0
  20. package/packages/components/com-formDialog/index.vue +471 -0
  21. package/packages/components/com-graphics/index.vue +1073 -0
  22. package/packages/components/com-graphics/per-control.vue +109 -0
  23. package/packages/components/com-graphics/pid.vue +168 -0
  24. package/packages/components/com-page/index.vue +101 -0
  25. package/packages/components/com-selectTree/Readme.md +17 -0
  26. package/packages/components/com-selectTree/index.vue +236 -0
  27. package/packages/components/com-table/column-default.vue +71 -0
  28. package/packages/components/com-table/column-dynamic.vue +36 -0
  29. package/packages/components/com-table/column-menu.vue +71 -0
  30. package/packages/components/com-table/column-slot.vue +53 -0
  31. package/packages/components/com-table/column.vue +41 -0
  32. package/packages/components/com-table/config.js +21 -0
  33. package/packages/components/com-table/index.vue +281 -0
  34. package/packages/components/com-table/table-page.vue +106 -0
  35. package/packages/components/com-tabs/index.vue +50 -0
  36. package/packages/components/com-treeDynamic/Readme.md +271 -0
  37. package/packages/components/com-treeDynamic/index.vue +207 -0
  38. package/packages/components/model/api/index.js +59 -67
  39. package/packages/components/model/api/mock/detecttree.js +38 -38
  40. package/packages/components/model/api/mock/getmodel-line.js +15830 -79332
  41. package/packages/components/model/api/mock/init.js +1 -1
  42. package/packages/components/model/api/mock/pbstree.js +486 -495
  43. package/packages/components/model/components/TextOverTooltip/index.vue +3 -3
  44. package/packages/components/model/components/annotation-toolbar.vue +4 -19
  45. package/packages/components/model/components/check-proofing-model.vue +26 -29
  46. package/packages/components/model/components/clipping-type.vue +22 -14
  47. package/packages/components/model/components/com-dialogWrapper/index.vue +22 -25
  48. package/packages/components/model/components/detect-panel.vue +38 -26
  49. package/packages/components/model/components/detect-tree.vue +9 -24
  50. package/packages/components/model/components/firstPer-panel.vue +23 -25
  51. package/packages/components/model/components/header-button.vue +31 -107
  52. package/packages/components/model/components/imageViewer/index.vue +34 -35
  53. package/packages/components/model/components/import-model.vue +127 -127
  54. package/packages/components/model/components/location-panel.vue +25 -29
  55. package/packages/components/model/components/measure-type.vue +15 -15
  56. package/packages/components/model/components/pbs-tree.vue +139 -144
  57. package/packages/components/model/components/proof-config.vue +2 -10
  58. package/packages/components/model/components/proof-for-pc.vue +35 -32
  59. package/packages/components/model/components/proof-history.vue +136 -154
  60. package/packages/components/model/components/proof-panel-detail.vue +166 -165
  61. package/packages/components/model/components/proof-panel.vue +281 -205
  62. package/packages/components/model/components/proof-project-user.vue +13 -50
  63. package/packages/components/model/components/proof-publish.vue +130 -130
  64. package/packages/components/model/components/proof-role.vue +93 -124
  65. package/packages/components/model/components/props-panel.vue +63 -54
  66. package/packages/components/model/index.vue +3225 -3213
  67. package/packages/components/model/utils/annotation-tool.js +75 -82
  68. package/packages/components/model/utils/cursor.js +15 -10
  69. package/packages/components/model/utils/detect-v1.js +23 -35
  70. package/packages/components/model/utils/index.js +25 -25
  71. package/packages/components/model/utils/threejs/measure-angle.js +180 -180
  72. package/packages/components/model/utils/threejs/measure-area.js +196 -184
  73. package/packages/components/model/utils/threejs/measure-distance.js +154 -152
  74. package/packages/components/model/utils/threejs/measure-volume.js +64 -61
  75. package/patches/camera-controls+2.9.0.patch +63 -0
  76. package/src/assets/test.png +0 -0
  77. package/src/assets/worker.glb +0 -0
  78. package/src/main.js +27 -0
  79. package/src/utils/flgltf-parser.js +141 -0
  80. package/src/utils/instance-parser.js +402 -0
  81. package/src/utils/mock.js +84746 -0
  82. package/src/utils/threejs/measure-angle.js +240 -0
  83. package/src/utils/threejs/measure-area.js +249 -0
  84. package/src/utils/threejs/measure-distance.js +195 -0
  85. package/packages/index.js +0 -24
@@ -0,0 +1,271 @@
1
+ <!-- 使用方法 样例 -->
2
+ <template>
3
+ <div class="trigger_tree">
4
+ <TreeDynamic
5
+ :tree-data="treeData"
6
+ :tree-props="treeProps"
7
+ @treeNodeClick="treeNodeClick"
8
+ >
9
+ <template slot-scope="{ data }">
10
+ <span v-show="data.show" title="添加子级" class="el-icon-plus" />
11
+ <span v-show="data.show" title="编辑" class="el-icon-edit" />
12
+ <span v-show="data.show" title="删除" class="el-icon-close" />
13
+ </template>
14
+ </TreeDynamic>
15
+ </dev>
16
+ </template>
17
+
18
+ <script>
19
+ export default {
20
+ name: 'TriggerDialog',
21
+ components: {
22
+ // 树结构引入,如注册全局组件则克直接使用
23
+ TreeDynamic: () => import('./TreeDynamic.vue')
24
+ },
25
+ props: {},
26
+ data() {
27
+ return {
28
+ // 树结构数据
29
+ treeData: [
30
+ {
31
+ 'id': '1745253848118845442',
32
+ 'name': '对象分类',
33
+ 'value': 'objectClass',
34
+ 'businessCode': 'objectClass',
35
+ 'level': 1,
36
+ 'children': [
37
+ {
38
+ 'id': '12618484347122',
39
+ 'name': '设备',
40
+ 'value': 'shebei',
41
+ 'level': 2,
42
+ 'children': [
43
+ {
44
+ 'id': '12618485050290',
45
+ 'name': '容器类',
46
+ 'value': 'rongqilei',
47
+ 'level': 3,
48
+ 'children': [
49
+ {
50
+ 'id': '12618485152250',
51
+ 'name': '分离器',
52
+ 'value': 'fenliqi',
53
+ 'level': 5
54
+ },
55
+ {
56
+ 'id': '12618484578645',
57
+ 'name': '过滤器',
58
+ 'value': 'guolu:qi',
59
+ 'level': 4
60
+ },
61
+ {
62
+ 'id': '12618485917543',
63
+ 'name': '容器',
64
+ 'value': 'rongqi',
65
+ 'level': 4
66
+ },
67
+ {
68
+ 'id': '1754016181494267905',
69
+ 'name': '篮式过滤器',
70
+ 'value': 'lanshiguolu:qi',
71
+ 'level': 4
72
+ }
73
+ ]
74
+ }
75
+ ]
76
+ }
77
+ ]
78
+ }, {
79
+ 'id': '12618484760325',
80
+ 'name': '电气',
81
+ 'value': 'dianqi',
82
+ 'level': 2,
83
+ 'children': [
84
+ {
85
+ 'id': '12618485975945',
86
+ 'name': '变压器类',
87
+ 'value': 'bianyaqilei',
88
+ 'level': 3,
89
+ 'children': [
90
+ {
91
+ 'id': '12618485384756',
92
+ 'name': '变压器',
93
+ 'value': 'bianyaqi',
94
+ 'level': 4
95
+ },
96
+ {
97
+ 'id': '12618485707383',
98
+ 'name': '箱式变电站',
99
+ 'value': 'xiangshibiandianzhan',
100
+ 'level': 4
101
+ },
102
+ {
103
+ 'id': '12618485371135',
104
+ 'name': '光伏电站',
105
+ 'value': 'guangfudianzhan',
106
+ 'level': 4
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ 'id': '12618485814127',
112
+ 'name': '发电机',
113
+ 'value': 'fadianji',
114
+ 'level': 3,
115
+ 'children': [
116
+ {
117
+ 'id': '12618485358015',
118
+ 'name': '燃气轮发电机',
119
+ 'value': 'ranqilunfadianji',
120
+ 'level': 4
121
+ },
122
+ {
123
+ 'id': '12618483950122',
124
+ 'name': '燃气内燃发电机',
125
+ 'value': 'ranqineiranfadianji',
126
+ 'level': 4
127
+ },
128
+ {
129
+ 'id': '12618485975170',
130
+ 'name': '双燃料发电机',
131
+ 'value': 'shuangranliaofadianji',
132
+ 'level': 4
133
+ },
134
+ {
135
+ 'id': '12618485691024',
136
+ 'name': '应急柴油发电机',
137
+ 'value': 'yingjichaiyoufadianji',
138
+ 'level': 4
139
+ }
140
+ ]
141
+ },
142
+ {
143
+ 'id': '12618485453906',
144
+ 'name': '开关设备和控制设备',
145
+ 'value': 'kaiguanshebeihekongzhishebei',
146
+ 'level': 3,
147
+ 'children': [
148
+ {
149
+ 'id': '12618483905472',
150
+ 'name': '低压成套开关设备',
151
+ 'value': 'diyachengtaokaiguanshebei',
152
+ 'level': 4
153
+ },
154
+ {
155
+ 'id': '12618484387637',
156
+ 'name': '中压成套开关设备树结构长度测试',
157
+ 'value': 'zhongyachengtaokaiguanshebei',
158
+ 'level': 4
159
+ }
160
+ ]
161
+ },
162
+ {
163
+ 'id': '12618484918030',
164
+ 'name': '电源装置',
165
+ 'value': 'dianyuanzhuangzhi',
166
+ 'level': 3,
167
+ 'children': [
168
+ {
169
+ 'id': '12618484390629',
170
+ 'name': 'AC UPS',
171
+ 'value': 'AC UPS',
172
+ 'level': 4
173
+ },
174
+ {
175
+ 'id': '12618484534407',
176
+ 'name': 'DC UPS',
177
+ 'value': 'DC UPS',
178
+ 'level': 4
179
+ }
180
+ ]
181
+ },
182
+ {
183
+ 'id': '12618484767931',
184
+ 'name': '配电箱类',
185
+ 'value': 'peidianxianglei',
186
+ 'level': 3,
187
+ 'children': [
188
+ {
189
+ 'id': '12618485304400',
190
+ 'name': '配电箱',
191
+ 'value': 'peidianxiang',
192
+ 'level': 4
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ 'id': '12618485729502',
198
+ 'name': '变频器类',
199
+ 'value': 'bianpinqilei',
200
+ 'level': 3,
201
+ 'children': [
202
+ {
203
+ 'id': '12618483944869',
204
+ 'name': '变频器',
205
+ 'value': 'bianpinqi',
206
+ 'level': 4
207
+ }
208
+ ]
209
+ },
210
+ {
211
+ 'id': '12618485102937',
212
+ 'name': '软起动器类',
213
+ 'value': 'ruanqidongqilei',
214
+ 'level': 3,
215
+ 'children': [
216
+ {
217
+ 'id': '12618484212277',
218
+ 'name': '软起动器',
219
+ 'value': 'ruanqidongqi',
220
+ 'level': 4
221
+ }
222
+ ]
223
+ },
224
+ {
225
+ 'id': '12618485021977',
226
+ 'name': '电机类',
227
+ 'value': 'dianjilei',
228
+ 'level': 3,
229
+ 'children': [
230
+ {
231
+ 'id': '12618484664538',
232
+ 'name': '电机',
233
+ 'value': 'dianji',
234
+ 'level': 4
235
+ }
236
+ ]
237
+ }
238
+ ]
239
+ }
240
+ ],
241
+ treeProps: {
242
+ children: 'children',
243
+ label: 'name'
244
+ }
245
+ }
246
+ },
247
+ computed: { },
248
+ watch: {},
249
+ created() {},
250
+ mounted() {},
251
+ methods: {
252
+ /* 点击树结构返回数据 */
253
+ treeNodeClick(node) {
254
+ console.log(node)
255
+ }
256
+ }
257
+ }
258
+ </script>
259
+ <style lang="scss" scoped>
260
+ .trigger_tree {
261
+ height: 100%;
262
+ width: 300px;
263
+ background-color: #fff;
264
+ }
265
+ .el-icon-plus, .el-icon-edit, .el-icon-close {
266
+ color: #1890ff;
267
+ text-align: right;
268
+ margin-right: 8px;
269
+ font-size: 14px;
270
+ }
271
+ </style>
@@ -0,0 +1,207 @@
1
+ <!--
2
+ * @Author: fengyang9326@163.com
3
+ * @Date: 2024-05-15 15:22:52
4
+ * @LastEditors: fengyang9326@163.com
5
+ * @LastEditTime: 2024-05-16 10:27:18
6
+ * @FilePath: /web/framework/src/views/system/temporary/tree-dynamic.vue
7
+ * @Description:
8
+ -->
9
+ <template>
10
+ <div class="tree_dynamic">
11
+ <!-- 搜索框 -->
12
+ <el-input
13
+ v-if="hasSearch"
14
+ v-model="filterText"
15
+ class="filter_input"
16
+ clearable
17
+ :size="inputSize"
18
+ :placeholder="filterPlaceholder"
19
+ />
20
+ <!-- 树结构 -->
21
+ <el-tree
22
+ ref="dynamicTree"
23
+ :class="hasSearch ? 'whole_tree' : 'part_tree'"
24
+ :data="treeData"
25
+ :props="treeProps"
26
+ :style="{ height: treeHeight }"
27
+ :expand-on-click-node="expandOnClickNode"
28
+ :node-key="nodeKey"
29
+ :default-expand-all="defaultExpandAll"
30
+ :filter-node-method="filterNode"
31
+ highlight-current
32
+ @node-click="treeNodeClick"
33
+ >
34
+ <span
35
+ slot-scope="{ node, data }"
36
+ class="custom-tree-node"
37
+ @mouseenter="mouseenter(data)"
38
+ @mouseleave="mouseleave(data)"
39
+ >
40
+ <span :title="node.label" class="tree_node_span">
41
+ <template id="">
42
+ <i class="el-icon-folder-opened" style="margin-right: 3px" />
43
+ </template>
44
+ <span :title="node.label" class="title_tree">{{ node.label }}</span>
45
+ </span>
46
+ <span class="tree_operation" style="display: inline-block; width: 80px; text-align: right">
47
+ <slot v-if="treeNodeHandle" class="fr_text" :data="data"> 操作按钮 </slot>
48
+ </span>
49
+ </span>
50
+ </el-tree>
51
+ </div>
52
+ </template>
53
+
54
+ <script>
55
+ export default {
56
+ name: 'TreeDynamic',
57
+ components: {},
58
+ props: {
59
+ /* 是否可搜索 */
60
+ hasSearch: {
61
+ type: Boolean,
62
+ default: true,
63
+ },
64
+ /* 搜索框文字提示 */
65
+ filterPlaceholder: {
66
+ type: String,
67
+ default: '输入关键字进行过滤',
68
+ },
69
+ // 搜索框大小
70
+ inputSize: {
71
+ type: String,
72
+ default: 'small',
73
+ },
74
+ /* 树结构数据 */
75
+ treeData: {
76
+ type: Array,
77
+ default: () => [],
78
+ required: true,
79
+ },
80
+ /* 树结构 props */
81
+ treeProps: {
82
+ type: Object,
83
+ default: () => {},
84
+ required: true,
85
+ },
86
+ /* 是否默认展开所有节点 */
87
+ defaultExpandAll: {
88
+ type: Boolean,
89
+ default: true,
90
+ },
91
+ /* 是否在点击节点的时候展开或者收缩节点 */
92
+ expandOnClickNode: {
93
+ type: Boolean,
94
+ default: false,
95
+ },
96
+ /* 树节点 nodeKey */
97
+ nodeKey: {
98
+ type: String,
99
+ default: 'id',
100
+ },
101
+ /* 树结构节点操作 */
102
+ treeNodeHandle: {
103
+ type: Boolean,
104
+ default: true,
105
+ },
106
+ },
107
+ data() {
108
+ return {
109
+ /* 搜索字段 */
110
+ filterText: '',
111
+ treeHeight: '',
112
+ };
113
+ },
114
+ computed: {},
115
+ watch: {
116
+ filterText(val) {
117
+ this.$refs.dynamicTree.filter(val);
118
+ },
119
+ deep: true,
120
+ },
121
+ created() {},
122
+ mounted() {
123
+ /* 获取搜索框样式,动态赋值树高度 */
124
+ if (this.hasSearch) {
125
+ const that = this;
126
+ this.$nextTick(() => {
127
+ const inputDom = document.getElementsByClassName('filter_input')[0];
128
+ if (inputDom) {
129
+ const inputDomHeight = inputDom.scrollHeight + 8;
130
+ if (inputDomHeight) {
131
+ const treeCalcHeight = `calc(100% - ${inputDomHeight}px)`;
132
+ that.$set(that, 'treeHeight', treeCalcHeight);
133
+ }
134
+ }
135
+ });
136
+ } else {
137
+ this.$set(this, 'treeHeight', '100%');
138
+ }
139
+ },
140
+ methods: {
141
+ /* 搜索 */
142
+ filterNode(value, data) {
143
+ if (!value) return true;
144
+ const label = this.treeProps.label;
145
+ return data[label].indexOf(value) !== -1;
146
+ },
147
+ /* 树结构 点击节点 */
148
+ treeNodeClick(node) {
149
+ this.$emit('treeNodeClick', node);
150
+ },
151
+ /** 树节点鼠标移入移出 */
152
+ mouseenter(data) {
153
+ this.$set(data, 'show', true);
154
+ },
155
+ mouseleave(data) {
156
+ this.$set(data, 'show', false);
157
+ },
158
+ },
159
+ };
160
+ </script>
161
+ <style lang="scss" scoped>
162
+ .tree_dynamic {
163
+ height: 100%;
164
+ width: 100%;
165
+ box-sizing: border-box;
166
+ padding-right: 1px;
167
+ overflow: hidden;
168
+ }
169
+ /* 搜索框样式 */
170
+ .filter_input {
171
+ margin-bottom: 8px;
172
+ }
173
+ /* 树结构样式 */
174
+ .el-tree {
175
+ width: 100%;
176
+ overflow-y: auto;
177
+ .custom-tree-node {
178
+ display: flex;
179
+ align-items: center;
180
+ width: calc(100% - 24px) !important;
181
+ font-size: 14px;
182
+ }
183
+ .custom-tree-node .tree_node_span {
184
+ display: flex;
185
+ align-items: center;
186
+ font-size: 14px;
187
+ width: calc(100% - 80px) !important;
188
+ i {
189
+ display: inline-block;
190
+ }
191
+ .title_tree {
192
+ display: inline-block;
193
+ width: calc(100% - 18px) !important;
194
+ overflow: hidden;
195
+ white-space: nowrap;
196
+ text-overflow: ellipsis;
197
+ height: 100%;
198
+ }
199
+ }
200
+ }
201
+ .part_tree {
202
+ height: 100%;
203
+ }
204
+ .whole_tree {
205
+ height: v-bind(treeHeight);
206
+ }
207
+ </style>