| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- import Global from './global'
- import Auth from './auth'
- import Cache from './cache'
- import Dialog from './dialog'
- import Util from './util2'
- import ApiEnum from './api_enum'
- //加载器文本
- let _loadingTextDefault = '加载中..'
- let api = {};
- // 获取设备信息
- let getDevice = ()=>{
- if(api._device){
- return api._device
- }
-
- let deviceInfo = uni.getSystemInfoSync()
- // '设备名称|设备版本|设备系统版本|设备当前使用语言|设备屏幕分辨率|http请求版本|设备唯一识别码|default'
- // 'MI 5|V1.0.0|6.0.1|zh|720*1280|1.0|320981221265414|default'
- let device = [
- deviceInfo.model,
- deviceInfo.version,
- deviceInfo.system,
- deviceInfo.language,
- deviceInfo.screenWidth+'*'+deviceInfo.screenHeight,
- 'default',
- 'default',
- 'default'
- ].join('|');
- api._device = device
- return device
- }
- // 获取请求时间,并格式化
- let getRequestTime = () => {
- let time = new Date().getTime();
- let requestTime = Util.dateFormat(time, "yyyyMMddhhmmss");
- return requestTime;
- }
- // 获取随机数
- let getRands = () => {
- let num = Math.random() * (999999 - 100000) + 100000;
- let rands = parseInt(num, 10);
- return rands
- }
- api.request = (code, data, method = 'GET', dataType = 'json', header = null) => {
- //设置请求头
- header = header || {}
- header['Content-Type'] = 'application/json;charset=UTF-8'
-
- let head = {
- version:'v1',
- device: getDevice(),
- reqtime: getRequestTime(),
- seqno: getRands(),
- sessionId: Auth.getSessionId()
- }
- if([ApiEnum.loginByCode, ApiEnum.loginByWxapp].includes(code)){
- delete head.sessionId
- }
- // 1 reqtime 请求时间 N X(14) yyyymmddhhmmss
- // 2 seqno 请求随机数 N X(6) 随机数
- // 3 device 设备信息 N X(100) 设备信息
- // 4 sessionId 会话 Y X(20) 当需要识别请求者身份时必填
- // 5 version 请求版本号 Y X 默认v1
- //设置请求参数
- data = data || {}
-
- //操作店铺
- if(!Array.isArray(data)){
- data.storeId = data.storeId || Global.server.storeId;
- }
- //是否显示加载器
- let isShowLoading = data._isShowLoading || false
- let isPull = data._isPull || false
- let loadingText = data._loadingText || _loadingTextDefault
- let isReject = data._isReject || false
- //显示加载器
- if (isShowLoading) {
- isShowLoading = true
- Dialog.showLoading(loadingText)
- }
- //删除字段
- delete data._isShowLoading
- delete data._isPull
- delete data._isReject
- delete data._loadingText
-
- let realData = {}
- realData.head = head
- realData.body = data
- return new Promise((resolve, reject) => {
- //请求http
- uni.request({
- header: header,
- url: Global.server.apiUrl + "/"+Global.server.miniappCode+"/"+code,
- data: method=='POST'?realData:data,
- dataType: dataType,
- responseType: 'text',
- method: method,
- success: (res)=>{
- let response=res.data;
- if(response.head.bzflag=='200' && response.head.sysflag=='200'){
- resolve(response.body)
- }else{
- if(isReject){
- reject(response.head)
- return
- }
- Dialog.alert({
- content: response.head.errmsg || '服务繁忙,请稍后再试...'
- })
- }
- },
- fail: (res)=>{
- console.error(res)
- },
- complete: ()=>{
- if(isPull){
- uni.stopPullDownRefresh()
- }
- if (isShowLoading) {
- Dialog.hideLoading()
- }
- }
- })
- })
- }
- // 包裹一层,方便后续拓展
- api.requestWithTicket = (code, data, method = 'GET', dataType = 'json') => {
- return new Promise((resolve, reject) => {
- api.request(code, data, method, dataType)
- .then(resolve)
- .catch(reject)
- })
- }
- /**
- * 上传图片(多张)
- * @param {string} uri 文件路径 [Y]
- * @param {string} type 'multipart/form-data' [Y]
- * @param {string} name 文件key [Y]
- *
- * @return {Array<Object>} body
- * @return {string} id
- * @return {string} name
- * @return {string} path
- */
- api.uploadImg = (data) => {
- data = data || {}
-
- let isShowLoading = data._isShowLoading || false
- let isReject = data._isReject || false
- if(isShowLoading){
- Dialog.showLoading('上传中...')
- }
- return new Promise((resolve, reject) => {
- let header = {}
- header['Content-Type'] = 'multipart/form-data;'
- let uploadUrl = Global.server.apiUrl + "/" + Global.server.miniappCode+ "/" + ApiEnum.uploadImg
- uni.uploadFile({
- url: uploadUrl,
- filePath: data.uri,
- header: header,
- async: false,
- name: data.name,
- formData: {
- uri: data.uri,
- type: 'multipart/form-data',
- name: data.name
- },
- success: (res) => {
- let ret = JSON.parse(res.data)
- if(res.statusCode==200){
- resolve(ret.body)
- }else{
- if(isReject){
- reject(ret)
- }
- }
- },
- fail: (err) => {
- if(isReject){
- resolve(err)
- }
- },
- complete: () => {
- if(isShowLoading){
- Dialog.hideLoading()
- }
- }
- })
- })
- }
- export default api
|