zydx-plus 1.36.644 → 1.36.646

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zydx-plus",
3
- "version": "1.36.644",
3
+ "version": "1.36.646",
4
4
  "description": "Vue.js",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -1,28 +1,37 @@
1
+ /** 可拖拽弹窗组件 - 支持拖拽移动、调整大小、全屏、最小化、关闭等功能 */
1
2
  <template>
2
- <div class="drag-pop" :class="{trans: transAll, 'drag-pop-shadow': !fixedStart}" :style="position" :id="id" @click.stop="dragTap">
3
+ <!-- 弹窗主体,支持过渡动画和阴影效果 -->
4
+ <div class="drag-pop" :class="{trans: transAll, 'drag-pop-shadow': !fixedStart}" :style="position" :id="id" @mousedown.stop="dragTap">
5
+ <!-- 标题栏区域,可拖拽移动 -->
3
6
  <div v-show="!fixedStart" class="drag-head" :style="{'background-color':titleColor}" @click="selectedDrag">
4
7
  <span class="title" :id="'draggable' + id">
8
+ <!-- 标题插槽 -->
5
9
  <slot name="title">
6
10
  <div v-html="title" style="width: 100%" :style="{'text-align': title === ''? 'center':'left'}"></div>
7
11
  </slot>
8
12
  </span>
13
+ <!-- 操作按钮区域 -->
9
14
  <div class="drag-i">
10
- <i class="share" v-if="share" @click.stop="shareTap"></i>
11
- <i class="minimize-cir" v-if="minimizeCir" @click.stop="minimizeTap"></i>
12
- <i class="minimize" v-if="minimize" @click.stop="minimizeTap"></i>
13
- <slot name="icon"></slot>
14
- <i class="disconnect" v-if="disconnectShow" @click.stop="disconnect"></i>
15
- <i class="enlarge" v-if="enlargeShow" @click.stop="enlarge"></i>
16
- <i v-if="closeShow" @click.stop="close"></i>
15
+ <i class="share" v-if="share" @click.stop="shareTap"></i> <!-- 分享按钮 -->
16
+ <i class="minimize-cir" v-if="minimizeCir" @click.stop="minimizeTap"></i> <!-- 最小化圆形按钮 -->
17
+ <i class="minimize" v-if="minimize" @click.stop="minimizeTap"></i> <!-- 最小化按钮 -->
18
+ <slot name="icon"></slot> <!-- 自定义图标插槽 -->
19
+ <i class="disconnect" v-if="disconnectShow" @click.stop="disconnect"></i> <!-- 断开连接按钮 -->
20
+ <i class="enlarge" v-if="enlargeShow" @click.stop="enlarge"></i> <!-- 全屏按钮 -->
21
+ <i v-if="closeShow" @click.stop="close"></i> <!-- 关闭按钮 -->
17
22
  </div>
18
23
  </div>
24
+ <!-- 内容区域 -->
19
25
  <div :class="{'drag-cont2': fixedStart,'drag-conts': true}">
20
26
  <div class="drag-cont-slot" :class="{'zIndexSlot': footIsMove}">
27
+ <!-- 拖拽时遮罩层,防止拖拽事件穿透到内容区 -->
21
28
  <div class="zIndexSlot" v-if="footIsMove || draggableMove"></div>
22
- <slot name="content"></slot>
29
+ <slot name="content"></slot> <!-- 内容插槽 -->
23
30
  </div>
31
+ <!-- 底部调整大小手柄区域 -->
24
32
  <div v-show="!fixedStart&&!autoHeight">
25
33
  <!-- <i :class="{'drag-down2':!(dragStatus&&dragTextShow&&!fixedStart&&!autoHeight)}" class="drag-down" v-if="dragStatus" @mousedown.stop="footDown($event,'d')" @mouseup.stop="footUp"></i>-->
34
+ <!-- 对角线调整大小手柄 -->
26
35
  <i :class="{'drag-in2':!(dragStatus&&dragTextShow&&!fixedStart&&!autoHeight)}" class="drag-in" v-if="dragStatus" @mousedown.stop="footDown($event,'in')" @mouseup.stop="footUp"></i>
27
36
  <!-- <i :class="{'drag-right2':!(dragStatus&&dragTextShow&&!fixedStart&&!autoHeight)}" class="drag-right" v-if="dragStatus" @mousedown.stop="footDown($event,'r')" @mouseup.stop="footUp"></i>-->
28
37
  </div>
@@ -55,93 +64,93 @@ export default {
55
64
  footIsMove: false,//是否移动标识
56
65
  direction: '',//移动方向
57
66
  id: '',//id
58
- state: false,//是否显示
67
+ state: false,//是否全屏显示
59
68
  clientWidth: 0,
60
69
  clientHeight: 0,
61
- transAll: false,
62
- fixedStart: false,
63
- initWidth: 1280,
64
- draggableState: null,
65
- draggableMove: false,
66
- zIndex: 10000
70
+ transAll: false, // 是否启用过渡动画
71
+ fixedStart: false, // 是否固定定位模式
72
+ initWidth: 1280, // 初始宽度基准值
73
+ draggableState: null, // interactjs拖拽实例
74
+ draggableMove: false, // 是否正在拖拽移动
75
+ zIndex: 10000 // 层级
67
76
  }
