import axios from 'axios' import { getToken } from '@/utils/auth' /** * 删除对象中的空值 * @param {object} obj * @returns {Object} */ export function deleteEmptyObj(obj) { let newObj = obj; for(var key in newObj) { if(newObj[key] === '' || newObj[key] === null || newObj[key] === undefined) { delete newObj[key] } } return newObj; } /** * * @param {*} array 要查询的数组 * @param {*} attr 要查询的字段 * @param {*} val 要查询的字段值 * @returns */ export function findElem(array, attr, val) { for (var i = 0; i < array.length; i++) { if (array[i][attr] == val) { return i; //返回当前索引值 } } return -1; } /** * 生成带参数的链接 * @param {String} url * @param {Object} params * @returns */ export function createParamsUrl(url, params) { if(typeof(url) == 'undefined' || url == null || url == '') { return ''; } if(typeof(params) == 'undefined' || params == null || typeof(params) != 'object') { return ''; } url += (url.indexOf("?") != -1) ? "" : "?"; for(var k in params) { url += ((url.indexOf("=") != -1) ? "&" : "") + k + "=" + encodeURI(params[k]); } return url; } /** * 导出功能 * @param {*} obj * @returns */ export function downloadFiles(url, params={}) { params.token = getToken(); let newParams = deleteEmptyObj(params); let newUrl = createParamsUrl(url, newParams); window.open(process.env.VUE_APP_BASE_API + newUrl); } /** * 导入功能 * @param {*} url * @param {*} formData */ export async function handleImport(url, formData) { const Result = await new Promise((resolve, reject) => { axios.post( process.env.VUE_APP_BASE_API + url, formData, { headers: { 'Content-Type': 'multipart/form-data', 'x-token': getToken() } }) .then(res => { resolve(res.data) }).catch(err => { reject(err) }) }); return Result; } /** * 重置时间格式 * @param {*} date * @param {*} type */ export function resetDateFormat(date, type) { let newDate = ''; if (!date) {return ''} // type=1: yyyy-MM-dd 转 yyyy-MM-dd HH:mm:ss if(type == 1 || !type) { newDate = date + ' 00:00:00'; } } /** * 若文档中已有命名dateFormat,可用dFormat()调用 * 年(Y) 可用1-4个占位符 * 月(m)、日(d)、小时(H)、分(M)、秒(S) 可用1-2个占位符 * 星期(W) 可用1-3个占位符 * 季度(q为阿拉伯数字,Q为中文数字)可用1或4个占位符 * * let date = new Date() * dateFormat("YYYY-mm-dd HH:MM:SS", date) 2020-02-09 14:04:23 * dateFormat("YYYY-mm-dd HH:MM:SS Q", date) 2020-02-09 14:09:03 一 * dateFormat("YYYY-mm-dd HH:MM:SS WWW", date) 2020-02-09 14:45:12 星期日 * dateFormat("YYYY-mm-dd HH:MM:SS QQQQ", date) 2020-02-09 14:09:36 第一季度 * dateFormat("YYYY-mm-dd HH:MM:SS WWW QQQQ", date) 2020-02-09 14:46:12 星期日 第一季度 */ export function dateFormat(format,date){ let we = date.getDay(); // 星期 let qut = Math.floor((date.getMonth()+3)/3).toString(); // 季度 const opt = { "Y+":date.getFullYear().toString(), // 年 "m+":(date.getMonth()+1).toString(), // 月(月份从0开始,要+1) "d+":date.getDate().toString(), // 日 "H+":date.getHours().toString(), // 时 "M+":date.getMinutes().toString(), // 分 "S+":date.getSeconds().toString(), // 秒 "q+":qut, // 季度 } const week = { // 中文数字 (星期) "0":"日", "1":"一", "2":"二", "3":"三", "4":"四", "5":"五", "6":"六" }; const quarter = { // 中文数字(季度) "1" : "一", "2" : "二", "3" : "三", "4" : "四", }; if(/(W+)/.test(format)){ format = format.replace(RegExp.$1,(RegExp.$1.length >1 ? (RegExp.$1.length >2 ? '星期'+week[we] : '周'+week[we]) : week[we])) } if (/(Q+)/.test(format)) { // 输入一个Q,只输出一个中文数字,输入4个Q,则拼接上字符串 format = format.replace(RegExp.$1,(RegExp.$1.length == 4 ? '第'+quarter[qut]+'季度' : quarter[qut])); } for(let k in opt){ let r = new RegExp("("+k+")").exec(format); if(r){ // 若输入的长度不为1,则前面补零 format = format.replace(r[1],(RegExp.$1.length == 1 ? opt[k] : opt[k].padStart(RegExp.$1.length,'0'))) } } return format }