Commit 684a566a by xiexiaoqin

rename sheduleList to index

parent 8be7797f
{ {
"pages": [ "pages": [
"pages/scheduleList/scheduleList", "pages/index/index",
"pages/meetingRoomList/meetingRoomList", "pages/meetingRoomList/meetingRoomList",
"pages/bindingOutlook/bindingOutlook", "pages/bindingOutlook/bindingOutlook",
"pages/meetingDetail/meetingDetail", "pages/meetingDetail/meetingDetail",
...@@ -17,4 +17,4 @@ ...@@ -17,4 +17,4 @@
"window": { "window": {
"allowsBounceVertical": "YES" "allowsBounceVertical": "YES"
} }
} }
\ No newline at end of file
@import "../../template/loading/loading.acss";
@import "../../template/affairBlank/index.acss";
@import "../../template/fullScreen/fullScreen.acss";
.dynamicBox {
width: 100%;
overflow: hidden;
box-sizing: border-box;
padding-bottom: 120rpx;
height: 100vh;
}
.dynamicList {
width: 100%;
}
.dynamicDetails {
background: #FFFFFF;
border-radius: 16rpx;
width: 702rpx;
margin: 24rpx 24rpx 0px 24rpx;
padding: 32rpx 24rpx 24rpx 24rpx;
box-sizing: border-box;
}
.meetingtitle {
font-family: PingFangSC-Medium;
font-size: 34rpx;
color: #1B263D;
line-height: 34rpx;
margin-bottom: 24rpx;
display: flex;
justify-content: space-between;
align-items: center;
}
.userDynamic {
margin-bottom: 34rpx;
}
.dynamicDetails .userDynamic:nth-last-child(1) {
margin-bottom: 0;
}
.dynamicTime {
margin-bottom: 24rpx;
}
.dynamicTime text:nth-of-type(1) {
opacity: 0.56;
font-size: 26rpx;
color: #1B263D;
letter-spacing: 0;
line-height: 28rpx;
margin-right: 16rpx;
}
.dynamicTime text:nth-of-type(2) {
font-size: 24rpx;
color: rgba(25, 31, 37, 0.40);
line-height: 24rpx;
}
.placedTop {
width: 84rpx;
height: 84rpx;
background: #FFFFFF;
border-radius: 50%;
margin-left: 24rpx;
text-align: center;
line-height: 84rpx;
}
.dynamicContent {
display: flex;
align-items: center;
width: 906rpx;
}
.isMove {
transform: translateX(-156rpx);
transition: all 150ms linear 0s;
}
.placedTop .iconicon_top1 {
font-size: 48rpx;
color: rgb(234, 12, 40);
}
.placedTop .isTopIcon {
color: rgba(10, 10, 10, 0.72);
}
.noDate {
position: fixed;
left: 0;
top: 0;
background: #FFFFFF;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
.scroll-lock {
height: 100%;
overflow-y: hidden;
position: fixed;
top: 0;
left: 0;
bottom: 0;
}
.icon-color {
opacity: 0.4;
}
.index {
background: #FFFFFF;
}
.scheduleHeader {
width: 100%;
height: 88rpx;
background: #FFFFFF;
line-height: 88rpx;
padding: 0 32rpx;
display: flex;
justify-content: space-between;
box-shadow: 0 2rpx 10rpx 3rpx rgba(0, 0, 0, 0.04);
z-index: 9;
position: relative;
}
.scheduleHeader view:nth-of-type(1) {
flex: 1;
color: rgba(10, 10, 10, 1);
font-size: 40rpx;
font-weight: bold;
}
.scheduleHeader view:nth-of-type(2) {
width: 40rpx;
height: 40rpx;
}
.headerIcon {
position: relative;
}
.headerIcon>view {
position: absolute;
left: 28rpx;
top: 52rpx;
width: 12rpx;
height: 12rpx;
border: 2rpx solid #FFFFFF;
border-radius: 50%;
background: #EA0C28;
}
.headerIcon .iconicon_app1 {
font-size: 44rpx;
color: rgba(27, 38, 61, 0.4);
}
.year, .month, .week, .date {
height: 96rpx;
font-size: 48rpx;
}
.year, .month, .week {
line-height: 96rpx;
padding-left: 32rpx;
}
.year, .month {
font-weight: bold;
font-family: 'DINAlternate-Bold';
}
.week {
font-size: 26rpx;
color: rgba(25, 31, 37, 0.39);
padding-left: 120rpx;
}
.date {
display: flex;
padding: 0 32rpx 0 0;
margin-bottom: 32rpx;
}
.today {
border-left: 8rpx solid rgba(234, 12, 40, 1);
}
.todayNoData {
height: 96rpx;
line-height: 96rpx;
padding-left: 16rpx;
font-size: 28rpx;
color: rgba(25, 31, 37, 0.39);
}
.todayNoData text:nth-of-type(2) {
color: rgba(25, 31, 37, 0.39);
}
.todayNoData text:nth-of-type(2) {
color: #191F25;
}
.overdue {
background: rgba(10, 10, 10, .034) !important;
color: rgba(10, 10, 10, .353) !important;
}
.overdue text {
color: rgba(10, 10, 10, .353) !important;
}
.overdueLabel {
color: rgba(10, 10, 10, .353) !important;
}
.cancel {
background: url(../../assests/cancel.png) center /100% 100% !important;
border: 1rpx solid rgba(97, 155, 212, 0.28) !important;
color: rgba(25, 31, 37, 0.56) !important;
}
.cancel text {
text-decoration: line-through;
}
.hasDateTitle {
display: flex;
align-items: center;
justify-content: center;
height: 96rpx;
width: 112rpx;
flex-direction: column;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
padding-top: 6rpx;
}
.hasDateTitle view:nth-of-type(1) {
font-size: 24rpx;
}
.hasDateTitle view:nth-of-type(2) {
font-size: 48rpx;
}
.scheduleBox {
flex: 1;
height: 96rpx;
padding: 16rpx;
background: rgba(10, 10, 10, 0.05);
border-radius: 4px;
}
.scheduleTitle {
font-weight: 500;
color: rgba(10, 10, 10, .72);
font-size: 28rpx;
margin-bottom: 10rpx;
line-height: 28rpx;
}
.scheduleTime {
font-size: 26rpx;
font-weight: 400;
color: rgba(10, 10, 10, .72);
line-height: 26rpx;
}
.cancel {
width: 602rpx;
overflow: hidden;
background: url(../../assests/cancel.png) center /100% 100%;
border: 1rpx solid rgba(25, 31, 37, 0.28);
color: rgba(25, 31, 37, 0.56);
}
.indexScrollView {
height: calc( 100vh - 88rpx);
background: #Fff;
}
.tabBarContent {
width: 100%;
position: fixed;
left: 0;
bottom: 0;
}
.tabBar {
height: 120rpx;
width: 100%;
background: url('../../assests/tabBarBg.png');
background-size: cover;
display: flex;
padding-top: 4rpx;
/* box-shadow: 0 -4rpx 8rpx 0 rgba(0,0,0,0.04);
border-radius: 0 64rpx 0 64rpx 0 0 0; */
}
.tabBar>view {
flex: 1;
font-size: 28rpx;
}
.tabBar>view:nth-of-type(1) {
text-align: left;
}
.tabBar>view:nth-of-type(2) {
text-align: right;
}
.createMeeting {
position: absolute;
left: 50%;
top: 8rpx;
font-size: 32rpx;
border-radius: 50%;
height: 84rpx;
width: 84rpx;
background: #EA0C28;
box-shadow: 0 4px 7px 0 rgba(234, 12, 40, 0.30);
margin-left: -42rpx;
color: #FFFFFF;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.createMeeting .iconfont {
font-size: 34rpx;
display: block
}
.tabBarView {
display: flex;
flex-direction: column;
height: 116rpx;
justify-content: center;
}
.tabBarView1 {
padding-left: 140rpx;
align-items: flex-start;
}
.tabBarView2 {
padding-right: 140rpx;
align-items: flex-end;
}
.tabBarView>view {
display: block;
color: rgba(10, 10, 10, .4)
}
.tabBarView>view:nth-of-type(1) {
width: 42rpx;
height: 42rpx;
font-size: 42rpx;
margin-bottom: 11rpx;
}
.tabBarView>view:nth-of-type(2) {
height: 10rpx;
font-size: 20rpx;
}
.ischooseTabBar>view {
color: rgba(10, 10, 10, 1) !important;
}
.iconicon_Calendarbox1 {
position: relative;
}
.iconicon_days {
position: absolute;
left: 7rpx;
top: 10rpx;
font-size: 27rpx;
}
.tabBarView .iconicon_days {
color: #FFFFFF !important;
}
\ No newline at end of file
<import src="../../template/loading/loading.axml"/>
<import src="../../template/fullScreen/fullScreen.axml"/>
<view hidden="{{$data.tabBarIndex === '1'}}">
<import src="../../template/affairBlank/index.axml"/>
<view class="{{isStopBodyScroll ? 'scroll-lock' : ''}}" onTap="closeSwipe" onTouchStart="closeSwipe" onTouchMove="closeSwipe" onTouchEnd="closeSwipe">
<block a:if="{{!listLoading}}">
<scroll-view a:if="{{dynamicList.length > 0}}" scroll-y="{{true}}" lower-threshold="{{400}}" class="dynamicBox" onScrollToLower="onScrollToLower">
<view class="dynamicList">
<swipe onSetBodyDisableScroll="setBodyDisableScroll" rightWidth="{{ 78 }}" leftWidth="{{ 0 }}" a:for="{{dynamicList}}" class="dynamicContent" key="{{item.scheduleId}}">
<view class="dynamicDetails">
<view class="meetingtitle" catchTap="nextDetail" data-item="{{item}}">
<view>
{{item.title}}
</view>
<view>
<text a:if="{{item.traceTime !== traceTime}}" class="iconfont iconicon_top1 icon-color"></text>
</view>
</view>
<block a:for="{{item.meetingLogDataList.slice(0,2)}}" a:for-item="dynamicItem" key="{{item.id}}">
<view class="userDynamic">
<view class="dynamicTime" catchTap="nextDetail" data-item="{{dynamicItem}}">
<text>{{dynamicItem.content}}</text>
<text>{{dynamicItem.createTime}}</text>
</view>
<file-list a:if="{{dynamicItem.category === '2'}}" fileView="{{dynamicItem.meetingLogResource}}" isCanEdit="{{false}}"/>
<view class="dynamicFile" a:if="{{dynamicItem.category === '3'}}">
<task-list onChangeTaskStatusOnList="onChangeTaskStatusOnList" taskList="{{[dynamicItem.meetingLogResource]}}" isCanEdit="{{false}}"/>
</view>
</view>
</block>
</view>
<view slot="right" class="placedTop" onTap="changeCollection" data-scheduleId="{{item.scheduleId}}" data-index="{{index}}" data-collection="{{item.traceTime === traceTime ? 'Y':'N'}}">
<text class="iconfont iconicon_top1 {{item.traceTime === traceTime ? '': 'isTopIcon'}}"></text>
</view>
</swipe>
</view>
</scroll-view>
<view class="noDate" a:else>
<template is="affair-placeholder" data="{{title: '展示安排的所有动态', tip: '实时同步所有事件的最新动态,便于随时处理工作内容'}}"/>
</view>
</block>
<template is="loading" a:else>
</template>
</view>
</view>
<view hidden="{{$data.tabBarIndex === '0'}}">
<view a:if="{{!loading}}">
<view class="scheduleHeader">
<view>{{currentData.split('/')[0]}}年{{currentData.split('/')[1] || '1'}}月</view>
<view onTap="changesidebar" class="headerIcon">
<text class="iconfont iconicon_app1">
</text>
<view>
</view>
</view>
</view>
<scroll-view class="indexScrollView" scroll-y="{{true}}" onScroll="scroll" lower-threshold="{{400}}" onScrollToLower="lower" scroll-into-view="{{todayStr}}">
<block a:for="{{scheduleList}}" key="{{item.dateStr}}">
<!-- 年 -->
<block a:if="{{item.type == 'year'}}">
<view class="year li" id="{{item.dateStr}}">
{{item.value}}年
</view>
</block>
<!-- 月 -->
<block a:elif="{{item.type == 'month'}}">
<view class="month li" id="{{item.dateStr}}">
{{item.value}}月
</view>
</block>
<!-- 周 -->
<block a:elif="{{item.type == 'week'}}">
<view class="week li" id="{{item.dateStr}}">
{{item.value}}
</view>
</block>
<!-- 天 -->
<block a:elif="{{item.type == 'day' || item.type == 'today'}}">
<view class="date li" id="{{ item.dateStr}}">
<view class="hasDateTitle {{item.type == 'today' && item.hasDateLabel ? 'today' : ''}} {{item.value.isBeOverdue ? 'overdueLabel':''}}">
<view>
{{item.week}}
</view>
<view>{{item.hasDateLabel}}</view>
</view>
<view class="scheduleBox {{item.value.isBeOverdue ? 'overdue' : item.value.confirmAttendance === 0 ? 'cancel' : ''}}" data-item="{{item.value}}" onTap="nextDetail">
<view class="scheduleTitle">
<text>{{item.value.title}}{{item.value.isDaySpan ? `(第${item.value.isFewDays}天,共${item.value.duration}天)` : '' }}</text>
</view>
<view class="scheduleTime">
<text a:if="{{item.value.isDaySpan && item.value.isfirstDayOrEndDay === '0'}}">{{item.value.thisDayStartTime}}</text>
<text a:elif="{{item.value.isDaySpan && item.value.isfirstDayOrEndDay === '1'}}">全天</text>
<text a:elif="{{item.value.isDaySpan && item.value.isfirstDayOrEndDay === '2'}}">直到{{item.value.thisDayEndTime}}</text>
<text a:else>{{item.value.thisDayStartTime}} - {{item.value.thisDayEndTime}}</text>
</view>
</view>
</view>
</block>
<!-- 今天有无会议 -->
<block a:elif="{{item.type == 'thisday'}}">
<view class="date li" id="{{item.dateStr}}">
<view class="hasDateTitle today">
<view>
{{item.week}}
</view>
<view>{{item.hasDateLabel}}</view>
</view>
<view class="todayNoData">
<text>暂无日程安排,</text>
<text onTap="createMeeting">创建日程</text>
</view>
</view>
</block>
</block>
</scroll-view>
<popup show="{{show}}" onClose="closePop" position="left">
<related-app/>
</popup>
</view>
<template is="loading" a:else>
</template>
</view>
<view class="tabBarContent">
<view class="tabBar">
<view onTap="changeTabBar" data-tabbar='0' data-title='动态'>
<view class="tabBarView tabBarView1 {{$data.tabBarIndex === '0' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_dynamic"></view>
<view>动态</view>
</view>
</view>
<view onTap="changeTabBar" data-tabbar='1' data-title='日程'>
<view class="tabBarView tabBarView2 {{$data.tabBarIndex === '1' ? 'ischooseTabBar' : ''}}">
<view class="iconfont iconicon_Calendarbox1">
<text a:if="{{offset == 'before'}}" class="iconfont iconicon_days iconicon_open">
</text>
<text a:elif="{{offset == 'next'}}" class="iconfont iconicon_days iconicon_Packup">
</text>
<text a:else class="iconfont iconicon_days iconicon_days{{iconDay}}">
</text>
</view>
<view>日程</view>
</view>
</view>
<view class="createMeeting" onTap="createMeeting">
<text class="iconfont iconicon_add1"></text>
</view>
</view>
<template is="fullScreen" data="{{isIPX:isFullscreen}}" />
</view>
\ No newline at end of file
{
"allowsBounceVertical": "YES",
"pullRefresh": true,
"usingComponents": {
"task-list": "../../components/taskList/taskList",
"file-list": "../../components/fileList/fileList",
"swipe": "../../components/swipe/swipe",
"popup": "../../components/popup/index",
"related-app": "../../components/relatedApp/relatedApp"
}
}
\ No newline at end of file
export function getDateMap(minYear, maxYear) {
const DateMap = new Map();
const getOneYear = (year) => {
const yearDays = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 ? 366 : 365;
for (let i = 1; i <= yearDays; i++) {
DateMap.set(toLocaleDateString(new Date(year, 0, i)), []);
}
}
for (let i = minYear; i <= maxYear; i++) {
getOneYear(i);
}
return DateMap
}
// 返回删除的日期
/**
* 如果删除单次重复会议返回['2020-04-20'],
* 如果删除此次及以后重复会议返回['future2020-04-20']
*/
export function getExcludeDate(data = []) {
const excludeDateList = [];
const futureList = [];
data.forEach(item => {
//删除此次及以后
if (item.length > 10) {
futureList.push(new Date(item.slice(6, 16).replace(/-/g, "/")).getTime());
}
//删除单次
else {
excludeDateList.push(item);
}
});
return {
excludeDateList,
minFutureTime: Math.min(...futureList)
};
}
// 返回跨天数
export function getNextDateList(startTime, endTime) {
let days = 0;
const nextDateList = [];
if (startTime.getDate() !== endTime.getDate()) {
//同一个月
if (startTime.getMonth() == endTime.getMonth()) {
days = endTime.getDate() - startTime.getDate();
}
//跨月
else {
// 一个月份有多少天new Date(year, month, 0).getDate()
const startMonth = new Date(startTime.getFullYear(), startTime.getMonth(), 0).getDate();
days = startMonth - startTime.getDate() + endTime.getDate()
}
} else {
//跨一个月 不考虑
}
//返回跨天的日期数组
for (let i = 0; i <= days; i++) {
const newDate = new Date(startTime);
const nextDate = toLocaleDateString(new Date(newDate.setDate(newDate.getDate() + i)));
nextDateList.push(nextDate)
}
return nextDateList
}
export function getWeekNumber(year, month, days) {
const isLeapYear = (year) => (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)
const getMonthDays = (year, month) => [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
//那一天是那一年中的第多少天
for (var i = 0; i < month; i++) {
days += getMonthDays(year, i);
}
//那一年第一天是星期几
var yearFirstDay = new Date(year, 0, 1).getDay();
var week = null;
if (yearFirstDay == 0) {
week = Math.ceil(days / 7);
} else {
days -= (6 - yearFirstDay + 1);
week = Math.ceil(days / 7);
}
return week;
}
export function getBlankList(year) {
const dateMap = getDateMap(year, year);
const DateList = [];
dateMap.forEach(function (value, key) {
const keyDate = new Date(key);
const year = keyDate.getFullYear();
const month = keyDate.getMonth();
const date = keyDate.getDate();
const day = keyDate.getDay();
// 生成年
if (month === 0 && date === 1) {
DateList.push({
type: "year",
value: year,
dateStr: `${year}`
});
}
//生成月
if (date === 1) {
DateList.push({
type: "month",
value: month + 1,
dateStr: `${year}/${month + 1}`
});
}
//生成周
if (day === 0) {
const rangeDate = new Date(year, month, date + 6);
const rangeMonth2 = new Date(rangeDate).getMonth();
const rangeDay2 = new Date(rangeDate).getDate();
DateList.push({
type: "week",
value: `第${getWeekNumber(year, month, date)}周,${month + 1}${date}日 - ${
rangeMonth2 == month ? "" : rangeMonth2 + 1 + "月"
}${rangeDay2}日`,
dateStr: `${year}/${month + 1}/${date}-week`
});
}
})
return DateList;
}
export function toLocaleDateString(date) {
if (typeof date === 'string') {
date = new Date(date)
}
return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment