/**
 * Created by Anndy Yang on 18/09/18.
 */
import { envConfig } from '@/utils/env-config'

export function setEventByModuleCode(itemData){
  let modeCode = itemData.appModuleInfo.code || '';
  let paramList = itemData.appModuleInfo.paramList ? itemData.appModuleInfo.paramList : ''
  if( modeCode === 'M001' || modeCode === 'M002' || modeCode === 'M003') {
      paramList = ''
  }else if( modeCode === 'M100' || modeCode === 'M300' ) {

    let urlPara = getUrlParmByCode(paramList);
    paramList[0] && (paramList[0].value += urlPara);

  }else if( modeCode === 'M400') {

      let path = paramList[0]['key'];
      let v = paramList[0]['value'];
      let query = setRouterParm(paramList);
  }
  if(typeof paramList === 'string' && !paramList){
      paramList = []
  }

  return paramList;
}

function getUrlParmByCode(paramList) {
    if ( paramList.length <= 1) {
        return ''
    }
    let dataStr = ''
    let list = [];
    for( let i = 1; i < paramList.length; i ++) {
        list.push(paramList[i].key + '=' + paramList[i].value)
    }
    dataStr = list.join('&')
    if (dataStr !== '') {
        return '?' + dataStr
    }
    return ''
}

// 计算高度
export function resizeHeight(cMinusHeight = 152, iMinuxHeight = 210, refHeightId = 'sidebarWrapperId',
  containerHeightId = 'appContainerId', innerHeightId = 'elTableId'){
  if (!p_getElm(refHeightId) || !p_getElm(containerHeightId) || !p_getElm(innerHeightId)) {
    // window.onresize = null
    logger.warn('No certain dom id!!!');
  }
  let containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 50
  p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
  p_getElm(innerHeightId).style.height = containerHeight - iMinuxHeight + 'px'
  if(p_getElm('elTableIdInner')){
    p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
  }
  window.onresize = function() {
    containerHeight = p_getElm(refHeightId).getBoundingClientRect().height - 50
    p_getElm(containerHeightId).style.height = containerHeight - cMinusHeight + 'px'
    p_getElm(innerHeightId).style.height = containerHeight - iMinuxHeight + 'px'
    if (p_getElm('elTableIdInner')) {
      p_getElm('elTableIdInner').style.height = containerHeight - iMinuxHeight + 'px'
    }
  }
}

function p_getElm(elmId) {
  return document.getElementById(elmId)
}




export function deepCopy(obj) {
  var result = Array.isArray(obj) ? [] : {};
  for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
      if (typeof obj[key] === 'object') {
        result[key] = deepCopy(obj[key]);   //递归复制
      } else {
        result[key] = obj[key];
      }
    }
  }
  return result;
}

/**
 *
 * @param {Array}     originData  初始数据
 * @param {Boolean}   isUp        true: 升序  false: 降序
 * @param {String}    sortField   排序字段，如果没有，则直接排序
 * @param {Function}  converFun   字段对应的数值转换函数
 */
export function arraySort(originData, isUp = true, sortedField, converFun) {
  // debugger
  let sortedData = originData.slice(), swap, sourceA, sourceB;
  for(let i = 0; i < sortedData.length - 1; i ++) {
    for(let j = 0; j < sortedData.length - i -1; j++) {
      sourceA = sortedData[j]
      sourceB = sortedData[j + 1]
      if(sortedField && !converFun) {
        sourceA = sourceA[sortedField]
        sourceB = sourceB[sortedField]
      } else if(sortedField && converFun && typeof converFun === 'function'){
        if(!sourceA[sortedField] || !sourceB[sortedField]) {
          sourceA = 0
          sourceB = 0
        } else {
          sourceA = converFun(sourceA[sortedField])
          sourceB = converFun(sourceB[sortedField])
        }
      }
      // if(!sourceA || !sourceB) {
      //   sourceA = 0
      //   sourceB = 0
      // }
      if(isUp) {
        if((sourceA - 0) > (sourceB - 0)) {
          swap = sortedData[j]
          sortedData[j] = sortedData[j + 1]
          sortedData[j + 1] = swap
        }
      } else {
        if((sourceA - 0) < (sourceB - 0)) {
          swap = sortedData[j]
          sortedData[j] = sortedData[j + 1]
          sortedData[j + 1] = swap
        }
      }
    }
  }
  return sortedData
}


export function sortParmData(originData, orderCol, index) {
  return originData.sort((a, b) => {
    return (a[orderCol] - b[orderCol] ) * -1
  })
}

