123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234 |
- // #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,//向地址连接追加参数
- }
|