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