WXL
昨天 f64155f6ad27c50451bb7d4a15f553bc72ead7de
src/views/project/donatebaseinfo/index.vue
@@ -8,7 +8,7 @@
      label-width="70px"
    >
      <el-row :gutter="8">
        <el-col :span="6">
        <el-col :span="5">
          <el-form-item label="姓名" prop="name">
            <el-input
              v-model="queryParams.name"
@@ -19,7 +19,7 @@
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
        <el-col :span="5">
          <el-form-item
            align="left"
            label="医疗机构"
@@ -33,7 +33,7 @@
            />
          </el-form-item>
        </el-col>
        <el-col :span="6">
        <el-col :span="5">
          <el-form-item label="捐献地市">
            <el-select v-model="queryParams.city" placeholder="请选择地市">
              <el-option
@@ -46,16 +46,33 @@
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="6">
          <el-form-item label="捐献进度" prop="recordstate">
        <el-col :span="9">
          <el-form-item label="案例时间">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
            >
            </el-date-picker>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="5">
          <el-form-item label="捐献进度" prop="workflow">
            <el-select
              v-model="queryParams.recordstate"
              v-model="queryParams.workflow"
              placeholder="请选择当前进度"
              clearable
              size="small"
            >
              <el-option
                v-for="dict in dict.type.sys_DonationStatus"
                v-for="dict in dict.type.sys_donornode"
                :key="dict.value"
                :label="dict.label"
                :value="dict.value"
@@ -63,9 +80,7 @@
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row :gutter="8">
        <el-col :span="6">
        <el-col :span="5">
          <el-form-item label="报告人">
            <el-select
              v-model="queryParams.reporterno"
@@ -81,26 +96,23 @@
            </el-select>
          </el-form-item>
        </el-col>
        <el-col :span="12">
          <el-form-item label="报告日期">
            <el-date-picker
              style="width: 100%"
              v-model="selecttime"
              type="monthrange"
              range-separator="至"
              start-placeholder="开始月份"
              end-placeholder="结束月份"
              value-format="yyyy-MM-dd"
              @change="getTimeList"
        <el-col :span="5">
          <el-form-item label="是否终止">
            <el-select
              v-model="queryParams.terminationCase"
              placeholder="请选择状态"
            >
            </el-date-picker>
              <el-option
                v-for="item in terminationCaselist"
                :key="item.value"
                :label="item.name"
                :value="item.value"
              >
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="14">
        <el-col :span="9">
          <el-form-item label="籍贯">
            <div>
              <li_area_select
@@ -110,7 +122,8 @@
            </div>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="4">
          <el-form-item>
            <el-button
@@ -175,23 +188,27 @@
      :data="donatebaseinfoList"
      @selection-change="handleSelectionChange"
      border
      :default-sort="{ prop: 'reporttime', order: 'descending' }"
      :default-sort="{ prop: 'donatetime', order: 'descending' }"
    >
      <!-- <el-table-column label="报告时间" align="center" prop="id" /> -->
      <!-- <el-table-column type="selection" width="55" align="center" /> -->
      <el-table-column
        label="报告时间"
        label="案例时间"
        align="center"
        prop="reporttime"
        prop="donatetime"
        width="100"
      >
        <template slot-scope="scope">
          <span>{{ parseTime(scope.row.reporttime, "{y}-{m}-{d}") }}</span>
          <span>{{ parseTime(scope.row.donatetime, "{y}-{m}-{d}") }}</span>
        </template>
      </el-table-column>
      <el-table-column
        label="捐献编号"
        align="center"
        prop="donorno"
        width="200"
      />
      <el-table-column label="姓名" align="center" prop="name" width="100" />
      <el-table-column label="性别" align="center" prop="sex" width="100">
        <template slot-scope="scope">
          <dict-tag
