vue自定义导入弹框
2023-12-18 16:23:06
<template>
<el-dialog
:title="title"
append-to-body
:close-on-click-modal="false"
:visible.sync="visible"
lock-scroll
width="555px"
>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="数据来源:">
<el-select v-model="form.dataSource" placeholder="请选择" size="small">
<el-option
v-for="item in sourceList"
:key="item.dictKey"
:label="item.dictValue"
:value="item.dictKey"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="模板上传:">
<el-upload
:action="importUrl"
drag
:headers="{ 'Blade-Auth': 'bearer ' + $store.getters.token }"
:on-success="handleSuccess"
:show-file-list="false"
accept=".xls,.xlsx"
:limit="1"
ref="upload"
:before-upload="beforeUpload"
>
<i class="el-icon-upload"></i>
<div class="el-upload__text" :loading="btnLoading">
将文件拖到此处,或<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">
请上传.xls .xlsx 标准格式文件
</div>
</el-upload>
</el-form-item>
<el-form-item label="模板下载:">
<el-button type="primary" @click="downLoad" size="mini">
点击下载<i class="el-icon-download el-icon--right"></i>
</el-button>
</el-form-item>
</el-form>
<el-dialog
width="30%"
title="提示"
:visible.sync="tipVisible"
append-to-body
@close="onClose"
>
<div class="tipDialog">
<li v-for="(item, index) in this.tipContent" :key="index">
{{ index + 1 + '、' + item }}
</li>
</div>
</el-dialog>
</el-dialog>
</template>
<script>
import { getDataSource } from '@/api/console/water-user-file.js'
export default {
props: {
title: {
type: String,
default: '数据导入',
},
},
data() {
return {
form: {
dataSource: '',
},
sourceList: [], // 数据来源
visible: false,
btnLoading: false,
tipVisible: false, // 提示弹框
tipContent: '', // 弹框提示内容
}
},
computed: {
importUrl() {
return `/api/swp-base-manager/manage-user-water/excelImport?sourceType=${this.form.dataSource}`
},
},
mounted() {
this.getSourceList()
},
methods: {
init() {
this.visible = true
},
getSourceList() {
getDataSource().then((res) => {
if (res.data.code == 200) {
this.sourceList = res.data.data
this.form.dataSource = this.sourceList[0].dictKey
}
})
},
// 下载模板
downLoad() {
window.open(
'https://117.172.159.251:9093/swp/nanjiang/用水户档案导入模版.xlsx'
)
},
beforeUpload() {
this.btnLoading = true
},
handleSuccess(res) {
this.btnLoading = false
if (res.code == 200) {
this.tipContent = res.data
this.tipVisible = true
} else {
this.$message({ message: '导入失败', type: 'error', duration: 1000 })
}
this.$refs.upload.clearFiles()
},
// 上传失败
handleError() {
this.$message({ message: '导入失败', type: 'error', duration: 1000 })
this.$refs.upload.clearFiles()
},
// 关闭提示弹框
onClose() {
this.visible = false
this.$emit('refreshDataList')
},
},
}
</script>
<style lang="scss" scoped>
:deep(.el-dialog__body) {
padding: 40px 30px !important;
}
.grid-content {
&:first-child {
border-right: 1px solid #dcdfe6;
}
text-align: center;
p {
text-align: center;
}
img {
width: 128px;
margin: 10px 0;
}
}
</style>
文章来源:https://blog.csdn.net/weixin_52063946/article/details/135062471
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!