Files
hht-zzzw-uni/pages/zw/jb-lower-mater.vue
2025-11-13 09:52:06 +08:00

370 lines
9.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="zd_container">
<!-- 解包下料 -->
<nav-bar :title="title"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper">
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">设备区域</span>
</view>
<view class="zd-col-24 filter_select">
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">设备点位</span>
</view>
<view class="zd-col-24 filter_select">
<uni-data-select v-model="index2" :localdata="options2" @change="selectChange2"></uni-data-select>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-6">
<span class="filter_label">物料重量</span>
</view>
<view class="zd-col-12">
<!-- <search-box v-model="code" @handleChange="handleChange1" @handleDel="handleDel1" /> -->
<input type="number" class="filter_input" v-model="val3" @blur="handleBlur()">
</view>
<button class="mini-btn" type="primary" size="mini" @tap="_getWeight">获取重量</button>
</view>
<!-- <view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">托盘编码</span>
</view>
<view class="zd-col-17">
<search-box v-model="val1"/>
</view>
</view> -->
<view class="zd-row border-bottom">
<view class="zd-col-7">
<span class="filter_label">料桶编码</span>
</view>
<view class="zd-col-17">
<search-box v-model="val2"/>
</view>
</view>
</view>
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th>工单号</th>
<th>物料编码</th>
<th>物料名称</th>
<th>工单状态</th>
<th>开工人</th>
<th>创建者</th>
<th>计划重量</th>
<th>实际重量</th>
<th>计划量</th>
<th>实际量</th>
</tr>
</thead>
<tbody>
<tr v-for="(e, i) in dataList" :key="i" @tap="toChek(e)" :class="{'checked': pkId === e.workorder_id}">
<td>{{e.workorder_code}}</td>
<td>{{e.material_code}}</td>
<td>{{e.material_name}}</td>
<!-- <td>{{e.workorder_status}}</td> -->
<td>{{e.workorder_status_name}}</td>
<td>{{e.operator}}</td>
<td>{{e.create_name}}</td>
<td>{{e.plan_weight}}</td>
<td>{{e.real_weight}}</td>
<td>{{e.plan_qty}}</td>
<td>{{e.real_qty}}</td>
</tr>
</tbody>
</table>
</view>
</view>
<!-- <uni-load-more color="#007AFF" iconType="circle" :status="status" :icon-size="14" :content-text="contentText" v-if="dataList.length > 0"/> -->
</view>
<view class="zd-row submit-bar">
<button class="zd-col-11 button-primary" :class="{'button-info': !this.index2}" @tap="seachList">查询工单</button>
<button class="zd-col-11 button-primary" :class="{'button-info': !this.index2 || !this.val3 || !this.val2 || !this.pkId}" @tap="xlconfirm">确认出桶</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {regionList, pointList, getWeight, jbGetVehicleCode, getOrderList, downMaterial} from '@/utils/getData4.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
options: [],
index: '',
options2: [],
index2: '',
id: '',
code: '',
val1: '',
val2: '',
val3: '',
dataList: [],
pkId: '',
pkObj: {},
flag: '',
dupWeight: '',
orgWeight: '',
standError: '',
disabled: false,
statusMap: {
'1': '未开始',
'3': '生产中',
'5': '已结束'
},
reload: false,
status: 'more',
contentText: {
contentdown: '查看更多',
contentrefresh: '加载中',
contentnomore: '没有更多'
},
totalCount: 0,
pageNum: 1,
pageSize: 100
};
},
onLoad (options) {
this.title = options.title
this.id = options.id
},
created () {
this._regionList()
},
methods: {
handleBlur () {
if (this.val3) {
if (this.val3 < 0) {
this.val3 = 0
} else {
// 1. 过滤非法字符
// this.val3 = this.val3.replace(/[^0-9]/g, '')
// this.val3 = this.val3.replace(/^0+/, '') || '0'
// this.val3 = this.val3.replace(/^0+/, '')
// 4. 处理多个0开头的情况
if (/^0+[1-9]/.test(this.val3)) {
// 如果0后面跟着非零数字去掉前导零
this.val3 = this.val3.replace(/^0+/, '');
} else if (/^0+$/.test(this.val3)) {
// 如果全是0只保留一个0
this.val3 = '0';
} else if (/^0+\./.test(this.val3)) {
// 处理0.xxx的情况去掉整数部分多余的0
this.val3 = '0.' + this.val3.replace(/^0+\./, '');
}
if (Number(this.val3) === 0) {
this.val3 = 0
}
}
} else {
// uni.showToast({
// title: '数量必填',
// icon: 'none'
// })
}
},
async _regionList () {
try {
let res = await regionList()
if (res) {
this.options = res.data
} else {
this.options = []
}
} catch (e) {
this.options = []
}
},
async _pointList (e) {
try {
let res = await pointList(e)
if (res) {
this.options2 = res.data
} else {
this.options2 = []
}
} catch (e) {
this.options2 = []
}
},
selectChange (e) {
this.index = e
this._pointList(e)
},
selectChange2 (e) {
this.index2 = e
this._jbGetVehicleCode()
this.seachList()
},
handleChange (e) {
if (e) {
this.dataList = []
this.pageNum = 1
this.pkId = ''
this._getOrderList()
}
},
seachList () {
if (!this.index2) {
return
}
this.dataList = []
this.pageNum = 1
this.pkId = ''
this._getOrderList()
},
async _getOrderList () {
let res = await getOrderList(this.index2, '2')
if (res.code === '200') {
// this.dataList = res.data
this.dataList = res.data.map(item => ({
...item,
workorder_status_name: this.statusMap[item.workorder_status] || ''
}))
// this.totalCount = res.totalElements
// if (res.totalElements > 0) {
// const dataMap = res.content
// this.dataList = this.reload ? dataMap : this.dataList.concat(dataMap)
// this.reload = false
// } else {
// this.dataList = []
// }
// if (this.totalCount == this.dataList.length) {
// this.reload = false
// this.status = 'noMore'
// }
}
},
onReachBottom () {
if (this.totalCount > this.dataList.length) {
this.status = 'loading'
setTimeout(() => {
this.pageNum++
this._getOrderList()
}, 1000)
} else { //停止加载
this.status = 'noMore'
}
},
toChek (e) {
this.pkId = this.pkId === e.workorder_id ? '' : e.workorder_id
this.pkObj = this.pkId === e.workorder_id ? e : {}
},
clearUp () {
this.index = ''
this.index2 = ''
this.val2 = ''
this.val3 = ''
this.dataList = []
this.pageNum = 1
this.pkId = ''
},
async _getWeight () {
if (!this.index2) {
return
}
let res = await getWeight(this.index2, this.pkId)
if (res.code === '200') {
uni.showToast({
title: res.message,
icon: 'none'
})
this.val3 = res.data.weight
this.flag = res.data.flag
this.dupWeight = res.data.weight
this.orgWeight = res.data.org_weight
this.standError = res.data.stand_error
}
},
async _jbGetVehicleCode () {
if (!this.index2) {
return
}
let res = await jbGetVehicleCode(this.index2)
if (res.code === '200') {
// this.val1 = res.data.tp_code
this.val2 = res.data.lt_code
}
},
xlconfirm () {
this.disabled = true
if (!this.index2 || !this.val3 || !this.val2 || !this.pkId) {
this.disabled = false
return
}
if (this.flag === '2') {
let chazhi = Number(this.val3) - Number(this.orgWeight)
if ( chazhi > Number(this.standError)) {
uni.showModal({
title: '提示',
content: '输⼊的重量:' + this.val3 + '与吨袋的重量:' + this.orgWeight + '误差过⼤!是否继续?',
confirmColor: '#ff6a00',
success: (res) => {
if (res.confirm) {
this._downMaterial()
} else if (res.cancel) {
this.disabled = false
}
}
})
} else {
this._downMaterial()
}
}
if (this.flag === '1') {
let chazhi = Number(this.val3) - Number(this.orgWeight)
if ( chazhi > Number(this.standError)) {
uni.showModal({
title: '提示',
content: '您修改的重量:' + this.val3 + '与吨袋的重量:' + this.orgWeight + '误差过⼤!是否以您输⼊的重量继续?',
confirmColor: '#ff6a00',
success: (res) => {
if (res.confirm) {
this._downMaterial()
} else if (res.cancel) {
this.disabled = false
}
}
})
} else {
this._downMaterial()
}
}
},
async _downMaterial () {
try {
let res = await downMaterial(this.pkId, this.index, this.val3, this.index2, this.val1, this.val2)
if (res.code === '200') {
uni.showToast({
title: res.message,
icon: 'none'
})
this.clearUp()
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
this.disabled = false
}
} catch (e) {
this.disabled = false
}
}
}
}
</script>