1.14 概念中心模块调整,战略分析模块界面完善
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
<view class="flex1">最新数据: {{newestPriceDate}}</view>
|
||||
<view class="sortTypeC flex" @click="clickSortType()">
|
||||
<image class="icon" src="/static/icon/home/conceptCenter/sortType.png" mode="widthFix"></image>
|
||||
<view>涨跌幅</view>
|
||||
<view>{{sortTypeStr}}</view>
|
||||
<image class="arrow" src="/static/icon/home/conceptCenter/conceptScreenArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="line"></view>
|
||||
@@ -29,21 +29,21 @@
|
||||
<view class="list">
|
||||
<view class="item" v-for="(item,index) in conceptList" :key="index">
|
||||
<view class="titleChgStockNumC flex">
|
||||
<view class="title">{{item.concept}}</view>
|
||||
<view class="title" @click.stop="clickConceptItem(item.concept)">{{item.concept}}</view>
|
||||
<view v-if="item.price_info" :class="'chg '+(getRateUpOrDown(item.price_info.avg_change_pct)?'down':'up')">{{getChgRateStr(item.price_info.avg_change_pct)}}%</view>
|
||||
<view v-if="item.price_info" :class="'stockNum '+(getRateUpOrDown(item.price_info.avg_change_pct)?'down':'up')">{{item.stock_count}} 只股票</view>
|
||||
</view>
|
||||
<view class="content">{{item.description}}</view>
|
||||
<view class="content" @click.stop="clickConceptItem(item.concept)">{{item.description}}</view>
|
||||
<view class="hotStockC flex">
|
||||
<view class="title">热门个股</view>
|
||||
<view v-if="memberInfo&&memberInfo.is_member&&memberInfo.subscription_type=='pro'" class="stockList flex">
|
||||
<view class="stockItem" v-for="(sitem,sindex) in item.stocks.slice(0,3)" :key="sindex">{{sitem.stock_name}}</view>
|
||||
<view class="stockList flex">
|
||||
<view class="stockItem" v-for="(sitem,sindex) in item.stocks.slice(0,3)" :key="sindex">{{sitem.name}}</view>
|
||||
<view class="more" @click.stop="clickStockMore(item)">+{{item.stock_count-3}}更多</view>
|
||||
</view>
|
||||
<view v-else class="notVipC flex" @click.stop="clickNotVip()">
|
||||
<!-- <view v-else class="notVipC flex" @click.stop="clickNotVip()">
|
||||
<image class="icon" src="/static/icon/home/conceptCenter/lock.png" mode="widthFix"></image>
|
||||
<view>需升级Pro会员查看{{item.stock_count}}只个股</view>
|
||||
</view>
|
||||
</view> -->
|
||||
</view>
|
||||
<view class="transactionDateHistoryTimeC flex">
|
||||
<view class="transactionDate flex1">交易时间:{{item.price_info?item.price_info.trade_date:''}}</view>
|
||||
@@ -98,7 +98,7 @@
|
||||
<image v-if="index==2" class="rankIcon" src="/static/icon/home/conceptCenter/rank3.png" mode="widthFix"></image>
|
||||
<view v-if="index>2" class="rankIndex">{{index+1}}</view>
|
||||
<view class="flex1">
|
||||
<view class="title">{{item.name}}</view>
|
||||
<view class="title" @click.stop="clickConceptItem(item.name)">{{item.name}}</view>
|
||||
<block v-if="selectTab==3||selectTab==4">
|
||||
<view v-if="selectTab==3" class="calendarBrowseC">均幅 {{item.avg_change}}%</view>
|
||||
<view v-if="selectTab==4" class="calendarBrowseC">累计 +{{item.total_change}}%</view>
|
||||
@@ -250,6 +250,7 @@
|
||||
import { inject } from 'vue';
|
||||
import { conceptRankList, eventRelatedConcept, newestPriceDate, membershipStatus } from '@/request/api';
|
||||
import { getChgRateStr, getRateUpOrDown } from '@/utils/util';
|
||||
import CryptoJS from 'crypto-js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -318,6 +319,7 @@
|
||||
key:'concept_name'
|
||||
}],
|
||||
sortType:'change_pct', //选择的排序方式
|
||||
sortTypeStr:'涨跌幅', //选择的排序方式
|
||||
weekList:['一','二','三','四','五','六','日'],
|
||||
monthDateList:[],
|
||||
selectMonthIndex:0, //选中月份下标
|
||||
@@ -578,6 +580,7 @@
|
||||
clickSortListItem(item)
|
||||
{
|
||||
this.sortType = item.key
|
||||
this.sortTypeStr = item.name
|
||||
this.clickSearch()
|
||||
this.$refs["sortTypePopup"].close()
|
||||
},
|
||||
@@ -759,6 +762,16 @@
|
||||
{
|
||||
this.clickLater()
|
||||
},
|
||||
/**
|
||||
* 点击查看相关概念
|
||||
*/
|
||||
clickConceptItem(name)
|
||||
{
|
||||
let md5 = CryptoJS.MD5(name).toString()
|
||||
uni.navigateTo({
|
||||
url:'/pages/index/conceptDetails/conceptDetails?name='+md5
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 点击查看更多个股
|
||||
*/
|
||||
@@ -1380,7 +1393,7 @@ page
|
||||
.transactionDatePopup
|
||||
{
|
||||
background-color: white;
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.btnTitleC
|
||||
{
|
||||
|
||||
@@ -59,24 +59,28 @@
|
||||
</view>
|
||||
<view class="newsReportC flex">
|
||||
<image class="icon" src="/static/icon/home/conceptCenter/newsReport.png" mode="widthFix"></image>
|
||||
<text class="news">{{newsList.length}} 条新闻 · </text>
|
||||
<text class="report" decode> {{reportList.length}} 份研报</text>
|
||||
<text :class="'num '+(selectNewsOrReport==0?'select':'')" @click="clickNewsOrReportItem(0)">{{newsList.length}} 条新闻 · </text>
|
||||
<text :class="'num '+(selectNewsOrReport==1?'select':'')" decode @click="clickNewsOrReportItem(1)"> {{reportList.length}} 份研报</text>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="item" v-for="(item,index) in newsList" :key="index" @click="clickNewsItem(item)">
|
||||
<view class="flex">
|
||||
<view class="type news">新闻</view>
|
||||
<view class="title flex1">{{item.title}}</view>
|
||||
<block v-if="selectNewsOrReport==0">
|
||||
<view class="item" v-for="(item,index) in newsList" :key="index" @click="clickNewsItem(item)">
|
||||
<view class="flex">
|
||||
<view class="type news">新闻</view>
|
||||
<view class="title flex1">{{item.title}}</view>
|
||||
</view>
|
||||
<view class="content">{{item.detail}}</view>
|
||||
</view>
|
||||
<view class="content">{{item.detail}}</view>
|
||||
</view>
|
||||
<view class="item" v-for="(item,index) in reportList" :key="index">
|
||||
<view class="flex">
|
||||
<view class="type report">研报</view>
|
||||
<view class="title flex1">{{item.report_title}}</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="item" v-for="(item,index) in reportList" :key="index" @click="clickReportItem(item)">
|
||||
<view class="flex">
|
||||
<view class="type report">研报</view>
|
||||
<view class="title flex1">{{item.report_title}}</view>
|
||||
</view>
|
||||
<view class="content">{{JSON.parse(item.content).content}}</view>
|
||||
</view>
|
||||
<view class="content">坚定看好锂电材料,建议继续加配坚定六氟、添加剂,关注隔膜更加坚定的看好六氟:下游传导如期</view>
|
||||
</view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -105,6 +109,7 @@
|
||||
chgStockData:null, //涨跌幅和股票数据
|
||||
newsList:[], //新闻数据
|
||||
reportList:[], //研报数据
|
||||
selectNewsOrReport: 0, //0新闻1研报
|
||||
getRateUpOrDown:getRateUpOrDown,
|
||||
getChgRateStr:getChgRateStr,
|
||||
}
|
||||
@@ -311,13 +316,32 @@
|
||||
this.getReportData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击切换新闻或研报
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickNewsOrReportItem(index)
|
||||
{
|
||||
if(this.selectNewsOrReport!=index) {
|
||||
this.selectNewsOrReport = index;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击查看新闻详情
|
||||
* @param {Object} item
|
||||
*/
|
||||
clickNewsItem(item) {
|
||||
uni.navigateTo({
|
||||
url:'/pages/concept/conceptNewsDetails/conceptNewsDetails?info='+encodeURIComponent(JSON.stringify(item))
|
||||
url:'/pages/concept/newsDetails/newsDetails?info='+encodeURIComponent(JSON.stringify(item))
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 点击查看研报详情
|
||||
* @param {Object} item
|
||||
*/
|
||||
clickReportItem(item) {
|
||||
uni.navigateTo({
|
||||
url:'/pages/concept/reportDetails/reportDetails?info='+encodeURIComponent(JSON.stringify(item))
|
||||
})
|
||||
},
|
||||
/**
|
||||
@@ -369,6 +393,9 @@
|
||||
{
|
||||
let param = {query:this.conceptName,start_date:this.selectDateStr,mode:'text',exact_match:1}
|
||||
conceptReport(param).then(res=>{
|
||||
for (let item of res.data.results) {
|
||||
item.content = item.content.replace(/'/g, '"')
|
||||
}
|
||||
this.reportList = res.data.results
|
||||
}).catch(error=>{
|
||||
|
||||
@@ -579,14 +606,14 @@ page
|
||||
width: 24rpx;
|
||||
height: auto;
|
||||
}
|
||||
.news
|
||||
{
|
||||
color: #FF7723;
|
||||
}
|
||||
.report
|
||||
.num
|
||||
{
|
||||
color: #333;
|
||||
}
|
||||
.num.select
|
||||
{
|
||||
color: #FF7723;
|
||||
}
|
||||
}
|
||||
.list
|
||||
{
|
||||
|
||||
@@ -9,13 +9,13 @@
|
||||
<image class="arrow" src="/static/icon/home/conceptCenter/timeScreenArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view direction="vertical" class="stockList fixed" :style="'top:'+listTop+'px;'">
|
||||
<scroll-view scroll-y class="stockList fixed" :style="'top:'+listTop+'px;'">
|
||||
<view class="list">
|
||||
<view class="item" v-for="(item,index) in stockList" :key="index">
|
||||
<view class="stockInfoC flex" @click="clickExpandOrRetract(index)">
|
||||
<view class="titleCodeC">
|
||||
<view class="title">{{item.stock_name}}</view>
|
||||
<view class="code">{{item.stock_code}}</view>
|
||||
<view class="title">{{item.name}}</view>
|
||||
<view class="code">{{item.code}}</view>
|
||||
</view>
|
||||
<view class="chg flex1">+4.04%</view>
|
||||
<view class="industry flex1">食品行业</view>
|
||||
@@ -87,7 +87,7 @@
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
import { conceptDetails } from '@/request/api';
|
||||
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
@@ -498,7 +498,7 @@ page
|
||||
.datePopup
|
||||
{
|
||||
background-color: white;
|
||||
padding-bottom: env(safe-area-inset-bottom);
|
||||
padding-bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.btnTitleC
|
||||
{
|
||||
|
||||
83
pages/concept/reportDetails/reportDetails.vue
Normal file
83
pages/concept/reportDetails/reportDetails.vue
Normal file
@@ -0,0 +1,83 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="历史时间轴" :hideNavBg="true"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/index/conceptTopBg.png" mode="widthFix"></image>
|
||||
<view v-if="reportInfo" class="contentC fixed" :style="'top: '+navH+'px;'">
|
||||
<view class="title">{{reportInfo.report_title}}</view>
|
||||
<view class="labelTimeC ">
|
||||
<text class="time">{{getLocalTime(reportInfo.declare_date)}}</text>
|
||||
</view>
|
||||
<view class="content">
|
||||
<!-- <ua-markdown :source="content" /> -->
|
||||
<text>{{content}}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script >
|
||||
import { inject } from 'vue';
|
||||
import { getLocaleTime } from '@/utils/util';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
reportInfo:null,
|
||||
getLocalTime:getLocaleTime,
|
||||
content:''
|
||||
}
|
||||
},
|
||||
onLoad(e) {
|
||||
this.reportInfo = JSON.parse(decodeURIComponent(e.info))
|
||||
this.reportInfo.content = this.reportInfo.content.replace(/'/g, '"');
|
||||
console.log(JSON.parse(this.reportInfo.content))
|
||||
this.content = JSON.parse(this.reportInfo.content).content
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
page
|
||||
{
|
||||
background-color: #070707;
|
||||
}
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.contentC
|
||||
{
|
||||
background-color: #FFF9F5;
|
||||
margin: 20rpx 25rpx 0;
|
||||
padding: 28rpx 30rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 100rpx;
|
||||
border-radius: 10rpx;
|
||||
overflow-y: scroll;
|
||||
.title
|
||||
{
|
||||
margin: 0 10rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #2B2B2B;
|
||||
}
|
||||
.labelTimeC {
|
||||
margin: 0 10rpx;
|
||||
.time
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -17,7 +17,7 @@
|
||||
onLoad(e) {
|
||||
if(e.name)
|
||||
{
|
||||
this.url = 'https://valuefrontier.cn/htmls/'+e.name+'.html'
|
||||
this.url = 'https://valuefrontier.cn/htmls/concept/'+e.name+'/'
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
@@ -298,6 +298,7 @@
|
||||
import { eventRelatedConcept, eventHistoryEvent, eventRelatedStock, eventCommentList, commentEvent, likeEventComment, replyComment, followEvent, membershipStatus } from '@/request/api';
|
||||
import { getLocaleHourMinute, getLocaleTime, getRateStr, getRateUpOrDown, getChgRateStr } from '@/utils/util';
|
||||
const echarts = require('../../../uni_modules/lime-echart/static/echarts.min.js');
|
||||
import CryptoJS from 'crypto-js'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -501,8 +502,9 @@
|
||||
*/
|
||||
clickConceptItem(name)
|
||||
{
|
||||
let md5 = CryptoJS.MD5(name).toString()
|
||||
uni.navigateTo({
|
||||
url:'/pages/index/conceptDetails/conceptDetails?name='+name
|
||||
url:'/pages/index/conceptDetails/conceptDetails?name='+md5
|
||||
})
|
||||
},
|
||||
/**
|
||||
|
||||
@@ -463,11 +463,11 @@
|
||||
{
|
||||
this.loadAll = false
|
||||
this.page = 1
|
||||
if(this.selectTimeCategory==0)
|
||||
if(this.selectTimeCategory==1)
|
||||
{
|
||||
this.getEventListData()
|
||||
}else
|
||||
this.getHotEventListData()
|
||||
}else
|
||||
this.getEventListData()
|
||||
},
|
||||
/**
|
||||
* 点击事件筛选
|
||||
@@ -623,7 +623,6 @@
|
||||
this.selectQuickTimeIndex = index
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 监听日期选择
|
||||
* @param {Object} e
|
||||
@@ -1022,9 +1021,9 @@
|
||||
{
|
||||
param.importance = arr.join(',')
|
||||
}
|
||||
if(this.selectSortKey)
|
||||
if(this.selectTimeCategory!=1)
|
||||
{
|
||||
param.sort = this.selectSortKey
|
||||
param.sort = this.timeCategoryList[this.selectTimeCategory].key
|
||||
}
|
||||
eventList(param).then(res=>{
|
||||
this.isRefreshing = false
|
||||
|
||||
Reference in New Issue
Block a user