uniapp+echarts分时图五档行情

父组件代码:

chartMin组件代码:

wdhq五档行情组件代码:

u.js文件方法:

// 链接参数获取

export function getQueryString(url="") {

    let ItemArr = [];

    let ItemObj = {};

    url

      .substring(url.lastIndexOf("?") + 1, url.length)

      .split("&")

      .map((item) => {

        ItemArr.push(item.split("="));

      });

    ItemArr.map((item) => {

      ItemObj[item[0]] = item[1];

    });

    return ItemObj;

  }

/**

 * 设置跌涨颜色

 * val1: 对比的值 如:preClosePrice昨收价

 * val2: 当前显示的值

 * */

export function turnColor(val1, val2) {

    var num1 = isNaN(Number(val1)) ? 0 : Number(val1)

    var num2 = isNaN(Number(val2)) ? 0 : Number(val2)

    // 判断是否是-0

    if (num1 == 0 && num2 == 0 && (1 / num2 < 0)) {

        return '#57B967'

    }

    if (num1 == 0 && num2 == 0) {

        return '#BEC0C7'

    }

    if (num1 > num2) {

        return '#57B967'

    } else if (num1 < num2) {

        return '#E93A40'

    } else {

        return '#BEC0C7'

    }

}

callback.js文件方法:

var _callbacks = {}

export function on(eventName, callback) {

    if (!_callbacks[eventName]) {

        _callbacks[eventName] = []

    }

    _callbacks[eventName].push(callback)

}

export function off(eventName, callback) {

    var callbacks = _callbacks[eventName]

    if (!callbacks) {

        return

    }

    var index = -1

    for (var i = 0; i < callbacks.length; i++) {

        if (callbacks[i] === callback) {

            index = i

            break

        }

    }

    if (index < 0) {

        return

    }

    _callbacks[eventName].splice(index, 1)

}

export function trigger(eventName) {

    var callbacks = _callbacks[eventName]

    if (!callbacks || !callbacks.length) {

        return

    }

    var args = Array.prototype.slice.call(arguments, 1)

    for (var i = 0; i < callbacks.length; i++) {

        callbacks[i].apply(this, args)

    }

}

var duestate = {}

export function lock(lockname,func){

    if(!duestate[lockname]){

        duestate[lockname] = true

        on("State",()=>{

            duestate[lockname] = false

        })

        return func

    }

}

dateFormat文件方法:

/**

 * [dateFormat 时间格式化]

 * @param  {[Number,String]} [timestamp=Date.now()] [需转化的时间戳或一个能格式化的时间字符串]

 * @param  {[String]} [format='yyyy-M-d'] [需转化的时间格式]

 * yyyy年,月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q),两个字符表示按2位字符输入

 * 举例:

 * dateFormat(Date.now(), "yyyy-MM-dd hh:mm:ss") ==> 2017-04-25 16:06:06

 * dateFormat(Date.now(), "yyyy-M-d h:m:s q")    ==> 2017-4-25 16:6:6 2

 * @return {[String]}                       [格式化时间字符串]

 */

export default function dateFormat(timestamp = Date.now(), format = 'yyyy-M-d') {

  return getFormatDate(getJsonDate(timestamp), format)

}

// 生成时间对象

export function getJsonDate(timestamp) {

  let time = new Date(getCorrectTime(timestamp))

  let jsonDate = {

    y: time.getFullYear(), //年

    M: time.getMonth() + 1, //月

    d: time.getDate(), //日

    h: time.getHours(), //时

    m: time.getMinutes(), //分

    s: time.getSeconds(), //秒

    q: Math.floor((time.getMonth() + 3) / 3) //季度

  }

  return jsonDate

}

// 生成格式化时间字符串

