WXL
3 天以前 c8e9849cb5f24848df0174c13bfbbff37bb08a5a
src/views/business/assess/assessInfo.vue
@@ -1,158 +1,48 @@
<template>
  <div class="assessment-detail">
    <!-- 基础案例信息 -->
    <case-basic-info
      :case-id="caseId"
      :show-attachment="true"
    />
    <!-- <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
          v-if="isCoordinator && allOrgansAssessed"
          style="float: right; margin-left: 10px"
          type="primary"
          size="mini"
          @click="handleCompleteAssessment"
          :loading="saveLoading"
        >
          确认完成评估
        </el-button>
        <span v-if="!isCoordinator" class="jstitle">
          当前角色:{{ currentDepartment }}评估人员
        </span>
      </div>
      <!-- 捐献决定表单 -->
      <el-form>
        <el-form-item label-width="100px" label="捐献决定">
          <el-checkbox-group
            v-model="organdecisionValues"
            @change="handleOrganDecisionChange"
            :disabled="!isEdit"
          >
            <el-checkbox
              v-for="dict in dict.type.sys_Organ"
              :key="dict.value"
              :label="dict.value"
              >{{ dict.label }}
          <el-checkbox-group v-model="organdecisionValues" @change="handleOrganDecisionChange" :disabled="!isEdit">
            <el-checkbox v-for="dict in dict.type.sys_Organ" :key="dict.value" :label="dict.value">{{ dict.label }}
            </el-checkbox>
          </el-checkbox-group>
          <el-input
            v-if="showOtherInput"
            v-model="organdecisionOther"
            placeholder="请输入其他捐献决定的具体内容"
            style="margin-top: 10px; width: 300px;"
            :readonly="!isEdit"
            @input="handleOtherDecisionInput"
          ></el-input>
          <el-input v-if="showOtherInput" v-model="organdecisionOther" placeholder="请输入其他捐献决定的具体内容"
            style="margin-top: 10px; width: 300px;" :readonly="!isEdit" @input="handleOtherDecisionInput"></el-input>
        </el-form-item>
      </el-form>
      <!-- 器官评估表格 -->
      <el-table
        :data="filteredOrganAssessmentList"
        v-loading="assessmentLoading"
        style="width: 100%"
        :row-class-name="getRowClassName"
        :expand-row-keys="expandedRowKeys"
        @expand-change="handleExpandChange"
        row-key="organno"
        empty-text="当前捐献决定下暂无需要评估的器官"
      >
      <el-table :data="filteredOrganAssessmentList" v-loading="assessmentLoading" style="width: 100%"
        :row-class-name="getRowClassName" :expand-row-keys="expandedRowKeys" @expand-change="handleExpandChange"
        row-key="organno" empty-text="当前捐献决定下暂无需要评估的器官">
        <el-table-column type="expand">
          <template slot-scope="scope">
            <div class="organ-expand-content" v-if="scope.row.expanded">
              <el-tabs
                v-model="scope.row.activeTab"
                type="card"
                class="organ-detail-tabs"
                @tab-click="handleTabClick(scope.row, $event)"
              >
              <el-tabs v-model="scope.row.activeTab" type="card" class="organ-detail-tabs"
                @tab-click="handleTabClick(scope.row, $event)">
                <!-- 动态生成评估Tab -->
                <el-tab-pane
                  v-for="(assessment, index) in getOrganAssessments(scope.row)"
                  :key="`${scope.row.organno}_${index}`"
                  :label="`第${index + 1}次评估`"
                  :name="index"
                >
                  <organ-assessment-form
                    :organ-data="scope.row"
                    :assessment-index="index"
                    :readonly="!canAssessOrgan(scope.row)"
                    :current-user="currentUser"
                    @update-assessment="handleUpdateAssessment"
                    @delete-assessment="handleDeleteAssessment"
                    @save-assessment="handleSaveAssessment"
                  />
                <el-tab-pane v-for="(assessment, index) in getOrganAssessments(scope.row)"
                  :key="`${scope.row.organno}_${index}`" :label="`第${index + 1}次评估`" :name="String(index)">
                  <organ-assessment-form :organ-data="scope.row" :assessment-index="index"
                    :readonly="!canAssessOrgan(scope.row)" :current-user="currentUser"
                    @update-assessment="handleUpdateAssessment" @delete-assessment="handleDeleteAssessment"
                    @save-assessment="handleSaveAssessment" />
                </el-tab-pane>
                <!-- 添加评估按钮 -->
                <el-tab-pane
                  name="add"
                  v-if="canAssessOrgan(scope.row) && isEdit"
                >
                <el-tab-pane name="add" v-if="canAssessOrgan(scope.row) && isEdit">
                  <template slot="label">
                    <el-button
                      type="text"
                      icon="el-icon-plus"
                      @click.stop="handleAddNewAssessment(scope.row)"
                      size="mini"
                    >
                    <el-button type="text" icon="el-icon-plus" @click.stop="handleAddNewAssessment(scope.row)"
                      size="mini">
                      新增评估
                    </el-button>
                  </template>
