8.28 修改事件详情相关概念模块样式,增加股票详情信息来源展示

This commit is contained in:
尚政杰
2025-08-28 17:42:22 +08:00
parent 58b3414bdd
commit bf2388c3ec
403 changed files with 19843 additions and 1602 deletions

View File

@@ -3,6 +3,7 @@ const common_vendor = require("../../../common/vendor.js");
const request_api = require("../../../request/api.js");
const utils_util = require("../../../utils/util.js");
const common_assets = require("../../../common/assets.js");
const echarts = require("../../../uni_modules/lime-echart/static/echarts.min.js");
const _sfc_main = {
data() {
return {
@@ -12,7 +13,7 @@ const _sfc_main = {
//事件id
eventDetails: null,
//事件详情
categoryList: ["相关标的", "相关概念", "历史事件", "时间传导链分析", "关联数据"],
categoryList: ["相关标的", "相关概念", "历史事件"],
targetList: [],
//相关标的
conceptList: [],
@@ -23,14 +24,81 @@ const _sfc_main = {
//历史事件相关股票
selectCategory: 0,
headingList: ["名称代码", "分时图", "开盘价", "最新价", "涨跌幅"],
getLocaleHourMinute: utils_util.getLocaleHourMinute,
getLocaleTime: utils_util.getLocaleTime,
getRateUpOrDown: utils_util.getRateUpOrDown,
getRateStr: utils_util.getRateStr,
scoreTop: "",
eventComment: "",
//事件评论
expectScore: 0
expectScore: 0,
//预期得分
commentList: [],
//评价列表
eventComment: "",
//事件评论内容
replyId: "",
//回复评论id
replyPid: "",
//回复评论父级id
isFocus: false,
//是否获取焦点
replyComment: "",
//评论回复内容
option: {
tooltip: {
trigger: "axis",
axisPointer: {
type: "shadow"
},
confine: true
},
grid: {
left: "0%",
right: "0%",
top: "0%",
bottom: "20%"
},
xAxis: [
{
type: "category",
data: [],
axisTick: {
show: false
},
axisLine: {
show: false
}
}
],
yAxis: [
{
type: "value",
show: false,
axisTick: { show: false },
scale: true
}
],
series: {
name: "分时图",
type: "line",
label: {
show: true,
position: "top",
fontSize: 12
},
data: [],
itemStyle: {
color: ""
},
markLine: {
symbol: ["none", "none"],
lineStyle: {
color: "#AAAAAA",
type: "dashed"
},
data: []
}
}
}
};
},
onLoad(e) {
@@ -41,6 +109,30 @@ const _sfc_main = {
}
},
methods: {
async init() {
let that = this;
setTimeout(function() {
that.targetList.map(function(item, index) {
const chartDom = that.$refs["chartRef" + index][0];
chartDom.init(echarts).then((res) => {
let option = { ...that.option };
let valueData = [];
for (let item1 of item.minute_chart_data) {
valueData.push(item1.close);
}
option.series.data = valueData;
let firstOpen = item.minute_chart_data[0].open;
option.series.markLine.data = [{ yAxis: firstOpen }];
let lastClose = item.minute_chart_data.slice(-1)[0].close;
if (lastClose >= firstOpen) {
option.series.itemStyle.color = "#EF5350";
} else
option.series.itemStyle.color = "#26A69A";
res.setOption(option);
});
});
}, 300);
},
/**
* 点击切换分类
*/
@@ -61,15 +153,15 @@ const _sfc_main = {
*/
clickStockItem(code) {
common_vendor.index.navigateTo({
url: "/pages/index/stockDetails/stockDetails?code=" + code
url: "/pages/index/stockDetails/stockDetails?type=1&code=" + code + "&id=" + this.eventId
});
},
/**
* 点击查看相关概念
*/
clickConceptItem() {
clickConceptItem(name) {
common_vendor.index.navigateTo({
url: "/pages/index/conceptDetails/conceptDetails"
url: "/pages/index/conceptDetails/conceptDetails?name=" + name
});
},
/**
@@ -106,6 +198,14 @@ const _sfc_main = {
let eventId = this.eventId;
let param = { content: this.eventComment };
request_api.commentEvent(eventId, param).then((res) => {
common_vendor.index.showToast({
title: res.message,
icon: "none"
});
let that = this;
setTimeout(function() {
that.getEventCommentListData();
}, 1e3);
}).catch((error) => {
});
},
@@ -126,7 +226,7 @@ const _sfc_main = {
*/
clickFollow() {
let eventId = this.eventId;
followEvent(eventId).then((res) => {
request_api.followEvent(eventId).then((res) => {
common_vendor.index.showToast({
title: res.message,
icon: "none"
@@ -134,6 +234,47 @@ const _sfc_main = {
}).catch((error) => {
});
},
/**
* 点击回复评论
*/
clickReplyComment(id, pid) {
this.replyId = id;
if (pid) {
this.replyPid = pid;
}
this.isFocus = true;
},
sendReplyComment() {
if (!this.replyComment) {
common_vendor.index.showToast({
title: "请输入评论内容",
icon: "none"
});
return;
}
let param = { content: this.replyComment };
if (this.replyPid) {
param.parent_id = this.replyPid;
}
request_api.replyComment(this.replyId, param).then((res) => {
}).catch((error) => {
});
},
/**
* 点赞评论
*/
clickLikeComment(id, index, cindex) {
request_api.likeEventComment(id).then((res) => {
common_vendor.index.showToast({
title: res.message,
icon: "none"
});
if (cindex == -1) {
this.commentList[index].likes_count = res.likes_count;
}
}).catch((error) => {
});
},
/**
* 获取事件相关标的数据
*/
@@ -143,6 +284,7 @@ const _sfc_main = {
if (res.code == 200) {
this.eventDetails = res.data;
this.targetList = res.data.related_stocks;
this.init();
} else
common_vendor.index.showToast({
title: res.message,
@@ -155,15 +297,10 @@ const _sfc_main = {
* 获取事件相关概念数据
*/
getEventRelatedConceptData() {
let eventId = this.eventId;
request_api.eventRelatedConcept(eventId).then((res) => {
if (res.code == 200) {
this.conceptList = res.data.related_concepts;
} else
common_vendor.index.showToast({
title: res.message,
icon: "none"
});
let eventDetails = this.eventDetails;
let param = { query: eventDetails.event_title, size: 4, page: 1, sort_by: "_score", isJson: 1 };
request_api.eventRelatedConcept(param).then((res) => {
this.conceptList = res.results;
}).catch((error) => {
});
},
@@ -190,7 +327,7 @@ const _sfc_main = {
getEventCommentListData() {
let eventId = this.eventId;
request_api.eventCommentList(eventId).then((res) => {
this.commentList = res.data.comments;
this.commentList = res.data.posts;
}).catch((error) => {
});
}
@@ -198,13 +335,15 @@ const _sfc_main = {
};
if (!Array) {
const _easycom_navBar2 = common_vendor.resolveComponent("navBar");
const _easycom_l_echart2 = common_vendor.resolveComponent("l-echart");
const _easycom_uni_popup2 = common_vendor.resolveComponent("uni-popup");
(_easycom_navBar2 + _easycom_uni_popup2)();
(_easycom_navBar2 + _easycom_l_echart2 + _easycom_uni_popup2)();
}
const _easycom_navBar = () => "../../../components/navBar/navBar.js";
const _easycom_l_echart = () => "../../../uni_modules/lime-echart/components/l-echart/l-echart.js";
const _easycom_uni_popup = () => "../../../uni_modules/uni-popup/components/uni-popup/uni-popup.js";
if (!Math) {
(_easycom_navBar + _easycom_uni_popup)();
(_easycom_navBar + _easycom_l_echart + _easycom_uni_popup)();
}
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
@@ -243,96 +382,133 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return {
a: common_vendor.t(item.stock_name),
b: common_vendor.t(item.stock_code),
c: common_vendor.t(item.trade_data.open_price),
d: common_vendor.t(item.trade_data.latest_price),
e: common_vendor.t(item.trade_data.change_pct),
f: common_vendor.n("chg flex1 " + ($data.getRateUpOrDown(item.trade_data.change_pct) ? "down" : "up")),
g: common_vendor.t(item.relation_desc),
h: index,
i: common_vendor.o(($event) => $options.clickStockItem(item.stock_code), index)
c: common_vendor.sr("chartRef" + index, "6e1a61f1-1-" + i0, {
"f": 1
}),
d: "chartRef" + index,
e: "6e1a61f1-1-" + i0,
f: common_vendor.t(item.trade_data ? item.trade_data.open_price : ""),
g: common_vendor.t(item.trade_data ? item.trade_data.latest_price : ""),
h: common_vendor.t(item.trade_data ? item.trade_data.change_pct : ""),
i: common_vendor.n("chg flex1 " + ($data.getRateUpOrDown(item.trade_data ? item.trade_data.change_pct : "") ? "down" : "up")),
j: common_vendor.t(item.relation_desc),
k: index,
l: common_vendor.o(($event) => $options.clickStockItem(item.stock_code), index)
};
})
} : {}, {
m: $data.selectCategory == 1
}, $data.selectCategory == 1 ? {
n: common_vendor.f($data.conceptList, (item, index, i0) => {
return {
a: item.first_image,
b: common_vendor.t(item.concept),
c: common_vendor.t(item.reason),
d: index,
e: common_vendor.o(($event) => $options.clickConceptItem(), index)
};
})
} : {}, {
o: $data.selectCategory == 2
}, $data.selectCategory == 2 ? {
p: common_assets._imports_1$4,
q: common_vendor.t($data.expectScore),
r: common_assets._imports_2$6,
s: common_vendor.o(($event) => $options.clickExpectScore($event)),
t: common_vendor.f($data.historyEventList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.title),
b: common_vendor.t(item.content),
c: $data.getRateUpOrDown(item.related_avg_chg)
}, $data.getRateUpOrDown(item.related_avg_chg) ? {
d: common_assets._imports_1$1
a: $data.getRateUpOrDown(item.price_info.avg_change_pct)
}, $data.getRateUpOrDown(item.price_info.avg_change_pct) ? {
b: common_assets._imports_1$4
} : {
e: common_assets._imports_2$2
c: common_assets._imports_2$6
}, {
f: common_vendor.t($data.getRateStr(item.related_avg_chg)),
g: common_vendor.n("rateItem " + ($data.getRateUpOrDown(item.related_avg_chg) ? "down" : "up")),
h: $data.getRateUpOrDown(item.related_max_chg)
}, $data.getRateUpOrDown(item.related_max_chg) ? {
i: common_assets._imports_1$1
} : {
j: common_assets._imports_2$2
}, {
k: common_vendor.t($data.getRateStr(item.related_max_chg)),
l: common_vendor.n("rateItem " + ($data.getRateUpOrDown(item.related_max_chg) ? "down" : "up")),
m: common_vendor.o(($event) => $options.clickLookHistoricalEventRelatedStock(item), index),
n: common_vendor.t($data.getLocaleTime(item.event_date)),
o: index
d: common_vendor.t($data.getRateStr(item.price_info.avg_change_pct)),
e: common_vendor.n("rateC absolute " + ($data.getRateUpOrDown(item.price_info.avg_change_pct) ? "down" : "up")),
f: common_vendor.t(item.stock_count),
g: common_vendor.t(item.concept),
h: common_vendor.t(item.description),
i: common_vendor.t(item.price_info.trade_date),
j: common_vendor.f(item.stocks, (item2, index2, i1) => {
return {
a: common_vendor.t(item2.stock_name),
b: index2
};
}),
k: common_vendor.t(item.happened_times[0] + (item.happened_times.length > 1 ? "(共" + item.happened_times.length + "次)" : "")),
l: index,
m: common_vendor.o(($event) => $options.clickConceptItem(item.concept), index)
});
}),
v: common_assets._imports_1$4
o: common_assets._imports_3$4
} : {}, {
w: common_vendor.s("top:" + $data.navH + "px;")
p: $data.selectCategory == 2
}, $data.selectCategory == 2 ? {
q: common_assets._imports_4$2,
r: common_vendor.t($data.expectScore),
s: common_assets._imports_5$1,
t: common_vendor.o(($event) => $options.clickExpectScore($event)),
v: common_vendor.f($data.historyEventList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.title),
b: common_vendor.t(item.relevance * 10),
c: common_vendor.t(item.content),
d: $data.getRateUpOrDown(item.related_avg_chg)
}, $data.getRateUpOrDown(item.related_avg_chg) ? {
e: common_assets._imports_1$1
} : {
f: common_assets._imports_2$2
}, {
g: common_vendor.t($data.getRateStr(item.related_avg_chg)),
h: common_vendor.n("rateItem " + ($data.getRateUpOrDown(item.related_avg_chg) ? "down" : "up")),
i: $data.getRateUpOrDown(item.related_max_chg)
}, $data.getRateUpOrDown(item.related_max_chg) ? {
j: common_assets._imports_1$1
} : {
k: common_assets._imports_2$2
}, {
l: common_vendor.t($data.getRateStr(item.related_max_chg)),
m: common_vendor.n("rateItem " + ($data.getRateUpOrDown(item.related_max_chg) ? "down" : "up")),
n: common_vendor.o(($event) => $options.clickLookHistoricalEventRelatedStock(item), index),
o: common_vendor.t($data.getLocaleTime(item.event_date)),
p: index
});
}),
w: common_assets._imports_4$2
} : {}, {
x: common_vendor.s("top:" + $data.navH + "px;")
}) : {}, {
x: $data.eventDetails
y: $data.eventDetails
}, $data.eventDetails ? {
y: common_vendor.o(($event) => $options.sendEventComment()),
z: $data.eventComment,
A: common_vendor.o(($event) => $data.eventComment = $event.detail.value),
B: common_assets._imports_3,
C: common_vendor.t($data.eventDetails.view_count),
D: common_assets._imports_4,
E: common_vendor.t($data.eventDetails.post_count),
F: common_vendor.o(($event) => $options.clickComment()),
G: common_assets._imports_7,
H: common_vendor.t($data.eventDetails.follower_count),
I: common_vendor.o(($event) => $options.clickFollow())
z: common_vendor.o(($event) => $options.sendEventComment()),
A: $data.eventComment,
B: common_vendor.o(($event) => $data.eventComment = $event.detail.value),
C: common_assets._imports_3,
D: common_vendor.t($data.eventDetails.view_count),
E: common_assets._imports_4,
F: common_vendor.t($data.eventDetails.post_count),
G: common_vendor.o(($event) => $options.clickComment()),
H: common_assets._imports_10,
I: common_vendor.t($data.eventDetails.follower_count),
J: common_vendor.o(($event) => $options.clickFollow())
} : {}, {
J: common_assets._imports_8,
K: common_vendor.o(($event) => $options.closeCommentPopup()),
L: common_assets._imports_9,
M: common_assets._imports_10,
N: common_assets._imports_9,
O: common_vendor.sr("popup", "6e1a61f1-1"),
P: common_vendor.p({
K: common_assets._imports_11,
L: common_vendor.o(($event) => $options.closeCommentPopup()),
M: common_vendor.f($data.commentList, (item, index, i0) => {
return {
a: item.user.avatar_url,
b: common_vendor.t(item.user.username),
c: common_vendor.t(item.content),
d: common_vendor.t($data.getLocaleHourMinute(item.created_at)),
e: common_vendor.o(($event) => $options.clickReplyComment(item.post_id), index),
f: common_vendor.t(item.likes_count),
g: common_vendor.o(($event) => $options.clickLikeComment(item.post_id, index, -1), index),
h: index
};
}),
N: common_assets._imports_12,
O: $data.isFocus,
P: common_vendor.o(($event) => $options.sendReplyComment()),
Q: $data.replyComment,
R: common_vendor.o(($event) => $data.replyComment = $event.detail.value),
S: common_vendor.sr("popup", "6e1a61f1-2"),
T: common_vendor.p({
type: "bottom"
}),
Q: common_assets._imports_11$1,
R: common_vendor.s("margin-top:" + $data.scoreTop + "px;"),
S: common_vendor.sr("expectScorePopup", "6e1a61f1-2"),
T: common_vendor.p({
U: common_assets._imports_13$1,
V: common_vendor.s("margin-top:" + $data.scoreTop + "px;"),
W: common_vendor.sr("expectScorePopup", "6e1a61f1-3"),
X: common_vendor.p({
type: "top",
["mask-background-color"]: "transparent"
}),
U: common_assets._imports_8,
V: common_vendor.o(($event) => $options.closeRelatedStockPopup()),
W: common_vendor.f($data.historyEventRelatedStockList, (item, index, i0) => {
Y: common_assets._imports_11,
Z: common_vendor.o(($event) => $options.closeRelatedStockPopup()),
aa: common_vendor.f($data.historyEventRelatedStockList, (item, index, i0) => {
return common_vendor.e({
a: common_vendor.t(item.stock_name + "(" + item.stock_code + ")"),
b: common_vendor.t(item.correlation * 100),
@@ -344,13 +520,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
f: common_assets._imports_2$2
}, {
g: common_vendor.t($data.getRateStr(item.daily_change)),
h: common_vendor.t(item.relation_desc),
i: index,
j: common_vendor.o(($event) => $options.clickStockItem(item.stock_code), index)
h: common_vendor.n("rateC " + ($data.getRateUpOrDown(item.daily_change) ? "down" : "up")),
i: common_vendor.t(item.relation_desc),
j: index,
k: common_vendor.o(($event) => $options.clickStockItem(item.stock_code), index)
});
}),
X: common_vendor.sr("stockPopup", "6e1a61f1-3"),
Y: common_vendor.p({
ab: common_vendor.sr("stockPopup", "6e1a61f1-4"),
ac: common_vendor.p({
type: "bottom"
})
});

View File

@@ -2,6 +2,7 @@
"navigationBarTitleText": "",
"usingComponents": {
"nav-bar": "../../../components/navBar/navBar",
"l-echart": "../../../uni_modules/lime-echart/components/l-echart/l-echart",
"uni-popup": "../../../uni_modules/uni-popup/components/uni-popup/uni-popup"
}
}

File diff suppressed because one or more lines are too long

View File

@@ -118,42 +118,119 @@
.eventDetailsC .conceptList {
padding: 30rpx 25rpx;
}
.eventDetailsC .conceptList .item {
margin-bottom: 20rpx;
}
.eventDetailsC .conceptList .item .cover {
display: block;
width: 100%;
height: 350rpx;
.eventDetailsC .conceptList .conceptItem {
box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.05);
margin: 0 30rpx 30rpx 0;
width: calc((100% - 30rpx)/2);
border-radius: 10rpx;
}
.eventDetailsC .conceptList .item .infoC {
background: linear-gradient(to bottom, #00000080, #000);
padding: 20rpx 23rpx;
left: 0;
.eventDetailsC .conceptList .conceptItem .coverC .cover {
display: block;
width: 100%;
bottom: 0;
border-radius: ;
height: 220rpx;
}
.eventDetailsC .conceptList .conceptItem .coverC .rateC {
top: 12rpx;
left: 12rpx;
padding: 0 10rpx;
line-height: 40rpx;
border-radius: 20rpx;
font-size: 18rpx;
font-weight: 500;
color: white;
}
.eventDetailsC .conceptList .item .infoC .title {
.eventDetailsC .conceptList .conceptItem .coverC .rateC .icon {
width: 11rpx;
height: auto;
}
.eventDetailsC .conceptList .conceptItem .coverC .rateC.up {
background-color: #E53E3E;
}
.eventDetailsC .conceptList .conceptItem .coverC .rateC.down {
background-color: #38A169;
}
.eventDetailsC .conceptList .conceptItem .coverC .totalC {
background: linear-gradient(-90deg, #FAC915 0%, #F18D10 100%);
top: 12rpx;
right: 12rpx;
padding: 0 9rpx;
line-height: 40rpx;
border-radius: 20rpx;
font-size: 20rpx;
color: white;
}
.eventDetailsC .conceptList .conceptItem .infoC {
padding: 20rpx 23rpx;
}
.eventDetailsC .conceptList .conceptItem .infoC .title {
font-size: 26rpx;
font-weight: bold;
color: #222;
}
.eventDetailsC .conceptList .item .infoC .content {
.eventDetailsC .conceptList .conceptItem .infoC .content {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
margin-top: 10rpx;
line-height: 1.2rem;
font-size: 20rpx;
font-weight: 500;
line-height: 1.2rem;
color: #666;
}
.eventDetailsC .conceptList .item .infoC .content .lookDetails {
right: 0;
.eventDetailsC .conceptList .conceptItem .infoC .transactionDate {
margin-top: 12rpx;
font-size: 22rpx;
font-weight: 500;
color: #AAA;
}
.eventDetailsC .conceptList .conceptItem .infoC .hotStockC {
background-color: #F7FAFC;
margin-top: 16rpx;
padding: 10rpx 13rpx;
border-radius: 5rpx;
}
.eventDetailsC .conceptList .conceptItem .infoC .hotStockC .titleC {
font-size: 20rpx;
font-weight: 500;
color: #666;
}
.eventDetailsC .conceptList .conceptItem .infoC .hotStockC .titleC .arrow {
width: 6rpx;
height: auto;
}
.eventDetailsC .conceptList .conceptItem .infoC .hotStockC .stockList {
margin-top: 10rpx;
height: 35rpx;
overflow: hidden;
}
.eventDetailsC .conceptList .conceptItem .infoC .hotStockC .stockList .item {
background-color: #FFEADC;
margin: 0 5rpx 5rpx 0;
padding: 0 9rpx;
line-height: 30rpx;
border-radius: 5rpx;
font-size: 18rpx;
font-weight: 500;
color: #F97316;
}
.eventDetailsC .conceptList .conceptItem .infoC .dateHistoryTimeC {
margin-top: 10rpx;
font-size: 20rpx;
}
.eventDetailsC .conceptList .conceptItem .infoC .dateHistoryTimeC .date {
color: #666;
}
.eventDetailsC .conceptList .conceptItem .infoC .dateHistoryTimeC .historyTimeC {
background-color: #F97316;
padding: 0 6rpx;
line-height: 38rpx;
border-radius: 5rpx;
color: white;
}
.eventDetailsC .conceptList .conceptItem:nth-child(2n) {
margin-right: 0;
}
.eventDetailsC .historyEventList {
padding: 34rpx 25rpx;
}
@@ -545,7 +622,6 @@
color: #F6604A;
}
.stockPopup .list .item .sectorRateC .rateC {
background-color: #C00000;
display: inline-block;
padding: 0 10rpx;
height: 30rpx;
@@ -558,6 +634,12 @@
width: 15rpx;
height: auto;
}
.stockPopup .list .item .sectorRateC .rateC.up {
background-color: #C00000;
}
.stockPopup .list .item .sectorRateC .rateC.down {
background-color: #355422;
}
.stockPopup .list .item .content {
margin-top: 16rpx;
font-size: 24rpx;