const _Http = getApp().globalData.http; Component({ properties: { //富文本内容 content: { type: String, value: "" }, //是否开启编辑 editable: { type: Boolean, value: true }, show: { type: Boolean, value: false }, callback: { type: Function } }, lifetimes: { attached: function () { getApp().globalData.Language.getLanguagePackage(this) this.ctx = this.selectComponent('#article'); this.ctx.getSrc = (type, value) => { return new Promise((resolve, reject) => { if (type === 'img' || type === 'video') { // 本地选取 if (type === 'img') { resolve(this.data.fileMsg.url) } else { resolve(this.data.fileMsg.url) } } else { this.callback = { resolve, reject } let title if (type === 'audio') { title = '音频链接' } else if (type === 'link') { title = '链接地址' } this.setData({ modal: { title, value } }) } }) } }, detached: function () { // 在组件实例被从页面节点树移除时执行 }, }, methods: { insertImgEdit({ detail }) { this.binding('insertImg', detail) }, insertVideoEdit({ detail }) { this.binding('insertVideo', detail) }, binding(type, id) { const that = this; let pages = getCurrentPages(); let prevPage = pages[pages.length - 1]; _Http.basic({ "classname": "system.attachment.Attachment", "method": "createFileLink", "content": { "ownertable": "SAT_SHAREMATERIAL", "ownerid": prevPage.data.detailsData.sat_sharematerialid, "usetype": "richtext", "attachmentids": id } }).then(res => { if (res.code != '1') return wx.showToast({ title: res.msg, icon: "none" }); this.setData({ fileMsg: res.data[0] }) prevPage.setData({ richTextFile: prevPage.data.richTextFile.concat(res.data[0]) }) that.ctx[type](); }) }, // 删除图片/视频/音频标签事件 remove({ detail }) { let pages = getCurrentPages(); let prevPage = pages[pages.length - 1]; let richTextFile = prevPage.data.richTextFile; let index = richTextFile.findIndex((value) => value.url == detail.src); _Http.basic({ "classname": "system.attachment.Attachment", "method": "deleteFileLink", "content": { "linksids": [richTextFile[index].linksid] } }).then(res => { richTextFile.splice(index, 1); prevPage.setData({ richTextFile }) }) }, // 处理模态框 modalInput(e) { this.value = e.detail.value }, modalConfirm() { this.callback.resolve(this.value || this.data.modal.value || '') this.setData({ modal: null }) }, modalCancel() { this.callback.reject() this.setData({ modal: null }) }, // 调用编辑器接口 edit(e) { this.ctx[e.currentTarget.dataset.method]() }, // 清空编辑器内容 clear() { wx.showModal({ title: getApp().globalData.Language.getMapText('提示'), content: getApp().globalData.Language.getMapText('确定清空内容吗') + '?', cancelText: getApp().globalData.Language.getMapText('取消'), confirmText: getApp().globalData.Language.getMapText('确定'), success: res => { if (res.confirm) this.ctx.clear() } }) }, // 保存编辑器内容 save() { // 避免无法获取到正在编辑的文本内容 setTimeout(() => { let content = this.ctx.getContent(), that = this; wx.showModal({ title: getApp().globalData.Language.getMapText('提示'), content: getApp().globalData.Language.getMapText('是否确认保存'), cancelText: getApp().globalData.Language.getMapText('取消'), confirmText: getApp().globalData.Language.getMapText('完成'), success: res => { if (res.confirm) { that.triggerEvent("callback", content); that.closeShow(); } } }) }, 50) }, closeShow() { let pages = getCurrentPages(); let prevPage = pages[pages.length - 1]; prevPage.setData({ editRichText: false }) } } })