diff --git a/resources/assets/js/components/TEditorTask.vue b/resources/assets/js/components/TEditorTask.vue index 04e9fdfa3..fa700b01a 100755 --- a/resources/assets/js/components/TEditorTask.vue +++ b/resources/assets/js/components/TEditorTask.vue @@ -22,10 +22,11 @@ transfer>
+ {{ $L(operateMenu.checked === 'checked' ? '标记未选' : '标记已选') }} + {{ $L('打开链接') }} + {{ $L('查看图片') }} {{ $L('编辑描述') }} {{ $L('历史记录') }} - {{ $L('打开链接') }} - {{ $L('查看图片') }} @@ -101,8 +102,12 @@ export default { operateStyles: {}, operateVisible: false, - operateLink: null, - operateImg: null, + operateMenu: { + target: null, + checked: null, + link: null, + img: null, + }, listener: null, }; @@ -185,8 +190,13 @@ export default { } event.stopPropagation() this.operateVisible = false; - this.operateLink = event.target.tagName === "A" ? event.target.href : null; - this.operateImg = event.target.tagName === "IMG" ? event.target.src : null; + this.operateMenu.target = event.target; + this.operateMenu.checked = null; + if (event.target.tagName === "LI" && event.target.parentNode.classList.contains("tox-checklist")) { + this.operateMenu.checked = event.target.classList.contains("tox-checklist--checked") ? 'checked' : 'unchecked'; + } + this.operateMenu.link = event.target.tagName === "A" ? event.target.href : null; + this.operateMenu.img = event.target.tagName === "IMG" ? event.target.src : null; this.$nextTick(() => { const rect = this.$el.getBoundingClientRect(); this.operateStyles = { @@ -257,9 +267,21 @@ export default { }); }, + onLiPreview() { + if (!this.operateMenu.checked) { + return; + } + if (this.operateMenu.checked === 'checked') { + this.operateMenu.target.classList.remove("tox-checklist--checked"); + } else { + this.operateMenu.target.classList.add("tox-checklist--checked"); + } + this.$emit('on-blur', 'force'); + }, + onLinkPreview() { - if (this.operateLink) { - window.open(this.operateLink); + if (this.operateMenu.link) { + window.open(this.operateMenu.link); } }, @@ -269,7 +291,7 @@ export default { $A.messageWarning("没有可预览的图片") return; } - let index = Math.max(0, array.findIndex(item => item.src === this.operateImg)); + let index = Math.max(0, array.findIndex(item => item.src === this.operateMenu.img)); this.$store.dispatch("previewImage", {index, list: array}) }, } diff --git a/resources/assets/js/pages/manage/components/TaskDetail.vue b/resources/assets/js/pages/manage/components/TaskDetail.vue index 5877f1f1e..1fa13727f 100755 --- a/resources/assets/js/pages/manage/components/TaskDetail.vue +++ b/resources/assets/js/pages/manage/components/TaskDetail.vue @@ -141,7 +141,7 @@ :value="taskContent" :placeholder="$L('详细描述...')" @on-history="onHistory" - @on-blur="updateBlur('content')"/> + @on-blur="updateBlur('content', $event)"/>
@@ -1083,20 +1083,20 @@ export default { if (content == this.taskContent.replace(/\s+original-(width|height)="[^"]*"/g, "")) { return; } - if (this.windowTouch) { - $A.modalConfirm({ - title: '温馨提示', - content: '是否保存编辑内容?', - onOk: () => { - this.updateData("contentSave", {content}) - }, - onCancel: () => { - this.$refs.desc.updateContent(this.taskContent); - } - }); - } else { + if (!this.windowTouch || params === 'force') { this.updateData("contentSave", {content}) + return; } + $A.modalConfirm({ + title: '温馨提示', + content: '是否保存编辑内容?', + onOk: () => { + this.updateData("contentSave", {content}) + }, + onCancel: () => { + this.$refs.desc.updateContent(this.taskContent); + } + }); return; case 'contentSave':