420 lines
10 KiB
Vue
420 lines
10 KiB
Vue
|
|
<template>
|
|||
|
|
<view>
|
|||
|
|
<div id="body">
|
|||
|
|
<div class="head">
|
|||
|
|
<table>
|
|||
|
|
<tr>
|
|||
|
|
<td>设  备:</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>
|
|||
|
|
<div class="button" @click="clickButton('openTrue')">开炉</div>
|
|||
|
|
<div class="button" @click="clickButton('openClose')">关炉</div>
|
|||
|
|
<div class="button" @click="clickButton('openUpdate')" :class="{ 'bgColor-Click': open }">记录</div>
|
|||
|
|
</div>
|
|||
|
|
</div>
|
|||
|
|
<div class="body">
|
|||
|
|
<div class="button" @click="clickButton('getHistory')">查看历史</div>
|
|||
|
|
<table v-show="open">
|
|||
|
|
<tr>
|
|||
|
|
<td>工单编码:</td>
|
|||
|
|
<td>
|
|||
|
|
<uni-easyinput type="text" prefixIcon="scan"
|
|||
|
|
placeholder="请扫描工单编码!"
|
|||
|
|
v-model="body.pwoCode"
|
|||
|
|
@iconClick="iconClick('pwoCode')"
|
|||
|
|
@change="getPwoCode"
|
|||
|
|
/>
|
|||
|
|
</td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>物料编码:</td><td><uni-easyinput disabled v-model="body.ptNoTar" placeholder="工单扫完带出" /></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>物料名称:</td><td><uni-easyinput disabled v-model="body.ptTitleTar" placeholder="工单扫完带出"/></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>参 数 1 :</td><td><uni-easyinput v-model="body.parameter1" placeholder="输入"/></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>参 数 2 :</td><td><uni-easyinput v-model="body.parameter2" placeholder="输入"/></td>
|
|||
|
|
</tr>
|
|||
|
|
<tr>
|
|||
|
|
<td>参 数 3 :</td><td><uni-easyinput v-model="body.parameter3" placeholder="输入"/></td>
|
|||
|
|
</tr>
|
|||
|
|
</table>
|
|||
|
|
<button v-show="open" type="primary" style="width: 100%;" @click="clickButton('submit')">提交记录</button>
|
|||
|
|
</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,
|
|||
|
|
closeFurnace,
|
|||
|
|
addMesFurnaceOperationRecordDetail
|
|||
|
|
} from '@/api/mes/bom.js'
|
|||
|
|
import {listPwoLike} from "@/api/mes/pwoIn.js"
|
|||
|
|
//引入加载动画
|
|||
|
|
import lodingVue from "@/utils/loding/loding.vue";
|
|||
|
|
export default {
|
|||
|
|
components:{
|
|||
|
|
lodingVue
|
|||
|
|
},
|
|||
|
|
data() {
|
|||
|
|
return {
|
|||
|
|
machineCode:'',
|
|||
|
|
head:{
|
|||
|
|
updateTime:'',
|
|||
|
|
openTime:'',
|
|||
|
|
statusChina:'',
|
|||
|
|
},
|
|||
|
|
body:{},
|
|||
|
|
open:false,
|
|||
|
|
message:{
|
|||
|
|
msgType:'warn',
|
|||
|
|
messageText:'请先查询设备信息'
|
|||
|
|
},
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
methods: {
|
|||
|
|
/**
|
|||
|
|
* 扫码方法
|
|||
|
|
* @param {Object} value {'equipment' || }
|
|||
|
|
*/
|
|||
|
|
iconClick(value){
|
|||
|
|
const _this = this;
|
|||
|
|
uni.scanCode({
|
|||
|
|
// 是否只能从相机扫码,不允许从相册选择图片
|
|||
|
|
onlyFromCamera:true,
|
|||
|
|
// 扫码类型
|
|||
|
|
scanType: ['barCode', 'qrCode'],
|
|||
|
|
success: function(res) {
|
|||
|
|
value === 'machineCode' ? _self.machineCode = res.result : value;
|
|||
|
|
value === 'pwoCode' ? _self.body.pwoCode = res.result :value;
|
|||
|
|
}
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 按钮点击事件
|
|||
|
|
* @param {Object} value
|
|||
|
|
*/
|
|||
|
|
clickButton(value){
|
|||
|
|
const _self= this
|
|||
|
|
if(_self.machineCode == '') {
|
|||
|
|
return _self.messageType({
|
|||
|
|
msgType:'warn',
|
|||
|
|
messageText:'请输入设备代码'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
if(_self.head.statusChina === undefined && value !== 'getSelect'){
|
|||
|
|
return _self.messageType({
|
|||
|
|
msgType:'warn',
|
|||
|
|
messageText:'请先查询设备信息'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
_self[value]()
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 查询设备最近的记录
|
|||
|
|
*/
|
|||
|
|
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
|
|||
|
|
_self.open = false;
|
|||
|
|
rows = Object.assign(rows,{statusChina:await getStatus(rows)})
|
|||
|
|
_self.head = rows
|
|||
|
|
/**
|
|||
|
|
* 判断当期是清炉|关|开
|
|||
|
|
* @param {Object} arr
|
|||
|
|
*/
|
|||
|
|
function getStatus (arr){
|
|||
|
|
const obj = {
|
|||
|
|
0:'开炉',
|
|||
|
|
1:'关炉',
|
|||
|
|
2:'清炉'
|
|||
|
|
}
|
|||
|
|
return obj[arr.status]
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 开炉事件
|
|||
|
|
*/
|
|||
|
|
async openTrue(){
|
|||
|
|
const _self = this;
|
|||
|
|
|
|||
|
|
const {clearBy,clearTime,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 openBy = uni.getStorageSync('HBusername')
|
|||
|
|
const obj = Object.assign(_self.head,{
|
|||
|
|
openBy,
|
|||
|
|
openTime:beijingTime,
|
|||
|
|
updateTime:beijingTime,
|
|||
|
|
id:null,
|
|||
|
|
status:0
|
|||
|
|
})
|
|||
|
|
await _self.fnApi('addMesFurnaceOperationRecord',obj)
|
|||
|
|
_self.getSelect()
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 关炉事件
|
|||
|
|
*/
|
|||
|
|
async openClose(){
|
|||
|
|
const _self = this;
|
|||
|
|
await _self.fnApi('closeFurnace',_self.head.id)
|
|||
|
|
_self.getSelect()
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 工单查询事件
|
|||
|
|
* @param {Object} value
|
|||
|
|
*/
|
|||
|
|
async getPwoCode(value){
|
|||
|
|
const _self = this;
|
|||
|
|
const row = (await _self.fnApi('listPwoLike',{pwoCode:_self.body.pwoCode}))[0]
|
|||
|
|
_self.body = Object.assign({},row)
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 记录事件
|
|||
|
|
*/
|
|||
|
|
openUpdate(){
|
|||
|
|
const _self = this;
|
|||
|
|
_self.open = !_self.open
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 提示信息
|
|||
|
|
* @param {Object|undefined} value
|
|||
|
|
* {msgType,messageText} 参数里面需要包含这两个键
|
|||
|
|
*/
|
|||
|
|
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 = {
|
|||
|
|
addMesFurnaceOperationRecord,
|
|||
|
|
closeFurnace:closeFurnace,
|
|||
|
|
listMesFurnaceOperationRecord,
|
|||
|
|
listPwoLike:listPwoLike,
|
|||
|
|
addMesFurnaceOperationRecordDetail
|
|||
|
|
}
|
|||
|
|
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 submit(){
|
|||
|
|
const _self = this;
|
|||
|
|
|
|||
|
|
const {id} =_self.head
|
|||
|
|
const {pwoCode,materialCode,ptTitleTar,parameter1,parameter2,parameter3} = _self.body
|
|||
|
|
|
|||
|
|
const obj = {
|
|||
|
|
createBy: null,
|
|||
|
|
createTime: null,
|
|||
|
|
delStatus: "0",
|
|||
|
|
finalProductCode: null,
|
|||
|
|
finalProductName: null,
|
|||
|
|
furnaceOpRecCode: null,
|
|||
|
|
furnaceOpRecId: id,
|
|||
|
|
id:null,
|
|||
|
|
materialCode,
|
|||
|
|
materialName:ptTitleTar,
|
|||
|
|
opType: null,
|
|||
|
|
parameter1,
|
|||
|
|
parameter2,
|
|||
|
|
parameter3,
|
|||
|
|
parameter4: null,
|
|||
|
|
parameter5: null,
|
|||
|
|
parameter6: null,
|
|||
|
|
parameter7: null,
|
|||
|
|
parameter8: null,
|
|||
|
|
pwoCode,
|
|||
|
|
remark: null,
|
|||
|
|
updateBy: null,
|
|||
|
|
updateTime: null,
|
|||
|
|
}
|
|||
|
|
await _self.fnApi('addMesFurnaceOperationRecordDetail',obj)
|
|||
|
|
_self.messageType({
|
|||
|
|
msgType:'success',
|
|||
|
|
messageText:'提交成功'
|
|||
|
|
})
|
|||
|
|
},
|
|||
|
|
/**
|
|||
|
|
* 查看历史
|
|||
|
|
*/
|
|||
|
|
getHistory(){
|
|||
|
|
const _self = this;
|
|||
|
|
|
|||
|
|
const obj = {
|
|||
|
|
type : 'chiefRecords',
|
|||
|
|
value : {id:_self.head.id}
|
|||
|
|
}
|
|||
|
|
//在起始页面跳转到test.vue页面并传递参数
|
|||
|
|
uni.navigateTo({
|
|||
|
|
url: '/pages/bom/history',
|
|||
|
|
success: function(res) {
|
|||
|
|
// 通过eventChannel向被打开页面传送数据
|
|||
|
|
res.eventChannel.emit('data', obj)
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
</script>
|
|||
|
|
|
|||
|
|
<style lang="scss" scoped>
|
|||
|
|
#body{
|
|||
|
|
margin: 0 auto;
|
|||
|
|
width: 90vw;
|
|||
|
|
$fontSize:5vw; //设置变量,以字体为基础大小
|
|||
|
|
font-size: $fontSize;
|
|||
|
|
color: #6a6663;
|
|||
|
|
.head{
|
|||
|
|
table{
|
|||
|
|
&>tr:first-child>td:last-child{ //设置table里面的第一个tr的第二个td的宽
|
|||
|
|
width: 71%;
|
|||
|
|
// float: left;
|
|||
|
|
& > * {
|
|||
|
|
float: left;
|
|||
|
|
font-size: $fontSize * 0.75;
|
|||
|
|
}
|
|||
|
|
& >*:first-child{
|
|||
|
|
width: 70%;
|
|||
|
|
}
|
|||
|
|
& >*:last-child {
|
|||
|
|
margin-left: 2%;
|
|||
|
|
width: 25%;
|
|||
|
|
min-height: 35px;
|
|||
|
|
max-height: 50px;
|
|||
|
|
border: 1px solid #a3cccc;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
&>div{
|
|||
|
|
display: flex; //设置子元素开启flex布局
|
|||
|
|
justify-content: space-around; //设置子元素横向对齐方式
|
|||
|
|
border-bottom: $fontSize / 10 solid #cbccbf; //设置div下面的框的样式
|
|||
|
|
padding: $fontSize 0 $fontSize/2; //设置其内部子元素的所在位置
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.body{
|
|||
|
|
padding: $fontSize/2 0 0 0 ; //设置内边距
|
|||
|
|
display: flex; //开启flex布局
|
|||
|
|
flex-direction:row-reverse; //设置主轴对齐方向为水平,并且右对齐
|
|||
|
|
flex-wrap: wrap ; //设置换行
|
|||
|
|
&>div{
|
|||
|
|
// width: 4 * $fontSize;
|
|||
|
|
margin:0 $fontSize * 0.9 $fontSize 0;
|
|||
|
|
}
|
|||
|
|
table{
|
|||
|
|
width: 100%;
|
|||
|
|
float: left;
|
|||
|
|
&>tr:first-child>td:last-child{
|
|||
|
|
width: 70%;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.button{
|
|||
|
|
width: 4 * $fontSize;
|
|||
|
|
// aspect-ratio: 2; //设置元素纵横比,宽是高的两倍
|
|||
|
|
border: $fontSize / 10 solid #a3cccc;
|
|||
|
|
border-radius: 15%;
|
|||
|
|
text-align: center;
|
|||
|
|
// line-height: 2 * $fontSize;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
@media (min-width: 100px) and (max-width: 600px) {
|
|||
|
|
.head>table>tr:first-child>td:last-child>*:last-child{
|
|||
|
|
font-size: 15px;
|
|||
|
|
line-height: 35px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
@media (min-width: 600px) {
|
|||
|
|
.head>table>tr:first-child>td:last-child>*:last-child{
|
|||
|
|
font-size: 30px;
|
|||
|
|
line-height: 50px;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
.bgColor-Click{
|
|||
|
|
background-color: #a3cccc;
|
|||
|
|
}
|
|||
|
|
</style>
|
|||
|
|
|
|||
|
|
<style>
|
|||
|
|
page{
|
|||
|
|
background-color: #ffffff ;
|
|||
|
|
}
|
|||
|
|
</style>
|