270 lines
6.5 KiB
Vue
270 lines
6.5 KiB
Vue
<template>
|
||
<view class="container">
|
||
<t-emp />
|
||
<uni-card class="eqpInfo">
|
||
<uni-row class="eqpCode">
|
||
<uni-col :span="10">
|
||
<span>设备编码</span>
|
||
</uni-col>
|
||
<uni-col :span="14">
|
||
<uni-easyinput suffixIcon="scan" @iconClick="scanBar" v-model="eqpCode" type="text" />
|
||
</uni-col>
|
||
</uni-row>
|
||
<uni-row class="eqpName">
|
||
<uni-col :span="10">
|
||
<span>设备名称</span>
|
||
</uni-col>
|
||
<uni-col :span="14">
|
||
<span>{{ eqpName }}</span>
|
||
</uni-col>
|
||
</uni-row>
|
||
<button type="primary" class="searchBtn" @click="searchEqp">查询</button>
|
||
</uni-card>
|
||
<view class="jobInfo">
|
||
<uni-card class="jobs" v-for="(item, index) in searchJobWithEqp" :key="index">
|
||
<uni-section class="mb-10" :title="jobStatuses[item.jobStatus - 1]"
|
||
:title-color="jobStatusColor[item.jobStatus - 1]" title-font-size="40rpx" type="line" />
|
||
<uni-row>
|
||
<uni-col :span="8">作业编码:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.jobCode }}</uni-col>
|
||
</uni-row>
|
||
<uni-row>
|
||
<uni-col :span="8">工单编码:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.pwoCode }}</uni-col>
|
||
</uni-row>
|
||
<uni-row>
|
||
<uni-col :span="8">目标产品编码:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.tarProCode }}</uni-col>
|
||
</uni-row>
|
||
<uni-row>
|
||
<uni-col :span="8">产品名称:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.tarProName }}</uni-col>
|
||
</uni-row>
|
||
<uni-row>
|
||
<uni-col :span="8">规格一:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.specification1 }}</uni-col>
|
||
</uni-row>
|
||
<uni-row>
|
||
<uni-col :span="8">制程名称:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.opTitle }}</uni-col>
|
||
</uni-row><uni-row>
|
||
<uni-col :span="8">目标产量:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.planNum }}</uni-col>
|
||
</uni-row><uni-row>
|
||
<uni-col :span="8">未完成:</uni-col>
|
||
<uni-col :span="12" :offset="3">{{ item.unfinishedNum }}</uni-col>
|
||
</uni-row>
|
||
</uni-card>
|
||
</view>
|
||
<button v-if="isLegal" type="primary" class="confirmStart" @click="submit">确认上机</button>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import {
|
||
addStart,
|
||
listEmpEqpHistory
|
||
} from '@/api/basic/empEqpHistory.js'
|
||
import {
|
||
listPwoJob
|
||
} from '@/api/mes/jobReport.js'
|
||
import {
|
||
listEmployee
|
||
} from '@/api/mes/jobIn.js'
|
||
import {
|
||
listEquipment
|
||
} from '@/api/basic/cutter.js'
|
||
import {
|
||
getInfo
|
||
} from '@/api/login'
|
||
import {
|
||
getDicts
|
||
} from '@/api/system/dict/dictData.js'
|
||
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
userId: null,
|
||
empName: this.$store.state.employee.empName,
|
||
empCode: this.$store.state.employee.empCode,
|
||
eqpCode: null,
|
||
eqpId: null,
|
||
eqpName: null,
|
||
jobStatuses: [],
|
||
jobStatusColor: [
|
||
'#FFBA00',
|
||
'#13CE66',
|
||
'#1890FF'
|
||
],
|
||
searchJobWithEqp: [],
|
||
isLegal: false
|
||
}
|
||
},
|
||
methods: {
|
||
// 根据设备编码查询设备名称
|
||
async searchEqp() {
|
||
this.eqpId = null
|
||
this.eqpName = null
|
||
this.isLegal = false
|
||
if (this.eqpCode) {
|
||
await listEquipment({
|
||
equipmentCode: this.eqpCode
|
||
}).then((res) => {
|
||
if (res.rows.length > 0) {
|
||
this.eqpId = res.rows[0].id
|
||
this.eqpName = res.rows[0].equipmentTitle
|
||
this.isLegal = true
|
||
} else {
|
||
this.eqpName = null
|
||
this.searchJobWithEqp = null
|
||
this.$modal.showToast("未查询到设备信息,请检查设备编号")
|
||
}
|
||
})
|
||
} else {
|
||
this.$modal.showToast("请先输入设备编码")
|
||
}
|
||
this.searchJob()
|
||
},
|
||
// 根据设备查找关联的作业信息
|
||
searchJob() {
|
||
this.searchJobWithEqp = []
|
||
if (!this.isLegal) {
|
||
this.eqpName = null
|
||
} else {
|
||
this.$modal.loading('查询中')
|
||
listPwoJob({
|
||
eqpId: this.eqpId
|
||
}).then(async res => {
|
||
this.$modal.closeLoading()
|
||
for (var i in res.rows) {
|
||
// 只显示已派工、材料已转入、作业开工3个状态的作业信息
|
||
let filterNum = res.rows[i].status % 9
|
||
if (filterNum > 0 && filterNum < 4 && res.rows[i].status != 1) {
|
||
this.searchJobWithEqp.push({
|
||
jobCode: res.rows[i].code,
|
||
pwoCode: res.rows[i].pwoCode,
|
||
tarProCode: res.rows[i].ptNoTar,
|
||
tarProName: res.rows[i].ptTitleTar,
|
||
specification1: res.rows[i].specification1,
|
||
opTitle: res.rows[i].opTitle,
|
||
planNum: res.rows[i].targetNum,
|
||
unfinishedNum: res.rows[i].unFinishQty,
|
||
jobStatus: filterNum
|
||
})
|
||
}
|
||
}
|
||
}).catch(() => {
|
||
this.$modal.showToast("查询失败")
|
||
})
|
||
}
|
||
},
|
||
scanBar() {
|
||
uni.scanCode({
|
||
scanType: ['qrCode', 'barCode'],
|
||
success: (res) => {
|
||
this.eqpCode = res.result;
|
||
},
|
||
fail: () => {
|
||
this.$modal.showToast("获取设备编码失败")
|
||
}
|
||
});
|
||
},
|
||
submit() {
|
||
if (this.eqpCode) {
|
||
this.$modal.loading('提交中')
|
||
addStart({
|
||
empCode: this.empCode,
|
||
eqpCode: this.eqpCode
|
||
}).then(res => {
|
||
this.$modal.closeLoading();
|
||
this.$modal.msgSuccess("上机成功!")
|
||
setTimeout(() => {
|
||
uni.navigateBack()
|
||
}, 500);
|
||
})
|
||
} else {
|
||
this.$modal.showToast("请先输入设备编码")
|
||
}
|
||
}
|
||
},
|
||
// 根据账号获取员工姓名和账号ID
|
||
onLoad() {
|
||
// 获取字典中的作业状态
|
||
getDicts("mes_job_status").then(res => {
|
||
for (var i in res.data) {
|
||
let filterNum = res.data[i].dictValue % 9
|
||
if (filterNum > 0 && filterNum < 4 && res.data[i].dictValue != 1) {
|
||
this.jobStatuses.push(res.data[i].dictLabel)
|
||
}
|
||
}
|
||
})
|
||
console.log(this.jobStatuses)
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped lang="scss">
|
||
.container {
|
||
padding: 6px 12px;
|
||
box-sizing: border-box;
|
||
display: flex;
|
||
flex-direction: column;
|
||
overflow: hidden;
|
||
/* #ifdef H5 */
|
||
height: calc(100vh - 44px);
|
||
/* #endif */
|
||
/* #ifndef H5 */
|
||
height: 100vh;
|
||
/* #endif */
|
||
}
|
||
|
||
.eqpInfo {
|
||
display: flex;
|
||
flex-direction: column;
|
||
max-height: 20vh;
|
||
margin: 10px 0 0 0 !important;
|
||
padding: 0;
|
||
border-radius: 10px;
|
||
|
||
.eqpCode,
|
||
.eqpName,
|
||
.searchBtn {
|
||
flex: 1;
|
||
font-size: 1.5rem;
|
||
line-height: 2rem;
|
||
}
|
||
|
||
.searchBtn {
|
||
margin-top: 30rpx;
|
||
height: 5vh;
|
||
width: 80%;
|
||
line-height: 5vh;
|
||
font-size: 2rem;
|
||
}
|
||
}
|
||
|
||
.jobInfo {
|
||
flex: 1;
|
||
width: auto;
|
||
overflow: scroll;
|
||
padding: 4px 0;
|
||
|
||
.jobs {
|
||
margin: 0 0 2px 0 !important;
|
||
}
|
||
}
|
||
|
||
|
||
.confirmStart {
|
||
height: 6vh;
|
||
width: 90vw;
|
||
margin-top: 1vh;
|
||
// height: 6vh;
|
||
// position: absolute;
|
||
// bottom: 4px;
|
||
// left: 5vw;
|
||
line-height: 6vh;
|
||
font-size: 2rem;
|
||
}
|
||
</style> |