常用js方法集合
创建一个commonly.js在utils目录下
router.js文件就是页面路径文件、dictKit.js文件是请求数据字典的接口文件**、storage .js**文件是封装缓存方法文件
// commonly.js
import router from "../router";
import dictKit from "../utils/dictKit";
import storage from "./storage";
import moment from "moment";
// import LAY_EXCEL from 'lay-excel';
/**
* 常用js方法集合
*/
async function dictData(dictType, loadCache = true) {
if (!dictType) {
return null;
}
let list = storage.getItem('dict-' + dictType);
if (loadCache && list) {
return list;
}
const res = await dictKit.dictList({ dictType });
if (res) {
storage.setItem('dict-' + dictType, res.data.list);
return res.data.list;
}
}
export default {
/**
* 读取字典
*/
dictData,
/**
* 生成随机id
* @param length 随机长度
* @returns {string}
*/
genId(length) {
return Number(Math.random().toString().substr(3, length ? length : '10') + Date.now()).toString(36);
},
/**
* 创建时间(取当前时间)
* @returns {string}
*/
getCurrentTime() {
//获取当前时间并打印
let yy = new Date().getFullYear();
let mm = new Date().getMonth() + 1;
let dd = new Date().getDate();
let hh = new Date().getHours();
let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes();
let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds();
var gettime = yy + '-' + mm + '-' + dd;
return gettime
},
/**
* 路由跳转新页面
* @param name
*/
newPage(name, query) {
let routeData = router.resolve({
name: name,
query: query
});
window.open(routeData.href, "_blank");
},
/**
* 文件大小转换
* @param limit
* @returns {string}
*/
fileSizeType(limit) {
var size = "";
if (limit < 0.1 * 1024) {
//如果小于0.1KB转化成B
size = limit.toFixed(2) + "B";
} else if (limit < 0.1 * 1024 * 1024) {
//如果小于0.1MB转化成KB
size = (limit / 1024).toFixed(2) + "KB";
} else if (limit < 0.1 * 1024 * 1024 * 1024) {
//如果小于0.1GB转化成MB
size = (limit / (1024 * 1024)).toFixed(2) + "MB";
} else {
//其他转化成GB
size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB";
}
var sizestr = size + "";
var len = sizestr.indexOf("\.");
var dec = sizestr.substr(len + 1, 2);
if (dec == "00") {
//当小数点后为00时 去掉小数部分
return sizestr.substring(0, len) + sizestr.substr(len + 3, 2);
}
return sizestr;
},
/**
* 判断上传的文件是否为图片与图片的大小
* @param {string} FileId 文件按钮id
* @param {number} maxsize 图片大小(单位/M)
*/
imgTypeSize(file, maxsize) {
console.log(file)
/*图片类型正则验证*/
var imgStr = /\.(jpg|jpeg|png|bmp|BMP|JPG|PNG|JPEG)$/;
if (!imgStr.test(file.name)) {
Message({
message: '文件不是图片类型',
type: 'error'
})
return false;
} else {
return true
}
},
// 同步数据字典
initDict() {
let cacheDate = storage.getItem('dictUpdateDate') ? storage.getItem('dictUpdateDate') : '1970-01-01';
// 当天更新过
/*if (cacheDate.indexOf(moment().format('YYYY-MM-DD'))!=-1) {
return;
}*/
// 获取数据字典类型
dictKit.dictType({
updateDate: cacheDate,
appDictType:'sys_app_use_dict_sgdc'
}).then(res => {
if (res.data.list.length > 0) {
res.data.list.forEach(item => {
dictData(item.dictType, false);
});
storage.setItem('dictUpdateDate', moment().format('YYYY-MM-DD'));
}
})
},
/**
* 树形数组扁平化
* */
treeToList(tree) {
let data = JSON.parse(JSON.stringify(tree))
let newData = []
const callback = (item) => {
(item.children || (item.children = [])).map(v => {
callback(v)
})
delete item.children
newData.push(item)
}
data.map(v => callback(v))
return newData
},
/**
* Json转url参数
* 2022/05/30 dictList/dictDataList 接口使用,待稳定可替换其他接口拼接url参数
* */
jsonToUrlQuery(json){
if(typeof json !== 'object') throw Error("你传入JSON格式不对");
if(Object.keys(json).length <= 0) throw Error("你传入了空JSON");
const keys = Object.keys(json);
const values = Object.values(json);
let paramsArr = [];
for(let i = 0;i<keys.length;i++){
paramsArr.push(`${keys[i]}=${values[i]}`)
}
const paramsStr = paramsArr.join('&');
return paramsStr;
},
// 扁平化数组转为树形(elementui 级联选择)
// 子数据的parentCode等于父数据的id
toTree(data) {
// 删除 所有 children,以防止多次调用
data.forEach(function (item) {
delete item.children;
});
// 将数据存储为 以 id 为 KEY 的 map 索引数据列
var map = {};
data.forEach(function (item) {
map[item.id] = item;
});
var val = [];
data.forEach(function (item) {
// 以当前遍历项的pid,去map对象中找到索引的id
var parent = map[item.parentCode];
// 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
if (parent) {
(parent.children || (parent.children = [])).push(item);
} else {
//如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 val结果集中,作为顶级
val.push(item);
}
});
return val
}
}
// dictKit.js
/**
* 数据字典工具类
* @author gg
* @date 2020-08-17
*/
import request from '@/utils/request.js'
import moment from 'moment';
import 'moment/locale/zh-cn'
moment.locale('zh-cn');
import commonly from '@/utils/commonly';
// import {API_ROOT_GLC} from '../../config/dev.env'
export default {
//根据类型获取数据字典值
dictList(data) {
return request({
// url: `/govApi/sys/sysDict/dictList?dictType=${data.dictType}&parentCode=${data.parentCode ? data.parentCode : ''}`,
url: `/sgdcYwpt/api/v2/sys/sysDict/dictList?${commonly.jsonToUrlQuery(data)}`,
method: 'post',
data
})
},
//获取数据字典类型
dictType(data) {
return request({
url: '/sgdcYwpt/api/v2/sys/sysDict/dictType?updateDate=' + data.updateDate + '&appDictType=' + data.appDictType,
method: 'post',
data
})
},
}
// storage.js
export default {
// 缓存方法
setItem(key, value) {
value = JSON.stringify(value);
localStorage.setItem(key, value)
},
getItem(key, defaultValue) {
let value = localStorage.getItem(key)
try {
value = JSON.parse(value);
} catch (err){
console.log(err)
}
return value || defaultValue
},
removeItem(key) {
localStorage.removeItem(key)
},
clear() {
localStorage.clear()
},
}
在main.js里注册
import commonly from "./utils/commonly";
Vue.prototype.$commonly = commonly
数据字典 :首先在app.vue里调用 this.$commonly.initDict();
created() {
this.$commonly.initDict();
}
刷新页面 就可以看到缓存里的数据字典了
此文仅记录