123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- const { default: api } = require("../js/api")
- const formatTime = date => {
- const year = date.getFullYear()
- const month = date.getMonth() + 1
- const day = date.getDate()
- const hour = date.getHours()
- const minute = date.getMinutes()
- const second = date.getSeconds()
- return `${[year, month, day].map(formatNumber).join('/')} ${[hour, minute, second].map(formatNumber).join(':')}`
- }
- const formatDateNotSecond = isoString => {
- if (isoString == undefined) return '';
- const date = new Date(isoString);
- const year = date.getFullYear();
- const month = String(date.getMonth() + 1).padStart(2, '0'); // Months are zero-based
- const day = String(date.getDate()).padStart(2, '0');
- const hours = String(date.getHours()).padStart(2, '0');
- const minutes = String(date.getMinutes()).padStart(2, '0');
- return `${year}-${month}-${day} ${hours}:${minutes}`;
- }
- const formatNumber = n => {
- n = n.toString()
- return n[1] ? n : `0${n}`
- }
- const formatPhone = phone => {
- // 检查手机号是否有效
- if (!phone || phone.length !== 11) {
- return phone;
- }
- // 获取手机号前3位和后4位
- const start = phone.substring(0, 3);
- const end = phone.substring(7);
- // 将中间4位数字替换为星号
- const hidden = '****';
- // 返回处理后的手机号
- return start + hidden + end;
- }
- // 格式化小数点数字
- const formatDiNumber = number => {
- var numberStr = number.toString()
- if(!numberStr.includes(".")){
- numberStr += ".00"
- }
- return numberStr
- }
- //根据经纬度计算距离
- const haversine = (lat1, lon1, lat2, lon2) => {
- const R = 6371; // 地球半径,单位:千米
- const toRadians = (degrees) => degrees * (Math.PI / 180); // 将度数转换为弧度
- // 将经纬度转换为弧度
- const phi1 = toRadians(lat1);
- const phi2 = toRadians(lat2);
- const deltaPhi = toRadians(lat2 - lat1);
- const deltaLambda = toRadians(lon2 - lon1);
- // Haversine公式
- const a = Math.sin(deltaPhi / 2) ** 2 + Math.cos(phi1) * Math.cos(phi2) * Math.sin(deltaLambda / 2) ** 2;
- const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
- // 计算距离
- const distance = R * c; // 单位:千米
- return distance * 1000; // 转换为米
- }
- function subAndsendMessage(id,type) {
- return new Promise((resolve,reject)=>{
- wx.requestSubscribeMessage({
- tmplIds: ['V0tl-4n-5hwNZc4SrEttvrmawAyM-SB0pQWZNwp54Ks'], // 最多支持3条
- success(res) {
- sendMessage(id,type,resolve,reject)
- // 'accept'表示用户同意订阅该条id对应的模板消息
- if (res['V0tl-4n-5hwNZc4SrEttvrmawAyM-SB0pQWZNwp54Ks'] === 'accept') {
- // 用户同意订阅,调用云函数或服务器接口发送订阅消息
- // wx.cloud.callFunction({
- // name: 'sendSubscribeMessage',
- // data: {
- // templateId: '配置好的模板ID',
- // openid: 'o8pFb5cWH1KkBDvGls2X7yMiFkGA',
- // data: {
- // thing1: {
- // value: '活动名称'
- // },
- // // 其他参数...
- // }
- // },
- // success(res) {
- // console.log('订阅消息发送成功', res)
- // },
- // fail(err) {
- // console.error('订阅消息发送失败', err)
- // }
- // })
-
- }
- },
- fail(err) {
- sendMessage(id,type,resolve,reject)
- }
- })
- })
-
- }
- function sendMessage(id,type,resolve,reject) {
- const message = {
- trxid:id,
- orderType:type
- }
- api.request_sendMessage(message).then(res => {
- console.log("发送消息模板结果",res)
- resolve()
- }).catch(err => {
- console.log("发送消息模板失败",err)
- reject()
- })
- }
- module.exports = {
- formatTime,
- formatDateNotSecond,
- formatPhone,
- formatDiNumber,
- haversine,
- subAndsendMessage
- }
|