From 4a364d65d24020dcacab6c1ee86f854d8de8cd36 Mon Sep 17 00:00:00 2001
From: pyt <626651354@qq.com>
Date: 星期一, 19 五月 2025 09:05:19 +0800
Subject: [PATCH] feat

---
 culture/src/views/strain-library/strain-library-manage/components/StrainDetail.vue |  210 +++++++++++++++++++++++++++++-----------------------
 1 files changed, 117 insertions(+), 93 deletions(-)

diff --git a/culture/src/views/strain-library/strain-library-manage/components/StrainDetail.vue b/culture/src/views/strain-library/strain-library-manage/components/StrainDetail.vue
index 6b64853..eaa73e3 100644
--- a/culture/src/views/strain-library/strain-library-manage/components/StrainDetail.vue
+++ b/culture/src/views/strain-library/strain-library-manage/components/StrainDetail.vue
@@ -1,94 +1,99 @@
 <template>
-    <el-dialog
-        title="原始细胞库详情"
-        :visible.sync="visible"
-        width="70%"
-        :close-on-click-modal="false"
-        custom-class="strain-detail-dialog"
-        append-to-body
-        @close="$emit('update:visible', false)"
-    >
-        <div class="strain-info">
-            <!-- 第一行信息 -->
-            <div class="info-row">
-                <div class="info-item left-column">
-                    <span class="label">菌种编号:</span>
-                    <span class="value">{{ detail.strainNo }}</span>
+    <div>
+        <el-dialog title="原始细胞库详情" :visible.sync="visible" width="70%" :close-on-click-modal="false"
+            custom-class="strain-detail-dialog" @close="$emit('update:visible', false)" @opened="fetchDetail">
+            <div class="strain-info">
+                <!-- 第一行信息 -->
+                <div class="info-row">
+                    <div class="info-item left-column">
+                        <span class="label">菌种编号:</span>
+                        <span class="value">{{ detail.strainCode }}</span>
+                    </div>
+                    <div class="info-item flex-column">
+                        <span class="label">鉴定方法:</span>
+                        <span class="value">{{ detail.appraisalMethod }}</span>
+                    </div>
+                    <div class="info-item flex-column">
+                        <span class="label">保藏位置:</span>
+                        <span class="value">{{ detail.saveLocation }}</span>
+                    </div>
                 </div>
-                <div class="info-item flex-column">
-                    <span class="label">鉴定方法:</span>
-                    <span class="value">{{ detail.method }}</span>
-                </div>
-                <div class="info-item flex-column">
-                    <span class="label">保存位置:</span>
-                    <span class="value">{{ detail.amount }}</span>
-                </div>
-            </div>
-            
-            <!-- 第二行信息 -->
-            <div class="info-row">
-                <div class="info-item left-column">
-                    <span class="label">菌种名称:</span>
-                    <span class="value">{{ detail.strainName }}</span>
-                </div>
-                <div class="info-item flex-column full-width">
-                    <span class="label">特性描述:</span>
-                    <span class="value">{{ detail.certificate }}</span>
-                </div>
-            </div>
-            
-            <!-- 第三行信息 -->
-            <div class="info-row">
-                <div class="info-item left-column">
-                    <span class="label">菌种来源:</span>
-                    <span class="value">{{ detail.source }}</span>
-                </div>
-                <div class="info-item flex-column">
-                    <span class="label">菌种保存方法:</span>
-                    <span class="value">{{ detail.storage }}</span>
-                </div>
-                <div class="info-item flex-column">
-                    <span class="label">出入库状态:</span>
-                    <span class="value">{{ detail.operator }}</span>
-                </div>
-            </div>
-        </div>
 
-        <div class="record-table">
-            <div class="table-title">原始细胞库出/入库记录</div>
-            <el-table :data="detail.records" style="width: 100%">
-                <el-table-column prop="type" label="出库/入库" />
-                <el-table-column prop="operateTime" label="操作时间" />
-                <el-table-column prop="operator" label="操作人姓名" />
-                <el-table-column prop="reviewer" label="签核确认人姓名" />
-                <el-table-column prop="status" label="状态">
-                    <template #default="{ row }">
-                        <el-tag :type="row.status === '已确认' ? 'success' : 'warning'">
-                            {{ row.status }}
-                        </el-tag>
-                    </template>
-                </el-table-column>
-                <el-table-column label="操作" width="100">
-                    <template #default="{ row }">
-                        <el-button type="text" @click="handleView(row)">详情</el-button>
-                    </template>
-                </el-table-column>
-            </el-table>
-            <div class="pagination">
-                <el-pagination
-                    :current-page.sync="currentPage"
-                    :page-size="10"
-                    layout="total, prev, pager, next"
-                    :total="total"
-                    @current-change="handlePageChange"
-                />
+                <!-- 第二行信息 -->
+                <div class="info-row">
+                    <div class="info-item left-column">
+                        <span class="label">菌种名称:</span>
+                        <span class="value">{{ detail.strainName }}</span>
+                    </div>
+                    <div class="info-item flex-column full-width">
+                        <span class="label">特性描述:</span>
+                        <span class="value">{{ detail.features }}</span>
+                    </div>
+                </div>
+
+                <!-- 第三行信息 -->
+                <div class="info-row">
+                    <div class="info-item left-column">
+                        <span class="label">菌种来源:</span>
+                        <span class="value">{{ detail.strainSource }}</span>
+                    </div>
+                    <div class="info-item flex-column">
+                        <span class="label">菌种保存方法:</span>
+                        <span class="value">{{ detail.saveMethod }}</span>
+                    </div>
+                    <div class="info-item flex-column">
+                        <span class="label">出入库状态:</span>
+                        <span class="value">{{ {
+                            1: '已出库',
+                            2: '出库待确认',
+                            3: '已入库',
+                            4: '入库待确认'
+                            }[detail.status] || '' }}</span>
+                    </div>
+                </div>
             </div>
