<template> 
 | 
    <view class="list"> 
 | 
        <div class="inspection-report"> 
 | 
            <!-- 基本信息模块 --> 
 | 
            <wd-row> 
 | 
                <text class="title">{{ "基本信息" }}</text> 
 | 
                <wd-col :span="24"> 
 | 
                    <wd-form-item label="日期" 
 | 
                        prop="recordDate">{{ formatDate(recordData.fixedInfo?.recordDate)}}</wd-form-item> 
 | 
                    <wd-form-item label="班次" 
 | 
                        prop="workShift">{{formatValue(recordData.fixedInfo?.workShift)}}</wd-form-item> 
 | 
                    <wd-form-item label="型号规格" prop="model">{{ formatValue(recordData.fixedInfo?.model)}}</wd-form-item> 
 | 
                    <wd-form-item label="成品线盘号" 
 | 
                        prop="systemNo">{{ formatValue(recordData.fixedInfo?.systemNo)}}</wd-form-item> 
 | 
                    <wd-form-item label="记录人" 
 | 
                        prop="createUserName">{{ formatValue(recordData.fixedInfo?.createUserName) }}</wd-form-item> 
 | 
                    <wd-form-item label="机台" 
 | 
                        prop="deviceModel">{{ formatValue(recordData.fixedInfo?.deviceModel)}}</wd-form-item> 
 | 
                    <wd-form-item label="产品类别" 
 | 
                        prop="productType">{{ formatValue(recordData.fixedInfo?.productType)}}</wd-form-item> 
 | 
                    <wd-form-item label="生产长度" 
 | 
                        prop="actuallyLength">{{ formatValue(recordData.fixedInfo?.actuallyLength, "m")}}</wd-form-item> 
 | 
                    <wd-form-item label="张力设置" 
 | 
                        prop="twistTension">{{ formatValue(recordData.fixedInfo?.twistTension, "N/m") }}</wd-form-item> 
 | 
                    <wd-form-item label="绞制外径" 
 | 
                        prop="twistDiameter">{{ formatValue(recordData.inspectionResult?.twistDiameter, "mm") }}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 自检记录详情模块 --> 
 | 
            <wd-row> 
 | 
                <text class="title">{{ "自检记录详情" }}</text> 
 | 
                <wd-col :span="24"> 
 | 
                    <wd-form-item label="记录位置" 
 | 
                        prop="recordPosition">{{ recordData.structureInfo?.recordPosition || "-" }}</wd-form-item> 
 | 
                    <wd-form-item label="记录人" 
 | 
                        prop="createUserName">{{ recordData.structureInfo?.createUserName || "-"}}</wd-form-item> 
 | 
                    <wd-form-item label="状态" prop="status"> 
 | 
                        <wd-tag custom-class="space" 
 | 
                            :type="getStatusType(recordData.structureInfo?.status)">{{ getStatusText(recordData.structureInfo?.status) }}</wd-tag> 
 | 
                    </wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 结构检查模块 --> 
 | 
            <wd-row> 
 | 
                <text class="title">{{ "结构检查" }}</text> 
 | 
                <wd-col :span="24"> 
 | 
                    <wd-form-item label="成品结构" 
 | 
                        prop="inspectStructure">{{recordData.structureInfo.structureRecordResult.inspectStructure.structureFormula || "-"}}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <wd-row v-if="recordData.structureInfo.structureRecordResult.inspectStructure.structureItems"> 
 | 
                <text class="title">{{ "结构标准值和实测" }}</text> 
 | 
                <wd-col :span="24" 
 | 
                    v-for="(item, index) in recordData.structureInfo.structureRecordResult.inspectStructure.structureItems" 
 | 
                    :key="index" style="padding-bottom: 10px;"> 
 | 
                    <wd-form-item :label="formatValue(item.structureName)" label-width="400rpx" 
 | 
                        style="color: red;"></wd-form-item> 
 | 
                    <wd-form-item label="标准值" prop="structureValue">{{formatValue(item.structureValue)}}</wd-form-item> 
 | 
                    <wd-form-item label="实测根数" 
 | 
                        prop="actualValue1">{{formatValue(item.actualValue1, "根")}}</wd-form-item> 
 | 
                    <wd-form-item label="实测直径" 
 | 
                        prop="actualValue2">{{formatValue(item.actualValue2, "mm")}}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 绞线工艺质量控制模块 --> 
 | 
            <wd-row v-if="recordData.structureInfo?.structureRecordResult?.inspectTwist"> 
 | 
                <text class="title">{{ "绞线工艺质量控制" }}</text> 
 | 
                <wd-col :span="24" v-for="(item, index) in recordData.structureInfo.structureRecordResult.inspectTwist" 
 | 
                    :key="index" style="padding-bottom: 10px;"> 
 | 
                    <wd-form-item :label="formatValue(item.twistName)" label-width="400rpx" 
 | 
                        style="color: red;"></wd-form-item> 
 | 
                    <wd-form-item label="绞向" prop="direction">{{ formatValue(item.direction) }}</wd-form-item> 
 | 
                    <wd-form-item label="节距" prop="pitch">{{ formatValue(item.pitch, "mm") }}</wd-form-item> 
 | 
                    <wd-form-item label="节径比" prop="pitchRatio">{{ formatValue(item.pitchRatio) }}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 外观和结论模块 --> 
 | 
            <wd-row> 
 | 
                <text class="title">{{ "外观和结论" }}</text> 
 | 
                <wd-col :span="24"> 
 | 
                    <wd-form-item label="结论" 
 | 
                        prop="conclusion">{{formatValue(recordData.structureInfo.structureRecordResult.conclusion)}}</wd-form-item> 
 | 
                    <wd-form-item label="产品外观" 
 | 
                        prop="productAppearance">{{formatProductAppearance(recordData.structureInfo.structureRecordResult.productAppearance)}}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 巡检结果模块 --> 
 | 
            <wd-row> 
 | 
                <text class="title">{{ "巡检结果" }}</text> 
 | 
                <wd-col :span="24"> 
 | 
                    <wd-form-item label="样品是否齐全" 
 | 
                        prop="sampleComplete">{{formatValue(recordData.inspectionResult?.sampleComplete)}}</wd-form-item> 
 | 
                </wd-col> 
 | 
            </wd-row> 
 | 
            <!-- 附件模块 --> 
 | 
            <wd-row class="attachment-section"> 
 | 
                <text class="title">{{ "附件" }}</text> 
 | 
                <!-- 用 flex 容器包裹图片列,实现自动换行 --> 
 | 
                <view class="attachment-grid"> 
 | 
                    <wd-col v-for="(file, index) in recordData.structureInfo.files" :key="index" 
 | 
                        class="attachment-item"> 
 | 
                        <wd-img :width="80" :height="80" :src="file.url" @click="previewImage(file.url)"> 
 | 
                            <template #error> 
 | 
                                <view class="error-wrap">加载失败</view> 
 | 
                            </template> 
 | 
                            <template #loading> 
 | 
                                <view class="loading-wrap"> 
 | 
                                    <wd-loading /> 
 | 
                                </view> 
 | 
                            </template> 
 | 
                        </wd-img> 
 | 
                    </wd-col> 
 | 
                </view> 
 | 
            </wd-row> 
 | 
        </div> 
 | 
        <wd-popup v-model="show" custom-style="border-radius:32rpx;" @close="handleClose"> 
 | 
            <div class="image-preview"> 
 | 
                <img :src="previewImageUrl" alt="预览图片" style="width: 100%; height: auto" /> 
 | 
            </div> 
 | 
        </wd-popup> 
 | 
    </view> 
 | 
