LoginAzureAD.vue 2.07 KB
<template>
</template>

<script>
import {postAction} from '@/api/manage'
import {mapActions} from 'vuex'

export default {
  name: 'LoginPhone',
  data() {
    return {
      model: {
        mobile: '',
        captcha: ''
      },
      //手机号登录用
      state: {
        time: 60,
        smsSendBtn: false,
      },
      validatorRules: {
        mobile: [
          {required: true, message: '请输入手机号码!'},
          {validator: this.validateMobile}
        ],
        captcha: [{
          required: true, message: '请输入验证码!'
        }]
      }

    }
  },
  methods: {
    ...mapActions(['AzureADLogin']),
    handleLogin(rememberMe) {
      this.validateFields([], (err) => {
        if (!err) {
          let loginParams = {
            warehouseCode: 'CS0001',
            checkKey: this.currdatetime,
            remember_me: rememberMe,
          }
          this.AzureADLogin(loginParams).then((res) => {
            this.$emit('success', res.result)
          }).catch((err) => {
            this.$emit('fail', err)
            if (err.code == 499) {
              this.$router.push({path: "/user/systemTokenModal"})
            }
          });
        } else {
          this.$emit('validateFail')
        }
      })
    },
    /**
     * 验证字段
     * @param arr
     * @param callback
     */
    validateFields(arr, callback) {
      let promiseArray = []
      for (let item of arr) {
        let p = new Promise((resolve, reject) => {
          this.$refs['form'].validateField(item, (err) => {
            if (!err) {
              resolve();
            } else {
              reject(err);
            }
          })
        });
        promiseArray.push(p)
      }
      Promise.all(promiseArray).then(() => {
        callback()
      }).catch(err => {
        callback(err)
      })
    },
    cmsFailed(err) {
      this.$notification['error']({
        message: '获取验证码失败',
        description: err,
        duration: 4,
      });
    },
  }

}
</script>

<style scoped>
.getCaptcha {
  display: block;
  width: 100%;
  height: 40px;
}
</style>