v3.9.8.23

This commit is contained in:
JohnYan 2021-02-10 22:00:42 +08:00
parent f77035cc76
commit 47822c0407
9 changed files with 61 additions and 78 deletions

View File

@ -72,8 +72,7 @@
#### 安装SmartChart #### 安装SmartChart
```shell script ```shell script
step1: pip3 install smartchart pip3 install smartchart
step2: pip3 install smartdb
如果安装过程慢,建意使用 如果安装过程慢,建意使用
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple smartchart -U pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple smartchart -U
@ -215,8 +214,8 @@ pip install smartchart
``` ```
#### 声明 #### 声明
本项目后端完全免费使用, 开发不易, 为了项目能长期维护下去, 禁止反编译、分发等行为进行商用. 本项目后端个人可免费使用, 未经授权不可商用.
需共同开发后端的同学可以与我联系进入内部项目 开发不易, 为了项目能长期维护下去, 禁止反编译、分发等行为.
#### Change Log #### Change Log
@ -228,6 +227,7 @@ v3.9.8.9 帐号绑定功能上线
v3.9.8.10 用户自定义图形管理上线 v3.9.8.10 用户自定义图形管理上线
v3.9.8.17 支持最新的Echarts5.0, 优化加载速度 v3.9.8.17 支持最新的Echarts5.0, 优化加载速度
v3.9.8.20 用户自定义图形管理功能升级 v3.9.8.20 用户自定义图形管理功能升级
v3.9.8.23 Echarts升级5.0.1, 支持一个数据集对应多查询, 资源本地化
``` ```
------------------------------------------------------------------------------- -------------------------------------------------------------------------------

File diff suppressed because one or more lines are too long

1
static/echart/opt/dv.js Normal file

File diff suppressed because one or more lines are too long

