WXL
昨天 c8e9849cb5f24848df0174c13bfbbff37bb08a5a
src/views/business/appear/caseDetail.vue
@@ -29,11 +29,15 @@
        </el-descriptions-item>
        <el-descriptions-item label="Rh阴性">
          {{
            caseData.rhYin === "1" ? "是" : caseData.rhYin === "0" ? "否" : "-"
            caseData.rhYin == "1" ? "是" : caseData.rhYin == "0" ? "否" : "-"
          }}
        </el-descriptions-item>
        <el-descriptions-item label="证件类型">
          {{ getIdCardTypeText(caseData.idcardtype) }}
          <dict-tag
            :options="dict.type.sys_IDType"
            :value="caseData.idcardtype"
          />
        </el-descriptions-item>
        <el-descriptions-item label="证件号码">{{
          caseData.idcardno || "-"
@@ -47,12 +51,16 @@
        <el-descriptions-item label="籍贯">{{
          caseData.nativeplace || "-"
        }}</el-descriptions-item>
        <el-descriptions-item label="学历">{{
          caseData.education || "-"
        }}</el-descriptions-item>
        <el-descriptions-item label="职业">{{
          caseData.occupation || "-"
        }}</el-descriptions-item>
        <el-descriptions-item label="学历">
          <dict-tag
            :options="dict.type.sys_education"
            :value="String(caseData.education)"
        /></el-descriptions-item>
        <el-descriptions-item label="职业">
          <dict-tag
            :options="dict.type.sys_occupation"
            :value="caseData.occupation"
        /></el-descriptions-item>
        <el-descriptions-item label="出生日期">{{
          formatDate(caseData.birthday)
        }}</el-descriptions-item>
@@ -63,7 +71,7 @@
    </el-card>
    <!-- 地址信息模块 -->
    <!-- <el-card class="detail-section">
    <el-card class="detail-section">
      <div slot="header" class="section-header">
        <span class="section-title">地址信息</span>
      </div>
@@ -75,7 +83,7 @@
          {{ getFullResidenceAddress() }}
        </el-descriptions-item>
      </el-descriptions>
    </el-card> -->
    </el-card>
    <!-- 医疗信息模块 -->
    <el-card class="detail-section">
@@ -106,7 +114,13 @@
          >{{ caseData.infectiousOther }}</el-descriptions-item
        >
        <el-descriptions-item label="是否需要转运">
          {{ caseData.isTransport === "2" ? "需要" : "不需要" }}
          {{
            caseData.isTransport == "1"
              ? "不需要"
              : caseData.isTransport == "2"
              ? "需要"
              : "待定"
          }}
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
@@ -172,7 +186,7 @@
          formatDateTime(caseData.createTime)
        }}</el-descriptions-item>
        <el-descriptions-item label="是否终止案例">
          {{ caseData.terminationCase === "1" ? "已终止" : "进行中" }}
          {{ caseData.terminationCase == "1" ? "已终止" : "进行中" }}
        </el-descriptions-item>
      </el-descriptions>
    </el-card>
@@ -289,15 +303,15 @@
    <!-- 审批信息模块(状态为已同意或已驳回时显示) -->
    <el-card
      class="detail-section"
      v-if="caseData.reportStatus === '3' || caseData.reportStatus === '4'"
      v-if="caseData.reportStatus == '3' || caseData.reportStatus == '4'"
    >
      <div slot="header" class="section-header">
        <span class="section-title">审批信息</span>
      </div>
      <el-descriptions :column="1" border>
        <el-descriptions-item label="审批结果">
          <el-tag :type="caseData.reportStatus === '3' ? 'success' : 'danger'">
            {{ caseData.reportStatus === "3" ? "已同意" : "已驳回" }}
          <el-tag :type="caseData.reportStatus == '3' ? 'success' : 'danger'">
            {{ caseData.reportStatus == "3" ? "已同意" : "已驳回" }}
          </el-tag>
        </el-descriptions-item>
        <el-descriptions-item
