import $var from '../js/const'
|
import route from '../../router/index'
|
import nav from '../js/nav'
|
import store from '../../store/index'
|
import axios from 'axios'
|
|
// token 检测
|
let is_token = (r, fn) => {
|
let cc = [401, 402, 403].indexOf(r.code) >= 0
|
if (cc) {
|
demo.toast('登录失效,请重新登录')
|
}
|
if (r.code === 0 && r.err) {
|
if (demo._is_obj(r.err).code === 6) {
|
demo.toast(r.err.status + ':' + r.err.error)
|
} else if (r.err.indexOf('getAttribute') >= 0) {
|
demo.log(r.err)
|
}
|
return
|
}
|
if ((r.msg || '').indexOf('token') >= 0 || cc) {
|
route.push(nav.url('/login'))
|
} else {
|
fn()
|
}
|
}
|
let is_header = () => {
|
return {
|
'Authorization': 'Bearer ' + demo.$session.get('token') || '',
|
}
|
}
|
|
let is_debug = (res, url, data) => {
|
let c = (text, color) => {
|
return { text, sty: 'color:' + color }
|
}
|
let debug = (demo.$local.get('debug') === true ? 1 : 0) || $var.debug
|
if (debug) {
|
let e = res.code === $var.successCode ? 'success' : 'error'
|
demo.log('debug ' + e + ' start', 1)
|
.log(c('url:', 'orange'), 6).log(url)
|
.log(c('data:', 'tomato'), 6).log(data).log(JSON.stringify(data))
|
.log(c('callback:', 'green'), 6).log(res)
|
.log(c('debug end', '#fff;background:#333;padding:5px 10px'), 6).log('', 3)
|
}
|
}
|
let is_load = (f) => {
|
load(f)
|
}
|
// post
|
function post (url, data, fn, fn2, token) {
|
let header = {}
|
if (!token) { header = is_header() };
|
header['appid'] = 'wx118de8a734d269f0';
|
is_load()
|
demo.ajax($var.api.http + url).post(data, res => {
|
is_debug(res, url, data)
|
is_load(true)
|
if (res.code === $var.successCode) {
|
fn(res.data)
|
} else {
|
is_token(res, () => {
|
if (fn2) {
|
fn2(res)
|
} else {
|
demo.toast(res.msg || '服务器开小差了...')
|
}
|
})
|
}
|
}, 'json', header)
|
}
|
|
// get
|
function get (url, data, fn, fn2, token) {
|
let header = {}
|
if (!token) { header = is_header() };
|
header['appid'] = 'wx118de8a734d269f0';
|
is_load()
|
demo.ajax($var.api.http + url).get(data, res => {
|
is_debug(res, url, data)
|
is_load(true)
|
if (res.code === $var.successCode) {
|
fn(res.data)
|
} else {
|
is_token(res, () => {
|
if (fn2) {
|
fn(res)
|
} else {
|
demo.toast(res.msg || '服务器开小差了...')
|
}
|
})
|
}
|
}, 'json', header)
|
}
|
|
function getFile (url, data, fn, fn2, token) {
|
let header = {}
|
header = is_header();
|
header['appid'] = 'wx118de8a734d269f0';
|
// demo.ajax($var.api.http + url).get(data, res => {
|
// if (res) {
|
// let blod = new Blob([res]);
|
// let url = window.URL.createObjectURL(blod);
|
// console.log("11111");
|
// console.log(url);
|
// const fileName = "export.xls";
|
// const listNode = document.createElement("a");
|
// listNode.download = fileName;
|
// listNode.style.display = "none";
|
// listNode.href = url;
|
// document.body.appendChild(listNode);
|
// listNode.click();
|
// URL.revokeObjectURL(listNode.href);
|
// document.body.removeChild(listNode);
|
// fn()
|
// } else {
|
// if (fn2) {
|
// fn2(res)
|
// } else {
|
// demo.toast(res.msg || '服务器开小差了11...')
|
// }
|
// }
|
// }, 'blob', header)
|
|
axios({
|
method: "get",//指定请求方式
|
url: $var.api.http + url,//请求接口(相对接口,后面会介绍到)
|
responseType: "blob", // 指定响应类型为二进制流
|
headers: header
|
})//面向1-3年前端人员
|
.then(function (response) {//帮助突破技术瓶颈,提升思维能力
|
//接口成功返回结果执行
|
console.log(response);
|
// 创建一个Blob对象
|
const blob = new Blob([response.data]);
|
// 创建URL
|
const url = window.URL.createObjectURL(blob);
|
// 创建一个a标签
|
const a = document.createElement("a");
|
a.style.display = "none";
|
a.href = url;
|
// 指定文件名(可选)
|
a.download = "export.xlsx";
|
// 将a标签添加到body中并点击触发下载
|
document.body.appendChild(a);
|
a.click();
|
// 清理资源
|
window.URL.revokeObjectURL(url);
|
})
|
.catch(function (err) {
|
//请求失败或者接口返回失败或者.then()中的代码发生错误时执行
|
})
|
|
}
|
|
|
|
function getMap (url, data, fn, fn2, token) {
|
let header = {}
|
if (!token) { header = is_header() };
|
header['appid'] = 'wx118de8a734d269f0';
|
is_load()
|
demo.ajax($var.api.map + url).get(data, res => {
|
is_debug(res, url, data)
|
is_load(true)
|
fn(res)
|
}, 'json', header)
|
}
|
|
// put
|
function put (url, data, fn, fn2, token) {
|
let header = {}
|
if (!token) { header = is_header() };
|
header['appid'] = 'wx118de8a734d269f0';
|
is_load()
|
demo.ajax($var.api.http + url).other('put', data, res => {
|
is_debug(res, url, data)
|
is_load(true)
|
if (res.code === $var.successCode) {
|
fn(res.data)
|
} else {
|
is_token(res, () => {
|
if (fn2) {
|
fn2(res)
|
} else {
|
demo.toast(res.msg || '服务器开小差了...')
|
}
|
})
|
}
|
}, 'json', header)
|
}
|
|
// del
|
function del (url, data, fn, fn2, token) {
|
let header = {}
|
if (!token) { header = is_header() };
|
header['appid'] = 'wx118de8a734d269f0';
|
is_load()
|
demo.ajax($var.api.http + url).other('delete', data, res => {
|
is_debug(res, url, data)
|
is_load(true)
|
if (res.code === $var.successCode) {
|
fn(res.data)
|
} else {
|
is_token(res, () => {
|
if (fn2) {
|
fn2(res)
|
} else {
|
demo.toast(res.msg || '服务器开小差了...')
|
}
|
})
|
}
|
}, 'json', header)
|
}
|
demo.access('loadingTimer', null)
|
|
// loading
|
let load = (f) => {
|
let load = demo.$local.get('loading')
|
let fn = () => {
|
store.dispatch("setLoading", demo.rand(-999, -1));
|
clearTimeout(demo.loadingTimer)
|
demo.loadingTimer = null
|
}
|
if (load) {
|
if (!f) {
|
let num = demo.$local.get("loading-time") || 500;
|
num = num < 20 ? 20 : num
|
if (demo.loadingTimer) {
|
fn()
|
}
|
store.dispatch("setLoading", Date.now());
|
demo.loadingTimer = setTimeout(() => {
|
fn()
|
}, num)
|
} else {
|
fn()
|
}
|
}
|
}
|
|
let sess = (name, url, f, flag) => {
|
let list = demo.$local.get(name) || { time: 0 }
|
let time = demo.$local.get('wait-time') || 120
|
// 重新加载
|
if (flag) {
|
list.time = 0
|
}
|
// 两小时内不重复请求
|
if (list.time + time * 6e4 > Date.now()) {
|
f(list.item || [])
|
} else {
|
get(url, {}, e => {
|
if (e.length) {
|
demo.$local.set(name, { time: Date.now(), item: e })
|
f(e)
|
}
|
})
|
}
|
}
|
|
// 党组织 获取
|
let party_list = (f, u) => {
|
sess('party-list', 'communitypartybuilding/listpartyorganization', e => { f(e) }, u)
|
}
|
// 身份
|
let identity = (f, u) => {
|
sess('identity-list', 'communitypartybuilding/listidentity', e => { f(e) }, u)
|
}
|
// 党员
|
let party_member = (f, u) => {
|
sess('party-member-list', 'communitypartybuilding/listpartymember', e => { f(e) }, u)
|
}
|
// 党员活动状态
|
let party_status = (f) => {
|
let v = ['待发布', '', '报名中', '进行中', '已结束', '已取消'].map((k, v) => {
|
return { value: v + 1, label: k }
|
}).filter(r => { return r.label !== '' })
|
f ? f(v) : null
|
return v
|
}
|
// 活动负责人
|
let active_leader = (f, u) => {
|
sess('active-leader', 'communityactivity/listactivitymanager', e => { f(e) }, u)
|
}
|
|
|
// 退出
|
let clear = () => {
|
demo.$local.set('party-list', {})
|
demo.$session.set('user', '')
|
demo.$session.set('vip', '')
|
demo.$local.set('token', '')
|
}
|
|
let mock = {
|
getIp: (fn) => {
|
demo.ajax($var.api.ip).get({ key: $var.mine.key }, e => {
|
fn(e)
|
})
|
},
|
getWeather: (code, fn) => {
|
demo.ajax($var.api.weather).get({ key: $var.mine.key, city: code }, e => {
|
fn(e)
|
})
|
}
|
}
|
|
const http = {
|
// method
|
post,
|
get,
|
getFile,
|
put,
|
del,
|
getMap,
|
party: party_list,
|
identity,
|
member: party_member,
|
leader: active_leader,
|
// default
|
clear,
|
load,
|
// static
|
static: {
|
party_status,
|
},
|
mock
|
}
|
|
export default http
|