This commit is contained in:
cclu 2023-07-13 17:21:30 +08:00
parent 73c3e955f6
commit 7b59c90510
5 changed files with 606 additions and 237 deletions

View File

@ -209,7 +209,7 @@
</div> </div>
<span class="serviceName">{{subItem.name}}</span> <span class="serviceName">{{subItem.name}}</span>
</div> </div>
<image class="topRight" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/> <!-- <image class="topRight" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/>-->
</div> </div>
<div class="childDetail" v-for="(thirdItem,thirdIndex) in subItem.regionList" :key="thirdIndex"> <div class="childDetail" v-for="(thirdItem,thirdIndex) in subItem.regionList" :key="thirdIndex">
<div class="thirdItem"> <div class="thirdItem">
@ -379,6 +379,8 @@ export default {
} }
}, },
onLoad(option){ onLoad(option){
console.log('option',option)
this.isShowAllProvince = option.mustAllProvince
this.backType = option.type this.backType = option.type
}, },
onShow(){ onShow(){
@ -441,6 +443,7 @@ export default {
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){ if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
this.isShowAllProvince = true this.isShowAllProvince = true
} }
console.log('this.isShowAllProvince',this.isShowAllProvince)
if (this.isShowAllProvince === true){ if (this.isShowAllProvince === true){
this.getDetail(this.theRequest) this.getDetail(this.theRequest)
}else{ }else{

View File

@ -80,8 +80,9 @@
<text class="projectTitle">经营项目</text> <text class="projectTitle">经营项目</text>
<text v-if="serviceList && serviceList.length>0" class="number">({{`${serviceList.length}`}})</text> <text v-if="serviceList && serviceList.length>0" class="number">({{`${serviceList.length}`}})</text>
</div> </div>
<scroll-view v-if="serviceList && serviceList.length>0" class="list" scroll-y="true" :scroll-with-animation="true"> <scroll-view class="list" scroll-y="true" :scroll-with-animation="true">
<div class="listItem" v-for="(item,index) in serviceList" :key="index" @click="handleShopDetail(item)"> <!-- @click="handleShopDetail(item)"-->
<div class="listItem" v-for="(item,index) in serviceList" :key="index" >
<div class="itemTop"> <div class="itemTop">
<div class="left"> <div class="left">
<div class="iconBox"> <div class="iconBox">
@ -91,7 +92,7 @@
<text class="name">{{item.SERVERPART_NAME}}</text> <text class="name">{{item.SERVERPART_NAME}}</text>
<div class="type"> <div class="type">
<image class="typeIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/brand/typeIcon.svg"></image> <image class="typeIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/brand/typeIcon.svg"></image>
<text class="text">{{typeObj[item.SERVERPART_TYPE]}}</text> <text class="text">{{item.SERVERPART_TYPE}}</text>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,30 +1,83 @@
<template> <template>
<div class="main"> <div class="main">
<div class="top"> <div class="top">
<image class="bg" src="/static/images/newCommercial/specialBg.png"/> <image class="bg" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/specialBg.png"/>
<div class="header" :style="{height:menu.height + 'px',top:menu.top+'px'}"> <div class="header" :style="{height:menu.height + 'px',top:menu.top+'px'}">
<image class="backArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/leftArrowWhite.svg" @click="handleBack"/> <image class="backArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/leftArrowWhite.svg" @click="handleBack"/>
<div class="timeSelect"> <div class="timeSelect">
<img class="selectIcon" src="/static/images/newCommercial/selectDate.png"/> <img class="selectIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/selectDate.png"/>
<picker mode="date" :value="searchText" :end="lastDay" @change="changeAllProvinceSearch" > <picker mode="date" :value="searchText" :end="lastDay" @change="bindDateChange" >
<view class="time"> <view class="time">
<view class="text">{{ searchText }}</view> <view class="text">{{ searchText }}</view>
<image class="icon" src="/static/images/newCommercial/arrow_bottom.svg"></image> <image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"></image>
</view> </view>
</picker> </picker>
</div>
</div>
<div class="topBox">
<div class="boxLeft">
<div class="headerTitle">实时分析</div>
<span class="notice">: 1个小时入区流量比5月同一时间流量增幅150%以上且每小时入区车辆超过100辆</span>
</div>
<div class="boxRight">
<span class="day">{{showDay}}</span>
<image class="dayBox" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/dayBox.png"/>
</div>
</div>
</div>
<div class="content">
<div class="contentTab">
<div :class="selectTab===1?'selectTab tabItem':'tabItem'" @click="handleTab(1)">{{`${startTime}时入区车流预警`}}</div>
<div :class="selectTab===2?'selectTab tabItem':'tabItem'" @click="handleTab(2)">{{endTime===24?`${endTime - 1}-0时入区车流排行`:`0-${startTime}时入区车流排行`}}</div>
</div>
<div class="noticeBox">
<span class="notice" v-if="selectTab===1">{{ `: 1个小时入区流量比${showMonth}月同一时间流量增幅150%以上且每小时入区车辆超过100辆` }}</span>
<span class="notice" v-if="selectTab===2">: 前20个从今日零时起至今流量与月均同时段增幅情况</span>
</div>
<div class="contentList" v-if="selectTab===1">
<div class="contentItem" :style="{borderBottom:index + 1===tableList.length?'0px solid #EEEEEE':'1px solid #EEEEEE'}" v-for="(item,index) in tableList" :key="index">
<div class="index">
<div class="boxBg"></div>
<span class="indexText" :style="{fontWeight:index<=2?'bold':'normal'}">{{index + 1}}</span>
</div>
<div class="serviceBox">
<span class="name">{{item.name}}</span>
<span class="position">{{item.SERVERPART_REGION}}</span>
</div>
<div class="numberBox">
<span class="number">{{item.VEHICLE_COUNT}}</span>
<span class="unit">/</span>
</div>
<div class="addBox">
<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'"/>
<span class="add">{{item.VEHICLE_RATE}}%</span>
</div>
</div> </div>
</div> </div>
<div class="topBox"> <div class="contentList" v-if="selectTab===2">
<div class="boxLeft"> <div class="contentItem" v-for="(item,index) in tableList" :key="index">
<div class="headerTitle">实时分析</div> <div class="index">
<span class="notice">: 1个小时入区流量比5月同一时间流量增幅150%以上且每小时入区车辆超过100辆</span> <div class="boxBg"></div>
</div> <span class="indexText" :style="{fontWeight:index<=2?'bold':'normal'}">{{index + 1}}</span>
<div class="boxRight"> </div>
<span class="day">{{showDay}}</span> <div class="serviceBox">
<image class="dayBox" src="/static/images/newCommercial/dayBox.png"/> <span class="name">{{item.name}}</span>
<span class="position">{{item.SERVERPART_REGION}}</span>
</div>
<div class="numberBox">
<span class="number">{{item.VEHICLE_COUNT}}</span>
<span class="unit">/</span>
</div>
<div class="addBox">
<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'"/>
<span class="add">{{item.VEHICLE_RATE}}%</span>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
@ -95,129 +148,97 @@ export default {
data(){ data(){
const lastDay = this.$util.cutDate(new Date(), 'YYYY-MM-DD', -1) const lastDay = this.$util.cutDate(new Date(), 'YYYY-MM-DD', -1)
return { return {
single:'',// single:'',//
endData:'', // endData:'', //
startTime:'',// startTime:'',//
endTime:'',// endTime:'',//
selectTab:1,// tab selectTab: 1,// tab
firstData:[],// tab1 tableList:[],//
secondData:[],// tab2 time:'',// time
queryTime:'',// statusBarHeight:'',
time:'',// time menu:'',
statusBarHeight:'', searchText:'',
menu:'', showMonth:'',//
searchText:'', showDay:''//
showDay:''//
} }
}, },
onLoad(query){ onLoad(){
// //
let systemInfo = uni.getSystemInfoSync() let systemInfo = uni.getSystemInfoSync()
this.statusBarHeight = Number(systemInfo.statusBarHeight) this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect() this.menu = uni.getMenuButtonBoundingClientRect()
let storeTime = uni.getStorageSync('lastDay')
if (storeTime){
this.time = storeTime
}
this.searchText = this.time
const date = new Date(this.time) let storeTime = uni.getStorageSync('lastDay')
let d = date.getDate() if (storeTime){
if (d<10){ this.time = storeTime
d = '0'+d }
} this.searchText = this.time
this.showDay = d // this.searchText = '2023-06-21'
const date = new Date(this.time)
// let m = date.getMonth()
this.queryTime = query.time this.showMonth = m
// let date // let d = date.getDate()
// if(this.queryTime){ if (d<10){
// date = new Date(this.queryTime) d = '0'+d
// }else{ }
// date = new Date() this.showDay = d
// } const nowDate = new Date()
// const y = date.getFullYear() let h = nowDate.getHours()
// let m = date.getMonth() + 1 this.startTime = h - 1
// let d = date.getDate() // this.startTime = 19
// if (m<10){ //
// m = '0'+m this.handleTab(1)
// }
// //
//
// 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:{ methods:{
// //
bindDateChange(e){ bindDateChange(e){
const date = new Date(e.detail.value) const date = new Date(e.detail.value)
let m = date.getMonth() + 1 let m = date.getMonth()
if (m<10){ this.showMonth = m
m = '0' + m const d = date.getDate()
} this.searchText = e.detail.value
this.thisMonth = m this.showDay = d
this.single = e.detail.value //
let d = this.$util.getThisMonthDay(e.detail.value) this.onRefresh()
this.endData = e.detail.value + '-' + d
//
this.firstData = []
this.secondData = []
//
this.onRefresh()
}, },
handleTab(val){ handleTab(val){
this.selectTab = val this.selectTab = val
if (val === 2 && this.secondData.length===0){ if (val === 2 ){
const req= { const req= {
StatisticsDate:this.time, StatisticsDate:this.searchText,
StatisticsHour:this.startTime, StatisticsHour:this.startTime,
StatisticsType:2 StatisticsType:2,
ShowCount:20
} }
request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{ request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{
res.Result_Data.List.forEach(item=>{ res.Result_Data.List.forEach(item=>{
item.name = item.SERVERPART_NAME.split('服务区')[0] item.name = item.SERVERPART_NAME.split('服务区')[0]
}) })
this.secondData = res.Result_Data.List this.tableList = res.Result_Data.List
console.log('this.secondData',this.secondData)
}) })
}else if(val === 1 && this.firstData.length===0){ }else if(val === 1 ){
const req= { const req= {
StatisticsDate:this.time, StatisticsDate:this.searchText,
StatisticsHour:this.startTime, StatisticsHour:this.startTime,
StatisticsType:1 StatisticsType:1,
ShowCount:20
} }
request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{ request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{
res.Result_Data.List.forEach(item=>{ res.Result_Data.List.forEach(item=>{
item.name = item.SERVERPART_NAME.split('服务区')[0] item.name = item.SERVERPART_NAME.split('服务区')[0]
}) })
this.firstData = res.Result_Data.List this.tableList = res.Result_Data.List
}) })
} }
}, },
onRefresh(){ onRefresh(){
this.handleTab(this.selectTab) this.handleTab(this.selectTab)
} },
handleBack(){
uni.navigateBack({
delta: 1
});
}
} }
} }
</script> </script>
@ -305,7 +326,7 @@ export default {
line-height: 28px; line-height: 28px;
position: absolute; position: absolute;
top: 50%;left: 50%; top: 50%;left: 50%;
transform: translate(-14px,-7px); transform: translate(-50%,-7px);
z-index:3; z-index:3;
} }
.dayBox{ .dayBox{
@ -317,6 +338,137 @@ export default {
} }
} }
} }
.content{
width: 100%;
height: calc(100vh - 212px);
box-sizing: border-box;
padding: 16px;
.contentTab{
width: 100%;
height: 38px;
border-radius: 4px;
background: #F3F1F5;
box-sizing: border-box;
padding: 4px;
display: flex;
.tabItem{
width: 50%;
height: 100%;
text-align: center;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 30px;
border-radius: 4px;
}
.selectTab{
background: #fff;
color: #21ADBA!important;
}
}
.noticeBox{
width: 100%;
border-bottom: 1px solid #ccc;
margin-top: 4px;
.notice{
font-size: 12px;
color: gray;
}
}
.contentList{
width: 100%;
border-radius: 8px;
margin-top: 16px;
padding-bottom: 16px;
overflow: hidden;
.contentItem{
background: #fff;
padding: 19px 16px;
display: flex;
justify-content: space-between;
align-items: center;
.index{
width: 16px;
height: 16px;
position: relative;
.boxBg{
width: 16px;
height: 16px;
background: #10BFCE;
filter: blur(4px);
position: absolute;
top: 0;left: 0;
}
.indexText{
position: absolute;
top: 50%;left: 50%;
transform: translate(-50%,-50%);
z-index: 2;
font-size: 16px;
font-family: DingTalk-JinBuTi, DingTalk;
font-weight: normal;
color: #160002;
line-height: 20px;
}
}
.serviceBox{
width: 35%;
display: inline-block;
margin-left: 8px;
.name{
font-size: 18px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 26px;
}
.position{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
}
}
.numberBox{
width: 30%;
.number{
font-size: 20px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
line-height: 24px;
}
.unit{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #A69E9F;
line-height: 20px;
margin-left: 2px;
}
}
.addBox{
width: calc(30% - 20px);
display: flex;
align-items: center;
.addIcon{
width: 14px;
height: 14px;
}
.add{
font-size: 20px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #E83944;
line-height: 24px;
}
}
}
}
}
} }

