|  |  | 
 |  |  | { | 
 |  |  |     "name" : "线缆上报", | 
 |  |  |     "appid" : "__UNI__F64E0A4", | 
 |  |  |     "description" : "", | 
 |  |  |     "versionName" : "1.0.12", | 
 |  |  |     "versionCode" : "100", | 
 |  |  |     "transformPx" : false, | 
 |  |  |     /* 5+App特有相关 */ | 
 |  |  |     "app-plus" : { | 
 |  |  |         "usingComponents" : true, | 
 |  |  |         "nvueStyleCompiler" : "uni-app", | 
 |  |  |         "compilerVersion" : 3, | 
 |  |  |         "compatible" : { | 
 |  |  |             "ignoreVersion" : true // true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持 | 
 |  |  |   "name": "线缆上报", | 
 |  |  |   "appid": "__UNI__F64E0A4", | 
 |  |  |   "description": "", | 
 |  |  |   "versionName": "1.0.15", | 
 |  |  |   "versionCode": "100", | 
 |  |  |   "transformPx": false, | 
 |  |  |   /* 5+App特有相关 */ | 
 |  |  |   "app-plus": { | 
 |  |  |     "usingComponents": true, | 
 |  |  |     "nvueStyleCompiler": "uni-app", | 
 |  |  |     "compilerVersion": 3, | 
 |  |  |     "compatible": { | 
 |  |  |       "ignoreVersion": true // true表示忽略版本检查提示框,HBuilderX1.9.0及以上版本支持 | 
 |  |  |     }, | 
 |  |  |     "splashscreen": { | 
 |  |  |       "alwaysShowBeforeRender": true, | 
 |  |  |       "waiting": true, | 
 |  |  |       "autoclose": true, | 
 |  |  |       "delay": 0 | 
 |  |  |     }, | 
 |  |  |     /* 模块配置 */ | 
 |  |  |     "modules": {}, | 
 |  |  |     /* 应用发布信息 */ | 
 |  |  |     "distribute": { | 
 |  |  |       /* android打包配置 */ | 
 |  |  |       "android": { | 
 |  |  |         "permissions": [ | 
 |  |  |           "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | 
 |  |  |           "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.CAMERA\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | 
 |  |  |           "<uses-feature android:name=\"android.hardware.camera\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", | 
 |  |  |           "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>" | 
 |  |  |         ] | 
 |  |  |       }, | 
 |  |  |       /* ios打包配置 */ | 
 |  |  |       "ios": { | 
 |  |  |         "dSYMs": false | 
 |  |  |       }, | 
 |  |  |       /* SDK配置 */ | 
 |  |  |       "sdkConfigs": {}, | 
 |  |  |       "icons": { | 
 |  |  |         "android": { | 
 |  |  |           "hdpi": "unpackage/res/icons/72x72.png", | 
 |  |  |           "xhdpi": "unpackage/res/icons/96x96.png", | 
 |  |  |           "xxhdpi": "unpackage/res/icons/144x144.png", | 
 |  |  |           "xxxhdpi": "unpackage/res/icons/192x192.png" | 
 |  |  |         }, | 
 |  |  |         "splashscreen" : { | 
 |  |  |             "alwaysShowBeforeRender" : true, | 
 |  |  |             "waiting" : true, | 
 |  |  |             "autoclose" : true, | 
 |  |  |             "delay" : 0 | 
 |  |  |         }, | 
 |  |  |         /* 模块配置 */ | 
 |  |  |         "modules" : {}, | 
 |  |  |         /* 应用发布信息 */ | 
 |  |  |         "distribute" : { | 
 |  |  |             /* android打包配置 */ | 
 |  |  |             "android" : { | 
 |  |  |                 "permissions" : [ | 
 |  |  |                     "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.VIBRATE\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", | 
 |  |  |                     "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.CAMERA\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", | 
 |  |  |                     "<uses-feature android:name=\"android.hardware.camera\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>", | 
 |  |  |                     "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>" | 
 |  |  |                 ] | 
 |  |  |             }, | 
 |  |  |             /* ios打包配置 */ | 
 |  |  |             "ios" : { | 
 |  |  |                 "dSYMs" : false | 
 |  |  |             }, | 
 |  |  |             /* SDK配置 */ | 
 |  |  |             "sdkConfigs" : {}, | 
 |  |  |             "icons" : { | 
 |  |  |                 "android" : { | 
 |  |  |                     "hdpi" : "unpackage/res/icons/72x72.png", | 
 |  |  |                     "xhdpi" : "unpackage/res/icons/96x96.png", | 
 |  |  |                     "xxhdpi" : "unpackage/res/icons/144x144.png", | 
 |  |  |                     "xxxhdpi" : "unpackage/res/icons/192x192.png" | 
 |  |  |                 }, | 
 |  |  |                 "ios" : { | 
 |  |  |                     "appstore" : "unpackage/res/icons/1024x1024.png", | 
 |  |  |                     "ipad" : { | 
 |  |  |                         "app" : "unpackage/res/icons/76x76.png", | 
 |  |  |                         "app@2x" : "unpackage/res/icons/152x152.png", | 
 |  |  |                         "notification" : "unpackage/res/icons/20x20.png", | 
 |  |  |                         "notification@2x" : "unpackage/res/icons/40x40.png", | 
 |  |  |                         "proapp@2x" : "unpackage/res/icons/167x167.png", | 
 |  |  |                         "settings" : "unpackage/res/icons/29x29.png", | 
 |  |  |                         "settings@2x" : "unpackage/res/icons/58x58.png", | 
 |  |  |                         "spotlight" : "unpackage/res/icons/40x40.png", | 
 |  |  |                         "spotlight@2x" : "unpackage/res/icons/80x80.png" | 
 |  |  |                     }, | 
 |  |  |                     "iphone" : { | 
 |  |  |                         "app@2x" : "unpackage/res/icons/120x120.png", | 
 |  |  |                         "app@3x" : "unpackage/res/icons/180x180.png", | 
 |  |  |                         "notification@2x" : "unpackage/res/icons/40x40.png", | 
 |  |  |                         "notification@3x" : "unpackage/res/icons/60x60.png", | 
 |  |  |                         "settings@2x" : "unpackage/res/icons/58x58.png", | 
 |  |  |                         "settings@3x" : "unpackage/res/icons/87x87.png", | 
 |  |  |                         "spotlight@2x" : "unpackage/res/icons/80x80.png", | 
 |  |  |                         "spotlight@3x" : "unpackage/res/icons/120x120.png" | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         "ios": { | 
 |  |  |           "appstore": "unpackage/res/icons/1024x1024.png", | 
 |  |  |           "ipad": { | 
 |  |  |             "app": "unpackage/res/icons/76x76.png", | 
 |  |  |             "app@2x": "unpackage/res/icons/152x152.png", | 
 |  |  |             "notification": "unpackage/res/icons/20x20.png", | 
 |  |  |             "notification@2x": "unpackage/res/icons/40x40.png", | 
 |  |  |             "proapp@2x": "unpackage/res/icons/167x167.png", | 
 |  |  |             "settings": "unpackage/res/icons/29x29.png", | 
 |  |  |             "settings@2x": "unpackage/res/icons/58x58.png", | 
 |  |  |             "spotlight": "unpackage/res/icons/40x40.png", | 
 |  |  |             "spotlight@2x": "unpackage/res/icons/80x80.png" | 
 |  |  |           }, | 
 |  |  |           "iphone": { | 
 |  |  |             "app@2x": "unpackage/res/icons/120x120.png", | 
 |  |  |             "app@3x": "unpackage/res/icons/180x180.png", | 
 |  |  |             "notification@2x": "unpackage/res/icons/40x40.png", | 
 |  |  |             "notification@3x": "unpackage/res/icons/60x60.png", | 
 |  |  |             "settings@2x": "unpackage/res/icons/58x58.png", | 
 |  |  |             "settings@3x": "unpackage/res/icons/87x87.png", | 
 |  |  |             "spotlight@2x": "unpackage/res/icons/80x80.png", | 
 |  |  |             "spotlight@3x": "unpackage/res/icons/120x120.png" | 
 |  |  |           } | 
 |  |  |         } | 
 |  |  |       } | 
 |  |  |     } | 
 |  |  |   }, | 
 |  |  |   /* 快应用特有相关 */ | 
 |  |  |   "quickapp": {}, | 
 |  |  |   /* 小程序特有相关 */ | 
 |  |  |   "mp-weixin": { | 
 |  |  |     "appid": "", | 
 |  |  |     "setting": { | 
 |  |  |       "urlCheck": false | 
 |  |  |     }, | 
 |  |  |     /* 快应用特有相关 */ | 
 |  |  |     "quickapp" : {}, | 
 |  |  |     /* 小程序特有相关 */ | 
 |  |  |     "mp-weixin" : { | 
 |  |  |         "appid" : "", | 
 |  |  |         "setting" : { | 
 |  |  |             "urlCheck" : false | 
 |  |  |         }, | 
 |  |  |         "usingComponents" : true | 
 |  |  |     }, | 
 |  |  |     "mp-alipay" : { | 
 |  |  |         "usingComponents" : true | 
 |  |  |     }, | 
 |  |  |     "mp-baidu" : { | 
 |  |  |         "usingComponents" : true | 
 |  |  |     }, | 
 |  |  |     "mp-toutiao" : { | 
 |  |  |         "usingComponents" : true | 
 |  |  |     }, | 
 |  |  |     "uniStatistics" : { | 
 |  |  |         "enable" : false | 
 |  |  |     }, | 
 |  |  |     "vueVersion" : "3" | 
 |  |  |     "usingComponents": true | 
 |  |  |   }, | 
 |  |  |   "mp-alipay": { | 
 |  |  |     "usingComponents": true | 
 |  |  |   }, | 
 |  |  |   "mp-baidu": { | 
 |  |  |     "usingComponents": true | 
 |  |  |   }, | 
 |  |  |   "mp-toutiao": { | 
 |  |  |     "usingComponents": true | 
 |  |  |   }, | 
 |  |  |   "uniStatistics": { | 
 |  |  |     "enable": false | 
 |  |  |   }, | 
 |  |  |   "vueVersion": "3" | 
 |  |  | } | 
 
 |  |  | 
 |  |  |         <text class="title">{{ "巡检结果" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <wd-col :span="24"> | 
 |  |  |         <wd-form-item label="样品是否齐全" prop="sampleComplete" required> | 
 |  |  |         <wd-form-item label="样品是否齐全" prop="isFully" required> | 
 |  |  |           <template v-if="isEdit"> | 
 |  |  |             <wd-radio-group v-model="formData.sampleComplete" inline class="conclusion-radio-group"> | 
 |  |  |             <wd-radio-group v-model="formData.isFully" inline class="conclusion-radio-group"> | 
 |  |  |               <wd-radio | 
 |  |  |                 v-for="(opt, idx) in sampleCompleteOptions" | 
 |  |  |                 :key="idx" | 
 |  |  | 
 |  |  |             </wd-radio-group> | 
 |  |  |           </template> | 
 |  |  |           <template v-else> | 
 |  |  |             {{ formatValue(formData.sampleComplete) }} | 
 |  |  |             {{ formatValue(formData.isFully) }} | 
 |  |  |           </template> | 
 |  |  |         </wd-form-item> | 
 |  |  |       </wd-col> | 
 |  |  | 
 |  |  |   inspectTwist: [], // 绞线工艺质量控制 | 
 |  |  |   productAppearance: [] as string[], // 产品外观(改为数组存储选中值) | 
 |  |  |   conclusion: "", // 结论(改为数组存储选中值) | 
 |  |  |   sampleComplete: "", // 样品是否齐全 | 
 |  |  |   isFully: "", // 样品是否齐全 | 
 |  |  | }); | 
 |  |  |  | 
 |  |  | const twistDirectionOptions = [ | 
 |  |  | 
 |  |  |   formData.twistedOuterDiameter = | 
 |  |  |     recordData.value.structureInfo.structureRecordResult.twistedOuterDiameter || ""; | 
 |  |  |   formData.structureFormula = structureResult.inspectStructure?.structureFormula || ""; | 
 |  |  |   formData.sampleComplete = inspectionResult.sampleComplete || ""; | 
 |  |  |   formData.isFully = inspectionResult.isFully || ""; | 
 |  |  |   formData.conclusion = structureResult.conclusion || ""; | 
 |  |  |  | 
 |  |  |   // 初始化产品外观 | 
 |  |  | 
 |  |  |   if (!formData.productAppearance.length) | 
 |  |  |     return uni.showToast({ title: "产品外观为必填项", icon: "none" }); | 
 |  |  |   if (!formData.conclusion) return uni.showToast({ title: "结论为必填项", icon: "none" }); | 
 |  |  |   if (!formData.sampleComplete) | 
 |  |  |     return uni.showToast({ title: "样品是否齐全为必填项", icon: "none" }); | 
 |  |  |   if (!formData.isFully) return uni.showToast({ title: "样品是否齐全为必填项", icon: "none" }); | 
 |  |  |   // 2. 结构项循环校验 | 
 |  |  |   for (const item of formData.structureItems) { | 
 |  |  |     if (!item.structureValue) | 
 |  |  | 
 |  |  |     const res = await RoutingInspectionApi.strandedPatrolCheckInspection({ | 
 |  |  |       deviceUid: deviceUid.value, | 
 |  |  |       id: paramsId.value, | 
 |  |  |       result: { | 
 |  |  |       inspectionResult: { | 
 |  |  |         twistedOuterDiameter: formData.twistedOuterDiameter, | 
 |  |  |         structureFormula: formData.structureFormula, | 
 |  |  |         structureItems: formData.structureItems, | 
 |  |  |         inspectTwist: formData.inspectTwist, | 
 |  |  |         productAppearance: formData.productAppearance, | 
 |  |  |         conclusion: formData.conclusion, | 
 |  |  |         sampleComplete: formData.sampleComplete, | 
 |  |  |         isFully: formData.isFully, | 
 |  |  |       }, | 
 |  |  |       inspectionResult: { | 
 |  |  |         sampleComplete: formData.sampleComplete, | 
 |  |  |       result: { | 
 |  |  |         isFully: formData.isFully, | 
 |  |  |       }, | 
 |  |  |       processInspectionAttachmentList: allFileIds, | 
 |  |  |     }); | 
 
 |  |  | 
 |  |  |     </wd-row> | 
 |  |  |  | 
 |  |  |     <!-- 巡检结果 --> | 
 |  |  |     <wd-row v-if="detailData.processInspectionResult?.isFully"> | 
 |  |  |     <wd-row> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "巡检结果" }}</text> | 
 |  |  |       </view> | 
 |  |  |       <wd-col :span="24"> | 
 |  |  |         <wd-form-item label="铝杆前、中、尾样品是否齐全" prop="isFully" required> | 
 |  |  |         <wd-form-item | 
 |  |  |           label="铝杆前、中、尾样品是否齐全" | 
 |  |  |           prop="isFully" | 
 |  |  |           required | 
 |  |  |           label-width="420rpx" | 
 |  |  |         > | 
 |  |  |           <template v-if="isEdit"> | 
 |  |  |             <wd-radio-group v-model="formData.isFully" inline class="conclusion-radio-group"> | 
 |  |  |               <wd-radio | 
 |  |  | 
 |  |  |     </wd-row> | 
 |  |  |  | 
 |  |  |     <!-- 附件模块 --> | 
 |  |  |     <wd-row class="attachment-section" v-if="detailData.files && detailData.files.length > 0"> | 
 |  |  |     <wd-row class="attachment-section"> | 
 |  |  |       <view style="margin: 10rpx"> | 
 |  |  |         <text class="title">{{ "附件" }}</text> | 
 |  |  |       </view> | 
 |  |  | 
 |  |  |     const res = await RoutingInspectionApi.drawPatrolCheckInspection({ | 
 |  |  |       deviceUid: deviceUid.value, | 
 |  |  |       id: paramsId.value, | 
 |  |  |       result: { | 
 |  |  |       inspectionResult: { | 
 |  |  |         dia: formData.dia, | 
 |  |  |         maxDia: formData.maxDia, | 
 |  |  |         minDia: formData.minDia, | 
 |  |  | 
 |  |  |         jointCondition: formData.jointCondition, | 
 |  |  |         conclusion: formData.conclusion, | 
 |  |  |       }, | 
 |  |  |       inspectionResult: { isFully: formData.isFully }, | 
 |  |  |       result: { isFully: formData.isFully }, | 
 |  |  |       processInspectionAttachmentList: allFileIds, | 
 |  |  |     }); | 
 |  |  |     if (res.code === 200) { | 
 
 |  |  | 
 |  |  |  | 
 |  |  |     <!-- 附件列表 --> | 
 |  |  |     <view class="attachment-list"> | 
 |  |  |       <wd-status-tip v-if="attachmentList.length === 0" image="content" tip="暂无附件" /> | 
 |  |  |       <wd-status-tip | 
 |  |  |         v-if="attachmentList.length === 0" | 
 |  |  |         image="content" | 
 |  |  |         tip="暂无附件" | 
 |  |  |         custom-class="status-tip-full" | 
 |  |  |       /> | 
 |  |  |  | 
 |  |  |       <view v-for="(item, index) in attachmentList" :key="item.id || index" class="attachment-card"> | 
 |  |  |         <view class="media-wrapper" @click="previewAttachment(item)"> | 
 |  |  | 
 |  |  | const addAttachment = () => { | 
 |  |  |   // 显示选择文件类型的弹窗 | 
 |  |  |   uni.showActionSheet({ | 
 |  |  |     itemList: ["选择图片", "选择视频", "拍照", "录像"], | 
 |  |  |     itemList: ["选择图片", /* "选择视频", */ "拍照" /* , "录像" */], | 
 |  |  |     success: (res) => { | 
 |  |  |       switch (res.tapIndex) { | 
 |  |  |         case 0: // 选择图片 | 
 |  |  |           chooseImages(); | 
 |  |  |           break; | 
 |  |  |         case 1: // 选择视频 | 
 |  |  |           chooseVideos(); | 
 |  |  |           break; | 
 |  |  |         case 2: // 拍照 | 
 |  |  |         // case 1: // 选择视频 | 
 |  |  |         //   chooseVideos(); | 
 |  |  |         //   break; | 
 |  |  |         case 1: // 拍照 | 
 |  |  |           takePhoto(); | 
 |  |  |           break; | 
 |  |  |         case 3: // 录像 | 
 |  |  |           recordVideo(); | 
 |  |  |           break; | 
 |  |  |         // case 3: // 录像 | 
 |  |  |         //   recordVideo(); | 
 |  |  |         //   break; | 
 |  |  |       } | 
 |  |  |     }, | 
 |  |  |     fail: (error) => { | 
 |  |  | 
 |  |  |   grid-template-columns: repeat(3, 1fr); | 
 |  |  |   gap: 8px; | 
 |  |  |  | 
 |  |  |   :deep(.status-tip-full) { | 
 |  |  |     grid-column: 1 / -1; | 
 |  |  |     width: 100%; | 
 |  |  |   } | 
 |  |  |  | 
 |  |  |   .attachment-card { | 
 |  |  |     width: 100%; | 
 |  |  |     position: relative; |