@@ -200,26 +217,59 @@
          />
        </template>
      </el-table-column>
      <el-table-column label="年龄" align="center" prop="age" width="100" />
      <el-table-column
        label="现所在地市"
        align="center"
        prop="registercityname"
        width="150"
      />
      <el-table-column label="年龄" align="center" prop="age" width="100">
        <template slot-scope="scope">
           {{
            `${
              scope.row.age && scope.row.age !== 0 ? `${scope.row.age}${scope.row.ageunit?scope.row.ageunit:''}` : ""
            } ${
              scope.row.age2 && scope.row.age2 !== 0
                ? `${scope.row.age2}${scope.row.ageunit2}`
                : ""
            }`.trim()
          }}
        </template>
      </el-table-column>
      <el-table-column
        label="医疗机构"
        align="center"
        prop="treatmenthospitalname"
      />
      <el-table-column label="血型" align="center" prop="bloodtype" width="100">
        <template slot-scope="scope">
          <dict-tag
            :options="dict.type.sys_BloodType"
            :value="scope.row.bloodtype"
          />
        </template>
      </el-table-column>
      <el-table-column
        label="捐献类别"
        align="center"
        prop="donationcategory"
        width="150"
      >
        <template slot-scope="scope">
          <dict-tag
            :options="dict.type.sys_DonationCategory"
            :value="scope.row.donationcategory"
          />
        </template>
      </el-table-column>
      <el-table-column
        label="报告人"
        align="center"
        prop="reportername"
        width="100"
      />
      <!--
         <el-table-column
        label="现所在地市"
        align="center"
        prop="registercityname"
        width="150"
      />
      <el-table-column
        label="捐献进度"
        align="center"
@@ -227,18 +277,33 @@
        width="120"
      >
        <template slot-scope="scope">
          <dict-tag
         <dict-tag
            :options="dict.type.sys_DonationStatus"
            :value="scope.row.recordstate"
          />
        </template>
      </el-table-column>
      -->
      <el-table-column
        label="捐献进度"
        align="center"
        prop="workflow"
        width="120"
      >
        <template slot-scope="scope">
          <div v-if="!scope.row.terminationCase">
            <dict-tag
              :options="dict.type.sys_donornode"
              :value="scope.row.workflow"
            />
          </div>
          <div v-else>任务终止</div>
        </template>
      </el-table-column>
      <el-table-column
        label="操作"
        align="center"
        class-name="small-padding fixed-width"
        width="200"
        fixed="right"
      >
        <template slot-scope="scope">
@@ -250,15 +315,30 @@
            v-hasPermi="['project:donatebaseinfo:edit']"
            >详情</el-button
          >
          <!-- <el-button v-if="scope.row.recordstate == 0" size="mini" type="text" icon="el-icon-delete"
            @click="handleDelete(scope.row)" v-hasPermi="['project:donatebaseinfo:remove']">删除</el-button>
          <el-button size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']">终止</el-button>
          <el-button size="mini" type="text" icon="el-icon-refrigerator" @click="handledownload(scope.row)">下载</el-button>
          <el-button v-if="scope.row.recordstate == 0 || scope.row.recordstate == 3" size="mini" type="text"
            icon="el-icon-thumb" @click="handleapproval(scope.row)">上报审核</el-button> -->
          <!-- 撤销申请 -->
          <el-button
            v-if="scope.row.recordstate == 0"
            size="mini"
            type="text"
            icon="el-icon-delete"
            @click="handleDelete(scope.row)"
            v-hasPermi="['project:donatebaseinfo:remove']"
            >删除</el-button
          >
          <!--
            <el-button v-if="scope.row.recordstate == 0 || scope.row.recordstate == 3" size="mini" type="text"
            icon="el-icon-thumb" @click="handleapproval(scope.row)">提交</el-button>
           -->
          <el-button
            size="mini"
            type="text"
            icon="el-icon-refrigerator"
            @click="handledownload(scope.row)"
            >下载</el-button
          >
          <!--
            <el-button size="mini" type="text" icon="el-icon-edit" @click="handletermination(scope.row)"
            v-hasPermi="['project:donatebaseinfo:edit']">{{ scope.row.recordstate == 99 ? "恢复": "终止"  }}</el-button>
          -->
        </template>
      </el-table-column>
    </el-table>