@@ -169,12 +59,12 @@
                      <el-descriptions-item label="器官类型">
                        <span class="summary-item">{{
                          getOrganLabel(scope.row.organno)
                        }}</span>
                          }}</span>
                      </el-descriptions-item>
                      <el-descriptions-item label="获取机构">
                        <span class="summary-item">{{
                          scope.row.gainhospitalname
                        }}</span>
                          }}</span>
                      </el-descriptions-item>
                      <el-descriptions-item label="评估次数" :span="2">
                        <el-tag type="info" size="medium">
@@ -184,72 +74,53 @@
                      <el-descriptions-item label="最新评估时间" :span="2">
                        <span class="highlight-text">{{
                          getLatestAssessmentTime(scope.row) || "-"
                        }}</span>
                          }}</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-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"
                        >
                        <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"
                              >
                              <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 :column="2" border class="detail-descriptions">
                              <!-- 评估时间 -->
                              <el-descriptions-item label="评估时间" :span="2">
                                <span class="time-text">{{
                                  assessment.assessmentTime || "-"
                                }}</span>
                                <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="
                                    getFunctionStatusTagType(
                                      assessment.functionStatus
                                    )
                                  "
                                  size="small"
                                >
                                <el-tag :type="getFunctionStatusTagType(
                                  assessment.functionStatus
                                )
                                  " size="small">
                                  {{
                                    getFunctionStatusText(
                                      assessment.functionStatus
@@ -258,37 +129,30 @@
                                </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"
                                v-if="
                                  assessment.attachments &&
                                    assessment.attachments.length > 0
                                "
                              >
                              <!-- 附件数量 -->
                              <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 type="text" size="mini" @click="
                                  showAttachmentList(
                                    assessment.attachments,
                                    index + 1
                                  )
                                  " style="margin-left: 10px;">
                                  查看附件列表
                                </el-button>
                              </el-descriptions-item>
@@ -299,61 +163,39 @@
                    </el-card>
                    <!-- 器官基本信息卡片 -->
                    <el-card
                      header="器官信息"
                      style="margin-top: 20px;"
                      class="organ-info-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 :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 :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 :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"
                          >
                          <el-tag :type="scope.row.ispathogenpositive == '1'
                              ? 'danger'
                              : 'info'
                            " size="small">
                            {{
                              scope.row.ispathogenpositive === "1" ? "是" : "否"
                              scope.row.ispathogenpositive == "1" ? "是" : "否"
                            }}
                          </el-tag>
                        </el-descriptions-item>
@@ -372,33 +214,22 @@
          </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="获取机构"
          align="center"
          prop="gainhospitalname"
          show-overflow-tooltip
        />
        <el-table-column label="获取机构" align="center" prop="gainhospitalname" show-overflow-tooltip />
        <!-- 动态显示评估状态列 -->
        <el-table-column
          v-for="index in getMaxAssessmentCount()"
          :key="index"
          :label="`第${index}次评估`"
          align="center"
          width="120"
        >
        <el-table-column v-for="index in getMaxAssessmentCount()" :key="index" :label="`第${index}次评估`" align="center"
          width="120">
          <template slot-scope="scope">
            <el-tag
              v-if="getOrganAssessments(scope.row)[index - 1]"
              :type="
                getAssessmentTagType(
                  getOrganAssessments(scope.row)[index - 1].status
                )
              "
              size="small"
            >
            <el-tag v-if="getOrganAssessments(scope.row)[index - 1]" :type="getAssessmentTagType(
              getOrganAssessments(scope.row)[index - 1].status
            )
              " size="small">
              {{
                getAssessmentStatusText(
                  getOrganAssessments(scope.row)[index - 1].status
@@ -411,51 +242,31 @@
        <el-table-column label="整体状态" align="center" width="100">
          <template slot-scope="scope">
            <el-tag
              :type="
                getOrganOverallStatus(scope.row) === 'completed'
                  ? 'success'
                  : getOrganOverallStatus(scope.row) === 'assessing'
            <el-tag :type="getOrganOverallStatus(scope.row) == 'completed'
                ? 'success'
                : getOrganOverallStatus(scope.row) == 'assessing'
                  ? 'primary'
                  : 'warning'
              "
              size="small"
            >
              " size="small">
              {{ getOrganOverallStatusText(scope.row) }}
            </el-tag>
          </template>
        </el-table-column>
        <el-table-column
          label="操作"
          align="center"
          width="150"
          class-name="small-padding fixed-width"
        >
        <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
          <template slot-scope="scope">
            <el-button
              v-if="canAssessOrgan(scope.row) && isEdit"
              size="mini"
              type="text"
              @click="handleToggleExpand(scope.row)"
            >
            <el-button v-if="canAssessOrgan(scope.row) && isEdit" size="mini" type="text"
              @click="handleToggleExpand(scope.row)">
              {{
                expandedRowKeys.includes(scope.row.organno) ? "收起" : "详情"
              }}
            </el-button>
            <el-button
              v-else-if="!isEdit"
              size="mini"
              type="text"
              @click="handleToggleExpand(scope.row)"
            >
            <el-button v-else-if="!isEdit" size="mini" type="text" @click="handleToggleExpand(scope.row)">
              {{
                expandedRowKeys.includes(scope.row.organno) ? "收起" : "查看"
              }}
            </el-button>
            <el-button v-else size="mini" type="text" disabled
              >无权限</el-button
            >
            <el-button v-else size="mini" type="text" disabled>无权限</el-button>
          </template>
        </el-table-column>
      </el-table>
@@ -463,18 +274,12 @@
    <!-- 整体保存按钮 -->
    <div class="footer-actions" v-if="isEdit">
      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading"
        >保存评估表</el-button
      >
      <el-button @click="handleCancel">取消</el-button>
      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading">保存评估表</el-button>
      <el-button type="success" @click="accomplish" :loading="saveLoading">评估完成</el-button>
    </div>
    <!-- 文件预览弹窗 -->
    <FilePreviewDialog
      :visible="attachmentVisible"
      :file="currentPreviewFile"
      @close="attachmentVisible = false"
    />
    <FilePreviewDialog :visible="attachmentVisible" :file="currentPreviewFile" @close="attachmentVisible = false" />
  </div>
</template>
@@ -554,14 +359,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 [];
      }
@@ -585,7 +390,7 @@
        return (
          assessments &&
          assessments.length > 0 &&
          assessments.every(assessment => assessment.status === "assessed")
          assessments.every(assessment => assessment.status == "assessed")
        );
      });
    },
@@ -611,20 +416,25 @@
    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 = 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));
      }
    },
    // 获取功能状态标签类型
