WXL
3 天以前 4c9fdc87987140e8b2c3f0dfc2f6608cdb6be774
src/views/business/GetWitness/GetWitnessInfo.vue
@@ -14,11 +14,12 @@
        <div class="form-row">
          <el-form-item label="手术医生" prop="operationdoctor" class="col-1-3">
            <el-input v-model="form.operationdoctor" />
            <el-input v-model="form.operationdoctor" :disabled="isReadOnly" />
          </el-form-item>
          <el-form-item label="手术开始时间" prop="operationbegtime" class="col-1-3">
            <el-date-picker
              v-model="form.operationbegtime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -27,6 +28,7 @@
          <el-form-item label="手术结束时间" prop="operationendtime" class="col-1-3">
            <el-date-picker
              v-model="form.operationendtime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -42,6 +44,7 @@
          >
            <el-date-picker
              v-model="form.abdominalaortacannulatime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -54,6 +57,7 @@
          >
            <el-date-picker
              v-model="form.abdominalaortaperfusiontime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -65,6 +69,7 @@
          <el-form-item label="门静脉插管时间" prop="portalveincannulatime" class="col-1-3">
            <el-date-picker
              v-model="form.portalveincannulatime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -73,6 +78,7 @@
          <el-form-item label="门静脉灌注时间" prop="portalveinperfusiontime" class="col-1-3">
            <el-date-picker
              v-model="form.portalveinperfusiontime"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -92,6 +98,7 @@
          <el-form-item label="进手术室时间" prop="coordinatorInOperating" class="col-1-3">
            <el-date-picker
              v-model="form.coordinatorInOperating"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -100,6 +107,7 @@
          <el-form-item label="出手术室时间" prop="coordinatorOutOperating" class="col-1-3">
            <el-date-picker
              v-model="form.coordinatorOutOperating"
              :disabled="isReadOnly"
              type="datetime"
              value-format="yyyy-MM-dd HH:mm:ss"
              style="width: 100%"
@@ -124,13 +132,13 @@
            </el-form-item>
          </el-col> -->
          <el-form-item label="是否默哀缅怀" prop="isspendremember" class="col-1-3">
            <el-select v-model="form.isspendremember" style="width: 100%">
            <el-select v-model="form.isspendremember" :disabled="isReadOnly" style="width: 100%">
              <el-option label="是" :value="1" />
              <el-option label="否" :value="0" />
            </el-select>
          </el-form-item>
          <el-form-item label="恢复遗体仪容" prop="isrestoreremains" class="col-1-3">
            <el-select v-model="form.isrestoreremains" style="width: 100%">
            <el-select v-model="form.isrestoreremains" :disabled="isReadOnly" style="width: 100%">
              <el-option label="是" :value="1" />
              <el-option label="否" :value="0" />
            </el-select>
@@ -142,13 +150,13 @@
        <div class="form-row">
          <el-form-item label="负责人姓名" prop="responsibleusername" class="col-1-3">
            <el-input v-model="form.responsibleusername" />
            <el-input v-model="form.responsibleusername" :disabled="isReadOnly" />
          </el-form-item>
          <el-form-item label="协调员一" prop="coordinatedusernameo" class="col-1-3">
            <el-input v-model="form.coordinatedusernameo" />
            <el-input v-model="form.coordinatedusernameo" :disabled="isReadOnly" />
          </el-form-item>
          <el-form-item label="协调员二" prop="coordinatedusernamet" class="col-1-3">
            <el-input v-model="form.coordinatedusernamet" />
            <el-input v-model="form.coordinatedusernamet" :disabled="isReadOnly" />
          </el-form-item>
        </div>
@@ -159,6 +167,7 @@
          <el-form-item label="获取机构名称" prop="gainhospitalname" class="col-1-3">
            <el-input
              v-model="form.gainhospitalname"
              :disabled="isReadOnly"
              placeholder="请输入获取机构名称"
            />
          </el-form-item>
@@ -197,6 +206,7 @@
            <el-form-item label-width="100px" label="捐献器官">
              <el-checkbox-group
                v-model="selectedOrgans"
                :disabled="isReadOnly"
                @change="handleOrganSelectionChange"
              >
                <el-checkbox
@@ -248,6 +258,7 @@
                      size="small"
                      style="width: 100%"
                      v-model="scope.row.organStartTime"
                      :disabled="isReadOnly"
                      type="datetime"
                      value-format="yyyy-MM-dd HH:mm:ss"
                      placeholder="选择获取开始时间"
@@ -267,6 +278,7 @@
                      size="small"
                      style="width: 100%"
                      v-model="scope.row.organgettime"
                      :disabled="isReadOnly"
                      type="datetime"
                      value-format="yyyy-MM-dd HH:mm:ss"
                      placeholder="选择器官离体时间"