// 获取SC服务器域名地址
export function getBaseUrl(url) {
  return getConfigByEnvType('baseUrl') + url
}

// 获取七牛token
export function getQiniuToken1() {
  return getConfigByEnvType('qiniuFileUrl')
}

// 登录URL
export function getLoginUrl(param) {
  return getConfigByEnvType('loginUrl') + param
}
export function getInnerLoginUrl() {
  return getConfigByEnvType('innerLoginUrl')
}

// 云鹊医首页
export function getYunQueYiUrl() {
  return getConfigByEnvType('yuequeyiIndexUrl')
}

// 七牛上传视频和图片
export function uploadVideo() {
  return getConfigByEnvType('qiniuResourceUrl')
}
export function uploadImg() {
  return getConfigByEnvType('qiniuImgUrl')
}

// 获取履约微服务服务器域名地址
export function getFollowUpSC(url) {
  return getConfigByEnvType('followUpSC') + url
}

// 获取常量接口域名地址
export function getBasicDataApi(url) {
  return getConfigByEnvType('basicDataUrl') + url
}

// 获取saas端域名地址
export function getSaasDomain(url) {
  return getConfigByEnvType('saasDomainUrl') + url
}
// 获取saasApi端域名地址
export function getWorkApi(url) {
  return getConfigByEnvType('workApiUrl') + url
}

// 获取saas端api域名地址
export function getSaasApiDomain(url) {
  return getConfigByEnvType('apiUrl') + url
}

// 获取工作站的域名地址
export function getWorkDomain(url) {
  return getConfigByEnvType('workApiSrc') + url
}

/*
 *  OSS相关参数
 */
// 获取OSS域名
export function getOSSImgUrl(url = '') {
  return getConfigByEnvType('ossImgUrl') + url
}

// 获取stsUrl域名
export function getSTSUrl() {
  return getConfigByEnvType('stsUrl')
}

// 获取bucketName
export function getBucketName() {
  return getConfigByEnvType('bucketName')
}

// 获取endpoint
export function getEndpoint() {
  return getConfigByEnvType('endpoint')
}



// 根据不同环境，生成URL
function getConfigByEnvType(urlType) {
  // console.log(process.env.BUILD_ENV)
  return envConfig[process.env.BUILD_ENV][urlType]
}

// 获取report服务器域名地址
export function getReportUrl(url) {
  return getConfigByEnvType('reportUrl') + url
}

// 获取Excel地址
export function getExeclUrl(url) {
  return getConfigByEnvType('excelUrl') + url
}

// 获取教培项目文件地址
export function getItemFileUrl(url) {
  return getConfigByEnvType('itemFileUrl') + url
}

// 获取老的cms接口域名地址
export function getCmsUrl(url) {
  return getConfigByEnvType('cmsUrl') + url
}
// 获取教培弹框url
export function getEdUrl() {
  return getConfigByEnvType('tEdUrl')
}


// 转换时间格式
export function convertTime(time, isToSlash = true) {
  console.log('#########time', time);
  // 2020-04-16 15:06:19
  if(!time) {
    return ''
  } else {
    if(isToSlash) {
      if(typeof(time) == 'object') {
        // return time.format("yyyy/MM/dd hh:mm:ss");
        return new Date(time.getTime()).format("yyyy/MM/dd hh:mm:ss");
      } else {
        return time.replace(/-/g, '/')
      }
    } else {
      if(typeof(time) == 'object') {
        // return time.format("yyyy-MM-dd hh:mm:ss");
        return new Date(time.getTime()).format("yyyy-MM-dd hh:mm:ss");
      } else {
        return time.replace(/\//g, '-')
      }
    }
  }
}

//截位
export function subString(obj, int) {
  if (isEmptyUtils(obj) || isEmptyUtils(int)) {
      return "";
  }
  if (obj.length <= int) {
      return obj;
  } else {
      obj = obj.substring(0, int);
  }

  return obj;
};

/**
 * 校验对象是否为空
 * */
export function isNotEmptyUtils(obj) {
  if ("" == obj || null == obj || undefined == obj || "null" == obj) {
      return false;
  }
  return true;
};

/**
* 校验对象是否为空
* */
export function isEmptyUtils (obj) {
  return !isNotEmptyUtils(obj);
};

export function toDecimal2(x) {
  if (isNaN(x)) {
    return '';
  }
  let f = x / 100;
  let s = f.toString();
  let rs = s.indexOf('.');
  if (rs < 0) {
    rs = s.length;
    s += '.';
  }
  while (s.length <= rs + 2) {
    s += '0';
  }
  return s;
}

