import { useUserStore } from '@/stores/user'; import { message } from 'ant-design-vue'; /** * 去除空格\b\s等 * @param str * @constructor */ export function Trim(str: string) { return str.replace(/[\n\b\t\s+]/g, ''); } /** * 表达式短语的替换 * @param expStr 表达式 * @param mainData 替换的JSON格式 * @constructor */ export function DealExp(expStr: string, mainData: Record | null = {}) { const userStore = useUserStore(); expStr = expStr.replace(/~/g, "'"); if (typeof expStr !== 'string') return ''; if (expStr.includes('@') == false) return expStr; //替换表达式常用的用户信息 expStr = expStr.replace(/@WebUser.No/g, userStore.webUser.No); expStr = expStr.replace(/@WebUser.Name/g, userStore.webUser.Name); //expStr = expStr.replace("@WebUser.FK_DeptNameOfFull", WebUser.FK_DeptNameOfFull); expStr = expStr.replace(/@WebUser.FK_DeptName/g, userStore.webUser.FK_DeptName); expStr = expStr.replace(/@WebUser.FK_Dept/g, userStore.webUser.FK_Dept); expStr = expStr.replace(/@WebUser.OrgNo/g, userStore.webUser.OrgNo); expStr = expStr.replace(/@WebUser.OrgName/g, userStore.webUser.OrgName); if (expStr.includes('@') == false) return expStr; if (mainData == null) { if (expStr.includes('@') == true) { message.error(expStr + '含有@未被替换'); return expStr; } return expStr; } for (const key in mainData) { expStr = expStr.replace(new RegExp('@' + key, 'g'), mainData[key]); if (expStr.includes('@') == false) return expStr; } if (expStr.includes('@') == true) { message.error(expStr + '含有@未被替换'); return expStr; } return expStr; } /** * 获取数据形式为@Name=张三@Age=24@XingBie=男,根据key值获取对应的数据 * @param atPara * @param key * @constructor */ export function GetPara(atPara: string, key: string) { const reg = new RegExp('(^|@)' + key + '=([^@]*)(@|$)'); const results = atPara.match(reg); if (results != null) { return unescape(results[2]); } return ''; } /** * JSON转params的url字符串 * @param data * @constructor */ export function GetParamsUrl(data: Record) { const params = JSON.parse(JSON.stringify(data)); const keys = Object.keys(params); const pArr: Array = []; for (const key of keys) { let val = params[key]; if (val.includes(') { const obj: { [propName: string]: any } = {}; const args = data.split('?'); if (args.length < 2 || !args[1].trim()) { return {}; } args[1].split('&').forEach((arg: string) => { const [key, val] = arg.split('='); obj[key] = val; }); return obj; } export function dealClassId(classID: string, targetFilePrefix: string) { if (classID.startsWith('/src') && classID.endsWith('.ts')) { const startPosition = classID.lastIndexOf(targetFilePrefix); const endPosition = classID.indexOf('.ts'); classID = classID.substring(startPosition + 1, endPosition); } return classID; } /** * 判断是否是移动端打开 * @constructor */ export function IsMobile() { const info = navigator.userAgent; const agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPod', 'iPad']; for (let i = 0; i < agents.length; i++) { if (info.indexOf(agents[i]) >= 0) return true; } return false; }