新版式

This commit is contained in:
duanliang
2025-11-26 23:25:22 +08:00
parent 2f34ab23a6
commit d05a0f645e
6 changed files with 123 additions and 30 deletions

BIN
dist11.25.zip Normal file

Binary file not shown.

View File

@@ -224,7 +224,7 @@
top:0; top:0;
width: 100%; width: 100%;
height: 100%; height: 100%;
font-size:vw(18); font-size:font-vw(18);
// color:#999; // color:#999;
color:#02f9fa; color:#02f9fa;
display: flex; display: flex;

View File

@@ -59,7 +59,7 @@
watch( watch(
() => props.dataList, () => props.dataList,
(newVal) => { (newVal) => {
console.log(newVal,'333333') console.log(newVal,'监听数据切换变化')
aIndex+=1 aIndex+=1
if(aIndex>=3&&!newVal.length){ if(aIndex>=3&&!newVal.length){

View File

@@ -29,7 +29,54 @@
<iframe v-if="scenicSpotId == 'root00000000'" width="100%" height="100%" src="http://192.168.77.200/map/sxzd/sxzd.html"></iframe> <iframe v-if="scenicSpotId == 'root00000000'" width="100%" height="100%" src="http://192.168.77.200/map/sxzd/sxzd.html"></iframe>
<iframe v-if="scenicSpotId == '龙桥河'" width="100%" height="100%" src="http://192.168.77.200/map/lqh/lqh.html"></iframe> <iframe v-if="scenicSpotId == '龙桥河'" width="100%" height="100%" src="http://192.168.77.200/map/lqh/lqh.html"></iframe>
</div> </div>
<div class="footer">
<div class="box-1" style="padding: 0;margin:0;">
<Title1 title="停车信息" />
<div class="">
<div class=" flex flex-1">
<circle-progress
v-for="(item, index) in garageList"
:key="index"
:width="80"
:height="50"
:value="parseFloat(item.rate)"
:title="item.occupied"
:subTitle="`${item.name}`"
/>
</div>
<div class="ml-20 mb-10 flex flex-1 justify-between">
<count-item label="总停车场" :count="scenicStore.stopCarData.info.count" suffix="个" />
<count-item
label="剩余车位数"
:count="scenicStore.stopCarData.info.occupiedSpaces"
suffix="个"
/>
</div>
</div>
<div class="flex">
<div class="border mr-8 flex-1">
<div class="pt-10">
<Title3 title="今日景区车流量" />
</div>
<Line width="100%" :height="105" :data="carBearData" :xAxisData="carBearXAxisData" />
</div>
<div class="border flex-1">
<div class="pt-10">
<Title3 title="车辆归属地占比" />
</div>
<PieRow
label="今日停车累计"
:dataList="dataLists"
:total="carTotal"
width="98%"
:height="105"
/>
</div>
</div>
</div>
<div class="footer" v-if="false">
<div class=""> <div class="">
<div class="item"> <div class="item">
<circle-progress <circle-progress
@@ -139,7 +186,31 @@ import pubSub from 'pubsub-js'
const scenicStore = useScenicStore() const scenicStore = useScenicStore()
const { initMap, addMarker, map, marker } = useMap() const { initMap, addMarker, map, marker } = useMap()
import { useHomeStore } from '@/stores/home' import { useHomeStore } from '@/stores/home'
const carBearData = computed(() => {
return [{ data: scenicStore.stopCarData.dataList.map((item) => item.value) }]
})
const carBearXAxisData = computed(() => {
return scenicStore.stopCarData.dataList.map((item) => item.name)
})
const garageList = computed(() => {
return scenicStore.stopCarData.headList
})
let dataLists = ref([])
watch(
() => scenicStore.stopCarData.dataLists,
(val) => {
// console.log(val.length, 'watch 监听')
if (val.length) {
dataLists.value = val
} else {
dataLists.value = []
}
},
{ immediate: true }
)
const homeStore = useHomeStore() const homeStore = useHomeStore()
let props = defineProps({ let props = defineProps({
scenicSpotId: { scenicSpotId: {
@@ -220,6 +291,14 @@ import pubSub from 'pubsub-js'
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.border {
position: relative;
padding: 0 vw(10);
box-sizing: border-box;
background-image: url('@/assets/images/bg-3.png');
background-size: 100% 100%;
flex:1;
}
.coll-box{ .coll-box{
flex:1 !important; flex:1 !important;
} }

View File

@@ -32,18 +32,18 @@
</div> </div>
<Line <Line
width="100%" width="100%"
:height="440" :height="140"
:data="scenicQueueData" :data="scenicQueueData"
:xAxisData="scenicQueueXAxisData" :xAxisData="scenicQueueXAxisData"
/> />
</div> </div>
</div> </div>
<div class="box mr-8"> <div class="box box-9 mr-8">
<Title1 title="景区承载" /> <Title1 title="景区承载" />
<div class=""> <div class="flex">
<circle-progress <circle-progress
:width="170" :width="60"
:height="50" :height="50"
:value="scenicStore.scenicBearData.header.jqRate" :value="scenicStore.scenicBearData.header.jqRate"
:title="`${scenicStore.scenicBearData.header.jqRate}%`" :title="`${scenicStore.scenicBearData.header.jqRate}%`"
@@ -68,13 +68,13 @@
</div> </div>
<Line <Line
width="100%" width="100%"
:height="390" :height="125"
:data="scenicBearData" :data="scenicBearData"
:xAxisData="scenicBearXAxisData" :xAxisData="scenicBearXAxisData"
/> />
</div> </div>
</div> </div>
<div class="box-1 mr-8" style="padding: 0;"> <div class="box-1 mr-8" v-if="false" style="padding: 0;">
<Title1 title="停车信息" /> <Title1 title="停车信息" />
<div class=""> <div class="">
<div class=" flex flex-1"> <div class=" flex flex-1">
@@ -102,7 +102,7 @@
<div class="pt-10"> <div class="pt-10">
<Title3 title="今日景区车流量" /> <Title3 title="今日景区车流量" />
</div> </div>
<Line width="100%" :height="390" :data="carBearData" :xAxisData="carBearXAxisData" /> <Line width="100%" :height="105" :data="carBearData" :xAxisData="carBearXAxisData" />
</div> </div>
<div class="border flex-1"> <div class="border flex-1">
<div class="pt-10"> <div class="pt-10">
@@ -113,7 +113,7 @@
:dataList="dataLists" :dataList="dataLists"
:total="carTotal" :total="carTotal"
width="100%" width="100%"
:height="300" :height="110"
/> />
</div> </div>
</div> </div>
@@ -137,10 +137,10 @@
</div> </div>
<PieRow <PieRow
label="告警总数" label="告警总数"
:dataList="scenicStore.secureData.dataList" :dataList="scenicStore?.secureData.dataList"
:total="alarmTotal" :total="alarmTotal"
width="100%" width="100%"
:height="450" :height="140"
/> />
</div> </div>
</div> </div>
@@ -167,8 +167,8 @@
<div class="border mr-8"> <div class="border mr-8">
<Title3 title="拥堵次数占比" /> <Title3 title="拥堵次数占比" />
<jam <jam
:width="220" width="100%"
:height="700" :height="200"
sub-title="拥堵频次总数" sub-title="拥堵频次总数"
:list="scenicStore.trafficData.data.countRate" :list="scenicStore.trafficData.data.countRate"
:text="'暂无拥堵'" :text="'暂无拥堵'"
@@ -178,8 +178,8 @@
<Title3 title="拥堵时长占比" /> <Title3 title="拥堵时长占比" />
<jam <jam
:text="'暂无拥堵'" :text="'暂无拥堵'"
:width="220" width="100%"
:height="720" :height="200"
sub-title="拥堵总时长(分钟)" sub-title="拥堵总时长(分钟)"
:list="scenicStore.trafficData.data.timeRate" :list="scenicStore.trafficData.data.timeRate"
/> />
@@ -189,7 +189,7 @@
<div class="box-4 mr-8"> <div class="box-4 mr-8">
<Title1 title="用户画像" /> <Title1 title="用户画像" />
<div class="flex" style="height: 100%;"> <div class="flex" style="height: 88%;">
<div class="border mr-8 flex-1"> <div class="border mr-8 flex-1">
<Title3 title="年龄/性别占比" /> <Title3 title="年龄/性别占比" />
<age :list="scenicStore.userPortraitData.data.ageRate" /> <age :list="scenicStore.userPortraitData.data.ageRate" />
@@ -221,16 +221,16 @@
<Title3 title="客源地分析TOP5" /> <Title3 title="客源地分析TOP5" />
<RegionTop <RegionTop
:list="scenicStore.userPortraitData.data.provinceRate" :list="scenicStore.userPortraitData.data.provinceRate"
:width="250" width="100%"
:height="800" :height="200"
/> />
</div> </div>
<div class="border flex-1"> <div class="border flex-1">
<Title3 title="购票来源" /> <Title3 title="购票来源" />
<TicketSource <TicketSource
:list="scenicStore.userPortraitData.data.channel" :list="scenicStore.userPortraitData.data.channel"
:width="240" width="100%"
:height="800" :height="200"
/> />
</div> </div>
</div> </div>
@@ -649,7 +649,7 @@
align-items: center; align-items: center;
background: #0a4190; background: #0a4190;
border-radius: vw(4); border-radius: vw(4);
font-size: vw(18); /* 16×1.2 */ font-size: font-vw(18); /* 16×1.2 */
font-weight:700; font-weight:700;
color: #fff; color: #fff;
z-index: 999; z-index: 999;
@@ -1055,6 +1055,7 @@
} }
.container { .container {
margin: vh(120) 0 0 vw(10); margin: vh(120) 0 0 vw(10);
flex:1;
.count-box { .count-box {
padding: 0 vw(10); padding: 0 vw(10);
height: vh(140); height: vh(140);
@@ -1072,28 +1073,40 @@
} }
.box { .box {
@extend .bg; @extend .bg;
width: vw(650); // width: vw(650);
// height: vh(475); height: vh(880);
min-width: vw(800);
flex:1;
}
.box-9{
// width: vw(750);
} }
.box-1 { .box-1 {
@extend .bg; @extend .bg;
// height: vh(475); // height: vh(475);
} }
.box-2 { .box-2 {
@extend .bg; @extend .bg;
// height: vh(475); height: vh(880);
flex:1;
} }
.box-3 { .box-3 {
@extend .bg; @extend .bg;
flex:1;
// width: vw(750);
// height: vh(465); // height: vh(465);
} }
.box-4 { .box-4 {
@extend .bg; @extend .bg;
flex:1;
// height: vh(465); // height: vh(465);
} }
.box-5 { .box-5 {
// width: vw(750);
@extend .bg; @extend .bg;
// height: vh(465); // height: vh(465);
height:100%;
flex:1; flex:1;
} }
.car-box { .car-box {

View File

@@ -233,9 +233,10 @@
&__legend { &__legend {
flex: 1; flex: 1;
display: flex; display: flex;
flex-wrap: wrap;
&-item { &-item {
position: relative; position: relative;
width: 100%; width: 50%;
height: vh(50); height: vh(50);
display: flex; display: flex;
align-items: center; align-items: center;