6.30 版本提交

This commit is contained in:
尚政杰
2025-06-30 19:02:44 +08:00
commit c4267a0e27
338 changed files with 27942 additions and 0 deletions

View 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>

View 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>

View 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>

View 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
View 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
View 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>

View 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>