From 7db80175de589a2ccad77472e1d365f14099b662 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期三, 21 五月 2025 13:44:08 +0800
Subject: [PATCH] 取样送样记录

---
 laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue |  507 ++++++++++++++++++-------------------------------------
 1 files changed, 166 insertions(+), 341 deletions(-)

diff --git a/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue b/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue
index 50759e3..cf3fe62 100644
--- a/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue
+++ b/laboratory/src/views/dataManagement/SampleDeliveryRecord/deliveryRecord.vue
@@ -6,26 +6,21 @@
     </div>
     <Table :data="schedulingData" :total="schedulingTotal" :height="null">
       <template>
-        <el-table-column
-          prop="planCode"
-          label="所属项目课题方案"
-        ></el-table-column>
-        <el-table-column
-          prop="experimentCode"
-          label="实验编号"
-        ></el-table-column>
-        <el-table-column
-          prop="experimentName"
-          label="实验名称"
-        ></el-table-column>
-        <el-table-column prop="notifyTime" label="通知时间"></el-table-column>
-        <el-table-column
-          prop="startTime"
-          label="实验开始时间"
-        ></el-table-column>
-        <el-table-column prop="endTime" label="实验结束时间"></el-table-column>
-        <el-table-column prop="participants" label="参加人员"></el-table-column>
-        <el-table-column prop="status" label="状态"></el-table-column>
+        <el-table-column type="index" label="序号" width="80"></el-table-column>
+        <el-table-column prop="projectName" label="所属项目课题方案"></el-table-column>
+        <el-table-column prop="experimentCode" label="实验编号"></el-table-column>
+        <el-table-column prop="experimentName" label="实验名称"></el-table-column>
+        <el-table-column prop="experimentDate" label="通知时间"></el-table-column>
+        <el-table-column prop="experimentStartTime" label="实验开始时间"></el-table-column>
+        <el-table-column prop="experimentEndTime" label="实验结束时间"></el-table-column>
+        <el-table-column prop="participantsName" label="参加人员"></el-table-column>
+        <el-table-column prop="status" label="状态">
+          <template slot-scope="scope">
+            <el-tag :type="getStatusType(scope.row.status)">
+              {{ getStatusText(scope.row.status) }}
+            </el-tag>
+          </template>
+        </el-table-column>
       </template>
     </Table>
 
@@ -34,246 +29,88 @@
       <div class="header-title-left" style="margin-top: 38px">
         <img src="@/assets/public/headercard.png" />
         <span>送样-收样记录</span>
-        <el-button
-          type="primary"
-          class="el-icon-plus"
-          @click="showAdditives = !showAdditives"
-        >
-          {{ showAdditives ? "收起辅料详情" : "展开辅料详情" }}
+        <el-button type="primary" class="el-icon-plus" @click="showPendingColumns = !showPendingColumns">
+          {{ showPendingColumns ? "收起待收样详情" : "展开待收样详情" }}
+        </el-button>
+        <el-button type="primary" class="el-icon-plus" @click="showReceivedColumns = !showReceivedColumns">
+          {{ showReceivedColumns ? "收起已收样详情" : "展开已收样详情" }}
         </el-button>
       </div>
       <div class="sample-code">
         取样单编号:{{ form.sampleCode || "DD-25010BS01" }}
       </div>
-      <div class="sample-code">待收样列表</div>
 
-      <div class="sample-table">
-        <Table
-          :data="sampleList"
-          :total="sampleTotal"
-          :height="null"
-          style="width: 100%"
-        >
+      <!-- 待收样列表 -->
+      <div class="pending-samples">
+        <div class="sub-title">待收样列表</div>
+        <Table ref="pendingTable" 
+          :data="pendingSamples" 
+          :total="pendingSamplesTotal" 
+          :height="null">
           <template>
