Compare commits

..

20 Commits
master ... dev

@ -1,5 +1,6 @@
# just a flag
# just a flag dev配置
ENV = 'development'
# base api
VUE_APP_BASE_API = 'https://gupiao.365rise.top/ssdmn-gupiao-api'
# base api https://gupiao.365rise.top/ssdmn-gupiao-api为线上地址
#VUE_APP_BASE_API = 'https://gupiao.365rise.top/ssdmn-gupiao-api'
VUE_APP_BASE_API = 'http://localhost:8001/ssdmn-gupiao-api'

@ -43,7 +43,7 @@
"babel-plugin-dynamic-import-node": "2.3.3",
"chalk": "2.4.2",
"connect": "3.6.6",
"eslint": "6.7.2",
"eslint": "^6.7.2",
"eslint-plugin-vue": "6.2.2",
"html-webpack-plugin": "3.2.0",
"mockjs": "^1.0.1-beta3",

@ -70,6 +70,14 @@ export function trendPlate(data) {
data,
});
}
// 动量趋势板块
export function trends(data) {
return request({
url: "/stock/trends",
method: "post",
data,
});
}
// 个股涨跌分页查询
export function riseLossesDetail(data) {
return request({

File diff suppressed because it is too large Load Diff

@ -42,8 +42,187 @@
<span style="color: #6fbb60">下跌{{ marketEqual }}</span>
</div>
</div>
<div class="market_bottom">
<div class="market_bottom_nav_text">
<div class="left_suggest_nav">
<div class="suggest_nav_market_text">推荐信息</div>
<div class="suggest_nav_market_right" @click="marketDetail">
<div>我的收藏</div>
<i class="el-icon-arrow-right"></i>
</div>
</div>
<div class="left_suggest">
<div class="suggest_nav_list">
<div
v-for="(item, index) in suggestTopNav"
:key="index"
:style="{ color: item.is ? '#EC7C00' : '#999999' }"
@click="tendencyNavClick(item.name)"
>
{{ item.name }}
</div>
</div>
<div class="list">
<el-table
:data="suggestList"
style="width: 100%"
@row-click="rowClick"
:height="tableHeight"
>
<el-table-column prop="securityCode" label="股票代码">
</el-table-column>
<el-table-column prop="securityName" label="股票名称">
</el-table-column>
<el-table-column prop="openingPrice" label="开盘价">
</el-table-column>
<el-table-column prop="closingPrice" label="收盘价">
</el-table-column>
<el-table-column prop="highestPrice" label="最高价">
</el-table-column>
<el-table-column prop="lowestPrice" label="最低价"> </el-table-column>
<el-table-column label="当日涨跌幅">
<template slot-scope="scope">
<div
style="color: #d9001b"
v-if="scope.row.riseLossesCurrentDay > 0"
>
{{ scope.row.riseLossesCurrentDay.toFixed(2) }}%
</div>
<div style="color: #6fbb60" v-else>
-{{ scope.row.riseLossesCurrentDay.toFixed(2) }}%
</div>
</template>
</el-table-column>
<el-table-column label="是否涨停">
<!-- riseStop -->
<template slot-scope="scope">
{{ scope.row.riseStop == 1 ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column label="是否跌停">
<template slot-scope="scope">
{{ scope.row.lossesStop == 1 ? "是" : "否" }}
</template>
</el-table-column>
<el-table-column prop="volume" label="成交量"> </el-table-column>
<el-table-column prop="turnover" label="成交额"> </el-table-column>
<el-table-column prop="freeCapitalization" label="自由流通市值">
</el-table-column>
<el-table-column
prop="totalInstitutionalPositions"
label="机构持仓合计"
>
</el-table-column>
<!-- <el-table-column prop="ban" label="几天几板" width="150"> -->
<!-- </el-table-column> -->
<el-table-column prop="dayAndPlate" width="150">
<template slot="header" slot-scope="scope">
<div class="plate_sift" @click="selectPlateSift">
<div>几天几板</div>
<div class="module_head_icon" v-if="plateSift">
<img
src="../../static/shengxu_true.png"
class="head_icon"
mode="scaleToFill"
/>
<img
src="../../static/jiangxu_false.png"
class="head_icon"
mode="scaleToFill"
/>
</div>
<div class="module_head_icon" v-else>
<img
src="../../static/shengxu_false.png"
class="head_icon"
mode="scaleToFill"
/>
<img
src="../../static/jiangxu_true.png"
class="head_icon"
mode="scaleToFill"
/>
</div>
</div>
</template>
</el-table-column>
<el-table-column
prop="dongCaiIndustryIndexLevel2"
label="所属东财行业指数2级"
>
</el-table-column>
</el-table>
<div class="pagination" v-if="total > 20" ref="footer">
<el-pagination
layout="prev, pager, next"
:total="total"
background
:page-size="20"
@current-change="currentChange"
>
</el-pagination>
</div>
</div>
<!-- <div class="suggest_list_head">
<div class="suggest_head_left">
<div class="suggest_head_date">交易日期</div>
<div class="suggest_head_name">名称</div>
<div class="suggest_head_industry_name">东财行业指数2级</div>
</div>
</div>
<div
v-if="suggestList.length == 0"
style="
font-weight: bold;
color: #999999;
text-align: center;
margin-top: 50px;
"
>
暂无数据
</div>
<div v-else>
<div
class="suggest_list"
v-for="(item, index) in suggestList"
:key="index"
>
<div class="trend_list_left">
<div class="trend_list_date">
{{ item.businessDate }}
</div>
<div class="trend_list_name">
{{ item.securityName }}
</div>
<div class="list_plate_box">
<div>{{ item.sort }}</div>
<div>
<div v-if="item.sortChange > 0" class="plate_box_right">
<img
src="../../static/home_paiming_shangsheng.png"
class="liate_box_icon"
/>
<div style="color: #d9001b">{{ item.sortChange }}</div>
</div>
<div v-if="item.sortChange == 0" class="plate_box_right">
<div>-</div>
</div>
<div v-if="item.sortChange < 0" class="plate_box_right">
<img
src="../../static/home_paiming_xiajiang.png"
class="liate_box_icon"
/>
<div style="color: #8fc320">
{{ Math.abs(item.sortChange) }}
</div>
</div>
</div>
</div>
</div>
<div class="trend_list_right">
{{ item.sortChange }}
</div>
</div>
</div> -->
<!-- <div class="market_bottom_nav_text">
<div
v-for="(item, index) in marketBottomNav"
:key="index"
@ -53,7 +232,7 @@
{{ item.name }}
</div>
</div>
<div id="myChart" :style="{ width: '100%', height: '600px' }"></div>
<div id="myChart" :style="{ width: '100%', height: '600px' }"></div> -->
</div>
</div>
<div class="main_right">
@ -194,7 +373,7 @@
</div>
<div class="main_right_bottom">
<div class="main_right_bottom_nav" @click="toPrivate">
<div class="main_right_bottom_text">个股详情</div>
<div class="main_right_bottom_text">涨停个股</div>
<div class="main_right_bottom_right">
<div>查看详情</div>
<i class="el-icon-arrow-right"></i>
@ -203,11 +382,10 @@
<div class="private_list_head">
<div class="private_head_left">
<div class="private_head_name">股票名称</div>
<div class="private_head_date">日期</div>
<div class="private_head_price">价格</div>
<div class="private_head_decline">涨跌幅</div>
<div class="private_head_price">所属板块</div>
<div class="private_head_price">几天几板</div>
</div>
<div>所属板块</div>
</div>
<div
v-if="privateList.length == 0"
@ -262,6 +440,7 @@
<script>
import {
trendPlate,
trends,
riseLossesStatistics,
stockDetails,
kLine,
@ -282,30 +461,85 @@ export default {
name: "全部",
is: true,
current: "",
//
hasMarkedData: false,
//
marketRose: "",
//
marketFall: "",
//
marketEqual: "",
},
{
name: "上证指数",
is: false,
current: "SH",
code: "000001",
//
hasMarkedData: false,
//
marketRose: "",
//
marketFall: "",
//
marketEqual: "",
},
{
name: "深证指数",
is: false,
current: "SZ",
code: "399001",
//
hasMarkedData: false,
//
marketRose: "",
//
marketFall: "",
//
marketEqual: "",
},
{
name: "创业板",
is: false,
current: "30",
code: "399006",
//
hasMarkedData: false,
//
marketRose: "",
//
marketFall: "",
//
marketEqual: "",
},
{
name: "科创板",
is: false,
current: "688",
code: "000688",
//
hasMarkedData: false,
//
marketRose: "",
//
marketFall: "",
//
marketEqual: "",
},
],
//
suggestTopNav:[
{
name: "版块",
is: true,
//
hasMarkedData: false
},
{
name: "个股",
is: false,
//
hasMarkedData: false
},
],
// K线
@ -366,6 +600,8 @@ export default {
current: 30,
},
],
//
suggestList:[],
//
tendencyList: [
{
@ -470,28 +706,55 @@ export default {
marketFall: "",
//
marketEqual: "",
//
tableHeight: 10,
//
total: 20,
//
plateSift: true,
};
},
created() {
console.log("start created: ", Date.now());
//redis
this.marketTopDate = this.getTime(Date.parse(new Date()));
this.rending();
document.title = "首页";
console.log("finished created: ", Date.now());
},
mounted() {
console.log("start amounted: ", Date.now());
this.$nextTick(() => {
// echarts
this.initEcharts();
this.initEchartsK();
});
console.log("finished amounted: ", Date.now());
},
methods: {
rending() {
trendPlate({
// trendPlate({
// pageModel: {
// pageNo: 1,
// pageSize: 10,
// sortField: "",
// sortWay: "",
// },
// trendType: 1,
// })
// .then((res) => {
// this.tendencyList = res.data.list;
// console.log(res);
// })
// .catch(() => {
// // this.shareLoading = false;
// });
trends({
pageModel: {
pageNo: 1,
pageSize: 10,
sortField: "",
sortWay: "",
sortField: "sort,sortChange",
sortWay: "asc,asc",
},
trendType: 1,
})
@ -521,8 +784,24 @@ export default {
handleChange(e) {
console.log(e);
},
//id5 10
getTendencyList(id) {
trendPlate({
// trendPlate({
// pageModel: {
// pageNo: 1,
// pageSize: 10,
// sortField: "",
// sortWay: "",
// },
// trendType: id,
// })
// .then((res) => {
// this.tendencyList = res.data.list;
// console.log(res);
// })
// .catch(() => {});
console.log("getTendencyList: " ,this.marketTopDate);
trends({
pageModel: {
pageNo: 1,
pageSize: 10,
@ -530,6 +809,7 @@ export default {
sortWay: "",
},
trendType: id,
businessDate: this.marketTopDate
})
.then((res) => {
this.tendencyList = res.data.list;
@ -580,12 +860,17 @@ export default {
marketTopNavClick(name) {
this.marketTopNav.forEach((item) => {
if (item.name == name) {
console.log("marketRose: ",item.marketRose);
item.is = true;
riseLossesStatistics({
businessDate: this.marketTopDate,
securityType: item.current,
})
.then((res) => {
item.marketRose = res.data.riseNum;
item.marketFall = res.data.lossesNum;
item.marketEqual = res.data.equalNum;
this.marketRose = res.data.riseNum;
this.marketFall = res.data.lossesNum;
this.marketEqual = res.data.equalNum;
@ -680,6 +965,7 @@ export default {
this.tendencyNav.forEach((item) => {
if (item.name == name) {
item.is = true;
console.log("to getTrendList: " ,this.marketTopDate);
this.getTendencyList(item.current);
this.tendencyNavIndex = item.current;
} else {
@ -691,7 +977,24 @@ export default {
selectRankChange() {
this.rankChange = !this.rankChange;
console.log(this.rankChange);
trendPlate({
// trendPlate({
// pageModel: {
// pageNo: 1,
// pageSize: 10,
// sortField: "sort,sortChange",
// sortWay:
// (this.plateRank ? "asc" : "desc") +
// "," +
// (this.rankChange ? "asc" : "desc"),
// },
// trendType: this.tendencyNavIndex,
// })
// .then((res) => {
// this.tendencyList = res.data.list;
// console.log(res);
// })
// .catch(() => {});
trends({
pageModel: {
pageNo: 1,
pageSize: 10,
@ -702,6 +1005,7 @@ export default {
(this.rankChange ? "asc" : "desc"),
},
trendType: this.tendencyNavIndex,
businessDate: this.marketTopDate
})
.then((res) => {
this.tendencyList = res.data.list;
@ -712,7 +1016,25 @@ export default {
// or
selectPlateRank() {
this.plateRank = !this.plateRank;
trendPlate({
// trendPlate({
// pageModel: {
// pageNo: 1,
// pageSize: 10,
// sortField: "sort,sortChange",
// sortWay:
// (this.plateRank ? "asc" : "desc") +
// "," +
// (this.rankChange ? "asc" : "desc"),
// },
// trendType: this.tendencyNavIndex,
// })
// .then((res) => {
// this.tendencyList = res.data.list;
// console.log(res);
// })
// .catch(() => {});
//
trends({
pageModel: {
pageNo: 1,
pageSize: 10,
@ -723,6 +1045,7 @@ export default {
(this.rankChange ? "asc" : "desc"),
},
trendType: this.tendencyNavIndex,
businessDate: this.marketTopDate
})
.then((res) => {
this.tendencyList = res.data.list;
@ -765,6 +1088,8 @@ export default {
},
dateChenge() {
this.initEcharts();
//
this.getTendencyList(this.tendencyNavIndex);
},
//
afterDay(date) {
@ -1180,6 +1505,14 @@ export default {
// this.shareLoading = false;
});
},
//
rowClick(r) {
},
//
selectPlateSift() {
this.plateSift = !this.plateSift;
this.rending();
},
},
};
</script>
@ -1201,6 +1534,7 @@ export default {
background-color: #ffffff;
padding: 20px;
border-radius: 8px;
//
.left_nav {
display: flex;
align-items: center;
@ -1270,6 +1604,84 @@ export default {
cursor: pointer;
}
}
//
.left_suggest_nav{
margin-top: 20px;
display: flex;
align-items: center;
justify-content: space-between;
.suggest_nav_market_text {
font-weight: bold;
}
.suggest_nav_market_right {
cursor: pointer;
font-size: 14px;
display: flex;
// align-items: center;
color: #999999;
}
.el-icon-arrow-right {
margin-left: 5px;
line-height: 16px;
}
}
.left_suggest {
margin-top: 20px;
// padding: 20px;
border: 1px solid #e8e8e8;
.suggest_nav_list {
padding: 20px 20px 5px 20px;
display: flex;
align-items: center;
justify-content: space-between;
}
.suggest_list_head{
font-size: 14px;
font-weight: bold;
display: flex;
align-items: center;
justify-content: flex-start;
padding: 12px 20px;
margin-top: 12px;
background-color: #fff9f3;
.suggest_head_left {
display: flex;
align-items: center;
.suggest_head_date {
width: 90px;
}
.suggest_head_name {
width: 120px;
text-align: center;
}
.suggest_head_industry_name{
width: 120px;
text-align: center;
}
}
}
::v-deep .el-table td {
text-align: center;
border: 0;
}
::v-deep .el-table th.is-leaf {
text-align: center;
background-color: #fff9f3;
color: #333333;
padding: 13px 0;
}
.columnar_value {
display: flex;
align-items: center;
justify-content: center;
}
.columnar_value > span {
margin-right: 30px;
}
}
}
.main_right {
// background-color: white;

@ -36,7 +36,7 @@
<script>
import { sendSms } from "@/api/user";
import Cookies from "js-cookie";
import Cookies from 'js-cookie';
export default {
name: "Login",
data() {
@ -73,7 +73,7 @@ export default {
.then((res) => {})
.catch(() => {
// this.shareLoading = false;
});
})
let that = this;
if (that.flag) {
that.flag = false;
@ -146,7 +146,7 @@ export default {
this.loading = false;
});
} else {
this.$message.error("请输入账号密码");
this.$message.error('请输入账号密码');
}
},
},

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save