前端公用方法
# 获取url中的参数
/**
* 获取url里的参数
* @param linkUrl
* return {key:value}
*/
export function getParams(linkUrl) {
let url = decodeURI(linkUrl||window.location.href)
let params = url.split("?")
if(params.length > 1){
let arr = params[1].split("&")
let config = {}
for(let i = 0;i<arr.length;i++){
let keyval = arr[i].split('=')
if(keyval.length > 1){
config[keyval[0]] = keyval[1]
}
}
return config
}else{
return false
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 数组去重
/**
* 数组去重
* @param arr 参数['2018-10-11 10-12-11','2018-10-11 10-12-11']
* @returns ['2018-10-11 10-12-11']
*/
export function unique(arr) {
return [...new Set(arr)]
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 根据特定的字符排序
/**
* 根据特定的字符排序
* @params sortArr ['a','b','c','d']
* @params itemList [{name:'b'},{name:'a'},{name:'d'},{name:'c'}]
* return [{name:'a'},{name:'b'},{name:'c'},{name:'d'}]
*/
export function sortByArr(sortArr,itemList){
return itemList.sort((i,j)=>sortArr.indexOf(i.name)-sortArr.indexOf(j.name))
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 日期格式化
/**
* 日期格式化
* params: format:格式
* date: 日期值
* 功能:将日期以指定格式输出
* 返回:指定形式的日期字符串
*/
export function dateFormat(format, date = new Date()) {
// const realDate = date || new Date()
if(!date){return}
const realDate = new Date(date)
let milliseconds = realDate.getMilliseconds() +''
while(milliseconds.length < 3){
milliseconds = '0'+milliseconds
}
const obj = {
'M+': realDate.getMonth() + 1,
'd+': realDate.getDate(),
'h+': realDate.getHours(),
'm+': realDate.getMinutes(),
's+': realDate.getSeconds(),
'q+': Math.floor((realDate.getMonth() + 3) / 3), // 季度
'S': milliseconds // 毫秒
}
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (realDate.getFullYear() + '').substr(4 - RegExp.$1.length))
for (var k in obj) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1, (RegExp.$1.length === 1) ? (obj[k]) : (('00' + obj[k]).substr(('' + obj[k]).length)))
}
}
}
return format
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 打开浏览器浮动窗口
/**
* 打开浮出窗口(浏览器新窗口)
* @param url 窗口链接
* @param config 参数
* @param width 宽
* @param height 高
*/
export function openOverflowWindow(url,config,width,height){
let domain = window.location.href.split('#')[0]
let finalurl = domain + '#' +url
let arr = []
for(let keys in config){
console.log(keys,config[keys])
arr.push(keys+'='+config[keys])
}
let params = arr.join("&")
if(arr.length > 0) {
finalurl += "?" + params
}
let finalHeight = height || 500
let finalWidth = width || 600
let finalfeatures = "height="+finalHeight+", width="+finalWidth+", location=no,menubar=no,status=no,toolbar=no"
window.open(finalurl,new Date().getTime(),finalfeatures)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 下载文件
/**
* 下载文件
* @param url 下载地址
*/
export function downFile(url) {
try {
var downLoadElement = document.createElement("a");
downLoadElement.href = url;
downLoadElement.style.display = "none";
document.body.appendChild(downLoadElement);
downLoadElement.click()
document.body.removeChild(downLoadElement);
} catch (e) {
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 一维数组拆分成多维数组(按subGroupLeng拆分)
/**
* 数组拆分
* @param array [1,2,3,4,5]
* @param count 个数
* return [[1,2],[3,4],[5]]
*/
export function groupArr(array, count) {
let index = 0;
let newArr = [];
while(index < array.length) {
newArr.push(array.slice(index, index += count));
}
return newArr;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 多维数组解构成一纬数组
/**
* 多维数组解构成一纬数组
* @param array [[1,2,3],[3,4],[5]]
* return [1,2,3,4,5]
*/
export function resetMuliArr(array) {
let index = 0;
let newArr = [].concat.apply([], array)
return newArr;
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 获取两个经纬度高度的距离
/**
* 说明 : 假设XY平面是赤道平面,X轴经过0度,则任意一点可以投影出三维空间中的坐标
* x = h * cos(la) * cos(lo)
* y = h * cos(la) * sin(lo)
* z = h * sin(la)
* h = 海拔高度 + 地球半径
* la = 纬度 (弧度)
* lo = 经度 (弧度)
* L = Math.sqrt( Math.pow(x1-x2,2) +Maht.pow(y1-y2)+Math.pow(z1-z2))
*/
function getXYZ(params){
let {lon ,lat, alt} = params;
lon = Math.PI / 180 * lon ; //转成弧度
lat = Math.PI / 180 * lat ; //转成弧度
let h = alt+ 6371.393*1000
return {
x : h *Math.cos(lat)*Math.cos(lon),
y : h* Math.cos(lat) * Math.sin(lon),
z : h * Math.sin(lat)
}
}
export function getDisance(){
let {x:x1,y:y1,z:z1} = this.getXYZ(baseStationInfo) //基站
let {x:x2,y:y2,z:z2} = this.getXYZ(this.saveData.bdParam)
l = Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2)+Math.pow(z1-z2,2))||0
return l.toFixed(2)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
具体查看 主应用中的common.js
上次更新: 2021/09/17, 17:51:47