123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369 |
- import config from './config.js'
- function msg(title = '', param={}){
- if(!title){
- return;
- }
- const duration = param.duration || 1500;
- const mask = param.mask || false;
- const icon = param.icon || 'none';
-
- let options = {
- title,
- duration,
- mask,
- icon
- }
-
- if(param.type){
-
- }
- uni.showToast(options);
- }
- function date(format, timeStamp){
-
- let date = new Date(timeStamp * 1000),
- Y = date.getFullYear(),
- m = date.getMonth() + 1,
- d = date.getDate(),
- H = date.getHours(),
- i = date.getMinutes(),
- s = date.getSeconds();
-
- m = m < 10 ? '0' + m : m;
- d = d < 10 ? '0' + d : d;
- H = H < 10 ? '0' + H : H;
- i = i < 10 ? '0' + i : i;
- s = s < 10 ? '0' + s : s;
- return format.replace(/[YmdHis]/g, key=>{
- return {Y,m,d,H,i,s}[key];
- });
- }
- let timer, flag;
- function throttle(func, wait = 2000, immediate = true) {
- if (immediate) {
- if (!flag) {
- flag = true;
-
- typeof func === 'function' && func();
- timer = setTimeout(() => {
- flag = false;
- }, wait);
- }
- } else {
- if (!flag) {
- flag = true
-
- timer = setTimeout(() => {
- flag = false
- typeof func === 'function' && func();
- }, wait);
- }
-
- }
- }
- let timeout = null;
- function debounce(func, wait = 500, immediate = false) {
-
- if (timeout !== null) clearTimeout(timeout);
-
- if (immediate) {
- var callNow = !timeout;
- timeout = setTimeout(function() {
- timeout = null;
- }, wait);
- if (callNow) typeof func === 'function' && func();
- } else {
-
- timeout = setTimeout(function() {
- typeof func === 'function' && func();
- }, wait);
- }
- }
- function inAction(fn, that, timeout = 2000){
- if(that['in' + fn]){
- return true
- }
- that['in' + fn] = true;
- setTimeout(()=>{
- that['in' + fn] = false;
- }, timeout)
- return false;
- }
- const prePage = (num=1) => {
- let pages = getCurrentPages();
- let prePage = pages[pages.length -1- num];
-
-
- return prePage;
-
- return prePage.$vm;
- }
- function uploadImg(formData){
- return new Promise((resolve,reject)=>{
- uni.chooseImage({
- count:1,
- success(chooseImageRes){
-
- const tempFilePaths = chooseImageRes.tempFilePaths[0];
-
- const token = uni.getStorageSync('token');
- uni.showLoading({
- title: '请稍后..',
- mask: true,
- })
- uni.uploadFile({
- url:config.uploadImgUrl,
- filePath: tempFilePaths,
- name: 'file',
- formData:formData,
- header: {
- 'token':token,
- },
- success:(res)=>{
-
- let data = JSON.parse(res.data);
- if(!data || data.code !== 1 ){
- msg('上传失败');
- reject();
- return;
- }
-
-
- let fullurl = data.data.fullurl;
- resolve(fullurl);
- },
- fail:(err)=>{
- console.log('err--',err);
- msg('上传失败');
- reject();
- },
- complete:()=> {
- uni.hideLoading();
- },
- })
- },
- fail(err){
-
- reject(err)
- }
- })
- })
- }
- function uploadVideo(formData={}){
- return new Promise((resolve,reject)=>{
- uni.chooseVideo({
- sourceType: ['camera', 'album'],
- success(chooseVideoRes){
-
- const tempFilePath = chooseVideoRes.tempFilePath;
-
- const token = uni.getStorageSync('token');
- uni.showLoading({
- title: '请稍后..',
- mask: true,
- })
- formData.act='video';
- uni.uploadFile({
- url:config.uploadVideoUrl,
- filePath: tempFilePath,
- name: 'file',
- formData:formData,
- header: {
- 'token':token,
- },
- success:(res)=>{
-
- let data = JSON.parse(res.data);
- if(!data || data.code !== 1 ){
- msg('上传失败');
- reject();
- return;
- }
-
- resolve(data.data.fullurl);
-
- },
- fail:(err)=>{
- console.log('err--',err);
- msg('上传失败');
- reject();
- },
- complete:()=> {
- uni.hideLoading();
- },
- })
- },
- fail(err){
-
- reject(err)
- }
- })
- })
- }
- function previewImg(urls,idx=0){
- uni.previewImage({
- current: urls[idx],
- urls: urls,
- indicator: "number"
- })
- }
- let hasOpenDeviceAuthorizeModal = false;
- function checkDeviceAuthorize(scope,tipText) {
- if (hasOpenDeviceAuthorizeModal) {
- return
- }
- hasOpenDeviceAuthorizeModal = true
-
- return new Promise((resolve, reject) => {
- uni.getSetting().then((result) => {
-
-
- let authSetting = result[1]['authSetting'];
- if (authSetting[scope]) {
-
-
- resolve({hasScoped:true})
- hasOpenDeviceAuthorizeModal = false
- } else {
-
-
-
- uni.authorize({
- scope: scope,
- success: (res) => {
-
- resolve({initAuth:true})
- hasOpenDeviceAuthorizeModal = false
- },
- fail: (err) => {
-
- openConfirm(scope,tipText,(isTrue)=>{
- if(isTrue){
-
- reject(new Error('popAuth:true but onShow ok'));
- hasOpenDeviceAuthorizeModal = false
- }else{
- reject(new Error('authorize fail'))
- hasOpenDeviceAuthorizeModal = false
- }
-
- })
- }
- })
- }
- })
- })
- };
- function openConfirm(scope,tipText,callback) {
- return uni.showModal({
- content: tipText,
- confirmText: '确认',
- cancelText: '取消',
- success: (res) => {
-
- if (res.confirm) {
-
- uni.openSetting({
- success: (res) => {
-
- if(typeof callback == 'function' && res.authSetting[scope]==true){
- callback(true);
- }
- },
- fail:()=>{
- callback(false)
- }
- })
- } else {
-
- callback(false)
- }
- },
- })
- };
- const replaceDetail = (details = '') => {
-
- let newContent = details.replace(/<img[^>]*>/gi, function (match, capture) {
- match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
- match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
- match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
- return match;
- });
- newContent = newContent.replace(/<br[^>]*\/>/gi, '');
- newContent = newContent.replace(/<img/gi, '<img style="max-width:100%;height:auto;display:block;margin:0 auto;"');
- return newContent;
- }
- const handleStrLength=(num)=>{
- return String(num).length < 2 ? '0' + num : num;
- }
- const handleDate=(date)=>{
- let m = handleStrLength(date.getMonth() + 1);
- let d = handleStrLength(date.getDate());
-
-
-
- let dateStr = date.getFullYear() + "-" + m + "-" + d;
- return dateStr;
- }
- const handleDateTime=(date)=>{
- let m = handleStrLength(date.getMonth() + 1);
- let d = handleStrLength(date.getDate());
-
-
- let dateStr = date.getFullYear() + "-" + m + "-" + d + " " + h + ":" + mm;
-
- return dateStr;
- }
- export default {
- msg,
- date,
- throttle,
- debounce,
- inAction,
- prePage,
- uploadImg,
- uploadVideo,
- previewImg,
- checkDeviceAuthorize,
- replaceDetail,
- handleDate,
- handleDateTime
- }
|