235 lines
7.7 KiB
Vue
235 lines
7.7 KiB
Vue
<template>
|
|
<div class="execution">
|
|
<basic-container>
|
|
<el-form ref="formObj" :model="formObj" label-width="auto">
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form-item label="站点:" prop="site">
|
|
<el-input placeHolder="站点" v-model="site" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="条码扫描:" prop="code" class="inputRequired">
|
|
<el-input v-model="formObj.code" placeholder="条码扫描" autofocus
|
|
@keyup.enter.native="scanCode">
|
|
<i slot="suffix" class="el-input__icon el-icon-full-screen"></i>
|
|
</el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="组条码:" prop="group" class="inputRequired">
|
|
<el-input placeHolder="组条码" v-model="formObj.groupId" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="物料号:" prop="item" class="inputRequired">
|
|
<el-input placeHolder="物料号" v-model="formObj.item" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="24">
|
|
<el-form-item label="货格号:" prop="storageBin" class="inputRequired">
|
|
<el-input placeHolder="货格号" v-model="formObj.storageBin" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="已绑数量:" prop="bindQty" class="inputRequired">
|
|
<el-input placeHolder="已绑数量" v-model="formObj.bindQty" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="12">
|
|
<el-form-item label="已扫数量:" prop="scanQty" class="inputRequired">
|
|
<el-input placeHolder="已扫数量" v-model="formObj.scanQty" :disabled="true"></el-input>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
<el-table :data="inventoryList" border :row-style="tableRowClassName">
|
|
<el-table-column label="序号" align="center">
|
|
<template slot-scope="scope">
|
|
{{scope.$index+1}}
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="库存条码" prop="inventoryId"></el-table-column>
|
|
</el-table>
|
|
<div style="margin-top: 10px;">
|
|
<el-button type="primary" @click="bind">合组</el-button>
|
|
<el-button type="warning" @click="doClear">清除</el-button>
|
|
</div>
|
|
</basic-container>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import {scanCode, bindGroup} from '@/api/wms/inventory-group';
|
|
import {isBlank} from "@/util/string";
|
|
import {getStore} from '@/util/store';
|
|
import {add} from '@/util/bigNumber';
|
|
import {showLoading, hideLoading} from '@/const/loading';
|
|
import {listByActivityId} from "@/api/admin/activity-option";
|
|
import {
|
|
mapGetters
|
|
} from 'vuex';
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
lableWidth: {
|
|
'width': '150px'
|
|
},
|
|
site: getStore({name: 'tenantId'}),
|
|
formObj: {},
|
|
initData: {
|
|
bindQty: 0,
|
|
scanQty: 0
|
|
},
|
|
inventoryList: []
|
|
|
|
};
|
|
},
|
|
created() {
|
|
this.doClear();
|
|
},
|
|
|
|
beforeRouteEnter(to, from, next) {
|
|
next(vm => {
|
|
try {
|
|
//获取作业规则
|
|
let me = vm;
|
|
let activityId = me.$route.query.ACTIVITY_ID;
|
|
listByActivityId(activityId).then(response => {
|
|
|
|
if (response.data.code != 0) {
|
|
return me.$message.error(response.data.msg);
|
|
}
|
|
let data = response.data.data;
|
|
|
|
if (data && data.length > 0) {
|
|
for (let i = 0; i < data.length; i++) {
|
|
if (data[i].optionName && data[i].optionName.toUpperCase() === "PRINTER_X") {
|
|
me.printer = data[i].optionValue;
|
|
}
|
|
}
|
|
}
|
|
}).catch(e => {
|
|
console.log(e);
|
|
});
|
|
} catch (e) {
|
|
console.log(e);
|
|
}
|
|
});
|
|
},
|
|
|
|
computed: {
|
|
...mapGetters(["permissions"]),
|
|
permissionList() {
|
|
return {};
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
|
|
//清除页面信息
|
|
doClear() {
|
|
this.formObj = Object.assign({}, this.initData);
|
|
this.inventoryList = [];
|
|
},
|
|
|
|
scanCode() {
|
|
let me = this;
|
|
let code = me.formObj.code;
|
|
if (isBlank(code)) {
|
|
me.$message.error("不可扫描空条码");
|
|
return;
|
|
} else if (me.inventoryList.findIndex(o => o.inventoryId === code) >= 0) {
|
|
me.formObj.code = '';
|
|
return me.$message.error('条码已扫描');
|
|
} else {
|
|
showLoading();
|
|
scanCode({
|
|
code: code
|
|
}).then(res => {
|
|
hideLoading();
|
|
if (res.data.code !== 0) {
|
|
return me.$message.error(res.data.msg);
|
|
}
|
|
me.formObj.code = '';
|
|
let data = res.data.data;
|
|
let firstData = data[0];
|
|
|
|
if (firstData.groupId) {
|
|
if (me.formObj.groupId) {
|
|
return me.$message.error('已存在组号,请拆组后再进行合组');
|
|
} else {
|
|
me.formObj.groupId = firstData.groupId;
|
|
}
|
|
}
|
|
if (!(isBlank(me.formObj.item) || isBlank(me.formObj.storageBin)) && (me.formObj.item !== firstData.item || me.formObj.storageBin !== firstData.storageBin)) {
|
|
if (firstData.scanType === 'GROUP') {
|
|
return me.$message.error('组条码' + code + '的物料或货格与界面信息不符');
|
|
} else {
|
|
return me.$message.error('库存条码' + code + '的物料或货格与界面信息不符');
|
|
}
|
|
}
|
|
if (me.inventoryList.length > 0 && !me.inventoryList.some(o => o.status === firstData.status)) {
|
|
return me.$message.error('库存条码' + code + '状态与已有条码不同');
|
|
}
|
|
me.formObj.item = firstData.item;
|
|
me.formObj.storageBin = firstData.storageBin;
|
|
me.formObj.bindQty = data.length;
|
|
me.formObj.scanQty = add(me.formObj.scanQty, isBlank(firstData.groupId) ? 1 : 0);
|
|
me.inventoryList = me.inventoryList.concat(data);
|
|
}).catch(e => hideLoading());
|
|
}
|
|
},
|
|
|
|
bind() {
|
|
let me = this;
|
|
let bindList = me.inventoryList.filter(o => isBlank(o.groupId));
|
|
if (bindList.length <= 0) {
|
|
return me.$message.error('无需合组的信息,请确认');
|
|
} else {
|
|
showLoading();
|
|
bindGroup({
|
|
printer: me.printer,
|
|
groupId: me.formObj.groupId,
|
|
list: bindList
|
|
}).then(res => {
|
|
hideLoading();
|
|
if (res.data.code !== 0) {
|
|
return me.$message.error(res.data.msg);
|
|
}
|
|
me.doClear();
|
|
return me.$message.success("合组成功");
|
|
}).catch(e => hideLoading());
|
|
}
|
|
},
|
|
|
|
tableRowClassName({row, rowIndex}) {
|
|
if (isBlank(row.groupId)) {
|
|
return {backgroundColor: "#00f916"};
|
|
}
|
|
return '';
|
|
},
|
|
},
|
|
};
|
|
|
|
</script>
|
|
<style scoped lang="scss">
|
|
.inputRequired ::v-deep .el-form-item__label::before {
|
|
content: "*";
|
|
width: 10px;
|
|
height: 20px;
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
text-align: center;
|
|
line-height: 26px;
|
|
font-size: large;
|
|
color: #f00;
|
|
}
|
|
|
|
// 去掉hover效果
|
|
::v-deep .el-table tbody tr:hover > td {
|
|
background-color: transparent !important;
|
|
}
|
|
</style>
|