<template>
|
<div class="plantEdit height overflow">
|
<div class="width overflow height92">
|
<div class="plantEdit-height">
|
<div class="flex justify-between">
|
<div class="width55 flex align-center">
|
<label class="width40 textalign">出库计划单号:</label>
|
<el-input size="mini" disabled v-model="iqnuer.outOrderCode" class="width60"> </el-input>
|
</div>
|
<div class="width40 flex align-center">
|
<label class="width40 textalign">出库类型:</label>
|
<el-select class="width60" filterable size="mini" clearable v-model="iqnuer.orderType" placeholder="请选择">
|
<el-option v-for="item in orderTypelist" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
<div class="flex justify-between margintopbot">
|
<div class="width55 flex align-center">
|
<label class="width40 textalign">目标班线:</label>
|
<el-select
|
class="width60"
|
filterable
|
remote
|
reserve-keyword
|
:remote-method="remoteMethod"
|
:loading="remoloading"
|
size="mini"
|
clearable
|
v-model="iqnuer.productionLineName"
|
placeholder="请输入关键词"
|
>
|
<el-option
|
v-for="(item, index) in productionLinelist"
|
:key="index + 'produc'"
|
:label="item.productionName"
|
:value="item.productionName"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="width40 flex align-center">
|
<label class="width40 textalign">合计数量:</label>
|
<el-input clearable size="mini" disabled v-model="iqnuer.totalOutNum" class="width60"> </el-input>
|
</div>
|
</div>
|
<div class="flex justify-between margintopbot">
|
<div class="width55 flex align-center">
|
<label class="width40 textalign">出库口:</label>
|
<el-select class="width60" filterable size="mini" clearable v-model="iqnuer.tranLine" placeholder="请选择">
|
<el-option
|
v-for="(item, index) in tranLinelist"
|
:key="index + 'produc'"
|
:label="item.label"
|
:value="item.value"
|
>
|
</el-option>
|
</el-select>
|
</div>
|
<div class="width40 flex align-center">
|
<label class="width40 textalign">叉车工:</label>
|
<el-select class="width60" filterable size="mini" clearable v-model="iqnuer.CarUserId" placeholder="请选择">
|
<el-option v-for="item in forkliftWorkers" :key="item.id" :label="item.userName" :value="item.id">
|
</el-option>
|
</el-select>
|
</div>
|
</div>
|
|
<el-button-group>
|
<el-button type="primary" size="mini" icon="el-icon-plus" @click="$emit('partclick')">新建</el-button>
|
<el-button type="primary" size="mini" icon="el-icon-delete" @click="delclick">删除</el-button>
|
</el-button-group>
|
</div>
|
<div class="width plantEdit-tebleheight overflow">
|
<table-container
|
height="85%"
|
:tableHead="tableHead"
|
:tableData="tableData"
|
:operation="true"
|
:editShow="true"
|
:selectionShow="true"
|
:setshow="false"
|
:inputshow="true"
|
:roweditshow="roweditshow"
|
:totle="totle"
|
@handleSelectionChange="handleSelectionChange"
|
@itemchange="itemchange"
|
/>
|
</div>
|
</div>
|
<div class="plantEdit-button text-right margin-right15 margin-top2">
|
<el-button type="primary" size="mini" class="form-buttom" :loading="savloading" @click="submitForm"
|
>保存</el-button
|
>
|
<el-button type="primary" size="mini" class="form-buttom" @click="$emit('cancel')">取消</el-button>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import { TableContainer, Modal } from '@/components/index';
|
const { plantEdit } = require('@/components/tableContainer/tableHead');
|
|
import { getDate, GetTimeStr } from '@/utils/date';
|
import { getCache, setCache, removeToken } from '@/utils/sessionStorage';
|
import { itemSearch } from '@/api/enterchoose';
|
import { OutOrderAddOrUpdate, OutOrderGetCode } from '@/api/outbound';
|
import { ProductionLineSearch } from '@/api/cass-line';
|
import { GetForkliftWorkers } from '@/api/outbound';
|
|
export default {
|
data() {
|
return {
|
iqnuer: {
|
outOrderCode: '', //计划单号
|
orderType: '', //计划类型
|
totalOutNum: '', //零件总数
|
doneNum: '', //已下线数 新增传0,编辑,原数据返回
|
userName: getCache('userInfo').userName, //创建人编号 当前登陆人状态
|
productionLineCode: '', //(预留)传空
|
doTime: '', //执行时间
|
itemName: '', //零件编号传,其它零件信息可不传
|
tranLine: '',
|
CarUserId:'',
|
productionLineName: '' //暂时传空
|
},
|
remoloading: false,
|
productionLinelist: [],
|
forkliftWorkers:[],
|
orderTypelist: [
|
{
|
label: '焊装出库',
|
value: '焊装出库'
|
},
|
{
|
label: '空器具出库',
|
value: '空器具出库'
|
},
|
{
|
label: '调件出库',
|
value: '调件出库'
|
},
|
{
|
label: '返修出库',
|
value: '返修出库'
|
},
|
{
|
label: '分拣出库',
|
value: '分拣出库'
|
}
|
],
|
tranLinelist: [
|
{
|
label: '2号口',
|
value: '51'
|
},
|
{
|
label: '3号口',
|
value: '64'
|
},
|
{
|
label: '4号口',
|
value: '67'
|
},
|
{
|
label: '5号口',
|
value: '34'
|
},
|
{
|
label: '6号口',
|
value: '30'
|
},
|
{
|
label: '7号口',
|
value: '19'
|
},
|
{
|
label: '8号口',
|
value: '12'
|
}
|
],
|
Selection: [], //勾选数据
|
tableData: [],
|
roweditshow: false,
|
savloading: false,
|
totle: 0,
|
page: 1
|
};
|
},
|
props: {
|
rowitem: {
|
type: Object,
|
default: () => {}
|
},
|
chooselist: {
|
type: Array,
|
default: () => []
|
}
|
},
|
components: { TableContainer },
|
computed: {
|
tableHead() {
|
return plantEdit;
|
}
|
},
|
mounted() {
|
if (JSON.stringify(this.rowitem) != '{}') {
|
this.iqnuer = this.rowitem;
|
console.log(this.rowitem);
|
this.itemSearch(this.rowitem);
|
} else {
|
this.iqnuer.doneNum = 0;
|
this.OutOrderGetCode();
|
}
|
this.ProductionLineSearch({ productionCode: '' });
|
this.getForkliftWorkers()
|
},
|
methods: {
|
getForkliftWorkers(){
|
if (this.forkliftWorkers.length===0) {
|
let params = {roleName:'叉车死机'};
|
GetForkliftWorkers(params).then((response)=>{
|
if (response.code===0) {
|
this.forkliftWorkers = response.data || []
|
}
|
}).catch(()=>{
|
console.log('err')
|
})
|
|
}
|
},
|
//自动生成单号
|
OutOrderGetCode() {
|
OutOrderGetCode().then(res => {
|
this.iqnuer.outOrderCode = res;
|
});
|
},
|
//班线
|
ProductionLineSearch(query) {
|
const { productionCode } = query;
|
ProductionLineSearch('1&onePageNum=999', { productionCode }).then(res => {
|
if (res.code == 0) {
|
this.productionLinelist = res.data;
|
}
|
});
|
},
|
//编辑时获取零件列表数据
|
itemSearch(e) {
|
const { itemName } = e;
|
console.log(e);
|
itemSearch(this.page, { itemName }).then(res => {
|
if (res.code == 0) {
|
this.storgage(res.data);
|
}
|
});
|
},
|
remoteMethod(query) {
|
if (query !== '') {
|
this.remoloading = true;
|
setTimeout(() => {
|
this.remoloading = false;
|
this.ProductionLineSearch({ productionCode: query });
|
}, 200);
|
} else {
|
}
|
},
|
submitForm() {
|
if (this.iqnuer.itemName) {
|
if (this.roweditshow) {
|
this.$message({
|
type: 'warning',
|
message: '请先保存'
|
});
|
} else {
|
if (this.iqnuer.orderType == '') {
|
this.$message({
|
type: 'warning',
|
message: '请选择出库类型'
|
});
|
} else {
|
if (this.iqnuer.tranLine == '') {
|
if (this.iqnuer.orderType == '焊装') {
|
this.iqnuer.tranLine = 999;
|
} else {
|
this.iqnuer.tranLine = 997;
|
}
|
}
|
this.tranLinelist.forEach(element => {
|
if (this.iqnuer.tranLine == element.label) {
|
this.iqnuer.tranLine = element.value;
|
}
|
});
|
this.savloading = true;
|
OutOrderAddOrUpdate(this.iqnuer).then(res => {
|
if (res.code == 0) {
|
this.$message({
|
type: 'success',
|
message: '添加成功'
|
});
|
this.$emit('cancel');
|
} else {
|
this.$message({
|
type: 'warning',
|
message: res.msg
|
});
|
}
|
this.savloading = false;
|
});
|
}
|
}
|
} else {
|
this.$message({
|
type: 'warning',
|
message: '请添加零件'
|
});
|
}
|
},
|
//过滤存储
|
storgage(lists) {
|
let list = [...lists];
|
// list.forEach(element => {
|
// this.storagelist.push(element);
|
this.storagelist = lists;
|
// });
|
this.filtration();
|
},
|
filtration(lists) {
|
let list = [...this.storagelist];
|
let getWeight = '';
|
console.log(list);
|
if (list.length > 0) {
|
list.forEach(element => {
|
element.edit = false;
|
if (JSON.stringify(this.rowitem) != '{}') {
|
element.doTime = this.rowitem.doTime;
|
element.maxNum = this.rowitem.totalOutNum;
|
} else {
|
element.doTime = getDate() + ' ' + GetTimeStr(0);
|
|
if (element.maxNum) {
|
this.iqnuer.totalOutNum = element.maxNum;
|
} else {
|
this.iqnuer.totalOutNum = 0;
|
}
|
}
|
|
// element.itemNum = element.maxNum;
|
});
|
const { doTime, itemName } = list[0];
|
this.iqnuer.doTime = doTime;
|
this.iqnuer.itemName = itemName;
|
this.tableData = list;
|
}
|
},
|
//数量
|
itemchange(e) {
|
const { maxNum, doTime } = e[0];
|
this.roweditshow = !this.roweditshow;
|
this.iqnuer.totalOutNum = maxNum;
|
this.iqnuer.doTime = doTime;
|
// this.storgage(e);
|
// this.iqnuer.itemNum = 0;
|
// e.forEach(element => {
|
// element.edit = false;
|
// if (element.weight) {
|
// weight = element.weight;
|
// }
|
// if (element.maxNum) {
|
// this.iqnuer.itemNum += parseInt(element.maxNum);
|
// }
|
// element.itemNum = element.maxNum;
|
// });
|
},
|
//勾选table
|
handleSelectionChange(e) {
|
console.log(e);
|
this.Selection = e;
|
},
|
//删除
|
delclick() {
|
this.Selection.forEach(element => {
|
let index = this.tableData.findIndex(item => item.itemName == element.itemName);
|
let storgindex = this.storagelist.findIndex(item => item.itemName == element.itemName);
|
this.tableData.splice(index, 1);
|
this.storagelist.splice(storgindex, 1);
|
});
|
this.iqnuer.itemName = '';
|
this.iqnuer.totalOutNum = '';
|
}
|
},
|
watch: {
|
chooselist: {
|
handler(nvl, ovl) {
|
this.storgage(nvl);
|
},
|
deep: true
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
.plantEdit {
|
width: 98%;
|
padding: 1%;
|
.plantEdit-height {
|
height: 140px;
|
}
|
.plantEdit-tebleheight {
|
height: calc(100% - 125px);
|
}
|
.show-pwd {
|
position: absolute;
|
right: 10px;
|
top: 3px;
|
font-size: 16px;
|
color: #889aa4;
|
cursor: pointer;
|
user-select: none;
|
}
|
.centent-form {
|
height: 92%;
|
width: 100%;
|
margin: auto;
|
}
|
.plantEdit-button {
|
}
|
::v-deep .el-form-item__content {
|
width: 60%;
|
}
|
::v-deep .el-select {
|
// width: 100%;
|
}
|
}
|
</style>
|