<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-input  v-model="form.name"></el-input> -->
                       <el-select v-model="form.name" placeholder="请选择" @change="changeName">
                            <el-option
                            v-for="item in patient"
                            :key="item.patient_id"
                            :label="item.name"
                            :value="item.patient_id">
                            </el-option>
                        </el-select>
                    </el-form-item>

                    <el-form-item label="性别：" prop="sex" :validate-event="is_Name">
                        <el-select v-model="form.sex" placeholder="请选择">
                            <el-option
                            v-for="item in sex"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value">
                            </el-option>
                        </el-select>
                    </el-form-item>

                    <el-form-item label="年龄：" prop="age" :validate-event="is_Name">
                        <el-input v-model="form.age"></el-input>
                    </el-form-item>


                    <el-form-item label="出生日期：" prop="birthday" :validate-event="is_Name">
                        <el-date-picker v-model="form.birthday" type="date" @change="getBirthday" placeholder="选择日期"></el-date-picker>
                    </el-form-item>

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


                      <el-form-item label="医疗类别：">
                        <el-select v-model="form.medicalCare" placeholder="请选择">
                            <!-- <el-option
                            v-for="item in medicalCare"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value">
                            </el-option> -->
                           <el-option
                            v-for="(item,index) in getDictionaryDataConfig('system','social_type')"
                            :key="index"
                            :label="item.name"
                            :value="item.id">
                            </el-option>
                        </el-select>
                    </el-form-item>


                  <el-form-item label="证件类型：">
                        <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="idCard"  :validate-event="is_Name">
                        <el-input v-model="form.idCard"></el-input>
                    </el-form-item>


                    <el-form-item label="结算类型：">
                        <el-select v-model="form.settlementValue" placeholder="请选择">
                            <el-option
                            v-for="item in settlement"
                            :key="item.value"
                            :label="item.label"
                            :value="item.value">
                            </el-option>
                        </el-select>
                    </el-form-item>


                   <el-form-item label="社保类型：">
                        <el-select v-model="form.social_type" placeholder="请选择">
                            <!-- <el-option
                            v-for="(item,index) in getDictionaryDataConfig('system','social_type')"
                            :key="index"
                            :label="item.name"
                            :value="item.id">
                            </el-option> -->
                          <el-option
                            v-for="item in medicalCare"
                            :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="register"  :validate-event="is_Name">
                        <el-select v-model="form.register"  placeholder="请选择">
                            <el-option
                            v-for="item in register"
                            :key="item.value"
                            :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>
                        <el-checkbox v-model="form.costChecked">是否需要工本费</el-checkbox>
                    </el-form-item> -->
                    <el-form-item label="挂号费：">
                        <el-input v-model.number="form.registrationFee"></el-input>
                    </el-form-item>
                    <el-form-item label="诊疗费：">
                        <el-input v-model.number="form.medicalExpenses"></el-input>
                    </el-form-item>
                    <el-form-item label="工本费：">
                        <el-input v-model.number="form.cost"></el-input>
                    </el-form-item>
                    <el-form-item label="合计：">
                        <el-input v-model.number="total" readonly></el-input>
                    </el-form-item>
                    <el-form-item>
                        <!-- <el-input v-model="form.name"></el-input> -->
                    </el-form-item>
                </el-form>
                <el-button style="float:right" @click="saveHisPatient('form')" type="primary">挂号</el-button>
            </div>

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

