| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 | 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 () {            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 () {            // 在组件实例被从页面节点树移除时执行        },    },    /**     * 组件的初始数据     */    data: {},    /**     * 组件的方法列表     */    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.msg != '成功') return wx.showToast({                    title: res.data,                    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: '确认',                content: '确定清空内容吗?',                success: res => {                    if (res.confirm) this.ctx.clear()                }            })        },        // 保存编辑器内容        save() {            // 避免无法获取到正在编辑的文本内容            setTimeout(() => {                let content = this.ctx.getContent(),                    that = this;                wx.showModal({                    title: '保存',                    content: "是否确认保存",                    confirmText: '完成',                    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            })        }    }})
 |