常用js方法集合

常用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();
  }

刷新页面 就可以看到缓存里的数据字典了

此文仅记录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

屿-·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值