235 lines
5.0 KiB
JavaScript
235 lines
5.0 KiB
JavaScript
|
||
// #ifdef H5
|
||
var clipboardJS = require('./clipboardJS');
|
||
|
||
// #endif
|
||
|
||
/**
|
||
* 预览图片。
|
||
@param {Object} url 必填 当前预览的图片链接。
|
||
@param {Object} list 可以是url数组,也可以是对象,数据比如:["http:url"] or [{url:"https:url",...}]
|
||
@param {Object} rangKey 如果list是对象数组,需要提供url字段。
|
||
*/
|
||
import { previewImg } from "./preview.js"
|
||
|
||
/**
|
||
* 数据分组
|
||
* @param {Array} oArr - 原数组列表
|
||
* @param {Number} length - 单个数组长度
|
||
* @return {Array} arr - 分组后的新数组
|
||
*/
|
||
function splitData(oArr = [], length = 1) {
|
||
let arr = [];
|
||
let minArr = [];
|
||
oArr.forEach(c => {
|
||
if (minArr.length === length) {
|
||
minArr = [];
|
||
}
|
||
if (minArr.length === 0) {
|
||
arr.push(minArr);
|
||
}
|
||
minArr.push(c);
|
||
});
|
||
|
||
return arr;
|
||
}
|
||
|
||
/**
|
||
* 剩余时间格式化
|
||
* @param {Number} t - 剩余多少秒
|
||
* @return {Object} format - 格式后的天时分秒对象
|
||
*/
|
||
function timeMuch(t) {
|
||
let format = {
|
||
d: '00',
|
||
h: '00',
|
||
m: '00',
|
||
s: '00'
|
||
};
|
||
if (t > 0) {
|
||
let d = Math.floor(t / 86400);
|
||
let h = Math.floor((t / 3600) % 24);
|
||
let m = Math.floor((t / 60) % 60);
|
||
let s = Math.floor(t % 60);
|
||
format.d = d < 10 ? '0' + d : d;
|
||
format.h = h < 10 ? '0' + h : h;
|
||
format.m = m < 10 ? '0' + m : m;
|
||
format.s = s < 10 ? '0' + s : s;
|
||
}
|
||
return format;
|
||
}
|
||
/**
|
||
* 打电话
|
||
* @param {String<Number>} phoneNumber - 数字字符串
|
||
* @return {Promise}
|
||
*/
|
||
function callPhone(phoneNumber = '') {
|
||
let num = phoneNumber.toString()
|
||
return new Promise((rs,rj)=>{
|
||
uni.makePhoneCall({
|
||
phoneNumber: num,
|
||
success:()=> rs(),
|
||
fail:(err)=> rj(err)
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 调起客户端相机扫码。
|
||
* @param {Boolean} onlyFromCamera true 是否只允许相机扫码识别
|
||
* @param {Array<string>} scanType ['barCode', 'qrCode', 'datamatrix','datamatrix']
|
||
* @returns Promise 成功返回相关数据结构
|
||
*/
|
||
function scanCode(onlyFromCamera = true, scanType = ['barCode', 'qrCode', 'datamatrix','datamatrix']){
|
||
// #ifdef H5
|
||
return Promise.reject('不支持H5');
|
||
// #endif
|
||
return new Promise((rs,rj)=>{
|
||
uni.scanCode({
|
||
onlyFromCamera: onlyFromCamera,
|
||
scanType: scanType,
|
||
success: (res) => rs(res),
|
||
fail:(error)=>rj(error)
|
||
});
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 设置剪切板内容。
|
||
* @param {String} data
|
||
* @returns Promise true/false
|
||
*/
|
||
function setClipboardData(data){
|
||
|
||
// #ifndef H5
|
||
return new Promise((rs,rj)=>{
|
||
uni.setClipboardData({
|
||
data: data,
|
||
success:()=>rs(true),
|
||
fail:(error)=>rj(error)
|
||
});
|
||
})
|
||
// #endif
|
||
// #ifdef H5
|
||
return new Promise((rs,rj)=>{
|
||
let btn = document.createElement('button');
|
||
btn.style.display = 'none';
|
||
btn.className='hi-test-hi';
|
||
document.body.appendChild(btn);
|
||
clipboardJS = clipboardJS.bind(window);
|
||
let cb = new clipboardJS('.hi-test-hi', {
|
||
text: () => data
|
||
})
|
||
|
||
cb.on('success', function (res) {
|
||
rs(true);
|
||
})
|
||
cb.on('error', function (err) {
|
||
rj(err)
|
||
})
|
||
btn.click = btn.click.bind(window.document.body.querySelector('.hi-test-hi'))
|
||
btn.click()
|
||
})
|
||
// #endif
|
||
}
|
||
/**
|
||
* 获取剪切板内容
|
||
* @returns Promise 剪切板内容
|
||
*/
|
||
function getClipboardData(){
|
||
// #ifndef H5
|
||
return new Promise((rs, rj) => {
|
||
uni.getClipboardData({
|
||
success: (res) => rs(res.data),
|
||
fail: (error) => rj(error)
|
||
});
|
||
})
|
||
// #endif
|
||
// #ifdef H5
|
||
return Promise.reject('H5无法获取剪切板内容')
|
||
// #endif
|
||
}
|
||
|
||
/**
|
||
* 设置cookie数据
|
||
* @param {String} key 键值
|
||
* @param {String} data 值
|
||
* @returns Boolean
|
||
*/
|
||
function setCookie(key, data) {
|
||
try {
|
||
uni.setStorageSync(key, data);
|
||
return true;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
/**
|
||
* 删除一个本地cookie
|
||
* @param {String} key 键值
|
||
* @returns Boolean
|
||
*/
|
||
function delCookie(key) {
|
||
try {
|
||
uni.removeStorageSync(key);
|
||
return true;
|
||
} catch (e) {
|
||
return false;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取一个cookie数据
|
||
* 如果存入的是对象,返回的也是对象。如果是string返回的也是字符串。
|
||
* @param {String} key 键
|
||
* @returns json/string
|
||
*/
|
||
function getCookie(key) {
|
||
try {
|
||
const value = uni.getStorageSync(key);
|
||
try {
|
||
let val = JSON.parse(value)
|
||
return val;
|
||
} catch (e) {
|
||
return value;
|
||
}
|
||
} catch (e) {
|
||
return undefined;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 向地址连接追加参数。
|
||
* @param {string} uri 网址
|
||
* @param {string} key 字段
|
||
* @param {string} value 字段值
|
||
* @returns
|
||
*/
|
||
function httpUrlAddKey(uri, key, value) {
|
||
if (!value) {
|
||
return uri;
|
||
}
|
||
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
|
||
var separator = uri.indexOf("?") !== -1 ? "&" : "?";
|
||
if (uri.match(re)) {
|
||
return uri.replace(re, "$1" + key + "=" + value + "$2");
|
||
} else {
|
||
return uri + separator + key + "=" + value;
|
||
}
|
||
}
|
||
|
||
export default {
|
||
previewImg,//预览图片。
|
||
splitData,//数据分组
|
||
timeMuch,//剩余时间格式化
|
||
callPhone,//打电话
|
||
scanCode,//调起客户端相机扫码。
|
||
setClipboardData, //设置剪切板内容。
|
||
getClipboardData,//获取剪切板内容
|
||
setCookie,//设置cookie数据
|
||
delCookie,//删除一个本地cookie
|
||
getCookie,//获取一个cookie数据
|
||
httpUrlAddKey,//向地址连接追加参数
|
||
}
|