基于echarts的快速开发-xheCharts框架使用说明手册

 

1.简介

开源地址:https://gitee.com/a370300020/xhe

 

版本迭代:

版本

日期

作者

内容

V1.0

2020-06-20

九曜真人

实现饼图、柱状图、折线图

v2.0

2021-04-26

九曜真人

实现玫瑰图、折柱图、地图、雷达图、漏斗图、仪表盘、圆环图、文字域、交叉表

 

 

 

 

 

 

 

 

 

 

 

 

效果展示:

 

2.引用

<link rel="stylesheet" href="../../plugins/xhe/xhe.css" />
<script src="../../plugins/jquery/jquery-1.11.1.min.js"></script>
<script src="../../plugins/jquery/jquery-ui.min.js"></script>
<script src="../../plugins/echarts/echarts.min.5.0.2.js"></script>
<script src="../../plugins/echarts/echarts-theme.js"></script>
<script src="../../plugins/echarts/map/province/beijing.js"></script>
<script src="../../plugins/xhe/xheModel.js"></script>
<script src="../../plugins/xhe/xheCharts.js"></script>
<script src="../../plugins/xhe/xheList.js"></script>

 

3.枚举

枚举定义

version

V1_0:1.0版本

V2_0:2.0版本

V3_0:3.0版本

type

Label:文字标签

Line:折线图

Pie:饼状图

HBar:横向柱状图

VBar:纵向柱状图

Barline:折柱图

Gauge:仪表盘

Radar:雷达图

Funnel:漏斗图

Map:地图

Table:交叉表

theme

Vintage

dark

westeros

essos

wonderland

walden

chalk

infographic

Macarons

roma

shine

purple

 

4.属性

属性定义默认值

control

组件容器的ID

 

version

组件容器渲染的版本

eCharts.version.V1_0

type

组件容器渲染的样式

null

titleText

主标题文本,支持使用\n换行

 

titleColor

主标题文字的颜色,默认值:#ffffff

FFFFFF

titleStyle

主标题文字字体的风格,normal/italic/oblique,默认值:normal

normal

titleWeight

主标题文字字体的粗细,normal/bold/bolder/lighter,默认值:bold

bold

titleSize

主标题文字的字体大小,默认值:14

14

titleTop

主标题上端的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是top\middle\bottom,默认值:auto

auto

titleBottom

主标题下端的距离,默认值:auto

auto

titleLeft

主标题左侧的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是left\center\right,默认值:center

center

titleRight

主标题右侧的距离,默认值:auto

auto

tooltipShow

是否显示提示框组件,默认值:false

false

tooltipTrigger

触发类型:坐标轴触发,默认值:axis

axis

tooltipFormatter

提示框浮层内容格式器:{a}(系列名称),{b}(类目值),{c}(数值) ,默认值:{b}:{c}

{b}:{c}

tooltipPointer

指示器类型,line:直线指示器;shadow:阴影指示器;none:无指示器;cross:十字准星指示器,默认值:shadow

shadow

tooltipPosition

只在trigger为item的时候有效,inside/top/left/right/bottom

inside

legendShow

是否显示图例,默认值:false

false

legendGroup

图例的数据数组

[]

legendValue

图例的取值范围,[min,max]

[0, 100]

legendColor

图例文字的颜色,默认值:#ffffff

FFFFFF

legendSize

图例文字的大小,默认值:14

14

legendTop

图例组件上端的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是top\middle\bottom 20

20

legendBottom

图例组件下端的距离,默认值:auto

auto

legendLeft

图例组件左侧的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是left\center\right,默认值:right

right

legendRight

图例组件右侧的距离,默认值:auto

auto

legendOrient

图例列表的布局朝向,horizontal/vertical,默认值:horizontal

horizontal

colorTheme

颜色主题

eCharts.theme[0]

areaOpacity

图形透明度,0/1,0:不绘制该图形

0

top

组件容器上端的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是top\middle\bottom,默认值:4%

4%

bottom

组件容器下端的距离,默认值:4%

4%

left

组件容器左侧的距离,可以是20这样的具体像素值,可以是'20%'这样相对于容器高宽的百分比,也可以是left\center\right,默认值:4%

4%

right

组件容器右侧的距离,默认值:4%

4%

roam

组件容器是否可以拖拽移动

true

zoom

组件容器的显示比例

1

center

饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标

[['50%', '50%']]

radius