@@ -331,7 +345,7 @@
      <div slot="header" class="section-header">
        <span class="section-title">转运信息</span>
        <el-button
          v-if="caseData.reportStatus === '3'"
          v-if="caseData.reportStatus == '3'"
          type="primary"
          size="small"
          icon="el-icon-truck"
@@ -382,7 +396,7 @@
    <!-- 无转运信息但需要转运的提示 -->
    <el-card
      class="detail-section"
      v-else-if="caseData.isTransport === '2' && caseData.reportStatus === '3'"
      v-else-if="caseData.isTransport == '2' && caseData.reportStatus == '3'"
    >
      <div slot="header" class="section-header">
        <span class="section-title">转运信息</span>
@@ -428,6 +442,15 @@
    pdf,
    FilePreviewDialog
  },
  dicts: [
    "sys_user_sex",
    "sys_BloodType",
    "sys_Infectious",
    "sys_IDType",
    "sys_education",
    "sys_occupation",
    "reject_type"
  ],
  props: {
    caseData: {
      type: Object,
@@ -438,13 +461,13 @@
      default: true
    }
  },
  dicts: ["sys_user_sex", "sys_BloodType", "sys_Infectious", "reject_type"],
  data() {
    return {
      // 预览相关
      previewVisible: false,
      currentPreviewFile: null,
      // 动态计算的 baseUrlHt
      baseUrlHt: "",
      // 图片预览相关
      imagePreviewUrls: [],
      rejectOptions: [
@@ -471,11 +494,31 @@
        .filter(url => url);
    }
  },
  created() {
    this.calculateBaseUrl();
  },
  methods: {
    handleClose() {
      this.$emit("close");
    },
    /** 计算 baseUrlHt */
    calculateBaseUrl() {
      const currentUrl = window.location.href;
      try {
        const urlObj = new URL(currentUrl);
        const hostname = urlObj.hostname;
        this.baseUrlHt = `http://${hostname}:9095`;
      } catch (error) {
        console.error("解析URL失败:", error);
        const match = currentUrl.match(/https?:\/\/([^:\/]+)/);
        if (match) {
          this.baseUrlHt = `http://${match[1]}:9095`;
        } else {
          this.baseUrlHt = "http://localhost:9095";
        }
      }
    },
    // 格式化日期时间
    formatDateTime(dateTime) {
      if (!dateTime) return "-";
@@ -657,7 +700,30 @@
    },
    getFileUrl(file) {
      return file.path || file.fileUrl || "";
      if (!file) return "";
      const url = file.path || file.fileUrl || file.url || "";
      return this.processFileUrl(url);
    },
    // URL处理函数 - 将完整URL替换为baseUrlHt
    processFileUrl(url) {
      if (!url) return "";
      // 如果已经是完整的http或https链接
      if (url.startsWith("http://") || url.startsWith("https://")) {
        // 找到第三个斜杠后的位置,提取路径部分
        const thirdSlashIndex = url.indexOf("/", 8);
        if (thirdSlashIndex !== -1) {
          return `${this.baseUrlHt}${url.substring(thirdSlashIndex)}`;
        }
        return this.baseUrlHt;
      }
      // 相对路径处理
      if (url.startsWith("/")) {
        return `${this.baseUrlHt}${url}`;
      }
      return `${this.baseUrlHt}/${url}`;
    },
    getImagePreviewList(file) {
@@ -719,7 +785,7 @@
    handlePreview(file) {
      this.currentPreviewFile = {
        fileName: file.fileName,
        fileUrl: this.getFileUrl(file),
        fileUrl: this.getFileUrl(file), // 已经处理过URL
        fileType: this.getFileType(file.fileName)
      };
      this.previewVisible = true;
@@ -743,7 +809,7 @@
    // 文件下载
    handleDownload(file) {
      const fileUrl = this.getFileUrl(file);
      const fileUrl = this.getFileUrl(file); // 使用处理过的URL
      const fileName = file.fileName;
      if (fileUrl) {