<template> 
 | 
    <div class="content_list_item"> 
 | 
        <van-skeleton :loading="loading" title :row="8" :row-width="['100%', '100%', '100%', '100%', '100%', '100%']" /> 
 | 
        <div class="content_list_item_top" v-show="!loading"> 
 | 
            <div class="content_list_item_top_left"> 
 | 
                <span v-if="props.info.mmodel">{{props.info.mmodel.name}} | {{props.info.procedureName}}</span> 
 | 
                <div class="type backgreen" v-if="props.info.type === 0">正常</div> 
 | 
                <div class="type backyellow" v-if="props.info.type === 2">返工返修</div> 
 | 
            </div> 
 | 
            <div class="content_list_item_top_right"> 
 | 
                <span class="yellow" v-if="props.info.status === 0">已创建</span> 
 | 
                <span class="green" v-if="props.info.status === 1">已备料</span> 
 | 
                <span v-if="props.info.status === 2">已完工检</span> 
 | 
                <span class="purple" v-if="props.info.status === 3">已检验</span> 
 | 
                <span v-if="props.info.status === 4">已报工</span> 
 | 
                <span v-if="props.info.status === 5">已入库</span> 
 | 
                <span v-if="props.info.status === 6">已取消</span> 
 | 
            </div> 
 | 
        </div> 
 | 
        <div class="content_list_item_code" v-show="!loading">工单编号:{{props.info.code}}</div> 
 | 
  
 | 
        <div class="content_list_item_content" v-show="!loading"> 
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">物料编码:</div> 
 | 
                <div class="content_list_item_content_item_nr" v-if="props.info.mmodel">{{props.info.mmodel.code}}</div> 
 | 
            </div> 
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">计划开工:</div> 
 | 
                <div class="content_list_item_content_item_nr">{{props.info.planDate}}</div> 
 | 
            </div> 
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">生产批次:</div> 
 | 
                <div class="content_list_item_content_item_nr">{{props.info.batch}}</div> 
 | 
            </div> 
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">计划数量:</div> 
 | 
                <div class="content_list_item_content_item_nr" v-if="props.info.umodel">{{props.info.planNum}}{{props.info.umodel.name}}</div> 
 | 
            </div> 
 | 
  
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">生产设备:</div> 
 | 
                <div class="content_list_item_content_item_nr" v-if="props.info.pgmodel">{{props.info.pgmodel.code}} - {{props.info.pgmodel.name}}</div> 
 | 
<!--                <div class="content_list_item_content_item_nr" v-if="props.info.pgmodel">{{props.info.pgmodel.code}}</div>--> 
 | 
            </div> 
 | 
            <div class="content_list_item_content_item"> 
 | 
                <div class="content_list_item_content_item_label">生产人员:</div> 
 | 
                <div class="content_list_item_content_item_nrs"> 
 | 
                    <template v-for="(item, index) in props.info.proUserList" :key="index">{{item.proUserDepartName}}<template v-if="index !== props.info.proUserList.length - 1"> / </template></template> 
 | 
                </div> 
 | 
            </div> 
 | 
        </div> 
 | 
        <div class="content_list_item_yq" @click="jumpGY" v-show="!loading && tips"> 
 | 
            <div class="content_list_item_yq_left"> 
 | 
                <span>工艺要求:</span> 
 | 
                <span>{{tips}}</span> 
 | 
            </div> 
 | 
            <van-icon name="arrow" color="#666666" size="16" /> 
 | 
        </div> 
 | 
    </div> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
    import { defineProps, ref, watch } from 'vue' 
 | 
    import { getListByWorkOrderId } from '@/apis/WorkOrderAPI' 
 | 
    import { useRouter } from "vue-router" 
 | 
  
 | 
    let loading = ref<boolean>(true) 
 | 
    const router = useRouter() 
 | 
    let tips = ref<string>('')  // 工艺要求 
 | 
  
 | 
    // 详情数据 
 | 
    const props = defineProps({ 
 | 
        info: { 
 | 
            type: Object, 
 | 
            required: true 
 | 
        } 
 | 
    }) 
 | 
  
 | 
    // 根据工单id查工艺卡 
 | 
    const getListByWorkOrderIdInfo = () => { 
 | 
        getListByWorkOrderId({ workOrderId: props.info.id }) 
 | 
            .then(res => { 
 | 
                if (res.code === 200) { 
 | 
                    tips.value = res.data.tips 
 | 
                } 
 | 
            }) 
 | 
            .finally(() => { 
 | 
                loading.value = false 
 | 
            }) 
 | 
    } 
 | 
  
 | 
    // 跳转查工艺 
 | 
    const jumpGY = () => { 
 | 
        router.push({ name: 'checkTheProcess', query: { id: props.info.id } }) 
 | 
    } 
 | 
  
 | 
    watch(() => props.info, async (news) => { 
 | 
        if (JSON.stringify(news) !== "{}") { 
 | 
            await getListByWorkOrderIdInfo() 
 | 
        } 
 | 
    }, { immediate: true }) 
 | 
