Avue框架实现图表的基本知识 | 附Demo(全)

前言

以下Demo,作为初学者来说,会相应给出一些代码注释,可相应选择你所想要的款式

对于以下Demo,折线图还有象形图,其纵坐标数据会被遮挡(目前该Bug还不知哪里有问题,不知是否组件本身的Bug)

对应Demo来说,只是结合前端来实现,如果要通过前后来实现,需要通过后端返回数据给前端

1. 柱状图

对应所需要的包:

<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>

Demo如下:

<avue-echart-bar ref="echart" :option="config" :data="data" width="1000"></avue-echart-bar>

<script>
export default {
  data() {
      return {
        data: {
		  // 自定义横坐标,这里以动物类型为例
		  "categories": [
		    "狮子",
		    "大象",
		    "长颈鹿",
		    "熊猫",
		    "袋鼠",
		    "企鹅",
		    "斑马",
		    "犀牛"
		  ],
		  "series": [
		    {
		      "name": "数量", // 柱状图数据系列名称
		      // 不同类型动物的数量数据
		      "data": [
		        12, // 狮子数量
		        8,  // 大象数量
		        10, // 长颈鹿数量
		        15, // 熊猫数量
		        20, // 袋鼠数量
		        18, // 企鹅数量
		        14, // 斑马数量
		        9   // 犀牛数量
		      ]
		    }
		  ]
		},
		config: {
		  // 刷新时间
		  refreshTime: 5000,
		  // 标题
		  title: '动物园各种动物数量统计',
		  titlePostion: '',
		  // 标题字体大小
		  titleFontSize: 24,
		  // 标题颜色
		  titleColor: 'rgb(115, 170, 229)',
		  // 标题链接
		  titleLink: "http://avue.top",
		  // 图表简介
		  info: '这是图表的简介',
		  // 网格横向起点
		  gridX: 105,
		  // 网格纵向起点
		  gridY: 50,
		  // 网格横向终点
		  gridX2: 80,
		  // 网格纵向终点
		  gridY2: 100,
		  // 名称颜色
		  nameColor: '#333',
		  // 线条颜色
		  lineColor: '#333',
		  // 横坐标名称字体大小
		  xNameFontSize: 16,
		  // 纵坐标名称字体大小
		  yNameFontSize: 16,
		  // 是否显示标签
		  labelShow: false,
		  // 标签字体大小
		  labelShowFontSize: 14,
		  // 标签字体粗细
		  labelShowFontWeight: 300,
		  // 是否反转纵坐标
		  yAxisInverse: false,
		  // 是否反转横坐标
		  xAxisInverse: false,
		  // 是否显示横坐标
		  xAxisShow: true,
		  // 是否显示纵坐标
		  yAxisShow: true,
		  // 是否显示横坐标分隔线
		  xAxisSplitLineShow: false,
		  // 是否显示纵坐标分隔线
		  yAxisSplitLineShow: false,
		  // 刷新频率
		  refresh: 3000,
		  // 柱状图宽度
		  barWidth: 30,
		  // 柱状图圆角
		  barRadius: 8,
		  // 柱状图颜色
		  barColor: [{
		    color1: '#83bff6',
		    color2: '#188df0',
		    postion: 90
		  }, {
		    color1: '#23B7E5',
		    color2: '#564AA3',
		    postion: 50
		  }],
		  // 柱状图最小高度
		  barMinHeight: 2,
		}

      }
    },
}
</script>

最终截图如下:

在这里插入图片描述

2. 折线图

对应所需要的包:

<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>

具体Demo如下:

<avue-echart-line :option="option" :data="data" width="1000"></avue-echart-line>
<script>
export default {
  data() {
    return {
      data: {
        categories: [
          "狮子",
          "大象",
          "长颈鹿",
          "熊猫",
          "袋鼠",
          "企鹅"
        ],
        series: [
          {
            name: "出生数量",
            data: [
              10, // 狮子出生数量
              8,  // 大象出生数量
              12, // 长颈鹿出生数量
              6,  // 熊猫出生数量
              15, // 袋鼠出生数量
              20  // 企鹅出生数量
            ]
          }, 
          {
            name: "死亡数量",
            data: [
              2,  // 狮子死亡数量
              1,  // 大象死亡数量
              3,  // 长颈鹿死亡数量
              0,  // 熊猫死亡数量
              4,  // 袋鼠死亡数量
              2   // 企鹅死亡数量
            ]
          }
        ]
      },
      option: {
        width: 1200,
        height: 600,
        title: '动物出生与死亡数量统计',
        smooth: true, // 是否顺滑
        areaStyle: true // 是否面积
      }
    }
  }
}
</script>

