WXL
4 天以前 c4599aa279fd2f90b741608392e056fbae2282d5
src/views/business/course/components/DeathJudgmentStage.vue
@@ -1,6 +1,6 @@
<template>
  <div class="death-judgment-detail">
    <!-- <case-basic-info :case-id="caseId" :show-attachment="true" /> -->
    <!-- <case-basic-info :case-id="caseId" :show-attachment="true":column="3" /> -->
    <!-- 公共信息模块(独立显示) -->
    <!-- 判定类型标签页 -->
@@ -56,65 +56,15 @@
        <span class="detail-title">脑死亡判定信息</span>
      </div>
      <el-form :model="form" ref="brainForm" :rules="rules" label-width="120px">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="死亡原因" prop="deathreason">
              <el-input v-model="form.deathreason" :readonly="!isEdit" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="死亡时间" prop="deathtime">
              <el-date-picker
                v-model="form.deathtime"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
                :disabled="!isEdit"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="判定医生一" prop="deathjudgedocto">
              <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="判定医生二" prop="deathjudgedoctt">
              <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="24">
            <el-form-item label="其他判定医生">
              <div
                v-for="(doctor, index) in brainExtraDoctors"
                :key="index"
                style="display: flex; align-items: center; margin-bottom: 8px;"
              >
                <el-input
                  v-model="brainExtraDoctors[index]"
                  placeholder="请输入医生姓名"
                  style="flex: 1; margin-right: 10px;"
                  :readonly="!isEdit"
                />
                <el-button
                  v-if="isEdit"
                  type="danger"
                  icon="el-icon-minus"
                  circle
                  size="mini"
                  @click="removeBrainDoctor(index)"
                />
              </div>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-descriptions title="脑死亡判定信息" :column="descriptionColumn" border size="small">
        <el-descriptions-item label="死亡原因">{{ form.deathreason || '-' }}</el-descriptions-item>
        <el-descriptions-item label="死亡时间">{{ form.deathtime || '-' }}</el-descriptions-item>
        <el-descriptions-item label="判定医生一">{{ form.deathjudgedocto || '-' }}</el-descriptions-item>
        <el-descriptions-item label="判定医生二">{{ form.deathjudgedoctt || '-' }}</el-descriptions-item>
        <el-descriptions-item label="其他判定医生">
          {{ brainExtraDoctors.filter(d => d && d.trim()).join('、') || '-' }}
        </el-descriptions-item>
      </el-descriptions>
      <!-- 脑死亡评估表附件 -->
      <div class="attachment-section">
@@ -131,21 +81,6 @@
            :name="type.value"
          >
            <div class="attachment-upload-section">
              <div class="upload-header">
                <span class="upload-title">{{ type.label }}</span>
                <el-tooltip content="点击上传该类型评估表" placement="top">
                  <el-button
                    size="mini"
                    type="primary"
                    icon="el-icon-plus"
                    @click="openUploadDialog(type.value)"
                    :disabled="!isEdit"
                  >
                    添加评估表
                  </el-button>
                </el-tooltip>
              </div>
              <!-- 附件列表 -->
              <el-table
                :data="getAttachmentsByType(type.value)"
@@ -190,7 +125,7 @@
                  </template>
                </el-table-column>
                <el-table-column label="操作" width="180" align="center">
                <el-table-column label="操作" width="140" align="center">
                  <template slot-scope="scope">
                    <el-button
                      size="mini"
@@ -205,15 +140,6 @@
                      icon="el-icon-download"
                      @click="handleDownload(scope.row)"
                      >下载</el-button
                    >
                    <el-button
                      v-if="isEdit"
                      size="mini"
                      type="text"
                      icon="el-icon-delete"
                      style="color: #F56C6C;"
                      @click="handleRemoveAttachment(scope.row)"
                      >删除</el-button
                    >
                  </template>
                </el-table-column>