</script> 
 | 
  
 | 
<style lang="scss" scoped> 
 | 
    .content_list_item { 
 | 
        padding: 30px; 
 | 
        display: flex; 
 | 
        flex-direction: column; 
 | 
        background: #ffffff; 
 | 
        .van-skeleton { 
 | 
            padding: 0 !important; 
 | 
        } 
 | 
        .content_list_item_top { 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: space-between; 
 | 
            .content_list_item_top_left { 
 | 
                width: 85%; 
 | 
                display: flex; 
 | 
                align-items: center; 
 | 
                overflow: hidden; 
 | 
                text-overflow: ellipsis; 
 | 
                white-space: nowrap; 
 | 
                .type { 
 | 
                    padding: 5px 10px; 
 | 
                    border-radius: 10px; 
 | 
                    color: white; 
 | 
                    margin-left: 10px; 
 | 
                } 
 | 
                span { 
 | 
                    font-size: 32px; 
 | 
                    font-weight: 500; 
 | 
                    color: #333333; 
 | 
                    max-width: 100%; 
 | 
                    overflow: hidden; 
 | 
                    white-space: nowrap; 
 | 
                    text-overflow: ellipsis; 
 | 
                    -o-text-overflow: ellipsis; 
 | 
                } 
 | 
            } 
 | 
            .content_list_item_top_right { 
 | 
                font-size: 26px; 
 | 
                font-weight: 400; 
 | 
                color: #666666; 
 | 
                flex-shrink: 0; 
 | 
                .purple { 
 | 
                    color: $nav-color !important; 
 | 
                } 
 | 
                .green { 
 | 
                    color: $nav-stateColor6 !important; 
 | 
                } 
 | 
                .yellow { 
 | 
                    color: $nav-stateColor1 !important; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        .content_list_item_code { 
 | 
            font-size: 24px; 
 | 
            font-weight: 400; 
 | 
            color: #666666; 
 | 
            margin: 24px 0; 
 | 
            span { 
 | 
                font-size: 24px; 
 | 
                font-weight: 400; 
 | 
                color: #666666; 
 | 
                margin: 24px 0; 
 | 
            } 
 | 
        } 
 | 
        .content_list_item_content { 
 | 
            padding: 24px 30px; 
 | 
            background: #F7F7F7; 
 | 
            border-radius: 16px; 
 | 
            display: flex; 
 | 
            flex-wrap: wrap; 
 | 
            justify-content: space-between; 
 | 
            .content_list_item_content_item { 
 | 
                width: 100%; 
 | 
                display: flex; 
 | 
                margin-top: 24px; 
 | 
                &:nth-child(1) { 
 | 
                    margin-top: 0 !important; 
 | 
                } 
 | 
                .content_list_item_content_item_label { 
 | 
                    font-size: 24px; 
 | 
                    font-weight: 400; 
 | 
                    color: #666666; 
 | 
                    flex-shrink: 0; 
 | 
                } 
 | 
                .content_list_item_content_item_nrs { 
 | 
                    flex: 1; 
 | 
                    font-size: 24px; 
 | 
                    font-weight: 400; 
 | 
                    color: #222222; 
 | 
                    margin-right: 10px; 
 | 
                    display: flex; 
 | 
                    word-break: break-word; 
 | 
                } 
 | 
                .content_list_item_content_item_nr { 
 | 
                    flex: 1; 
 | 
                    overflow: hidden; 
 | 
                    white-space: nowrap; 
 | 
                    text-overflow: ellipsis; 
 | 
                    -o-text-overflow:ellipsis; 
 | 
                    word-wrap: break-word; 
 | 
                    font-size: 24px; 
 | 
                    font-weight: 400; 
 | 
                    color: #222222; 
 | 
                    margin-right: 10px; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        .content_list_item_yq { 
 | 
            display: flex; 
 | 
            align-items: center; 
 | 
            justify-content: space-between; 
 | 
            margin-top: 30px; 
 | 
            .content_list_item_yq_left { 
 | 
                display: flex; 
 | 
                span { 
 | 
                    font-size: 26px; 
 | 
                    font-weight: 400; 
 | 
                    &:nth-child(1) { 
 | 
                        color: #666666; 
 | 
                        flex-shrink: 0; 
 | 
                    } 
 | 
                    &:nth-child(2) { 
 | 
                        color: #222222; 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
</style> 
 |