<template>
  <div id="app">
    <router-view class="main"/>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex'
import * as dd from 'dingtalk-jsapi'
import { apiDingtalkLogin, apiUserInfo } from '@/api/login'
export default {
  name: 'App',
  data () {
    return {
      active: true,
      fullPage: true,
      dingCode: '',
      dataForm: {}
    }
  },
  components: {
  },
  computed: {
    ...mapState(['user'])
  },
  async mounted () {
    console.log('dd: ', dd)
    if (!dd.other) {
      await this.handleGetDingtalkCode()
      await this.handleDingtalkLogin()
    }

    this.GET_DEPLIST()
  },
  methods: {
    onCancel () {

    },
    ...mapActions(['GET_DEPLIST', 'SET_USER_INFO']),
    // 获取钉钉鉴权码
    handleGetDingtalkCode () {
      return new Promise((resolve, reject) => {
        let _this = this
        dd.runtime.permission.requestAuthCode({
          corpId: 'ding267474e759bbca1c35c2f4657eb6378f',
          onSuccess (res) {
            console.log('result===', res)
            _this.dingCode = res
            resolve()
          },
          onFail (err) {
            console.log('err===', err)
            _this.dingCode = err
            resolve()
          }
        })
      })
    },
    // 钉钉免登录
    async handleDingtalkLogin (val = this.dingCode) {
      const res = await apiDingtalkLogin(val)
      console.log('res: ', res)
      if (res && res.code === 200) {
        this.$cookies.set('token', res.token)
        await this.handleInfo()
        this.dataForm.verify = '登录成功，跳转中...'
        window.open(window.location.protocol + '//' + window.location.host + '/digitization/kpi/workbench/home?code=' + this.dingCode.code)
      } else {
        this.dataForm.verify = '身份验证失败' + res.msg
        this.$message.error(this.dataForm.verify)
        this.$router.replace({ name: 'dingTalkLogin' })
      }
    },
    // 获取用户信息
    async handleInfo () {
      let res = await apiUserInfo()
      if (res.code === 200) {
        this.SET_USER_INFO(res.user)
      }
    }
  }
}
</script>

<style>
#app {
}
</style>
