<template>
  <div class="main-contain">
    <div class="position">
      <bread-crumb :crumbs='crumbs'></bread-crumb>
    </div>

    <div class="app-container">
      <div class="nameTitle">患者基本信息:</div>
      <div class="formMain">
        <el-form class="basicForm" :model="form" :rules="rules" ref="form" label-width="100px">


          <el-form-item label="患者姓名：" prop="name" :validate-event="is_Name">
            <el-autocomplete
              class="checkSearch"
              popper-class="my-autocomplete"
              v-model="form.name"
              :fetch-suggestions="querySearchAsync"
              :trigger-on-focus="false"
              placeholder="请输入病人名字"
              @select="handleSelect"
              style="width:160px;"
            >
              <i class="el-icon-search el-input__icon" slot="suffix"></i>
              <template slot-scope="{ item }">
                <div class="name">{{ item.name }}</div>
              </template>
            </el-autocomplete>
          </el-form-item>


          <el-form-item label="手机号码：" prop="phone">
            <el-input v-model="form.phone"></el-input>
          </el-form-item>


          <el-form-item label="证件类型：" prop="certificates" :validate-event="is_Name">
            <el-select v-model="form.certificates" placeholder="请选择">
              <el-option
                v-for="item in certificates"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>

          <el-form-item label="证件号码：" prop="id_card_no" :validate-event="is_Name">
            <el-input v-model="form.id_card_no"></el-input>
          </el-form-item>


          <el-form-item label="读卡类型：" prop="id_card_type" :validate-event="is_Name">
            <el-select v-model="form.id_card_type" placeholder="请选择">
              <el-option
                v-for="item in IDCardTypes"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>

          <!--<el-form-item class="specialFormItem" label="医保卡号：">-->
          <!--<div style="display:flex;">-->
          <!--<el-input v-model="form.medicalInsuranceCard"></el-input>-->
          <!--<el-button style="margin-left:10px;" type="primary" @click="reading">读卡</el-button>-->
          <!--</div>-->
          <!--</el-form-item>-->

        </el-form>
      </div>
      <div class="nameTitle">患者住院信息:</div>
      <div class="formMain">
        <el-form class="basicForm" :model="form" :rules="rules" ref="form" label-width="100px">

          <el-form-item label="疾病类型：" prop="sick_type" :validate-event="is_Name">
            <el-select filterable v-model="form.sick_type" placeholder="">
              <el-option
                v-for="(item,index) in sick"
                :key="index"
                :label="item.class_name"
                :value="item.id">
              </el-option>
            </el-select>
          </el-form-item>

          <el-form-item label="诊断：" prop="diagnosis" :validate-event="is_Name">
            <el-select v-model="form.diagnosis" placeholder="">
              <el-option
                v-for="(item,index) in diagnoses"
                :key="index"
                :label="item.class_name"
                :value="item.id">
              </el-option>
            </el-select>
          </el-form-item>

          <el-form-item label="医疗类别：" prop="med_type" :validate-event="is_Name">
            <el-select v-model="form.med_type" placeholder=""
            >
              <el-option
                v-for="(item,index) in registers"
                :key="index"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>


          <el-form-item label="主治医生：" prop="doctor" :validate-event="is_Name">
            <el-select v-model="form.doctor" placeholder="请选择" @change="changeDoctor">
              <el-option
                v-for="item in doctorList"
                :key="item.admin_user_id"
                :label="item.user_name"
                :value="item.admin_user_id">
              </el-option>
            </el-select>
          </el-form-item>
          <el-form-item label="入院科室：" prop="department" :validate-event="is_Name">
            <el-select v-model="form.department" placeholder="请选择">
              <el-option
                v-for="item in departmentList"
                :key="item.id"
                :label="item.name"
                :value="item.id">
              </el-option>
            </el-select>
          </el-form-item>


          <el-form-item label="入院时间：" prop="start_time" :validate-event="is_Name">
            <el-date-picker v-model="form.start_time" type="datetime" format="yyyy-MM-dd HH:mm:ss"
                            value-format="yyyy-MM-dd HH:mm:ss"
                            placeholder="请选择入院时间">
            </el-date-picker>

          </el-form-item>

        </el-form>
        <el-button style="float:right" @click="saveHisPatient('form')" v-loading="loadingone" type="primary">登记
        </el-button>
      </div>

    </div>
  </div>
</template>

