From d82e210c6de4163d5a528f385b5582d8822cb69f Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期五, 23 五月 2025 17:13:52 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue |  253 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 241 insertions(+), 12 deletions(-)

diff --git a/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue b/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
index b33a9ad..b363297 100644
--- a/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
+++ b/culture/src/views/strainReportLibrary/reportLibraryOneTWO/add.vue
@@ -27,9 +27,9 @@
                         <div>报告编号</div>
                     </div>
                 </div>
-                <form-item prop="name" style="margin-top: 38px">
+                <el-form-item prop="name" style="margin-top: 38px">
                     <el-input v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
-                </form-item>
+                </el-form-item>
 
                 <div class="header-title" style="width: 100%;">
                     <div class="header-title-left">
@@ -37,9 +37,9 @@
                         <div>报告名称</div>
                     </div>
                 </div>
-                <form-item prop="name" style="margin-top: 38px">
+                <el-form-item prop="name" style="margin-top: 38px">
                     <el-input v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
-                </form-item>
+                </el-form-item>
 
                 <div class="header-title" style="width: 100%;">
                     <div class="header-title-left">
@@ -47,20 +47,87 @@
                         <div>报告正文</div>
                     </div>
                 </div>
-                <form-item prop="name" style="margin-top: 38px">
+                <el-form-item prop="name" style="margin-top: 38px">
                     <ai-editor v-model="form.name" style="width: 100%;" placeholder="请输入报告编号" />
-                </form-item>
+                </el-form-item>
                 <div class="header-title" style="width: 100%;">
                     <div class="header-title-left">
                         <img src="@/assets/public/headercard.png" />
                         <div>附件</div>
                     </div>
                 </div>
-                <form-item prop="name" style="margin-top: 38px">
+                <el-form-item prop="name" style="margin-top: 38px">
                     <el-upload action="https://jsonplaceholder.typicode.com/posts/" :file-list="fileList">
                         <el-button size="small" type="primary">点击上传</el-button>
                     </el-upload>
-                </form-item>
+                </el-form-item>
+                <div class="header-title" style="width: 100%;">
+                    <div class="header-title-left">
+                        <img src="@/assets/public/headercard.png" />
+                        <div>菌种实验员操作评定</div>
+                    </div>
+                </div>
+
+                <div class="header-title" style="width: 100%;display: flex; align-items: center;">
+                    <div class="header-title-left mt-unset">
+                        <!-- <img src="@/assets/public/headercard.png" /> -->
+                        <div>菌种实验员</div>
+                    </div>
+                    <div class="header-title-right">
+                        <el-button @click="showChoose = true" class="el-icon-circle-plus-outline" type="primary">
+                            选择菌种实验员</el-button>
+                    </div>
+                </div>
+                <div class="member-list">
+                    <div class="member-list-card">
+                        <div class="member-item">
+                            <div class="member-title">
+                                菌种实验员
+                            </div>
+                            <div class="member-name-box">
+                                <div class="member-name">
+                                    张三
+                                </div>
+                            </div>
+                            <div class="member-change">
+                                <div class="member-change-btn">修改</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
+                <div class="table" style="margin-top: 38px">
+                    <el-table :data="assessmentTable" border style="width: 100%" :show-summary="true"
+                        :span-method="tableSpanMethod" :summary-method="getTableSummary">
+                        <el-table-column prop="category" label="菌种实验员专业能力考核项" width="180"></el-table-column>
+                        <el-table-column prop="score" label="该项评分" width="120">
+                            <template slot-scope="scope">
+                                <el-radio-group v-if="scope.row.category !== '5.实验失败'" v-model="scope.row.selectedScore">
+                                    <el-radio :label="0">0分</el-radio>
+                                    <el-radio :label="1">1分</el-radio>
+                                    <el-radio :label="2">2分</el-radio>
+                                </el-radio-group>
+                                <el-radio-group v-else v-model="scope.row.selectedScore">
+                                    <el-radio :label="0">否0分</el-radio>
+                                    <el-radio :label="-3">是-3分</el-radio>
+                                </el-radio-group>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="criteria" label="该项评分参考标准"></el-table-column>
+                        <el-table-column prop="desc" label="评分规则说明">
+                            <template slot-scope="scope">
+                                <p> 【0分】 实验操作失误或实验方案设计无效导致实验失败、数据不可用。</p>
+                                <p> 【1分】存在操作有误及实验过程出现问题,没有严格按照操作规程运行;如实验准备不充分,取样遗漏等。</p>
+                                <p> 【2分】完整按照操作规程及实验室管理制度运行,无任何问题。</p>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="rule" label="考评规则">
+                            <template slot-scope="scope">
+                                菌种工程师以分题内容考核菌种实验员。
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                </div>
 
                 <div class="end-btn" style="margin-top: 38px">
                     <el-button type="primary">发送</el-button>
@@ -74,6 +141,7 @@
 <script>
 import { Card } from 'element-ui';
 import AiEditor from '@/components/AiEditor'
