|
@@ -0,0 +1,2179 @@
|
|
|
|
+<template>
|
|
|
|
+ <view>
|
|
|
|
+ <u-navbar v-show="false" title="首页" title-color="#101010"></u-navbar>
|
|
|
|
+
|
|
|
|
+ <u-picker v-model="body2data.vue.show" :params="body2data.vue.params" :default-time="body2data.query.startTime"
|
|
|
|
+ @confirm="body2dataconfirm" mode="time"></u-picker>
|
|
|
|
+
|
|
|
|
+ <!-- <u-picker v-model="body5data.vue.show" :default-time="body5data.query.queryDate" :params="body5data.vue.params"
|
|
|
|
+ @confirm="body5dataconfirm" mode="time"></u-picker> -->
|
|
|
|
+
|
|
|
|
+ <u-calendar v-model="body5data.vue.show" mode="date" @change="body5dataconfirm"></u-calendar>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <view class="navbar">
|
|
|
|
+ 智泊e家 运管端
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <view class="tabs-box">
|
|
|
|
+
|
|
|
|
+ <u-picker-jp v-model="showselect1" range-key="name" :num="3" @confirm="showselect1confirm"
|
|
|
|
+ :range="companyList"></u-picker-jp>
|
|
|
|
+
|
|
|
|
+ <template v-if="companyListTabs.length>2">
|
|
|
|
+ <u-tabs ref="tabs" :list="companyListTabs" bg-color="#1677ff" :current="current1" inactive-color="#fff"
|
|
|
|
+ @change="utabsChange1" item-width="180" height="70" gutter="10" active-color="#fff"></u-tabs>
|
|
|
|
+ <view class="tabs-box-other" v-if="companyList.length>3" @click="utabsChange1other">
|
|
|
|
+ 更多
|
|
|
|
+ </view>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="main">
|
|
|
|
+
|
|
|
|
+ <u-picker-jp v-model="showselect2" range-key="name" :num='3' @confirm="showselect2confirm"
|
|
|
|
+ :range="parkingList"></u-picker-jp>
|
|
|
|
+
|
|
|
|
+ <view class="tabs-box2" v-show="parkingListTabs.length>2">
|
|
|
|
+ <u-tabs ref="tabs2" gutter="10" :list="parkingListTabs" :current="current2" @change="utabsChange2"
|
|
|
|
+ item-width="180" bg-color="#f2f4f6" height="70"></u-tabs>
|
|
|
|
+ <view v-if="parkingList.length>3" class="tabs-box-other" @click="utabsChange2other">
|
|
|
|
+ 更多
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics ">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ 综合统计
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body1">
|
|
|
|
+ <view class="body1pie-table">
|
|
|
|
+ <view class="tr">
|
|
|
|
+ <view class="td td1">
|
|
|
|
+ <view id="body1pie1" class="body1pie">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td2">
|
|
|
|
+ <view class="td td3">
|
|
|
|
+ <view class="td td4">空闲<span
|
|
|
|
+ class="body1pie-num color53B56B">{{body1data.data.idleNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td4">占用<span
|
|
|
|
+ class="body1pie-num colorAAAAAA">{{body1data.data.useNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td3">
|
|
|
|
+
|
|
|
|
+ <view class="td td4">公共地锁<span
|
|
|
|
+ class="body1pie-num colorEF8132">{{body1data.data.publicNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td4">私家地锁<span
|
|
|
|
+ class="body1pie-num colorDC4441">{{body1data.data.privateNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="tr">
|
|
|
|
+ <view class="td td1">
|
|
|
|
+ <view id="body1pie2" class="body1pie">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td2">
|
|
|
|
+ <view class="td td3">
|
|
|
|
+
|
|
|
|
+ <view class="td td4">正常<span
|
|
|
|
+ class="body1pie-num color53B56B">{{body1data.data.normalNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td4">离线<span
|
|
|
|
+ class="body1pie-num colorAAAAAA">{{body1data.data.loseNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td3">
|
|
|
|
+
|
|
|
|
+ <view class="td td4">故障<span
|
|
|
|
+ class="body1pie-num colorEF8132">{{body1data.data.errorNum}}</span>台
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td4" v-if="0">低电量<span
|
|
|
|
+ class="body1pie-num colorDC4441">5</span>台</view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="tr" v-if="0">
|
|
|
|
+ <view class="td td1">
|
|
|
|
+ <view id="body1pie3" class="body1pie">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td2">
|
|
|
|
+ <view class="td td3">
|
|
|
|
+
|
|
|
|
+ <view class="td td4">管理员<span class="body1pie-num color307AF6">5</span>人</view>
|
|
|
|
+ <view class="td td4">白名单<span class="body1pie-num color53B56B">5</span>人</view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="td td3">
|
|
|
|
+
|
|
|
|
+ <view class="td td4">游客<span class="body1pie-num colorEF8375">5</span>人次</view>
|
|
|
|
+ <view class="td td4"></view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics " v-show="1||companyId">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>地锁列表</view>
|
|
|
|
+
|
|
|
|
+ <view class="check-all" @click="gotoDeviceList()">查看全部<u-icon name="arrow-right"></u-icon>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body7">
|
|
|
|
+ <view class="body7main">
|
|
|
|
+ <view class="line" v-for="(item,index) in equipmentList"
|
|
|
|
+ @click="gotoUrl('/pages/deviceTab/dataLock?id='+item.id)" :key="index">
|
|
|
|
+ <view class="item">
|
|
|
|
+ <!--
|
|
|
|
+ -->
|
|
|
|
+ <view class="item-title">
|
|
|
|
+
|
|
|
|
+ <view class="item-name">
|
|
|
|
+ {{item.name}}
|
|
|
|
+ </view>
|
|
|
|
+ <view class="item-tags">
|
|
|
|
+ <view class="tag " :class="'tag'+item.type">
|
|
|
|
+ {{item.typeN}}
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="tag" :class="'lockStatus lockStatus'+item.lockStatus">
|
|
|
|
+ {{item.lockStatusN}}
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="item-body">
|
|
|
|
+ <span>编号:{{item.lockNo}}</span> <span v-if="item.batteryLevel" style=" margin-left: 16rpx;">电压:{{item.batteryLevel}}V</span>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <view class="goto">
|
|
|
|
+ <view :class="'statusN statusN'+item.status">
|
|
|
|
+ {{item.status==1?'在线':'离线'}}
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <u-divider border-color="#CFD2D5" @click="gotoDeviceList()"
|
|
|
|
+ v-if="equipmentList.length==10">最多显示10条,点击查看更多</u-divider>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics " v-show="1||companyId">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>停车记录</view>
|
|
|
|
+
|
|
|
|
+ <view class="check-all" @click="gotoUrl('/pages/record/parkingRecord?compamyId='+companyId+'&parkingId='+parkingId)">查看全部<u-icon name="arrow-right"></u-icon>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body8">
|
|
|
|
+ <view class="body8main">
|
|
|
|
+ <view class="line" v-for="(item,index) in parkingRecord"
|
|
|
|
+ @click="gotoUrl('/pages/record/parkingInfo?id='+item.id)" :key="index">
|
|
|
|
+
|
|
|
|
+ <view class="data">
|
|
|
|
+
|
|
|
|
+ <view class="view3">
|
|
|
|
+ <u-icon name="clock"></u-icon>
|
|
|
|
+ {{showTime(item.startTime)}}
|
|
|
|
+ <template v-if="item.status!=0">
|
|
|
|
+ {{item.endTime?'-'+showTime(item.endTime):'-当前'}}
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <view class="view1">
|
|
|
|
+ {{item.parkingName}} {{item.lockName}}
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="goto " :class="'status'+item.status">
|
|
|
|
+ {{item.status==2?getTime(item):''}}
|
|
|
|
+ {{item.status==1?'使用中':''}}
|
|
|
|
+ {{item.status==0?'启动中':''}}
|
|
|
|
+
|
|
|
|
+ <u-icon name="arrow-right" size="24" style="margin-left: 8rpx;" color="#BBBBBB"></u-icon>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <u-divider border-color="#CFD2D5" @click="gotoUrl('/pages/record/parkingRecord?compamyId='+companyId+'&parkingId='+parkingId)"
|
|
|
|
+ v-if="parkingRecord.length==5">最多显示5条,点击查看更多</u-divider>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics ">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>时空矩阵图</view>
|
|
|
|
+
|
|
|
|
+ <view class="tag" @click="body5data.vue.show=true">{{body5data.vue.queryN}}<u-icon
|
|
|
|
+ name="arrow-down"></u-icon></view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body5">
|
|
|
|
+ <view class="body5main">
|
|
|
|
+
|
|
|
|
+ <view id="body5echart" class="body5class">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics " v-show="companyId">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>地锁异常记录</view>
|
|
|
|
+
|
|
|
|
+ <view class="check-all" @click="gotoUrl('/pages/myTab/abnormalList?companyId='+companyId)">
|
|
|
|
+ 查看全部<u-icon name="arrow-right"></u-icon></view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body6">
|
|
|
|
+ <view class="body6main">
|
|
|
|
+ <view class="line" v-for="(item,index) in abnormalRecordsList" :key="index">
|
|
|
|
+ <view class="abnormal-item">
|
|
|
|
+ <!-- @click="gotoUrl('/pages/abnormal/abnormalAlarmDetails?id='+item.id)"
|
|
|
|
+ -->
|
|
|
|
+ <view class="item-title">
|
|
|
|
+
|
|
|
|
+ <view class="name">
|
|
|
|
+ <span v-if="item.level==1" class="level level1 ">一级</span>
|
|
|
|
+ <span v-if="item.level==2" class="level level2">二级</span>
|
|
|
|
+
|
|
|
|
+ {{item.content}}
|
|
|
|
+ </view>
|
|
|
|
+ <view class="date"
|
|
|
|
+ style="display: flex; justify-content: space-between;margin-top: 4rpx;">
|
|
|
|
+ <view>{{item.title}}</view>
|
|
|
|
+ <view>{{item.createTime}}</view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <u-icon name="arrow-right" size="24" color="#BBBBBB"></u-icon>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics ">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>地锁平均占用率(%)</view>
|
|
|
|
+ <view class="tag" @click="body2data.vue.show=true">{{body2data.vue.queryN}}<u-icon
|
|
|
|
+ name="arrow-down"></u-icon></view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body2">
|
|
|
|
+ <view class="body2lineChart">
|
|
|
|
+
|
|
|
|
+ <view id="body2line1" class="body2line">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics ">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>高频使用时段分布</view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body3">
|
|
|
|
+ <view class="body3barChart">
|
|
|
|
+
|
|
|
|
+ <view id="body3bar1" class="body3bar">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="statistics ">
|
|
|
|
+ <view class="title">
|
|
|
|
+ <view class="icon">
|
|
|
|
+ <image class="img" src="@/assets/img/circleCopy1@1x.png" mode=""></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="text">
|
|
|
|
+ <view>用户停留时长分群特征</view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="contentBody">
|
|
|
|
+ <jpContent :status="jpContentMap.body4">
|
|
|
|
+ <view class="body4pieChart">
|
|
|
|
+
|
|
|
|
+ <view id="body4pie1" class="body4pie">
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </jpContent>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <u-divider border-color="#CFD2D5">已经到底了</u-divider>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ <tabbar :current="0"></tabbar>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+</template>
|
|
|
|
+
|
|
|
|
+<script>
|
|
|
|
+ import Tabbar from '@/components/Tabbar.vue'
|
|
|
|
+ import jpContent from '@/components/JPcontent.vue'
|
|
|
|
+ import * as echarts from 'echarts';
|
|
|
|
+
|
|
|
|
+ import * as API from '@/apis/pagejs/index.js'
|
|
|
|
+
|
|
|
|
+ import {
|
|
|
|
+ parseUnixTime,
|
|
|
|
+ beforeTimeStamp,
|
|
|
|
+ newDate
|
|
|
|
+ } from '@/apis/utils'
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ export default {
|
|
|
|
+ components: {
|
|
|
|
+ Tabbar,
|
|
|
|
+ jpContent
|
|
|
|
+ },
|
|
|
|
+ data() {
|
|
|
|
+ return {
|
|
|
|
+ current1: 0,
|
|
|
|
+ showselect1: false,
|
|
|
|
+ current2: 0,
|
|
|
|
+ showselect2: false,
|
|
|
|
+ isReady: false,
|
|
|
|
+ companyList: [],
|
|
|
|
+ parkingList: [],
|
|
|
|
+ //companyListIndex:0,
|
|
|
|
+ companyId: "",
|
|
|
|
+ parkingId: "",
|
|
|
|
+ echartsList: {},
|
|
|
|
+ parkingRecord:[],
|
|
|
|
+ equipmentList: [],
|
|
|
|
+ abnormalRecordsList: [{
|
|
|
|
+ level: 1,
|
|
|
|
+ content: "1111111",
|
|
|
|
+ title: "11",
|
|
|
|
+ createTime: "123:123"
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ level: 2,
|
|
|
|
+ content: "1111111",
|
|
|
|
+ title: "11",
|
|
|
|
+ createTime: "123:123"
|
|
|
|
+ }
|
|
|
|
+ ],
|
|
|
|
+ body2data: {
|
|
|
|
+ query: {},
|
|
|
|
+ vue: {
|
|
|
|
+ queryN: "",
|
|
|
|
+ show: false,
|
|
|
|
+ params: {
|
|
|
|
+ year: true,
|
|
|
|
+ month: true,
|
|
|
|
+ day: false,
|
|
|
|
+ hour: false,
|
|
|
|
+ minute: false,
|
|
|
|
+ second: false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ data: {}
|
|
|
|
+ },
|
|
|
|
+ body1data: {
|
|
|
|
+ query: {},
|
|
|
|
+ data: {},
|
|
|
|
+ data1: {}
|
|
|
|
+ },
|
|
|
|
+ body4data: {
|
|
|
|
+ query: {},
|
|
|
|
+ data: {}
|
|
|
|
+ },
|
|
|
|
+ body3data: {
|
|
|
|
+ query: {},
|
|
|
|
+ data: {}
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ body5data: {
|
|
|
|
+ query: {},
|
|
|
|
+ data: {},
|
|
|
|
+ vue: {
|
|
|
|
+ queryN: "",
|
|
|
|
+ show: false,
|
|
|
|
+ params: {
|
|
|
|
+ year: true,
|
|
|
|
+ month: true,
|
|
|
|
+ day: true,
|
|
|
|
+ hour: false,
|
|
|
|
+ minute: false,
|
|
|
|
+ second: false
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ jpContentMap: {
|
|
|
|
+ body1: 0,
|
|
|
|
+ body2: 0,
|
|
|
|
+ body3: 0,
|
|
|
|
+ body4: 0,
|
|
|
|
+ body5: 0,
|
|
|
|
+ body6: 1,
|
|
|
|
+ body7: 0,
|
|
|
|
+ body8: 0,
|
|
|
|
+ body9: 0,
|
|
|
|
+ body10: 0,
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ onLoad() {
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ onReady() {
|
|
|
|
+ this.getfindByOpenId();
|
|
|
|
+ },
|
|
|
|
+ computed: {
|
|
|
|
+ companyListTabs() {
|
|
|
|
+ var sz = []
|
|
|
|
+
|
|
|
|
+ if (this.companyList.length > 3) {
|
|
|
|
+ sz = [{
|
|
|
|
+ id: "",
|
|
|
|
+ name: '全部'
|
|
|
|
+ }]
|
|
|
|
+ sz.push(this.companyList[0])
|
|
|
|
+ sz.push(this.companyList[1])
|
|
|
|
+ } else {
|
|
|
|
+ sz = [{
|
|
|
|
+ id: "",
|
|
|
|
+ name: '全部'
|
|
|
|
+ },
|
|
|
|
+ ...this.companyList
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return sz
|
|
|
|
+ },
|
|
|
|
+ parkingListTabs() {
|
|
|
|
+ var sz = []
|
|
|
|
+ if (this.parkingList.length > 3) {
|
|
|
|
+ sz = [{
|
|
|
|
+ id: "",
|
|
|
|
+ name: '综合查询'
|
|
|
|
+ }]
|
|
|
|
+ sz.push(this.parkingList[0])
|
|
|
|
+ sz.push(this.parkingList[1])
|
|
|
|
+ } else {
|
|
|
|
+ sz = [{
|
|
|
|
+ id: "",
|
|
|
|
+ name: '综合查询'
|
|
|
|
+ },
|
|
|
|
+ ...this.parkingList
|
|
|
|
+ ]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return sz
|
|
|
|
+ },
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+
|
|
|
|
+ showTime(time){
|
|
|
|
+ if(time){
|
|
|
|
+ return time.substr(5).replace('-','.')
|
|
|
|
+ }else{
|
|
|
|
+ return ''
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getTime(item){
|
|
|
|
+ if(item.startTime&&item.endTime){
|
|
|
|
+ var stime=newDate(item.startTime)
|
|
|
|
+ var etime=newDate(item.endTime)
|
|
|
|
+ //etime=new Date()
|
|
|
|
+ var k=(etime.getTime()-stime.getTime())/1000/60
|
|
|
|
+
|
|
|
|
+ var H=k/60
|
|
|
|
+ var fen=k%(60)
|
|
|
|
+ var str="";
|
|
|
|
+ if(k>60){
|
|
|
|
+ str+=parseInt(H)+'小时'
|
|
|
|
+ }
|
|
|
|
+ if(fen==0&&str!=''){
|
|
|
|
+
|
|
|
|
+ }else{
|
|
|
|
+ str+=parseInt(fen)+'分钟'
|
|
|
|
+ }
|
|
|
|
+ return str
|
|
|
|
+ }else{
|
|
|
|
+ return '已完成'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ gotoDeviceList() {
|
|
|
|
+ if (this.parkingId) {
|
|
|
|
+ this.gotoUrl('/pages/deviceTab/deviceList?parkingId=' + this.parkingId)
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ uni.switchTab({
|
|
|
|
+ url: '/pages/deviceTab/index'
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ getfloorStatus() {
|
|
|
|
+ this.jpContentMap.body1 = 0
|
|
|
|
+
|
|
|
|
+ API.floorStatus({
|
|
|
|
+ companyId: this.companyId,
|
|
|
|
+ parkingId: this.parkingId
|
|
|
|
+ }).then((response) => {
|
|
|
|
+ this.body1data.data = response.data
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ this.jpContentMap.body1 = 2
|
|
|
|
+
|
|
|
|
+ this.getbody1pie1()
|
|
|
|
+ this.getbody1pie2()
|
|
|
|
+ this.getbody1pie3()
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ getParkingRecordList() {
|
|
|
|
+ this.jpContentMap.body8 = 0
|
|
|
|
+
|
|
|
|
+ API.parkingRecordList({
|
|
|
|
+ companyId: this.companyId,
|
|
|
|
+ parkingId: this.parkingId,
|
|
|
|
+ pageSize: 5
|
|
|
|
+ }).then((response) => {
|
|
|
|
+
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ if (response.data.totalPage) {
|
|
|
|
+ this.jpContentMap.body8 = 2
|
|
|
|
+ this.parkingRecord = response.data.data
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body8 = 1
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ getfloorlockList() {
|
|
|
|
+ this.jpContentMap.body7 = 0
|
|
|
|
+
|
|
|
|
+ API.floorlockList({
|
|
|
|
+ companyId: this.companyId,
|
|
|
|
+ parkingId: this.parkingId,
|
|
|
|
+ pageSize: 10
|
|
|
|
+ }).then((response) => {
|
|
|
|
+
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ if (response.data.totalPage) {
|
|
|
|
+ this.jpContentMap.body7 = 2
|
|
|
|
+ this.equipmentList = response.data.data
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body7 = 1
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ getApi1() {
|
|
|
|
+
|
|
|
|
+ if (this.companyId == "") {
|
|
|
|
+
|
|
|
|
+ this.getApi2()
|
|
|
|
+ } else {
|
|
|
|
+ this.parkingInfoList()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ getApi2() {
|
|
|
|
+ this.getfloorStatus()
|
|
|
|
+ this.getfloorlockList()
|
|
|
|
+ this.occupancyByTime(1);
|
|
|
|
+ this.occupancyByTimeBar(1);
|
|
|
|
+ this.occupancyByDay(1);
|
|
|
|
+ this.durationDistribution();
|
|
|
|
+ this.getParkingRecordList()
|
|
|
|
+ if (this.parkingId == "") {
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ change1companyList(i) {
|
|
|
|
+ //this.companyListIndex=i
|
|
|
|
+ var companyId = ""
|
|
|
|
+
|
|
|
|
+ if (i == -1) {
|
|
|
|
+ if (this.companyId == companyId) {
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.companyId = ""
|
|
|
|
+ this.parkingList = [];
|
|
|
|
+ this.getApi1()
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var item = this.companyList[i]
|
|
|
|
+ companyId = item.id
|
|
|
|
+ if (this.companyId == companyId) {
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.companyId = companyId
|
|
|
|
+
|
|
|
|
+ this.parkingId = "";
|
|
|
|
+ this.current2 = 0;
|
|
|
|
+ this.$refs.tabs2.showBar = true
|
|
|
|
+
|
|
|
|
+ this.getApi1()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ change2parkingList(i) {
|
|
|
|
+
|
|
|
|
+ var parkingId = ""
|
|
|
|
+
|
|
|
|
+ if (i == -1) {
|
|
|
|
+
|
|
|
|
+ if (this.parkingId == parkingId) {
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.parkingId = "";
|
|
|
|
+ this.getApi2()
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ var item = this.parkingList[i]
|
|
|
|
+ parkingId = item.id
|
|
|
|
+ if (this.parkingId == parkingId) {
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.parkingId = parkingId;
|
|
|
|
+ this.getApi2()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ showselect2confirm(e) {
|
|
|
|
+
|
|
|
|
+ this.change2parkingList(e[0])
|
|
|
|
+ },
|
|
|
|
+ utabsChange2other() {
|
|
|
|
+ this.$refs.tabs2.showBar = false
|
|
|
|
+ this.current2 = -1;
|
|
|
|
+ this.showselect2 = true;
|
|
|
|
+ },
|
|
|
|
+ utabsChange2(index) {
|
|
|
|
+ this.current2 = index;
|
|
|
|
+ this.change2parkingList(index - 1)
|
|
|
|
+ this.$refs.tabs2.showBar = true
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ showselect1confirm(e) {
|
|
|
|
+
|
|
|
|
+ this.change1companyList(e[0])
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ utabsChange1other() {
|
|
|
|
+ this.$refs.tabs.showBar = false
|
|
|
|
+ this.current1 = -1;
|
|
|
|
+ this.showselect1 = true;
|
|
|
|
+ },
|
|
|
|
+ utabsChange1(index) {
|
|
|
|
+ this.current1 = index;
|
|
|
|
+ this.change1companyList(index - 1)
|
|
|
|
+ this.$refs.tabs.showBar = true
|
|
|
|
+ },
|
|
|
|
+ parkingInfoList() {
|
|
|
|
+
|
|
|
|
+ uni.showLoading({
|
|
|
|
+ title: "加载中",
|
|
|
|
+ mask: true,
|
|
|
|
+ })
|
|
|
|
+ this.parkingList = [];
|
|
|
|
+
|
|
|
|
+ API.parkingList({
|
|
|
|
+ companyId: this.companyId,
|
|
|
|
+ pageSize: 999
|
|
|
|
+ }).then((response) => {
|
|
|
|
+
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ var parkingInfoList = response.data.parkingInfoList
|
|
|
|
+ this.parkingList = [
|
|
|
|
+ ...parkingInfoList,
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ if (this.parkingList.length == 1) {
|
|
|
|
+
|
|
|
|
+ this.change2parkingList(0)
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.change2parkingList(-1)
|
|
|
|
+ this.getApi2()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getfloorlockList()
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ companyInfoList() {
|
|
|
|
+ uni.showLoading({
|
|
|
|
+ title: "加载中",
|
|
|
|
+ mask: true,
|
|
|
|
+ })
|
|
|
|
+ this.companyList = [];
|
|
|
|
+
|
|
|
|
+ API.companyInfoList({
|
|
|
|
+
|
|
|
|
+ }).then((response) => {
|
|
|
|
+
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ var companyInfoList = response.data.companyInfoList
|
|
|
|
+ this.companyList = [
|
|
|
|
+ ...companyInfoList,
|
|
|
|
+
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ if (this.companyList.length == 1) {
|
|
|
|
+ this.change1companyList(0)
|
|
|
|
+ } else {
|
|
|
|
+ this.change1companyList(-1)
|
|
|
|
+ this.getApi1()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ init() {
|
|
|
|
+ this.companyInfoList()
|
|
|
|
+
|
|
|
|
+ //this.occupancyByTime();
|
|
|
|
+
|
|
|
|
+ //this.getbody3()
|
|
|
|
+ //this.getbody4()
|
|
|
|
+
|
|
|
|
+ //this.getbody5()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ body2dataconfirm(e) {
|
|
|
|
+
|
|
|
|
+ var date = new Date(e.year + "-" + e.month + "-1");
|
|
|
|
+ this.body2data.vue.queryN = date.getFullYear() + "年" + (date.getMonth() + 1) + '月';
|
|
|
|
+ this.body2data.query.startTime = date.getFullYear() + "-" + (date.getMonth() + 1) + "-1"
|
|
|
|
+
|
|
|
|
+ var endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)
|
|
|
|
+ this.body2data.query.endTime = parseUnixTime(endOfMonth, '{y}-{m}-{d}')
|
|
|
|
+
|
|
|
|
+ this.occupancyByTime()
|
|
|
|
+ },
|
|
|
|
+ body5dataconfirm(e) {
|
|
|
|
+ console.log(e)
|
|
|
|
+ var date = new Date(e.year + "-" + e.month + "-" + e.day);
|
|
|
|
+ this.body5data.query.queryDate = parseUnixTime(date, '{y}-{m}-{d}')
|
|
|
|
+ this.body5data.vue.queryN = parseUnixTime(date, '{y}年{m}月{d}日');
|
|
|
|
+
|
|
|
|
+ this.occupancyByDay()
|
|
|
|
+ },
|
|
|
|
+ occupancyByTimeBar(init) {
|
|
|
|
+ if (init) {
|
|
|
|
+ var date = new Date();
|
|
|
|
+ //test
|
|
|
|
+ //this.body3data.query.startTime = date.getFullYear() + "-" + (date.getMonth() + 1) + "-1"
|
|
|
|
+
|
|
|
|
+ var endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)
|
|
|
|
+ //this.body3data.query.endTime = parseUnixTime(endOfMonth, '{y}-{m}-{d}')
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.jpContentMap.body3 = 0
|
|
|
|
+ this.body3data.query.companyId = this.companyId
|
|
|
|
+ this.body3data.query.parkingId = this.parkingId
|
|
|
|
+ API.occupancyByTimeBar(
|
|
|
|
+ this.body3data.query
|
|
|
|
+ ).then((response) => {
|
|
|
|
+ this.body3data.data = [
|
|
|
|
+ ...response.data.locksTimeList,
|
|
|
|
+ // ...response.data.locksTimeList,
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ if (this.body3data.data.length == 0) {
|
|
|
|
+ this.jpContentMap.body3 = 1
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body3 = 2
|
|
|
|
+ this.getbody3()
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ durationDistribution() {
|
|
|
|
+ this.jpContentMap.body4 = 0
|
|
|
|
+
|
|
|
|
+ var date = new Date();
|
|
|
|
+ //test
|
|
|
|
+ //this.body4data.query.startTime = date.getFullYear() + "-" + (date.getMonth() + 1) + "-1"
|
|
|
|
+
|
|
|
|
+ var endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)
|
|
|
|
+ // this.body4data.query.endTime = parseUnixTime(endOfMonth, '{y}-{m}-{d}')
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ this.body4data.query.companyId = this.companyId
|
|
|
|
+ this.body4data.query.parkingId = this.parkingId
|
|
|
|
+ API.durationDistribution(
|
|
|
|
+ this.body4data.query
|
|
|
|
+ ).then((response) => {
|
|
|
|
+ this.body4data.data = response.data.distribution;
|
|
|
|
+
|
|
|
|
+ if (this.body4data.data.length == 0) {
|
|
|
|
+ this.jpContentMap.body4 = 1
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body4 = 2
|
|
|
|
+ //this.getbody3()
|
|
|
|
+ this.getbody4()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ occupancyByDay(init) {
|
|
|
|
+ if (init) {
|
|
|
|
+ var date = new Date();
|
|
|
|
+
|
|
|
|
+ this.body5data.query.queryDate = parseUnixTime(date, '{y}-{m}-{d}')
|
|
|
|
+ this.body5data.vue.queryN = parseUnixTime(date, '{y}年{m}月{d}日');
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.jpContentMap.body5 = 0
|
|
|
|
+ this.body5data.query.companyId = this.companyId
|
|
|
|
+ this.body5data.query.parkingId = this.parkingId
|
|
|
|
+ API.occupancyByDay(
|
|
|
|
+ this.body5data.query
|
|
|
|
+ ).then((response) => {
|
|
|
|
+ this.body5data.data = [
|
|
|
|
+ ...response.data.locksTimeList,
|
|
|
|
+
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ if (this.body5data.data.length == 0) {
|
|
|
|
+ this.jpContentMap.body5 = 1
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body5 = 2
|
|
|
|
+ //this.getbody3()
|
|
|
|
+ this.getbody5()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ occupancyByTime(init) {
|
|
|
|
+ if (init) {
|
|
|
|
+ var date = new Date();
|
|
|
|
+
|
|
|
|
+ this.body2data.vue.queryN = date.getFullYear() + "年" + (date.getMonth() + 1) + '月';
|
|
|
|
+ this.body2data.query.startTime = date.getFullYear() + "-" + (date.getMonth() + 1) + "-1"
|
|
|
|
+
|
|
|
|
+ var endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)
|
|
|
|
+ this.body2data.query.endTime = parseUnixTime(endOfMonth, '{y}-{m}-{d}')
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ this.jpContentMap.body2 = 0
|
|
|
|
+ this.body2data.query.companyId = this.companyId
|
|
|
|
+ this.body2data.query.parkingId = this.parkingId
|
|
|
|
+ API.occupancyByTime(
|
|
|
|
+ this.body2data.query
|
|
|
|
+ ).then((response) => {
|
|
|
|
+ this.body2data.data = [
|
|
|
|
+ ...response.data.locksTimeList,
|
|
|
|
+ // ...response.data.locksTimeList,
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ if (this.body2data.data.length == 0) {
|
|
|
|
+ this.jpContentMap.body2 = 1
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.jpContentMap.body2 = 2
|
|
|
|
+
|
|
|
|
+ this.getbody2()
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ getbody5() {
|
|
|
|
+ // 颜色映射
|
|
|
|
+ var colorMap = [
|
|
|
|
+
|
|
|
|
+ '#FFA500',
|
|
|
|
+ '#00FF00',
|
|
|
|
+ '#F44336',
|
|
|
|
+ '#E91E63',
|
|
|
|
+ '#9C27B0',
|
|
|
|
+ '#673AB7',
|
|
|
|
+ '#3F51B5',
|
|
|
|
+ '#2196F3',
|
|
|
|
+ '#03A9F4',
|
|
|
|
+ '#00BCD4',
|
|
|
|
+ '#009688',
|
|
|
|
+ '#CDDC39',
|
|
|
|
+ '#FFEB3B',
|
|
|
|
+ '#FFC107',
|
|
|
|
+ '#FF9800',
|
|
|
|
+ '#FF5722',
|
|
|
|
+ '#795548',
|
|
|
|
+ '#607D8B'
|
|
|
|
+ ];
|
|
|
|
+
|
|
|
|
+ var key = "body5echart"
|
|
|
|
+ var dataApi = this.body5data.data;
|
|
|
|
+
|
|
|
|
+ var head = 40 * (parseInt(dataApi.length / 4)) + 20
|
|
|
|
+ var body = 20 * (parseInt(dataApi.length))
|
|
|
|
+
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(300 * 2),
|
|
|
|
+ height: uni.upx2px((170 + head) * 2 + body)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+ var dataName = []
|
|
|
|
+ var dataTime = []
|
|
|
|
+ var series = []
|
|
|
|
+ var i = 0;
|
|
|
|
+ var isPush=false
|
|
|
|
+ dataApi.forEach(item => {
|
|
|
|
+
|
|
|
|
+ dataName.push(item.lockName)
|
|
|
|
+ var itemList = []
|
|
|
|
+ var j = 0
|
|
|
|
+ item.timeUseList.forEach(item2 => {
|
|
|
|
+
|
|
|
|
+ Object.keys(item2).forEach(key1 => {
|
|
|
|
+ console.log(item2[key1])
|
|
|
|
+ if (item2[key1]) {
|
|
|
|
+ var ob = [j, i, i]
|
|
|
|
+ itemList.push(ob)
|
|
|
|
+ isPush=true
|
|
|
|
+ } else {
|
|
|
|
+ // var ob=[j,i,i]
|
|
|
|
+ // itemList.push(ob)
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ j += 1;
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var obj = {
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'item',
|
|
|
|
+ axisPointer: {
|
|
|
|
+ type: 'shadow'
|
|
|
|
+ },
|
|
|
|
+ formatter: function(params) {
|
|
|
|
+ console.log(params)
|
|
|
|
+ var result = params.marker+params.name +'点<br/>' + params.seriesName + ' 占用 ';
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //silent: true,
|
|
|
|
+ type: 'custom',
|
|
|
|
+ "name": item.lockName,
|
|
|
|
+ // tooltip: {
|
|
|
|
+ // //trigger: 'none',
|
|
|
|
+ // show: false
|
|
|
|
+ // },
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: colorMap[i % colorMap.length]
|
|
|
|
+ },
|
|
|
|
+ renderItem: function(params, api) {
|
|
|
|
+ var xIndex = api.value(0); // x轴索引
|
|
|
|
+ var yIndex = api.value(1); // y轴索引
|
|
|
|
+ var value = api.value(2); // 值
|
|
|
|
+
|
|
|
|
+ // 获取颜色
|
|
|
|
+ var color = colorMap[value % colorMap.length] || '#ffffff';
|
|
|
|
+
|
|
|
|
+ // 计算矩形的位置和大小
|
|
|
|
+ var x = api.coord([xIndex, yIndex])[0];
|
|
|
|
+ var y = api.coord([xIndex, yIndex])[1];
|
|
|
|
+ var width = api.size([1, 0])[0];
|
|
|
|
+ var height = api.size([0, 1])[1];
|
|
|
|
+
|
|
|
|
+ return {
|
|
|
|
+ type: 'rect',
|
|
|
|
+
|
|
|
|
+ shape: {
|
|
|
|
+ x: x - uni.upx2px(25),
|
|
|
|
+ y: y - uni.upx2px(20),
|
|
|
|
+ width: width,
|
|
|
|
+ height: 20,
|
|
|
|
+ },
|
|
|
|
+ style: {
|
|
|
|
+ fill: color
|
|
|
|
+ }
|
|
|
|
+ };
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ obj.data = itemList
|
|
|
|
+ series.push(obj)
|
|
|
|
+ i += 1;
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ dataApi[0].timeUseList.forEach(item => {
|
|
|
|
+
|
|
|
|
+ Object.keys(item).forEach(key1 => {
|
|
|
|
+ dataTime.push(key1)
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ var option = {
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'axis',
|
|
|
|
+ axisPointer: {
|
|
|
|
+ type: 'shadow'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ grid: {
|
|
|
|
+ top: 30 + head,
|
|
|
|
+ left: -10+(isPush?0:20),
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ legend: {
|
|
|
|
+ data: dataName
|
|
|
|
+ },
|
|
|
|
+ xAxis: {
|
|
|
|
+ type: 'category',
|
|
|
|
+ data: dataTime
|
|
|
|
+ },
|
|
|
|
+ yAxis: {
|
|
|
|
+ type: 'category',
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ series: series
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody4() {
|
|
|
|
+ var key = "body4pie1"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(300 * 2),
|
|
|
|
+ height: uni.upx2px(170 * 2)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+ var dataApi = this.body4data.data;
|
|
|
|
+
|
|
|
|
+ var data = []
|
|
|
|
+ var num = 0
|
|
|
|
+ var sum = 0
|
|
|
|
+ Object.keys(dataApi).forEach(key1 => {
|
|
|
|
+ num += dataApi[key1]
|
|
|
|
+ });
|
|
|
|
+ var i = 0
|
|
|
|
+ Object.keys(dataApi).forEach(key1 => {
|
|
|
|
+ var value = dataApi[key1]
|
|
|
|
+ if(value!=0){
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var obj = {
|
|
|
|
+ value: value,
|
|
|
|
+ name: key1
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (num != 0) {
|
|
|
|
+ var valueInt = parseInt(value / num * 100)
|
|
|
|
+ if (valueInt == 0 && value != 0) {
|
|
|
|
+ valueInt = 1
|
|
|
|
+ }
|
|
|
|
+ sum += valueInt;
|
|
|
|
+
|
|
|
|
+ if (i == Object.keys(dataApi).length - 1) {
|
|
|
|
+ if (sum != 100) {
|
|
|
|
+ valueInt += (100 - sum)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ obj.name += '\n' + (valueInt) + '%'
|
|
|
|
+ }
|
|
|
|
+ data.push(obj)
|
|
|
|
+ }
|
|
|
|
+ i++;
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var option = {
|
|
|
|
+
|
|
|
|
+ grid: {
|
|
|
|
+ top: 20,
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ series: [{
|
|
|
|
+
|
|
|
|
+ type: 'pie',
|
|
|
|
+ radius: ['80%', '50%'],
|
|
|
|
+ radius: [45, 60],
|
|
|
|
+ data: data
|
|
|
|
+
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+ console.log(option)
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody3() {
|
|
|
|
+ var key = "body3bar1"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(300 * 2),
|
|
|
|
+ height: uni.upx2px(170 * 2)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ var dataApi = this.body3data.data;
|
|
|
|
+
|
|
|
|
+ myChart.clear()
|
|
|
|
+
|
|
|
|
+ var data1 = []
|
|
|
|
+ var data2 = [] //useDays
|
|
|
|
+ var i = 0
|
|
|
|
+ dataApi[0].timeUseList.forEach(item => {
|
|
|
|
+
|
|
|
|
+ Object.keys(item).forEach(key1 => {
|
|
|
|
+
|
|
|
|
+ data1.push(key1 + '点')
|
|
|
|
+ var num = 0
|
|
|
|
+
|
|
|
|
+ dataApi.forEach(item2 => {
|
|
|
|
+ num += item2.timeUseList[i][key1].useDays
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+ data2.push(num)
|
|
|
|
+ });
|
|
|
|
+ i += 1
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ var axisLabel = {
|
|
|
|
+ rotate: 40,
|
|
|
|
+ interval: 0,
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: "#333"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (data1.length < 7) {
|
|
|
|
+ axisLabel = {
|
|
|
|
+ interval: 0,
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: "#333"
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ axisLabel.interval = 0;
|
|
|
|
+ }
|
|
|
|
+ var option = {
|
|
|
|
+ xAxis: {
|
|
|
|
+ type: 'category',
|
|
|
|
+ data: data1,
|
|
|
|
+ axisLabel: axisLabel,
|
|
|
|
+ },
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'axis',
|
|
|
|
+ axisPointer: {
|
|
|
|
+ type: 'shadow'
|
|
|
|
+ },
|
|
|
|
+ formatter: function(params) {
|
|
|
|
+ var result = params[0].name + '<br/>';
|
|
|
|
+ for (var i = 0; i < params.length; i++) {
|
|
|
|
+ result += params[i].marker+ ' ' + params[i].value + '次<br/>';
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ yAxis: {
|
|
|
|
+ type: 'value'
|
|
|
|
+ },
|
|
|
|
+ grid: {
|
|
|
|
+ top: 20,
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ series: [{
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: "#5A88E5"
|
|
|
|
+ },
|
|
|
|
+ data: data2,
|
|
|
|
+ type: 'bar'
|
|
|
|
+ }]
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody2() {
|
|
|
|
+ var key = "body2line1"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ var dataApi = this.body2data.data;
|
|
|
|
+
|
|
|
|
+ var head = 20 * (parseInt(dataApi.length / 4)) + 20
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(300 * 2),
|
|
|
|
+ height: uni.upx2px((170 + head) * 2)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+
|
|
|
|
+ var data1 = []
|
|
|
|
+ var series = [];
|
|
|
|
+
|
|
|
|
+ dataApi.forEach(item => {
|
|
|
|
+
|
|
|
|
+ var obj = {
|
|
|
|
+ name: item.lockName,
|
|
|
|
+ //areaStyle: {},
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // color: "#BBD4FB"
|
|
|
|
+ // },
|
|
|
|
+ label: {
|
|
|
|
+ show: true,
|
|
|
|
+ position: 'top',
|
|
|
|
+ // color: "#307AF6"
|
|
|
|
+ },
|
|
|
|
+ data: [],
|
|
|
|
+ type: 'line'
|
|
|
|
+ }
|
|
|
|
+ if (dataApi.length == 1) {
|
|
|
|
+ obj.label.color = "#307AF6"
|
|
|
|
+ obj.areaStyle = {}
|
|
|
|
+ obj.itemStyle = {
|
|
|
|
+ color: "#BBD4FB"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ item.timeUseList.forEach(item2 => {
|
|
|
|
+ Object.keys(item2).forEach(key1 => {
|
|
|
|
+
|
|
|
|
+ obj.data.push(item2[key1].useRate)
|
|
|
|
+ });
|
|
|
|
+ })
|
|
|
|
+ series.push(obj)
|
|
|
|
+ })
|
|
|
|
+ dataApi[0].timeUseList.forEach(item => {
|
|
|
|
+
|
|
|
|
+ Object.keys(item).forEach(key1 => {
|
|
|
|
+ data1.push(key1)
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ var axisLabel = {
|
|
|
|
+ rotate: 40,
|
|
|
|
+ interval: 0,
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: "#333"
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (data1.length < 7) {
|
|
|
|
+ axisLabel = {
|
|
|
|
+ interval: 0,
|
|
|
|
+ textStyle: {
|
|
|
|
+ color: "#333"
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ axisLabel.interval = 0;
|
|
|
|
+ }
|
|
|
|
+ var option = {
|
|
|
|
+ legend: {},
|
|
|
|
+ xAxis: {
|
|
|
|
+ type: 'category',
|
|
|
|
+ data: data1,
|
|
|
|
+ axisLabel: axisLabel,
|
|
|
|
+ },
|
|
|
|
+ tooltip: {
|
|
|
|
+ trigger: 'axis',
|
|
|
|
+ axisPointer: {
|
|
|
|
+ type: 'shadow'
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ formatter: function(params) {
|
|
|
|
+ var result = params[0].name + '点<br/>';
|
|
|
|
+ for (var i = 0; i < params.length; i++) {
|
|
|
|
+ result += params[i].marker+params[i].seriesName + ': ' + params[i].value + '%<br/>';
|
|
|
|
+ }
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ yAxis: {
|
|
|
|
+ type: 'value'
|
|
|
|
+ },
|
|
|
|
+ grid: {
|
|
|
|
+ top: (20 + head),
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ series: series
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody1pie1() {
|
|
|
|
+ var img = require("@/assets/img/index/pie1-1.svg")
|
|
|
|
+ var key = "body1pie1"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(88),
|
|
|
|
+ height: uni.upx2px(88)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+ var option = {
|
|
|
|
+
|
|
|
|
+ series: [{
|
|
|
|
+ silent: true,
|
|
|
|
+ type: 'pie',
|
|
|
|
+ radius: ['70%', '100%'],
|
|
|
|
+ label: {
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ data: [{
|
|
|
|
+ value: this.body1data.data.useNum,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#AAAAAA'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: this.body1data.data.idleNum,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#53B56B'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ }],
|
|
|
|
+ grid: {
|
|
|
|
+ top: 0,
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ graphic: [{
|
|
|
|
+ type: 'image',
|
|
|
|
+ id: 'logo',
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
|
|
+ style: {
|
|
|
|
+ image: img, // 图片路径
|
|
|
|
+ width: uni.upx2px(40),
|
|
|
|
+ height: uni.upx2px(40)
|
|
|
|
+ }
|
|
|
|
+ }]
|
|
|
|
+ }
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody1pie2() {
|
|
|
|
+ var img = require("@/assets/img/index/pie1-2.svg")
|
|
|
|
+
|
|
|
|
+ var key = "body1pie2"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(88),
|
|
|
|
+ height: uni.upx2px(88)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+ var option = {
|
|
|
|
+
|
|
|
|
+ series: [{
|
|
|
|
+ silent: true,
|
|
|
|
+ type: 'pie',
|
|
|
|
+ radius: ['70%', '100%'],
|
|
|
|
+ label: {
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ data: [{
|
|
|
|
+ value: this.body1data.data.loseNum,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#AAAAAA'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: this.body1data.data.normalNum,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#53B56B'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: this.body1data.data.errorNum,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#EF8132'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //, {
|
|
|
|
+ // value: 735,
|
|
|
|
+ // itemStyle: {
|
|
|
|
+ // color: '#DC4441'
|
|
|
|
+ // }
|
|
|
|
+ // }
|
|
|
|
+ ]
|
|
|
|
+ }],
|
|
|
|
+ grid: {
|
|
|
|
+ top: 0,
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ graphic: [{
|
|
|
|
+ type: 'image',
|
|
|
|
+ id: 'logo',
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
|
|
+ style: {
|
|
|
|
+ image: img, // 图片路径
|
|
|
|
+ width: uni.upx2px(40),
|
|
|
|
+ height: uni.upx2px(40)
|
|
|
|
+ }
|
|
|
|
+ }]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+ getbody1pie3() {
|
|
|
|
+ var img = require("@/assets/img/index/pie1-3.svg")
|
|
|
|
+
|
|
|
|
+ var key = "body1pie3"
|
|
|
|
+ var myChart = this.echartsList[key];
|
|
|
|
+ if (!myChart) {
|
|
|
|
+ myChart = echarts.init(document.getElementById(key), null, {
|
|
|
|
+ width: uni.upx2px(88),
|
|
|
|
+ height: uni.upx2px(88)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ myChart.clear()
|
|
|
|
+ var option = {
|
|
|
|
+
|
|
|
|
+ series: [{
|
|
|
|
+ type: 'pie',
|
|
|
|
+ silent: true, // 禁用交互效果
|
|
|
|
+
|
|
|
|
+ radius: ['70%', '100%'],
|
|
|
|
+ label: {
|
|
|
|
+ show: false,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ data: [{
|
|
|
|
+ value: 735,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#53B56B'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 735,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#EF8375'
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ {
|
|
|
|
+ value: 735,
|
|
|
|
+ itemStyle: {
|
|
|
|
+ color: '#307AF6'
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ ]
|
|
|
|
+ }],
|
|
|
|
+ grid: {
|
|
|
|
+ top: 0,
|
|
|
|
+ left: 0,
|
|
|
|
+ right: 0,
|
|
|
|
+ bottom: 0,
|
|
|
|
+ containLabel: true
|
|
|
|
+ },
|
|
|
|
+ graphic: [{
|
|
|
|
+ type: 'image',
|
|
|
|
+ id: 'logo',
|
|
|
|
+ left: 'center',
|
|
|
|
+ top: 'center',
|
|
|
|
+ style: {
|
|
|
|
+ image: img, // 图片路径
|
|
|
|
+ width: uni.upx2px(40),
|
|
|
|
+ height: uni.upx2px(40)
|
|
|
|
+ }
|
|
|
|
+ }]
|
|
|
|
+ }
|
|
|
|
+ myChart.setOption(option);
|
|
|
|
+ this.echartsList[key] = myChart;
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ getfindByOpenId() {
|
|
|
|
+ uni.showLoading({
|
|
|
|
+ title: "加载中",
|
|
|
|
+ mask: true,
|
|
|
|
+ })
|
|
|
|
+ API.findByOpenId({
|
|
|
|
+ openId: this.jphelp.getOpenId(),
|
|
|
|
+ }).then((response) => {
|
|
|
|
+
|
|
|
|
+ uni.hideLoading();
|
|
|
|
+ this.isReady = true;
|
|
|
|
+ this.loginset(response)
|
|
|
|
+ try {
|
|
|
|
+ this.init()
|
|
|
|
+ } catch (e) {
|
|
|
|
+
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: e,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }).catch(error => {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: error,
|
|
|
|
+ icon: "none"
|
|
|
|
+ })
|
|
|
|
+ uni.redirectTo({
|
|
|
|
+ url: '/pages/login/login'
|
|
|
|
+ })
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</script>
|
|
|
|
+
|
|
|
|
+<style scoped lang="scss">
|
|
|
|
+ .color307AF6 {
|
|
|
|
+ color: #307AF6
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .color53B56B {
|
|
|
|
+ color: #53B56B
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .colorAAAAAA {
|
|
|
|
+ color: #AAAAAA
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .colorEF8132 {
|
|
|
|
+ color: #EF8132
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .colorDC4441 {
|
|
|
|
+ color: #DC4441
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .colorEF8375 {
|
|
|
|
+ color: #EF8375
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .body1pie-table {
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+
|
|
|
|
+ .tr {
|
|
|
|
+ .td1 {
|
|
|
|
+ padding-right: 24rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ display: flex;
|
|
|
|
+ margin-bottom: 40rpx;
|
|
|
|
+
|
|
|
|
+ .td2 {
|
|
|
|
+
|
|
|
|
+ width: 100%;
|
|
|
|
+
|
|
|
|
+ .td3 {
|
|
|
|
+ display: flex;
|
|
|
|
+
|
|
|
|
+ .td4 {
|
|
|
|
+ width: 120px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // td{
|
|
|
|
+ // padding-right: 24rpx;
|
|
|
|
+
|
|
|
|
+ // }
|
|
|
|
+ .body1pie {}
|
|
|
|
+
|
|
|
|
+ .body1pie-num {
|
|
|
|
+ margin: 0 8rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 导航栏
|
|
|
|
+ .navbar {
|
|
|
|
+
|
|
|
|
+ box-shadow: 0px 4px 4px 0px rgba(0, 0, 0, 0.15);
|
|
|
|
+ background-color: rgba(22, 119, 255, 1);
|
|
|
|
+ color: #fff;
|
|
|
|
+ line-height: 88rpx;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ padding: 0 32rpx;
|
|
|
|
+ color: rgba(255, 255, 255, 1);
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
+ position: fixed;
|
|
|
|
+ left: 0;
|
|
|
|
+ right: 0;
|
|
|
|
+ top: 0;
|
|
|
|
+ z-index: 999999;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .main {
|
|
|
|
+ border-radius: 16px 16px 0px 0px;
|
|
|
|
+ background: linear-gradient(180deg, rgba(242, 244, 246, 1) 61%, rgba(255, 255, 255, 0) 100%);
|
|
|
|
+ margin-top: -24rpx;
|
|
|
|
+ padding: 32rpx;
|
|
|
|
+
|
|
|
|
+ .statistics {
|
|
|
|
+ border-radius: 8px;
|
|
|
|
+ background-color: rgba(255, 255, 255, 1);
|
|
|
|
+ box-shadow: 0px 1px 6px 0px rgba(0, 59, 142, 0.05);
|
|
|
|
+ margin-bottom: 24rpx;
|
|
|
|
+ padding: 40rpx;
|
|
|
|
+
|
|
|
|
+ .title {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ margin-bottom: 32rpx;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+
|
|
|
|
+ .img {
|
|
|
|
+ width: 36rpx;
|
|
|
|
+ height: 36rpx;
|
|
|
|
+ vertical-align: middle;
|
|
|
|
+ border-radius: 999px;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .change {
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+
|
|
|
|
+ .change-img {
|
|
|
|
+ width: 32rpx;
|
|
|
|
+ height: 32rpx;
|
|
|
|
+ vertical-align: middle;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ text {
|
|
|
|
+
|
|
|
|
+ margin-left: 8rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ .text {
|
|
|
|
+ color: rgba(16, 16, 16, 1);
|
|
|
|
+ font-size: 36rpx;
|
|
|
|
+ margin-left: 16rpx;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ width: 100%;
|
|
|
|
+
|
|
|
|
+ .tag {
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ border: 1px solid rgba(187, 187, 187, 1);
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ padding: 1px 8rpx;
|
|
|
|
+ margin-left: 8rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .change {
|
|
|
|
+ margin-left: 16rpx;
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ color: #838383;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .check-all {
|
|
|
|
+ margin-left: auto;
|
|
|
|
+ color: rgba(131, 131, 131, 1);
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .statistics-end {
|
|
|
|
+ padding-bottom: 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .tabs-box2 {
|
|
|
|
+ margin-bottom: 8rpx;
|
|
|
|
+ padding-right: 16rpx;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+
|
|
|
|
+ .tabs-box-other {
|
|
|
|
+ padding-bottom: 12rpx;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .tabs-box {
|
|
|
|
+ padding: 42rpx 0;
|
|
|
|
+ margin-top: 66rpx;
|
|
|
|
+ padding-right: 32rpx;
|
|
|
|
+ background-color: rgba(22, 119, 255, 1);
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+
|
|
|
|
+ .tabs {
|
|
|
|
+ width: 97%;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .more {
|
|
|
|
+ padding-right: 12rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .tabs-box-other {
|
|
|
|
+ padding-bottom: 12rpx;
|
|
|
|
+ height: 80rpx;
|
|
|
|
+ line-height: 70rpx;
|
|
|
|
+ font-size: 30rpx;
|
|
|
|
+ color: rgb(255, 255, 255);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .body6main {
|
|
|
|
+ .line {
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .abnormal-item:last-of-type {
|
|
|
|
+ border-bottom: none !important;
|
|
|
|
+ padding-bottom: 0;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .abnormal-item {
|
|
|
|
+ width: 100%;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ padding: 16rpx;
|
|
|
|
+ border-bottom: 1px solid rgba(245, 245, 245, 1);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ .item-title {
|
|
|
|
+ .level {
|
|
|
|
+ color: #fff;
|
|
|
|
+
|
|
|
|
+ border-radius: 8rpx;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ padding: 4rpx 8rpx;
|
|
|
|
+ font-size: 22rpx;
|
|
|
|
+ margin-right: 2px;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .level1 {
|
|
|
|
+ background: red;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .level2 {
|
|
|
|
+ background-color: rgba(255, 123, 0, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+ width: 100%;
|
|
|
|
+
|
|
|
|
+ .img {
|
|
|
|
+ width: 32rpx;
|
|
|
|
+ height: 32rpx;
|
|
|
|
+ margin-right: 8rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .name {
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ overflow: hidden;
|
|
|
|
+ white-space: nowrap;
|
|
|
|
+ text-overflow: ellipsis;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .date {
|
|
|
|
+ color: rgba(119, 119, 119, 1);
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .item-value {
|
|
|
|
+ text-align: right;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+
|
|
|
|
+ .more {
|
|
|
|
+ margin-left: 8rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .value1 {
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .value2 {
|
|
|
|
+ color: rgba(119, 119, 119, 1);
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .body7main {
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ background-color: rgba(245, 245, 245, 1);
|
|
|
|
+ padding: 32rpx;
|
|
|
|
+
|
|
|
|
+ .line {
|
|
|
|
+ display: flex;
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ margin-bottom: 24rpx;
|
|
|
|
+ .goto{
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ }
|
|
|
|
+ .item-body{
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .item-title {
|
|
|
|
+ color: rgba(51, 51, 51, 1);
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
+ display: flex;
|
|
|
|
+ align-items: center;
|
|
|
|
+ .item-name{
|
|
|
|
+ margin-right: 8rpx;
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .statusN{
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ font-size: 24rpx;
|
|
|
|
+ padding: 2rpx 8rpx;
|
|
|
|
+ margin-right: 8rpx;
|
|
|
|
+ }
|
|
|
|
+ .statusN1 {
|
|
|
|
+
|
|
|
|
+ color: rgba(0,185,98,1);
|
|
|
|
+ border: 1px solid rgba(0,185,98,1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .statusN0 {
|
|
|
|
+ color: rgba(51,51,51,1);
|
|
|
|
+ border: 1px solid rgba(119,119,119,1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ .item-tags {
|
|
|
|
+ display: flex;
|
|
|
|
+
|
|
|
|
+ .tag {
|
|
|
|
+ border-radius: 4px;
|
|
|
|
+ white-space: pre;
|
|
|
|
+ background-color: rgba(39, 177, 72, 1);
|
|
|
|
+ color: rgba(255, 255, 255, 1);
|
|
|
|
+ font-size: 20rpx;
|
|
|
|
+ padding: 2rpx 8rpx;
|
|
|
|
+ margin-right: 8rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .tag1 {
|
|
|
|
+ background-color: rgba(22, 119, 255, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .tag2 {
|
|
|
|
+ background-color: rgba(129, 97, 255, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ .lockStatus {
|
|
|
|
+
|
|
|
|
+ background-color: rgba(153, 153, 153, 1);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .lockStatus2 {
|
|
|
|
+ background-color: #03A9F4
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ .body8main{
|
|
|
|
+
|
|
|
|
+ .line{
|
|
|
|
+ display: flex;
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ align-items: center;
|
|
|
|
+ background: #fff;
|
|
|
|
+ padding:16rpx 0rpx;
|
|
|
|
+ border-top: 1px solid rgba(232,232,232,1);
|
|
|
|
+ .data{
|
|
|
|
+ .view1{
|
|
|
|
+ color: rgba(16,16,16,1);
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
+ font-weight: bold;
|
|
|
|
+ }
|
|
|
|
+ .view3{
|
|
|
|
+ color: rgba(119,119,119,1);
|
|
|
|
+ font-size: 28rpx;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ .goto{
|
|
|
|
+ display: flex;
|
|
|
|
+ font-size: 32rpx;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ .status1{
|
|
|
|
+ color:#FF5100
|
|
|
|
+ }
|
|
|
|
+ .status2{
|
|
|
|
+ color: rgba(22,119,255,1);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ .line:first-child{
|
|
|
|
+ border-top: 0px ;
|
|
|
|
+ padding-top: 0px;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+</style>
|