| | |
| | | <div style="line-height: 30px;"> |
| | | <el-button size="mini" type="primary" @click="currentPage = 1, keyMap = {}, list = [], finishLoding = false, refreshTable()">查询</el-button> |
| | | <el-button size="mini" @click="refresh()">重置</el-button> |
| | | <el-button size="mini" type="primary" @click="importVisible = true">导入</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | 暂无数据 |
| | | </div> |
| | | </div> |
| | | <el-dialog title="设备导入" :visible.sync="importVisible" width="500px" @closed="resetImport"> |
| | | <div style="margin-bottom: 12px;"> |
| | | 请使用设备导入模板填写数据,单个文件不超过10MB。 |
| | | <el-button type="text" @click="downloadTemplate">下载导入模板</el-button> |
| | | </div> |
| | | <el-upload ref="deviceUpload" drag name="file" accept=".xlsx" :action="importAction" |
| | | :headers="uploadHeader" :auto-upload="false" :limit="1" :file-list="importFiles" |
| | | :before-upload="beforeImport" :on-success="importSuccess" :on-error="importError"> |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
| | | </el-upload> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-button @click="importVisible = false">取消</el-button> |
| | | <el-button type="primary" :loading="importing" @click="submitImport">导入</el-button> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | import ScrollPagination from '@/components/index/scroll-paging.vue' |
| | | import { |
| | | selectDeviceParameter, |
| | | downloadDeviceImportTemplate, |
| | | } from '@/api/cnas/resourceDemand/device.js' |
| | | export default { |
| | | props: { |
| | |
| | | finishLoding: false, // 加载完成,显示已经没有更多了 |
| | | keyMap: {}, |
| | | laboratoryNameIsNull: false, |
| | | importVisible: false, |
| | | importing: false, |
| | | importFiles: [], |
| | | } |
| | | }, |
| | | computed: { |
| | | importAction() { |
| | | return this.javaApi + '/deviceScope/importDevice' |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | this.clickSidebar(this.clickNodeVal) |
| | | }, |
| | | methods: { |
| | | downloadTemplate() { |
| | | downloadDeviceImportTemplate().then(res => { |
| | | this.$download.saveAs(new Blob([res]), '设备导入模板.xlsx') |
| | | }) |
| | | }, |
| | | submitImport() { |
| | | if (!this.$refs.deviceUpload.uploadFiles.length) { |
| | | this.$message.warning('请选择需要导入的Excel文件') |
| | | return |
| | | } |
| | | this.$refs.deviceUpload.submit() |
| | | }, |
| | | beforeImport(file) { |
| | | if (!file.name.toLowerCase().endsWith('.xlsx')) { |
| | | this.$message.error('仅支持.xlsx格式文件') |
| | | return false |
| | | } |
| | | if (file.size > 10 * 1024 * 1024) { |
| | | this.$message.error('导入文件不能超过10MB') |
| | | return false |
| | | } |
| | | this.importing = true |
| | | return true |
| | | }, |
| | | importSuccess(response) { |
| | | this.importing = false |
| | | if (response.code !== 200) { |
| | | this.$message.error(response.message || response.msg || '导入失败') |
| | | return |
| | | } |
| | | this.$message.success(`成功导入${response.data}条设备`) |
| | | this.importVisible = false |
| | | this.refresh() |
| | | this.$emit('refresh-tree') |
| | | }, |
| | | importError() { |
| | | this.importing = false |
| | | this.$message.error('导入失败') |
| | | }, |
| | | resetImport() { |
| | | this.importing = false |
| | | this.importFiles = [] |
| | | if (this.$refs.deviceUpload) { |
| | | this.$refs.deviceUpload.clearFiles() |
| | | } |
| | | }, |
| | | refreshTable() { |
| | | const key = `_${this.currentPage}` |
| | | const value = this.keyMap[key] |