前端组件使用方法
<!-- excel导入弹窗 --><NewByXlsx v-if="newByXlsxDialog.visible" @close="newByXlsxClose" @refresh="getList":title="newByXlsxDialog.title" />
import NewByXlsx from './NewByxlsx.vue'//************components: { NewByXlsx }, //************ // 用户导入 newByXlsxDialog: { visible: false, title: '用户信息-导入', }, //************ // excel导入信息 newByXlsxOpen() { this.newByXlsxDialog.visible = true }, newByXlsxClose() { //关闭 this.newByXlsxDialog.visible = false },
后端接口
/** * 批量导入 * * @param keyShops * @return */@PutMapping("/upload")R<String> upload(@RequestBody List<KeyShop> keyShops) { return keyShopService.uploadByXlsx(keyShops);}
/** * 批量导入 * * @param keyShops * @return */@Overridepublic R<String> uploadByXlsx(List<KeyShop> keyShops) { Integer successNum = 0; //成功的数量 Integer failedNum = 0; //失败的数量 if (CollectionUtils.isNotEmpty(keyShops)) { for (KeyShop keyShop : keyShops) { if (save(keyShop)) { successNum++; //成功计数 } else { failedNum++; //失败计数 } } } if (failedNum > 0) { return R.error("导入成功 " + successNum + " 条记录;失败 " + failedNum + " 条记录。"); } else { return R.success("导入成功 " + successNum + " 条记录"); }}
附NewByXlsx组件
<template> <div> <el-dialog v-dialogDrag :title="title" visible width="600px" :before-close="beforeClose"> <!-- 弹窗页面内容 --> <!-- Excel文件转JSON数据 --> <div>注:请使用导出用户的模板导入用户数据</div> <ExcelToJSON @data="usersJsonData"></ExcelToJSON> <span slot="footer" class="dialog-footer"> <el-button size="default" @click="beforeClose">取消</el-button> <el-button size="default" type="primary" @click="onSubmit">确定</el-button> </span> </el-dialog> </div></template><script>import ExcelToJSON from '@/pages/models/excel/ExcelToJSON.vue'export default { components: { ExcelToJSON }, props: { title: { type: String, default: '' } }, data() { return { data: [], } }, methods: { usersJsonData(data) { this.data = data.map(item => { let { 帐号: user_accout, 姓名: user_name, 地址: address, 电话: phone, 邮箱: email, 微信: weixin, QQ: qq } = item return { user_accout, user_name, address, phone, email, weixin, qq } }) console.log('接受到的json信息', this.data); }, async onSubmit() { //检查是否有数据 if (!this.data || this.data.length === 0) { this.$message.warning(`没有数据`) return } let res = await this.$api.setting.usersUp(this.data) if (res.code === 1) { this.$message.success(res.msg) } else { this.$message.warning(res.msg) } this.$emit('refresh') //触发refresh事件 this.$emit('close') //触发close事件 }, beforeClose() { this.$emit('close') } }}</script>