
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) {
      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
}

// 获取地址栏参数
export function getUrlParam() {
  let getqyinfo = window.location.href.split('?')[1] || ''
  let getqys = getqyinfo.split('&')
  let obj = {} //创建空对象，接收截取的参数
  for (let i = 0; i < getqys.length; i++) {
    let item = getqys[i].split('=')
    let key = item[0]
    let value = item[1]
    obj[key] = value
  }
  return obj
}