import store from '@/store' import config from '@/config' import { getToken } from '@/utils/auth' import errorCode from '@/utils/errorCode' let timeout = 10000 const baseUrl = config.baseUrl const clientid = config.Clientid /** * 显示消息提示框 * @param content 提示的标题 */ export function toast(content) { uni.showToast({ icon: 'none', title: content }) } /** * 显示模态弹窗 * @param content 提示的标题 */ export function showConfirm(content) { return new Promise((resolve, reject) => { uni.showModal({ title: '提示', content: content, cancelText: '取消', confirmText: '确定', success: function(res) { resolve(res) } }) }) } // 字典值匹配 export function selectDictLabel(datas, value) { var actions = []; Object.keys(datas).some((key) => { if (datas[key].dictLabel == ('' + value)) { actions.push(datas[key].dictValue); return true; } }) return actions.join(''); } // 字典值匹配 export function selectDictValue(datas, value) { var actions = []; Object.keys(datas).some((key) => { if (datas[key].dictValue == ('' + value)) { actions.push(datas[key].dictLabel); return true; } }) return actions.join(''); } // 日期格式 export function format (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); for (var k in o) if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); return fmt; } // 上传 //上传图片 export function uploadmore(api, filePaths, successUp, failUp, i, length, files, callback) { const isToken = (config.headers || {}).isToken === false config.header = config.header || {} if (getToken() && !isToken) { config.header['Authorization'] = 'Bearer ' + getToken(); config.header['clientid']=clientid; } // get请求映射params参数 if (config.params) { let url = config.url + '?' + tansParams(config.params) url = url.slice(0, -1) config.url = url } uni.showLoading({ title: '上传中' }) var failfile = []; uni.uploadFile({ timeout: config.timeout || timeout, url: baseUrl + api, //仅为示例,非真实的接口地址 filePath: filePaths[i], name: 'file', header: config.header, formData: config.formData, success: function(resp) { uni.hideLoading(); let result = JSON.parse(resp.data) const code = result.code || 200 const msg = errorCode[code] || result.msg || errorCode['default'] // console.log(result.fileName,8) if (result.code == 200) { successUp++; files[i] = result.fileName; } else if(result.code==401) { showConfirm("登录状态已过期,您可以继续留在该页面,或者重新登录?").then(res => { if (res.confirm) { store.dispatch('LogOut').then(res => { uni.reLaunch({ url: '/pages/login/login' }) }) } }) callback('无效的会话,或者会话已过期,请重新登录。'); }else{ failfile = failfile.concat(filePaths[i]) failUp++; } }, fail: function(res) { uni.hideLoading(); failfile = failfile.concat(filePaths[i]) failUp++; }, complete: function(rsp) { // console.log(rsp, filePaths[i]) uni.hideLoading(); i++; if (i == length) { // uni.showToast({ // title: '总共' + successUp + '张上传成功,' + failUp + '张上传失败!', // icon: 'none', // duration: 2000 // }); callback(files); } else { //递归调用upload函数 uploadmore(api, filePaths, successUp, failUp, i, length, files, callback); } } }); } /** * 参数处理 * @param params 参数 */ export function tansParams(params) { let result = '' for (const propName of Object.keys(params)) { const value = params[propName] var part = encodeURIComponent(propName) + "=" if (value !== null && value !== "" && typeof (value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { let params = propName + '[' + key + ']' var subPart = encodeURIComponent(params) + "=" result += subPart + encodeURIComponent(value[key]) + "&" } } } else { result += part + encodeURIComponent(value) + "&" } } } return result }