安全性: - 所有SQL查询改用参数化查询(db_query),防止SQL注入 - TUSHARE_API_TOKEN集中到config.php常量,移除硬编码和多份拷贝 - getBasic.inc.php中$_REQUEST输出到JS时添加htmlspecialchars转义 代码组织: - 21个页面文件移至charts/子目录,根目录仅保留入口文件 - ajax.inc.php拆分:esfTradeDaily/esfListDaily迁至getEstate.inc.php - getBasic.inc.php拆分:HTML组件函数迁至新建的widgets.inc.php - 前端依赖去重:移除lib/echarts.min.js、libai/3.4.16.js、research/js/3.4.16.js 规范化: - AJAX响应格式统一为jsonResponse()标准封装 - 前端全局变量统一为window.chartConfig对象模式 - 修复PHP 8.4 Deprecated警告(getEstateData、getStockHistoryDataByTS参数顺序) - html/head.php中jQuery/CSS路径改为绝对路径,修复charts/子目录加载问题 Co-Authored-By: Claude Code <noreply@anthropic.com>
136 lines
3.0 KiB
JavaScript
136 lines
3.0 KiB
JavaScript
var cfg = window.chartConfig;
|
|
var dom = document.getElementById("container");
|
|
var myChart = echarts.init(dom,'dark'); //内置主题:dark, grey,bright,light
|
|
var app = {};
|
|
option = null;
|
|
console.log(cfg.data[0]['value'][0]);
|
|
console.log(cfg.data[0]['value'][1]);
|
|
option = {
|
|
//backgroundColor: '',
|
|
title: {
|
|
//text: cfg.legend[0]+' V.S '+cfg.legend[2],
|
|
text: cfg.title,
|
|
subtext: cfg.subtitle,
|
|
textAlign:'center',
|
|
left:'50%'
|
|
},
|
|
tooltip: {
|
|
trigger: 'axis'
|
|
},
|
|
legend: [
|
|
{
|
|
data: [cfg.legend[0],cfg.legend[1],cfg.legend[2]],
|
|
right:'50',
|
|
},
|
|
{
|
|
data: [cfg.legend[3],cfg.legend[4]],
|
|
right:'100',
|
|
top:'30',
|
|
},
|
|
],
|
|
grid: {
|
|
left: '3%',
|
|
right: '4%',
|
|
bottom: '3%',
|
|
containLabel: true
|
|
},
|
|
toolbox: {
|
|
feature: {
|
|
saveAsImage: {}
|
|
}
|
|
},
|
|
xAxis: {
|
|
//type: 'category',
|
|
type: 'time',
|
|
boundaryGap: false
|
|
},
|
|
yAxis: [{
|
|
type: 'value',
|
|
name:cfg.legend[0], //图列
|
|
show:true,
|
|
scale:true,
|
|
},
|
|
{
|
|
type:'value',
|
|
name: cfg.unit, //图例
|
|
scale:true, //自动缩放
|
|
boundaryGap:false,
|
|
show:true,
|
|
axisLine:{
|
|
show:true, //Y2 坐标轴
|
|
},
|
|
axisTick: {
|
|
show:true, //Y2 坐标刻度
|
|
},
|
|
splitLine:{
|
|
show:false, //Y2 坐标刻度横线
|
|
},
|
|
}
|
|
],
|
|
dataZoom: [{
|
|
type: 'inside', //or slider
|
|
start: 0,
|
|
end: 100
|
|
}, {
|
|
start: 0,
|
|
end: 100,
|
|
handleIcon: 'M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4v1.3h1.3v-1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7V23h6.6V24.4z M13.3,19.6H6.7v-1.4h6.6V19.6z',
|
|
handleSize: '80%',
|
|
handleStyle: {
|
|
color: '#fff',
|
|
shadowBlur: 3,
|
|
shadowColor: 'rgba(0, 0, 0, 0.6)',
|
|
shadowOffsetX: 2,
|
|
shadowOffsetY: 2
|
|
}
|
|
}],
|
|
series: [
|
|
{
|
|
name:cfg.legend[0],
|
|
type:'line',
|
|
yAxisIndex:0,
|
|
symbol:'none',
|
|
smooth:false,
|
|
data: cfg.data,
|
|
},
|
|
|
|
{
|
|
name:cfg.legend[1],
|
|
type:'scatter', //散点图
|
|
yAxisIndex:0,
|
|
symbolSize: 10,
|
|
smooth:false,
|
|
data: cfg.data2,
|
|
},
|
|
{
|
|
name:cfg.legend[2],
|
|
type:'scatter', //散点图
|
|
yAxisIndex:0,
|
|
symbolSize: 10,
|
|
smooth:false,
|
|
data: cfg.data3
|
|
},
|
|
{
|
|
name:cfg.legend[3],
|
|
type:'bar',
|
|
yAxisIndex:1,
|
|
symbolSize: 0,
|
|
barWidth: 1,
|
|
smooth:false,
|
|
data: cfg.data4,
|
|
},
|
|
{
|
|
name:cfg.legend[4],
|
|
type:'bar',
|
|
yAxisIndex:1,
|
|
symbolSize: 0,
|
|
barWidth: 1,
|
|
smooth:false,
|
|
data: cfg.data5,
|
|
}
|
|
]
|
|
};
|
|
|
|
if (option && typeof option === "object") {
|
|
myChart.setOption(option, true);
|
|
} |