liuxiaolong
2019-05-06 acc45d2ece02563964d7b8a22ff0c40bd8358889
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// import axios from './common/httpAxios'
import {
  request
} from '@/server/common/request_helper'
import {
  httpGET
} from '@/server/common/httpFetch'
import router from '@/router'
import toast from '@/components/common/toasted'
require('es6-promise').polyfill()
require('isomorphic-fetch')
export const tologin = (user) => {
  let opts = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'username=' + user.loginName + '&password=' + user.password
  }
  return fetch(request('/data/sys/login'), opts).then(res => res.json())
    .then(json => {
      if (!json.code && json.access_token) {
        const loginedInfo = {
          'access_token': json.token_type + ' ' + json.access_token,
          'refresh_token': json.refresh_token
        }
        sessionStorage.setItem('expires_in', json.expires_in)
        sessionStorage.setItem('loginedInfo', JSON.stringify(loginedInfo))
        getLoginUserData()
        return true
      } else {
        sessionStorage.removeItem('menuInfo')
        sessionStorage.removeItem('loginedInfo')
        sessionStorage.removeItem('expires_in')
        sessionStorage.removeItem('userInfo')
        toast({
          type: 'error',
          message: json.error_description && json.error_description !== '' ? json.error_description : '登陆失败!'
        })
      }
    })
}
// 退出
export const logout = (str) => {
  let token = sessionStorage.getItem('loginedInfo') && JSON.parse(sessionStorage.getItem('loginedInfo')).access_token
  let opts = {
    headers: {
      'Content-Type': 'application/json',
      'Accept': 'application/json',
      'Authorization': token || ''
    }
  }
  return fetch(request('/data/sys/logout'), opts)
    // .then(res => res.json())
    .then(json => {
      if (json.ok) {
        toast({
          type: 'success',
          message: '退出成功!'
        })
        sessionStorage.removeItem('menuInfo')
        sessionStorage.removeItem('loginedInfo')
        sessionStorage.removeItem('expires_in')
        sessionStorage.removeItem('userInfo')
        router.push({
          path: '/login'
        })
      } else {
        router.push({
          path: '/login'
        })
        toast({
          type: 'warning',
          message: '抱歉退出失败!'
        })
      }
    })
}
// 获取户信息用
export const getLoginUserData = () => {
  return httpGET('/data/api-u/users/current')
    .then(json => {
      if (!json.error) {
        sessionStorage.setItem('userInfo', JSON.stringify(json))
        toast({
          type: 'success',
          message: '登陆成功!'
        })
        /* 判断当前是否在登录页,如果在登录页 */
        if (window.location.href.indexOf('/login') !== -1) {
          router.push({
            path: '/',
            query: {
              is_login: true
            }
          })
        }
        return json
      }
    })
}
// 获取菜单数据
export const getMenuListData = data => {
  return httpGET('/data/api-u/sysmenus/me', {
    body: data
  })
}