/** * 通用js方法封装处理 * Copyright (c) 2019 ruoyi */ // 判断当前用户网络 外网/内网 返回接口地址 export function judgmentNetworkReturnAddress() { /*判断是否是内网IP*/ // 获取当前页面url var curPageUrl = window.location.href; // console.log('curPageUrl-0 '+curPageUrl); var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀 curPageUrl =curPageUrl.replace(reg1,''); // console.log('curPageUrl-1 '+curPageUrl); var reg2 = /\:+/g;//替换冒号为一点 curPageUrl =curPageUrl.replace(reg2,'.'); // console.log('curPageUrl-2 '+curPageUrl); curPageUrl = curPageUrl.split('.');//通过一点来划分数组 // console.log(curPageUrl); var ipAddress = curPageUrl[0]+'.'+curPageUrl[1]+'.'+curPageUrl[2]+'.'+curPageUrl[3]; var isInnerIp = false;//默认给定IP不是内网IP var ipNum = getIpNum(ipAddress); /** * 私有IP:A类 10.0.0.0 -10.255.255.255 * B类 172.16.0.0 -172.31.255.255 * C类 192.168.0.0 -192.168.255.255 * D类 127.0.0.0 -127.255.255.255(环回地址) **/ var aBegin = getIpNum("10.0.0.0"); var aEnd = getIpNum("10.255.255.255"); var bBegin = getIpNum("172.16.0.0"); var bEnd = getIpNum("172.31.255.255"); var cBegin = getIpNum("192.168.0.0"); var cEnd = getIpNum("192.168.255.255"); var dBegin = getIpNum("127.0.0.0"); var dEnd = getIpNum("127.255.255.255"); isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || isInner(ipNum,dBegin,dEnd); // console.log('是否是内网:'+isInnerIp); return isInnerIp?process.env.VUE_APP_BASE_LOCAL_API:process.env.VUE_APP_BASE_API; /*获取IP数*/ function getIpNum(ipAddress) { var ip = ipAddress.split("."); var a = parseInt(ip[0]); var b = parseInt(ip[1]); var c = parseInt(ip[2]); var d = parseInt(ip[3]); var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d; return ipNum; } function isInner(userIp,begin,end){ return (userIp>=begin) && (userIp<=end); } } const baseURL = window.location.href.split('://')[0]+'://' + judgmentNetworkReturnAddress() // 日期格式化 export function parseTime(time, pattern) { if (arguments.length === 0 || !time) { return null } const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' let date if (typeof time === 'object') { date = time } else { if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { time = parseInt(time) } else if (typeof time === 'string') { time = time.replace(new RegExp(/-/gm), '/'); } if ((typeof time === 'number') && (time.toString().length === 10)) { time = time * 1000 } date = new Date(time) } const formatObj = { y: date.getFullYear(), m: date.getMonth() + 1, d: date.getDate(), h: date.getHours(), i: date.getMinutes(), s: date.getSeconds(), a: date.getDay() } const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { let value = formatObj[key] // Note: getDay() returns 0 on Sunday if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } if (result.length > 0 && value < 10) { value = '0' + value } return value || 0 }) return time_str } // 表单重置 export function resetForm(refName) { if (this.$refs[refName]) { this.$refs[refName].resetFields(); } } // 添加日期范围 export function addDateRange(params, dateRange, propName) { var search = params; search.params = {}; if (null != dateRange && '' != dateRange) { if (typeof (propName) === "undefined") { search.params["beginTime"] = dateRange[0]; search.params["endTime"] = dateRange[1]; } else { search.params["begin" + propName] = dateRange[0]; search.params["end" + propName] = dateRange[1]; } } return search; } // 回显数据字典 export function selectDictLabel(datas, value) { var actions = []; Object.keys(datas).some((key) => { if (datas[key].dictValue == ('' + value)) { actions.push(datas[key].dictLabel); return true; } }) return actions.join(''); } // 回显数据字典(字符串数组) export function selectDictLabels(datas, value, separator) { var actions = []; var currentSeparator = undefined === separator ? "," : separator; var temp = value.split(currentSeparator); Object.keys(value.split(currentSeparator)).some((val) => { Object.keys(datas).some((key) => { if (datas[key].dictValue == ('' + temp[val])) { actions.push(datas[key].dictLabel + currentSeparator); } }) }) return actions.join('').substring(0, actions.join('').length - 1); } // 通用下载方法 export function download(fileName) { window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true; } // 通用上传地址 export function uploadUrl() { return baseURL + "/base/file/upload"; } // 字符串格式化(%s ) export function sprintf(str) { var args = arguments, flag = true, i = 1; str = str.replace(/%s/g, function () { var arg = args[i++]; if (typeof arg === 'undefined') { flag = false; return ''; } return arg; }); return flag ? str : ''; } // 转换字符串,undefined,null等转化为"" export function praseStrEmpty(str) { if (!str || str == "undefined" || str == "null") { return ""; } return str; } /** * 构造树型结构数据 * @param {*} data 数据源 * @param {*} id id字段 默认 'id' * @param {*} parentId 父节点字段 默认 'parentId' * @param {*} children 孩子节点字段 默认 'children' */ export function handleTree(data, id, parentId, children) { let config = { id: id || 'id', parentId: parentId || 'parentId', childrenList: children || 'children' }; var childrenListMap = {}; var nodeIds = {}; var tree = []; for (let d of data) { let parentId = d[config.parentId]; if (childrenListMap[parentId] == null) { childrenListMap[parentId] = []; } nodeIds[d[config.id]] = d; childrenListMap[parentId].push(d); } for (let d of data) { let parentId = d[config.parentId]; if (nodeIds[parentId] == null) { tree.push(d); } } for (let t of tree) { adaptToChildrenList(t); } function adaptToChildrenList(o) { if (childrenListMap[o[config.id]] !== null) { o[config.childrenList] = childrenListMap[o[config.id]]; } if (o[config.childrenList]) { for (let c of o[config.childrenList]) { adaptToChildrenList(c); } } } return tree; } /** * 参数处理 * @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 && typeof (value) !== "undefined") { if (typeof value === 'object') { for (const key of Object.keys(value)) { if (value[key] !== null && typeof (value[key]) !== 'undefined') { let params = propName + '[' + key + ']'; var subPart = encodeURIComponent(params) + "="; result += subPart + encodeURIComponent(value[key]) + "&"; } } } else { result += part + encodeURIComponent(value) + "&"; } } } return result } /** * input 空格判断 */ export function spaceJudgment(rule, value, callback) { let reg = /^\s+$/; if(reg.test(value)){ return callback(new Error('请不要只输入空格')); }else{ callback() } } /** * input 是否是数字判断 */ export function isNum(rule, value, callback) { console.log('进来啦'); const num= /^[0-9]*$/; if (!num.test(value)) { return callback(new Error('只能输入数字')) }else{ callback() } } /** * 富文本 空格判断 */ export function spaceJudgmentHTML(rule, value, callback) { let obj = {value:value} let text = JSON.parse(JSON.stringify(obj)); let newText = text.value.replace(/<[^>]+>/g, ''); let reg = /^\s+$/; if(reg.test(newText)){ return callback(new Error('请不要只输入空格')); }else if(newText.length<1){ return callback(new Error('请输入内容')); }else{ callback() } } /** * 预览地址判断 */ export function urlJudge(url) { // let src = ''; // url = '/admin/statics'+url.split('statics')[1] url = '/statics'+url.split('statics')[1] // console.log('url',url); let location = window.location.href // console.log('location',location) if (location.indexOf('?#/') !== -1){ location = location.split('?#/')[0] // console.log('location1',location) }else if(location.indexOf('/#/') !== -1){ location = location.split('/#/')[0] // console.log('location2',location) } // console.log('src',src) // if(url.indexOf('http') !== -1){ // let text = window.location.href.split('://')[0]+'://' + url.split('://')[1] // src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(text)))); // }else{ // src = localStorage.getItem('filePreviewUrl') + '/onlinePreview?url='+encodeURIComponent(btoa(unescape(encodeURIComponent(window.location.href.split('://')[0]+'://' +judgmentNetworkReturnAddress() +'/admin/'+ url)))); // } console.log('location',location); console.log('url',url); return location + url }