</template> 
 | 
  
 | 
<script setup lang="ts"> 
 | 
    import { onLoad } from "@dcloudio/uni-app"; 
 | 
    import RoutingInspectionApi from "@/api/routingInspection/routingInspection"; 
 | 
  
 | 
    const paramsId = ref(""); 
 | 
    const recordData = ref<any>({}); 
 | 
    const show = ref(false); 
 | 
const previewImageUrl = ref(""); 
 | 
   
 | 
    // 状态类型映射 
 | 
    const getStatusType = (status : number) => { 
 | 
        switch (status) { 
 | 
            case 0: 
 | 
                return "warning"; // 待巡检 
 | 
            case 1: 
 | 
                return "danger"; // 已驳回 
 | 
            case 2: 
 | 
                return "info"; // 待审核 
 | 
            case 3: 
 | 
                return "success"; // 通过 
 | 
            default: 
 | 
                return "info"; 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    // 状态文本映射 
 | 
    const getStatusText = (status : number) => { 
 | 
        switch (status) { 
 | 
            case 0: 
 | 
                return "待巡检"; 
 | 
            case 1: 
 | 
                return "已驳回"; 
 | 
            case 2: 
 | 
                return "待审核"; 
 | 
            case 3: 
 | 
                return "通过"; 
 | 
            default: 
 | 
                return "未知"; 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    // 获取外观文本 
 | 
    const getAppearanceText = (appearance : string[]) => { 
 | 
        if (!appearance || appearance.length === 0) return "-"; 
 | 
        return appearance.join("、"); 
 | 
    }; 
 | 
  
 | 
    // 格式化产品外观显示 
 | 
    const formatProductAppearance = (productAppearance : string[]) => { 
 | 
        if (!productAppearance || productAppearance.length === 0) return "-"; 
 | 
        return productAppearance.join("、"); 
 | 
    }; 
 | 
  
 | 
    // 格式化数值显示 
 | 
    const formatValue = (value : any, unit ?: string) => { 
 | 
        if (value === null || value === undefined || value === "") return "-"; 
 | 
        return unit ? `${value}${unit}` : value; 
 | 
    }; 
 | 
  
 | 
    // 格式化日期显示 
 | 
    const formatDate = (date : string) => { 
 | 
        if (!date) return "-"; 
 | 
        return new Date(date).toLocaleDateString("zh-CN", { 
 | 
            year: "numeric", 
 | 
            month: "2-digit", 
 | 
            day: "2-digit" 
 | 
        }); 
 | 
    }; 
 | 
  
 | 
    // 格式化结构值显示 
 | 
    const formatStructureValue = (value1 : any, value2 : any) => { 
 | 
        const val1 = value1 || "-"; 
 | 
        const val2 = value2 ? `${value2}mm` : "-"; 
 | 
        return { count: val1, diameter: val2 }; 
 | 
    }; 
 | 
  
 | 
    const getDetailData = async (id : string, deviceType : string) => { 
 | 
        try { 
 | 
            let response; 
 | 
                // 获取绞线单个结构 
 | 
                response = await RoutingInspectionApi.getStrandedInspectionStructureInfoById({ 
 | 
                    id: id, 
 | 
                }); 
 | 
                recordData.value = response.data; 
 | 
                console.log(recordData.value); 
 | 
        } catch (error) { 
 | 
            console.error("获取详情失败:", error); 
 | 
        } 
 | 
    }; 
 | 
  
 | 
    onLoad((options : any) => { 
 | 
        paramsId.value = options.id; 
 | 
        getDetailData(options.id, options.deviceType); 
 | 
    }); 
 | 
  
 | 
    const previewImage = (url : string) => { 
 | 
        previewImageUrl.value = url; 
 | 
        show.value = true; 
 | 
    }; 
 | 
  
 | 
    const handleClose = () => { 
 | 
        show.value = false; 
 | 
    }; 
 | 
</script> 
 | 
<style lang="scss" scoped> 
 | 
    .list { 
 | 
        height: calc(100vh - 80px); 
 | 
        padding: 12px; 
 | 
        background: #f3f9f8; 
 | 
  
 | 
        :deep() { 
 | 
            .round { 
 | 
                border-radius: 4px; 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
    .title { 
 | 
        position: relative; 
 | 
        margin-left: 10px; 
 | 
        font-size: 16px; 
 | 
        font-weight: 500; 
 | 
        color: #0d867f; 
 | 
    } 
 | 
  
 | 
    .title::after { 
 | 
        position: absolute; 
 | 
        content: ""; 
 | 
        top: 4px; 
 | 
        left: -10px; 
 | 
        width: 4px; 
 | 
        height: 16px; 
 | 
        background: #0d867f; 
 | 
        border-radius: 2px; 
 | 
    } 
 | 
  
 | 
    .attachment-section { 
 | 
        width: 100%; 
 | 
    } 
 | 
  
 | 
    .attachment-grid { 
 | 
        display: flex; 
 | 
        flex-wrap: wrap; 
 | 
        /* 超出自动换行 */ 
 | 
        gap: 10px; 
 | 
        /* 图片之间的间距 */ 
 | 
        padding: 10px 0; 
 | 
    } 
 | 
  
 | 
    .attachment-item { 
 | 
        width: calc(25% - 10px); 
 | 
        /* 每行4张,间距由gap控制,需计算宽度 */ 
 | 
        box-sizing: border-box; 
 | 
    } 
 | 
  
 | 
    /* 适配小屏幕,可调整每行数量(如每行2张) */ 
 | 
    @media (max-width: 768px) { 
 | 
        .attachment-item { 
 | 
            width: calc(25% - 10px); 
 | 
        } 
 | 
    } 
 | 
</style> 
 |