WXL
2026-05-17 3453ba7e5243022ad4388da1515dc75ad8d81f94
src/views/business/assess/assessInfo.vue
@@ -1,63 +1,12 @@
<template>
  <div class="assessment-detail">
    <el-card class="basic-info-card">
      <div slot="header" class="clearfix">
        <span>案例基本信息</span>
        <el-button
          style="float: right; padding: 3px 0"
          type="text"
          @click="handleAttachmentPreview"
        >
          <i class="el-icon-folder-opened"></i> 查看附件
        </el-button>
      </div>
      <el-descriptions :column="2" border>
        <el-descriptions-item label="住院号">{{
          assessmentData.caseNo
        }}</el-descriptions-item>
        <el-descriptions-item label="潜在捐献者姓名">{{
          assessmentData.name || assessmentData.donorName
        }}</el-descriptions-item>
        <el-descriptions-item label="性别">
          <dict-tag
            :options="dict.type.sys_user_sex"
            :value="assessmentData.sex"
          />
        </el-descriptions-item>
        <el-descriptions-item label="年龄"
          >{{ assessmentData.age }}岁</el-descriptions-item
        >
        <el-descriptions-item label="血型">
          {{ assessmentData.bloodtype }}
        </el-descriptions-item>
        <el-descriptions-item label="证件号码">{{
          assessmentData.idcardno
        }}</el-descriptions-item>
        <el-descriptions-item label="疾病诊断">{{
          assessmentData.diagnosisname
        }}</el-descriptions-item>
        <el-descriptions-item label="所在医疗机构">{{
          assessmentData.treatmenthospitalname
        }}</el-descriptions-item>
        <el-descriptions-item label="协调员">{{
          assessmentData.coordinatorName
        }}</el-descriptions-item>
        <el-descriptions-item label="评估时间">{{
          assessmentData.assessTime
        }}</el-descriptions-item>
        <el-descriptions-item label="评估状态">
          <el-tag :type="statusFilter(assessmentData.assessState)">
            {{ statusTextFilter(assessmentData.assessState) }}
          </el-tag>
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
    <!-- 基础案例信息 -->
    <case-basic-info :case-id="caseId" :show-attachment="true" />
    <el-card class="organ-assessment-card">
      <div slot="header" class="clearfix">
        <span>器官评估表</span>
        <el-button
        <!-- <el-button
          v-if="isCoordinator && allOrgansAssessed"
          style="float: right; margin-left: 10px"
          type="primary"
@@ -69,7 +18,7 @@
        </el-button>
        <span v-if="!isCoordinator" class="jstitle">
          当前角色:{{ currentDepartment }}评估人员
        </span>
        </span> -->
      </div>
      <!-- 捐献决定表单 -->
@@ -123,7 +72,7 @@
                  v-for="(assessment, index) in getOrganAssessments(scope.row)"
                  :key="`${scope.row.organno}_${index}`"
                  :label="`第${index + 1}次评估`"
                  :name="index"
                  :name="String(index)"
                >
                  <organ-assessment-form
                    :organ-data="scope.row"
