From 653a7a72f7d6a816b4b5e24a07b7d2f450cfb287 Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期五, 16 五月 2025 14:41:04 +0800
Subject: [PATCH] 实验中止审批

---
 laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue  |   38 +--
 laboratory/src/views/dataManagement/schemeManagement/list.vue                       |    5 
 laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue |  199 +++++++++++++++----
 laboratory/src/views/dataManagement/suspendExperiment/list.vue                      |  296 ++++++++++++++---------------
 laboratory/src/views/dataManagement/suspendExperiment/service.js                    |   16 +
 5 files changed, 333 insertions(+), 221 deletions(-)

diff --git a/laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue b/laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue
index d3a3873..68edb82 100644
--- a/laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue
+++ b/laboratory/src/views/dataManagement/schemeManagement/components/approvalDialog.vue
@@ -2,7 +2,7 @@
   <div>
     <el-dialog
       title="实验方案详情"
-      :visible.sync="visible"
+      :visible="dialogVisible"
       width="80%"
       :close-on-click-modal="false"
       @close="handleClose"
@@ -26,7 +26,7 @@
                       <img src="@/assets/public/headercard.png" />
                       <div>所属实验调度</div>
                     </div>
-                    <el-button @click="handleStopExperiment" type="danger">
+                    <el-button @click="handleStopExperiment" type="danger" v-if='form.status != 2 && form.status != 3 && form.status != 4'>
                       申请终止实验</el-button>
                   </div>
                 </div>