6
static/echart/opt/vue.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([4-9e-hln-rt-xzA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 1f(z,P){4 i=z.9;1g(i--){7(z[i]===P){6 D}}6 Q}5 ds_transform(e){4 p=[];g(4 i=0;i<e[1].9;i++){p[i]=[]}g(i=0;i<e.9;i++){g(4 j=0;j<e[i].9;j++){p[j][i]=e[i][j]}}6 p}5 ds_split(8,13=\',\',14=[]){4 e=[];7(14){e.o(14.q(8[0].r(1)))}H{e.o(8[0][0].15(13).q(8[0].r(1)))}g(4 i=1;i<8.9;i++){e.o(8[i][0].15(13).q(8[i].r(1)))}6 e}5 ds_rowname(e,16=1){4 p=[];g(4 i=16;i<e.9;i++){p[i-16]=e[i][0]}6 p}5 ds_remove_column(e,1h=[0]){4 p=[];g(4 i=0;i<e.9;i++){p[i]=[]}g(i=0;i<e.9;i++){4 k=0;g(4 j=0;j<e[i].9;j++){7(1f(1h,j)===Q){p[i][k]=e[i][j];k=k+1}}}6 p}5 ds_createMap(8){4 U={};g(4 i=0;i<8.9;i++){4 V=[];g(4 j=1;j<8[i].9;j++){V.o(8[i][j])}7(8[i][0].9>0){U[8[i][0]]=V}H{U[\'0\']=V}}6 U}5 ds_createMap_all(8){4 e=[];4 W={};g(4 i=1;i<8.9;i++){W={};g(4 j=0;j<8[i].9;j++){W[8[0][j]]=8[i][j]}e.o(W)}6 e}5 ds_fontSize(1i){4 docEl=R.1j;4 S=window.innerWidth||R.1j.S||R.T.S;7(!S)6;4 1k=100*(S/1920);6 1i*1k}5 addWaterMarker(X){4 w=R.createElement(\'canvas\');4 T=R.T;T.appendChild(w);w.1l=400;w.1m=200;w.I.display=\'none\';4 E=w.getContext(\'2d\');E.rotate(-20*1n.PI/180);E.font="16px Microsoft JhengHei";E.fillStyle="rgba(17, 17, 17, 0.50)";E.textAlign=\'left\';E.textBaseline=\'Middle\';E.fillText(X,w.1l/3,w.1m/2);T.I.backgroundImage="url("+w.toDataURL("image/png")+")"}5 ds_getUpdown(F,f=0){4 Y="1o";4 Z="1p";7(f>0){Y="1p";Z="1o"}7(F>0){6\'<A I="10:\'+Y+\'">\'+F+\'<A I="10:\'+Y+\'" 1q="11 11-1r-up"></A></A>\'}H{6\'<A I="10:\'+Z+\'">\'+F+\'<A I="10:\'+Z+\'" 1q="11 11-1r-down"></A></A>\'}}5 ds_toThousands(f){f=(f||0).toString(),t=\'\';4 u=f<0?"-":"";4 8=(1n.abs(f)+"").15(\'\\.\');f=8[0];1g(f.9>3){t=\',\'+f.r(-3)+t;f=f.r(0,f.9-3)}7(f){t=f+t}7(8.9===1){6 u+t}6 u+t+\'.\'+8[1]}5 ds_distinct(a,b=[]){4 z=a.q(b);4 t=[];4 P={};g(4 i=0;i<z.9;i++){7(!P[z[i]]){t.o(z[i]);P[z[i]]=1}}6 t}5 18(a,b,B=D,x=1){4 c=[];4 J=[];4 u=Q;4 i=1;g(i=1;i<b[0].9;i++){J.o(0)}7(B){c.o(a[0].q(b[0].r(1)));a=a.r(1);b=b.r(1)}a.19(5(12){u=D;b.19(5(G){7(12[0]===G[0]){c.o(12.q(G.r(1)));u=Q}});7(u&&x){c.o(12.q(J))}});7(x===2){J=[];g(i=1;i<a[0].9;i++){J.o(0)}b.19(5(G){u=D;g(i=0;i<a.9;i++){7(a[i][0]===G[0]){u=Q;break}}7(u){c.o([G[0]].q(J).q(G.r(1)))}})}6 c}5 ds_crossjoin(a,b,B=D){6 18(a,b,B,0)}5 ds_fulljoin(a,b,B=D){6 18(a,b,B,2)}5 ds_union(a,b,B=D){4 c=[];7(B){c=a.q(b.r(1))}H{c=a.q(b)}6 c}5 1s(F,1t){7(!F){6 1t}6 F}5 ds_round(f,1u=2){6 f.toFixed(1u)}5 ds_param(1v){7("undefined"!=typeof 1w){6(1s(1w[1v],\'\'))}H{6\'\'}}5 Decimal(X){6 parseFloat(X)}5 1x(){1y.1z=5(y,m,d,K,L,s,M){K=K||0;L=L||0;s=s||0;M=M||0;6\'\'+y+\'-\'+m+\'-\'+d};1y.date=5(y,m,d,K,L,s,M){K=K||0;L=L||0;s=s||0;M=M||0;6\'\'+y+\'-\'+m+\'-\'+d}}1a 1z=new 1x;5 startSelectAnimate(v,1A,1B=1000,1C=1){4 N=-1;setInterval(5(){v.O({x:\'1b\',n:0,h:N});N=(N+1)%1A;v.O({x:\'1c\',n:0,h:N});7(1C){v.O({x:\'showTip\',n:0,h:N})}},1B)}5 dismissChangeRelatedObjectPopup(1D,objId,newRepr,1E){1D.close();console.log(1E);location.reload()}5 clickaction(v,l=\'\'){1F=`1a n${l}=-1;1a h${l}=-1;v.on(\'click\',5(C){v.O({x:\'1b\',n:n${l},h:h${l}});4 1d=\'1c\';7(n${l}===C.1e&&h${l}===C.h){n${l}=-1;h${l}=-1;1d=\'1b\'}H{n${l}=C.1e;h${l}=C.h}v.O({x:1d,n:C.1e,h:C.h})});v.on(\'mouseout\',5(C){7(n${l}>-1){v.O({x:"1c",n:n${l},h:h${l}})}});`;eval(1F)}',[],104,'||||let|function|return|if|data|length|||||dataset|num|for|dataIndex||||seq||seriesIndex|push|seted|concat|slice||result|flag|myChart|can|type||arr|span|withhead|params|true|cans|param|val2|else|style|blank|hh|mm|ss|currentIndex|dispatchAction|obj|false|document|clientWidth|body|map|t1|tmpmap|str|colorUp|colorDown|color|glyphicon|val|sep|head_add|split|start_row||ds_leftjoin|forEach|var|downplay|highlight|acttype|componentIndex|lst_contains|while|remove_list|res|documentElement|fontSize|width|height|Math|green|red|class|arrow|getUndefined|defaultValue|qty|name|filter_param|Mytime|this|datetime|dataLen|interval|showtip|win|newId|actionstr'.split('|'),0,{})) eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'([4-9e-hln-rt-xzA-Z]|1\\w)'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('5 1e(z,P){4 i=z.9;1f(i--){7(z[i]===P){6 D}}6 Q}5 ds_transform(e){4 p=[];g(4 i=0;i<e[1].9;i++){p[i]=[]}g(i=0;i<e.9;i++){g(4 j=0;j<e[i].9;j++){p[j][i]=e[i][j]}}6 p}5 ds_split(8,13=\',\',14=[]){4 e=[];7(14){e.o(14.q(8[0].r(1)))}H{e.o(8[0][0].15(13).q(8[0].r(1)))}g(4 i=1;i<8.9;i++){e.o(8[i][0].15(13).q(8[i].r(1)))}6 e}5 ds_rowname(e,16=1){4 p=[];g(4 i=16;i<e.9;i++){p[i-16]=e[i][0]}6 p}5 ds_remove_column(e,1g=[0]){4 p=[];g(4 i=0;i<e.9;i++){p[i]=[]}g(i=0;i<e.9;i++){4 k=0;g(4 j=0;j<e[i].9;j++){7(1e(1g,j)===Q){p[i][k]=e[i][j];k=k+1}}}6 p}5 ds_createMap(8){4 U={};g(4 i=0;i<8.9;i++){4 V=[];g(4 j=1;j<8[i].9;j++){V.o(8[i][j])}7(8[i][0].9>0){U[8[i][0]]=V}H{U[\'0\']=V}}6 U}5 ds_createMap_all(8){4 e=[];4 W={};g(4 i=1;i<8.9;i++){W={};g(4 j=0;j<8[i].9;j++){W[8[0][j]]=8[i][j]}e.o(W)}6 e}5 ds_fontSize(1h){4 docEl=R.1i;4 S=window.innerWidth||R.1i.S||R.T.S;7(!S)6;4 1j=100*(S/1920);6 1h*1j}5 addWaterMarker(X){4 w=R.createElement(\'canvas\');4 T=R.T;T.appendChild(w);w.1k=400;w.1l=200;w.I.display=\'none\';4 E=w.getContext(\'2d\');E.rotate(-20*1m.PI/180);E.font="16px Microsoft JhengHei";E.fillStyle="rgba(17, 17, 17, 0.50)";E.textAlign=\'left\';E.textBaseline=\'Middle\';E.fillText(X,w.1k/3,w.1l/2);T.I.backgroundImage="url("+w.toDataURL("image/png")+")"}5 ds_getUpdown(F,f=0){4 Y="1n";4 Z="1o";7(f>0){Y="1o";Z="1n"}7(F>0){6\'<A I="10:\'+Y+\'">\'+F+\'<A I="10:\'+Y+\'" 1p="11 11-1q-up"></A></A>\'}H{6\'<A I="10:\'+Z+\'">\'+F+\'<A I="10:\'+Z+\'" 1p="11 11-1q-down"></A></A>\'}}5 ds_toThousands(f){f=(f||0).toString(),t=\'\';4 u=f<0?"-":"";4 8=(1m.abs(f)+"").15(\'\\.\');f=8[0];1f(f.9>3){t=\',\'+f.r(-3)+t;f=f.r(0,f.9-3)}7(f){t=f+t}7(8.9===1){6 u+t}6 u+t+\'.\'+8[1]}5 ds_distinct(a,b=[]){4 z=a.q(b);4 t=[];4 P={};g(4 i=0;i<z.9;i++){7(!P[z[i]]){t.o(z[i]);P[z[i]]=1}}6 t}5 18(a,b,B=D,x=1){4 c=[];4 J=[];4 u=Q;4 i=1;g(i=1;i<b[0].9;i++){J.o(0)}7(B){c.o(a[0].q(b[0].r(1)));a=a.r(1);b=b.r(1)}a.19(5(12){u=D;b.19(5(G){7(12[0]===G[0]){c.o(12.q(G.r(1)));u=Q}});7(u&&x){c.o(12.q(J))}});7(x===2){J=[];g(i=1;i<a[0].9;i++){J.o(0)}b.19(5(G){u=D;g(i=0;i<a.9;i++){7(a[i][0]===G[0]){u=Q;break}}7(u){c.o([G[0]].q(J).q(G.r(1)))}})}6 c}5 ds_crossjoin(a,b,B=D){6 18(a,b,B,0)}5 ds_fulljoin(a,b,B=D){6 18(a,b,B,2)}5 ds_union(a,b,B=D){4 c=[];7(B){c=a.q(b.r(1))}H{c=a.q(b)}6 c}5 1r(F,1s){7(!F){6 1s}6 F}5 ds_round(f,1t=2){6 f.toFixed(1t)}5 ds_param(1u){7("undefined"!=typeof 1v){6(1r(1v[1u],\'\'))}H{6\'\'}}5 Decimal(X){6 parseFloat(X)}5 1w(){1x.1y=5(y,m,d,K,L,s,M){K=K||0;L=L||0;s=s||0;M=M||0;6\'\'+y+\'-\'+m+\'-\'+d};1x.date=5(y,m,d,K,L,s,M){K=K||0;L=L||0;s=s||0;M=M||0;6\'\'+y+\'-\'+m+\'-\'+d}}1z 1y=new 1w;1z None=null;5 startSelectAnimate(v,1A,1B=1000,1C=1){4 N=-1;setInterval(5(){v.O({x:\'1a\',n:0,h:N});N=(N+1)%1A;v.O({x:\'1b\',n:0,h:N});7(1C){v.O({x:\'showTip\',n:0,h:N})}},1B)}5 dismissChangeRelatedObjectPopup(1D,objId,newRepr,1E){1D.close();console.log(1E);location.reload()}5 clickaction(v,l=\'\'){4 1F=`1G n${l}=-1;1G h${l}=-1;v.on(\'click\',5(C){v.O({x:\'1a\',n:n${l},h:h${l}});4 1c=\'1b\';7(n${l}===C.1d&&h${l}===C.h){n${l}=-1;h${l}=-1;1c=\'1a\'}H{n${l}=C.1d;h${l}=C.h}v.O({x:1c,n:C.1d,h:C.h})});v.on(\'mouseout\',5(C){7(n${l}>-1){v.O({x:"1b",n:n${l},h:h${l}})}});`;eval(1F)}',[],105,'||||let|function|return|if|data|length|||||dataset|num|for|dataIndex||||seq||seriesIndex|push|seted|concat|slice||result|flag|myChart|can|type||arr|span|withhead|params|true|cans|param|val2|else|style|blank|hh|mm|ss|currentIndex|dispatchAction|obj|false|document|clientWidth|body|map|t1|tmpmap|str|colorUp|colorDown|color|glyphicon|val|sep|head_add|split|start_row||ds_leftjoin|forEach|downplay|highlight|acttype|componentIndex|lst_contains|while|remove_list|res|documentElement|fontSize|width|height|Math|green|red|class|arrow|getUndefined|defaultValue|qty|name|filter_param|Mytime|this|datetime|const|dataLen|interval|showtip|win|newId|actionstr|var'.split('|'),0,{}))