68
77
  },
69
78
  props: {
70
- isInitShowBottomRight: {
79
+ isInitShowBottomRight: { // 是否初始化时显示在右下角
71
80
  type: Boolean,
72
81
  default: false
73
82
  },
74
- width: {
83
+ width: { // 弹窗宽度
75
84
  type: Number,
76
85
  default: 600
77
86
  },
78
- height: {
87
+ height: { // 弹窗高度
79
88
  type: Number,
80
89
  default: 400
81
90
  },
82
- fixed: {
91
+ fixed: { // 是否固定定位
83
92
  type: Boolean,
84
93
  default: false
85
94
  },
86
- left: {
95
+ left: { // 左侧偏移量
87
96
  type: Number,
88
97
  default: 0
89
98
  },
90
- top: {
99
+ top: { // 顶部偏移量
91
100
  type: Number,
92
101
  default: 0
93
102
  },
94
- titleColor: {
103
+ titleColor: { // 标题栏背景颜色
95
104
  type: String,
96
105
  default: 'rgba(75, 12, 119, 1)'
97
106
  },
98
107
  // 修改拖拽弹窗默认高度,不需要下面30px
99
- dragStatus: {
108
+ dragStatus: { // 是否显示调整大小手柄
100
109
  type: Boolean,
101
110
  default: true
102
111
  },
103
- enlargeShow: {
112
+ enlargeShow: { // 是否显示全屏按钮
104
113
  type: Boolean,
105
114
  default: true
106
115
  },
107
- disconnectShow: {
116
+ disconnectShow: { // 是否显示断开连接按钮
108
117
  type: Boolean,
109
118
  default: false
110
119
  },
111
- title: {
120
+ title: { // 弹窗标题
112
121
  type: String,
113
122
  default: ''
114
123
  },
115
124
  // 修改拖拽弹窗默认高度,不需要下面30px
116
- dragTextShow: {
125
+ dragTextShow: { // 是否显示底部拖拽文字
117
126
  type: Boolean,
118
127
  default: false
119
128
  },
120
- minimize: {
129
+ minimize: { // 是否显示最小化按钮(方形)
121
130
  type: Boolean,
122
131
  default: false
123
132
  },
124
- minimizeCir: {
133
+ minimizeCir: { // 是否显示最小化按钮(圆形)
125
134
  type: Boolean,
126
135
  default: true
127
136
  },
128
- minWidth: {
137
+ minWidth: { // 弹窗最小宽度
129
138
  type: Number,
130
139
  default: 300
131
140
  },
132
- minHeight: {
141
+ minHeight: { // 弹窗最小高度
133
142
  type: Number,
134
143
  default: 200
135
144
  },
136
- closeShow: {
145
+ closeShow: { // 是否显示关闭按钮
137
146
  type: Boolean,
138
147
  default: true
139
148
  },
140
- autoHeight: {
149
+ autoHeight: { // 是否自适应高度
141
150
  type: Boolean,
142
151
  default: false
143
152
  },
144
- share: {
153
+ share: { // 是否显示分享按钮
145
154
  type: Boolean,
146
155
  default: false
147
156
  }
@@ -223,6 +232,7 @@ export default {
223
232
  this.dragTap()
224
233
  },
225
234
  computed: {
235
+ // 计算弹窗的定位样式
226
236
  position() {
227
237
  if(this.autoHeight) {
228
238
  return `top:${this.y}px;left:${this.x}px;width:${this.footRightOffset}px;min-height:${this.footDownOffset}px;z-index:${this.zIndex}`;
@@ -233,6 +243,7 @@ export default {
233
243
  },
234
244
  emits: ['dragStatus', 'close', 'enlarge','updateDrag','minimize','dragMouseup', 'share'],
235
245
  methods: {
246
+ // 全屏状态变化处理
236
247
  handleFullScreenChange() {
237
248
  if (!document.fullscreenElement) {
238
249
  this.reducePop()
@@ -270,6 +281,7 @@ export default {
270
281
  }
271
282
  this.state = false
272
283
  },
284
+ // 点击弹窗置顶,管理多个弹窗的z-index
273
285
  dragTap() {
274
286
  let pop = JSON.parse(sessionStorage.getItem('pop'))
275
287
  for(let i = 0; i< pop.length; i++) {
@@ -284,6 +296,7 @@ export default {
284
296
  }
285
297
  sessionStorage.setItem('pop', JSON.stringify(pop))
286
298
  },
299
+ // 清理sessionStorage中的弹窗记录
287
300
  clean() {
288
301
  let pop = JSON.parse(sessionStorage.getItem('pop'))
289
302
  pop.forEach((x,i) => {
@@ -293,9 +306,11 @@ export default {
293
306
  })
294
307
  sessionStorage.setItem('pop', JSON.stringify(pop))
295
308
  },
309
+ // 断开连接事件
296
310
  disconnect() {
297
311
  this.$emit('dragStatus')
298
312
  },
313
+ // 初始化弹窗位置和拖拽功能
299
314
  init() {
300
315
  const that = this
301
316
  if(this.fixedStart) {
@@ -350,6 +365,7 @@ export default {
350
365
  })
351
366
  },0)
352
367
  },
368
+ // 设置弹窗宽高并启用过渡动画
353
369
  getWH(v) {
354
370
  this.transAll = true
355
371
  this.footRightOffset = v.width
@@ -358,12 +374,14 @@ export default {
358
374
  this.transAll = false
359
375
  },300)
360
376
  },
377
+ // 底部调整大小手柄按下
361
378
  footDown(event, v) {
362
379
  event.preventDefault()
363
380
  this.direction = v
364
381
  this.footIsMove = true;
365
382
  this.dragTap()
366
383
  },
384
+ // 底部调整大小手柄移动,根据方向调整宽高
367
385
  footMove(event) {
368
386
  event.preventDefault()
369
387
  if (this.state) return;
@@ -389,6 +407,7 @@ export default {
389
407
  top: this.y
390
408
  })
391
409
  },
410
+ // 底部调整大小手柄抬起,触发拖拽结束事件
392
411
  footUp() {
393
412
  this.$emit('dragMouseup', {
394
413
  width: this.footRightOffset,
@@ -396,6 +415,7 @@ export default {
396
415
  })
397
416
  this.footIsMove = false;
398
417
  },
418
+ // 还原弹窗到默认大小和居中位置
399
419
  reducePop() {
400
420
  setTimeout(() => {
401
421
  this.x = document.documentElement.clientWidth / 2 - this.width / 2;
@@ -412,6 +432,7 @@ export default {
412
432
  })
413
433
  },100)
414
434
  },
435
+ // 切换全屏/还原
415
436
  enlarge() {
416
437
  if(this.state) {
417
438
  this.exitFullscreen()
@@ -433,21 +454,25 @@ export default {
433
454
  }
434
455
  this.$emit('enlarge', this.state)
435
456
  },
457
+ // 最小化按钮点击
436
458
  minimizeTap() {
437
459
  this.isMove = false
438
460
  this.footIsMove = false
439
461
  if(this.state) this.exitFullscreen()
440
462
  this.$emit('minimize');
441
463
  },
464
+ // 分享按钮点击
442
465
  shareTap() {
443
466
  this.$emit('share');
444
467
  },
468
+ // 关闭按钮点击
445
469
  close() {
446
470
  this.isMove = false
447
471
  this.footIsMove = false
448
472
  if(this.state) this.exitFullscreen()
449
473
  this.$emit('close');
450
474
  },
475
+ // 点击标题栏选中弹窗(置顶)
451
476
  selectedDrag(){
452
477
  this.$emit('selectedDrag')
453
478
  }
@@ -16,6 +16,7 @@
16
16
  <button @click="download">下载图片</button>
17
17
  <button @click="fullTap(false)" v-if="fullShow && full">全屏</button>
18
18
  <button @click="fullDel(true)" v-if="!fullShow">退出</button>
19
+ <button @click="save">保存</button>
19
20
  </div>
20
21
  <div :class="{'graph-relation-only': readOnly, 'graph-relation': !readOnly}" ref="graphContent">
21
22
  <RelationGraph ref="graphRef" :options="options" @node-click="onNodeClick" @line-click="onLineClick" @canvas-click="onCanvasClick" @node-drag-end="nodeDragEnd">
@@ -119,7 +120,7 @@ export default {
119
120
  left2: 0,
120
121
  }
121
122
  },
122
- emits: ['update:value'], // 数据变更时向父组件回传最新图谱数据(v-model:value)
123
+ emits: ['update:value', 'save'], // 数据变更时向父组件回传最新图谱数据(v-model:value)
123
124
  props: {
124
125
  /** 图谱数据(v-model),含 nodes / lines */
125
126
  value: {
@@ -173,6 +174,9 @@ export default {
173
174
  window.removeEventListener('keydown', this.handleKeydown)
174
175
  },
175
176
  methods: {
177
+ save() {
178
+ this.$emit('save')
179
+ },
176
180
  // ===== 全屏相关 =====
177
181
  /** 进入全屏:标记状态并让 body 全屏,随后重绘画布铺满视口 */
178
182
  fullTap(v) {
package/src/index.js CHANGED
@@ -89,7 +89,7 @@ function install(app) {
89
89
  }
90
90
 
91
91
  export default {
92
- version: '1.36.644',
92
+ version: '1.36.646',
93
93
  install,
94
94
  Calendar,
95
95
  Message,