From a9561a3189d50f0e33d693b5226ea56adda06a08 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期四, 30 十月 2025 23:07:25 +0800
Subject: [PATCH] 巡检编辑和扫码
---
 src/pages/routingInspection/detail/indexJX.vue |  463 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 463 insertions(+), 0 deletions(-)
diff --git a/src/pages/routingInspection/detail/indexJX.vue b/src/pages/routingInspection/detail/indexJX.vue
new file mode 100644
index 0000000..754374e
--- /dev/null
+++ b/src/pages/routingInspection/detail/indexJX.vue
@@ -0,0 +1,463 @@
+<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">
+    <!-- 鍩烘湰淇℃伅妯″潡 -->
+    <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 瀹瑰櫒鍖呰9鍥剧墖鍒楋紝瀹炵幇鑷姩鎹㈣ -->
+      <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";
+
+const paramsId = ref("");
+const recordData = ref<any>({});
+const show = ref(false);
+const previewImageUrl = ref("");
+const isEdit = ref(false);
+
+// 鐘舵�佺被鍨嬫槧灏�
+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;
+};
+
+// 缂栬緫鍒楄〃
+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>
+.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;
+}
+
+.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 {
+  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>
\ No newline at end of file
--
Gitblit v1.9.3