import { getJSONData, setJSONData, removeJSONData, setStrData, getStrData } from '@/utils/auth' import constant from '@/utils/constant' /** * 判断某用户是否有某权益 * @param {Object} code 权益code */ export function hasRights(code) { //取用户当前身份 let userType = getStrData(constant.userTypeKey) let userRights = {} if (constant.bz == userType) { //博主 userRights = getJSONData(constant.userRightsKey)['bz'] } else { //通告主 userRights = getJSONData(constant.userRightsKey)['tgz'] } //默认无权限 let rtnData = false if (userRights.hasOwnProperty(code)) { rtnData = userRights[code] } return rtnData } /** * 切换用户当前身份 * @param {Object} value 身份值 */ export function changeUserType(value) { setStrData(constant.userTypeKey, value) } /** * 获取用户当前身份 * @param {Object} value 身份值 */ export function getUserType() { return getStrData(constant.userTypeKey) } /** * 显示消息提示框 * @param content 提示的标题 */ export function toast(content) { uni.showToast({ icon: 'none', title: content }) } /** * 显示模态弹窗 * @param content 提示的标题 */ export function showConfirm(content) { return new Promise((resolve, reject) => { uni.showModal({ title: '提示', content: content, cancelText: '取消', confirmText: '确定', success: function(res) { resolve(res) } }) }) } /** * 参数处理 * @param params 参数 */ export function tansParams(params) { let result = '' for (const propName of Object.keys(params)) { const value = params[propName] var part = encodeURIComponent(propName) + "=" if (value !== null && value !== "" && typeof(value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && value[key] !== "" && typeof(value[key]) !== 'undefined') { let params = propName + '[' + key + ']' var subPart = encodeURIComponent(params) + "=" result += subPart + encodeURIComponent(value[key]) + "&" } } } else { result += part + encodeURIComponent(value) + "&" } } } return result } /** * 数字单位转换 * @param {Object} num */ export function formatNumberWithUnits(num) { const units = ['', 'k', 'w', 'kw']; // 获取绝对值以处理负数 let absNum = Math.abs(num); // 处理小于1000的情况,直接返回原数字的字符串形式 if (absNum < 1000) { return num; } // 寻找合适的单位 let unitIndex = 0; if (absNum > 10000000) { absNum /= 10000000; unitIndex = 3; } else if (absNum > 10000) { absNum /= 10000; unitIndex = 2; } else if (absNum > 1000) { absNum /= 1000; unitIndex = 1; } // 格式化数字,并添加单位 const formattedNum = absNum.toFixed(2).replace(/\.?0+$/, ''); // 保留两位小数并去除末尾的零 return formattedNum + units[unitIndex]; } /** * 计算某个时间是几天、几小时之前 * @param {Object} time */ export function calculateTimeDifference(time) { // 将时间字符串转换为Date对象 const nowDate = new Date(); const lastDate = new Date(time); // 计算时间差(毫秒) const diffMs = Math.abs(nowDate.getTime() - lastDate.getTime()); // 将毫秒转换为小时 const diffHours = diffMs / (1000 * 60 * 60); // 计算完整的整天天数和剩余的小时数 const diffDays = Math.floor(diffHours / 24); const remainingHours = diffHours % 24; if (diffDays > 0) { return parseInt(diffDays) + "天前" } else { return parseInt(remainingHours) + "小时前" } }