最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue?+?Element?自定義上傳封面組件功能

 更新時間:2023年01月10日 16:28:20   作者:尚尚是高尚的尚  
這篇文章主要介紹了Vue?+?Element?自定義上傳封面組件,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前一段時間做項目,頻繁使用到上傳圖片組件,而且只上傳一個封面,于是想著自定義一個圖片封面上傳組件。先來看一下效果:

第一張圖片是上傳之前,第二張圖片是上傳成功后,第3張圖片是鼠標(biāo)放上去之后的效果!首先整理需求,圖片上傳我們使用照片墻的方式,只能上傳一張圖片,圖片上傳成功后不能繼續(xù)上傳,如果想要更換圖片,則需要將圖片刪除后重新上傳。點(diǎn)擊圖片上面的放大鏡可以查看大圖。需要限制圖片上傳的格式,圖片的大小。組件代碼:

<template>
  <div class="upload">
    <el-upload
      :class="{'hidden':mFileList.length > 0}"
      list-type="picture-card"
      :on-remove="handleRemove"
      :action="action"
      :before-upload="beforeUploadHandle"
      :on-success="successHandle"
      :on-change="changeHandle"
      :limit="1"
      :accept="accept"
      :on-exceed="handleExceed"
      :file-list="fileList"
      :on-preview="handlePictureCardPreview"
    >
      <i class="el-icon-plus"></i>
    </el-upload>
    <el-dialog :visible.sync="dialogVisible">
      <img width="100%" :src="dialogImageUrl" alt="" />
    </el-dialog>
  </div>
</template>

<script>
export default {
  props: {
    action: {
      type: String,
      default: "",
    },
    accept: {
      type: String,
      default: "",
    },
    fileList:{
      type: Array,
      default: () => [],
    },
  },
  watch: {
    fileList(newValue, oldValue) {
      this.mFileList = newValue
    }
  },
  data() {
    return {
      dialogVisible: false, //圖片放大
      fileImg: "", //上傳圖片
      dialogImageUrl: "", //圖片地址
      mFileList:this.fileList,
    };
  },
  methods: {
    handleRemove(file, fileList) {
      this.$emit("upload-remove", file);
    },
    handlePictureCardPreview(file) {
      this.dialogImageUrl = file.url;
      this.dialogVisible = true;
    },
    // 上傳之前
    beforeUploadHandle(file) {
      if (file.type !== "image/jpeg" && file.type !== "image/png") {
        this.$message({
          message: "只支持jpg、png格式的圖片!",
          type: "warning",
        });
        return false;
      }
      const isLt2M = file.size / 1024 / 1024 < 2;
      if (!isLt2M) {
        this.$message({
          message: "上傳文件大小不能超過 2MB!",
          type: "warning",
        });
        return false;
      }
    },
    // 上傳成功
    successHandle(response, file, fileList) {
      this.mFileList = fileList;
      if (response && response.code === 200) {
        this.$message.success("圖片上傳成功!");
        this.$emit("upload-success", response, file);
      } else {
        this.$message.error(response.msg);
      }
    },
    changeHandle(file, fileList) {
      if(file.response && file.response.code == 500) {
         this.$emit("upload-error",file);
      }
    },
    handleExceed(files, fileList) {
        this.$message.warning("只能上傳1張圖片!");
      },
  },
};
</script>
<style lang="scss">
.upload .hidden .el-upload--picture-card {
  display: none;
}
</style>

調(diào)用組件代碼:

<template>
    <div>
        <el-form ref="dataForm"    label-width="80px">
            <el-form-item label="封面" prop="cover" class="is-required">
                <upload list-type="picture-card" :action="url" :accept="'.jpg,.png,.JPG,.PNG'" :fileList="fileList"
                    :limit="1" @upload-success="uploadFile" @upload-remove="removeFile" @upload-error="uploadError">
                </upload>
            </el-form-item>
        </el-form>
    </div>
</template>