@@ -157,153 +106,211 @@
                </el-tab-pane>
                <!-- 评估汇总Tab -->
              <el-tab-pane label="评估汇总" name="summary">
  <div class="assessment-summary">
    <!-- 基本信息汇总 -->
    <el-descriptions title="基本信息汇总" :column="2" border>
      <el-descriptions-item label="器官类型">
        <span class="summary-item">{{ getOrganLabel(scope.row.organno) }}</span>
      </el-descriptions-item>
      <el-descriptions-item label="获取机构">
        <span class="summary-item">{{ scope.row.gainhospitalname }}</span>
      </el-descriptions-item>
      <el-descriptions-item label="评估次数" :span="2">
        <el-tag type="info" size="medium">
          {{ getAssessmentCount(scope.row) }}次
        </el-tag>
      </el-descriptions-item>
      <el-descriptions-item label="最新评估时间" :span="2">
        <span class="highlight-text">{{ getLatestAssessmentTime(scope.row) || "-" }}</span>
      </el-descriptions-item>
    </el-descriptions>
                <el-tab-pane label="评估汇总" name="summary">
                  <div class="assessment-summary">
                    <!-- 基本信息汇总 -->
                    <el-descriptions title="基本信息汇总" :column="2" border>
                      <el-descriptions-item label="器官类型">
                        <span class="summary-item">{{
                          getOrganLabel(scope.row.organno)
                        }}</span>
                      </el-descriptions-item>
                      <el-descriptions-item label="获取机构">
                        <span class="summary-item">{{
                          scope.row.gainhospitalname
                        }}</span>
                      </el-descriptions-item>
                      <el-descriptions-item label="评估次数" :span="2">
                        <el-tag type="info" size="medium">
                          {{ getAssessmentCount(scope.row) }}次
                        </el-tag>
                      </el-descriptions-item>
                      <el-descriptions-item label="最新评估时间" :span="2">
                        <span class="highlight-text">{{
                          getLatestAssessmentTime(scope.row) || "-"
                        }}</span>
                      </el-descriptions-item>
                    </el-descriptions>
    <!-- 评估详情汇总 -->
    <el-card header="评估详情列表" style="margin-top: 20px;" class="assessment-detail-card">
      <div v-if="getOrganAssessments(scope.row).length === 0" class="no-assessment">
        <el-empty description="暂无评估记录"></el-empty>
      </div>
                    <!-- 评估详情汇总 -->
                    <el-card
                      header="评估详情列表"
                      style="margin-top: 20px;"
                      class="assessment-detail-card"
                    >
                      <div
                        v-if="getOrganAssessments(scope.row).length == 0"
                        class="no-assessment"
                      >
                        <el-empty description="暂无评估记录"></el-empty>
                      </div>
      <div v-else>
        <!-- 每次评估详情 -->
        <div v-for="(assessment, index) in getOrganAssessments(scope.row)"
             :key="index"
             class="assessment-item">
          <el-card shadow="hover" class="assessment-card">
            <div slot="header" class="clearfix">
              <span class="assessment-title">第{{ index + 1 }}次评估</span>
              <el-tag
                :type="getAssessmentTagType(assessment.status)"
                size="small"
                class="status-tag"
              >
                {{ getAssessmentStatusText(assessment.status) }}
              </el-tag>
            </div>
                      <div v-else>
                        <!-- 每次评估详情 -->
                        <div
                          v-for="(assessment, index) in getOrganAssessments(
                            scope.row
                          )"
                          :key="index"
                          class="assessment-item"
                        >
                          <el-card shadow="hover" class="assessment-card">
                            <div slot="header" class="clearfix">
                              <span class="assessment-title"
                                >第{{ index + 1 }}次评估</span
                              >
                              <el-tag
                                :type="getAssessmentTagType(assessment.status)"
                                size="small"
                                class="status-tag"
                              >
                                {{ getAssessmentStatusText(assessment.status) }}
                              </el-tag>
                            </div>
            <el-descriptions :column="2" border class="detail-descriptions">
              <el-descriptions-item label="评估时间" :span="2">
                <span class="time-text">{{ assessment.assessmentTime || "-" }}</span>
              </el-descriptions-item>
                            <el-descriptions
                              :column="2"
                              border
                              class="detail-descriptions"
                            >
                              <!-- 评估时间 -->
                              <el-descriptions-item label="评估时间" :span="2">
                                <span class="time-text">
                                  {{
                                    parseTime(assessment.assessmentTime) ||
                                      "未设置"
                                  }}
                                </span>
                              </el-descriptions-item>
              <el-descriptions-item label="评估人">
                <el-tag type="info" size="small">
                  {{ assessment.assessor || "未填写" }}
                </el-tag>
              </el-descriptions-item>
                              <!-- 原有的评估人信息 -->
                              <el-descriptions-item label="评估人">
                                <el-tag type="info" size="small">
                                  {{ assessment.assessor || "未填写" }}
                                </el-tag>
                              </el-descriptions-item>
              <el-descriptions-item label="功能状态">
                <el-tag
                  :type="getFunctionStatusTagType(assessment.functionStatus)"
                  size="small"
                >
                  {{ getFunctionStatusText(assessment.functionStatus) }}
                </el-tag>
              </el-descriptions-item>
                              <!-- 功能状态 -->
                              <el-descriptions-item label="功能状态">
                                <el-tag
                                  :type="
                                    getFunctionStatusTagType(
                                      assessment.functionStatus
                                    )
                                  "
                                  size="small"
                                >
                                  {{
                                    getFunctionStatusText(
                                      assessment.functionStatus
                                    )
                                  }}
                                </el-tag>
                              </el-descriptions-item>
              <el-descriptions-item label="评估意见" :span="2">
                <div class="opinion-content">
                  {{ assessment.assessmentOpinion || "暂无评估意见" }}
                </div>
              </el-descriptions-item>
                              <!-- 评估意见 -->
                              <el-descriptions-item label="评估意见" :span="2">
                                <div class="opinion-content">
                                  {{
                                    assessment.assessmentOpinion ||
                                      "暂无评估意见"
                                  }}
                                </div>
                              </el-descriptions-item>
              <el-descriptions-item label="附件数量" :span="2" v-if="assessment.attachments && assessment.attachments.length > 0">
                <el-tag type="success" size="small">
                  {{ assessment.attachments.length }}个
                </el-tag>
                <el-button
                  type="text"
                  size="mini"
                  @click="showAttachmentList(assessment.attachments, index + 1)"
                  style="margin-left: 10px;"
                >
                  查看附件列表
                </el-button>
              </el-descriptions-item>
            </el-descriptions>
          </el-card>
        </div>
      </div>
    </el-card>
                              <!-- 附件数量 -->
                              <el-descriptions-item
                                label="附件数量"
                                :span="2"
                                v-if="
                                  assessment.attachments &&
                                    assessment.attachments.length > 0
                                "
                              >
                                <el-tag type="success" size="small">
                                  {{ assessment.attachments.length }}个
                                </el-tag>
                                <el-button
                                  type="text"
                                  size="mini"
                                  @click="
                                    showAttachmentList(
                                      assessment.attachments,
                                      index + 1
                                    )
                                  "
                                  style="margin-left: 10px;"
                                >
                                  查看附件列表
                                </el-button>
                              </el-descriptions-item>
                            </el-descriptions>
                          </el-card>
                        </div>
                      </div>
                    </el-card>
    <!-- 器官基本信息卡片 -->
    <el-card header="器官信息" style="margin-top: 20px;" class="organ-info-card">
      <el-descriptions :column="2" border>
        <el-descriptions-item label="获取前活检">
          <el-tag
            :type="
              scope.row.isbiopsybefore === '1'
                ? 'success'
                : 'info'
            "
            size="small"
          >
            {{ scope.row.isbiopsybefore === "1" ? "是" : "否" }}
          </el-tag>
        </el-descriptions-item>
        <el-descriptions-item label="获取后活检">
          <el-tag
            :type="
              scope.row.isbiopsyafter === '1'
                ? 'success'
                : 'info'
            "
            size="small"
          >
            {{ scope.row.isbiopsyafter === "1" ? "是" : "否" }}
          </el-tag>
        </el-descriptions-item>
        <el-descriptions-item label="边缘器官">
          <el-tag
            :type="
              scope.row.ismarginalorgan === '1'
                ? 'warning'
                : 'info'
            "
            size="small"
          >
            {{
              scope.row.ismarginalorgan === "1" ? "是" : "否"
            }}
          </el-tag>
        </el-descriptions-item>
        <el-descriptions-item label="病原菌阳性">
          <el-tag
            :type="
              scope.row.ispathogenpositive === '1'
                ? 'danger'
                : 'info'
            "
            size="small"
          >
            {{
              scope.row.ispathogenpositive === "1" ? "是" : "否"
            }}
          </el-tag>
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
  </div>
