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