From bfc611fedef3df0e21d0034614fac90896dcdc44 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期三, 21 五月 2025 10:47:43 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 laboratory/src/views/dataManagement/sampleRecordList/list.vue |  285 ++++++++++++++++++++------------------------------------
 1 files changed, 101 insertions(+), 184 deletions(-)

diff --git a/laboratory/src/views/dataManagement/sampleRecordList/list.vue b/laboratory/src/views/dataManagement/sampleRecordList/list.vue
index 828362c..32d56fd 100644
--- a/laboratory/src/views/dataManagement/sampleRecordList/list.vue
+++ b/laboratory/src/views/dataManagement/sampleRecordList/list.vue
@@ -1,58 +1,53 @@
 <template>
   <div class="list">
-    <TableCustom :queryForm="form" :tableData="tableData" :total="total">
+    <TableCustom :queryForm="form" :height="null" :tableData="tableData" :total="total" @handlePageChange="handlePageChange" @handleSizeChange="handleSizeChange">
       <template #search>
         <el-form :model="form" labelWidth="auto" inline>
           <el-form-item label="所属项目课题方案:">
-            <el-input v-model="form.planName" placeholder="请输入"></el-input>
-          </el-form-item> 
-          <el-form-item label="实验名称:">
-            <el-input v-model="form.planCode" placeholder="请输入"></el-input>
+            <el-input v-model="form.projectName" placeholder="请输入"></el-input>
           </el-form-item>
           <el-form-item label="实验编号:">
-            <el-input v-model="form.planCode" placeholder="请输入"></el-input>
+            <el-input v-model="form.experimentCode" placeholder="请输入"></el-input>
           </el-form-item>
-          
+          <el-form-item label="创建时间:">
+            <el-date-picker
+              v-model="form.createTime"
+              type="daterange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              value-format="yyyy-MM-dd"
+            ></el-date-picker>
+          </el-form-item>
           <el-form-item label="状态:">
-            <el-input v-model="form.approver" placeholder="请输入"></el-input>
+            <el-select v-model="form.status" placeholder="请选择">
+              <el-option label="全部" :value="''"></el-option>
+              <el-option label="待提交" :value="1"></el-option>
+              <el-option label="已提交" :value="2"></el-option>
+              <el-option label="已封存" :value="3"></el-option>
+            </el-select>
           </el-form-item>
           <el-form-item label="">
             <el-button type="default" @click="resetForm">重置</el-button>
-            <el-button type="primary" @click="handleSearch">查询</el-button>
+            <el-button type="primary" @click="handleSearch" style="margin-left: 10px;">查询</el-button>
           </el-form-item>
         </el-form>
       </template>
       <template #setting>
         <div class="tableTitle">
           <div class="flex a-center">
-            <div 
-            class="title"
-              :class="{active:currentType === 'list'}"
-              @click="handleTypeChange('list')"
-            >{{ type === 'draft' ? '草稿箱' : '取样操作记录列表' }}</div>
+            <div class="title active">取样操作记录列表</div>
           </div>
         </div>
       </template>
       <template #table>
         <el-table-column
-          prop="planName"
-          label="所属项目课题方案"
+          v-for="(column, index) in columns"
+          :key="index"
+          :prop="column.prop"
+          :label="column.label"
         ></el-table-column>
-        <el-table-column
-          prop="experimentNo"
-          label="实验编号"
-        ></el-table-column>
-        <el-table-column
-          prop="experimentName"
-          label="实验名称"
-        ></el-table-column>
-        <el-table-column
-          prop="sampleNo"
-          label="取样单编号"
-        ></el-table-column>
-        <el-table-column prop="creator" label="创建人"></el-table-column>
-        <el-table-column prop="createTime" label="创建时间"></el-table-column>
-        <el-table-column prop="status" label="当前状态">
+        <el-table-column prop="status" label="状态">
           <template slot-scope="scope">
             <el-tag :type="getStatusType(scope.row.status)">
               {{ getStatusText(scope.row.status) }}
@@ -61,88 +56,41 @@
         </el-table-column>
         <el-table-column label="操作" width="150">
           <template slot-scope="scope">
