zydx-plus 1.32.183 → 1.32.185

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.32.183",
3
+ "version": "1.32.185",
4
4
  "description": "Vue.js",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -64,7 +64,7 @@ export function butJson (editor,data) {
64
64
  name: '标注编号',
65
65
  key: 'numberMenu',
66
66
  menuKeys: [],
67
- html: `<sup>【${menusData(data,'numberMenu').text}】</sup>`
67
+ html: `<sup>[${menusData(data,'numberMenu').text}]</sup>`
68
68
  },
69
69
  keywordMenu: {
70
70
  name: '关键词',
@@ -95,6 +95,15 @@ export function butJson (editor,data) {
95
95
  ],
96
96
  index: numSort(editor)
97
97
  },
98
+ ackMenu: {
99
+ name: '致谢',
100
+ key: 'ackMenu',
101
+ menuKeys: [],
102
+ html: [
103
+ `<p data-signId="ack" contenteditable="false" style="text-align: center;"><span style="color: rgb(0, 0, 0);font-size: 24px;font-weight: bold;">致谢</span></p>`,
104
+ `<p><span style="color: rgb(0, 0, 0);font-size: 14px;">致谢内容...</span></p>`
105
+ ]
106
+ },
98
107
  'group-image': {
99
108
  name: '上传图片',
100
109
  key: 'group-image',
@@ -5,11 +5,11 @@
5
5
  <div class="editor-but-name" v-if="item.key === 'group-upload'">
6
6
  <label>
7
7
  <input type="file" @change="upload($event,item.key)" accept=".docx,.pptx,.pdf,.xlsx" style="display: none;">
8
- <span>{{ item.name }}</span>
8
+ <span v-html="item.name"></span>
9
9
  </label>
10
10
  </div>
11
11
  <div v-else class="editor-but-name" @click="butTap(item,0)">
12
- <span>{{ item.name }}</span>
12
+ <span v-html="item.name"></span>
13
13
  <img v-if="item.menuKeys.length > 0" src="data:image/png;base64,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" alt="" />
14
14
  </div>
15
15
  <div class="editor-but-down" v-if="item.menuKeys.length > 0">
@@ -17,9 +17,9 @@
17
17
  <li @click="butTap(item,item2)" v-for="(item2,index2) in item.menuKeys">
18
18
  <label v-if="item2.key === 'uploadImage'">
19
19
  <input type="file" @change="upload($event,item2.key)" accept="image/*" style="display: none;">
20
- <span>{{ item2.name }}</span>
20
+ <span v-html="item2.name"></span>
21
21
  </label>
22
- <span v-else>{{ item2.name }}</span>
22
+ <span v-else v-html="item2.name"></span>
23
23
  </li>
24
24
  </ul>
25
25
  </div>
@@ -221,7 +221,7 @@ export default {
221
221
  },
222
222
  emits: ['confirm','enclosure'],
223
223
  methods: {
224
- readOnlyPage() {
224
+ readOnlyPage() {
225
225
  this.htmlArr = []
226
226
  const data = document.querySelectorAll('.editing-cont')[0].childNodes[0].childNodes
227
227
  let max = 1123
@@ -229,6 +229,11 @@ export default {
229
229
  let html = ''
230
230
  for (let i = 0; i < data.length; i++) {
231
231
  let text = data[i].offsetHeight
232
+ if(data[i].dataset?.signid === 'ack') {
233
+ this.htmlArr.push(html)
234
+ pHeight = 0
235
+ html = ''
236
+ }
232
237
  if((pHeight + text) > max) {
233
238
  // console.log(this.rows(data[i],(pHeight + text) - max))
234
239
  this.htmlArr.push(html)
@@ -279,7 +284,7 @@ export default {
279
284
  }
280
285
  }
281
286
  },
282
- upSort(editor) {
287
+ upSort(editor,v) {
283
288
  const data = editor.state.selection.$anchor.path[0].content.content
284
289
  let num = 1
285
290
  let len = 0
@@ -294,7 +299,7 @@ export default {
294
299
  }
295
300
  })
296
301
  return {
297
- len: this.selectionPath('enclosure') + len,
302
+ len: this.selectionPath(v) + len,
298
303
  num: num
299
304
  }
300
305
  },
@@ -313,12 +318,12 @@ export default {
313
318
  if(b === -1) {
314
319
  const last = this.editor.state.selection.$anchor.path[0].content.size
315
320
  if(t === -1) this.editor.chain().focus().insertContentAt(last,html).run()
316
- const num = this.upSort(this.editor)
321
+ const num = this.upSort(this.editor,'enclosure')
317
322
  const html2 = `<p contenteditable="false" data-signId="u-${num.num}"><a href="${url}" ><span>${num.num}. ${name}</span></a></p>`
318
323
  this.editor.chain().focus().insertContentAt(num.len,html2).run()
319
324
  }else {
320
325
  if(t === -1) this.editor.chain().focus().insertContentAt(this.selectionPath('paragraph',b - 1),html).run()
321
- const num = this.upSort(this.editor)
326
+ const num = this.upSort(this.editor,'enclosure')
322
327
  const html2 = `<p contenteditable="false" data-signId="u-${num.num}"><a href="${url}" ><span>${num.num}. ${name}</span></a></p>`
323
328
  this.editor.chain().focus().insertContentAt(num.len,html2).run()
324
329
  }
@@ -385,7 +390,17 @@ export default {
385
390
  organizeButton() {
386
391
  this.toolbar.forEach(item => {
387
392
  let obj = butJson(this.editor,this.menusText)[item.key === undefined? item : item.key]
388
- if (obj) this.butData.push(obj)
393
+ if (obj) {
394
+ if(item.key === undefined) {
395
+ this.butData.push(obj)
396
+ }else {
397
+ this.butData.push({
398
+ key: item.key,
399
+ menuKeys: obj.menuKeys,
400
+ name: item.title
401
+ })
402
+ }
403
+ }
389
404
  })
390
405
  },
391
406
  async butTap(data,key) {
@@ -436,8 +451,14 @@ export default {
436
451
  if(data.key === 'paragraphMenu') {
437
452
  const html = butJson(this.editor,this.menusText)[data.key].html
438
453
  const last = this.editor.state.selection.$anchor.path[0].content.size
454
+ const b = await this.signIdData('ack')
439
455
  const r = await this.signIdData('paragraph')
440
- if(r === -1) this.editor.chain().focus().insertContentAt(last,html).run()
456
+ if(b === -1) {
457
+ if(r === -1) this.editor.chain().focus().insertContentAt(last,html).run()
458
+ }else {
459
+ const num = this.upSort(this.editor,'ack')
460
+ if(r === -1) this.editor.chain().focus().insertContentAt(num.len-3,html).run()
461
+ }
441
462
  }
442
463
  // 标注编号
443
464
  if(data.key === 'numberMenu') {
@@ -454,6 +475,16 @@ export default {
454
475
  const html = butJson(this.editor,this.menusText)[data.key].html
455
476
  this.editor.chain().focus().insertContentAt(this.selection(),html).run()
456
477
  }
478
+ // 致谢
479
+ if(data.key === 'ackMenu') {
480
+ const html = butJson(this.editor,this.menusText)[data.key].html
481
+ const last = this.editor.state.selection.$anchor.path[0].content.size
482
+ const r = await this.signIdData('ack')
483
+ if(r === -1) {
484
+ this.editor.chain().focus().insertContentAt(last,html[0]).run()
485
+ this.editor.chain().focus().insertContentAt(last+3,html[1]).run()
486
+ }
487
+ }
457
488
  // 文献
458
489
  if(data.key === 'literatureMenu') {
459
490
  const html = butJson(this.editor,this.menusText)[data.key].html
@@ -16,13 +16,13 @@ export const titleId = Extension.create({
16
16
  attributes: {
17
17
  titleId: {
18
18
  default: null,
19
- parseHTML: element => element.getAttribute('id'),
19
+ parseHTML: element => element.getAttribute('class'),
20
20
  renderHTML: attributes => {
21
21
  if (!attributes.titleId) {
22
22
  return {}
23
23
  }
24
24
  return {
25
- 'id': attributes.titleId,
25
+ 'class': attributes.titleId,
26
26
  }
27
27
  },
28
28
  },
@@ -158,6 +158,7 @@ export default {
158
158
  let arr = []
159
159
  v.forEach(item => {
160
160
  arr.push({
161
+ ...v,
161
162
  quesType: item.quesType,
162
163
  quesName: item.quesName,
163
164
  easyScore: item.easyScore? item.easyScore: '',
@@ -180,12 +181,16 @@ export default {
180
181
  }
181
182
  },
182
183
  // 添加数据
183
- addData(v) {
184
+ addData(v,n) {
185
+ const len = this.question.length
186
+ n(len)
187
+ if(len === 6) return
184
188
  if(this.empty) {
185
189
  this.empty = false
186
190
  this.question = []
187
191
  }
188
192
  this.question.push({
193
+ ...v,
189
194
  quesType: v.quesType,
190
195
  quesName: v.quesName,
191
196
  easyScore:'',
@@ -88,11 +88,20 @@
88
88
  }
89
89
  .subject-title{
90
90
  flex: 1;
91
- text-indent: 2em;
92
91
  position: relative;
93
92
  }
94
93
  .subject-title label{
95
- display: flex;
94
+ display: inline-block;
95
+ }
96
+ .subject-title label input{
97
+ position: absolute;
98
+ top: 5px;
99
+ left: 0;
100
+ z-index: 1;
101
+ }
102
+ .subject span{
103
+ text-align: justify;
104
+ padding-left: 2em;
96
105
  }
97
106
  .subject span em{
98
107
  font-style: normal;
@@ -145,8 +154,16 @@ input[name='check'] {
145
154
  left: 0;
146
155
  }
147
156
  .subject-but{
157
+ position: relative;
158
+ }
159
+ .subject-but b{
148
160
  position: absolute;
149
- bottom: 2px;
150
- right: 0;
151
161
  z-index: 1;
162
+ display: flex;
163
+ }
164
+ .subject-html{
165
+ margin: 2px 0;
166
+ }
167
+ .subject-html :deep(p){
168
+ margin: 2px 0;
152
169
  }
@@ -6,21 +6,31 @@
6
6
  <div class="subject-title">
7
7
  <label>
8
8
  <input v-if="multipleShow" type="checkbox" :checked="item.checked" @change="checkboxChange($event,index)" name="check" />
9
- <span>{{ item.order }}.<em v-html="item.title"></em></span>
9
+ <span>{{ item.order }}.<em v-html="item.title"></em>
10
+ <i class="subject-but" ref="subject">
11
+ <b :style="{right: -item.right + 'px', top: item.top + 'px'}" v-if="butShow" ref="b">
12
+ <button class="but" @click="modify(item)">修改</button>
13
+ <button class="but" @click="del(item)">删除</button>
14
+ </b>
15
+ <b :style="{right: -item.right + 'px', top: item.top + 'px'}" v-if="replace" ref="b">
16
+ <button class="but" @click="replaceTap(item,index)">替换题目</button>
17
+ </b>
18
+ <b :style="{right: -item.right + 'px', top: item.top + 'px'}" v-if="choice" ref="b">
19
+ <button class="but"
20
+ @click="choiceTap(item,index)"
21
+ :disabled="!item.choice"
22
+ :style="{border: !item.choice?'1px solid #ccc': '1px solid #000'}">
23
+ {{ choiceState? '选择题目' : item.choice?'撤销选择': '选择题目' }}
24
+ </button>
25
+ </b>
26
+ </i>
27
+ </span>
10
28
  </label>
11
- <div class="subject-but">
12
- <button class="but" v-if="butShow" @click="modify(item)">修改</button>
13
- <button class="but" v-if="butShow" @click="del(item)">删除</button>
14
- <button class="but" v-if="replace" @click="replaceTap(item,index)">替换题目</button>
15
- <button class="but" v-if="choice"
16
- @click="choiceTap(item,index)"
17
- :disabled="!item.choice"
18
- :style="{border: !item.choice?'1px solid #ccc': '1px solid #000'}">
19
- {{ choiceState? '选择题目' : item.choice?'撤销选择': '选择题目' }}
20
- </button>
21
- </div>
22
29
  </div>
23
30
  </div>
31
+ <div v-if="item.alist" class="subject-html">
32
+ <div v-for="(item,index) in item.alist" v-html="item.amexontet"></div>
33
+ </div>
24
34
  <div class="choice" v-if="item.testKey">
25
35
  <div class="choice-box" v-for="(ts,ind) in JSON.parse(item.testKey)">
26
36
  <label>
@@ -35,7 +45,7 @@
35
45
  </template>
36
46
 
37
47
  <script>
38
-
48
+ import { html2json, json2html } from 'html2json'
39
49
  export default {
40
50
  name: "zydx-seek",
41
51
  data() {
@@ -81,8 +91,24 @@ export default {
81
91
  this.value = val
82
92
  this.value.map((item,index) => {
83
93
  item.choice = true
94
+ item.right = 0
95
+ item.top = 0
96
+ if(item.alist) {
97
+ item.alist.map(x => {
98
+ x.amexontet = json2html({node: "root",child: JSON.parse(x.amexontet)})
99
+ return x
100
+ })
101
+ }
84
102
  return item
85
103
  })
104
+ this.$nextTick(() => {
105
+ const w = this.$refs.parer.offsetWidth
106
+ for(let i = 0; i< this.$refs.subject.length; i++) {
107
+ this.value[i].right = w - this.$refs.subject[i].offsetLeft
108
+ if(this.value[i].right < this.$refs.b[i].offsetWidth) this.value[i].top = 25
109
+ }
110
+ })
111
+ console.log(this.value)
86
112
  },
87
113
  immediate: true,
88
114
  },
package/src/index.js CHANGED
@@ -77,7 +77,7 @@ function install(app) {
77
77
  }
78
78
 
79
79
  export default {
80
- version: '1.32.183',
80
+ version: '1.32.185',
81
81
  install,
82
82
  Calendar,
83
83
  Message,