WXL
3 天以前 96dd34f77d81db58f54e3d0ad4a8cc8082189a61
src/views/project/donatebaseinfo/EditCaseModal.vue
@@ -45,9 +45,12 @@
            <el-col :span="6">
              <el-form-item label="性别" prop="sex">
                <el-select v-model="formData.sex" placeholder="请选择性别">
                  <el-option label="未知" value="0" />
                  <el-option label="男" value="1" />
                  <el-option label="女" value="2" />
                  <el-option
                    v-for="dict in dict.type.sys_user_sex || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="parseInt(dict.value)"
                  />
                </el-select>
              </el-form-item>
            </el-col>
@@ -57,9 +60,12 @@
                  v-model="formData.idcardtype"
                  placeholder="请选择证件类型"
                >
                  <el-option label="身份证" :value="1" />
                  <el-option label="军人证" :value="2" />
                  <el-option label="护照" :value="3" />
                  <el-option
                    v-for="dict in dict.type.sys_IDType || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="parseInt(dict.value)"
                  />
                </el-select>
              </el-form-item>
            </el-col>
@@ -96,7 +102,7 @@
              <el-form-item label="民族" prop="nation">
                <el-select v-model="formData.nation" placeholder="请选择民族">
                  <el-option
                    v-for="dict in dictOptions.sys_nation"
                    v-for="dict in dict.type.sys_nation || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
@@ -130,7 +136,7 @@
                  placeholder="请选择学历"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_education"
                    v-for="dict in dict.type.sys_education || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
@@ -145,7 +151,7 @@
                  placeholder="请选择职业"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_occupation"
                    v-for="dict in dict.type.sys_occupation || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
