<template>
  <div>
    <!-- 查询条件 -->
    <div style="display: flex; flex-wrap: wrap; width: 100%;height:140px; " >
      <div v-if="winAbsolute" style="position: absolute;top:3px;right:0px;">
        <el-tooltip content="关闭人员列表窗口" placement="bottom" effect="light">
          <i class="el-icon-close" @click="doctorCheck.doctorCheckDialogVisible = false;sumDoctorCheck.sumDoctorCheckDialogVisible = false;"
            style="font-size: 24px;color: red;cursor:pointer;"></i>
        </el-tooltip>
      </div>
      <div class="query">
        <el-input placeholder="请选择体检单位" v-model="patientRegister.query.cusOrgOCX" style="width:268px;" size="small" disabled>          
          <el-button slot="append" icon="el-icon-search" @click="report.dialogCusOrgOCX = true" style="font-size: 20px;min-width:40px;margin: -10px;"></el-button>
        </el-input>
      </div>   

      <div class="query">
        <span>姓名：</span>
        <el-input placeholder="姓名" v-model="patientRegister.query.patientName" size="small" clearable
          style="width: 100px" />
      </div>
      <div class="query">
        <span>性别：</span>
        <el-select v-model="patientRegister.query.sex" placeholder="请选择" clearable style="width: 80px" size="small">
          <el-option v-for="item in dict.forSex" :key="item.id" :label="item.displayName" :value="item.id">
          </el-option>
        </el-select>
      </div>
      <div class="query">
        <span>检查状态：</span>
        <el-select v-model="patientRegister.query.completeFlag" placeholder="请选择" clearable style="width: 80px"
          size="small">
          <el-option v-for="item in local.completeFlag" :key="item.id" :label="item.displayName" :value="item.id">
          </el-option>
        </el-select>
        <el-select v-model="patientRegister.query.isAudit" placeholder="请选择" clearable style="width: 75px;margin: 0 2px;"
          size="small">
          <el-option label="未审核" value="N"/>
          <el-option label="已审核" value="Y"/>
        </el-select>
        <el-checkbox v-if="win == 'doctorCheck' ? true:false" v-model="local.query.haveImage">有图</el-checkbox>
      </div>
      <div class="query" v-if="win == 'doctorCheck' ? true:false">
        <span>组合项目：</span>
        <el-select v-model="local.query.checkAsb" placeholder="快速选择组合项目" size="small" 
          filterable :filter-method="filterMethod" 
          clearable @clear="quickAsb = deepCopy(asbItemQuick)" 
          default-first-option ref="quickAsbOCX"
          style="width:157px;text-align: left;">
          <el-option v-for="item in quickAsb" :key="item.id" :value="item.id" :label="item.displayName" />
        </el-select>
      </div>
      <div class="query">
        <el-button class="commonbutton" type="primary" @click="query" size="small" style="width:60px;height:26px;padding: 5px 0 5px 0px;">查询</el-button>
      </div>
    </div>

    <!-- 人员列表 -->    
    <el-table :data="dataList" border width="100%" :height="winAbsolute ? (window.pageHeight - 42 - 120 - 30) : (window.pageHeight - 42 - 120)" row-key="id" size="small"      
      highlight-current-row @row-click="rowClick" @row-dblclick="rowDblclick" ref="dataList" style="border-radius:10px;">     
      
      <el-table-column prop="customerOrgParentName" label="单位" width="120">
        <template slot-scope="scope">
          <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgParentName : scope.row.customerOrgName }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="customerOrgName" label="部门" width="100">
        <template slot-scope="scope">
          <div>{{ scope.row.customerOrgParentName ? scope.row.customerOrgName : "" }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="patientName" label="姓名" width="80"/>
      <el-table-column prop="sexId" label="性别">
        <template slot-scope="scope">
          <div>{{ ldddw(dict.sex, "id", scope.row.sexId, "displayName") }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="age" label="年龄" />
      <el-table-column prop="patientRegisterNo" label="条码号" width="150" />
      <el-table-column prop="patientNo" label="档案号" />
      <el-table-column prop="medicalTimes" label="体检次数"></el-table-column>
      <el-table-column label="分组/套餐" width="150">
        <template slot-scope="scope">
          <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId === dict.personOrgId">
            {{ ldddw(dict.medicalPackage, "id", scope.row.medicalPackageId, "displayName") }}
          </div>
          <div v-if="scope.row.medicalPackageId !== dict.personOrgId && scope.row.customerOrgId !== dict.personOrgId">
            {{ ldddw(dict.customerOrgGroupAll, "id", scope.row.customerOrgGroupId, "displayName") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="nationId" label="民族">
        <template slot-scope="scope">
          <div>
            {{ ldddw(dict.nation, "id", scope.row.nationId, "displayName") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="idNo" label="身份证" width="150" />
      <el-table-column prop="birthDate" label="出生日期" width="100">
        <template slot-scope="scope">
          <div v-if="scope.row.birthDate">
            {{ lmoment(scope.row.birthDate, "yyyy-MM-DD") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="email" label="邮箱" width="150" />
      <el-table-column prop="mobileTelephone" label="手机" width="100" />
      <el-table-column prop="telephone" label="电话" width="100" />
      <el-table-column prop="address" label="地址" width="300" />
      <el-table-column prop="medicalCardNo" label="体检卡号" />
      <el-table-column prop="jobCardNo" label="工卡号" />
      <el-table-column prop="maritalStatusId" label="婚姻状况">
        <template slot-scope="scope">
          <div>
            {{ ldddw(dict.maritalStatus, "id", scope.row.maritalStatusId, "displayName") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="medicalTypeId" label="体检类别">
        <template slot-scope="scope">
          <div v-if="scope.row.medicalTypeId !== dict.personOrgId">
            {{ ldddw(dict.medicalType, "id", scope.row.medicalTypeId, "displayName") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="personnelTypeId" label="人员类别">
        <template slot-scope="scope">
          <div v-if="scope.row.personnelTypeId !== dict.personOrgId">
            {{ ldddw(dict.personnelType, "id", scope.row.personnelTypeId, "displayName") }}
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="jobPost" label="职务" />
      <el-table-column prop="jobTitle" label="职称" />
      <el-table-column prop="salesman" label="介绍人" />
      <el-table-column prop="isVip" label="是否VIP">
        <template slot-scope="scope">
          <div>{{ scope.row.isVip == "Y" ? "是" : "否" }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="creatorName" label="登记人" />
      <el-table-column prop="creationTime" label="登记日期" width="100">
        <template slot-scope="scope">
          <div>{{ lmoment(scope.row.creationTime, "yyyy-MM-DD") }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="isUpload" label="是否上传">
        <template slot-scope="scope">
          <div>{{ scope.row.isUpload == "Y" ? "是" : "否" }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="completeFlag" label="体检进度">
        <template slot-scope="scope">
          <div>{{ ldddw(dict.completeFlag, "id", scope.row.completeFlag, "displayName") }}</div>
        </template>
      </el-table-column>
      <el-table-column prop="isLock" label="锁住">
        <template slot-scope="scope">
          <div>{{ scope.row.isLock == "Y" ? "是" : "否" }}</div>
        </template>
      </el-table-column>
    </el-table>    

    <!--通用选单位、体检次数、分组的控件-->
    <el-dialog title="体检单位选择" :visible.sync="report.dialogCusOrgOCX" 
      :close-on-click-modal="false" :append-to-body="true" width="800px" height="600px">
      <CusOrgOCX :useCustomerOrg="false" :initDateType="'medicalStartDate'"/>
    </el-dialog>

  </div>
</template>
<script>
import moment from "moment";
import { mapState, mapMutations } from "vuex";
import { getapi, postapi, putapi, deletapi } from "@/api/api";
import { dddw, objCopy, arrayReduce,deepCopy } from "../../utlis/proFunc"


import CusOrgOCX from "../../components/report/CusOrgOCX.vue"

export default {
  components: {
    CusOrgOCX,
  },
  props: ['win','winAbsolute'],
  data() {
    return {
      dataList: [], //列表数据
      multipleSelection: [], //选中的数据列表
      dialogVisible: false,
      dialogCamera: false,
      
      local:{
        query:{
          haveImage:false,
          checkAsb:'', //检查项目          
        },
        completeFlag:[]
      },

      quickAsb: [],
      asbItemQuick:[],
    };
  },

  created() { 
    this.dictInit()
  },

  //挂载完成
  mounted() { },
  computed: {
    ...mapState(["window","dataTransOpts", "dict", "patientRegister", "customerOrg", "doctorCheck", "sumDoctorCheck","report"]),
  },
  methods: {
    ...mapMutations(['doctorCheckPrBaseInit', 'sumPREditInit']),

    dictInit(){
      // 默认 当天 体检日期 
      let today = moment(new Date()).format('yyyy-MM-DD');
      this.report.dataCusOrgOCX = [{
        id: Date.now(),
        customerOrgId: "",
        customerOrgName: "",
        customerOrgRegister: {},
        customerOrgRegisterList: [],
        dateType: "medicalStartDate",
        startDate: today,
        endDate: today,
        customerOrgGroupIds: [],
        customerOrgGroupList: []
      }]
      this.patientRegister.query.cusOrgOCX = `(体检${today}~${today})`

      // 获取组合项目
      postapi('/api/app/asbitem/GetBasicList',{isFilterActive:'Y'}).then(res =>{
        if(res.code != -1){
          this.asbItemQuick = res.data
          this.quickAsb = res.data
        }
      });

      this.local.completeFlag = deepCopy(this.dict.completeFlag)
      this.local.completeFlag.splice(0,1) //预记选项去掉
    },
    
     //快速选择组合项目时，调整可按拼间简码及简称查找
     filterMethod(keyWords) {
      //console.log('filterMethod',this.asbItemQuick)  
      if (keyWords) {
        this.quickAsb = [];
        this.asbItemQuick.forEach(item => {
          if (item.displayName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
            || item.simpleCode.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1
            || item.shortName.toLowerCase().indexOf(keyWords.toLowerCase()) > - 1) {
            this.quickAsb.push(item);
          }
        });
      } else {
        this.quickAsb = deepCopy(this.asbItemQuick);
      }
    },  

    //快速选择组合项目
    // quickChoosedAsb(v) {
    //   //远程查询时，设置了 value-key 也不管用，只能取到value console.log('quickChoosedAsb',v)
    //   let lfind = -1
    //   if (v) {
    //     lfind = arrayExistObj(this.asbItemQuick, 'id', v)
    //     if (lfind > -1) {
    //       this.addAbs([this.asbItemQuick[lfind]])
    //     }
    //   }    
    //   //this.$refs['quickAsbOCX'].focus(); //asbItemId
    //   this.$nextTick(() => {        
    //     this.$refs['quickAsbOCX'].blur(); //total  asbItemId
    //     this.asbItemId = ''
    //     this.quickAsb = deepCopy(this.asbItemQuick)        
    //     this.$refs['quickAsbOCX'].focus(); //total  asbItemId       
    //   });
      
    // },

    //点击体检次数行
    rowClick(row) {

      this.dataTransOpts.tableS.patient_register = deepCopy(row)
      // setTimeout(() => {
        this.dataTransOpts.refresh.patient_register.S++ //人员体检登记信息刷新
      // }, 10);

      this.doctorCheckPrBaseInit()
      this.doctorCheck.prBase.patientRegisterNo = row.patientRegisterNo
      objCopy(row, this.doctorCheck.prBase)        //基本信息
      this.patientRegister.photo = row.photo
    
      this.sumPREditInit()
      objCopy(row, this.sumDoctorCheck.sumPREdit)  //总检信息
          
    },

    //双击选中客户记录后，并半闭列表
    rowDblclick(row){
      this.rowClick(row)
      if(this.win == 'doctorCheck'){
        this.doctorCheck.doctorCheckDialogVisible = false
      }else{
        this.sumDoctorCheck.sumDoctorCheckDialogVisible = false
      }      
    },

    ldddw(arrayData, key, value, display) {
      return dddw(arrayData, key, value, display);
    },

    lmoment(date, forMat) {
      return moment(new Date(date)).format(forMat);
    },

    //查询
    query() {
      let body = {},customerOrgs=[]
      console.log('this.report.dataCusOrgOCX',this.report.dataCusOrgOCX)
      if (this.report.dataCusOrgOCX.length > 0) {
          this.report.dataCusOrgOCX.forEach(e => {
              let rd = {
                  startDate: moment(e.startDate).format('yyyy-MM-DD'),
                  endDate: moment(e.endDate).format('yyyy-MM-DD'),
                  dateType: e.dateType == 'summaryDate' ? '3':(e.dateType == 'medicalStartDate' ? '2':'1')
              }

              if (e.customerOrgId) {
                  rd.customerOrgId = e.customerOrgId
                  if(e.customerOrgId == this.dict.personOrgId){
                      rd.customerOrgRegisterId = null
                      rd.customerOrgGroupId = []
                  }else{
                      rd.customerOrgRegisterId = e.customerOrgRegister.id
                      rd.customerOrgGroupId = e.customerOrgGroupIds
                  }                        
              }
              customerOrgs.push(rd)
          })
      }

      body.customerOrgs = customerOrgs
      if(this.patientRegister.query.patientName) body.patientName = this.patientRegister.query.patientName
      if(this.patientRegister.query.sex) body.sexId = this.patientRegister.query.sex
      if(this.patientRegister.query.isAudit) body.isAudit = this.patientRegister.query.isAudit
      if(this.patientRegister.query.completeFlag) body.completeFlag = this.patientRegister.query.completeFlag
      if(this.local.query.checkAsb) body.asbitems = [this.local.query.checkAsb]
      if(this.local.query.haveImage) body.isPicture = 'Y'

      body.maxResultCount = 1000 
      body.isFilterPreRegistration = 'Y' //是否需要过滤预登记数据 Y=过滤预登记数据 N=不过滤 默认为N (备注：只有CompleteFlag参数的值不为0的情况才有效，null值也有效)
      // "patientName": "string",
      // "sexId": "string",
      // "isAudit": "string",
      // "completeFlag": "string",
      // "maxResultCount": 0

      console.log('/api/patientregister/getpeisrecordlist', body)
      const loading = this.$loading({
        lock: true,
        text: "Loading",
        spinner: "el-icon-loading",
        background: "rgba(0, 0, 0, 0.7)",
      });
      postapi('/api/patientregister/getpeisrecordlist', body)
        .then((res) => {
          if(res.code != -1){
            this.dataList = res.data.items;
          }
          loading.close();      
        }).catch(err =>{
          loading.close();
        });
    },


    //关闭
    close() {
      //console.log('this.win',this.win)
      if (this.win == 'doctorCheck') {
        this.doctorCheck.doctorCheckDialogVisible = false
      } else {
        this.sumDoctorCheck.sumDoctorCheckDialogVisible = false
      }

    },

  },

  //监听事件
  watch: {

  },
};
</script>
<style scoped>

.box {
  display: flex;
}

.query {
  margin-left: 5px;
  margin-bottom: 2px;
  font-size: 14px;
}

.listBtn {
  margin-top: 10px;
}
</style>
