import { proxyObj } from '@/api/http.ts' //预览图片 export const toast = (title, icon = 'none') => { uni.showToast({ title: title, icon: icon }); } //预览图片 export const lookImg = (e) => { uni.previewImage({ urls: Array.isArray(e) ? e : [e] }); } //拨打电话 export const call = (e) => uni.makePhoneCall({ phoneNumber: e }); // 剪贴板 export const copy = (e) => uni.setClipboardData({ data: e, success: function() { console.log('success'); } }); //获取超链接参数 export const urlQuery = (e) => { let search = e search = search.split('?')[1]; const pairs = search ? search.split('&') : []; const query = {}; for (let i = 0; i < pairs.length; ++i) { const [key, value] = pairs[i].split('='); query[key] = query[key] || decodeURIComponent(value); } return query }; export const timeFormat = (time, fmt = 'yyyy-MM-dd hh:mm:ss', targetTimezone = 8) => { try { if (!time) { return ''; } if (typeof time === 'string' && !isNaN(time)) time = Number(time); // 其他更多是格式化有如下: // yyyy-MM-dd hh:mm:ss|yyyy年MM月dd日 hh时MM分等,可自定义组合 let date; if (typeof time === 'number') { if (time.toString().length == 10) time *= 1000; date = new Date(time); } else { date = time; } const dif = date.getTimezoneOffset(); const timeDif = dif * 60 * 1000 + targetTimezone * 60 * 60 * 1000; const east8time = date.getTime() + timeDif; date = new Date(east8time); let opt = { 'M+': date.getMonth() + 1, //月份 'd+': date.getDate(), //日 'h+': date.getHours(), //小时 'm+': date.getMinutes(), //分 's+': date.getSeconds(), //秒 'q+': Math.floor((date.getMonth() + 3) / 3), //季度 S: date.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length)); } for (let k in opt) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? opt[k] : ('00' + opt[k]).substr(('' + opt[k]) .length)); } } return fmt; } catch (err) { // 若格式错误,则原值显示 return time; } } export const uploadFiles = (urls) => { console.log(urls); return new Promise(async (resolve, reject) => { uni.uploadFile({ url: `${proxyObj[process.env.NODE_ENV || 'development']}/app-api/infra/file/upload`, // 上传接口地址 filePath: urls, //必须通过 uni.chooseImage、uni.chooseMessageFile 等接口获取临时路径,不可直接使用静态路径 name: 'file', // 文件对应的 key formData: {}, header: { "Tenant-id": "134", }, success: (uploadRes) => { console.log(uploadRes); const data = JSON.parse(uploadRes.data); if (data.code == 0) { resolve(data.data); } else { reject(data.msg); } }, fail: (err) => { reject(err); } }); }); } // export const uploadFiles = (urls) => { // return new Promise(async (resolve, reject) => { // let res = await getOssUploadParams() // const fd = { // policy: res.policy, // OSSAccessKeyId: res.accessId, // success_action_status: 200, // signature: res.signature, // key: res.dir + Date.now() + Math.floor(100000 + Math.random() * // 900000) + '.' + // urls.substring(urls.lastIndexOf(".") + 1), // }; // uni.uploadFile({ // url: res.host, // Example, not a real endpoint // filePath: urls, // header: { // "content-type": 'multipart/form-data' // }, // name: 'file', // formData: fd, // success: (_res) => { // resolve(res.host + '/' + fd.key); // }, // fail: (err) => { // console.log(err); // reject(err); // } // }); // console.log(); // }); // } export function getUrlParam(url, paramName) { // 正则表达式模式,用于匹配URL中的参数部分。正则表达式的含义是匹配不包含 ?、&、= 的字符作为参数名,之后是等号和不包含 & 的字符作为参数值 let pattern = /([^?&=]+)=([^&]+)/g; let params = {}; // match用于存储正则匹配的结果 let match; // while 循环和正则表达式 exec 方法来迭代匹配URL中的参数 while ((match = pattern.exec(url)) !== null) { // 在字符串url中循环匹配pattern,并对每个匹配项进行解码操作,将解码后的键和值分别存储在key和value变量中 let key = decodeURIComponent(match[1]); let value = decodeURIComponent(match[2]); if (params[key]) { if (Array.isArray(params[key])) { params[key].push(value); } else { params[key] = [params[key], value]; } } else { // 参数名在 params 对象中不存在,将该参数名和对应的值添加到 params 对象中 params[key] = value; } } if (!paramName) { // 没有传入参数名称, 返回含有所有参数的对象params return params; } else { if (params[paramName]) { return params[paramName]; } else { return ''; } } }