zydx-plus 1.35.609 → 1.35.611
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
|
@@ -12,7 +12,14 @@
|
|
|
12
12
|
<div class="ed-but" v-if="readOnly">
|
|
13
13
|
<slot name='leftToolBtn'></slot>
|
|
14
14
|
<div class="ed-head-but" v-for="(item,index) in toolbars" :key="index">
|
|
15
|
-
<
|
|
15
|
+
<div class="but-relative" v-if="item.key === 'h'">
|
|
16
|
+
<span>标题</span>
|
|
17
|
+
<div class="but-absolute">
|
|
18
|
+
<button class="buts" @click="toolTap('h2')">一级标题</button>
|
|
19
|
+
<button class="buts" @click="toolTap('h3')">二级标题</button>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<button v-else-if="item.key === 'but'" class="buts" @click="item.onClick(item,info)" :disabled="disabled"
|
|
16
23
|
:style="{color: (disabled) ? '#ccc' : (item.active)? '#4B0C77' :'#000'}">{{ item.title }}
|
|
17
24
|
</button>
|
|
18
25
|
<label v-else-if="item.key === 'upImg'">
|
|
@@ -93,12 +100,9 @@
|
|
|
93
100
|
<svg style="cursor: pointer" @click="close" t="1698630749910" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4415" width="20" height="20"><path d="M726.976 274.432a16 16 0 0 0-22.656 0L512 466.752l-192.32-192.32a16 16 0 0 0-22.624 0l-22.656 22.624a16 16 0 0 0 0 22.624l192.32 192.32-192.32 192.32a16 16 0 0 0 0 22.656l22.656 22.624a16 16 0 0 0 22.624 0l192.32-192.32 192.32 192.32a16 16 0 0 0 22.656 0l22.624-22.624a16 16 0 0 0 0-22.624L557.28 512l192.32-192.352a16 16 0 0 0 0-22.624l-22.624-22.624z" fill="#fff" p-id="4416"></path></svg>
|
|
94
101
|
</div>
|
|
95
102
|
</div>
|
|
96
|
-
<!-- <div class="editor-but" v-if="butText !== '' && readOnly">-->
|
|
97
|
-
<!-- <button class="buts" @click="complete">{{ butText }}</button>-->
|
|
98
|
-
<!-- </div>-->
|
|
99
103
|
<div class="enclosure" v-if="uploadAttData.length > 0 && enclosureShow">
|
|
100
104
|
<p :style="enclosureStyle">{{ enclosureText }}</p>
|
|
101
|
-
<div class="enclosure-list" v-for="(item,index) in uploadAttData">
|
|
105
|
+
<div class="enclosure-list" v-for="(item,index) in uploadAttData" :key="index">
|
|
102
106
|
<div class="enclosure-item" v-if="uploadAttData.length <= 1">
|
|
103
107
|
<span v-if="item.name">{{ item.name }}</span>
|
|
104
108
|
<span v-if="item.annexName">{{ item.annexName }}</span>
|
|
@@ -263,7 +267,7 @@ export default {
|
|
|
263
267
|
},
|
|
264
268
|
toolbar: {
|
|
265
269
|
type: Array,
|
|
266
|
-
default: []
|
|
270
|
+
default: () => []
|
|
267
271
|
},
|
|
268
272
|
title: {
|
|
269
273
|
type: String,
|
|
@@ -304,11 +308,11 @@ export default {
|
|
|
304
308
|
},
|
|
305
309
|
uploadImage: {
|
|
306
310
|
type: Object,
|
|
307
|
-
default: {}
|
|
311
|
+
default: () => {}
|
|
308
312
|
},
|
|
309
313
|
uploadAttachment: {
|
|
310
314
|
type: Object,
|
|
311
|
-
default: {}
|
|
315
|
+
default: () => {}
|
|
312
316
|
},
|
|
313
317
|
delShow: {
|
|
314
318
|
type: Boolean,
|
|
@@ -360,7 +364,7 @@ export default {
|
|
|
360
364
|
},
|
|
361
365
|
enclosureButton: {
|
|
362
366
|
type: Object,
|
|
363
|
-
default: {}
|
|
367
|
+
default: () => {}
|
|
364
368
|
},
|
|
365
369
|
updateStatus: {
|
|
366
370
|
type: Boolean,
|
|
@@ -368,14 +372,14 @@ export default {
|
|
|
368
372
|
},
|
|
369
373
|
downName: {
|
|
370
374
|
type: Array,
|
|
371
|
-
default: []
|
|
375
|
+
default: () => []
|
|
372
376
|
}
|
|
373
377
|
},
|
|
374
378
|
emits: ['see', 'del', 'complete', 'update:data', 'enclosureSuccess', 'download', 'updateData', 'syncDel','assets'],
|
|
375
379
|
watch: {
|
|
376
380
|
// 强制监听data变化
|
|
377
381
|
data: {
|
|
378
|
-
handler: function (e
|
|
382
|
+
handler: function (e) {
|
|
379
383
|
if(this.updateInit) return
|
|
380
384
|
if(this.updateStatus) this.updateInit = true
|
|
381
385
|
this.editor?.commands.setContent(json2html({node: "root", child: this.dataChange(e).html}))
|
|
@@ -384,7 +388,7 @@ export default {
|
|
|
384
388
|
deep: true
|
|
385
389
|
},
|
|
386
390
|
readOnly: {
|
|
387
|
-
handler: function (e
|
|
391
|
+
handler: function (e) {
|
|
388
392
|
this.editor.setOptions({
|
|
389
393
|
editable: e
|
|
390
394
|
})
|
|
@@ -395,26 +399,31 @@ export default {
|
|
|
395
399
|
handler: function (e) {
|
|
396
400
|
let status = null
|
|
397
401
|
let upload = null
|
|
402
|
+
let title = null
|
|
398
403
|
this.toolbars = []
|
|
399
404
|
e.forEach(x => {
|
|
400
405
|
if(x.key === 'but') {
|
|
401
406
|
status = x
|
|
402
407
|
} else if (x.key === 'uploadAtt') {
|
|
403
408
|
upload = x
|
|
409
|
+
}else if(['h1','h2','h3','h4','h5','h6'].includes(x.key)) {
|
|
410
|
+
title = {key: 'h', title: '标题'}
|
|
404
411
|
}else {
|
|
405
412
|
this.toolbars.push(x)
|
|
406
413
|
}
|
|
407
414
|
})
|
|
415
|
+
if(title) this.toolbars.unshift(title) // 标题
|
|
408
416
|
if(this.isShowWhiteboarde) this.toolbars.push({key: 'paint', title: '插入手写'})
|
|
409
417
|
if(upload) this.toolbars.push(upload) // 上传附件
|
|
410
418
|
if(this.voiceShow) this.toolbars.push({key: 'voice', title: '语音输入'})
|
|
411
419
|
if(status) this.toolbars.push(status) // 之定义按钮
|
|
412
420
|
if(this.isShowAiTool) this.toolbars.push({key: 'ai', title: 'AI助手'})
|
|
421
|
+
console.log(this.toolbars)
|
|
413
422
|
},
|
|
414
423
|
immediate: true
|
|
415
424
|
},
|
|
416
425
|
disabled: {
|
|
417
|
-
handler: function (e
|
|
426
|
+
handler: function (e) {
|
|
418
427
|
this.editor.setOptions({
|
|
419
428
|
editable: this.readOnly ?(!e):this.readOnly
|
|
420
429
|
})
|
|
@@ -474,7 +483,7 @@ export default {
|
|
|
474
483
|
_this.close()
|
|
475
484
|
},
|
|
476
485
|
// 获取焦点
|
|
477
|
-
onFocus: (
|
|
486
|
+
onFocus: () => {
|
|
478
487
|
this.limits = true
|
|
479
488
|
},
|
|
480
489
|
})
|
|
@@ -520,8 +529,6 @@ export default {
|
|
|
520
529
|
const selection = window.getSelection();
|
|
521
530
|
const selectedText = selection.toString()
|
|
522
531
|
if (!selectedText || this.lastSelectedText === selectedText) return
|
|
523
|
-
const clientX = e.clientX
|
|
524
|
-
const clientY = e.clientX
|
|
525
532
|
this.lastSelectedText = selectedText
|
|
526
533
|
},
|
|
527
534
|
showAssets() {
|
|
@@ -552,6 +559,7 @@ export default {
|
|
|
552
559
|
this.imgSizeVal = 100
|
|
553
560
|
this.editor.chain().setImageWidth('100%').focus().run()
|
|
554
561
|
} else if(parseInt(e.target.value) < 10) {
|
|
562
|
+
|
|
555
563
|
} else {
|
|
556
564
|
if(this.lock) {
|
|
557
565
|
this.lock = false
|
|
@@ -595,6 +603,7 @@ export default {
|
|
|
595
603
|
},
|
|
596
604
|
// 粘贴文本处理
|
|
597
605
|
preventPaste(event) {
|
|
606
|
+
if(!this.readOnly) return
|
|
598
607
|
// 删除选中的文本
|
|
599
608
|
this.editor.chain().focus().deleteSelection().run()
|
|
600
609
|
const text = event.clipboardData.getData('text/plain');
|
|
@@ -993,13 +1002,12 @@ export default {
|
|
|
993
1002
|
// if (v === 'h1') this.editor.chain().focus().setFontSize('18px').setBold().run()
|
|
994
1003
|
// if (v === 'h2') this.editor.chain().focus().setFontSize('16px').setBold().run()
|
|
995
1004
|
// if (v === 'h3') this.editor.chain().focus().setFontSize('14px').setBold().run()
|
|
996
|
-
if(v === 'h1') this.editor.chain().focus().
|
|
997
|
-
if(v === 'h2') this.editor.chain().focus().
|
|
998
|
-
if(v === 'h3') this.editor.chain().focus().
|
|
1005
|
+
if(v === 'h1') this.editor.chain().focus().setBold().setFontSize('18px').run()
|
|
1006
|
+
if(v === 'h2') this.editor.chain().focus().setBold().setFontSize('16px').run()
|
|
1007
|
+
if(v === 'h3') this.editor.chain().focus().setBold().setFontSize('14px').run()
|
|
999
1008
|
|
|
1000
1009
|
if (v === 'p') {
|
|
1001
|
-
this.editor.chain().focus().setFontSize('14px').run()
|
|
1002
|
-
this.editor.chain().focus().unsetBold().run()
|
|
1010
|
+
this.editor.chain().focus().setFontSize('14px').unsetBold().run()
|
|
1003
1011
|
}
|
|
1004
1012
|
if (v === 'bold') this.editor.chain().focus().toggleBold().run()
|
|
1005
1013
|
if (v === 'center' || v === 'left' || v === 'right') this.editor.chain().focus().setTextAlign(v).run()
|
|
@@ -1368,4 +1376,37 @@ export default {
|
|
|
1368
1376
|
color: #666;
|
|
1369
1377
|
line-height: 30px;
|
|
1370
1378
|
}
|
|
1379
|
+
.but-relative{
|
|
1380
|
+
position: relative;
|
|
1381
|
+
margin-left: 1px;
|
|
1382
|
+
font-size: 12px;
|
|
1383
|
+
background-color: transparent;
|
|
1384
|
+
border: 1px solid #000;
|
|
1385
|
+
border-radius: 3px;
|
|
1386
|
+
padding: 2px 5px;
|
|
1387
|
+
cursor: pointer;
|
|
1388
|
+
min-width: 60px;
|
|
1389
|
+
height: 21px;
|
|
1390
|
+
display: inline-block;
|
|
1391
|
+
line-height: 14px;
|
|
1392
|
+
box-sizing: border-box;
|
|
1393
|
+
-moz-text-align-last: justify;
|
|
1394
|
+
text-align-last: justify;
|
|
1395
|
+
word-break: break-all;
|
|
1396
|
+
text-justify: distribute;
|
|
1397
|
+
}
|
|
1398
|
+
.but-relative:hover .but-absolute{
|
|
1399
|
+
display: block;
|
|
1400
|
+
}
|
|
1401
|
+
.but-absolute{
|
|
1402
|
+
position: absolute;
|
|
1403
|
+
top: 20px;
|
|
1404
|
+
left: -2px;
|
|
1405
|
+
background: #fff;
|
|
1406
|
+
z-index: 1;
|
|
1407
|
+
display: none;
|
|
1408
|
+
}
|
|
1409
|
+
.but-absolute>button{
|
|
1410
|
+
margin-top: 1px;
|
|
1411
|
+
}
|
|
1371
1412
|
</style>
|
|
@@ -11,16 +11,30 @@
|
|
|
11
11
|
:class="{'select-css-focus': isOpen}"
|
|
12
12
|
class="select-css" />
|
|
13
13
|
|
|
14
|
-
<span
|
|
15
|
-
<svg
|
|
16
|
-
|
|
14
|
+
<span v-if="!readonly" class="custom-select-icons">
|
|
15
|
+
<svg v-if="!selected"
|
|
16
|
+
@click.stop="toggleDropDown"
|
|
17
17
|
height="16"
|
|
18
|
-
viewBox="0 0 24 24"
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
viewBox="0 0 24 24"
|
|
19
|
+
width="16"
|
|
20
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
21
|
+
<g :transform="transform">
|
|
22
|
+
<path
|
|
23
|
+
d="M15.125 21.1L6.7 12.7q-.15-.15-.213-.325T6.425 12q0-.2.062-.375T6.7 11.3l8.425-8.425q.35-.35.875-.35t.9.375q.375.375.375.875t-.375.875L9.55 12l7.35 7.35q.35.35.35.863t-.375.887q-.375.375-.875.375t-.875-.375Z"
|
|
24
|
+
fill="#c0c4cc"/>
|
|
22
25
|
</g>
|
|
23
26
|
</svg>
|
|
27
|
+
<svg v-else
|
|
28
|
+
@click.stop="clearSelected"
|
|
29
|
+
height="16"
|
|
30
|
+
viewBox="0 0 1024 1024"
|
|
31
|
+
width="16"
|
|
32
|
+
xmlns="http://www.w3.org/2000/svg">
|
|
33
|
+
<path
|
|
34
|
+
d="M512 14.8973037A497.1026963 497.1026963 0 1 0 1009.1026963 512 497.1026963 497.1026963 0 0 0 512 14.8973037z m219.96794311 628.83491082a62.13783703 62.13783703 0 0 1-88.23572859 88.23572859L512 599.61435022 380.26778548 731.96794311a62.13783703 62.13783703 0 0 1-88.23572859-88.23572859L424.38564978 512 292.03205689 380.26778548a62.13783703 62.13783703 0 0 1 88.23572859-88.23572859L512 424.38564978l131.73221452-132.35359289a62.13783703 62.13783703 0 0 1 88.23572859 88.23572859L599.61435022 512z"
|
|
35
|
+
fill="#c0c4cc"></path>
|
|
36
|
+
</svg>
|
|
37
|
+
|
|
24
38
|
</span>
|
|
25
39
|
<teleport to="body">
|
|
26
40
|
<template v-if="!readonly">
|
|
@@ -102,7 +116,7 @@ export default defineComponent({
|
|
|
102
116
|
countersign: 'data:image/png;base64,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'
|
|
103
117
|
}
|
|
104
118
|
},
|
|
105
|
-
emits: ['update:value', 'select'],
|
|
119
|
+
emits: ['update:value', 'select','clear'],
|
|
106
120
|
methods: {
|
|
107
121
|
mouseleave() {
|
|
108
122
|
this.isOpen = false
|
|
@@ -122,6 +136,16 @@ export default defineComponent({
|
|
|
122
136
|
window.removeEventListener('scroll', this.handler)
|
|
123
137
|
}
|
|
124
138
|
},
|
|
139
|
+
clearSelected:function () {
|
|
140
|
+
this.selected = ''
|
|
141
|
+
if(this.multiple) {
|
|
142
|
+
this.options.forEach(x => {
|
|
143
|
+
x.active = false
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
this.$emit('update:value', this.selected)
|
|
147
|
+
this.$emit('clear', 'clear')
|
|
148
|
+
},
|
|
125
149
|
handleClick: function (option) {
|
|
126
150
|
if(option.disable) return
|
|
127
151
|
if(this.multiple) {
|
|
@@ -235,6 +235,9 @@ export default {
|
|
|
235
235
|
},
|
|
236
236
|
// 添加快照
|
|
237
237
|
setSnapshot(v) {
|
|
238
|
+
if(this.isEmpty(v)){
|
|
239
|
+
v = clearJson
|
|
240
|
+
}
|
|
238
241
|
editorAPP.store?.loadSnapshot(v)
|
|
239
242
|
this.isFocused()
|
|
240
243
|
},
|
|
@@ -542,6 +545,16 @@ export default {
|
|
|
542
545
|
editorAPP?.updateInstanceState({isFocused: true})
|
|
543
546
|
document.documentElement.scrollTop = top
|
|
544
547
|
}, 10)
|
|
548
|
+
},
|
|
549
|
+
isEmpty(v) {
|
|
550
|
+
if (Array.isArray(v)) {
|
|
551
|
+
return v.length === 0
|
|
552
|
+
}
|
|
553
|
+
if (v === undefined || v === null || v === '' || v === '0' || v === 0 || v === 'null') {
|
|
554
|
+
return true
|
|
555
|
+
} else {
|
|
556
|
+
return typeof v === 'object' && Object.keys(v).length === 0;
|
|
557
|
+
}
|
|
545
558
|
}
|
|
546
559
|
}
|
|
547
560
|
}
|