截图如下:(对于这个Demo,纵轴的数据被遮挡,一直调试不好,如果有懂的兄弟指导下

在这里插入图片描述

3. 饼图

导入相应的包:

<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>

Demo如下:

<avue-echart-pie :option="option" :data="data" width="1000"></avue-echart-pie>
<script>
export default {
  data() {
    return {
      // 数据,每个对象包含动物类型和数量
      data: [
        { value: 20, name: '狮子' },
        { value: 15, name: '大象' },
        { value: 25, name: '长颈鹿' },
        { value: 10, name: '熊猫' },
        { value: 30, name: '袋鼠' }
      ],
      // 图表配置选项
      option: {
        width: '100%', // 图表宽度
        height: 600, // 图表高度
        title: '动物种类分布', // 图表标题
        subtitle: '根据数量统计', // 图表副标题
        labelShow: true, // 是否显示标签
        radius: true, // 是否显示半径
        "barColor": [ // 柱状图颜色配置
          {
            "color1": "#83bff6", // 颜色1
          },
          {
            "color1": "#23B7E5", // 颜色2
          },
          {
            "color1": "rgba(154, 168, 212, 1)", // 颜色3
          },
          {
            "color1": "#188df0", // 颜色4
          },
          {
            "color1": "#564AA3", // 颜色5
          }
        ]
      },
    }
  }
}
</script>

截图如下:

在这里插入图片描述

4. 刻度盘

导入相应的包:

<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>

Demo如下:

<avue-echart-gauge ref="echart" :option="config" :data="data" width="1000"></avue-echart-gauge>
<script>
export default {
  data() {
    return {
      // 游客满意度数据
      data: {
        value: 75, // 完成率
        name: '游客满意度', // 指示名称
        min: 0, // 最小值
        max: 100, // 最大值
        unit: '%' // 单位
      },
      // 图表配置选项
      config: {
        lineSize: 25, // 仪表盘线条大小
        barColor: [ // 仪表盘颜色配置
          {
            postion: 0.2, // 起始位置
            color1: '#91c7ae' // 颜色1
          },
          {
            postion: 0.8, // 中间位置
            color1: '#63869e' // 颜色2
          },
          {
            postion: 1, // 结束位置
            color1: '#c23531' // 颜色3
          }
        ]
      }
    }
  },
}
</script>

截图如下:

在这里插入图片描述

6. 仪表盘

与上面的刻度盘稍微有些差异,此处的Demo只展示配置参数:

// 速度仪表盘配置项
mySpeedOption: {
  tooltip: {
    formatter: '{a} <br/>{b} : {c}%' // 工具提示格式化,显示系列名称、数据项名称和数值
  },
  series: [
    {
      name: 'Pressure', // 系列名称为"Pressure"
      type: 'gauge', // 图表类型为仪表盘
      center: ['50%', '50%'], // 仪表盘中心位置,以容器宽高的百分比表示
      detail: {
        valueAnimation: true, // 仪表盘数值变化时是否启用动画效果
        formatter: '{value}', // 数值显示格式化
      },
      data: [
        {
          value: '30', // 仪表盘当前数值为30
          name: 'SPEED' // 数据项名称为"SPEED"
        }
      ],
      axisLine: {
        show: true, // 是否显示仪表盘轴线
        lineStyle: {
          color: [ // 定义仪表盘轴线的颜色范围
            [0.2, '#0cab38'], // 数值范围在0-0.2时的颜色为'#0cab38'
            [0.4, '#44e54c'], // 数值范围在0.2-0.4时的颜色为'#44e54c'
            [0.6, '#dde15e'], // 数值范围在0.4-0.6时的颜色为'#dde15e'
            [0.8, '#efa810'], // 数值范围在0.6-0.8时的颜色为'#efa810'
            [1, '#f12e14'] // 数值范围在0.8-1时的颜色为'#f12e14'
          ]
        }
      }
    }
  ]
}

截图如下:

在这里插入图片描述

7. 象形图

导入相应的包:

<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.2.1/echarts.min.js"></script>

Demo如下:

<avue-echart-pictorialbar ref="echart" :option="config" :data="data" width="1000"></avue-echart-pictorialbar>
<script>
export default {
  data() {
    return {
      // 不同设备类型的数据
      data: [{
          "name": "笔记本电脑",
          "value": 97,
          "url": "http://www.baidu.com" // 链接地址
        },
        {
          "name": "手机(iOS)",
          "value": 50,
          "url": "http://www.baidu.com" // 链接地址
        },
        {
          "name": "手机(Android)",
          "value": 59,
          "url": "http://www.baidu.com" // 链接地址
        },
        {
          "name": "Windows Phone",
          "value": 29
        },
        {
          "name": "BlackBerry",
          "value": 3
        },
        {
          "name": "Nokia S60",
          "value": 2
        },
        {
          "name": "Nokia S90",
          "value": 1
        }
      ],
      // 图表配置选项
      config: {
        symbolSize: 30, // 图标大小
        split: 30, // 分割
        fontSize: '24', // 字体大小
        xAxisShow: false, // 是否显示横轴
        yAxisShow: true, // 是否显示纵轴
        color: '#4dffff', // 颜色
        nameColor: '#564AA3', // 名称颜色
        xNameFontSize: '24', // 横坐标名称字体大小
        yNameFontSize: '24' // 纵坐标名称字体大小
      }
    }
  },
}
</script>

截图如下:

在这里插入图片描述

8. 彩蛋

以下结合前后端实现的图形

对应后端的接口直接放在mounted函数中,显示前先执行函数

mounted() {
     this.initChart();
     var date = new Date();
     this.currentMonth = date.getMonth()+1 >9 ? date.getMonth()+1 : '0'+(date.getMonth()+1);
     var currentDate = date.getFullYear()+'-'+this.currentMonth;

     // 异步请求1
     countListRepareTime(currentDate,null).then(resp=>{
       var list = resp.data.data;
       var arrayList = [];
       for(var i = 0;i < list.length;i++){
         arrayList.push(list[i].count);
       }
       // 更新 barData 中的数据
       this.barData.series[0].data = arrayList;
     })

     // 异步请求2:获取按月份统计的设备故障数据
     countListByMonth(currentDate).then(resp=>{
       var list = resp.data.data;
       // 遍历获取到的数据列表
       for(var i = 0;i < list.length;i++){
         // 再次遍历已初始化的饼状图数据
         for(var j = 0;j < this.data.length;j++){
           // 如果当前设备类型与已初始化的数据中的设备类型相匹配
           if(list[i].equipmentType == this.data[j].name){
             // 更新饼状图数据中对应设备类型的值为统计到的设备故障数
             this.data[j].value = list[i].count;
           }
         }
         // 计算总的设备故障数
         this.total +=  list[i].count;
       }
       // 更新饼状图的数据
       this.pieData = this.data;
     })


// 省略

8.1 饼图

网页配置如下:

<el-col :span="12">
   <el-card style="position: relative; height: 650px;">
     
     <el-row><div><span>{{barTitle}} - </span>占用比统计</div></el-row>
       <el-row style="margin-top: -80px;"><!-- 添加上边距 -->
         <el-row style="position: relative;left:3%;">
           <!-- avue-echart-pie 是用于显示饼状图的组件,通过 :option 和 :data 分别传入配置项和数据 -->
           <avue-echart-pie  :option="pieoption" :data="pieData" width="95%"></avue-echart-pie>
         </el-row>
     </el-row>
     
   </el-card>
 </el-col>

饼图的相关配置如下:

// 饼状图
pieoption: {
  switchTheme: true, // 是否启用主题切换
  labelShow: true, // 是否显示标签
  radius: true, // 是否启用饼状图的半径
  "barColor": [
    {
      "color1": "#83bff6",
    },
    {
      "color1": "#23B7E5",
    },
    {
      "color1": "rgba(154, 168, 212, 1)",
    },
    {
      "color1": "#188df0",
    },
    {
      "color1": "#564AA3",
    }
  ]
},
// 饼状图数据
pieData:[
  // 初始化饼状图数据,每个对象代表一个饼图的一部分,包括值(value)和名称(name)
  { value: 0, name: 'aa' },
  { value: 0, name: 'bb' },
  { value: 0, name: 'cc' },
  { value: 0, name: 'dd' },
  { value: 0, name: 'ee' },
  { value: 0, name: 'ff' },
],

结合后端接口返回的数据,最终如图所示:

在这里插入图片描述

8.2 柱状图

网页配置如下:

<el-col :span="12">
  <el-card style="position: relative;height: 650px;">
    <el-row><div><span>{{barTitle}}</span>故障类型统计</div></el-row>
    <el-row style="position: relative;left:5%;">
      <avue-echart-bar ref="echart"  :option="barOption" :data="barData" width="95%"></avue-echart-bar>
    </el-row>
  </el-card>
</el-col>

折线图的相关配置如下:

// 柱状图表配置
barOption:{
  gridX: 60, // 图表左边距
  gridY: 70, // 图表上边距
  gridX2: 80, // 图表右边距
  gridY2: 100, // 图表下边距
  labelShow: true, // 是否显示标签
  labelShowFontSize: 14, // 标签字体大小
  labelShowFontWeight: 300, // 标签字体粗细
  yAxisInverse: false, // y轴是否反转
  xAxisInverse: false, // x轴是否反转
  xAxisShow: true, // 是否显示x轴
  yAxisShow: true, // 是否显示y轴
  xAxisSplitLineShow: false, // 是否显示x轴分隔线
  yAxisSplitLineShow: true, // 是否显示y轴分隔线
  refresh: 3000, // 刷新频率(毫秒)
  barWidth: 30, // 柱状图宽度
  barRadius: 8, // 柱状图圆角
  barColor: [{ // 柱状图颜色配置
    color1: '#83bff6', // 起始颜色
    color2: '#188df0', // 结束颜色
    postion: 90 // 渐变位置
  }, {
    color1: '#23B7E5',
    color2: '#564AA3',
    postion: 50
  }],
  barMinHeight: 2, // 柱状图最小高度
},

对应的数据如下:

// 柱状图配置
barData: {
  // 柱状图横轴的分类,即柱状图的每个柱子的名称
  "categories": [
    "15分钟内故障",
    "60分钟以上故障",
    "60分钟内故障",
    "停机故障",
  ],
  "series": [
    {
      "name": "故障次数",
      "data": [
        10,
        2,
        3,
        4,
      ]
    }
  ]
},

结合后端接口返回的数据,最终如图所示:

在这里插入图片描述

对于图表的反转,其含义如下:(y轴如果反转)

在这里插入图片描述

8.3 折线图

<avue-echart-line ref="echart"  :option="lineoption" :data="linedata" width="95%"></avue-echart-line>

相应的数据配置:

// 折线图配置
lineoption: {
  smooth: true,//是否顺滑
  areaStyle: true,//是否面积
  symbol: 'none',//是否显示点
},
linedata:{
  // 横坐标
  categories: ["1月","2月","3月","4月","5月","6月",
    "7月","8月","9月","10月","11月","12月"],
  series: [
    {
      name: "xx",
      data: [],
      itemStyle: {
        color: 'red' // 设置场桥数据系列的颜色为红色
      }
    }, {
      name: "yy",
      data: [],
      itemStyle: {
        color: 'blue' 
      }
    }

后续结合后端返回前端显示:

// 计算今年之前的所有月份
const monthsToQuery = [];
for (let i = 0; i <= date.getMonth(); i++) {
    const month = i < 9 ? '0' + (i + 1) : (i + 1); // 格式化月份为两位数
    const year = date.getFullYear();
    monthsToQuery.push(`${year}-${month}`);
}
// 发起异步请求
Promise.all(monthsToQuery.map(month => countListByMonthAndType(month,null)))
    .then(responses => {
      for(var i = 0;i < responses.length;i++){
        var list = responses[i].data.data;
        for(var j = 0;j < this.linedata.series.length;j++){
         // 如果当前设备类型与已初始化的数据中的设备类型相匹配
          if (list[j].equipmentType == this.linedata.series[j].name) {
              this.$set(this.linedata.series[j].data, i, list[j].count);
          }
        }

      }
      });

截图如下:

在这里插入图片描述

8.4 温度仪表盘

此处给出详细的配置表:

// 温度仪表盘配置项
myTempOption: {
  series: [
    {
      radius: '60%', // 仪表盘半径为容器宽高的60%
      type: 'gauge', // 图表类型为仪表盘
      center: ['50%', '60%'], // 仪表盘中心位置,以容器宽高的百分比表示
      startAngle: 200, // 仪表盘起始角度为200度
      endAngle: -20, // 仪表盘结束角度为-20度
      min: 0, // 最小值为0
      max: 60, // 最大值为60
      splitNumber: 12, // 分割段数为12
      itemStyle: {
        color: '#FFAB91' // 仪表盘进度条样式颜色为'#FFAB91'
      },
      progress: {
        show: true, // 是否显示进度条
        width: 30 // 进度条宽度为30
      },
      pointer: {
        show: false // 是否显示指针
      },
      axisLine: {
        lineStyle: {
          width: 30 // 轴线宽度为30
        }
      },
      axisTick: {
        distance: -45, // 刻度线距离仪表盘的距离为-45
        splitNumber: 5, // 刻度线分割段数为5
        lineStyle: {
          width: 2, // 刻度线宽度为2
          color: '#999' // 刻度线颜色为'#999'
        }
      },
      splitLine: {
        distance: -52, // 分隔线距离仪表盘的距离为-52
        length: 14, // 分隔线长度为14
        lineStyle: {
          width: 3, // 分隔线宽度为3
          color: '#999' // 分隔线颜色为'#999'
        }
      },
      axisLabel: {
        distance: -20, // 刻度标签距离仪表盘的距离为-20
        color: '#999', // 刻度标签颜色为'#999'
        fontSize: 20 // 刻度标签字体大小为20
      },
      anchor: {
        show: false // 是否显示锚点
      },
      title: {
        show: false // 是否显示标题
      },
      detail: {
        valueAnimation: true, // 数值变化时是否启用动画效果
        width: '60%', // 详情框宽度为容器宽度的60%
        lineHeight: 40, // 详情框行高为40
        borderRadius: 8, // 详情框边框圆角为8
        offsetCenter: [0, '-15%'], // 详情框相对于中心的偏移量为[0, '-15%']
        fontSize: 30, // 详情框字体大小为30
        fontWeight: 'bolder', // 详情框字体粗细为bolder
        formatter: '{value} °C', // 数值显示格式为"{value} °C"
        color: 'auto' // 详情框颜色自动设置
      },
      data: [
        {
          value: 20 // 仪表盘当前数值为20
        }
      ]
    },
    {
      radius: '60%', // 仪表盘半径为容器宽高的60%
      type: 'gauge', // 图表类型为仪表盘
      center: ['50%', '60%'], // 仪表盘中心位置,以容器宽高的百分比表示
      startAngle: 200, // 仪表盘起始角度为200度
      endAngle: -20, // 仪表盘结束角度为-20度
      min: 0, // 最小值为0
      max: 60, // 最大值为60
      itemStyle: {
        color: '#FD7347' // 仪表盘进度条样式颜色为'#FD7347'
      },
      progress: {
        show: true, // 是否显示进度条
        width: 8 // 进度条宽度为8
      },
      pointer: {
        show: false // 是否显示指针
      },
      axisLine: {
        show: false // 是否显示轴线
      },
      axisTick: {
        show: false // 是否显示刻度线
      },
      splitLine: {
        show: false // 是否显示分隔线
      },
      axisLabel: {
        show: false // 是否显示刻度标签
      },
      detail: {
        show: false // 是否显示详情
      },
      data: [
        {
          value: 20 // 仪表盘当前数值为20
        }
      ]
    }
  ]
}

截图如下:

在这里插入图片描述

8.5 进度条

以下Demo只给出配置信息:

myBatteryOption: {
  xAxis: {
    max: 100, // x轴最大值为100
    splitLine: {
      show: false // 不显示分隔线
    },
    axisLabel: {
      show: false, // 不显示轴标签
      // fontSize: 10,
      // color: '#cacdd5',
    },
    axisLine: {
      show: false // 不显示轴线
    },
    axisTick: {
      show: false // 不显示刻度线
    },
  },
  grid: {
    left: 95, // 左边距离容器左边的距离为95
    top: 5, // 上边距离容器上边的距离为5
    right: 65, // 右边距离容器右边的距离为65
    bottom: 5, // 下边距离容器底部的距离为5
    containLabel: true // 包含坐标轴的刻度标签在内
  },
  yAxis: [{
    type: "category", // y轴类型为类目型
    inverse: true, // y轴反转
    data: [{ // 数据
      name:'电量', // 数据名称为"电量"
      value: 50 // 数据值为50
    }],
    axisLine: {
      show: false // 不显示轴线
    },
    axisTick: {
      show: false // 不显示刻度线
    },
    axisLabel: {
      show: false // 不显示轴标签
    },
  }],
  series: [
    {
      // 内
      type: "bar", // 图表类型为条形图
      barWidth: 16, // 柱宽度为16
      silent: true, // 不响应鼠标事件
      itemStyle: {
        normal: {
          color: "#009cd6" // 内部柱的颜色为"#009cd6"
        }
      },
      label: {
        normal: {
          formatter: "{b}", // 标签格式化为数据名称
          textStyle: {
            color: "#6f7178", // 文字颜色为"#6f7178"
            fontSize: 14 // 文字大小为14
          },
          position: 'left', // 标签位置在左侧
          distance: 10, // 距离柱子的距离为10
          show: true // 显示标签
        }
      },
      data: [{ // 数据
        name:'电量', // 数据名称为"电量"
        value: 50 // 数据值为50
      }],
      z: 1, // 图层z-index为1
      animationEasing: "elasticOut" // 动画效果为"elasticOut"
    },
    {
      // 分隔
      type: "pictorialBar", // 图表类型为象形柱图
      itemStyle: {
        normal: {
          color: "#fff" // 柱的颜色为白色
        }
      },
      symbolRepeat: "fixed", // 符号重复类型为"fixed"
      symbolMargin: 2, // 符号间距为2
      symbol: "rect", // 符号形状为矩形
      symbolClip: true, // 是否裁剪符号
      symbolSize: [3, 16], // 符号大小为[3, 16]
      symbolPosition: "start", // 符号位置在起始位置
      symbolOffset: [1, -1], // 符号偏移量为[1, -1]
      symbolBoundingData: 100, // 符号边界数据为100
      data: [100], // 数据为100
      z: 2, // 图层z-index为2
      animationEasing: "elasticOut", // 动画效果为"elasticOut"
    },
    {
      // label
      type: "pictorialBar", // 图表类型为象形柱图
      symbolBoundingData: 100, // 符号边界数据为100
      itemStyle: {
        normal: {
          color: "none" // 不填充颜色
        }
      },
      label: {
        normal: {
          formatter: (params) => { // 标签格式化为数据值
            let text;
            text = '{f| ' + params.data  + '}';
            return text;
          },
          rich: {
            f: {
              color: "#009cd6", // 文字颜色为"#009cd6"
              fontSize: 16 // 文字大小为16
            }
          },
          position: 'right', // 标签位置在右侧
          distance: 5, // 距离柱子的距离为5
          show: true // 显示标签
        }
      },
      data: [50], // 数据为50
      z: 0, // 图层z-index为0
    },
    {
      name: "外框", // 图表名称为"外框"
      type: "bar", // 图表类型为条形图
      barGap: "-111%", // 柱间距为"-111%"
      data: [100], // 数据为100
      barWidth: 20, // 柱宽度为20
      itemStyle: {
        normal: {
          // barBorderRadius: [5, 5, 5, 5],
          color: "transparent", // 不填充颜色
          barBorderColor: "#009cd6", // 边框颜色为"#009cd6"
          barBorderWidth: 1, // 边框宽度为1
        }
      },
      z: 3 // 图层z-index为3
    },
  ]
}

截图如下:

  • 43
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值