import { delPatientRecord, getHospitalRecordList } from './service';
import history from '../../utils/history';
import { reportCmPV_YL } from '../../utils/cloudMonitorHelper';
Component({
  data: {
    hospitalizationRecordList: null,
    // 就诊人列表
    popover: {
      // 气泡弹窗
      position: 'bottom',
      showMask: false
    },
    loading: true,
    showOtherButton: false
  },

  didMount() {
    // 获取住院人列表
    this.getHospitalRecordLists();
    const {
      admissionShowOther
    } = this.$page.data.query ? this.$page.data.query : {};
    this.setData({
      showOtherButton: admissionShowOther === 'true'
    });
    /* 服务预警，入院登记 */

    reportCmPV_YL({
      title: '入院登记'
    });
  },

  methods: {
    // 获取住院人列表
    async getHospitalRecordLists() {
      // 调用接口 - 获取就住院人列表
      const hospitalRecordList = await getHospitalRecordList(); // 添加气泡是否展示的默认值

      hospitalRecordList.forEach(item => {
        // eslint-disable-next-line no-param-reassign
        item.popover = {
          show: false,
          showMask: false
        };
      });
      this.setData({
        hospitalizationRecordList: hospitalRecordList || [],
        loading: false
      });
    },

    // 编辑
    onEdit(e) {
      const {
        dataset: {
          index
        }
      } = e.currentTarget; // 记录当前选择的下标

      this.currentIndex = index;
      const obj = {};
      obj[`hospitalizationRecordList[${index}].popover`] = {
        show: true,
        showMask: true
      };
      this.setData({ ...obj
      });
    },

    // 关闭气泡弹窗
    onMaskClick() {
      const obj = {};
      obj[`hospitalizationRecordList[${this.currentIndex}].popover`] = {
        show: false,
        showMask: false
      };
      this.setData({ ...obj
      });
    },

    // 押金缴纳
    onDepositPayment(e) {
      const {
        inpatientId
      } = e.target.dataset.item;
      history.push({
        query: {
          inpatientId,
          color: '#000',
          backBtnColor: '#000',
          background: '#fff'
        },
        title: '押金缴纳',
        pageType: 'deposit'
      });
    },

    // 日清单查询
    onDailyListQuery(e) {
      const {
        inpatientId,
        checkInDate
      } = e.target.dataset.item;
      history.push({
        query: {
          inpatientId,
          color: '#000',
          backBtnColor: '#000',
          background: '#fff',
          billDate: checkInDate.slice(0, 11)
        },
        title: '日清单查询',
        pageType: 'inventory-day'
      });
    },

    //  押金记录
    onDepositRecord(e) {
      const {
        inpatientId
      } = e.target.dataset.item;
      history.push({
        query: {
          inpatientId,
          color: '#000',
          backBtnColor: '#000',
          background: '#fff'
        },
        title: '押金缴纳记录',
        pageType: 'deposit-list'
      });
    },

    // 点击弹出框。回调时间-添加其他就诊人
    popOverClose() {
      // 关闭弹出框
      this.$page.$confirm.hidePopover();
    },

    // 选择就诊人
    choosePatient(info) {
      // 获取用户id
      const {
        patientId
      } = info;
      history.push({
        query: {
          patientId,
          personItem: JSON.stringify(info),
          color: '#000',
          backBtnColor: '#000',
          background: '#fff',
          showOtherButton: this.data.showOtherButton
        },
        title: '入院登记',
        pageType: 'add-inpatient'
      });
      this.$page.$confirm.hidePopover();
    },

    // 添加住院人
    addPatient() {
      history.push({
        title: '添加住院人',
        pageType: 'add-inpatient-information',
        query: {
          color: '#000',
          backBtnColor: '#000',
          background: '#fff',
          showOtherButton: this.data.showOtherButton
        }
      });
      this.$page.$confirm.hidePopover();
    },

    // 入院登记，打开弹出框
    onAdmissionRegistration() {
      this.$page.$confirm.showPopover({
        title: '选择就诊人',
        popupPosition: 'bottom',
        onButtonClose: () => this.popOverClose(),
        // 弹出框关闭
        onChoosePatient: info => this.choosePatient(info),
        // 选择就诊人
        onAddPatient: () => this.addPatient() // 添加就诊人

      });
    },

    // 修改住院人信息
    onEitPatientInfo(e) {
      // 关闭气泡弹窗
      this.onMaskClick(); // 获取住院记录id

      const {
        inpatientId,
        patientId
      } = e.target.dataset.item;
      history.push({
        query: {
          inpatientId,
          isEdit: 'YES',
          patientId,
          color: '#000',
          backBtnColor: '#000',
          background: '#fff'
        },
        title: '修改住院人信息',
        pageType: 'add-inpatient-information'
      });
    },

    // 确认删除住院人记录--调用接口
    async onDelPatientRecord(patientInfo) {
      // 关闭弹窗
      this.$page.$modalConfirm.hideModel();
      const {
        inpatientId
      } = patientInfo; // 调用接口 - 删除住院人记录

      const delPatientRecords = await delPatientRecord({
        inpatientId
      });
      const {
        isSuccess
      } = delPatientRecords; // 如果删除失败，toast提示

      if (!isSuccess) {
        my.showToast({
          content: '删除住院人记录失败',
          duration: 2000
        });
        return;
      } // 如果删除成功，则刷新列表


      if (isSuccess) {
        my.showToast({
          content: '删除住院人记录成功',
          duration: 2000,
          success: () => {
            // 获取住院人记录列表
            this.getHospitalRecordLists();
          }
        });
      }
    },

    /**
     * 点击弹窗按钮
     * @param {*} e 当前选中项 ———— 用以拿到序号
     * @param {*} item 当前选中项内容
     * @returns
     */
    async onModalClick(e, patientInfo) {
      // 拿到当前选中项序号
      const {
        target: {
          dataset: {
            index
          }
        }
      } = e; // 如果类型为‘解除关联’ 按钮类型:index:0 - ‘取消’, 1 - ‘删除’
      // 按钮为‘取消’, 关闭弹窗

      if (!index) {
        this.$page.$modalConfirm.hideModel();
        return;
      } // 按钮为‘删除’，调用删除接口


      this.onDelPatientRecord(patientInfo);
    },

    // 删除住院人记录--弹出二次确认弹框
    async onDeletePatientInfo(e) {
      // 拿到当前选中项
      const {
        target: {
          dataset: {
            item: patientInfo
          }
        }
      } = e; // 打开二次确认模态框

      this.$page.$modalConfirm.showModel({
        title: '确定删除住院记录？',
        // 标题
        content: '删除住院记录后不可恢复',
        // 模态框内容
        buttonsList: [// 按钮
        {
          text: '取消'
        }, {
          text: '删除',
          extClass: 'buttonBold'
        }],
        onButtonClick: innerE => this.onModalClick(innerE, patientInfo) // 按钮点击事件

      }); // 关闭气泡弹窗

      this.onMaskClick();
    }

  }
});