1
0
Code Issues Pull Requests Packages Projects Releases Wiki Activity GitHub Gitee

通过微信开发者工具 商城模板 创建新小程序

This commit is contained in:
2023-03-06 23:52:24 +08:00
parent ada464a8cc
commit c21ff901d5
393 changed files with 52952 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
import { areaData } from '../config/index';
const addressParse = (provinceName, cityName, countryName) => {
return new Promise((resolve, reject) => {
try {
const province = areaData.find((v) => v.label === provinceName);
const { value: provinceCode } = province;
const city = province.children.find((v) => v.label === cityName);
const { value: cityCode } = city;
const country = city.children.find((v) => v.label === countryName);
const { value: districtCode } = country;
resolve({
provinceCode,
cityCode,
districtCode,
});
} catch (error) {
reject('地址解析失败');
}
});
};
module.exports = {
addressParse,
};

View File

@@ -0,0 +1,45 @@
const getPermission = ({ code, name }) => {
return new Promise((resolve, reject) => {
wx.getSetting({
success: (res) => {
if (res.authSetting[code] === false) {
wx.showModal({
title: `获取${name}失败`,
content: `获取${name}失败,请在【右上角】-小程序【设置】项中,将【${name}】开启。`,
confirmText: '去设置',
confirmColor: '#FA550F',
cancelColor: '取消',
success(res) {
if (res.confirm) {
wx.openSetting({
success(settinRes) {
if (settinRes.authSetting[code] === true) {
resolve();
} else {
console.warn('用户未打开权限', name, code);
reject();
}
},
});
} else {
reject();
}
},
fail() {
reject();
},
});
} else {
resolve();
}
},
fail() {
reject();
},
});
});
};
module.exports = {
getPermission,
};

View File

@@ -0,0 +1,51 @@
/**
* 随机打散字符串
* @param {number} n 长度
* @param {string} str 字符串
* @returns
*/
function generateMixed(n, str) {
var res = '';
for (var i = 0; i < n; i++) {
var id = Math.ceil(Math.random() * 35);
res += str[id];
}
return res;
}
/**
* 生成随机数
* @param {number} min 最小值
* @param {number} max 最大值
* @returns
*/
function getRandomNum(min, max) {
var range = max - min;
var rand = Math.random();
return min + Math.round(rand * range);
}
/**
* 生成随机IP
* @returns
*/
function mockIp() {
return `10.${getRandomNum(1, 254)}.${getRandomNum(1, 254)}.${getRandomNum(
1,
254,
)}`;
}
function mockReqId() {
return `${getRandomNum(100000, 999999)}.${new Date().valueOf()}${getRandomNum(
1000,
9999,
)}.${getRandomNum(10000000, 99999999)}`;
}
module.exports = {
generateMixed,
mockIp,
mockReqId,
getRandomNum,
};

133
mini-program/utils/util.js Normal file
View File

@@ -0,0 +1,133 @@
import dayjs from 'dayjs';
const formatTime = (date, template) => dayjs(date).format(template);
/**
* 格式化价格数额为字符串
* 可对小数部分进行填充,默认不填充
* @param price 价格数额,以分为单位!
* @param fill 是否填充小数部分 0-不填充 1-填充第一位小数 2-填充两位小数
*/
function priceFormat(price, fill = 0) {
if (isNaN(price) || price === null || price === Infinity) {
return price;
}
let priceFormatValue = Math.round(parseFloat(`${price}`) * 10 ** 8) / 10 ** 8; // 恢复精度丢失
priceFormatValue = `${Math.ceil(priceFormatValue) / 100}`; // 向上取整,单位转换为元,转换为字符串
if (fill > 0) {
// 补充小数位数
if (priceFormatValue.indexOf('.') === -1) {
priceFormatValue = `${priceFormatValue}.`;
}
const n = fill - priceFormatValue.split('.')[1]?.length;
for (let i = 0; i < n; i++) {
priceFormatValue = `${priceFormatValue}0`;
}
}
return priceFormatValue;
}
/**
* 获取cdn裁剪后链接
*
* @param {string} url 基础链接
* @param {number} width 宽度单位px
* @param {number} [height] 可选高度不填时与width同值
*/
const cosThumb = (url, width, height = width) => {
if (url.indexOf('?') > -1) {
return url;
}
if (url.indexOf('http://') === 0) {
url = url.replace('http://', 'https://');
}
return `${url}?imageMogr2/thumbnail/${~~width}x${~~height}`;
};
const get = (source, paths, defaultValue) => {
if (typeof paths === 'string') {
paths = paths
.replace(/\[/g, '.')
.replace(/\]/g, '')
.split('.')
.filter(Boolean);
}
const { length } = paths;
let index = 0;
while (source != null && index < length) {
source = source[paths[index++]];
}
return source === undefined || index === 0 ? defaultValue : source;
};
let systemWidth = 0;
/** 获取系统宽度,为了减少启动消耗所以在函数里边做初始化 */
export const loadSystemWidth = () => {
if (systemWidth) {
return systemWidth;
}
try {
({ screenWidth: systemWidth, pixelRatio } = wx.getSystemInfoSync());
} catch (e) {
systemWidth = 0;
}
return systemWidth;
};
/**
* 转换rpx为px
*
* @description
* 什么时候用?
* - 布局(width: 172rpx)已经写好, 某些组件只接受px作为style或者prop指定
*
*/
const rpx2px = (rpx, round = false) => {
loadSystemWidth();
// px / systemWidth = rpx / 750
const result = (rpx * systemWidth) / 750;
if (round) {
return Math.floor(result);
}
return result;
};
/**
* 手机号码*加密函数
* @param {string} phone 电话号
* @returns
*/
const phoneEncryption = (phone) => {
return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
};
// 内置手机号正则字符串
const innerPhoneReg =
'^1(?:3\\d|4[4-9]|5[0-35-9]|6[67]|7[0-8]|8\\d|9\\d)\\d{8}$';
/**
* 手机号正则校验
* @param phone 手机号
* @param phoneReg 正则字符串
* @returns true - 校验通过 false - 校验失败
*/
const phoneRegCheck = (phone) => {
const phoneRegExp = new RegExp(innerPhoneReg);
return phoneRegExp.test(phone);
};
module.exports = {
formatTime,
priceFormat,
cosThumb,
get,
rpx2px,
phoneEncryption,
phoneRegCheck,
};