WXL
3 天以前 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774
src/views/business/assess/assessInfo.vue
@@ -12,12 +12,12 @@
      <el-form class="paper-form">
        <div class="form-row">
          <el-form-item label-width="100px" label="捐献决定" class="col-full">
            <el-checkbox-group v-model="organdecisionValues" @change="handleOrganDecisionChange" :disabled="!isEdit">
            <el-checkbox-group v-model="organdecisionValues" @change="handleOrganDecisionChange" :disabled="!isEdit || isReadOnly">
              <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>
              style="margin-top: 10px; width: 300px;" :readonly="!isEdit || isReadOnly" @input="handleOtherDecisionInput"></el-input>
          </el-form-item>
        </div>
      </el-form>
@@ -35,13 +35,13 @@
                <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"
                    :readonly="!canAssessOrgan(scope.row) || isReadOnly" :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 && !isReadOnly">
                  <template slot="label">
                    <el-button type="text" icon="el-icon-plus" @click.stop="handleAddNewAssessment(scope.row)"
                      size="mini">
@@ -255,7 +255,7 @@
          </template>
        </el-table-column>
        <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
        <el-table-column v-if="!isReadOnly" 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)">
@@ -275,7 +275,7 @@
    </el-card>
    <!-- 整体保存按钮 -->
    <div class="footer-actions" v-if="isEdit">
    <div class="footer-actions" v-if="isEdit && !isReadOnly">
      <el-button type="primary" @click="handleSaveAll" :loading="saveLoading">保存评估表</el-button>
      <el-button type="success" @click="accomplish" :loading="saveLoading">评估完成</el-button>
    </div>
@@ -291,6 +291,7 @@
  assessedit,
  assessAdd
} from "@/api/businessApi/index";
import { getDonatebaseinfo } from "@/api/project/donatebaseinfo";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrganAssessmentForm from "@/components/assessInfoComponents/OrganAssessmentForm.vue";
@@ -360,6 +361,10 @@
    };
  },
  computed: {
    // 查看模式:只读,禁用表单并隐藏保存按钮
    isReadOnly() {
      return this.$route.query.mode === "view";
    },
    isCoordinator() {
      return this.currentUser.role == "coordinator";
    },
@@ -550,7 +555,7 @@
        type: "warning"
      })
        .then(() => {
          this.form.assessState = 3;
          this.assessmentData.assessState = 3;
          this.handleSaveAll();
        })
@@ -558,8 +563,17 @@
    },
    // 整体保存方法
    async handleSaveAll() {
      if (this.saveLoading) return;
      this.saveLoading = true;
      try {
        // 新增时校验是否已有相同患者
        if (!this.assessmentData.id) {
          const exists = await this.checkPatientExists();
          if (exists) {
            this.$message.warning("该患者已存在,请勿重复添加");
            return;
          }
        }
        const saveData = {
          id: this.assessmentData.id || undefined,
          infoid: this.infoid,
@@ -623,6 +637,29 @@
        this.saveLoading = false;
      }
    },
    // 新增时校验是否已有相同患者(按住院号)
    async checkPatientExists() {
      let inpatientno = this.assessmentData.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 evaluateBaseInfolist({ inpatientno, pageNum: 1, pageSize: 1 });
        let list = res.data || [];
        if (!Array.isArray(list)) {
          list = list.rows || list.list || [];
        }
        return list.some(item => item && item.id != null && item.id !== "");
      } catch (e) {
        return false;
      }
    },
    // 取消按钮事件
    handleCancel() {