English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Introduzione
Notoriamente, ElementUI è una libreria UI piuttosto completa, ma per utilizzarla è necessario avere un po' di base su Vue. Prima di iniziare il corpo dell'articolo, diamo un'occhiata al metodo di installazione.
Installazione del modulo ElementUI
cnpm install element-ui -S
Includi in main.js
import ElementUI from 'element-ui' import 'element-ui/lib/theme-default/index.css'
Installazione globale
Vue.use(ElementUI)
Ricorda di riavviare dopo l'installazione, cnpm run dev, ora puoi utilizzare direttamente elementUI.
Funzione di importazione ed esportazione vue + element-ui
1. Nella gestione front-end del sistema di gestione dei dati, la visualizzazione dei dati di solito utilizza tabelle, che coinvolgono l'importazione ed esportazione;
2. L'importazione utilizza il componente di upload Upload di element-ui;
<el-upload class="upload-demo" :action="importUrl"// Percorso di caricamento :name ="name"// Nome del campo del file caricato :headers="importHeaders"// Formato dell'intestazione della richiesta :on-preview="handlePreview"// Può ottenere i dati di ritorno del server tramite file.response :on-remove="handleRemove"// Rimozione del file :before-upload="beforeUpload"// Configurazione prima del caricamento :on-error="uploadFail"// Errore del caricamento :on-success="uploadSuccess"// Successo del caricamento :file-list="fileList"// Elenco dei file caricati :with-credentials="withCredentials">// Supporta l'invio delle informazioni dei cookie </el-upload>
3. L'exportazione utilizza un oggetto blob di file; riceve i dati tramite l'interfaccia di back-end, poi utilizza i dati per istanziare blob e utilizzare l'attributo href dell'etichetta a per collegarsi all'oggetto blob
export const downloadTemplate = function (scheduleType) { axios.get('/rest/schedule/template', { params: { "scheduleType": scheduleType , responseType: 'arraybuffer' }).then((response) => { // Creare un oggetto blob, una varietà di file let blob = new Blob([response.data], { type: 'application/x-xls' }) let link = document.createElement('a') link.href = window.URL.createObjectURL(blob) // Configurazione del nome del file di download link.download = fileNames[scheduleType] + '_' + response.headers.datestr + '.xls' link.click() } }
4. Applicare il codice completo del piccolo demo, può essere utilizzato direttamente nel back-end sviluppo (file vue)
<template> <div> <el-table ref="multipleTable" :data="tableData3" tooltip-effect="scuro" border style="larghezza: 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]])">切换第二、第三行的选中状态</el-button> <el-button @click="toggleSelection()">取消选择</el-button> <el-button type="primary" @click="importData">导入</el-button> <el-button type="primary" @click="outportData">导出</el-button> </div> <!-- 导入 --> <el-dialog title="[#1#]" :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"> <!-- 是否支持发送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>导入失败</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> <!-- 导出 --> </div> </template> <script> import * as scheduleApi from '@/api/schedule' export default { data() { return { tableData3: [ { date: "2016-05-03", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-02" name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-04", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-01", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-08", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-06", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" , { date: "2016-05-07", name: "王小虎", address: "上海市普陀区金沙江路 1518 弄" } ], multipleSelection: [], importUrl:'www.baidu.com',//indirizzo dell'interfaccia di back-end config.admin_url+'rest/schedule/import/' importHeaders:{ enctype:'multipart/form-data', cityCode:'' , name: 'import', fileList: [], withCredentials: true, processing: false, uploadTip:'Clicca per caricare', 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) { //Funzione di riempimento della selezione della casella di controllo, val restituisce i dati di una riga intera this.multipleSelection = val; , importData() { this.importFlag = 1 this.fileList = [] this.uploadTip = 'Clicca per caricare' this.processing = false this.dialogImportVisible = true , outportData() { scheduleApi.downloadTemplate() , handlePreview(file) { //Puoi ottenere i dati di risposta del server tramite file.response , handleRemove(file, fileList) { //Rimozione del file , beforeUpload(file){ //Configurazione prima dell'upload this.importHeaders.cityCode='Shanghai'// Può configurare l'intestazione della richiesta let excelfileExtend = ".xls,.xlsx"// Imposta il formato del file let fileExtend = file.name.substring(file.name.lastIndexOf('.')).toLowerCase(); if (excelfileExtend.indexOf(fileExtend) <= -1) { this.$message.error('Formato del file errato') return false } this.uploadTip = 'In elaborazione...' this.processing = true , // Errore di caricamento uploadFail(err, file, fileList) { this.uploadTip = 'Clicca per caricare' this.processing = false this.$message.error(err) , // Caricamento riuscito uploadSuccess(response, file, fileList) { this.uploadTip = 'Clicca per caricare' 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('Importazione riuscita') this.doSearch() } , // Scarica il modello download() { // Chiamata del metodo del modello backend, simile all'esportazione scheduleApi.downloadTemplate() , } }; </script> <style scoped> .hide-dialog{ display:none; } </style>
5.js file, chiamata dell'interfaccia
import axios from 'axios' // Scarica il modello export const downloadTemplate = function (scheduleType) { axios.get('/rest/schedule/template', { params: { "scheduleType": scheduleType , responseType: 'arraybuffer' }).then((response) => { // Creare un oggetto blob, una varietà di 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() } }
Sommario
Questo è tutto il contenuto dell'articolo, speriamo che il contenuto di questo articolo abbia un valore di riferimento o di studio per voi. Se avete domande, potete lasciare un messaggio per scambiare opinioni, grazie per il supporto del tutorial di urla.
Dichiarazione: il contenuto di questo articolo è stato tratto da Internet, il copyright è di proprietà del rispettivo autore, il contenuto è stato contribuito e caricato volontariamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume alcuna responsabilità legale correlata. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una e-mail a notice#oldtoolbag.com (sostituisci # con @) per segnalare il problema, fornendo prove pertinenti. Una volta verificata la veridicità, questo sito eliminerà immediatamente i contenuti sospetti di violazione del copyright.