</el-tab-pane>
                    <!-- 器官基本信息卡片 -->
                    <el-card
                      header="器官信息"
                      style="margin-top: 20px;"
                      class="organ-info-card"
                    >
                      <el-descriptions :column="2" border>
                        <el-descriptions-item label="获取前活检">
                          <el-tag
                            :type="
                              scope.row.isbiopsybefore == '1'
                                ? 'success'
                                : 'info'
                            "
                            size="small"
                          >
                            {{ scope.row.isbiopsybefore == "1" ? "是" : "否" }}
                          </el-tag>
                        </el-descriptions-item>
                        <el-descriptions-item label="获取后活检">
                          <el-tag
                            :type="
                              scope.row.isbiopsyafter == '1'
                                ? 'success'
                                : 'info'
                            "
                            size="small"
                          >
                            {{ scope.row.isbiopsyafter == "1" ? "是" : "否" }}
                          </el-tag>
                        </el-descriptions-item>
                        <el-descriptions-item label="边缘器官">
                          <el-tag
                            :type="
                              scope.row.ismarginalorgan == '1'
                                ? 'warning'
                                : 'info'
                            "
                            size="small"
                          >
                            {{ scope.row.ismarginalorgan == "1" ? "是" : "否" }}
                          </el-tag>
                        </el-descriptions-item>
                        <el-descriptions-item label="病原菌阳性">
                          <el-tag
                            :type="
                              scope.row.ispathogenpositive == '1'
                                ? 'danger'
                                : 'info'
                            "
                            size="small"
                          >
                            {{
                              scope.row.ispathogenpositive == "1" ? "是" : "否"
                            }}
                          </el-tag>
                        </el-descriptions-item>
                      </el-descriptions>
                    </el-card>
                  </div>
                </el-tab-pane>
              </el-tabs>
            </div>
          </template>