<script>
    import Upload from '../components/cover-upload/index.vue'
    export default {
        components: {
            Upload
        },
        data() {
            return {
                url: "",
                fileList: [],
            }
        },
        methods: {
            uploadUrl() {
                this.url = "http://xxx.xxx.xxx.xxx:xxx/yyxt/admin/course/courseInfo/upload?token=075de0303b15a38833a30a7a3b494794"http://上傳圖片的后臺接口
            },
            uploadError(file) {
                this.fileList = [];
            },
            uploadFile(response, file) {
                this.fileList = [{
                    url: response.data,
                }, ];
            },
            removeFile(file) {
                this.fileList = [];
            },
        },
        mounted() {
            this.uploadUrl();
        }
    }
</script>

點(diǎn)擊上傳后的圖片上的放大鏡,顯示圖片大圖

到此這篇關(guān)于Vue + Element 自定義上傳封面組件的文章就介紹到這了,更多相關(guān)Vue + Element 自定義上傳內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中v-slot的特性深度剖析

    Vue3中v-slot的特性深度剖析

    在Vue3架構(gòu)里,v-slot 作為作用域插槽的關(guān)鍵支撐,重塑了父子組件間數(shù)據(jù)與方法傳遞的范式,本文主要來和大家剖析一下v-slot的相關(guān)特性,需要的可以了解下
    2025-01-01
  • 解決electron打包vue-element-admin項目頁面無法跳轉(zhuǎn)的問題小結(jié)

    解決electron打包vue-element-admin項目頁面無法跳轉(zhuǎn)的問題小結(jié)

    這篇文章主要介紹了解決electron打包vue-element-admin項目頁面無法跳轉(zhuǎn)的問題小結(jié),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • 在vue3中使用import.meta.env

    在vue3中使用import.meta.env

    這篇文章主要介紹了在vue3中使用import.meta.env方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Vuex的熱更替如何實現(xiàn)

    Vuex的熱更替如何實現(xiàn)

    這篇文章主要介紹了Vuex的熱更替如何實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • vue組件vue-treeselect箭頭和叉圖標(biāo)變大問題及解決

    vue組件vue-treeselect箭頭和叉圖標(biāo)變大問題及解決

    這篇文章主要介紹了vue組件vue-treeselect箭頭和叉圖標(biāo)變大問題及解決方案,具有很好的參考價值,希望對大家有所幫助。
    2022-07-07
  • vue-meta實現(xiàn)router動態(tài)設(shè)置meta標(biāo)簽的方法

    vue-meta實現(xiàn)router動態(tài)設(shè)置meta標(biāo)簽的方法

    這篇文章主要介紹了vue-meta實現(xiàn)router動態(tài)設(shè)置meta標(biāo)簽,實現(xiàn)思路非常簡單內(nèi)容包括mata標(biāo)簽的特點(diǎn)和mata標(biāo)簽共有兩個屬性,分別是http-equiv屬性和name屬性,本文通過實例代碼給大家詳細(xì)講解需要的朋友可以參考下
    2022-11-11
  • vue等兩個接口都返回結(jié)果再執(zhí)行下一步的實例

    vue等兩個接口都返回結(jié)果再執(zhí)行下一步的實例

    這篇文章主要介紹了vue等兩個接口都返回結(jié)果再執(zhí)行下一步的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue2.x中$attrs的使用方法教程

    vue2.x中$attrs的使用方法教程

    正常情況下Vue推薦用props向子組件參數(shù),但是在特定場景下,使用$attrs會更方便,下面這篇文章主要給大家介紹了關(guān)于vue2.x中$attrs使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • vue列表自動滾動實例

    vue列表自動滾動實例

    這篇文章主要介紹了vue列表自動滾動實例代碼,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • VUE中使用MUI方法

    VUE中使用MUI方法

    在本篇文章里小編給大家分享了關(guān)于VUE中使用MUI方法和步驟,有需要的朋友們可以學(xué)習(xí)參考下。
    2019-02-02

最新評論

彭州市| 松原市| 沁阳市| 东海县| 九寨沟县| 巴彦县| 讷河市| 桃园市| 高雄县| 平武县| 遂平县| 泰宁县| 木里| 桐梓县| 南澳县| 乌拉特后旗| 二手房| 武宣县| 宝清县| 蓬安县| 浑源县| 黎川县| 富宁县| 忻州市| 鹿邑县| 迁安市| 泰宁县| 玉环县| 沂源县| 周宁县| 平远县| 青神县| 泸溪县| 西充县| 邹城市| 姚安县| 武冈市| 红河县| 林州市| 上蔡县| 福清市|