@@ -298,6 +310,7 @@
                  <template slot-scope="scope">
                    <el-autocomplete
                      v-model="scope.row.gainhospitalname"
                      :disabled="isReadOnly"
                      :fetch-suggestions="queryHospitalSearch"
                      placeholder="请选择或输入获取医院"
                      style="width: 100%"
@@ -315,12 +328,13 @@
                  <template slot-scope="scope">
                    <el-input
                      v-model="scope.row.organgetdoct"
                      :disabled="isReadOnly"
                      placeholder="获取医师"
                    />
                  </template>
                </el-table-column>
                <!-- <el-table-column
                <el-table-column
                  label="获取状态"
                  align="center"
                  width="120"
@@ -329,6 +343,7 @@
                  <template slot-scope="scope">
                    <el-select
                      v-model="scope.row.organstate"
                      :disabled="isReadOnly"
                      placeholder="请选择获取状态"
                      style="width: 100%"
                    >
@@ -340,9 +355,9 @@
                      />
                    </el-select>
                  </template>
                </el-table-column> -->
                </el-table-column>
                <el-table-column
                <!-- <el-table-column
                  label="说明"
                  align="center"
                  prop="notgetreason"
@@ -352,13 +367,15 @@
                    <el-input
                      type="textarea"
                      clearable
                      :disabled="isReadOnly"
                      v-model="scope.row.notgetreason"
                      placeholder="请输入未获取说明"
                    />
                  </template>
                </el-table-column>
                </el-table-column> -->
                <el-table-column
                  v-if="!isReadOnly"
                  label="操作"
                  align="center"
                  width="120"
@@ -407,6 +424,7 @@
        >
          <div style="margin-bottom: 10px; text-align: right;">
            <el-button
              v-if="!isReadOnly"
              size="mini"
              type="primary"
              icon="el-icon-plus"
@@ -436,6 +454,7 @@
                  <el-select
                    v-model="scope.row.fileType"
                    size="small"
                    :disabled="isReadOnly"
                    @change="updateAttachmentCategory(scope.row, $event)"
                    placeholder="选择分类"
                  >
@@ -474,6 +493,7 @@
                    >预览</el-button
                  >
                  <el-button
                    v-if="!isReadOnly"
                    size="mini"
                    type="danger"
                    @click="handleRemoveAttachmentByFile(scope.row)"
@@ -491,7 +511,7 @@
        </el-tab-pane>
      </el-tabs>
    </el-card>
    <div style="text-align: center; margin: 30px 0;">
    <div v-if="!isReadOnly" style="text-align: center; margin: 30px 0;">
      <el-button type="primary" @click="handleSave" :loading="saveLoading">
        保存
      </el-button>
@@ -516,7 +536,7 @@
              <el-input v-model="currentRecord.organname" readonly />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="12">
          <el-col :span="12">
            <el-form-item label="获取状态">
              <el-select v-model="currentRecord.organstate" style="width: 100%">
                <el-option
@@ -527,7 +547,7 @@
                />
              </el-select>
            </el-form-item>
          </el-col> -->
          </el-col>
        </el-row>
        <el-row :gutter="20">
@@ -644,6 +664,7 @@
<script>
import { witnessList, witnessadd, witnessedit } from "@/api/businessApi";
import { getDonatebaseinfo } from "@/api/project/donatebaseinfo";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import { getToken } from "@/utils/auth";
@@ -781,6 +802,10 @@
    };
  },
  computed: {
    // 查看模式:只读,禁用表单并隐藏保存按钮
    isReadOnly() {
      return this.$route.query.mode === "view";
    },
    // 当前用户信息
    currentUser() {
      return JSON.parse(sessionStorage.getItem("user") || "{}");
@@ -818,7 +843,7 @@
        record =>
          !record.organStartTime ||
          !record.organgettime ||
          !record.gainhospitalno ||
          !record.gainhospitalname ||
          !record.organgetdoct
      ).length;
    },
@@ -1209,10 +1234,19 @@
    },
    // 保存基本信息
    async handleSave() {
      if (this.saveLoading) return;
      this.$refs.form.validate(async valid => {
        if (valid) {
          this.saveLoading = true;
          try {
            // 新增时校验是否已有相同患者
            if (!this.form.id) {
              const exists = await this.checkPatientExists();
              if (exists) {
                this.$message.warning("该患者已存在,请勿重复添加");
                return;
              }
            }
            console.log(this.procurementData.serviceDonationwitnessorgans);
            const saveData = {
@@ -1250,6 +1284,26 @@
        }
      });
    },
    // 新增时校验是否已有相同患者(按住院号)
    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 witnessList({ inpatientno, pageNum: 1, pageSize: 1 });
        const list = res.data || [];
        return list.some(item => item && item.id != null && item.id !== "");
      } catch (e) {
        return false;
      }
    },
    // 保存获取记录
    async handleSaveProcurement() {
      if (!this.form.id) {