import type {CmsArticle} from "~/api/cms/cmsArticle/model"; import {FILE_SERVER} from "~/config"; const route = useRoute(); /** * 判断是否为整数 * @param num */ export const isInteger = (num: any) => { return /^-?\d+$/.test(num); } /** * 判断是否是移动设备 */ export function isMobileDevice(): boolean { return (typeof window.orientation !== "undefined") || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); } /** * 获取当前语言版本 */ export const getLang = () => { const i18n = useI18n(); if(i18n.locale.value == 'zh'){ return 'zh_CN'; } return i18n.locale.value; } /** * 从spm提取参数 * param spm?=0.1.2.3.4.5.6.7 * @param index */ export const getIdBySpm = (index: number) => { if(route.query.spm){ const split = String(route.query.spm).split('.') return split[index]; } return undefined; } /** * 获取当前网址的Path部分 * 示例 http://websoft.top/article/123.html * getPath(1) 将返回 article * @param index */ export const getPath = (index?: number) => { const path = route.path; const i18n = useI18n(); if(i18n.locale.value == 'en' && index){ index = index + 1; } if(index){ const split = path.split('/'); return split[index]; } return path; } /** * 获取当前网址的ID部分 * 示例 /article/123.html * @return 123 */ export const paramsId = () => { let index; index = route.params.id; if(index){ try { index = index.toString().split('.')[0]; return Number(index); } catch (e) { return Number(index); } } return 0; } export const getNavIdByParamsId = (text: any) => { if(typeof text === 'number'){ return Number(text); } const index = text.toString().split('.')[0]; if(typeof index){ return Number(index); } return 0; } // 打开新窗口 export function openUrl(url: string) { window.open(url, '_blank') } /** * 当前网址 */ export function locationUrl ():string { return `${window.location}`; } /** * 导航跳转(推荐使用) * @param d 栏目数据 * @param path 手动指定path * @param spm 是否附加spm参数 * @return https://websoft.top/article/123.html?spm=0.1.2.3.4.5.6.7 */ export function navTo(d?: any, path?: string,spm?: boolean){ if(!path){ path = d?.path; } // 是否移动设备 // if(isMobileDevice()){ // path = '/m' + path; // } // 国际化配置 const i18n = useI18n(); if(i18n.locale.value){ if(i18n.locale.value == 'en'){ path = '/en' + path; } } // 首页 if(d?.model == 'index'){ return path; } // if(d?.model == 'links'){ // return openUrl(d?.path) // } // 是否附加spm参数 if(spm){ let uid = localStorage.getItem('UserId') || 0; let timestamp = ref(Date.now() / 1000); return `${path}?spm=${d?.tenantId||0}.0.${d?.parentId}.${d?.navigationId||0}.${uid}.${timestamp.value}` } return `${path}`; } /** * 详情页跳转 * @param d */ export function detail(d?: any) { // console.log(d.detail,'9999999') return navTo(d,`/${d?.detail}/${d?.articleId}.html`); } /** * 详情页跳转(手机版专用) * @param d */ export function mDetail(d?: any) { return navTo(d,`/${d?.detail}/${d?.articleId}.html`); } export function getViews(form: CmsArticle): number{ return Number(form?.actualViews) + Number(form?.virtualViews) } // 单点登录控制台 export function loginAdminByToken(): void { const user = useUser(); const token = localStorage.getItem('token'); const tid = user.value?.tenantId; openUrl(`https://${tid}.websoft.top/token-login?token=${token}`) } export function getTimeStamp(): number { return new Date().getTime(); } // 复制文本 export const copyText = (text: string) => { // 模拟 输入框 const cInput = document.createElement('input'); cInput.value = text; document.body.appendChild(cInput); cInput.select(); // 选取文本框内容 // 执行浏览器复制命令 // 复制命令会将当前选中的内容复制到剪切板中(这里就是创建的input标签) // Input要在正常的编辑状态下原生复制方法才会生效 ElMessage.success(`复制成功`); document.execCommand('copy'); // 复制成功后再将构造的标签 移除 document.body.removeChild(cInput); }; export const getImage = (text: any) => { // 是否包含字符串 if(text.indexOf('/upfile') > -1){ return FILE_SERVER + text; } return `${text}` }