<template> 
 | 
    <div class="desc"> 
 | 
        <div class="desc_info"> 
 | 
            <div class="desc_info_title"> 
 | 
                <span>{{ info.title }}</span> 
 | 
                <span class="yellow" v-if="info.status === 0">待审核</span> 
 | 
                <span class="green" v-else-if="info.status === 1">审批通过</span> 
 | 
                <span class="red" v-else-if="info.status === 2">审批未通过</span> 
 | 
                <span class="red" v-else-if="info.status === 3">审批终止</span> 
 | 
            </div> 
 | 
            <div class="desc_info_company">{{store.state.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> 
 | 
                <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> 
 | 
                <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 }} | {{ item.materialCode }}</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" v-if="info.recordList && info.recordList.length > 0"> 
 | 
                <div class="item" v-for="(item, index) in info.recordList" :key="index"> 
 | 
                    <div class="item_left"> 
 | 
                        <div class="item_x" v-if="info.recordList.length - 1 !== index"></div> 
 | 
                        <div class="item_left_img"> 
 | 
                            <p>{{item.userModel ? item.userModel.name.substr(0, 1) : '-'}}</p> 
 | 
                            <img src="../../assets/icon/ic_pass@2x.png" alt="" v-if="item.operationResult === 'AGREE'" /> 
 | 
                            <img src="../../assets/icon/ic_notpass@2x.png" alt="" v-else-if="item.operationResult === 'REFUSE'" /> 
 | 
                            <img src="../../assets/icon/ic_shenhe@2x.png" alt="" v-else-if="item.operationResult === 'NONE'" /> 
 | 
                        </div> 
 | 
                        <div class="item_left_text"> 
 | 
                            <span>{{index === 0 ? '发起申请' : '审批人'}}</span> 
 | 
                            <span>{{item.userModel ? item.userModel.name : '-'}}</span> 
 | 
                        </div> 
 | 
                    </div> 
 | 
                    <div class="item_right">{{item.date}}</div> 
 | 
                </div> 
 | 
            </div> 
 | 
            <div class="notfound" v-else>暂无数据</div> 
 | 
        </div> 
 | 
    </div> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
    import { getsqdInfo } from '@/apis/WorkOrderAPI' 
 | 
    import { useRoute } from "vue-router" 
 | 
    import { useStore } from "vuex" 
 | 
    import { ref, onMounted } from 'vue' 
 | 
  
 | 
    const route = useRoute() 
 | 
  
 | 
    const store = useStore() 
 | 
  
 | 
    let info = ref<object>({}) 
 | 
  
 | 
    const getsqdInfos = () => { 
 | 
        getsqdInfo(route.query.id) 
 | 
            .then(res => { 
 | 
                if (res.code === 200) { 
 | 
                    info.value = res.data 
 | 
                } 
 | 
            }) 
 | 
    } 
 | 
  
 | 
    onMounted(() => { 
 | 
        getsqdInfos() 
 | 
    }) 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
