1072 lines
26 KiB
Vue
1072 lines
26 KiB
Vue
<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" v-model="keywords" placeholder="搜索话题/股票名称" placeholder-style="color:#94989A"/>
|
||
<view class="line"></view>
|
||
<view class="search" @click="clickSearch()">搜索</view>
|
||
</view>
|
||
<scroll-view scroll-y class="contentC fixed" :style="'top:'+contentTop+'px;'" @scrolltolower="loadMoreData()">
|
||
<view class="">
|
||
<view class="todayC flex" >
|
||
<view class="todayDateC flex" @click="clickSelectMonth()">
|
||
<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" @click="clickTodayDate()">今</view>
|
||
</view>
|
||
<view class="weekList flex">
|
||
<view class="item flex1" v-for="(item,index) in weekList" :key="index">{{item}}</view>
|
||
</view>
|
||
<view v-if="isExpand" class="monthDateList flexWrap">
|
||
<view class="item flexColumnCenter" v-for="(item,index) in monthDateList" :key="index" @click="clickSelectDate(item)">
|
||
<block v-if="selectDate!=todayDate">
|
||
<view v-if="selectDate==item.date" class="date today">{{item.day}}</view>
|
||
<view v-else :class="'date '+(item.isCurrentMonth?'':' notCurrentMonth')">{{item.day}}</view>
|
||
</block>
|
||
<block v-else>
|
||
<view :class="'date '+(item.isToday?'today':(item.isCurrentMonth?'':' notCurrentMonth')) ">{{item.day}}</view>
|
||
</block>
|
||
<block v-if="item.className">
|
||
<view v-if="item.className=='bg-gradient-danger'" class="eventNum danger">{{item.eventCount}}</view>
|
||
<view v-if="item.className=='bg-gradient-warning'" class="eventNum warning">{{item.eventCount}}</view>
|
||
<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">
|
||
<block v-if="selectDate!=todayDate">
|
||
<view v-if="selectDate==item.date" class="date today">{{item.day}}</view>
|
||
<view v-else :class="'date '+(item.isCurrentMonth?'':' notCurrentMonth')">{{item.day}}</view>
|
||
</block>
|
||
<block v-else>
|
||
<view :class="'date '+(item.isToday?'today':(item.isCurrentMonth?'':' notCurrentMonth')) ">{{item.day}}</view>
|
||
</block>
|
||
<block v-if="item.className">
|
||
<view v-if="item.className=='bg-gradient-danger'" class="eventNum danger">{{item.eventCount}}</view>
|
||
<view v-if="item.className=='bg-gradient-warning'" class="eventNum warning">{{item.eventCount}}</view>
|
||
<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 v-if="isExpand" class="arrow" src="/static/icon/invest/upArrow.png" mode="widthFix"></image>
|
||
<image v-else 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 stockCategoryList" :key="index" @click="clickTopCategoryItem(index)">
|
||
{{item.primary_sector}}
|
||
<view v-if="selectTopCategory==index" class="line absolute"></view>
|
||
</view>
|
||
</scroll-view>
|
||
<view v-if="selectTab==0" class="eventList">
|
||
<view class="item" v-for="(item,index) in eventList" :key="index" @click="clickEventItem(item.id)">
|
||
<view class="flex">
|
||
<view class="time flex1">{{getLocaleHourMinute(item.start_time)}}</view>
|
||
<view class="starC">
|
||
<view class="starList flex" >
|
||
<image class="icon" :src="(sindex<(item.category.star_rating)?'/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">{{item.category.event_type}}</view>
|
||
<view class="title flex1">{{item.title}}</view>
|
||
</view>
|
||
<scroll-view scroll-x class="labelC">
|
||
<view class="label" v-for="(titem,tindex) in item.tags" :key="tindex">
|
||
{{titem}}
|
||
</view>
|
||
</scroll-view>
|
||
<view class="content">
|
||
<ua-markdown :source="replaceAnswerLabel(item.description)" />
|
||
</view>
|
||
<scroll-view v-if="item.related_concepts" scroll-x class="percentList">
|
||
<view class="percentItem" v-for="(citem,cindex) in item.related_concepts" :key="cindex">
|
||
{{citem.name}}
|
||
<zui-progress-circle :position="citem.score" :range="[270,630]" :size="26" :ring-width="2" :texture="['#F97316','#E3E3E3']">
|
||
<view class="num">{{citem.score*100}}%</view>
|
||
</zui-progress-circle>
|
||
</view>
|
||
</scroll-view>
|
||
</view>
|
||
</view>
|
||
<view v-if="selectTab==1" class="dataList">
|
||
<view class="item" v-for="(item,index) in dataList" :key="index">
|
||
<view class="flex">
|
||
<view class="time flex1">{{getLocaleHourMinute(item.created_at)}}</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="title">{{item.title}}</view>
|
||
<view class="valueList flex between">
|
||
<view class="pre">前值 {{item.former}}</view>
|
||
<view class="prediction">预测 {{item.forecast?item.forecast:'--'}}</view>
|
||
<view class="actual">实际 {{item.fact?item.fact:'--'}}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</scroll-view>
|
||
<uni-popup ref="popup" type="top">
|
||
<view class="popup" :style="'margin-top:'+navH+'px;'">
|
||
<view class="yearMonthC flex">
|
||
<view class="preC btn flexCenter" @click="clickPreMonth()">
|
||
<image class="icon" src="/static/icon/home/monthLeftArrow.png" mode="widthFix"></image>
|
||
</view>
|
||
<view class="yearMonth flex1">{{selectMonth}}</view>
|
||
<view class="nextC btn flexCenter" @click="clickNextMonth()">
|
||
<image class="icon" src="/static/icon/home/monthRightArrow.png" mode="widthFix"></image>
|
||
</view>
|
||
</view>
|
||
<view class="weekList flex">
|
||
<view class="item flex1" v-for="(item,index) in weekList" :key="index">{{item}}</view>
|
||
</view>
|
||
<view class="monthDateList flexWrap">
|
||
<view class="item flexColumnCenter" v-for="(item,index) in calendarDateList[selectMonthIndex]" :key="index" @click="clickSelectDate(item)">
|
||
<block v-if="item.isToday||item.date==selectDate">
|
||
<view class="date today">{{item.day}}</view>
|
||
</block>
|
||
<block v-else>
|
||
<block v-if="!item.isCurrentMonth">
|
||
<view class="date notCurrentMonth">{{item.day}}</view>
|
||
</block>
|
||
<block v-else>
|
||
<view class="date">{{item.day}}</view>
|
||
</block>
|
||
</block>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</uni-popup>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
import { inject } from 'vue'
|
||
import { stockCategoryList, calendarEventList, calendarDataList, calendarEventCount, } from '@/request/api'
|
||
import { getLocaleHourMinute, replaceAnswerLabel } from '@/utils/util'
|
||
|
||
export default {
|
||
data() {
|
||
return {
|
||
menuTop:inject('menuTop'),
|
||
menuH: inject('menuHeight'),
|
||
navH:inject('navHeight'),
|
||
windowWidth:inject('windowWidth'),
|
||
contentTop:'',
|
||
keywords:'', //搜索关键字
|
||
todayDate:'', //今日日期
|
||
calendarDateList:[], //日历日期
|
||
selectMonth:'', //选中月份
|
||
selectMonthIndex:0, //选中月份下标
|
||
weekList:['一','二','三','四','五','六','日'],
|
||
weekDateList:[], //当前周日期
|
||
monthDateList:[], //当前月日期
|
||
isExpand:false, //是否展开日期
|
||
tabList:['事件','数据'],
|
||
selectTab:0,
|
||
stockCategoryList:[],
|
||
selectTopCategory:0,
|
||
listTop:'',
|
||
todayDate:'', //今日日期
|
||
selectDate:'', //选择查看的日期
|
||
progress: 75,
|
||
eventList:[], //事件列表
|
||
dataList:[], //数据列表
|
||
page:1,
|
||
loadAll:false,
|
||
getLocaleHourMinute:getLocaleHourMinute,
|
||
replaceAnswerLabel:replaceAnswerLabel
|
||
}
|
||
},
|
||
onLoad() {
|
||
let date = new Date()
|
||
this.contentTop = this.navH + (75+20)/750*inject('windowWidth')
|
||
let currentYear = date.getFullYear()
|
||
let currentMonth = date.getMonth()+1
|
||
let currentDay = date.getDate()
|
||
this.todayDate = this.selectDate = currentYear+'-'+(currentMonth>9?currentMonth:('0'+currentMonth))+'-'+(currentDay>9?currentDay:('0'+currentDay))
|
||
let week = date.getDay() || 7
|
||
let diff = week - 1
|
||
let daysOfWeek = [];
|
||
for (var i = 0; i < 7; i++) {
|
||
let newDate = new Date()
|
||
newDate.setDate(currentDay - diff + i); // 设置日期为当前周的相应日期
|
||
let newDay = newDate.getDate()
|
||
let date = currentYear+'-'+(currentMonth>9?currentMonth:('0'+currentMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||
daysOfWeek.push({date:date,day:newDay,isToday:newDay==currentDay?true:false});
|
||
}
|
||
this.weekDateList = daysOfWeek
|
||
let calendarDateList = []
|
||
this.selectMonthIndex = 20*12+currentMonth-1
|
||
this.selectMonth = currentYear + '-' + (currentMonth>9?currentMonth:('0'+currentMonth))
|
||
for (var i = currentYear-20; i < currentYear+20; i++) {
|
||
for (var j = 0; j < 12; j++) {
|
||
let date = new Date(i,j+1,0)
|
||
let firstDayOfMonth = new Date(i,j+1,0);
|
||
firstDayOfMonth.setDate(1);
|
||
//获取当前月天数
|
||
let currentMonthDay = date.getDate()
|
||
let firstDayWeek = firstDayOfMonth.getDay() || 7
|
||
let daysOfMonth = []
|
||
for (var k = 1; k <= currentMonthDay; k++) {
|
||
let newDate = new Date(i,j+1,0)
|
||
newDate.setDate(k); // 设置日期为当前月的相应日期
|
||
let newMonth = newDate.getMonth()+1
|
||
let newDay = newDate.getDate()
|
||
let time = newDate.getTime()
|
||
let date = i+'-'+(newMonth>9?newMonth:('0'+newMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||
daysOfMonth.push({date:date,year:i,month:newMonth,day:newDay,isToday:(i==currentYear&&newMonth==currentMonth&&newDay==currentDay)?true:false,isCurrentMonth:true,timestamp:time});
|
||
}
|
||
for (var k = 0; k < firstDayWeek-1; k++) {
|
||
//获取上月天数
|
||
let year = i
|
||
let month = j
|
||
if(j<1)
|
||
{
|
||
year = i - 1
|
||
month = 12
|
||
}
|
||
let lastMonthDay = new Date(year, month, 0).getDate()
|
||
//获取上月日期
|
||
let newDate = new Date(year,month-1,lastMonthDay-k)
|
||
let newMonth = newDate.getMonth()+1
|
||
let newDay = newDate.getDate()
|
||
let time = newDate.getTime()
|
||
let date = year+'-'+(newMonth>9?newMonth:('0'+newMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||
daysOfMonth.unshift({date:date,year:year,month:newMonth,day:newDay,isToday:false,isCurrentMonth:false,timestamp:time});
|
||
}
|
||
// 下一个月的第一天
|
||
let nextMonthFirstDay = new Date(i, j+1, 1);
|
||
// 然后减去一天就是当前月的最后一天
|
||
let lastDayOfMonth = new Date(nextMonthFirstDay - (24 * 60 * 60 * 1000)); // 减去一天的毫秒数
|
||
let lastDayWeek = lastDayOfMonth.getDay() || 7; // 返回0(星期天)到6(星期六)之
|
||
for (var k = 1; k < 8-lastDayWeek; k++) {
|
||
let year = i
|
||
let month = j
|
||
if(month>11)
|
||
{
|
||
month = 0
|
||
year ++
|
||
}
|
||
//获取下月日期
|
||
let newDate = new Date(year,month + 1,k)
|
||
let newMonth = newDate.getMonth()+1
|
||
let newDay = newDate.getDate()
|
||
let time = newDate.getTime()
|
||
let date = year+'-'+(newMonth>9?newMonth:('0'+newMonth))+'-'+(newDay>9?newDay:('0'+newDay))
|
||
daysOfMonth.push({date:date,year:year,month:newMonth,day:newDay,isToday:false,isCurrentMonth:false,timestamp:time});
|
||
}
|
||
calendarDateList.push(daysOfMonth)
|
||
}
|
||
}
|
||
this.calendarDateList = calendarDateList
|
||
this.monthDateList = calendarDateList[this.selectMonthIndex]
|
||
this.listTop = this.contentTop + (68+40+96+74+70+74+22)/750*inject('windowWidth')
|
||
Promise.all([this.getStockCategoryListData(),this.getCurrentMonthEventCountData()]).then(res=>{
|
||
this.getEventListData()
|
||
}).catch(error=>{
|
||
|
||
})
|
||
},
|
||
onPullDownRefresh() {
|
||
this.reloadData()
|
||
},
|
||
computed: {
|
||
circumference() {
|
||
return Math.PI * 100; // 圆周长,半径为50的圆周长
|
||
}
|
||
},
|
||
methods: {
|
||
reloadData()
|
||
{
|
||
this.page = 1
|
||
this.loadAll = false
|
||
if(this.selectTab==0)
|
||
{
|
||
this.getEventListData()
|
||
}else
|
||
this.getDataListData()
|
||
},
|
||
loadMoreData()
|
||
{
|
||
if(!this.loadAll)
|
||
{
|
||
this.page ++
|
||
if(this.selectTab==0)
|
||
{
|
||
this.getEventListData()
|
||
}else
|
||
this.getDataListData()
|
||
}
|
||
},
|
||
/**
|
||
* 点击搜索
|
||
*/
|
||
clickSearch()
|
||
{
|
||
this.reloadData()
|
||
},
|
||
/**
|
||
* 点击选择月份
|
||
*/
|
||
clickSelectMonth()
|
||
{
|
||
this.$refs['popup'].open()
|
||
},
|
||
/**
|
||
* 点击今日日期
|
||
*/
|
||
clickTodayDate()
|
||
{
|
||
if(this.selectDate!=this.todayDate)
|
||
{
|
||
this.selectDate = this.todayDate
|
||
let date = new Date()
|
||
let currentMonth = date.getMonth()+1
|
||
this.selectMonthIndex = 20*12+currentMonth-1
|
||
this.reloadData()
|
||
}
|
||
},
|
||
/**
|
||
* 点击展开或收起
|
||
*/
|
||
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
|
||
},
|
||
/**
|
||
* 点击上个月
|
||
*/
|
||
clickPreMonth()
|
||
{
|
||
if(this.selectMonthIndex>0)
|
||
{
|
||
this.selectMonthIndex --
|
||
let monthList = this.calendarDateList[this.selectMonthIndex]
|
||
let month = ''
|
||
for (let item of monthList) {
|
||
if(item.isCurrentMonth)
|
||
{
|
||
month = item.month
|
||
break
|
||
}
|
||
}
|
||
this.selectMonth = this.calendarDateList[this.selectMonthIndex][0].year+'-'+(month>9?month:('0'+month))
|
||
}
|
||
},
|
||
/**
|
||
* 点击下个月
|
||
*/
|
||
clickNextMonth()
|
||
{
|
||
if(this.selectMonthIndex<this.calendarDateList.length-1)
|
||
{
|
||
this.selectMonthIndex ++
|
||
let monthList = this.calendarDateList[this.selectMonthIndex]
|
||
let month = ''
|
||
for (let item of monthList) {
|
||
if(item.isCurrentMonth)
|
||
{
|
||
month = item.month
|
||
break
|
||
}
|
||
}
|
||
this.selectMonth = this.calendarDateList[this.selectMonthIndex][0].year+'-'+(month>9?month:('0'+month))
|
||
}
|
||
},
|
||
/**
|
||
* 选中日期
|
||
* @param {Object} item
|
||
*/
|
||
clickSelectDate(item)
|
||
{
|
||
if(this.selectDate!=item.date)
|
||
{
|
||
this.selectDate = item.date
|
||
this.reloadData()
|
||
}
|
||
},
|
||
/**
|
||
* 点击切换事件或者数据
|
||
*/
|
||
clickTabItem(index)
|
||
{
|
||
if(this.selectTab!=index)
|
||
{
|
||
this.selectTab = index
|
||
this.reloadData()
|
||
}
|
||
},
|
||
/**
|
||
* 选择一级分类
|
||
*/
|
||
clickTopCategoryItem(index)
|
||
{
|
||
if(this.selectTopCategory!=index)
|
||
{
|
||
this.selectTopCategory = index
|
||
this.reloadData()
|
||
}
|
||
},
|
||
/**
|
||
* 点击查看事件详情
|
||
*/
|
||
clickEventItem(id)
|
||
{
|
||
uni.navigateTo({
|
||
url:'/pages/invest/investDetails/investDetails?id='+id
|
||
})
|
||
},
|
||
/**
|
||
* 获取股票分类
|
||
*/
|
||
getStockCategoryListData()
|
||
{
|
||
return new Promise((resolve,reject)=>{
|
||
stockCategoryList().then(res=>{
|
||
if(res.code==200)
|
||
{
|
||
res.data.unshift({primary_sector:'全部',sub_sectors:[]})
|
||
this.stockCategoryList = res.data
|
||
resolve(1)
|
||
}else
|
||
{
|
||
uni.showToast({
|
||
title:res.message,
|
||
icon:'none'
|
||
})
|
||
reject(1)
|
||
}
|
||
|
||
}).catch(error=>{
|
||
reject(1)
|
||
})
|
||
})
|
||
|
||
},
|
||
/**
|
||
* 获取事件列表数据
|
||
*/
|
||
getEventListData()
|
||
{
|
||
let param = {start:this.selectDate,q:this.keywords,page:this.page}
|
||
if(this.selectTopCategory>0)
|
||
{
|
||
param.category = this.stockCategoryList[this.selectTopCategory].primary_sector
|
||
}
|
||
calendarEventList(param).then(res=>{
|
||
uni.stopPullDownRefresh()
|
||
if(res.code==200)
|
||
{
|
||
if(res.data.page==1)
|
||
{
|
||
this.eventList = res.data.events
|
||
}else
|
||
this.eventList = this.eventList.concat(res.data.events)
|
||
if(res.data.page==res.data.total_pages)
|
||
{
|
||
this.loadAll = true
|
||
}
|
||
}else
|
||
uni.showToast({
|
||
title:res.message,
|
||
icon:'none'
|
||
})
|
||
}).catch(error=>{
|
||
uni.stopPullDownRefresh()
|
||
})
|
||
},
|
||
/**
|
||
* 获取事件列表数据
|
||
*/
|
||
getDataListData()
|
||
{
|
||
let param = {start:this.selectDate,q:this.keywords,page:this.page}
|
||
if(this.selectTopCategory>0)
|
||
{
|
||
param.category = this.stockCategoryList[this.selectTopCategory].primary_sector
|
||
}
|
||
calendarDataList(param).then(res=>{
|
||
if(res.code==200)
|
||
{
|
||
this.dataList = res.data.data_list
|
||
}else
|
||
uni.showToast({
|
||
title:res.message,
|
||
icon:'none'
|
||
})
|
||
}).catch(error=>{
|
||
uni.stopPullDownRefresh()
|
||
})
|
||
},
|
||
/**
|
||
* 获取当前月份每一天的事件数量
|
||
*/
|
||
getCurrentMonthEventCountData()
|
||
{
|
||
return new Promise((resolve,reject)=>{
|
||
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
|
||
}
|
||
}
|
||
}
|
||
resolve(1)
|
||
}).catch(error=>{
|
||
reject(1)
|
||
})
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</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
|
||
{
|
||
margin-top: 12rpx;
|
||
.label
|
||
{
|
||
display: inline-block;
|
||
margin-right: 10rpx;
|
||
padding: 0 10rpx;
|
||
line-height: 30rpx;
|
||
font-size: 20rpx;
|
||
font-weight: 500;
|
||
border-radius: 5rpx;
|
||
border: solid 1rpx #333;
|
||
}
|
||
}
|
||
.content
|
||
{
|
||
margin-top: 20rpx;
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
.popup
|
||
{
|
||
background-color: white;
|
||
padding: 30rpx 0;
|
||
.yearMonthC
|
||
{
|
||
padding: 0 30rpx;
|
||
.yearMonth
|
||
{
|
||
text-align: center;
|
||
font-size: 24rpx;
|
||
}
|
||
.btn
|
||
{
|
||
background-color: #f8f8f8;
|
||
width: 40rpx;
|
||
height: 40rpx;
|
||
border-radius: 50%;
|
||
.icon
|
||
{
|
||
display: block;
|
||
width: 24rpx;
|
||
height: auto;
|
||
}
|
||
}
|
||
}
|
||
.weekList
|
||
{
|
||
margin-top: 20rpx;
|
||
padding: 0 30rpx;
|
||
.item
|
||
{
|
||
line-height: 40rpx;
|
||
font-size: 24rpx;
|
||
color: #a1a1a1;
|
||
text-align: center;
|
||
}
|
||
}
|
||
.monthDateList
|
||
{
|
||
padding: 0 30rpx;
|
||
.item
|
||
{
|
||
margin-bottom: 10rpx;
|
||
width: calc(100%/7);
|
||
.date
|
||
{
|
||
background-color: #f8f8f8;
|
||
width: calc(100% - 10rpx);
|
||
line-height: 64rpx;
|
||
border-radius: 15rpx;
|
||
font-size: 24rpx;
|
||
font-weight: bold;
|
||
color: #333;
|
||
text-align: center;
|
||
}
|
||
.date.today
|
||
{
|
||
background-color: #FF7E1A;
|
||
color: white;
|
||
}
|
||
.date.inRange
|
||
{
|
||
background-color: #FFF2EB;
|
||
}
|
||
.date.notCurrentMonth
|
||
{
|
||
background-color: #fdfdfd;
|
||
color: #c3c3c3;
|
||
}
|
||
.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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</style>
|