View File

@ -11,7 +11,7 @@
<div class="wrapper"> <div class="wrapper">
<form> <form>
<h1>SmartChart</h1> <h1>SmartChart</h1>
<h5 id="msg">为方便交流,需加微信或群获取激活码,请支持一杯咖啡</h5> <h5 id="msg">加微信或群获取激活码,请支持一杯咖啡</h5>
<h5><img src="https://www.smartchart.cn/static/images/auth.png" height="150px"></h5> <h5><img src="https://www.smartchart.cn/static/images/auth.png" height="150px"></h5>
<div class="group"> <div class="group">
<input id="authkey" placeholder="请输入你的KEY" required="required" /><span class="highlight"></span><span class="bar"></span> <input id="authkey" placeholder="请输入你的KEY" required="required" /><span class="highlight"></span><span class="bar"></span>

View File

@ -24,43 +24,12 @@ font-size:10px;
{% block style %} {% block style %}
{% endblock %}</style></head> {% endblock %}</style></head>
<link rel="icon" type="image.png" href="/static/images/favicon.ico"><link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css"> <link rel="icon" type="image.png" href="/static/images/favicon.ico"><link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
{% if dv %}<script src="https://cdn.jsdelivr.net/npm/vue"></script><script src="https://unpkg.com/@jiaminghi/data-view/dist/datav.min.vue.js"></script>{% endif %} {% if dv %}<script src="/static/echart/opt/vue.js"></script><script src="/static/echart/opt/dv.js"></script>{% endif %}<script src="/static/js/jquery-2.2.3.min.js"></script>
{% block stylesheet %}{% endblock %}{{devhead|safe}} {% block stylesheet %}{% endblock %}{{devhead|safe}}
{% block body %}{% endblock %} {% block body %}{% endblock %}
</html><script src="/static/js/jquery-2.2.3.min.js"></script><script type="text/javascript" src="/static/echart/dist/echarts.min.js"></script><script src="/static/echart/dist/china.js"></script><script src="/static/js/fun.js"></script><script src="/static/echart/theme/{{theme}}"></script><script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> </html><script type="text/javascript" src="/static/echart/dist/echarts.min.js"></script><script src="/static/echart/dist/china.js"></script><script src="/static/js/fun.js"></script><script src="/static/echart/theme/{{theme}}"></script><script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script>
{{footer|safe}}{% block javascript %}{% endblock %} {{footer|safe}}{% block javascript %}{% endblock %}
<script>{% if dv %}var vapp = new Vue({el: '#vue_app', data: {d0:'',d1:'',d2:'',d3:'',d4:'',d5:'',d6:'',d7:'',d8:'',d9:'',d10:'',d11:'',d12:'',d13:'',d14:'',d15:'',d16:''}});{% endif %}var app = {};var charts = [];{{echart_main|safe}}window.onresize = function(){for(var i = 0; i < charts.length; i++){charts[i].resize();}}; <script>{% if dv %}var vapp = new Vue({el: '#vue_app', data: {d0:'',d1:'',d2:'',d3:'',d4:'',d5:'',d6:'',d7:'',d8:'',d9:'',d10:'',d11:'',d12:'',d13:'',d14:'',d15:'',d16:''}});{% endif %}var app = {};var charts = [];{{echart_main|safe}}window.onresize = function(){for(var i = 0; i < charts.length; i++){charts[i].resize();}};
$(function(){ $(function(){$("#fullScreen").on("click",function(){var isFull=!!(document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||document.fullscreenElement);if(isFull===false){fullScreen()}else{exitFullscreen()}})});function fullScreen(){var element=document.documentElement;if(element.requestFullscreen){element.requestFullscreen()}else if(element.msRequestFullscreen){element.msRequestFullscreen()}else if(element.mozRequestFullScreen){element.mozRequestFullScreen()}else if(element.webkitRequestFullscreen){element.webkitRequestFullscreen()}}function exitFullscreen(){if(document.exitFullscreen){document.exitFullscreen()}else if(document.msExitFullscreen){document.msExitFullscreen()}else if(document.mozCancelFullScreen){document.mozCancelFullScreen()}else if(document.webkitExitFullscreen){document.webkitExitFullscreen()}}
$("#fullScreen").on("click",function(){
var isFull=!!(document.webkitIsFullScreen || document.mozFullScreen ||
document.msFullscreenElement || document.fullscreenElement
);
if (isFull===false) {fullScreen();
}else{exitFullscreen();}
})
})
function fullScreen() {
var element = document.documentElement;
if (element.requestFullscreen) {
element.requestFullscreen();
} else if (element.msRequestFullscreen) {
element.msRequestFullscreen();
} else if (element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if (element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
}
}
function exitFullscreen() {
if (document.exitFullscreen) {
document.exitFullscreen();
} else if (document.msExitFullscreen) {
document.msExitFullscreen();
} else if (document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if (document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}
</script> </script>
<!--powered by smartchart.cn,Designed by JohnYan mailto:84345999@qq.com, https://gitee.com/smartchart/smartchart you need keep this--> <!--powered by smartchart.cn,Designed by JohnYan mailto:84345999@qq.com, https://gitee.com/smartchart/smartchart you need keep this-->

View File

@ -48,7 +48,6 @@
</div> </div>
<div class="col-xs-12 col-md-5" style="padding:0.1% 0.1%;" id="preview"> <div class="col-xs-12 col-md-5" style="padding:0.1% 0.1%;" id="preview">
<pre> <pre>
{
//初始参数 //初始参数
"paraminit":{"paramname":"paramvalue"}, "paraminit":{"paramname":"paramvalue"},
//图形点击钻取联动 //图形点击钻取联动
@ -70,18 +69,15 @@
}, },
//动态播放 //动态播放
"animate":{"2":{"dataLen":5,"interval":1000,"showtip":1}}, "animate":{"2":{"dataLen":5,"interval":1000,"showtip":1}},
//分布任务
"client":"http://xxxxx",
//图形背景色,深色:#0B1837 #101E44 #0f375f 淡色:#f2f2f2 //图形背景色,深色:#0B1837 #101E44 #0f375f 淡色:#f2f2f2
"chartcolor":"white" "chartcolor":"white",
//加载自定义CSS //加载自定义CSS
"css":["/static/custom/xx","xxxx"], "css":["/static/custom/xx","xxxx"],
//加载自定义CSS //加载自定义CSS
"js":["/static/custom/xx","xxxx"], "js":["/static/custom/xx","xxxx"],
//开启datav和vue模式 //开启datav和vue模式
"dv":1 "dv":1</pre>
}</pre> 自定义静态资源文件路径:<br>{{ spath }}
更多<a href="https://www.smartchart.cn/blog/article/2019/11/6/28.html" target="_blank">设定说明</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -11,16 +11,16 @@
<div class="wrapper"> <div class="wrapper">
<form> <form>
<h1>SmartChart</h1> <h1>SmartChart</h1>
<h5 id="msg">为方便交流,需加微信或群获取激活码,请支持一杯咖啡</h5> <h5 id="msg">加微信或群获取激活码,请支持一杯咖啡</h5>
<h5><img src="https://www.smartchart.cn/static/images/auth.png" height="150px"></h5> <h5><img src="https://www.smartchart.cn/static/images/auth.png" height="150px"></h5>
<div class="group"> <div class="group">
<input id="authkey" placeholder="请输入你的KEY" required="required" /><span class="highlight"></span><span class="bar"></span> <input id="authkey" placeholder="请输入你的KEY" required="required" /><span class="highlight"></span><span class="bar"></span>
</div> </div>
</form> </form>
<div class="btn-box"> <div class="btn-box">
<a type="button" id='submitup' class="btn btn-submit">激活</a> <a id='submitup' class="btn btn-submit">激活</a>
<a type="button" href="https://qm.qq.com/cgi-bin/qm/qr?k=eC34KwVvEtMvfh8Zyn1RSfYlzZvuvm7i&jump_from=webapi" class="btn btn-cancel">加Q群</a> <a type="button" href="https://qm.qq.com/cgi-bin/qm/qr?k=eC34KwVvEtMvfh8Zyn1RSfYlzZvuvm7i&jump_from=webapi" class="btn btn-cancel">加Q群</a>
<a type="button" href="/echart/register/" class="btn btn-cancel">登记</a> <a href="/echart/register/" class="btn btn-submit">登记</a>
<h5><a href="https://www.smartchart.cn">@smartchart.cn</a></h5> <h5><a href="https://www.smartchart.cn">@smartchart.cn</a></h5>
</div> </div>
</div> </div>