<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:23:13
        文檔

        vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能

        vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能:前言 眾所周知,ElementUI,是一個比較完善的UI庫,但是使用它需要有一點vue的基礎(chǔ)。在開始本文的正文之前,我們先來看看安裝的方法吧。 安裝ElementUI模塊 cnpm install element-ui -S 在main.js中引入 import ElementUI from
        推薦度:
        導(dǎo)讀vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能:前言 眾所周知,ElementUI,是一個比較完善的UI庫,但是使用它需要有一點vue的基礎(chǔ)。在開始本文的正文之前,我們先來看看安裝的方法吧。 安裝ElementUI模塊 cnpm install element-ui -S 在main.js中引入 import ElementUI from

        前言

        眾所周知,ElementUI,是一個比較完善的UI庫,但是使用它需要有一點vue的基礎(chǔ)。在開始本文的正文之前,我們先來看看安裝的方法吧。

        安裝ElementUI模塊

        cnpm install element-ui -S

        在main.js中引入

        import ElementUI from 'element-ui'
        import 'element-ui/lib/theme-default/index.css'

        全局安裝

        Vue.use(ElementUI)

        當我們安裝完記得重新運行,cnpm run dev ,現(xiàn)在就可以直接使用elementUI了。

        vue + element-ui導(dǎo)入導(dǎo)出功能

        1.前段后臺管理系統(tǒng)中數(shù)據(jù)展示一般都是用表格,表格會涉及到導(dǎo)入和導(dǎo)出;

        2.導(dǎo)入是利用element-ui的Upload 上傳組件;

        <el-upload class="upload-demo"
         :action="importUrl"http://上傳的路徑
         :name ="name"http://上傳的文件字段名
         :headers="importHeaders"http://請求頭格式
         :on-preview="handlePreview"http://可以通過 file.response 拿到服務(wù)端返回數(shù)據(jù)
         :on-remove="handleRemove"http://文件移除
         :before-upload="beforeUpload"http://上傳前配置
         :on-error="uploadFail"http://上傳錯誤
         :on-success="uploadSuccess"http://上傳成功
         :file-list="fileList"http://上傳的文件列表
         :with-credentials="withCredentials">//是否支持cookie信息發(fā)送
        </el-upload>

        3.導(dǎo)出是利用file的一個對象blob;通過調(diào)用后臺接口拿到數(shù)據(jù),然后用數(shù)據(jù)來實例化blob,利用a標簽的href屬性鏈接到blob對象

         export const downloadTemplate = function (scheduleType) {
         axios.get('/rest/schedule/template', {
         params: {
         "scheduleType": scheduleType
         },
         responseType: 'arraybuffer'
         }).then((response) => {
         //創(chuàng)建一個blob對象,file的一種
         let blob = new Blob([response.data], { type: 'application/x-xls' })
         let link = document.createElement('a')
         link.href = window.URL.createObjectURL(blob)
         //配置下載的文件名
         link.download = fileNames[scheduleType] + '_' + response.headers.datestr + '.xls'
         link.click()
         })
         }

        4.貼上整個小demo的完整代碼,在后臺開發(fā)可以直接拿過去用(vue文件)

        <template>
        <div>
         <el-table
         ref="multipleTable"
         :data="tableData3"
         tooltip-effect="dark"
         border
         style="width: 80%"
         @selection-change="handleSelectionChange">
         <el-table-column
         type="selection"
         width="55">
         </el-table-column>
         <el-table-column
         label="日期"
         width="120">
         <template slot-scope="scope">{{ scope.row.date }}</template>
         </el-table-column>
         <el-table-column
         prop="name"
         label="姓名"
         width="120">
         </el-table-column>
         <el-table-column
         prop="address"
         label="地址"
         show-overflow-tooltip>
         </el-table-column>
         </el-table>
         <div style="margin-top: 20px">
         <el-button @click="toggleSelection([tableData3[1], tableData3[2]])">切換第二、第三行的選中狀態(tài)</el-button>
         <el-button @click="toggleSelection()">取消選擇</el-button>
         <el-button type="primary" @click="importData">導(dǎo)入</el-button>
         <el-button type="primary" @click="outportData">導(dǎo)出</el-button>
         </div>
         <!-- 導(dǎo)入 -->
         <el-dialog title="導(dǎo)入" :visible.sync="dialogImportVisible" :modal-append-to-body="false" :close-on-click-modal="false" class="dialog-import">
         <div :class="{'import-content': importFlag === 1, 'hide-dialog': importFlag !== 1}">
         <el-upload class="upload-demo"
         :action="importUrl"
         :name ="name"
         :headers="importHeaders"
         :on-preview="handlePreview"
         :on-remove="handleRemove"
         :before-upload="beforeUpload"
         :on-error="uploadFail"
         :on-success="uploadSuccess"
         :file-list="fileList"
         :with-credentials="withCredentials">
         <!-- 是否支持發(fā)送cookie信息 -->
         <el-button size="small" type="primary" :disabled="processing">{{uploadTip}}</el-button>
         <div slot="tip" class="el-upload__tip">只能上傳excel文件</div>
         </el-upload>
         <div class="download-template">
         <a class="btn-download" @click="download">
         <i class="icon-download"></i>下載模板</a>
         </div>
         </div>
         <div :class="{'import-failure': importFlag === 2, 'hide-dialog': importFlag !== 2}" >
         <div class="failure-tips">
         <i class="el-icon-warning"></i>導(dǎo)入失敗</div>
         <div class="failure-reason">
         <h4>失敗原因</h4>
         <ul>
         <li v-for="(error,index) in errorResults" :key="index">第{{error.rowIdx + 1}}行,錯誤:{{error.column}},{{error.value}},{{error.errorInfo}}</li>
         </ul>
         </div>
         </div>
         </el-dialog>
        
         <!-- 導(dǎo)出 -->
        </div>
        </template>
        <script>
        import * as scheduleApi from '@/api/schedule'
        export default {
         data() {
         return {
         tableData3: [
         {
         date: "2016-05-03",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-02",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-04",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-01",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-08",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-06",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         },
         {
         date: "2016-05-07",
         name: "王小虎",
         address: "上海市普陀區(qū)金沙江路 1518 弄"
         }
         ],
         multipleSelection: [],
         importUrl:'www.baidu.com',//后臺接口config.admin_url+'rest/schedule/import/'
         importHeaders:{
         enctype:'multipart/form-data',
         cityCode:''
         },
         name: 'import',
         fileList: [],
         withCredentials: true,
         processing: false,
         uploadTip:'點擊上傳',
         importFlag:1,
         dialogImportVisible:false,
         errorResults:[]
         };
         },
         methods: {
         toggleSelection(rows) {
         if (rows) {
         rows.forEach(row => {
         this.$refs.multipleTable.toggleRowSelection(row);
         });
         } else {
         this.$refs.multipleTable.clearSelection();
         }
         },
         handleSelectionChange(val) {
         //復(fù)選框選擇回填函數(shù),val返回一整行的數(shù)據(jù)
         this.multipleSelection = val;
         },
         importData() {
         this.importFlag = 1
         this.fileList = []
         this.uploadTip = '點擊上傳'
         this.processing = false
         this.dialogImportVisible = true
         },
         outportData() {
         scheduleApi.downloadTemplate()
         },
         handlePreview(file) {
         //可以通過 file.response 拿到服務(wù)端返回數(shù)據(jù)
         },
         handleRemove(file, fileList) {
         //文件移除
         },
         beforeUpload(file){
         //上傳前配置
         this.importHeaders.cityCode='上海'//可以配置請求頭
         let excelfileExtend = ".xls,.xlsx"http://設(shè)置文件格式
         let fileExtend = file.name.substring(file.name.lastIndexOf('.')).toLowerCase();
         if (excelfileExtend.indexOf(fileExtend) <= -1) {
         this.$message.error('文件格式錯誤')
         return false
         }
         this.uploadTip = '正在處理中...'
         this.processing = true
         },
         //上傳錯誤
         uploadFail(err, file, fileList) {
         this.uploadTip = '點擊上傳'
         this.processing = false
         this.$message.error(err)
         },
         //上傳成功
         uploadSuccess(response, file, fileList) {
         this.uploadTip = '點擊上傳'
         this.processing = false
         if (response.status === -1) {
         this.errorResults = response.data
         if (this.errorResults) {
         this.importFlag = 2
         } else {
         this.dialogImportVisible = false
         this.$message.error(response.errorMsg)
         }
         } else {
         this.importFlag = 3
         this.dialogImportVisible = false
         this.$message.info('導(dǎo)入成功')
         this.doSearch()
         }
         },
         //下載模板
         download() {
         //調(diào)用后臺模板方法,和導(dǎo)出類似
         scheduleApi.downloadTemplate()
         },
         }
        };
        </script>
        <style scoped>
        .hide-dialog{
         display:none;
        }
        </style>

        5.js文件,調(diào)用接口

        import axios from 'axios'
        // 下載模板
         export const downloadTemplate = function (scheduleType) {
         axios.get('/rest/schedule/template', {
         params: {
         "scheduleType": scheduleType
         },
         responseType: 'arraybuffer'
         }).then((response) => {
         //創(chuàng)建一個blob對象,file的一種
         let blob = new Blob([response.data], { type: 'application/x-xls' })
         let link = document.createElement('a')
         link.href = window.URL.createObjectURL(blob)
         link.download = fileNames[scheduleType] + '_' + response.headers.datestr + '.xls'
         link.click()
         })
         }

        總結(jié)

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能

        vue + element-ui實現(xiàn)簡潔的導(dǎo)入導(dǎo)出功能:前言 眾所周知,ElementUI,是一個比較完善的UI庫,但是使用它需要有一點vue的基礎(chǔ)。在開始本文的正文之前,我們先來看看安裝的方法吧。 安裝ElementUI模塊 cnpm install element-ui -S 在main.js中引入 import ElementUI from
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲另类自拍丝袜第五页| 亚洲一区免费观看| 久久精品国产亚洲av瑜伽| 又粗又大又猛又爽免费视频| 亚洲日韩在线视频| 在线观看免费人成视频| 亚洲成AV人片久久| 在线观看免费人成视频色| 亚洲欧美一区二区三区日产| 嫩草影院免费观看| 黄页网站在线观看免费| 亚洲精品成人网久久久久久| 中文字幕的电影免费网站| 在线亚洲午夜理论AV大片| 好久久免费视频高清| 亚洲欧洲日韩在线电影| 成人性生交视频免费观看| 亚洲av永久中文无码精品综合| 亚洲不卡AV影片在线播放| jlzzjlzz亚洲乱熟在线播放| 国产福利在线观看永久免费| 亚洲av永久无码精品古装片| 18禁网站免费无遮挡无码中文 | 亚洲精品国产V片在线观看 | 污污网站18禁在线永久免费观看| 久久久久亚洲AV成人片| 国产免费av片在线看| 美女被暴羞羞免费视频| 亚洲日韩精品一区二区三区| 久久国产色AV免费观看| 亚洲精品无码mⅴ在线观看| 亚洲欧洲日产国码一级毛片| 日韩精品免费在线视频| 亚洲欧美日韩综合俺去了| 丝袜熟女国偷自产中文字幕亚洲| 中文字幕在线免费观看| 亚洲妇女无套内射精| 亚洲AV无码乱码在线观看富二代| 在线观看视频免费完整版| 国产免费伦精品一区二区三区| 亚洲综合色丁香麻豆|