Files
taimed-international-app/utils/index.ts

132 lines
3.4 KiB
TypeScript

import { t } from '@/utils/i18n'
/**
* 页面跳转
* @param {string} path - 要跳转的页面路径
*/
export const onPageJump = (path: string) => {
uni.navigateTo({
url: path
})
}
/**
* 页面返回
*/
export const onPageBack = () => {
uni.navigateBack()
}
/**
* 拨打电话
* @param {string} phoneNumber - 要拨打的电话号码
* @param {string} title - 拨打电话提示的标题,默认值为空字符串
*/
export const makePhoneCall = (phoneNumber: string, title: string = t('global.call')) => {
uni.showModal({
title: title,
content: phoneNumber,
confirmText: t('common.confirm'),
cancelText: t('common.cancel'),
success: (res: any) => {
if (res.confirm) {
uni.makePhoneCall({
phoneNumber: phoneNumber,
success: () => {
console.log('拨打电话成功')
},
fail: (error: any) => {
console.error('拨打电话失败:', error)
}
})
}
}
})
}
/**
* 复制到剪贴板
* @param {string} content - 要复制的内容
* @param {string} title - 复制成功提示的标题,默认值为空字符串
*/
export const copyToClipboard = (content: string, title: string = '') => {
uni.setClipboardData({
data: content,
success: () => {
uni.showToast({
title: title + t('user.copySuccess'),
icon: 'none'
})
},
fail: (error: any) => {
console.error('复制失败:', error)
}
})
}
/**
* 计算最低价格
* @param {object} priceData - 价格数据对象,键为价格类型,值为价格
* @returns {object} - 包含最低价格的键值对,{ key: 价格类型, value: 最低价格 }
*/
export const calculateLowestPrice = (priceData: object): { key: string, value: number } => {
const validEntries = Object.entries(priceData)
.filter(([, value]) => typeof value === 'number' && value !== 0);
if (validEntries.length === 0) {
throw new Error('No valid non-zero price found in the data');
}
const [minKey, minValue] = validEntries.reduce((min, curr) =>
curr[1] < min[1] ? curr : min
);
return { key: minKey, value: minValue };
}
/**
* Parse the time to string
* @param {(Object|string|number)} time
* @param {string} cFormat
* @returns {string | null}
*/
export function parseTime(time: any, cFormat: string) {
if (arguments.length === 0 || !time) {
return null
}
const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
let date
if (typeof time === 'object') {
date = time
} else {
if ((typeof time === 'string')) {
if ((/^[0-9]+$/.test(time))) {
// support "1548221490638"
time = parseInt(time)
} else {
// support safari
time = time.replace(new RegExp(/-/gm), '/')
}
}
if ((typeof time === 'number') && (time.toString().length === 10)) {
time = time * 1000
}
date = new Date(time)
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
}
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
const value = formatObj[key as keyof typeof formatObj]
// Note: getDay() returns 0 on Sunday
if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value as number] }
return value.toString().padStart(2, '0')
})
return time_str
}