-        </div>
-    </el-dialog>
+
+            <div class="record-table">
+                <div class="table-title">原始细胞库出/入库记录</div>
+                <el-table :data="detail.records" style="width: 100%">
+                    <el-table-column label="出库/入库">
+                        <template #default="{ row }">
+                            {{ { 1: '出库', 2: '入库' }[row.type] || '' }}
+                        </template>
+                    </el-table-column>
+                    <el-table-column prop="boundTime" label="操作时间" />
+                    <el-table-column prop="handleName" label="操作人姓名" />
+                    <el-table-column prop="preserveName" label="签核确认人姓名" />
+                    <el-table-column label="状态">
+                        <template #default="{ row }">
+                            <el-tag :type="row.confirmTime ? 'success' : 'warning'">
+                                {{ row.confirmTime ? '已确认' : '待确认' }}
+                            </el-tag>
+                        </template>
+                    </el-table-column>
+                    <el-table-column label="操作" width="100">
+                        <template #default="{ row }">
+                            <el-button type="text" @click="handleView(row)">确认</el-button>
+                            <el-button style="margin-left: 10px;" type="text" @click="handleView(row)">详情</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <div class="pagination">
+                    <el-pagination :current-page.sync="currentPage" :page-size="10" layout="total, prev, pager, next"
+                        :total="total" @current-change="handlePageChange" />
+                </div>
+            </div>
+        </el-dialog>
+        <RecordDetailDialog :visible="visibleRecordDetailDialog" :recordData="recordData" @close="visibleRecordDetailDialog = false" />
+    </div>
+
 </template>
 
 <script>
+import { getDetailById } from '../service'
+import RecordDetailDialog from './RecordDetailDialog.vue'
 export default {
+    components: { RecordDetailDialog },
     name: 'StrainDetail',
     props: {
         visible: {
@@ -102,13 +107,32 @@
     },
     data() {
         return {
+            visibleRecordDetailDialog: false,
+            recordData: {},
             currentPage: 1,
-            total: 0
+            total: 0,
+            query: {
+                endTime: '',
+                id: '',
+                pageNum: 1,
+                pageSize: 10,
+                startTime: ''
+            }
         }
     },
     methods: {
+        fetchDetail() {
+            this.query.id = this.detail.id
+            getDetailById(this.query).then(res => {
+                this.detail.records = res.warehousingList?.records || [];
+                this.total = res.warehousingList?.total || 0;
+                this.currentPage = res.warehousingList?.current || 1;
+            })
+        },
         handleView(row) {
             console.log('View record:', row)
+            this.visibleRecordDetailDialog = true;
+            this.recordData = row;
         },
         handlePageChange(page) {
             this.currentPage = page
@@ -124,7 +148,7 @@
         padding: 20px;
         border-bottom: 1px solid #EBEEF5;
         margin-right: 0;
-        
+
         .el-dialog__title {
             font-size: 18px;
             font-weight: bold;
@@ -147,38 +171,38 @@
         display: flex;
         flex-wrap: wrap;
         margin-bottom: 16px;
-        
+
         &:last-child {
             margin-bottom: 0;
         }
-        
+
         .info-item {
             display: flex;
             align-items: flex-start;
             margin-right: 24px;
             margin-bottom: 8px;
-            
+
             &.left-column {
                 width: 33%;
                 min-width: 200px;
             }
-            
+
             &.flex-column {
                 flex: 1;
                 min-width: 150px;
             }
-            
+
             &.full-width {
                 flex: 1;
                 min-width: 300px;
             }
-            
+
             .label {
                 color: #606266;
                 margin-right: 8px;
                 white-space: nowrap;
             }
-            
+
             .value {
                 flex: 1;
                 color: #303133;
@@ -204,4 +228,4 @@
         justify-content: center;
     }
 }
-</style> 
\ No newline at end of file
+</style>
\ No newline at end of file

--
Gitblit v1.7.1