| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- // #ifndef APP-NVUE
 
- // 计算版本
 
- export function compareVersion(v1, v2) {
 
- 	v1 = v1.split('.')
 
- 	v2 = v2.split('.')
 
- 	const len = Math.max(v1.length, v2.length)
 
- 	while (v1.length < len) {
 
- 		v1.push('0')
 
- 	}
 
- 	while (v2.length < len) {
 
- 		v2.push('0')
 
- 	}
 
- 	for (let i = 0; i < len; i++) {
 
- 		const num1 = parseInt(v1[i], 10)
 
- 		const num2 = parseInt(v2[i], 10)
 
- 		if (num1 > num2) {
 
- 			return 1
 
- 		} else if (num1 < num2) {
 
- 			return -1
 
- 		}
 
- 	}
 
- 	return 0
 
- }
 
- const systemInfo = uni.getSystemInfoSync();
 
- function gte(version) {
 
- 	// 截止 2023-03-22 mac pc小程序不支持 canvas 2d
 
- 	console.log('uni', uni)
 
- 	let { SDKVersion, platform } = systemInfo;
 
- 	// #ifdef MP-ALIPAY
 
- 	SDKVersion = my.SDKVersion
 
- 	// #endif
 
- 	// #ifdef MP-WEIXIN
 
- 	return platform !== 'mac' && compareVersion(SDKVersion, version) >= 0;
 
- 	// #endif
 
- 	return compareVersion(SDKVersion, version) >= 0;
 
- }
 
- export function canIUseCanvas2d() {
 
- 	// #ifdef MP-WEIXIN
 
- 	return gte('2.9.0');
 
- 	// #endif
 
- 	// #ifdef MP-ALIPAY
 
- 	return gte('2.7.0');
 
- 	// #endif
 
- 	// #ifdef MP-TOUTIAO
 
- 	return gte('1.78.0');
 
- 	// #endif
 
- 	return false
 
- }
 
- export function wrapTouch(event) {
 
- 	for (let i = 0; i < event.touches.length; ++i) {
 
- 		const touch = event.touches[i];
 
- 		touch.offsetX = touch.x;
 
- 		touch.offsetY = touch.y;
 
- 	}
 
- 	return event;
 
- }
 
- export const devicePixelRatio = uni.getSystemInfoSync().pixelRatio
 
- // #endif
 
- // #ifdef APP-NVUE
 
- export function base64ToPath(base64) {
 
- 	return new Promise((resolve, reject) => {
 
- 		const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64) || [];
 
- 		const bitmap = new plus.nativeObj.Bitmap('bitmap' + Date.now())
 
- 		bitmap.loadBase64Data(base64, () => {
 
- 			if (!format) {
 
- 				reject(new Error('ERROR_BASE64SRC_PARSE'))
 
- 			}
 
- 			const time = new Date().getTime();
 
- 			const filePath = `_doc/uniapp_temp/${time}.${format}`
 
- 			bitmap.save(filePath, {},
 
- 				() => {
 
- 					bitmap.clear()
 
- 					resolve(filePath)
 
- 				},
 
- 				(error) => {
 
- 					bitmap.clear()
 
- 					console.error(`${JSON.stringify(error)}`)
 
- 					reject(error)
 
- 				})
 
- 		}, (error) => {
 
- 			bitmap.clear()
 
- 			console.error(`${JSON.stringify(error)}`)
 
- 			reject(error)
 
- 		})
 
- 	})
 
- }
 
- // #endif
 
- export function sleep(time) {
 
- 	return new Promise((resolve) => {
 
- 		setTimeout(() => {
 
- 			resolve(true)
 
- 		}, time)
 
- 	})
 
- }
 
- export function getRect(selector, options = {}) {
 
- 	const typeDefault = 'boundingClientRect'
 
- 	const { context, type = typeDefault} = options
 
- 	return new Promise((resolve, reject) => {
 
- 		const dom = uni.createSelectorQuery().in(context).select(selector);
 
- 		const result = (rect) => {
 
- 			if(rect) {
 
- 				 resolve(rect)
 
- 			} else {
 
- 				reject()
 
- 			}
 
- 		}
 
- 		if(type == typeDefault) {
 
- 			dom[type](result).exec()
 
- 		} else {
 
- 			dom[type]({
 
- 				node: true,
 
- 				size: true,
 
- 				rect: true
 
- 			}, result).exec()
 
- 		}
 
- 	});
 
- };
 
 
  |