<template>
  <!--<div class="finish-followup" v-if="showThisPage">-->
  <div class="finish-followup">
    <div v-if="showThisPage && !isShowProtocolDialog">
      <el-dialog
        title="选择履约开始时间"
        v-model:visible="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:value="addPatientData.joinTime"
                type="date"
                placeholder="请选择履约开始时间"
                :editable="false"
                format="yyyy-MM-dd"
                value-format="timestamp"
                clearable
              >
              </el-date-picker>
            </el-form-item>
          </el-form>
        </div>
        <template v-slot:footer>
          <span 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>
        </template>
      </el-dialog>
    </div>

    <!-- 敏感词及协议校验 -->
    <div v-if="!showThisPage && isShowProtocolDialog">
      <el-dialog
        class="prot-dialog"
        title="提醒"
        v-model:visible="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 class="prot-dialog-tips-2">
          注：为避免打扰居民，7天内只能发送1次，您已经发送过的居民将不再发送
        </p>
        <!--<p v-show="isSentedProt" class="prot-dialog-tips-3">为避免打扰居民，7天内只能发送1次，您已发送过短信，请尽快联系居民同意授权</p>-->
        <template v-slot:footer>
          <span class="dialog-footer">
            <el-button size="small" @click="closeProtocolDialog">
              暂不发送
            </el-button>
            <el-button size="small" type="primary" @click="sendMsg">
              发送短信
            </el-button>
          </span>
        </template>
        <!--<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 { $on, $off, $once, $emit } from '../../../../../utils/gogocodeTransfer'
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() {
      $emit(this, 'sendJoinTime', null)
      $emit(this, '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') {
            $emit(this, 'sendJoinTime', this.addPatientData.joinTime)
            $emit(this, 'closeAddPatientTime', false)
            setTimeout(() => {
              this.uniteValidateAction()
            }, 10)
          } 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,
                  })
                  $emit(this, '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 || levelType === 4) {
            this.isShowProtocolDialog = true
            this.sendMsgPatientIds = result.data.ids
            // 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: '已发送，请尽快联系居民同意授权',
            message: '短信发送成功',
            type: 'success',
          })
          $emit(this, 'closeAddPatientTime', false)
        }
      })
      this.isShowProtocolDialog = false
    },

    // 统一跳转到量表页面
    jumpToAddOrModifyPlan() {
      if (this.$route.name == 'planModify') {
        $emit(this, 'sendJoinTime', this.addPatientData.joinTime)
        $emit(this, '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,
              })
              $emit(this, 'closeAddPatientTime', false)
            } else {
              this.$message({
                message: `${data.message}`,
                type: 'error',
              })
            }
          })
          .catch((err) => {
            this.$message({
              message: `${err.message}`,
              type: 'error',
            })
          })
      }
    },

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

    // 发送短信通知
    sendMsg() {
      this.sendMsgToPatients()
      this.closeProtocolDialog()
    },
  },
  emits: ['sendJoinTime', 'closeAddPatientTime'],
}
</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>
