WXL
3 天以前 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774
src/views/business/decide/DecideInfo.vue
@@ -35,7 +35,7 @@
            <el-form-item label="负责人" prop="responsibleusername">
              <el-input
                v-model="form.responsibleusername"
                :readonly="!isEdit"
                :disabled="isReadOnly || !isEdit"
              />
            </el-form-item>
          </el-col>
@@ -43,7 +43,7 @@
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="器官获取机构" prop="gainhospitalname">
              <el-input v-model="form.gainhospitalname" :readonly="!isEdit" />
              <el-input v-model="form.gainhospitalname" :disabled="isReadOnly || !isEdit" />
            </el-form-item>
          </el-col>
@@ -56,7 +56,7 @@
        <span class="detail-title">脑死亡判定信息</span>
        <el-button
          v-if="!isEdit"
          v-if="!isReadOnly && !isEdit"
          style="float: right; margin-left: 10px;"
          type="primary"
          @click="handleEdit"
@@ -68,25 +68,25 @@
      <el-form :model="form" ref="brainForm" :rules="rules" label-width="120px" class="paper-form">
        <div class="form-row">
          <el-form-item label="死亡原因" prop="deathreason" class="col-1-3">
            <el-input v-model="form.deathreason" :readonly="!isEdit" />
            <el-input v-model="form.deathreason" :disabled="isReadOnly || !isEdit" />
          </el-form-item>
        </div>
        <div class="form-row">
          <el-form-item label="死亡时间" prop="deathtime" class="col-1-3">
            <el-date-picker
              v-model="form.deathtime"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
              :disabled="!isEdit"
              :disabled="isReadOnly || !isEdit"
            />
          </el-form-item>
        </div>
        <div class="form-row">
          <el-form-item label="判定医生一" prop="deathjudgedocto" class="col-1-3">
            <el-input v-model="form.deathjudgedocto" :readonly="!isEdit" />
            <el-input v-model="form.deathjudgedocto" :disabled="isReadOnly || !isEdit" />
          </el-form-item>
          <el-form-item label="判定医生二" prop="deathjudgedoctt" class="col-1-3">
            <el-input v-model="form.deathjudgedoctt" :readonly="!isEdit" />
            <el-input v-model="form.deathjudgedoctt" :disabled="isReadOnly || !isEdit" />
          </el-form-item>
        </div>
        <div class="form-row">
@@ -94,16 +94,16 @@
            <div
              v-for="(doctor, index) in brainExtraDoctors"
              :key="index"
              style="display: flex; align-items: center; margin-bottom: 8px;"
              style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
            >
              <el-input
                v-model="brainExtraDoctors[index]"
                placeholder="请输入医生姓名"
                style="flex: 1; margin-right: 10px;"
                :readonly="!isEdit"
                :disabled="isReadOnly || !isEdit"
              />
              <el-button
                v-if="isEdit"
                v-if="!isReadOnly && isEdit"
                type="danger"
                icon="el-icon-minus"
                circle
@@ -112,7 +112,7 @@
              />
            </div>
            <el-button
              v-if="isEdit"
              v-if="!isReadOnly && isEdit"
              type="primary"
              icon="el-icon-plus"
              size="small"
@@ -143,6 +143,7 @@
                <span class="upload-title">{{ type.label }}</span>
                <el-tooltip content="点击上传该类型评估表" placement="top">
                  <el-button
                    v-if="!isReadOnly"
                    size="mini"
                    type="primary"
                    icon="el-icon-plus"
@@ -215,7 +216,7 @@
                      >下载</el-button
                    >
                    <el-button
                      v-if="isEdit"
                      v-if="!isReadOnly && isEdit"
                      size="mini"
                      type="text"
                      icon="el-icon-delete"
@@ -247,7 +248,7 @@
      <div slot="header" class="clearfix">
        <span class="detail-title">心死亡判定信息</span>
        <el-button
          v-if="isEdit"
          v-if="!isReadOnly && isEdit"
          style="float: right; margin-left: 10px;"
          type="success"
          @click="handleSave"
@@ -256,7 +257,7 @@
          保存信息
        </el-button>
        <el-button
          v-else
          v-else-if="!isReadOnly"
          style="float: right; margin-left: 10px;"
          type="primary"
          @click="handleEdit"
@@ -268,30 +269,30 @@
      <el-form :model="form" ref="heartForm" :rules="rules" label-width="120px" class="paper-form">
        <div class="form-row">
          <el-form-item label="心死亡原因" prop="heartdeathreason" class="col-1-3">
            <el-input v-model="form.heartdeathreason" :readonly="!isEdit" />
            <el-input v-model="form.heartdeathreason" :disabled="isReadOnly || !isEdit" />
          </el-form-item>
        </div>
        <div class="form-row">
          <el-form-item label="心死亡判定完成时间" prop="heartdeathtime" class="col-1-3">
            <el-date-picker
              v-model="form.heartdeathtime"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
              :disabled="!isEdit"
              :disabled="isReadOnly || !isEdit"
            />
          </el-form-item>
        </div>
        <div class="form-row">
          <el-form-item label="判定医生一" prop="heartdeathjudgedocto" class="col-1-3">
            <el-input
              v-model="form.heartdeathjudgedocto"
              :readonly="!isEdit"
              :disabled="isReadOnly || !isEdit"
            />
          </el-form-item>
          <el-form-item label="判定医生二" prop="heartdeathjudgedoctt" class="col-1-3">
            <el-input
              v-model="form.heartdeathjudgedoctt"
              :readonly="!isEdit"
              :disabled="isReadOnly || !isEdit"
            />
          </el-form-item>
        </div>
