123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- import qs from 'qs'
- import md5 from 'js-md5'
- import config from '../js/config'
- import fn from '../js/function'
- import plugin from '../js/plugin'
- import router from '../js/router'
- import store from '../store'
- const http = {
-
- async ajax(type, url, data = {}, { map = {}, repeat = false, awaitTime = 1000, isJson = false } = {}) {
- const self = this
- let httpKey = md5(url + qs.stringify(data))
- let ContentType = 'application/x-www-form-urlencoded;charset=UTF-8;'
-
- if (repeat) {
- let httpInfo = store.state.http[httpKey]
- if (httpInfo && self.isRepeat(httpKey)) {
- console.warn('重复请求过滤')
- return new Promise((resolve) => {
- resolve({
- code: '-1',
- data: '',
- message: '正在处理中,请稍等...',
- requestData: '',
- })
- })
- } else {
-
- store.commit('http/add', httpKey)
- }
- }
-
- data = self.request(data, map)
-
- if (type === 'GET') {
- data = qs.stringify(data)
- url = url + '?' + data
- }
-
- if (isJson) {
- ContentType = 'application/json;charset=UTF-8;'
- } else {
- data = qs.stringify(data)
- }
-
- if (url.indexOf('http') < 0) {
- url = config.apiBaseUrl + url
- }
-
- console.log(store.state.user,'ajax')
- let header = {
- 'Accept': 'application/json',
- 'Content-Type': ContentType,
- 'appId': store.state.user.user ? (store.state.user.user.appId || '') : '',
- 'companyId': store.state.user.user ? (store.state.user.user.companyId || '') : '',
- 'userId': store.state.user.user ? (store.state.user.user.id || '') : '',
- 'Authorization': 'Bearer ' + store.state.user.token,
-
- }
- if (store.state.user && store.state.user.user) {
- header.StoreId = store.state.user.user.storeId || '';
- }
- let response = await uni.request({
- url: url,
- data: data,
- header: header,
- method: type,
- })
- return self.response(response, {
- map: map,
- httpKey: httpKey,
- repeat: repeat,
- awaitTime: awaitTime,
- request: arguments,
- })
- },
-
- isRepeat(httpKey) {
- let httpInfo = store.state.http[httpKey]
- let nowTime = new Date().getTime()
- let outTime = 5
- return httpInfo && nowTime < httpInfo + outTime * 1000
- },
-
- request(data, map) {
- const self = this
-
-
-
-
- data = fn.deepClone(data)
- data = fn.objSetKey(data, map)
- for (let key in data) {
- if (data.hasOwnProperty(key) && (data[key] === undefined)) {
- delete data[key]
- }
- }
-
-
- return data
- },
-
- getTimestamp() {
- let differTimestamp = store.state.common.differTimestamp || 0
- let localTimestamp = parseInt(new Date().getTime() / 1000)
- return localTimestamp + differTimestamp
- },
-
- setSign(data) {
- let sign = ''
- data = fn.objSort(data)
- sign = decodeURIComponent(qs.stringify(data))
- data.sign = md5(sign + config.salt)
- return data
- },
-
- response(res, { map = {}, httpKey = '', repeat = false, awaitTime = '', request = [] } = {}) {
- const self = this
- return new Promise(async resolve => {
- let response = res[1]
- let data = {
- success: response.data.success,
- affectedRows: response.data.affectedRows,
- code: response.data.code,
- message: '无法访问到服务器',
- data: '',
- }
-
- if (repeat) {
- setTimeout(function () {
- store.commit('http/success', httpKey)
- }, awaitTime)
- }
-
- if (response.statusCode === 200) {
-
- if (request[1] === '/Coupon/GetQrCode') {
- data = response;
- } else {
- data = {
- success: response.data.success,
- affectedRows: response.data.affectedRows,
- code: response.data.code,
- message: response.data.message || '',
- data: fn.objSetKey(response.data.data, map, true),
- }
- }
- } else if (response.statusCode === 401) {
- await plugin.getToken()
- data = await self.ajax(request[0], request[1], request[2], request[3])
-
-
-
-
- } else {
- console.error(response.data)
- }
- resolve(data)
- })
- },
- }
- export default {
-
- get(url, data, config) {
- return http.ajax('GET', url, data, config)
- },
-
- post(url, data, config) {
- return http.ajax('POST', url, data, config)
- },
-
- put(url, data, config) {
- return http.ajax('PUT', url, data, config)
- },
-
- delete(url, data, config) {
- return http.ajax('DELETE', url, data, config)
- },
- }
|