Files
rd_mes_uniapp/pages/bom/cleaningRecords.vue
2025-12-18 14:11:48 +08:00

268 lines
5.8 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>
<div class="head">
<table>
<tr>
<td>&emsp;&emsp;:</td>
<td>
<uni-easyinput type="text" prefixIcon="scan"
placeholder="请扫描设备!"
v-model="machineCode"
@iconClick="iconClick('machineCode')"
/>
<div class="button" @click="clickButton('getSelect')">查询</div>
</td>
</tr>
<tr>
<td>当前状态</td><td>{{head.statusChina}}</td>
</tr>
<tr>
<td>开炉时间</td><td>{{head.openTime}}</td>
</tr>
<tr>
<td>关炉时间</td><td>{{head.closeTime}}</td>
</tr>
</table>
<div class="button" v-show="open" @click="clickButton('inClick')">清炉</div>
</div>
<uni-popup ref="message" type="message">
<uni-popup-message :type="message.msgType" :message="message.messageText" :duration="2000"></uni-popup-message>
</uni-popup>
<uni-popup ref="popup" type="center" background-color="#fff" :is-mask-click="false">
<!-- 加载动画 -->
<loding-vue/>
</uni-popup>
</view>
</template>
<script>
import {
listMesFurnaceOperationRecord,
addMesFurnaceOperationRecord
} from '@/api/mes/bom.js'
//引入加载动画
import lodingVue from "@/utils/loding/loding.vue";
export default {
components:{
lodingVue
},
data() {
return {
head:{
statusChina:'',
closeTime:'',
openTime:'',
},
machineCode:'',
message:{
msgType:'warn',
messageText:'请先查询设备信息'
},
open:false
}
},
methods: {
/**
* 按钮点击事件
* @param {Object} value
*/
clickButton(value){
const _self= this
_self.open = false;
if(_self.machineCode == '') {
return _self.messageType({
msgType:'warn',
messageText:'请输入设备代码'
})
}
if( _self.head.statusChina === undefined && value !== 'getSelect'){
return _self.messageType({
msgType:'warn',
messageText:'请先查询设备信息'
})
}
_self[value]()
},
/**
* 提示信息
* @param {Object} obj
*/
messageType(obj){
const _self = this;
let message ={}
if(obj === undefined){
message = {
msgType:'error',
messageText:'请填写设备代码'
}
}else{
message = {
msgType:obj.msgType,
messageText:obj.messageText
}
}
_self.message = Object.assign({},message)
return _self.$refs.message.open()
},
/**
* 接口访问方法
* @param {Object} api 接口名称
* @param {Object} value 带入参数
*/
async fnApi(api,value){
const _self = this;
const objApi = {
listMesFurnaceOperationRecord,
addMesFurnaceOperationRecord,
}
try{
//打开蒙层
_self.$refs.popup.open()
//查询接口
const data = (await objApi[api](value)).rows
return data
}catch(e){
_self.messageType({
msgType:'error',
messageText:'接口请求出错'
})
}finally{
//关闭蒙层
_self.$refs.popup.close()
}
},
/**
* 查询设备最近的记录
*/
async getSelect(){
const _self = this
const query = {
pageNum: 1,
pageSize: 1,
machineCode: _self.machineCode,
orderByColumn: "id",
isAsc: "desc",
}
let rows = (await _self.fnApi('listMesFurnaceOperationRecord',query))[0];
if(rows === undefined) return
const statusChina = await getStatus(rows)
rows = Object.assign(rows,{statusChina})
_self.open = statusChina =='关炉' ? true :false;
_self.head = rows
/**
* 判断当期是清炉|关|开
* @param {Object} arr
*/
function getStatus (arr){
const obj = {
0:'开炉',
1:'关炉',
2:'清炉'
}
return obj[arr.status]
}
},
/**
* 清炉事件
*/
async inClick(){
const _self = this;
const {closeBy,closeTime,createBy,createTime,machineCode, machineId} = _self.head
// 获取当前北京时间的时间戳(单位为毫秒)
var stamp= new Date().getTime() + 8 * 60 * 60 * 1000;
var beijingTime = new Date(stamp).toISOString().replace(/T/, ' ').replace(/\..+/, '').substring(0, 19);
const clearBy = uni.getStorageSync('HBusername');
const obj = Object.assign(_self.head,{
clearBy,
clearTime:beijingTime,
updateTime:beijingTime,
id:null,
status:2
})
await _self.fnApi('addMesFurnaceOperationRecord',obj)
_self.getSelect()
}
}
}
</script>
<style lang="scss" scoped>
page{
background-color: #ffffff;
$fontSize:5vw; //设置变量,以字体为基础大小
font-size: $fontSize;
color: #6a6663;
view{
width: 96vw;
margin: 0 auto;
&>div{
display: flex;
justify-content:center;
flex-wrap: wrap ; //设置换行
}
.head{
border-bottom: 0.5vw solid #a2adab;
table{
&>tr:first-child>td:last-child{
&>* {
float: left;
}
&>*:first-child{
margin-right: 2%;
width: 75%;
}
&>*:last-child{
width: 20%;
min-height: 35px;
max-height: 50px;
margin:0;
border: 1px solid #a3cccc;
}
}
}
}
table{
width: 100%;
&>tr td:last-child{
width: 71%;
}
}
.button{
width: 4 * $fontSize;
// aspect-ratio: 2; //设置元素纵横比,宽是高的两倍
border: $fontSize / 10 solid #a3cccc;
border-radius: 15%;
text-align: center;
line-height: 2 * $fontSize;
margin: $fontSize /2 0;
}
}
}
@media (min-width: 100px) and (max-width: 600px) {
.head tr:first-child>td:last-child>*:last-child{
font-size: 15px;
line-height: 35px;
}
}
@media (min-width: 600px) {
.head tr:first-child>td:last-child>*:last-child{
font-size: 30px;
line-height: 50px;
}
}
</style>
<style>
page{
background-color: #ffffff ;
}
</style>