饼图的半径,number:直接指定外半径值;string:表示外半径为可视区尺寸(容器高宽中较小一项);Array.<number|string>:第一项是内半径,第二项是外半径

['0%', '65%']

containLabel

组件容器是否包含坐标轴的刻度标签,默认值:true

true

containTick

组件容器是否包含坐标轴的子刻度标签

true

containSplit

组件容器是否包含坐标轴的子刻度

10

axisColor

x轴与y轴的颜色,默认值:#85EAFB

85EAFB

axisSize

x轴与y轴文字的大小,默认值:12

12

axisXInterval

x轴强制设置坐标轴分割间隔,0:强制显示所有标签;1:隔一个标签显示一个标签;2:表示隔两个标签显示一个标签,以此类推,默认值:0

0

axisYInterval

y轴强制设置坐标轴分割间隔,0:强制显示所有标签;1:隔一个标签显示一个标签;2:表示隔两个标签显示一个标签,以此类推,默认值:0

0

axisXInside

x轴刻度标签是否朝内,默认值:false(朝外)

false

axisYInside

y轴刻度标签是否朝内,默认值:false(朝外)

false

axisXRotate

x轴刻度标签旋转的角度,角度从-90度到90度,默认值:0

0

axisYRotate

y轴刻度标签旋转的角度,角度从-90度到90度,默认值:0

0

axisXName

x轴名称

 

axisYName

y轴名称

 

axisXType

x轴类型,value;数值轴;category:类目轴;time:时间轴,log:对数轴,默认值:category

category

axisYType

y轴类型,value;数值轴;category:类目轴;time:时间轴,log:对数轴,默认值:value

value

axisXIndex

x轴Z值,默认值:1

1

axisYIndex

x轴Z值,默认值:1

1

boundaryGap

x轴两边留白策略,类目轴:true/false;非类目轴:[min, max],默认值:true

true

splitLine

y轴在组件容器区域中的分隔线,默认值:false

false

parallel

x轴刻度标签是否错位显示,默认值:false

false

labelShow

是否显示标签,默认值:false

false

labelPosition

标签的位置,top/left/right/bottom/inside/insideLeft/insideRight/insideTop/insideBottom/insideTopLeft/insideBottomLeft/insideTopRight/insideBottomRight,默认值:top

top

labelLength

饼图视觉引导线,数组的第一项是贴近饼状图的长度,第二项是贴近文字段的长度,默认值:[15, 15]

[15, 15]

labelColor

主标题文字的颜色

FFFFFF

labelStyle

主标题文字字体的风格,normal/italic/oblique

normal

labelWeight

主标题文字字体的粗细,normal/bold/bolder/lighter

normal

labelSize

主标题文字的字体大小

12

labelFormatter

主标题文字的格式

 

emphasisShow

是否显示浮动标签

false

emphasisColor

浮动标签文字的颜色

FFFFFF

emphasisStyle

浮动标签文字字体的风格,normal/italic/oblique

normal

emphasisWeight

浮动标签文字字体的粗细,normal/bold/bolder/lighter

normal

emphasisSize

浮动标签文字的字体大小

12

emphasisPosition

浮动标签的位置,top/left/right/bottom/inside/insideLeft/insideRight/insideTop/insideBottom/insideTopLeft/insideBottomLeft/insideTopRight/insideBottomRight

inside

emphasisFormatter

浮动标签文字的格式

 

borderColor

边框颜色(map)

93EBF8

borderWidth

边框粗细(map)

1

roseType

是否展示玫瑰饼图

false

lineSmooth

是否平滑曲线显示

true

barWidth

柱形图宽度

15

pointerShow

仪表盘指针是否显示

true

anchorShow

仪表盘指针中心点是否显示

false

section

仪表盘的指示区间,[start,end]

[210, -30]

toolboxShow

是否显示切换工具

false

toolboxSaveAs

是否显示保存图片

true

data

json结果

 

 

5.方法

方法定义

load()

加载图形控件

 

6.示例

6.1 饼图

//初始化饼图
var initPie = function () {

    let pie = new xheCharts();

    try {
        pie.options.control = "div_pie";
        pie.options.type = eCharts.type.Pie;
        pie.options.titleText = "";
        pie.options.titleSize = 18;
        pie.options.tooltipShow = true;
        pie.options.tooltipFormatter = "{b}:\n{c}条,占{d}%";
        pie.options.center = [['50%', '50%']];
        pie.options.data = [[
            { value: 200, name: '类型1' },
            { value: 100, name: '类型2' },
            { value: 300, name: '类型3' },
            { value: 250, name: '类型4' }
        ]];

        pie.load();
    } catch (e) {
    }
};

 

