feat(os-common): 优化 Excel导出功能

- 修改前端导入的权限,不下载模板,不更新原有数据
- 后端更新common,从ruoyi的gitee复制的

- 添加单元格样式封装,支持自定义样式
- 增加字典值和标签的互转方法
- 优化图片数据处理,支持多图片导出
- 改进下拉列表和提示信息的设置
- 修复导入导出的一些小问题
boardTest
zch 3 weeks ago
parent 44cad2be04
commit 63ba32711e

@ -66,6 +66,17 @@ export default {
downloadLoadingInstance.close(); downloadLoadingInstance.close();
}) })
}, },
// excel(data, name) {
// const isBlob = blobValidate(data);
// if (isBlob) {
// const blob = new Blob([data], {
// type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'
// })
// this.saveAs(blob, name)
// } else {
// this.printErrMsg(data);
// }
// },
saveAs(text, name, opts) { saveAs(text, name, opts) {
saveAs(text, name, opts); saveAs(text, name, opts);
}, },

@ -139,7 +139,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:dailyFaultRecord:import']" v-hasPermi="['ems/info:dailyFaultRecord:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -259,11 +259,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -105,7 +105,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:faultHandlingRecord:import']" v-hasPermi="['ems/info:faultHandlingRecord:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -220,11 +220,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -201,7 +201,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:plcBufferBatteryLifecycle:import']" v-hasPermi="['ems/info:plcBufferBatteryLifecycle:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -417,11 +417,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -205,7 +205,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:securityDoorBatteryLifecycle:import']" v-hasPermi="['ems/info:securityDoorBatteryLifecycle:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -439,11 +439,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -121,7 +121,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:sparePartsInventory:import']" v-hasPermi="['ems/info:sparePartsInventory:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -227,11 +227,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -89,7 +89,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:sparePartsInventoryCheck:import']" v-hasPermi="['ems/info:sparePartsInventoryCheck:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -175,11 +175,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -209,7 +209,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:sparePartsRegistration:import']" v-hasPermi="['ems/info:sparePartsRegistration:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>
@ -425,11 +425,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -1,6 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<el-form-item label="日期" prop="date"> <el-form-item label="日期" prop="date">
<el-input <el-input
v-model="queryParams.date" v-model="queryParams.date"
@ -25,22 +25,22 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="使用数量" prop="quantityUsed"> <!-- <el-form-item label="使用数量" prop="quantityUsed">-->
<el-input <!-- <el-input-->
v-model="queryParams.quantityUsed" <!-- v-model="queryParams.quantityUsed"-->
placeholder="请输入使用数量" <!-- placeholder="请输入使用数量"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="剩余数量" prop="remainingQuantity"> <!-- <el-form-item label="剩余数量" prop="remainingQuantity">-->
<el-input <!-- <el-input-->
v-model="queryParams.remainingQuantity" <!-- v-model="queryParams.remainingQuantity"-->
placeholder="请输入剩余数量" <!-- placeholder="请输入剩余数量"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="领用库房" prop="issuingWarehouse"> <el-form-item label="领用库房" prop="issuingWarehouse">
<el-input <el-input
v-model="queryParams.issuingWarehouse" v-model="queryParams.issuingWarehouse"
@ -49,51 +49,51 @@
@keyup.enter.native="handleQuery" @keyup.enter.native="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="更换位置" prop="replacementLocation"> <!-- <el-form-item label="更换位置" prop="replacementLocation">-->
<el-input <!-- <el-input-->
v-model="queryParams.replacementLocation" <!-- v-model="queryParams.replacementLocation"-->
placeholder="请输入更换位置" <!-- placeholder="请输入更换位置"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="领用人" prop="personReceived"> <!-- <el-form-item label="领用人" prop="personReceived">-->
<el-input <!-- <el-input-->
v-model="queryParams.personReceived" <!-- v-model="queryParams.personReceived"-->
placeholder="请输入领用人" <!-- placeholder="请输入领用人"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="库管确认人" prop="warehouseManagerConfirmation"> <!-- <el-form-item label="库管确认人" prop="warehouseManagerConfirmation">-->
<el-input <!-- <el-input-->
v-model="queryParams.warehouseManagerConfirmation" <!-- v-model="queryParams.warehouseManagerConfirmation"-->
placeholder="请输入库管确认人" <!-- placeholder="请输入库管确认人"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="库存表状态" prop="inventoryStatus"> <!-- <el-form-item label="库存表状态" prop="inventoryStatus">-->
<el-input <!-- <el-input-->
v-model="queryParams.inventoryStatus" <!-- v-model="queryParams.inventoryStatus"-->
placeholder="请输入库存表状态" <!-- placeholder="请输入库存表状态"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="部门仓库" prop="departmentWarehouse"> <!-- <el-form-item label="部门仓库" prop="departmentWarehouse">-->
<el-input <!-- <el-input-->
v-model="queryParams.departmentWarehouse" <!-- v-model="queryParams.departmentWarehouse"-->
placeholder="请输入部门仓库" <!-- placeholder="请输入部门仓库"-->
clearable <!-- clearable-->
@keyup.enter.native="handleQuery" <!-- @keyup.enter.native="handleQuery"-->
/> <!-- />-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button> <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery"></el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"></el-button>
</el-form-item> </el-form-item>
</el-form> --> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
@ -135,7 +135,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:sparePartsUsageRecord:import']" v-hasPermi="['ems/info:sparePartsUsageRecord:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">

@ -143,7 +143,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:supervisionChecklist:import']" v-hasPermi="['ems/info:supervisionChecklist:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
@ -287,11 +287,11 @@
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div> <div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip text-center" slot="tip"> <div class="el-upload__tip text-center" slot="tip">
<div class="el-upload__tip" slot="tip"> <!-- <div class="el-upload__tip" slot="tip">-->
<el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据 <!-- <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据-->
</div> <!-- </div>-->
<span>仅允许导入xlsxlsx格式文件</span> <span>仅允许导入xlsxlsx格式文件</span>
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link> <!-- <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate"></el-link>-->
</div> </div>
</el-upload> </el-upload>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">

@ -209,7 +209,7 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
v-hasPermi="['ems/info:upsBatteryLifecycle:import']" v-hasPermi="['ems/info:upsBatteryLifecycle:add']"
>导入</el-button> >导入</el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList" :columns="columns"></right-toolbar>

Loading…
Cancel
Save