7.10 增加登录页面,事件详情接口对接,我的点赞,关注收藏页面搭建,接口对接
This commit is contained in:
@@ -10,20 +10,26 @@
|
||||
</view>
|
||||
<view class="contentC fixed" :style="'top:'+contentTop+'px;'">
|
||||
<view class="">
|
||||
<view class="todayC flex" @click="clickExpandOrRetract()">
|
||||
<view class="todayDateC flex">
|
||||
<view class="todayC flex" >
|
||||
<view class="todayDateC flex" @click="clickExpandOrRetract()">
|
||||
<view class="date">{{selectDate}}</view>
|
||||
<image class="icon" src="/static/icon/invest/calendar.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="flex1"></view>
|
||||
<view class="today">今</view>
|
||||
<view class="today" @click="clickTodayDate()">今</view>
|
||||
</view>
|
||||
<view class="weekList flex">
|
||||
<view class="item flex1" v-for="(item,index) in weekList" :key="index">{{item}}</view>
|
||||
</view>
|
||||
<view v-if="isExpand" class="monthDateList flexWrap">
|
||||
<view class="item flexColumnCenter" v-for="(item,index) in monthDateList" :key="index" @click="clickSelectDate(item)">
|
||||
<view :class="'date '+(item.isToday?'today':(item.isCurrentMonth?'':' notCurrentMonth')) ">{{item.day}}</view>
|
||||
<block v-if="selectDate!=todayDate">
|
||||
<view v-if="selectDate==item.date" class="date today">{{item.day}}</view>
|
||||
<view v-else :class="'date '+(item.isCurrentMonth?'':' notCurrentMonth')">{{item.day}}</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view :class="'date '+(item.isToday?'today':(item.isCurrentMonth?'':' notCurrentMonth')) ">{{item.day}}</view>
|
||||
</block>
|
||||
<block v-if="item.className">
|
||||
<view v-if="item.className=='bg-gradient-danger'" class="eventNum danger">{{item.eventCount}}</view>
|
||||
<view v-if="item.className=='bg-gradient-warning'" class="eventNum warning">{{item.eventCount}}</view>
|
||||
@@ -37,7 +43,13 @@
|
||||
</view>
|
||||
<view v-else class="weekDateList flex">
|
||||
<view class="item flex1 flexColumnCenter" v-for="(item,index) in weekDateList" @click="clickSelectDate(item)" :key="index">
|
||||
<view :class="'date '+(item.isToday?'today':'') ">{{item.day}}</view>
|
||||
<block v-if="selectDate!=todayDate">
|
||||
<view v-if="selectDate==item.date" class="date today">{{item.day}}</view>
|
||||
<view v-else :class="'date '+(item.isCurrentMonth?'':' notCurrentMonth')">{{item.day}}</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view :class="'date '+(item.isToday?'today':(item.isCurrentMonth?'':' notCurrentMonth')) ">{{item.day}}</view>
|
||||
</block>
|
||||
<block v-if="item.className">
|
||||
<view v-if="item.className=='bg-gradient-danger'" class="eventNum danger">{{item.eventCount}}</view>
|
||||
<view v-if="item.className=='bg-gradient-warning'" class="eventNum warning">{{item.eventCount}}</view>
|
||||
@@ -60,15 +72,15 @@
|
||||
<view :class="'item '+(selectTab==index?'select':'')" v-for="(item,index) in tabList" :key="index" @click="clickTabItem(index)">{{item}}</view>
|
||||
</view>
|
||||
<scroll-view scroll-x class="topCategoryC">
|
||||
<view :class="'item relative '+(selectTopCategory==index?'select':'')" v-for="(item,index) in topCategoryList" :key="index" @click="clickTopCategoryItem(index)">
|
||||
{{item}}
|
||||
<view :class="'item relative '+(selectTopCategory==index?'select':'')" v-for="(item,index) in stockCategoryList" :key="index" @click="clickTopCategoryItem(index)">
|
||||
{{item.primary_sector}}
|
||||
<view v-if="selectTopCategory==index" class="line absolute"></view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view v-if="selectTab==0" class="eventList">
|
||||
<view class="item" v-for="(item,index) in eventList" :key="index" @click="clickEventItem()">
|
||||
<view class="item" v-for="(item,index) in eventList" :key="index" @click="clickEventItem(item.id)">
|
||||
<view class="flex">
|
||||
<view class="time flex1">{{item.time}}</view>
|
||||
<view class="time flex1">{{getLocaleHourMinute(item.start_time)}}</view>
|
||||
<view class="starC relative">
|
||||
<view class="starList flex" >
|
||||
<image class="icon" :src="(sindex<(item.star)?'/static/icon/invest/star_s.png':'/static/icon/invest/star.png')" mode="widthFix" v-for="(sitem,sindex) in 5" :key="index"></image>
|
||||
@@ -76,7 +88,7 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="categoryTitleC flex">
|
||||
<view class="category">宏观政策</view>
|
||||
<view class="category">{{item.category.event_type}}</view>
|
||||
<view class="title flex1">{{item.title}}</view>
|
||||
</view>
|
||||
<view class="labelC">
|
||||
@@ -85,9 +97,9 @@
|
||||
</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
<text>{{item.forecast}}</text>
|
||||
<text>{{item.description}}</text>
|
||||
</view>
|
||||
<scroll-view scroll-x class="percentList">
|
||||
<scroll-view v-if="item.concepts" scroll-x class="percentList">
|
||||
<view class="percentItem" v-for="(citem,cindex) in JSON.parse(item.concepts)" :key="cindex">
|
||||
{{citem[0]}}
|
||||
<zui-progress-circle :position="citem[2]" :range="[270,630]" :size="26" :ring-width="2" :texture="['#F97316','#E3E3E3']">
|
||||
@@ -98,9 +110,9 @@
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="selectTab==1" class="dataList">
|
||||
<view class="item">
|
||||
<view class="item" v-for="(item,index) in dataList" :key="index">
|
||||
<view class="flex">
|
||||
<view class="time flex1">21:00</view>
|
||||
<view class="time flex1">{{getLocaleHourMinute(item.created_at)}}</view>
|
||||
<view class="starC relative">
|
||||
<view class="starBgList flex">
|
||||
<image class="icon" src="/static/icon/invest/star.png" mode="widthFix" v-for="(item,index) in 5" :key="index"></image>
|
||||
@@ -110,7 +122,7 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="title">外交部长王毅将对俄罗斯进行正式访问。</view>
|
||||
<view class="title">{{item.title}}</view>
|
||||
<view class="valueList flex between">
|
||||
<view class="pre">前值 -7.1</view>
|
||||
<view class="prediction">预测 93</view>
|
||||
@@ -124,7 +136,8 @@
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue'
|
||||
import { calendarEventCount, calendarEventList } from '../../request/api'
|
||||
import { stockCategoryList, calendarEventList, calendarDataList, calendarEventCount, } from '@/request/api'
|
||||
import { getLocaleHourMinute } from '@/utils/util'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -141,12 +154,15 @@
|
||||
isExpand:false, //是否展开日期
|
||||
tabList:['事件','数据'],
|
||||
selectTab:0,
|
||||
topCategoryList:['全部','大周期','大消费','大金融地产','TMT板块','公共产业板块'],
|
||||
stockCategoryList:[],
|
||||
selectTopCategory:0,
|
||||
listTop:'',
|
||||
todayDate:'', //今日日期
|
||||
selectDate:'', //选择查看的日期
|
||||
progress: 75,
|
||||
eventList:[], //事件列表
|
||||
dataList:[], //数据列表
|
||||
getLocaleHourMinute:getLocaleHourMinute
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
@@ -155,7 +171,7 @@
|
||||
let year = date.getFullYear()
|
||||
let month = date.getMonth()+1
|
||||
let day = date.getDate()
|
||||
this.selectDate = date.getFullYear()+'-'+(month>9?month:('0'+month))+'-'+(day>9?day:('0'+day))
|
||||
this.todayDate = this.selectDate = date.getFullYear()+'-'+(month>9?month:('0'+month))+'-'+(day>9?day:('0'+day))
|
||||
let week = date.getDay() || 7
|
||||
let diff = week - 1
|
||||
let daysOfWeek = [];
|
||||
@@ -210,6 +226,7 @@
|
||||
}
|
||||
this.monthDateList = daysOfMonth
|
||||
this.listTop = this.contentTop + (68+40+96+74+70+74+22)/750*inject('windowWidth')
|
||||
this.getStockCategoryListData()
|
||||
this.getEventListData()
|
||||
this.getCurrentMonthEventCountData()
|
||||
},
|
||||
@@ -219,6 +236,21 @@
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击今日日期
|
||||
*/
|
||||
clickTodayDate()
|
||||
{
|
||||
if(this.selectDate!=this.todayDate)
|
||||
{
|
||||
this.selectDate = this.todayDate
|
||||
if(this.selectTab==0)
|
||||
{
|
||||
this.getEventListData()
|
||||
}else
|
||||
this.getDataListData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击展开或收起
|
||||
*/
|
||||
@@ -240,7 +272,11 @@
|
||||
if(this.selectDate!=item.date)
|
||||
{
|
||||
this.selectDate = item.date
|
||||
this.getEventListData()
|
||||
if(this.selectTab==0)
|
||||
{
|
||||
this.getEventListData()
|
||||
}else
|
||||
this.getDataListData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
@@ -251,6 +287,11 @@
|
||||
if(this.selectTab!=index)
|
||||
{
|
||||
this.selectTab = index
|
||||
if(this.selectTab==0)
|
||||
{
|
||||
this.getEventListData()
|
||||
}else
|
||||
this.getDataListData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
@@ -261,15 +302,39 @@
|
||||
if(this.selectTopCategory!=index)
|
||||
{
|
||||
this.selectTopCategory = index
|
||||
if(this.selectTab==0)
|
||||
{
|
||||
this.getEventListData()
|
||||
}else
|
||||
this.getDataListData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击查看事件详情
|
||||
*/
|
||||
clickEventItem()
|
||||
clickEventItem(id)
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/invest/investDetails/investDetails'
|
||||
url:'/pages/invest/investDetails/investDetails?id='+id
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取股票分类
|
||||
*/
|
||||
getStockCategoryListData()
|
||||
{
|
||||
stockCategoryList().then(res=>{
|
||||
if(res.code==200)
|
||||
{
|
||||
res.data.unshift({primary_sector:'全部',sub_sectors:[]})
|
||||
this.stockCategoryList = res.data
|
||||
}else
|
||||
uni.showToast({
|
||||
title:res.message,
|
||||
icon:'none'
|
||||
})
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
},
|
||||
/**
|
||||
@@ -277,14 +342,39 @@
|
||||
*/
|
||||
getEventListData()
|
||||
{
|
||||
let param = {date:this.selectDate}
|
||||
let param = {start:this.selectDate}
|
||||
if(this.selectTopCategory>0)
|
||||
{
|
||||
param.category = this.stockCategoryList[this.selectTopCategory].primary_sector
|
||||
}
|
||||
calendarEventList(param).then(res=>{
|
||||
for (let item of res) {
|
||||
let calendarTime = item.calendar_time
|
||||
let time = calendarTime.split('T')[1]
|
||||
item.time = time.substr(0,5)
|
||||
}
|
||||
this.eventList = res
|
||||
if(res.code==200)
|
||||
{
|
||||
this.eventList = res.data.events
|
||||
}else
|
||||
uni.showToast({
|
||||
title:res.message,
|
||||
icon:'none'
|
||||
})
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取事件列表数据
|
||||
*/
|
||||
getDataListData()
|
||||
{
|
||||
let param = {start:this.selectDate}
|
||||
calendarDataList(param).then(res=>{
|
||||
if(res.code==200)
|
||||
{
|
||||
this.dataList = res.data.data_list
|
||||
}else
|
||||
uni.showToast({
|
||||
title:res.message,
|
||||
icon:'none'
|
||||
})
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
@@ -307,8 +397,8 @@
|
||||
for (let s of this.monthDateList) {
|
||||
if(s.date == date)
|
||||
{
|
||||
s.eventCount = item.title
|
||||
s.className = item.className
|
||||
s.eventCount = item.title
|
||||
s.className = item.className
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
import { investEventDetails } from '../../../request/api';
|
||||
import { investEventDetails } from '@/request/api';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
@@ -75,8 +75,13 @@
|
||||
}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
onLoad(e) {
|
||||
this.contentTop = this.navH+(30+74)/750*inject('windowWidth')
|
||||
if(e.id)
|
||||
{
|
||||
this.eventId = e.id
|
||||
this.getEventDetailsData()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user