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
@@ -16,30 +16,26 @@
16
16
  <el-row v-loading="loading" :gutter="20" type="flex" justify="center">
17
17
  <el-col
18
18
  :span="16"
19
- style="
20
- border-radius: 6px;
21
- position: relative;
22
- height: 530px;
23
- background: #f6f6f6;
24
- "
19
+ style="border-radius: 6px; position: relative; height: 530px; background: #f6f6f6"
25
20
  >
26
- <div
27
- class="image-edit-container"
28
- v-show="!readOnlyMode"
21
+ <div
22
+ class="image-edit-container"
23
+ v-show="!readOnlyMode"
29
24
  v-if="!isClient"
30
25
  v-hasPermi="btnPermission"
31
26
  >
32
- <i
33
- class="el-icon-edit-outline image-edit"
34
- @click="clickEdit"
35
- ></i>
27
+ <i class="el-icon-edit-outline image-edit" @click="clickEdit"></i>
36
28
  </div>
37
- <ImageViewer ref="ImageViewrRef" :image-url="screenshotUrl" :isErrorImage="isErrorImage"/>
29
+ <ImageViewer
30
+ ref="ImageViewrRef"
31
+ :image-url="screenshotUrl"
32
+ :isErrorImage="isErrorImage"
33
+ />
38
34
  </el-col>
39
35
  <!-- 新增批注内容 -->
40
36
  <!-- :disabled="disabledDetailForm" -->
41
37
  <el-col :span="8">
42
- <el-descriptions :column="1" v-if="readOnlyMode || isClient">
38
+ <el-descriptions :column="1" v-if="readOnlyMode || isClient">
43
39
  <el-descriptions-item label="所属专业">{{ postName }}</el-descriptions-item>
44
40
  <el-descriptions-item label="问题描述">
45
41
  <el-input
@@ -52,7 +48,7 @@
52
48
  >
53
49
  </el-input>
54
50
  </el-descriptions-item>
55
- </el-descriptions >
51
+ </el-descriptions>
56
52
  <el-form
57
53
  v-else
58
54
  @submit.native.prevent
@@ -152,54 +148,56 @@
152
148
  >{{ detailModel.replyTime }}
153
149
  </el-form-item>
154
150
  </el-form>
155
- <el-descriptions :column="1" v-else>
151
+ <el-descriptions :column="1" v-else>
156
152
  <el-descriptions-item label="解决人">{{ detailModel.solveBy }}</el-descriptions-item>
157
153
  <el-descriptions-item label="解决意见">{{ proofStatus }}</el-descriptions-item>
158
154
  <el-descriptions-item label="备注">{{ detailModel.remark }}</el-descriptions-item>
159
- <el-descriptions-item label="创建时间">{{ detailModel.createTime }}</el-descriptions-item>
160
- <el-descriptions-item label="回复时间">{{ detailModel.replyTime }}</el-descriptions-item>
161
- </el-descriptions >
155
+ <el-descriptions-item label="创建时间">{{
156
+ detailModel.createTime
157
+ }}</el-descriptions-item>
158
+ <el-descriptions-item label="回复时间">{{
159
+ detailModel.replyTime
160
+ }}</el-descriptions-item>
161
+ </el-descriptions>
162
162
  </el-col>
163
163
  </el-row>
164
164
  <span v-show="!readOnlyMode" slot="footer" class="dialog-footer">
165
165
  <el-button @click="close(true, true)">取消</el-button>
166
- <el-button
167
- v-if="isClient"
168
- type="primary"
169
- @click="clickSave"
170
- :loading="updatingOpinion"
171
- >保存</el-button>
166
+ <el-button v-if="isClient" type="primary" @click="clickSave" :loading="updatingOpinion"
167
+ >保存</el-button
168
+ >
172
169
  <el-button
173
170
  v-else
174
- type="primary"
175
- @click="clickSave"
171
+ type="primary"
172
+ @click="clickSave"
176
173
  :loading="updatingOpinion"
177
174
  v-hasPermi="btnPermission"
178
- >保存</el-button>
175
+ >保存</el-button
176
+ >
179
177
  </span>
180
178
  </el-dialog>
181
179
  </div>
182
180
  </template>
