import { listDictionaryData } from '@/api/system/dictionary-data'; import { ref } from 'vue'; import { pageProject } from '@/api/oa/project'; // import { getJson } from '@/api/json'; import { APP_SECRET, FILE_SERVER } from '@/config/setting'; import { useUserStore } from '@/store/modules/user'; import CryptoJS from 'crypto-js'; // 生成编号 export function createCode() : string { const data = new Date(); const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}`; return code.slice(0); } // 生成商户编号 export function createMerchantCode() : string { const data = new Date(); const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getSeconds()}`; return code.slice(3); } // 生成订单编号 export function createOrderNo() : string { const data = new Date(); const code = `${data.getFullYear()}${data.getMonth()}${data.getDate()}${data.getHours()}${data.getMilliseconds()}${random( 8000, 12000 )}`; return code.slice(0); } /** * @description 取一个区间数 * @param {Number} min 最小值 * @param {Number} max 最大值 */ export function random(min : number, max : number) { if (min >= 0 && max > 0 && max >= min) { const gab = max - min + 1 return Math.floor(Math.random() * gab + min) } return 0 } export const getTabBarLinks = () => { const tabBarLinks = [ 'pages/index/index', 'pages/zone/zone', 'pages/love/love', 'pages/notice/notice', 'pages/user/user' ] return tabBarLinks } /** * 跳转到指定页面url * 支持tabBar页面 * @param {string} url 页面路径 * @param {object} query 页面参数 * @param {string} modo 跳转类型(默认navigateTo) */ export const navTo = (url : string, query = {}, modo = 'navigateTo') => { if (!url || url.length == 0) { return false } // 原生导航条 getTabBarLinks().map(d => { if (d == 'url') { uni.switchTab({ url: `/${url}` }) return true } }) // 生成query参数 const queryStr = !util.isEmpty(query) ? '?' + util.urlEncode(query) : '' // 普通页面, 使用navigateTo modo === 'navigateTo' && uni.navigateTo({ url: `/${url}${queryStr}` }) // 特殊指定, 使用redirectTo modo === 'redirectTo' && uni.redirectTo({ url: `/${url}${queryStr}` }) return true } /** * 打开链接 */ export const openUrl = (item : any) => { if (item.target == 'uni.navigateTo') { return uni.navigateTo({ url: item.path }) } if (item.target == 'uni.switchTab') { return uni.switchTab({ url: item.path }) } if (item.target == 'uni.redirectTo') { return uni.redirectTo({ url: item.path }) } if (item.target == 'uni.reLaunch') { return uni.reLaunch({ url: item.path }) } } // 手机号脱敏 export function getMobile(tel : string) { const reg = /^(\d{3})\d{4}(\d{4})$/; return tel.replace(reg, '$1****$2'); } // 复制文本 export const copyText = (text : string) => { // 模拟 输入框 const cInput = document.createElement('input'); cInput.value = text; document.body.appendChild(cInput); cInput.select(); // 选取文本框内容 // 执行浏览器复制命令 // 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签) // Input要在正常的编辑状态下原生复制方法才会生效 document.execCommand('copy'); // 复制成功后再将构造的标签 移除 document.body.removeChild(cInput); }; /** * 获取字典数据作为下拉选项数据 * @param dictCode */ // export const getDictionaryOptions = (dictCode : any) => { // const dictOptions = ref([]); // // const storageData = localStorage.getItem('__' + dictCode + '__'); // listDictionaryData({ // dictCode // }) // .then((list) => { // // 获取远程字典数据 // if (list.length > 0) { // dictOptions.value = list.map((d) => { // return { // value: d.dictDataCode, // label: d.dictDataName, // text: d.dictDataName, // comments: d.comments // }; // }); // } else { // // 未定义则取默认的json数据 // dictOptions.value = getJson(dictCode); // } // }) // .catch((e) => { // // message.error(e.message); // }); // return dictOptions; // }; // 下拉选择项目 export const selectProject = (text : any) => { const data = ref([]); pageProject({ projectName: text }).then((result) => { data.value = result?.list.map((d) => { return { value: d.projectId, label: d.projectName, text: d.projectName }; }); }); return data; }; // 判断是否为图片 /* * @param: fileName - 文件名称 */ export const isImage = (fileName : string) => { // 后缀获取 let suffix = ''; try { const flieArr = fileName.split('.'); suffix = flieArr[flieArr.length - 1]; } catch (err) { suffix = ''; } const imgList = ['png', 'jpg', 'jpeg', 'bmp', 'gif']; return imgList.some((item) => { return item == suffix; }); }; export const getWeek = (text : string | number) => { const week = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]; return week[text]; }; /** * 获取场地预定的key * 组合数据:日期+时间段+场馆id+场地id */ export const getKey = (text: string) => { text = text.replaceAll('-', ''); text = text.replaceAll(':', ''); text = text.replaceAll(' ', ''); return text; } /** * 文件大小转换 * @param text */ export const getFileSize = (text : any) => { if (text < 1024) { return text + 'B'; } else if (text < 1024 * 1024) { return (text / 1024).toFixed(1) + 'KB'; } else if (text < 1024 * 1024 * 1024) { return (text / 1024 / 1024).toFixed(1) + 'M'; } else { return (text / 1024 / 1024 / 1024).toFixed(1) + 'G'; } }; /* 原图转缩列图 */ export const thumbnail = (url : string) => { if (url.indexOf('/thumbnail') < 0) { return url.replace(FILE_SERVER, FILE_SERVER + '/thumbnail'); } return url; }; /* 缩列转图原图 */ export const original = (url : string) => { if (url.indexOf('/thumbnail') == 0) { return url.replace('/thumbnail', ''); } return url; }; export const getCompanyInfo = () => { const user = useUserStore(); if (user.info?.companyInfo) { return user.info?.companyInfo; } return null; }; export const getVersion = () => { const companyInfo = getCompanyInfo(); if (companyInfo?.version) { return companyInfo?.version; } return null; }; // AES加密 export const encrypt = (text : any) => { return CryptoJS.AES.encrypt(text, APP_SECRET).toString(); }; // AES解密 export const decrypt = (encrypt : any) => { CryptoJS.AES.decrypt(encrypt, APP_SECRET); const bytes = CryptoJS.AES.decrypt(encrypt, APP_SECRET); return bytes.toString(CryptoJS.enc.Utf8); };