liuxiaolong
2019-05-06 8700cf1dc46c350371d865532c2914595187788e
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// import axios from './common/httpAxios'
import { request } from '@/server/common/request_helper'
import { httpGET, httpPUT } 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 => {
  const opts = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded'
    },
    body: 'username=' + user.loginName + '&password=' + user.password
  }
  return fetch(request('/loginData/api-u/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))
        if (user.rememberMe) {
          const { rememberMe, ...loginInfo } = user
          localStorage.setItem('loginInfo', JSON.stringify(loginInfo))
        }
        getLoginUserData()
        toast({
          type: 'success',
          message: '登录成功!'
        })
        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 => {
  const token =
    sessionStorage.getItem('loginedInfo') &&
    JSON.parse(sessionStorage.getItem('loginedInfo')).access_token
  const opts = {
    headers: {
      'Content-Type': 'application/json',
      Accept: 'application/json',
      Authorization: token || ''
    }
  }
  return (
    fetch(request('/loginData/api-u/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('/loginData/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
  })
}
 
/**
 * @description 修改密码
 * @param {string} id 用户id
 * @param {string} newPassword  新密码
 * @param {string} oldPassword  旧密码
 * @param {string} orgId  组织ID
 */
export const editPassword = body => {
  return httpPUT('data/api-u/users/password', {
    body,
    header: {
      'Content-Type': 'application/x-www-form-urlencoded'
    }
  })
}