日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

VUE-ElementUI 自定義Loading圖操作

瀏覽:106日期:2022-11-01 13:12:51

需求:

element ui loading圖只能使用自己的loading圖,

但很多場景下,需要替換成自己的gif圖

雖然文檔中有些, element-loading-spinner='el-icon-loading' 可指定自定義圖

但經測試,也只是只能再elementui 圖標庫中的圖, 不是我們想的那個自定義圖類的意思。

自定義圖方法:

1) 添加自定義elementUI loading樣式

VUE-ElementUI 自定義Loading圖操作

asserts下 新建CSS文件夾 及CSS文件比如myCss.css

再里面,寫入自定義的element類CSS樣式

.el-loading-spinner{ /*這個是自己想設置的 gif 加載動圖*/ background-image:url(’../img/loading.gif’); background-repeat: no-repeat; background-size: 200px 120px; height:100px; width:100%; background-position:center; /*覆蓋 element-ui 默認的 50% 因為此處設置了height:100%,所以不設置的話,會只顯示一半,因為被top頂下去了*/ top:40%; }.el-loading-spinner .circular { /*隱藏 之前 element-ui 默認的 loading 動畫*/ display: none; } .el-loading-spinner .el-loading-text{ /*為了使得文字在loading圖下面*/ margin:85px 0px; }

CSS 細調,需要在瀏覽器調試工具中細調

VUE-ElementUI 自定義Loading圖操作

2)main.js 導入自定義樣式

這里注意,要在導入elementUI之后,再導入自己的樣式,要不然會被elementUI覆蓋

import ElementUI from ’element-ui’;import ’element-ui/lib/theme-chalk/index.css’;Vue.use(ElementUI); //element //自定義的element UI loading樣式import ’./assets/css/myCss.css’

3) v-loading

<el-container v-loading='loading' element-loading-background='rgba(255, 255,255, 0.5)' element-loading-text='加載中...' >

注意,這里 不要加上element-loading-spinner='el-icon-loading' ,否則 也會同時出現element圖庫中對應的loading圖

4)對應加載邏輯

data () { return { loading: true } }, startLoading() { this.loading=true; }, endLoading(){ this.loading=false; },

axios請求接口時,開始loading,收到數據后,loading結束

Ajx_GetClassList() { this.startLoading(); this.$axios( { url: url, method:’POST’, } ).then(res=>{ this.endLoading(); }) },

5) 運行時,是正常顯示,但編譯后,看不到自定義的圖片資源了

原因,VUE項目打包后,樣式目錄結構變為static/css

解決

build->utils.js 配置文件添加

publicPath: ’../../’

// Extract CSS when that option is specified // (which is the case during production build) if (options.extract) { return ExtractTextPlugin.extract({ use: loaders, publicPath:’../../’, // 解決element-ui中組件圖標不顯示問題 fallback: ’vue-style-loader’ })

這樣,編譯后的element-ui資源也可以正常訪問了

VUE-ElementUI 自定義Loading圖操作

自定義loading圖效果

VUE-ElementUI 自定義Loading圖操作

補充知識:vue+elementUI自定義通用table組件

自定義通用table組件,帶分頁,后端排序,路由帶參數跳轉,多選框,字段格式化

1.tableList組件

