Vue电商后台管理系统项目第7篇-文件上传组件和富文本框

文件上传组件

<el-upload
           class="upload-demo" // 类样式
           action="https://jsonplaceholder.typicode.com/posts/" // 文件上传的目标路径
           :on-preview="handlePreview" // 单击预览时触发的操作,单击图片链接实现预览
           :on-remove="handleRemove" // 移除时触发的事件
           :file-list="fileList2" // 当前用户所选择的文件列表,后期这个列表中的数据会上传到服务器
           list-type="picture" // 类型
           >
    <el-button size="small" type="primary">点击上传</el-button>
    <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>

接口上传地址:action:http://localhost:8888/api/private/v1/upload

使用文件上传组件实现文件上传操作

  • 接收上传成功之后的返回值

  • 将返回值中的指定的数据存储到goodsForm的指定属性中:pics

  • 注册接口文档 中关于图片参数的格式说明

细节1:token的传递

  • upload文件上传组件内部自己封装的异步操作

  • 意味着它并不是使用我们之前自己封装的axios

  • 意味着我们之前自己添加的拦截器并没有能够起到作用

  • 意味着我们在拦截器中设置了token值的传递其实并没有用

  • 结论:我们需要自己手动添加token值的传递

  • token值的传递通过请求头的方式进行传递

请求头必须使用Authorization来进行传递  Authorization:token,获取token:localStorage,设置请求头:组件自带的headers来设置请求头;

action="http://localhost:8888/api/private/v1/upload"
-----------------------
// 设置请求头传递token
getToken () {
    var token = localStorage.getItem('itcast_pro_token')
    return { 'Authorization': token }
}

细节2:移除时必须将之前添加到pics中的图片对象移除

// 移除
handleRemove (file, fileList) {
    // file就是当前你移除的文件
    var filename = file.response.data.tmp_path
    // 我们要根据 file里面的数据删除this.goodsForm.pics中的数据
    for (var i = 0; i < this.goodsForm.pics.length; i++) {
        if (this.goodsForm.pics[i].pic === filename) {
            this.goodsForm.pics.splice(i, 1)
            break
        }
    }
}

富文本框插件使用

下载安装:npm install vue-quill-editor --save

引入富文本框插件

注册组件

  import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

Vue.use(VueQuillEditor)

使用富文本框插件

<el-tab-pane label="商品描述" name="2">
    <quill-editor v-model="content" ref="myQuillEditor" :options="editorOption" style='height:300px'></quill-editor>
</el-tab-pane>

添加商品信息

添加一个添加商品的button按钮,绑定一个事件;

// 添加商品信息
addGoods () {
    console.log(this.goodsForm)
    addGoodsInfo(this.goodsForm)
        .then(res => {
        console.log(res)
        if (res.data.meta.status === 201) {
            this.$message({
                type: 'success',
                message: res.data.meta.msg
            })
            this.$router.push({ name: 'List' })
        }
    })
        .catch(err => {
        console.log(err)
    })
}

效果图:

还添加了导航守卫,路由请求之前都会经过这个导航守卫,判断有没有token值,如果有就next(),否则 next({ name: 'Login' })

如果您喜欢这篇文章,可以打赏点钱给我 :)

    支付宝                  微信

   

猜你喜欢

转载自www.cnblogs.com/sauronblog/p/11627631.html