183
181
  <script>
184
- import ImageViewer from './imageViewer'
182
+ import ImageViewer from './imageViewer';
185
183
  export default {
186
184
  components: {
187
- ImageViewer
185
+ ImageViewer,
188
186
  },
189
187
  props: {
190
188
  dialogVisible: {
191
189
  type: Boolean,
192
- default: false
190
+ default: false,
193
191
  },
194
192
  // 批注前初始的文档文件数据
195
193
  fileData: {
196
194
  type: Object,
197
- default: () => {}
195
+ default: () => {},
198
196
  },
199
197
  // 批注后文件的数据
200
198
  annotationFileData: {
201
199
  type: Object,
202
- default: () => {}
200
+ default: () => {},
203
201
  },
204
202
  // // 列表id 用于查看详情
205
203
  // dataId: {
@@ -209,25 +207,25 @@ export default {
209
207
  // 操作类型
210
208
  moduleType: {
211
209
  type: String,
212
- default: 'add'
210
+ default: 'add',
213
211
  },
214
212
  detailProps: {
215
213
  type: Object,
216
- default: () => {}
214
+ default: () => {},
217
215
  },
218
216
  postList: {
219
217
  type: Array,
220
- default: () => []
218
+ default: () => [],
221
219
  },
222
220
  userList: {
223
221
  type: Array,
224
- default: () => []
222
+ default: () => [],
225
223
  },
226
- isClient:{
224
+ isClient: {
227
225
  type: Boolean,
228
- default: false
226
+ default: false,
229
227
  },
230
- readOnlyMode:{
228
+ readOnlyMode: {
231
229
  type: Boolean,
232
230
  default: false,
233
231
  },
@@ -244,45 +242,51 @@ export default {
244
242
  },
245
243
  computed: {
246
244
  screenshotUrl: {
247
- get(){
245
+ get() {
248
246
  // console.log(this.detailModel.previewScreenshotData)
249
- const screenshotUrl = this.detailModel.previewScreenshotData || `//${this.detailModel.problemPrintscreen}`;
247
+ const screenshotUrl =
248
+ this.detailModel.previewScreenshotData || `//${this.detailModel.problemPrintscreen}`;
250
249
  return screenshotUrl;
251
250
  },
252
- set(val){
251
+ set(val) {
253
252
  this.detailModel.problemPrintscreen = val;
254
- }
253
+ },
255
254
  },
256
255
  detailModel: {
257
- get(){
258
- const detailData = Object.keys(this.detailProps).length ? this.detailProps
259
- : Object.keys(this.detailData).length ? this.detailData : {};
256
+ get() {
257
+ const detailData = Object.keys(this.detailProps).length
258
+ ? this.detailProps
259
+ : Object.keys(this.detailData).length
260
+ ? this.detailData
261
+ : {};
260
262
 
261
- return detailData
262
- }
263
+ return detailData;
264
+ },
263
265
  },
264
- isErrorImage(){
266
+ isErrorImage() {
265
267
  return !(this.detailModel.previewScreenshotData || this.detailModel.problemPrintscreen);
266
268
  },
267
- solveBy(){
268
- const item = this.userList.find(item => item.value === this.detailModel.solveBy)
269
+ solveBy() {
270
+ const item = this.userList.find((item) => item.value === this.detailModel.solveBy);
269
271
  return item && item.value;
270
272
  },
271
- proofStatus(){
272
- const item = this.filterStatusOpt.find(item => item.value === this.detailModel.status)
273
- return item && item.label
273
+ proofStatus() {
274
+ const item = this.filterStatusOpt.find((item) => item.value === this.detailModel.status);
275
+ return item && item.label;
274
276
  },
275
- postName(){
276
- const item = this.postList.find(item => item.postId === this.detailModel.postId)
277
- return item && item.postName
277
+ postName() {
278
+ const item = this.postList.find((item) => item.postId === this.detailModel.postId);
279
+ return item && item.postName;
278
280
  },
279
281
  isEditing() {
280
- return this.detailProps.id != undefined
282
+ return this.detailProps.id != undefined;
281
283
  },
282
284
  btnPermission() {
283
- const btnPermission = this.isEditing ? [`project:opinion:edit:proj:${this.defaultParams.projectId}`] : [`project:opinion:add:proj:${this.defaultParams.projectId}`];
284
- return btnPermission
285
- }
285
+ const btnPermission = this.isEditing
286
+ ? [`project:opinion:edit:proj:${this.defaultParams.projectId}`]
287
+ : [`project:opinion:add:proj:${this.defaultParams.projectId}`];
288
+ return btnPermission;
289
+ },
286
290
  },
287
291
  data() {
288
292
  return {
@@ -299,37 +303,35 @@ export default {
299
303
  detailData: {},
300
304
  filterStatusOpt: [
301
305
  {
302
- value: "0",
303
- label: "未处理",
306
+ value: '0',
307
+ label: '未处理',
304
308
  },
305
309
  {
306
- value: "1",
307
- label: "已处理",
310
+ value: '1',
311
+ label: '已处理',
308
312
  },
309
313
  {
310
- value: "2",
311
- label: "待确认",
312
- }
314
+ value: '2',
315
+ label: '待确认',
316
+ },
313
317
  ],
314
318
  showDialog: false,
315
319
  rules: {
316
- solveBy: [
317
- { required: true, message: "请选择解决人", trigger: "blur" },
318
- ],
319
- }
320
- }
320
+ solveBy: [{ required: true, message: '请选择解决人', trigger: 'blur' }],
321
+ },
322
+ };
321
323
  },
322
324
  watch: {
323
325
  dialogVisible(val) {
324
326
  if (val) {
325
- this.showDialog = true
327
+ this.showDialog = true;
326
328
  } else {
327
- this.showDialog = false
329
+ this.showDialog = false;
328
330
  }
329
331
  },
330
- showDialog(val){
331
- val === false && this.close(true)
332
- }
332
+ showDialog(val) {
333
+ val === false && this.close(true);
334
+ },
333
335
  },
334
336
  created() {
335
337
  if (this.moduleType === 'add') {
@@ -338,196 +340,196 @@ export default {
338
340
  // this.perview() // 预览
339
341
  } else {
340
342
  // this.moduleType === 'operation' && this.getUserList() // 获取用户列表
341
- this.handleDetail()
343
+ this.handleDetail();
342
344
  }
343
345
  },
344
346
  methods: {
345
347
  perview() {
346
- let _this = this
348
+ let _this = this;
347
349
  perview({ id: this.fileId })
348
350
  .then((res) => {
349
- let reader = new FileReader()
350
- reader.readAsDataURL(res) // 转换为base64
351
+ let reader = new FileReader();
352
+ reader.readAsDataURL(res); // 转换为base64
351
353
  reader.onload = function () {
352
- _this.imageUrl = reader.result
353
- _this.$refs.ImageViewrRef.resetImage()
354
- }
354
+ _this.imageUrl = reader.result;
355
+ _this.$refs.ImageViewrRef.resetImage();
356
+ };
355
357
  })
356
358
  .finally(() => {
357
- this.loading = false
358
- })
359
+ this.loading = false;
360
+ });
359
361
  },
360
362
  // 详情
361
363
  handleDetail() {
362
- this.loading = true
364
+ this.loading = true;
363
365
  detail({ id: this.dataId }).then((res) => {
364
366
  if (res.code === 200) {
365
- this.detailData = res.data
367
+ this.detailData = res.data;
366
368
  // 撤回状态
367
369
  if (res.data.status === '2' && this.moduleType === 'view')
368
- this.detailData.recordList = [res.data]
370
+ this.detailData.recordList = [res.data];
369
371
  // 流程字段 操作模式并当前登陆人 = 创建人
370
372
  if (
371
373
  this.moduleType === 'operation' &&
372
374
  this.detailData.createBy === this.userName &&
373
375
  this.detailData.recordList.length === 0
374
376
  ) {
375
- this.form.operateState = '0'
377
+ this.form.operateState = '0';
376
378
  this.$nextTick(() => {
377
- this.$refs.form.clearValidate('operateState') // 移除校验
378
- })
379
+ this.$refs.form.clearValidate('operateState'); // 移除校验
380
+ });
379
381
  }
380
- this.fileId = res.data.fileId
381
- this.perview()
382
+ this.fileId = res.data.fileId;
383
+ this.perview();
382
384
  }
383
- })
385
+ });
384
386
  },
385
387
  // 下一处理人 输入建议
386
388
  querySearch(queryString, cb) {
387
- var restaurants = this.userList
388
- var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants
389
+ var restaurants = this.userList;
390
+ var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants;
389
391
  // 调用 callback 返回建议列表的数据
390
392
  if (results.length === 0) {
391
- this.form.nextUser = ''
392
- this.form.nextUserName = ''
393
- this.$set(this.form, 'nextUserName', '')
393
+ this.form.nextUser = '';
394
+ this.form.nextUserName = '';
395
+ this.$set(this.form, 'nextUserName', '');
394
396
  }
395
- cb(results)
397
+ cb(results);
396
398
  },
397
399
  createFilter(queryString) {
398
400
  return (restaurant) => {
399
- return restaurant.nickName.toLowerCase().indexOf(queryString.toLowerCase()) === 0
400
- }
401
+ return restaurant.nickName.toLowerCase().indexOf(queryString.toLowerCase()) === 0;
402
+ };
401
403
  },
402
404
  // 选择处理人
403
405
  handleSelect(item) {
404
- this.form.nextUser = item.userName
405
- this.form.nextUserName = item.nickName
406
- this.$set(this.form, 'nextUserName', item.nickName)
406
+ this.form.nextUser = item.userName;
407
+ this.form.nextUserName = item.nickName;
408
+ this.$set(this.form, 'nextUserName', item.nickName);
407
409
  this.$nextTick(() => {
408
- this.$refs.form.clearValidate('nextUserName') // 移除校验
409
- })
410
+ this.$refs.form.clearValidate('nextUserName'); // 移除校验
411
+ });
410
412
  },