-            <el-table-column
-              prop="index"
-              label="序号"
-              width="80"
-            ></el-table-column>
-            <el-table-column
-              prop="processTime"
-              label="工艺时间间/h"
-              width="120"
-            ></el-table-column>
-            <el-table-column
-              prop="sampleName"
-              label="取样名称"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="sampleCode"
-              label="取样样品编号"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="temperature"
-              label="温度"
-              width="100"
-            ></el-table-column>
-            <el-table-column prop="ph" label="PH" width="100"></el-table-column>
-            <el-table-column
-              prop="waterAmount"
-              label="加水量"
-              width="100"
-            ></el-table-column>
-            <template v-if="showAdditives">
-              <el-table-column
-                prop="additive1"
-                label="加辅1"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive2"
-                label="加辅2"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive3"
-                label="加辅3"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive4"
-                label="加辅4"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive5"
-                label="加辅5"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive6"
-                label="加辅6"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive7"
-                label="加辅7"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive8"
-                label="加辅8"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive9"
-                label="加辅9"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive10"
-                label="加辅10"
-                min-width="150"
-              ></el-table-column>
+            <el-table-column type="index" label="序号" width="80"></el-table-column>
+            <el-table-column prop="samplingName" label="取样名称" width="200"></el-table-column>
+            <el-table-column prop="sampleCode" label="取样样品编号" width="200"></el-table-column>
+            <el-table-column prop="temperature" label="温度" width="150"></el-table-column>
+            <el-table-column prop="samplePh" label="PH" width="150"></el-table-column>
+            <el-table-column prop="waterAddition" label="加水量" width="150"></el-table-column>
+            <template v-if="showPendingColumns">
+              <el-table-column prop="addAuxiliaryOne" label="加辅1" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryTwo" label="加辅2" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryThree" label="加辅3" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryFour" label="加辅4" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryFive" label="加辅5" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliarySix" label="加辅6" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliarySeven" label="加辅7" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryEight" label="加辅8" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryNine" label="加辅9" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryTen" label="加辅10" width="150"></el-table-column>
             </template>
-            <el-table-column
-              prop="sampleAmount"
-              label="取样量"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="sampleTime"
-              label="取样时间"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column prop="photo" label="拍照" width="100">
+            <el-table-column prop="sampleAmount" label="取样量" width="150"></el-table-column>
+            <el-table-column prop="receiptsTime" label="收样时间" width="150"></el-table-column>
+            <el-table-column prop="receiptsPersonName" label="收样人" width="150"></el-table-column>
+            <el-table-column label="状态" prop="status" width="100" fixed="right">
               <template slot-scope="scope">
-                <img
-                  v-if="scope.row.photo"
-                  :src="scope.row.photo"
-                  class="sample-photo"
-                />
+                <span>{{ scope.row.status == '2' ? '待接收' : '已接收' }}</span>
               </template>
             </el-table-column>
-            <el-table-column
-              prop="operator"
-              label="操作人"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="status"
-              label="状态"
-              width="100"
-            ></el-table-column>
           </template>
         </Table>
       </div>
-      <div class="received-samples">
-        <div style="display: flex; align-items: center">
-          <div class="sample-code">已收样列表</div>
 
-          <el-button
-            type="primary"
-            class="el-icon-plus"
-            style="margin-left: 16px"
-            @click="showReceivedColumns = !showReceivedColumns"
-          >
-            {{ showReceivedColumns ? "收起辅料详情" : "展开辅料详情" }}
-          </el-button>
-        </div>
-        <Table
-          :data="receivedSamples"
-          :total="receivedSamplesTotal"
-          :height="null"
-          style="width: 100%"
-        >
+      <!-- 已收样列表 -->
+      <div class="received-samples">
+        <div class="sub-title">已收样列表</div>
+        <Table ref="receivedTable" :data="receivedSamples" :total="receivedSamplesTotal" :height="null">
           <template>
