123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- /*
- 通用工具类扩展方法
- 2019.2.11 姚政伟 创建
- */
- import router from '@/router'
- import { Loading, MessageBox } from 'element-ui'
- import { getToken } from '@/utils/auth'
- const utils = {
- getUrlParam: function (name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
- var r = window.location.search.substr(1).match(reg);
- if (r != null) return (decodeURIComponent(r[2])); return null;
- },
- getEnumName(arrayObj, value) {
- if (arrayObj && value) {
- let m = arrayObj.find(m => m.value == value);
- if (m) {
- return m.name;
- }
- }
- return '未知';
- },
- routerLink: function (path) {
- router.push(path);
- },
- getArrayListByGroup(n, list) {
- var R = [], F;
- for (F = 0; F < list.length;) {
- R.push(list.slice(F, F += n))
- }
- return R
- },
- formatNum(number, decimals, dec_point, thousands_sep) {
- /*
- * 参数说明:
- * number:要格式化的数字
- * decimals:保留几位小数,默认2位
- * dec_point:小数点符号
- * thousands_sep:千分位符号
- * */
- number = (number + '').replace(/[^0-9+-Ee.]/g, '');
- var n = !isFinite(+number) ? 0 : +number,
- prec = !isFinite(+decimals) ? 2 : Math.abs(decimals),
- sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
- dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
- s = '',
- toFixedFix = function (n, prec) {
- var k = Math.pow(10, prec);
- return '' + Math.ceil(n * k) / k;
- };
- s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
- var re = /(-?\d+)(\d{3})/;
- while (re.test(s[0])) {
- s[0] = s[0].replace(re, "$1" + sep + "$2");
- }
- if ((s[1] || '').length < prec) {
- s[1] = s[1] || '';
- s[1] += new Array(prec - s[1].length + 1).join('0');
- }
- return s.join(dec);
- },
- loading: {
- loadingObj: null,
- show() {
- this.loadingObj = Loading.service();
- },
- hide() {
- if (this.loadingObj) {
- this.loadingObj.close();
- }
- }
- },
- transformTree(list, options = {}) {
- const {
- keyField = 'id',
- childField = 'children',
- parentField = 'parent'
- } = options;
- const tree = [];
- const record = {};
- for (let i = 0, len = list.length; i < len; i++) {
- const item = list[i];
- const id = item[keyField];
- if (!id) {
- continue
- }
- if (record[id]) {
- item[childField] = record[id]
- } else {
- item[childField] = record[id] = []
- }
- if (item[parentField]) {
- const parentId = item[parentField];
- if (!record[parentId]) {
- record[parentId] = []
- }
- record[parentId].push(item)
- } else {
- tree.push(item)
- }
- }
- return tree
- },
- EncodeGetUrl(url) {
- let urlArr = url.split('?');
- let encodeUrl = urlArr[0];
- if (urlArr.length > 1) {
- encodeUrl += '?';
- let paramArr = urlArr[1].split('&');
- let encodeparamArr = [];
- paramArr.forEach((item, index) => {
- let key = item.split('=')[0];
- let value = item.split('=')[1];
- encodeparamArr.push(key + '=' + encodeURIComponent(value));
- });
- encodeUrl += encodeparamArr.join('&');
- }
- return encodeUrl;
- },
- objToString(obj) {
- var str = '';
- if (obj) {
- Object.keys(obj).forEach((key, index) => {
- if (index == 0) {
- str = str + `?${key}=${obj[key]}`;
- } else {
- str = str + `&${key}=${obj[key]}`;
- }
- })
- }
- return str;
- },
- exportUtil(url, data, message, type) {
- // debugger;
- if (!data) {
- data = {}
- }
- if (!data.token) {
- data.token = getToken();
- }
- let downUrl = process.env.VUE_APP_BASE_API + url + this.objToString(data);
- downUrl = this.EncodeGetUrl(downUrl);
- var a = document.createElement('a');
- a.href = downUrl;
- a.target = '_blank';
- a.click();
- /*let that = this
- MessageBox.confirm('确认导出' + message + '吗?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning',
- confirmButtonClass: 'confirmButtonClass',
- cancelButtonClass: 'confirmButtonClass',
- center: true
- }).then(() => {
- if (!data) {
- data = {}
- }
- if (!data.token) {
- data.token = getToken();
- }
- let downUrl = process.env.VUE_APP_BASE_API + url + this.objToString(data);
- downUrl = this.EncodeGetUrl(downUrl);
- var a = document.createElement('a');
- a.href = downUrl;
- a.target = '_blank';
- a.click();
- }).catch(() => {
- });*/
- },
- timestampToTime(timestamp) {
- // 时间戳为10位需*1000,时间戳为13位不需乘1000
- var date = new Date(timestamp);
- var Y = date.getFullYear() + "-";
- var M =
- (date.getMonth() + 1 < 10
- ? "0" + (date.getMonth() + 1)
- : date.getMonth() + 1) + "-";
- var D = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) + " ";
- var h = date.getHours() + ":";
- var m = date.getMinutes() + ":";
- var s = date.getSeconds();
- return Y + M + D + h + m + s;
- },
- // 四舍五入到指定的小数位数
- roundToDecimalPlace(number, decimalPlaces) {
- const factor = Math.pow(10, decimalPlaces);
- return Math.round(+number+'e'+ decimalPlaces) / factor;
- }
- };
- export default utils
|