feat(5#6#易损件维护):
1.新增导入和下载模版方法 2.新增校验失败错误弹窗
This commit is contained in:
parent
b6b9a58f88
commit
2585d4ae4e
@ -52,4 +52,22 @@ export function delObj(id) {
|
||||
url: iep('/z-wear-part-detail/' + id),
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// 胶辊类型-导入
|
||||
export function doJGImport(obj) {
|
||||
return request({
|
||||
url: iep('/z-wear-part-detail/doJGImport'),
|
||||
method: 'post',
|
||||
data: obj
|
||||
})
|
||||
}
|
||||
|
||||
// 过滤器类型-导入
|
||||
export function doGLQImport(obj) {
|
||||
return request({
|
||||
url: iep('/z-wear-part-detail/doGLQImport'),
|
||||
method: 'post',
|
||||
data: obj
|
||||
})
|
||||
}
|
||||
|
||||
@ -335,6 +335,56 @@
|
||||
>
|
||||
{{ $t('common.new') }}
|
||||
</el-button>
|
||||
|
||||
<!-- 导入按钮 -->
|
||||
<el-button
|
||||
v-if="wear_part_add"
|
||||
type="primary"
|
||||
size="small"
|
||||
icon="el-icon-upload"
|
||||
@click="handleImport()"
|
||||
>导入
|
||||
</el-button>
|
||||
|
||||
<!-- 导入对话框 -->
|
||||
<el-dialog title="易损件导入" :visible.sync="upload.open" width="400px" append-to-body>
|
||||
<el-upload ref="upload" :limit="1" accept=".xlsx, .xls" action="#" :before-upload="beforeUpload"
|
||||
: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">
|
||||
<span>仅允许导入xls、xlsx格式文件。</span>
|
||||
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
||||
@click="downExcelTemp('JG')" >下载胶辊类型模板
|
||||
</el-link>
|
||||
<span> </span>
|
||||
<el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;"
|
||||
@click="downExcelTemp('GLQ')" >下载过滤器类型模板
|
||||
</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>
|
||||
|
||||
<!--校验失败错误数据 对话框-->
|
||||
<el-dialog title="校验失败数据" :visible.sync="errorVisible">
|
||||
<el-table :data="errorData">
|
||||
<el-table-column property="lineNum" label="行号" width="50"></el-table-column>
|
||||
<el-table-column property="errors" label="错误描述" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
<el-tag type="danger" v-for="error in scope.row.errors" :key="error">{{ error }}
|
||||
</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 导出按钮 -->
|
||||
<el-button
|
||||
v-if="wear_part_export"
|
||||
@ -394,7 +444,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {fetchList, getZWearPartNoList,getDictItemValueList, addObj, putObj, delObj} from '@/api/mes/prd/wear-part'
|
||||
import {fetchList, getZWearPartNoList,getDictItemValueList, addObj, putObj, delObj, doJGImport, doGLQImport} from '@/api/mes/prd/wear-part'
|
||||
import { tableOption } from '@/views/mes/prd/wear-part/init'
|
||||
import { mapGetters } from 'vuex'
|
||||
import { setOrder } from '@/util/sort'
|
||||
@ -408,6 +458,7 @@ import {clear} from "@/components/table-header-pop/render";
|
||||
import {fetchItemList} from "@/api/admin/dict";
|
||||
import customData from "@/components/custom-data/main.vue";
|
||||
import {iep} from "@/api/prefix";
|
||||
import {read, utils} from "xlsx";
|
||||
|
||||
export default {
|
||||
name: 'wear-part',
|
||||
@ -543,6 +594,13 @@ export default {
|
||||
itemType: [],
|
||||
itemStatus: [],
|
||||
},
|
||||
|
||||
upload: {
|
||||
open: false,
|
||||
isUploading: false
|
||||
},
|
||||
errorVisible: false,
|
||||
errorData: [],
|
||||
}
|
||||
},
|
||||
created() {
|
||||
@ -888,6 +946,133 @@ export default {
|
||||
})
|
||||
},
|
||||
|
||||
//导入
|
||||
handleImport(){
|
||||
this.upload.open = true;
|
||||
},
|
||||
|
||||
// 导入确定
|
||||
submitFileForm() {
|
||||
let me = this;
|
||||
if (isBlank(me.site)) {
|
||||
me.$message.warning('站点丢失请刷新界面');
|
||||
return false;
|
||||
}
|
||||
|
||||
let params = me.$refs.upload.uploadFiles;
|
||||
if (params == null || params == undefined || params.length < 1) {
|
||||
me.$message.warning('请先上传文件');
|
||||
return false;
|
||||
} else {
|
||||
me.$refs.upload.submit();
|
||||
}
|
||||
},
|
||||
|
||||
// 下载模版
|
||||
downExcelTemp(importType) {
|
||||
let fileName = '';
|
||||
|
||||
switch (importType) {
|
||||
case 'JG':
|
||||
fileName = '胶辊类型';
|
||||
break;
|
||||
case 'GLQ':
|
||||
fileName = '过滤器类型';
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this.downBlobFile(iep("/z-wear-part-detail/downloadTemplate"), {importType: importType}, fileName + '导入模板.xlsx')
|
||||
},
|
||||
|
||||
beforeUpload(file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = (e) => {
|
||||
const data = new Uint8Array(e.target.result);
|
||||
const workbook = read(data, {type: 'array'});
|
||||
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
|
||||
const jsonData = utils.sheet_to_json(worksheet, {header: 1});
|
||||
const rows = jsonData.slice(1);
|
||||
let list = []
|
||||
|
||||
// 如果
|
||||
if (rows.length < 2) {
|
||||
this.$message.warning('导入数据:排除模版中的前2行数据后为空,请检查!');
|
||||
return false;
|
||||
} else {
|
||||
// 如果是胶辊类型
|
||||
if ((rows[0][0] == 'JG')) {
|
||||
for (let i = 1; i < rows.length; i++) {
|
||||
debugger
|
||||
let row = {
|
||||
type: rows[i][0],
|
||||
status: rows[i][1],
|
||||
wearPartNo: rows[i][2],
|
||||
description: rows[i][3],
|
||||
productLine: rows[i][4],
|
||||
useTimes: rows[i][5],
|
||||
startTime: rows[i][6],
|
||||
storageLocation: rows[i][7],
|
||||
supplier: rows[i][8],
|
||||
remark: rows[i][9]
|
||||
}
|
||||
list.push(row);
|
||||
}
|
||||
let errorMsgList = [];
|
||||
showLoading()
|
||||
doJGImport(list).then(res => {
|
||||
hideLoading()
|
||||
errorMsgList = res.data.data
|
||||
if(errorMsgList.length > 0){
|
||||
this.errorData = errorMsgList
|
||||
this.errorVisible = true
|
||||
}else{
|
||||
this.$message.success('导入成功')
|
||||
this.upload.open = false
|
||||
this.searchChange();
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 如果是过滤器类型 GLQ
|
||||
if ((rows[0][0] == 'GLQ')) {
|
||||
for (let i = 1; i < rows.length; i++) {
|
||||
let row = {
|
||||
type: rows[i][0],
|
||||
status: rows[i][1],
|
||||
wearPartNo: rows[i][2],
|
||||
description: rows[i][3],
|
||||
specification: rows[i][4],
|
||||
productLine: rows[i][5],
|
||||
useTimes: rows[i][6],
|
||||
onlineDuration: rows[i][7],
|
||||
storageLocation: rows[i][8],
|
||||
supplier: rows[i][9],
|
||||
remark: rows[i][10]
|
||||
}
|
||||
list.push(row);
|
||||
}
|
||||
let errorMsgList = [];
|
||||
showLoading()
|
||||
doGLQImport(list).then(res => {
|
||||
hideLoading()
|
||||
errorMsgList = res.data.data
|
||||
if(errorMsgList.length > 0){
|
||||
this.errorData = errorMsgList
|
||||
this.errorVisible = true
|
||||
}else{
|
||||
this.$message.success('导入成功')
|
||||
this.upload.open = false
|
||||
this.searchChange();
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
return false; // 取消默认的上传行为
|
||||
},
|
||||
// 导出
|
||||
exportExcel() {
|
||||
// 先检索后导出
|
||||
|
||||
Loading…
Reference in New Issue
Block a user