<template>
  <!--<div class="finish-followup" v-if="showThisPage">-->
  <div class="finish-followup">
    <div v-if="showThisPage && !isShowProtocolDialog">
      <el-dialog
        title="选择履约开始时间"
        :visible.sync="showAddPatientTime"
        v-if="showThisPage"
        :before-close="clickClose"
        width="35%"
        center>
        <div class="finish-content">
          <el-form
            :model="addPatientData"
            :rules="rules"
            ref="addPatientData"
            label-width="140px">
            <el-form-item label="已选居民：">
              {{addPatientData.patientNames}}
            </el-form-item>
            <el-form-item label="履约开始时间：" prop="joinTime">
              <el-date-picker
                v-model="addPatientData.joinTime"
                type="date"
                placeholder="请选择履约开始时间"
                :editable="false"
                format="yyyy-MM-dd"
                value-format="timestamp"
                clearable>
              </el-date-picker>
            </el-form-item>
          </el-form>
        </div>
        <span slot="footer" class="dialog-footer">
        <el-button class="button-while" @click="clickClose" size="small" plain>取 消</el-button>
        <el-button class="button-green" @click="addPatient" size="small" type="primary">确 定</el-button>
      </span>
      </el-dialog>
    </div>

    <!-- 敏感词及协议校验 -->
    <div v-if="!showThisPage && isShowProtocolDialog">
      <el-dialog class="prot-dialog" title="" :visible.sync="isShowProtocolDialog" width="30%" center :show-close=false :close-on-click-modal="false" :close-on-press-escape="false">
        <p class="prot-dialog-tips-1">您选择的居民中有部分居民尚未同意《云鹊平台隐私协议》，将导致履约量表部分信息无法录入，为了方便您的工作开展，请您发送短信提醒未授权居民完成授权</p>
        <p v-show="!isSentedProt" class="prot-dialog-tips-2">若您选择暂不发送，您只能录入量表的非敏感信息</p>
        <p v-show="isSentedProt" class="prot-dialog-tips-3">为避免打扰居民，7天内只能发送1次，您已发送过短信，请尽快联系居民同意授权</p>
        <span v-show="!isSentedProt" slot="footer" class="dialog-footer">
        <el-button size="small" @click="closeProtocolDialog"> 暂不发送 </el-button>
        <el-button size="small" type="primary" @click="sendMsg"> 发送短信 </el-button>
      </span>
        <span v-show="isSentedProt" slot="footer" class="dialog-footer">
        <el-button size="small" type="primary" @click="closeProtocolDialog"> 我知道了 </el-button>
      </span>
      </el-dialog>
    </div>

  </div>
</template>

