import http from './http.js'
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								let limit = {}
							 | 
						|
								let debounce = {}
							 | 
						|
								
							 | 
						|
								const config = {
							 | 
						|
									// 示例
							 | 
						|
									// wxLogin : {url : '/api/wxLogin', method : 'POST', 
							 | 
						|
									// auth : false, showLoading : true, loadingTitle : '加载中...',
							 | 
						|
									// limit : 1000
							 | 
						|
									// },
							 | 
						|
									
							 | 
						|
									getConfig : {url : '/api/getConfig', method : 'GET', limit : 500},
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									// 微信登录接口
							 | 
						|
									wxLogin: {
							 | 
						|
										url: '/login/login',
							 | 
						|
										method: 'POST', 
							 | 
						|
										limit : 500,
							 | 
						|
										showLoading : true,
							 | 
						|
									},
							 | 
						|
									// 修改个人信息接口
							 | 
						|
									updateInfo: {
							 | 
						|
										url: '/user/edit',
							 | 
						|
										method: 'POST',
							 | 
						|
										auth: true, 
							 | 
						|
										limit : 800,
							 | 
						|
										showLoading : true,
							 | 
						|
									},
							 | 
						|
									// 获取用户信息
							 | 
						|
									getInfo: {
							 | 
						|
										url: '/user/info',
							 | 
						|
										method: 'GET',
							 | 
						|
										auth: true, 
							 | 
						|
										limit : 200,
							 | 
						|
									},
							 | 
						|
									//隐私政策
							 | 
						|
									getPrivacyPolicy: {
							 | 
						|
										url: '/login/getPrivacyPolicy',
							 | 
						|
										method: 'GET',
							 | 
						|
									},
							 | 
						|
									//用户协议
							 | 
						|
									getUserAgreement: {
							 | 
						|
										url: '/login/getUserAgreement',
							 | 
						|
										method: 'GET',
							 | 
						|
									},
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									// 获取团队
							 | 
						|
									teamList: {
							 | 
						|
										url: '/team/list',
							 | 
						|
										method: 'GET',
							 | 
						|
									},
							 | 
						|
									// 申请加入团队
							 | 
						|
									teamApply: {
							 | 
						|
										url: '/team/apply',
							 | 
						|
										method: 'POST',
							 | 
						|
										auth: true, 
							 | 
						|
										limit : 800,
							 | 
						|
									},
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									// 实名认证
							 | 
						|
									authApply: {
							 | 
						|
										url: '/auth/apply',
							 | 
						|
										method: 'POST',
							 | 
						|
										auth: true, 
							 | 
						|
										limit : 800,
							 | 
						|
										showLoading : true,
							 | 
						|
									},
							 | 
						|
									// 实名认证详情
							 | 
						|
									authInfo: {
							 | 
						|
										url: '/auth/info',
							 | 
						|
										method: 'GET',
							 | 
						|
									},
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									// 打卡时间的接口
							 | 
						|
									clockTime: {
							 | 
						|
										url: '/clock/time',
							 | 
						|
										method: 'POST',
							 | 
						|
										showLoading : true,
							 | 
						|
										auth : true,
							 | 
						|
									},
							 | 
						|
									// 人脸识别
							 | 
						|
									clockVerifyFace: {
							 | 
						|
										url: '/clock/verify/face',
							 | 
						|
										method: 'POST',
							 | 
						|
										showLoading : true,
							 | 
						|
										auth : true,
							 | 
						|
										limit : 2000,
							 | 
						|
										loadingTitle : '核验中',
							 | 
						|
									},
							 | 
						|
									
							 | 
						|
									// 打卡
							 | 
						|
									clock: {
							 | 
						|
										url: '/clock/in',
							 | 
						|
										method: 'POST',
							 | 
						|
										showLoading : true,
							 | 
						|
										auth: true, 
							 | 
						|
										limit : 800,
							 | 
						|
									},
							 | 
						|
									// 打卡详情列表
							 | 
						|
									clockList: {
							 | 
						|
										url: '/clock/in/log',
							 | 
						|
										method: 'GET',
							 | 
						|
									},
							 | 
						|
									// 打卡统计
							 | 
						|
									clockTotal: {
							 | 
						|
										url: '/clock/in/total',
							 | 
						|
										method: 'GET',
							 | 
						|
										showLoading : true,
							 | 
						|
										debounce : 400,
							 | 
						|
									},
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									
							 | 
						|
									// 项目列表分页
							 | 
						|
									clockProjectList: {
							 | 
						|
										url: '/clock/project/list',
							 | 
						|
										method: 'GET',
							 | 
						|
										auth : true,
							 | 
						|
										showLoading : true,
							 | 
						|
									},
							 | 
						|
									// 设置项目经纬度
							 | 
						|
									clockProjectLocation: {
							 | 
						|
										url: '/clock/project/location',
							 | 
						|
										method: 'POST',
							 | 
						|
										auth : true,
							 | 
						|
										showLoading : true,
							 | 
						|
									},
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								export function api(key, data, callback, loadingTitle) {
							 | 
						|
									let req = config[key]
							 | 
						|
								
							 | 
						|
									if (!req) {
							 | 
						|
										console.error('无效key' + key);
							 | 
						|
										return
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									if (typeof callback == 'string') {
							 | 
						|
										loadingTitle = callback
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									if (typeof data == 'function') {
							 | 
						|
										callback = data
							 | 
						|
										data = {}
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									// 接口限流
							 | 
						|
									if (req.limit) {
							 | 
						|
										let storageKey = req.url
							 | 
						|
										let storage = limit[storageKey]
							 | 
						|
										if (storage && new Date().getTime() - storage < req.limit) {
							 | 
						|
											return
							 | 
						|
										}
							 | 
						|
										limit[storageKey] = new Date().getTime()
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									//必须登录
							 | 
						|
									if (req.auth) {
							 | 
						|
										if (!uni.getStorageSync('token')) {
							 | 
						|
											uni.navigateTo({
							 | 
						|
												url: '/pages/login/login'
							 | 
						|
											})
							 | 
						|
											console.error('需要登录')
							 | 
						|
											return
							 | 
						|
										}
							 | 
						|
									}
							 | 
						|
									
							 | 
						|
									// 接口防抖
							 | 
						|
									if(req.debounce){
							 | 
						|
										
							 | 
						|
										let storageKey = req.url
							 | 
						|
										let storage = debounce[storageKey]
							 | 
						|
										
							 | 
						|
										if (storage) {
							 | 
						|
											clearTimeout(storage)
							 | 
						|
										}
							 | 
						|
										
							 | 
						|
										debounce[storageKey] = setTimeout(() => {
							 | 
						|
											
							 | 
						|
											clearTimeout(storage)
							 | 
						|
											
							 | 
						|
											delete debounce[storageKey]
							 | 
						|
											
							 | 
						|
											http.http(req.url, data, callback, req.method,
							 | 
						|
												loadingTitle || req.showLoading, loadingTitle || req.loadingTitle)
							 | 
						|
										}, req.debounce)
							 | 
						|
										
							 | 
						|
										return
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									http.http(req.url, data, callback, req.method,
							 | 
						|
										loadingTitle || req.showLoading, loadingTitle || req.loadingTitle)
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								export default api
							 |