From e65a6e0bbdf46c377b0c340259cc69a32a52511b Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期三, 28 五月 2025 17:29:02 +0800
Subject: [PATCH] 对接菌种验证数据资料接口

---
 culture/src/views/strain-library/validation/primitive-cell/index.vue |  236 +++++++++++++++++-----------------------------------------
 1 files changed, 70 insertions(+), 166 deletions(-)

diff --git a/culture/src/views/strain-library/validation/primitive-cell/index.vue b/culture/src/views/strain-library/validation/primitive-cell/index.vue
index 69f9baf..7e87e13 100644
--- a/culture/src/views/strain-library/validation/primitive-cell/index.vue
+++ b/culture/src/views/strain-library/validation/primitive-cell/index.vue
@@ -1,24 +1,20 @@
 <template>
   <div class="list">
     <!-- Table -->
-    <TableCustom
-      :queryForm="queryForm"
-      :tableData="tableData"
-      :total="total"
-      @currentChange="handleCurrentChange"
-      @sizeChange="handleSizeChange"
-    >
+    <TableCustom :queryForm="queryForm" :tableData="tableData" :total="total" @currentChange="handleCurrentChange"
+      @sizeChange="handleSizeChange">
       <template #search>
         <el-form :model="form" label-width="auto" inline>
           <el-form-item label="鉴别菌株编号:">
-            <el-input v-model="form.strainNo" placeholder="请输入"></el-input>
+            <el-input v-model="form.identifyingStrainCode" placeholder="请输入"></el-input>
           </el-form-item>
           <el-form-item label="鉴别菌株名称:">
-            <el-input v-model="form.strainName" placeholder="请输入"></el-input>
+            <el-input v-model="form.identifyingStrainName" placeholder="请输入"></el-input>
           </el-form-item>
           <el-form-item label="验证实验编号:">
-            <el-input v-model="form.strainName" placeholder="请输入"></el-input>
+            <el-input v-model="form.validationExperimentCode" placeholder="请输入"></el-input>
           </el-form-item>
+
           <el-form-item class="search-btn-box">
             <el-button type="default" @click="resetForm">重置</el-button>
             <el-button type="primary" @click="searchData">查询</el-button>
@@ -29,162 +25,86 @@
       <template #setting>
         <div class="tableTitle">
           <div class="flex a-center">
-            <div
-              class="title"
-              :class="{ active: currentType === 'list' }"
-              @click="handleTypeChange('list')"
-            >
+            <div class="title" :class="{ active: currentType === 'list' }" @click="handleTypeChange('list')">
               原始细胞库验证资料
             </div>
-            <div
-              class="drafts"
-              :class="{ active: currentType === 'draft' }"
-              @click="handleTypeChange('draft')"
-            >
+            <div class="drafts" :class="{ active: currentType === 'draft' }" @click="handleTypeChange('draft')">
               草稿箱
             </div>
           </div>
           <div class="flex a-center">
-            <el-button
-              @click="handleNewStrain"
-              class="el-icon-plus"
-              type="primary"
-              style="margin-right: 12px"
-              >新增原始细胞库资料</el-button
-            >
+            <el-button @click="handleNewStrain" class="el-icon-plus" type="primary"
+              style="margin-right: 12px">新增原始细胞库资料</el-button>
           </div>
         </div>
       </template>
 
       <template #table>
-        <el-table-column prop="source" label="菌种来源" />
-        <el-table-column prop="method" label="鉴别菌株编号" />
-        <el-table-column prop="certificate" label="鉴别菌株名称" />
-        <el-table-column prop="storage" label="验证实验编号" />
-        <el-table-column prop="amount" label="创建人" />
-        <el-table-column prop="inventory" label="创建时间" />
-        <el-table-column prop="status" label="状态">
+        <el-table-column prop="strainSource" label="菌种来源" />
+        <el-table-column prop="identifyingStrainCode" label="鉴别菌株编号" />
+        <el-table-column prop="identifyingStrainName" label="鉴别菌株名称" />
+        <el-table-column prop="validationExperimentCode" label="验证实验编号" />
+        <el-table-column prop="createBy" label="创建人" />
+        <el-table-column prop="createTime" label="创建时间" />
+        <el-table-column prop="status" label="状态" v-if="currentType == 'list'">
           <template #default="{ row }">