6.2 玫瑰图

//初始化饼图
var initRosePie = function () {

    let rosePie = new xheCharts();

    try {
        rosePie.options.control = "div_rosepie";
        rosePie.options.type = eCharts.type.Pie;
        rosePie.options.titleText = "";
        rosePie.options.titleSize = 18;
        rosePie.options.tooltipShow = true;
        rosePie.options.tooltipFormatter = "{b}:\n{c}条,占{d}%";
        rosePie.options.roseType = true;
        rosePie.options.radius = ['0%', '75%'];
        rosePie.options.center = [['50%', '50%']];
        rosePie.options.data = [[
            { value: 200, name: '类型1' },
            { value: 100, name: '类型2' },
            { value: 300, name: '类型3' },
            { value: 250, name: '类型4' },
            { value: 100, name: '类型5' },
            { value: 300, name: '类型6' },
            { value: 250, name: '类型7' }
        ]];
        rosePie.load();
    } catch (e) {
    }
};

 

6.3 柱图(纵向)

//初始化柱图
var initVBar = function () {

    let vBar = new xheCharts();
    try {
        vBar.options.control = "div_vbar";
        vBar.options.type = eCharts.type.VBar;
        vBar.options.titleSize = 18;
        vBar.options.toolboxShow = true;
        vBar.options.top = '20%';
        vBar.options.bottom = '4%';
        vBar.options.left = '2%';
        vBar.options.right = '5%';
        vBar.options.axisYName = "单位:条";
        vBar.options.tooltipShow = true;
        vBar.options.tooltipFormatter = "{b}:<br/>{a0}:{c0}条<br/>{a1}:{c1}条<br/>{a2}:{c2}条";
        vBar.options.legendGroup = new Array('指标1', '指标2', '指标3');
        vBar.options.data = [
            { key: "分类1", value: [30, 20, 25] },
            { key: "分类2", value: [40, 15, 25] },
            { key: "分类3", value: [60, 40, 30] },
            { key: "分类4", value: [35, 30, 40] }
        ];
        vBar.load();
    } catch (e) {
    }
};

 

6.4 柱图(横向)

//初始化柱图
var initHBar = function () {

    let hBar = new xheCharts();

    try {
        hBar.options.control = "div_hbar";
        hBar.options.type = eCharts.type.HBar;
        hBar.options.titleSize = 18;
        hBar.options.top = '10%';
        hBar.options.bottom = '4%';
        hBar.options.left = '2%';
        hBar.options.right = '15%';
        hBar.options.axisYName = "单位:条";
        hBar.options.tooltipShow = true;
        hBar.options.tooltipFormatter = "{b}:{c}条";
        hBar.options.legendGroup = new Array('分类1');
        hBar.options.data = [
            { key: "类型1", value: [30] },
            { key: "类型2", value: [40] },
            { key: "类型3", value: [60] },
            { key: "类型4", value: [35] }
        ];
        hBar.load();
    } catch (e) {
    }
};

 

6.5 折柱图

//初始化折柱图
var initBarline = function () {

    let barline = new xheCharts();

    try {
        barline.options.control = "div_barline";
        barline.options.type = eCharts.type.Barline;
        barline.options.titleSize = 18;
        barline.options.top = '20%';
        barline.options.bottom = '4%';
        barline.options.left = '2%';
        barline.options.right = '4%';
        barline.options.axisYName = "单位:条|单位:个";
        barline.options.tooltipShow = true;
        barline.options.tooltipFormatter = "{b}:{c}条";
        barline.options.legendGroup = new Array('分类1', '分类2', '分类3');
        barline.options.lineSmooth = false;
        barline.options.data = [
            { key: "分类1", value: [30, 20, 25] },
            { key: "分类2", value: [40, 15, 25] },
            { key: "分类3", value: [60, 40, 30] },
            { key: "分类4", value: [35, 30, 40] },
            { key: "分类5", value: [30, 20, 25] },
            { key: "分类6", value: [40, 15, 25] },
            { key: "分类7", value: [60, 40, 30] },
            { key: "分类8", value: [35, 30, 40] }
        ];
        barline.load();
    } catch (e) {
    }
};

 

6.6 折线图