@@ -389,8 +469,15 @@
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="年龄" prop="age">
                <el-input v-model="form.age" placeholder="请输入年龄" />
              <el-form-item label="学历" prop="education">
                <el-select v-model="form.education" placeholder="请选择学历">
                  <el-option
                    v-for="dict in dict.type.sys_education"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
@@ -403,10 +490,19 @@
                  v-model="form.birthday"
                  type="date"
                  style="width: 174px"
                  value-format="yyyy-MM-dd HH:mm:ss"
                  @change="calculateAge"
                  value-format="yyyy-MM-dd"
                  placeholder="选择出生日期"
                >
                </el-date-picker>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <!-- <el-form-item label="年龄" prop="age">
                <el-input v-model="form.age" placeholder="请输入年龄" />
              </el-form-item> -->
              <el-form-item label="年龄" prop="age">
                <el-input v-model="form.andAge" disabled> </el-input>
              </el-form-item>
            </el-col>
            <el-col :span="6">
@@ -414,18 +510,6 @@
                <el-select v-model="form.occupation" placeholder="请选择职业">
                  <el-option
                    v-for="dict in dict.type.sys_occupation"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="6">
              <el-form-item label="学历" prop="education">
                <el-select v-model="form.education" placeholder="请选择学历">
                  <el-option
                    v-for="dict in dict.type.sys_education"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
@@ -828,7 +912,6 @@
    </el-dialog>
  </div>
</template>
<style scoped></style>
<script>
import { getUserProfile } from "@/api/system/user";
import {
@@ -839,13 +922,14 @@
  updateDonatebaseinfo,
  exportDonatebaseinfo,
  downloadbaseinfo,
  getDonationNumber,
  getdonatorno
  // exportProvincemessage,
} from "@/api/project/donatebaseinfo";
import Li_area_select from "@/components/Address";
import OrgSelecter from "@/views/project/components/orgselect";
import AnnexUpload from "@/views/project/components/annexupload";
import ReportName from "@/views/project/components/organizationUser";
import { getToken } from "@/utils/auth";
import {
  listOrganization,
  getOrganization,
@@ -885,7 +969,8 @@
    "sys_DonationStatus",
    "sys_DiseaseType",
    "sys_SelfWill",
    "sys_FamilyRelation"
    "sys_FamilyRelation",
    "sys_donornode"
  ],
  data() {
    return {
@@ -914,6 +999,10 @@
        shi: "",
        qu: ""
      },
      terminationCaselist: [
        { name: "终止状态", value: 1 },
        { name: "正常状态", value: 0 }
      ],
      // 遮罩层
      loading: true,
      // 导出遮罩层
@@ -962,7 +1051,90 @@
        // reporttime: null,
      },
      // 表单参数
      form: {},
      form: {
        id: null,
        name: null,
        sex: null,
        idcardtype: null,
        idcardno: null,
        age: null, // 年龄(年)
        andAge: "",
        ageunit: "年", // 单位,通常固定为“年”
        age2: null, // 年龄(月或天)
        ageunit2: "月", // 单位,根据计算决定是“月”还是“天”
        ageunit: null,
        birthday: null,
        phone: null,
        residenceaddress: null,
        nationality: "中国",
        nativeplace: null,
        residenceprovince: null,
        nation: null,
        residenceprovincename: null,
        occupation: null,
        residencecity: null,
        education: null,
        residencecityname: null,
        residencetown: null,
        residencetownname: null,
        residencecommunity: null,
        residencecommunityname: null,
        residencecountycode: null,
        residencecountyname: null,
        registeraddress: null,
        registerprovince: null,
        registerprovincename: null,
        registercity: null,
        registercityname: null,
        registertown: null,
        registertownname: null,
        registercommunity: null,
        registercommunityname: null,
        registercountycode: null,
        registercountyname: null,
        recordstate: null,
        treatmenthospitalno: null,
        treatmenthospitalname: null,
        treatmentdeptname: null,
        diagnosisno: null,
        diagnosisname: null,
        bloodtype: "0",
        inpatientno: null,
        rhyin: "0",
        donorno: null,
        donationcategory: null,
        illnessoverview: null,
        diseasetype: [],
        infectious: [],
        selfwill: [],
        diseasetypeOther: null,
        othercases: [],
        kinshipwill: 0,
        infosources: [],
        kinship: [],
        redorganno: null,
        redorganname: null,
        contactperson: null,
        infectiousOther: null,
        contactnumber: null,
        contacttime: null,
        reporterno: null,
        reportername: null,
        patientstate: [],
        reporterphone: null,
        infosourcesOther: null,
        reporttime: null,
        delFlag: null,
        createBy: null,
        createTime: null,
        updateBy: null,
        updateTime: null,
        kinshipOther: null,
        majorrelatives: null,
        familyrelations: null,
        acquisitiontissueno: "ZJOPO",
        acquisitiontissuename: "浙江省人体器官获取组织"
      },
      //ads
      reporters: [],
      users: [],