<script>
import BreadCrumb from '@/xt_pages/components/bread-crumb'
import { basename } from 'path'
import { getAllDoctorList,saveHisPatient,getTodaySchedulePatient,getPatientDetail } from "@/api/project/project"
import { getDictionaryDataConfig } from '@/utils/data'
import { uParseTime } from "@/utils/tools";
const moment = require('moment')
export default {
    components:{
        BreadCrumb
    },
    data(){
        return{
            crumbs: [
                { path: false, name: '门诊挂号' },
                { path: false, name: '门诊挂号' }
            ],
            form:{
                settlementValue: '',
                medicalInsuranceCard:'',
                name:'',
                sex:'',
                certificates:'',
                medicalCare:'',
                birthday:'',
                age:'',
                idCard:'',
                register:'',
                doctor:'',
                department:'',
                costChecked:false,
                registrationFee:'',
                medicalExpenses:'',
                cost:'',
                total: '',
                phone:'',
                social_type:'',
            },
          settlement: 
            [
              {value: 1,label: '医保'},
              {value: 2,label: '自费'},
              {value: 3,label:'公费'},
              {value: 4,label:'农保'},
              {value: 5,label:'会员'},
              {value: 6,label:'职工'},
              {value: 7,label:'合同'}
            ],
            sex: [{
                value: 1,
                label: '男'
                }, {
                value: 2,
                label: '女'
            }],
            certificates: [{
                value: 1,
                label: '内地身份证'
                }, {
                value: 2,
                label: "社保卡"
                },{
                value: 3,
                label: "护照"
                },{
                value: 4,
                label: "军官证"
                },{
                value: 5,
                label: "台胞证"
                },{
                value: 6,
                label: "港澳地区身份证"
            }],
            medicalCare: [{
                value: 1,
                label: '职工基本医疗保险'
                }, {
                value: 2,
                label: "公务员医疗补助"
                },{
                value: 3,
                label: "大额医疗费用补助"
                },{
                value: 4,
                label: "离休人员医疗"
                },{
                value: 5,
                label: "城乡居民基本医疗保险"
                },{
                value: 6,
                label: "城乡居民大病医疗保险"
                },
                {
                value: 7,
                label: "生育保险"
            }],
            register: [{
                value: 1,
                label: '普通'
                }, {
                value: 2,
                label: "主治"
                },{
                value: 3,
                label: "主任"
                },{
                value: 4,
                label: "免收诊金"
                },{
                value: 5,
                label: "专家"
            }],
            baseinfo:{
                certno:"440221195903290027",
                psn_no:"0221201972",
                gend:"2",
                brdy:"1960-03-29",
                naty:"01",
                psn_cert_type:"01",
                psn_name:"杨美英",
                age:60.7
            },
            rules: {
              name:[{ required:true,message:"患者姓名不能为空",trigger: 'blur'}],
              sex:[{ required:true,message:"患者性别不能为空",trigger: 'blur'}],
              idCard: [{ required: true, message: '证件号码不能为空', trigger: 'blur'  }],
              register: [{ required: true, message: '请选择挂号类型' , trigger: 'blur' }],
              doctor: [{ required: true, message: '请选择医生' , trigger: 'blur' }],
              department: [{ required: true, message: '请填写科室', trigger: 'blur' }],
              age:[{ required:true,message:"患者年龄不能为空",trigger: 'blur'}],
              birthday:[{required:true,message:"患者出生日期不能为空",trigger:'blur'}]
           },
           doctorList:[],
           departmentList:[],
           check:0,
           show:false,
           is_Name:false,
           patient:[],
           scialType:[]
        }
    },
    computed:{
        total(){
            if(this.form.registrationFee || this.form.medicalExpenses || this.form.cost){
                return parseFloat(this.form.registrationFee ? this.form.registrationFee : 0) + parseFloat(this.form.medicalExpenses ? this.form.medicalExpenses : 0) + parseFloat(this.form.cost ? this.form.cost : 0)
            }
        }
    },
    methods:{
        reading(medicalInsuranceCard){
            this.form.name = this.baseinfo.psn_name
            this.form.sex = parseInt(this.baseinfo.gend)
            this.form.psn_cert_type = this.baseinfo.certificates
            this.form.birthday = this.baseinfo.brdy
            this.form.age = parseInt(this.baseinfo.age)
            this.form.idCard = this.baseinfo.certno
            this.form.certificates = 1
        },
        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
               console.log("doctor-----",doctor)
               this.doctorList = doctor
               var department = response.data.data.department
               console.log("department",department)
               this.departmentList = department
             }
           })
        },
        saveHisPatient(formName){
           if(this.form.name == ""){
             this.$message.error("患者姓名不能为空")
             this.is_Name = true
             return
           }


           if(this.form.sex == ""){
             this.$message.error("患者性别不能为空")
           }

          if(this.form.register == ""){
             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.age == ""){
            this.$message.error("患者年龄不能为空")
            this.is_Name = true
            return
         }
         if(this.form.birthday == ""){
            this.$message.error("出生日期不能为空")
            this.is_Name = true
            return
         }

         if(this.form.idCard == ""){
             this.$message.error("证件号码不能为空")
             this.is_Name = true
             return
          }
          var name = ""
          for(let i=0;i<this.patient.length;i++){
            if(this.form.name == this.patient[i].patient_id){
                name = this.patient[i].name
            }
          }
          console.log("name",name)
          this.form.name  = name
          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.idCard == ""){
                   this.show = true
                }
                var params = {
                    settlementValue:this.form.settlementValue,
                    medicalInsuranceCard:this.form.medicalInsuranceCard,
                    name:this.form.name,
                    sex:this.form.sex,
                    certificates:this.form.certificates,
                    medicalCare:this.form.medicalCare,
                    birthDay:moment(new Date(this.form.birthday)).format('YYYY-MM-DD'),
                    age:parseInt(this.form.age),
                    idCard:this.form.idCard,
                    register:this.form.register,
                    doctor:this.form.doctor,
                    department:this.form.department,
                    costChecked:this.check,
                    registrationFee:this.form.registrationFee,
                    medicalExpenses:this.form.medicalExpenses,
                    cost:this.form.cost,
                    total:this.total,
                    phone:this.form.phone,
                    social_type:this.form.social_type
                }
                console.log("params",params)
                
                saveHisPatient(params).then(response=>{
                   if(response.data.state == 1){
                     var patient =  response.data.data.patient
                     console.log("patient",patient)
                     this.$message.success("保存成功")
                     this.form.settlementValue = "",
                     this.form.medicalInsuranceCard = "",
                     this.form.name = "",
                     this.form.sex="",
                     this.form.certificates="",
                     this.form.medicalCare = "",
                     this.form.birthday ="",
                     this.form.age ="",
                     this.form.idCard = "",
                     this.form.register = "",
                     this.form.doctor = "",
                     this.form.department = "",
                     this.form.costChecked = false,
                     this.form.registrationFee = "",
                     this.form.medicalExpenses = "",
                     this.form.cost="",
                     this.form.total= "" ,
                     this.form.phone = "",
                     this.form.social_type = ""
                   }else{
                       this.$message.error("今日患者已挂号!")
                   }
                })
             }
          })
        },
       getTodaySchedulePatient(){
          getTodaySchedulePatient().then(response=>{
             if(response.data.state == 1){
               var patient =  response.data.data.patient
               console.log("今日排班",patient)
               this.patient = patient
             }
          })
       },
       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.idCard = ""
        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.idCard = patient.id_card_no
          }
        })
      }
    },
    created(){
      //获取当前机构有人员信息
      this.getAllDoctorList()
      //获取今日排班的患者
      this.getTodaySchedulePatient()
    }
}
</script>

<style lang="scss" scoped>
.nameTitle{
    font-weight: bold;
    font-size: 16px;
}
.formMain{
    // padding: 10px 90px;
    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>