//初始化线图
var initLine = function () {

    let line = new xheCharts();
    try {
        line.options.control = "div_line";
        line.options.type = eCharts.type.Line;
        line.options.titleSize = 18;
        line.options.toolboxShow = true;
        line.options.top = '10%';
        line.options.bottom = '4%';
        line.options.left = '2%';
        line.options.right = '5%';
        line.options.parallel = true;
        line.options.legendGroup = new Array('分类1', '分类2');
        line.options.data = [
            { key: '类型1', value: [1321, 2014] },
            { key: '类型2', value: [1435, 2598] },
            { key: '类型3', value: [1376, 2456] },
            { key: '类型4', value: [976, 2100] },
            { key: '类型5', value: [942, 2231] },
            { key: '类型6', value: [832, 1113] },
            { key: '类型7', value: [931, 2011] }
        ];
        line.load();
    } catch (e) {
    }
};

 

6.7 地图(北京)

//初始化地图
var initMap = function () {

    let map = new xheCharts();

    try {
        map.options.control = "div_map";
        map.options.type = eCharts.type.Map;
        map.options.tooltipShow = true;
        map.options.tooltipFormatter = "{a}:</br>分类1:{b}(万人)</br>分类2:{c}(户)</br>分类3:{d}(人)";
        map.options.top = '4%';
        map.options.legendShow = true;
        map.options.legendTop = '10%';
        map.options.legendLeft = 'right';
        map.options.labelShow = false;
        map.options.labelColor = '4BF316';
        map.options.labelWeight = 'normal';
        map.options.labelSize = 12;
        map.options.emphasisColor = "FFFFFF";
        map.options.data = [
            { name: '东城区', code: 'dc', value: [1, 1, 1] },
            { name: '西城区', code: 'xc', value: [2, 2, 2] },
            { name: '朝阳区', code: 'cy', value: [3, 3, 3] },
            { name: '海淀区', code: 'hd', value: [4, 4, 4] },
            { name: '丰台区', code: 'ft', value: [5, 5, 5] },
            { name: '大兴区', code: 'dx', value: [6, 6, 6] },
            { name: '通州区', code: 'tz', value: [7, 7, 7] },
            { name: '门头沟区', code: 'mtg', value: [8, 8, 8] },
            { name: '石景山区', code: 'sjs', value: [9, 9, 9] },
            { name: '顺义区', code: 'sy', value: [10, 10, 10] },
            { name: '怀柔区', code: 'hr', value: [11, 11, 11] },
            { name: '延庆区', code: 'yq', value: [12, 12, 12] },
            { name: '密云区', code: 'my', value: [13, 13, 13] },
            { name: '平谷区', code: 'pg', value: [14, 14, 14] },
            { name: '房山区', code: 'fs', value: [15, 15, 15] },
            { name: '昌平区', code: 'cp', value: [16, 16, 16] }
        ];
        map.load();
    }
    catch (e) { }
};

 

6.8 雷达图

//初始化雷达图
var initRadar = function () {

    let radar = new xheCharts();

    try {
        radar.options.control = "div_radar";
        radar.options.type = eCharts.type.Radar;
        radar.options.tooltipShow = true;
        radar.options.legendGroup = new Array('分类1', '分类2');
        radar.options.center = [["50%", "50%"]];
        radar.options.radius = ["70%"];
        radar.options.areaOpacity = 0.4;
        radar.options.data = [
            { name: "类型1", value: [80, 30] },
            { name: "类型2", value: [70, 90] },
            { name: "类型3", value: [35, 20] },
            { name: "类型4", value: [56, 90] },
            { name: "类型5", value: [40, 90] },
            { name: "类型6", value: [40, 120] }
        ];
        radar.load();
    }
    catch (e) { }
};

 

6.9 漏斗图

//初始化漏斗图
var initFunnel = function () {

    let funnel = new xheCharts();

    try {
        funnel.options.control = "div_funnel";
        funnel.options.type = eCharts.type.Funnel;
        funnel.options.left = "25%";
        funnel.options.top = "4%";
        funnel.options.bottom = "4%";
        funnel.options.borderWidth = 0;
        funnel.options.tooltipShow = true;
        funnel.options.tooltipTrigger = "item";
        funnel.options.tooltipFormatter = "{a} <br/>{b} : {c}%";
        funnel.options.legendShow = false;
        funnel.options.legendGroup = new Array('类型1', '类型2', '类型3', '类型4', '类型5', '类型6');
        funnel.options.radius = ["50%"];
        funnel.options.labelShow = true;
        funnel.options.labelFormatter = '{c}%';
        funnel.options.emphasisShow = true;
        funnel.options.emphasisFormatter = '{b}实际: {c}%';
        funnel.options.data = [
            { name: "类型1", value: 80 },
            { name: "类型2", value: 70 },
            { name: "类型3", value: 35 },
            { name: "类型4", value: 56 },
            { name: "类型5", value: 40 },
            { name: "类型6", value: 20 }
        ];
        funnel.load();
    }
    catch (e) {

    }
};

 

