| | |
| | | background-size: cover;"> |
| | | <view class="top"> |
| | | <view class="top_left"> |
| | | <!-- <text>{{ realTimeWeigh }}</text> --> |
| | | <text>{{ globalweigh }}</text> |
| | | </view> |
| | | <view class="top_right"> |
| | |
| | | <view class="bottom"><text>TIP:当前状态为正常时可以称重</text></view> |
| | | </view> |
| | | <view class="middle-block" |
| | | v-if="firstHairCustomernameShow || sideline"> |
| | | <view class="block-main" |
| | | v-if="firstHairCustomernameShow"> |
| | | <view class="first-line"><combined-title title="原发信息"></combined-title></view> |
| | | <view class="second-line"> |
| | | <view class="label-text" |
| | | :class="{ focusClass: isfocus1 }">皮重</view> |
| | | <view class="input-container" |
| | | :class="{ inputClass: isfocus1, disabledClass: haveInputOrigin }"> |
| | | <u--input placeholder="请输入皮重" |
| | | border="surround" |
| | | v-model="weighData.coalContactSkin" |
| | | @focus="inputFocus(1)" |
| | | @blur="inputBlur" |
| | | @change="inputChange" |
| | | :disabled="haveInputOrigin"></u--input> |
| | | </view> |
| | | <view class="unit" |
| | | :class="{ focusClass: isfocus1 }">吨</view> |
| | | </view> |
| | | <view class="second-line"> |
| | | <view class="label-text" |
| | | :class="{ focusClass: isfocus2 }">毛重</view> |
| | | <view class="input-container" |
| | | :class="{ inputClass: isfocus2, disabledClass: haveInputOrigin }"> |
| | | <u--input placeholder="请输入毛重" |
| | | border="surround" |
| | | v-model="weighData.coalContactHair" |
| | | @focus="inputFocus(2)" |
| | | @blur="inputBlur" |
| | | @change="inputChange" |
| | | :disabled="haveInputOrigin"></u--input> |
| | | </view> |
| | | <view class="unit" |
| | | :class="{ focusClass: isfocus2 }">吨</view> |
| | | </view> |
| | | <view class="second-line"> |
| | | <view class="label-text">净重</view> |
| | | <view class="input-container" |
| | | :class="{ disabledClass: haveInputOrigin }"> |
| | | <u--input placeholder="净重" |
| | | border="surround" |
| | | v-model="coalContactClean" |
| | | :disabled="haveInputOrigin"></u--input> |
| | | </view> |
| | | <view class="unit">吨</view> |
| | | </view> |
| | | </view> |
| | | <view class="block-sideline" |
| | | v-if="sideline"> |
| | | v-if="sideline"> |
| | | <view class="block-sideline"> |
| | | <view class="first-line"><combined-title title="原发信息"></combined-title></view> |
| | | <view class="weigh-item"> |
| | | <view class="item"> |
| | |
| | | <view class="suffix">{{ weighList.orderSurplus ||"" }}</view> |
| | | <text style="color: #ff6363;font-weight: bold;font-size: 26rpx;" |
| | | class="error-tip" |
| | | v-show="isweigh">* 订单余量不足</text> |
| | | v-show="orderSurplusLess">* 订单余量不足</text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view v-show="mergeStateShow"> |
| | | <view class="mergeState"> |
| | | <view class="merge-wrap"> |
| | | <view>是否确认合并</view> |
| | | <view class="merge-checkbox"> |
| | | <u-checkbox-group v-model="checkboxValue1" |
| | | placement="column" |
| | | @change="mergeStateChange"> |
| | | <u-checkbox :customStyle="{marginBottom: '8px'}" |
| | | :label="mergeState?'确认':'取消'" |
| | | name="confirm" |
| | | label-size="30" |
| | | size="30" |
| | | activeColor="#48a2ff"> |
| | | </u-checkbox> |
| | | </u-checkbox-group> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | |
| | | plain |
| | | @click="evacuation" |
| | | throttleTime="500" |
| | | :disabled="!isEvacuation"></u-button> |
| | | :disabled="!isEvacuation" |
| | | v-if='weighList.skin||weighList.hair'></u-button> |
| | | <!-- 外销订单称皮时,返回加减吨按钮置灰。称毛时可用.外购订单,不出现返回加减吨的按钮 --> |
| | | <u-button type="primary" |
| | | text="确定称重" |
| | | :disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh || !isInputOrigin" |
| | | :disabled="realTimeWeigh == 0 || globalinfraredStatus || isweigh ||!mergeState||isExceedOrigin" |
| | | :loading="isConfirmWeighLoading" |
| | | loadingText="确认" |
| | | @click="confirmWeigh" |
| | | throttleTime="800"></u-button> |
| | | <u-button type="primary" |
| | | text="返回加减吨" |
| | | text="返回装卸" |
| | | :disabled="addAndSubtractCoalDisabled" |
| | | @click="addAndSubtractCoal" |
| | | class="jiajian" |
| | | v-if="outBuy"></u-button> |
| | | v-if="outBuy||!isSkinWeigh"></u-button> |
| | | </view> |
| | | <view v-show="isConfirmWeighLoading" |
| | | style="color: #ff6363;width: auto;margin: 0 auto;"> |
| | | 超出毛重,磅房人员确认中,请勿离开此页面 |
| | | </view> |
| | | <!-- <view class="four"> |
| | | <u-button type="primary" |
| | | text="刷新" |
| | | @click.stop="RefreshHandle" |
| | | icon="reload" |
| | | throttle-time="800" |
| | | :loading="refreshLoading"></u-button> |
| | | </view> --> |
| | | <!-- 放空弹窗 --> |
| | | <view class="evacuationModal"> |
| | | <u-modal :show="evacuationModalShow" |
| | |
| | | title="异常原因" |
| | | :showCancelButton="true" |
| | | @confirm="abnormalConfirm" |
| | | @cancel="abnormalCancel" |
| | | confirmText="提交"> |
| | | <view class="slot-content"> |
| | | <u--form labelPosition="top"> |
| | | <u-form-item> |
| | | <u-textarea v-model="abnormalContent" |
| | | <u--form labelPosition="top" |
| | | :model='abnormalForm' |
| | | :rules="rules" |
| | | ref="uForm"> |
| | | <u-form-item prop="abnormalContent"> |
| | | <u-textarea v-model="abnormalForm.abnormalContent" |
| | | confirmType="done" |
| | | placeholder="请输入异常原因" |
| | | placeholder="请输入异常原因(字数不少于5个字)" |
| | | height='140' |
| | | count |
| | | border="surround" |
| | |
| | | </view> |
| | | </u-modal> |
| | | </view> |
| | | <!-- 确认后称重提示弹窗 --> |
| | | <view class=""> |
| | | <u-modal :show="confirmWeighVisiable" |
| | | title="提示" |
| | | :content="confirmWeighContent" |
| | | @confirm="confirmWeighConfirm"></u-modal> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | let socket = null; |
| | | import { webSocketUrl } from '@/api/request.js'; |
| | | import { mapState, mapMutations } from 'vuex'; |
| | | import combinedTitle from '@/components/combined-title/combined-title.vue'; |
| | |
| | | this.changeWeigh('') |
| | | this.realTimeWeigh = 0 |
| | | }, |
| | | onShow() { |
| | | this.timer = setTimeout(() => { |
| | | if (!this.globalweigh) { |
| | | console.log('称重时自动重连'); |
| | | this.socketTask.close(); |
| | | this.changesocketTask(null); |
| | | this.changereconnectNum({ connectNum: 1, isWeigh: true }) |
| | | this.$store.dispatch('websocketInit'); |
| | | } |
| | | }, 3000) |
| | | }, |
| | | onHide() { |
| | | clearTimeout(this.timer) |
| | | }, |
| | | onUnload() { |
| | | clearTimeout(this.timer) |
| | | }, |
| | | components: { |
| | | combinedTitle |
| | | }, |
| | |
| | | sceneInOut: '', |
| | | coalContactClean: 0, |
| | | coalContactHair: 0, |
| | | coalContactSkin: 0 |
| | | coalContactSkin: 0, |
| | | isMerge: '0', //1是 0不是 默认0 是否合卡 |
| | | isBackground: '0' |
| | | }, |
| | | // 是否填写原发信息 |
| | | isInputOrigin: false, |
| | | haveInputOrigin: false, |
| | | |
| | | takeCoalId: null, |
| | | weighHouseCode: '', |
| | | isConfirmWeighLoading: false, //确定称重按钮 |
| | |
| | | primaryClean: null, |
| | | // 判断称重按钮是否可用 |
| | | isweigh: false, |
| | | orderSurplusLess: false, |
| | | // 外购类型称重填写毛,皮, |
| | | firstHairCustomernameShow: false, |
| | | coalContactHair: '', |
| | | coalContactSkin: '', |
| | | // 聚焦时改变样式 |
| | | isfocus1: false, |
| | | isfocus2: false, |
| | | // 外购第一次称毛重不需要加减吨 |
| | | outBuy: true, |
| | | // 皮重异常相关 |
| | | abnormalContent: '', |
| | | abnormalForm: { |
| | | abnormalContent: '', |
| | | }, |
| | | avgSkin: '', // 平均皮重 |
| | | isAbnormalAvgSkin: true, //平均皮重是否异常 |
| | | tmTaskCoalList: [], |
| | |
| | | historyShow: false, |
| | | // 是否在称皮重,点击确定称重判断是否异常 |
| | | isSkinWeigh: false, |
| | | errorTipShow: false |
| | | errorTipShow: false, |
| | | rules: { |
| | | abnormalContent: [{ |
| | | required: true, |
| | | message: "请填写异常原因", |
| | | trigger: ['blur', 'change'], |
| | | type: 'string' |
| | | }, |
| | | { |
| | | validator: (rule, value, callback) => { |
| | | if (value.length < 5) { |
| | | callback(new Error('原因不可少于5个字')) |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | }, |
| | | ] |
| | | }, |
| | | mergeState: true, //合卡状态 |
| | | mergeStateShow: false, //合卡弹窗 |
| | | checkboxValue1: [], |
| | | isExceedOrigin: false, //是否超出原发毛重 |
| | | refreshLoading: false, |
| | | timer: null |
| | | }; |
| | | }, |
| | | watch: { |
| | |
| | | .orderType == |
| | | '转出') { |
| | | if (this.weighList.skin == 0) { |
| | | this.isSkinWeigh = true |
| | | this.isSkinWeigh = true //称皮没有返回装卸 |
| | | this.outBuy = false //称皮没有返回装卸 |
| | | this.temporaryWeighObj.skin = newV; |
| | | let xx = new BigNumber(this.avgSkin) |
| | | let yy = new BigNumber(newV) |
| | | this.errorTipShow = xx.minus(yy).toNumber() <= -0.2 || xx.minus(yy).toNumber() >= 0.2 |
| | | this.errorTipShow = (xx.minus(yy).toNumber() <= -0.2 || xx.minus(yy).toNumber() >= 0.2) && |
| | | this.avgSkin !== 0 |
| | | } else { |
| | | this.isSkinWeigh = false; |
| | | this.outBuy = true; |
| | | this.temporaryWeighObj.hair = newV; |
| | | this.temporaryWeighObj.clean = (this.temporaryWeighObj.hair - this.weighList.skin).toFixed( |
| | | 2); |
| | | this.isweigh = this.temporaryWeighObj.clean > this.weighList.orderSurplus || this |
| | | .temporaryWeighObj |
| | | .clean < 0; |
| | | this.orderSurplusLess = this.temporaryWeighObj.clean > this.weighList.orderSurplus |
| | | this.mergeStateShow = this.weighList.source !== 0 && this.orderSurplusLess |
| | | } |
| | | } else if (this.weighList.orderType == '外购' || this.weighList.orderType == '内购' || this.weighList |
| | | .orderType == '转入') { |
| | | if (this.weighList.hair == 0) { |
| | | this.isSkinWeigh = false; |
| | | this.outBuy = true; |
| | | this.temporaryWeighObj.hair = newV; |
| | | // if (this.weighList.orderType == '外购') { |
| | | // let xx = new BigNumber(newV) |
| | | // let yy = new BigNumber(this.weighList.hairTwo) |
| | | // if (xx.minus(yy) > 0.3) { |
| | | // this.$u.toast('超出原发信息毛重,请等待管理人员处理') |
| | | // this.isExceedOrigin = true |
| | | // this.saveWeigh() |
| | | // } |
| | | // } |
| | | } else { |
| | | this.isSkinWeigh = true; |
| | | this.isSkinWeigh = true; //称皮没有返回装卸 |
| | | this.outBuy = false //称皮没有返回装卸 |
| | | this.temporaryWeighObj.skin = newV; |
| | | let xx = new BigNumber(this.avgSkin) |
| | | let yy = new BigNumber(newV) |
| | | this.errorTipShow = xx.minus(yy).toNumber() <= -0.2 || xx.minus(yy).toNumber() >= 0.2 |
| | | this.errorTipShow = (xx.minus(yy).toNumber() <= -0.2 || xx.minus(yy).toNumber() >= 0.2) && |
| | | this.avgSkin !== 0; |
| | | this.temporaryWeighObj.clean = (this.weighList.hair - this.temporaryWeighObj.skin).toFixed( |
| | | 2); |
| | | this.isweigh = this.temporaryWeighObj.clean > this.weighList.orderSurplus || this |
| | | .temporaryWeighObj |
| | | .clean < 0; |
| | | this.orderSurplusLess = this.temporaryWeighObj.clean > this.weighList.orderSurplus |
| | | this.mergeStateShow = this.weighList.source !== 0 && this.orderSurplusLess |
| | | } |
| | | } |
| | | } |
| | | }, |
| | | confirmWeighVisiable(v) { |
| | | if (v) { |
| | | uni.hideLoading() |
| | | } |
| | | } |
| | | }, |
| | | computed: { |
| | | ...mapState(['globalweigh', 'globalinfraredStatus']), |
| | | ...mapState(['globalweigh', 'globalinfraredStatus', 'globalisconnect', 'globalisUploadimg', 'globalisLogin', |
| | | 'is_open_socket', 'socketTask', 'confirmWeighVisiable', 'confirmWeighContent' |
| | | ]), |
| | | coalContactClean() { |
| | | let xx = BigNumber(this.weighData.coalContactHair) |
| | | let yy = BigNumber(this.weighData.coalContactSkin) |
| | |
| | | isEvacuation() { |
| | | if (this.weighList.orderType == '外销' || this.weighList.orderType == '内销' || this.weighList.orderType == |
| | | '转出') { |
| | | return (this.weighList.skin === 0 ? this.temporaryWeighObj.skin : this.weighList.skin) == this |
| | | .temporaryWeighObj.hair; |
| | | return this.weighList.skin == this.temporaryWeighObj.hair; |
| | | } |
| | | if (this.weighList.orderType == '外购' || this.weighList.orderType == '内购' || this.weighList.orderType == |
| | | '转入') { |
| | | return (this.weighList.hair === 0 ? this.temporaryWeighObj.skin : this.weighList.hair) == this |
| | | .temporaryWeighObj.hair; |
| | | return this.weighList.hair == this.temporaryWeighObj.skin; |
| | | } |
| | | }, |
| | | sideline() { |
| | | return this.weighList.orderType == '内购' || this.weighList.orderType == '转入'; |
| | | } |
| | | }, |
| | | |
| | | methods: { |
| | | ...mapMutations(['changeweighHouseCode', 'changeisLogin', 'changeWeigh']), |
| | | ...mapMutations(['changeweighHouseCode', 'changeisLogin', 'changeWeigh', 'changeconfirmWeighVisiable', |
| | | 'changesocketTask', 'changereconnectNum' |
| | | ]), |
| | | RefreshHandle() { |
| | | if (this.globalisconnect) return this.$u.toast('已连接,无需刷新') |
| | | this.refreshLoading = true |
| | | if (!this.globalisconnect && !this.globalisUploadimg && this.globalisLogin) { |
| | | if (!this.is_open_socket) { |
| | | this.$store.dispatch('websocketInit') |
| | | this.changeisconnect(true); |
| | | this.refreshLoading = false |
| | | this.$u.toast('刷新成功') |
| | | } |
| | | } |
| | | }, |
| | | init() { |
| | | uni.showLoading({ |
| | | title: "加载中" |
| | |
| | | this.weighData.filedId = res.data.filedId; |
| | | this.weighData.coalContactHair = res.data.hairTwo ? res.data.hairTwo : 0; |
| | | this.weighData.coalContactSkin = res.data.skinTwo ? res.data.skinTwo : 0; |
| | | this.weighList.source = res.data.source |
| | | if (this.weighList.orderType == '外购') { |
| | | this.firstHairCustomernameShow = true; |
| | | if (this.weighList.hair > 0) { |
| | |
| | | let yy = new BigNumber(this.globalweigh) |
| | | if (xx.minus(yy).toNumber() <= -0.2 || xx.minus(yy).toNumber() >= 0.2) { |
| | | this.abnormalModalShow = true |
| | | this.skinAbnormal() |
| | | } else { |
| | | this.saveWeigh(); |
| | | } |
| | |
| | | }); |
| | | this.isConfirmWeighLoading = false; |
| | | }, 1000); |
| | | } else if (res.code === 3) { |
| | | uni.showLoading({ |
| | | title: '磅房人员确认中', |
| | | }) |
| | | } else { |
| | | this.$u.toast('称重失败,请稍后重试'); |
| | | this.$u.toast(res.msg ? res.msg : '称重失败,请稍后重试'); |
| | | this.isConfirmWeighLoading = false |
| | | } |
| | | }) |
| | |
| | | carNo: this.weighData.carNo, |
| | | tmId: this.weighData.tmId, |
| | | filedId: this.weighData.filedId, |
| | | equipmentCode: this.weighData.equipmentCode |
| | | equipmentCode: this.weighData.equipmentCode, |
| | | weigh: this.weighData.weigh |
| | | }, 'json').then(res => { |
| | | if (res.code == 0) { |
| | | this.$u.toast('操作成功,即将返回上一页'); |
| | |
| | | this.$reqPost('getTwoEvacuation', this.weighData, 'json').then(res => { |
| | | console.log(res, '第二次放空'); |
| | | if (res.code == 0) { |
| | | this.$u.toast('操作成功'); |
| | | this.$u.toast('操作成功,即将返回上一页'); |
| | | setTimeout(() => { |
| | | uni.navigateBack({ |
| | | delta: 1 |
| | | }); |
| | | }, 1000); |
| | | this.evacuationModalShow = false; |
| | | } else { |
| | | this.$u.toast(res.msg ? res.msg : '操作失败'); |
| | |
| | | // 提交异常原因 |
| | | abnormalConfirm() { |
| | | this.weighData.abnormalText = this.abnormalContent |
| | | this.skinAbnormal() |
| | | this.saveWeigh() |
| | | this.abnormalModalShow = false |
| | | }, |
| | | skinAbnormal() { |
| | | this.$reqPost('skinAbnormal', { sceneId: this.weighData.sceneId }, 'params').then(() => { |
| | | this.abnormalModalShow = false |
| | | }) |
| | | this.$reqPost('skinAbnormal', { sceneId: this.weighData.sceneId, tmId: this.weighData.tmId }, 'params') |
| | | }, |
| | | mergeStateChange(e) { |
| | | if (e.length !== 0) { |
| | | this.weighData.isMerge = 1 |
| | | this.MergeState = true |
| | | this.isweigh = false |
| | | this.orderSurplusLess = false |
| | | } else { |
| | | this.weighData.isMerge = 0 |
| | | this.MergeState = false |
| | | this.isweigh = true |
| | | this.orderSurplusLess = true |
| | | } |
| | | }, |
| | | confirmWeighConfirm() { |
| | | this.changeconfirmWeighVisiable(false) |
| | | this.isConfirmWeighLoading = false |
| | | setTimeout(() => { |
| | | this.$u.toast('即将返回上一页'), |
| | | uni.navigateBack({ |
| | | delta: 1 |
| | | }) |
| | | }, 800) |
| | | } |
| | | } |
| | | }; |
| | |
| | | width: calc(100% - 60rpx); |
| | | box-sizing: border-box; |
| | | height: 630rpx; |
| | | margin: 0 vww(15) vww(45) vww(15); |
| | | margin: 0 vww(15) vww(15) vww(15); |
| | | background: #ffffff; |
| | | box-shadow: 0rpx 0rpx 14rpx 0rpx rgba(73, 120, 240, 0.14), 0rpx 7rpx 45rpx 0rpx rgba(73, 120, 240, 0.12); |
| | | border-radius: 20rpx; |
| | |
| | | } |
| | | } |
| | | |
| | | .mergeState { |
| | | width: 100%; |
| | | margin: vww(4) 0; |
| | | margin-bottom: vww(10); |
| | | display: flex; |
| | | justify-content: center; |
| | | font-size: vww(16); |
| | | overflow: hidden; |
| | | |
| | | .merge-wrap { |
| | | width: vww(200); |
| | | height: vww(30); |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .merge-checkbox { |
| | | margin-top: vww(10); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .three { |
| | | margin: 0 auto vww(30); |
| | | flex: 0.7; |
| | |
| | | } |
| | | |
| | | .four { |
| | | width: 100%; |
| | | margin-top: vww(5); |
| | | text-align: center; |
| | | width: vww(80); |
| | | margin: 0 auto; |
| | | } |
| | | |
| | | .slide-fade-enter-active { |