<template>
|
<GlobalWindow
|
title="计划详情"
|
width="500px"
|
:visible.sync="visible"
|
:confirm-working="isWorking"
|
@confirm="confirm"
|
>
|
<div style="min-width:450px;width:100%">
|
<div class="desc_info">
|
<div class="desc_info_title">
|
<span>{{ info.title }}</span>
|
<span class="unvalid-style" v-if="info.status === 0">待审核</span>
|
<span class="valid-style" v-else-if="info.status === 1">审批通过</span>
|
<span class="scrap-style" v-else-if="info.status === 2">审批未通过</span>
|
<span class="scrap-style" v-else-if="info.status === 3">审批终止</span>
|
</div>
|
<div class="desc_info_company">{{ userInfo.rootDepartment.name }}</div>
|
<div class="desc_info_box">
|
<div class="desc_info_box_item">
|
<span>申请编号:</span>
|
<span>{{ info.code }}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>申请日期:</span>
|
<span>{{ info.createTime }}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>申请类型:</span>
|
<span v-if="info.type === 0">不良返工</span>
|
<span v-if="info.type === 1">客退</span>
|
<span v-if="info.type === 2">客返</span>
|
<span v-if="info.type === 3">报废申请</span>
|
</div>
|
<template v-if="info.type != 3">
|
<div class="desc_info_box_item">
|
<span>返修工序:</span>
|
<span>{{ info.backProcedureName }}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>返工原因:</span>
|
<span>{{ info.content }}</span>
|
</div>
|
</template>
|
<template v-if="info.type == 3">
|
<div class="desc_info_box_item">
|
<span>当前工厂:</span>
|
<span>{{info.factoryName}}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>出库仓库:</span>
|
<span>{{info.warehouseOutName}}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>入库仓库:</span>
|
<span>{{info.warehouseName}}</span>
|
</div>
|
<div class="desc_info_box_item">
|
<span>报废原因:</span>
|
<span>{{ info.content }}</span>
|
</div>
|
</template>
|
<div class="desc_info_box_item">
|
<span>申请人:</span>
|
<span>{{ info.createUserName }}/{{ info.departmentName }}</span>
|
</div>
|
</div>
|
</div>
|
<div class="desc_qd">
|
<div class="desc_qd_header">
|
<div class="desc_qd_header_x"></div>
|
<span>返工工装清单({{info.detailList ? info.detailList.length : '0'}})</span>
|
</div>
|
<template v-if="info && info.detailList && info.detailList.length > 0">
|
<div class="desc_qd_info" v-for="(item, index) in info.detailList" :key="index">
|
<div class="desc_qd_info_item">
|
<span class="black">{{ item.applianceCode }}:</span>
|
<span class="black">{{ item.num }}{{ item.unitName }}</span>
|
</div>
|
<div class="desc_qd_info_item">
|
<span>物料编码:</span>
|
<span>{{ item.materialName }}</span>
|
</div>
|
<div class="desc_qd_info_item">
|
<span>物料名称:</span>
|
<span>{{ item.materialName }}</span>
|
</div>
|
<div class="desc_qd_info_item">
|
<span>批次号:</span>
|
<span>{{ item.batch }}</span>
|
</div>
|
<div class="desc_qd_info_item">
|
<span>生产工序:</span>
|
<span>{{ item.procedureName }}</span>
|
</div>
|
</div>
|
</template>
|
<div class="desc_qd_not" v-else>暂无工装</div>
|
</div>
|
<div class="desc_process">
|
<div class="desc_process_title">
|
<div class="desc_process_title_x"></div>
|
<span>流程</span>
|
</div>
|
<div class="desc_process_content">
|
<div v-for="(item, index) in info.recordList" :key="index" class="desc_process_content_inner">
|
<div v-if="index != info.recordList.length-1" class="item_x"></div>
|
<div class="item">
|
<div class="item_left">
|
<div style="height:100%">
|
<div class="item_left_img">
|
<p>{{ nameToSub(item) }}</p>
|
<img :src="index==0?agreeImg:operationResult(item)" alt="" />
|
</div>
|
</div>
|
<div class="item_left_text">
|
<span>{{ index == 0 ? '发起申请' : '审批人' }}</span>
|
<span>{{ item.userModel ? item.userModel.name : '未绑定钉钉' }}</span>
|
<span v-if="item.remark">{{ item.remark }}</span>
|
</div>
|
</div>
|
<div class="item_right">{{ item.date }}</div>
|
</div>
|
<div style="height:1px"></div>
|
</div>
|
</div>
|
<!-- <div style="height:40px"></div> -->
|
</div>
|
</div>
|
<div slot="footer" class="window__header">
|
<el-button type="primary" @click="cancel">返回</el-button>
|
</div>
|
</GlobalWindow>
|
</template>
|
|
<script>
|
import BaseOpera from '@/components/base/BaseOpera'
|
import GlobalWindow from '@/components/common/GlobalWindow'
|
export default {
|
name: 'BackorderDetailExtWindow',
|
extends: BaseOpera,
|
components: { GlobalWindow },
|
data () {
|
return {
|
info: {},
|
userInfo: {},
|
waitImg: require('../../assets/images/ic_shenhe@2x.png'),
|
agreeImg: require('../../assets/images/ic_pass@2x.png'),
|
refuseImg: require('../../assets/images/ic_notpass@2x.png'),
|
}
|
},
|
created () {
|
this.config({
|
api: '/ext/plansExt',
|
'field.id': 'id'
|
})
|
this.userInfo = this.$store.state.userInfo
|
},
|
methods: {
|
open (title, target) {
|
this.title = title
|
this.visible = true
|
// 编辑
|
this.$nextTick(() => {
|
this.info = target
|
})
|
},
|
cancel () {
|
this.visible = false
|
},
|
nameToSub (row) {
|
if (!row.userModel) {
|
return '-'
|
}
|
return row.userModel.name.substr(row.userModel.name.length-1, 1)
|
},
|
operationResult (item) {
|
switch (item.operationResult) {
|
case 'AGREE': return this.agreeImg
|
case 'NONE': return this.waitImg
|
case 'REFUSE': return this.refuseImg
|
}
|
}
|
}
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
// ::v-deep .window__body {
|
// padding: 12px 0px !important;
|
// }
|
.desc {
|
position: absolute;
|
top: 0;
|
width: 100%;
|
height: 100%;
|
}
|
.desc_info {
|
|
background: #ffffff;
|
.desc_info_title {
|
display: flex;
|
align-items: center;
|
justify-content: space-between;
|
span {
|
&:first-child {
|
font-size: 16px;
|
font-weight: 500;
|
color: #333333;
|
}
|
&:last-child {
|
font-size: 13px;
|
font-weight: 400;
|
// color: #F5A400;
|
}
|
}
|
}
|
.desc_info_company {
|
font-size: 12px;
|
font-weight: 400;
|
color: #666666;
|
margin: 12px 0;
|
}
|
.desc_info_box {
|
padding: 12px 15px;
|
background: #F7F7F7;
|
border-radius: 8px;
|
display: flex;
|
flex-direction: column;
|
.desc_info_box_item {
|
display: flex;
|
align-items: center;
|
margin-bottom: 12px;
|
&:last-child {
|
margin-bottom: 0 !important;
|
}
|
span {
|
font-size: 13px;
|
font-weight: 400;
|
&:first-child {
|
color: #666666;
|
}
|
&:last-child {
|
color: #222222;
|
}
|
}
|
}
|
}
|
}
|
.desc_qd {
|
|
margin-top: 20px;
|
.desc_qd_not {
|
width: 100%;
|
height: 75px;
|
background: white;
|
display: flex;
|
align-items: center;
|
justify-content: center;
|
font-size: 14px;
|
color: black;
|
margin-top:150px;
|
}
|
.desc_qd_header {
|
display: flex;
|
align-items: center;
|
padding: 0 15px;
|
.desc_qd_header_x {
|
width: 4px;
|
height: 15px;
|
background: #4275FC;
|
border-radius: 1px;
|
margin-right: 6px;
|
}
|
span {
|
font-size: 16px;
|
font-weight: 500;
|
color: #222222;
|
}
|
}
|
.desc_qd_info {
|
border-radius: 4px;
|
background: #f7f7f7;
|
padding: 15px;
|
margin-top: 15px;
|
.desc_qd_info_item {
|
display: flex;
|
align-items: center;
|
margin-bottom: 12px;
|
&:last-child {
|
margin-bottom: 0;
|
}
|
.black {
|
font-size: 14px !important;
|
font-weight: 400 !important;
|
color: #222222 !important;
|
}
|
span {
|
font-size: 13px;
|
font-weight: 400;
|
&:first-child {
|
color: #666666;
|
}
|
&:last-child {
|
color: #333333;
|
}
|
}
|
}
|
}
|
}
|
.desc_process {
|
margin-top: 20px;
|
.desc_process_title {
|
display: flex;
|
align-items: center;
|
padding: 0 15px;
|
span {
|
font-size: 16px;
|
font-weight: 500;
|
color: #222222;
|
}
|
.desc_process_title_x {
|
margin-right: 6px;
|
width: 4px;
|
height: 15px;
|
background: #4275FC;
|
border-radius: 2px;
|
}
|
}
|
.desc_process_content {
|
padding: 15px;
|
background: white;
|
margin-top: 15px;
|
.desc_process_content_inner{
|
position: relative;
|
.item_x {
|
position: absolute;
|
left: 19px;
|
// left: 35px;
|
height: 100%;
|
border-right: 1PX solid #E5E5E5;
|
overflow: hidden;
|
}
|
.item {
|
display: flex;
|
justify-content: space-between;
|
margin-bottom: 20px;
|
|
&:last-child {
|
margin-bottom: 0 !important;
|
}
|
.item_left {
|
display: flex;
|
align-items: center;
|
position: relative;
|
.item_left_img {
|
width: 38px;
|
height: 38px;
|
background: #4275FC;
|
border: 2px solid #FFFFFF;
|
position: relative;
|
border-radius: 50%;
|
display: flex;
|
align-content: center;
|
justify-content: center;
|
white-space: nowrap;
|
p {
|
font-size: 11px;
|
font-weight: 400;
|
color: #FFFFFF;
|
}
|
img {
|
position: absolute;
|
bottom: 0;
|
right: 0;
|
width: 14px;
|
height: 14px;
|
}
|
}
|
.item_left_text {
|
display: flex;
|
flex-direction: column;
|
span {
|
margin-left: 10px;
|
&:first-child {
|
font-size: 14px;
|
font-weight: 400;
|
color: #111111;
|
}
|
&:nth-child(2) {
|
font-size: 12px;
|
font-weight: 400;
|
color: #999999;
|
margin-top: 5px;
|
}
|
&:nth-child(3) {
|
margin-top: 5px;
|
font-size: 12px;
|
padding: 5px;
|
background-color: #f7f7f7;
|
color: #666;
|
border-radius: 4px;
|
}
|
}
|
}
|
}
|
.item_right {
|
font-size: 12px;
|
font-weight: 400;
|
color: #999999;
|
}
|
}
|
}
|
|
}
|
}
|
</style>
|