sl-express/project-wl-siji-uniapp-vue3/pages/user/components/TaskData.vue
shuhongfan cf5ac25c14 init
2023-09-04 16:40:17 +08:00

107 lines
2.7 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 车辆信息 -->
<template>
<view class="taskData">
<!-- 日历模块 - 使用uni的日历重写 - start -->
<Calendar class="uni-calendar--hook" :selected="info.selected" :showMonth="false" @monthSwitch="monthSwitch" >
<!-- 任务栏数据展示 -->
<view class="taskCont">
<TaskInfo :title="false" :data="taskData" class="task" />
</view>
</Calendar>
<!-- 日历模块 - start -->
</view>
</template>
<script setup>
// 模块、接口导入
import { ref,reactive, onMounted } from 'vue';
import TaskInfo from './TaskInfo.vue'
import Calendar from './Calendar/components/uni-calendar/uni-calendar.vue'
// 请求API
import { getTaskData } from '@/pages/api/user.js';
// ------定义变量------
// 日历的展示数据
const info = reactive({
lunar: true,
range: true,
insert: false,
selected: []
})
const taskData = ref({})
// 生命周期
onMounted(()=>{
const date = getDate(new Date())
getTask({year: date.year, month: date.month});
// 配置任务日历展示订单数量的数据处理 - 等日历展示处理后添加数据
setTimeout(() => {
info.date = getDate(new Date(),-30).fullDate
info.startDate = getDate(new Date(),-60).fullDate
info.endDate = getDate(new Date(),30).fullDate
info.selected = info.selected
}, 1000)
})
// 获取任务数据
async function getTask(params){
await getTaskData(params)
.then(res => {
if (res.code == 200) {
const { data } = res
// 任务数据赋值
taskData.value = data
// 日历中任务数量显示数据处理
info.selected = data.dailyMileage.map((n)=>{
if (getDate(n.dateTime).fullDate != getDate(new Date()).fullDate){
return {date: getDate(n.dateTime).fullDate, info: n.mileage}
}
}).filter(n => n != undefined)
} else {
return uni.showToast({
title: data.msg,
duration: 1000,
icon: 'none'
});
}
})
.catch(err => {});
}
// 通过左右箭头(和确认)改变月份 从新请求数据
function monthSwitch(e) {
getTask(e)
}
// 日期处理
function getDate(date, AddDayCount = 0) {
if (!date) {
date = new Date()
}
if (typeof date !== 'object') {
date = date.replace(/-/g, '/')
}
const dd = new Date(date)
// 获取AddDayCount天后的日期
dd.setDate(dd.getDate() + AddDayCount)
const y = dd.getFullYear()
// 获取当前月份的日期不足10补0
const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1
// 获取当前几号不足10补0
const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate()
return {
fullDate: y + '-' + m + '-' + d,
year: y,
month: m,
date: d,
day: dd.getDay()
}
}
</script>
<style lang="scss" >
.taskCont{
position: relative;
margin-bottom: 40rpx;
.task{
top: 0;
border-radius: 0;
}
}
</style>