<template>
|
<div class="rk">
|
<div class="rk_info">
|
<span>作业员:{{info.worker}}/{{info.groupName}}</span>
|
<span>机台/工位:<span v-for="(item, i) in info.deviceList" :key="i">{{item.name}} {{i === info.deviceList.length - 1 ? '' : '/'}}</span></span>
|
</div>
|
<div class="rk_statistics">
|
<div class="rk_statistics_item" v-if="info.finishedQualified">
|
<span>{{info.finishedQualified.num}}</span>
|
<span>{{info.finishedQualified.boxNum}}盒</span>
|
<span>已完工合格品</span>
|
</div>
|
<div class="rk_statistics_item" v-if="info.finishedUndesirable">
|
<span class="yellow">{{info.finishedUndesirable.num}}</span>
|
<span>{{info.finishedUndesirable.boxNum}}盒</span>
|
<span>已完工不良品</span>
|
</div>
|
<div class="rk_statistics_item" v-if="info.finishedScrap">
|
<span class="orange">{{info.finishedScrap.num}}</span>
|
<span>{{info.finishedScrap.boxNum}}盒</span>
|
<span>待报废品</span>
|
</div>
|
<div class="rk_statistics_item" v-if="info.qualified">
|
<span>{{info.qualified.num}}</span>
|
<span>{{info.qualified.boxNum}}盒</span>
|
<span><span class="lan">未生产</span>合格品</span>
|
</div>
|
<div class="rk_statistics_item" v-if="info.undesirable">
|
<span class="yellow">{{info.undesirable.num}}</span>
|
<span>{{info.undesirable.boxNum}}盒</span>
|
<span><span class="lan">未生产</span>不良品</span>
|
</div>
|
<div class="rk_statistics_item" v-if="info.surplus">
|
<span class="grey">{{info.surplus.num}}</span>
|
<span>{{info.surplus.boxNum}}盒</span>
|
<span><span class="lan">余留次班生产</span></span>
|
</div>
|
</div>
|
<div class="rk_wl">
|
<div class="rk_wl_header">
|
<div class="rk_wl_header_top">
|
<div class="rk_wl_header_top_x"></div>
|
<span>完工交接物料</span>
|
</div>
|
<!-- <div class="rk_wl_header_bottom">-->
|
<!-- <span>单号:ZK-20220601-0001</span>-->
|
<!-- <span>时间:2022/05/30 18:10:02</span>-->
|
<!-- </div>-->
|
</div>
|
<div class="rk_wl_content" v-if="info.appliancesMaterialBeanList && info.appliancesMaterialBeanList.length > 0">
|
<div class="rk_wl_content_item" v-for="(item, i) in info.appliancesMaterialBeanList" :key="i">
|
<span>{{item.materialName}} | {{item.materialCode}}</span>
|
<span class="rk_wl_content_item_a" v-if="item.finishedQualified && item.finishedQualified.boxNum > 0 && item.finishedQualified.num > 0">已完工 <span class="hg">[合格品]</span>:{{item.finishedQualified.boxNum}}盒|{{item.finishedQualified.num}}{{item.finishedQualified.unitName}}</span>
|
<span class="rk_wl_content_item_b" v-if="item.finishedUndesirable && item.finishedUndesirable.boxNum > 0 && item.finishedUndesirable.num > 0">已完工 <span class="bl">[不良品]</span>:{{item.finishedUndesirable.boxNum}}盒|{{item.finishedUndesirable.num}}{{item.finishedUndesirable.unitName}}</span>
|
<span class="rk_wl_content_item_c" v-if="item.finishedScrap && item.finishedScrap.boxNum > 0 && item.finishedScrap.num > 0">已完工 <span class="bf">[待报废]</span>:{{item.finishedScrap.boxNum}}盒|{{item.finishedScrap.num}}{{item.finishedScrap.unitName}}</span>
|
<span class="rk_wl_content_item_d" v-if="item.qualified && item.qualified.boxNum > 0 && item.qualified.num > 0"><span class="nv">未生产</span> <span class="hg">[合格品]</span>:{{item.qualified.boxNum}}盒|{{item.qualified.num}}{{item.qualified.unitName}}</span>
|
<span class="rk_wl_content_item_e" v-if="item.undesirable && item.undesirable.boxNum > 0 && item.undesirable.num > 0"><span class="nv">未生产</span> <span class="bl">[不良品]</span>:{{item.undesirable.boxNum}}盒|{{item.undesirable.num}}{{item.undesirable.unitName}}</span>
|
</div>
|
</div>
|
<div class="rk_sc_kong" v-else>
|
<span>暂无数据</span>
|
</div>
|
</div>
|
<div class="rk_sc">
|
<div class="rk_sc_header">
|
<div class="rk_sc_header_x"></div>
|
<span>本次余留次班生产</span>
|
</div>
|
<div class="rk_sc_content" v-if="info.finishedInBillBeanList && info.finishedInBillBeanList.length > 0">
|
<div class="rk_sc_content_item" v-for="(item, index) in info.finishedInBillBeanList" :key="index">
|
<div class="rk_sc_content_item_a">{{item.code}}</div>
|
<div class="rk_sc_content_item_b">
|
<span>接收人:{{item.userName}}/{{item.departmentName}} </span>
|
<span>时间:{{item.dealDate}}</span>
|
</div>
|
<div class="rk_sc_content_item_hz" v-if="item.appliancesMaterialBeanList">
|
<div class="rk_sc_content_item_hz_item" v-for="(item1, idx) in item.appliancesMaterialBeanList" :key="idx">
|
<div class="rk_sc_content_item_hz_item_top">
|
<span>{{item1.materialName}} | {{item1.materialCode}}</span>
|
</div>
|
<div class="rk_sc_content_item_hz_item_bottom">
|
<span v-if="item1.qualified"><span class="ls">未生产</span> <span class="succ">[合格品]</span>:{{item1.qualified.boxNum}}盒|{{item1.qualified.num}}{{item1.qualified.unitName}}</span>
|
<span v-if="item1.undesirable"><span class="ls">未生产</span> <span class="err">[不合格]</span>:{{item1.undesirable.boxNum}}盒|{{item1.undesirable.num}}{{item1.undesirable.unitName}}</span>
|
</div>
|
</div>
|
</div>
|
</div>
|
</div>
|
<div class="rk_sc_kong">
|
<span>暂无数据</span>
|
</div>
|
</div>
|
<div class="rk_zw"></div>
|
<div class="rk_footer">
|
<div class="rk_footer_s" @click="jump">余留次班</div>
|
<button class="rk_footer_u" @click="submit" v-preventReClick>完工入库</button>
|
</div>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { ref, onMounted, onBeforeUnmount } from 'vue'
|
import { Toast } from 'vant'
|
import { useRouter, useRoute } from "vue-router"
|
import { finishedDetail, finished } from '@/apis/WorkOrderAPI'
|
|
const route = useRoute()
|
|
const router = useRouter()
|
|
let info: any = ref([])
|
|
// 完工入库提交
|
const submit = () => {
|
// if (window.sessionStorage.getItem('ids')) {
|
let deviceIds: any = route.query.ids
|
finished({
|
deviceIds: deviceIds ? deviceIds : '',
|
inIds: window.sessionStorage.getItem('ids') ? window.sessionStorage.getItem('ids') : ''
|
}).then(res => {
|
if (res.code === 200) {
|
Toast.success({
|
message: '入库成功',
|
duration: 2000,
|
forbidClick: true
|
})
|
setTimeout(() => {
|
// router.go(-1)
|
router.replace({ path: '/workbench' })
|
}, 2000)
|
}
|
})
|
// } else {
|
// Toast({ message: '请先选择余留次班' })
|
// }
|
|
}
|
|
// 获取详情
|
const finishedDetails = (ids: any) => {
|
finishedDetail({
|
deviceIds: route.query.ids,
|
inIds: ids ? ids : ''
|
}).then(res => {
|
if (res.code === 200) {
|
console.log(res)
|
info.value = res.data
|
}
|
})
|
}
|
|
// 跳转预留班次
|
const jump = () => {
|
// if (window.sessionStorage.getItem('ids')) {
|
// router.push({ name: 'secondShift', query: { id: info.value.produceLocationIds, ids: window.sessionStorage.getItem('ids') } })
|
// } else {
|
router.push({ name: 'secondShift', query: { id: info.value.produceLocationIds } })
|
// }
|
}
|
|
onMounted(() => {
|
|
finishedDetails(window.sessionStorage.getItem('ids'))
|
|
})
|
|
onBeforeUnmount(() => {
|
|
if (window.sessionStorage.getItem('ids')) {
|
window.sessionStorage.removeItem('ids')
|
}
|
|
})
|
</script>
|
|
<style lang="scss" scoped>
|
.rk {
|
width: 100%;
|
height: 100%;
|
position: absolute;
|
background: #F7F7F7;
|
.rk_info {
|
display: flex;
|
flex-direction: column;
|
padding: 30px;
|
box-sizing: border-box;
|
span {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
&:first-child {
|
margin-bottom: 24px;
|
}
|
}
|
}
|
.rk_statistics {
|
display: flex;
|
align-items: center;
|
flex-wrap: wrap;
|
justify-content: space-between;
|
padding: 0 30px;
|
box-sizing: border-box;
|
.rk_statistics_item {
|
width: 31%;
|
padding: 30px 0;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
flex-direction: column;
|
background: #FFFFFF;
|
border-radius: 8px;
|
margin-bottom: 20px;
|
.yellow {
|
color: $nav-stateColor5 !important;
|
}
|
.orange {
|
color: #DE5243 !important;
|
}
|
.grey {
|
color: #222222 !important;
|
}
|
span {
|
&:nth-child(1) {
|
font-size: 36px;
|
font-weight: 600;
|
color: $nav-stateColor2;
|
}
|
&:nth-child(2) {
|
font-size: 22px;
|
font-weight: 400;
|
color: #666666;
|
margin: 20px 0;
|
}
|
&:nth-child(3) {
|
font-size: 24px;
|
font-weight: 400;
|
color: #333333;
|
.lan {
|
font-size: 24px;
|
color: $nav-color !important;
|
}
|
}
|
}
|
}
|
}
|
.rk_wl {
|
.rk_wl_header {
|
display: flex;
|
flex-direction: column;
|
padding: 30px;
|
.rk_wl_header_top {
|
display: flex;
|
align-items: center;
|
.rk_wl_header_top_x {
|
width: 8px;
|
height: 30px;
|
background: #4275FC;
|
border-radius: 2px;
|
margin-right: 12px;
|
}
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
.rk_wl_header_bottom {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
span {
|
font-size: 24px;
|
font-weight: 400;
|
color: #666666;
|
}
|
}
|
}
|
.rk_sc_kong {
|
width: 100%;
|
height: 90px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
background: #ffffff;
|
span {
|
font-size: 25px;
|
color: black;
|
}
|
}
|
.rk_wl_content {
|
padding: 30px 30px 0 30px;
|
background: white;
|
.rk_wl_content_item {
|
display: flex;
|
flex-direction: column;
|
border-bottom: 1px solid #E5E5E5;
|
margin-bottom: 28px;
|
&:last-child {
|
border: none;
|
margin-bottom: 0;
|
}
|
.rk_wl_content_item_a {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin-bottom: 30px;
|
.hg {
|
color: $nav-stateColor2;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
}
|
.rk_wl_content_item_b {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin-bottom: 30px;
|
.bl {
|
color: $nav-stateColor5;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
}
|
.rk_wl_content_item_c {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin-bottom: 30px;
|
.bf {
|
color: $nav-stateColor4;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
}
|
.rk_wl_content_item_d {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin-bottom: 30px;
|
.nv {
|
color: $nav-color;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
.hg {
|
color: $nav-stateColor2;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
.bf {
|
color: $nav-stateColor4;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
}
|
.rk_wl_content_item_e {
|
font-size: 26px;
|
font-weight: 400;
|
color: #333333;
|
margin-bottom: 30px;
|
.nv {
|
color: $nav-color;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
.hg {
|
color: $nav-stateColor2;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
.bl {
|
color: $nav-stateColor5;
|
font-size: 26px;
|
font-weight: 400;
|
}
|
}
|
span {
|
&:nth-child(1) {
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
margin-bottom: 32px;
|
}
|
}
|
}
|
}
|
}
|
.rk_sc {
|
.rk_sc_header {
|
padding: 30px;
|
box-sizing: border-box;
|
display: flex;
|
align-items: center;
|
.rk_sc_header_x {
|
width: 8px;
|
height: 30px;
|
background: #4275FC;
|
border-radius: 2px;
|
margin-right: 12px;
|
}
|
span {
|
font-size: 32px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
.rk_sc_kong {
|
width: 100%;
|
height: 90px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
background: #ffffff;
|
span {
|
font-size: 25px;
|
color: black;
|
}
|
}
|
.rk_sc_content {
|
padding: 0 30px;
|
background: white;
|
.rk_sc_content_item {
|
padding: 30px 0;
|
border-bottom: 1px solid #E5E5E5;
|
&:last-child {
|
border: none;
|
}
|
.rk_sc_content_item_a {
|
font-size: 30px;
|
font-weight: 500;
|
color: #222222;
|
margin-bottom: 24px;
|
}
|
.rk_sc_content_item_b {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
span {
|
font-size: 24px;
|
font-weight: 400;
|
color: #666666;
|
}
|
}
|
.rk_sc_content_item_hz {
|
padding: 24px 30px;
|
background: #F7F7F7;
|
border-radius: 16px;
|
margin-top: 24px;
|
.rk_sc_content_item_hz_item {
|
border-bottom: 1px solid #E5E5E5;
|
margin-bottom: 22px;
|
&:last-child {
|
border: none;
|
margin: 0;
|
}
|
.rk_sc_content_item_hz_item_top {
|
margin-bottom: 24px;
|
span {
|
font-size: 28px;
|
font-weight: 500;
|
color: #333333;
|
}
|
}
|
.rk_sc_content_item_hz_item_bottom {
|
margin-bottom: 24px;
|
display: flex;
|
flex-direction: column;
|
span {
|
font-size: 24px;
|
font-weight: 400;
|
color: #222222;
|
margin-bottom: 20px;
|
&:last-child {
|
margin-bottom: 0;
|
}
|
.err {
|
color: $nav-stateColor4 !important;
|
}
|
.ls {
|
color: $nav-color !important;
|
}
|
.succ {
|
color: $nav-stateColor2 !important;
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
}
|
.rk_zw {
|
height: 168px;
|
background: #F7F7F7;
|
}
|
.rk_footer {
|
position: fixed;
|
bottom: 0;
|
left: 30px;
|
width: calc(100% - 60px);
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
padding-bottom: 68px;
|
.rk_footer_s {
|
width: 334px;
|
height: 88px;
|
background: #FFFFFF;
|
box-shadow: 0 0 12px 0 rgba(0, 0, 0, 0.08);
|
border-radius: 8px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 30px;
|
font-weight: 500;
|
color: $nav-color;
|
}
|
.rk_footer_u {
|
width: 334px;
|
height: 88px;
|
border: none;
|
background: $nav-color;
|
box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.1);
|
border-radius: 8px;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 30px;
|
font-weight: 500;
|
color: #FFFFFF;
|
}
|
}
|
}
|
</style>
|