@[TOC]
1 修改ruoyi-generator下resources下vm.java.controller
- 新增导出模板接口
/** * 导出模板 */ @PostMapping("/importTemplate") public void importTemplate(HttpServletResponse response) { ExcelUtil<{ mathJaxContainer[0]}{ ClassName}>(${ ClassName}.class); util.importTemplateExcel(response, "${functionName}数据"); }
- 新增导入数据
/** * 导入数据 */ @Log(title = "${functionName}", businessType = BusinessType.IMPORT) @PreAuthorize("@ss.hasPermi('${permissionPrefix}:import')") @PostMapping("/importData") public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil<{ mathJaxContainer[1]}{ ClassName}>(${ ClassName}.class); List<${ ClassName}> list = util.importExcel(file.getInputStream()); int count = 0; for ({ mathJaxContainer[2]}{ className} : list) { int i = { mathJaxContainer[3]}{ ClassName}(${ className}); count = count + i; } return AjaxResult.success("导入成功" + count + "条信息!"); }
2 修改vue下index.vue.vm文件
- 新增方法
/** 下载模板操作 */ importTemplate() { this.download('${moduleName}/${businessName}/importTemplate', { }, `template_#[[${ new Date().getTime()}]]#.xlsx`) }, /** 导入按钮操作 */ handleImport() { this.upload.title = "${functionName}导入"; this.upload.open = true; }, // 文件上传中处理 handleFileUploadProgress(event, file, fileList) { this.upload.isUploading = true; }, // 文件上传成功处理 handleFileSuccess(response, file, fileList) { this.upload.open = false; this.upload.isUploading = false; this.$refs.upload.clearFiles(); this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true }); this.getList(); }, // 提交上传文件 submitFileForm() { this.$refs.upload.submit(); }
- 新增data
// 导入参数 upload: { // 是否显示弹出层(导入) open: false, // 弹出层标题(导入) title: "", // 是否禁用上传 isUploading: false, // 是否更新已经存在的用户数据 updateSupport: 0, // 设置上传的请求头部 headers: { Authorization: "Bearer " + getToken() }, // 上传的地址 url: process.env.VUE_APP_BASE_API + "/${moduleName}/${businessName}/importData" },
- 新增对话框
<!-- 导入对话框 --> <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body> <el-upload ref="upload" :limit="1" accept=".xlsx, .xls" :headers="upload.headers" :action="upload.url + '?updateSupport=' + upload.updateSupport" :disabled="upload.isUploading" :on-progress="handleFileUploadProgress" :on-success="handleFileSuccess" :auto-upload="false" drag > <i class="el-icon-upload"></i> <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> <div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip" slot="tip"> <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 </div> <span>仅允许导入xls、xlsx格式文件。</span> <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link> </div> </el-upload> <div slot="footer" class="dialog-footer"> <el-button type="primary" @click="submitFileForm">确 定</el-button> <el-button @click="upload.open = false">取 消</el-button> </div> </el-dialog>
- 导入token
import { getToken} from "@/utils/auth";