Files
frontend-app/utils/index.js
T
2025-03-20 08:46:07 +08:00

278 lines
7.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import dayjs from 'dayjs';
import { PRIVACY_EN,PRIVACY_CN,USER_EN,USER_CN } from './config.js';
/**
* 创建随机字符串
* @param num
* @returns {string}
*/
export function randomString(num) {
const chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
let res = ''
for (let i = 0; i < num; i++) {
var id = Math.ceil(Math.random() * 35)
res += chars[id]
}
return res
}
export const tencentMapKey="S2DBZ-W6S6B-KRXUN-NHF2N-DE2U6-7UBBD";// 腾讯地图key
/**
* 转换时间格式
* @param date 时间格式
* @returns {string} HH:mm
*/
export function formatDate(date){
if(!date){
return "";
}
return dayjs(date).format("YYYY-MM-DD HH:mm:ss");
}
/**
* 转换时间格式
* @param date 时间格式
* @returns {string} HH:mm
*/
export function formatDate1(date){
if(!date){
return "";
}
const newDate = dayjs(date).format("HH:mm:ss");
return dayjs(date).format("HH:mm:ss");
}
/**
* 千米转换
* @param {Object} distanceInMeters
*/
export function formatDistance(distanceInMeters) {
if (distanceInMeters >= 1000) {
// 将距离从米转换为千米,并保留两位小数
const distanceInKilometers = (distanceInMeters / 1000).toFixed(2);
return `${distanceInKilometers}km`;
} else {
return `${distanceInMeters.toFixed(2)}m`;
}
}
export function findItemByCode(items, value) {
return items.find(item => item.value === value);
}
export function timestampToTime(timestamp) {
var date = new Date(timestamp); // 时间戳为毫秒级别
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hours = date.getHours();
var minutes = date.getMinutes();
var seconds = date.getSeconds();
// 补零操作
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
hours = hours < 10 ? '0' + hours : hours;
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}
export function getParameter(path,name) {
var url = path;
var params = new Object();
if (url.indexOf("?") != -1) {
const str = url.substr(1);
const pathUrl = str.split("?")[1];
const strs = pathUrl.split("&");
for (var i = 0; i < strs.length; i++) {
params[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
}
}
if(name){
return params[name];
}else{
return params;
}
}
export function addAmount(amount){
if(amount && amount > 0){
return "+"+amount;
}
return amount;
}
/**
* @param {Object} url
*/
export function GetWxMiniProgramUrlParam(url) {
let theRequest = {};
if (url.indexOf("#") != -1) {
const str = url.split("#")[1];
const strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
}
} else if (url.indexOf("?") != -1) {
const str = url.split("?")[1];
const strs = str.split("&");
for (let i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
}
}
return theRequest;
};
export function zhScenePath(scene){
const options = [];
for (var i = 0; i < scene.split('&').length;i++){
var arr = scene.split('&')[i].split('=');
options[arr[0]] = arr[1];
}
return options;
}
export function isNull(val){
if(val){
return val;
}
return "--";
}
// 保留四位小数
export function reservedDecimal(val,digit=4){
let result = val;
if(val){
result = parseInt(val,10).toFixed(digit)
}
return result;
}
/**
* 验证正负数
* @param {Object} str
*/
export function isPositiveNegativeOrZero(str) {
if(str){
const currentStr = parseInt(str);
return currentStr>0;
}
return str;
}
/**
* 获取当前语言
*/
export function getCurrentLanguage() {
let sysLanguage = uni.getLocale();
if(sysLanguage === "zh-Hans" || sysLanguage === "zh-Hant"){
sysLanguage = "zh_HK";
}
return sysLanguage;
}
/**
* 获取当前系统时间
*/
export function getCurrentSysLanguage(){
const systemLanguage = uni.getSystemInfoSync().language;
// 设置默认语言
let currentLanguage = 'zh_HK'; // 默认繁体
if (systemLanguage === 'en_US' || systemLanguage === 'en' || systemLanguage === 'ja') {
currentLanguage = 'en'; // 如果是英文系统,则设置默认英文
}else if (systemLanguage === 'zh_TW' || systemLanguage === 'zh_HK' || systemLanguage === 'zh_CN') {
currentLanguage = 'zh_HK'; // 繁体
}
return currentLanguage;
}
export function getBrowserUrl(type){
const locale = uni.getLocale();
let url = '';
if(type === "privacy" && (locale==="zh-Hans" || locale==="zh-Hant" || locale==="zh_CN" || locale==="zh_TW" || locale==="zh_HK")){
url= PRIVACY_CN;
}else if(type === "privacy" && (locale==="en" || locale==="ja")){
url= PRIVACY_EN;
}else if(type === "user" && (locale==="zh-Hans" || locale==="zh-Hant" || locale==="zh_CN" || locale==="zh_TW" || locale==="zh_HK")){
url= USER_CN;
}else if(type === "user" && (locale==="en" || locale==="ja")){
url= USER_EN;
}
return url;
}
/**
* 获取当前系统
*/
export function getCurrentSysPlatform(){
return uni.getSystemInfoSync().platform;
// return "ios";
}
/**
* 拷贝
* @param {Object} val
*/
export function copyData(val){
const then = this;
uni.setClipboardData({
data: val,
});
};
export function addChildNode(parentId, subNodes, treeOption) {
for (let i = 0; i < treeOption.length; i++) {
if (treeOption[i].parentId === parentId) {
// 将子节点插入到父节点的children数组中
treeOption[i].children = subNodes;
return; // 找到后直接返回,避免重复插入(假设树中不会有重复的parentId和value)
}
// 如果当前节点有children,则递归查找(但在这个特定情况下,我们不需要递归,因为parentId是直接的)
// 不过,为了通用性,这里还是保留递归的逻辑(虽然在这个例子中不会用到)
if (treeOption[i].children) {
addChildNode(parentId, subNodes, treeOption[i].children);
}
}
// 注意:在这个特定例子中,我们不需要上面的递归调用,因为parentId直接指向了树的一层节点
// 但如果你有一个更复杂的树结构,并且子节点可能需要插入到更深层次的节点中,那么递归调用就是必要的
}
/**
* 从新组装地址
* @param addressObj 需要组装的地址
*/
export function assembleAddress(addressObj){
const resutlObj={};
if(!addressObj || Object.keys(addressObj).length === 0){
return resutlObj;
}
const ids=[];
if(addressObj.countryId){
ids.push(addressObj.countryId)
}
if(addressObj.provinceId){
ids.push(addressObj.provinceId)
}
if(addressObj.cityId){
ids.push(addressObj.cityId)
}
if(addressObj.areaId){
ids.push(addressObj.areaId)
}
const names=[];
if(addressObj.countryName){
names.push(addressObj.countryName);
}
if(addressObj.provinceName){
names.push(addressObj.provinceName);
}
if(addressObj.cityName){
names.push(addressObj.cityName);
}
if(addressObj.areaName){
names.push(addressObj.areaName);
}
resutlObj.ids=ids.join(",");
resutlObj.names=names.join(" ");
return resutlObj;
}