This commit is contained in:
cclu 2023-05-04 09:27:05 +08:00
parent c887146ee8
commit f2971fd2ae
7 changed files with 419 additions and 61 deletions

View File

@ -143,6 +143,12 @@
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "specialCase",
"style": {
"navigationBarTitleText": ""
}
}
]
},

View File

@ -1,7 +1,8 @@
<template>
<div class="main">
<image :class="type==='index'?'typeImg':'img'" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/noData.svg"></image>
<p class="text" v-if="type!=='car'">抱歉,数据为第三方接口传输无法进行画像分析</p>
<image class="typeImg" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/noData.svg"></image>
<p class="text" v-if="type==='index'">抱歉,数据为第三方接口传输无法进行画像分析</p>
<p class="noAuthor" v-else-if="type==='noAuthor'">抱歉您没有权限查看数智化看板请联系管理员进行授权</p>
<p class="text" v-else>抱歉,第三方数据未传,无法分析</p>
</div>
</template>
@ -14,16 +15,11 @@ export default {
type:''
}
},
props:{
type:{
type:String,
default:''
}
},
onLoad(query){
if (query.type){
this.type = 'index'
this.type = query.type
}
console.log('this.type',this.type)
let userInfo = uni.getStorageSync('vuex')
userInfo = JSON.parse(userInfo)
console.log('userInfo',userInfo)

View File

@ -0,0 +1,297 @@
<template>
<div class="main">
<div style="width: 100%;height: 40px;display: flex;align-items: center">
<div class="select">
<div class="time">
<view class="uni-input" style="background: transparent;padding: 0;height:100%">{{ single }}</view>
</div>
<!-- 时间选择器 -->
<!-- <picker mode="date" fields="day" :value="single" :end="endData" @change="bindDateChange" >-->
<!-- <view class="time">-->
<!-- <view class="uni-input" style="background: transparent;padding: 0;height:100%">{{ single }}</view>-->
<!-- <image class="icon" src="/static/images/index/arrow_bottom.svg"></image>-->
<!-- </view>-->
<!-- </picker>-->
</div>
</div>
<div class="list">
<div class="tabs">
<div :class="selectTab===1?'selectTab':'tabItem'" @click="handleTab(1)">{{`${startTime}时入区车流预警`}}</div>
<!-- 凌晨12点到1点之间查看 应该是23时到0时 这里做了个判断 -->
<div :class="selectTab===2?'selectTab':'tabItem'" @click="handleTab(2)">{{endTime===24?`${endTime - 1}-0时入区车流排行`:`0-${startTime}时入区车流排行`}}</div>
</div>
<div style="width: 100%;border-bottom: 1px solid #ccc;margin-top: 10px;padding-bottom: 4px">
<p class="notice" v-if="selectTab===1">: 1个小时入区流量比4月同一时间流量增幅150%以上且每小时入区车辆超过100辆</p>
<p class="notice" v-if="selectTab===2">: 前20个从今日零时起至今流量与月均同时段增幅情况</p>
</div>
<div style="height: calc(100vh - 130px);overflow: scroll;}">
<div v-if="selectTab===1" class="item" v-for="(item,index) in firstData" :key="index">
<div class="box" >
<text>{{index + 1}}</text>
<div class="name">{{item.name}}<div class="normal">{{item.SERVERPART_REGION}}</div></div>
<div class="enter">{{startTime}}时入区: {{item.VEHICLE_COUNT }}</div>
<div class="add">
<image class="addIcon" :src="Number(item.VEHICLE_RATE)>100?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':Number(item.VEHICLE_RATE)===100?'':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<text :class="item.VEHICLE_RATE > 150?'orangeRed':''"> {{ item.VEHICLE_RATE }}%</text>
</div>
</div>
</div>
<div v-if="selectTab===2" class="item" v-for="(item,index) in secondData" :key="index">
<div class="box">
<text>{{index + 1}}</text>
<div class="name">{{item.name}}<text class="normal">{{item.SERVERPART_REGION}}</text></div>
<div class="enter">今日入区: {{item.VEHICLE_COUNT }}</div>
<div class="add">
<image class="addIcon" :src="Number(item.VEHICLE_RATE)>100?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':Number(item.VEHICLE_RATE)===100?'':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<text :class="item.VEHICLE_RATE > 150?'orangeRed':''"> {{ item.VEHICLE_RATE }}%</text>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "specialCase",
data(){
return {
single:'',//
endData:'', //
startTime:'',//
endTime:'',//
selectTab:1,// tab
firstData:[],// tab1
secondData:[],// tab2
queryTime:'',//
time:'',// time
}
},
onLoad(query){
//
this.queryTime = query.time
let date //
if(this.queryTime){
date = new Date(this.queryTime)
}else{
date = new Date()
}
const y = date.getFullYear()
let m = date.getMonth() + 1
let d = date.getDate()
if (m<10){
m = '0'+m
}
//
let h = date.getHours()
// 0
if (h-1<0){
d = d -1
}
if (d<10){
d = '0'+ d
}
this.endData = `${y}-${m}-${d}`
this.single = `${y}-${m}-${d}`
this.time = `${y}-${m}-${d}`
console.log('h',h)
// 12 0
if (h===0){
h = 24
}
if (this.queryTime){
this.startTime = h
}else{
this.startTime = h - 1
}
this.endTime = h
this.handleTab(1)
},
methods:{
//
bindDateChange(e){
const date = new Date(e.detail.value)
let m = date.getMonth() + 1
if (m<10){
m = '0' + m
}
this.thisMonth = m
this.single = e.detail.value
let d = this.$util.getThisMonthDay(e.detail.value)
this.endData = e.detail.value + '-' + d
//
this.firstData = []
this.secondData = []
//
this.onRefresh()
},
handleTab(val){
this.selectTab = val
if (val === 2 && this.secondData.length===0){
const req= {
StatisticsDate:this.time,
StatisticsHour:this.startTime,
StatisticsType:2
}
request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{
res.Result_Data.List.forEach(item=>{
item.name = item.SERVERPART_NAME.split('服务区')[0]
})
this.secondData = res.Result_Data.List
console.log('this.secondData',this.secondData)
})
}else if(val === 1 && this.firstData.length===0){
const req= {
StatisticsDate:this.time,
StatisticsHour:this.startTime,
StatisticsType:1
}
request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{
res.Result_Data.List.forEach(item=>{
item.name = item.SERVERPART_NAME.split('服务区')[0]
})
this.firstData = res.Result_Data.List
})
}
},
onRefresh(){
this.handleTab(this.selectTab)
}
}
}
</script>
<style scoped lang="scss">
.main{
width: 100%;
box-sizing: border-box;
padding: 0 16px;
.select{
margin-left: 8px;
display: inline-block;
.time {
display: flex;
align-items: center;
margin-right: 4px;
.day {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #782717;
line-height: 44rpx;
margin-right: 4px;
}
.uni-input {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ae664e;
line-height: 36rpx;
}
.icon {
width: 24px;
height: 16px;
}
}
}
.list{
.tabs{
width: 100%;
display: flex;
.tabItem{
width: 50%;
height: 40px;
font-size: 12px;
line-height: 40px;
text-align: center;
background: #f0f0f0;
border-radius: 10px 10px 0 0;
}
.selectTab{
width: 50%;
height: 40px;
font-size: 12px;
line-height: 40px;
text-align: center;
background: #fff;
border-radius: 10px 10px 0 0;
}
}
.item{
width: 100%;
display: flex;
margin-bottom: 5px;
margin-top: 10px;
.box{
width: 100%;
display: flex;
align-items: center;
.name{
width: 40%;
font-size: 16px;
font-weight: 600;
text-align: left;
white-space: nowrap;
display: flex;
align-items: baseline;
.normal{
font-size: 12px;
font-weight: 400;
.unit{
color:#ccc;
}
}
}
.enter{
font-size: 12px;
width: 30%;
text-align: left;
white-space: nowrap;
}
.add{
font-size: 12px;
width: 30%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
.orangeRed{
color:orangered;
}
.addIcon{
width: 20px;
height: 20px;
}
}
}
}
::-webkit-scrollbar {
width: 4px;
height: 4px;
color:transparent;
}
/*定义滚动条轨道 内阴影+圆角*/
::-webkit-scrollbar-track {
border-radius: 10px;
background-color:transparent;
}
/*定义滑块 内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 10px;
background-color:transparent;
}
.notice{
font-size: 12px;
color: gray;
}
}
}
</style>

View File

@ -59,7 +59,7 @@
</view>
</view>
</view>
<view class="detail">
<view class="detail" v-if="!loadMore">
<view class="detailItem">
<p class="itemName">
长款金额<text class="itemUnit">/</text>
@ -126,7 +126,14 @@
</view>
</view>
</view>
<view class="menu">
<div class="more" :style="{top:loadMore?'-270px':'-65px',paddingTop:loadMore?'16px':'12px'}" @click="handleChangeLoadMore">
<image :class="loadMore?'img':'img rate'" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</div>
<!-- 首页除顶部外,剩下的部分是自适应的高度,但是上移本身高度不变内容变了就会在底部留白,所以计算好内容的高度 在切换是否展示的时候 改变高度-->
<!-- 暂无更优法 -->
<view class="menu" :style="{top:loadMore?'-270px':'-65px',height:loadMore?
selectTab===3?'calc(1445px + env(safe-area-inset-bottom) + env(safe-area-inset-top) + env(safe-area-inset-bottom))':selectTab===2?'calc(1130px + env(safe-area-inset-bottom) + env(safe-area-inset-top))':'calc(965px + env(safe-area-inset-bottom) + env(safe-area-inset-top))':
selectTab===3?'calc(1445px + env(safe-area-inset-bottom) + env(safe-area-inset-top) + env(safe-area-inset-bottom))':selectTab===2?'calc(1130px + env(safe-area-inset-bottom) + env(safe-area-inset-top))':'calc(965px + env(safe-area-inset-bottom) + env(safe-area-inset-top))'}">
<image class="topBg" src="https://eshangtech.com/ShopICO/ahyd-BID/index/menuBg.png"></image>
<view class="content">
<div class="tabType">
@ -172,7 +179,7 @@
</view>
<view class="chart">
<!-- 123就是对应的第几个标题选中 -->
<!-- 123就是对应的第几个标题选中 老项目复制的 -->
<div v-show="selectTab===1" v-if="modelProgress.length > 0 && theRequest.ProvinceCode==340000">
<div>
<div class="operation-c-list" v-for="(item,o) in modelProgress" :key="o">
@ -340,7 +347,19 @@
</div>
</view>
</view>
<div class="notice" v-if="isShow">
<!-- isShow-->
<div class="notice" v-if="special" style="background: rgba(203, 26, 26, 1)">
<view class="left">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/dangerous.svg"></image>
<view class="text">
<p class="name">五一流量预警</p>
<!-- <p class="desc"></p>-->
</view>
</view>
<view class="right" @click="handleSearch('special')">去查看</view>
</div>
<div class="notice" v-if="isShow" style="bottom: 200px;">
<view class="left">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/warning.svg"></image>
<view class="text">
@ -348,7 +367,7 @@
<!-- <p class="desc"></p>-->
</view>
</view>
<view class="right" @click="handleSearch">去查看</view>
<view class="right" @click="handleSearch('other')">去查看</view>
</div>
<uni-popup ref="popup" :show="popupShow" :type="popupType" :round="popup" @hidePopup="closePop">
<div class="popupIndex">
@ -462,6 +481,8 @@ export default {
isSuccess:false,//
isReturn : true,
isSuggestion:false,//
loadMore:true,//
special:true
}
},
watch:{
@ -470,15 +491,18 @@ export default {
handler:function (value){
let userInfo = uni.getStorageSync('vuex')
userInfo = JSON.parse(userInfo)
console.log('userInfo11',userInfo)
//
if (userInfo.userData.AuthorityInfo['89a1f248-2113-4d57-84b1-c2e6edb9e8ee']===1){
this.isReturn = false
}else{
uni.redirectTo({
url:`/pages/commercialBI/noData?type=noAuthor`
})
}
if (userInfo.userData.AuthorityInfo['e2fb458b-d1bd-48fa-805e-fc93dc71efb7'] === 1 || userInfo.userData.AuthorityInfo['ea2fc404-d924-4c88-98de-1f4d96137745'] === 1){
this.getSuggestion()
}else{
uni.navigateTo({
url:`/pages/commercialBI/noData?type=index`
})
}
//
this.seat = uni.getStorageSync('seatInfo')
@ -580,6 +604,10 @@ export default {
//
if (userInfo.userData.AuthorityInfo['89a1f248-2113-4d57-84b1-c2e6edb9e8ee']===1){
this.isReturn = false
}else{
uni.redirectTo({
url:`/pages/commercialBI/noData?type=noAuthor`
})
}
if (!this.isReturn){
let userInfo = uni.getStorageSync('vuex')
@ -650,6 +678,9 @@ export default {
},
methods:{
...mapActions(['memberLogin','getLoginCode']),
handleChangeLoadMore(){
this.loadMore = !this.loadMore
},
//
handleStoreUpload(){
this.popupShow = true
@ -837,13 +868,21 @@ export default {
handleReg(){
this.$util.toNextRoute('redirectTo', '/pages/register/register')
},
handleSearch(){
handleSearch(type){
if (type ==='special'){
if(!this.isReturn){
this.special=false
this.$util.toNextRoute('navigateTo', '/pages/commercialBI/specialCase')
}
}else{
let req = {
SuggestionIds:this.isShowId
}
request.$webGet('CommercialApi/Suggestion/RecordReadingLog',req).then(()=>{
this.$util.toNextRoute('navigateTo', '/pages/suggestion/suggestion')
})
}
},
//
onRefresh(){
@ -1202,9 +1241,9 @@ export default {
<style scoped lang="scss">
$iphoneHeight: env(safe-area-inset-bottom);
.main {
min-height: 100vh;
height: 100vh;
width: 100%;
padding-bottom: calc(44px + env(safe-area-inset-bottom));
padding-bottom: calc( env(safe-area-inset-bottom));
.header {
width: 100%;
height: 512px;
@ -1320,7 +1359,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
display: flex;
align-items: center;
justify-content: flex-start;
margin: 12px 0 0;
margin: 6px 0 0;
.allPrice {
font-size: 56rpx;
font-family: DINAlternate-Bold, DINAlternate;
@ -1342,7 +1381,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
.addBox {
width: 100%;
margin-top: 12px;
margin-top: 6px;
display: flex;
justify-content: space-between;
align-items: center;
@ -1390,7 +1429,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
.type {
width: 100%;
height: 45px;
margin-top: 24px;
margin-top: 8px;
.item {
width: 50%;
display: flex;
@ -1443,7 +1482,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
background: linear-gradient(135deg, #fff2df 0%, #ffe3e5 100%);
box-shadow: 0rpx 0rpx 40rpx 0rpx rgba(244, 138, 143, 0.21);
border-radius: 8rpx;
margin-top: 24px;
margin-top: 12px;
margin-bottom: 16px;
.detailItem {
width: 33%;
@ -1493,6 +1532,21 @@ $iphoneHeight: env(safe-area-inset-bottom);
}
}
}
.more{
width: 100%;
display: flex;
justify-content: center;
position: relative;
padding-bottom: 12px;
.img{
width: 24px;
height: 24px;
transform: rotate(90deg);
}
.rate{
transform: rotate(-90deg)!important;
}
}
.menu {
width: 100vw;
position: relative;
@ -1504,6 +1558,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
background: #fff;
top: -16px;
z-index: 1;
.topBg {
position: absolute;
width: 100vw;

View File

@ -66,14 +66,11 @@
<p class="subTitle">产权单位</p>
<text class="text">{{info.ServerpartInfo.OWNEDCOMPANY?info.ServerpartInfo.OWNEDCOMPANY:'' }}</text>
</div>
<!-- <div class="word">-->
<!-- <p class="subTitle">介绍说明</p>-->
<!-- <text class="text" style="text-indent:28px">{{info.ServerpartInfo.SERVERPART_INFO?info.ServerpartInfo.SERVERPART_INFO:'' }}</text>-->
<!-- <div class="unqualifiedNeeds">-->
<!-- <text class="subTitle">介绍说明</text>-->
<!-- <text class="unqualNeedText" style="text-indent:28px">{{info.ServerpartInfo.SERVERPART_INFO?info.ServerpartInfo.SERVERPART_INFO:'' }}</text>-->
<!-- </div>-->
<div class="unqualifiedNeeds">
<text class="subTitle">介绍说明</text>
<text class="unqualNeedText" style="text-indent:28px">{{info.ServerpartInfo.SERVERPART_INFO?info.ServerpartInfo.SERVERPART_INFO:'' }}</text>
</div>
</div>
<div class="areaInfo" style="margin-top: 16px">
<p class="title">面积信息</p>
@ -105,13 +102,13 @@
</div>
<div class="right">
<div class="item">
<p :class="item.HASPANTRY?'text':'unText'">男厕<text style="margin-left: 4px">{{item.HASPANTRY?'(' + item.HASPANTRY+')':'' }}</text></p>
<p :class="item.HASPANTRY?'text':'unText'" style="display: flex;align-items: center"><image style="width: 16px;height: 16px;margin-right: 4px" src="https://eshangtech.com/ShopICO/ahyd-BID/service/manWc.svg"/>男厕<text style="margin-left: 4px">{{item.HASPANTRY?'(' + item.HASPANTRY+')':'' }}</text></p>
<p :class="item.HASTHIRDTOILETS?'text':'unText'">第三卫生间</p>
<p :class="item.HASCHILD?'text':'unText'">车辆维修</p>
<p :class="item.HASWATERROOM?'text':'unText'">开水器<text style="margin-left: 4px">{{item.HASWATERROOM?'(' + item.HASWATERROOM + ')':'' }}</text></p>
</div>
<div class="item">
<p :class="item.HASWIFI?'text':'unText'">女厕<text style="margin-left: 4px">{{item.HASWIFI?'(' + item.HASWIFI + ')':'' }}</text></p>
<p :class="item.HASWIFI?'text':'unText'" style="display: flex;align-items: center"><image style="width: 16px;height: 16px;margin-right: 4px" src="https://eshangtech.com/ShopICO/ahyd-BID/service/womanWc.svg"/>女厕<text style="margin-left: 4px">{{item.HASWIFI?'(' + item.HASWIFI + ')':'' }}</text></p>
<p :class="item.TOILETCOUNT?'text':'unText'">潮汐厕位<text style="margin-left: 4px">{{item.TOILETCOUNT?'(' + item.TOILETCOUNT + ')':'' }}</text></p>
<p :class="item.HASSHOWERROOM?'text':'unText'">车辆加水</p>
</div>

View File

@ -4,7 +4,7 @@
<div class="headerTop" :style="{ height: menu.bottom + 5 + 'px'}">
<view class="news" :style="{ top: menu.top+16 + 'px', lineHeight: menu.bottom - menu.top + 'px' }">
<view class="box">
<image class="img" src="/static/images/index/news.svg"></image>
<image @click="handleNews" class="img" src="/static/images/index/news.svg"></image>
<view class="red"></view>
</view>
</view>
@ -355,6 +355,9 @@ import Tabbar from "../../components/tabbar/tabbar.vue";
},
handleGoEmpower(){
this.$util.toNextRoute('navigateTo', '/pages/register/register')
},
handleNews(){
this.$util.toNextRoute('navigateTo', '/pages/commercialBI/specialCase')
}
},
}

View File

@ -129,6 +129,10 @@ const actions = {
data.WeChat_UserName = _user.WeChat_UserName
commit('setUser', data)
dispatch('getTodoList')
}else{
uni.redirectTo({
url:`/pages/commercialBI/noData?type=noAuthor`
})
}
})
}