fl-web-component 0.1.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 (52) hide show
  1. package/README.md +24 -0
  2. package/dist/demo.html +10 -0
  3. package/dist/fl-web-component.common.js +316 -0
  4. package/dist/fl-web-component.common.js.map +1 -0
  5. package/dist/fl-web-component.css +1 -0
  6. package/dist/fl-web-component.umd.js +326 -0
  7. package/dist/fl-web-component.umd.js.map +1 -0
  8. package/dist/fl-web-component.umd.min.js +2 -0
  9. package/dist/fl-web-component.umd.min.js.map +1 -0
  10. package/package.json +47 -0
  11. package/packages/components/button/index.vue +22 -0
  12. package/packages/components/model/api/index.js +429 -0
  13. package/packages/components/model/api/mock/detecttree.js +58 -0
  14. package/packages/components/model/api/mock/getmodel-line.js +79336 -0
  15. package/packages/components/model/api/mock/init.js +1 -0
  16. package/packages/components/model/api/mock/pbstree.js +835 -0
  17. package/packages/components/model/api/mock/topology.json +3238 -0
  18. package/packages/components/model/components/TextOverTooltip/index.vue +84 -0
  19. package/packages/components/model/components/annotation-toolbar.vue +425 -0
  20. package/packages/components/model/components/check-proofing-model.vue +42 -0
  21. package/packages/components/model/components/clipping-type.vue +51 -0
  22. package/packages/components/model/components/com-dialogWrapper/Readme.md +53 -0
  23. package/packages/components/model/components/com-dialogWrapper/index.vue +117 -0
  24. package/packages/components/model/components/detect-panel.vue +327 -0
  25. package/packages/components/model/components/detect-tree.vue +460 -0
  26. package/packages/components/model/components/firstPer-panel.vue +111 -0
  27. package/packages/components/model/components/header-button.vue +546 -0
  28. package/packages/components/model/components/imageViewer/index.vue +127 -0
  29. package/packages/components/model/components/import-model.vue +127 -0
  30. package/packages/components/model/components/location-panel.vue +95 -0
  31. package/packages/components/model/components/measure-type.vue +59 -0
  32. package/packages/components/model/components/pbs-tree.vue +502 -0
  33. package/packages/components/model/components/proof-config.vue +80 -0
  34. package/packages/components/model/components/proof-for-pc.vue +123 -0
  35. package/packages/components/model/components/proof-history.vue +318 -0
  36. package/packages/components/model/components/proof-panel-detail.vue +567 -0
  37. package/packages/components/model/components/proof-panel.vue +770 -0
  38. package/packages/components/model/components/proof-project-user.vue +482 -0
  39. package/packages/components/model/components/proof-publish.vue +130 -0
  40. package/packages/components/model/components/proof-role.vue +535 -0
  41. package/packages/components/model/components/props-panel.vue +249 -0
  42. package/packages/components/model/index.vue +3413 -0
  43. package/packages/components/model/readme.md +31 -0
  44. package/packages/components/model/utils/annotation-tool.js +340 -0
  45. package/packages/components/model/utils/cursor.js +18 -0
  46. package/packages/components/model/utils/detect-v1.js +341 -0
  47. package/packages/components/model/utils/index.js +48 -0
  48. package/packages/components/model/utils/threejs/measure-angle.js +258 -0
  49. package/packages/components/model/utils/threejs/measure-area.js +269 -0
  50. package/packages/components/model/utils/threejs/measure-distance.js +207 -0
  51. package/packages/components/model/utils/threejs/measure-volume.js +94 -0
  52. package/packages/index.js +24 -0
