vue开发工具类

2018-10-17  本文已影响0人  奇怪的双子座

import $vue from 'Vue'

(function (window) {

  let Util = {}

  // Util.baseUrl = 'http://web7da50c.hudding.com';//预发布

  // Util.baseUrl = 'https://xyservices.hudding.com';//正式

  // Util.baseUrl = 'http://testv3.hudding.com'//开发

  Util.baseUrl = 'http://47.97.196.145'//开发

  Util.ImgbaseUrl = 'https://gaoxiao-zsx.oss-cn-hangzhou.aliyuncs.com/static/img/'//开发

  Util.copyObject = function (target, source) {

    for (let p in target) {

      target[p] = source[p]

    }

  }

  /**

  * 为一个Vue的data添加一个新的属性,如果是数组, 则为每一项都添加一个新的属性

  */

  Util.addVueDataProperty = function ($vue, source, key, defaultValue) {

    if (source instanceof Array) {

      for (var idx = 0; idx < source.length; idx++) {

        var item = source[idx]

        $vue.$set(item, key, defaultValue)

      }

    } else {

      $vue.$set(source, key, defaultValue)

    }

  }

  /**

  * 作者 shuidi

  * 把json对象转成URL形式

  * param: json

  * key: 转成url之后,给每个参数附加一个父节点, 比如 key.p1=1

  */

  Util.parseParam = function (param, key) {

    let paramStr = ''

    for (let key in param) {

      if (param[key] || param[key] == '0') paramStr += '&' + key + '=' + param[key]

    }

    return paramStr.substr(1)

  }

  /**

  * 作者 shuidi

  * 把json对象转成数组

  * param: json

  */

  Util.objTOArray = function (list) {

    let oList = [];

    for(let key in list){

      oList.push(list[key]);

    }

    return oList;

  }

  Util.processError = function (vm, res) {

    let msg = ''

    if (res) {

      if (res.code && res.code != '0') {

        if (res.code == '1001') {

          msg = '传入参数为空'

        } else if (res.code == '1102') {

          msg = '名称已存在'

        } else if (res.code == '7004') {

          msg = '参数传入错误'

        } else if (res.code == '7014') {

          msg = '请输入正确的手机号码'

        } else if (res.code == '7015') {

          msg = '优惠码折扣在0.1-9.9折之间'

        } else if (res.code == '7016') {

          msg = '优惠码价格不能大于2980元'

        } else if (res.code == '1501') {

          msg = '无可导出的数据'

        } else if (res.code == '1025') {

          msg = '无可导出的数据'

        } else if (res.code == '500') {

          msg = res.errorMsg

        } else if (res.code == '5') {

          vm.$router.push('/')

          return false

        }else {

          msg = '加载失败,请刷新后重试'

        }

        vm.$message({

          type: 'error',

          center:true,

          message: msg

        })

      }

    }else if(res.code == '0'){

    } else {

      msg = '网络错误,请稍后重试!'

      vm.$message({

        type: 'error',

        center:true,

        message: msg

      })

    }

    return false

  }

  /**

  * 作者 shuidi

  * 日期 20170710

  * 处理所有的vue-axios的response 并判断是否成功

  * 2个回调函数, 处理成功和失败

  *

  */

  Util.processRes = function(response, sucessCallback, failCallback) {

    if (response.code == 0) {

      if (sucessCallback){

        sucessCallback.call(response, response.data)

      }

    } else {

      if (failCallback) {

        failCallback.call(response, response.data)

      }

    }

  }

  Util.propsArrayToString = function (array) {

    var resultArray = []

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

      var current = array[i]

      resultArray.push(current.id + ':' + current.value)

    }

    return resultArray.join(',')

  }

  /**

  * 作者 shuidi

  * 截取指定的字符串

  * 用法 Util.getCutOutStr('12334','34');

  */

  Util.getCutOutStr = function (string, str) {

    // var str_before = string.split(str)[0]

    var strAfter = string.split(str)[1]

    return strAfter

  }

  /**

  * 作者 shuidi

  * 删除公用方法

  * 用法 Util.delAction('this','接口','删除后执行的方法');

  */

  Util.delAction = function (vm, url, action) {

    vm.$ajax.get(url).then((response) => {

      Util.processRes(response, (responseData) => {

        action(1)

        vm.$message({

          type: 'success',

          message: responseData.msg

        })

        return true

      }, (responseData) => {

        Util.processError(vm, responseData)

      })

    }).catch(res => {

      Util.processError(vm)

    })

  }

  /*Util.loading =function (vm) {

    console.log(vm)

    return vm.$loading({

      target:document.body,

      lock: true,

      text: '拼命加载中...',

    });

  }

  Util.close = function () {

    this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭

      Util.loading.close()

    });

  }*/

  //设置session

  Util.setSession = function(key,value){

    sessionStorage.setItem(key,value);

  }

  Util.getSession = function(key){

    return sessionStorage.getItem(key);

  }

  Util.removeSession = function(key){

    return sessionStorage.removeItem(key);

  }

//设置localStorage

  Util.setLocalStorage = function(key,value){

    localStorage.setItem(key,value);

  }

  Util.getLocalStorage = function(key){

    return localStorage.getItem(key);

  }

  Util.removeLocalStorage = function(key){

    return localStorage.removeItem(key);

  }

Util .getUrlParameter = function (sParam) {

  let sPageURL = decodeURIComponent(window.location.search.substring(1)),

    sURLVariables = sPageURL.split('&'),

    sParameterName,

    i;

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

    sParameterName = sURLVariables[i].split('=');

    if (sParameterName[0] === sParam) {

      return sParameterName[1] === undefined ? true : sParameterName[1];

    }

  }

};

  window.Util = Util

}) (window)

export default {

  install: function (Vue) {

    Vue.Util

  }

}

上一篇下一篇

猜你喜欢

热点阅读