<script>
  import { createFollowPlan, uniteValidate, authMessage } from '../../../../utils/followup/followapis'
  import { mapState, mapActions} from 'vuex';
  export default {
    name: "add-patient-time",
    props: {
      showThisPage: { //是否显示model
        type: Boolean,
        default: function () {
          return false;
        }
      },
      addPatientData: {
        type: Object,
        default: function () {
          return {};
        }
      },

    },
    data() {
      return {
        showAddPatientTime: true,
        rules: {
          joinTime: [
            { required: true, message: '请选择履约开始时间', trigger: 'change' },
          ],
        },
        isShowProtocolDialog: false,
        isSentedProt: false,
        patientIds: [],
        sendMsgPatientIds: [],
        // noShowProtocolDialog: true,
      }
    },
    mounted() {
      //this.getFollowStartTimeList(this.$route.query.planId);// 获取履约时间列表
    },
    computed: {
      ...mapState('planManage', {
        //followStartTimeList: state => state.followStartTimeList,
      })
    },
    methods: {
      ...mapActions('planManage', ['getFollowStartTimeList', 'getResidentList']),
      clickClose() {
        this.$emit('sendJoinTime',null)
        this.$emit('closeAddPatientTime',false)
      },
      addPatient() {
        // 创建/修改履约计划
        // 4、校验居民/医生是否签署协议
        this.patientIds = this.addPatientData.patientIdList
        this.$refs['addPatientData'].validate(valid => {
          if (valid) {
            console.log(this.addPatientData)
            if(this.$route.name == 'planModify') {
              this.$emit('sendJoinTime',this.addPatientData.joinTime)
              this.$emit('closeAddPatientTime',false)
            } else {
              const { id, patientIdList, joinTime } = this.addPatientData;
              createFollowPlan({
                id,
                addPatients: true,
                patientIdList,
                joinTime
              }).then((data) => {
                if(data.code == '000000') {
                  this.$message({
                    message: '添加成功！',
                    type: 'success'
                  });
                  this.getResidentList({
                    planId: this.addPatientData.id,
                    status: this.addPatientData.status
                  })
                  this.$emit('closeAddPatientTime',false)
                  // this.noShowProtocolDialog = false;
                  setTimeout(()=>{
                    this.uniteValidateAction()
                  },1000)

                } else {
                  this.$message({
                    message: `${data.message}`,
                    type: 'error'
                  });
                }
              }).catch((err) => {
                this.$message({
                  message: `${err.message}`,
                  type: 'error'
                });
              });
            }
            // this.uniteValidateAction()
          } else {
            return false;
          }
        });

      },

      // Add by Anndy Yang
      // 统一验证：量表内是否存在敏感字段、居民是否签署隐私协议、7天内是否发送过授权短信
      uniteValidateAction() {
        if(!this.patientIds.length) {
          return;
        }
        let validParams = {
          scaleNo: '',
          patientIds: this.patientIds, // pc端只传这个字段
          // planPatientsTimesId: planPatientsTimesId,  // app端只传这个字段
          protocolType: 5,
          userType: 1,
          validateType: 2
        };

        uniteValidate(validParams).then(res => {
          let result = res;
          // 请求成功
          if (result.code === '000000') {
            let levelType = result.data.levelType;
            // 没有敏感字段或者居民已经签订过协议，则直接返回
            if (levelType === 1 || levelType === 2) {
              // this.$emit('closeAddPatientTime',false)
              // this.isShowProtocolDialog = false;
              // this.jumpToAddOrModifyPlan();
            } else if (levelType === 3) {
              this.isShowProtocolDialog = true;
              this.isSentedProt = true;
            } else if (levelType === 4) {
              this.isShowProtocolDialog = true;
              this.isSentedProt = false;
              this.sendMsgPatientIds = result.data.ids;
            }
          }
        });
      },

      // 发送协议授权短信给居民
      sendMsgToPatients() {
        authMessage({ patientIds: this.sendMsgPatientIds }).then(res => {
          if (res.code === '000000') {
            this.$message({
              message: '已发送，请尽快联系居民同意授权',
              type: 'success'
            });
            this.$emit('closeAddPatientTime',false)
          }
        });
        this.isShowProtocolDialog = false;
      },

      // 统一跳转到量表页面
      jumpToAddOrModifyPlan() {
        if(this.$route.name == 'planModify') {
          this.$emit('sendJoinTime',this.addPatientData.joinTime)
          this.$emit('closeAddPatientTime',false)
        } else {
          const { id, patientIdList, joinTime } = this.addPatientData;
          createFollowPlan({
            id,
            addPatients: true,
            patientIdList,
            joinTime
          }).then((data) => {
            if(data.code == '000000') {
              this.$message({
                message: '添加成功！',
                type: 'success'
              });
              this.getResidentList({
                planId: this.addPatientData.id,
                status: this.addPatientData.status
              })
              this.$emit('closeAddPatientTime',false)
            } else {
              this.$message({
                message: `${data.message}`,
                type: 'error'
              });
            }
          }).catch((err) => {
            this.$message({
              message: `${err.message}`,
              type: 'error'
            });
          });
        }
      },

      // 关闭协议确认窗口
      closeProtocolDialog() {
        this.isShowProtocolDialog = false
        this.$emit('closeAddPatientTime',false)
        // this.jumpToAddOrModifyPlan()
      },

      // 发送短信通知
      sendMsg() {
        this.sendMsgToPatients();
        this.closeProtocolDialog()
      },
    }
  }
</script>
<style scoped>
  .el-input__inner:disabled {
    background-color: #ffffff!important;
  }
</style>
<style lang="scss" scoped>
  @import '../../../../style/followup/followup-common';
  @import '../../../../style/followup/element-reset.css';

</style>