@@ -315,7 +322,11 @@
          </template>
        </el-table-column>
        <el-table-column label="器官编号" align="center" prop="organnumber" />
        <el-table-column label="器官编号" align="center" prop="organnumber">
          <template slot-scope="scope">
            {{ getOrganvalue(scope.row.organno) }}
          </template>
        </el-table-column>
        <el-table-column
          label="获取机构"
@@ -356,9 +367,9 @@
          <template slot-scope="scope">
            <el-tag
              :type="
                getOrganOverallStatus(scope.row) === 'completed'
                getOrganOverallStatus(scope.row) == 'completed'
                  ? 'success'
                  : getOrganOverallStatus(scope.row) === 'assessing'
                  : getOrganOverallStatus(scope.row) == 'assessing'
                  ? 'primary'
                  : 'warning'
              "
@@ -409,7 +420,9 @@
      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading"
        >保存评估表</el-button
      >
      <el-button @click="handleCancel">取消</el-button>
      <el-button type="success" @click="accomplish" :loading="saveLoading"
        >评估完成</el-button
      >
    </div>
    <!-- 文件预览弹窗 -->
@@ -427,15 +440,17 @@
  assessedit,
  assessAdd
} from "@/api/businessApi/index";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrganAssessmentForm from "./components/OrganAssessmentForm.vue";
import OrganAssessmentForm from "@/components/assessInfoComponents/OrganAssessmentForm.vue";
export default {
  name: "AssessmentDetail",
  components: { OrganAssessmentForm, FilePreviewDialog },
  components: { OrganAssessmentForm, FilePreviewDialog, CaseBasicInfo },
  dicts: ["sys_user_sex", "sys_Organ", "sys_0_1"],
  data() {
    return {
      caseId: null,
      // 是否编辑模式
      isEdit: false,
      // 加载状态
@@ -495,14 +510,14 @@
  },
  computed: {
    isCoordinator() {
      return this.currentUser.role === "coordinator";
      return this.currentUser.role == "coordinator";
    },
    currentDepartment() {
      return this.currentUser.department;
    },
    // 根据捐献决定过滤后的器官列表
    filteredOrganAssessmentList() {
      if (!this.organdecisionValues || this.organdecisionValues.length === 0) {
      if (!this.organdecisionValues || this.organdecisionValues.length == 0) {
        return [];
      }
@@ -526,7 +541,7 @@
        return (
          assessments &&
          assessments.length > 0 &&
          assessments.every(assessment => assessment.status === "assessed")
          assessments.every(assessment => assessment.status == "assessed")
        );
      });
    },
@@ -550,57 +565,65 @@
  },
  created() {
    this.infoid = this.$route.query.infoid;
    this.caseId = this.infoid;
    this.assessmentId = this.$route.query.id;
    this.isEdit = this.$route.query.assess === "true";
    this.isEdit = this.$route.query.assess == "true";
    this.getAssessmentDetail();
  },
  methods: {
    // 根据字典value获取label
    getOrganLabel(organValue) {
      const dictItem = this.organDict.find(item => item.value === organValue);
      const dictItem = this.organDict.find(item => item.value == organValue);
      return dictItem ? dictItem.label : organValue;
    },
    getOrganvalue(organValue) {
      const dictItem = this.organDict.find(item => item.value == organValue);
      return dictItem ? dictItem.value : organValue;
    },
    // Tab点击事件
    handleTabClick(organ, tab) {
      if (tab.name !== "add") {
        this.activeTabMap.set(organ.organno, tab.name);
        this.activeTabMap.set(organ.organno, String(tab.name));
      }
    },
// 获取功能状态标签类型
  getFunctionStatusTagType(status) {
    const typeMap = {
      "1": "success",  // 正常
      "2": "warning",  // 轻度异常
      "3": "danger",   // 重度异常
      "4": "info"      // 无法评估
    };
    return typeMap[status] || "info";
  },
    // 获取功能状态标签类型
    getFunctionStatusTagType(status) {
      const typeMap = {
        "1": "success", // 正常
        "2": "warning", // 轻度异常
        "3": "danger", // 重度异常
        "4": "info" // 无法评估
      };
      return typeMap[status] || "info";
    },
  // 获取功能状态文本
  getFunctionStatusText(status) {
    const textMap = {
      "1": "正常",
      "2": "轻度异常",
      "3": "重度异常",
      "4": "无法评估"
    };
    return textMap[status] || "未评估";
  },
    // 获取功能状态文本
    getFunctionStatusText(status) {
      const textMap = {
        "1": "正常",
        "2": "轻度异常",
        "3": "重度异常",
        "4": "无法评估"
      };
      return textMap[status] || "未评估";
    },
  // 显示附件列表
  showAttachmentList(attachments, assessmentNumber) {
    if (!attachments || attachments.length === 0) {
      this.$message.info(`第${assessmentNumber}次评估暂无附件`);
      return;
    }
    // 显示附件列表
    showAttachmentList(attachments, assessmentNumber) {
      if (!attachments || attachments.length == 0) {
        this.$message.info(`第${assessmentNumber}次评估暂无附件`);
        return;
      }
    this.$alert(
      `<div>
      this.$alert(
        `<div>
        <h4>第${assessmentNumber}次评估附件列表</h4>
        <ul style="list-style: none; padding-left: 0;">
          ${attachments.map((item, index) => `
          ${attachments
            .map(
              (item, index) => `
            <li style="margin: 5px 0; padding: 5px; background: #f5f7fa; border-radius: 4px;">
              <i class="el-icon-document"></i>
              <span style="margin-left: 8px;">${item.fileName}</span>
@@ -613,24 +636,26 @@
                下载
              </el-button>
            </li>
          `).join('')}
          `
            )
            .join("")}
        </ul>
      </div>`,
      '附件列表',
      {
        dangerouslyUseHTMLString: true,
        showConfirmButton: false,
        showCancelButton: true,
        cancelButtonText: '关闭'
      }
    );
  },
        "附件列表",
        {
          dangerouslyUseHTMLString: true,
          showConfirmButton: false,
          showCancelButton: true,
          cancelButtonText: "关闭"
        }
      );
    },
    // 获取器官的评估列表
    getOrganAssessments(organ) {
      if (!organ.assesscontent) return [];
      try {
        const assessData =
          typeof organ.assesscontent === "string"
          typeof organ.assesscontent == "string"
            ? JSON.parse(organ.assesscontent)
            : organ.assesscontent;
@@ -667,7 +692,19 @@
        this.$forceUpdate();
      }
    },
    accomplish() {
      this.$confirm("是否完成该案例器官评估步骤?", "提醒", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          this.form.assessState = 3;
          this.handleSaveAll();
        })
        .catch(() => {});
    },
    // 整体保存方法
    async handleSaveAll() {
      this.saveLoading = true;
@@ -712,14 +749,16 @@
            })
          )
        };
        if (saveData.assessState == 1 || !saveData.assessState) {
          saveData.assessState = 2;
        }
        const saveMethod = this.assessmentData.id ? assessedit : assessAdd;
        const response = await saveMethod(saveData);
        if (response.code === 200) {
        if (response.code == 200) {
          this.$message.success("评估表保存成功!");
          if (!this.assessmentData.id && response.data && response.data.id) {
            this.assessmentData.id = response.data.id;
          if (!this.assessmentData.id && response.data) {
            this.assessmentData.id = response.data;
          }
          this.refreshKey += 1; // 触发重新渲染
        } else {
@@ -742,6 +781,7 @@
    async handleOrganDecisionChange(newDecision) {
      const oldDecision = [...this.prevOrgandecisionValues];
      this.autoHandleDecisionChange(newDecision);
      console.log(newDecision);
      const removedDecisions = oldDecision.filter(
        item => !newDecision.includes(item)
@@ -754,7 +794,7 @@
      this.prevOrgandecisionValues = [...newDecision];
      this.$forceUpdate();
      if (newDecision.length === 0) {
      if (newDecision.length == 0) {
        this.expandedRowKeys = [];
      }
    },
@@ -853,7 +893,7 @@
      for (const organValue of relatedOrgans) {
        const organIndex = this.organAssessmentList.findIndex(
          organ => organ.organno === organValue && organ.delFlag !== "1"
          organ => organ.organno == organValue && organ.delFlag !== "1"
        );
        if (organIndex !== -1) {
@@ -895,7 +935,7 @@
    // 确保器官存在
    ensureOrganExists(organValue) {
      const exists = this.organAssessmentList.some(
        organ => organ.organno === organValue && organ.delFlag !== "1"
        organ => organ.organno == organValue && organ.delFlag !== "1"
      );
      if (!exists) {
@@ -927,7 +967,7 @@
      try {
        const response = await evaluateBaseInfolist({ infoid: this.infoid });
        if (response.code === 200) {
        if (response.code == 200) {
          this.handleResponseData(response);
        } else {
          this.$message.error("获取详情失败:" + (response.msg || "未知错误"));
@@ -957,7 +997,6 @@
      } else {
        detailData = response;
      }
      this.assessmentData = {
        id: detailData.id || this.assessmentId,
        infoid: detailData.infoid || this.infoid,
@@ -1002,7 +1041,7 @@
        const organno = organ.organno;
        // 如果 assesscontent 是字符串,确保它是有效的 JSON
        if (organ.assesscontent && typeof organ.assesscontent === "string") {
        if (organ.assesscontent && typeof organ.assesscontent == "string") {
          try {
            JSON.parse(organ.assesscontent);
          } catch (error) {
@@ -1018,9 +1057,9 @@
        const assessments = this.getOrganAssessments(organ);
        const activeTab = this.activeTabMap.has(organno)
          ? this.activeTabMap.get(organno)
          ? String(this.activeTabMap.get(organno))
          : assessments.length > 0
          ? 0
          ? "0"
          : "summary";
        return {
@@ -1038,7 +1077,7 @@
      return {
        index: index,
        status: "pending",
        assessmentTime: "",
        assessmentTime: new Date().toLocaleString("zh-CN"), // 添加默认评估时间
        assessor: "",
        functionStatus: "",
        assessmentOpinion: "",
@@ -1062,20 +1101,20 @@
    // 获取器官整体状态
    getOrganOverallStatus(organ) {
      const assessments = this.getOrganAssessments(organ);
      if (assessments.length === 0) {
      if (assessments.length == 0) {
        return "pending";
      }
      const validAssessments = assessments.filter(a => a.delFlag !== "1");
      if (validAssessments.length === 0) {
      if (validAssessments.length == 0) {
        return "pending";
      }
      const allAssessed = validAssessments.every(
        assessment => assessment.status === "assessed"
        assessment => assessment.status == "assessed"
      );
      const someAssessed = validAssessments.some(
        assessment => assessment.status === "assessed"
        assessment => assessment.status == "assessed"
      );
      if (allAssessed) return "completed";
@@ -1104,7 +1143,7 @@
      } else {
        this.expandedRowKeys = [key];
        this.organAssessmentList.forEach(item => {
          item.expanded = item.organno === key;
          item.expanded = item.organno == key;
        });
      }
    },
@@ -1122,14 +1161,15 @@
      const assessments = this.getOrganAssessments(organ);
      const newAssessment = {
        ...this.getDefaultAssessment(assessments.length),
        assessor: this.currentUser.name
        assessor: this.currentUser.name,
        assessmentTime: new Date().toLocaleString("zh-CN") // 设置具体的评估时间
      };
      const newAssessments = [...assessments, newAssessment];
      this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
      organ.activeTab = assessments.length;
      this.activeTabMap.set(organ.organno, assessments.length);
      organ.activeTab = String(assessments.length);
      this.activeTabMap.set(organ.organno, String(assessments.length));
      this.$message.success("已添加新的评估");
    },
@@ -1140,32 +1180,25 @@
      this.deleteOrganAssessment(organData, assessmentIndex);
    },
    // 处理评估保存
    // 在 AssessmentDetail.vue 的 handleSaveAssessment 方法中
    handleSaveAssessment(data) {
      const { organData, assessmentData, assessmentIndex } = data;
      const assessments = this.getOrganAssessments(organData);
      console.log("保存评估数据:", data);
      if (assessments[assessmentIndex]) {
        // 创建新的评估数组
        const newAssessments = [...assessments];
        newAssessments[assessmentIndex] = {
          ...assessments[assessmentIndex],
          ...assessmentData,
          status: "assessed", // 标记为已评估
          assessmentTime: new Date().toISOString(), // 设置评估时间
          delFlag: "0" // 确保删除标志
          status: "assessed",
          assessmentTime:
            assessmentData.assessmentTime || new Date().toLocaleString("zh-CN"),
          delFlag: "0"
        };
        // 更新 assesscontent
        this.$set(organData, "assesscontent", JSON.stringify(newAssessments));
        // 强制重新渲染
        this.$forceUpdate();
        this.$message.success("评估保存成功");
        // 检查是否需要自动切换到下一个评估
        this.checkAndSwitchTab(organData, assessmentIndex);
      }
    },
@@ -1175,8 +1208,8 @@
      const assessments = this.getOrganAssessments(organData);
      if (currentIndex < assessments.length - 1) {
        // 如果还有下一个评估,自动切换到下一个
        organData.activeTab = currentIndex + 1;
        this.activeTabMap.set(organData.organno, currentIndex + 1);
        organData.activeTab = String(currentIndex + 1);
        this.activeTabMap.set(organData.organno, String(currentIndex + 1));
      } else {
        // 如果没有下一个评估,切换到汇总页
        organData.activeTab = "summary";
@@ -1216,14 +1249,14 @@
          this.$set(organ, "assesscontent", JSON.stringify(newAssessments));
          // 处理tab切换
          if (newAssessments.length === 0) {
          if (newAssessments.length == 0) {
            organ.activeTab = "summary";
            this.activeTabMap.set(organ.organno, "summary");
          } else if (organ.activeTab === assessmentIndex) {
          } else if (organ.activeTab == String(assessmentIndex)) {
            const newIndex = Math.max(0, assessmentIndex - 1);
            organ.activeTab = newIndex;
            this.activeTabMap.set(organ.organno, newIndex);
          } else if (organ.activeTab === "summary") {
            organ.activeTab = String(newIndex);
            this.activeTabMap.set(organ.organno, String(newIndex));
          } else if (organ.activeTab == "summary") {
            this.activeTabMap.set(organ.organno, "summary");
          }
@@ -1238,16 +1271,18 @@
    // 获取最新评估时间
    getLatestAssessmentTime(organ) {
      const assessments = this.getOrganAssessments(organ);
      if (assessments.length === 0) return null;
      if (assessments.length == 0) return null;
      const assessed = assessments.filter(
        a => a.assessmentTime && a.delFlag !== "1"
      );
      if (assessed.length === 0) return null;
      if (assessed.length == 0) return null;
      return assessed.sort(
        (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
      )[0].assessmentTime;
      return this.parseTime(
        assessed.sort(
          (a, b) => new Date(b.assessmentTime) - new Date(a.assessmentTime)
        )[0].assessmentTime
      );
    },
    // 获取评估状态标签类型
@@ -1309,7 +1344,7 @@
      if (this.assessmentData.assessannex) {
        try {
          const annexData =
            typeof this.assessmentData.assessannex === "string"
            typeof this.assessmentData.assessannex == "string"
              ? JSON.parse(this.assessmentData.assessannex)
              : this.assessmentData.assessannex;
@@ -1348,7 +1383,7 @@
        const response = await assessedit(updateData);
        if (response.code === 200) {
        if (response.code == 200) {
          this.$message.success("评估完成确认成功");
          this.assessmentData.assessState = "3";
          this.isEdit = false;
@@ -1456,6 +1491,7 @@
.fixed-width .el-button {
  margin: 0 2px;
}
/* 汇总页面样式 */
.assessment-summary {
  padding: 10px;
@@ -1467,7 +1503,7 @@
}
.highlight-text {
  color: #409EFF;
  color: #409eff;
  font-weight: 500;
}
@@ -1502,7 +1538,7 @@
.assessment-card:hover {
  box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
  border-color: #409EFF;
  border-color: #409eff;
}
.assessment-title {
@@ -1517,7 +1553,7 @@
}
.time-text {
  color: #67C23A;
  color: #67c23a;
  font-weight: 500;
}
@@ -1565,7 +1601,7 @@
  background-color: #fafafa;
}
::v-deep .el-table--enable-row-hover .el-table__body tr:hover>td {
::v-deep .el-table--enable-row-hover .el-table__body tr:hover > td {
  background-color: #ecf5ff;
}
@@ -1635,7 +1671,7 @@
}
::v-deep .el-tabs__item.is-active {
  color: #409EFF;
  color: #409eff;
  font-weight: 600;
}
@@ -1643,7 +1679,7 @@
  background-color: #e4e7ed;
}
::v-deep .el-tabs--card>.el-tabs__header .el-tabs__item.is-active {
::v-deep .el-tabs--card > .el-tabs__header .el-tabs__item.is-active {
  background-color: #fff;
  border-bottom-color: #fff;
}