@@ -238,99 +164,17 @@
    <el-card v-else class="detail-card">
      <div slot="header" class="clearfix">
        <span class="detail-title">心死亡判定信息</span>
        <el-button
          v-if="isEdit"
          style="float: right; margin-left: 10px;"
          type="success"
          @click="handleSave"
          :loading="saveLoading"
        >
          保存信息
        </el-button>
        <el-button
          v-else
          style="float: right; margin-left: 10px;"
          type="primary"
          @click="handleEdit"
        >
          编辑信息
        </el-button>
      </div>
      <el-form :model="form" ref="heartForm" :rules="rules" label-width="120px">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="心死亡原因" prop="heartdeathreason">
              <el-input v-model="form.heartdeathreason" :readonly="!isEdit" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="心死亡判定完成时间" prop="heartdeathtime">
              <el-date-picker
                v-model="form.heartdeathtime"
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
                :disabled="!isEdit"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="判定医生一" prop="heartdeathjudgedocto">
              <el-input
                v-model="form.heartdeathjudgedocto"
                :readonly="!isEdit"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="判定医生二" prop="heartdeathjudgedoctt">
              <el-input
                v-model="form.heartdeathjudgedoctt"
                :readonly="!isEdit"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="24">
            <el-form-item label="其他判定医生">
              <div
                v-for="(doctor, index) in heartExtraDoctors"
                :key="index"
                style="display: flex; align-items: center; margin-bottom: 8px;"
              >
                <el-input
                  v-model="heartExtraDoctors[index]"
                  placeholder="请输入医生姓名"
                  style="flex: 1; margin-right: 10px;"
                  :readonly="!isEdit"
                />
                <el-button
                  v-if="isEdit"
                  type="danger"
                  icon="el-icon-minus"
                  circle
                  size="mini"
                  @click="removeHeartDoctor(index)"
                />
              </div>
              <el-button
                v-if="isEdit"
                type="primary"
                icon="el-icon-plus"
                size="small"
                @click="addHeartDoctor"
              >
                添加医生
              </el-button>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <el-descriptions title="心死亡判定信息" :column="descriptionColumn" border size="small">
        <el-descriptions-item label="心死亡原因">{{ form.heartdeathreason || '-' }}</el-descriptions-item>
        <el-descriptions-item label="心死亡判定完成时间">{{ form.heartdeathtime || '-' }}</el-descriptions-item>
        <el-descriptions-item label="判定医生一">{{ form.heartdeathjudgedocto || '-' }}</el-descriptions-item>
        <el-descriptions-item label="判定医生二">{{ form.heartdeathjudgedoctt || '-' }}</el-descriptions-item>
        <el-descriptions-item label="其他判定医生">
          {{ heartExtraDoctors.filter(d => d && d.trim()).join('、') || '-' }}
        </el-descriptions-item>
      </el-descriptions>
      <!-- 心死亡评估表附件 -->
      <div class="attachment-section">
@@ -347,21 +191,6 @@
            :name="type.value"
          >
            <div class="attachment-upload-section">
              <div class="upload-header">
                <span class="upload-title">{{ type.label }}</span>
                <el-tooltip content="点击上传该类型评估表" placement="top">
                  <el-button
                    size="mini"
                    type="primary"
                    icon="el-icon-plus"
                    @click="openHeartDeathUploadDialog(type.value)"
                    :disabled="!isEdit"
                  >
                    添加评估表
                  </el-button>
                </el-tooltip>
              </div>
              <!-- 心死亡附件列表 -->
              <el-table
                :data="getHeartDeathAttachmentsByType(type.value)"
@@ -406,7 +235,7 @@
                  </template>
                </el-table-column>
                <el-table-column label="操作" width="180" align="center">
                <el-table-column label="操作" width="140" align="center">
                  <template slot-scope="scope">
                    <el-button
                      size="mini"