.desc { 
 | 
    position: absolute; 
 | 
    top: 0; 
 | 
    width: 100%; 
 | 
    height: 100%; 
 | 
    .desc_info { 
 | 
        padding: 30px; 
 | 
        background: #ffffff; 
 | 
        .desc_info_title { 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: space-between; 
 | 
            span { 
 | 
                &:first-child { 
 | 
                    font-size: 32px; 
 | 
                    font-weight: 500; 
 | 
                    color: #333333; 
 | 
                } 
 | 
                &:last-child { 
 | 
                    font-size: 26px; 
 | 
                    font-weight: 400; 
 | 
                    color: #F5A400; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        .desc_info_company { 
 | 
            font-size: 24px; 
 | 
            font-weight: 400; 
 | 
            color: #666666; 
 | 
            margin: 24px 0; 
 | 
        } 
 | 
        .desc_info_box { 
 | 
            padding: 24px 30px; 
 | 
            background: #F7F7F7; 
 | 
            border-radius: 16px; 
 | 
            display: flex; 
 | 
            flex-direction: column; 
 | 
            .desc_info_box_item { 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                margin-bottom: 24px; 
 | 
                &:last-child { 
 | 
                    margin-bottom: 0 !important; 
 | 
                } 
 | 
                span { 
 | 
                    font-size: 26px; 
 | 
                    font-weight: 400; 
 | 
                    &:first-child { 
 | 
                        color: #666666; 
 | 
                    } 
 | 
                    &:last-child { 
 | 
                        color: #222222; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
    .desc_qd { 
 | 
        margin-top: 40px; 
 | 
        .desc_qd_not { 
 | 
            width: 100%; 
 | 
            height: 150px; 
 | 
            background: white; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: center; 
 | 
            font-size: 28px; 
 | 
            color: black; 
 | 
            margin-top: 30px; 
 | 
        } 
 | 
        .desc_qd_header { 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            padding: 0 30px; 
 | 
            .desc_qd_header_x { 
 | 
                width: 8px; 
 | 
                height: 30px; 
 | 
                background: #4275FC; 
 | 
                border-radius: 2px; 
 | 
                margin-right: 12px; 
 | 
            } 
 | 
            span { 
 | 
                font-size: 32px; 
 | 
                font-weight: 500; 
 | 
                color: #222222; 
 | 
            } 
 | 
        } 
 | 
        .desc_qd_info { 
 | 
            background: white; 
 | 
            padding: 30px; 
 | 
            margin-top: 30px; 
 | 
            .desc_qd_info_item { 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                margin-bottom: 24px; 
 | 
                &:last-child { 
 | 
                    margin-bottom: 0; 
 | 
                } 
 | 
                .black { 
 | 
                    font-size: 28px !important; 
 | 
                    font-weight: 400 !important; 
 | 
                    color: #222222 !important; 
 | 
                } 
 | 
                span { 
 | 
                    font-size: 26px; 
 | 
                    font-weight: 400; 
 | 
                    &:first-child { 
 | 
                        color: #666666; 
 | 
                    } 
 | 
                    &:last-child { 
 | 
                        color: #333333; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
    .desc_process { 
 | 
        margin-top: 40px; 
 | 
        .desc_process_title { 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            padding: 0 30px; 
 | 
            span { 
 | 
                font-size: 32px; 
 | 
                font-weight: 500; 
 | 
                color: #222222; 
 | 
            } 
 | 
            .desc_process_title_x { 
 | 
                margin-right: 12px; 
 | 
                width: 8px; 
 | 
                height: 30px; 
 | 
                background: #4275FC; 
 | 
                border-radius: 2px; 
 | 
            } 
 | 
        } 
 | 
        .notfound { 
 | 
            width: 100%; 
 | 
            height: 200px; 
 | 
            background: white; 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: center; 
 | 
            font-size: 24px; 
 | 
            color: black; 
 | 
            margin-top: 30px; 
 | 
        } 
 | 
        .desc_process_content { 
 | 
            padding: 30px; 
 | 
            background: white; 
 | 
            margin-top: 30px; 
 | 
            .item { 
 | 
                display: flex; 
 | 
                justify-content: space-between; 
 | 
                margin-bottom: 60px; 
 | 
                &:last-child { 
 | 
                    margin-bottom: 0 !important; 
 | 
                } 
 | 
                .item_left { 
 | 
                    display: flex; 
 | 
                    align-items: center; 
 | 
                    position: relative; 
 | 
                    .item_x { 
 | 
                        position: absolute; 
 | 
                        bottom: -100%; 
 | 
                        left: 38px; 
 | 
                        height: 150px; 
 | 
                        border-right: 2PX solid #E5E5E5; 
 | 
                    } 
 | 
                    .item_left_img { 
 | 
                        width: 76px; 
 | 
                        height: 76px; 
 | 
                        background: #4275FC; 
 | 
                        border: 4px solid #FFFFFF; 
 | 
                        position: relative; 
 | 
                        border-radius: 50%; 
 | 
                        display: flex; 
 | 
                        align-content: center; 
 | 
                        justify-content: center; 
 | 
                        white-space: nowrap; 
 | 
                        p { 
 | 
                            font-size: 22px; 
 | 
                            font-weight: 400; 
 | 
                            color: #FFFFFF; 
 | 
                        } 
 | 
                        img { 
 | 
                            position: absolute; 
 | 
                            bottom: 0; 
 | 
                            right: 0; 
 | 
                            width: 28px; 
 | 
                            height: 28px; 
 | 
                        } 
 | 
                    } 
 | 
                    .item_left_text { 
 | 
                        display: flex; 
 | 
                        flex-direction: column; 
 | 
                        span { 
 | 
                            margin-left: 20px; 
 | 
                            &:first-child { 
 | 
                                font-size: 28px; 
 | 
                                font-weight: 400; 
 | 
                                color: #111111; 
 | 
                            } 
 | 
                            &:last-child { 
 | 
                                font-size: 24px; 
 | 
                                font-weight: 400; 
 | 
                                color: #999999; 
 | 
                                margin-top: 10px; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                .item_right { 
 | 
                    font-size: 24px; 
 | 
                    font-weight: 400; 
 | 
                    color: #999999; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
} 
 | 
</style> 
 |