<script>
  import {PostSearch} from '@/api/patient'
  import BreadCrumb from '@/xt_pages/components/bread-crumb'
  import {basename} from 'path'
  import {
    getAllDoctorList,
    getPatientDetail,
    getTodaySchedulePatient,
    getUnRegisterHisPatientList,
    saveHisPatient
  } from '@/api/project/project'
  import {getDictionaryDataConfig} from '@/utils/data'
  import {jsGetAge, uParseTime} from '@/utils/tools'
  import {getInitData} from '@/api/his/his'
  import axios from 'axios'

  const moment = require('moment');
  export default {
    components: {
      BreadCrumb
    },
    data() {
      return {
        record_date:"",
        loadingone: false,
        read_loading: false,
        registers: [
          {value: 11, label: '普通门诊'},
          // {value: 12, label: '门诊挂号'},
          // {value: 13, label: '急诊'},
          {value: 14, label: '门诊特殊病'},
          // {value: 15, label: '门诊统筹'},
          // {value: 16, label: '门诊慢性病'},
          // {value: 21, label: '普通住院'}

        ],
        sick: [],
        diagnoses: [],
        crumbs: [
          {path: false, name: '住院工作站'},
          {path: false, name: '住院登记'}
        ],
        form: {
          start_time: '',
          id: 0,
          sick_type: '',
          diagnosis: '',
          medicalInsuranceCard: '',
          name: '',
          certificates: 1,
          id_card_no: '',
          doctor: '',
          department: '',
          phone: '',
          id_card_type: 2,
          med_type: '',

        },


        certificates: [{
          value: 1,
          label: '内地身份证'
        }, {
          value: 2,
          label: '社保卡'
        }, {
          value: 3,
          label: '护照'
        }, {
          value: 4,
          label: '军官证'
        }, {
          value: 5,
          label: '台胞证'
        }, {
          value: 6,
          label: '港澳地区身份证'
        }],

        IDCardTypes: [{
          value: 1,
          label: '社保卡'
        }, {
          value: 2,
          label: '身份证'
        }, {
          value: 3,
          label: '电子凭证'
        }],
        rules: {
          name: [{required: true, message: '患者姓名不能为空', trigger: 'blur'}],
          id_card_no: [{required: true, message: '证件号码不能为空', trigger: 'blur'}],
          doctor: [{required: true, message: '请选择医生', trigger: 'blur'}],
          department: [{required: true, message: '请填写科室', trigger: 'blur'}],
          certificates: [{required: true, message: '证件类型不能为空', trigger: 'change'}],
          id_card_type: [{required: true, message: '读卡类型不能为空', trigger: 'change'}],
          med_type: [{required: true, message: '医疗类别不能为空', trigger: 'change'}],
          sick_type: [{required: true, message: '大病类别不能为空', trigger: 'change'}],
          diagnosis: [{required: true, message: '诊断不能为空', trigger: 'change'}],
          start_time: [{required: true, message: '入院时间不能为空', trigger: 'change'}]

        },
        doctorList: [],
        departmentList: [],
        check: 0,
        show: false,
        is_Name: false,
        patient: [],
        scialType: []
      }
    },

    methods: {

      handleSelect(val) {
        this.form.id = val.id;
        this.form.name = val.name;
        this.form.sex = val.gender;
        this.form.age = val.age;
        this.form.birthday = uParseTime(val.birthday, '{y}-{m}-{d}');
        this.form.phone = val.phone;
        this.form.id_card_no = val.id_card_no;

        var thisLen = this.form.id_card_no.length;
        var birth = '';
        if (thisLen == 15) {
          birth = '19' + this.form.id_card_no.substr(6, 6)
        } else {
          birth = this.form.id_card_no.substr(6, 8)
        }
        var births =
          birth.substr(0, 4) +
          '-' +
          birth.substr(4, 2) +
          '-' +
          birth.substr(6, 2);
        this.form.age = jsGetAge(births, '-')
      },
      querySearchAsync(keyword, cb) {
        let key = '';
        if (keyword != undefined) {
          key = keyword
        }
        let searchArray = [];
        PostSearch(key).then(response => {
          if (response.data.state == 1) {
            searchArray = response.data.data.patient;
            cb(searchArray)
          } else {
            cb([])
          }
        })
      },


      // reading(medicalInsuranceCard) {
      //   var that = this
      //   if (this.form.id_card_type.length == 0 || this.form.id_card_type == 0) {
      //     this.$message.error('请先选择读卡类型')
      //     return
      //   }
      //   let params = {
      //     'id_card_type': this.form.id_card_type
      //   }
      //   axios.get('http://127.0.0.1:9532/api/sscard', {
      //     params: params
      //   })
      //     .then(function(response) {
      //       if (response.data.state == 0) {
      //         that.$message.error(response.data.msg)
      //         return false
      //       } else {
      //         var patient = response.data.data.patient
      //
      //         if (that.form.id_card_type == 1) {
      //           that.form.name = patient.ID
      //           that.form.sex = patient.gender
      //           that.form.age = patient.age
      //           that.form.birthday = uParseTime(patient.birthday, '{y}-{m}-{d}')
      //           that.form.phone = patient.phone
      //           that.form.id_card_no = patient.id_card_no
      //           that.form.medicalInsuranceCard = response.data.data.number
      //
      //         } else if (that.form.id_card_type == 2) {
      //           that.form.name = patient.ID
      //           that.form.sex = patient.gender
      //           that.form.age = patient.age
      //           that.form.birthday = uParseTime(patient.birthday, '{y}-{m}-{d}')
      //           that.form.phone = patient.phone
      //           that.form.id_card_no = patient.id_card_no
      //         }
      //         that.$message({ message: '读卡成功', type: 'success' })
      //       }
      //     })
      //     .catch(function(error) {
      //
      //     })
      //
      // },
      getBirthday(date) {
        console.log(date);
        let curTime = moment(new Date(date)).format('YYYY-MM-DD');
        console.log('curTime22222', curTime);

        console.log(this.jsGetAge(curTime));

        this.form.age = this.jsGetAge(curTime)
      },
      jsGetAge(strBirthday) { //传入形式yyyy-MM-dd
        //strBirthday = util.formatTime(strBirthday);转换成yyyy-MM-dd形式
        var returnAge;
        var strBirthdayArr = strBirthday.split('-');
        var birthYear = strBirthdayArr[0];
        var birthMonth = strBirthdayArr[1];
        var birthDay = strBirthdayArr[2];
        var d = new Date();
        var nowYear = d.getFullYear();
        var nowMonth = d.getMonth() + 1;
        var nowDay = d.getDate();
        if (nowYear == birthYear) {
          returnAge = 0 //同年 则为0岁
        } else {
          var ageDiff = nowYear - birthYear; //年之差
          if (ageDiff > 0) {
            if (nowMonth == birthMonth) {
              var dayDiff = nowDay - birthDay; //日之差
              if (dayDiff < 0) {
                returnAge = ageDiff - 1
              } else {
                returnAge = ageDiff
              }
            } else {
              var monthDiff = nowMonth - birthMonth; //月之差
              if (monthDiff < 0) {
                returnAge = ageDiff - 1
              } else {
                returnAge = ageDiff
              }
            }
          } else {
            returnAge = -1 //返回-1 表示出生日期输入错误 晚于今天
          }
        }
        return returnAge //返回周岁年龄
      },
      getForm() {
        this.form.total = this.total;
        if (localStorage.getItem('temp')) {
          let a = JSON.parse(localStorage.getItem('temp'));
          // let arr = []
          this.form.create_time = new Date(new Date().toLocaleDateString()).getTime() / 1000;
          this.form.org_id = this.$store.getters.xt_user.org_id;
          a.push(this.form);
          console.log(111, a);
          localStorage.setItem('temp', JSON.stringify(a));
          Object.keys(this.form).forEach((key) => {
            this.form[key] = ''
          });
          this.$message({message: '添加成功', type: 'success'})
        } else {
          let arr = [];
          this.form.create_time = new Date(new Date().toLocaleDateString()).getTime() / 1000;
          this.form.org_id = this.$store.getters.xt_user.org_id;
          arr.push(this.form);
          localStorage.setItem('temp', JSON.stringify(arr));
          Object.keys(this.form).forEach((key) => {
            this.form[key] = ''
          });
          this.$message({message: '添加成功', type: 'success'})
        }
      },

      getAllDoctorList() {
        getAllDoctorList().then(response => {
          if (response.data.state == 1) {
            var doctor = response.data.data.doctor;
            this.doctorList = doctor;
            var department = response.data.data.department;
            this.departmentList = department
          }
        })
      },
      saveHisPatient(formName) {
        if (this.form.name == '') {
          this.$message.error('患者姓名不能为空');
          this.is_Name = true;
          return
        }


        if (this.form.doctor == '') {
          this.$message.error('医生不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.department == '') {
          this.$message.error('科室不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.id_card_type == '') {
          this.$message.error('读卡类型不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.id_card_no == '') {
          this.$message.error('证件号码不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.med_type == '') {
          this.$message.error('医疗类别不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.diagnosis == '') {
          this.$message.error('诊断不能为空');
          this.is_Name = true;
          return
        }

        if (this.form.sick_type == '') {
          this.$message.error('大病类别不能为空');
          this.is_Name = true;
          return
        }


        if (this.form.start_time == '') {
          this.$message.error('入院时间不能为空');
          this.is_Name = true;
          return
        }

        this.$refs[formName].validate((valid) => {
          if (valid) {
            if (this.form.costChecked == true) {
              this.check = 1
            }
            if (this.form.costChecked == false) {
              this.check = 2
            }
            if (this.form.id_card_no == '') {
              this.show = true
            }
            var nowDate = new Date();
            var nowYear = nowDate.getFullYear();
            var nowMonth = nowDate.getMonth() + 1;
            var nowDay = nowDate.getDate();
            this.record_date =
              nowYear +
              '-' +
              (nowMonth < 10 ? '0' + nowMonth : nowMonth) +
              '-' +
              (nowDay < 10 ? '0' + nowDay : nowDay);

            var params = {
              id: this.form.id,
              name: this.form.name,
              id_card_type: this.form.id_card_type,
              certificates: this.form.certificates,
              id_card_no: this.form.id_card_no,
              doctor: this.form.doctor,
              department: this.form.department,
              phone: this.form.phone,
              med_type: this.form.med_type,
              diagnosis: this.form.diagnosis,
              sick_type: this.form.sick_type,
              start_time: this.form.start_time,
            };
            params['record_time'] = this.record_date;
            params['admin_user_id'] = this.$store.getters.xt_user.user.id;
            this.loadingone = true;

            var that = this;

            axios.get('http://127.0.0.1:9532/zh/api/inhopitalcheck/get', {
              params: params,
              headers: {
                'Permission': 5
              }
            })
              .then(function (response) {
                if (response.data.state == 0) {
                  that.$message.error(response.data.msg);
                  that.loadingone = false;
                  return false
                } else {
                  that.loadingone = false;
                  if (response.data.data.failed_code == -10) {
                    // that.$message.error(response.data.data.msg)
                    that.$confirm(response.data.data.msg, '医保错误信息', {
                      confirmButtonText: '确 定',
                      type: 'warning'
                    }).then(() => {

                    }).catch(() => {
                    })
                  } else {
                    that.$message({message: '登记成功', type: 'success'});
                    that.form.name = '';
                    that.form.certificates = '';
                    that.form.id_card_no = '';
                    that.form.doctor = '';
                    that.form.department = '';
                    that.form.phone = '';
                    that.form.med_type = 14;
                    that.form.sick_type = that.sick[0].id;
                    that.form.diagnosis = that.diagnoses[0].id
                  }
                }
              })
              .catch(function (error) {

              })
          }
        })
      },
      getDictionaryDataConfig(module, filed_name) {
        return getDictionaryDataConfig(module, filed_name)
      },

      changeDoctor(id) {
        for (let i = 0; i < this.doctorList.length; i++) {
          if (this.doctorList[i].admin_user_id == id) {
            if (this.doctorList[i].department_id == 0) {
              this.form.department = this.departmentList[0].id
            } else {
              this.form.department = this.doctorList[i].department_id
            }

          }
        }
      },
      changeName(id) {
        this.form.sex = '';
        this.form.age = '';
        this.form.birthday = '';
        this.form.phone = '';
        this.form.id_card_no = '';
        getPatientDetail(id).then(response => {
          if (response.data.state == 1) {
            var patient = response.data.data.patient;
            console.log('patient', patient);
            this.form.sex = patient.gender;
            this.form.age = patient.age;
            this.form.birthday = uParseTime(patient.birthday, '{y}-{m}-{d}');
            this.form.phone = patient.phone;
            this.form.id_card_no = patient.id_card_no
          }
        })
      }, getInitData() {
        getInitData().then(response => {
          if (response.data.state == 0) {
            this.$message.error(response.data.msg);
            return false
          } else {
            this.doctors = response.data.data.doctors;
            this.department = response.data.data.department;
            this.sick = response.data.data.sick;
            this.diagnoses = response.data.data.diagnose;

            this.form.p_type = 14;
            this.form.sick_type = this.sick[0].id;
            this.form.diagnosis = this.diagnoses[0].id

          }
        })

      }

    },
    created() {

      if (this.$store.getters.xt_user.org_id == 9504 || this.$store.getters.xt_user.org_id == 10028 ||  this.$store.getters.xt_user.org_id == 10138) {
        this.form.certificates = 2;
        this.form.id_card_type = 1
      } else {
        this.form.certificates = 1;
        this.form.id_card_type = 2
      }

      this.getInitData();
      //获取当前机构有人员信息
      this.getAllDoctorList()
    }
  }
</script>

<style lang="scss" scoped>
  .nameTitle {
    font-weight: bold;
    font-size: 16px;
  }

  .formMain {
    /*/ / padding: 10 px 90 px;*/
    width: 80%;
    margin: 0 auto;
  }

  .basicForm {

    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;

  .el-form-item {
    width: 33%;
  }

  .specialFormItem {
    width: 66.5%;

  .el-input {
    min-width: 150px;
  }

  }
  .el-select {
    width: 100%;
  }

  .el-input {
    width: 100%;
  }

  }
  .el-form-item__error {
    color: #F56C6C;
    font-size: 12px;
    line-height: 1;
    padding-top: 4px;
    position: absolute;
    top: 100%;
    left: 0;
  }
</style>