-            <el-table-column
-              prop="index"
-              label="序号"
-              width="80"
-            ></el-table-column>
-            <el-table-column
-              prop="sampleName"
-              label="取样名称"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="sampleCode"
-              label="取样样品编号"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="temperature"
-              label="温度"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="waterAmount"
-              label="加水量"
-              width="100"
-            ></el-table-column>
-            <el-table-column prop="ph" label="PH" width="100"></el-table-column>
+            <el-table-column type="index" label="序号" width="80"></el-table-column>
+            <el-table-column prop="samplingName" label="取样名称" width="150"></el-table-column>
+            <el-table-column prop="sampleCode" label="取样样品编号" width="150"></el-table-column>
+            <el-table-column prop="temperature" label="温度" width="150"></el-table-column>
+            <el-table-column prop="samplePh" label="PH" width="150"></el-table-column>
+            <el-table-column prop="waterAddition" label="加水量" width="150"></el-table-column>
             <template v-if="showReceivedColumns">
-              <el-table-column
-                prop="additive1"
-                label="加辅1"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive2"
-                label="加辅2"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive3"
-                label="加辅3"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive4"
-                label="加辅4"
-                min-width="150"
-              ></el-table-column>
-              <el-table-column
-                prop="additive5"
-                label="加辅5"
-                min-width="150"
-              ></el-table-column>
+              <el-table-column prop="addAuxiliaryOne" label="加辅1" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryTwo" label="加辅2" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryThree" label="加辅3" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryFour" label="加辅4" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryFive" label="加辅5" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliarySix" label="加辅6" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliarySeven" label="加辅7" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryEight" label="加辅8" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryNine" label="加辅9" width="150"></el-table-column>
+              <el-table-column prop="addAuxiliaryTen" label="加辅10" width="150"></el-table-column>
             </template>
-            <el-table-column
-              prop="sampleAmount"
-              label="取样量"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="sendTime"
-              label="送样时间"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="sender"
-              label="送样人"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="receiveTime"
-              label="收样时间"
-              min-width="150"
-            ></el-table-column>
-            <el-table-column
-              prop="receiver"
-              label="收样人"
-              width="100"
-            ></el-table-column>
-            <el-table-column
-              prop="status"
-              label="状态"
-              width="100"
-              fixed="right"
-            ></el-table-column>
+            <el-table-column prop="sampleAmount" label="取样量" width="150"></el-table-column>
+            <el-table-column prop="sendTime" label="送样时间" width="150"></el-table-column>
+            <el-table-column prop="sendPersonName" label="送样人" width="150"></el-table-column>
+            <el-table-column prop="receiptsTime" label="收样时间" width="150"></el-table-column>
+            <el-table-column prop="receiptsPersonName" label="收样人" width="150"></el-table-column>
+            <el-table-column label="状态" prop="status" width="100" fixed="right">
+              <template slot-scope="scope">
+                <span>{{ scope.row.status == '3' ? '已接收' : '待接收' }}</span>
+              </template>
+            </el-table-column>
           </template>
         </Table>
       </div>
@@ -282,104 +119,90 @@
 </template>
 
 <script>
