365 lines
7.3 KiB
Vue

<template>
<view class="emergencyDisposal">
<view class="fixedheader">
<headers :showBack="true">
<view class="headerName">
智能巡检
</view>
<view class="right" @click="getScanCode()">
<image class="scancode" src="@/static/scancode.png" mode=""></image>
</view>
</headers>
</view>
<view class="problemOverview" :style="{ 'margin-top': (statusBarHeight+52) * 1.5 + 'rpx' }">
<view class="overFlex">
<view class="overLeft">任务统计</view>
<view class="overRight">{{nowTime}}</view>
</view>
<view class="problemData">
<view class="dataBox2 dataStyle">
<view class="num">{{taskStatus.notStart}}</view>
<view class="text">未开始</view>
</view>
<view class="dataBox1 dataStyle">
<view class="num">{{taskStatus.run}}</view>
<view class="text">进行中</view>
</view>
<view class="dataBox4 dataStyle">
<view class="num">{{taskStatus.overdue}}</view>
<view class="text">已逾期</view>
</view>
<view class="dataBox3 dataStyle">
<view class="num">{{taskStatus.complete}}</view>
<view class="text">已巡检</view>
</view>
</view>
</view>
<view class="commonModules">
<view class="overLeft">常用模块</view>
<view class="modulesList">
<view class="menu" v-if="inspection" @click="jumpPage('inspectionPointList')">
<image class="icon primary" src="@/static/icon/inspection_point.png"></image>
<view>巡检点</view>
</view>
<view class="menu" v-if="routeManage" @click="jumpPage('inspectionPlan')">
<image class="icon success" src="@/static/icon/inspection_plan.png"></image>
<view>巡检计划</view>
</view>
<view class="menu" @click="jumpPage('inspectedstay')">
<image class="icon wraning" src="@/static/icon/inspection_task.png">
</image>
<view>我的任务</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
statusBarHeight: 0,
nowTime: '',
dataList: [],
taskStatus: {
complete: 0,
notStart: 0,
overdue: 0,
run: 0
},
inspection: false,
routeManage: false
}
},
onLoad(option) {
this.getGoId = option.id;
},
mounted() {
this.getTime();
},
onShow() {
this.inspection = this.checkMenuPermission({menuPath: '/project/inspecPoint/inspection'})
this.routeManage = this.checkMenuPermission({menuPath: '/project/inspectRoute/routeManage'})
this.statusBarHeight = uni.getStorageSync('systemInfo').statusBarHeight;
this.getData()
},
methods: {
//实时时间
getTime() {
this.timer = setInterval(() => {
let timeDate = new Date()
let year = timeDate.getFullYear()
let mounth = timeDate.getMonth() + 1
let day = timeDate.getDate()
let hours = timeDate.getHours()
hours = hours >= 10 ? hours : '0' + hours
let minutes = timeDate.getMinutes()
minutes = minutes >= 10 ? minutes : '0' + minutes
let seconds = timeDate.getSeconds()
seconds = seconds >= 10 ? seconds : '0' + seconds
let week = timeDate.getDay()
let weekArr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
this.nowTime = `${year}-${mounth}-${day} ${hours}:${minutes}:${seconds}`
}, 1000)
},
getData() {
this.sendRequest({
url: 'xmgl/xzCheckingRouteTask/countMyTaskInspectStatus',
method: 'post',
success: res => {
console.info(res,'res')
if (res.code == 200) {
this.taskStatus = res.result;
}
}
})
},
jumpPage(page) {
uni.navigateTo({
url: `/pages/projectEnd/InspectionRoute/${page}`
})
},
getScanCode() {
const that = this;
uni.scanCode({
scanType: ['qrCode'],
success: function(res) {
console.log('扫一扫得到的数据:' + res.result)
uni.navigateTo({
url: `${res.result}`
})
}
})
},
}
}
</script>
<style lang="scss" scoped>
.emergencyDisposal {
height: 100%;
overflow: hidden;
}
.fixedheader {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 2;
:deep(.headerBox ){
background: #2b8df3;
color: #fff;
}
:deep( .right ){
font-size: 24rpx;
position: absolute;
right: 20rpx;
top: 50%;
z-index: 4;
transform: translateY(-50%);
.scancode {
width: 56rpx;
height: 56rpx;
}
}
}
.noData {
text-align: center;
font-size: 32rpx;
margin-top: 240rpx;
color: #bed0fb;
}
.noDataImg {
width: 250rpx;
height: 196rpx;
}
.problemOverview {
// height: 33%;
// box-sizing: border-box;
border-radius: 20rpx;
// border: 3px solid #fafbfc;
margin: 0 2% 11% 2%;
padding: 3% 3%;
.overFlex {
display: flex;
justify-content: space-between;
align-items: center;
.overRight {
// float: right;
font-size: 24rpx;
color: gray;
margin: 6rpx 0;
}
}
.problemData {
margin-top: 4%;
display: flex;
background: linear-gradient(180deg, #FCF2D6 0%, #FFFFFF 50%);
box-shadow: 0 8rpx 16rpx 0 rgba(219, 229, 255, 0.6);
border-radius: 10rpx;
.dataStyle {
width: 300rpx;
// height: 180rpx;
text-align: center;
margin: 24rpx 0;
}
.dataStyle:not(:last-child) {
border-right: 2rpx solid #FFD356;
}
.dataBox1 {
// background: #ebf1ff;
border-top-left-radius: 10rpx;
border-bottom-left-radius: 10rpx;
.day {
font-size: 24rpx;
color: #3a7bff;
margin-top: 20rpx;
}
.num {
font-size: 40rpx;
font-weight: bold;
color: #3a7bff;
margin-top: 10rpx;
}
.text {
font-size: 24rpx;
font-weight: bold;
margin-top: 10rpx;
}
}
.dataBox2 {
// background: #fcebec;
.day {
font-size: 24rpx;
color: #ea3941;
margin-top: 20rpx;
}
.num {
font-size: 40rpx;
font-weight: bold;
color: #ea3941;
margin-top: 10rpx;
}
.text {
font-size: 24rpx;
font-weight: 600;
margin-top: 10rpx;
}
}
.dataBox3 {
// background: #eef9f6;
.day {
font-size: 24rpx;
color: #5ecba7;
margin-top: 20rpx;
}
.num {
font-size: 40rpx;
font-weight: bold;
color: #5ecba7;
margin-top: 10rpx;
}
.text {
font-size: 24rpx;
font-weight: 600;
margin-top: 10rpx;
}
}
.dataBox4 {
// background: #fff4e7;
border-top-right-radius: 10rpx;
border-bottom-right-radius: 10rpx;
.day {
font-size: 24rpx;
color: #ff9810;
margin-top: 20rpx;
}
.num {
font-size: 40rpx;
font-weight: bold;
color: #ff9810;
margin-top: 10rpx;
}
.text {
font-size: 24rpx;
font-weight: 600;
margin-top: 10rpx;
}
}
}
}
.commonModules {
height: 66%;
margin: -10% 2%;
padding: 3% 3%;
.modulesList {
margin-top: 15%;
display: grid;
grid-gap: 40rpx;
grid-template-columns: repeat(3, 1fr);
.menu {
text-align: center;
font-size: 28rpx;
}
.icon {
width: 60rpx;
height: 60rpx;
padding: 6px;
line-height: 40rpx;
border-radius: 16rpx;
&.primary {
background-color: rgba(0, 119, 250, 1);
}
&.success {
background-color: rgba(80, 175, 177, 1);
}
&.wraning {
background-color: rgba(233, 157, 66, 1);
}
}
}
}
.overLeft {
// float: left;
color: #000;
font-weight: bold;
font-size: 34rpx;
}
</style>