WXL
15 小时以前 9b2c74ee4f08fad01c2a16bc6e36df073bfa1dd5
src/views/business/assess/assessInfo.vue
@@ -1,6 +1,11 @@
<template>
  <div class="assessment-detail">
    <el-card class="basic-info-card">
    <!-- 基础案例信息 -->
    <case-basic-info
      :case-id="caseId"
      :show-attachment="true"
    />
    <!-- <el-card class="basic-info-card">
      <div slot="header" class="clearfix">
        <span>案例基本信息</span>
        <el-button
@@ -52,7 +57,7 @@
          </el-tag>
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
    </el-card> -->
    <el-card class="organ-assessment-card">
      <div slot="header" class="clearfix">
@@ -157,153 +162,205 @@
                </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">{{
                                  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>
@@ -427,15 +484,17 @@
  assessedit,
  assessAdd
} from "@/api/businessApi/index";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
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,
      // 加载状态
@@ -550,6 +609,7 @@
  },
  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.getAssessmentDetail();
@@ -567,40 +627,42 @@
        this.activeTabMap.set(organ.organno, 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,18 +675,20 @@
                下载
              </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 [];
@@ -718,8 +782,8 @@
        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 {
@@ -957,7 +1021,6 @@
      } else {
        detailData = response;
      }
      this.assessmentData = {
        id: detailData.id || this.assessmentId,
        infoid: detailData.infoid || this.infoid,
@@ -1467,7 +1530,7 @@
}
.highlight-text {
  color: #409EFF;
  color: #409eff;
  font-weight: 500;
}
@@ -1502,7 +1565,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 +1580,7 @@
}
.time-text {
  color: #67C23A;
  color: #67c23a;
  font-weight: 500;
}
@@ -1565,7 +1628,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 +1698,7 @@
}
::v-deep .el-tabs__item.is-active {
  color: #409EFF;
  color: #409eff;
  font-weight: 600;
}
@@ -1643,7 +1706,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;
}