<template>
  <div class="finish-followup" v-if="showThisPage">
    <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>
    <!-- 敏感词及协议校验 -->
    <el-dialog class="prot-dialog" title="" :visible.sync="isShowProtocolDialog" width="30%" center :show-close=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>
</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: true,
        isSentedProt: false,
        patientIds: [],
        sendMsgPatientIds: [],
      }
    },
    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)
            // 4、校验居民/医生是否签署协议

            // 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'
            //     });
            //   });
            // }
            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) {
              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.isShowDialog = 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.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>
