network.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. import {ACCESS_TOKEN_PREFIX} from './config'
  2. import userInfo from './userInfo'
  3. import tool from './tool'
  4. import axiosObj from './axiosPlugin'
  5. import ElementUI from 'element-ui'
  6. import baseInfo from './baseInfo'
  7. const updateToken = function (callback, errorBack) {
  8. if (!userInfo.hasLogin()) {
  9. //console.log('尚未登录');
  10. //userInfo.clear();
  11. errorBack('E40004')
  12. return false
  13. }
  14. // 比较本地accessToken是否还有效
  15. if (userInfo.accessToken() && userInfo.accessTokenExpiresIn() && parseInt(userInfo.accessTokenExpiresIn()) + parseInt(userInfo.accessTokenUpdateAt()) - 30 > parseInt(tool.getTimestamp())) {
  16. // 有效
  17. //console.log('accessToken有效');
  18. callback(userInfo.accessToken())
  19. return true
  20. } else {
  21. // 已失效,去更新
  22. let refreshToken = userInfo.refreshToken()
  23. let refreshTokenExpiresIn = userInfo.refreshTokenExpiresIn()
  24. let refreshTokenUpdateAt = userInfo.refreshTokenUpdateAt()
  25. if (refreshToken && refreshTokenExpiresIn && parseInt(refreshTokenExpiresIn) - 30 + parseInt(refreshTokenUpdateAt) > parseInt(tool.getTimestamp())) {
  26. // 有效,去更新
  27. axiosObj.get(`oauth/refresh-token?refresh-token=${refreshToken}`).then(response => {
  28. // 更新本地accessToken
  29. userInfo.accessToken(response.accessToken)
  30. userInfo.accessTokenExpiresIn(response.accessTokenExpiresIn)
  31. userInfo.accessTokenUpdateAt(response.accessTokenUpdateAt)
  32. userInfo.refreshToken(response.refreshToken)
  33. userInfo.refreshTokenExpiresIn(response.refreshTokenExpiresIn)
  34. userInfo.refreshTokenUpdateAt(response.refreshTokenUpdateAt)
  35. // 成功
  36. //console.log('accessToken更新成功,refreshToken更新为:'+userInfo.refreshToken());
  37. //console.log('accessToken更新成功,refreshToken的更新时间为:'+tool.formatDate(userInfo.refreshTokenUpdateAt()));
  38. //console.log('accessToken更新成功,refreshToken的有效时间为:'+userInfo.refreshTokenExpiresIn());
  39. callback(userInfo.accessToken())
  40. return true
  41. }).catch(error => {
  42. //userInfo.clear();
  43. //console.log(error);
  44. errorBack('E40001')
  45. return false
  46. })
  47. } else {
  48. //console.log('refreshToken已失效');
  49. userInfo.clear()
  50. // 失效
  51. errorBack('E40003')
  52. return false
  53. }
  54. }
  55. }
  56. const network = {
  57. loginGetAccessToken(adminName, password, verifyCode, pageId) {
  58. let promise = new Promise((resolve, reject) => {
  59. // if(userInfo.hasLogin()){
  60. // reject('E40005');
  61. // return false;
  62. // }
  63. axiosObj.post(`oauth/login?page_id=${pageId}`, {
  64. LoginForm: {
  65. adminName,
  66. password,
  67. verifyCode,
  68. }
  69. }).then(response => {
  70. // 更新本地accessToken
  71. userInfo.updateLoginAllInfo(response)
  72. // 成功
  73. resolve(response)
  74. }).catch(error => {
  75. //console.log('登录获取数据错误');
  76. userInfo.clear()
  77. reject(error)
  78. })
  79. })
  80. return promise
  81. },
  82. updateToken() {
  83. let promise = new Promise((resolve, reject) => {
  84. updateToken(function (accessToken) {
  85. resolve(accessToken)
  86. }, function (error) {
  87. reject(error)
  88. })
  89. })
  90. return promise
  91. },
  92. getUserInfo() {
  93. let promise = new Promise((resolve, reject) => {
  94. updateToken(function (accessToken) {
  95. axiosObj.get(`oauth/info`, {
  96. headers: {
  97. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  98. }
  99. }).then(response => {
  100. // 更新本地userInfo
  101. userInfo.userId(response.ID)
  102. userInfo.adminName(response.ADMIN_NAME)
  103. userInfo.baseData({roleId: response.ROLE_ID})
  104. // 成功
  105. resolve(response)
  106. }).catch(error => {
  107. reject(error)
  108. })
  109. }, function (error) {
  110. reject(error)
  111. })
  112. })
  113. return promise
  114. },
  115. getBaseInfo() {
  116. let promise = new Promise((resolve, reject) => {
  117. updateToken(function (accessToken) {
  118. axiosObj.get(`site/base-info`, {
  119. headers: {
  120. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  121. }
  122. }).then(response => {
  123. // 更新本地baseInfo
  124. baseInfo.set(response)
  125. // 成功
  126. resolve(response)
  127. }).catch(error => {
  128. reject(error)
  129. })
  130. }, function (error) {
  131. reject(error)
  132. })
  133. })
  134. return promise
  135. },
  136. getData(route, data = null) {
  137. if (data === null) {
  138. data = {}
  139. }
  140. let promise = new Promise((resolve, reject) => {
  141. updateToken(function (accessToken) {
  142. axiosObj.get(`${route}`, {
  143. params: data,
  144. headers: {
  145. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  146. }
  147. }).then(response => {
  148. // 成功
  149. resolve(response)
  150. }).catch(error => {
  151. error = tool.errorHandle(error)
  152. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  153. reject(error)
  154. })
  155. }, function (error) {
  156. error = tool.errorHandle(error)
  157. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  158. reject(error)
  159. })
  160. })
  161. return promise
  162. },
  163. postData(route, data) {
  164. let promise = new Promise((resolve, reject) => {
  165. updateToken(function (accessToken) {
  166. axiosObj.post(`${route}`, data, {
  167. headers: {
  168. 'Authorization': ACCESS_TOKEN_PREFIX + accessToken,
  169. }
  170. }).then(response => {
  171. // 成功
  172. resolve(response)
  173. }).catch(error => {
  174. error = tool.errorHandle(error)
  175. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  176. reject(error)
  177. })
  178. }, function (error) {
  179. error = tool.errorHandle(error)
  180. ElementUI.Message({type: 'error', message: error.message, showClose: true, duration: 0})
  181. reject(error)
  182. })
  183. })
  184. return promise
  185. },
  186. getPageData(obj, path, page = null, pageSize = null, data = null, callback = null, isLoading = null, percentFieldName = null) {
  187. if (isLoading === false) {
  188. obj.loading = isLoading
  189. } else {
  190. obj.loading = true
  191. }
  192. if (page === null) page = 1
  193. if (pageSize === null) pageSize = 20
  194. let paramsData = {
  195. page: page,
  196. pageSize: pageSize,
  197. }
  198. if (data === null || tool.isEmptyObject(data)) {
  199. // 查看地址栏中的内容,如果有内容则把地址栏中的参数给拿到
  200. if(window.location.href.indexOf('filter') !== -1){
  201. let nowUrl = tool.parseURL(window.location.href)
  202. if(nowUrl.params.filter){
  203. data = JSON.parse(unescape(nowUrl.params.filter))
  204. if(obj.filterModel){
  205. obj.filterModel = data
  206. }
  207. }
  208. }
  209. }
  210. paramsData = Object.assign(paramsData, data)
  211. network.getData(path, paramsData).then(response => {
  212. obj.tableData = response.list
  213. obj.tableHeaders = response.columnsShow ? response.columnsShow : []
  214. obj.loading = false
  215. obj.currentPage = page
  216. obj.totalPages = parseInt(response.totalPages)
  217. obj.totalCount = parseInt(response.totalCount)
  218. obj.pageSize = pageSize
  219. if (percentFieldName !== null) {
  220. if(percentFieldName.length > 0){
  221. for(let i in obj.tableData){
  222. for(let j in percentFieldName){
  223. obj.$set(obj.percentList[percentFieldName[j]], obj.tableData[i].ID, obj.tableData[i][percentFieldName[j]])
  224. }
  225. }
  226. }
  227. }
  228. if (callback !== null) {
  229. callback(response)
  230. }
  231. }).catch(response => {
  232. obj.loading = false
  233. })
  234. },
  235. getDaysDiff() {
  236. let promise = new Promise((resolve, reject) => {
  237. axiosObj.get(`site/days-diff`).then(response => {
  238. // 更新本地baseInfo
  239. baseInfo.setDaysDiff(response.daysDiff)
  240. // 成功
  241. resolve(response)
  242. }).catch(error => {
  243. reject(error)
  244. })
  245. })
  246. return promise
  247. }
  248. }
  249. export default network