zydx-plus 1.35.600 → 1.35.601

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.35.600",
3
+ "version": "1.35.601",
4
4
  "description": "Vue.js",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -55,7 +55,8 @@ export default {
55
55
  Rgb:{r:255,g:255,b:255},
56
56
  opacity: 1,
57
57
  s: 0,
58
- l: 0
58
+ l: 0,
59
+ maskRgb:{}
59
60
  }
60
61
  },
61
62
  props: {
@@ -64,8 +65,7 @@ export default {
64
65
  },
65
66
  created() {
66
67
  this.$nextTick(() => {
67
- console.log(this.color)
68
- if(this.color === undefined) return
68
+ if(!this.color) return
69
69
  this.alternativeColor(this.color)
70
70
  })
71
71
  },
@@ -126,8 +126,8 @@ export default {
126
126
  if(x >= w) this.colorX = w
127
127
  if(y <= 0) this.colorY = 0
128
128
  if(y >= h) this.colorY = h
129
- this.s = x / w
130
- this.l = (h - y) / h
129
+ this.s = w? x / w : 0
130
+ this.l = h? (h - y) / h : 0
131
131
  this.rgbaColor()
132
132
  },
133
133
  rgbaColor() {
@@ -17,7 +17,6 @@ function hsv2rgb(h, s, v) {
17
17
  case 4: r = t; g = p; b = v; break;
18
18
  case 5: r = v, g = p, b = q; break;
19
19
  }
20
-
21
20
  var round = (value) => Math.round(value * 255)
22
21
  return {
23
22
  r: round(r),
@@ -92,12 +91,12 @@ function rgbToHsb(rgb) {
92
91
  function rgb2Hex(r, g, b) {
93
92
  var o = (r << 16 | g << 8 | b).toString(16)
94
93
  return o.length < 6 ? ("#".concat("0".repeat(6 - o.length)).concat(o)):"#".concat(o);
95
- }
96
-
97
-
98
- module.exports = {
99
- hsv2rgb,
100
- rgb2hsv,
101
- rgbToHsb,
102
- rgb2Hex
94
+ }
95
+
96
+
97
+ module.exports = {
98
+ hsv2rgb,
99
+ rgb2hsv,
100
+ rgbToHsb,
101
+ rgb2Hex
103
102
  }
@@ -0,0 +1,177 @@
1
+ <template>
2
+ <div class="node-style node-style-line" :class="{'node-s': show, 'node-h': !show}">
3
+ <div class="style-li">
4
+ <img @click="nodeStyle"
5
+ src="data:image/png;base64,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"
6
+ alt=""/>
7
+ <div class="style-title">文字</div>
8
+ <div class="style-list">
9
+ <div class="node-left zIndex2">
10
+ <span>字号</span>
11
+ <Select :options="optionSize" v-model:value="sizeValue"></Select>
12
+ </div>
13
+ <div class="node-left padd zIndex2">
14
+ <span>行高</span>
15
+ <Select :options="optionRow" v-model:value="rowValue"></Select>
16
+ </div>
17
+ </div>
18
+ <div class="style-list">
19
+ <div class="node-left">
20
+ <span>颜色</span>
21
+ <div @click="colorTap($event,'associativeLineTextColor')" :style="{'background-color': associativeLineTextColor}" class="backColor"></div>
22
+ </div>
23
+ </div>
24
+ </div>
25
+ <div class="style-li">
26
+ <div class="style-title">边框</div>
27
+ <div class="style-list">
28
+ <div class="node-left">
29
+ <span>颜色</span>
30
+ <div @click="colorTap($event,'associativeLineColor')" :style="{'background-color': associativeLineColor}" class="backColor"></div>
31
+ </div>
32
+ <div class="node-left padd zIndex3">
33
+ <span>线宽</span>
34
+ <Select :options="optionLine" v-model:value="styleValue"></Select>
35
+ </div>
36
+ </div>
37
+ </div>
38
+ <div class="back-col" :style="{top: top + 'px'}" v-if="colorShow">
39
+ <Coloring @submit="submit" @empty="empty" @rgba="rgba" :color="colorRgba"></Coloring>
40
+ </div>
41
+ </div>
42
+ </template>
43
+
44
+ <script>
45
+ import Select from '../../select/src/select.vue'
46
+ import Coloring from '../../coloring/src/coloring.vue'
47
+
48
+ export default {
49
+ components: {Select, Coloring},
50
+ data() {
51
+ return {
52
+ show: false,
53
+ top: 0,
54
+ colorRgba: '',
55
+ colorShow: false,
56
+ colorType: '',
57
+ optionSize: [
58
+ {label: "12", value: 12},
59
+ {label: "14", value: 14},
60
+ {label: "16", value: 16},
61
+ {label: "18", value: 18},
62
+ {label: "20", value: 20},
63
+ {label: "24", value: 24},
64
+ {label: "26", value: 26},
65
+ {label: "28", value: 28},
66
+ {label: "30", value: 30}
67
+ ],
68
+ sizeValue: 14,
69
+ optionRow: [
70
+ {label: "1.2", value: 1.2},
71
+ {label: "1.5", value: 1.5},
72
+ {label: "2", value: 2},
73
+ {label: "2.5", value: 2.5},
74
+ {label: "3", value: 3}
75
+ ],
76
+ rowValue: 1.2,
77
+ optionLine: [
78
+ {label: "0", value: 0},
79
+ {label: "1", value: 1},
80
+ {label: "2", value: 2},
81
+ {label: "3", value: 3},
82
+ {label: "4", value: 4},
83
+ {label: "5", value: 5},
84
+ {label: "6", value: 6},
85
+ {label: "7", value: 7}
86
+ ],
87
+ styleValue: 2,
88
+ associativeLineTextColor: '',
89
+ associativeLineColor: ''
90
+ }
91
+ },
92
+ emits: ['update:open', 'select'],
93
+ props: {
94
+ open: {
95
+ type: Boolean,
96
+ default: false
97
+ },
98
+ node: {
99
+ type: Object,
100
+ default: () => {}
101
+ }
102
+ },
103
+ watch: {
104
+ open: {
105
+ handler(val) {
106
+ this.show = val
107
+ },
108
+ deep: true
109
+ },
110
+ show: {
111
+ handler(val) {
112
+ this.$emit('update:open', val)
113
+ },
114
+ deep: true
115
+ },
116
+ node: {
117
+ handler(val) {
118
+ if (val) {
119
+ this.colorShow = false
120
+ this.sizeValue = val.associativeLineTextFontSize || 14
121
+ this.rowValue = val.associativeLineTextLineHeight || 1.2
122
+ this.styleValue = val.associativeLineWidth || 2
123
+ this.associativeLineTextColor = val.associativeLineTextColor || 'rgba(51, 51, 51, 1)'
124
+ this.associativeLineColor = val.associativeLineColor || 'rgba(51, 51, 51, 1)'
125
+ }
126
+ }
127
+ },
128
+ sizeValue: {
129
+ handler(val) {
130
+ this.$emit('select', {associativeLineTextFontSize: val})
131
+ },
132
+ deep: true
133
+ },
134
+ rowValue: {
135
+ handler(val) {
136
+ this.$emit('select', {associativeLineTextLineHeight: val})
137
+ },
138
+ deep: true
139
+ },
140
+ styleValue: {
141
+ handler(val) {
142
+ this.$emit('select', {associativeLineWidth: val})
143
+ },
144
+ deep: true
145
+ },
146
+ },
147
+ mounted() {
148
+
149
+ },
150
+ methods: {
151
+ nodeStyle() {
152
+ this.show = false
153
+ },
154
+ colorTap(e, i) {
155
+ this.colorType = i
156
+ if(this.colorType === 'associativeLineTextColor') this.colorRgba = this.associativeLineTextColor
157
+ if(this.colorType === 'associativeLineColor') this.colorRgba = this.associativeLineColor
158
+ this.colorShow = !this.colorShow
159
+ },
160
+ rgba(e) {
161
+ let color = {}
162
+ color[this.colorType] = e.rgba
163
+ if(this.colorType === 'associativeLineTextColor') this.associativeLineTextColor = e.rgba
164
+ if(this.colorType === 'associativeLineColor') this.associativeLineColor = e.rgba
165
+ this.$emit('select', color)
166
+ },
167
+ submit() {
168
+ this.colorShow = false
169
+ },
170
+ empty() {
171
+ this.colorShow = false
172
+ },
173
+ }
174
+ }
175
+ </script>
176
+
177
+ <style scoped src="./mind.css"></style>
@@ -119,6 +119,10 @@
119
119
  border-radius: 5px;
120
120
  box-shadow: rgba(0, 0, 0, 0.06) 0 2px 16px 0;
121
121
  z-index: 10;
122
+ position: absolute;
123
+ top: 0;
124
+ right: 0;
125
+ left: 0;
122
126
  }
123
127
 
124
128
  .style-li {
@@ -173,6 +177,11 @@
173
177
  display: none;
174
178
  }
175
179
 
180
+ .node-style-line {
181
+ height: 240px;
182
+ margin-top: -120px;
183
+ }
184
+
176
185
  .mind-table button {
177
186
  background-color: #fff;
178
187
  border: 1px solid #ccc;
@@ -182,7 +191,33 @@
182
191
  line-height: 30px;
183
192
  flex: 1;
184
193
  }
185
-
194
+ .mind-btn{
195
+ background-color: #fff;
196
+ border: 1px solid #ccc;
197
+ cursor: pointer;
198
+ font-size: 14px;
199
+ height: 30px;
200
+ line-height: 28px;
201
+ flex: 1;
202
+ position: relative;
203
+ text-align: center;
204
+ }
205
+ .mind-btn:hover .mind-btn-list{
206
+ display: block;
207
+ }
208
+ .mind-btn-list{
209
+ display: none;
210
+ }
211
+ .mind-btn-list button{
212
+ background-color: #fff;
213
+ border: 1px solid #ccc;
214
+ cursor: pointer;
215
+ font-size: 14px;
216
+ height: 30px;
217
+ line-height: 28px;
218
+ flex: 1;
219
+ width: 100%;
220
+ }
186
221
  .mind-table button:last-child {
187
222
  margin-right: 0;
188
223
  }
@@ -206,3 +241,6 @@
206
241
  left: 0;
207
242
  z-index: 100;
208
243
  }
244
+ .font-color-back{
245
+ color: #fff;
246
+ }
@@ -6,10 +6,19 @@
6
6
  <button :disabled="mindShow" @click="brotherNode">兄弟节点</button>
7
7
  <button :disabled="mindShow" @click="delNode">删除节点</button>
8
8
  <button :disabled="mindShow" @click="associativeLine">关联线</button>
9
+ <button :disabled="lineShow" @click="lineStyle">关联样式</button>
9
10
  <button :disabled="mindShow" @click="nodeStyle">节点样式</button>
10
- <button @click="structure">结构切换</button>
11
+ <div class="mind-btn">
12
+ <span>结构切换</span>
13
+ <div class="mind-btn-list">
14
+ <button @click="structure('logicalStructure')" :disabled="layoutList === 'logicalStructure' || layoutList === ''">向右结构</button>
15
+ <button @click="structure('organizationStructure')" :disabled="layoutList === 'organizationStructure'">向下结构</button>
16
+ <button @click="structure('mindMap')" :disabled="layoutList === 'mindMap'">左右结构</button>
17
+ </div>
18
+ </div>
11
19
  <button :disabled="retShow" @click="ret">上一步</button>
12
20
  <button :disabled="forwardShow" @click="forward">下一步</button>
21
+ <button @click="reset">重置位置</button>
13
22
  <button v-if="protectShow" @click="preservation">保存</button>
14
23
  <button @click="fullTap" v-if="fullShow">全屏</button>
15
24
  <button @click="fullDel" v-else>退出</button>
@@ -17,6 +26,7 @@
17
26
  </div>
18
27
  <div :id="id" class="mindMapContainer"></div>
19
28
  <Tool v-model:open="styleStatus" :node="nodeData" @select="toolSelect"></Tool>
29
+ <LineTool v-model:open="lineStyleStatus" :node="lineData" @select="lineToolSelect"></LineTool>
20
30
  </div>
21
31
  </template>
22
32
 
@@ -27,13 +37,14 @@ import TouchEvent from 'simple-mind-map/src/plugins/TouchEvent.js'
27
37
  import AssociativeLine from 'simple-mind-map/src/plugins/AssociativeLine.js'
28
38
  import Export from 'simple-mind-map/src/plugins/Export.js'
29
39
  import Tool from "./tool.vue";
40
+ import LineTool from "./lineTool.vue";
30
41
 
31
42
  MindMap.usePlugin(AssociativeLine)
32
43
  MindMap.usePlugin(TouchEvent)
33
44
  MindMap.usePlugin(Export)
34
45
 
35
46
  export default {
36
- components: {Tool},
47
+ components: {LineTool, Tool},
37
48
  name: "zydx-mind",
38
49
  data() {
39
50
  return {
@@ -43,7 +54,10 @@ export default {
43
54
  retShow: false,
44
55
  forwardShow: false,
45
56
  nodeData: null,
57
+ lineData: null,
46
58
  colorShow: false,
59
+ lineStyleStatus: false,
60
+ lineShow: true,
47
61
  top: 0,
48
62
  activeNodes: null,
49
63
  defaultData: {
@@ -55,7 +69,9 @@ export default {
55
69
  fullShow: true,
56
70
  layoutList: '',
57
71
  updateInit: false,
58
- styleStatus: false
72
+ styleStatus: false,
73
+ activeLineNode: null,
74
+ activeLineToNode: null
59
75
  }
60
76
  },
61
77
  props: {
@@ -125,6 +141,21 @@ export default {
125
141
  }
126
142
  },
127
143
  methods: {
144
+ lineToolSelect(v) {
145
+ const associativeLineStyle = this.activeLineNode.getData('associativeLineStyle') || {}
146
+ const toNodeUid = this.activeLineToNode.getData('uid')
147
+ const lineStyle = associativeLineStyle[toNodeUid] || {}
148
+ this.activeLineNode.setData({
149
+ associativeLineStyle: {
150
+ ...associativeLineStyle,
151
+ [toNodeUid]: {
152
+ ...lineStyle,
153
+ ...v
154
+ }
155
+ }
156
+ })
157
+ this.mindMap.associativeLine.updateActiveLineStyle()
158
+ },
128
159
  toolSelect(v) {
129
160
  this.activeNodes.forEach(node => {
130
161
  node.setStyle(v.type, v.value)
@@ -194,6 +225,7 @@ export default {
194
225
  const that = this
195
226
  this.mindMap = new MindMap({
196
227
  el: document.getElementById(that.id),
228
+ openPerformance: true,
197
229
  enableFreeDrag: false, // 是否开启自由拖拽
198
230
  enableNodeTransitionMove: false, // 是否开启节点过渡动画
199
231
  layout: that.data.layoutList || 'logicalStructure', // 节点布局方式
@@ -202,16 +234,39 @@ export default {
202
234
  data: that.msgFun(that.data)
203
235
  });
204
236
  this.mindMap.setMode(this.readOnly ? 'readonly' : 'edit')
237
+ // 节点点击
205
238
  this.mindMap.on('node_active', (node, activeNodeList) => {
206
239
  this.nodeData = node
207
- this.mindShow = node === null;
208
- if(node === null) this.styleStatus = false
209
240
  this.activeNodes = activeNodeList
241
+ this.mindShow = !node
242
+ if(node) {
243
+ this.lineData = null
244
+ this.lineShow = true
245
+ }
210
246
  })
247
+ // 后退前进
211
248
  this.mindMap.on('back_forward', (index, len) => {
212
249
  this.retShow = index <= 0;
213
250
  this.forwardShow = index >= len - 1
214
251
  })
252
+ // 关联线点击
253
+ this.mindMap.on('associative_line_click', (path, clickPath, node, toNode) => {
254
+ this.activeLineNode = node
255
+ this.activeLineToNode = toNode
256
+ this.lineData = this.mindMap.associativeLine.getStyleConfig(node, toNode)
257
+ this.lineShow = false
258
+ })
259
+ // 点击画布
260
+ this.mindMap.on('draw_click', () => {
261
+ this.lineStyleStatus = false
262
+ this.styleStatus = false
263
+ this.lineShow = true
264
+ this.mindShow = true
265
+ this.nodeData = null
266
+ this.activeNodes = []
267
+ this.lineData = null
268
+ })
269
+ // 数据改变
215
270
  this.mindMap.on('data_change', (data) => {
216
271
  this.$emit('dataChange', {
217
272
  data: data,
@@ -219,16 +274,8 @@ export default {
219
274
  })
220
275
  })
221
276
  },
222
- structure() {
223
- this.layoutList = 'logicalStructure'
224
- const layout = this.mindMap.getLayout()
225
- if (layout === 'mindMap') {
226
- this.layoutList = 'organizationStructure'
227
- } else if (layout === 'organizationStructure') {
228
- this.layoutList = 'logicalStructure'
229
- } else {
230
- this.layoutList = 'mindMap'
231
- }
277
+ structure(v) {
278
+ this.layoutList = v
232
279
  this.mindMap.setLayout(this.layoutList)
233
280
  },
234
281
  // 保存
@@ -255,8 +302,13 @@ export default {
255
302
  const name = v? v : 'mind'
256
303
  this.mindMap.export('png', true, name, true, false, null, true)
257
304
  },
305
+ lineStyle() {
306
+ this.lineStyleStatus = true
307
+ this.styleStatus = false
308
+ },
258
309
  nodeStyle() {
259
310
  this.styleStatus = true
311
+ this.lineStyleStatus = false
260
312
  },
261
313
  // 关联线
262
314
  associativeLine() {
@@ -281,6 +333,9 @@ export default {
281
333
  // 兄弟节点
282
334
  brotherNode() {
283
335
  this.mindMap.execCommand('INSERT_NODE')
336
+ },
337
+ reset() {
338
+ this.mindMap.renderer.setRootNodeCenter()
284
339
  }
285
340
  }
286
341
  }
@@ -16,7 +16,7 @@
16
16
  </div>
17
17
  </div>
18
18
  <div class="node-but">
19
- <button @click="colorTap($event,'color')">颜色</button>
19
+ <button @click="colorTap($event,'color')" class="font-color-back" :style="{'background-color': color}">颜色</button>
20
20
  <button :style="{'background-color': (boldAct)? '#549688': '#fff','color': (boldAct)? '#fff': '#333'}"
21
21
  @click="bolds">粗体
22
22
  </button>
@@ -33,7 +33,7 @@
33
33
  <div class="style-list">
34
34
  <div class="node-left">
35
35
  <span>颜色</span>
36
- <div @click="colorTap($event,'borderColor')" class="backColor"></div>
36
+ <div @click="colorTap($event,'borderColor')" :style="{'background-color': borderColor}" class="backColor"></div>
37
37
  </div>
38
38
  <div class="node-left padd zIndex3">
39
39
  <span>样式</span>
@@ -56,7 +56,7 @@
56
56
  <div class="style-list">
57
57
  <div class="node-left">
58
58
  <span>颜色</span>
59
- <div @click="colorTap($event,'fillColor')" class="backColor"></div>
59
+ <div @click="colorTap($event,'fillColor')" :style="{'background-color': fillColor}" class="backColor"></div>
60
60
  </div>
61
61
  </div>
62
62
  </div>
@@ -75,7 +75,7 @@
75
75
  <div class="style-list">
76
76
  <div class="node-left">
77
77
  <span>颜色</span>
78
- <div @click="colorTap($event,'lineColor')" class="backColor"></div>
78
+ <div @click="colorTap($event,'lineColor')" :style="{'background-color': lineColor}" class="backColor"></div>
79
79
  </div>
80
80
  </div>
81
81
  </div>
@@ -89,7 +89,7 @@
89
89
  </div>
90
90
  </div>
91
91
  <div class="back-col" :style="{top: top + 'px'}" v-if="colorShow">
92
- <Coloring @submit="submit" @empty="empty" @rgba="rgba" :color="color"></Coloring>
92
+ <Coloring @submit="submit" @empty="empty" @rgba="rgba" :color="colorRgba"></Coloring>
93
93
  </div>
94
94
  </div>
95
95
  </template>
@@ -123,7 +123,11 @@ export default {
123
123
  {label: "3", value: '3'}
124
124
  ],
125
125
  rowValue: '1.5',
126
- color: 'rgba(0,0,0,1)',
126
+ colorRgba: '',
127
+ color: '',
128
+ borderColor: '',
129
+ fillColor: '',
130
+ lineColor: '',
127
131
  boldAct: false,
128
132
  italicAct: false,
129
133
  scribeAct: false,
@@ -182,27 +186,28 @@ export default {
182
186
  open: {
183
187
  handler(val) {
184
188
  this.show = val
189
+ this.colorShow = false
185
190
  },
186
191
  deep: true
187
192
  },
188
193
  node: {
189
194
  handler(val) {
190
195
  if (val) {
191
- console.log(val.nodeData.data)
196
+ this.colorShow = false
192
197
  this.sizeValue = val.nodeData.data.fontSize || '16'
193
198
  this.rowValue = val.nodeData.data.lineHeight || '1.5'
194
199
  this.boldAct = val.nodeData.data.fontWeight === 'bold'
195
200
  this.italicAct = val.nodeData.data.fontStyle === 'italic'
196
201
  this.scribeAct = val.nodeData.data.textDecoration === 'underline'
197
- if(this.colorType === 'color') this.color = val.nodeData.data.color || 'rgba(0,0,0,1)'
198
- if(this.colorType === 'borderColor') this.color = val.nodeData.data.borderColor || 'rgba(84, 150, 136,1)'
202
+ this.color = val.nodeData.data.color || 'rgba(0,0,0,1)'
203
+ this.borderColor = val.nodeData.data.borderColor || 'rgba(84, 150, 136,1)'
199
204
  this.styleValue = val.nodeData.data.borderDasharray || 'none'
200
205
  this.widthValue = val.nodeData.data.borderWidth || 1
201
206
  this.filletValue = val.nodeData.data.borderRadius || 5
202
- if(this.colorType === 'fillColor') this.color = val.nodeData.data.fillColor || 'rgba(255,255,255,1)'
207
+ this.fillColor = val.nodeData.data.fillColor || 'rgba(255,255,255,1)'
203
208
  this.lineValue = val.nodeData.data.lineWidth || 1
204
209
  this.lineDasharray = val.nodeData.data.lineDasharray || 'none'
205
- if(this.colorType === 'lineColor') this.color = val.nodeData.data.lineColor || 'rgba(84, 150, 136,1)'
210
+ this.lineColor = val.nodeData.data.lineColor || 'rgba(84, 150, 136,1)'
206
211
  this.shapeValue = val.nodeData.data.shape || 'rectangle'
207
212
  }
208
213
  }
@@ -283,9 +288,17 @@ export default {
283
288
  },
284
289
  colorTap(e, i) {
285
290
  this.colorType = i
291
+ if(this.colorType === 'color') this.colorRgba = this.color
292
+ if(this.colorType === 'borderColor') this.colorRgba = this.borderColor
293
+ if(this.colorType === 'fillColor') this.colorRgba = this.fillColor
294
+ if(this.colorType === 'lineColor') this.colorRgba = this.lineColor
286
295
  this.colorShow = !this.colorShow
287
296
  },
288
297
  rgba(e) {
298
+ if(this.colorType === 'color') this.color = e.rgba
299
+ if(this.colorType === 'borderColor') this.borderColor = e.rgba
300
+ if(this.colorType === 'fillColor') this.fillColor = e.rgba
301
+ if(this.colorType === 'lineColor') this.lineColor = e.rgba
289
302
  this.$emit('select', {type: this.colorType, value: e.rgba})
290
303
  },
291
304
  submit() {
package/src/index.js CHANGED
@@ -87,7 +87,7 @@ function install(app) {
87
87
  }
88
88
 
89
89
  export default {
90
- version: '1.35.600',
90
+ version: '1.35.601',
91
91
  install,
92
92
  Calendar,
93
93
  Message,