zydx-plus 1.33.379 → 1.33.381

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.33.379",
3
+ "version": "1.33.381",
4
4
  "description": "Vue.js",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -23,6 +23,12 @@ const num = {
23
23
 
24
24
  export function butJson(editor, data) {
25
25
  return {
26
+ switchingFormat:{
27
+ name: '切换版式',
28
+ key: 'switchingFormat',
29
+ menuKeys:[
30
+ ]
31
+ },
26
32
  shortcut: {
27
33
  name: '快捷排版',
28
34
  key: 'shortcut',
@@ -47,12 +53,12 @@ export function butJson(editor, data) {
47
53
  menuKeys: [],
48
54
  html: `<p class="author" data-signId="author" style="text-align: center;"><span style="color: rgb(0, 0, 0);font-size: 14px;font-family: FangSong;">${menusData(data, 'authorMenu').text}:</span></p>`
49
55
  },
50
- // {
51
- // name: '抬&nbsp;&nbsp;&nbsp;头',
52
- // key: 'authorMenu',
53
- // menuKeys: [],
54
- // html: `<p class="author" data-signId="author" style="text-align: center;"><span style="color: rgb(0, 0, 0);font-size: 16px;font-family: KaiT;">${menusData(data, 'authorMenu').text}</span></p>`
55
- // },
56
+ {
57
+ name: '抬&nbsp;&nbsp;&nbsp;头',
58
+ key: 'lookUp',
59
+ menuKeys: [],
60
+ html: `<p data-signId="lookUp"><span style="color: rgb(0, 0, 0);font-size: 14px; font-family:SimHei;font-weight: 700;">请在此处输入抬头:</span><span> </span></p>`
61
+ },
56
62
  {
57
63
  name: '摘&nbsp;&nbsp;&nbsp;要',
58
64
  key: 'abstractMenu',
@@ -98,10 +104,10 @@ export function butJson(editor, data) {
98
104
  name: '页边距',
99
105
  key: 'pageMargin',
100
106
  menuKeys: [
101
- {name: '标准', key: 'standard'},
102
- {name: '窄', key: 'narrow'},
103
- {name: '适中', key: 'moderate'},
104
- {name: '宽', key: 'wide'},
107
+ // {name: '标准', key: 'standard'},
108
+ // {name: '窄', key: 'narrow'},
109
+ // {name: '适中', key: 'moderate'},
110
+ // {name: '宽', key: 'wide'},
105
111
  ],
106
112
  },
107
113
  paragraph: {
@@ -169,7 +175,7 @@ export function butJson(editor, data) {
169
175
  }
170
176
  },
171
177
  outlineMenu: {
172
- name: '大 纲',
178
+ name: '大纲级别',
173
179
  key: 'outlineMenu',
174
180
  menuKeys: [
175
181
  {name: '一级标题', key: 'title-1'},
@@ -225,6 +231,11 @@ export function butJson(editor, data) {
225
231
  name: '插入链接',
226
232
  key: 'interposition',
227
233
  menuKeys: [
234
+ {
235
+ name: '插入横线',
236
+ key: 'insertHorizontalLine',
237
+ childMenuKeys: []
238
+ },
228
239
  {
229
240
  name: '插入图片',
230
241
  key: 'group-image',
@@ -73,7 +73,7 @@
73
73
  <img :src="menusData('signMenu')?.ico" alt=""/>
74
74
  <span>{{ menusData('signMenu')?.text }}</span>
75
75
  </div>
76
- <editor-content :editor="editor" class="editing-cont"
76
+ <editor-content :editor="editor" class="editing-cont" @click.stop="editorContentClick"
77
77
  @paste.native.capture.prevent="preventPaste"></editor-content>
78
78
  <div class="menu">
79
79
  <button v-if="readOnly" class="but" @click="enlSee">查看</button>
@@ -119,7 +119,7 @@
119
119
  <!-- ,width: wit + 'px'-->
120
120
  <div v-for="(item,index) in htmlArr" :key="index" :style="{height: wit * 1.6 + 'px'}"
121
121
  class="read-only-page" @click="menusTap">
122
- <div class="read-only-p" :style="{width: wit + 'px',margin:'0 auto'}" v-html="item"></div>
122
+ <div :style="{width: wit + 'px',margin:'0 auto'}" class="read-only-p" v-html="item"></div>
123
123
  <div class="read-only-a">{{ index + 1 }}/{{ htmlArr.length }}</div>
124
124
  </div>
125
125
  </div>
@@ -175,7 +175,7 @@
175
175
  </div>
176
176
  <!-- 段落设置-->
177
177
  <zydx-drag-popup
178
- v-if="showRetractionPopup" :dragStatus="false" :enlargeShow="false" :minimize="false"
178
+ v-if="showRetractionPopup" :drag-text-show="false" :dragStatus="false" :enlargeShow="false" :minimize="false"
179
179
  :minimizeCir="false" height="290" @close="closeDragPopup">
180
180
  <template #content>
181
181
  <div class="p-popup">
@@ -200,7 +200,7 @@
200
200
  </template>
201
201
  </zydx-drag-popup>
202
202
  <zydx-drag-popup
203
- v-if="showSpacingPopup" :dragStatus="false" :enlargeShow="false" :minimize="false"
203
+ v-if="showSpacingPopup" :drag-text-show="false" :dragStatus="false" :enlargeShow="false" :minimize="false"
204
204
  :minimizeCir="false" height="320" @close="closeDragPopup">
205
205
  <template #content>
206
206
  <div class="p-popup">
@@ -230,7 +230,7 @@
230
230
  </template>
231
231
  </zydx-drag-popup>
232
232
  <!-- 链接注释-->
233
- <zydx-drag-popup v-if="isShowPopup" :dragStatus="false"
233
+ <zydx-drag-popup v-if="isShowPopup" :drag-text-show="false" :dragStatus="false"
234
234
  :enlargeShow="false" :minimize="false"
235
235
  :minimizeCir="false" :title="titlePopup"
236
236
  height="auto" @close="isShowPopup=false">
@@ -278,12 +278,77 @@
278
278
  </div>
279
279
  </template>
280
280
  </zydx-drag-popup>
281
- <!-- 名词解释-->
282
- <!-- <zydx-drag-popup v-if="isShowExegesis" :dragStatus="false"
283
- :enlargeShow="false" :minimize="false"
284
- :minimizeCir="false" :title="titlePopup"
285
- height="auto" @close="isShowExegesis=false">
286
- </zydx-drag-popup>-->
281
+ <!-- 页边距-->
282
+ <zydx-drag-popup v-if="isShowPageMargin" :drag-text-show="false" :dragStatus="false" :enlargeShow="false"
283
+ :minimize="false" :minimizeCir="false" fixedStart
284
+ height="444"
285
+ width="900" @close="isShowPageMargin=false">
286
+ <template #content>
287
+ <div class="p-popup-box">
288
+ <div class="page-margin-box">
289
+ <div class="page-margin-title"> 页边距</div>
290
+ <div class="page-margin-select">
291
+ <div v-for="(item,index) in pageMarginSvg" :key="index" class="page-margin-select-item"
292
+ @click="selectMargin(item)">
293
+ <component :is="item.iconName"></component>
294
+ <isSelect v-if="item.isSelect" class="is-select"></isSelect>
295
+ <div class="page-margin-select-name">
296
+ {{ item.title }}
297
+ </div>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ <div class="tip-btnBox">
302
+ <div @click="changeMargin" v-html="`确定`"></div>
303
+ <div @click="isShowPageMargin=false" v-html="`关闭`"></div>
304
+ </div>
305
+ </div>
306
+ </template>
307
+ </zydx-drag-popup>
308
+ <!-- 插入横线-->
309
+ <zydx-drag-popup v-if="isShowHorizontalLine" :drag-text-show="false" :dragStatus="false" :enlargeShow="false"
310
+ :minimize="false" :minimizeCir="false" fixedStart
311
+ height="214"
312
+ width="600" @close="isShowHorizontalLine=false">
313
+ <template #content>
314
+ <div class="p-popup-box" style="position: absolute;">
315
+ <div class="page-margin-box">
316
+ <div class="page-margin-title"> 插入横线</div>
317
+ <div class="page-line-select">
318
+ <div class="name">样 式</div>
319
+
320
+ <zydx-select v-model:value="lineType" :options="lineOptions" ></zydx-select>
321
+ </div>
322
+ </div>
323
+ <div class="tip-btnBox">
324
+ <div @click="changeLineType" v-html="`确定`"></div>
325
+ <div @click="isShowHorizontalLine=false" v-html="`关闭`"></div>
326
+ </div>
327
+ </div>
328
+ </template>
329
+ </zydx-drag-popup>
330
+ <!-- 切换版式-->
331
+ <zydx-drag-popup v-if="isShowSwitchingFormat" :drag-text-show="false" :dragStatus="false" :enlargeShow="false"
332
+ :minimize="false" :minimizeCir="false" fixedStart
333
+ height="214"
334
+ width="600" @close="isShowSwitchingFormat=false">
335
+ <template #content>
336
+ <div class="p-popup-box" style="position: absolute;">
337
+ <div class="page-margin-box">
338
+ <div class="page-margin-title"> 切换版式</div>
339
+ <div class="page-line-select">
340
+ <div class="name">选择版式:</div>
341
+
342
+ <zydx-select v-model:value="templateType" :options="templateOptions" ></zydx-select>
343
+ </div>
344
+ </div>
345
+ <div class="tip-btnBox">
346
+ <div @click="changeTemplateType" v-html="`确定`"></div>
347
+ <div @click="isShowSwitchingFormat=false" v-html="`关闭`"></div>
348
+ </div>
349
+ </div>
350
+ </template>
351
+ </zydx-drag-popup>
287
352
 
288
353
  <div ref="bubbleMenu" :style="menusStyle" class="menu-one">
289
354
  <div v-if="bubbleData&&bubbleData.type === 'taggingMenu'" class="menu-one-title">
@@ -319,9 +384,12 @@
319
384
  <!-- 展示弹窗 -->
320
385
  <div v-for="(item,index) in interpositionData" :key="index">
321
386
  <zydx-drag-popup v-if="item.isShow" :enlargeShow="false" :minHeight="183"
322
- :minWidth="['importWorks', 'linkCourseware', 'importArticles', 'videoLink'].indexOf(item.type) === -1 ? 640 :905" :minimize="false" :minimizeCir="false"
323
- :title="titleDragPopup[item.type]?titleDragPopup[item.type]:'参考文献'" height="auto"
324
- :width="['importWorks', 'linkCourseware', 'importArticles', 'videoLink'].indexOf(item.type) === -1 ? 640 :905" @close="closeDataShowPopup(item)">
387
+ :minWidth="['importWorks', 'linkCourseware', 'importArticles', 'videoLink'].indexOf(item.type) === -1 ? 640 :905"
388
+ :minimize="false" :minimizeCir="false"
389
+ :title="titleDragPopup[item.type]?titleDragPopup[item.type]:'参考文献'"
390
+ :width="['importWorks', 'linkCourseware', 'importArticles', 'videoLink'].indexOf(item.type) === -1 ? 640 :905"
391
+ height="auto"
392
+ @close="closeDataShowPopup(item)">
325
393
  <template #content>
326
394
  <div v-if="item.type === 'taggingMenu'" style="padding: 5px 10px 10px 10px">
327
395
  <div class="p-popup-title-box">
@@ -522,6 +590,7 @@ import BubbleMenu from '@tiptap/extension-bubble-menu'
522
590
  import Link from "@tiptap/extension-link";
523
591
  import {FontSize} from "./extend/font-size";
524
592
  import {Margin} from "./extend/margin";
593
+ import {borderBottom} from "./extend/insertHorizontalLine";
525
594
  import {signId} from "./extend/sign-id";
526
595
  import {lineHeightId} from "./extend/line-height-id";
527
596
  import {Contenteditable} from "./extend/contenteditable";
@@ -542,11 +611,21 @@ import zydxDragPopup from '../../dragPopup'
542
611
  import zydxSelect from '../../select'
543
612
  import {exegesisId} from "./extend/exegesis-id";
544
613
  import {html2json, json2html} from '../../utils/html2json.js'
614
+ import MarginModeration from "../src/margin-moderation.vue";
615
+ import MarginNarrow from "../src/margin-narrow.vue";
616
+ import MarginStandard from "../src/margin-standard.vue";
617
+ import MarginWide from "../src/margin-wide.vue";
618
+ import isSelect from "../src/isSelect.vue";
545
619
 
546
620
  const img = require('./image/annotation.png')
547
621
  export default {
548
622
  name: 'zydx-editor',
549
623
  components: {
624
+ isSelect,
625
+ MarginWide,
626
+ MarginStandard,
627
+ MarginNarrow,
628
+ MarginModeration,
550
629
  zydxTextarea,
551
630
  zydxRead,
552
631
  svgs,
@@ -565,6 +644,31 @@ export default {
565
644
  },
566
645
  data() {
567
646
  return {
647
+ pageMarginSvg: [
648
+ {
649
+ iconName: 'MarginStandard',
650
+ title: '标准',
651
+ isSelect: true,
652
+ key: 'standard'
653
+ },
654
+ {
655
+ iconName: 'MarginNarrow',
656
+ title: '窄',
657
+ isSelect: false,
658
+ key: 'narrow'
659
+ },
660
+ {
661
+ iconName: 'MarginModeration',
662
+ title: '适中',
663
+ isSelect: false,
664
+ key: 'moderate'
665
+ },
666
+ {
667
+ iconName: 'MarginWide',
668
+ title: '宽',
669
+ isSelect: false,
670
+ key: 'wide'
671
+ }],
568
672
  checkboxObj: {value: '1', label: '是否开启缩进', checked: false},
569
673
  checkbox: false,
570
674
  titleDragPopup: {
@@ -648,7 +752,7 @@ export default {
648
752
  time: {},
649
753
  hex: '',
650
754
  toolbar: [
651
- 'shortcut', 'pageMargin', 'paragraph',
755
+ 'switchingFormat','shortcut', 'pageMargin', 'paragraph',
652
756
  'outlineMenu', 'alignmentMode', 'titleMenu',
653
757
  'textMenu', 'color', 'interposition'],
654
758
  bubbleData: {},
@@ -664,6 +768,15 @@ export default {
664
768
  {label: '2.00倍', value: '2'},
665
769
  {label: '2.50倍', value: '2.5'},
666
770
  {label: '3.00倍', value: '3'}],
771
+ lineOptions: [
772
+ {label: '————————————————', value: 'solid'},
773
+ {label: '---------------------------------------', value: 'dashed'},
774
+ {label: '════════════════════════', value: 'double'}],
775
+ templateOptions: [
776
+ {label: '公文版式', value: 'officialDocumentFormat'},
777
+ {label: '新闻版式', value: 'newsFormat'},
778
+ {label: '论文版式', value: 'paperFormat'}],
779
+ lineType:'solid',
667
780
  paragraph: {
668
781
  left: 0,
669
782
  right: 0,
@@ -671,7 +784,33 @@ export default {
671
784
  bottom: 0,
672
785
  distance: '1.5',
673
786
  },
674
- isInsertLink:false
787
+ isInsertLink: false,
788
+ isEditorContentClick: true,
789
+ timeOut: null,
790
+ isShowPageMargin: false,
791
+ isShowHorizontalLine: false,
792
+ isShowSwitchingFormat: false,
793
+ templateType:'officialDocumentFormat',
794
+ switchingFormat:[
795
+ {
796
+ name: '公文版式',
797
+ key: 'officialDocumentFormat',
798
+ menuKeys: [],
799
+ html:`<p style="text-align: center"><span style="font-size: 48px; color: rgb(225, 60, 57)">请在此输入红头名称</span></p><p data-signid="red" style="text-align: center"><span style="font-size: 16px; color: rgb(0, 0, 0)">请在此输入文件号xxx[xxx]xxxx号</span></p><p contenteditable="false" class="solid"></p><p data-signid="subject" style="text-align: center;margin: 80px 0 60px"><strong><span style="font-size: 24px; font-family: SimHei; color: rgb(0, 0, 0);line-height: 1;">请在此处输入标题</span></strong></p><p data-signid="lookUp"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入抬头:</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-1" class="title drrvcvmj indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">一、请在此处输入一级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-2" class="title xxhnhuja indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">(一)请在此处输入二级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="paragraph" style="margin: 30px 0px 0px; text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入落款</span></strong></p><p style="text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入日期</span></strong></p>`
800
+ },
801
+ {
802
+ name: '新闻版式',
803
+ key: 'newsFormat',
804
+ menuKeys: [],
805
+ html:`<p data-signid="subject" style="text-align: center;"><strong><span style="font-size: 24px; font-family: SimHei; color: rgb(0, 0, 0);">请在此处输入标题</span></strong></p><p data-signid="author" class="author" style="text-align: center;padding-bottom: 30px;"><span style="font-size: 14px; font-family: FangSong; color: rgb(0, 0, 0);">请在此处输入作者/来源</span></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-1" class="title drrvcvmj indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">一、请在此处输入一级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-2" class="title xxhnhuja indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">(一)请在此处输入二级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="paragraph" style="margin: 30px 0px 0px; text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入落款</span></strong></p><p style="text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入日期</span></strong></p>`
806
+ },
807
+ {
808
+ name: '论文版式',
809
+ key: 'paperFormat',
810
+ menuKeys: [],
811
+ html:`<p data-signid="subject" style="text-align: center;"><strong><span style="font-size: 24px; font-family: SimHei; color: rgb(0, 0, 0);">请在此处输入题目</span></strong></p><p data-signid="author" class="author" style="text-align: center;padding-bottom: 30px;"><span style="font-size: 14px; font-family: FangSong; color: rgb(0, 0, 0);">请在此处输入作者</span></p><p data-signid="abstract" class="abstract abstract"><strong><span style="font-size: 14px; font-family: SimSun; color: rgb(0, 0, 0)">摘要:</span></strong> <span style="font-size: 14px; font-family: FangSong; color: rgb(0, 0, 0)">请在此处输入摘要文本...</span></p><p data-signid="keyword" class="keyword keyword"><strong><span contenteditable="false" style="font-size: 14px; font-family: SimSun; color: rgb(0, 0, 0)">关键词:</span></strong> <span style="font-size: 14px; font-family: FangSong; color: rgb(0, 0, 0)"> 请在此处输入关键字...</span></p><p></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-1" class="title drrvcvmj indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">一、请在此处输入一级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本</span></p><p data-signid="title-2" class="title xxhnhuja indent"><strong><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">(一)请在此处输入二级标题</span></strong></p><p class="indent indent"><span style="font-size: 14px; font-family: SimHei; color: rgb(0, 0, 0)">请在此处输入正文文本(复用格式建议直接复制粘贴段落)</span></p><p data-signid="splitLine" contenteditable="false" class="paging-line">分 页 线(保存文档时线下内容另起一页)</p><p></p><p data-signid="annotation" contenteditable="false" style="text-align: center;"><strong><span style="font-size: 24px; font-family: SimHei; color: rgb(0, 0, 0);">注释</span></strong></p><p data-signid="author" contenteditable="false" class="author" style="text-align: center;padding-bottom: 30px;"><span style="font-size: 14px;font-weight: 700; color: rgba(0, 0, 0, 0.5);">(请在文中标识要注释的内容,此处将生成注释的序号而后需要作者填写注释内容)</span></p><p data-signid="a-0" class="text" contenteditable="false"><span style="font-size: 12px; font-family: FangSong;text-indent: 2em;">① 注释:是指解释字句的文字,也指用文字解释字句,可以是文字符号图片等多种形式。(当前文本只是示例展示,不会出现在保存的文本中。)</span></p><p data-signid="splitLine" contenteditable="false" class="paging-line">分 页 线(保存文档时线下内容另起一页)</p><p></p><p contenteditable="false" data-signId="reference" style="text-align: center;margin-bottom: 30px;"><span font-family: SimHei; style="font-weight: 700;font-size: 24px;">参考文献</span></p><p data-signid="author" contenteditable="false" class="author" style="text-align: center;padding-bottom: 30px;"><span style="font-size: 14px;font-weight: 700; color: rgba(0, 0, 0, 0.5);">(请在文中标识要注释的内容,此处将生成注释的序号而后需要作者填写注释内容)</span></p><p data-signid="r-0" class="text" contenteditable="false"><span style="font-size: 12px; font-family: FangSong;text-indent: 2em;"> [1] 孙品一.高校学报编辑工作现代化特征[C].中国高等学校自然科学学报研究会.科技编辑学论文集(2).北京:北京师范大学出版社,1998:10-22. (当前文本只是示例展示,不会出现在保存的文本中。)</span></p><p data-signid="r-0" class="text" contenteditable="false"><span style="font-size: 12px; font-family: FangSong;text-indent: 2em;"> [2] 张和生.地质力学系统理论[D].太原:太原理工大学,1998. (当前文本只是示例展示,不会出现在保存的文本中。)</span></p><p data-signid="referenceSplitLine" contenteditable="false" class="paging-line">分 页 线(保存文档时线下内容另起一页)</p><p></p><p data-signid="ack" style="text-align: center"><strong><span style="font-size: 16px; color: rgb(0, 0, 0)">致谢</span></strong></p><p><span style="font-size: 14px; font-family: KaiTi; color: rgb(0, 0, 0)">致谢内容...</span></p><p data-signid="paragraph" style="margin: 30px 0px 0px; text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入落款</span></strong></p><p style="text-align: right"><strong><span style="font-size: 14px; color: rgb(0, 0, 0)">请在此处输入日期</span></strong></p>`
812
+ }
813
+ ]
675
814
  }
676
815
  },
677
816
  props: {
@@ -858,7 +997,7 @@ export default {
858
997
  const _this = this
859
998
  _this.htmlJson = _this.html ? JSON.parse(JSON.stringify(_this.html)) : []
860
999
  // let dataHtml = json2html({node: "root", child: (_this.html === undefined || _this.html === null) ? [] : _this.html})
861
- this.interpositionData = _this.htmlJson.popupsData?_this.htmlJson.popupsData.data:[]
1000
+ this.interpositionData = _this.htmlJson.popupsData ? _this.htmlJson.popupsData.data : []
862
1001
  let dataHtml = _this.htmlJson
863
1002
  if (dataHtml.sign?.tag === 'sign') {
864
1003
  this.signMenuShow = true
@@ -972,7 +1111,10 @@ export default {
972
1111
  FontSize.configure({ // 字体大小
973
1112
  types: ['textStyle'],
974
1113
  }),
975
- Margin.configure({ // 字体大小
1114
+ Margin.configure({ // 边距
1115
+ types: ['paragraph'],
1116
+ }),
1117
+ borderBottom.configure({ // 边框
976
1118
  types: ['paragraph'],
977
1119
  }),
978
1120
  FontFamily.configure({ // 字体
@@ -1003,6 +1145,7 @@ export default {
1003
1145
  ],
1004
1146
  injectCSS: true,
1005
1147
  onBlur: () => {
1148
+ this.isEditorContentClick = true
1006
1149
  _this.limits = false
1007
1150
  _this.menuStast = null
1008
1151
  _this.close()
@@ -1012,6 +1155,7 @@ export default {
1012
1155
  },
1013
1156
  // 获取焦点
1014
1157
  onFocus: () => {
1158
+ this.isEditorContentClick = false
1015
1159
  this.limits = true
1016
1160
  },
1017
1161
  onUpdate: ({editor}) => {
@@ -1119,6 +1263,76 @@ export default {
1119
1263
  },
1120
1264
  emits: ['confirm', 'enclosure', 'enlDownload', 'enlSee'],
1121
1265
  methods: {
1266
+ selectMargin(selectItem) {
1267
+ this.pageMarginSvg.forEach(item => {
1268
+ item.isSelect = item.title === selectItem.title;
1269
+ })
1270
+ },
1271
+ //修改分割线类型
1272
+ changeLineType(){
1273
+ if(this.lineType==='solid'){
1274
+ let html = `${this.selection()===1?'<p></p>':''}<p contenteditable="false" class="solid"></p><p></p>`
1275
+ this.editor.chain().focus().insertContentAt(this.selection(), html).run()
1276
+ }
1277
+ if(this.lineType==='dashed'){
1278
+ let html = `${this.selection()===1?'<p></p>':''}<p contenteditable="false" class="dashed"></p><p></p>`
1279
+ this.editor.chain().focus().insertContentAt(this.selection(), html).run()
1280
+ }
1281
+ if(this.lineType==='double'){
1282
+ let html = `${this.selection()===1?'<p></p>':''}<p contenteditable="false" class="double"></p><p></p>`
1283
+ this.editor.chain().focus().insertContentAt(this.selection(), html).run()
1284
+ }
1285
+ this.isShowHorizontalLine = false
1286
+ },
1287
+ //修改模板类型
1288
+ async changeTemplateType(){
1289
+ await Message(
1290
+ {type: 'text', promptContent: '切换版式后,已编辑的内容将被清空且无法保存,是否确认切换版式?'}).then(() => {
1291
+ // 公文版式
1292
+ if (this.templateType === 'officialDocumentFormat') {
1293
+ const html = this.switchingFormat.filter(item => item.key === this.templateType)[0].html
1294
+ this.editor.chain().setContent(html).run()
1295
+ }
1296
+ // 新闻版式
1297
+ if (this.templateType === 'newsFormat') {
1298
+ const html = this.switchingFormat.filter(item => item.key === this.templateType)[0].html
1299
+ this.editor.chain().setContent(html).run()
1300
+ }
1301
+ // 论文版式
1302
+ if (this.templateType === 'paperFormat') {
1303
+ const html = this.switchingFormat.filter(item => item.key === this.templateType)[0].html
1304
+ this.editor.chain().setContent(html).run()
1305
+ }
1306
+ this.isShowSwitchingFormat = false
1307
+ }).catch((err) => {
1308
+ console.log('取消', err)
1309
+ })
1310
+ },
1311
+ // 修改边距
1312
+ changeMargin() {
1313
+ const data = document.querySelectorAll('.editing-cont')[0]
1314
+ this.pageMarginSvg.forEach(item => {
1315
+ if (item.isSelect) {
1316
+ if (item.key === 'standard') {
1317
+ data.style.padding = '8% 0'
1318
+ data.style.margin = '0 15%'
1319
+ }
1320
+ if (item.key === 'narrow') {
1321
+ data.style.padding = '4% 0'
1322
+ data.style.margin = '0 6%'
1323
+ }
1324
+ if (item.key === 'moderate') {
1325
+ data.style.padding = '8% 0'
1326
+ data.style.margin = '0 9%'
1327
+ }
1328
+ if (item.key === 'wide') {
1329
+ data.style.padding = '8% 0'
1330
+ data.style.margin = '0 24%'
1331
+ }
1332
+ this.isShowPageMargin = false
1333
+ }
1334
+ })
1335
+ },
1122
1336
  checkboxTao(checkboxObj) {
1123
1337
  this.checkbox = checkboxObj.value
1124
1338
  },
@@ -1529,6 +1743,12 @@ export default {
1529
1743
  const text2 = text.replace(/[\r\n]/g, '').replace(/\s*/g, '')
1530
1744
  this.editor.chain().focus().insertContentAt(this.selection(), text2).run()
1531
1745
  },
1746
+
1747
+ editorContentClick() {
1748
+ if (this.isEditorContentClick) {
1749
+ this.editor.commands.focus('end')
1750
+ }
1751
+ },
1532
1752
  // 上传word
1533
1753
  uploadDoc(e) {
1534
1754
  let that = this
@@ -1720,6 +1940,11 @@ export default {
1720
1940
  html = ''
1721
1941
  }
1722
1942
  }
1943
+ if (data[i].dataset?.signid === 'splitLine') {
1944
+ this.htmlArr.push(html)
1945
+ pHeight = 0
1946
+ html = ''
1947
+ }
1723
1948
  if (data[i].dataset?.signid === 'ack') {
1724
1949
  this.htmlArr.push(html)
1725
1950
  pHeight = 0
@@ -1738,47 +1963,47 @@ export default {
1738
1963
  let color = '#000'
1739
1964
  let className = data[i].className
1740
1965
  let signid = data[i].dataset.signid
1741
- let signidArr = signid?signid.split('-'):[]
1966
+ let signidArr = signid ? signid.split('-') : []
1742
1967
  let label = 'span'
1743
- if(child && child.nodeName !== '#text'){
1968
+ if (child && child.nodeName !== '#text') {
1744
1969
  fontSize = window.getComputedStyle(child, null).fontSize
1745
1970
  fontFamily = window.getComputedStyle(child, null).fontFamily
1746
1971
  color = window.getComputedStyle(child, null).color
1747
1972
  }
1748
- if(childNodes && childNodes.nodeName === 'MARK'){
1973
+ if (childNodes && childNodes.nodeName === 'MARK') {
1749
1974
  childBColor = window.getComputedStyle(childNodes, null).backgroundColor
1750
1975
  childColor = window.getComputedStyle(childNodes, null).color
1751
1976
  }
1752
- if(signid && signidArr[0]==='title'){
1977
+ if (signid && signidArr[0] === 'title') {
1753
1978
  label = 'strong'
1754
- }else {
1979
+ } else {
1755
1980
  label = 'span'
1756
1981
  }
1757
- if(child && child.nodeName !== '#text'){
1758
- if(childNodes && childNodes.nodeName === 'MARK'){
1759
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}"><mark class="custom-class" data-color="${childBColor}" style="background-color: ${childBColor}; color: ${childColor};">${start.data}</mark></${label}></p>`
1760
- }else {
1761
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}">${start.data}</${label}></p>`
1982
+ if (child && child.nodeName !== '#text') {
1983
+ if (childNodes && childNodes.nodeName === 'MARK') {
1984
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}"><mark class="custom-class" data-color="${childBColor}" style="background-color: ${childBColor}; color: ${childColor};">${start.data}</mark></${label}></p>`
1985
+ } else {
1986
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}">${start.data}</${label}></p>`
1762
1987
  }
1763
- }else {
1764
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${size}px;">${start.data}</${label}></p>`
1988
+ } else {
1989
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}" class="${className}"><${label} style="font-size: ${size}px;">${start.data}</${label}></p>`
1765
1990
  }
1766
1991
  this.htmlArr.push(html)
1767
1992
  pHeight = 0
1768
1993
  html = ''
1769
- if(child && child.nodeName !== '#text'){
1770
- if(childNodes && childNodes.nodeName === 'MARK'){
1771
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}"><mark class="custom-class" data-color="${childBColor}" style="background-color: ${childBColor}; color: ${childColor};">${end.data}</mark></${label}></p>`
1772
- }else {
1773
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}">${end.data}</${label}></p>`
1994
+ if (child && child.nodeName !== '#text') {
1995
+ if (childNodes && childNodes.nodeName === 'MARK') {
1996
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}"><mark class="custom-class" data-color="${childBColor}" style="background-color: ${childBColor}; color: ${childColor};">${end.data}</mark></${label}></p>`
1997
+ } else {
1998
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}"><${label} style="font-size: ${fontSize}; font-family: ${fontFamily};color:${color}">${end.data}</${label}></p>`
1774
1999
  }
1775
- }else {
1776
- html += `<p ${signid?'data-signid='+signid:''} style="text-align: ${textAlign}"><${label} style="font-size: ${size}px;">${end.data}</${label}></p>`
2000
+ } else {
2001
+ html += `<p ${signid ? 'data-signid=' + signid : ''} style="text-align: ${textAlign}"><${label} style="font-size: ${size}px;">${end.data}</${label}></p>`
1777
2002
  }
1778
2003
  pHeight = end.size
1779
2004
  } else {
1780
2005
  pHeight += text
1781
- html += data[i].outerHTML
2006
+ if(data[i].dataset?.signid !== 'splitLine'&&data[i].dataset?.signid !== 'referenceSplitLine')html += data[i].outerHTML
1782
2007
  }
1783
2008
  if (i === data.length - 1) {
1784
2009
  this.htmlArr.push(html)
@@ -1965,12 +2190,12 @@ export default {
1965
2190
  let directoryJson = html2json(this.editor.getHTML()).child
1966
2191
  let editorHtml = this.editor.getHTML()
1967
2192
  let editorJson = this.editor.getJSON()
1968
- let sign = { node: 'element', tag: 'sign', child: []}
2193
+ let sign = {node: 'element', tag: 'sign', child: []}
1969
2194
  let popupsData = {type: 'interpositionData', data: [...this.interpositionData]}
1970
2195
  let data = {
1971
2196
  directoryJson, editorHtml, editorJson, popupsData
1972
2197
  }
1973
- if(this.signMenuShow){
2198
+ if (this.signMenuShow) {
1974
2199
  data.sign = sign
1975
2200
  }
1976
2201
  // data.push(this.editor.getJSON())
@@ -1988,12 +2213,12 @@ export default {
1988
2213
  let directoryJson = html2json(this.editor.getHTML()).child
1989
2214
  let editorHtml = this.editor.getHTML()
1990
2215
  let editorJson = this.editor.getJSON()
1991
- let sign = { node: 'element', tag: 'sign', child: []}
2216
+ let sign = {node: 'element', tag: 'sign', child: []}
1992
2217
  let popupsData = {type: 'interpositionData', data: [...this.interpositionData]}
1993
2218
  let data = {
1994
2219
  directoryJson, editorHtml, editorJson, popupsData
1995
2220
  }
1996
- if(this.signMenuShow){
2221
+ if (this.signMenuShow) {
1997
2222
  data.sign = sign
1998
2223
  }
1999
2224
  // let data = []
@@ -2388,7 +2613,10 @@ export default {
2388
2613
  },
2389
2614
 
2390
2615
  async butTap(data, key, childKey) {
2391
- console.log(data, key, childKey)
2616
+ // 快捷排版
2617
+ if (data.key === 'switchingFormat') {
2618
+ this.isShowSwitchingFormat = true
2619
+ }
2392
2620
  // 快捷排版
2393
2621
  if (data.key === 'shortcut') {
2394
2622
  const menusHtml = butJson(this.editor, this.menusText)[data.key].menuKeys
@@ -2488,14 +2716,63 @@ export default {
2488
2716
  const html = menusHtml.filter(item => item.key == key.key)[0].html
2489
2717
  this.editor.chain().focus().insertContentAt(this.selection(), html).run()
2490
2718
  }
2719
+ // 抬头
2720
+ if (key.key === 'lookUp') {
2721
+ const html = menusHtml.filter(item => item.key == key.key)[0].html
2722
+ this.editor.chain().focus().insertContentAt(this.selection(), html).run()
2723
+ }
2491
2724
  // 信息源
2492
2725
  if (key.key === 'sourcesInfo') {
2493
2726
  const html = menusHtml.filter(item => item.key == key.key)[0].html
2494
2727
  let form = this.selection()
2495
2728
  this.editor.chain().focus().insertContentAt(form, html).run()
2496
2729
  }
2730
+ // 致谢
2731
+ if (key.key === 'ackMenu') {
2732
+ const html = menusHtml.filter(item => item.key == key.key)[0].html
2733
+ const last = this.editor.state.selection.$anchor.path[0].content.size
2734
+ const r = await this.signIdData('ack')//致谢
2735
+ const n = await this.signIdData('paragraph')//落款
2736
+ const b = await this.signIdData('enclosure')//附件
2737
+ // const a = await this.signIdData('reference')//参考文献
2738
+ if (b === -1) {
2739
+ if (n === -1) {
2740
+ if (r === -1) {
2741
+ this.editor.chain().focus().insertContentAt(last, html[0]).run()
2742
+ this.editor.chain().focus().insertContentAt(last + 3, html[1]).run()
2743
+ }
2744
+ return
2745
+ }
2746
+ const num = this.upSort(this.editor, 'paragraph')
2747
+ if (r === -1) {
2748
+ this.editor.chain().focus().insertContentAt(num.len-6, html[0]).run()
2749
+ this.editor.chain().focus().insertContentAt(num.len-2, html[1]).run()
2750
+ }
2751
+ return
2752
+ }
2753
+ const num = this.selectionPath('enclosure')
2754
+ if (r === -1) {
2755
+ this.editor.chain().focus().insertContentAt(num - 7, html[0]).run()
2756
+ const ackNum = this.selectionPath('ack')
2757
+ this.editor.chain().focus().insertContentAt(ackNum, html[1]).run()
2758
+ }
2759
+ }
2497
2760
  // 添加落款
2498
2761
  if (key.key === 'paragraphMenu') {
2762
+ const html = menusHtml.filter(item => item.key == key.key)[0].html
2763
+ const last = this.editor.state.selection.$anchor.path[0].content.size
2764
+ const r = await this.signIdData('paragraph')//落款
2765
+ const n = await this.signIdData('enclosure')//附件
2766
+ if (n === -1) {
2767
+ if (r === -1) this.editor.chain().focus().insertContentAt(last, html).run()
2768
+ return
2769
+ }
2770
+ const num = this.selectionPath('enclosure')
2771
+ if (r === -1) this.editor.chain().focus().insertContentAt(num - 7, html).run()
2772
+ return
2773
+ }
2774
+ // 添加落款
2775
+ /*if (key.key === 'paragraphMenu') {
2499
2776
  const html = menusHtml.filter(item => item.key == key.key)[0].html
2500
2777
  const last = this.editor.state.selection.$anchor.path[0].content.size
2501
2778
  const r = await this.signIdData('paragraph')//落款
@@ -2518,9 +2795,9 @@ export default {
2518
2795
  }
2519
2796
  const num = this.upSort(this.editor, 'ack')
2520
2797
  if (r === -1) this.editor.chain().focus().insertContentAt(num.len - 3, html).run()
2521
- }
2798
+ }*/
2522
2799
  // 致谢
2523
- if (key.key === 'ackMenu') {
2800
+ /* if (key.key === 'ackMenu') {
2524
2801
  const html = menusHtml.filter(item => item.key == key.key)[0].html
2525
2802
  const last = this.editor.state.selection.$anchor.path[0].content.size
2526
2803
  const r = await this.signIdData('ack')
@@ -2556,30 +2833,14 @@ export default {
2556
2833
  // }else {
2557
2834
  // // if (r === -1) this.editor.chain().focus().insertContentAt(num.len - 3, html).run()
2558
2835
  // }
2559
- }
2836
+ }*/
2560
2837
  }
2561
2838
 
2562
2839
  if (data.key === 'textMenu' && key === 0 || data.key === 'titleMenu' && key === 0) return
2563
2840
  // 边距
2564
2841
  if (data.key === 'pageMargin') {
2842
+ this.isShowPageMargin = true
2565
2843
  this.menuStast = 'pageMargin'
2566
- const data = document.querySelectorAll('.editing-cont')[0]
2567
- if (key.key === 'standard') {
2568
- data.style.padding = '8% 0'
2569
- data.style.margin = '0 15%'
2570
- }
2571
- if (key.key === 'narrow') {
2572
- data.style.padding = '4% 0'
2573
- data.style.margin = '0 6%'
2574
- }
2575
- if (key.key === 'moderate') {
2576
- data.style.padding = '8% 0'
2577
- data.style.margin = '0 9%'
2578
- }
2579
- if (key.key === 'wide') {
2580
- data.style.padding = '8% 0'
2581
- data.style.margin = '0 24%'
2582
- }
2583
2844
  }
2584
2845
  // 段落
2585
2846
  if (data.key === 'paragraph') {
@@ -2676,6 +2937,9 @@ export default {
2676
2937
  }
2677
2938
  // 插入
2678
2939
  if (data.key === 'interposition') {
2940
+ if (key.key === 'insertHorizontalLine') {
2941
+ this.isShowHorizontalLine = true
2942
+ }
2679
2943
  if (key.key === 'group-upload') {
2680
2944
  this.isShowUpload = true
2681
2945
  }
@@ -2738,8 +3002,7 @@ export default {
2738
3002
  }
2739
3003
  // 文献
2740
3004
  if (key.key === 'literatureMenu' && childKey) {
2741
- console.log(this.isInsertLink)
2742
- if (this.isInsertLink){
3005
+ if (this.isInsertLink) {
2743
3006
  Message({type: 'text', promptContent: '光标位置不可编辑'})
2744
3007
  return
2745
3008
  }
@@ -3126,9 +3389,9 @@ export default {
3126
3389
  this.isShowPopup = false
3127
3390
  },
3128
3391
  nounExplainSubmit(bubbleData) {
3129
- if(this.$refs.textarea.length){
3392
+ if (this.$refs.textarea.length) {
3130
3393
  this.taggingText = this.$refs.textarea[0].getContent()
3131
- }else {
3394
+ } else {
3132
3395
  this.taggingText = this.$refs.textarea.getContent()
3133
3396
  }
3134
3397
  if (!this.taggingText) {
@@ -3144,7 +3407,7 @@ export default {
3144
3407
  exegesis: this.tipTitle,
3145
3408
  text: this.taggingText
3146
3409
  }
3147
- if (this.exegesisType === 'edit' || (bubbleData&&bubbleData.edit)) {
3410
+ if (this.exegesisType === 'edit' || (bubbleData && bubbleData.edit)) {
3148
3411
  this.interpositionData.forEach(item => {
3149
3412
  if (item.id === this.bubbleData.id) {
3150
3413
  item.text = this.taggingText
@@ -3363,12 +3626,30 @@ export default {
3363
3626
  }
3364
3627
  },
3365
3628
 
3629
+ async addAnnotationMenu(data){
3630
+ const t = await this.signIdData('annotation')
3631
+ const html = `<p contenteditable="false" data-signId="annotation" style="text-align: center;margin-bottom: 30px;"><span style="font-weight: 700;font-size: 16px;">注释:</span></p>`
3632
+ const html2 = `<p contenteditable="false" class="text" data-signId="r-${data.number}"><span style="font-family: FangSong;font-size: 12px;line-height25px">${data.text}</span></p>`
3633
+ const last = this.editor.state.selection.$anchor.path[0].content.size
3634
+ if (t === -1) this.editor.chain().focus().insertContentAt(last, html).run()
3635
+ let last1 = this.editor.state.selection.$anchor.path[0].content.size
3636
+ // const num = this.selectionPath('reference')
3637
+ this.editor.chain().focus().insertContentAt(last1, html2).run()
3638
+ },
3639
+
3366
3640
  async addReferenceMenu(data) {
3367
3641
  const t = await this.signIdData('reference')
3642
+ const b = await this.signIdData('referenceSplitLine') // 判断是否有分页线
3368
3643
  const html = `<p contenteditable="false" data-signId="reference" style="text-align: center;margin-bottom: 30px;"><span style="font-weight: 700;font-size: 16px;">参考文献:</span></p>`
3369
- const html2 = `<p contenteditable="false" data-signId="r-${data.number}"><span style="font-family: FangSong;font-size: 12px;line-height25px">${data.text}</span></p>`
3644
+ const html2 = `<p contenteditable="false" class="text" data-signId="r-${data.number}"><span style="font-family: FangSong;font-size: 12px;line-height25px">${data.text}</span></p>`
3370
3645
  const last = this.editor.state.selection.$anchor.path[0].content.size
3371
- if (t === -1) this.editor.chain().focus().insertContentAt(last, html).run()
3646
+ // if (t === -1) this.editor.chain().focus().insertContentAt(last, html).run()
3647
+
3648
+ if (b === -1) {
3649
+ if (t === -1) this.editor.chain().focus().insertContentAt(last, html).run()
3650
+ } else {
3651
+ if (t === -1) this.editor.chain().focus().insertContentAt(this.selectionPath('referenceSplitLine'), html).run()
3652
+ }
3372
3653
  let last1 = this.editor.state.selection.$anchor.path[0].content.size
3373
3654
  // const num = this.selectionPath('reference')
3374
3655
  this.editor.chain().focus().insertContentAt(last1, html2).run()
@@ -3480,13 +3761,13 @@ export default {
3480
3761
  .read-only-p {
3481
3762
  width: 100%;
3482
3763
  height: 100%;
3483
- white-space:pre-wrap;
3764
+ white-space: pre-wrap;
3484
3765
  }
3485
3766
 
3486
3767
  :deep(.read-only-p p) {
3487
3768
  line-height: 24px;
3488
3769
  text-align: justify;
3489
- white-space:pre-wrap;
3770
+ white-space: pre-wrap;
3490
3771
  }
3491
3772
 
3492
3773
  :deep(p[data-signid="subject"]) {
@@ -4062,11 +4343,9 @@ li {
4062
4343
  height: 30px;
4063
4344
  display: flex;
4064
4345
  flex-direction: row;
4065
- justify-content: flex-start;
4066
4346
  align-items: center;
4067
4347
  margin-bottom: 5px;
4068
4348
  position: relative;
4069
- display: flex;
4070
4349
  justify-content: space-between;
4071
4350
  }
4072
4351
 
@@ -4159,8 +4438,122 @@ li {
4159
4438
  flex-direction: column;
4160
4439
  justify-content: space-between;
4161
4440
  }
4162
- :deep(p){
4163
- white-space:pre-wrap;
4164
- word-break:break-all;
4441
+
4442
+ :deep(p) {
4443
+ white-space: pre-wrap;
4444
+ word-break: break-all;
4445
+ }
4446
+
4447
+ .page-margin-box {
4448
+ width: 100%;
4449
+ height: calc(100% - 70px);
4450
+ padding-top: 30px
4451
+ }
4452
+
4453
+ .page-margin-title {
4454
+ width: 100%;
4455
+ font-size: 18px;
4456
+ font-weight: 700;
4457
+ line-height: 24px;
4458
+ text-align: center;
4459
+ }
4460
+
4461
+ .page-line-select {
4462
+ width: 100%;
4463
+ height: calc(100% - 34px);
4464
+ display: flex;
4465
+ flex-direction: row;
4466
+ align-items: center;
4467
+ padding: 0 90px;
4468
+ margin-top: 10px;
4469
+ position: relative;
4470
+ }
4471
+
4472
+ .page-line-select > .name {
4473
+ width: 80px;
4474
+ font-size: 16px;
4475
+ text-align: justify;
4476
+ text-align-last: justify;
4477
+ }
4478
+
4479
+ .page-line-select :deep(input) {
4480
+ width: 300px;
4481
+ }
4482
+
4483
+ .page-margin-select {
4484
+ width: 100%;
4485
+ height: calc(100% - 34px);
4486
+ display: flex;
4487
+ flex-direction: row;
4488
+ justify-content: space-between;
4489
+ padding: 0 90px;
4490
+ margin-top: 10px
4491
+ }
4492
+
4493
+ .page-margin-select-item {
4494
+ width: 160px;
4495
+ height: 100%;
4496
+ display: flex;
4497
+ flex-direction: column;
4498
+ justify-content: space-between;
4499
+ align-items: center;
4500
+ position: relative;
4501
+ }
4502
+
4503
+ .is-select {
4504
+ position: absolute;
4505
+ top: 50%;
4506
+ transform: translateY(-100%);
4507
+ }
4508
+
4509
+ .page-margin-select-name {
4510
+ font-size: 18px;
4511
+ font-weight: 400;
4512
+ line-height: 24px;
4513
+ color: rgba(0, 0, 0, 1);
4514
+ }
4515
+
4516
+ :deep(.solid){
4517
+ height: 0;
4518
+ border-bottom:1px solid #000;
4519
+ }
4520
+
4521
+ :deep(.dashed){
4522
+ height: 0;
4523
+ border-bottom:1px dashed #000;
4524
+ }
4525
+
4526
+ :deep(.double){
4527
+ height: 0;
4528
+ border-style:double;
4529
+ border-top:none;
4530
+ border-left: none;
4531
+ border-right: none;
4532
+ }
4533
+
4534
+ :deep(.paging-line){
4535
+ width: 100%;
4536
+ font-size: 12px;
4537
+ font-weight: 400;
4538
+ line-height: 12px;
4539
+ color: rgba(204, 204, 204, 1);
4540
+ text-align: center;
4541
+ margin: 60px 0 120px;
4542
+ display: flex;
4543
+ flex-direction: row;
4544
+ justify-content: space-around;
4545
+ align-items: center;
4546
+ }
4547
+ :deep(.paging-line)::before,:deep(.paging-line)::after{
4548
+ content:'';
4549
+ flex: 1;
4550
+ height: 0px;
4551
+ border-bottom: 1px dashed rgba(204, 204, 204, 1);
4552
+ }
4553
+ :deep(.paging-line)::before{
4554
+ //margin-right: 0.25rem;
4555
+ }
4556
+ :deep(.paging-line)::after{
4557
+ //margin-left: 0.25rem;
4165
4558
  }
4166
4559
  </style>
@@ -0,0 +1,48 @@
1
+ import { Extension, nodeInputRule } from '@tiptap/core'
2
+
3
+ export const borderBottom = Extension.create({
4
+ name: 'borderBottom',
5
+
6
+ addOptions() {
7
+ return {
8
+ types: ['heading', 'paragraph'],
9
+ }
10
+ },
11
+
12
+ addGlobalAttributes() {
13
+ return [
14
+ {
15
+ types: this.options.types,
16
+ attributes: {
17
+ borderBottom: {
18
+ default: null,
19
+ parseHTML: element => element.style.borderBottom.replace(/['"]+/g, ''),
20
+ renderHTML: attributes => {
21
+ if (!attributes.borderBottom) {
22
+ return {}
23
+ }
24
+ return {
25
+ style:`border-bottom: ${attributes.borderBottom}`,
26
+ }
27
+ },
28
+ },
29
+ },
30
+ },
31
+ ]
32
+ },
33
+
34
+ addCommands() {
35
+ return {
36
+ setMargin: borderBottom => ({ chain }) => {
37
+ return chain()
38
+ .setNode('paragraph', { borderBottom })
39
+ .run()
40
+ },
41
+ unsetMargin: () => ({ chain }) => {
42
+ return chain()
43
+ .setNode('paragraph', { borderBottom: null })
44
+ .run()
45
+ },
46
+ }
47
+ },
48
+ })
@@ -0,0 +1,20 @@
1
+ <script>
2
+ export default {
3
+ name: "siSelect"
4
+ }
5
+ </script>
6
+
7
+ <template>
8
+ <svg fill="none" height="40" viewBox="0 0 40 40" width="40"
9
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
10
+ <circle cx="20" cy="20" fill="#13BF6C" r="20">
11
+ </circle>
12
+ <path d="M12.4167 20.0033L17.8367 25.4133L28.6667 14.5833" stroke="rgba(255, 255, 255, 1)" stroke-linecap="round" stroke-linejoin="round"
13
+ stroke-width="3">
14
+ </path>
15
+ </svg>
16
+ </template>
17
+
18
+ <style scoped>
19
+
20
+ </style>
@@ -0,0 +1,68 @@
1
+ <template>
2
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="181" height="247" viewBox="0 0 181 247" fill="none">
3
+ <g filter="url(#filter_123_83)">
4
+ <rect x="10.5" y="10.5" width="160" height="226" rx="2" fill="#FFFFFF" >
5
+ </rect>
6
+ <path fill="rgba(204, 204, 204, 0.7)" d="M12.5 10L168.5 10C169.881 10 171 11.1193 171 12.5L171 234.5C171 235.881 169.881 237 168.5 237L12.5 237C11.1193 237 10 235.881 10 234.5L10 12.5C10 11.1193 11.1193 10 12.5 10ZM12.5 11C11.6716 11 11 11.6716 11 12.5L11 234.5C11 235.328 11.6716 236 12.5 236L168.5 236C169.328 236 170 235.328 170 234.5L170 12.5C170 11.6716 169.328 11 168.5 11L12.5 11Z">
7
+ </path>
8
+ </g>
9
+ <rect x="72.5" y="29.5" width="38" height="9.999999999999998" fill="#CCCCCC" >
10
+ </rect>
11
+ <rect x="38.5" y="44.5" width="118" height="6" fill="#CCCCCC" >
12
+ </rect>
13
+ <rect x="25.5" y="88.5" width="131" height="6" fill="#CCCCCC" >
14
+ </rect>
15
+ <rect x="25.5" y="132.5" width="131" height="6" fill="#CCCCCC" >
16
+ </rect>
17
+ <rect x="25.5" y="176.5" width="131" height="6" fill="#CCCCCC" >
18
+ </rect>
19
+ <rect x="25.5" y="66.5" width="131" height="6" fill="#CCCCCC" >
20
+ </rect>
21
+ <rect x="25.5" y="110.5" width="131" height="6" fill="#CCCCCC" >
22
+ </rect>
23
+ <rect x="25.5" y="154.5" width="131" height="6" fill="#CCCCCC" >
24
+ </rect>
25
+ <rect x="25.5" y="198.5" width="131" height="6" fill="#CCCCCC" >
26
+ </rect>
27
+ <rect x="25.5" y="55.5" width="131" height="6" fill="#CCCCCC" >
28
+ </rect>
29
+ <rect x="25.5" y="99.5" width="131" height="6" fill="#CCCCCC" >
30
+ </rect>
31
+ <rect x="25.5" y="143.5" width="131" height="6" fill="#CCCCCC" >
32
+ </rect>
33
+ <rect x="25.5" y="187.5" width="131" height="6" fill="#CCCCCC" >
34
+ </rect>
35
+ <rect x="25.5" y="77.5" width="131" height="6" fill="#CCCCCC" >
36
+ </rect>
37
+ <rect x="25.5" y="121.5" width="131" height="6" fill="#CCCCCC" >
38
+ </rect>
39
+ <rect x="25.5" y="165.5" width="131" height="6" fill="#CCCCCC" >
40
+ </rect>
41
+ <rect x="25.5" y="209.5" width="99" height="6" fill="#CCCCCC" >
42
+ </rect>
43
+ <defs>
44
+ <filter id="filter_123_83" x="0" y="0" width="181" height="247" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
45
+ <feFlood flood-opacity="0" result="feFloodId_123_83"/>
46
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha_123_83"/>
47
+ <feOffset dx="0" dy="0"/>
48
+ <feGaussianBlur stdDeviation="5"/>
49
+ <feComposite in2="hardAlpha_123_83" operator="out"/>
50
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
51
+ <feBlend mode="normal" in2="feFloodId_123_83" result="dropShadow_1_123_83"/>
52
+ <feBlend mode="normal" in="SourceGraphic" in2="dropShadow_1_123_83" result="shape_123_83"/>
53
+ </filter>
54
+ </defs>
55
+ </svg>
56
+ </template>
57
+
58
+ <script>
59
+ export default {
60
+ name: "margin-moderation",
61
+ props: {
62
+ }
63
+ }
64
+ </script>
65
+
66
+ <style scoped>
67
+
68
+ </style>
@@ -0,0 +1,70 @@
1
+ <script>
2
+ export default {
3
+ name: "margin-narrow"
4
+ }
5
+ </script>
6
+
7
+ <template>
8
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="181" height="247" viewBox="0 0 181 247" fill="none">
9
+ <g filter="url(#filter_123_82)">
10
+ <rect x="10.5" y="10.5" width="160" height="226" rx="2" fill="#FFFFFF" >
11
+ </rect>
12
+ <path fill="rgba(204, 204, 204, 0.7)" d="M12.5 10L168.5 10C169.881 10 171 11.1193 171 12.5L171 234.5C171 235.881 169.881 237 168.5 237L12.5 237C11.1193 237 10 235.881 10 234.5L10 12.5C10 11.1193 11.1193 10 12.5 10ZM12.5 11C11.6716 11 11 11.6716 11 12.5L11 234.5C11 235.328 11.6716 236 12.5 236L168.5 236C169.328 236 170 235.328 170 234.5L170 12.5C170 11.6716 169.328 11 168.5 11L12.5 11Z">
13
+ </path>
14
+ </g>
15
+ <rect x="71.5" y="19.5" width="38" height="9.999999999999998" fill="#CCCCCC" >
16
+ </rect>
17
+ <rect x="36.75" y="34.5" width="123.74999618530273" height="6" fill="#CCCCCC" >
18
+ </rect>
19
+ <rect x="20.5" y="78.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
20
+ </rect>
21
+ <rect x="20.5" y="122.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
22
+ </rect>
23
+ <rect x="20.5" y="166.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
24
+ </rect>
25
+ <rect x="20.5" y="56.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
26
+ </rect>
27
+ <rect x="20.5" y="100.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
28
+ </rect>
29
+ <rect x="20.5" y="144.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
30
+ </rect>
31
+ <rect x="20.5" y="188.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
32
+ </rect>
33
+ <rect x="20.5" y="210.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
34
+ </rect>
35
+ <rect x="20.5" y="199.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
36
+ </rect>
37
+ <rect x="20.5" y="45.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
38
+ </rect>
39
+ <rect x="20.5" y="89.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
40
+ </rect>
41
+ <rect x="20.5" y="133.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
42
+ </rect>
43
+ <rect x="20.5" y="177.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
44
+ </rect>
45
+ <rect x="20.5" y="67.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
46
+ </rect>
47
+ <rect x="20.5" y="111.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
48
+ </rect>
49
+ <rect x="20.5" y="155.5" width="140.00003051757812" height="6" fill="#CCCCCC" >
50
+ </rect>
51
+ <rect x="20.5" y="221.5" width="99" height="6" fill="#CCCCCC" >
52
+ </rect>
53
+ <defs>
54
+ <filter id="filter_123_82" x="0" y="0" width="181" height="247" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
55
+ <feFlood flood-opacity="0" result="feFloodId_123_82"/>
56
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha_123_82"/>
57
+ <feOffset dx="0" dy="0"/>
58
+ <feGaussianBlur stdDeviation="5"/>
59
+ <feComposite in2="hardAlpha_123_82" operator="out"/>
60
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
61
+ <feBlend mode="normal" in2="feFloodId_123_82" result="dropShadow_1_123_82"/>
62
+ <feBlend mode="normal" in="SourceGraphic" in2="dropShadow_1_123_82" result="shape_123_82"/>
63
+ </filter>
64
+ </defs>
65
+ </svg>
66
+ </template>
67
+
68
+ <style scoped>
69
+
70
+ </style>
@@ -0,0 +1,66 @@
1
+ <script>
2
+ export default {
3
+ name: "margin-standard"
4
+ }
5
+ </script>
6
+
7
+ <template>
8
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="181" height="247" viewBox="0 0 181 247" fill="none">
9
+ <g filter="url(#filter_123_81)">
10
+ <rect x="10.5" y="10.5" width="160" height="226" rx="2" fill="#FFFFFF" >
11
+ </rect>
12
+ <path fill="rgba(204, 204, 204, 0.7)" d="M12.5 10L168.5 10C169.881 10 171 11.1193 171 12.5L171 234.5C171 235.881 169.881 237 168.5 237L12.5 237C11.1193 237 10 235.881 10 234.5L10 12.5C10 11.1193 11.1193 10 12.5 10ZM12.5 11C11.6716 11 11 11.6716 11 12.5L11 234.5C11 235.328 11.6716 236 12.5 236L168.5 236C169.328 236 170 235.328 170 234.5L170 12.5C170 11.6716 169.328 11 168.5 11L12.5 11Z">
13
+ </path>
14
+ </g>
15
+ <rect x="71.5" y="29.5" width="38" height="9.999999999999998" fill="#CCCCCC" >
16
+ </rect>
17
+ <rect x="47.5" y="44.5" width="99" height="6" fill="#CCCCCC" >
18
+ </rect>
19
+ <rect x="34.5" y="88.5" width="112" height="6" fill="#CCCCCC" >
20
+ </rect>
21
+ <rect x="34.5" y="132.5" width="112" height="6" fill="#CCCCCC" >
22
+ </rect>
23
+ <rect x="34.5" y="176.5" width="112" height="6" fill="#CCCCCC" >
24
+ </rect>
25
+ <rect x="34.5" y="66.5" width="112" height="6" fill="#CCCCCC" >
26
+ </rect>
27
+ <rect x="34.5" y="110.5" width="112" height="6" fill="#CCCCCC" >
28
+ </rect>
29
+ <rect x="34.5" y="154.5" width="112" height="6" fill="#CCCCCC" >
30
+ </rect>
31
+ <rect x="34.5" y="198.5" width="112" height="6" fill="#CCCCCC" >
32
+ </rect>
33
+ <rect x="34.5" y="55.5" width="112" height="6" fill="#CCCCCC" >
34
+ </rect>
35
+ <rect x="34.5" y="99.5" width="112" height="6" fill="#CCCCCC" >
36
+ </rect>
37
+ <rect x="34.5" y="143.5" width="112" height="6" fill="#CCCCCC" >
38
+ </rect>
39
+ <rect x="34.5" y="187.5" width="112" height="6" fill="#CCCCCC" >
40
+ </rect>
41
+ <rect x="34.5" y="77.5" width="112" height="6" fill="#CCCCCC" >
42
+ </rect>
43
+ <rect x="34.5" y="121.5" width="112" height="6" fill="#CCCCCC" >
44
+ </rect>
45
+ <rect x="34.5" y="165.5" width="112" height="6" fill="#CCCCCC" >
46
+ </rect>
47
+ <rect x="34.5" y="209.5" width="99" height="6" fill="#CCCCCC" >
48
+ </rect>
49
+ <defs>
50
+ <filter id="filter_123_81" x="0" y="0" width="181" height="247" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
51
+ <feFlood flood-opacity="0" result="feFloodId_123_81"/>
52
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha_123_81"/>
53
+ <feOffset dx="0" dy="0"/>
54
+ <feGaussianBlur stdDeviation="5"/>
55
+ <feComposite in2="hardAlpha_123_81" operator="out"/>
56
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
57
+ <feBlend mode="normal" in2="feFloodId_123_81" result="dropShadow_1_123_81"/>
58
+ <feBlend mode="normal" in="SourceGraphic" in2="dropShadow_1_123_81" result="shape_123_81"/>
59
+ </filter>
60
+ </defs>
61
+ </svg>
62
+ </template>
63
+
64
+ <style scoped>
65
+
66
+ </style>
@@ -0,0 +1,66 @@
1
+ <script>
2
+ export default {
3
+ name: "margin-wide"
4
+ }
5
+ </script>
6
+
7
+ <template>
8
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="181" height="247" viewBox="0 0 181 247" fill="none">
9
+ <g filter="url(#filter_123_84)">
10
+ <rect x="10.5" y="10.5" width="160" height="226" rx="2" fill="#FFFFFF" >
11
+ </rect>
12
+ <path fill="rgba(204, 204, 204, 0.7)" d="M12.5 10L168.5 10C169.881 10 171 11.1193 171 12.5L171 234.5C171 235.881 169.881 237 168.5 237L12.5 237C11.1193 237 10 235.881 10 234.5L10 12.5C10 11.1193 11.1193 10 12.5 10ZM12.5 11C11.6716 11 11 11.6716 11 12.5L11 234.5C11 235.328 11.6716 236 12.5 236L168.5 236C169.328 236 170 235.328 170 234.5L170 12.5C170 11.6716 169.328 11 168.5 11L12.5 11Z">
13
+ </path>
14
+ </g>
15
+ <rect x="71.5" y="35.5" width="38" height="9.999999999999998" fill="#CCCCCC" >
16
+ </rect>
17
+ <rect x="56.736572265625" y="50.5" width="74.96000000000001" height="6" fill="#CCCCCC" >
18
+ </rect>
19
+ <rect x="48.5" y="94.5" width="83.2" height="6" fill="#CCCCCC" >
20
+ </rect>
21
+ <rect x="48.5" y="138.5" width="83.2" height="6" fill="#CCCCCC" >
22
+ </rect>
23
+ <rect x="48.5" y="182.5" width="83.2" height="6" fill="#CCCCCC" >
24
+ </rect>
25
+ <rect x="48.5" y="72.5" width="83.2" height="6" fill="#CCCCCC" >
26
+ </rect>
27
+ <rect x="48.5" y="116.5" width="83.2" height="6" fill="#CCCCCC" >
28
+ </rect>
29
+ <rect x="48.5" y="160.5" width="83.2" height="6" fill="#CCCCCC" >
30
+ </rect>
31
+ <rect x="48.5" y="204.5" width="83.2" height="6" fill="#CCCCCC" >
32
+ </rect>
33
+ <rect x="48.5" y="61.5" width="83.2" height="6" fill="#CCCCCC" >
34
+ </rect>
35
+ <rect x="48.5" y="105.5" width="83.2" height="6" fill="#CCCCCC" >
36
+ </rect>
37
+ <rect x="48.5" y="149.5" width="83.2" height="6" fill="#CCCCCC" >
38
+ </rect>
39
+ <rect x="48.5" y="193.5" width="83.2" height="6" fill="#CCCCCC" >
40
+ </rect>
41
+ <rect x="48.5" y="83.5" width="83.2" height="6" fill="#CCCCCC" >
42
+ </rect>
43
+ <rect x="48.5" y="127.5" width="83.2" height="6" fill="#CCCCCC" >
44
+ </rect>
45
+ <rect x="48.5" y="171.5" width="83.2" height="6" fill="#CCCCCC" >
46
+ </rect>
47
+ <rect x="48.5" y="215.5" width="74" height="6" fill="#CCCCCC" >
48
+ </rect>
49
+ <defs>
50
+ <filter id="filter_123_84" x="0" y="0" width="181" height="247" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
51
+ <feFlood flood-opacity="0" result="feFloodId_123_84"/>
52
+ <feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha_123_84"/>
53
+ <feOffset dx="0" dy="0"/>
54
+ <feGaussianBlur stdDeviation="5"/>
55
+ <feComposite in2="hardAlpha_123_84" operator="out"/>
56
+ <feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0"/>
57
+ <feBlend mode="normal" in2="feFloodId_123_84" result="dropShadow_1_123_84"/>
58
+ <feBlend mode="normal" in="SourceGraphic" in2="dropShadow_1_123_84" result="shape_123_84"/>
59
+ </filter>
60
+ </defs>
61
+ </svg>
62
+ </template>
63
+
64
+ <style scoped>
65
+
66
+ </style>
package/src/index.js CHANGED
@@ -83,7 +83,7 @@ function install(app) {
83
83
  }
84
84
 
85
85
  export default {
86
- version: '1.33.379',
86
+ version: '1.33.381',
87
87
  install,
88
88
  Calendar,
89
89
  Message,