6.10 仪表盘

//初始化仪表盘
var initGauge = function () {

    let gauge = new xheCharts();

    try {
        gauge.options.control = "div_gauge";
        gauge.options.type = eCharts.type.Gauge;
        gauge.options.tooltipShow = true;
        gauge.options.tooltipTrigger = "item";
        gauge.options.tooltipFormatter = "{a} <br/>{b} : {c}%";
        gauge.options.legendShow = false;
        gauge.options.legendGroup = new Array('类型1');
        gauge.options.radius = ["80%"];
        gauge.options.center = [['50%', '60%']];
        gauge.options.labelShow = true;
        gauge.options.labelSize = 15;
        gauge.options.labelLength = [10, 20];
        gauge.options.labelPosition = 30;
        gauge.options.emphasisShow = true;
        gauge.options.emphasisSize = 20;
        gauge.options.emphasisWeight = "bold";
        gauge.options.data = [
            { name: "类型1", value: 80 }
        ];
        gauge.load();
    }
    catch (e) {

    }
};

 

6.11 环形图

//初始化仪表盘
var initRing = function () {

    let ring = new xheCharts();

    try {
        ring.options.control = "div_ring";
        ring.options.type = eCharts.type.Gauge;
        ring.options.tooltipShow = true;
        ring.options.tooltipTrigger = "item";
        ring.options.tooltipFormatter = "{a} <br/>{b} : {c}%";
        ring.options.legendShow = false;
        ring.options.legendGroup = new Array('类型1');
        ring.options.radius = ["70%"];
        ring.options.center = [['50%', '50%']];
        ring.options.labelShow = true;
        ring.options.labelSize = 15;
        ring.options.labelPosition = -10;
        ring.options.emphasisShow = true;
        ring.options.emphasisSize = 20;
        ring.options.containLabel = false;
        ring.options.containTick = false;
        ring.options.pointerShow = false;
        ring.options.section = [90, -270];
        ring.options.data = [
            { name: "类型1", value: 56 }
        ];
        ring.load();
    }
    catch (e) {

    }
};

 

6.12 文字域

//初始化文字域
var initLabel = function () {

    let label = new xheCharts();

    try {
        label.options.control = "div_label";
        label.options.type = eCharts.type.Label;
        label.options.top = "3.8";
        label.options.left = "2";
        label.options.labelShow = true;
        label.options.labelSize = 15;
        label.options.labelColor = 'FFFFFF';
        label.options.labelStyle = 'normal';
        label.options.labelWeight = 'normal';
        label.options.labelSize = '4';
        label.options.labelFormatter = '姓名:${name}';
        label.options.data = [
            { key: "name", value: 56 }
        ];
        label.load();
    }
    catch (e) {

    }
};

 

6.12 交叉表

//初始化交叉表
var initTable = function () {

    let table = new xheCharts();

    try {
        table.options.control = "div_table";
        table.options.type = eCharts.type.Table;
        table.options.columns = [
            ["AuditName", "", "auto", "", "C", "", true],
            ["qualitytotalcount", "一级分类1$$二级分类1", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类1$$二级分类2", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类2$$二级分类1", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类2$$二级分类2", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类3$$二级分类1", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类3$$二级分类2", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类4$$二级分类1", "auto", "", "I", "", true],
            ["qualitytotalcount", "一级分类4$$二级分类2", "auto", "", "I", "", true]
        ];
        table.options.data = [
            { "": "指标一", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标二", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标三", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标四", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标五", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标六", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标七", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 },
            { "": "指标八", "一级分类1$$二级分类1": 0, "一级分类1$$二级分类2": 0, "一级分类2$$二级分类1": 0, "一级分类2$$二级分类2": 2530, "一级分类3$$二级分类1": 0, "一级分类3$$二级分类2": 1542530, "一级分类4$$二级分类1": 0, "一级分类4$$二级分类2": 0 }
        ];
        table.load();
    }
    catch (e) {

    }
};

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值