modal = new Vue({ el: '#modal', data: { msg: '么有', title: '提示' }, methods: { show: function(msg, title) { if (title) { this.title = title; } this.msg = msg; $('#mmodal').modal(); } } }) Vue.component('vue-easymde', VueEasyMDE.VueEasyMDE) var blobMap = {} app = new Vue({ el: '#app', data: { text: null, enurl: null, copyicon: 'fa-clone', easyMDEOpts: { maxHeight: '47vh', onToggleFullScreen: function() { $('.navbar').toggle(); }, sideBySideFullscreen: false, spellChecker: false, renderingConfig: { codeSyntaxHighlighting: true }, uploadImage: true, imageUploadFunction: function(file, onSuccess, onError) { var url = URL.createObjectURL(file); var reader = new FileReader(); reader.onerror = onError; reader.onload = function() { blobMap[url] = reader.result; var prefix = '[' + file.name + ']'; if (file.type.startsWith('image')) { prefix = '!' + prefix; } var test = new RegExp('\\[(.+)(' + file.name + ')?\\]\\(blob:.*?\\1\\)'); app.text = app.text.replace(test, prefix + '(' + url + ')'); }; onSuccess(url); reader.readAsDataURL(file); }, }, }, methods: { copyTempURL: function() { navigator.clipboard.writeText(app.enurl).then(function() { app.copyicon = 'fa-check'; setTimeout(function() { app.copyicon = 'fa-clone'; }, 3000); }) }, getTempURL: function() { $('#enurl').loading({ message: '加载中...', onStop: function(loading) { loading.overlay.fadeOut(650); } }); axios.post('/api/get-temp', { text: app.text.replace(/\]\((blob:[^)]*)\)/g, function(_, blobURL) { return '](' + blobMap[blobURL] + ')'; }) }).then(function(response) { $('#enurl').loading('stop'); var data = response.data; if (data.status == 1) { var newURL = location.protocol + '//' + location.host + location.pathname; app.enurl = newURL + data.guid; } else { throw 'failure to get the tmp url!'; modal.show('操作失败!
', '错误') } console.log(response); }).catch(function(error) { console.warn(error.response); $('#enurl').loading('stop'); modal.show('操作失败!
' + error.response.data.message, '错误') }) } } })