2025-03-11 17:57:17 +08:00
|
|
|
|
<template>
|
|
|
|
|
<view>
|
|
|
|
|
<u-navbar back-text="返回" title="组托拆托" :background="background"></u-navbar>
|
|
|
|
|
<u-form>
|
|
|
|
|
<radio-group @change="SplitOrMerge">
|
|
|
|
|
<label class="radio" style="margin-left: 50rpx;">
|
|
|
|
|
<radio value="zb">{{'组盘'}}</radio>
|
|
|
|
|
</label>
|
|
|
|
|
<label class="radio" style="margin-left: 30rpx;">
|
|
|
|
|
<radio value="cb">{{'拆盘'}}</radio>
|
|
|
|
|
</label>
|
|
|
|
|
</radio-group>
|
|
|
|
|
<u-form-item>
|
|
|
|
|
<p>扫描条码:</p>
|
|
|
|
|
<u-input class="uni-input" v-model="MaterialPackingcode" :focus="focusBarCode" placeholder="请扫描条码"
|
|
|
|
|
:border="true" @confirm="submit" />
|
|
|
|
|
</u-form-item>
|
|
|
|
|
</u-form>
|
|
|
|
|
<view class="container" style="margin-bottom: 80px;">
|
|
|
|
|
<view class="list-item" v-for="(item, index) in BoxListInfo" :key="item.id">
|
|
|
|
|
<view class="list-content">
|
|
|
|
|
<!-- <div>
|
|
|
|
|
<text class="card-description"> 序号: {{BoxListInfo.length - index}}</text>
|
|
|
|
|
</div> -->
|
|
|
|
|
<div>
|
|
|
|
|
<text class="card-description"> 托盘号: {{ item.PALLETNO }}</text>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<text class="card-description"> 标签: {{ item.MATERIALPACKINGNAME }}</text>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<text class="card-description"> 批次: {{ item.CHARGE }}</text>
|
|
|
|
|
</div>
|
|
|
|
|
<div>
|
|
|
|
|
<text class="card-description"> 解绑标记: <text v-if="item.UNBINDFLAG == 'Y'">已解绑</text><text v-else-if="item.UNBINDFLAG == 'N'">已绑定</text><text v-else></text></text>
|
|
|
|
|
</div>
|
|
|
|
|
<div v-if="SPLIT" class="button-group" style = "margin: 5rpx; padding-bottom: 10rpx; align: center;">
|
|
|
|
|
<u-button type="primary" @click="deleteItem(item, index)">删除</u-button>
|
|
|
|
|
</div>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<br />
|
|
|
|
|
<view class="tabbar_bottom" v-if="!SPLIT">
|
|
|
|
|
<!-- <uni-datetime-picker style="align-items: center;" type="date" :clear-icon="false" v-model="commitDate"
|
|
|
|
|
@maskClick="maskClick" /> -->
|
|
|
|
|
<u-button class="btn-bottom" @click="FGStockIn" type="primary" :loading="loading">确定入库</u-button>
|
|
|
|
|
</view>
|
|
|
|
|
<br />
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
commitDate: '',
|
|
|
|
|
SPLIT: false,
|
|
|
|
|
MERGE: false,
|
|
|
|
|
loading: false,
|
|
|
|
|
userId: "",
|
|
|
|
|
SettobarCode: "", //托盘编号
|
|
|
|
|
MaterialPackingcode: '', //标签编号
|
|
|
|
|
BoxListInfo: [], //后端传回来的绑定表格的数据
|
|
|
|
|
focusKw: false, //库位输入框焦点
|
|
|
|
|
focusBarCode: true, //默认聚焦到条码框
|
|
|
|
|
background: {
|
|
|
|
|
backgroundImage: 'linear-gradient(45deg, rgb(28, 187, 180), rgb(141, 198, 63))'
|
|
|
|
|
}, //返回按钮的样式
|
|
|
|
|
useId: ""
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
// let Things = 20
|
|
|
|
|
// for (var i = 0; i < Things; i++) {
|
|
|
|
|
// this.BoxListInfo.push({aa:"1"})
|
|
|
|
|
// }
|
|
|
|
|
const site = uni.getStorageSync('sitename')
|
|
|
|
|
// this.siteName = site
|
|
|
|
|
this.siteName = 'SDK'
|
|
|
|
|
const iduser = uni.getStorageSync('userid')
|
|
|
|
|
this.userId = iduser
|
|
|
|
|
this.getTimeData();
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
|
deleteItem(row, index) {
|
|
|
|
|
console.log(index, row)
|
|
|
|
|
var url = "//Palletizing/delPalletizing"
|
|
|
|
|
this.$MyRequest(url, {
|
|
|
|
|
materialPackingName: row.MATERIALPACKINGNAME,
|
|
|
|
|
palletNo: row.PALLETNO,
|
|
|
|
|
unbindUserId: this.userId,
|
|
|
|
|
}).then(res => {
|
|
|
|
|
console.log(res)
|
|
|
|
|
if (res.data.success) {
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playSuccess()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
this.BoxListInfo.splice(index, 1)
|
|
|
|
|
} else {
|
|
|
|
|
this.$showMessage(res.data.message)
|
|
|
|
|
this.BoxListInfo.splice(index, 1)
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
}
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
this.$showMessage(err)
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.MaterialPackingcode = ""
|
|
|
|
|
this.focusBarCode = true
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
getTimeData() {
|
|
|
|
|
var year = new Date().getFullYear(); //年
|
|
|
|
|
if (year < 1900) year = year + 1900;
|
|
|
|
|
var month = new Date().getMonth() + 1; //月
|
|
|
|
|
if (month < 10) month = '0' + month;
|
|
|
|
|
var day = new Date().getDate(); //日
|
|
|
|
|
if (day < 10) day = '0' + day;
|
|
|
|
|
const calendar1 = year + '-' + month + '-' + day
|
|
|
|
|
this.commitDate = calendar1
|
|
|
|
|
},
|
|
|
|
|
maskClick(e) {
|
|
|
|
|
console.log('maskClick事件:', e);
|
|
|
|
|
},
|
|
|
|
|
//设置选中状态
|
|
|
|
|
changeischecked() {
|
|
|
|
|
this.ischecked = !this.ischecked //设置选中状态
|
|
|
|
|
},
|
|
|
|
|
SplitOrMerge(e) {
|
|
|
|
|
this.BoxListInfo = []
|
|
|
|
|
const selectedValue = e.detail.value;
|
|
|
|
|
if (selectedValue == 'cb') {
|
|
|
|
|
this.SPLIT = true
|
|
|
|
|
this.MERGE = false
|
|
|
|
|
} else if (selectedValue == 'zb') {
|
|
|
|
|
this.SPLIT = false
|
|
|
|
|
this.MERGE = true
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
submit() {
|
|
|
|
|
if (this.BoxListInfo.some(box => box.MATERIALPACKINGNAME === this.MaterialPackingcode)) {
|
|
|
|
|
this.$showMessage("该标签已扫描,请不要重复扫描!");
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.MaterialPackingcode = ""
|
|
|
|
|
this.focusBarCode = true
|
|
|
|
|
})
|
|
|
|
|
this.$playFail()
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
this.focusBarCode = false;
|
|
|
|
|
if (!this.MERGE && !this.SPLIT) {
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
this.$showMessage("请选择拆盘或组盘")
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.MaterialPackingcode = ""
|
|
|
|
|
this.focusBarCode = true
|
|
|
|
|
console.log(this.focusBarCode)
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
2025-04-15 19:04:28 +08:00
|
|
|
|
var url = "/api/Palletizing/scanCode"
|
2025-03-11 17:57:17 +08:00
|
|
|
|
console.log(this.BoxListInfo[0])
|
|
|
|
|
this.$MyRequest(url, {
|
|
|
|
|
materialPackingName: this.MaterialPackingcode,
|
|
|
|
|
palletNo:this.BoxListInfo[0]?.PALLETNO || ""
|
|
|
|
|
}).then(res => {
|
|
|
|
|
if (res.data.success) {
|
|
|
|
|
let arrList = res.data.resultObj;
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playSuccess()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
if(this.BoxListInfo.some(val => val.PALLETNO != (arrList[0]?.PALLETNO || ''))) {
|
|
|
|
|
this.$showMessage("扫描的当前标签托盘号与之前不一致")
|
|
|
|
|
}else {
|
|
|
|
|
arrList.map(item => this.BoxListInfo.push(item))
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
this.$showMessage(res.data.message)
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
}
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.MaterialPackingcode = ""
|
|
|
|
|
this.focusBarCode = true
|
|
|
|
|
})
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
this.$showMessage(err)
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
this.$nextTick(() => {
|
|
|
|
|
this.MaterialPackingcode = ""
|
|
|
|
|
this.focusBarCode = true
|
|
|
|
|
})
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
FGStockIn() {
|
|
|
|
|
console.log(this.commitDate)
|
|
|
|
|
if (this.BoxListInfo.length > 0) {
|
|
|
|
|
this.loading = true;
|
2025-04-15 19:04:28 +08:00
|
|
|
|
this.$MyRequest('/api/Palletizing/addPalletizing', {
|
2025-03-11 17:57:17 +08:00
|
|
|
|
userId: this.userId,
|
|
|
|
|
boxList: this.BoxListInfo
|
|
|
|
|
}).then(res => {
|
|
|
|
|
console.log('res',res)
|
|
|
|
|
if (res.data.success) {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
this.$showMessage(res.data.message)
|
|
|
|
|
this.BoxListInfo = [];
|
|
|
|
|
} else {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
this.$showMessage(res.data.message)
|
|
|
|
|
this.BoxListInfo = [];
|
|
|
|
|
}
|
|
|
|
|
}).catch(err => {
|
|
|
|
|
this.loading = false;
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
this.$showMessage(err)
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
this.$showMessage("请扫描!")
|
|
|
|
|
try {
|
|
|
|
|
Vue.prototype.$playFail()
|
|
|
|
|
} catch (e) {}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
<style>
|
|
|
|
|
.btn-bottom {
|
|
|
|
|
position: fixed;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
left: 0;
|
|
|
|
|
}
|
|
|
|
|
</style>
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.list-item {
|
|
|
|
|
|
|
|
|
|
margin: 30rpx 20rpx 0 20rpx;
|
|
|
|
|
padding: 10rpx;
|
|
|
|
|
/* 卡片之间的间距 */
|
|
|
|
|
// padding: 12px;
|
|
|
|
|
/* 卡片内部的内边距 */
|
|
|
|
|
background-color: #aaaa7f;
|
|
|
|
|
/* 卡片背景色 */
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
/* 卡片边框圆角 */
|
|
|
|
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
|
|
|
/* 卡片阴影效果 */
|
|
|
|
|
}
|
|
|
|
|
.card-description {
|
|
|
|
|
overflow-wrap: break-word;
|
|
|
|
|
word-break: break-all;
|
|
|
|
|
}
|
|
|
|
|
</style>
|