alan
5 years ago
5 changed files with 155 additions and 110 deletions
@ -1,121 +1,35 @@
|
||||
import 'es6-promise/auto'; |
||||
import axios, { AxiosResponse, AxiosError } from 'axios'; |
||||
import { CrudReqOpts, CrudParams, ResultType } from './crud.typings.d'; |
||||
import { ReqPrefix, errorCode } from '../constants/env'; |
||||
const defaultHeaders = { |
||||
'Content-Type': 'application/json', |
||||
'X-Requested-With': 'XMLHttpRequest', |
||||
}; |
||||
import { ResultType } from './crud.typings.d'; |
||||
import { ReqPath } from '../constants/env'; |
||||
|
||||
export function paramsSerializer(params: { [key: string]: any }) { |
||||
return Object.keys(params || {}) |
||||
.map(paramKey => { |
||||
const paramValue = params[paramKey]; |
||||
|
||||
let value = ''; |
||||
|
||||
if (BI.isObject(paramValue)) { |
||||
value = encodeURIComponent(JSON.stringify(paramValue)); |
||||
} else { |
||||
value = paramValue; |
||||
} |
||||
|
||||
return BI.isNull(value) ? '' : `${paramKey}=${value}`; |
||||
}) |
||||
.filter(v => v !== '') |
||||
.join('&'); |
||||
} |
||||
function getCookieByName(name: string):string { |
||||
let value = null; |
||||
const regExpName = new RegExp(name); |
||||
document.cookie.split(';').forEach((item: string) => { |
||||
if (item.match(regExpName)) { |
||||
value = item.split(`${name}=`)[1]; |
||||
|
||||
return false; |
||||
} |
||||
}); |
||||
|
||||
return value; |
||||
} |
||||
|
||||
function checkStatus(response: AxiosResponse) { |
||||
const status = response.status; |
||||
const noLoginErr = [errorCode.LOGIN_INFO_ERROR, errorCode.LOGIN_INFO_NOT_AVAILABLE, errorCode.TIMEOUT]; |
||||
|
||||
const resData = status === 200 |
||||
? typeof response.data === 'string' |
||||
? BI.jsonDecode(response.data) |
||||
: response.data |
||||
: {}; |
||||
if (noLoginErr.includes(BI.get(resData, 'errorCode'))) { |
||||
BI.Msg.alert(BI.i18nText('BI-Basic_Prompt'), BI.i18nText('Dec-Dcm_Login_Error'), () => { |
||||
window.location.reload(true); |
||||
export function requestGet(url: string, data?: any): Promise<ResultType> { |
||||
return new Promise(resolve => { |
||||
Dec.reqGet(`${ReqPath}/${url}`, '', re => { |
||||
resolve(re); |
||||
}); |
||||
|
||||
return new Promise(() => {}); |
||||
} |
||||
|
||||
return resData; |
||||
} |
||||
|
||||
export async function request(reqOptions: CrudReqOpts = {}): Promise<ResultType> { |
||||
const { url, type, headers, data, params } = reqOptions; |
||||
|
||||
return axios |
||||
.request({ |
||||
url, |
||||
baseURL: ReqPrefix, |
||||
method: type, |
||||
headers: { |
||||
...defaultHeaders, |
||||
...headers, |
||||
Authorization: `Bearer ${getCookieByName('fine_auth_token')}`, |
||||
'Content-Type': 'application/json;charset=UTF-8', |
||||
}, |
||||
params, |
||||
paramsSerializer, |
||||
data, |
||||
}) |
||||
.then(checkStatus) |
||||
.catch((error: AxiosError) => { |
||||
console.log(error); |
||||
}); |
||||
} |
||||
|
||||
export function requestGet(url: string, data?: any, params: CrudParams = {}) { |
||||
const timeStamp = new Date().getTime(); |
||||
|
||||
return request({ |
||||
url: url.includes('?') ? `${url}&_=${timeStamp}` : `${url}?_=${timeStamp}`, |
||||
type: 'GET', |
||||
data, |
||||
params, |
||||
}); |
||||
} |
||||
|
||||
export function requestPost(url: string, data = {}, params: CrudParams = {}) { |
||||
return request({ |
||||
url, |
||||
type: 'POST', |
||||
data, |
||||
params, |
||||
export function requestPost(url: string, data = {}): Promise<ResultType> { |
||||
return new Promise(resolve => { |
||||
Dec.reqPost(`${ReqPath}/${url}`, data, re => { |
||||
resolve(re); |
||||
}); |
||||
}); |
||||
} |
||||
|
||||
export function requestDelete(url: string, data = {}) { |
||||
return request({ |
||||
url, |
||||
type: 'DELETE', |
||||
data, |
||||
return new Promise(resolve => { |
||||
Dec.reqDelete(`${ReqPath}/${url}`, data, re => { |
||||
resolve(re); |
||||
}); |
||||
}); |
||||
} |
||||
|
||||
export function requestPut(url: string, data = {}, params: CrudParams = {}) { |
||||
return request({ |
||||
url, |
||||
type: 'PUT', |
||||
data, |
||||
params, |
||||
export function requestPut(url: string, data = {}) { |
||||
return new Promise(resolve => { |
||||
Dec.reqPut(`${ReqPath}/${url}`, data, re => { |
||||
resolve(re); |
||||
}); |
||||
}); |
||||
} |
||||
|
@ -0,0 +1,118 @@
|
||||
import 'es6-promise/auto'; |
||||
import axios, { AxiosResponse, AxiosError } from 'axios'; |
||||
import { CrudReqOpts, ResultType } from './modules/crud/crud.typings'; |
||||
import { fineServletURL, errorCode } from './modules/constants/env'; |
||||
const defaultHeaders = { |
||||
'Content-Type': 'application/json', |
||||
'X-Requested-With': 'XMLHttpRequest', |
||||
}; |
||||
|
||||
export function paramsSerializer(params: { [key: string]: any }) { |
||||
return Object.keys(params || {}) |
||||
.map(paramKey => { |
||||
const paramValue = params[paramKey]; |
||||
|
||||
let value = ''; |
||||
|
||||
if (BI.isObject(paramValue)) { |
||||
value = encodeURIComponent(JSON.stringify(paramValue)); |
||||
} else { |
||||
value = paramValue; |
||||
} |
||||
|
||||
return BI.isNull(value) ? '' : `${paramKey}=${value}`; |
||||
}) |
||||
.filter(v => v !== '') |
||||
.join('&'); |
||||
} |
||||
function getCookieByName(name: string):string { |
||||
let value = null; |
||||
const regExpName = new RegExp(name); |
||||
document.cookie.split(';').forEach((item: string) => { |
||||
if (item.match(regExpName)) { |
||||
value = item.split(`${name}=`)[1]; |
||||
|
||||
return false; |
||||
} |
||||
}); |
||||
|
||||
return value; |
||||
} |
||||
|
||||
function checkStatus(response: AxiosResponse) { |
||||
const status = response.status; |
||||
const noLoginErr = [errorCode.LOGIN_INFO_ERROR, errorCode.LOGIN_INFO_NOT_AVAILABLE, errorCode.TIMEOUT]; |
||||
|
||||
const resData = status === 200 |
||||
? typeof response.data === 'string' |
||||
? BI.jsonDecode(response.data) |
||||
: response.data |
||||
: {}; |
||||
if (noLoginErr.includes(BI.get(resData, 'errorCode'))) { |
||||
BI.Msg.alert(BI.i18nText('BI-Basic_Prompt'), BI.i18nText('Dec-Dcm_Login_Error'), () => { |
||||
window.location.reload(true); |
||||
}); |
||||
|
||||
return new Promise(() => {}); |
||||
} |
||||
|
||||
return resData; |
||||
} |
||||
|
||||
export async function request(reqOptions: CrudReqOpts = {}): Promise<ResultType> { |
||||
const { url, type, headers, data, params } = reqOptions; |
||||
|
||||
return axios |
||||
.request({ |
||||
url, |
||||
baseURL: fineServletURL, |
||||
method: type, |
||||
headers: { |
||||
...defaultHeaders, |
||||
...headers, |
||||
Authorization: `Bearer ${getCookieByName('fine_auth_token')}`, |
||||
'Content-Type': 'application/json;charset=UTF-8', |
||||
}, |
||||
params, |
||||
paramsSerializer, |
||||
data, |
||||
}) |
||||
.then(checkStatus) |
||||
.catch((error: AxiosError) => { |
||||
console.log(error); |
||||
}); |
||||
} |
||||
|
||||
Dec.reqGet = (url: string, data: any, callback: (re: any) => void) => { |
||||
const timeStamp = new Date().getTime(); |
||||
|
||||
request({ |
||||
url: url.includes('?') ? `${url}&_=${timeStamp}` : `${url}?_=${timeStamp}`, |
||||
type: 'GET', |
||||
data, |
||||
}).then(re => callback(re)); |
||||
}; |
||||
|
||||
Dec.reqPost = (url: string, data: any, callback: (re: any) => void) => { |
||||
request({ |
||||
url, |
||||
type: 'POST', |
||||
data, |
||||
}).then(re => callback(re)); |
||||
}; |
||||
|
||||
Dec.reqDelete = (url: string, data: any, callback: (re: any) => void) => { |
||||
request({ |
||||
url, |
||||
type: 'DELETE', |
||||
data, |
||||
}).then(re => callback(re)); |
||||
}; |
||||
|
||||
Dec.reqPut = (url: string, data: any, callback: (re: any) => void) => { |
||||
request({ |
||||
url, |
||||
type: 'PUT', |
||||
data, |
||||
}).then(re => callback(re)); |
||||
}; |
Loading…
Reference in new issue