@@ -651,7 +461,7 @@
    // 显示附件列表
    showAttachmentList(attachments, assessmentNumber) {
      if (!attachments || attachments.length === 0) {
      if (!attachments || attachments.length == 0) {
        this.$message.info(`第${assessmentNumber}次评估暂无附件`);
        return;
      }
@@ -661,8 +471,8 @@
        <h4>第${assessmentNumber}次评估附件列表</h4>
        <ul style="list-style: none; padding-left: 0;">
          ${attachments
            .map(
              (item, index) => `
          .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>
@@ -676,8 +486,8 @@
              </el-button>
            </li>
          `
            )
            .join("")}
          )
          .join("")}
        </ul>
      </div>`,
        "附件列表",
@@ -694,7 +504,7 @@
      if (!organ.assesscontent) return [];
      try {
        const assessData =
          typeof organ.assesscontent === "string"
          typeof organ.assesscontent == "string"
            ? JSON.parse(organ.assesscontent)
            : organ.assesscontent;
@@ -731,7 +541,19 @@
        this.$forceUpdate();
      }
    },
    accomplish() {
      this.$confirm("是否完成该案例器官评估步骤?", "提醒", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      })
        .then(() => {
          this.form.assessState = 3;
          this.handleSaveAll();
        })
        .catch(() => { });
    },
    // 整体保存方法
    async handleSaveAll() {
      this.saveLoading = true;
@@ -776,15 +598,18 @@
            })
          )
        };
        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) {
            this.assessmentData.id = response.data;
          }
          this.getAssessmentDetail()
          this.refreshKey += 1; // 触发重新渲染
        } else {
          this.$message.error("保存失败:" + (response.msg || "未知错误"));
@@ -806,6 +631,7 @@
    async handleOrganDecisionChange(newDecision) {
      const oldDecision = [...this.prevOrgandecisionValues];
      this.autoHandleDecisionChange(newDecision);
      console.log(newDecision);
      const removedDecisions = oldDecision.filter(
        item => !newDecision.includes(item)
@@ -818,7 +644,7 @@
      this.prevOrgandecisionValues = [...newDecision];
      this.$forceUpdate();
      if (newDecision.length === 0) {
      if (newDecision.length == 0) {
        this.expandedRowKeys = [];
      }
    },
@@ -899,8 +725,7 @@
        // 显示创建提示
        if (organsToCreate.length > 0) {
          this.$message.success(
            `已为【${this.getOrganLabel(decision)}】创建${
              organsToCreate.length
            `已为【${this.getOrganLabel(decision)}】创建${organsToCreate.length
            }个评估项`
          );
        }