View File

@ -48,7 +48,7 @@
<scroll-view scroll-y="true"> <scroll-view scroll-y="true">
<view v-if="selectTab===1" class="serviceList" style="height:calc(100vh - 260px);"> <view v-if="selectTab===1" class="serviceList" style="height:calc(100vh - 260px);">
<view v-if="serviceList.length>0"> <view v-if="serviceList.length>0">
<view class="serviceItem" v-for="(item,index) in serviceList" :key="index"> <view class="serviceItem" v-for="(item,index) in serviceList" :key="index" @click="handleOpenDetail(item)">
<view class="itemTitle"> <view class="itemTitle">
<span class="title">{{item.SERVERPART_NAME}}</span> <span class="title">{{item.SERVERPART_NAME}}</span>
<span :class="item.EXAMINE_MQUARTER!=='0'?'secondUnit':'unit'">{{item.EXAMINE_MQUARTER!=='0'?item.EXAMINE_MQUARTER==='1'?'一'+'季度':item.EXAMINE_MQUARTER==='2'?'二'+'季度':item.EXAMINE_MQUARTER==='3'?'三'+'季度':'四' + '季度':'月度'}}</span> <span :class="item.EXAMINE_MQUARTER!=='0'?'secondUnit':'unit'">{{item.EXAMINE_MQUARTER!=='0'?item.EXAMINE_MQUARTER==='1'?'一'+'季度':item.EXAMINE_MQUARTER==='2'?'二'+'季度':item.EXAMINE_MQUARTER==='3'?'三'+'季度':'四' + '季度':'月度'}}</span>
@ -65,9 +65,14 @@
</view> </view>
</view> </view>
<view class="detailMessage"> <view class="detailMessage">
<view class="message" style="margin-bottom: 4px"> <view class="message" style="margin-bottom: 4px;display: flex;justify-content: space-between">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/time.svg"></image> <div class="box">
<span class="value">{{subItem.SERVERPARTList[0].EXAMINE_DATE}}</span> <image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/time.svg"></image>
<span class="value">{{subItem.SERVERPARTList[0].EXAMINE_DATE}}</span>
</div>
<div style="display: inline-block;width: 40px;height: 16px;display: flex;justify-content: flex-end" @click="handleShowPopup(4,subItem)" >
<image class="moreIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/>
</div>
</view> </view>
<view class="message"> <view class="message">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/user.svg"></image> <image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/user.svg"></image>
@ -188,7 +193,7 @@
<uniPopup type="bottom" :round="true" :show="showPop" @hidePopup="hidePopup"> <uniPopup type="bottom" :round="true" :show="showPop" @hidePopup="hidePopup">
<view class="popup" :style="{height:selectTab!==2?'60vh':'78vh'}"> <view class="popup" :style="{height:selectTab!==2?'60vh':'78vh'}">
<view class="top"> <view class="top">
<text class="popupTitle">{{ selectTab===1?'选择片区':selectTab===2?`${popupServiceName}`:'会议内容' }}</text> <text class="popupTitle">{{ selectTab===1?popupShow===4?'':'选择片区':selectTab===2?`${popupServiceName}`:'会议内容' }}</text>
<image @click="hidePopup" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image> <image @click="hidePopup" class="close" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/close.svg"></image>
</view> </view>
<view class="areaList" v-if="popupShow===1"> <view class="areaList" v-if="popupShow===1">
@ -233,6 +238,24 @@
<span class="value">{{popupMeetDetail.MEETING_CONTENT}}</span> <span class="value">{{popupMeetDetail.MEETING_CONTENT}}</span>
</view> </view>
</view> </view>
<view class="examineList" v-if="popupShow===4">
<scroll-view scroll-y="true" style="height: calc(60vh - 40px)">
<view class="examineItem" v-for="(item,index) in examineList" :key="index">
<view class="itemTop">{{item.REGION_NAME}}<span style="margin-left: 4px">(<span style="color: red">{{`${item.mark}`}}</span>)</span></view>
<div class="itemMessage" v-for="(subItem,subIndex) in item.SERVERPARTList" :key="subIndex" @click="handleChangeChild(subItem)">
{{subItem.EXAMINE_CONTENT}}<span style="margin-left: 4px">(<span style="color: red">{{subItem.DEDUCTION_SCORE}}</span>)</span>
<view class="childItem" v-if="subItem.showChild">
<span>{{subItem.DEDUCTION_REASON}}</span>
<span>(<span style="color: red">{{subItem.DEDUCTION_SCORE}}</span>;</span>
<span style="margin-left: 4px">备注: {{subItem.EXAMINEDETAIL_DESC}})</span>
<div class="imgList">
<image v-for="(imgItem,imgIndex) in subItem.imgList" :key="imgIndex" class="img" :src="imgItem" :data-src="imgItem" @click.stop="previewImage"></image>
</div>
</view>
</div>
</view>
</scroll-view>
</view>
</view> </view>
</uniPopup> </uniPopup>
</view> </view>
@ -276,7 +299,8 @@ export default {
popupServiceShowList:[],// popupServiceShowList:[],//
popupServiceName:'',// popupServiceName:'',//
popupMeetDetail:{},// popupMeetDetail:{},//
come:'',// come:'',//
examineList:[]
} }
}, },
onLoad(query){ onLoad(query){
@ -312,6 +336,9 @@ export default {
_this.getThisMonth() _this.getThisMonth()
}, },
methods:{ methods:{
handleOpenDetail(item){
console.log('item',item)
},
// //
getThisMonth(){ getThisMonth(){
const date = new Date() const date = new Date()
@ -357,10 +384,38 @@ export default {
this.popupTab = list this.popupTab = list
}else if (value===3){ }else if (value===3){
this.popupMeetDetail = obj.list[0].SERVERPARTList[0] this.popupMeetDetail = obj.list[0].SERVERPARTList[0]
}else if(value===4){
this.handleGetExamineDetail(obj)
} }
// //
this.showPop = true this.showPop = true
}, },
async handleGetExamineDetail(obj){
const total = await request.$webGet(`CommercialApi/Examine/WeChat_GetExamineDetail`,{ExamineId: obj.SERVERPARTList[0].EXAMINE_ID})
let list = total.Result_Data.List
list.forEach(item=>{
let mark = 0
item.SERVERPARTList.forEach(subItem=>{
subItem.showChild = true
mark+=subItem.DEDUCTION_SCORE
subItem.imgList = subItem.EXAMINEDETAIL_URL.split('')
})
item.mark = mark
})
console.log('list',list)
this.examineList = list
},
handleChangeChild(subItem){
console.log('subItem',subItem)
subItem.showChild = !subItem.showChild
},
previewImage(event){
console.log('event',event)
wx.previewImage({
current: event.currentTarget.dataset.src, // http
urls: [event.currentTarget.dataset.src] // http
})
},
// //
hidePopup(){ hidePopup(){
this.showPop = false this.showPop = false
@ -876,6 +931,10 @@ export default {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
} }
.moreIcon{
width: 16px;
height: 16px;
}
} }
} }
} }
@ -1269,6 +1328,51 @@ export default {
} }
} }
} }
.examineList{
.examineItem{
width: 100%;
background: #F5F2F2;
box-sizing: border-box;
text-align: left;
border: 1px solid #ccc;
margin-bottom: 12px;
.itemTop{
font-size: 16px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #000;
line-height: 18px;
box-sizing: border-box;
padding: 8px;
border-bottom: 1px solid #ccc;
}
.itemMessage{
width: 100%;
box-sizing: border-box;
padding: 8px;
border-bottom: 1px solid #ccc;
.box{
width: 100%;
}
.childItem{
width: 100%;
box-sizing: border-box;
padding: 8px;
background: #fff;
.imgList{
width: 100%;
.img{
width: 40px;
height: 40px;
margin-right: 8px;
}
}
}
}
}
}
} }
::-webkit-scrollbar { ::-webkit-scrollbar {
width: 4px; width: 4px;

View File

@ -1,6 +1,7 @@
<template> <template>
<view class="main"> <view class="main">
<view class="header" :style="{height:loadMore?'510px':'328px'}"> <!-- 根据要显示的内容 切换高度 -->
<view class="header" :style="{height:loadMore?`${menu.bottom+428}px`:`${menu.bottom+245}px`}">
<div class="headerTop" :style="{ height: menu.bottom + 5 + 'px'}"> <div class="headerTop" :style="{ height: menu.bottom + 5 + 'px'}">
<view class="selectTime" :style="{ top: menu.top + (menu.height - 22) / 2 + 'px' }"> <view class="selectTime" :style="{ top: menu.top + (menu.height - 22) / 2 + 'px' }">
<image class="dateIcon" src="/static/images/index/dateTime.svg"></image> <image class="dateIcon" src="/static/images/index/dateTime.svg"></image>
@ -14,7 +15,7 @@
</picker> </picker>
</view> </view>
</div> </div>
<div class="storeDetail" :style="{ top: menu.bottom + 13 + 'px',height:loadMore?'198px':'46px'}"> <div class="storeDetail" :style="{ top: menu.bottom + 13 + 'px',height:loadMore?'200px':'38px'}">
<p class="storeName">门店上传<span class="num">{{showTableData.Revenue_Upload?showTableData.Revenue_Upload:'-'}}</span>/{{allShopCount?allShopCount:'-'}}</p> <p class="storeName">门店上传<span class="num">{{showTableData.Revenue_Upload?showTableData.Revenue_Upload:'-'}}</span>/{{allShopCount?allShopCount:'-'}}</p>
<div class="detailBox"> <div class="detailBox">
<div class="detailTop"> <div class="detailTop">
@ -45,7 +46,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="detailBottom" :style="{height: loadMore?'208px':'46px'}"> <div class="detailBottom" :style="{height: loadMore?'208px':'38px'}">
<div class="searchBox" v-if="!loadMore" @click="handleChangeLoadMore"> <div class="searchBox" v-if="!loadMore" @click="handleChangeLoadMore">
<text class="searchText">查看更多</text> <text class="searchText">查看更多</text>
<image class="searchIcon" :style="{transform: loadMore?'':'rotate(180deg)'}" src="https://eshangtech.com/ShopICO/ahyd-BID/home/downLoad.svg"/> <image class="searchIcon" :style="{transform: loadMore?'':'rotate(180deg)'}" src="https://eshangtech.com/ShopICO/ahyd-BID/home/downLoad.svg"/>
@ -94,7 +95,9 @@
</view> </view>
</view> </view>
</div> </div>
<image v-if="loadMore" @click="handleChangeLoadMore" class="noShowMore" src="https://eshangtech.com/ShopICO/ahyd-BID/home/downLoad.svg"/> <div class="naShowMoreBox" @click="handleChangeLoadMore" >
<image v-if="loadMore" class="noShowMore" src="https://eshangtech.com/ShopICO/ahyd-BID/home/downLoad.svg"/>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -109,6 +112,7 @@
</div> </div>
<div class="otherFunBox"> <div class="otherFunBox">
<!-- 防止背景图变形 -->
<div class="otherFunItem" style="height:calc(((100vw - 9px)/2)/2.31);background-image: url('https://eshangtech.com/ShopICO/ahyd-BID/home/basic.svg')" @click="handleGoOtherFun(1)"> <div class="otherFunItem" style="height:calc(((100vw - 9px)/2)/2.31);background-image: url('https://eshangtech.com/ShopICO/ahyd-BID/home/basic.svg')" @click="handleGoOtherFun(1)">
<p class="itemTitle">基础信息</p> <p class="itemTitle">基础信息</p>
<image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/home/food.svg"/> <image class="itemImg" src="https://eshangtech.com/ShopICO/ahyd-BID/home/food.svg"/>
@ -130,24 +134,36 @@
</view> </view>
<view class="carWarning" v-if="special"> <view class="carWarning" style="height: calc((100vw - 32px) / 2.15)" v-if="special">
<div class="warningBox"> <div class="carWarningTop">
<image class="warningIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/home/carIcon.svg"/> <div class="warningBox">
<div class="trafficBox"> <image class="warningIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/home/carIcon.svg"/>
<text class="trafficCar">车流预警</text> <div class="trafficBox">
<text class="trafficCar">车流预警</text>
</div>
</div>
<div class="moreStoreBox" @click="handleGoWarning">
<span class="moreText">更多记录</span>
<image class="moreIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/>
</div> </div>
</div> </div>
<div class="waringList"> <div class="contentList" >
<div class="waringItem"> <div class="contentItem" v-for="(item,index) in warningList" :key="index">
<div class="warningIndex"> <div class="index">
<div class="indexBg"></div> <div class="boxBg"></div>
<text>1</text> <span class="indexText">{{index + 1}}</span>
</div>
<div class="serviceBox">
<span class="name">{{item.name}}</span>
<span class="position">{{item.SERVERPART_REGION}}</span>
</div>
<div class="numberBox">
<span class="number">{{item.VEHICLE_COUNT}}</span>
<span class="unit">/</span>
</div> </div>
<div class="serviceName">丰乐<span class="serviceUnit">西区</span></div>
<div class="carNumber">1026<span class="numberUnit">/</span></div>
<div class="addBox"> <div class="addBox">
<image class="addIcon"/> <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'"/>
<text class="addText">743%</text> <span class="add">{{item.VEHICLE_RATE}}%</span>
</div> </div>
</div> </div>
</div> </div>
@ -161,6 +177,10 @@
<image class="tabItemIcon" :src="item.imgUrl"/> <image class="tabItemIcon" :src="item.imgUrl"/>
<text :class="selectBigTab===item.value?'selectTabItem':'tabItemText'">{{item.text}}</text> <text :class="selectBigTab===item.value?'selectTabItem':'tabItemText'">{{item.text}}</text>
</div> </div>
<div class="moreStoreBox" @click="handleGoCarBi" v-if="selectBigTab===1">
<span class="moreText">更多记录</span>
<image class="moreIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/>
</div>
</div> </div>
</div> </div>
@ -704,16 +724,16 @@
<!-- </view>--> <!-- </view>-->
<!-- </view>--> <!-- </view>-->
<!--&lt;!&ndash; isShow&ndash;&gt;--> <!--&lt;!&ndash; isShow&ndash;&gt;-->
<div class="notice" v-if="special" style="background: rgba(203, 26, 26, 1)"> <!-- <div class="notice" v-if="special" style="background: rgba(203, 26, 26, 1)">-->
<view class="left"> <!-- <view class="left">-->
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/dangerous.svg"></image> <!-- <image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/dangerous.svg"></image>-->
<view class="text"> <!-- <view class="text">-->
<p class="name">五一流量预警</p> <!-- <p class="name">五一流量预警</p>-->
<!-- <p class="desc"></p>--> <!--&lt;!&ndash; <p class="desc"></p>&ndash;&gt;-->
</view> <!-- </view>-->
</view> <!-- </view>-->
<view class="right" @click="handleSearch('special')">去查看</view> <!-- <view class="right" @click="handleSearch('special')">去查看</view>-->
</div> <!-- </div>-->
<div class="notice" v-if="isShow" style="bottom: 200px;"> <div class="notice" v-if="isShow" style="bottom: 200px;">
<view class="left"> <view class="left">
@ -724,17 +744,17 @@
</view> </view>
<view class="right" @click="handleSearch('other')">去查看</view> <view class="right" @click="handleSearch('other')">去查看</view>
</div> </div>
<!-- <uni-popup ref="popup" :show="popupShow" :type="popupType" :round="popup" @hidePopup="closePop">--> <uni-popup ref="popup" :show="popupShow" :type="popupType" :round="popup" @hidePopup="closePop">
<!-- <div class="popupIndex">--> <div class="popupIndex">
<!-- <div class="popupTop">未上传门店: </div>--> <div class="popupTop">未上传门店: </div>
<!-- <div class="bodyList">--> <div class="bodyList">
<!-- <div class="item" v-for="(item,index) in bodyList" :key="index">--> <div class="item" v-for="(item,index) in bodyList" :key="index">
<!-- <div class="index">{{index + 1<10 ? '0' + (index + 1):index + 1}}</div>--> <div class="index">{{index + 1<10 ? '0' + (index + 1):index + 1}}</div>
<!-- <div class="title">{{item.Serverpart_Name}}{{item.ShopName}}</div>--> <div class="title">{{item.Serverpart_Name}}{{item.ShopName}}</div>
<!-- </div>--> </div>
<!-- </div>--> </div>
<!-- </div>--> </div>
<!-- </uni-popup>--> </uni-popup>
<Tabbar ref="tabbar" :page="page"></Tabbar> <Tabbar ref="tabbar" :page="page"></Tabbar>
</view> </view>
</template> </template>
@ -839,6 +859,7 @@ export default {
special:false, special:false,
allTrafficList:[],// allTrafficList:[],//
showTrafficList:[],// showTrafficList:[],//
warningList:[]//
} }
}, },
watch:{ watch:{
@ -1066,7 +1087,7 @@ export default {
let list1 = JSON.parse(JSON.stringify(res)) // let list1 = JSON.parse(JSON.stringify(res)) //
let list2 = JSON.parse(JSON.stringify(res)) // let list2 = JSON.parse(JSON.stringify(res)) //
let list3 = JSON.parse(JSON.stringify(res)) // let list3 = JSON.parse(JSON.stringify(res)) //
//
for (let i=0;i<=list1.length - 1;i++){ for (let i=0;i<=list1.length - 1;i++){
for (let j=0;j<=list1.length - i - 1 ;j++){ for (let j=0;j<=list1.length - i - 1 ;j++){
if (list1[j] && list1[j + 1] && list1[j].Vehicle_Count!==null && list1[j+1].Vehicle_Count!==null){ if (list1[j] && list1[j + 1] && list1[j].Vehicle_Count!==null && list1[j+1].Vehicle_Count!==null){
@ -1100,12 +1121,12 @@ export default {
} }
} }
} }
// 20
allList.push(list1.slice(0,20)) allList.push(list1.slice(0,20))
allList.push(list2.slice(0,20)) allList.push(list2.slice(0,20))
allList.push(list3.slice(0,20)) allList.push(list3.slice(0,20))
this.allTrafficList = allList this.allTrafficList = allList
this.showTrafficList = this.allTrafficList[0] this.showTrafficList = this.allTrafficList[this.selectSmallTab - 1]
console.log('this.allTrafficList',this.allTrafficList) console.log('this.allTrafficList',this.allTrafficList)
uni.hideLoading() uni.hideLoading()
}, },
@ -1115,6 +1136,12 @@ export default {
handleChangeBigSelect(val){ handleChangeBigSelect(val){
this.selectBigTab = val this.selectBigTab = val
}, },
handleGoCarBi(){
this.$util.toNextRoute('navigateTo', `/pages/commercialBI/carPortrait?mustAllProvince=${true}`)
},
handleGoWarning(){
this.$util.toNextRoute('navigateTo', `/pages/commercialBI/specialCase`)
},
handleChangeSmallSelect(val){ handleChangeSmallSelect(val){
console.log('val',val) console.log('val',val)
this.selectSmallTab = val this.selectSmallTab = val
@ -1288,6 +1315,8 @@ export default {
this.getUnUpLoadList() this.getUnUpLoadList()
// //
this.handleGetTrafficList() this.handleGetTrafficList()
//
this.handleGetWarningList()
} else if (this.user.Membership_Id){ // } else if (this.user.Membership_Id){ //
// //
// if (!this.PushAuthority){return} // if (!this.PushAuthority){return}
@ -1309,6 +1338,8 @@ export default {
this.getUnUpLoadList() this.getUnUpLoadList()
// //
this.handleGetTrafficList() this.handleGetTrafficList()
//
this.handleGetWarningList()
} }
// //
@ -1322,6 +1353,41 @@ export default {
this.getRankContent() this.getRankContent()
} }
}, },
handleGetWarningList(){
console.log('single',this.single)
const date = new Date()
let h = date.getHours() - 1
const req= {
// this.single
StatisticsDate: this.single,
StatisticsHour:h,
StatisticsType:1,
ShowCount:20
}
request.$webGet('CommercialApi/BigData/GetBayonetWarning',req).then(res=>{
if (res.Result_Data.List.length>0){
this.special = true
}
console.log('this.special',this.special)
res.Result_Data.List.forEach(item=>{
item.name = item.SERVERPART_NAME.split('服务区')[0]
})
let list = JSON.parse(JSON.stringify(res.Result_Data.List))
for (let i=0;i<=list.length - 1;i++){
for (let j=0;j<=list.length - i - 1 ;j++){
if (list[j] && list[j + 1] && list[j].VEHICLE_COUNT!==null && list[j+1].VEHICLE_COUNT!==null){
if (list[j].VEHICLE_COUNT < list[j+1].VEHICLE_COUNT ){
let temp = list[j]
list[j] = list[j + 1]
list[j + 1] = temp
}
}
}
}
this.warningList = list.slice(0,3)
console.log('this.warningList',this.warningList)
})
},
handleReg(){ handleReg(){
this.$util.toNextRoute('redirectTo', '/pages/register/register') this.$util.toNextRoute('redirectTo', '/pages/register/register')
}, },
@ -1889,7 +1955,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
position: relative; position: relative;
.searchBox{ .searchBox{
width: 100%; width: 100%;
height: 46px; height: 38px;
box-sizing: border-box; box-sizing: border-box;
padding: 0 16px; padding: 0 16px;
display: flex; display: flex;
@ -1965,12 +2031,17 @@ $iphoneHeight: env(safe-area-inset-bottom);
} }
} }
} }
.noShowMore{ .naShowMoreBox{
width: 25px; width: 100%;
height: 14px; display: flex;
align-items: center;
justify-content: center;
position: absolute; position: absolute;
left: 50%;bottom: 12px; left: 0;bottom: 12px;
transform: translateX(-7px); .noShowMore{
width: 25px;
height: 14px;
}
} }
} }
} }
@ -2307,101 +2378,125 @@ $iphoneHeight: env(safe-area-inset-bottom);
} }
.carWarning{ .carWarning{
width: calc(100% - 32px); width:calc(100% - 32px);
margin-left: 16px; margin-left: 16px;
height: 159px; height: 159px;
margin-top: 20px;
background-image: url("https://eshangtech.com/ShopICO/ahyd-BID/home/warningBg.svg"); background-image: url("https://eshangtech.com/ShopICO/ahyd-BID/home/warningBg.svg");
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: cover;
box-sizing: border-box; box-sizing: border-box;
padding: 12px 16px; padding: 12px 16px;
.warningBox{ position: relative;
width: 150px; .carWarningTop{
height: 36px; width: 100%;
position: relative; display: flex;
.warningIcon{ justify-content: space-between;
position: absolute; align-items: center;
left: 0;top: 0; .moreStoreBox{
width: 36px; display: flex;
height: 36px; align-items: center;
z-index: 2; .moreText{
}
.moreIcon{
width: 18px;
height: 18px;
}
} }
.trafficBox{ .warningBox{
position: absolute; width: 150px;
left: 28px;top: 3px; height: 36px;
z-index: 1; position: relative;
width: 112px; .warningIcon{
height: 30px; position: absolute;
background: #D4F0F5; left: 0;top: 0;
border-top-right-radius: 15px; width: 36px;
border-bottom-right-radius: 15px; height: 36px;
box-sizing: border-box; z-index: 2;
padding: 4px 16px; }
.trafficCar{ .trafficBox{
font-size: 16px; position: absolute;
font-family: PingFangSC-Medium, PingFang SC; left: 28px;top: 3px;
font-weight: 600; z-index: 1;
color: #007DA5; width: 112px;
line-height: 16px; height: 30px;
background: #D4F0F5;
border-top-right-radius: 15px;
border-bottom-right-radius: 15px;
box-sizing: border-box;
padding: 4px 16px;
.trafficCar{
font-size: 16px;
font-family: PingFangSC-Medium, PingFang SC;
font-weight: 600;
color: #007DA5;
line-height: 16px;
}
} }
} }
} }
.waringList{ .contentList{
margin-top: 13px; width: 100%;
.waringItem{ border-radius: 8px;
width: 100%; .contentItem{
padding: 6px 0;
display: flex; display: flex;
justify-content: space-between;
align-items: center; align-items: center;
.warningIndex{ .index{
width: 12px; width: 12px;
height: 12px; height: 12px;
position: relative; position: relative;
.indexBg{ .boxBg{
width: 12px; width: 12px;
height: 12px; height: 12px;
background: #10BFCE; background: #10BFCE;
filter: blur(4px); filter: blur(4px);
display: inline-block;
position: absolute; position: absolute;
top: 0;left: 0; top: 0;left: 0;
} }
text{ .indexText{
position: absolute; position: absolute;
top: -6px; top: 50%;left: 50%;
left: 1px; transform: translate(-50%,-50%);
z-index: 2; z-index: 2;
font-size: 14px; font-size: 16px;
font-family: DingTalk-JinBuTi, DingTalk; font-family: DingTalk-JinBuTi, DingTalk;
font-weight: normal; font-weight: normal;
color: #160002; color: #160002;
line-height: 20px;
} }
} }
.serviceName{ .serviceBox{
width: 40%; width: 35%;
margin-left: 12px;
display: inline-block; display: inline-block;
font-size: 14px; margin-left: 8px;
font-family: PingFangSC-Semibold, PingFang SC; .name{
font-weight: 600; font-size: 14px;
color: #160002; font-family: PingFangSC-Semibold, PingFang SC;
line-height: 20px; font-weight: 600;
.serviceUnit{ color: #160002;
line-height: 26px;
}
.position{
font-size: 12px; font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
color: #786B6C; color: #786B6C;
line-height: 18px; line-height: 20px;
} }
} }
.carNumber{ .numberBox{
width: 40%; width: 30%;
display: inline-block; .number{
font-size: 16px; font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate; font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold; font-weight: bold;
color: #160002; color: #160002;
line-height: 20px; line-height: 24px;
.numberUnit{ }
.unit{
font-size: 14px; font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC; font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400; font-weight: 400;
@ -2411,19 +2506,19 @@ $iphoneHeight: env(safe-area-inset-bottom);
} }
} }
.addBox{ .addBox{
width: calc(20% - 24px); width: calc(30% - 20px);
display: flex; display: flex;
align-items: center; align-items: center;
.addIcon{ .addIcon{
width: 14px; width: 14px;
height: 14px; height: 14px;
} }
.addText{ .add{
font-size: 16px; font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate; font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold; font-weight: bold;
color: #E83944; color: #E83944;
line-height: 20px; line-height: 24px;
} }
} }
} }
@ -2447,6 +2542,7 @@ $iphoneHeight: env(safe-area-inset-bottom);
padding: 16px; padding: 16px;
.bigTab{ .bigTab{
display: flex; display: flex;
position: relative;
.tabItem{ .tabItem{
display: flex; display: flex;
align-items: center; align-items: center;
@ -2469,6 +2565,19 @@ $iphoneHeight: env(safe-area-inset-bottom);
color: #190002; color: #190002;
} }
} }
.moreStoreBox{
position: absolute;
display: flex;
align-items: center;
right: 0;top: 4px;
.moreText{
}
.moreIcon{
width: 18px;
height: 18px;
}
}
} }
} }