- 安装 cnpm i wangeditor --save
- 创建一个div, id与下面的一致
- 看文档开始使用------基本使用-----npm安装
- 复制粘贴到mounted里面
- 可以看其他配置信息例如图片
<template>
<div>
<el-form label-width="100px">
<el-form-item label="商品标题">
<el-input
type="text"
v-model="form.title"
autocomplete="off"
></el-input>
</el-form-item>
<el-form-item label="商品描述">
<el-input type="text" v-model="form.desc" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="所属分类">
<el-select v-model="form.classify" placeholder="请选择分类">
<el-option
v-for="item in classifyList"
:key="item._id"
:value="item.name"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="商品主图">
<div class="upload-from">
<!-- 缩略图 -->
<div
v-for="(item, index) in form.mainPic"
:key="index"
class="small-img"
>
<img :src="`${ip}${item}`" width="100%" height="100%" />
<i
class="el-icon-delete-solid img-delbtn"
@click="delImg(index)"
></i>
</div>
<!-- 上传按钮 -->
<el-upload
:action="`${ip}/admin/upload/img`"
name="myfile"
:show-file-list="false"
class="upload-body"
:on-success="uploadSuccess"
>
<i class="el-icon-plus upload-btn"></i>
</el-upload>
</div>
</el-form-item>
<el-form-item label="价格">
<el-row :gutter="20">
<el-col :span="6">
<el-input
type="text"
v-model="form.oldPrice"
placeholder="商品原价"
></el-input>
</el-col>
<el-col :span="6">
<el-input
type="text"
v-model="form.price"
placeholder="商品一口价"
></el-input>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="规格">
<el-row
style="margin: 10px"
:gutter="20"
v-for="(item, index) in form.type"
:key="index"
>
<el-col :span="6">
<el-input
type="text"
v-model="item.name"
placeholder="商品原价"
></el-input>
</el-col>
<el-col :span="6">
<el-input
type="text"
v-model="item.price"
placeholder="商品一口价"
></el-input>
</el-col>
<el-col :span="6">
<el-button
v-show="form.type.length > 1"
type="danger"
size="small"
icon="el-icon-minus"
@click="delType(index)"
></el-button>
<el-button
v-show="index == form.type.length - 1"
type="success"
size="small"
icon="el-icon-plus"
@click="addType"
></el-button>
</el-col>
</el-row>
</el-form-item>
<el-form-item label="商品详情">
<div id="editor"></div>
</el-form-item>
<el-form-item label="是否上架">
<el-radio v-model="form.isSale" :label="1">上架</el-radio>
<el-radio v-model="form.isSale" :label="2">下架</el-radio>
</el-form-item>
<el-form-item label="是否热销">
<el-radio v-model="form.hot" :label="0">普通商品</el-radio>
<el-radio v-model="form.hot" :label="1">热销商品</el-radio>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submit">提交</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
import Editor from "wangeditor";
export default {
data() {
return {
form: {
title: "",
desc: "",
classify: "",
mainPic: [],
oldprice: "",
price: "",
oldprice: "",
type: [{ name: "", price: "" }],
hot: 0,
isSale: 1,
},
classifyList: [],
ip: "http://localhost:3000",
editor: null,
};
},
created() {
this.$http({
path: "/admin/classify/query",
method: "get",
}).then((res) => {
this.classifyList = res.result;
});
},
mounted() {
this.editor = new Editor("#editor");
this.editor.config.uploadImgServer = `${this.ip}/admin/upload/editor/img`;
this.editor.config.uploadFileName = "editorFile";
this.editor.create();
},
methods: {
uploadSuccess(res) {
this.form.mainPic.push(res.file);
},
delImg(index) {
this.form.mainPic.splice(index, 1);
},
addType() {
this.form.type.push({
name: "",
price: "",
});
},
delType(index) {
this.form.type.splice(index, 1);
},
submit(){
let content = this.editor.txt.html()
this.$http({
path: '/admin/goods/add',
method: 'post',
params: {
title: this.form.title,
desc: this.form.desc,
classify: this.form.classify,
mainPic: JSON.stringify(this.form.mainPic),
price: this.form.price,
oldPrice: this.form.oldPrice,
type: JSON.stringify(this.form.type),
isSale: this.form.isSale,
content: content,
hot: this.form.hot,
}
}).then(res=>{
this.$message({
message: res.msg,
type: res.code == 200 ? 'success':'error'
})
})
}
},
};
</script>
<style scoped>
.upload-from {
display: flex;
flex-wrap: wrap;
}
.upload-body {
width: 120px;
height: 120px;
border: 1px solid #999;
display: flex;
justify-content: center;
align-items: center;
margin: 10px;
}
.upload-btn {
font-size: 30px;
color: #ccc;
}
.small-img {
width: 120px;
height: 120px;
margin: 10px;
cursor: pointer;
position: relative;
border: 1px solid #eee;
}
.img-delbtn {
font-size: 18px;
color: #ccc;
position: absolute;
top: 5px;
right: 5px;
}
.img-delbtn:hover {
color: red;
}
</style>