| | |
| | | "name" : "线缆上报", |
| | | "appid" : "__UNI__F64E0A4", |
| | | "description" : "", |
| | | "versionName" : "1.0.12", |
| | | "versionName": "1.0.15", |
| | | "versionCode" : "100", |
| | | "transformPx" : false, |
| | | /* 5+App特有相关 */ |
| | |
| | | <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; |