@@ -0,0 +1,482 @@
1
+ <template>
2
+ <div>
3
+ <div class="trigger-button">
4
+ <el-button type="text" @click="triggerDialog"
5
+ ><i class="pre-img"></i>用户列表</el-button
6
+ >
7
+ </div>
8
+ <com-dialog
9
+ v-if="dialogVisible"
10
+ dialog-title="项目用户管理"
11
+ :visible="dialogVisible"
12
+ :popup-width="'50%'"
13
+ :footerDisabled="true"
14
+ @handleClose="handleClose"
15
+ @submitDialogData="submitDialogData"
16
+ >
17
+ <el-row :gutter="10" class="mb8">
18
+ <el-col :span="1.5">
19
+ <el-button
20
+ type="primary"
21
+ icon="el-icon-plus"
22
+ size="small"
23
+ @click="handleAdd"
24
+ v-hasPermi="[
25
+ `project:user:add:proj:${defaultParams.projectId}`,
26
+ ]"
27
+ >新增</el-button
28
+ >
29
+ </el-col>
30
+ </el-row>
31
+
32
+ <el-table
33
+ max-height="65vh"
34
+ v-loading="loading"
35
+ :data="tableData"
36
+ >
37
+ <el-table-column label="序号" type="index" width="80" />
38
+ <el-table-column
39
+ label="项目用户"
40
+ prop="userName"
41
+ show-overflow-tooltip
42
+ />
43
+ <el-table-column
44
+ label="项目角色"
45
+ prop="roleName"
46
+ show-overflow-tooltip
47
+ />
48
+ <el-table-column
49
+ label="操作"
50
+ width="200"
51
+ class-name="small-padding fixed-width"
52
+ >
53
+ <template slot-scope="scope">
54
+ <el-button
55
+ size="mini"
56
+ type="text"
57
+ @click="handleEdit(scope.row)"
58
+ v-if="!scope.row.projectManager"
59
+ v-hasPermi="[
60
+ `project:user:edit:proj:${defaultParams.projectId}`,
61
+ ]"
62
+ >修改</el-button
63
+ >
64
+ <el-button
65
+ size="mini"
66
+ type="text"
67
+ @click="handleDelete(scope.row)"
68
+ v-if="!scope.row.projectManager"
69
+ v-hasPermi="[
70
+ `project:user:remove:proj:${defaultParams.projectId}`,
71
+ ]"
72
+ >移除</el-button
73
+ >
74
+ </template>
75
+ </el-table-column>
76
+ </el-table>
77
+ </com-dialog>
78
+
79
+ <com-dialog
80
+ v-if="dialogOperate.visible"
81
+ dialog-title="项目用户"
82
+ :visible="dialogOperate.visible"
83
+ :popup-width="'25%'"
84
+ @handleClose="handleOperateClose"
85
+ @submitDialogData="submitDialogOperateData"
86
+ >
87
+ <el-form ref="formOperate" :model="dialogForm" :rules="formRules" label-width="100px">
88
+ <el-form-item
89
+ label="项目用户"
90
+ prop="userId"
91
+ v-if="dialogForm.operateType != 'edit'"
92
+ >
93
+ <el-select v-model="dialogForm.userId" placeholder="请选择">
94
+ <el-option
95
+ v-for="item in unallocatedUserList"
96
+ :key="item.id"
97
+ :label="item.value"
98
+ :value="item.id"
99
+ >
100
+ </el-option>
101
+ </el-select>
102
+ </el-form-item>
103
+ <el-form-item label="项目角色" prop="roleId">
104
+ <el-select v-model="dialogForm.roleId" placeholder="请选择">
105
+ <el-option
106
+ v-for="item in roleList"
107
+ :key="item.id"
108
+ :label="item.value"
109
+ :value="item.id"
110
+ >
111
+ </el-option>
112
+ </el-select>
113
+ </el-form-item>
114
+ </el-form>
115
+ </com-dialog>
116
+ </div>
117
+ </template>
118
+
119
+ <script>
120
+ import project from '@/api/projects/projects';
121
+
122
+ import {
123
+ getUnallocatedUserList,
124
+ deleteProofProjectUser,
125
+ getProofProjectUserList,
126
+ getRoleList,
127
+ addProofProjectUser,
128
+ updateProofProjectUser,
129
+ } from '../api/index';
130
+ export default {
131
+ name: 'proofProjectUser',
132
+ data() {
133
+ return {
134
+ dialogVisible: false,
135
+ historyDialogVisible: false,
136
+ tableData: [],
137
+ loading: true,
138
+ historyVersionName: '',
139
+ dialogOperate: {
140
+ visible: false,
141
+ },
142
+ dialogForm: {
143
+ userId: '',
144
+ roleId: '',
145
+ type: 1,
146
+ operateType: '',
147
+ },
148
+ formRules: {
149
+ userId: [
150
+ { required: true, message: '请选择项目用户', trigger: 'change' },
151
+ ],
152
+ roleId: [
153
+ { required: true, message: '请选择项目角色', trigger: 'change' },
154
+ ],
155
+ },
156
+ unallocatedUserList: [],
157
+ roleList: [],
158
+ };
159
+ },
160
+ components: {
161
+ ComDialog: () => import('./com-dialogWrapper'),
162
+ },
163
+ mounted() {
164
+ const params = { projectId: this.defaultParams.projectId };
165
+ this.getProofProjectUserList(params);
166
+ this.getUnallocatedUserList(params);
167
+ this.getRoleList(params);
168
+ },
169
+ props: {
170
+ defaultParams: {
171
+ type: Object,
172
+ default() {
173
+ return {};
174
+ },
175
+ },
176
+ },
177
+ computed: {
178
+ projectId() {
179
+ return this.defaultParams.projectId;
180
+ },
181
+ },
182
+ methods: {
183
+ triggerDialog() {
184
+ this.dialogVisible = !this.dialogVisible;
185
+ console.log(this.dialogVisible);
186
+ },
187
+ /* 弹窗 修改是否让页面显示与隐藏的事件 */
188
+ updateVisible(val) {
189
+ this.dialogVisible = val;
190
+ },
191
+ /* 弹窗 确认 操作 */
192
+ submitDialogData() {
193
+ this.dialogVisible = false;
194
+ },
195
+ /* 弹窗 关闭 操作 */
196
+ handleClose() {
197
+ this.dialogVisible = false;
198
+ },
199
+ /* 弹窗 确认 操作 */
200
+ submitDialogOperateData() {
201
+ this.$refs.formOperate.validate((vaild) => {
202
+ if (vaild) {
203
+ this.dialogForm.projectId = this.defaultParams.projectId;
204
+ if (this.dialogForm.operateType != 'edit') {
205
+ addProofProjectUser(this.dialogForm)
206
+ .then((res) => {
207
+ if (res.code == 200) {
208
+ this.$message({
209
+ type: 'success',
210
+ message: res.msg,
211
+ });
212
+ this.getProofProjectUserList(this.defaultParams);
213
+ this.getUnallocatedUserList(this.defaultParams);
214
+ } else {
215
+ this.$message({
216
+ type: 'error',
217
+ message: res.msg,
218
+ });
219
+ }
220
+ })
221
+ .catch((err) => {
222
+ // this.$message({
223
+ // type: "error",
224
+ // message: err.msg,
225
+ // });
226
+ })
227
+ .finally(() => {
228
+ this.dialogOperate.visible = false;
229
+ });
230
+ } else {
231
+ updateProofProjectUser(this.dialogForm)
232
+ .then((res) => {
233
+ if (res.code == 200) {
234
+ this.$message({
235
+ type: 'success',
236
+ message: res.msg,
237
+ });
238
+ this.getProofProjectUserList(this.defaultParams);
239
+ } else {
240
+ this.$message({
241
+ type: 'error',
242
+ message: res.msg,
243
+ });
244
+ }
245
+ })
246
+ .catch((err) => {
247
+ // this.$message({
248
+ // type: "error",
249
+ // message: err.msg,
250
+ // });
251
+ })
252
+ .finally(() => {
253
+ this.dialogOperate.visible = false;
254
+ });
255
+ }
256
+ } else {
257
+ console.log('error submit');
258
+ }
259
+ });
260
+ },
261
+ handleAdd() {
262
+ this.dialogForm.operateType = 'add';
263
+ this.dialogOperate.visible = true;
264
+ this.dialogForm.userId = '';
265
+ this.dialogForm.roleId = '';
266
+ },
267
+ /* 弹窗 关闭 操作 */
268
+ handleOperateClose() {
269
+ this.resetForm();
270
+ this.dialogOperate.visible = false;
271
+ },
272
+ getProofProjectUserList(params) {
273
+ project.myProject({ pageNum: 1, pageSize: 10000 }).then((response) => {
274
+ // this.projectList = response.rows;
275
+ const currentProject = response.rows.find(
276
+ (item) => item.id == this.defaultParams.projectId
277
+ );
278
+ getProofProjectUserList(params)
279
+ .then((res) => {
280
+ this.tableData = res.rows;
281
+ // this.tableData.unshift({
282
+ // userName: currentProject.manager,
283
+ // roleName: '负责人',
284
+ // type: 'manager',
285
+ // });
286
+ })
287
+ .finally(() => {
288
+ this.loading = false;
289
+ });
290
+ });
291
+ },
292
+ resetForm() {
293
+ this.$refs.formOperate.resetFields();
294
+ this.dialogForm.userId = '';
295
+ this.dialogForm.roleId = '';
296
+ this.dialogForm.operateType = '';
297
+ },
298
+ getRoleList(params) {
299
+ getRoleList(params).then((res) => {
300
+ if (res.code == 200) {
301
+ let data = res.rows;
302
+ this.roleList = data.map((item) => {
303
+ return {
304
+ value: item.roleName,
305
+ id: item.roleId,
306
+ // value: '' + item.userId
307
+ };
308
+ });
309
+ console.log(this.roleList);
310
+ }
311
+ });
312
+ },
313
+ getUnallocatedUserList(params) {
314
+ getUnallocatedUserList(params).then((res) => {
315
+ if (res.code == 200) {
316
+ let data = res.data;
317
+ this.unallocatedUserList = data.map((item) => {
318
+ return {
319
+ value: item.userName,
320
+ id: item.userId,
321
+ // value: '' + item.userId
322
+ };
323
+ });
324
+ console.log(this.unallocatedUserList);
325
+ }
326
+ });
327
+ },
328
+ handleDelete(item) {
329
+ this.$confirm(`确认移除用户 "${item.userName}"?`, '移除', {
330
+ confirmButtonText: '确定',
331
+ cancelButtonText: '取消',
332
+ type: 'error',
333
+ })
334
+ .then(() => {
335
+ const { userId, roleId } = item;
336
+ deleteProofProjectUser({
337
+ userId,
338
+ roleId,
339
+ projectId: this.defaultParams.projectId,
340
+ })
341
+ .then((res) => {
342
+ if (res.code != 200) {
343
+ this.$message({
344
+ type: 'error',
345
+ message: res.msg,
346
+ });
347
+ } else {
348
+ this.getProofProjectUserList(this.defaultParams);
349
+ this.getUnallocatedUserList(this.defaultParams);
350
+ this.$message({
351
+ type: 'success',
352
+ message: res.msg,
353
+ });
354
+ }
355
+ })
356
+ .catch((res) => {
357
+ this.$message({
358
+ type: 'error',
359
+ message: res.msg,
360
+ });
361
+ });
362
+ })
363
+ .catch(() => {});
364
+ },
365
+ handleEdit(item) {
366
+ this.dialogOperate.visible = true;
367
+ this.dialogForm.operateType = 'edit';
368
+ Object.assign(this.dialogForm, item);
369
+ console.log(this.dialogForm);
370
+ },
371
+ },
372
+ };
373
+ </script>
374
+
375
+ <style lang="scss" scoped>
376
+ // .el-table{
377
+ // color: #606266;
378
+ // }
379
+ // .el-table th{
380
+ // background: none;
381
+ // }
382
+ // .el-table tr{
383
+ // background: none;
384
+ // }
385
+ // .el-table thead{
386
+ // color: #fff;
387
+ // }
388
+ // .el-table th.el-table__cell{
389
+ // background: none;
390
+ // }
391
+ ::v-deep .el-table {
392
+ display: flex;
393
+ flex-direction: column;
394
+ font-size: 14px;
395
+ line-height: 20px;
396
+ color: #2e3136;
397
+
398
+ // .el-table th{
399
+ // background: none;
400
+ // }
401
+ // .el-table tr{
402
+ // background: none;
403
+ // }
404
+ // .el-table thead{
405
+ // tr{
406
+ // color: #2E3136;
407
+ // }
408
+ // }
409
+ .el-table th.el-table__cell {
410
+ background: none;
411
+ }
412
+ .el-table__header-wrapper {
413
+ flex-shrink: 0;
414
+ }
415
+ .el-table__body-wrapper {
416
+ flex-grow: 1;
417
+ .el-table__row {
418
+ height: 52px;
419
+ background-color: #fff !important;
420
+ }
421
+ }
422
+ .el-table__header-wrapper .el-table__header th,
423
+ .el-table__fixed-header-wrapper .el-table__header th {
424
+ background-color: #f8f8f8 !important;
425
+ color: #2e3136;
426
+ height: 52px;
427
+ box-sizing: border-box;
428
+ padding: 0;
429
+ font-size: 14px;
430
+ line-height: 20px;
431
+ color: #2e3136;
432
+ }
433
+
434
+ .el-table__fixed-body-wrapper {
435
+ .el-table__row {
436
+ height: 52px;
437
+ }
438
+ }
439
+
440
+ .el-table__body tr.hover-row {
441
+ td.el-table__cell {
442
+ background-color: #f6f9fa;
443
+ }
444
+ }
445
+
446
+ .el-table__cell:not(.is-center):not(.is-hidden) {
447
+ button.el-button--text {
448
+ color: #008de9;
449
+ }
450
+ }
451
+
452
+ // 计数器高度
453
+ .el-input-number .el-input--medium .el-input__inner {
454
+ height: 30px;
455
+ }
456
+
457
+ .el-dropdown-link {
458
+ color: #008de9;
459
+ }
460
+ // 头部多选按钮
461
+ thead .el-table-column--selection {
462
+ & .el-checkbox {
463
+ margin-left: 4px;
464
+ }
465
+ }
466
+ }
467
+
468
+ ::v-deep .trigger-button {
469
+ span {
470
+ display: flex;
471
+ align-items: center;
472
+ color: #2e3136;
473
+ }
474
+ .pre-img {
475
+ background-image: url('../../../assets/proof/project_user@2x.png');
476
+ width: 30px;
477
+ height: 30px;
478
+ display: inline-block;
479
+ background-size: cover;
480
+ }
481
+ }
482
+ </style>
@@ -0,0 +1,130 @@
1
+ <template>
2
+ <div>
3
+ <div class="trigger-button">
4
+ <el-button
5
+ type="text"
6
+ @click="triggerDialog"
7
+ :disabled="disabledBtn"
8
+ v-hasPermi="[`project:version:publish:proj:${defaultParams.projectId}`]"
9
+ ><i class="pre-img"></i>发布</el-button
10
+ >
11
+ </div>
12
+ <com-dialog
13
+ v-if="dialogVisible"
14
+ dialog-title="发布校审版本"
15
+ :visible="dialogVisible"
16
+ :popup-width="'25%'"
17
+ @handleClose="handleClose"
18
+ @submitDialogData="submitDialogData"
19
+ >
20
+ <el-form ref="form" :model="dialogForm" :rules="formRules">
21
+ <el-form-item label="校审版本名称" prop="name">
22
+ <el-input v-model="dialogForm.name"></el-input>
23
+ </el-form-item>
24
+ </el-form>
25
+ </com-dialog>
26
+ </div>
27
+ </template>
28
+
29
+ <script>
30
+ import * as modelApi from '../api/index';
31
+
32
+ export default {
33
+ name: 'importModel',
34
+ data() {
35
+ return {
36
+ dialogVisible: false,
37
+ dialogForm: {
38
+ name: '',
39
+ },
40
+ formRules: {
41
+ name: [{ required: true, message: '请输入名称', trigger: 'blur' }],
42
+ },
43
+ disabledBtn: true,
44
+ };
45
+ },
46
+ props: {
47
+ defaultParams: {
48
+ type: Object,
49
+ default() {
50
+ return {};
51
+ },
52
+ },
53
+ },
54
+ components: {
55
+ ComDialog: () => import('./com-dialogWrapper'),
56
+ },
57
+ methods: {
58
+ triggerDialog() {
59
+ this.dialogVisible = !this.dialogVisible;
60
+ console.log(this.dialogVisible);
61
+ },
62
+ /* 弹窗 修改是否让页面显示与隐藏的事件 */
63
+ updateVisible(val) {
64
+ this.dialogVisible = val;
65
+ },
66
+ /* 弹窗 确认 操作 */
67
+ submitDialogData() {
68
+ this.$refs.form.validate((vaild) => {
69
+ if (vaild) {
70
+ this.dialogForm.projectId = this.defaultParams.projectId;
71
+
72
+ modelApi
73
+ .publishProofVersion(this.dialogForm)
74
+ .then((res) => {
75
+ if (res.code === 200) {
76
+ this.dialogVisible = false;
77
+ this.$message({
78
+ type: 'success',
79
+ message: '当前校审版本已发布',
80
+ });
81
+ this.$emit('getVersionList');
82
+ this.resetForm();
83
+
84
+ setTimeout(() => {
85
+ this.$emit('publishVersion', null);
86
+ }, 1000);
87
+ } else {
88
+ this.$message({ type: 'error', message: res.msg });
89
+ }
90
+ })
91
+ .catch((err) => {
92
+ console.log(err);
93
+ // this.$message({ type: 'error', message: err.msg })
94
+ });
95
+ } else {
96
+ console.log('error submit');
97
+ }
98
+ });
99
+ },
100
+ /* 弹窗 关闭 操作 */
101
+ handleClose() {
102
+ this.resetForm();
103
+ this.dialogVisible = false;
104
+ },
105
+ resetForm() {
106
+ this.$refs.form.resetFields();
107
+ },
108
+ ableBtn() {
109
+ this.disabledBtn = false;
110
+ },
111
+ },
112
+ };
113
+ </script>
114
+
115
+ <style lang="scss" scoped>
116
+ ::v-deep .trigger-button {
117
+ span {
118
+ display: flex;
119
+ align-items: center;
120
+ color: #2e3136;
121
+ }
122
+ .pre-img {
123
+ background-image: url('../../../assets/proof/publish@2x.png');
124
+ width: 30px;
125
+ height: 30px;
126
+ display: inline-block;
127
+ background-size: cover;
128
+ }
129
+ }
130
+ </style>