随手记

1.element-ui中撤销单选

<el-radio-group  v-model="pushType">
    <el-radio @click.native.prevent="checkBoxChange(0)" :label="0">短信推送</el-radio>
    <el-radio @click.native.prevent="checkBoxChange(2)" :label="2">APP推送</el-radio>
 </el-radio-group>

methods: {
    checkBoxChange (val) {
      val === this.pushType ? this.pushType = null : this.pushType = val
    }
}

2.阻止表单提交

 @submit.native.prevent    阻止表单enter提交

3.echarts图表鼠标移动展示弹窗样式自定义

<template>
 <div class="line" id="line"></div>
</template>
 
<script>
export default {
  props: {
    
  },
  data () {
    return {
      myChart: null
    }
  },
  created () {
      // 调用方法绘制图表
      // 无法再created中调用drawLine()方法
  },
  mounted () {
    this.drawLine()
  },
  methods:{
    drawLine(){
      // 为charts选定父容器并初始化charts画布
      var myChart = this.$echarts.init(document.getElementById('line'));
      // 为图表添加数据
      myChart.setOption({
        xAxis: {
          type: 'category',
          data: ['6-24', '6-26', '6-28', '7-1', '7-6', '7-9', '7-11', '7-16','8-1', '8-2', '8-3', '8-4', '8-5', '8-6', '8-7', '8-8'],
          axisLabel: {
            color: '#9B9B9B',
            fontSize: 20,
            padding: [10,0,0,0]
          }
        },
        grid: {
          left: '3.5%',
          right: '5%',
          // bottom: '1%',
          containLabel: true
        },
        tooltip: {
          trigger: 'axis',
          // trigger: 'item',
          triggerOn: 'mousemove|click|touchstart',
          position: [0, 0],
          axisPointer:{
            show: true,
            type : 'line',
            lineStyle: {
              type : 'dashed',
              width : 2,
              color: '#EC5642'
            }
          },
          formatter: function (params) { // 设置提示信息的内容
            return `<div style="width: 100vw;height: 44px;font-size: 26px;line-height: 44px;padding:0 15px;box-sizing:border-box;">
            <span style="color: #323744;">${params[0].axisValue}</span>
            <span style="float:right;padding-right: 10px;">
              <span style="color: #323744;">七日年化收益率:</span>
              <span style="color: #EC5642;">${params[0].data}%</span>
            </span>
          </div>`
          },
          backgroundColor: 'rgba(242,232,231,1)',
          textStyle: {
            fontSize: 18,
            width: '100%'
          }
        },
        yAxis: {
          min:0,
          max:1,
          type: 'value',
          axisLabel: {
            formatter: function (value) {           
              return value.toFixed(2);      
            },
            color: '#9B9B9B',
            fontSize: 20,
            padding: [0,5,0,0]
          },
          axisLine: {
            show: false
          }
        },
        series: [{
          data: [0.3, 0.5, 0.1, 0.4, 0.6, 0.2, 0.8, 0.6, 0.3, 0.1, 0.5, 0.2, 0.2, 0.6, 0.4, 0.5],
          type: 'line',
          smooth: true,
          lineStyle: {
            color: '#EC5642',
            width: 2,
          }
        }]
      })
      this.myChart = myChart             
    }
  }
}
</script>

<style lang="less" scoped>
.line{
  width: 375px;
  height: 181px;
  overflow-x:hidden;
  .chart-msg{
    width:100vw!important;
    height:22px!important;
    background:rgba(242,232,231,1)!important;
  }
}
</style>

4.记录用户行为,不离开当前页面,生成唯一assessToken

function ajax(options) {
  options = options || {};
  options.type = (options.type || "GET").toUpperCase();
  options.dataType = options.dataType || 'json';
  options.async = options.async || true;
  // var params = getParams(options.data);
  var xhr;
  if (window.XMLHttpRequest){
    xhr = new XMLHttpRequest();
  }else{
    /* eslint-disable */
    xhr = new ActiveXObject('Microsoft.XMLHTTP')
  }
  xhr.onreadystatechange = function () {
      if (xhr.readyState == 4){
        var status = xhr.status;
        if (status >= 200 && status < 300 ){
            options.success && options.success(xhr.responseText,xhr.responseXML);
        }else{
            options.fail && options.fail(status);
        }
      }
  };
  if (options.type == 'GET'){
      xhr.open("GET",options.url + '?' + params, options.async);
      xhr.send(null)
  }else if (options.type == 'POST'){
      xhr.open('POST',options.url, options.async);
      // application/x-www-form-urlencoded
      xhr.setRequestHeader('Content-Type','application/json');
      xhr.send(options.data);
  }
}

function getParams(data) {
  var arr = [];
  for (var param in data){
    arr.push(encodeURIComponent(param) + '=' +encodeURIComponent(data[param]));
  }
  // arr.push(('token=' + Math.random()).replace('.'));
  return arr.join('&');
}

var page = {
  token: sessionStorage.getItem('behavior_token') ? sessionStorage.getItem('behavior_token') : '', //避免刷新导致导致token为空
  setToken: function () {
    page.token = '';
    var s = [];
    var hexDigits = "0123456789abcdef";
    for (var i = 0; i < 36; i++) {
        s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
    }
    s[14] = "4";  // bits 12-15 of the time_hi_and_version field to 0010
    s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);  // bits 6-7 of the clock_seq_hi_and_reserved to 01
    s[8] = s[13] = s[18] = s[23] = "-";
    page.token = s.join("");
  },  
  uuid: function(path) {
    let hash = sessionStorage.getItem('behavior_hash') ? sessionStorage.getItem('behavior_hash') : '' //获取上次存贮的路由
    if (hash) {
      if (hash == path && page.token) {
        return page.token // 如果本次路由和上次路由相同,返回同一个token
      } else {
        page.setToken()
      }
    } else {
      page.setToken()
    }
    window.sessionStorage.setItem('behavior_hash', path)
    window.sessionStorage.setItem('behavior_token', page.token)
    return page.token;
  }
}

function Behavior (url, channel) {
  Behavior.prototype._behavior = function (param) {
    let accessToken = page.uuid(param.pageId)
    let ua = navigator.userAgent.toLowerCase()
    let obj
    if (ua.indexOf('micromessenger') != -1) {
      obj = {accessToken: accessToken, channel: channel, platform: 'WX'}
    } else {
      obj = {accessToken: accessToken, channel: channel, platform: 'APP'}      
    }
    let _obj = {...param,...obj}
    ajax({
      url: url + '/api/statistics/report', 
      type: 'POST',
      dataType: 'json',
      contentType: 'application/json',
      data: JSON.stringify(_obj)
    })
  };
}

export default Behavior
全局调用 
var be = new Behavior('http://10.137.133.2:10011', 1)
Vue.prototype.$be = be

5.使用lib-flexible、postcss-px2rem实现移动端尺寸兼容

①安装依赖
 yarn add lib-flexible
 yarn add postcss-px2rem
②main.js引入lib-flexible
③配置vue.config.js
  css: {
    loaderOptions: {
      css: {},
      postcss: {
        plugins: [
          require('postcss-px2rem')({
            remUnit: 37.5
          })
        ]
      }
    }
  }

6.自定义eslint规则:package.json rules

0: off; 1:warning;2:error

"rules": {
   "no-console": 0,
   "no-debugger": 0,
   "no-delete-var": 0,
   "no-unused-vars": [
      0,
      {
          "vars": "all",
          "args": "after-used"
        }
      ],
      "no-irregular-whitespace": 0
 },
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352