-            <el-tag :type="getStatusType(row.status)">{{
-              getStatusText(row.status)
-            }}</el-tag>
+            <el-tag v-if="row.status == 1" type="info">待确认</el-tag>
+            <el-tag v-if="row.status == 2" type="success">已提交</el-tag>
           </template>
         </el-table-column>
         <el-table-column label="操作" width="200">
           <template #default="{ row }">
-            <el-button
-              type="text"
-              @click="$router.push('/strain/validation/confirm-detail')"
-              >确认</el-button
-            >
-            <el-button type="text" @click="handleDetail(row)">详情1</el-button>
-            <el-button type="text" @click="handleDetail2(row)">详情2</el-button>
+            <el-button type="text" @click="$router.push('/strain/validation/confirm-detail')">确认</el-button>
+            <el-button type="text" @click="handleDetail(row)">详情</el-button>
+            <el-button type="text" @click="handleDetail2(row)">详情</el-button>
             <el-button type="text" @click="handleEdit(row)">编辑</el-button>
             <el-button type="text" @click="handleRecord(row)">删除</el-button>
           </template>
         </el-table-column>
       </template>
     </TableCustom>
-    <PrimitiveCellDetailDialog
-      :visible.sync="detailVisible"
-      :detail="currentDetail"
-    />
-    <DetailConditionDialog
-    :visible.sync="detailDialogVisible"
-    :value="detailDialogValue"
-/>
+    <PrimitiveCellDetailDialog :visible.sync="detailVisible" :detail="currentDetail" />
+    <DetailConditionDialog :visible.sync="detailDialogVisible" :value="detailDialogValue" />
+    <EditConditionDialog :visible.sync="editDialogVisible" :value="editDialogValue" />
   </div>
 </template>
 
 <script>
 import PrimitiveCellDetailDialog from "./primitive-cell-detail-dialog.vue";
 import DetailConditionDialog from "./DetailConditionDialog.vue";
