smart-power-ui/src/utils/hciot.js

301 lines
7.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 通用js方法封装处理
* Copyright (c) 2019 hciot
*/
import { Loading } from 'element-ui';
const baseURL = process.env.VUE_APP_BASE_API
const targetURL = process.env.target
var loading = null;
// 日期格式化
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()
}
debugger
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) {
var search = params;
search.beginTime = "";
search.endTime = "";
if (null != dateRange && '' != dateRange) {
search.beginTime = this.dateRange[0];
search.endTime = this.dateRange[1];
}
return search;
}
// 回显数据字典
export function selectDictLabel(datas, value) {
var actions = [];
Object.keys(datas).map((key) => {
if (datas[key].dictValue == ('' + value)) {
actions.push(datas[key].dictLabel);
return false;
}
})
return actions.join('');
}
// 通用下载方法
export function download(fileName) {
window.location.href = baseURL + "/common/download?fileName=" + encodeURI(fileName) + "&delete=" + true;
}
// 字符串格式化(%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'
* @param {*} rootId 根Id 默认 0
*/
export function handleTree(data, id, parentId, children, rootId) {
id = id || 'id'
parentId = parentId || 'parentId'
children = children || 'children'
rootId = rootId || 0
//对源数据深度克隆
const cloneData = JSON.parse(JSON.stringify(data))
//循环所有项
const treeData = cloneData.filter(father => {
let branchArr = cloneData.filter(child => {
//返回每一项的子级数组
return father[id] === child[parentId]
});
branchArr.length > 0 ? father.children = branchArr : '';
//返回第一层
return father[parentId] === rootId;
});
return treeData != '' ? treeData : data;
}
/**
* 参数处理
* @param {*} params 参数
*/
export function tansParams(params) {
let result = ''
Object.keys(params).forEach((key) => {
if (!Object.is(params[key], undefined) && !Object.is(params[key], null)) {
result += encodeURIComponent(key) + '=' + encodeURIComponent(params[key]) + '&'
}
})
return result
}
// 图片地址返回
export function getIotFileUrl(importUrl) {
if (!importUrl) {
return '/assets/logo/logo.png';
}
if (importUrl.indexOf(':8899') > 0) {
importUrl = importUrl.replace(':8899', ':9988')
}
if (importUrl.indexOf('http') === 0 || importUrl.indexOf('https') === 0) {
return importUrl;
} else if (importUrl.indexOf('/profile/upload/') === 0 || importUrl.indexOf('/profile/avatar/') === 0) {
console.log('baseUrl:', baseURL + importUrl);
return baseURL + importUrl;
} else if (importUrl.indexOf('data:image/') === 0 || importUrl.indexOf('/static/') === 0) {
return importUrl;
}
return 'data:image/jpg;base64,' + importUrl;
}
// 字典值返回标题
export function dictValueToLabel(val, arr) {
for (const v in arr) {
if (arr[v].dictValue.toString() == val) {
return arr[v].dictLabel
}
}
return ''
}
// url 处理t
export const jsonSearchFu = (strSearch) => {
if (strSearch.indexOf('?') > -1) {
strSearch = strSearch.substring(strSearch.indexOf('?') + 1);
}
let jsonSearch = {};
let arrSearch = strSearch.split('&')
if (arrSearch == null) {
return;
}
arrSearch.forEach(element => {
if (element != '') {
let arrParam = element.split('=')
if (arrParam.length > 1) {
jsonSearch[arrParam[0]] = arrParam[1]
}
}
});
return jsonSearch
}
// 请求服务端防止重复请求机制
export const preventRepeatFu = (res) => {
if (res) {
loading = Loading.service({
lock: true,
text: '请求中...',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
});
}
}
// 关闭 防重复机制弹窗
export const preventCloseFu = () => {
if (loading) {
loading.close()
}
}
// 全局拷贝方法
export const pluginsCope = (value, _this) => {
_this.$copyText(value).then(
function () {
_this.$message({
message: "复制成功",
type: "success"
});
},
function () {
_this.$message.error("复制失败");
}
);
}
/**
** 文件流下载
** data 文件流fileName:文件名
** 文件名从请求头headers获取,文件名这里按实际情况获取
*/
export const downloadFile = (data, fileName) => {
if (!data) {
return;
}
let blob = new Blob([data], {
type:
"application/vnd.openxmlformats-officedocument.wordprocessingml.document;charset=utf-8"
});
let url = window.URL.createObjectURL(blob);
if ("download" in document.createElement("a")) {
const a = document.createElement("a");
a.href = url;
a.download = fileName;
a.style.display = "none";
document.body.appendChild(a);
a.click();
URL.revokeObjectURL(a.href);
document.body.removeChild(a);
} else {
navigator.msSaveBlob(blob, fileName);
}
}
/**
* 查询两个时间之间 相差具体 天 小时 分钟 秒
* @param {*} $begin_time 开始时间
* @param {*} $end_time 结束时间
* @returns
*/
export const timeDiff = ($begin_time, $end_time ) => {
$begin_time = $begin_time ? $begin_time : parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}');
$end_time = $end_time ? $end_time : parseTime(new Date(), '{y}-{m}-{d} {h}:{i}:{s}');
var starttime = new Date($begin_time).getTime() / 1000;
var endTime = new Date($end_time).getTime() / 1000;
//计算天数
var $timediff = 0;
if (starttime < endTime) {
$timediff = endTime - starttime
} else {
$timediff = starttime - endTime
}
var $days = parseInt($timediff / 86400);
//计算小时数
var $remain = $timediff % 86400;
var $hours = parseInt($remain / 3600);
//计算分钟数
var $remain = $remain % 3600;
var $mins = parseInt($remain / 60);
//计算秒数
var $secs = $remain % 60;
// $days=>天
// $hours=>时
// $mins=>分
// $secs=>秒
var $res = [$days,$hours,$mins,$secs]
return $res
}