+import { getDetail } from "../sampleManage/service";
+
 export default {
-  name: "SampleSubmission",
+  name: "SampleDeliveryRecord",
   data() {
     return {
-      showAdditives: true,
-      showReceivedColumns: true,
-      schedulingData: [
-        {
-          planCode: "DD-EX001",
-          experimentCode: "DD-EX001",
-          experimentName: "名称名称名称",
-          notifyTime: "2025-1-2 14:50:19",
-          startTime: "2025-02-27",
-          endTime: "2025-06-06",
-          participants: "张弘, 李天浩, 陈三, 李四",
-          status: "已确认",
-        },
-      ],
-      schedulingTotal: 1,
+      showPendingColumns: false,
+      showReceivedColumns: false,
+      schedulingData: [],
+      schedulingTotal: 0,
       form: {
-        sampleCode: "DD-25010BS01",
+        sampleCode: "",
+        id: "",
       },
-      sampleList: [
-        {
-          index: 1,
-          processTime: "2",
-          sampleName: "名称名称名称",
-          sampleCode: "314234321",
-          temperature: "34",
-          ph: "34",
-          waterAmount: "34",
-          additive1: "10g",
-          additive2: "5g",
-          additive3: "3g",
-          additive4: "",
-          additive5: "",
-          additive6: "",
-          additive7: "",
-          additive8: "",
-          additive9: "",
-          additive10: "",
-          sampleAmount: "34",
-          sampleTime: "2025-1-9 15:26:08",
-          photo: "@/assets/sample-photos/photo1.jpg",
-          operator: "张三",
-          status: "待发送",
-        },
-        {
-          index: 2,
-          processTime: "4",
-          sampleName: "名称名称名称",
-          sampleCode: "314234321",
-          temperature: "23",
-          ph: "23",
-          waterAmount: "23",
-          additive1: "8g",
-          additive2: "4g",
-          additive3: "",
-          additive4: "",
-          additive5: "",
-          additive6: "",
-          additive7: "",
-          additive8: "",
-          additive9: "",
-          additive10: "",
-          sampleAmount: "23",
-          sampleTime: "2025-1-9 15:26:08",
-          photo: "@/assets/sample-photos/photo2.jpg",
-          operator: "李四",
-          status: "待接收",
-        },
-        {
-          index: 3,
-          processTime: "8",
-          sampleName: "名称名称名称",
-          sampleCode: "314234321",
-          temperature: "23",
-          ph: "23",
-          waterAmount: "23",
-          additive1: "",
-          additive2: "",
-          additive3: "",
-          additive4: "",
-          additive5: "",
-          additive6: "",
-          additive7: "",
-          additive8: "",
-          additive9: "",
-          additive10: "",
-          sampleAmount: "23",
-          sampleTime: "2025-1-9 15:26:08",
-          photo: "@/assets/sample-photos/photo3.jpg",
-          operator: "王五",
-          status: "已接收",
-        },
-      ],
-      sampleTotal: 3,
+      pendingSamples: [],
+      pendingSamplesTotal: 0,
+      receivedSamples: [],
+      receivedSamplesTotal: 0,
+      statusTypeMap: {
+        "-1": "info",
+        "1": "warning",
+        "2": "success",
+        "3": "info"
+      },
+      statusTextMap: {
+        "-1": "草稿箱",
+        "1": "待确认",
+        "2": "已确认",
+        "3": "已封存"
+      },
     };
+  },
+  created() {
+    const { id } = this.$route.query;
+    if (id) {
+      this.form.id = id;
+      this.getDetailData(id);
+    }
+  },
+  methods: {
+    async getDetailData(id) {
+      try {
+        const res = await getDetail({ id });
+        if (res) {
+          const detail = res;
+          this.form = {
+            ...this.form,
+            ...detail,
+            sampleCode: detail.samplingCode,
+          };
+          
+          if (detail.experimentDispatch) {
+            this.schedulingData = [detail.experimentDispatch];
+          }
+
+          if (detail.samplingRecordOperations && detail.samplingRecordOperations.length > 0) {
+            this.pendingSamples = detail.samplingRecordOperations
+              .filter(item => String(item.status) === '2')
+              .map(item => ({
+                ...item,
+                status: String(item.status)
+              }));
+            this.pendingSamplesTotal = this.pendingSamples.length;
+            
+            this.receivedSamples = detail.samplingRecordOperations
+              .filter(item => String(item.status) === '3')
+              .map(item => ({
+                ...item,
+                status: String(item.status)
+              }));
+            this.receivedSamplesTotal = this.receivedSamples.length;
+          }
+        }
+      } catch (error) {
+        console.error('获取详情失败:', error);
+        this.$message.error('获取详情失败,请重试');
+      }
+    },
+    getStatusType(status) {
+      return this.statusTypeMap[status] || 'info';
+    },
+    getStatusText(status) {
+      return this.statusTextMap[status] || '未知状态';
+    },
   },
 };
 </script>
@@ -426,15 +249,17 @@
     margin: 20px 0;
   }
 
-  .table-header {
-    margin-bottom: 16px;
-    text-align: left;
+  .sub-title {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333;
+    margin: 20px 0;
+    display: inline-block;
   }
 
-  .sample-photo {
-    width: 60px;
-    height: 60px;
-    object-fit: cover;
+  .pending-samples,
+  .received-samples {
+    margin-top: 20px;
   }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.7.1