@@ -917,7 +742,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) {
@@ -959,7 +784,7 @@
    // 确保器官存在
    ensureOrganExists(organValue) {
      const exists = this.organAssessmentList.some(
        organ => organ.organno === organValue && organ.delFlag !== "1"
        organ => organ.organno == organValue && organ.delFlag !== "1"
      );
      if (!exists) {
@@ -991,7 +816,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 || "未知错误"));
@@ -1065,7 +890,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) {
@@ -1081,10 +906,10 @@
        const assessments = this.getOrganAssessments(organ);
        const activeTab = this.activeTabMap.has(organno)
          ? this.activeTabMap.get(organno)
          ? String(this.activeTabMap.get(organno))
          : assessments.length > 0
          ? 0
          : "summary";
            ? "0"
            : "summary";
        return {
          ...organ,
@@ -1101,7 +926,7 @@
      return {
        index: index,
        status: "pending",
        assessmentTime: "",
        assessmentTime: new Date().toLocaleString("zh-CN"), // 添加默认评估时间
        assessor: "",
        functionStatus: "",
        assessmentOpinion: "",
@@ -1125,20 +950,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";
@@ -1167,7 +992,7 @@
      } else {
        this.expandedRowKeys = [key];
        this.organAssessmentList.forEach(item => {
          item.expanded = item.organno === key;
          item.expanded = item.organno == key;
        });
      }
    },
@@ -1185,14 +1010,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("已添加新的评估");
    },
@@ -1203,32 +1029,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);
      }
    },
@@ -1238,8 +1057,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";
@@ -1279,14 +1098,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");
          }
@@ -1301,16 +1120,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
      );
    },
    // 获取评估状态标签类型
@@ -1372,7 +1193,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;
@@ -1411,7 +1232,7 @@
        const response = await assessedit(updateData);
        if (response.code === 200) {
        if (response.code == 200) {
          this.$message.success("评估完成确认成功");
          this.assessmentData.assessState = "3";
          this.isEdit = false;
@@ -1519,6 +1340,7 @@
.fixed-width .el-button {
  margin: 0 2px;
}
/* 汇总页面样式 */
.assessment-summary {
  padding: 10px;
@@ -1628,7 +1450,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;
}
@@ -1706,7 +1528,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;
}