前端组件使用方法
<!-- 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
*/
@Override
public 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>