+
 export default {
     components: { AiEditor },
     data() {
@@ -97,14 +165,88 @@
             remark: "",
             queryForm: {
 
-            }
+            },
+            assessmentTable: [
+                {
+                    category: '1.该分题的菌种专业知识',
+                    selectedScore: 0,
+                    criteria: '1.1 能讲生物学基础,掌握各类微生物形态特性、生化特性及鉴定方法。1.2 菌种选育技术,了解掌握自然选育、诱变选育、基因工程育种。',
+                    desc: '',
+                    rule: ''
+                },
+                {
+                    category: '2.操作能力',
+                    selectedScore: 0,
+                    criteria: '1.菌种分离无菌操作规范 2.菌种培养无菌操作规范 3.菌种保存无菌操作规范 4.菌种鉴定无菌操作规范',
+                    desc: '',
+                    rule: ''
+                },
+                {
+                    category: '3.仪器设备使用',
+                    selectedScore: 0,
+                    criteria: '能正确使用实验仪器,如移液器、恒温箱等,操作规范。',
+                    desc: '',
+                    rule: ''
+                },
+                {
+                    category: '4.实验数据记录与分析',
+                    selectedScore: 0,
+                    criteria: '实验数据记录及时、准确、完整,能简单分析数据。',
+                    desc: '',
+                    rule: ''
+                },
+                {
+                    category: '5.实验失败',
+                    selectedScore: 0,
+                    criteria: '无论何种原因,本次实验失败。',
+                    desc: '',
+                    rule: ''
+                }
+            ],
         }
-    }
+    },
+    computed: {
+        totalScore() {
+            return this.assessmentTable.reduce((sum, row) => sum + Number(row.selectedScore), 0)
+        }
+    },
+    methods: {
+        tableSpanMethod({ row, column, rowIndex, columnIndex }) {
+            // 评分规则说明(desc)和考评规则(rule)列合并所有行
+            // desc列索引为3,rule列索引为4(从0开始)
+            if (columnIndex === 3 || columnIndex === 4) {
+                if (rowIndex === 0) {
+                    return [this.assessmentTable.length, 1]; // 合并所有行
+                } else {
+                    return [0, 0]; // 其他行隐藏
+                }
+            }
+            return [1, 1];
+        },
+        getTableSummary(param) {
+            const { columns } = param;
+            const sums = [];
+            columns.forEach((column, index) => {
+                if (index === 0) {
+                    sums[index] = '合计';
+                } else if (index === 1) {
+                    sums[index] =this.totalScore + '分';
+                } else {
+                    sums[index] = '';
+                }
+            });
+            return sums;
+        },
+    },
 }
 
 </script>
 
 <style lang="less" scoped>
+.mt-unset {
+    margin-top: unset !important;
+}
+
 .header-title {
     display: flex;
     align-items: center;
@@ -159,15 +301,102 @@
     }
 }
 
-.end-btn{
+.end-btn {
     display: flex;
     align-items: center;
     gap: 10px;
 
-    button{
+    button {
         width: 180px;
         height: 36px;
         // background: #409EFF; 
     }
 }
+
+.member-list {
+    margin-top: 18px;
+    display: flex;
+    flex-wrap: wrap;
+    gap: 28px;
+
+    .member-list-card {
+        width: 340px;
+        height: 400px;
+        border-radius: 8px;
+        border: 1px solid #dcdfe6;
+        background: linear-gradient(to bottom,
+                rgba(5, 160, 193, 0.2) 0%,
+                rgba(5, 242, 194, 0) 70%);
+
+        .member-item {
+            height: 100%;
+            display: flex;
+            flex-direction: column;
+
+            .member-title {
+                margin-top: 20px;
+                width: 100%;
+                font-family: "Source Han Sans CN Bold Bold";
+                font-weight: bold;
+                font-size: 16px;
+                color: rgba(0, 0, 0, 0.8);
+                line-height: 16px;
+                text-align: center;
+            }
+
+            .flex1 {
+                flex: 1;
+            }
+
+            .member-name-box {
+                flex: 1;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+            }
+
+            .member-name-box-2 {
+                flex: 1;
+                padding: 0 20px;
+                padding-top: 40px;
+                display: grid;
+                grid-template-columns: repeat(4, 1fr);
+                gap: 20px;
+                justify-items: center;
+                align-items: start;
+            }
+
+            .member-name {
+                width: 60px;
+                height: 60px;
+                background: #7d8b79;
+                border-radius: 50%;
+                text-align: center;
+                line-height: 60px;
+                font-weight: 500;
+                font-size: 16px;
+                color: #ffffff;
+                margin: 0;
+            }
+
+            .member-change {
+                display: flex;
+                justify-content: center;
+                padding: 10px 0;
+                margin-top: auto;
+                cursor: pointer;
+
+                .member-change-btn {
+                    background: #fff1f0;
+                    border-radius: 4px;
+                    border: 1px solid #ffccc7;
+                    padding: 1px 8px;
+                    font-weight: 400;
+                    font-size: 12px;
+                    color: #ff4d4f;
+                }
+            }
+        }
+    }
+}
 </style>
\ No newline at end of file

--
Gitblit v1.7.1