<template>
|
<!-- 零件管理 -->
|
<div id="choose" class="global-content">
|
<!-- 筛选 -->
|
<storage-inquer
|
byfilter="零件编号"
|
:groupshow="true"
|
:derive="true"
|
:dele="false"
|
:imexcel="true"
|
:temp="true"
|
:set-limit="true"
|
:use-limit="true"
|
:use-limit-value="useLimitValue"
|
:filterList="filterList"
|
@addmodal="addmodal"
|
@inquer="inquer"
|
@derive="derive"
|
@importfile="importfile"
|
@changeUseLimitValue="changeUseLimitValue"
|
@setAllLimit="onOpenLimitModal"
|
/>
|
<!-- table -->
|
<div class="table">
|
<table-container
|
:wipelist="wipelist"
|
:tableHead="tableHead"
|
:tableData="tableData"
|
:editShow="true"
|
:delShow="true"
|
:currentPage="page"
|
:pageSize="pageSize"
|
:totle="totle"
|
:naxnumShow="false"
|
@edit="edit"
|
@del="del"
|
@CurrentChange="CurrentChange"
|
@SizeChange="SizeChange"
|
/>
|
</div>
|
|
<transition name="modal">
|
<modal v-if="addmodalShow" :modabg="true" @cancel="addmodalShow = false">
|
<p slot="title">零件管理-{{ title }}</p>
|
<div class="height" slot="centent">
|
<choose-edit
|
@cancel="addmodalShow = false"
|
:rowitem="rowitem"
|
@addsubmit="addsubmit"
|
:containerTypeList="containerTypeList"
|
/>
|
</div>
|
</modal>
|
</transition>
|
|
<limit-modal :visible.sync="limitModalVisible"></limit-modal>
|
</div>
|
</template>
|
|
<script>
|
import { TableContainer, Modal } from '@/components/index';
|
import StorageInquer from '../../components/storage-inquer';
|
import chooseEdit from '../../components/chooseEdit';
|
import { exportTableList } from '@/utils/excel';
|
import { getymdhms } from '@/utils/date';
|
import { getCache, setCache, removeToken } from '@/utils/sessionStorage';
|
const { edterchoose } = require('@/components/tableContainer/tableHead');
|
import {
|
itemSearch,
|
ItemDelete,
|
ImportItemInfo,
|
GetAllItem,
|
SearchStorageEnable,
|
UpdateStorageEnable
|
} from '@/api/enterchoose';
|
import { ContainerTypeSearch } from '@/api/inventory';
|
import XLSX from 'xlsx';
|
import LimitModal from './components/limitModal.vue';
|
export default {
|
data() {
|
return {
|
title: '',
|
tableData: [],
|
modalShow: false,
|
addmodalShow: false,
|
wipelist: ['inOrderCode'],
|
rowitem: {},
|
totle: 0,
|
page: 1,
|
pageSize: 20,
|
pageNum: 0,
|
inuqerobg: {},
|
containerTypeList: [],
|
filterList: [
|
{
|
value: '零件编号',
|
label: '零件编号'
|
},
|
{
|
value: '零件描述',
|
label: '零件描述'
|
},
|
{
|
value: '生产班线',
|
label: '生产班线'
|
}
|
],
|
useLimitValue: false,
|
limitModalVisible: false
|
};
|
},
|
components: { TableContainer, StorageInquer, Modal, chooseEdit, LimitModal },
|
computed: {
|
tableHead() {
|
return edterchoose;
|
}
|
},
|
mounted() {
|
this.searchStorageEnable(f => {
|
if (f) {
|
this.itemSearch();
|
this.ContainerTypeSearch();
|
}
|
});
|
},
|
methods: {
|
//查询
|
inquer(e) {
|
this.inuqerobg = e;
|
this.page = 1;
|
this.itemSearch();
|
},
|
//导入
|
importfile(e) {
|
this.readExcel(e);
|
},
|
//导出
|
derive() {
|
let tHeader = [];
|
let filterVal = [];
|
GetAllItem().then(res => {
|
res.forEach(item => (item.isLock = item.isLock == 1 ? '是' : item.isLock == 0 ? '否' : item.isLock));
|
this.tableHead.forEach(item => {
|
tHeader.push(item.columnDescription);
|
filterVal.push(item.columnName);
|
});
|
exportTableList(tHeader, filterVal, res, '零件管理' + getymdhms());
|
});
|
},
|
searchStorageEnable(callback) {
|
SearchStorageEnable()
|
.then(d => {
|
if (d.code === 0) {
|
this.useLimitValue = true;
|
} else {
|
this.useLimitValue = false;
|
}
|
callback && callback(true);
|
})
|
.catch(err => {
|
callback && callback(false);
|
});
|
},
|
changeUseLimitValue() {
|
let msg = '是否确认要';
|
if (this.useLimitValue) {
|
msg += '关闭';
|
} else {
|
msg += '启用';
|
}
|
msg += '上下线判断?';
|
this.$confirm(msg, '系统提示', {
|
type: 'warning'
|
})
|
.then(() => {
|
this.dealChangeUseLimitValue();
|
})
|
.catch(() => {});
|
},
|
dealChangeUseLimitValue() {
|
this.$Loading(true);
|
let params = { storageEnable: 1 };
|
if (this.useLimitValue) {
|
params.storageEnable = 0;
|
}
|
UpdateStorageEnable(params)
|
.then(d => {
|
this.$Loading();
|
if (d.code === 0) {
|
this.useLimitValue = !this.useLimitValue;
|
this.$message.success('操作成功');
|
} else {
|
let msg = d.msg || '操作失败';
|
this.$alert(msg, '系统提示', { type: 'error' });
|
}
|
})
|
.catch(() => {
|
this.$Loading();
|
});
|
},
|
//搜索零件
|
itemSearch() {
|
console.log(process.env.IMAGE_URL);
|
var url = process.env.IMAGE_URL;
|
this.$Loading(true);
|
const { 零件编号: itemName, 零件描述: itemDes, 生产班线: createLine } = this.inuqerobg;
|
itemSearch(this.page + '&onePageNum=' + this.pageSize, { itemName, itemDes, createLine }).then(res => {
|
if (res.code == 0) {
|
let data = res.data;
|
data.forEach(item => {
|
item.image = process.env.IMAGE_URL + item.image;
|
});
|
this.tableData = data;
|
this.totle = res.num;
|
this.pageNum = res.pageNum;
|
}
|
this.$Loading();
|
});
|
},
|
CurrentChange(e) {
|
this.page = e;
|
this.itemSearch();
|
},
|
ContainerTypeSearch() {
|
ContainerTypeSearch().then(res => {
|
if (res != null && res != []) {
|
let data = res || [];
|
this.containerTypeList = data;
|
}
|
});
|
},
|
//页数
|
SizeChange(e) {
|
this.pageSize = e;
|
this.itemSearch();
|
},
|
//编辑
|
edit(row) {
|
this.addmodalShow = true;
|
this.rowitem = { ...row };
|
this.title = '编辑';
|
},
|
//删除
|
del(row) {
|
const { itemName } = { ...row };
|
this.$confirm('此操作将永久删除该零件信息, 是否继续?', '提示', {
|
confirmButtonText: '确定',
|
cancelButtonText: '取消',
|
type: 'warning'
|
})
|
.then(() => {
|
ItemDelete({ itemName }).then(res => {
|
if (res.code == 0) {
|
this.$message({
|
type: 'success',
|
message: '删除成功!'
|
});
|
this.itemSearch();
|
}
|
});
|
})
|
.catch(() => {
|
this.$message({
|
type: 'info',
|
message: '已取消删除'
|
});
|
});
|
},
|
//新建
|
addmodal() {
|
this.rowitem = {};
|
this.addmodalShow = true;
|
this.title = '新建';
|
},
|
//新增修改后
|
addsubmit() {
|
this.addmodalShow = false;
|
this.modalShow = false;
|
this.itemSearch();
|
},
|
readExcel(e) {
|
// 读取表格文件
|
let _this = this;
|
const files = e.file;
|
// debugger;
|
if (files.length <= 0) {
|
return false;
|
} else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) {
|
this.$message({
|
message: '上传格式不正确,请上传xls或者xlsx格式',
|
type: 'warning'
|
});
|
return false;
|
} else {
|
// 更新获取文件名
|
console.log(files);
|
}
|
|
const fileReader = new FileReader();
|
fileReader.onload = ev => {
|
try {
|
const data = ev.target.result;
|
const workbook = XLSX.read(data, {
|
type: 'binary'
|
});
|
const wsname = workbook.SheetNames[0]; //取第一张表
|
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]); //生成json表格内容
|
let list = [];
|
|
ws.forEach(item => {
|
list.push({
|
itemName: item['零件编号'],
|
itemDes: item['零件描述'],
|
unit: item['单位'],
|
price: item['单价'],
|
weight: item['重量'],
|
weightDifference: item['单个公差'],
|
createLine: item['生产班线'],
|
maxNum: item['装箱数量'],
|
maxStorage: item['库容最大量'],
|
minStorage: item['库容最小量'],
|
overDueTime: item['超期时间(/天)']
|
});
|
});
|
_this.ImportItemInfo(JSON.stringify(list));
|
} catch (e) {
|
return false;
|
}
|
};
|
fileReader.readAsBinaryString(files);
|
},
|
//导入接口
|
ImportItemInfo(list) {
|
ImportItemInfo({ userName: getCache('userInfo').userName, items: list }).then(res => {
|
if (res.code == 0) {
|
this.$message({
|
type: 'success',
|
message: '导入成功'
|
});
|
} else {
|
this.$message({
|
type: 'warning',
|
message: '导入失败!请按照模板填入内容'
|
});
|
}
|
});
|
this.itemSearch();
|
},
|
onOpenLimitModal() {
|
this.limitModalVisible = true;
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
#choose {
|
.table {
|
width: 100%;
|
margin-top: 10px;
|
height: calc(100% - 40px);
|
overflow: hidden;
|
}
|
}
|
</style>
|