-            <el-button
-              type="text"
-              @click="handleEdit(scope.row)"
-              >编辑</el-button>
-            <el-button 
-              type="text" 
-              @click="handleDetail(scope.row)"
-              >详情</el-button>
+            <el-button type="text" @click="handleDetail(scope.row.id)">详情</el-button>
+            <el-button type="text" @click="handleEdit(scope.row.id)" v-if="scope.row.status == 1">编辑</el-button>
           </template>
         </el-table-column>
       </template>
     </TableCustom>
-    <!-- 审批弹窗 -->
-    <!-- <approval-dialog
-      :visible.sync="approvalDialogVisible"
-      :type="approvalDialogType"
-      :data="currentApprovalData"
-      @approve="handleApproveSubmit"
-      @reject="handleRejectSubmit"
-    /> -->
   </div>
 </template>
 
 <script>
-// import ApprovalDialog from './components/approvalDialog.vue'
+import { getList } from './service'
 
 export default {
   name: "ProjectList",
-  components: {
-    // ApprovalDialog
-  },
   data() {
     return {
-      type: 'list',
-      currentType: 'list',
       form: {
-        planName: "",
-        planCode: "",
-        creator: "",
+        experimentCode: "",
+        experimentName: "",
+        projectName: "",
         createTime: [],
-        approver: "",
-        status: "",
+        status: '',
+        pageNum: 1,
+        pageSize: 10
       },
       tableData: [],
       total: 0,
-      // 模拟数据
-      mockListData: [
-        {
-          planName: '2024年度实验室设备升级方案',
-          experimentNo: '31423764',
-          experimentName: '设备性能测试',
-          sampleNo: '2024-05-28',
-          creator: '刘大大',
-          createTime: '2025-1-2 16:27:17',
-          status: 'pending'
-        }
-      ],
-      mockDraftData: [
-        {
-          planCode: 'DRAFT-2024-001',
-          planName: '实验室设备采购计划(草稿)',
-          stage: '规划阶段',
-          creator: '张三',
-          createTime: '2024-03-16',
-          status: 'draft',
-          approver: '',
-          approveTime: ''
-        },
-        {
-          planCode: 'DRAFT-2024-002',
-          planName: '实验室改造方案(草稿)',
-          stage: '准备阶段',
-          creator: '李四',
-          createTime: '2024-03-15',
-          status: 'draft',
-          approver: '',
-          approveTime: ''
-        }
-      ],
-      approvalDialogVisible: false,
-      approvalDialogType: 'approve',
-      currentApprovalData: null,
+      columns: [
+        { prop: 'projectName', label: '所属项目课题方案' },
+        { prop: 'experimentCode', label: '实验编号' },
+        { prop: 'experimentName', label: '实验名称' },
+        { prop: 'samplingCode', label: '取样单编号' },
+        { prop: 'createBy', label: '创建人' },
+        { prop: 'createTime', label: '创建时间' }
+      ]
     };
   },
   created() {
@@ -151,103 +99,82 @@
   methods: {
     resetForm() {
       this.form = {
-        planName: "",
-        planCode: "",
-        creator: "",
+        experimentCode: "",
+        experimentName: "",
+        projectName: "",
         createTime: [],
-        approver: "",
-        status: "",
+        status: '',
+        pageNum: 1,
+        pageSize: 10
       };
+      this.handleSearch();
     },
-    handleSearch() {
-      // 实现查询逻辑
-      console.log("查询条件:", this.form);
+    async handleSearch() {
+      const params = {
+        experimentCode: this.form.experimentCode,
+        experimentName: this.form.experimentName,
+        projectName: this.form.projectName,
+        startTime: this.form.createTime[0] || null,
+        endTime: this.form.createTime[1] || null,
+        status: this.form.status,
+        pageNum: this.form.pageNum,
+        pageSize: this.form.pageSize
+      };
+      try {
+        const res = await getList(params)
+        this.tableData = res.data.records || [];
+        this.total = res.data.total || 0;
+      } catch (error) {
+        console.error("查询失败:", error);
+      }
     },
     getStatusType(status) {
       const statusMap = {
-        pending: "warning",
-        rejected: "danger",
-        approved: "success",
-        archived: "info",
-        draft: "info"
+        '-1': 'info',
+        '1': 'warning',
+        '2': 'success',
+        '3': 'info'
       };
-      return statusMap[status] || "info";
+      return statusMap[status] || 'info';
     },
     getStatusText(status) {
       const statusMap = {
-        pending: "待审批",
-        rejected: "已驳回",
-        approved: "已通过",
-        archived: "已封存",
-        draft: "草稿"
+        '-1': '草稿箱',
+        '1': '待提交',
+        '2': '已提交',
+        '3': '已封存'
       };
-      return statusMap[status] || "未知";
+      return statusMap[status] || '未知';
     },
-    handleAddSample() {
-      this.$router.push({
-        path: "/sampleManage/changeRecord",
-      });
-    },
-    handleApprove(row) {
-      this.currentApprovalData = row;
-      this.approvalDialogType = 'approve';
-      this.approvalDialogVisible = true;
-    },
-    handleApproveSubmit(data) {
-      // 处理审批通过
-      console.log('审批通过:', data);
-      this.approvalDialogVisible = false;
-      this.$message.success('审批通过成功');
-      this.getTableData();
-    },
-    handleRejectSubmit(data) {
-      // 处理审批驳回
-      console.log('审批驳回:', data);
-      this.approvalDialogVisible = false;
-      this.$message.success('审批驳回成功');
-      this.getTableData();
-    },
-    handleRevokeApprove(row) {
-      // 实现撤销审批逻辑
-      console.log("撤销审批数据:", row);
-    },
-    handleEdit(row) {
+    handleDetail(id) {
       this.$router.push({
         path: "/sampleManage/changeRecord",
         query: {
-          type: 'edit',
-          id: row.id
+          id: id,
+          type: 'detail'
         }
       });
     },
-    handleDelete(row) {
-      // 实现删除逻辑
-      console.log("删除数据:", row);
-    },
-    handleDetail(row) {
+    handleEdit(id) {
       this.$router.push({
         path: "/sampleManage/changeRecord",
         query: {
-          type: 'view',
-          id: row.id
+          id: id,
+          type: 'edit'
         }
       });
-    },
-    handleTypeChange(type) {
-      this.currentType = type;
-      this.type = type;
-      this.getTableData();
     },
     getTableData() {
-      // 根据currentType请求不同的数据
-      if (this.currentType === 'list') {
-        this.tableData = this.mockListData;
-        this.total = this.mockListData.length;
-      } else {
-        this.tableData = this.mockDraftData;
-        this.total = this.mockDraftData.length;
-      }
+      this.handleSearch();
     },
+    handlePageChange(pageNum) {
+      this.form.pageNum = pageNum;
+      this.getTableData();
+    },
+    handleSizeChange(pageSize) {
+      this.form.pageSize = pageSize;
+      this.getTableData();
+    }
   },
 };
 </script>
@@ -270,28 +197,18 @@
     border-radius: 8px 8px 0px 0px;
     border: 1px solid #dcdfe6;
     padding: 16px 29px;
-    font-weight: bold;
+    font-weight: 400;
     font-size: 18px;
     color: #606266;
     width: unset;
     cursor: pointer;
-  }
-  .drafts {
-    padding: 16px 65px;
-    background: #fafafc;
-    border-radius: 8px 8px 0px 0px;
-    border: 1px solid #dcdfe6;
-    font-weight: 400;
-    font-size: 18px;
-    color: #606266;
-    margin-left: 16px;
-    cursor: pointer;
-  }
-  .active{
-    color: #049c9a;
-    background: #ffffff;
-    border-radius: 8px 8px 0px 0px;
-    border: 1px solid #049c9a;
+    &.active {
+      color: #049c9a;
+      background: #ffffff;
+      border-radius: 8px 8px 0px 0px;
+      border: 1px solid #049c9a;
+      font-weight: bold;
+    }
   }
 }
 </style>
\ No newline at end of file

--
Gitblit v1.7.1