@@ -992,7 +1164,7 @@
          { required: true, message: "请正确输入证件号码", trigger: "blur" }
        ],
        sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
        age: [{ required: true, message: "请输入年龄", trigger: "blur" }],
        // age: [{ required: true, message: "请输入年龄", trigger: "blur" }],
        treatmenthospitalno: [
          { required: true, message: "请选择医疗机构", trigger: "blur" }
        ],
@@ -1052,6 +1224,9 @@
      endtime: "",
      reportlist: [],
      reportervalue: "",
      headers: {
        Authorization: "Bearer " + getToken()
      },
      provinceData: [
        { label: "全部", value: "" },
        { label: "杭州市", value: "1" },
@@ -1068,7 +1243,12 @@
      ]
    };
  },
  created() {},
  created() {
    if (sessionStorage.getItem("donatebaseinfo")) {
      this.queryParams = JSON.parse(sessionStorage.getItem("donatebaseinfo"));
      console.log(this.queryParams, "queryParams");
    }
  },
  mounted(e) {
    // let idd = this.$route.query.userid
@@ -1083,14 +1263,14 @@
    if (this.$route.params.starttime != null && this.$route.params.endtime) {
      this.selecttime = [
        this.$moment(this.$route.params.starttime).format("YYYY-MM-DD"),
        this.$moment(this.$route.params.endtime)
          .add(-1, "month")
          .format("YYYY-MM-DD")
        this.$moment(this.$route.params.endtime).format("YYYY-MM-DD")
      ];
    }
    if (this.$route.params.reporterno != "") {
      this.reporterno = this.$route.params.reporterno;
    }
    this.queryParams.terminationcase = this.$route.params.terminationcase;
    if (
      this.$route.params.tempRecordState != "" &&
      this.$route.params.tempRecordState != undefined
@@ -1127,7 +1307,83 @@
        this.currentuser = response.data;
      });
    },
    calculateAge(birthday) {
      if (!birthday) {
        // 清空年龄字段
        this.form.age = null;
        this.form.age2 = null;
        // this.form.age3 = null;
        return;
      }
      const birthDate = new Date(birthday);
      const today = new Date();
      // 计算总月份差异
      let yearDiff = today.getFullYear() - birthDate.getFullYear();
      let monthDiff = today.getMonth() - birthDate.getMonth();
      let dayDiff = today.getDate() - birthDate.getDate();
      // 如果当前日期的天数小于出生日期的天数,则借月
      if (dayDiff < 0) {
        monthDiff--;
        // 获取上个月的最后一天
        const lastDayOfMonth = new Date(
          today.getFullYear(),
          today.getMonth(),
          0
        ).getDate();
        dayDiff += lastDayOfMonth;
      }
      // 如果月份差为负,则借年
      if (monthDiff < 0) {
        yearDiff--;
        monthDiff += 12;
      }
      // 赋值年部分
      this.form.age = yearDiff;
      this.form.ageunit = "岁";
      // 赋值月部分(或者您也可以选择显示剩余的天数)
      this.form.age2 = monthDiff;
      this.form.ageunit2 = "月";
      // 如果您还想显示天数
      // this.form.age3 = dayDiff;
      // this.form.ageunit3 = '天';
      // 如果年龄小于1岁,可能您希望用月或天来表示主年龄
      // 这里是一个简单的逻辑,您可以根据需求调整
      if (yearDiff === 0) {
        if (monthDiff === 0) {
          // 小于1个月,用天表示
          this.form.age = dayDiff;
          this.form.ageunit = "天";
          this.form.age2 = null; // 清空第二字段
          // this.form.age3 = null;
        } else {
          // 小于1年,用月表示
          this.form.age = monthDiff;
          this.form.ageunit = "月";
          this.form.age2 = dayDiff; // 第二字段显示天
          this.form.ageunit2 = "天";
        }
      }
      this.form.andAge = `${
        this.form.age && this.form.age !== 0
          ? `${this.form.age}${this.form.ageunit}`
          : ""
      } ${
        this.form.age2 && this.form.age2 !== 0
          ? `${this.form.age2}${this.form.ageunit2}`
          : ""
      }`.trim();
      this.$forceUpdate(); // 强制更新
      console.log(this.form.andAge);
    },
    LoadReportList() {
      listDonatebaseinfo().then(res => {
        let list = res.rows;
@@ -1290,7 +1546,8 @@
          // 赋值给表格
          this.form.sex = sex;
          this.form.birthday = birthday;
          this.form.age = age;
          this.calculateAge(birthday);
          // this.form.age = age;
        } else {
        }
      } catch {}
@@ -1325,18 +1582,15 @@
    },
    /** 查询捐献基础列表 */
    getList(e) {
    getList() {
      this.loading = true;
      this.queryParams.params = {};
      // if (null != this.daterangeReporttime && "" != this.daterangeReporttime) {
      //   this.queryParams.params["beginReporttime"] =
      //     this.daterangeReporttime[0];
      //   this.queryParams.params["endReporttime"] = this.daterangeReporttime[1];
      // }
      sessionStorage.removeItem("donatebaseinfo");
      sessionStorage.setItem(
        "donatebaseinfo",
        JSON.stringify(this.queryParams)
      );
      // 跳转时的默认进度
      if (e != null && e != undefined && !isNaN(e)) {
        this.queryParams.recordstate = e;
      }
      if (this.reportervalue != "") {
        this.queryParams.reportno = this.reportervalue;
@@ -1355,6 +1609,8 @@
      this.queryParams.residenceprovince = this.$refs.areaSelect.getSheng();
      this.queryParams.residencecity = this.$refs.areaSelect.getShi();
      this.queryParams.residencetown = this.$refs.areaSelect.getQu();
      console.log(this.queryParams);
      listDonatebaseinfo(this.queryParams).then(response => {
        this.donatebaseinfoList = response.rows;
        //console.log("listDonatebaseinfo", response.rows);
@@ -1518,9 +1774,9 @@
      this.showSaveBtn = true;
      //this.$refs.annex.getAnnexList();
      this.open = true;
      this.$nextTick(function() {
        this.$refs.annex.getAnnexList();
      });
      // this.$nextTick(function() {
      //   this.$refs.annex.getAnnexList();
      // });
      this.title = "人体器官潜在捐献者登记表";
    },
@@ -1572,7 +1828,6 @@
      const id = row.id || this.ids;
      getDonatebaseinfo(id).then(response => {
        this.form = response.data;
        this.form.diseasetype = this.form.diseasetype.split(",");
        this.form.infectious = this.form.infectious.split(",");
        this.form.selfwill = this.form.selfwill.split(",");
@@ -1589,16 +1844,18 @@
        this.open = true;
        this.title = "人体器官潜在捐献者登记表";
        this.form.recordstate = 99;
        this.$nextTick(function() {
          this.$refs.annex.getAnnexList();
        });
        // this.$nextTick(function() {
        //   this.$refs.annex.getAnnexList();
        // });
      });
    },
    /** 提交按钮 */
    submitForm() {
      console.log(this.form);
      this.$refs["form"].validate(valid => {
        console.log("提交的数据们:", this.form);
        if (valid) {
          const date = { ...this.form };
          console.log(date, "date");
          this.form.birthday = this.$moment(this.form.birthday).format(
            "YYYY-MM-DD HH:mm:ss"
          );
@@ -1628,6 +1885,7 @@
          this.form.registertownname = this.registerAddresss.qu;
          this.form.reportername = this.$refs.getReportname.$data.selectedLabel;
          this.form.donatetime = this.form.reporttime;
          try {
            this.form.treatmenthospitalname = this.$refs.addOrgSelect.getOptionByValue(
@@ -1645,37 +1903,28 @@
            this.form.redorganname = this.form.redorganno;
          }
          //尝试生成捐献编号(已经由addDonatebaseinfo接口中生成取代)
          // getdonatorno(this.form).then((response) => {
          //   // alert(JSON.stringify(response));
          //   this.reset();
          // });
          if (this.form.id != null) {
            updateDonatebaseinfo(this.form).then(response => {
              this.$modal.msgSuccess("修改成功");
          this.form.workflow = 0;
          this.form.recordstate = 0;
          addDonatebaseinfo(this.form).then(res => {
            console.log("22");
            console.log(res.code);
            if (res.code == 200) {
              this.$modal.msgSuccess("新增成功");
              this.$router.push({
                path: "/organ/donationdetails/",
                query: {
                  id: res.data.id,
                  organType: "edit"
                }
              });
              this.open = false;
              this.getList();
            });
          } else {
            this.form.recordstate = 0;
            addDonatebaseinfo(this.form).then(response => {
              if (response.code == 200) {
                this.$modal.msgSuccess("新增成功");
                this.$router.push({
                  path: "/organ/donationdetails/",
                  query: {
                    id: response.data.id,
                    organType: "edit"
                  }
                });
                this.open = false;
                // this.getList();
              } else {
                this.$modal.msgError("新增失败:" + response.msg);
              }
            });
          }
            } else {
              console.log("1");
              this.form = date;
              console.log(this.form, "form");
              this.$modal.msgError("新增失败:" + res.msg);
            }
          });
        }
      });
    },
@@ -1733,18 +1982,36 @@
    handledownload(row) {
      const id = row.id || this.ids;
      downloadbaseinfo(id).then(response => {
        var fileUrl = response;
      downloadbaseinfo(id).then(res => {
        var fileUrl = res;
        //获取当前网址
        var urlBase = process.env.VUE_APP_BASE_API;
        var curWWWPath = window.document.location.href;
        var pos = curWWWPath.indexOf(window.document.location.pathname);
        // 创建a标签
        var aEle = document.createElement("a");
        aEle.href =
          curWWWPath.substring(0, pos) + urlBase + fileUrl["downloadUrl"];
        aEle.click();
        console.log(aEle.href);
        // 添加Authorization头部
        fetch(aEle.href, {
          headers: this.headers
        })
          .then(response => {
            // 将文件下载链接作为blob对象进行下载
            return response.blob();
          })
          .then(blob => {
            const url = window.URL.createObjectURL(new Blob([blob]));
            console.log(url);
            const link = document.createElement("a");
            link.href = url;
            const name = fileUrl["downloadName"];
            link.setAttribute("download", name); // 替换file.pdf为实际的文件名
            document.body.appendChild(link);
            link.click();
            link.parentNode.removeChild(link);
          });
      });
    }
  }
@@ -1757,4 +2024,10 @@
  margin: auto !important;
  padding-bottom: 0px !important;
}
::v-deep .el-input.is-disabled .el-input__inner {
  background-color: #fff;
  border-color: #dfe4ed;
  color: #000;
  cursor: not-allowed;
}
</style>