+import EditConditionDialog from "./EditConditionDialog.vue";
+
+import { getList } from "./service";
 export default {
   name: "PrimitiveCell",
   components: {
     PrimitiveCellDetailDialog,
     DetailConditionDialog,
+    EditConditionDialog,
   },
   data() {
     return {
-        detailDialogVisible: false,
-        detailDialogValue: {},
+      detailDialogVisible: false,
+      detailDialogValue: {},
       dialogVisible: false,
       currentType: "list",
       detailVisible: false,
       currentDetail: {},
       form: {
-        strainNo: "",
-        strainName: "",
-        status: "",
+        identifyingStrainCode: "",
+        identifyingStrainName: "",
+        validationExperimentCode: "",
+        startTime: "",
+        endTime: "",
+        isDraft: 0,
+        strainType: 1,
       },
       queryForm: {
         pageSize: 10,
         pageNum: 1,
       },
-      total: 800,
-      tableData: [
-        {
-          strainNo: "YX-2024001",
-          strainName: "大肠杆菌",
-          source: "实验室分离",
-          method: "形态学鉴定、生理生化试验",
-          certificate: "革兰氏阴性杆菌,可发酵葡萄糖产酸产气,IMViC试验++--",
-          storage: "斜面培养",
-          amount: "A区-01-001",
-          inventory: "50",
-          notes: "用于质粒转化",
-          status: "1",
-        },
-        {
-          strainNo: "YX-2024002",
-          strainName: "枯草芽孢杆菌",
-          source: "菌种保藏中心",
-          method: "16S rDNA测序",
-          certificate: "革兰氏阳性芽孢杆菌,可水解淀粉,产生溶菌素",
-          storage: "冷冻保存",
-          amount: "B区-02-005",
-          inventory: "30",
-          notes: "工业发酵菌种",
-          status: "1",
-        },
-        {
-          strainNo: "YX-2024003",
-          strainName: "酿酒酵母",
-          source: "发酵工厂",
-          method: "显微镜观察、生理特性",
-          certificate: "椭圆形单细胞真菌,可发酵葡萄糖产生乙醇",
-          storage: "甘油管保存",
-          amount: "A区-03-002",
-          inventory: "40",
-          notes: "发酵工艺优化",
-          status: "2",
-        },
-        {
-          strainNo: "YX-2024004",
-          strainName: "乳酸菌",
-          source: "乳制品分离",
-          method: "生化鉴定、API条",
-          certificate: "革兰氏阳性球菌,产生乳酸,耐酸性强",
-          storage: "冷冻干燥",
-          amount: "C区-01-003",
-          inventory: "25",
-          notes: "益生菌研究",
-          status: "3",
-        },
-        {
-          strainNo: "YX-2024005",
-          strainName: "青霉菌",
-          source: "环境样本",
-          method: "形态学特征、ITS测序",
-          certificate: "丝状真菌,产生蓝绿色分生孢子,可产青霉素",
-          storage: "斜面培养",
-          amount: "B区-04-001",
-          inventory: "35",
-          notes: "次级代谢产物研究",
-          status: "1",
-        },
-      ],
+      total: 0,
+      tableData: [],
     };
   },
   methods: {
@@ -193,43 +113,38 @@
       this.detailVisible = true;
     },
     handleDetail2(row) {
-        this.detailDialogValue = row;
-        this.detailDialogVisible = true;
+      this.detailDialogValue = row;
+      this.detailDialogVisible = true;
     },
     handleViewMore() {
       this.dialogVisible = true;
     },
     resetForm() {
       this.form = {
-        strainNo: "",
-        strainName: "",
-        status: "",
+        identifyingStrainCode: "",
+        identifyingStrainName: "",
+        startTime: "",
+        endTime: "",
+        validationExperimentCode: "",
+        isDraft: this.currentType === 'draft' ? 1 : 0,
+        strainType: 1,
       };
       this.searchData();
     },
-    searchData() {
-      // 模拟搜索逻辑
-      const { strainNo, strainName, status } = this.form;
-      let filteredData = [...this.tableData];
-
-      if (strainNo) {
-        filteredData = filteredData.filter((item) =>
-          item.strainNo.toLowerCase().includes(strainNo.toLowerCase())
-        );
+    async searchData() {
+      const params = {
+        ...this.form,
+        pageNum: this.queryForm.pageNum,
+        pageSize: this.queryForm.pageSize,
+      };
+      try {
+        const res = await getList(params);
+        this.tableData = res.data?.records || [];
+        this.total = res.data?.total || 0;
+      } catch (e) {
+        this.tableData = [];
+        this.total = 0;
       }
-      if (strainName) {
-        filteredData = filteredData.filter((item) =>
-          item.strainName.toLowerCase().includes(strainName.toLowerCase())
-        );
-      }
-      if (status) {
-        filteredData = filteredData.filter((item) => item.status === status);
-      }
-
-      this.total = filteredData.length;
-      // 实际项目中这里应该调用API
-      console.log("搜索条件:", this.form);
-      console.log("分页信息:", this.queryForm);
     },
     handleNewStrain() {
       this.$router.push("/strain/validation/add-primitive-cell");
@@ -251,32 +166,21 @@
     },
     handleCurrentChange(page) {
       this.queryForm.pageNum = page;
-      // Implement page change logic
+      this.searchData();
     },
     handleSizeChange(size) {
       this.queryForm.pageSize = size;
-      // Implement size change logic
+      this.searchData();
     },
     handleTypeChange(type) {
       this.currentType = type;
-      // Implement type change logic
+      this.form.isDraft = type === "draft" ? 1 : 0;
+      this.form.strainType = 1; // 1: 原始细胞库
+      this.searchData();
     },
-    getStatusType(status) {
-      const types = {
-        1: "success",
-        2: "info",
-        3: "warning",
-      };
-      return types[status] || "info";
-    },
-    getStatusText(status) {
-      const texts = {
-        1: "已入库",
-        2: "已出库",
-        3: "入库待确认",
-      };
-      return texts[status] || "未知状态";
-    },
+  },
+  mounted() {
+    this.searchData();
   },
 };
 </script>

--
Gitblit v1.7.1