|  |  | 
 |  |  | <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> | 
 |  |  |   <view class="fixed-header"> | 
 |  |  |     <view class="header-container"> | 
 |  |  |       <wd-button | 
 |  |  |         icon="file-add" | 
 |  |  |         :round="false" | 
 |  |  |         size="small" | 
 |  |  |         custom-class="add_btn" | 
 |  |  |         @click="editList" | 
 |  |  |         v-if="!isEdit" | 
 |  |  |       > | 
 |  |  |         编辑 | 
 |  |  |       </wd-button> | 
 |  |  |       <wd-button | 
 |  |  |         icon="close" | 
 |  |  |         type="info" | 
 |  |  |         :round="false" | 
 |  |  |         size="small" | 
 |  |  |         custom-class="add_btn" | 
 |  |  |         @click="close" | 
 |  |  |         v-if="isEdit" | 
 |  |  |       > | 
 |  |  |         取消 | 
 |  |  |       </wd-button> | 
 |  |  |       <wd-button | 
 |  |  |         icon="check" | 
 |  |  |         type="success" | 
 |  |  |         :round="false" | 
 |  |  |         size="small" | 
 |  |  |         custom-class="add_btn" | 
 |  |  |         @click="saveList" | 
 |  |  |         v-if="isEdit" | 
 |  |  |       > | 
 |  |  |         保存 | 
 |  |  |       </wd-button> | 
 |  |  |       <view class="placeholder"></view> | 
 |  |  |       <view class="scan-wrapper" @click="openScan"> | 
 |  |  |         <wd-icon name="scan" size="24px" color="#0D867F"></wd-icon> | 
 |  |  |       </view> | 
 |  |  |     </view> | 
 |  |  |   </view> | 
 |  |  |   <view class="list"> | 
 |  |  |     <!-- 基本信息模块 --> | 
 |  |  |     <wd-row> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "基本信息" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "自检记录详情" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "结构检查" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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"> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "结构标准值和实测" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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"> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "绞线工艺质量控制" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "外观和结论" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "巡检结果" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <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"> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "附件" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <!-- 用 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> | 
 |  |  |     <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"; | 
 |  |  | import { onLoad } from "@dcloudio/uni-app"; | 
 |  |  | import RoutingInspectionApi from "@/api/routingInspection/routingInspection"; | 
 |  |  |  | 
 |  |  |    const paramsId = ref(""); | 
 |  |  |    const recordData = ref<any>({}); | 
 |  |  |    const show = ref(false); | 
 |  |  | 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 isEdit = ref(false); | 
 |  |  |  | 
 |  |  |    // 状态文本映射 | 
 |  |  |    const getStatusText = (status : number) => { | 
 |  |  |       switch (status) { | 
 |  |  |          case 0: | 
 |  |  |             return "待巡检"; | 
 |  |  |          case 1: | 
 |  |  |             return "已驳回"; | 
 |  |  |          case 2: | 
 |  |  |             return "待审核"; | 
 |  |  |          case 3: | 
 |  |  |             return "通过"; | 
 |  |  |          default: | 
 |  |  |             return "未知"; | 
 |  |  |       } | 
 |  |  |    }; | 
 |  |  | // 状态类型映射 | 
 |  |  | 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 getAppearanceText = (appearance : string[]) => { | 
 |  |  |       if (!appearance || appearance.length === 0) return "-"; | 
 |  |  |       return appearance.join("、"); | 
 |  |  |    }; | 
 |  |  | // 状态文本映射 | 
 |  |  | const getStatusText = (status: number) => { | 
 |  |  |   switch (status) { | 
 |  |  |     case 0: | 
 |  |  |       return "待巡检"; | 
 |  |  |     case 1: | 
 |  |  |       return "已驳回"; | 
 |  |  |     case 2: | 
 |  |  |       return "待审核"; | 
 |  |  |     case 3: | 
 |  |  |       return "通过"; | 
 |  |  |     default: | 
 |  |  |       return "未知"; | 
 |  |  |   } | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    // 格式化产品外观显示 | 
 |  |  |    const formatProductAppearance = (productAppearance : string[]) => { | 
 |  |  |       if (!productAppearance || productAppearance.length === 0) return "-"; | 
 |  |  |       return productAppearance.join("、"); | 
 |  |  |    }; | 
 |  |  | // 获取外观文本 | 
 |  |  | const getAppearanceText = (appearance: string[]) => { | 
 |  |  |   if (!appearance || appearance.length === 0) return "-"; | 
 |  |  |   return appearance.join("、"); | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    // 格式化数值显示 | 
 |  |  |    const formatValue = (value : any, unit ?: string) => { | 
 |  |  |       if (value === null || value === undefined || value === "") return "-"; | 
 |  |  |       return unit ? `${value}${unit}` : value; | 
 |  |  |    }; | 
 |  |  | // 格式化产品外观显示 | 
 |  |  | const formatProductAppearance = (productAppearance: string[]) => { | 
 |  |  |   if (!productAppearance || productAppearance.length === 0) return "-"; | 
 |  |  |   return productAppearance.join("、"); | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    // 格式化日期显示 | 
 |  |  |    const formatDate = (date : string) => { | 
 |  |  |       if (!date) return "-"; | 
 |  |  |       return new Date(date).toLocaleDateString("zh-CN", { | 
 |  |  |          year: "numeric", | 
 |  |  |          month: "2-digit", | 
 |  |  |          day: "2-digit" | 
 |  |  |       }); | 
 |  |  |    }; | 
 |  |  | // 格式化数值显示 | 
 |  |  | const formatValue = (value: any, unit?: string) => { | 
 |  |  |   if (value === null || value === undefined || value === "") return "-"; | 
 |  |  |   return unit ? `${value}${unit}` : value; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    // 格式化结构值显示 | 
 |  |  |    const formatStructureValue = (value1 : any, value2 : any) => { | 
 |  |  |       const val1 = value1 || "-"; | 
 |  |  |       const val2 = value2 ? `${value2}mm` : "-"; | 
 |  |  |       return { count: val1, diameter: val2 }; | 
 |  |  |    }; | 
 |  |  | // 格式化日期显示 | 
 |  |  | const formatDate = (date: string) => { | 
 |  |  |   if (!date) return "-"; | 
 |  |  |   return new Date(date).toLocaleDateString("zh-CN", { | 
 |  |  |     year: "numeric", | 
 |  |  |     month: "2-digit", | 
 |  |  |     day: "2-digit", | 
 |  |  |   }); | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    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); | 
 |  |  |       } | 
 |  |  |    }; | 
 |  |  | // 格式化结构值显示 | 
 |  |  | const formatStructureValue = (value1: any, value2: any) => { | 
 |  |  |   const val1 = value1 || "-"; | 
 |  |  |   const val2 = value2 ? `${value2}mm` : "-"; | 
 |  |  |   return { count: val1, diameter: val2 }; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    onLoad((options : any) => { | 
 |  |  |       paramsId.value = options.id; | 
 |  |  |       getDetailData(options.id, options.deviceType); | 
 |  |  |    }); | 
 |  |  | 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); | 
 |  |  |   } | 
 |  |  | }; | 
 |  |  |  | 
 |  |  |    const previewImage = (url : string) => { | 
 |  |  |       previewImageUrl.value = url; | 
 |  |  |       show.value = true; | 
 |  |  |    }; | 
 |  |  | onLoad((options: any) => { | 
 |  |  |   paramsId.value = options.id; | 
 |  |  |   getDetailData(options.id, options.deviceType); | 
 |  |  | }); | 
 |  |  |  | 
 |  |  |    const handleClose = () => { | 
 |  |  |       show.value = false; | 
 |  |  |    }; | 
 |  |  | const previewImage = (url: string) => { | 
 |  |  |   previewImageUrl.value = url; | 
 |  |  |   show.value = true; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | const handleClose = () => { | 
 |  |  |   show.value = false; | 
 |  |  | }; | 
 |  |  |  | 
 |  |  | // 编辑列表 | 
 |  |  | const editList = () => {}; | 
 |  |  |  | 
 |  |  | // 关闭 | 
 |  |  | const close = () => {}; | 
 |  |  |  | 
 |  |  | // 保存列表 | 
 |  |  | const saveList = async () => { | 
 |  |  |   // try { | 
 |  |  |   //   let response; | 
 |  |  |   //   // 保存列表 | 
 |  |  |   //   response = await RoutingInspectionApi.saveStrandedInspectionStructureInfo({ | 
 |  |  |   //     id: paramsId.value, | 
 |  |  |   //     structureInfo: recordData.value.structureInfo, | 
 |  |  |   //   }); | 
 |  |  |   //   if (response.code === 200) { | 
 |  |  |   //     uni.showToast({ | 
 |  |  |   //       title: "保存成功", | 
 |  |  |   //       icon: "success", | 
 |  |  |   //     }); | 
 |  |  |   //     // 刷新详情数据 | 
 |  |  |   //     getDetailData(paramsId.value, recordData.value.deviceType); | 
 |  |  |   //   } else { | 
 |  |  |   //     uni.showToast({ | 
 |  |  |   //       title: response.msg || "保存失败", | 
 |  |  |   //       icon: "error", | 
 |  |  |   //     }); | 
 |  |  |   //   } | 
 |  |  |   // } catch (error) { | 
 |  |  |   //   console.error("保存列表失败:", error); | 
 |  |  |   //   uni.showToast({ | 
 |  |  |   //     title: "保存失败", | 
 |  |  |   //     icon: "error", | 
 |  |  |   //   }); | 
 |  |  |   // } | 
 |  |  | }; | 
 |  |  | </script> | 
 |  |  | <style lang="scss" scoped> | 
 |  |  |    .list { | 
 |  |  |       height: calc(100vh - 80px); | 
 |  |  |       padding: 12px; | 
 |  |  |       background: #f3f9f8; | 
 |  |  | .placeholder { | 
 |  |  |   flex: 1; | 
 |  |  | } | 
 |  |  | .fixed-header { | 
 |  |  |   position: fixed; | 
 |  |  |   top: 44; | 
 |  |  |   left: 0; | 
 |  |  |   right: 0; | 
 |  |  |   background: #f3f9f8; | 
 |  |  |   z-index: 999; | 
 |  |  |   padding: 12px; | 
 |  |  |   box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | 
 |  |  |   min-height: 60px; | 
 |  |  |   box-sizing: border-box; | 
 |  |  |   overflow: visible; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |       :deep() { | 
 |  |  |          .round { | 
 |  |  |             border-radius: 4px; | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | .header-container { | 
 |  |  |   display: flex; | 
 |  |  |   align-items: center; | 
 |  |  |   width: 100%; | 
 |  |  |   gap: 10px; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |    .title { | 
 |  |  |       position: relative; | 
 |  |  |       margin-left: 10px; | 
 |  |  |       font-size: 16px; | 
 |  |  |       font-weight: 500; | 
 |  |  |       color: #0d867f; | 
 |  |  |    } | 
 |  |  | .search-wrapper { | 
 |  |  |   flex: 1; | 
 |  |  |   min-width: 0; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |    .title::after { | 
 |  |  |       position: absolute; | 
 |  |  |       content: ""; | 
 |  |  |       top: 4px; | 
 |  |  |       left: -10px; | 
 |  |  |       width: 4px; | 
 |  |  |       height: 16px; | 
 |  |  |       background: #0d867f; | 
 |  |  |       border-radius: 2px; | 
 |  |  |    } | 
 |  |  | :deep(.search-wrapper .wd-search) { | 
 |  |  |   width: 100% !important; | 
 |  |  |   min-width: 0 !important; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |    .attachment-section { | 
 |  |  |       width: 100%; | 
 |  |  |    } | 
 |  |  | .scan-wrapper { | 
 |  |  |   width: 38px; | 
 |  |  |   height: 38px; | 
 |  |  |   display: flex; | 
 |  |  |   align-items: center; | 
 |  |  |   justify-content: center; | 
 |  |  |   padding: 6px; | 
 |  |  |   flex-shrink: 0; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |    .attachment-grid { | 
 |  |  |       display: flex; | 
 |  |  |       flex-wrap: wrap; | 
 |  |  |       /* 超出自动换行 */ | 
 |  |  |       gap: 10px; | 
 |  |  |       /* 图片之间的间距 */ | 
 |  |  |       padding: 10px 0; | 
 |  |  |    } | 
 |  |  | .list { | 
 |  |  |   padding: 12px; | 
 |  |  |  | 
 |  |  |    .attachment-item { | 
 |  |  |       width: calc(25% - 10px); | 
 |  |  |       /* 每行4张,间距由gap控制,需计算宽度 */ | 
 |  |  |       box-sizing: border-box; | 
 |  |  |    } | 
 |  |  |   padding-top: 84px; | 
 |  |  |   background: #f3f9f8; | 
 |  |  |   min-height: 100vh; | 
 |  |  |   box-sizing: border-box; | 
 |  |  | } | 
 |  |  |  | 
 |  |  |    /* 适配小屏幕,可调整每行数量(如每行2张) */ | 
 |  |  |    @media (max-width: 768px) { | 
 |  |  |       .attachment-item { | 
 |  |  |          width: calc(25% - 10px); | 
 |  |  |       } | 
 |  |  |    } | 
 |  |  | .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); | 
 |  |  |   box-sizing: border-box; | 
 |  |  | } | 
 |  |  |  | 
 |  |  | @media (max-width: 768px) { | 
 |  |  |   .attachment-item { | 
 |  |  |     width: calc(25% - 10px); | 
 |  |  |   } | 
 |  |  | } | 
 |  |  | </style> |