export function getFormatDate(jsonDate, format) {

  let dateStr = format.replace(/yyyy/g, jsonDate.y)

  Object.keys(jsonDate).forEach(e => {

    // 时间格式化操作

    let double = e.repeat(2)

    let num = jsonDate[e]

    if (format.includes(double)) {

      // 如果需要两位的格式化数据,则转换为两位数

      dateStr = dateStr.replace(double, getTwoDigit(num))

    } else {

      dateStr = dateStr.replace(e, num)

    }

  })

  return dateStr

}


 

// 数字如果为一位数,前面加0

function getTwoDigit(num) {

  return Number(num) < 10

    ? `0${num}`

    : num

}

// 对于传入时间数据的转换

function getCorrectTime(timestamp) {

  if (isNaN(timestamp)) {

    // ios日期格式兼容处理

    timestamp = timestamp.toString().includes('-')

      ? (timestamp.replace(/-/g, '/')).slice(0,19)

      : timestamp

  } else {

    timestamp = Number(timestamp)

  }

  return timestamp

}


 

页面公共文件方法:

// 大数字单位处理(num为比较值 小于num数据不进行处理)

formatNumUnit(value, fixedLen = 2, num = 10000) {

            if (value == "--") {

                return value;

            }

            if (value == null) {

                return '--'

            }

            var result = {};

            var k = 10000;

            var sizes = ["", "万", "亿", "万亿"];

            var i;

            if (value < num) {

                result.value = value;

                result.unit = "";

            } else {

                i = Math.floor(Math.log(value) / Math.log(k));

       

                result.value = this.round(value / Math.pow(k, i), fixedLen);

                result.unit = sizes[i];

            }

            return result.value + result.unit;

        },

/**

         * 转化数字为几位小数,四舍五入或者截取多于位数

         * num     [需转化的数字]

         * @param  {Number} [digit=2]   [需保留或截取的位数]

         * @param  {Boolean} [isRround=true]            [true四舍五入,false截取多于小数]

         * */

        toDecimal(num, n, b) {

            if (num === null || num === undefined || isNaN(num) || num === '') {

                return "--";

            } else if (num == 0) {

                return parseFloat(num).toFixed(n);

            }

            return toDecimal1(num, n, b);

        },

/**

 * [toDecimal 转化数字为几位小数,四舍五入或者截取多于位数]

 * @param  {[Number]} num         [需转化的数字]

 * @param  {Number} [digit=2]   [需保留或截取的位数]

 * @param  {Boolean} [isRround=true]            [true四舍五入,false截取多于小数]

 * @return {[Number, String]}             [转换后的结果]

 */

toDecimal1(num,  digit = 2, isRround = true) {

  if (num === null || num === undefined) {

      return ''

  }

  // 负数处理四舍五入,先转成正数

  let sign = ''

  if (num < 0) {

      sign = '-'

  }

  num = Math.abs(num).toString()

  // 出现了科学计数法

  if (num.indexOf('e-') != -1) {

      num = noKeXueJiShuFa(num)

  }

  const numArr = num.split('.')

  if (numArr.length > 1) {

  // 有小数时的处理

      if (numArr[1].length <= digit) {

          // 小数位数少于需保留位数的时候

          return sign + Number(num).toFixed(digit)

      } else {

          // 小数位数多于需保留位数的时候

          if (isRround) {

              // 四舍五入处理

              num = numArr[1][digit] >= 5 ? parseInt(noKeXueJiShuFa(num * Math.pow(10, digit))) + 1 : parseInt(noKeXueJiShuFa(num * Math.pow(10, digit)))

              return sign + (num / Math.pow(10, digit)).toFixed(digit)

          } else {

              // 去除多于小数

              return sign + `${numArr[0]}.${numArr[1].substring(0, digit)}`

          }

      }

  } else {

  // 无小数时的处理

      return sign + Number(num).toFixed(digit)

  }

}

noKeXueJiShuFa(num) {

  if (String(num).indexOf('e-') != -1) {

      num = '0' + String(Number(num) + 1).substr(1)

  }

  return num

}

你可能感兴趣的:(uni-app,echarts,安卓,ios,前端)