411
413
  // 提交/撤回/操作处理
412
414
  dialogConfirm() {
413
- let that = this
414
- let timer = null
415
+ let that = this;
416
+ let timer = null;
415
417
  switch (this.moduleType) {
416
418
  case 'view':
417
- this.revokeAnnotations() // 撤销
418
- break
419
+ this.revokeAnnotations(); // 撤销
420
+ break;
419
421
 
420
422
  default:
421
423
  timer = setTimeout(() => {
422
424
  that.$refs.form.validate((valid) => {
423
425
  if (valid) {
424
- that.moduleType === 'add' && that.addAnnotations()
425
- that.moduleType === 'operation' && that.operateAnnotations()
426
- clearTimeout(timer)
426
+ that.moduleType === 'add' && that.addAnnotations();
427
+ that.moduleType === 'operation' && that.operateAnnotations();
428
+ clearTimeout(timer);
427
429
  }
428
- })
429
- }, 300)
430
- break
430
+ });
431
+ }, 300);
432
+ break;
431
433
  }
432
434
  },
433
435
  // 新增批注
434
436
  addAnnotations() {
435
- this.dialogLoading = true
437
+ this.dialogLoading = true;
436
438
  let params = {
437
439
  // projectId: store.getters.projectId,
438
440
  name: this.fileData.fileName,
439
441
  origFileId: this.fileData.fileId, // 原始的文件id
440
442
  fileId: this.annotationFileData.fileId,
441
443
  // deptName: store.getters.deptName,
442
- type: 'doc' // model:模型。doc:文档
443
- }
444
+ type: 'doc', // model:模型。doc:文档
445
+ };
444
446
  // 添加批注
