You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
1.7 KiB
JavaScript

export function formatDate(date, fmt) {
const o = {
'M+': date.getMonth() + 1, // 月份
'd+': date.getDate(), // 日
'h+': date.getHours(), // 小时
'm+': date.getMinutes(), // 分
's+': date.getSeconds(), // 秒
S: date.getMilliseconds() // 毫秒
};
if (/(y+)/.test(fmt)) {
// eslint-disable-next-line no-param-reassign
fmt = fmt.replace(RegExp.$1, `${date.getFullYear()}`.substr(4 - RegExp.$1.length));
}
for (const k in o) {
if (new RegExp(`(${k})`).test(fmt)) {
// eslint-disable-next-line no-param-reassign
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : `00${o[k]}`.substr(`${o[k]}`.length));
}
}
return fmt;
}
export function copyText(text) {
uni.setClipboardData({
data: text,
success: () => {
uni.showToast({
title: '复制成功',
icon: 'none'
});
},
fail: (err) => {
uni.showToast({
title: '复制失败',
icon: 'none'
});
}
});
};
export function textToSpeech(text, options = {}) {
return new Promise(async (resolve, reject) => {
const {
token = '24.1c8cc30b5f7be445723b6d4b19a36152.2592000.1765094496.282335-120706844',
tex = text,
cuid = 'uni-app-demo',
ctp = 1,
lan = 'zh',
spd = 5,
pit = 5,
vol = 5,
per = 0
} = options
const url = 'https://tsn.baidu.com/text2audio'
const params = {
tex: encodeURIComponent(tex),
cuid,
ctp,
lan,
spd,
pit,
vol,
per,
tok: token
}
// 构建查询字符串
const queryString = Object.keys(params).map(key => {
return `${key}=${params[key]}`
}).join('&');
const platform = uni.getSystemInfoSync().uniPlatform;
const result = await uni.downloadFile({
url: `${url}?${queryString}`
});
resolve(result.tempFilePath);
})
}