@@ -204,14 +210,17 @@
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="20">
            <el-col :span="12">
              <el-form-item label="血型" prop="bloodtype">
                <el-radio-group v-model="formData.bloodtype">
                  <el-radio label="1">A型</el-radio>
                  <el-radio label="2">B型</el-radio>
                  <el-radio label="3">O型</el-radio>
                  <el-radio label="4">AB型</el-radio>
                  <el-radio
                    v-for="dict in dict.type.sys_BloodType || []"
                    :key="dict.value"
                    :label="dict.value"
                    >{{ dict.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
@@ -222,8 +231,85 @@
                    v-for="dict in dict.type.sys_bloodtype_rhd || []"
                    :key="dict.value"
                    :label="dict.value"
                  >{{ dict.label }}</el-radio>
                    >{{ dict.label }}</el-radio
                  >
                </el-radio-group>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 疾病类型 -->
          <el-row>
            <el-form-item label="疾病类型" align="left">
              <el-checkbox-group v-model="formData.diseasetype">
                <el-checkbox
                  v-for="dict in dict.type.sys_DiseaseType || []"
                  :key="dict.value"
                  :label="dict.value"
                >
                  {{ dict.label }}
                </el-checkbox>
              </el-checkbox-group>
            </el-form-item>
            <el-form-item label="其他" prop="diseasetypeOther">
              <el-input
                v-model="formData.diseasetypeOther"
                placeholder="请输入其他"
              />
            </el-form-item>
          </el-row>
          <!-- 传染病 -->
          <el-row>
            <el-col :span="12">
              <el-form-item align="left" label="传染病">
                <el-checkbox-group v-model="formData.infectious">
                  <el-checkbox
                    v-for="dict in dict.type.sys_Infectious || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item align="left" label="其他" prop="infectiousOther">
                <el-input
                  v-model="formData.infectiousOther"
                  placeholder="请输入其他"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 病人状况和其他情况 -->
          <el-row>
            <el-col :span="9">
              <el-form-item align="left" label="病人状况">
                <el-checkbox-group v-model="formData.patientstate">
                  <el-checkbox
                    v-for="dict in dict.type.sys_patientstate || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="15" align="left">
              <el-form-item label="其他情况">
                <el-checkbox-group v-model="formData.othercases">
                  <el-checkbox
                    v-for="dict in dict.type.sys_OtherCases || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
@@ -344,6 +430,128 @@
          </el-row>
        </el-card>
        <!-- 意愿和亲属信息部分 -->
        <el-card header="意愿和亲属信息" class="form-section">
          <!-- 本人意愿 -->
          <el-row>
            <el-col :span="24">
              <el-form-item align="left" label="本人意愿 ">
                <el-checkbox-group v-model="formData.selfwill">
                  <el-checkbox
                    v-for="dict in dict.type.sys_SelfWill || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 亲属状况 -->
          <el-row>
            <el-col :span="12">
              <el-form-item
                label="亲属状况"
                prop="kinship"
                class="relation"
                align="left"
              >
                <el-checkbox-group v-model="formData.kinship">
                  <el-checkbox
                    v-for="dict in dict.type.sys_Kinship || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="其他" prop="kinshipOther">
                <el-input
                  v-model="formData.kinshipOther"
                  placeholder="请输入其他"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 主要亲属 -->
          <el-row>
            <el-col :span="12">
              <el-form-item label="主要亲属" prop="majorrelatives">
                <el-input
                  v-model="formData.majorrelatives"
                  placeholder="请输入主要亲属"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="与捐赠者关系" prop="familyrelations">
                <el-select
                  v-model="formData.familyrelations"
                  placeholder="请选择与捐赠者关系"
                >
                  <el-option
                    v-for="dict in dict.type.sys_FamilyRelation || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  />
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 信息来源 -->
          <el-row>
            <el-col :span="12">
              <el-form-item align="left" label="信息来源">
                <el-checkbox-group v-model="formData.infosources">
                  <el-checkbox
                    v-for="dict in dict.type.sys_InfoSources || []"
                    :key="dict.value"
                    :label="dict.value"
                  >
                    {{ dict.label }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="其他" prop="infosourcesOther">
                <el-input
                  v-model="formData.infosourcesOther"
                  placeholder="请输入信息来源其他"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 信息员 -->
          <el-row>
            <el-col :span="8">
              <el-form-item label="信息员" prop="infoname">
                <el-input
                  v-model="formData.infoname"
                  placeholder="请输入信息员"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系电话" prop="infophone">
                <el-input
                  v-model="formData.infophone"
                  placeholder="请输入信息员联系电话"
                />
              </el-form-item>
            </el-col>
          </el-row>
        </el-card>
        <!-- 捐献信息部分 -->
        <el-card header="捐献信息" class="form-section">
          <el-row :gutter="20">
@@ -354,7 +562,7 @@
                  placeholder="请选择捐献类别"
                >
                  <el-option
                    v-for="dict in dictOptions.sys_DonationCategory"
                    v-for="dict in dict.type.sys_DonationCategory || []"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
@@ -400,6 +608,38 @@
                <el-input
                  v-model="formData.acquisitiontissuename"
                  placeholder="请输入获取组织名称"
                />
              </el-form-item>
            </el-col>
          </el-row>
          <!-- 红十字会和联系人 -->
          <el-row>
            <el-col :span="8">
              <el-form-item align="left" label="红十字会" prop="redorganno">
                <org-selecter
                  ref="addCrossOrgSelect"
                  :org-type="'2'"
                  v-model="formData.redorganno"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系人" prop="contactperson">
                <el-input
                  v-model="formData.contactperson"
                  placeholder="请输入联系人"
                />
              </el-form-item>
            </el-col>
            <el-col :span="8">
              <el-form-item label="联系时间" prop="contacttime">
                <el-date-picker
                  v-model="formData.contacttime"
                  type="datetime"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  placeholder="选择报告时间"
                  style="width: 100%"
                />
              </el-form-item>
            </el-col>
@@ -496,7 +736,25 @@
    LiAreaSelect
  },
  dicts: ["sys_bloodtype_rhd", "sys_BloodType"],
  // 添加所有需要的字典类型
  dicts: [
    "sys_bloodtype_rhd",
    "sys_BloodType",
    "sys_user_sex",
    "sys_IDType",
    "sys_nation",
    "sys_education",
    "sys_occupation",
    "sys_DiseaseType",
    "sys_Infectious",
    "sys_patientstate",
    "sys_OtherCases",
    "sys_SelfWill",
    "sys_Kinship",
    "sys_FamilyRelation",
    "sys_InfoSources",
    "sys_DonationCategory"
  ],
  props: {
    visible: {
@@ -564,7 +822,7 @@
        return this.visible;
      },
      set(value) {
        this.$emit('update:visible', value);
        this.$emit("update:visible", value);
        if (!value) {
          this.handleClose();
        }
@@ -592,15 +850,15 @@
    }
  },
  created() {
    console.log('EditCaseModal created');
    console.log('visible:', this.visible);
    console.log('editData:', this.editData);
    console.log("EditCaseModal created");
    console.log("visible:", this.visible);
    console.log("editData:", this.editData);
  },
  mounted() {
    console.log('EditCaseModal mounted');
    console.log('visible:', this.visible);
    console.log('editData:', this.editData);
    console.log('isEdit:', this.isEdit);
    console.log("EditCaseModal mounted");
    console.log("visible:", this.visible);
    console.log("editData:", this.editData);
    console.log("isEdit:", this.isEdit);
  },
  methods: {
    getDefaultFormData() {
@@ -642,14 +900,32 @@
        illnessoverview: null,
        coordinatorNo: null,
        coordinatorName: null,
        diseasetype: [],
        infectious: [],
        patientstate: [],
        othercases: [],
        // 地址信息
        residenceaddress: null,
        residenceprovince: null,
        residencecity: null,
        residencetown: null,
        registeraddress: null,
        registerprovince: null,
        registercity: null,
        registertown: null,
        // 意愿和亲属信息
        selfwill: [],
        kinship: [],
        majorrelatives: null,
        familyrelations: null,
        infosources: [],
        infoname: null,
        infophone: null,
        redorganno: null,
        contactperson: null,
        contacttime: null,
        // 捐献信息
        donationcategory: null,
@@ -665,25 +941,22 @@
        reporttime: null,
        deptid: null,
        // 数组字段
        diseasetype: [],
        infectious: [],
        selfwill: [],
        othercases: [],
        infosources: [],
        kinship: [],
        patientstate: []
        // 其他字段
        diseasetypeOther: null,
        infectiousOther: null,
        kinshipOther: null,
        infosourcesOther: null
      };
    },
    async initForm() {
      console.log('初始化表单,isEdit:', this.isEdit);
      console.log("初始化表单,isEdit:", this.isEdit);
      try {
        if (this.isEdit && this.editData && this.editData.id) {
          console.log('加载编辑数据,id:', this.editData.id);
          console.log("加载编辑数据,id:", this.editData.id);
          await this.loadEditData();
        } else {
          console.log('新增模式,初始化表单');
          console.log("新增模式,初始化表单");
          this.formData = this.getDefaultFormData();
          this.formData.nationality = "中国";
          this.formData.bloodtype = "0";
@@ -708,7 +981,7 @@
      try {
        const response = await getDonatebaseinfo(this.editData.id);
        const data = response.data;
        console.log('加载到的数据:', data);
        console.log("加载到的数据:", data);
        // 处理数组字段
        const arrayFields = [
@@ -721,15 +994,15 @@
          "patientstate"
        ];
        arrayFields.forEach(field => {
          if (data[field]) {
          if (data[field] && typeof data[field] === "string") {
            data[field] = data[field].split(",");
          } else {
          } else if (!data[field]) {
            data[field] = [];
          }
        });
        this.formData = { ...this.getDefaultFormData(), ...data };
        console.log('合并后的formData:', this.formData);
        console.log("合并后的formData:", this.formData);
        // 设置地址信息
        if (data.residenceprovince) {
@@ -864,7 +1137,7 @@
    },
    handleClose() {
      console.log('关闭弹框');
      console.log("关闭弹框");
      this.isEdit = false;
      this.submitLoading = false;
      this.formData = this.getDefaultFormData();
@@ -880,12 +1153,14 @@
      this.submitLoading = true;
      try {
        const submitData = this.processSubmitData();
        console.log('提交数据:', submitData);
        console.log("提交数据:", submitData);
        const result = await updateDonatebaseinfo(submitData);
        if (result.code === 200) {
          this.$message.success(this.isEdit ? "更新成功" : "新增成功");
          this.$emit("success", result.data);
          console.log(1122);
          this.handleClose();
        } else {
          this.$message.error(result.msg || "操作失败");
@@ -935,6 +1210,11 @@
          "YYYY-MM-DD HH:mm:ss"
        );
      }
      if (data.contacttime) {
        data.contacttime = this.$moment(data.contacttime).format(
          "YYYY-MM-DD HH:mm:ss"
        );
      }
      // 设置默认值
      if (!data.recordstate) {