445
447
  add(Object.assign(params, this.form))
446
448
  .then((res) => {
447
449
  this.$message({
448
450
  type: res.code === 200 ? 'success' : 'error',
449
- message: res.msg
450
- })
451
- if (res.code === 200) this.$emit('handleAdd')
451
+ message: res.msg,
452
+ });
453
+ if (res.code === 200) this.$emit('handleAdd');
452
454
  })
453
455
  .finally(() => {
454
- this.dialogLoading = false
455
- })
456
+ this.dialogLoading = false;
457
+ });
456
458
  },
457
459
  // 撤销
458
460
  revokeAnnotations() {
459
- this.dialogLoading = true
461
+ this.dialogLoading = true;
460
462
  revoke({ id: this.detailData.id })
461
463
  .then((res) => {
462
464
  this.$message({
463
465
  type: res.code === 200 ? 'success' : 'error',
464
- message: res.msg
465
- })
466
- if (res.code === 200) this.close(true)
466
+ message: res.msg,
467
+ });
468
+ if (res.code === 200) this.close(true);
467
469
  })
468
470
  .finally(() => {
469
- this.dialogLoading = false
470
- })
471
+ this.dialogLoading = false;
472
+ });
471
473
  },
472
474
  // 操作 处理
473
475
  operateAnnotations() {
474
- this.dialogLoading = true
476
+ this.dialogLoading = true;
475
477
  let params = {
476
478
  id: this.detailData.id,
477
479
  // fileId: this.detailData.fileId,
478
480
  // deptName: store.getters.deptName
479
- }
481
+ };
480
482
  operate(Object.assign(params, this.form))
