| | |
| | | <template> |
| | | <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"> |
| | | <div class="inspection-report"> |
| | | <!-- 基本信息模块 --> |
| | | <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-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="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-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-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> |
| | | <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> |
| | | </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> |
| | | <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> |
| | | </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-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-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-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-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> |
| | |
| | | </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" /> |
| | |
| | | const recordData = ref<any>({}); |
| | | const show = ref(false); |
| | | const previewImageUrl = ref(""); |
| | | const isEdit = ref(false); |
| | | |
| | | // 状态类型映射 |
| | | const getStatusType = (status : number) => { |
| | |
| | | return new Date(date).toLocaleDateString("zh-CN", { |
| | | year: "numeric", |
| | | month: "2-digit", |
| | | day: "2-digit" |
| | | day: "2-digit", |
| | | }); |
| | | }; |
| | | |
| | |
| | | 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; |
| | | .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; |
| | | } |
| | | |
| | | .search-wrapper { |
| | | flex: 1; |
| | | min-width: 0; |
| | | } |
| | | |
| | | :deep(.search-wrapper .wd-search) { |
| | | width: 100% !important; |
| | | min-width: 0 !important; |
| | | } |
| | | |
| | | .scan-wrapper { |
| | | width: 38px; |
| | | height: 38px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | padding: 6px; |
| | | flex-shrink: 0; |
| | | } |
| | | |
| | | .list { |
| | | padding: 12px; |
| | | |
| | | padding-top: 84px; |
| | | background: #f3f9f8; |
| | | min-height: 100vh; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .title { |
| | |
| | | .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); |