编辑markdown文档是上传图片并回显

This commit is contained in:
jmal 2020-03-07 14:10:00 +08:00
parent b4e0fed54c
commit daae705df5
4 changed files with 42 additions and 39 deletions

View File

@ -111,5 +111,13 @@ export default {
return qs.stringify(params, { arrayFormat: 'repeat' })
}
})
}
},
// 上传文档里的图片
uploadImage: function(data) {
return request({
url: 'upload-markdown-image',
method: 'post',
data: data
})
},
}

View File

@ -14,7 +14,6 @@ const service = axios.create({
service.interceptors.request.use(
config => {
// do something before request is sent
if (store.getters.token) {
// let each request carry token
// ['X-Token'] is a custom headers key

View File

@ -18,6 +18,8 @@
:style="{'height': clientHeight+'px'}"
:imageFilter="imageFilter"
@save="save"
@imgAdd="$imgAdd"
@imgDel="$imgDel"
/>
</el-main>
</div>
@ -25,6 +27,7 @@
<script>
import markdownApi from '@/api/markdown-api'
import uploadApi from '@/api/upload-api'
export default {
data() {
return {
@ -53,12 +56,36 @@
}
},
methods: {
$imgAdd(pos, $file) {
// 第一步.将图片上传到服务器.
console.log('pos',pos,'$file',$file)
let data = new FormData();
data.append('filename', this.filename)
data.append('username', this.$store.state.user.name)
data.append('userId', this.$store.state.user.userId);
data.append('file', $file);
uploadApi.uploadImage(data).then((res) => {
// 第二步.将返回的url替换到文本原位置![...](0) -> ![...](url)
/**
* $vm 指为mavonEditor实例,可以通过如下两种方式获取
* 1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,`$vm`为`mavonEditor`
* 2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`为 `this.$refs.md`
*/
const url = process.env.VUE_APP_BASE_FILE_API + '/public/image/' + res.data
console.log(url)
this.$refs.md.$img2Url(pos, url);
})
},
$imgDel() {
},
// 所有操作都会被解析重新渲染
change(value, render){
console.log('value',value)
// render 为 markdown 解析后的结果[html]
this.html = render;
},
save() {
save(){
if(this.editStatus){
this.update()
}else{
@ -71,6 +98,7 @@
},
// add
add(){
console.log("this.content",this.content)
this.adding = true
if(this.filename){
const filename = this.filename + ".md"

View File

@ -2,39 +2,22 @@
<div>
<al-back-top></al-back-top>
<div class="content">
<el-row :gutter="0">
<el-col :xs="0" :sm="1" :md="3" :lg="5" :xl="6"><div>{{leftContent}}d</div></el-col>
<el-col :xs="0" :sm="1" :md="3" :lg="5" :xl="6"><div style="color: white">c</div></el-col>
<el-col :xs="24" :sm="22" :md="18" :lg="14" :xl="12">
<el-main>
<mavon-editor
v-if="!showList"
v-model="content"
:subfield="false"
:boxShadow="false"
:boxShadow="true"
:toolbarsFlag="false"
defaultOpen="preview"
:navigation="toolbarsFlag"
:toolbarsFlag="toolbarsFlag"
:toolbars="toolbars"
:style="{'height': clientHeight+'px'}"
@navigationToggle="navigationToggle"
/>
</el-main>
</el-col>
<el-col :xs="0" :sm="1" :md="3" :lg="5" :xl="6"></el-col>
</el-row>
<!--{{content}}-->
<!--<mavon-editor-->
<!--v-if="!showList"-->
<!--v-model="content"-->
<!--:subfield="false"-->
<!--:boxShadow="false"-->
<!--defaultOpen="preview"-->
<!--:navigation="toolbarsFlag"-->
<!--:toolbarsFlag="toolbarsFlag"-->
<!--:toolbars="toolbars"-->
<!--@navigationToggle="navigationToggle"-->
<!--/>-->
</div>
</div>
</template>
@ -46,16 +29,11 @@
components: { AlBackTop },
data() {
return {
leftContent: '',
backTopTarget: ".content",
showList: true,
toolbars:{
navigation: true,
},
toolbars: null,
toolbarsFlag: true,
content:'',
html:'',
clientHeight: document.documentElement.clientHeight - 155,
}
},
mounted() {
@ -63,10 +41,6 @@
this.showList = false
}
this.getMarkDown()
const that = this
window.onresize = function temp() {
that.clientHeight = document.documentElement.clientHeight - 155
}
},
methods: {
onScroll() {
@ -79,11 +53,8 @@
this.content = res.data.contentText
const _this = this
setTimeout(function () {
_this.backTopTarget = ".v-note-wrapper .markdown-body"
if (document.cookie.match(/scrollTop=([^;]+)(;|$)/) != null) {
var arr = document.cookie.match(/scrollTop=([^;]+)(;|$)/); //cookies中不为空,则读取滚动条位置
console.log('arr',arr)
document.documentElement.scrollTop = parseInt(arr[1]);
document.body.scrollTop = parseInt(arr[1]);
}
@ -95,9 +66,6 @@
doc.addEventListener("scroll", _this.onScroll);
})
},
navigationToggle(d){
console.log(d)
}
}
}