更新:重构和迁移多个PHP文件到deprecated目录,删除不再使用的文件,更新pubfunc.js版本;index_trend,stock_trend 数据源以及代码重构简化
This commit is contained in:
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
include_once "inc/getBasic.inc.php";
|
||||||
|
$_REQUEST['ts_code']=$_REQUEST['ts_code']?$_REQUEST['ts_code']:'000001';
|
||||||
|
$_REQUEST['t_start']=$_REQUEST['t_start']?$_REQUEST['t_start']:'2015-01-01';
|
||||||
|
$_REQUEST['t_end']=$_REQUEST['t_end']?$_REQUEST['t_end']:'';
|
||||||
|
$ts_name = tscodeToName(ts_code_conv($_REQUEST['ts_code']));
|
||||||
|
$title="股价VS PE/PB/PS 趋势:".$ts_name.'('.$_REQUEST['ts_code'].')';
|
||||||
|
include_once "html/head.php";
|
||||||
|
?>
|
||||||
|
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||||
|
股票代码: <input type='text' name='ts_code' id='ts_code' width="30px" value='<?=$_REQUEST['ts_code']?>' >
|
||||||
|
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||||
|
结束时间: <input type='date' name='t_end' id='t_end' width='30px' value='<?=$_REQUEST['t_end']?>' >
|
||||||
|
<input type='submit' value="给我查!">
|
||||||
|
<div > </div>
|
||||||
|
<input type='checkbox' id='cb_pe' onclick="hideSwitch(this.id,'pe_ttm')" checked> PE_TTM 市盈率
|
||||||
|
<input type='checkbox' id='cb_pb' onclick="hideSwitch(this.id,'pb')" > PB 市净率
|
||||||
|
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" > PS 市销率
|
||||||
|
</div> </form>
|
||||||
|
<div > </div>
|
||||||
|
<div style="width:100%; text-align:center" id='pe_ttm'>
|
||||||
|
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pe_ttm&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||||
|
height="400px" width="1000px"></iframe>
|
||||||
|
</div>
|
||||||
|
<div > </div>
|
||||||
|
<div style="width:100%; text-align:center; display:None;" id='pb'>
|
||||||
|
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pb&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||||
|
height="400px" width="1000px"></iframe>
|
||||||
|
</div>
|
||||||
|
<div > </div>
|
||||||
|
<div style="width:100%; text-align:center; display:None;" id='ps'>
|
||||||
|
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=ps&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
||||||
|
height="400px" width="1000px"></iframe>
|
||||||
|
</div>
|
||||||
|
<?php include_once "html/footer.php"; ?>
|
||||||
|
|
||||||
+1
-1
@@ -6,7 +6,7 @@
|
|||||||
<script type="text/javascript" src="lib/jquery.min.js?version=3.6.0"></script>
|
<script type="text/javascript" src="lib/jquery.min.js?version=3.6.0"></script>
|
||||||
<script type="text/javascript" src="/lib/echarts/5.4.2/echarts.js"></script>
|
<script type="text/javascript" src="/lib/echarts/5.4.2/echarts.js"></script>
|
||||||
<script type="text/javascript" src="/lib/DataTables-2/datatables.min.js"></script>
|
<script type="text/javascript" src="/lib/DataTables-2/datatables.min.js"></script>
|
||||||
<script type="text/javascript" src="/js/pubfunc.js?version=0.4"></script>
|
<script type="text/javascript" src="/js/pubfunc.js?version=0.5"></script>
|
||||||
<link href="css/style.css?version=2000002" rel="stylesheet" type="text/css">
|
<link href="css/style.css?version=2000002" rel="stylesheet" type="text/css">
|
||||||
<link href="/lib/DataTables-2/datatables.min.css" rel="stylesheet" type="text/css">
|
<link href="/lib/DataTables-2/datatables.min.css" rel="stylesheet" type="text/css">
|
||||||
<title><?=$title?></title>
|
<title><?=$title?></title>
|
||||||
|
|||||||
+24
-124
@@ -7,6 +7,7 @@ $_REQUEST['t_start']= $_REQUEST['t_start']?$_REQUEST['t_start']:'2020-01-01';
|
|||||||
$_REQUEST['t_end'] = $_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
$_REQUEST['t_end'] = $_REQUEST['t_end']?$_REQUEST['t_end']:date('Y-m-d');
|
||||||
$ts_code = $_REQUEST['code'];
|
$ts_code = $_REQUEST['code'];
|
||||||
?>
|
?>
|
||||||
|
<script src="js/renderCharts.js"></script>
|
||||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||||
指数代码:
|
指数代码:
|
||||||
<select name='code' id='code'>
|
<select name='code' id='code'>
|
||||||
@@ -14,7 +15,7 @@ $ts_code = $_REQUEST['code'];
|
|||||||
<option value='399001.SZ'>深圳成指</option>
|
<option value='399001.SZ'>深圳成指</option>
|
||||||
<option value='399005.SZ'>中小板指</option>
|
<option value='399005.SZ'>中小板指</option>
|
||||||
<option value='399006.SZ'>创业板指</option>
|
<option value='399006.SZ'>创业板指</option>
|
||||||
<option value='000016.SZ'>上证50</option>
|
<option value='000016.SH'>上证50</option>
|
||||||
<option value='399300.SZ'>沪深300</option>
|
<option value='399300.SZ'>沪深300</option>
|
||||||
<option value='399905.SZ'>中证500</option>
|
<option value='399905.SZ'>中证500</option>
|
||||||
</select>
|
</select>
|
||||||
@@ -36,47 +37,47 @@ $ts_code = $_REQUEST['code'];
|
|||||||
<div id="total_mv" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
<div id="total_mv" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
let t_start = $('#t_start').val();
|
||||||
let start_date=formatDateToYYYYMMDD("<?=$_REQUEST['t_start'] ?>");
|
let t_end = $('#t_end').val();
|
||||||
let end_date=formatDateToYYYYMMDD("<?=$_REQUEST['t_end'] ?>");
|
let code = $("#code").val();
|
||||||
url = "https://api.doorcome.cn/api/indexDatas/?tscode=<?=$_REQUEST['code'] ?>";
|
let codeName=convertIndexCode("<?=$_REQUEST['code'] ?>");
|
||||||
url += "&start_date="+start_date+"&end_date="+end_date;
|
//let start_date=formatDateToYYYYMMDD("<?=$_REQUEST['t_start'] ?>");
|
||||||
|
//let end_date=formatDateToYYYYMMDD("<?=$_REQUEST['t_end'] ?>");
|
||||||
|
url = "https://api.doorcome.cn/api/indexDatas/?tscode="+code;
|
||||||
|
url += "&start_date="+t_start+"&end_date="+t_end;
|
||||||
fetch(url)
|
fetch(url)
|
||||||
.then(httpresponse => httpresponse.json())
|
.then(httpresponse => httpresponse.json())
|
||||||
.then(parsedData => {
|
.then(parsedData => {
|
||||||
// 图表配置:pe_ttm
|
// 图表配置:pe_ttm
|
||||||
var params = {};
|
var params = {};
|
||||||
params.chartid='pe_ttm';
|
params.chartid='pe_ttm';
|
||||||
codeName=convertIndexCode("<?=$_REQUEST['code'] ?>");
|
|
||||||
params.legend = [codeName,'pe_ttm'];
|
params.legend = [codeName,'pe_ttm'];
|
||||||
params.text = params.legend[0]+' V.S '+params.legend[1];
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
params.data2 = pickData(parsedData, 'trade_date', 'pe_ttm')
|
params.data2 = pickData(parsedData, 'trade_date', 'pe_ttm')
|
||||||
dataCal = calculateStats(params.data1);
|
dataCal = calculateStats(params.data2);
|
||||||
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
||||||
params.sub_text += " Min:"+dataCal['min'];
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
params.sub_text += " Average:"+dataCal['avg'];
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
params.sub_text += " Recent:"+dataCal['last'];
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
doubleLineChart(params);
|
doubleLineChart(params);
|
||||||
// 图表配置:pb
|
// 图表配置:pb
|
||||||
params = {};
|
params = {};
|
||||||
params.chartid='pb';
|
params.chartid='pb';
|
||||||
codeName=convertIndexCode("<?=$_REQUEST['code'] ?>");
|
|
||||||
params.legend = [codeName,'pb'];
|
params.legend = [codeName,'pb'];
|
||||||
params.text = params.legend[0]+' V.S '+params.legend[1];
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
params.data2 = pickData(parsedData, 'trade_date', 'pb')
|
params.data2 = pickData(parsedData, 'trade_date', 'pb')
|
||||||
dataCal = calculateStats(params.data1);
|
dataCal = calculateStats(params.data2);
|
||||||
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
params.sub_text = "PB Max:"+dataCal['max'];
|
||||||
params.sub_text += " Min:"+dataCal['min'];
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
params.sub_text += " Average:"+dataCal['avg'];
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
params.sub_text += " Recent:"+dataCal['last'];
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
doubleLineChart(params);
|
doubleLineChart(params);
|
||||||
|
|
||||||
// 图表配置:total_mv
|
// 图表配置:total_mv
|
||||||
params = {};
|
params = {};
|
||||||
params.chartid='total_mv';
|
params.chartid='total_mv';
|
||||||
codeName=convertIndexCode("<?=$_REQUEST['code'] ?>");
|
|
||||||
params.legend = [codeName,'总市值-万亿'];
|
params.legend = [codeName,'总市值-万亿'];
|
||||||
params.text = params.legend[0]+' V.S '+params.legend[1];
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
@@ -89,115 +90,14 @@ $ts_code = $_REQUEST['code'];
|
|||||||
]
|
]
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
dataCal = calculateStats(params.data1);
|
dataCal = calculateStats(params.data2);
|
||||||
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
params.sub_text = "总市值 Max:"+dataCal['max'];
|
||||||
params.sub_text += " Min:"+dataCal['min'];
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
params.sub_text += " Average:"+dataCal['avg'];
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
params.sub_text += " Recent:"+dataCal['last'];
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
doubleLineChart(params);
|
doubleLineChart(params);
|
||||||
})
|
})
|
||||||
.catch(error => console.error('数据加载失败:', error));
|
.catch(error => console.error('数据加载失败:', error));
|
||||||
|
|
||||||
// 窗口大小自适应
|
|
||||||
window.addEventListener('resize', () => {
|
|
||||||
[pe_ttm, pb, total_mv].forEach(chart => chart.resize());
|
|
||||||
});
|
|
||||||
function doubleLineChart(params){
|
|
||||||
/*
|
|
||||||
需要外部提供:
|
|
||||||
chartid: div container id
|
|
||||||
legend: array
|
|
||||||
unit: str
|
|
||||||
sub_text: str
|
|
||||||
data:data1,data2, array
|
|
||||||
*/
|
|
||||||
var dom = document.getElementById(params.chartid);
|
|
||||||
var myChart = echarts.init(dom,'dark');
|
|
||||||
option = null;
|
|
||||||
option = {
|
|
||||||
title: {
|
|
||||||
text: params.text,
|
|
||||||
subtext: params.sub_text,
|
|
||||||
textAlign:'center',
|
|
||||||
left:'50%'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'axis'
|
|
||||||
},
|
|
||||||
legend: {
|
|
||||||
data:params.legend,
|
|
||||||
right:'20'
|
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
left: '3%',
|
|
||||||
right: '4%',
|
|
||||||
bottom: '3%',
|
|
||||||
containLabel: true
|
|
||||||
},
|
|
||||||
toolbox: {
|
|
||||||
feature: {
|
|
||||||
saveAsImage: {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
type: 'time',
|
|
||||||
boundaryGap: false
|
|
||||||
},
|
|
||||||
yAxis: [{
|
|
||||||
type: 'value',
|
|
||||||
name:params.legend[0], //图列
|
|
||||||
show:true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type:'value',
|
|
||||||
name:params.legend[1], //图例
|
|
||||||
//scale:true,
|
|
||||||
boundaryGap:false,
|
|
||||||
show:true,
|
|
||||||
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:params.legend[0],
|
|
||||||
type:'line',
|
|
||||||
yAxisIndex:0,
|
|
||||||
symbol:'none',
|
|
||||||
data:params.data1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name:params.legend[1],
|
|
||||||
type:'line',
|
|
||||||
yAxisIndex:1,
|
|
||||||
symbol:'none', //数据圆点
|
|
||||||
smooth:false,
|
|
||||||
data:params.data2
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
|
|
||||||
if (option && typeof option === "object") {
|
|
||||||
myChart.setOption(option, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<?php include_once "html/footer.php"; ?>
|
<?php include_once "html/footer.php"; ?>
|
||||||
+3
-2
@@ -2,7 +2,7 @@
|
|||||||
* @Author: 杨水淼 yangshuimiao@jsjd.cc
|
* @Author: 杨水淼 yangshuimiao@jsjd.cc
|
||||||
* @Date: 2025-03-21 11:58:51
|
* @Date: 2025-03-21 11:58:51
|
||||||
* @LastEditors: 杨水淼 yangshuimiao@jsjd.cc
|
* @LastEditors: 杨水淼 yangshuimiao@jsjd.cc
|
||||||
* @LastEditTime: 2025-07-08 14:47:38
|
* @LastEditTime: 2025-07-09 12:28:30
|
||||||
* @FilePath: \echarts\js\pubfunc.js
|
* @FilePath: \echarts\js\pubfunc.js
|
||||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
*/
|
*/
|
||||||
@@ -72,7 +72,7 @@ function convertIndexCode(tscode){
|
|||||||
return '中小板指';
|
return '中小板指';
|
||||||
case '399006.SZ':
|
case '399006.SZ':
|
||||||
return '创业板指';
|
return '创业板指';
|
||||||
case '000016.SZ':
|
case '000016.SH':
|
||||||
return '上证50';
|
return '上证50';
|
||||||
case '399300.SZ':
|
case '399300.SZ':
|
||||||
return '沪深300';
|
return '沪深300';
|
||||||
@@ -88,6 +88,7 @@ function formatDateToYYYYMMDD(dateStr) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function pickData(data, dateKey, valueKey) {
|
function pickData(data, dateKey, valueKey) {
|
||||||
|
data.sort((a, b) => a[dateKey] - b[dateKey]);
|
||||||
return data.map(item => ({
|
return data.map(item => ({
|
||||||
value: [
|
value: [
|
||||||
item[dateKey].slice(0, 4) + '-' + item[dateKey].slice(4, 6) + '-' + item[dateKey].slice(6, 8), // 格式化日期 yyyymmdd 转为 yyyy-mm-dd
|
item[dateKey].slice(0, 4) + '-' + item[dateKey].slice(4, 6) + '-' + item[dateKey].slice(6, 8), // 格式化日期 yyyymmdd 转为 yyyy-mm-dd
|
||||||
|
|||||||
+19
-11
@@ -1,4 +1,12 @@
|
|||||||
function doubleLineChart(){
|
/*
|
||||||
|
* @Author: 杨水淼 yangshuimiao@jsjd.cc
|
||||||
|
* @Date: 2025-07-08 10:40:52
|
||||||
|
* @LastEditors: 杨水淼 yangshuimiao@jsjd.cc
|
||||||
|
* @LastEditTime: 2025-07-09 07:38:46
|
||||||
|
* @FilePath: \echarts\js\renderCharts.js
|
||||||
|
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||||
|
*/
|
||||||
|
function doubleLineChart(params){
|
||||||
/*
|
/*
|
||||||
需要外部提供:
|
需要外部提供:
|
||||||
chartid: div container id
|
chartid: div container id
|
||||||
@@ -7,13 +15,13 @@ function doubleLineChart(){
|
|||||||
sub_text: str
|
sub_text: str
|
||||||
data:data1,data2, array
|
data:data1,data2, array
|
||||||
*/
|
*/
|
||||||
var dom = document.getElementById("chartid");
|
var dom = document.getElementById(params.chartid);
|
||||||
var myChart = echarts.init(dom,'dark');
|
var myChart = echarts.init(dom,'dark');
|
||||||
option = null;
|
option = null;
|
||||||
option = {
|
option = {
|
||||||
title: {
|
title: {
|
||||||
text: legend[0]+' V.S '+legend[2],
|
text: params.text,
|
||||||
subtext: subtxt,
|
subtext: params.sub_text,
|
||||||
textAlign:'center',
|
textAlign:'center',
|
||||||
left:'50%'
|
left:'50%'
|
||||||
},
|
},
|
||||||
@@ -21,7 +29,7 @@ function doubleLineChart(){
|
|||||||
trigger: 'axis'
|
trigger: 'axis'
|
||||||
},
|
},
|
||||||
legend: {
|
legend: {
|
||||||
data:legend,
|
data:params.legend,
|
||||||
right:'20'
|
right:'20'
|
||||||
},
|
},
|
||||||
grid: {
|
grid: {
|
||||||
@@ -41,12 +49,12 @@ function doubleLineChart(){
|
|||||||
},
|
},
|
||||||
yAxis: [{
|
yAxis: [{
|
||||||
type: 'value',
|
type: 'value',
|
||||||
name:legend[0], //图列
|
name:params.legend[0], //图列
|
||||||
show:true
|
show:true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type:'value',
|
type:'value',
|
||||||
name:legend[2]+unit, //图例
|
name:params.legend[1], //图例
|
||||||
//scale:true,
|
//scale:true,
|
||||||
boundaryGap:false,
|
boundaryGap:false,
|
||||||
show:true,
|
show:true,
|
||||||
@@ -74,19 +82,19 @@ function doubleLineChart(){
|
|||||||
}],
|
}],
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
name:legend[0],
|
name:params.legend[0],
|
||||||
type:'line',
|
type:'line',
|
||||||
yAxisIndex:0,
|
yAxisIndex:0,
|
||||||
symbol:'none',
|
symbol:'none',
|
||||||
data:data1
|
data:params.data1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name:legend[2],
|
name:params.legend[1],
|
||||||
type:'line',
|
type:'line',
|
||||||
yAxisIndex:1,
|
yAxisIndex:1,
|
||||||
symbol:'none', //数据圆点
|
symbol:'none', //数据圆点
|
||||||
smooth:false,
|
smooth:false,
|
||||||
data:data2
|
data:params.data2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|||||||
+91
-15
@@ -7,6 +7,7 @@ $ts_name = tscodeToName(ts_code_conv($_REQUEST['ts_code']));
|
|||||||
$title="股价VS PE/PB/PS 趋势:".$ts_name.'('.$_REQUEST['ts_code'].')';
|
$title="股价VS PE/PB/PS 趋势:".$ts_name.'('.$_REQUEST['ts_code'].')';
|
||||||
include_once "html/head.php";
|
include_once "html/head.php";
|
||||||
?>
|
?>
|
||||||
|
<script src="js/renderCharts.js"></script>
|
||||||
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
<form name="main" id="main" method="get"> <div style="width:100%;text-align:center">
|
||||||
股票代码: <input type='text' name='ts_code' id='ts_code' width="30px" value='<?=$_REQUEST['ts_code']?>' >
|
股票代码: <input type='text' name='ts_code' id='ts_code' width="30px" value='<?=$_REQUEST['ts_code']?>' >
|
||||||
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
开始时间: <input type='date' name='t_start' id='t_start' width='30px' value='<?=$_REQUEST['t_start']?>' >
|
||||||
@@ -14,23 +15,98 @@ include_once "html/head.php";
|
|||||||
<input type='submit' value="给我查!">
|
<input type='submit' value="给我查!">
|
||||||
<div > </div>
|
<div > </div>
|
||||||
<input type='checkbox' id='cb_pe' onclick="hideSwitch(this.id,'pe_ttm')" checked> PE_TTM 市盈率
|
<input type='checkbox' id='cb_pe' onclick="hideSwitch(this.id,'pe_ttm')" checked> PE_TTM 市盈率
|
||||||
<input type='checkbox' id='cb_pb' onclick="hideSwitch(this.id,'pb')" > PB 市净率
|
<input type='checkbox' id='cb_pb' onclick="hideSwitch(this.id,'pb')" checked> PB 市净率
|
||||||
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" > PS 市销率
|
<input type='checkbox' id='cb_ps' onclick="hideSwitch(this.id,'ps')" checked> PS 市销率
|
||||||
|
<input type='checkbox' id='cb_ttmv' onclick="hideSwitch(this.id,'total_mv')" checked> 总市值
|
||||||
|
|
||||||
</div> </form>
|
</div> </form>
|
||||||
<div > </div>
|
<div > </div>
|
||||||
<div style="width:100%; text-align:center" id='pe_ttm'>
|
|
||||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pe_ttm&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
<!-- 图表容器 -->
|
||||||
height="400px" width="1000px"></iframe>
|
<div id="pe_ttm" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
||||||
</div>
|
<div id="pb" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
||||||
<div > </div>
|
<div id="ps" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
||||||
<div style="width:100%; text-align:center; display:None;" id='pb'>
|
<div id="total_mv" style="width: 1000px; height:400px; margin: 0 auto 20px;"></div>
|
||||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=pb&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
|
||||||
height="400px" width="1000px"></iframe>
|
|
||||||
</div>
|
<script>
|
||||||
<div > </div>
|
let t_start = $('#t_start').val();
|
||||||
<div style="width:100%; text-align:center; display:None;" id='ps'>
|
let t_end = $('#t_end').val();
|
||||||
<iframe src="https://echart.doorcome.cn/chartFore.php?s=<?=$_REQUEST['t_start']?>&item=ps&ts_code=<?=$_REQUEST['ts_code']?>&e=<?=$_REQUEST['t_end']?>"
|
let ts_code = $("#ts_code").val();
|
||||||
height="400px" width="1000px"></iframe>
|
let codeName ="<?=$ts_name?>";
|
||||||
|
|
||||||
|
url = "https://api.doorcome.cn/api/stockparam/?tscode="+ts_code;
|
||||||
|
url += "&start_date="+t_start+"&end_date="+t_end;
|
||||||
|
fetch(url)
|
||||||
|
.then(httpresponse => httpresponse.json())
|
||||||
|
.then(parsedData => {
|
||||||
|
// 图表配置:pe_ttm
|
||||||
|
var params = {};
|
||||||
|
params.chartid='pe_ttm';
|
||||||
|
params.legend = [codeName,'pe_ttm'];
|
||||||
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
|
params.data2 = pickData(parsedData, 'trade_date', 'pe_ttm')
|
||||||
|
dataCal = calculateStats(params.data2);
|
||||||
|
params.sub_text = "TTM PE Max:"+dataCal['max'];
|
||||||
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
|
doubleLineChart(params);
|
||||||
|
// 图表配置:pb
|
||||||
|
params = {};
|
||||||
|
params.chartid='pb';
|
||||||
|
params.legend = [codeName,'市净率'];
|
||||||
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
|
params.data2 = pickData(parsedData, 'trade_date', 'pb')
|
||||||
|
dataCal = calculateStats(params.data2);
|
||||||
|
params.sub_text = "PB Max:"+dataCal['max'];
|
||||||
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
|
doubleLineChart(params);
|
||||||
|
|
||||||
|
// 图表配置:ps
|
||||||
|
params = {};
|
||||||
|
params.chartid='ps';
|
||||||
|
params.legend = [codeName,'市销率'];
|
||||||
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
|
params.data2 = pickData(parsedData, 'trade_date', 'ps')
|
||||||
|
dataCal = calculateStats(params.data2);
|
||||||
|
params.sub_text = "PS Max:"+dataCal['max'];
|
||||||
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
|
doubleLineChart(params);
|
||||||
|
|
||||||
|
// 图表配置:total_mv
|
||||||
|
params = {};
|
||||||
|
params.chartid='total_mv';
|
||||||
|
params.legend = [codeName,'总市值-亿'];
|
||||||
|
params.text = params.legend[0]+' V.S '+params.legend[1];
|
||||||
|
params.data1 = pickData(parsedData, 'trade_date', 'close');
|
||||||
|
params.data2 = pickData(parsedData, 'trade_date', 'total_mv')
|
||||||
|
params.data2 = params.data2.map(item => {
|
||||||
|
return {
|
||||||
|
value: [
|
||||||
|
item.value[0],
|
||||||
|
parseFloat((parseFloat(item.value[1]) / 10000).toFixed(2))
|
||||||
|
]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
dataCal = calculateStats(params.data2);
|
||||||
|
params.sub_text = "总市值 Max:"+dataCal['max'];
|
||||||
|
params.sub_text += ", Min:"+dataCal['min'];
|
||||||
|
params.sub_text += ", Average:"+dataCal['avg'];
|
||||||
|
params.sub_text += ", Recent:"+dataCal['last'];
|
||||||
|
doubleLineChart(params);
|
||||||
|
})
|
||||||
|
.catch(error => console.error('数据加载失败:', error));
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<?php include_once "html/footer.php"; ?>
|
<?php include_once "html/footer.php"; ?>
|
||||||
|
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
<script>
|
|
||||||
function formatDate(date) {
|
|
||||||
console.log(date);
|
|
||||||
date=date.replace(/-/g,'');
|
|
||||||
console.log(date);
|
|
||||||
// date = new Date();
|
|
||||||
date = new Date(Date.parse(date.replace(/-/g, "/"))); //转换成Data();
|
|
||||||
console.log(date);
|
|
||||||
var y = date.getFullYear();
|
|
||||||
console.log(y);
|
|
||||||
var m = date.getMonth() + 1;
|
|
||||||
m = m < 10 ? '0' + m : m;
|
|
||||||
var d = date.getDate();
|
|
||||||
d = d < 10 ? ('0' + d) : d;
|
|
||||||
return y + '-' + m + '-' + d;
|
|
||||||
}
|
|
||||||
|
|
||||||
formatDate('2020-02-02');
|
|
||||||
|
|
||||||
var a = ""
|
|
||||||
function aa() {
|
|
||||||
a="hh"
|
|
||||||
}
|
|
||||||
aa() // 注意,aa() 一定要执行,局部赋值全局变量才会有作用
|
|
||||||
alert(a)
|
|
||||||
</script>
|
|
||||||
Reference in New Issue
Block a user