<template>
|
<view class="weighingDevice">
|
<view class="one">
|
<view class="top">
|
<view class="top_left">
|
<text>{{ realTimeWeigh }}</text>
|
</view>
|
<view class="top_right">
|
<view class="">
|
称重:
|
<u--text :type="realTimeWeigh == 0 ? 'error' : 'success'" :text="realTimeWeigh == 0 ? '异常' : '正常'" size="34"></u--text>
|
</view>
|
<view class="">
|
红外:
|
<u--text :type="globalinfraredStatus ? 'error' : 'success'" :text="globalinfraredStatus ? '异常' : '正常'" size="34"></u--text>
|
</view>
|
<!-- <view class="">
|
雷达:
|
<u--text type="success" text="正常" size="34"></u--text>
|
</view> -->
|
</view>
|
</view>
|
<view class="bottom"><text>TIP:当前状态为正常时可以称重</text></view>
|
</view>
|
<view class="two">
|
<p>订单编号:{{ weighList.code || '' }}</p>
|
<p>订单类型:{{ weighList.orderType || '' }}</p>
|
<p>订单余量:{{ weighList.orderSurplus || 0 }}</p>
|
<p>皮重:{{ temporaryWeighObj.skin == 0 ? weighList.skin : temporaryWeighObj.skin }}</p>
|
<p>毛重:{{ temporaryWeighObj.hair == 0 ? weighList.hair : temporaryWeighObj.hair }}</p>
|
<p>净重:{{ temporaryWeighObj.clean == 0 ? weighList.clean : temporaryWeighObj.clean }}</p>
|
<p>煤种名称:{{ weighList.coalName || '' }}</p>
|
<p>单位名称:{{ weighList.deptName || '' }}</p>
|
<p>矿场名称:{{ weighList.filedName || '' }}</p>
|
</view>
|
<view class="three">
|
<!-- 放空 -->
|
<u-button type="primary" text="放空" plain @click="evacuation" throttleTime="500" :disabled="isEvacuation"></u-button>
|
<!-- 外销订单称皮时,返回加减吨按钮置灰。称毛时可用.外购订单,不出现返回加减吨的按钮 -->
|
<u-button
|
type="primary"
|
text="确定称重"
|
:disabled="realTimeWeigh == 0 || globalinfraredStatus"
|
:loading="isConfirmWeighLoading"
|
loadingText="确认"
|
@click="confirmWeigh"
|
></u-button>
|
<u-button type="primary" text="返回加减吨" :disabled="addAndSubtractCoalDisabled" @click="addAndSubtractCoal" class="jiajian"></u-button>
|
</view>
|
<view class="four" v-if="weighList.orderType !== '外购'">如您需要调整装载货品吨数,请点击返回加减吨</view>
|
<!-- 放空弹窗 -->
|
<view class="evacuationModal">
|
<u-modal
|
:show="evacuationModalShow"
|
:title="evacuationTitle"
|
:content="evacuationContent"
|
:showCancelButton="true"
|
@confirm="evacuationConfirm"
|
@cancel="evacuationCancel"
|
></u-modal>
|
</view>
|
</view>
|
</template>
|
|
<script>
|
let socket = null;
|
import { webSocketUrl } from '@/api/request.js';
|
import { mapState, mapMutations } from 'vuex';
|
import toast from '../../../../../uni_modules/uview-ui/libs/config/props/toast';
|
export default {
|
onLoad(params) {
|
this.takeCoalId = params.takeCoalId;
|
this.weighData.sceneId = params.sceneId;
|
this.weighData.gateCameraId = params.gateCameraId;
|
this.weighData.equipmentCode = params.gateCameraCode;
|
this.weighHouseCode = params.weighHouseCode;
|
this.changeweighHouseCode(params.weighHouseCode);
|
},
|
data() {
|
return {
|
weighData: {
|
//确认称重接口参数
|
deptId: '',
|
tmId: '',
|
sceneId: '',
|
carNo: '',
|
gateCameraId: '',
|
equipmentCode: '',
|
weigh: 0,
|
tmCode: ''
|
},
|
takeCoalId: null,
|
weighHouseCode: '',
|
isConfirmWeighLoading: false, //确定称重按钮
|
realTimeWeigh: '',
|
weighList: {},
|
webSocket: null, // webSocket实例
|
// lockReconnect: false, // 重连锁,避免多次重连
|
// maxReconnect: 6, // 最大重连次数, -1 标识无限重连
|
// reconnectTime: 0, // 重连尝试次数
|
// heartbeat: {
|
// interval: 30 * 1000, // 心跳间隔时间
|
// timeout: 10 * 1000, // 响应超时时间
|
// pingTimeoutObj: null, // 延时发送心跳的定时器
|
// pongTimeoutObj: null, // 接收心跳响应的定时器
|
// pingMessage: JSON.stringify({ type: 'ping' }) // 心跳请求信息
|
// }
|
// 临时称重对象
|
temporaryWeighObj: {
|
skin: 0,
|
hair: 0,
|
clean: 0
|
},
|
infraredStatus: false, // 红外状态,
|
// 放空控制
|
evacuationModalShow: false,
|
evacuationTitle: '放空确认',
|
evacuationContent: '是否确认放空'
|
};
|
},
|
watch: {
|
realTimeWeigh(newV, oldV) {
|
console.log(newV);
|
if (this.weighList.orderType == '外销' || this.weighList.orderType == '内销') {
|
if (this.weighList.skin == 0) {
|
// this.temporaryWeighObj.skin = this.realTimeWeigh;
|
this.temporaryWeighObj.skin = newV;
|
} else {
|
// this.temporaryWeighObj.hair = this.realTimeWeigh;
|
this.temporaryWeighObj.hair = newV;
|
this.temporaryWeighObj.clean = (this.temporaryWeighObj.hair - this.weighList.skin).toFixed(2);
|
}
|
} else if (this.weighList.orderType == '外购' || this.weighList.orderType == '转出') {
|
if (this.weighList.hair == 0) {
|
// this.temporaryWeighObj.hair = this.realTimeWeigh;
|
this.temporaryWeighObj.hair = newV;
|
} else {
|
// this.temporaryWeighObj.skin = this.realTimeWeigh;
|
this.temporaryWeighObj.skin = newV;
|
this.temporaryWeighObj.clean = (this.weighList.hair - this.temporaryWeighObj.skin).toFixed(2);
|
}
|
}
|
},
|
// 监听重量变化
|
globalweigh(v) {
|
this.weighData.weigh = this.realTimeWeigh = v;
|
}
|
},
|
onShow() {
|
this.init();
|
// this.initWebSocket();
|
},
|
computed: {
|
...mapState(['globalweigh', 'globalinfraredStatus']),
|
token() {
|
return uni.getStorageSync('token');
|
},
|
// 加减煤按钮禁用与否
|
addAndSubtractCoalDisabled() {
|
if (this.weighList.orderType == '外销' || this.weighList.orderType == '内销' || this.weighList.orderType == '转出') {
|
if (this.weighList.hair == 0) {
|
return true;
|
} else if (this.weighList.hair != 0) {
|
return false;
|
}
|
}
|
},
|
// 是否放空按钮禁用
|
isEvacuation() {
|
if (this.weighList.hair == this.weighList.skin || this.temporaryWeighObj.skin == this.temporaryWeighObj.hair) {
|
return false;
|
} else {
|
return true;
|
}
|
}
|
},
|
methods: {
|
...mapMutations(['changeweighHouseCode']),
|
init() {
|
// 获取称重信息
|
this.$reqGet('weighList', { id: this.takeCoalId }).then(res => {
|
console.log(res, '获取称重信息');
|
if (res.code == 0) {
|
this.weighList = res.data;
|
this.weighData.deptId = res.data.deptId;
|
this.weighData.tmId = res.data.id;
|
this.weighData.carNo = res.data.carNo;
|
this.weighData.tmCode = res.data.code;
|
}
|
});
|
},
|
/**
|
* @确认称重等待后端提供实时称重接口,获取皮重,毛重
|
*/
|
confirmWeigh() {
|
if (this.isConfirmWeighLoading == false) {
|
this.isConfirmWeighLoading = true;
|
if (this.weighData.weigh != 0) {
|
if (this.weighList.orderType == '外销') {
|
if (this.weighList.skin ? (this.weighList.skin < this.realTimeWeigh ? true : false) : true) {
|
this.saveWeigh();
|
} else {
|
this.$u.toast('毛重不能小于皮重');
|
this.isConfirmWeighLoading = false;
|
}
|
} else {
|
this.saveWeigh();
|
}
|
} else {
|
this.$u.toast('未能获取地磅重量');
|
this.isConfirmWeighLoading = false;
|
}
|
}
|
},
|
// 确认称重接口
|
saveWeigh() {
|
this.$reqPost('saveWeigh', this.weighData, 'json')
|
.then(res => {
|
console.log(res, '称重接口');
|
if (res.code == 0) {
|
this.$u.toast('称重成功');
|
setTimeout(() => {
|
uni.navigateBack({
|
delta: 1
|
});
|
this.isConfirmWeighLoading = false;
|
}, 1000);
|
} else {
|
this.$u.toast('称重失败,请稍后重试');
|
}
|
})
|
.catch(err => {
|
this.isConfirmWeighLoading = false;
|
console.log(err);
|
});
|
},
|
// 加减煤
|
addAndSubtractCoal() {
|
this.$reqPost('addAndSubtractCoal', { deptId: this.weighData.deptId, sceneId: this.weighData.sceneId, carNo: this.weighData.carNo }, 'json').then(res => {
|
if (res.code == 0) {
|
this.$u.toast('操作成功,即将返回上一页');
|
setTimeout(() => {
|
uni.navigateBack({
|
delta: 1
|
});
|
this.isConfirmWeighLoading = false;
|
}, 1000);
|
console.log(res, '加减煤');
|
}
|
});
|
},
|
/**
|
* 初始化 weoSocket
|
*/
|
initWebSocket() {
|
let wsUrl = `${webSocketUrl}?access_token=${uni.getStorageSync('token')}`;
|
let socket = uni.connectSocket({
|
url: wsUrl,
|
header: {
|
CLIENT_TOC: 'Y'
|
},
|
complete: res => {
|
console.log(res, 'socket结果');
|
}
|
});
|
socket.onOpen(() => {
|
console.log('onOpen');
|
});
|
// 获取服务器传来的数据,做相应处理
|
socket.onMessage(res => {
|
console.log('socketWeigh', res);
|
let nowWeighObj = JSON.parse(res.data.slice(7));
|
if (nowWeighObj.eqCode == this.weighHouseCode) {
|
if (nowWeighObj.eqInfraredStatus) {
|
this.infraredStatus = true;
|
this.weighData.weigh = this.realTimeWeigh = nowWeighObj.weigh;
|
} else {
|
this.infraredStatus = false;
|
this.weighData.weigh = this.realTimeWeigh = nowWeighObj.weigh;
|
}
|
}
|
});
|
socket.onClose(() => {
|
uni.closeSocket();
|
console.log('webSocketClose');
|
this.$u.toast('磅房已关闭');
|
});
|
socket.onError(err => {
|
console.log('socket报错', err);
|
this.$u.toast('磅房暂时不能使用,请重新进入该页面,重试!!');
|
});
|
},
|
// 放空
|
evacuation() {
|
this.evacuationModalShow = true;
|
},
|
// 放空弹窗确认
|
evacuationConfirm() {
|
this.$reqPost('getTwoEvacuation', this.weighData, 'json').then(res => {
|
console.log(res, '第二次放空');
|
this.evacuationModalShow = false;
|
});
|
},
|
// 放空弹窗取消
|
evacuationCancel() {
|
this.evacuationModalShow = false;
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
::v-deep.weighingDevice {
|
width: 100%;
|
height: 100vh;
|
display: flex;
|
flex-direction: column;
|
.one {
|
flex: 2;
|
border: vww(2) solid #dddddd;
|
margin: vww(20) vww(20) 0 vww(20);
|
border-radius: vww(15);
|
.top {
|
height: 80%;
|
display: flex;
|
.top_left {
|
flex: 3;
|
font-size: vww(50);
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
}
|
.top_right {
|
display: flex;
|
flex-direction: column;
|
justify-content: center;
|
flex: 2;
|
view {
|
display: flex;
|
}
|
}
|
}
|
.bottom {
|
text-align: center;
|
}
|
}
|
.two {
|
flex: 4;
|
border: vww(2) solid #dddddd;
|
margin: vww(20);
|
border-radius: vww(10);
|
padding: vww(20);
|
p {
|
text-align: center;
|
font-size: vww(20);
|
font-weight: 500;
|
margin-top: vww(5);
|
}
|
}
|
.three {
|
margin: 0 auto vww(20);
|
flex: 0.7;
|
display: flex;
|
color: #939393;
|
.u-button {
|
&:nth-of-type(2) {
|
margin-left: vww(10);
|
}
|
&:nth-of-type(3) {
|
margin-left: vww(10);
|
}
|
}
|
}
|
.four {
|
margin: vww(10) auto;
|
flex: 0.5;
|
}
|
}
|
</style>
|