6.30 版本提交
This commit is contained in:
66
pages/index/conceptDetails/conceptDetails.vue
Normal file
66
pages/index/conceptDetails/conceptDetails.vue
Normal file
@@ -0,0 +1,66 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="相关概念详情"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="conceptDetailsC fixed" :style="'top:'+navH+'px;'">
|
||||
<view class="title">外骨骼机器人(250501)</view>
|
||||
<view class="time">2025-05-08 08:43</view>
|
||||
<view class="content">四部门联合启动的人力资源服务业与制造业融合发展试点,主要目的是推动人力资源服务向高端制造渗透,促进产业升级。而外骨骼机器人属于高端制造领域的重要创新产品之一,其发展需要人力资源服务业的支持,例如技术人才的输送、产业工人培训等。同时,外骨骼机器人在消费级市场的推广和应用也符合制造业与服务业融合发展的方向。因此,该政策试点对外骨骼机器人行业具有潜在利好影响。</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.conceptDetailsC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: 10rpx;
|
||||
padding: 20rpx 25rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.title
|
||||
{
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
.time
|
||||
{
|
||||
margin-top: 10rpx;
|
||||
font-size: 22rpx;
|
||||
font-weight: 500;
|
||||
color: #AAA;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 30rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
627
pages/index/eventDetails/eventDetails.vue
Normal file
627
pages/index/eventDetails/eventDetails.vue
Normal file
@@ -0,0 +1,627 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="事件详情"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="eventDetailsC fixed" :style="'top:'+navH+'px;'">
|
||||
<view class="categoryTitleC">
|
||||
<view class="category">政策</view>
|
||||
<text class="title">四部门联合启动人力资源服务业与制造业融合发展试点</text>
|
||||
</view>
|
||||
<view class="time">2025-05-08 08:43</view>
|
||||
<view class="eventContent">人社部、工信部等四部门印发通知,明确在30个城市开展3年期试点,培育人力资源服务与制造业协同机构,打造融合平台和创新模式。政策</view>
|
||||
<scroll-view scroll-x class="categoryList">
|
||||
<view :class="'item relative '+(selectCategory==index?'select':'')" v-for="(item,index) in categoryList" :key="index" @click="clickCategoryItem(index)">
|
||||
{{item}}
|
||||
<view v-if="selectCategory==index" class="line absolute"></view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view v-if="selectCategory==0" class="headingList flex">
|
||||
<view class="item flex1" v-for="(item,index) in headingList" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="selectCategory==0" class="targetList">
|
||||
<view class="item">
|
||||
<view class="nameCodePriceC flex">
|
||||
<view class="flex1">
|
||||
<view class="name">科锐国际</view>
|
||||
<view class="code">300662.SZ</view>
|
||||
</view>
|
||||
<view class="flex1">
|
||||
|
||||
</view>
|
||||
<view class="price flex1">30.04</view>
|
||||
<view class="price flex1">30.15</view>
|
||||
<view class="chg flex1">+0.37%</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
科锐国际作为灵活用工龙头企业,其业务高度契合政策推动的制造业高端人才引育方向。公司技术研发类岗位占比达70%,直接匹配政策要求
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="selectCategory==1" class="conceptList">
|
||||
<view class="item relative" @click="clickConceptItem()">
|
||||
<image class="cover" src="" mode="aspectFill"></image>
|
||||
<view class="infoC absolute">
|
||||
<view class="title">布鲁可IP衍生品(250109)</view>
|
||||
<view class="content">
|
||||
四部门联合启动的人力资源服务业与制造业融合发展试点,主要目的是推动
|
||||
人力资源服务...
|
||||
<text class="lookDetails">查看详情</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottomC fixed flex">
|
||||
<view class="inputC flex1">
|
||||
<input type="text" placeholder="我来说两句..." placeholder-style="color:#666"/>
|
||||
</view>
|
||||
<view class="commentLikeNumC flex">
|
||||
<view class="item">
|
||||
<image class="icon" src="/static/icon/home/browser.png" mode="widthFix"></image>
|
||||
<view>64</view>
|
||||
</view>
|
||||
<view class="item" @click="clickComment()">
|
||||
<image class="icon" src="/static/icon/home/comment.png" mode="widthFix"></image>
|
||||
<view>28</view>
|
||||
</view>
|
||||
<view class="item">
|
||||
<image class="icon" src="/static/icon/home/follow.png" mode="widthFix"></image>
|
||||
<view>128</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<uni-popup ref="popup" type="bottom">
|
||||
<view class="popup">
|
||||
<view class="titleCloseC flex">
|
||||
<view class="title flex1">全部回复</view>
|
||||
<view class="closeC" @click="closeCommentPopup()">
|
||||
<image class="icon" src="/static/icon/home/close.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="item">
|
||||
<view class="originComment">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<view class="flex1">
|
||||
<view class="nickname">逸尘破晓</view>
|
||||
<view class="content">四部门联合启动的人力资源服务业与制造业融合发展点,主要目的是推动人力资源服务向高端制造渗透。</view>
|
||||
<view class="timeReplyLikeC flex between">
|
||||
<view class="timeReplyC flex">
|
||||
<view class="time">15:37</view>
|
||||
<view class="reply">回复</view>
|
||||
</view>
|
||||
<view class="likeC flex">
|
||||
<image class="icon" src="/static/icon/home/like.png" mode="widthFix"></image>
|
||||
<view class="num">85</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="totalCommentNumC flex">
|
||||
<view class="line"></view>
|
||||
全部34条评论
|
||||
<image class="arrow" src="/static/icon/home/commentArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="replyList">
|
||||
<view class="replyItem">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<view class="flex1">
|
||||
<view class="nickname">逸尘破晓</view>
|
||||
<view class="content">四部门联合启动的人力资源服务业与制造业融合发展点,主要目的是推动人力资源服务向高端制造渗透。</view>
|
||||
<view class="timeReplyLikeC flex between">
|
||||
<view class="timeReplyC flex">
|
||||
<view class="time">15:37</view>
|
||||
<view class="reply">回复</view>
|
||||
</view>
|
||||
<view class="likeC flex">
|
||||
<image class="icon" src="/static/icon/home/like.png" mode="widthFix"></image>
|
||||
<view class="num">85</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="popBottomC">
|
||||
<view class="inputC">
|
||||
<input type="text" placeholder="我来说两句..." placeholder-style="color:#666"/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</uni-popup>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
import { eventDetails } from '../../../request/api';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
eventId:'', //事件id
|
||||
categoryList:['相关标的','相关概念','历史事件','时间传导链分析','关联数据'],
|
||||
selectCategory:0,
|
||||
headingList:['名称代码','分时图','开盘价','最新价','涨跌幅']
|
||||
}
|
||||
},
|
||||
onLoad(e)
|
||||
{
|
||||
if(e.id)
|
||||
{
|
||||
this.eventId = e.id
|
||||
this.getEventDetailsData()
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击切换分类
|
||||
*/
|
||||
clickCategoryItem(index)
|
||||
{
|
||||
if(this.selectCategory!=index)
|
||||
{
|
||||
this.selectCategory = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击查看股票详情
|
||||
*/
|
||||
clickStockItem()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/index/stockDetails/stockDetails'
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 点击查看相关概念
|
||||
*/
|
||||
clickConceptItem()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/index/conceptDetails/conceptDetails'
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 点击评论
|
||||
*/
|
||||
clickComment()
|
||||
{
|
||||
this.$refs['popup'].open()
|
||||
},
|
||||
closeCommentPopup()
|
||||
{
|
||||
this.$refs['popup'].close()
|
||||
},
|
||||
/**
|
||||
* 获取事件详情数据
|
||||
*/
|
||||
getEventDetailsData()
|
||||
{
|
||||
let eventId = this.eventId
|
||||
eventDetails(eventId).then(res=>{
|
||||
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.eventDetailsC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: 10rpx;
|
||||
padding: 20rpx 0 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(20rpx + 70rpx + 20rpx + env(safe-area-inset-bottom));
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow-y: hidden;
|
||||
.categoryTitleC
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
.category
|
||||
{
|
||||
background-color: #FD9A14;
|
||||
margin-right: 12rpx;
|
||||
display: inline-block;
|
||||
padding: 0 11rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: 8rpx;
|
||||
font-size: 22rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
.title
|
||||
{
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
.time
|
||||
{
|
||||
margin: 20rpx 25rpx 0;
|
||||
font-size: 22rpx;
|
||||
font-weight: 500;
|
||||
color: #aaa;
|
||||
}
|
||||
.eventContent
|
||||
{
|
||||
margin: 22rpx 24rpx 0;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
line-height: 1.2rem;
|
||||
}
|
||||
.categoryList
|
||||
{
|
||||
white-space: nowrap;
|
||||
margin-top: 10rpx;
|
||||
.item
|
||||
{
|
||||
display: inline-block;
|
||||
line-height: 60rpx;
|
||||
padding: 0 18rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
color: #42485B;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #F97316;
|
||||
.line
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: calc((100% - 50rpx)/2);
|
||||
bottom: 0;
|
||||
width: 50rpx;
|
||||
height: 2rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.headingList
|
||||
{
|
||||
background-color: #F3F6F9;
|
||||
margin: 28rpx 25rpx 0;
|
||||
.item
|
||||
{
|
||||
line-height: 55rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.targetList
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
.item
|
||||
{
|
||||
padding-bottom: 20rpx;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.nameCodePriceC
|
||||
{
|
||||
padding: 20rpx 0;
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
.code
|
||||
{
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #888;
|
||||
}
|
||||
.price
|
||||
{
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
text-align: center;
|
||||
}
|
||||
.chg
|
||||
{
|
||||
color: #FF2929;
|
||||
}
|
||||
}
|
||||
.content
|
||||
{
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
.conceptList
|
||||
{
|
||||
padding: 30rpx 25rpx;
|
||||
.item
|
||||
{
|
||||
.cover
|
||||
{
|
||||
background-color: red;
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: 350rpx;
|
||||
border-radius: 10rpx;
|
||||
}
|
||||
.infoC
|
||||
{
|
||||
background: linear-gradient(to bottom,#00000080,#000);
|
||||
padding: 20rpx 23rpx;
|
||||
left:0;
|
||||
width: 100%;
|
||||
bottom: 0;
|
||||
color: white;
|
||||
.title
|
||||
{
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 10rpx;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
line-height: 1.2rem;
|
||||
.lookDetails
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottomC
|
||||
{
|
||||
padding: 20rpx 25rpx calc(20rpx + env(safe-area-inset-bottom));
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
box-shadow: 0px -1rpx 0px 0px #EEEEEE;
|
||||
.inputC
|
||||
{
|
||||
background-color: #F0F0F0;
|
||||
margin-right: 20rpx;
|
||||
padding: 0 33rpx;
|
||||
height: 70rpx;
|
||||
border-radius: 35rpx;
|
||||
input
|
||||
{
|
||||
height: 100%;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
.commentLikeNumC
|
||||
{
|
||||
.item
|
||||
{
|
||||
padding: 0 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #666;
|
||||
.icon
|
||||
{
|
||||
width: 35rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.popup
|
||||
{
|
||||
background-color: white;
|
||||
.titleCloseC
|
||||
{
|
||||
padding-left: 25rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
.closeC
|
||||
{
|
||||
padding: 28rpx;
|
||||
.icon
|
||||
{
|
||||
width: 28rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.list
|
||||
{
|
||||
margin: 0 25rpx;
|
||||
border-top: solid 1rpx #E4E4E4;
|
||||
max-height: 1200rpx;
|
||||
.item
|
||||
{
|
||||
padding-top: 30rpx;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.originComment
|
||||
{
|
||||
display: flex;
|
||||
.avatar
|
||||
{
|
||||
background-color: red;
|
||||
margin-right: 23rpx;
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.nickname
|
||||
{
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #111;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 10rpx;
|
||||
line-height: 1.2rem;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
.timeReplyLikeC
|
||||
{
|
||||
.time
|
||||
{
|
||||
margin-right: 36rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #aaa;
|
||||
}
|
||||
.reply
|
||||
{
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #F97316;
|
||||
}
|
||||
.likeC
|
||||
{
|
||||
padding: 14rpx 0;
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #999;
|
||||
.icon
|
||||
{
|
||||
margin-right: 12rpx;
|
||||
width: 27rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.likeC.like
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
.totalCommentNumC
|
||||
{
|
||||
padding: 14rpx 0 22rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #999;
|
||||
.line
|
||||
{
|
||||
background-color: #aaa;
|
||||
margin-right: 18rpx;
|
||||
width: 30rpx;
|
||||
height: 2rpx;
|
||||
}
|
||||
.arrow
|
||||
{
|
||||
margin-left: 14rpx;
|
||||
width: 13rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.replyList
|
||||
{
|
||||
margin-left: 60rpx;
|
||||
border-top: solid 1rpx #E4E4E4;
|
||||
.replyItem
|
||||
{
|
||||
display: flex;
|
||||
padding: 22rpx 0;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.avatar
|
||||
{
|
||||
background-color: red;
|
||||
margin-right: 23rpx;
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.nickname
|
||||
{
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #111;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 10rpx;
|
||||
line-height: 1.2rem;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
.timeReplyLikeC
|
||||
{
|
||||
.time
|
||||
{
|
||||
margin-right: 36rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #aaa;
|
||||
}
|
||||
.reply
|
||||
{
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #F97316;
|
||||
}
|
||||
.likeC
|
||||
{
|
||||
padding: 14rpx 0;
|
||||
font-size: 28rpx;
|
||||
font-weight: bold;
|
||||
color: #999;
|
||||
.icon
|
||||
{
|
||||
margin-right: 12rpx;
|
||||
width: 27rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.likeC.like
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
}
|
||||
.replyItem:last-child
|
||||
{
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.popBottomC
|
||||
{
|
||||
padding: 22rpx 25rpx calc(22rpx + env(safe-area-inset-bottom));
|
||||
.inputC
|
||||
{
|
||||
background-color: #F0F0F0;
|
||||
padding: 0 33rpx;
|
||||
height: 70rpx;
|
||||
border-radius: 35rpx;
|
||||
input
|
||||
{
|
||||
height: 100%;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #333;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
</style>
|
||||
1249
pages/index/index.vue
Normal file
1249
pages/index/index.vue
Normal file
File diff suppressed because it is too large
Load Diff
29
pages/index/stockDetails/stockDetails.vue
Normal file
29
pages/index/stockDetails/stockDetails.vue
Normal file
@@ -0,0 +1,29 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="科锐国际(300662.SZ)"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
</style>
|
||||
737
pages/invest/invest.vue
Normal file
737
pages/invest/invest.vue
Normal file
@@ -0,0 +1,737 @@
|
||||
<template>
|
||||
<view>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="navTitle fixed" :style="'top:'+menuTop+'px;line-height:'+menuH+'px;'">投资</view>
|
||||
<view class="searchC fixed flex" :style="'top:'+navH+'px;'">
|
||||
<image class="icon" src="/static/icon/home/search.png" mode="widthFix"></image>
|
||||
<input class="flex1" type="text" placeholder="搜索话题/股票名称" placeholder-style="color:#94989A"/>
|
||||
<view class="line"></view>
|
||||
<view class="search">搜索</view>
|
||||
</view>
|
||||
<view class="contentC fixed" :style="'top:'+contentTop+'px;'">
|
||||
<view class="">
|
||||
<view class="todayC flex" @click="clickExpandOrRetract()">
|
||||
<view class="todayDateC flex">
|
||||
<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>
|
||||
<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="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>
|
||||
<view v-if="item.className=='bg-gradient-info'" class="eventNum info">{{item.eventCount}}</view>
|
||||
<view v-if="item.className=='bg-gradient-success'" class="eventNum success">{{item.eventCount}}</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="eventNum"></view>
|
||||
</block>
|
||||
</view>
|
||||
</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="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>
|
||||
<view v-if="item.className=='bg-gradient-info'" class="eventNum info">{{item.eventCount}}</view>
|
||||
<view v-if="item.className=='bg-gradient-success'" class="eventNum success">{{item.eventCount}}</view>
|
||||
</block>
|
||||
<block v-else>
|
||||
<view class="eventNum"></view>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
<view class="expandBgC flexCenter">
|
||||
<view class="expandC flex" @click="clickExpandOrRetract()">
|
||||
<text>{{isExpand?'收起':'展开'}}</text>
|
||||
<image class="arrow" src="/static/icon/invest/downArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="tabC">
|
||||
<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 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="flex">
|
||||
<view class="time flex1">{{item.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>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="categoryTitleC flex">
|
||||
<view class="category">宏观政策</view>
|
||||
<view class="title flex1">{{item.title}}</view>
|
||||
</view>
|
||||
<view class="labelC">
|
||||
<view class="label">
|
||||
|
||||
</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
<text>{{item.forecast}}</text>
|
||||
</view>
|
||||
<scroll-view 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']">
|
||||
<view class="num">{{citem[2]*100}}%</view>
|
||||
</zui-progress-circle>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="selectTab==1" class="dataList">
|
||||
<view class="item">
|
||||
<view class="flex">
|
||||
<view class="time flex1">21:00</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>
|
||||
</view>
|
||||
<view class="starList absolute flex">
|
||||
<image class="icon" src="/static/icon/invest/star_s.png" mode="widthFix" v-for="(item,index) in 5" :key="index"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="title">外交部长王毅将对俄罗斯进行正式访问。</view>
|
||||
<view class="valueList flex between">
|
||||
<view class="pre">前值 -7.1</view>
|
||||
<view class="prediction">预测 93</view>
|
||||
<view class="actual">实际 ————</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue'
|
||||
import { calendarEventCount, calendarEventList } from '../../request/api'
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
menuTop:inject('menuTop'),
|
||||
menuH: inject('menuHeight'),
|
||||
navH:inject('navHeight'),
|
||||
windowWidth:inject('windowWidth'),
|
||||
contentTop:'',
|
||||
todayDate:'', //今日日期
|
||||
weekList:['一','二','三','四','五','六','日'],
|
||||
weekDateList:[], //当前周日期
|
||||
monthDateList:[], //当前月日期
|
||||
isExpand:false, //是否展开日期
|
||||
tabList:['事件','数据'],
|
||||
selectTab:0,
|
||||
topCategoryList:['全部','大周期','大消费','大金融地产','TMT板块','公共产业板块'],
|
||||
selectTopCategory:0,
|
||||
listTop:'',
|
||||
selectDate:'', //选择查看的日期
|
||||
progress: 75,
|
||||
eventList:[], //事件列表
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
let date = new Date()
|
||||
this.contentTop = this.navH + (75+20)/750*inject('windowWidth')
|
||||
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))
|
||||
let week = date.getDay() || 7
|
||||
let diff = week - 1
|
||||
let daysOfWeek = [];
|
||||
for (var i = 0; i < 7; i++) {
|
||||
let newDate = new Date()
|
||||
newDate.setDate(day - diff + i); // 设置日期为当前周的相应日期
|
||||
let newDay = newDate.getDate()
|
||||
let date = year+'-'+(month>9?month:('0'+month))+'-'+(newDay>9?newDay:('0'+newDay))
|
||||
daysOfWeek.push({date:date,day:newDay,isToday:newDay==day?true:false});
|
||||
}
|
||||
this.weekDateList = daysOfWeek
|
||||
let firstDayOfMonth = new Date();
|
||||
firstDayOfMonth.setDate(1);
|
||||
//获取当前月天数
|
||||
let currentMonthDay = new Date(year, month, 0).getDate()
|
||||
let firstDayWeek = firstDayOfMonth.getDay() || 7
|
||||
let daysOfMonth = []
|
||||
for (var i = 1; i <= currentMonthDay; i++) {
|
||||
let newDate = new Date()
|
||||
newDate.setDate(i); // 设置日期为当前月的相应日期
|
||||
let newDay = newDate.getDate()
|
||||
let date = year+'-'+(month>9?month:('0'+month))+'-'+(newDay>9?newDay:('0'+newDay))
|
||||
daysOfMonth.push({date:date,day:newDay,isToday:newDay==day?true:false,isCurrentMonth:true});
|
||||
}
|
||||
for (var i = 0; i < firstDayWeek-1; i++) {
|
||||
//获取上月天数
|
||||
let lastMonthDay = new Date(year, month-1, 0).getDate()
|
||||
//获取上月日期
|
||||
let newDate = new Date(year,month-2,lastMonthDay-i)
|
||||
let newMonth = newDate.getMonth()+1
|
||||
let newDay = newDate.getDate()
|
||||
let date = year+'-'+(newMonth>9?newMonth:('0'+newMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||||
daysOfMonth.unshift({date:date,day:newDay,isToday:false,isCurrentMonth:false});
|
||||
}
|
||||
// 下一个月的第一天
|
||||
let nextMonthFirstDay = new Date(year, month, 1);
|
||||
// 然后减去一天就是当前月的最后一天
|
||||
let lastDayOfMonth = new Date(nextMonthFirstDay - (24 * 60 * 60 * 1000)); // 减去一天的毫秒数
|
||||
let lastDayWeek = lastDayOfMonth.getDay() || 7; // 返回0(星期天)到6(星期六)之
|
||||
for (var i = 1; i < 8-lastDayWeek; i++) {
|
||||
if(month>11)
|
||||
{
|
||||
month = -1
|
||||
year ++
|
||||
}
|
||||
//获取下月日期
|
||||
let newDate = new Date(year,month + 1,i)
|
||||
let newMonth = newDate.getMonth()+1
|
||||
let newDay = newDate.getDate()
|
||||
let date = year+'-'+(newMonth>9?newMonth:('0'+newMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||||
daysOfMonth.push({date:date,day:newDay,isToday:false,isCurrentMonth:false});
|
||||
}
|
||||
this.monthDateList = daysOfMonth
|
||||
this.listTop = this.contentTop + (68+40+96+74+70+74+22)/750*inject('windowWidth')
|
||||
this.getEventListData()
|
||||
this.getCurrentMonthEventCountData()
|
||||
},
|
||||
computed: {
|
||||
circumference() {
|
||||
return Math.PI * 100; // 圆周长,半径为50的圆周长
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击展开或收起
|
||||
*/
|
||||
clickExpandOrRetract()
|
||||
{
|
||||
this.isExpand = !this.isExpand
|
||||
if(this.isExpand)
|
||||
{
|
||||
this.listTop = this.contentTop + (68+40+96*6+74+70+74+22)/750*this.windowWidth
|
||||
}else
|
||||
this.listTop = this.contentTop + (68+40+96+74+70+74+22)/750*this.windowWidth
|
||||
},
|
||||
/**
|
||||
* 选中日期
|
||||
* @param {Object} item
|
||||
*/
|
||||
clickSelectDate(item)
|
||||
{
|
||||
if(this.selectDate!=item.date)
|
||||
{
|
||||
this.selectDate = item.date
|
||||
this.getEventListData()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击切换事件或者数据
|
||||
*/
|
||||
clickTabItem(index)
|
||||
{
|
||||
if(this.selectTab!=index)
|
||||
{
|
||||
this.selectTab = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 选择一级分类
|
||||
*/
|
||||
clickTopCategoryItem(index)
|
||||
{
|
||||
if(this.selectTopCategory!=index)
|
||||
{
|
||||
this.selectTopCategory = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击查看事件详情
|
||||
*/
|
||||
clickEventItem()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/invest/investDetails/investDetails'
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取事件列表数据
|
||||
*/
|
||||
getEventListData()
|
||||
{
|
||||
let param = {date:this.selectDate}
|
||||
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
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取当前月份每一天的事件数量
|
||||
*/
|
||||
getCurrentMonthEventCountData()
|
||||
{
|
||||
calendarEventCount().then(res=>{
|
||||
for (let item of res) {
|
||||
let date = item.start
|
||||
for (let s of this.weekDateList) {
|
||||
if(s.date == date)
|
||||
{
|
||||
s.eventCount = item.title
|
||||
s.className = item.className
|
||||
}
|
||||
}
|
||||
for (let s of this.monthDateList) {
|
||||
if(s.date == date)
|
||||
{
|
||||
s.eventCount = item.title
|
||||
s.className = item.className
|
||||
}
|
||||
}
|
||||
}
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.navTitle
|
||||
{
|
||||
left: 0;
|
||||
margin: 0 23rpx;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
.searchC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: 20rpx 25rpx 0;
|
||||
padding: 0 20rpx;
|
||||
height: 75rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
.icon
|
||||
{
|
||||
margin-right: 16rpx;
|
||||
width: 30rpx;
|
||||
height: auto;
|
||||
}
|
||||
input
|
||||
{
|
||||
height: 100%;
|
||||
}
|
||||
.line
|
||||
{
|
||||
background-color: #E1E1E1;
|
||||
width: 1rpx;
|
||||
height: 40rpx;
|
||||
}
|
||||
.search
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
.contentC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(55px + env(safe-area-inset-bottom));
|
||||
margin-top: 22rpx;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow-y: scroll;
|
||||
.todayC
|
||||
{
|
||||
padding: 12rpx 26rpx;
|
||||
.todayDateC
|
||||
{
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
.icon
|
||||
{
|
||||
margin-left: 16rpx;
|
||||
width: 30rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.today
|
||||
{
|
||||
background-color: #F973161A;
|
||||
width: 40rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: 50%;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #F97316;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.weekList
|
||||
{
|
||||
.item
|
||||
{
|
||||
line-height: 40rpx;
|
||||
font-size: 24rpx;
|
||||
color: #292621;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.weekDateList
|
||||
{
|
||||
.item
|
||||
{
|
||||
padding-top: 14rpx;
|
||||
.date
|
||||
{
|
||||
width: 40rpx;
|
||||
line-height: 40rpx;
|
||||
font-size: 24rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.date.today
|
||||
{
|
||||
background-color: #F9731626;
|
||||
border-radius: 5rpx;
|
||||
color: #F97316;
|
||||
}
|
||||
.eventNum
|
||||
{
|
||||
// background-color: #EB4A46;
|
||||
margin-top: 12rpx;
|
||||
width: 80rpx;
|
||||
height: 30rpx;
|
||||
line-height: 30rpx;
|
||||
border-radius: 5rpx;
|
||||
font-size: 16rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
.eventNum.danger
|
||||
{
|
||||
background-color: #EB4A46;
|
||||
}
|
||||
.eventNum.warning
|
||||
{
|
||||
background-color: #FD9C16;
|
||||
}
|
||||
.eventNum.info
|
||||
{
|
||||
background-color: #16BBCF;
|
||||
}
|
||||
.eventNum.success
|
||||
{
|
||||
background-color: #55AE59;
|
||||
}
|
||||
}
|
||||
}
|
||||
.monthDateList
|
||||
{
|
||||
.item
|
||||
{
|
||||
padding-top: 14rpx;
|
||||
width: calc(100%/7);
|
||||
.date
|
||||
{
|
||||
width: 40rpx;
|
||||
line-height: 40rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #292621;
|
||||
text-align: center;
|
||||
}
|
||||
.date.today
|
||||
{
|
||||
background-color: #F9731626;
|
||||
border-radius: 5rpx;
|
||||
color: #F97316;
|
||||
}
|
||||
.date.notCurrentMonth
|
||||
{
|
||||
color: #999;
|
||||
}
|
||||
.eventNum
|
||||
{
|
||||
margin-top: 12rpx;
|
||||
width: 80rpx;
|
||||
height: 30rpx;
|
||||
line-height: 30rpx;
|
||||
border-radius: 5rpx;
|
||||
font-size: 16rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
.eventNum.danger
|
||||
{
|
||||
background-color: #EB4A46;
|
||||
}
|
||||
.eventNum.warning
|
||||
{
|
||||
background-color: #FD9C16;
|
||||
}
|
||||
.eventNum.info
|
||||
{
|
||||
background-color: #16BBCF;
|
||||
}
|
||||
.eventNum.success
|
||||
{
|
||||
background-color: #55AE59;
|
||||
}
|
||||
}
|
||||
}
|
||||
.expandBgC
|
||||
{
|
||||
margin: 0 25rpx;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.expandC
|
||||
{
|
||||
padding: 20rpx 0;
|
||||
font-size: 22rpx;
|
||||
font-weight: 500;
|
||||
color: #8A857C;
|
||||
.arrow
|
||||
{
|
||||
margin-left: 7rpx;
|
||||
width: 15rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.tabC
|
||||
{
|
||||
.item
|
||||
{
|
||||
display: inline-block;
|
||||
padding: 0 24rpx;
|
||||
line-height: 70rpx;
|
||||
font-size: 32rpx;
|
||||
color: #42485B;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
.topCategoryC
|
||||
{
|
||||
white-space: nowrap;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.item
|
||||
{
|
||||
display: inline-block;
|
||||
line-height: 72rpx;
|
||||
padding: 0 28rpx;
|
||||
font-size: 27rpx;
|
||||
font-weight: 500;
|
||||
color: #42485B;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
font-weight: bold;
|
||||
color: black;
|
||||
.line
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: calc((100% - 50rpx)/2);
|
||||
width: 50rpx;
|
||||
height: 2rpx;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.eventList
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
.item
|
||||
{
|
||||
padding: 30rpx 0;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.time
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #767676;
|
||||
}
|
||||
.starC
|
||||
{
|
||||
.starList
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.icon
|
||||
{
|
||||
margin-right: 9rpx;
|
||||
width: 27rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.categoryTitleC
|
||||
{
|
||||
margin-top: 18rpx;
|
||||
.category
|
||||
{
|
||||
background-color: #FD9A14;
|
||||
margin-right: 10rpx;
|
||||
padding: 0 12rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: 8rpx;
|
||||
font-size: 22rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
.title
|
||||
{
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
.labelC
|
||||
{
|
||||
display: inline-block;
|
||||
.label
|
||||
{
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
}
|
||||
.content
|
||||
{
|
||||
display: -webkit-box;
|
||||
-webkit-box-orient: vertical;
|
||||
-webkit-line-clamp: 3;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
|
||||
}
|
||||
.percentList
|
||||
{
|
||||
white-space: nowrap;
|
||||
margin-top: 20rpx;
|
||||
.percentItem
|
||||
{
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
background-color: #F8F8F8;
|
||||
margin-right: 20rpx;
|
||||
padding: 0 20rpx;
|
||||
height: 70rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
zui-progress-circle
|
||||
{
|
||||
margin-left: 20rpx;
|
||||
}
|
||||
.num
|
||||
{
|
||||
width: 23px;
|
||||
line-height:23px;
|
||||
font-size: 17rpx;
|
||||
font-weight: bold;
|
||||
color: #999;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.percentItem:last-child
|
||||
{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.dataList
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
.item
|
||||
{
|
||||
padding: 30rpx 0;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.time
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #767676;
|
||||
}
|
||||
.starC
|
||||
{
|
||||
.starList
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
.icon
|
||||
{
|
||||
margin-right: 9rpx;
|
||||
width: 27rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.title
|
||||
{
|
||||
margin-top: 16rpx;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
.valueList
|
||||
{
|
||||
margin-top: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
223
pages/invest/investDetails/investDetails.vue
Normal file
223
pages/invest/investDetails/investDetails.vue
Normal file
@@ -0,0 +1,223 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="详情"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="categoryC fixed" :style="'top:'+navH+'px;'">
|
||||
<view :class="'item relative '+(selectCategory==index?'select':'')" v-for="(item,index) in categoryList" :key="index" @click="clickCategoryItem(index)">
|
||||
{{item}}
|
||||
<view v-if="selectCategory==index" class="line absolute"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="contentC fixed" :style="'top:'+contentTop+'px;'">
|
||||
<view v-if="selectCategory==3" class="stockC">
|
||||
<view class="stockCategoryList flexWrap">
|
||||
<view class="item flexColumnCenter" :style="'background-color:'+item.bgColor+';color:'+item.color+';'" v-for="(item,index) in stockCategoryList" :key="index">
|
||||
<view class="num">23</view>
|
||||
<view class="title">{{item.title}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="stockList">
|
||||
<view class="item">
|
||||
<view class="titleCorrelationC flex">
|
||||
<view class="title flex1">000065.SZ 北方国际</view>
|
||||
<view class="correlation">相关度: 98%</view>
|
||||
</view>
|
||||
<view class="category">石油石化</view>
|
||||
<view class="content">
|
||||
海外订单占比70%-80%,在俄语区矿产资源开发(蒙古矿山)、电力运营经验丰富,是乌克兰重建核心受益标的。公司在俄语区的深厚积累使其直接获益于区域经济复苏和能源合作深化。
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
import { investEventDetails } from '../../../request/api';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
eventId:'', //事件id
|
||||
contentTop:'',
|
||||
categoryList:['背景','推演','实际','相关股票','相关概念'],
|
||||
selectCategory:0,
|
||||
stockCategoryList:[
|
||||
{
|
||||
title:'全部股票',
|
||||
bgColor:'#C00000',
|
||||
color:'white'
|
||||
},
|
||||
{
|
||||
title:'大周期',
|
||||
bgColor:'#305496',
|
||||
color:'white'
|
||||
},
|
||||
{
|
||||
title:'TMT板块',
|
||||
bgColor:'#FFBF00',
|
||||
color:'white',
|
||||
},
|
||||
{
|
||||
title:'大金融地产',
|
||||
bgColor:'#FFF4D3',
|
||||
},
|
||||
{
|
||||
title:'大消费',
|
||||
bgColor:'#CDEEEE',
|
||||
},
|
||||
{
|
||||
title:'公共产业板块',
|
||||
bgColor:'#DEEBF7'
|
||||
}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.contentTop = this.navH+(30+74)/750*inject('windowWidth')
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击切换栏目
|
||||
*/
|
||||
clickCategoryItem(index)
|
||||
{
|
||||
if(this.selectCategory!=index)
|
||||
{
|
||||
this.selectCategory = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 获取事件详情数据
|
||||
*/
|
||||
getEventDetailsData()
|
||||
{
|
||||
investEventDetails(this.eventId).then(res=>{
|
||||
|
||||
}).catch(error=>{
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.categoryC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: 10rpx;
|
||||
padding-top: 20rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.item
|
||||
{
|
||||
display: inline-block;
|
||||
padding: 0 30rpx;
|
||||
line-height: 75rpx;
|
||||
font-size: 32rpx;
|
||||
font-weight: 500;
|
||||
color: #42485B;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #F97316;
|
||||
.line
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: calc((100% - 50rpx)/2);
|
||||
bottom: 0;
|
||||
width: 50rpx;
|
||||
height: 2rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
.contentC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow-y: scroll;
|
||||
.stockCategoryList
|
||||
{
|
||||
margin-top: 18rpx;
|
||||
padding: 0 24rpx;
|
||||
.item
|
||||
{
|
||||
margin: 0 20rpx 20rpx 0;
|
||||
width: calc((100% - 40rpx)/3);
|
||||
height: 100rpx;
|
||||
border-radius: 10rpx;
|
||||
.num
|
||||
{
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.title
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
.item:nth-child(3n)
|
||||
{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
.stockList
|
||||
{
|
||||
padding: 22rpx 25rpx 30rpx;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
.item
|
||||
{
|
||||
.title
|
||||
{
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
.correlation
|
||||
{
|
||||
background-color: #F973161A;
|
||||
padding: 0 13rpx;
|
||||
line-height: 40rpx;
|
||||
border-radius: 5rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #F97316;
|
||||
}
|
||||
.category
|
||||
{
|
||||
display: inline-block;
|
||||
padding: 0 10rpx;
|
||||
line-height: 28rpx;
|
||||
border: solid 1rpx #F6604A;
|
||||
font-size: 20rpx;
|
||||
font-weight: 500;
|
||||
color: #F6604A;
|
||||
border-radius: 5rpx;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 18rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
line-height: 1.2rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
185
pages/mine/basicInfo/basicInfo.vue
Normal file
185
pages/mine/basicInfo/basicInfo.vue
Normal file
@@ -0,0 +1,185 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="信息完善"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="avatarC fixed" :style="'top:'+avatarTop+'px;'">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<image class="icon absolute" src="/static/icon/mine/basicInfo/edit.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="basicInfoC fixed" :style="'top:'+contentTop+'px;'">
|
||||
<view class="title">基本信息</view>
|
||||
<view class="section">昵称</view>
|
||||
<view class="inputC">
|
||||
<input type="text" />
|
||||
</view>
|
||||
<view class="section">手机号</view>
|
||||
<view class="inputC">
|
||||
<input type="text" />
|
||||
</view>
|
||||
<view class="section">性别</view>
|
||||
<picker mode="selector" :range="sexList" @change="sexChange">
|
||||
<view class="selectC flex">
|
||||
<view class="flex1">{{sex}}</view>
|
||||
<image class="arrow" src="/static/icon/mine/basicInfo/downArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</picker>
|
||||
<view class="section">个人简介</view>
|
||||
<view class="textareaC">
|
||||
<textarea placeholder="简单介绍一下自己吧" placeholder-style="color:#AAA"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
<view class="next fixed" @click="clickNext()">下一步</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
avatarTop:'',
|
||||
contentTop:'',
|
||||
sexList:['男','女'],
|
||||
sex:''
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.avatarTop = inject('navHeight') + 60/750*inject('windowWidth')
|
||||
this.contentTop = this.avatarTop + 75/750*inject('windowWidth')
|
||||
},
|
||||
methods: {
|
||||
sexChange(e)
|
||||
{
|
||||
console.log(e)
|
||||
let value = e.detail.value
|
||||
this.sex = this.sexList[value]
|
||||
},
|
||||
/**
|
||||
* 点击下一步
|
||||
*/
|
||||
clickNext()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/mine/investPreference/investPreference'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.avatarC
|
||||
{
|
||||
left: 0;
|
||||
margin-left:calc((100% - 150rpx)/2);
|
||||
width: 150rpx;
|
||||
.avatar
|
||||
{
|
||||
background-color: red;
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
border-radius: 50%;
|
||||
border: solid 2rpx white;
|
||||
}
|
||||
.icon
|
||||
{
|
||||
right: 20rpx;
|
||||
bottom: 0;
|
||||
width: 40rpx;
|
||||
height: auto;
|
||||
}
|
||||
z-index: 10;
|
||||
}
|
||||
.basicInfoC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(73rpx + 17rpx + 80rpx);
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow-y: scroll;
|
||||
.title
|
||||
{
|
||||
margin: 150rpx 0 0 60rpx;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.section
|
||||
{
|
||||
margin: 0 60rpx;
|
||||
line-height: 66rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.inputC
|
||||
{
|
||||
background-color: #FBFBFD;
|
||||
margin: 0 60rpx;
|
||||
padding: 0 28rpx;
|
||||
height: 78rpx;
|
||||
border: solid 2rpx #EFEFF2;
|
||||
border-radius: 10rpx;
|
||||
input
|
||||
{
|
||||
height: 100%;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #555;
|
||||
}
|
||||
}
|
||||
.selectC
|
||||
{
|
||||
background-color: #FBFBFD;
|
||||
margin: 0 60rpx;
|
||||
padding: 0 25rpx 0 28rpx;
|
||||
height: 78rpx;
|
||||
border: solid 2rpx #EFEFF2;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #555;
|
||||
.arrow
|
||||
{
|
||||
width: 16rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.textareaC
|
||||
{
|
||||
background-color: #FBFBFD;
|
||||
margin: 0 60rpx;
|
||||
padding: 20rpx 0 0 28rpx;
|
||||
border: solid 2rpx #EFEFF2;
|
||||
border-radius: 2rpx;
|
||||
textarea
|
||||
{
|
||||
height: 200rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #555;
|
||||
}
|
||||
}
|
||||
}
|
||||
.next
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 73rpx;
|
||||
margin: 0 25rpx;
|
||||
line-height: 80rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
217
pages/mine/commentReply/commentReply.vue
Normal file
217
pages/mine/commentReply/commentReply.vue
Normal file
@@ -0,0 +1,217 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="评论回复"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="tabC fixed flex" :style="'top:'+navH+'px;'">
|
||||
<view :class="'item flex1 relative '+(selectTab==index?'select':'')" v-for="(item,index) in tabList" :key="index" @click="clickTabItem(index)">
|
||||
{{item}}
|
||||
<view v-if="selectTab==index" class="line absolute"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="list fixed" :style="'top:'+listTop+'px;'">
|
||||
<view class="item">
|
||||
<view class="replyContentC">
|
||||
<view class="flex">
|
||||
<view class="flex1 flex">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<view class="flex1">
|
||||
<view class="replyNickname">逸尘破晓</view>
|
||||
<view class="time">2-15 15:37</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="reply">回复</view>
|
||||
</view>
|
||||
<view class="content">
|
||||
回复<text class="originNickname">永不落的梦想</text><text>:四部门联合启动的人力资源服务业与制造业融合发展点。</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="originalTextC">
|
||||
<view class="originReply">
|
||||
<text class="originNickname">永不落的梦想</text><text>:四部门联合启动的人力资源服务业与制造业融合发展点。</text>
|
||||
</view>
|
||||
<view class="originEventC">
|
||||
<view class="levelTitleC flex">
|
||||
<view class="level">C</view>
|
||||
<view class="title">四部门联合启动人力资源服务业与制造业...</view>
|
||||
</view>
|
||||
<view class="eventContent">人社部、工信部等四部门印发通知,明确在30个城市开展3年期试点,培育人力资源服务与制造业协同机构...</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
listTop:'',
|
||||
tabList:['评论我的','我评论的'],
|
||||
selectTab:0,
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.listTop = this.navH+(75+10)/750*inject('windowWidth')
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击选择对应分类
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickTabItem(index)
|
||||
{
|
||||
if(this.selectTab!=index)
|
||||
{
|
||||
this.selectTab = index
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.tabC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin-top: 10rpx;
|
||||
border-bottom: solid 1rpx #E4E4E4;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.item
|
||||
{
|
||||
line-height: 74rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
color: #42485B;
|
||||
text-align: center;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
font-weight: bold;
|
||||
color: #F97316;
|
||||
}
|
||||
.item.select .line
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: calc((100% - 50rpx)/2);
|
||||
width: 50rpx;
|
||||
height: 2rpx;
|
||||
bottom: 0;
|
||||
}
|
||||
}
|
||||
.list
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
overflow-y: scroll;
|
||||
.item
|
||||
{
|
||||
.replyContentC
|
||||
{
|
||||
padding: 40rpx 25rpx 0;
|
||||
.avatar
|
||||
{
|
||||
background-color: red;
|
||||
margin-right: 22rpx;
|
||||
width: 80rpx;
|
||||
height: 80rpx;
|
||||
border-radius: 50%;
|
||||
}
|
||||
.replyNickname
|
||||
{
|
||||
font-size: 28rpx;
|
||||
}
|
||||
.time
|
||||
{
|
||||
font-size: 26rpx;
|
||||
color: #aaa;
|
||||
}
|
||||
.reply
|
||||
{
|
||||
width: 90rpx;
|
||||
height: 52rpx;
|
||||
line-height: 50rpx;
|
||||
border-radius: 26rpx;
|
||||
border: solid 1rpx #DDD;
|
||||
font-size: 24rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.content
|
||||
{
|
||||
margin-top: 20rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #444;
|
||||
.originNickname
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
}
|
||||
.originalTextC
|
||||
{
|
||||
background-color: #F7F7F7;
|
||||
margin-top: 20rpx;
|
||||
padding: 20rpx 25rpx 25rpx;
|
||||
.originReply
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #444;
|
||||
.originNickname
|
||||
{
|
||||
color: #F97316;
|
||||
}
|
||||
}
|
||||
.originEventC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: 20rpx;
|
||||
padding: 34rpx 16rpx;
|
||||
.levelTitleC
|
||||
{
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
.level
|
||||
{
|
||||
background-color: #FEC44F;
|
||||
margin-right: 17rpx;
|
||||
width: 50rpx;
|
||||
height: 40rpx;
|
||||
border-radius: 10rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
.title
|
||||
{
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
.eventContent
|
||||
{
|
||||
margin-top: 20rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #666;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
78
pages/mine/feedback/feedback.vue
Normal file
78
pages/mine/feedback/feedback.vue
Normal file
@@ -0,0 +1,78 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="意见反馈"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="feedbackC fixed" :style="'top:'+navH+'px;'">
|
||||
<view class="textareaC">
|
||||
<textarea placeholder="请输入您要反馈的问题(200 字以内)" placeholder-style="color:#C5C5C5" maxlength="200"></textarea>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit fixed">提交</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.feedbackC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: 10rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
padding: 43rpx 25rpx 0;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.textareaC
|
||||
{
|
||||
background-color: #F3F6F9;
|
||||
border-radius: 20rpx;
|
||||
padding: 20rpx 27rpx;
|
||||
textarea
|
||||
{
|
||||
width: 100%;
|
||||
height: 400rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
}
|
||||
.submit
|
||||
{
|
||||
background-color: #F97316;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 73rpx;
|
||||
margin: 0 25rpx;
|
||||
line-height: 80rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
238
pages/mine/investPreference/investPreference.vue
Normal file
238
pages/mine/investPreference/investPreference.vue
Normal file
@@ -0,0 +1,238 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="信息完善"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="avatarC fixed" :style="'top:'+avatarTop+'px;'">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<image class="icon absolute" src="/static/icon/mine/basicInfo/edit.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="preferenceC fixed" :style="'top:'+contentTop+'px;'">
|
||||
<view class="title">投资偏好设置</view>
|
||||
<view class="section first">投资偏好</view>
|
||||
<view class="list flexWrap">
|
||||
<view :class="'item '+(selectInvestIndex==index?'select':'')" v-for="(item,index) in investPreferenceList" :key="index" @click="clickInvestItem(index)">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="section">炒股年限</view>
|
||||
<view class="list flexWrap">
|
||||
<view :class="'item '+(selectYearIndex==index?'select':'')" v-for="(item,index) in stockYearList" :key="index" @click="clickYearItem(index)">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="section">风险偏好</view>
|
||||
<view class="list flexWrap">
|
||||
<view :class="'item '+(selectRiskIndex==index?'select':'')" v-for="(item,index) in riskPreferenceList" :key="index" @click="clickRiskItem(index)">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="section">投资规模</view>
|
||||
<view class="list flexWrap">
|
||||
<view :class="'item '+(selectScaleIndex==index?'select':'')" v-for="(item,index) in investmentScaleList" :key="index" @click="clickScaleItem(index)">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
<view class="section">偏好市场(可多选)</view>
|
||||
<view class="list flexWrap">
|
||||
<view :class="'item '+(item.select?'select':'')" v-for="(item,index) in preferredMarketList" :key="index" @click="clickMarketItem(index)">
|
||||
{{item.title}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottomC fixed flex">
|
||||
<view class="pre btn">上一步</view>
|
||||
<view class="finish btn flex1">完成</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
avatarTop:'',
|
||||
contentTop:'',
|
||||
investPreferenceList:['长期投资','中短期投资','风险控制型'],
|
||||
selectInvestIndex:-1,
|
||||
stockYearList:['新手入门','1年以内','1-3年','3-5年','5-10年','10年以上'],
|
||||
selectYearIndex:-1,
|
||||
riskPreferenceList:['保守型','稳健型','保守型'],
|
||||
selectRiskIndex:-1,
|
||||
investmentScaleList:['50万以下','50-100万','100万以上'],
|
||||
selectScaleIndex:-1,
|
||||
preferredMarketList:[{title:'A股'},{title:'港股'},{title:'美股'},{title:'期货'},{title:'虚拟货币'},{title:'新兴市场'}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.avatarTop = inject('navHeight') + 60/750*inject('windowWidth')
|
||||
this.contentTop = this.avatarTop + 75/750*inject('windowWidth')
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击选择投资偏好
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickInvestItem(index)
|
||||
{
|
||||
if(this.selectInvestIndex!=index)
|
||||
{
|
||||
this.selectInvestIndex = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击选择风险偏好
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickYearItem(index)
|
||||
{
|
||||
if(this.selectYearIndex!=index)
|
||||
{
|
||||
this.selectYearIndex = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击选择风险偏好
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickRiskItem(index)
|
||||
{
|
||||
if(this.selectRiskIndex!=index)
|
||||
{
|
||||
this.selectRiskIndex = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击选择投资规模
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickScaleItem(index)
|
||||
{
|
||||
if(this.selectScaleIndex!=index)
|
||||
{
|
||||
this.selectScaleIndex = index
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 点击选择市场偏好
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickMarketItem(index)
|
||||
{
|
||||
this.preferredMarketList[index].select = !this.preferredMarketList[index].select;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.avatarC
|
||||
{
|
||||
left: 0;
|
||||
margin-left:calc((100% - 150rpx)/2);
|
||||
width: 150rpx;
|
||||
.avatar
|
||||
{
|
||||
background-color: red;
|
||||
width: 100%;
|
||||
height: 150rpx;
|
||||
border-radius: 50%;
|
||||
border: solid 2rpx white;
|
||||
}
|
||||
.icon
|
||||
{
|
||||
right: 20rpx;
|
||||
bottom: 0;
|
||||
width: 40rpx;
|
||||
height: auto;
|
||||
}
|
||||
z-index: 10;
|
||||
}
|
||||
.preferenceC
|
||||
{
|
||||
background-color: white;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(73rpx + 17rpx + 80rpx);
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
overflow-y: scroll;
|
||||
.title
|
||||
{
|
||||
margin: 150rpx 0 0 60rpx;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.section
|
||||
{
|
||||
margin: 10rpx 60rpx 0;
|
||||
line-height: 66rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
}
|
||||
.section.first
|
||||
{
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
.list
|
||||
{
|
||||
padding: 0 60rpx;
|
||||
.item
|
||||
{
|
||||
background-color: #FBFBFD;
|
||||
margin: 0 14rpx 12rpx 0;
|
||||
width: calc((100% - 28rpx)/3);
|
||||
line-height: 76rpx;
|
||||
border: solid 2rpx #EFEFF2;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
}
|
||||
.item.select
|
||||
{
|
||||
background-color: #FFE9D9;
|
||||
border: solid 2rpx #F97316;
|
||||
}
|
||||
.item:nth-child(3n)
|
||||
{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottomC
|
||||
{
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 73rpx;
|
||||
margin: 0 25rpx;
|
||||
|
||||
.btn
|
||||
{
|
||||
line-height: 80rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.pre
|
||||
{
|
||||
background-color: #FFE9D9;
|
||||
width: 226rpx;
|
||||
color: #F97316;
|
||||
}
|
||||
.finish
|
||||
{
|
||||
background-color: #F97316;
|
||||
margin-left: 20rpx;
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
239
pages/mine/mine.vue
Normal file
239
pages/mine/mine.vue
Normal file
@@ -0,0 +1,239 @@
|
||||
<template>
|
||||
<view>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="navTitle fixed" :style="'top:'+menuTop+'px;line-height:'+menuH+'px;'">个人中心</view>
|
||||
<view class="personalInfoC relative flex" :style="'margin-top:'+infoTop+'px;'" @click="clickPersonalInfo()">
|
||||
<image class="avatar" src="" mode="aspectFill"></image>
|
||||
<view class="flex1">
|
||||
<view class="nickname">星河滚烫的理想</view>
|
||||
<view class="mobile">手机号:13654800065</view>
|
||||
</view>
|
||||
<image class="arrow" src="/static/icon/mine/infoArrow.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="numList relative flex">
|
||||
<view class="item flex1 flexColumnCenter" @click="clickNumItem(0)">
|
||||
<view class="num">1</view>
|
||||
<view class="title">评论回复</view>
|
||||
</view>
|
||||
<view class="item flex1 flexColumnCenter" @click="clickNumItem(1)">
|
||||
<view class="num">1</view>
|
||||
<view class="title">关注收藏</view>
|
||||
</view>
|
||||
<view class="item flex1 flexColumnCenter" @click="clickNumItem(2)">
|
||||
<view class="num">1</view>
|
||||
<view class="title">我的点赞</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="vipC relative" @click="clickVip()">
|
||||
<image class="icon" src="/static/image/mine/vipBg.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="menuList relative">
|
||||
<view class="list">
|
||||
<view class="item relative flex" v-for="(item,index) in menuList" :key="index" @click="clickMenuItem(item.url)" >
|
||||
<image class="icon" :src="item.icon" mode="aspectFit"></image>
|
||||
<view class="title flex1">{{item.title}}</view>
|
||||
<image class="arrow" src="/static/icon/mine/menuArrow.png" mode="widthFix"></image>
|
||||
<button class="absolute" v-if="index==menuList.length-1" open-type="contact"></button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
menuTop:inject('menuTop'),
|
||||
menuH: inject('menuHeight'),
|
||||
infoTop:'',
|
||||
menuList:[{
|
||||
icon:'/static/icon/mine/aboutUs.png',
|
||||
title:'关于我们',
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/serviceTerm.png',
|
||||
title:'服务条款',
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/privacyProtocol.png',
|
||||
title:'隐私协议',
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/feedback.png',
|
||||
title:'意见反馈',
|
||||
url:'/pages/mine/feedback/feedback'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/accountSetting.png',
|
||||
title:'账户设置',
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/customerService.png',
|
||||
title:'联系客服',
|
||||
}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
this.infoTop = inject('navHeight')+32/750*inject('windowWidth')
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击查看个人信息
|
||||
*/
|
||||
clickPersonalInfo()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/mine/basicInfo/basicInfo'
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 点击vip
|
||||
*/
|
||||
clickVip()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/mine/vip/vip'
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 查看评论收藏点赞
|
||||
* @param {Object} index
|
||||
*/
|
||||
clickNumItem(index)
|
||||
{
|
||||
if(index==0)
|
||||
{
|
||||
//评论回复
|
||||
uni.navigateTo({
|
||||
url:'/pages/mine/commentReply/commentReply'
|
||||
})
|
||||
}else if(index==1)
|
||||
{
|
||||
|
||||
}
|
||||
},
|
||||
clickMenuItem(url)
|
||||
{
|
||||
if(url)
|
||||
{
|
||||
uni.navigateTo({
|
||||
url
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.navTitle
|
||||
{
|
||||
left: 0;
|
||||
margin: 0 23rpx;
|
||||
font-size: 36rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
.personalInfoC
|
||||
{
|
||||
padding: 0 25rpx 0 30rpx;
|
||||
.avatar
|
||||
{
|
||||
margin-right: 11rpx;
|
||||
width: 130rpx;
|
||||
height: 130rpx;
|
||||
border-radius: 50%;
|
||||
border: solid 3rpx white;
|
||||
}
|
||||
.nickname
|
||||
{
|
||||
font-size: 32rpx;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
}
|
||||
.mobile
|
||||
{
|
||||
margin-top: 6rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #FFECD3;
|
||||
}
|
||||
.arrow
|
||||
{
|
||||
width: 15rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.numList
|
||||
{
|
||||
.item
|
||||
{
|
||||
padding: 25rpx 0;
|
||||
.num
|
||||
{
|
||||
font-size: 48rpx;
|
||||
font-weight: 800;
|
||||
color: white;
|
||||
}
|
||||
.title
|
||||
{
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #FFECD3;
|
||||
}
|
||||
}
|
||||
}
|
||||
.vipC
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
.icon
|
||||
{
|
||||
display: block;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.menuList
|
||||
{
|
||||
background-color: white;
|
||||
padding: 0 25rpx;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.item
|
||||
{
|
||||
height: 100rpx;
|
||||
padding: 0 18rpx 0 20rpx;
|
||||
border-bottom: solid 1rpx #F7F7F7;
|
||||
font-size: 28rpx;
|
||||
color: #222;
|
||||
.icon
|
||||
{
|
||||
margin-right: 16rpx;
|
||||
width: 44rpx;
|
||||
height: 44rpx;
|
||||
}
|
||||
.arrow
|
||||
{
|
||||
width: 11rpx;
|
||||
height: auto;
|
||||
}
|
||||
button
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
||||
409
pages/mine/vip/vip.vue
Normal file
409
pages/mine/vip/vip.vue
Normal file
@@ -0,0 +1,409 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="会员中心"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="vipC relative" :style="'margin-top:'+navH+'px;'">
|
||||
<view class="vipInfoC relative">
|
||||
<image class="bg" src="/static/image/mine/vip/noVipTopBg.png" mode="widthFix"></image>
|
||||
<view class="infoC absolute">
|
||||
<view class="title">价值前沿</view>
|
||||
<view class="tips">您还不是会员 加入尊享N项服务</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="vipProfitIntroC relative">
|
||||
<view class="titleC flexCenter">
|
||||
<image class="icon" src="/static/icon/mine/vip/titleLeft.png" mode="widthFix"></image>
|
||||
<view class="title">即刻开启</view>
|
||||
<image class="icon" src="/static/icon/mine/vip/titleRight.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="subtitle">HOW TO SUBSCRIBE</view>
|
||||
<view class="stepC flex">
|
||||
<view class="num">01</view>
|
||||
<view class="step">点击微信顶部搜索框,并指定搜索内容为 <text class="impormant">「公众号」</text></view>
|
||||
</view>
|
||||
<view class="picList flex">
|
||||
<view class="pic flex1">
|
||||
<image class="icon" src="/static/icon/mine/vip/step1.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="pic flex1">
|
||||
<image class="icon" src="/static/icon/mine/vip/step2.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="stepC flex">
|
||||
<view class="num">02</view>
|
||||
<view class="step">搜索<text class="impormant">「价值前沿」</text>,并点击搜索结果中的<text class="impormant">「关注」</text></view>
|
||||
</view>
|
||||
<view class="picList flex">
|
||||
<view class="pic flex1">
|
||||
<image class="icon" src="/static/icon/mine/vip/step3.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="pic flex1">
|
||||
<image class="icon" src="/static/icon/mine/vip/step4.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view class="questionC">
|
||||
<view class="title">投资的你是否遇到过这些问题?</view>
|
||||
<view class="iconListC flex">
|
||||
<image class="icon" src="/static/icon/mine/vip/investQuestion.png" mode="widthFix"></image>
|
||||
<view class="list flex1">
|
||||
<view class="item" v-for="(item,index) in questionList" :key="index">
|
||||
{{item}}
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="titleC research flexCenter">
|
||||
<image class="icon" src="/static/icon/mine/vip/titleLeft.png" mode="widthFix"></image>
|
||||
<view class="title">行业研究中心</view>
|
||||
<image class="icon" src="/static/icon/mine/vip/titleRight.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="subtitle">20余年专业投研,赋能每一位投资者</view>
|
||||
<view class="introC">
|
||||
<text class="flex1">依托价值前沿研究所深耕20余年的专业积淀,我们为您构建一站式行业研究平台。内容覆盖宏观趋势、产业结构、核心公司动态,帮助投资者看懂行业,识别机会,建立自己的知识体系。</text>
|
||||
<image class="icon" src="/static/icon/mine/vip/industrialResearch.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="titleC decision flexCenter">
|
||||
<image class="icon" src="/static/icon/mine/vip/titleLeft.png" mode="widthFix"></image>
|
||||
<view class="title">经营决策中心</view>
|
||||
<image class="icon" src="/static/icon/mine/vip/titleRight.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="subtitle">数据洞察,辅助每一个关键判断</view>
|
||||
<view class="introC operatingDecision">
|
||||
<text class="flex1">我们整合来自一线调研、专题报告、行业闭门会的专业数据,提供宏观到微观的全链条分析。无论是捕捉赛道拐点,还是识别公司价值,经营决策中心都是您可靠的智囊伙伴。</text>
|
||||
<image class="icon" src="/static/icon/mine/vip/operatingDecision.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="titleC privilege flexCenter">
|
||||
<image class="icon" src="/static/icon/mine/vip/titleLeft.png" mode="widthFix"></image>
|
||||
<view class="title">会员尊享特权</view>
|
||||
<image class="icon" src="/static/icon/mine/vip/titleRight.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="subtitle">数据洞察,辅助每一个关键判断</view>
|
||||
<view class="privilegeList flexWrap">
|
||||
<view class="item flexColumnCenter" v-for="(item,index) in privilegeList" :key="index">
|
||||
<image class="icon" :src="item.icon" mode="widthFix"></image>
|
||||
<view class="title">{{item.title}}</view>
|
||||
<view class="tips">{{item.tips}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bottomTitle">准备好提升您的投资策略了吗?</view>
|
||||
<view class="bottomTips"> 解锁全部高级功能,让AI成为您的专属投资顾问。</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="lookMealC fixed" @click="clickVipMeal()">查看VIP套餐</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
questionList:['信息纷杂难辨真伪?','信息纷杂难辨真伪?','无法把握宏观趋势与行业动向?'],
|
||||
privilegeList:[{
|
||||
icon:'/static/icon/mine/vip/depthReport.png',
|
||||
title:'深度研报',
|
||||
tips:'行业/公司独家分析'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/strategicInsight.png',
|
||||
title:'策略洞察',
|
||||
tips:'赛道趋势+拐点信号'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/dataTool.png',
|
||||
title:'数据工具',
|
||||
tips:'行业/公司独家分析'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/dataTool.png',
|
||||
title:'智能筛选',
|
||||
tips:'按需定制标的列表'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/decisionSupport.png',
|
||||
title:'决策辅助',
|
||||
tips:'关键因子评分系统'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/expertMeeting.png',
|
||||
title:'专家闭门会',
|
||||
tips:'深度交流机会'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/dailyReport.png',
|
||||
title:'日报周报',
|
||||
tips:'研判速递、节奏掌控'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/specialColumn.png',
|
||||
title:'专题专栏',
|
||||
tips:'核心团队观点集结'
|
||||
},
|
||||
{
|
||||
icon:'/static/icon/mine/vip/continuouslyUnlock.png',
|
||||
title:'持续解锁',
|
||||
tips:'不定期上线新功能'
|
||||
}]
|
||||
}
|
||||
},
|
||||
onLoad() {
|
||||
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击查看vip套餐
|
||||
*/
|
||||
clickVipMeal()
|
||||
{
|
||||
uni.navigateTo({
|
||||
url:'/pages/mine/vipMeal/vipMeal'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.vipC
|
||||
{
|
||||
padding-bottom: calc(180rpx + env(safe-area-inset-bottom));
|
||||
.vipInfoC
|
||||
{
|
||||
margin: 0 25rpx;
|
||||
.bg
|
||||
{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.infoC
|
||||
{
|
||||
top: 130rpx;
|
||||
left: 38rpx;
|
||||
.title
|
||||
{
|
||||
font-size: 40rpx;
|
||||
font-weight: bold;
|
||||
color: #556B87;
|
||||
}
|
||||
.tips
|
||||
{
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
color: #65758A;
|
||||
}
|
||||
}
|
||||
}
|
||||
.vipProfitIntroC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: -70rpx;
|
||||
padding-top: 40rpx;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.titleC
|
||||
{
|
||||
.icon
|
||||
{
|
||||
width: 54rpx;
|
||||
height: auto;
|
||||
}
|
||||
.title
|
||||
{
|
||||
margin: 0 20rpx;
|
||||
font-size: 50rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
.titleC.research
|
||||
{
|
||||
margin-top: 50rpx;
|
||||
}
|
||||
.titleC.decision
|
||||
{
|
||||
margin-top: 30rpx;
|
||||
}
|
||||
.titleC.privilege
|
||||
{
|
||||
margin-top: 40rpx;
|
||||
}
|
||||
.subtitle
|
||||
{
|
||||
font-size: 24rpx;
|
||||
color: #888;
|
||||
text-align: center;
|
||||
}
|
||||
.stepC
|
||||
{
|
||||
margin: 16rpx 25rpx 0;
|
||||
.num
|
||||
{
|
||||
background-color: #EDEEF1;
|
||||
margin-right: 25rpx;
|
||||
width: 50rpx;
|
||||
line-height: 50rpx;
|
||||
border-radius: 50%;
|
||||
font-size: 24rpx;
|
||||
font-weight: bold;
|
||||
color: #5C6473;
|
||||
text-align: center;
|
||||
}
|
||||
.step
|
||||
{
|
||||
font-size: 24rpx;
|
||||
color: #5C6473;
|
||||
.impormant
|
||||
{
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
.picList
|
||||
{
|
||||
padding: 0 25rpx;
|
||||
margin-top: 34rpx;
|
||||
.pic
|
||||
{
|
||||
margin-right: 20rpx;
|
||||
.icon
|
||||
{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.pic:last-child
|
||||
{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
.questionC
|
||||
{
|
||||
margin-top: 40rpx;
|
||||
.title
|
||||
{
|
||||
font-size: 45rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
text-align: center;
|
||||
}
|
||||
.iconListC
|
||||
{
|
||||
margin-top: 46rpx;
|
||||
padding: 0 23rpx 0 59rpx;
|
||||
.icon
|
||||
{
|
||||
margin-right: 56rpx;
|
||||
width: 235rpx;
|
||||
height: auto;
|
||||
}
|
||||
.list
|
||||
{
|
||||
.item
|
||||
{
|
||||
background-color: #EDEDED;
|
||||
margin-bottom: 15rpx;
|
||||
line-height: 70rpx;
|
||||
border-radius: 35rpx;
|
||||
font-size: 24rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.introC
|
||||
{
|
||||
display: flex;
|
||||
box-shadow: 0px 0px 9rpx 0px rgba(0,0,0,0.1);
|
||||
margin: 24rpx 25rpx 0;
|
||||
padding: 40rpx 20rpx 20rpx 33rpx;
|
||||
line-height: 1.5rem;
|
||||
border-radius: 10rpx;
|
||||
font-size: 24rpx;
|
||||
color: #555;
|
||||
.icon
|
||||
{
|
||||
margin-top: 92rpx;
|
||||
width: 251rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.introC.operatingDecision
|
||||
{
|
||||
padding-bottom: 11rpx;
|
||||
.icon
|
||||
{
|
||||
margin-top: 116rpx;
|
||||
width: 249rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
.privilegeList
|
||||
{
|
||||
margin: 24rpx 25rpx 0;
|
||||
padding: 20rpx 0;
|
||||
box-shadow: 0px 0px 9rpx 0px rgba(0,0,0,0.1);
|
||||
border-radius: 10rpx;
|
||||
.item
|
||||
{
|
||||
padding: 20rpx 0;
|
||||
width: calc((100%)/3);
|
||||
.icon
|
||||
{
|
||||
margin-bottom: 10rpx;
|
||||
width: 91rpx;
|
||||
height: auto;
|
||||
}
|
||||
.title
|
||||
{
|
||||
font-size: 26rpx;
|
||||
font-weight: bold;
|
||||
color: #242323;
|
||||
}
|
||||
.tips
|
||||
{
|
||||
margin-top: 6rpx;
|
||||
font-size: 22rpx;
|
||||
color: #555;
|
||||
}
|
||||
}
|
||||
}
|
||||
.bottomTitle
|
||||
{
|
||||
margin-top: 80rpx;
|
||||
font-size: 45rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
text-align: center;
|
||||
}
|
||||
.bottomTips
|
||||
{
|
||||
font-size: 24rpx;
|
||||
color: #888;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
.lookMealC
|
||||
{
|
||||
background-color: #F97316;
|
||||
margin: 0 25rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
line-height: 80rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
224
pages/mine/vipMeal/vipMeal.vue
Normal file
224
pages/mine/vipMeal/vipMeal.vue
Normal file
@@ -0,0 +1,224 @@
|
||||
<template>
|
||||
<view>
|
||||
<navBar leftText="会员中心"></navBar>
|
||||
<image class="topBg absolute" src="/static/image/mine/myTopBg.png" mode="widthFix"></image>
|
||||
<view class="vipC" :style="'margin-top:'+navH+'px;'">
|
||||
<view class="vipInfoC relative">
|
||||
<image class="bg" src="/static/image/mine/vip/noVipTopBg.png" mode="widthFix"></image>
|
||||
<view class="infoC absolute">
|
||||
<view class="title">价值前沿</view>
|
||||
<view class="tips">您还不是会员 加入尊享N项服务</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="privilegeCompareC relative">
|
||||
<view class="titleC flexCenter">
|
||||
<image class="icon" src="/static/icon/mine/vip/titleLeft.png" mode="widthFix"></image>
|
||||
<view class="title">特权对比</view>
|
||||
<image class="icon" src="/static/icon/mine/vip/titleRight.png" mode="widthFix"></image>
|
||||
</view>
|
||||
<view class="privilegeList">
|
||||
<view class="header flex">
|
||||
<view class="privilege item">专属特权</view>
|
||||
<view class="item free">普通免费</view>
|
||||
<view class="item vip">VIP会员</view>
|
||||
</view>
|
||||
<view class="list">
|
||||
<view class="item flex" v-for="(item,index) in privilegeList" :key="index">
|
||||
<view class="optionItem privilege flex">{{item}}</view>
|
||||
<view class="optionItem free flexCenter">
|
||||
<block v-if="index==0||index==1||index==2">
|
||||
<image class="notContain" src="/static/icon/mine/vip/notContain.png" mode="widthFix"></image>
|
||||
</block>
|
||||
<block v-if="index==3||index==4">
|
||||
<block v-if="index==3">限制查看数量</block>
|
||||
<block v-if="index==4">每日查看2只</block>
|
||||
</block>
|
||||
<block v-if="index==5||index==6">
|
||||
<image class="contain" src="/static/icon/mine/vip/contain.png" mode="widthFix"></image>
|
||||
</block>
|
||||
</view>
|
||||
<view class="optionItem vip flexCenter">
|
||||
<image class="contain" src="/static/icon/mine/vip/contain.png" mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="joinVipC fixed" @click="clickJoinVip()">立即加入年度VIP</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { inject } from 'vue';
|
||||
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
navH:inject('navHeight'),
|
||||
privilegeList:['高效选股工具','股票基金明星榜单','定期专属晨报、股票动态','独家产业研报','个股产业分析','股票、基金基础指标','7x24 财经直播']
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 点击加入vip
|
||||
*/
|
||||
clickJoinVip()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="less">
|
||||
.topBg
|
||||
{
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.vipC
|
||||
{
|
||||
padding-bottom: calc(180rpx + env(safe-area-inset-bottom));
|
||||
.vipInfoC
|
||||
{
|
||||
margin: 0 25rpx;
|
||||
.bg
|
||||
{
|
||||
width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.infoC
|
||||
{
|
||||
top: 130rpx;
|
||||
left: 38rpx;
|
||||
.title
|
||||
{
|
||||
font-size: 40rpx;
|
||||
font-weight: bold;
|
||||
color: #556B87;
|
||||
}
|
||||
.tips
|
||||
{
|
||||
font-size: 28rpx;
|
||||
font-weight: 500;
|
||||
color: #65758A;
|
||||
}
|
||||
}
|
||||
}
|
||||
.privilegeCompareC
|
||||
{
|
||||
background-color: white;
|
||||
margin-top: -70rpx;
|
||||
padding-top: 40rpx;
|
||||
border-radius: 20rpx 20rpx 0 0;
|
||||
.titleC
|
||||
{
|
||||
.icon
|
||||
{
|
||||
width: 54rpx;
|
||||
height: auto;
|
||||
}
|
||||
.title
|
||||
{
|
||||
margin: 0 20rpx;
|
||||
font-size: 50rpx;
|
||||
font-weight: bold;
|
||||
color: #222;
|
||||
}
|
||||
}
|
||||
.privilegeList
|
||||
{
|
||||
margin: 0 25rpx;
|
||||
padding: 0 30rpx;
|
||||
box-shadow: 0px 0px 9px 0px rgba(0,0,0,0.1);
|
||||
border-radius: 10rpx;
|
||||
.header
|
||||
{
|
||||
margin-top: 50rpx;
|
||||
padding-top: 14rpx;
|
||||
border-bottom: solid 1rpx #F3F4F6;
|
||||
.item
|
||||
{
|
||||
line-height: 90rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: bold;
|
||||
color: #555;
|
||||
}
|
||||
.item.privilege
|
||||
{
|
||||
padding-left: 24rpx;
|
||||
width: 300rpx;
|
||||
}
|
||||
.item.free
|
||||
{
|
||||
width: 174rpx;
|
||||
text-align: center;
|
||||
}
|
||||
.item.vip
|
||||
{
|
||||
width: 160rpx;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
.list
|
||||
{
|
||||
.item
|
||||
{
|
||||
.optionItem
|
||||
{
|
||||
height: 90rpx;
|
||||
border-bottom: solid 1rpx #F3F4F6;
|
||||
.contain
|
||||
{
|
||||
width: 21rpx;
|
||||
height: auto;
|
||||
}
|
||||
.notContain
|
||||
{
|
||||
width: 17rpx;
|
||||
height: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
.optionItem.privilege
|
||||
{
|
||||
width: 300rpx;
|
||||
font-size: 24rpx;
|
||||
font-weight: 500;
|
||||
color: #222;
|
||||
}
|
||||
.optionItem.free
|
||||
{
|
||||
width: 174rpx;
|
||||
font-size: 20rpx;
|
||||
color: #555;
|
||||
text-align: center;
|
||||
}
|
||||
.optionItem.vip
|
||||
{
|
||||
width: 160rpx;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
.joinVipC
|
||||
{
|
||||
background-color: #F97316;
|
||||
margin: 0 25rpx;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: calc(20rpx + env(safe-area-inset-bottom));
|
||||
line-height: 80rpx;
|
||||
border-radius: 20rpx;
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
color: white;
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user