<!-- 費用報銷編輯彈框 --><template> <div class='table-temp'> <el-table :data='tableData' border size='mini' fit highlight-current-row v-loading='loading' @selection-change='handleSelectionChange' @sort-change='sortChange' > <el-table-column type='selection' align='center'></el-table-column> <el-table-column type='index' label='序號' fixed></el-table-column> <!-- prop: 字段名name, label: 展示的名稱, fixed: 是否需要固定(left, right), minWidth: 設置列的最小寬度(不傳默認值), active: 是否有操作列 active.name: 操作列字段名稱, active.clickFun: 操作列點擊事件, formatData: 格式化內容--> <el-table-columnv-for='(item, key) in tableHeader':key='key':prop='item.prop':label='item.label':fixed='item.fixed':min-widitem='item.minWidth' :sortable='item.sortable' ><template slot-scope='scope'> <div v-if='item.active'> <el-button v-for='(o, key) in item.active' :key='key' @click='handleActive(scope.row, o.router, o.routerId)' type='text' size='small' >{{o.name}}</el-button> </div> <div v-else> <av-if='item.router' @click='handleActive(scope.row,item.router, item.routerId)' > <span v-if='!item.formatData'>{{ scope.row[item.prop] }}</span> <span v-else>{{ scope.row[item.prop] | formatters(item.formatData) }}</span> </a> <div v-else> <span v-if='!item.formatData'>{{ scope.row[item.prop] }}</span> <span v-else>{{ scope.row[item.prop] | formatters(item.formatData) }}</span> </div> </div></template> </el-table-column> </el-table> <div class='pagination'> <el-paginationbackgroundlayout='total, prev, pager, next':current-page='pagination.pageIndex':page-size='pagination.pageSize':total='pagination.pageTotal'@current-change='handlePageChange' ></el-pagination> </div> </div></template><script>var _ = require(’lodash’);export default { props: { tableData: { type: Array, default: function() {return []; } }, tableHeader: { type: Array, default: function() {return []; } }, loading: { type: Boolean, default: false }, pagination: { type: Object, default: {pageIndex: 0,pageSize: 15,pageTotal: 0 } } }, data() { return { multipleSelection: [], newPagination: {pageIndex: 0,pageSize: 15,pageTotal: 0 } }; }, methods: { // 多選操作 handleSelectionChange(val) { this.multipleSelection = val; this.$emit(’selectFun’, { backData: this.multipleSelection }); }, // 分頁導航 handlePageChange(val) { console.log(’handlePageChange:’, val); this.$set(this.pagination, ’pageIndex’, val); //調用父組件方法 this.$emit(’pageChange’, { backData: this.pagination}); }, // row:本行數據,route:要跳轉的路由路徑,跳轉要傳的參數routeId handleActive(row, route, routeId) { console.log(row); this.$router.push({path: ’/’ + route,query: { id: row[routeId]} }); }, //后端排序 sortChange(column) { //console.log(’sortChange:’, column); //調用父組件方法 this.$emit(’sortChange’, { backData: column }); } }, watch: {} }, computed: { }, created() { }};</script><style scoped>.btn-a{ color: #409EFF}</style>

2.組件使用

<template> <div><!-- 表格 --> <table-List:tableData='tableData':tableHeader='tableHeader':loading='loading':pagination='pagination'@pageChange='pageChange'@selectFun='selectFun'@sortChange='sortChange' ></table-List> </div></template><script>import appMain from ’../../../utils/app_main’;export default { data() { return {// 請求加載 loading: false, // 分頁信息 pagination: {pageIndex: 1,pageSize: 10,pageTotal: 60 }, tableHeader: [// 表頭數據{ prop: ’id’, label: ’離職編號’, minWidth: ’100px’, router: ’quitDetail’, routerId: ’id’, sortable: ’custom’ },{ prop: ’resignationUserName’, label: ’姓名’, router: ’employeeDetail’, routerId: ’resignationUserId’, sortable: ’custom’},{ prop: ’departName’, label: ’部門’, minWidth: ’100px’, sortable: ’custom’ },{ prop: ’jobRole’, label: ’所在崗位’, sortable: ’custom’ },{ prop: ’onbordingTime’, label: ’入職日期’, formatData: function(val) { let date = new Date(val); return appMain.formatDate(date, ’yyyy-MM-dd’); }, sortable: ’custom’},{ prop: ’resignationTime’, label: ’離職日期’, formatData: function(val) { let date = new Date(val); return appMain.formatDate(date, ’yyyy-MM-dd’); }, minWidth: ’100px’, sortable: ’custom’},{ prop: ’resignationReason’, label: ’離職原因’, minWidth: ’100px’, sortable: ’custom’ },{ prop: ’status’, label: ’流程狀態’, minWidth: ’100px’, sortable: ’custom’ } ], tableData: [], multipleSelection: [], }; }, methods: { // 組件選擇完后把數據傳過來 selectFun(data) { this.multipleSelection = data.backData; }, //表格組件返回排序對象 sortChange(data) { let column = data.backData; //排序 if (column.order) {//倒序if (column.order === ’descending’) { // this.query.sortColumn = column.prop + ’ ’ + ’desc’;} else { // this.query.sortColumn = column.prop;} } else {//不排序// this.query.sortColumn = ’’; } //請求接口 }, //分頁導航 pageChange(data) { this.pagination = data.backData; console.log(’pageChange:’, this.pagination); //分頁變化--請求接口 }, }};</script>

3.appMain.js

class appMain { }// 時間格式化 formatDate(date, fmt) { var date = new Date(date) if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + ’’).substr(4 - RegExp.$1.length)); } let o = { ’M+’: date.getMonth() + 1, ’d+’: date.getDate(), ’h+’: date.getHours(), ’m+’: date.getMinutes(), ’s+’: date.getSeconds() }; for (let k in o) { if (new RegExp(`(${k})`).test(fmt)) {let str = o[k] + ’’;fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : this.padLeftZero(str)); } } return fmt; }; padLeftZero(str) { return (’00’ + str).substr(str.length); }export default new appMain()

以上這篇VUE-ElementUI 自定義Loading圖操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
午夜在线精品| 日本不卡中文字幕| 日韩欧美精品一区二区综合视频| 亚洲午夜黄色| 亚洲电影有码| 日韩精品午夜| 偷拍精品精品一区二区三区| 麻豆精品蜜桃视频网站| 国产精品网站在线看| 国产免费av一区二区三区| 青青国产精品| 国产美女久久| 日本不卡一二三区黄网| 亚洲最大av| 综合欧美精品| 免费成人在线观看| 三级亚洲高清视频| 中文字幕免费精品| 日韩精品一页| 久久国产精品美女| 国产一区二区三区四区五区| 国精品产品一区| 国产精品成人一区二区不卡| 成人影视亚洲图片在线| 久久久久黄色| 天堂8中文在线最新版在线| 欧美aa一级| 国产精品一区二区三区美女 | 国产拍在线视频| 伊人久久高清| av亚洲免费| 免费日韩av| 视频一区二区中文字幕| 四虎在线精品| 国产日韩欧美一区| 日韩专区一卡二卡| 免费成人性网站| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 中文在线免费视频| 久久久国产精品一区二区中文| 99视频一区| 亚洲精品麻豆| 欧美激情五月| 激情欧美日韩一区| 亚洲一区二区三区中文字幕在线观看 | 欧美欧美黄在线二区| 国产精品99久久免费| 日韩在线观看| 美日韩精品视频| 国产精品对白| 久久久久欧美精品| 亚洲狼人精品一区二区三区| 久久久久伊人| 国产一在线精品一区在线观看| 中文字幕av一区二区三区四区| 国产精品15p| 久久青草久久| 久久亚洲色图| 精品福利久久久| 国产视频一区三区| 国产福利一区二区精品秒拍| 久久理论电影| 日韩二区在线观看| 日韩三区免费| 日韩一区免费| 欧美成人精品三级网站| 在线视频亚洲欧美中文| 国产一区调教| 在线免费观看亚洲| 国产在线观看www| 每日更新成人在线视频| 精品免费视频| 亚洲欧洲另类| 日韩精品免费观看视频| 成人一区而且| 日韩影片在线观看| 久久免费高清| 欧美亚洲色图校园春色| 久久国产成人午夜av影院宅| 日本国产欧美| 久久视频国产| 麻豆国产91在线播放| 亚洲精品网址| 91欧美日韩| 日本午夜精品| 狠狠躁少妇一区二区三区| 一区二区精品| 国产成人精品一区二区三区视频| 国产视频一区三区| 日韩国产欧美| 日韩av午夜在线观看| 午夜精品一区二区三区国产| 免费在线欧美黄色| 首页国产欧美日韩丝袜| 色爱av综合网| 欧美国产精品| 亚洲精品系列| 99精品综合| 国产伊人久久| 国产欧美日韩视频在线| 久久午夜精品| 在线看片不卡| 国产v日韩v欧美v| 欧美亚洲三级| 午夜免费一区| 成人久久一区| 日韩国产91| 136国产福利精品导航网址| 国产日产精品_国产精品毛片 | 精品视频在线观看网站| 日韩精品中文字幕一区二区| 久久久久久久久久久妇女 | 老司机精品视频在线播放| 日欧美一区二区| 中文字幕日韩高清在线| 亚洲免费观看| 亚洲精品一区二区妖精| 香蕉成人av| 91亚洲自偷观看高清| 免费一级欧美在线观看视频 | 国产精品成久久久久| 国产调教精品| 日本强好片久久久久久aaa| 五月国产精品| 亚洲欧美日韩一区在线观看| 亚洲大全视频| 亚洲二区免费| 99久久亚洲精品| 视频小说一区二区| 欧美日韩国产v| 特黄特色欧美大片| 99久久婷婷这里只有精品| 日韩欧美自拍| 日韩精品免费一区二区在线观看| 国产精品精品国产一区二区| 高清一区二区三区av| 成人在线黄色| 91一区二区| 精品欧美一区二区三区在线观看| 日韩黄色大片网站| 综合日韩av| 日本高清不卡一区二区三区视频 | 国产美女视频一区二区| 国产精品夜夜夜| 日韩高清一区在线 | 一区二区三区四区日韩| 亚洲专区视频| 136国产福利精品导航网址| 久久视频国产| 99国产精品久久久久久久| 黑丝一区二区三区| 免费精品视频| 97精品资源在线观看| 国产伦精品一区二区三区视频| 久久爱www.| bbw在线视频| 国产综合婷婷| 视频一区视频二区中文字幕| 亚洲精品日本| 国产精品色婷婷在线观看| 免费在线观看一区| 日韩成人亚洲| 99久久久久| 男女男精品网站| 国产欧美一区二区色老头| 免费一级欧美在线观看视频| 久久男人天堂| 午夜日韩福利| 综合色就爱涩涩涩综合婷婷| 欧美日韩调教| 精品久久视频| 亚洲精品午夜av福利久久蜜桃| 免费在线观看视频一区| 欧美亚洲人成在线| 精品一区二区三区中文字幕 | 国产毛片一区二区三区| 国产日韩免费| 久久婷婷一区| 亚洲欧美日韩精品一区二区| 日本一区二区三区中文字幕| 五月婷婷亚洲| 亚洲综合在线电影| 国产66精品| 日韩一级网站| 日本色综合中文字幕| 精品视频网站| 在线亚洲激情| 老司机精品视频在线播放| 亚洲www啪成人一区二区| 日韩中文字幕区一区有砖一区 | 国产不卡一区| 99视频+国产日韩欧美| 日韩成人午夜精品| 国产粉嫩在线观看| 蜜桃免费网站一区二区三区| 国产精一区二区| 欧美日韩中文一区二区| 日韩av中文在线观看| 久久中文字幕一区二区| av在线日韩|