WXL
2026-04-25 996206735df06887e3f3e453797b1289a2a793e7
src/views/business/allocation/allocationInfo.vue
@@ -1,5 +1,6 @@
<template>
  <div class="organ-allocation-detail">
    <case-basic-info :case-id="caseId" :show-attachment="true" />
    <!-- 基本信息部分 -->
    <el-card class="detail-card">
      <div slot="header" class="clearfix">
@@ -21,85 +22,19 @@
      <el-form :model="form" ref="form" :rules="rules" label-width="120px">
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="住院号" prop="donorno">
              <el-input v-model="form.donorno" readonly />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="案例编号" prop="caseNo">
              <el-input v-model="form.caseNo" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="捐献者姓名" prop="name">
              <el-input v-model="form.name" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="性别" prop="sex">
              <el-select v-model="form.sex" style="width: 100%">
                <el-option label="男" value="0" />
                <el-option label="女" value="1" />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="年龄" prop="age">
              <el-input v-model="form.age" />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="8">
            <el-form-item label="捐献类别" prop="donationcategory">
              <el-select v-model="form.donationcategory" style="width: 100%">
                <el-option
                  v-for="dict in dict.type.sys_DonationCategory || []"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col> -->
        </el-row>
        <el-row :gutter="20">
          <el-col :span="8">
            <el-form-item label="血型" prop="bloodtype">
              <el-select v-model="form.bloodtype" style="width: 100%">
                <el-option
                  v-for="dict in dict.type.sys_BloodType || []"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="证件号码" prop="idcardno">
              <el-input v-model="form.idcardno" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="记录状态" prop="recordstate">
              <el-input v-model="form.recordstate" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="疾病诊断" prop="diagnosisname">
              <el-input
                type="textarea"
                :rows="2"
                v-model="form.diagnosisname"
                placeholder="请输入疾病诊断信息"
              />
            <el-form-item label="分配状态" prop="allocationStatus">
              <el-select
                v-model="form.allocationStatus"
                placeholder="请选择分配状态"
              >
                <el-option
                  v-for="dict in dict.type.organ_allocation_status || []"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -117,27 +52,8 @@
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="所在医疗机构" prop="treatmenthospitalname">
              <el-input
                v-model="form.treatmenthospitalname"
                placeholder="请输入医疗机构名称"
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="医疗机构编码" prop="treatmenthospitalno">
              <el-input
                v-model="form.treatmenthospitalno"
                placeholder="请输入医疗机构编码"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="20">
          <el-col :span="12">
            <el-form-item label="登记人" prop="registrationName">
              <el-input v-model="form.registrationName" readonly />
              <el-input v-model="form.registrationName" />
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -147,7 +63,6 @@
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                style="width: 100%"
                readonly
              />
            </el-form-item>
          </el-col>
@@ -410,7 +325,7 @@
        </div>
      </el-form>
      <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
      <!-- <div class="dialog-footer" v-if="form.allocationStatus !== '1'">
        <el-button
          type="primary"
          @click="handleSaveAllocation"
@@ -430,7 +345,7 @@
        >
          确认完成分配
        </el-button>
      </div>
      </div> -->
    </el-card>
    <!-- 附件管理部分优化 -->
@@ -543,8 +458,6 @@
      </div>
    </el-dialog>
    <!-- 附件预览对话框 -->
    <FilePreviewDialog
      :visible="filePreviewVisible"
@@ -559,12 +472,13 @@
import {
  allocationList,
  allocationadd,
  allocationedit
  allocationedit,
  donateorganBaseinfoInfo
} from "@/api/businessApi";
import UploadAttachment from "@/components/UploadAttachment";
import FilePreviewDialog from "@/components/FilePreviewDialog";
import OrgSelecter from "@/views/project/components/orgselect";
import CaseBasicInfo from "@/components/CaseBasicInfo";
import dayjs from "dayjs";
export default {
@@ -572,16 +486,20 @@
  components: {
    UploadAttachment,
    OrgSelecter,
    FilePreviewDialog
    FilePreviewDialog,
    CaseBasicInfo
  },
  dicts: [
    "sys_BloodType",
    "sys_DonationCategory",
    "sys_RecordState",
    "sys_Organ"
    "sys_Organ",
    "organ_allocation_status"
  ],
  data() {
    return {
      caseId: null,
      // 表单数据
      form: {
        id: undefined,
@@ -721,6 +639,7 @@
    }
  },
  created() {
    this.caseId = this.$route.query.infoid;
    this.initData();
  },
  methods: {
@@ -749,7 +668,7 @@
        .substring(0, 19);
      if (infoid) {
        this.getDetail(infoid);
        this.getDetail(infoid, id);
      } else {
        this.generateDonorNo();
      }
@@ -762,9 +681,25 @@
      this.form.donorno = "D" + timestamp.slice(-8);
      this.form.caseNo = "CASE" + timestamp.slice(-6);
    },
    // 解析 filePatch 字段
    parseFilePatch(filePatch) {
      if (!filePatch) {
        this.form.attachments = [];
        return;
      }
      try {
        this.form.attachments = JSON.parse(filePatch);
      } catch (error) {
        console.error("解析 filePatch 字段失败:", error);
        this.form.attachments = [];
      }
    },
    // 获取详情
    async getDetail(infoid) {
    async getDetail(infoid, id) {
      this.loading = true;
      donateorganBaseinfoInfo(id);
      try {
        const response = await allocationList({ infoid });
        if (
@@ -776,6 +711,8 @@
          // 填充表单数据
          Object.assign(this.form, data);
          // 转换附件为集合
            this.parseFilePatch(this.form.fileName);
          // 初始化附件
          if (this.form.attachments) {
@@ -1003,6 +940,13 @@
      }
      return "";
    },
    // 构建 filePatch 字段
    buildFilePatch() {
      if (!this.attachments || this.attachments.length === 0) {
        return "";
      }
      return JSON.stringify(this.attachments);
    },
    // 保存基本信息
    async handleSave() {
      this.$refs.form.validate(async valid => {
@@ -1015,10 +959,14 @@
        try {
          const saveData = {
            ...this.form,
            attachments: this.attachments,
            serviceDonateorganList:
              this.allocationData.serviceDonateorganList || []
          };
          saveData.fileName=this.buildFilePatch();
          saveData.serviceDonateorganList.forEach(item => {
            item.baseid = this.form.id;
            item.infoid = this.form.infoid;
          });
          console.log(this.form.recordstate);
          this.form.recordstate = 1;
          const apiMethod = this.form.id ? allocationedit : allocationadd;