fl-web-component 1.2.12 → 1.2.13

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 +2 -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 +129 -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 +31 -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,846 +0,0 @@
1
- <template>
2
- <div :class="[isClient ? '' : 'box-card']">
3
- <div :class="[isClient ? 'box-card box-card_pc' : '']" style="height: calc(100vh - 134px)">
4
- <div class="box-title">
5
- <span class="box-title-desc">校审</span>
6
- <i
7
- v-if="!isClient"
8
- class="el-icon-close box-title-close"
9
- style="cursor: pointer"
10
- @click="$emit('rightOperation', 'proof')"
11
- />
12
- </div>
13
-
14
- <div v-show="!readOnlyMode" v-if="!isClient" v-loading="loading" class="box-add">
15
- <el-button
16
- type="primary"
17
- style="margin-top: 8px; width: 100%"
18
- @click="clickAdd"
19
- v-hasPermi="[`project:opinion:add:proj:${defaultParams.projectId}`]"
20
- >添加校审意见</el-button
21
- >
22
- <!-- :image="require('@/assets/images/no_drawer.png')" -->
23
- </div>
24
-
25
- <div class="box-filter">
26
- <el-form
27
- @submit.native.prevent
28
- :model="filterModel"
29
- ref="queryForm"
30
- :inline="true"
31
- label-width="68px"
32
- class="box-filter-form"
33
- >
34
- <template v-if="isClient">
35
- <el-row class="row-bg" :gutter="10">
36
- <el-col :span="6">
37
- <el-form-item width="100%">
38
- <el-select clearable v-model="filterModel.postId" placeholder="选择专业">
39
- <el-option
40
- v-for="item in postList"
41
- :key="item.postId"
42
- :label="item.postName"
43
- :value="item.postId"
44
- :disabled="item.disabled"
45
- >
46
- </el-option>
47
- </el-select>
48
- </el-form-item>
49
- </el-col>
50
- <el-col :span="6">
51
- <el-form-item>
52
- <el-select clearable v-model="filterModel.status" placeholder="选择状态">
53
- <el-option
54
- v-for="item in filterStatusOpt"
55
- :key="item.value"
56
- :label="item.label"
57
- :value="item.value"
58
- >
59
- </el-option>
60
- </el-select>
61
- </el-form-item>
62
- </el-col>
63
- <el-col :span="8">
64
- <el-form-item label="" prop="description" :style="{ width: `100%` }">
65
- <el-input
66
- v-model="filterModel.description"
67
- placeholder="问题描述"
68
- clearable
69
- size="small"
70
- @keyup.enter.native="handleQuery"
71
- />
72
- </el-form-item>
73
- </el-col>
74
- <!-- :offset="2" -->
75
- <el-col :span="4">
76
- <el-form-item>
77
- <el-button type="primary" size="small" @click="handleQuery">搜索</el-button>
78
- <!-- <el-button icon="el-icon-refresh" size="small" @click="resetQuery"
79
- >重置</el-button
80
- > -->
81
- </el-form-item>
82
- </el-col>
83
- </el-row>
84
- </template>
85
- <template v-else>
86
- <el-row type="flex" class="row-bg" align="middle" justify="space-between" :gutter="24">
87
- <el-col :span="12">
88
- <el-form-item>
89
- <el-select clearable v-model="filterModel.postId" placeholder="选择专业">
90
- <el-option
91
- v-for="item in postList"
92
- :key="item.postId"
93
- :label="item.postName"
94
- :value="item.postId"
95
- :disabled="item.disabled"
96
- >
97
- </el-option>
98
- </el-select>
99
- </el-form-item>
100
- </el-col>
101
- <el-col :span="12">
102
- <el-form-item>
103
- <el-select clearable v-model="filterModel.status" placeholder="选择状态">
104
- <el-option
105
- v-for="item in filterStatusOpt"
106
- :key="item.value"
107
- :label="item.label"
108
- :value="item.value"
109
- >
110
- </el-option>
111
- </el-select>
112
- </el-form-item>
113
- </el-col>
114
- </el-row>
115
- <el-row
116
- type="flex"
117
- class="row-bg last-form-item"
118
- align="middle"
119
- justify="space-between"
120
- :gutter="24"
121
- >
122
- <el-col :span="18">
123
- <el-form-item label="" prop="description" :style="{ width: `100%` }">
124
- <el-input
125
- v-model="filterModel.description"
126
- placeholder="问题描述"
127
- clearable
128
- size="small"
129
- @keyup.enter.native="handleQuery"
130
- />
131
- </el-form-item>
132
- </el-col>
133
- <!-- :offset="2" -->
134
- <el-col :span="6">
135
- <el-form-item>
136
- <el-button type="primary" size="small" @click="handleQuery">搜索</el-button>
137
- <!-- <el-button icon="el-icon-refresh" size="small" @click="resetQuery"
138
- >重置</el-button
139
- > -->
140
- </el-form-item>
141
- </el-col>
142
- </el-row>
143
- </template>
144
- </el-form>
145
- </div>
146
-
147
- <div class="box-content">
148
- <el-scrollbar>
149
- <!-- v-infinite-scroll="load" -->
150
- <!-- style="overflow-y: auto;height: calc(100vh - 250px)" -->
151
- <div v-if="dataList.length" :class="[isClient ? 'data-item-container' : '']">
152
- <div
153
- v-for="(item, index) in dataList"
154
- :key="index"
155
- class="data-item"
156
- @click="selectRow(item)"
157
- >
158
- <el-card
159
- class="box-card-item"
160
- :class="item.id == selectedRow.id ? 'selected-row' : ''"
161
- >
162
- <div slot="header" class="clearfix">
163
- <el-descriptions title="" :column="2">
164
- <el-descriptions-item label="视点编号">{{ item.id }}</el-descriptions-item>
165
- <el-descriptions-item
166
- label=""
167
- labelClassName="item-label"
168
- contentClassName="item-content"
169
- >
170
- <el-tag
171
- class="tag-reply"
172
- type="success"
173
- size="small"
174
- v-if="item.status === `1`"
175
- >已回复</el-tag
176
- >
177
- </el-descriptions-item>
178
- <el-descriptions-item
179
- :contentClassName="isClient ? 'item-desc-pc' : 'item-desc'"
180
- label="问题描述"
181
- >{{ item.description }}</el-descriptions-item
182
- >
183
- </el-descriptions>
184
- </div>
185
- <div :class="['footer', readOnlyMode ? 'readonly-mode' : '']">
186
- <el-button
187
- v-show="!readOnlyMode"
188
- v-if="!isClient"
189
- type="text"
190
- @click="clickDelete(item)"
191
- v-hasPermi="[`project:opinion:remove:proj:${defaultParams.projectId}`]"
192
- ><span>删除</span><i class="el-icon-delete pmc-fs-14 pmc-fc-BDC6CA"
193
- /></el-button>
194
- <el-button type="text" @click="handleDetail(item)"
195
- ><span>详情</span><i class="el-icon-arrow-right pmc-fs-14 pmc-fc-BDC6CA"
196
- /></el-button>
197
- </div>
198
- </el-card>
199
- </div>
200
- </div>
201
- <el-empty
202
- v-if="dataList.length === 0 && !loading"
203
- :image-size="150"
204
- description="暂无校审意见"
205
- />
206
- </el-scrollbar>
207
- </div>
208
- </div>
209
- <!-- @clickEdit="handleEdit" -->
210
- <!-- v-if="annotationDetailDialog" -->
211
- <proof-panel-detail
212
- ref="proofPanelDetail"
213
- :key="dataId"
214
- :dialog-visible="annotationDetailDialog"
215
- :data-id="dataId"
216
- :postList="postList"
217
- :userList="userList"
218
- :detailProps="detailData"
219
- :isClient="isClient"
220
- :readOnlyMode="readOnlyMode"
221
- :updatingOpinion="updatingOpinion"
222
- :defaultParams="defaultParams"
223
- @close="closeAnnotationDetailDialog"
224
- @clickSaveBtn="saveForm"
225
- @clickEditPic="handleEditPic"
226
- />
227
- </div>
228
- </template>
229
-
230
- <script>
231
- import ProofPanelDetail from './proof-panel-detail.vue';
232
- import * as modelApi from '../api/index';
233
-
234
- let timer = null;
235
-
236
- const NEED_UPDATE_ENUM = {
237
- false: 0,
238
- true: 1,
239
- };
240
-
241
- export default {
242
- name: 'proofPanel',
243
- components: { ProofPanelDetail },
244
- props: {
245
- // 文件id
246
- fileId: {
247
- type: Number,
248
- default: 0,
249
- },
250
- defaultParams: {
251
- type: Object,
252
- default() {
253
- return {};
254
- },
255
- },
256
- proofData: {
257
- type: Object,
258
- default() {
259
- return {};
260
- },
261
- },
262
- readOnlyMode: {
263
- type: Boolean,
264
- default: false,
265
- },
266
- },
267
- data() {
268
- return {
269
- // 查询参数
270
- queryParams: {
271
- origFileId: this.fileId, // 批注前 原始的文件id
272
- pageNum: 1,
273
- pageSize: 3,
274
- },
275
- dataList: [],
276
- userList: [],
277
- filterModel: {},
278
- filterStatusOpt: [
279
- {
280
- value: '0',
281
- label: '未处理',
282
- },
283
- {
284
- value: '1',
285
- label: '已处理',
286
- },
287
- {
288
- value: '2',
289
- label: '待确认',
290
- },
291
- ],
292
- postList: [],
293
- loading: false,
294
- annotationDetailDialog: false, // 查询详情弹窗
295
- dataId: '', // 主键 id
296
- screenHeight: document.documentElement.clientHeight, // 屏幕高度
297
- selectedRow: {},
298
- detailData: {},
299
- updatingOpinion: false,
300
- };
301
- },
302
- computed: {
303
- isClient() {
304
- return this.defaultParams.client == 'true';
305
- },
306
- },
307
- watch: {
308
- // 列表详情
309
- selectedRow(row) {
310
- console.log('selectedRow');
311
- this.detailData = Object.assign({}, row);
312
- },
313
- // 编辑新建详情
314
- proofData: {
315
- handler(data) {
316
- this.detailData = Object.assign({}, data);
317
- console.log(this.detailData);
318
- },
319
- deep: true,
320
- },
321
- },
322
- created() {},
323
- mounted() {
324
- // web端正常初始化,pc端不初始化
325
- if (!this.isClient) {
326
- this.init();
327
- }
328
- },
329
- methods: {
330
- init() {
331
- this.getProofOpinionList(this.defaultParams);
332
- this.getPostList();
333
- this.getProofProjectUserList({
334
- projectId: this.defaultParams.projectId,
335
- });
336
- },
337
- getProofOpinionList(params) {
338
- modelApi
339
- .getProofOpinionList(params)
340
- .then((res) => {
341
- // if (this.lodash.isEmpty(res)) {
342
- // this.$message({ type: "warning", message: "暂无数据" });
343
- // return;
344
- // }
345
- // res.rows.forEach(item => {
346
- // item.stageId = this.defaultParams.stageId;
347
- // item.projectId = this.defaultParams.projectId
348
- // }); // TODO dev delete
349
- console.log(res.rows);
350
- this.$set(this, 'dataList', res.rows ? res.rows : []);
351
- })
352
- .catch((err) => {})
353
- .finally(() => {
354
- this.currentRow = null;
355
- this.detailStatus = 'view';
356
- });
357
- },
358
- getPostList() {
359
- modelApi.getPostList().then((res) => {
360
- if (res.code != 200) {
361
- this.$message({ type: 'warning', message: '暂无属性数据' });
362
- return;
363
- } else {
364
- this.postList = res.rows;
365
- }
366
- });
367
- },
368
- load() {
369
- if (this.dataList.length >= this.total) return false;
370
- this.queryParams.pageNum += 1;
371
- this.getList();
372
- },
373
- // 预览
374
- handlePerview(id, callback) {
375
- perview({ id }).then((res) => {
376
- let reader = new FileReader();
377
- reader.readAsDataURL(res); // 转换为base64
378
- reader.onload = function () {
379
- callback(reader.result);
380
- };
381
- });
382
- },
383
- handleDetail(row) {
384
- const params = {
385
- id: row.id,
386
- projectId: this.defaultParams.projectId,
387
- };
388
- modelApi
389
- .getProofOpinionById(params)
390
- .then((res) => {
391
- if (res.code == 200) {
392
- this.selectedRow = res.data;
393
- } else {
394
- this.selectedRow = row;
395
- }
396
- })
397
- .catch((err) => {
398
- console.log(err);
399
- this.selectedRow = row;
400
- })
401
- .finally(() => {
402
- this.annotationDetailDialog = true;
403
- });
404
- },
405
- // 取消按钮
406
- cancel() {
407
- this.open = false;
408
- this.reset();
409
- },
410
- // 关闭
411
- closeAnnotationDetailDialog(refresh) {
412
- refresh && this.getProofOpinionList(this.defaultParams);
413
- this.annotationDetailDialog = false;
414
- },
415
- openAnnotationDetailDialog() {
416
- this.annotationDetailDialog = true;
417
- },
418
- clickDelete(item) {
419
- this.$confirm('此操作将删除, 是否继续?', '提示', {
420
- confirmButtonText: '确定',
421
- cancelButtonText: '取消',
422
- type: 'warning',
423
- })
424
- .then(() => {
425
- const { id } = item;
426
- modelApi
427
- .deleteProofOpinion({
428
- ids: id,
429
- projectId: this.defaultParams.projectId,
430
- // stageId: this.defaultParams.stageId,
431
- })
432
- .then((res) => {
433
- if (res.code != 200) {
434
- this.$message({
435
- type: 'error',
436
- message: res.msg,
437
- });
438
- } else {
439
- // this.disabledForm(true);
440
-
441
- this.currentRow = null;
442
- this.detailModel = {};
443
- this.$emit('deleteRow', true);
444
- this.getProofOpinionList(this.defaultParams);
445
- this.$message({
446
- type: 'success',
447
- message: res.msg,
448
- });
449
- }
450
- })
451
- .catch((res) => {
452
- this.$message({
453
- type: 'error',
454
- message: res.msg,
455
- });
456
- });
457
- })
458
- .catch(() => {});
459
- },
460
- handleQuery() {
461
- const params = {
462
- ...this.filterModel,
463
- ...this.defaultParams,
464
- };
465
- this.getProofOpinionList(params);
466
- },
467
- clickAdd() {
468
- this.detailStatus = 'add';
469
- this.selectedRow = {}; // 清空已选数据
470
- // this.$refs.tableRef.setCurrentRow(); // 清空表格列表选择项
471
- this.detailModel = {}; // 清空表单
472
- this.detailData = {};
473
- // this.disabledForm(false); // 表单可编辑
474
- this.$emit('clickAddBtn', {
475
- detailStatus: this.detailStatus,
476
- });
477
- },
478
- handleProofSavelBtn(data) {
479
- this.$emit('clickSaveBtn', data);
480
- },
481
- // saveForm(data, success, fail){
482
- // this.annotationDetailDialog = true;
483
-
484
- // this.$nextTick(() => {
485
- // console.log(this.$refs.proofPanelDetail)
486
- // this.$refs.proofPanelDetail.saveForm(data, success, fail)
487
- // this.annotationDetailDialog = false;
488
- // })
489
- // },
490
- saveForm(data, success, fail) {
491
- console.log(data);
492
- this.annotationDetailDialog = true;
493
-
494
- // this.$nextTick(() => {
495
- // console.log(this.$refs.proofPanelDetail)
496
- // this.$refs.proofPanelDetail.saveForm(data, success, fail)
497
- // })
498
-
499
- // 去除临时截图数据
500
- if (data.previewScreenshotData) {
501
- delete data.previewScreenshotData;
502
- }
503
-
504
- // 上传截图判断
505
- if (!data.problemPrintscreenId) {
506
- this.$message({
507
- type: 'warning',
508
- message: '视点截图上传中,请稍后...',
509
- });
510
- return;
511
- }
512
-
513
- this.updatingOpinion = true;
514
-
515
- if (data.id) {
516
- // if(this.defaultParams.toProjectId){
517
- // data.projectId = '';
518
- // data.toProjectId = this.defaultParams.toProjectId
519
- // }
520
- modelApi
521
- .putProofOpinion(data)
522
- .then((res) => {
523
- if (res.code != 200) {
524
- this.$message({
525
- type: 'error',
526
- message: res.msg,
527
- });
528
- } else {
529
- // this.disabledForm(true);
530
-
531
- // this.detailModel = {}; // 清空表单
532
-
533
- this.getProofOpinionList(this.defaultParams);
534
-
535
- this.$message({
536
- type: 'success',
537
- message: res.msg,
538
- });
539
- }
540
- success && success();
541
- })
542
- .catch((res) => {
543
- this.$message({
544
- type: 'error',
545
- message: res.msg,
546
- });
547
- fail && fail();
548
- })
549
- .finally(() => {
550
- this.annotationDetailDialog = false;
551
- this.updatingOpinion = false;
552
- // this.detailStatus = "view";
553
- });
554
- } else {
555
- // if(this.defaultParams.projectId){
556
- // data.projectId = this.defaultParams.projectId;
557
- // data.toProjectId = '';
558
- // }
559
- data.status = '0'; // 未处理
560
-
561
- modelApi
562
- .addProofOpinion(data)
563
- .then((res) => {
564
- if (res.code != 200) {
565
- this.$message({
566
- type: 'error',
567
- message: res.msg,
568
- });
569
- } else {
570
- // this.disabledForm(true);
571
- this.getProofOpinionList(this.defaultParams);
572
-
573
- this.$message({
574
- type: 'success',
575
- message: res.msg,
576
- });
577
- }
578
- success && success();
579
- })
580
- .catch((res) => {
581
- this.$message({
582
- type: 'error',
583
- message: res.msg,
584
- });
585
- fail && fail();
586
- })
587
- .finally(() => {
588
- this.annotationDetailDialog = false;
589
- this.updatingOpinion = false;
590
- });
591
- }
592
- },
593
- handleEditPic(detailData) {
594
- this.annotationDetailDialog = false;
595
- this.$emit('clickEditBtn', detailData);
596
- },
597
- selectRow(row) {
598
- this.selectedRow = row;
599
- this.$emit('selectRow', this.selectedRow);
600
- },
601
- clickEditPic(data) {
602
- this.detailStatus = 'edit';
603
- // backupDetailModel = Object.assign({}, this.detailModel);
604
-
605
- this.$emit('clickEditBtn', {
606
- detailStatus: this.detailStatus,
607
- });
608
- },
609
- getProofProjectUserList(params) {
610
- modelApi.getProofProjectUserList(params).then((res) => {
611
- if (res.code == 200) {
612
- let data = res.rows;
613
- this.userList =
614
- data &&
615
- data.map((item) => {
616
- return {
617
- userName: item.userName,
618
- userId: item.userId,
619
- };
620
- });
621
- }
622
- });
623
- },
624
- IfUpdateModel(params) {
625
- timer = setInterval(() => {
626
- modelApi.IfUpdateModel(params).then((res) => {
627
- if (res.code == 200) {
628
- const data = res.data;
629
- if (NEED_UPDATE_ENUM.false !== data) {
630
- this.$confirm('检测到模型更新,是否刷新页面进行更新?', '提示', {
631
- confirmButtonText: '确定',
632
- cancelButtonText: '取消',
633
- type: 'warning',
634
- }).then(() => {
635
- window.location.reload();
636
- });
637
- clearInterval(timer);
638
- }
639
- }
640
- });
641
- }, 30000);
642
- },
643
- clearUpdateModelInterval() {
644
- clearInterval(timer);
645
- },
646
- },
647
- };
648
- </script>
649
-
650
- <style scoped lang="scss">
651
- .box-card {
652
- padding-top: 0;
653
- padding-bottom: 0;
654
- background: #fff;
655
- width: 400px;
656
-
657
- .tree-header {
658
- height: 52px;
659
- line-height: 52px;
660
- border-bottom: 1px solid #dfdfdf;
661
- // margin-bottom: 15px;
662
- }
663
-
664
- .data-item {
665
- // height: 248px;
666
- background: #ffffff;
667
- border-radius: 8px;
668
- border: 1px solid #e6e6e6;
669
- margin-top: 14px;
670
-
671
- .info {
672
- padding: 0 12px;
673
- height: 36px;
674
- }
675
-
676
- .selected-row {
677
- border: 1px solid #008de9;
678
- }
679
- }
680
-
681
- .footer {
682
- height: 36px;
683
- line-height: 36px;
684
- padding: 0 12px;
685
- border-top: 1px solid #e6e6e6;
686
- display: flex;
687
- justify-content: space-between;
688
- align-items: center;
689
- cursor: pointer;
690
-
691
- span {
692
- font-size: 14;
693
- }
694
- }
695
-
696
- .box-content,
697
- .box-filter,
698
- .box-add {
699
- padding: 5px 10px;
700
- }
701
-
702
- .box-content {
703
- height: 540px;
704
- }
705
-
706
- .data-item {
707
- margin: 10px 0;
708
-
709
- &:first-child {
710
- margin-top: 0;
711
- }
712
-
713
- &:last-child {
714
- margin-bottom: 0;
715
- }
716
- }
717
-
718
- &.box-card_pc {
719
- .data-item {
720
- margin: 10px 0;
721
- }
722
- }
723
-
724
- ::v-deep .box-card-item {
725
- .item-label {
726
- display: none;
727
- }
728
-
729
- .item-content {
730
- flex-direction: row-reverse;
731
- }
732
-
733
- .item-desc {
734
- display: -webkit-box;
735
- display: -moz-box;
736
- /* 旧版Firefox */
737
- display: box;
738
- -webkit-box-orient: vertical;
739
- -moz-box-orient: vertical;
740
- box-orient: vertical;
741
- -webkit-line-clamp: 2;
742
- line-clamp: 2;
743
- /* 标准属性 */
744
- overflow: hidden;
745
- text-overflow: ellipsis;
746
- }
747
-
748
- .item-desc-pc {
749
- display: inline-block;
750
- max-width: 100%;
751
- white-space: nowrap;
752
- overflow: hidden;
753
- text-overflow: ellipsis;
754
- }
755
- }
756
-
757
- .box-filter-form {
758
- display: flex;
759
- flex-direction: column;
760
-
761
- ::v-deep .el-form-item {
762
- width: 100%;
763
-
764
- .el-form-item__content {
765
- width: 100%;
766
- box-sizing: border-box;
767
- // padding-right: 20px;
768
- }
769
- }
770
- }
771
-
772
- .box-title {
773
- display: flex;
774
- justify-content: space-between;
775
- align-items: center;
776
- height: 52px;
777
- line-height: 52px;
778
- padding-left: 8px;
779
- padding-right: 8px;
780
- border-bottom: 1px solid #dfdfdf;
781
-
782
- .box-title-desc {
783
- font-size: 14px;
784
- font-weight: bold;
785
- }
786
-
787
- .box-title-close {
788
- font-size: 24px;
789
- }
790
- }
791
-
792
- ::v-deep .el-scrollbar__thumb {
793
- background-color: #e0e0e0;
794
- }
795
- }
796
-
797
- ::v-deep .box-card_pc {
798
- width: 100%;
799
-
800
- .data-item-container {
801
- display: grid;
802
- grid-template-columns: repeat(2, 49%);
803
- column-gap: 20px;
804
- }
805
-
806
- .el-card__header {
807
- padding: 10px;
808
- }
809
-
810
- .el-card__body {
811
- padding: 0;
812
- }
813
-
814
- .footer {
815
- flex-direction: row-reverse;
816
- }
817
-
818
- .box-filter {
819
- .el-select {
820
- width: 100%;
821
- }
822
- }
823
- }
824
-
825
- .readonly-mode.footer {
826
- flex-direction: row-reverse;
827
- }
828
-
829
- ::v-deep.el-scrollbar {
830
- height: 580px;
831
-
832
- .el-scrollbar__wrap {
833
- margin-bottom: 0px !important;
834
- margin-right: 0px !important;
835
- }
836
- }
837
-
838
- .tag-reply {
839
- height: 20px;
840
- line-height: 20px;
841
- }
842
-
843
- ::v-deep .last-form-item {
844
- margin-bottom: -25px;
845
- }
846
- </style>