@@ -300,16 +301,16 @@
            <div
              v-for="(doctor, index) in heartExtraDoctors"
              :key="index"
              style="display: flex; align-items: center; margin-bottom: 8px;"
              style="display: flex; align-items: center; margin-bottom: 8px; width: 100%;"
            >
              <el-input
                v-model="heartExtraDoctors[index]"
                placeholder="请输入医生姓名"
                style="flex: 1; margin-right: 10px;"
                :readonly="!isEdit"
                :disabled="isReadOnly || !isEdit"
              />
              <el-button
                v-if="isEdit"
                v-if="!isReadOnly && isEdit"
                type="danger"
                icon="el-icon-minus"
                circle
@@ -318,7 +319,7 @@
              />
            </div>
            <el-button
              v-if="isEdit"
              v-if="!isReadOnly && isEdit"
              type="primary"
              icon="el-icon-plus"
              size="small"
@@ -349,6 +350,7 @@
                <span class="upload-title">{{ type.label }}</span>
                <el-tooltip content="点击上传该类型评估表" placement="top">
                  <el-button
                    v-if="!isReadOnly"
                    size="mini"
                    type="primary"
                    icon="el-icon-plus"
@@ -421,7 +423,7 @@
                      >下载</el-button
                    >
                    <el-button
                      v-if="isEdit"
                      v-if="!isReadOnly && isEdit"
                      size="mini"
                      type="text"
                      icon="el-icon-delete"
@@ -450,7 +452,7 @@
    <!-- 底部操作按钮 -->
    <div style="text-align: center; margin: 30px 0;">
      <el-button
        v-if="isEdit"
        v-if="!isReadOnly && isEdit"
        type="primary"
        @click="handleSave"
        :loading="saveLoading"
@@ -458,7 +460,7 @@
        保存信息
      </el-button>
      <el-button
        v-if="isEdit"
        v-if="!isReadOnly && isEdit"
        type="success"
        @click="accomplish"
        :loading="saveLoading"
@@ -569,6 +571,7 @@
  deathinfoadd,
  queryDathInfoBaseInfo
} from "@/api/businessApi";
import { getDonatebaseinfo } from "@/api/project/donatebaseinfo";
import { getToken } from "@/utils/auth";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
@@ -693,6 +696,10 @@
    };
  },
  computed: {
    // 查看模式:只读,禁用表单并隐藏保存按钮
    isReadOnly() {
      return this.$route.query.mode === "view";
    },
    getCurrentBrainDeathTypeLabel() {
      const type = this.brainDeathAttachmentTypes.find(
        t => t.value === this.currentUploadType
@@ -715,6 +722,9 @@
    if (this.$route.query.judgmentType) {
      this.activeJudgmentType = this.$route.query.judgmentType;
    }
    // 查看模式下默认只读
    this.isEdit = !this.isReadOnly;
    this.getDetail(this.infoid);
    this.getAttachmentList();
@@ -1177,6 +1187,7 @@
    },
    // 保存信息
    async handleSave() {
      if (this.saveLoading) return;
      // 根据当前标签选择验证规则
      let formRef =
        this.activeJudgmentType === "brain" ? "brainForm" : "heartForm";
@@ -1221,6 +1232,12 @@
            if (submitData.id) {
              response = await deathinfoedit(submitData);
            } else {
              // 新增时校验是否已有相同患者
              const exists = await this.checkPatientExists();
              if (exists) {
                this.$message.warning("该患者已存在,请勿重复添加");
                return;
              }
              response = await deathinfoadd(submitData);
            }
@@ -1246,6 +1263,31 @@
      });
    },
    // 新增时校验是否已有相同患者(按住院号)
    async checkPatientExists() {
      let inpatientno = this.form.inpatientno;
      if (!inpatientno && this.caseId) {
        try {
          const caseRes = await getDonatebaseinfo(this.caseId);
          inpatientno = (caseRes.data && caseRes.data.inpatientno) || "";
        } catch (e) {
          inpatientno = "";
        }
      }
      if (!inpatientno) return false;
      try {
        const res = await queryDathInfoBaseInfo({
          inpatientno,
          pageNum: 1,
          pageSize: 1
        });
        const list = res.rows || res.data || [];
        return list.some(item => item && item.id != null && item.id !== "");
      } catch (e) {
        return false;
      }
    },
    // 文件大小格式化
    formatFileSize(size) {
      if (size === 0) return "0 B";