@@ -421,15 +250,6 @@
                      icon="el-icon-download"
                      @click="handleDownload(scope.row)"
                      >下载</el-button
                    >
                    <el-button
                      v-if="isEdit"
                      size="mini"
                      type="text"
                      icon="el-icon-delete"
                      style="color: #F56C6C;"
                      @click="handleRemoveHeartDeathAttachment(scope.row)"
                      >删除</el-button
                    >
                  </template>
                </el-table-column>
@@ -449,112 +269,6 @@
        </el-tabs>
      </div>
    </el-card>
    <!-- 底部操作按钮 -->
    <div style="text-align: center; margin: 30px 0;">
      <el-button
        v-if="isEdit"
        type="primary"
        @click="handleSave"
        :loading="saveLoading"
      >
        保存信息
      </el-button>
      <el-button
        v-if="isEdit"
        type="success"
        @click="accomplish"
        :loading="saveLoading"
      >
        完成判定
      </el-button>
    </div>
    <!-- 上传对话框(脑死亡) -->
    <el-dialog
      :title="`上传${getCurrentBrainDeathTypeLabel}评估表`"
      :visible.sync="uploadDialogVisible"
      width="500px"
      :close-on-click-modal="false"
    >
      <el-upload
        ref="uploadRef"
        class="upload-demo"
        drag
        :action="uploadAction"
        :headers="headers"
        multiple
        :file-list="tempFileList"
        :before-upload="beforeUpload"
        :on-change="handleFileChange"
        :on-remove="handleTempRemove"
        :on-success="handleUploadSuccess"
        :auto-upload="false"
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">
          将评估表文件拖到此处,或<em>点击上传</em>
        </div>
        <div class="el-upload__tip" slot="tip">
          支持上传pdf、jpg、png、doc、docx、xls、xlsx格式文件,单个文件不超过10MB
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
        <el-button @click="uploadDialogVisible = false">取消</el-button>
        <el-button
          type="primary"
          @click="submitUpload"
          :loading="uploadLoading"
          :disabled="tempFileList.length === 0"
        >
          确认上传
        </el-button>
      </div>
    </el-dialog>
    <!-- 上传对话框(心死亡) -->
    <el-dialog
      :title="`上传${getCurrentHeartDeathTypeLabel}评估表`"
      :visible.sync="heartDeathUploadDialogVisible"
      width="500px"
      :close-on-click-modal="false"
    >
      <el-upload
        ref="heartDeathUploadRef"
        class="upload-demo"
        drag
        :action="uploadAction"
        :headers="headers"
        multiple
        :file-list="tempHeartDeathFileList"
        :before-upload="beforeUpload"
        :on-change="handleHeartDeathFileChange"
        :on-remove="handleHeartDeathTempRemove"
        :on-success="handleHeartDeathUploadSuccess"
        :auto-upload="false"
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">
          将评估表文件拖到此处,或<em>点击上传</em>
        </div>
        <div class="el-upload__tip" slot="tip">
          支持上传pdf、jpg、png、doc、docx、xls、xlsx格式文件,单个文件不超过10MB
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
        <el-button @click="heartDeathUploadDialogVisible = false"
          >取消</el-button
        >
        <el-button
          type="primary"
          @click="submitHeartDeathUpload"
          :loading="heartDeathUploadLoading"
          :disabled="tempHeartDeathFileList.length === 0"
        >
          确认上传
        </el-button>
      </div>
    </el-dialog>
    <!-- 附件预览 -->
    <FilePreviewDialog
      :visible="previewVisible"
@@ -574,10 +288,12 @@
import { getToken } from "@/utils/auth";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import readonlyDescriptionsMixin from "./readonlyDescriptionsMixin";
export default {
  name: "DeathJudgmentDetail",
  components: { CaseBasicInfo, FilePreviewDialog },
  mixins: [readonlyDescriptionsMixin],
  props: {
    infoid: {
      type: String,