@@ -216,6 +216,7 @@
   },
   data() {
     return {
+      dialogVisible: false,
       form: {
         projectName: "", // 项目课题方案名称
         projectCode: "", // 项目课题方案编号
@@ -249,6 +250,16 @@
     };
   },
   watch: {
+    visible: {
+      handler(val) {
+        this.dialogVisible = val;
+        if (val && this.data && this.data.id) {
+          // 弹窗打开时,确保数据已获取
+          this.getPlanDetail(this.data.id);
+        }
+      },
+      immediate: true,
+    },
     data: {
       handler(val) {
         if (val && val.id) {
@@ -258,15 +269,6 @@
       },
       immediate: true,
       deep: true,
-    },
-    visible: {
-      handler(val) {
-        if (val && this.data && this.data.id) {
-          // 弹窗打开时,确保数据已获取
-          this.getPlanDetail(this.data.id);
-        }
-      },
-      immediate: true,
     },
   },
   methods: {
@@ -292,8 +294,7 @@
       return statusMap[status] || "未知";
     },
     handleClose() {
-      this.$emit("update:visible", false);
-      this.form.approvalComment = "";
+      this.$emit('update:visible', false);
     },
     handleApprove() {
       if (!this.form.approvalComment) {
@@ -346,20 +347,15 @@
             });
             if(res.status==4||res.status==3){
               processData.push({
-                type:
-                  res.auditStatus === 2
-                    ? "primary"
-                    : res.auditStatus === 3
-                    ? "danger"
-                    : "warning",
+                type:'primary',
                 mode: "list",
                 fields: [
                   {
                     label: "审核结果:",
                     value:
-                      res.auditStatus === 2
+                      res.status ==3
                         ? "通过"
-                        : res.auditStatus === 3
+                        : res.status ==4
                         ? "驳回"
                         : "待审批",
                   },
diff --git a/laboratory/src/views/dataManagement/schemeManagement/list.vue b/laboratory/src/views/dataManagement/schemeManagement/list.vue
index 4597a9e..54c6de5 100644
--- a/laboratory/src/views/dataManagement/schemeManagement/list.vue
+++ b/laboratory/src/views/dataManagement/schemeManagement/list.vue
@@ -71,7 +71,7 @@
         ></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="experimentSchemePersons" label="实验员"></el-table-column>
+        <el-table-column prop="schemePersonName" label="实验员"></el-table-column>
         <el-table-column prop="createTime" label="创建日期"></el-table-column>
         <el-table-column prop="createBy" label="创建人"></el-table-column>
         <el-table-column prop="status" label="当前状态">
@@ -107,8 +107,6 @@
       :visible.sync="approvalDialogVisible"
       :type="approvalDialogType"
       :data="currentApprovalData"
-      @approve="handleApproveSubmit"
-      @reject="handleRejectSubmit"
     />
   </div>
 </template>
@@ -271,7 +269,6 @@
     },
     handleApproveSubmit(data) {
       this.approvalDialogVisible = false;
-      this.$message.success('审批通过成功');
       this.getTableData();
     },
     handleRejectSubmit(data) {
diff --git a/laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue b/laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue
index f413ae2..5c9e839 100644
--- a/laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue
+++ b/laboratory/src/views/dataManagement/suspendExperiment/components/approvalDialog.vue
@@ -1,5 +1,5 @@
 <template>
-  <el-dialog :title="dialogTitle" :visible.sync="visible" width="80%" :close-on-click-modal="false"
+  <el-dialog :title="dialogTitle" :visible.sync="dialogVisible" width="80%" :close-on-click-modal="false"
     @close="handleClose">
     <div class="approval-dialog">
       <!-- 左侧审批内容 -->
@@ -13,15 +13,21 @@
               </div>
             </div>
             <Table :data="groupTableData" :total="0" :height="null" class="groupTable">
-              <el-table-column type="index" label="所属项目课题方案" width="80"></el-table-column>
-              <el-table-column prop="groupName" label="实验编号"></el-table-column>
-              <el-table-column prop="stage" 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="approver" label="实验结束时间"></el-table-column>
-              <el-table-column prop="approveTime" 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>
             </Table>
 
             <div class="header-title">
@@ -30,7 +36,7 @@
                 <div>中止原因说明</div>
               </div>
             </div>
-            <AiEditor ref="purposeEditor" v-model="form.purpose" height="200px" placeholder="请输入文字" />
+            <AiEditor ref="purposeEditor" :readOnly="true" :value="form.stopReason" height="200px" placeholder="请输入文字" />
 
           </template>
         </Card>
@@ -38,12 +44,11 @@
       <!-- 右侧审批流程 -->
       <div class="approval-flow">
         <div class="flow-content">
-          <approval-process :status="form.status" :submit-time="form.createTime" :approver="form.approver"
-            :approve-time="form.approveTime" />
+          <approval-process :processData="approvalProcessData" />
         </div>
       </div>
     </div>
-    <div class="approval-dialog-approve">
+    <div class="approval-dialog-approve" v-if="type === 'approve'">
       <div class="status">
         <div class="status-title">审批结果</div>
         <div class="status-content">
@@ -55,7 +60,7 @@
           </div>
         </div>
       </div>
-      <div class="remark">
+      <div class="remark" style="flex:1">
         <div class="remark-title">审批意见</div>
         <el-input type="textarea" v-model="remark" placeholder="请输入审批意见" />
       </div>
@@ -71,6 +76,7 @@
 <script>
 import ApprovalProcess from '@/components/approvalProcess'
 import AiEditor from '@/components/AiEditor'
+import { audit, getDetail } from '../service'
 export default {
   name: "ApprovalDialog",
   components: {
@@ -90,6 +96,30 @@
       default: () => ({}),
     },
   },
+  computed: {
+    dialogVisible: {
+      get() {
+        return this.visible;
+      },
+      set(val) {
+        this.$emit('update:visible', val);
+      }
+    },
+    dialogTitle() {
+      return this.type === "approve" ? "审批实验中止申请" : "实验中止申请审批详情";
+    },
+  },
+  watch: {
+    visible: {
+      handler(val) {
+        if (val && this.data && this.data.id) {
+          // this.form = { ...val };
+          this.getDialogDetail(this.data.id)
+        }
+      },
+      immediate: true,
+    },
+  },
   data() {
     return {
       form: {
@@ -103,51 +133,130 @@
         approver: "",
         approveTime: ""
       },
+      groupTableData: [],
+      approvalProcessData: [],
       radio1: 1,
       rules: {},
       status: "1",
       remark: "",
     };
   },
-  computed: {
-    dialogTitle() {
-      return this.type === "approve" ? "审批实验中止申请" : "实验中止申请审批详情";
-    },
-  },
-  watch: {
-    data: {
-      handler(val) {
-        if (val) {
-          this.form = { ...val };
-        }
-      },
-      immediate: true,
-    },
-  },
   methods: {
+    async getDialogDetail(id) {
+      try {
+        const res = await getDetail({ id });
+        if (!res) {
+          this.$message.error('获取方案详情失败');
+          this.handleClose();
+          return;
+        }
+        if(res.stopReason){
+          this.showApprovalFlow = true;
+          //中止实验申请
+          let processData = [];
+          processData.push({
+              type: "primary",
+              mode: "list",
+              fields: [
+                { label: "提交人:", value: res.updateBy || "" },
+                { label: "提交时间:", value: res.createTime || "" },
+              ],
+            });
+            if(res.status==4||res.status==3){
+              processData.push({
+                type:'primary',
+                mode: "list",
+                fields: [
+                  {
+                    label: "审核结果:",
+                    value:
+                      res.status ==3
+                        ? "通过"
+                        : res.status ==4
+                        ? "驳回"
+                        : "待审批",
+                  },
+                  { label: "审批意见:", value: res.auditRemark || "" },
+                  { label: "审核人:", value: res.auditPersonName || "" },
+                  { label: "审核时间:", value: res.auditTime || "" },
+                ],
+              });
+            }else{
+              processData.push({
+                type: "warning",
+                mode: "list",
+                fields: [
+                  { label: "等待审核"},
+                ],
+              });
+            }
+            this.approvalProcessData = processData;
+        }
+
+        // 填充基本表单数据
+        this.form = {
+          ...this.form,
+          stopReason: res.stopReason,
+        };
+        
+        // 构建实验调度数据
+        if (res.experimentDispatch) {
+          this.groupTableData = [res.experimentDispatch];
+        }
+        
+      } catch (error) {
+        console.error("获取方案详情失败:", error);
+        this.$message.error("获取方案详情失败");
+        this.handleClose();
+      }
+    },
+    getStatusType(status) {
+      const statusMap = {
+        "-1": "info",
+        "1": "warning",
+        "2": "success",
+        "3": "info"
+      };
+      return statusMap[status] || "info";
+    },
+    getStatusText(status) {
+      const statusMap = {
+        "-1": "草稿箱",
+        "1": "待确认",
+        "2": "已确认",
+        "3": "已封存"
+      };
+      return statusMap[status] || "未知";
+    },
     handleClose() {
-      this.$emit("update:visible", false);
-      this.form.approvalComment = "";
+      this.$emit('update:visible', false);
+      this.remark = "";
     },
     handleApprove() {
-      if (!this.form.approvalComment) {
+      if (!this.remark) {
         this.$message.warning("请输入审批意见");
         return;
       }
-      this.$emit("approve", {
-        ...this.form,
-        status: "approved",
-      });
+      this.handleSubmit();
     },
-    handleReject() {
-      if (!this.form.approvalComment) {
-        this.$message.warning("请输入审批意见");
-        return;
+    async handleSubmit() {
+      try {
+        const params = {
+          id: this.data.id,
+          auditRemark: this.remark,
+          status: this.status === '1' ? 3 : 4  // 1表示通过(status=3),2表示拒绝(status=4)
+        };
+        console.log('params params',params)
+        const res = await audit(params);
+        console.log('res res',res)
+        if (res) {
+          this.$message.success('审批成功');
+          this.handleClose();
+        }
+      } catch (error) {
+        console.error('审批失败:', error);
+        this.$message.error('审批失败');
       }
-      this.$emit("reject", {
-        ...this.form,
-        status: "rejected",
-      });
     },
   },
 };
diff --git a/laboratory/src/views/dataManagement/suspendExperiment/list.vue b/laboratory/src/views/dataManagement/suspendExperiment/list.vue
index d643cb0..830dce5 100644
--- a/laboratory/src/views/dataManagement/suspendExperiment/list.vue
+++ b/laboratory/src/views/dataManagement/suspendExperiment/list.vue
@@ -1,43 +1,64 @@
 <template>
   <div class="list">
-    <TableCustom :queryForm="form" :tableData="tableData" :total="total">
+    <TableCustom :queryForm="form" :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 label="项目课题方案名称:">
+            <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-date-picker
+              v-model="form.createTime"
+              type="daterange"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+              value-format="yyyy-MM-dd"
+              @change="handleDateChange"
+            ></el-date-picker>
           </el-form-item>
-          <el-form-item label="状态">
-            <el-input v-model="form.approver" placeholder="请输入"></el-input>
+          <el-form-item label="状态:">
+            <el-select v-model="form.status" placeholder="请选择">
+              <el-option label="全部" value=""></el-option>
+              <el-option label="待审核" :value="2"></el-option>
+              <el-option label="已通过" :value="3"></el-option>
+              <el-option label="已驳回" :value="4"></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" style="margin-left: 20px;">查询</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')">申请中止试验方案列表
-            </div>
+          <div class="flex a-center flex-wrap">
+            <div 
+              class="title"
+              :class="{active:currentType == 'list'}"
+              @click="handleTypeChange('list')"
+            >申请中止试验方案列表</div>
           </div>
         </div>
       </template>
       <template #table>
-        <el-table-column prop="planCode" label="所属项目课题方案"></el-table-column>
-        <el-table-column prop="planName" label="实验编号"></el-table-column>
-        <el-table-column prop="stage" 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="approver" label="提交时间"></el-table-column>
-        <el-table-column prop="approveTime" label="提交人"></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="schemePersonName" label="实验员"></el-table-column>
+        <el-table-column prop="createTime" label="创建日期"></el-table-column>
+        <el-table-column prop="createBy" label="创建人"></el-table-column>
         <el-table-column prop="status" label="当前状态">
           <template slot-scope="scope">
             <el-tag :type="getStatusType(scope.row.status)">
@@ -45,25 +66,39 @@
             </el-tag>
           </template>
         </el-table-column>
-        
         <el-table-column label="操作" width="250">
           <template slot-scope="scope">
-            <el-button v-if="scope.row.status === 'pending'" type="text"
-              @click="handleApprove(scope.row)">审批</el-button>
-            
-            <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
+            <!-- 超级管理员(1) -->
+            <template v-if="userRole == '1'">
+              <el-button type="text" @click="handleDetail(scope.row)">详情</el-button>
+            </template>
+
+            <!-- 审批人(2) -->
+            <template v-if="userRole == '2'">
+              <el-button 
+                v-if="scope.row.status == 2" 
+                type="text" 
+                @click="handleApprove(scope.row)"
+              >审批</el-button>
+              <el-button v-else type="text" @click="handleDetail(scope.row)">详情</el-button>
+            </template>
           </template>
         </el-table-column>
       </template>
     </TableCustom>
     <!-- 审批弹窗 -->
-    <approval-dialog :visible.sync="approvalDialogVisible" :type="approvalDialogType" :data="currentApprovalData"
-      @approve="handleApproveSubmit" @reject="handleRejectSubmit" />
+    <approval-dialog
+      :visible.sync="approvalDialogVisible"
+      :type="approvalDialogType"
+      :data="currentApprovalData"
+      @close="handleClose"
+    />
   </div>
 </template>
 
 <script>
 import ApprovalDialog from './components/approvalDialog.vue'
+import {getList} from './service'
 
 export default {
   name: "ProjectList",
@@ -72,170 +107,128 @@
   },
   data() {
     return {
-      currentType: 'list', // 当前显示类型:list-列表,draft-草稿箱
+      currentType: 'list',
       form: {
-        planName: "",
-        planCode: "",
-        creator: "",
+        projectName: "",
+        experimentCode: "",
         createTime: [],
-        approver: "",
         status: "",
+        startTime: "",
+        endTime: "",
+        pageNum: 1,
+        pageSize: 10
       },
       tableData: [],
       total: 0,
-      // 模拟数据
-      mockListData: [
-        {
-          planCode: 'PLAN-2024-001',
-          planName: '2024年度实验室设备升级方案',
-          stage: '规划阶段',
-          creator: '张三',
-          createTime: '2024-03-15',
-          status: 'pending',
-          approver: '李四',
-          approveTime: '2024-03-16'
-        },
-        {
-          planCode: 'PLAN-2024-002',
-          planName: '实验室安全管理制度更新方案',
-          stage: '实施阶段',
-          creator: '王五',
-          createTime: '2024-03-14',
-          status: 'approved',
-          approver: '赵六',
-          approveTime: '2024-03-15'
-        },
-        {
-          planCode: 'PLAN-2024-003',
-          planName: '实验室人员培训计划',
-          stage: '准备阶段',
-          creator: '孙七',
-          createTime: '2024-03-13',
-          status: 'rejected',
-          approver: '周八',
-          approveTime: '2024-03-14'
-        }
-      ],
-      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',
+      approvalDialogType: 'view',
       currentApprovalData: null,
+      userRole: '',
     };
   },
   created() {
+    const userInfo = JSON.parse(sessionStorage.getItem('userInfo') || '{}');
+    this.userRole = userInfo.roleType || '';
     this.getTableData();
   },
   methods: {
+    handlePageChange(page) {
+      this.form.pageNum = page;
+      this.getTableData();
+    },
+    handleSizeChange(size) {
+      this.form.pageSize = size;
+      this.form.pageNum = 1;
+      this.getTableData();
+    },
     resetForm() {
       this.form = {
-        planName: "",
-        planCode: "",
-        creator: "",
+        projectName: "",
+        experimentCode: "",
         createTime: [],
-        approver: "",
         status: "",
+        startTime: "",
+        endTime: "",
+        pageNum: 1,
+        pageSize: 10
       };
+      this.getTableData();
     },
     handleSearch() {
-      // 实现查询逻辑
-      console.log("查询条件:", this.form);
+      this.form.pageNum = 1;
+      this.getTableData();
     },
     getStatusType(status) {
       const statusMap = {
-        pending: "warning",
-        rejected: "danger",
-        approved: "success",
-        archived: "info",
-        draft: "info"
+        '-1': "info",
+        '1': "warning",
+        '2': "warning",
+        '3': "success",
+        '4': "danger",
+        '5': "info",
+        '6':'success'
       };
       return statusMap[status] || "info";
     },
     getStatusText(status) {
       const statusMap = {
-        pending: "待审批",
-        rejected: "已驳回",
-        approved: "已通过",
-        archived: "已封存",
-        draft: "草稿"
+        '-1': "草稿",
+        '1': "已发送",
+        '2': "待审核",
+        '3': "已通过",
+        '4': "已驳回",
+        '5': "已封存",
+        '6':'实验员已提交'
       };
       return statusMap[status] || "未知";
     },
-    handleAddPlan() {
-      this.$router.push({
-        path: "/dataManagement/addPlan",
-      });
-    },
-    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) {
-      // 实现编辑逻辑
-      console.log("编辑数据:", row);
-    },
-    handleDelete(row) {
-      // 实现删除逻辑
-      console.log("删除数据:", row);
-    },
-    handleDetail(row) {
-      this.currentApprovalData = row;
-      this.approvalDialogType = 'view';
-      this.approvalDialogVisible = true;
+    handleDateChange(val) {
+      if (val) {
+        this.form.startTime = val[0];
+        this.form.endTime = val[1];
+      } else {
+        this.form.startTime = '';
+        this.form.endTime = '';
+      }
     },
     handleTypeChange(type) {
       this.currentType = type;
+      this.form.pageNum = 1;
       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;
+    async getTableData() {
+      try {
+        const { data } = await getList(this.form);
+        this.tableData = data.records || [];
+        this.total = data.total || 0;
+      } catch (error) {
+        console.error('获取列表数据失败:', error);
+        this.$message.error('获取列表数据失败');
       }
     },
+    handleApprove(row) {
+      this.approvalDialogType = 'approve';
+      this.approvalDialogVisible = true;
+      this.currentApprovalData = {
+        id: row.id
+      };
+    },
+    handleDetail(row) {
+      this.approvalDialogType = 'view';
+      this.approvalDialogVisible = true;
+      this.currentApprovalData = {
+        id: row.id
+      };
+    },
+    handleClose(data) {
+      this.approvalDialogVisible = false;
+      this.getTableData();
+    },
+    handleRejectSubmit(data) {
+      this.approvalDialogVisible = false;
+      this.$message.success('审批驳回成功');
+      this.getTableData();
+    }
   },
 };
 </script>
@@ -287,4 +280,5 @@
     border: 1px solid #049c9a;
   }
 }
+</style>
 </style>
\ No newline at end of file
diff --git a/laboratory/src/views/dataManagement/suspendExperiment/service.js b/laboratory/src/views/dataManagement/suspendExperiment/service.js
new file mode 100644
index 0000000..3f27d54
--- /dev/null
+++ b/laboratory/src/views/dataManagement/suspendExperiment/service.js
@@ -0,0 +1,16 @@
+import axios from '@/utils/request';
+
+// 列表
+export const getList = (data) => {
+  return axios.post('/api/t-experiment-scheme/auditPageList', { ...data })
+}
+// 详情
+export const getDetail = (data) => {
+  return axios.get('/open/t-experiment-scheme/getDetailById', { params:data })
+}
+
+
+// 审批
+export const audit = (data) => {
+  return axios.post('/api/t-experiment-scheme/audit', { ...data })
+}

--
Gitblit v1.7.1