刘嘉炜
4 years ago
7 changed files with 414 additions and 4 deletions
-
5src/js/api.js
-
14src/pages.json
-
226src/pages/time_select/date/date.vue
-
107src/pages/time_select/month/month.vue
-
53src/pages/time_select/year/year.vue
-
11src/pages/turnover/turnover.vue
-
2src/pages/write_off/confirm/confirm.vue
@ -0,0 +1,226 @@ |
|||
<template> |
|||
<view class="time-date"> |
|||
<view class="td-day"> |
|||
<view>日</view> <view>一</view> |
|||
<view>二</view> <view>三</view> |
|||
<view>四</view> <view>五</view> |
|||
<view>六</view> |
|||
</view> |
|||
<view class="td-tip">仅保留最近半年日报数据</view> |
|||
<view class="td-list"> |
|||
<view class="tl-item" v-for="(e,i) in calendarData" :key="i"> |
|||
<view class="ti-title"><text>{{e.showMonth}}</text></view> |
|||
<view class="ti-list"> |
|||
<view class="tl-item" v-for="(item,k) in e.dateArr" :key="k"> |
|||
<view :class="[isSameDay(item.defineDate || '')?'active':'']" @click="timeChange(item.defineDate)"> |
|||
<view>{{item.showDate}}</view> |
|||
<view> |
|||
<text v-if="item.money>0">¥{{item.money}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import { API } from '../../../js/api' |
|||
import { servers } from '../../../js/server' |
|||
import util from '../../../utils/util' |
|||
export default { |
|||
data(){ |
|||
return { |
|||
recordInfo: {}, |
|||
calendarData: [], |
|||
curDay: '' |
|||
} |
|||
}, |
|||
computed: { |
|||
isSameDay(){ |
|||
let { curDay } = this; |
|||
return (date='')=>util.isSameDay(new Date(curDay.replace(/\-/,'/')).getTime(),new Date(date.replace(/\-/,'/')).getTime()) |
|||
} |
|||
}, |
|||
onLoad(options){ |
|||
this.curDay = options.date || '' |
|||
this.getRecord(); |
|||
// this.getDateArr({}); |
|||
}, |
|||
methods: { |
|||
timeChange(time){ |
|||
util.previousPageFunction({ |
|||
fnName: 'timeChange', |
|||
query: { |
|||
detail: { |
|||
value: time |
|||
} |
|||
} |
|||
}); |
|||
util.routeTo(); |
|||
}, |
|||
getMonthArr(serverArr){ |
|||
const TOTAL_MONTH = 6; // 需要加载月份数量 |
|||
let dateObj = new Date(); |
|||
let _curYear = dateObj.getFullYear(); |
|||
let _curMonth = dateObj.getMonth()+1; |
|||
let _monthArr = new Array(TOTAL_MONTH).fill(1).map((e,i)=>_curMonth-i); |
|||
let _calendarData = _monthArr.map(e=>{ |
|||
return { |
|||
showMonth: `${e > 0?util.formatNumber(e):util.formatNumber( 12 + e)}月`, |
|||
dateArr: this.getDateArr({ |
|||
year: e > 0 ? _curYear : _curYear-1, |
|||
month: e > 0 ? e : 12 + e, |
|||
serverArr: serverArr || [], |
|||
}) |
|||
} |
|||
}) |
|||
return _calendarData || []; |
|||
// this.calendarData = _calendarData; |
|||
}, |
|||
getCalendar({ |
|||
curYear, |
|||
monthArr, |
|||
}){ |
|||
return monthArr.map((e,i)=>{ |
|||
|
|||
}) |
|||
}, |
|||
getDateArr({ |
|||
year = 2020, |
|||
month = 9, |
|||
serverArr = [], |
|||
}){ |
|||
let _dateAmount = new Date(year, month, 0).getDate(); // 当月天总数 |
|||
|
|||
let _dateArr = new Array(_dateAmount).fill(1).map((e,i)=>{ |
|||
let _obj = { |
|||
defineDate: `${year}-${util.formatNumber(month)}-${util.formatNumber(i+1)}`, |
|||
showDate: util.formatNumber(i+1), |
|||
money: 0 |
|||
} |
|||
|
|||
try{ // 后台金额赋值显示 |
|||
let _sameDayObj = serverArr.filter(ele=>{ |
|||
return util.isSameDay(new Date(_obj.defineDate.replace(/\-/g,'/')).getTime(), new Date(ele.date.replace(/\-/g,'/')).getTime()); |
|||
})[0] || {} |
|||
if(JSON.stringify(_sameDayObj)!='{}'&&_sameDayObj.amount !=0)_obj.money = _sameDayObj.amount; |
|||
}catch(err){console.warn(err)}; |
|||
|
|||
return _obj |
|||
}) |
|||
let _firstDay = new Date(_dateArr[0].defineDate).getDay(); // 填补首日星期空缺 |
|||
new Array(_firstDay).fill(1).forEach(e=>_dateArr.unshift({})); |
|||
|
|||
return _dateArr |
|||
}, |
|||
getRecord(){ |
|||
util.showLoad(); |
|||
servers.get({ |
|||
url: API.turnoverDay, |
|||
data: {}, |
|||
failMsg: '加载失败!', |
|||
}) |
|||
.then(e=>{ |
|||
this.recordInfo = e; |
|||
this.calendarData = this.getMonthArr(e || []); |
|||
this.$nextTick(util.hideLoad); |
|||
}) |
|||
.catch(util.hideLoad); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
@import "../../../style/public.scss"; |
|||
page{ |
|||
background-color: #fff; |
|||
} |
|||
.time-date{ |
|||
padding-top: 118upx; |
|||
} |
|||
.td-day{ |
|||
position: fixed; |
|||
left: 0; |
|||
top: 0; |
|||
width: 100%; |
|||
height: 64upx; |
|||
background-color: #f2f2f7; |
|||
@include centerFlex(center); |
|||
>view{ |
|||
flex-shrink: 0; |
|||
flex-grow: 1; |
|||
text-align: center; |
|||
line-height: 40upx; |
|||
font-size: 28upx; |
|||
color: #9c9c9f; |
|||
} |
|||
} |
|||
.td-tip{ |
|||
margin-bottom: 40upx; |
|||
text-align: center; |
|||
line-height: 40upx; |
|||
font-size: 28upx; |
|||
color: #9C9C9F; |
|||
} |
|||
.td-list{ |
|||
>.tl-item{ |
|||
margin-bottom: 68upx; |
|||
.ti-title{ |
|||
margin-bottom: 36upx; |
|||
@include centerFlex(center); |
|||
>text{ |
|||
margin: 0 30upx; |
|||
font-size: 32upx; |
|||
font-weight: 500; |
|||
color: #1a1a1a; |
|||
} |
|||
&::before,&::after{ |
|||
content: ''; |
|||
display: block; |
|||
width: 120upx; |
|||
height: 2upx; |
|||
background-color: #d8d8d8; |
|||
} |
|||
} |
|||
.ti-list{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
.tl-item{ |
|||
padding: 0 2upx; |
|||
flex-shrink: 0; |
|||
height: 112upx; |
|||
width: 14.28%; |
|||
@include centerFlex(center); |
|||
>view{ |
|||
padding: 2upx 8upx; |
|||
border-radius: 10upx; |
|||
>view{ |
|||
text-align: center; |
|||
@include textHide(1); |
|||
&:first-child{ |
|||
line-height: 40upx; |
|||
font-weight: 500; |
|||
font-size: 28upx; |
|||
color: #1a1a1a; |
|||
} |
|||
&+view{ |
|||
height: 28upx; |
|||
line-height: 28upx; |
|||
font-size: 20upx; |
|||
color: #9c9c9f; |
|||
} |
|||
} |
|||
} |
|||
.active{ |
|||
background-color: #f2f2f7; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
} |
|||
</style> |
@ -0,0 +1,107 @@ |
|||
<template> |
|||
<view class="time-month"> |
|||
<view class="tm-tip">仅保留最近3年日报数据</view> |
|||
<view class="tm-data-list"> |
|||
<view class="tdl-item" v-for="k in 3" :key="k"> |
|||
<view class="ti-title"> |
|||
<text>2019年</text> |
|||
</view> |
|||
<view class="ti-list"> |
|||
<view class="tl-item" v-for="e in 10" :key="e"> |
|||
<view :class="[e==2?'active':'']"> |
|||
<view>9月</view> |
|||
<view>¥0.00</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
|
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
@import "../../../style/public.scss"; |
|||
page{ |
|||
background-color: #fff; |
|||
} |
|||
.time-month{ |
|||
.tm-tip{ |
|||
padding: 64upx 0 40upx; |
|||
text-align: center; |
|||
line-height: 40upx; |
|||
font-size: 28upx; |
|||
color: #9c9c9f; |
|||
} |
|||
.tm-data-list{ |
|||
.tdl-item{ |
|||
margin-bottom: 60upx; |
|||
.ti-title{ |
|||
margin-bottom: 20upx; |
|||
@include centerFlex(center); |
|||
>text{ |
|||
margin: 0 20upx; |
|||
line-height: 44upx; |
|||
font-size: 32upx; |
|||
font-weight: 500; |
|||
color: #1a1a1a; |
|||
} |
|||
&::before{ |
|||
content: ''; |
|||
display: block; |
|||
width: 120upx; |
|||
height: 2upx; |
|||
background-color: #d8d8d8; |
|||
} |
|||
&::after{ |
|||
content: ''; |
|||
display: block; |
|||
width: 120upx; |
|||
height: 2upx; |
|||
background-color: #d8d8d8; |
|||
} |
|||
} |
|||
} |
|||
.ti-list{ |
|||
padding: 0 40upx; |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
.tl-item{ |
|||
padding: 0 6upx; |
|||
height: 138upx; |
|||
width: 25%; |
|||
@include centerFlex(center); |
|||
>view{ |
|||
padding: 20upx; |
|||
padding-top: 10upx; |
|||
border-radius: 10upx; |
|||
>view{ |
|||
text-align: center; |
|||
max-width: 100%; |
|||
@include textHide(1); |
|||
&:first-child{ |
|||
margin-bottom: 2upx; |
|||
line-height: 40upx; |
|||
font-size: 28upx; |
|||
color: #1a1a1a; |
|||
} |
|||
&+view{ |
|||
font-size: 20upx; |
|||
line-height: 28upx; |
|||
color: #9c9c9f; |
|||
} |
|||
} |
|||
} |
|||
.active{ |
|||
background-color: #f2f2f7; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
Write
Preview
Loading…
Cancel
Save
Reference in new issue