/* * @Author: liqiang * @Date: 2020-11-24 15:26:54 * @LastEditTime: 2021-03-05 13:49:12 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \ebtp-cloud-frontend\src\utils\CommonUtils.ts */ /** * 判断是否等于空 * @param value */ export function isEmpty(value: any) { return value === null || value === void 0 || value === ''; } /** * 判断不等于空 * @param value */ export function isNotEmpty(value: any) { return value !== null && value !== void 0 && value !== ''; } /** * proTable下拉选格式转换 * @param data 字典数据 */ export function proTableValueEnum(data: any) { let json = {}; if (isEmpty(data)) { return json; } for (const item of data) { json[item.code] = { text: item.dicName }; } return json; } /** * 字典返回值 * @param data 字典数据 */ export function returnDictVal(data: any, value: any) { let val = ''; if (isEmpty(data)) { return val; } for (const item of data) { item.code === value ? val = item.dicName : null; } return val; } /** * 获取url路径信息 * @param name */ export function getURLInformation(name: string) { let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); let r = window.location.search.substr(1).match(reg); return r !== null ? unescape(r[2]) : null; } /** * 获取url路径参数信息 * @param name * @returns */ export function getUrlParam(name: string) { var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象 var r = window.location.search.substr(1).match(reg); //匹配目标参数 if (r != null) return decodeURI(r[2]); //decodeURI参数内容。 return null; //返回参数值 } /** * 获取全部url路径信息 * @param name * @returns 包含全部参数的对象 */ export function getTotalURLInformation() { let query: any = location.search.substring(1) let params = {} query = query.split('&') query?.forEach((ele: any, index: any) => { let q = query[index].split('=') if (q.length == 2) { params[q[0]] = q[1] } }); return params } /** * 跨工程跳转 * @param url url多个参数 & => %26 */ export function JumpToOutside(url: string) { const uri = encodeURIComponent(url) window.location.href = (`http://10.242.31.158:8100/auth/oauth/authorize?response_type=code&client_id=KgPEkttG&redirect_uri=${uri}&mall3_token=${sessionStorage.getItem('Authorization')}`) } /** * proTable下拉选格式转换 增加筛选 仅展示inspect中数据 * @param data 字典数据 */ export function proTableValueEnumOther(data: any, inspect?: any) { let json = {}; if (isEmpty(data)) { return json; } for (const item of data) { if (inspect.toString().indexOf(item.code) >= 0) { json[item.code] = { text: item.dicName }; } } return json; } /** * 根据字典值返回字典名称数据 * @param dictData * @param value */ export function getDictName(dictData: any, value: any) { if (isEmpty(dictData)) { return ''; } for (const item of dictData) { if (value === item.code) { return item.dicName; } } return ''; } /** * 根据采购方式获取proTypeCode * @param bidMethodDict */ export function getProTypeCodeByBidMethodDict(bidMethodDict: any) { if (isEmpty(bidMethodDict)) { return ''; } let proTypeCode; switch (bidMethodDict) { case 'procurement_mode_1': case 'procurement_mode_2': proTypeCode = 'procurement_mode_1,procurement_mode_2'; break; case 'procurement_mode_3': proTypeCode = 'procurement_mode_3'; break; case 'procurement_mode_4': proTypeCode = 'procurement_mode_4'; break; case 'procurement_mode_5': case 'procurement_mode_6': proTypeCode = 'procurement_mode_5,procurement_mode_6'; break; case 'procurement_mode_7': proTypeCode = 'procurement_mode_7'; break; case 'procurement_mode_8': proTypeCode = 'procurement_mode_8'; break; case 'procurement_mode_9': proTypeCode = 'procurement_mode_8'; break; default: proTypeCode = ''; } return proTypeCode; } /** * 根据获取字典名 * @param data * @param value */ export function getDictNameByVal(data: any[], value: any) { if (isEmpty(data) || isEmpty(value)) { return ""; } for (const item of data) { if (item.code === String(value)) { return item.dicName; } } return ""; } /** * 获取当前路由相对路径 * @returns */ export function getUrlRelativePath() { let url = document.location.toString(); let arrUrl = url.split("//"); let start = arrUrl[1].indexOf("/"); let relUrl = arrUrl[1].substring(start); if (relUrl.indexOf("?") != -1) { relUrl = relUrl.split("?")[0]; } return relUrl; } /** * 获取目标字符第几次出现的位置 * @param str * @param cha * @param num * @returns */ function findString(str: string, cha: string, num: number) { let x = str.indexOf(cha); for (var i = 0; i < num; i++) { x = str.indexOf(cha, x + 1); } return x; } const projectTypeCodeMaps = new Map(); //招标 projectTypeCodeMaps.set("/Bid", ["procurement_mode_1", "procurement_mode_2"]); //比选 projectTypeCodeMaps.set("/Comparison", ["procurement_mode_3"]); //招募 projectTypeCodeMaps.set("/Recruit", ["procurement_mode_4"]); //谈判 projectTypeCodeMaps.set("/Negotiation", ["procurement_mode_5", "procurement_mode_6",]); //询价 projectTypeCodeMaps.set("/Inquiry", ["procurement_mode_7"]); /** * 获取ProTypeCode * @returns */ export function getProjectTypeCode() { let url = getUrlRelativePath(); for (const item of projectTypeCodeMaps.keys()) { if (url.indexOf(item) !== -1) { return projectTypeCodeMaps.get(item); } } return []; } /** * 根据传入采购方式返回该路径 * @param bidMethodDict * @returns */ export function getBidMethodDictTypeCode(bidMethodDict: string) { for (const [key, value] of projectTypeCodeMaps.entries()) { if (value.indexOf(bidMethodDict) !== -1) { return key; } } let url = getUrlRelativePath(), index = findString(url, "/", 1); url = url.substring(0, index); return url; } /** * 将阿拉伯数字翻译成中文的大写数字 * @param num * @returns */ export const numberToChinese = (num: any) => { var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"); var BB = new Array("", "十", "百", "仟", "萬", "億", "点", ""); var a = ("" + num).replace(/(^0*)/g, "").split("."), k = 0, re = ""; for (var i = a[0].length - 1; i >= 0; i--) { switch (k) { case 0: re = BB[7] + re; break; case 4: if (!new RegExp("0{4}//d{" + (a[0].length - i - 1) + "}$") .test(a[0])) re = BB[4] + re; break; case 8: re = BB[5] + re; BB[7] = BB[5]; k = 0; break; } if (k % 4 == 2 && a[0].charAt(i + 2) != '0' && a[0].charAt(i + 1) == '0') re = AA[0] + re; if (a[0].charAt(i) != '0') re = AA[a[0].charAt(i)] + BB[k % 4] + re; k++; } if (a.length > 1) // 加上小数部分(如果有小数部分) { re += BB[6]; for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)]; } if (re == '一十') re = "十"; if (re.match(/^一/) && re.length == 3) re = re.replace("一", ""); return re; } /** * 删除行首行尾的空白字符方法(包括空格、制表符、换页符等等) * @param str * @returns */ export const trim = (str: string | undefined) => { let _str = str?.replace(/(^\s*)|(\s*$)/g, ""); _str = _str?.replace(/[<>|\\/??::*""“”\s\r\n\t]/, ""); return _str; }