481
483
  .then((res) => {
482
484
  this.$message({
483
485
  type: res.code === 200 ? 'success' : 'error',
484
- message: res.msg
485
- })
486
- if (res.code === 200) this.close(true)
486
+ message: res.msg,
487
+ });
488
+ if (res.code === 200) this.close(true);
487
489
  })
488
490
  .finally(() => {
489
- this.dialogLoading = false
490
- })
491
+ this.dialogLoading = false;
492
+ });
491
493
  },
492
494
  // 关闭弹窗 refresh 判断是否需要刷新列表数据
493
495
  close(refresh, resetForm) {
494
- if(this.isClient && resetForm){
496
+ if (this.isClient && resetForm) {
495
497
  this.$refs.form.resetFields();
496
498
  }
497
- this.$emit('close', refresh)
499
+ this.$emit('close', refresh);
498
500
  },
499
501
  dialogConfirmChooseUser(list) {
500
- this.form.nextUser = list[0].label
501
- this.$set(this.form, 'nextUserName', list[0].nickName)
502
+ this.form.nextUser = list[0].label;
503
+ this.$set(this.form, 'nextUserName', list[0].nickName);
502
504
  this.$nextTick(() => {
503
- this.$refs.form.clearValidate('nextUserName') // 移除校验
504
- })
505
- this.chooseUserDialog = false
505
+ this.$refs.form.clearValidate('nextUserName'); // 移除校验
506
+ });
507
+ this.chooseUserDialog = false;
506
508
  },
507
- clickEdit(){
509
+ clickEdit() {
508
510
  this.$emit('clickEditPic', this.detailModel);
509
511
  },
510
- clickSave(){
511
- if(this.isClient){
512
- this.$refs["form"].validate(async (valid) => {
512
+ clickSave() {
513
+ if (this.isClient) {
514
+ this.$refs['form'].validate(async (valid) => {
513
515
  if (valid) {
514
516
  this.handleSave();
515
517
  }
516
518
  });
517
- }else{
519
+ } else {
518
520
  this.handleSave();
519
521
  }
520
522
  },
521
- handleSave(reset){
522
- this.close(true, reset)
523
- this.$emit("clickSaveBtn", this.detailModel);
523
+ handleSave(reset) {
524
+ this.close(true, reset);
525
+ this.$emit('clickSaveBtn', this.detailModel);
524
526
  },
525
- beforeClose(){
527
+ beforeClose() {
526
528
  // this.detailData = {};
527
- this.close(true)
528
- }
529
- }
530
- }
529
+ this.close(true);
530
+ },
531
+ },
532
+ };
531
533
  </script>
532
534
  <style lang="scss" scoped>
533
535
  .nextUser {
@@ -549,7 +551,7 @@ export default {
549
551
  padding: 12px;
550
552
  border-top: 1px solid rgba(0, 0, 0, 0.09);
551
553
  }
552
- .image-edit-container{
554
+ .image-edit-container {
553
555
  cursor: pointer;
554
556
  float: right;
555
557
  width: 36px;
@@ -559,9 +561,8 @@ export default {
559
561
  display: flex;
560
562
  justify-content: center;
561
563
  align-items: center;
562
- .image-edit{
564
+ .image-edit {
563
565
  font-size: 32px;
564
566
  }
565
567
  }
566
-
567
568
  </style>