update
This commit is contained in:
parent
76a4951cf0
commit
77aa9d2251
BIN
src/assets/image/brandTotalIcon.png
Normal file
BIN
src/assets/image/brandTotalIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
@ -2,7 +2,8 @@
|
||||
width: 100%;
|
||||
|
||||
.AssessmentScoringRankingListBox {
|
||||
|
||||
width: 100%;
|
||||
margin-top: 15px;
|
||||
|
||||
.AssessmentScoringRankingItem {
|
||||
width: 100%;
|
||||
|
||||
@ -6,7 +6,7 @@ import { handleGetExamineResultList } from '../../service';
|
||||
|
||||
|
||||
// 考核数据
|
||||
let rankList: any = ref<any>([])
|
||||
let rankList: any = ref<any>([{}, {}, {}, {}, {}])
|
||||
|
||||
onMounted(async () => {
|
||||
await handleGetData()
|
||||
|
||||
@ -12,8 +12,8 @@
|
||||
// justify-content: flex-end;
|
||||
|
||||
.nowTime {
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
@ -33,9 +33,9 @@
|
||||
}
|
||||
|
||||
.weatherText {
|
||||
font-weight: 400;
|
||||
font-size: 19px;
|
||||
line-height: 19px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
line-height: 16px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
@ -43,8 +43,8 @@
|
||||
}
|
||||
|
||||
.nowDay {
|
||||
font-weight: 400;
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
|
||||
@ -21,16 +21,23 @@
|
||||
|
||||
.tabBox {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
padding: 3px 10px;
|
||||
// overflow-x: auto;
|
||||
// overflow-y: hidden;
|
||||
background: linear-gradient(90deg, rgba(0, 148, 255, 0.1) 0%, rgba(0, 148, 255, 0) 100%);
|
||||
|
||||
.tabItem {
|
||||
font-family: Microsoft YaHei, Microsoft YaHei;
|
||||
font-weight: 400;
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
color: #89929E;
|
||||
color: #8B969F;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
margin: 0 20px;
|
||||
display: inline-block;
|
||||
padding: 0 10px;
|
||||
white-space: nowrap;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@ -56,19 +63,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.brandListBox {
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 20px 11px;
|
||||
padding: 20px 11px 0;
|
||||
|
||||
.brandItem {
|
||||
width: 100%;
|
||||
height: 86px;
|
||||
margin-bottom: 10px;
|
||||
background-color: #0F1625;
|
||||
box-sizing: border-box;
|
||||
padding: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-radius: 8px;
|
||||
|
||||
.brandLeft {
|
||||
width: 66px;
|
||||
@ -91,6 +102,9 @@
|
||||
|
||||
.brandRightTop {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
.brandRightTopLeft {
|
||||
font-family: Microsoft YaHei, Microsoft YaHei;
|
||||
|
||||
@ -11,7 +11,9 @@ import {
|
||||
} from 'echarts/components';
|
||||
import { CanvasRenderer } from 'echarts/renderers';
|
||||
import { onBeforeUnmount, onMounted, ref, watch } from 'vue';
|
||||
import { handleGetBusinessTradeTree, handleGetCombineBrandList, handleGetFieldEnumTree } from '../../service';
|
||||
import { handleGetBrandStructureAnalysis, handleGetBusinessTradeTree, handleGetCombineBrandList, handleGetFieldEnumTree } from '../../service';
|
||||
import defaultImg from '../../../../assets/image/defaultImg.png'
|
||||
import brandTotalIcon from '../../../../assets/image/brandTotalIcon.png'
|
||||
|
||||
// 注册组件
|
||||
echarts.use([
|
||||
@ -25,12 +27,13 @@ echarts.use([
|
||||
|
||||
let myChart: echarts.ECharts;
|
||||
// 自定义颜色列表
|
||||
const colorList = ['#FF9500', '#0094FF', '#7D4CD2'];
|
||||
const colorList = ['#FF9500', '#0094FF', '#7D4CD2', '#00FFB7'];
|
||||
// tab的数组
|
||||
let tabList = ref<any>([
|
||||
])
|
||||
let tabList = ref<any>([])
|
||||
// 选择的tab
|
||||
let selectTab = ref<number>(1)
|
||||
// 全部的品牌数据
|
||||
let allBrandList = ref<any>([])
|
||||
// 品牌列表数据
|
||||
let brandListData = ref<any>([])
|
||||
|
||||
@ -81,25 +84,25 @@ const handleGoMounted = async () => {
|
||||
},
|
||||
// 自定义图例内容
|
||||
formatter: function (name: string) {
|
||||
// 找到对应的数据项
|
||||
const dataItem = res.pieData.find((item: any) => item.name === name);
|
||||
// 返回自定义格式
|
||||
return `${name} ${dataItem?.value}%`;
|
||||
|
||||
|
||||
return `1111`
|
||||
// // 找到对应的数据项
|
||||
// const dataItem = res.pieData.find((item: any) => item.name === name);
|
||||
// // 返回自定义格式
|
||||
// return `{name|${name}} {value|${dataItem?.value}元}`;
|
||||
}
|
||||
},
|
||||
// tooltip: { // 新增 tooltip 配置
|
||||
// trigger: 'item', // 触发类型:坐标轴触发
|
||||
// axisPointer: { // 坐标轴指示器配置
|
||||
// type: 'shadow' // 阴影指示器(适合柱状图)
|
||||
// },
|
||||
// formatter: function (params: any) { // 自定义提示框内容
|
||||
// return `
|
||||
// <div style="font-weight:bold">${params.data.name} ${params?.percent}% ${res.realData[params.dataIndex].toLocaleString()}元</div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
tooltip: { // 新增 tooltip 配置
|
||||
trigger: 'item', // 触发类型:坐标轴触发
|
||||
axisPointer: { // 坐标轴指示器配置
|
||||
type: 'shadow' // 阴影指示器(适合柱状图)
|
||||
},
|
||||
formatter: function (params: any) { // 自定义提示框内容
|
||||
return `
|
||||
<div style="font-weight:bold">${params.name} ${params?.percent}% </div>
|
||||
`;
|
||||
}
|
||||
},
|
||||
series: [
|
||||
{
|
||||
name: 'Access From',
|
||||
@ -139,42 +142,83 @@ const handleGetData = async () => {
|
||||
})
|
||||
console.log('enumDataenumDataenumDataenumData', enumData);
|
||||
|
||||
|
||||
let category: any = ["全国品牌", "地方连锁", "本地个体"]
|
||||
let pieData: any = [
|
||||
{ name: "全国品牌", value: 33.3 },
|
||||
{ name: "地方连锁", value: 33.3 },
|
||||
{ name: "本地个体", value: 33.3 }
|
||||
]
|
||||
let realData: any = []
|
||||
|
||||
|
||||
const req: any = {
|
||||
let req: any = {
|
||||
ProvinceCode: "530000"
|
||||
}
|
||||
const data = await handleGetBusinessTradeTree(req)
|
||||
const data = await handleGetBrandStructureAnalysis(req)
|
||||
console.log('datadatadatadatadata', data);
|
||||
let category: any = []
|
||||
let pieData: any = []
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
category.push(item.name)
|
||||
pieData.push({ name: item.name, value: Number(item.value) })
|
||||
})
|
||||
}
|
||||
|
||||
const listData = await handleGetCombineBrandList({
|
||||
|
||||
// let category: any = ["全国品牌", "地方连锁", "本地个体"]
|
||||
// let pieData: any = [
|
||||
// { name: "全国品牌", value: 33.3 },
|
||||
// { name: "地方连锁", value: 33.3 },
|
||||
// { name: "本地个体", value: 33.3 }
|
||||
// ]
|
||||
// let realData: any = []
|
||||
|
||||
|
||||
// const req: any = {
|
||||
// ProvinceCode: "530000"
|
||||
// }
|
||||
// const data = await handleGetBusinessTradeTree(req)
|
||||
|
||||
const listData = await handleGetBusinessTradeTree({
|
||||
PROVINCE_CODE: "530000",
|
||||
BRAND_STATE: 1,
|
||||
SERVERPART_IDS: props.currentService?.SERVERPART_ID || ""
|
||||
PageIndex: 1
|
||||
// BRAND_STATE: 1,
|
||||
// SERVERPART_IDS: props.currentService?.SERVERPART_ID || ""
|
||||
})
|
||||
|
||||
console.log('dksjaihudvbujscjsalda', data);
|
||||
console.log('listDatalistDatalistData', listData);
|
||||
|
||||
let tableList: any = []
|
||||
|
||||
|
||||
if (listData && listData.length > 0) {
|
||||
listData.forEach((item: any) => {
|
||||
tableList.push({ label: item.AUTOSTATISTICS_NAME, value: item.AUTOSTATISTICS_ID })
|
||||
})
|
||||
}
|
||||
|
||||
tabList.value = tableList
|
||||
|
||||
await handleGetTableData(tableList[0].value)
|
||||
|
||||
let res: any = {
|
||||
category: category,// x轴的内容
|
||||
pieData: pieData,// y轴的数据
|
||||
realData: realData// 真实数据
|
||||
// realData: realData// 真实数据
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
// 获得表单数据
|
||||
const handleGetTableData = async (BRAND_INDUSTRY: number) => {
|
||||
const req: any = {
|
||||
PROVINCE_CODE: "530000",
|
||||
BRAND_STATE: 1,
|
||||
BRAND_INDUSTRY: BRAND_INDUSTRY
|
||||
// SERVERPART_IDS:""
|
||||
}
|
||||
const data = await handleGetCombineBrandList(req)
|
||||
console.log('tableDatasadasd', data);
|
||||
brandListData.value = data.slice(0, 6)
|
||||
}
|
||||
|
||||
// 切换tab
|
||||
const handleChangeTab = (value: number) => {
|
||||
const handleChangeTab = async (value: number) => {
|
||||
brandListData.value = []
|
||||
selectTab.value = value
|
||||
await handleGetTableData(tabList.value[value - 1].value)
|
||||
}
|
||||
|
||||
|
||||
@ -202,39 +246,36 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="brandList">
|
||||
<SmallTitle>
|
||||
<template #extra>
|
||||
<div class="tabBox">
|
||||
<div :class="selectTab === item.value ? 'tabItem selectTab' : 'tabItem'"
|
||||
v-for="(item, index) in tabList" :key="index" @click="handleChangeTab(item.value)">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
<div class="tabBox">
|
||||
<div :class="selectTab === index + 1 ? 'tabItem selectTab' : 'tabItem'" v-for="(item, index) in tabList"
|
||||
:key="index" @click="handleChangeTab(index + 1)">
|
||||
{{ item.label }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="brandListBox">
|
||||
<div class="brandItem" v-for="(item, index) in brandListData" :key="index"
|
||||
:style="{ marginBottom: index + 1 === brandListData.length ? '0' : '' }">
|
||||
<div class="brandLeft">
|
||||
<img class="brandIcon" :src="item.BRAND_INTRO || defaultImg" />
|
||||
</div>
|
||||
|
||||
<div class="brandListBox">
|
||||
<div class="brandItem" v-for="(item, index) in brandListData" :key="index">
|
||||
<div class="brandLeft">
|
||||
<img class="brandIcon" />
|
||||
</div>
|
||||
|
||||
<div class="brandRight">
|
||||
<div class="brandRightTop">
|
||||
<div class="brandRightTopLeft"></div>
|
||||
<div class="brandRightTopRight">
|
||||
<img class="brandRightTopRightIcon" />
|
||||
<div class="brandRightTopRightValue"></div>
|
||||
<div class="brandRightTopRightUnit"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="brandRightBottom">
|
||||
<div class="brandRightBottomItem"></div>
|
||||
</div>
|
||||
<div class="brandRight">
|
||||
<div class="brandRightTop">
|
||||
<div class="brandRightTopLeft">{{ item.BRAND_NAME }}</div>
|
||||
<div class="brandRightTopRight">
|
||||
<img class="brandRightTopRightIcon" :src="brandTotalIcon" />
|
||||
<div class="brandRightTopRightValue">{{ item.ServerpartList.length || 0 }}</div>
|
||||
<div class="brandRightTopRightUnit">家</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="brandRightBottom">
|
||||
<div class="brandRightBottomItem">{{ item.BRAND_TYPENAME }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</SmallTitle>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
@ -5,8 +5,9 @@
|
||||
|
||||
.BusinessStructureCharts {
|
||||
width: 100%;
|
||||
height: 210px;
|
||||
box-sizing: border-box;
|
||||
padding: 22px 0 0 31px;
|
||||
padding: 42px 0 0 31px;
|
||||
|
||||
.BusinessStructureUnit {
|
||||
font-family: "Microsoft YaHei";
|
||||
@ -19,7 +20,9 @@
|
||||
}
|
||||
|
||||
.BusinessStructure {
|
||||
width: 132px;
|
||||
|
||||
width: 100%;
|
||||
// width: 132px;
|
||||
height: 132px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ const handleGoMounted = async () => {
|
||||
myChart = echarts.init(chartDom);
|
||||
|
||||
const option = {
|
||||
|
||||
tooltip: { // 新增 tooltip 配置
|
||||
trigger: 'item', // 触发类型:坐标轴触发
|
||||
axisPointer: { // 坐标轴指示器配置
|
||||
@ -68,8 +69,8 @@ const handleGoMounted = async () => {
|
||||
width: 83,
|
||||
height: 83
|
||||
},
|
||||
left: 'center',
|
||||
top: 'center',
|
||||
left: 31,
|
||||
top: 24,
|
||||
z: 10
|
||||
}
|
||||
]
|
||||
@ -79,9 +80,8 @@ const handleGoMounted = async () => {
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['85%', '100%'],
|
||||
center: ['50%', '50%'], // 关键修改:强制居中 [水平位置, 垂直位置]
|
||||
center: ['20%', '50%'], // 图形向左偏移
|
||||
avoidLabelOverlap: false,
|
||||
|
||||
itemStyle: {
|
||||
color: function (params: any) {
|
||||
return colorList[params.dataIndex];
|
||||
@ -96,7 +96,36 @@ const handleGoMounted = async () => {
|
||||
},
|
||||
data: res.seriesData
|
||||
}
|
||||
]
|
||||
],
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 160,
|
||||
top: 'center',
|
||||
align: 'left',
|
||||
itemGap: 10,
|
||||
itemWidth: 12,
|
||||
itemHeight: 12,
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
rich: {
|
||||
name: {
|
||||
width: 90, // 固定名称宽度
|
||||
align: 'left',
|
||||
padding: [0, 10, 0, 0]
|
||||
},
|
||||
percent: {
|
||||
width: 50, // 固定百分比宽度
|
||||
align: 'right',
|
||||
padding: [0, 10, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
formatter: function (name: any) {
|
||||
let percentData: any = res.lengedData.filter((item: any) => item.name === name)
|
||||
|
||||
return `{name|${name}}{percent|${percentData[0].value}%}`; // 使用rich样式
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
myChart.setOption(option);
|
||||
@ -138,6 +167,7 @@ const handleGetData = async () => {
|
||||
let realData: any = []
|
||||
let category: any = []
|
||||
let lengedLists: any = []
|
||||
let lengedData: any = []
|
||||
if (list && list.length > 0) {
|
||||
list.forEach((item: any) => {
|
||||
seriesData.push({ value: Number(item.value), name: item.name })
|
||||
@ -148,6 +178,10 @@ const handleGetData = async () => {
|
||||
percent: Number(item.value),
|
||||
value: item.data
|
||||
})
|
||||
lengedData.push({
|
||||
name: item.name,
|
||||
value: item.value
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -155,7 +189,8 @@ const handleGetData = async () => {
|
||||
let res: any = {
|
||||
category: category,// x轴的内容
|
||||
seriesData: seriesData,// y轴的数据
|
||||
realData: realData// 真实数据
|
||||
realData: realData,// 真实数据
|
||||
lengedData: lengedData
|
||||
}
|
||||
lengedList.value = lengedLists
|
||||
return res
|
||||
@ -184,7 +219,7 @@ onBeforeUnmount(() => {
|
||||
<!-- <div class="BusinessStructureUnit">万元</div> -->
|
||||
<div class="BusinessStructure" id="BusinessStructure"></div>
|
||||
|
||||
<div class="BusinessStructureDataList">
|
||||
<!-- <div class="BusinessStructureDataList">
|
||||
<div class="BusinessStructureDataBox" v-for="(item, index) in lengedList" :key="index">
|
||||
<div class="BusinessStructureDataLeftBox">
|
||||
<div class="BusinessStructureItem">
|
||||
@ -192,12 +227,11 @@ onBeforeUnmount(() => {
|
||||
<div class="BusinessStructureItemLabel">{{ item.name }}</div>
|
||||
<div class="BusinessStructureItemLabel" style="margin-left: 8px;">{{ item.percent }}%
|
||||
</div>
|
||||
<!-- <div class="BusinessStructureItemLabel" style="margin-left: 8px;">{{ item.value }}</div> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -5,11 +5,15 @@
|
||||
justify-content: space-between;
|
||||
|
||||
.BusyTradingRankingContentItem {
|
||||
width: calc((100% - 20px) /2);
|
||||
// width: calc((100% - 20px) /2);
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 0 15px;
|
||||
|
||||
.BusyTradingRankingDataList {
|
||||
width: 100%;
|
||||
height: 120px;
|
||||
margin-top: 10px;
|
||||
|
||||
|
||||
.BusyTradingRankingItem {
|
||||
@ -18,6 +22,8 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
box-sizing: border-box;
|
||||
padding: 0 10px;
|
||||
|
||||
.BusyTradingRankingItemLeft {
|
||||
width: 80%;
|
||||
|
||||
@ -30,7 +30,7 @@ const handleGetServiceBusyData = async () => {
|
||||
// const data = await handleGetCurHalfCollect(req)
|
||||
const data = await handleGetCurBusyRank(req)
|
||||
console.log('服务区繁忙度数据:', data);
|
||||
|
||||
let list: any = data.List
|
||||
// 营收排行
|
||||
const revenueReq: any = {
|
||||
ProvinceCode: '530000',
|
||||
@ -39,7 +39,7 @@ const handleGetServiceBusyData = async () => {
|
||||
}
|
||||
const revenueData = await handleGetCurBusyRank(revenueReq)
|
||||
// busyRankList.value = data.CollectionObject.slice(0, 5)
|
||||
busyRankList.value = data.slice(0, 5)
|
||||
busyRankList.value = list.slice(0, 5)
|
||||
transactionList.value = revenueData.slice(0, 5)
|
||||
}
|
||||
|
||||
@ -50,11 +50,11 @@ const handleGetServiceBusyData = async () => {
|
||||
<div class="BusyTradingRankingBox">
|
||||
|
||||
<div class="BusyTradingRankingContentItem">
|
||||
<SmallTitle :pageType="'center'" :title="'服务区繁忙排行'" />
|
||||
<SmallTitle :title="'服务区繁忙排行'" />
|
||||
|
||||
<div class="BusyTradingRankingDataList">
|
||||
<div class="BusyTradingRankingItem" v-for="(item, index) in busyRankList" :key="index" :style="{
|
||||
background: index % 2 === 0 ? '#121C2F' : '#0E1725'
|
||||
background: index % 2 === 0 ? 'rgba(22, 28, 47, 1)' : 'rgba(0, 0, 0, 0.2)'
|
||||
}">
|
||||
<div class="BusyTradingRankingItemLeft">
|
||||
<div class="BusyTradingRankingIndex" :style="{ color: index >= 3 ? '#008CFF' : '#FF9500' }">{{
|
||||
@ -73,12 +73,12 @@ const handleGetServiceBusyData = async () => {
|
||||
|
||||
</div>
|
||||
|
||||
<div class="BusyTradingRankingContentItem">
|
||||
<div class="BusyTradingRankingContentItem" v-if="false">
|
||||
<SmallTitle :pageType="'center'" :title="'服务区交易排行'" />
|
||||
|
||||
<div class="BusyTradingRankingDataList">
|
||||
<div class="BusyTradingRankingItem" v-for="(item, index) in transactionList" :key="index" :style="{
|
||||
background: index % 2 === 0 ? '#121C2F' : '#0E1725'
|
||||
background: index % 2 === 0 ? 'rgba(22, 28, 47, 1)' : 'rgba(0, 0, 0, 0.2)'
|
||||
}">
|
||||
<div class="BusyTradingRankingItemLeft" style="width: 70%;">
|
||||
<div class="BusyTradingRankingIndex" :style="{ color: index >= 3 ? '#008CFF' : '#FF9500' }">{{
|
||||
|
||||
@ -54,6 +54,7 @@ onMounted(async () => {
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: "%",
|
||||
splitLine: { show: false } // 隐藏刻度线
|
||||
},
|
||||
xAxis: {
|
||||
|
||||
@ -56,7 +56,7 @@ onMounted(async () => {
|
||||
},
|
||||
yAxis: {
|
||||
type: 'value',
|
||||
name: '客单占比',
|
||||
name: '客单占比(%)',
|
||||
nameTextStyle: {
|
||||
color: '#fff' // Y轴名称颜色
|
||||
},
|
||||
|
||||
@ -42,7 +42,7 @@ onMounted(async () => {
|
||||
// 拿到数据
|
||||
const handleGetData = async () => {
|
||||
const req: any = {
|
||||
ProvinceCode: '340000'
|
||||
ProvinceCode: '530000'
|
||||
}
|
||||
const data = await handleGetProjectSummaryInfo(req)
|
||||
|
||||
@ -161,7 +161,8 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="ContractInformationBigRightRight">
|
||||
<div class="ContractInformationBigRightRightValue">{{ realDataObj?.Contract_Amount || '' }}
|
||||
<div class="ContractInformationBigRightRightValue">{{
|
||||
realDataObj?.Contract_Amount ? realDataObj?.Contract_Amount.toLocaleString() : '' }}
|
||||
</div>
|
||||
<div class="ContractInformationBigRightRightUnit">万元</div>
|
||||
</div>
|
||||
@ -174,7 +175,7 @@ onBeforeUnmount(() => {
|
||||
<div class="ContractInformationSmallLeft" id="ContractInformation1"></div>
|
||||
<div class="ContractInformationSmallRight">
|
||||
<div class="ContractInformationSmallRightLeft">
|
||||
<div class="ContractInformationSmallRightLeftTop">合作分成</div>
|
||||
<div class="ContractInformationSmallRightLeftTop">联合经营</div>
|
||||
<div class="ContractInformationSmallRightLeftBottom">
|
||||
<span class="ContractInformationSmallRightLeftBottomNormalText">合同</span>
|
||||
<span class="ContractInformationSmallRightLeftBottomValue">{{ shareRevenue?.Contract_SignCount
|
||||
@ -189,7 +190,8 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="ContractInformationSmallRightRight">
|
||||
<div class="ContractInformationSmallRightRightValue">{{ shareRevenue?.Contract_Amount || '' }}
|
||||
<div class="ContractInformationSmallRightRightValue">{{
|
||||
shareRevenue?.Contract_Amount ? shareRevenue?.Contract_Amount.toLocaleString() : '' }}
|
||||
</div>
|
||||
<div class="ContractInformationSmallRightRightUnit">万元</div>
|
||||
</div>
|
||||
@ -200,7 +202,7 @@ onBeforeUnmount(() => {
|
||||
<div class="ContractInformationSmallLeft" id="ContractInformation2"></div>
|
||||
<div class="ContractInformationSmallRight">
|
||||
<div class="ContractInformationSmallRightLeft">
|
||||
<div class="ContractInformationSmallRightLeftTop">固定租金</div>
|
||||
<div class="ContractInformationSmallRightLeftTop">委托运营管理</div>
|
||||
<div class="ContractInformationSmallRightLeftBottom">
|
||||
<span class="ContractInformationSmallRightLeftBottomNormalText">合同</span>
|
||||
<span class="ContractInformationSmallRightLeftBottomValue">{{ FixedRent?.Contract_SignCount
|
||||
@ -215,7 +217,8 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="ContractInformationSmallRightRight">
|
||||
<div class="ContractInformationSmallRightRightValue">{{ FixedRent?.Contract_Amount || '' }}
|
||||
<div class="ContractInformationSmallRightRightValue">{{ FixedRent?.Contract_Amount ?
|
||||
FixedRent?.Contract_Amount.toLocaleString() : '' }}
|
||||
</div>
|
||||
<div class="ContractInformationSmallRightRightUnit">万元</div>
|
||||
</div>
|
||||
|
||||
@ -135,15 +135,34 @@
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.newCoreBusinessItemValue {
|
||||
font-family: Bahnschrift, Bahnschrift;
|
||||
font-weight: 400;
|
||||
font-size: 25px;
|
||||
color: #48A9F6;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
.newCoreBusinessItemValueBox {
|
||||
margin-top: 5px;
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
|
||||
.newCoreBusinessItemValue {
|
||||
font-family: Bahnschrift, Bahnschrift;
|
||||
font-weight: 400;
|
||||
font-size: 25px;
|
||||
line-height: 30px;
|
||||
color: #48A9F6;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.newCoreBusinessItemUnit {
|
||||
font-family: Microsoft YaHei, Microsoft YaHei;
|
||||
font-weight: 400;
|
||||
font-size: 12px;
|
||||
line-height: 28px;
|
||||
color: #C1ECF7;
|
||||
text-align: center;
|
||||
font-style: normal;
|
||||
margin-left: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.newCoreBusinessItemCompare {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
@ -144,8 +144,12 @@ const handleGetPonitFixed = (str: string) => {
|
||||
|
||||
<div class="newCoreBusinessBox">
|
||||
<div class="newCoreBusinessItem">
|
||||
<div class="newCoreBusinessItemLabel">营收/{{ revenueAmonut.unit }}</div>
|
||||
<div class="newCoreBusinessItemValue">{{ revenueAmonut.value }}</div>
|
||||
<div class="newCoreBusinessItemLabel">今日营收</div>
|
||||
<div class="newCoreBusinessItemValueBox">
|
||||
<div class="newCoreBusinessItemValue">{{ revenueAmonut.value }}</div>
|
||||
<div class="newCoreBusinessItemUnit">{{ revenueAmonut.unit }}</div>
|
||||
|
||||
</div>
|
||||
<!-- <div class="newCoreBusinessItemCompare">
|
||||
<div class="newCoreBusinessItemText"></div>
|
||||
<img class="newCoreBusinessItemAddIcon" />
|
||||
@ -154,8 +158,11 @@ const handleGetPonitFixed = (str: string) => {
|
||||
</div>
|
||||
|
||||
<div class="newCoreBusinessItem">
|
||||
<div class="newCoreBusinessItemLabel">油品消耗/{{ oilConsumption.unit }}</div>
|
||||
<div class="newCoreBusinessItemValue">{{ oilConsumption.value }}</div>
|
||||
<div class="newCoreBusinessItemLabel">今日油品</div>
|
||||
<div class="newCoreBusinessItemValueBox">
|
||||
<div class="newCoreBusinessItemValue">{{ oilConsumption.value }}</div>
|
||||
<div class="newCoreBusinessItemUnit">{{ oilConsumption.unit }}</div>
|
||||
</div>
|
||||
<!-- <div class="newCoreBusinessItemCompare">
|
||||
<div class="newCoreBusinessItemText"></div>
|
||||
<img class="newCoreBusinessItemAddIcon" />
|
||||
@ -164,8 +171,11 @@ const handleGetPonitFixed = (str: string) => {
|
||||
</div>
|
||||
|
||||
<div class="newCoreBusinessItem">
|
||||
<div class="newCoreBusinessItemLabel">加水量/{{ waterAddition.unit }}</div>
|
||||
<div class="newCoreBusinessItemValue">{{ waterAddition.value }}</div>
|
||||
<div class="newCoreBusinessItemLabel">今日加水</div>
|
||||
<div class="newCoreBusinessItemValueBox">
|
||||
<div class="newCoreBusinessItemValue">{{ waterAddition.value }}</div>
|
||||
<div class="newCoreBusinessItemUnit">{{ waterAddition.unit }}</div>
|
||||
</div>
|
||||
<!-- <div class="newCoreBusinessItemCompare">
|
||||
<div class="newCoreBusinessItemText"></div>
|
||||
<img class="newCoreBusinessItemAddIcon" />
|
||||
@ -174,8 +184,11 @@ const handleGetPonitFixed = (str: string) => {
|
||||
</div>
|
||||
|
||||
<div class="newCoreBusinessItem">
|
||||
<div class="newCoreBusinessItemLabel">尿素/{{ urea.unit }}</div>
|
||||
<div class="newCoreBusinessItemValue">{{ urea.value }}</div>
|
||||
<div class="newCoreBusinessItemLabel">今日尿素</div>
|
||||
<div class="newCoreBusinessItemValueBox">
|
||||
<div class="newCoreBusinessItemValue">{{ urea.value }}</div>
|
||||
<div class="newCoreBusinessItemUnit">{{ urea.unit }}</div>
|
||||
</div>
|
||||
<!-- <div class="newCoreBusinessItemCompare">
|
||||
<div class="newCoreBusinessItemText"></div>
|
||||
<img class="newCoreBusinessItemAddIcon" />
|
||||
@ -184,8 +197,11 @@ const handleGetPonitFixed = (str: string) => {
|
||||
</div>
|
||||
|
||||
<div class="newCoreBusinessItem">
|
||||
<div class="newCoreBusinessItemLabel">充电次数/{{ chargingCycles.unit }}</div>
|
||||
<div class="newCoreBusinessItemValue">{{ chargingCycles.value }}</div>
|
||||
<div class="newCoreBusinessItemLabel">今日充电</div>
|
||||
<div class="newCoreBusinessItemValueBox">
|
||||
<div class="newCoreBusinessItemValue">{{ chargingCycles.value }}</div>
|
||||
<div class="newCoreBusinessItemUnit">{{ chargingCycles.unit }}</div>
|
||||
</div>
|
||||
<!-- <div class="newCoreBusinessItemCompare">
|
||||
<div class="newCoreBusinessItemText"></div>
|
||||
<img class="newCoreBusinessItemAddIcon" />
|
||||
|
||||
@ -48,9 +48,12 @@ onMounted(async () => {
|
||||
// type: 'shadow' // 阴影指示器(适合柱状图)
|
||||
// },
|
||||
formatter: function (params: any) { // 自定义提示框内容
|
||||
return `
|
||||
<div>${res.category[params?.dataIndex]}:${params?.data || ""}万人, 占比:${res?.percentData[params?.dataIndex] || ''}%</div>
|
||||
`
|
||||
console.log('params', params);
|
||||
|
||||
return `<div>
|
||||
<div>男性:${res.seriesDataMan[params.dataIndex]}%</div>
|
||||
<div>女性:${res.seriesDataWoman[params.dataIndex]}%</div>
|
||||
</div>`
|
||||
// return `
|
||||
// <div style="font-weight:bold">${params.data.name} ${params?.percent}% ${res.realData[params.dataIndex].toLocaleString()}元</div>
|
||||
// `;
|
||||
@ -73,39 +76,84 @@ onMounted(async () => {
|
||||
splitLine: { show: false },
|
||||
axisLine: {
|
||||
show: true,
|
||||
}
|
||||
},
|
||||
splitNumber: 4
|
||||
},
|
||||
grid: {
|
||||
left: '10', // 增加左侧空间
|
||||
right: '10', // 增加右侧空间
|
||||
bottom: '10',
|
||||
bottom: '30',
|
||||
top: '30',
|
||||
containLabel: true
|
||||
},
|
||||
series: {
|
||||
// data: [120, 200, 150, 80, 70, 110, 130],
|
||||
data: res.seriesData,
|
||||
realData: res.realData,
|
||||
type: 'bar',
|
||||
barWidth: '6',
|
||||
showBackground: true,
|
||||
backgroundStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
// color: 'rgba(23, 42, 70, 1)'
|
||||
color: 'rgba(0, 148, 255, 0.1)'
|
||||
},
|
||||
itemStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
// 动态返回渐变颜色
|
||||
color: function (params: any) {
|
||||
return new echarts.graphic.LinearGradient(
|
||||
0, 0, 0, 1, // 渐变方向(垂直)
|
||||
[
|
||||
{ offset: 0, color: '#008CFF' }, // 渐变起始色
|
||||
{ offset: 1, color: '#00F6FF' } // 渐变结束色
|
||||
]
|
||||
);
|
||||
series: [
|
||||
{
|
||||
// data: [120, 200, 150, 80, 70, 110, 130],
|
||||
data: res.seriesDataMan,
|
||||
name: '男性',
|
||||
// realData: res.realData,
|
||||
type: 'bar',
|
||||
barWidth: '6',
|
||||
showBackground: true,
|
||||
backgroundStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
// color: 'rgba(23, 42, 70, 1)'
|
||||
color: 'rgba(0, 148, 255, 0.1)'
|
||||
},
|
||||
itemStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
color: '#0094FF'
|
||||
// 动态返回渐变颜色
|
||||
// color: function (params: any) {
|
||||
// return new echarts.graphic.LinearGradient(
|
||||
// 0, 0, 0, 1, // 渐变方向(垂直)
|
||||
// [
|
||||
// { offset: 0, color: '#008CFF' }, // 渐变起始色
|
||||
// { offset: 1, color: '#00F6FF' } // 渐变结束色
|
||||
// ]
|
||||
// );
|
||||
// }
|
||||
}
|
||||
},
|
||||
{
|
||||
// data: [120, 200, 150, 80, 70, 110, 130],
|
||||
data: res.seriesDataWoman,
|
||||
name: '女性',
|
||||
// realData: res.realData,
|
||||
type: 'bar',
|
||||
barWidth: '6',
|
||||
showBackground: true,
|
||||
backgroundStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
// color: 'rgba(23, 42, 70, 1)'
|
||||
color: 'rgba(0, 148, 255, 0.1)'
|
||||
},
|
||||
itemStyle: {
|
||||
borderRadius: [4, 4, 0, 0],
|
||||
color: '#FF5E5E'
|
||||
// 动态返回渐变颜色
|
||||
// color: function (params: any) {
|
||||
// return new echarts.graphic.LinearGradient(
|
||||
// 0, 0, 0, 1, // 渐变方向(垂直)
|
||||
// [
|
||||
// { offset: 0, color: '#008CFF' }, // 渐变起始色
|
||||
// { offset: 1, color: '#00F6FF' } // 渐变结束色
|
||||
// ]
|
||||
// );
|
||||
// }
|
||||
}
|
||||
},
|
||||
|
||||
],
|
||||
legend: {
|
||||
data: ['男性', '女性'], // 与series中的name对应
|
||||
bottom: 0, // 距离底部10px
|
||||
left: 'center', // 水平居中
|
||||
itemWidth: 12, // 图例标记宽度
|
||||
itemHeight: 12, // 图例标记高度
|
||||
itemGap: 20, // 图例项间距
|
||||
textStyle: {
|
||||
color: '#fff' // 图例文字颜色
|
||||
}
|
||||
},
|
||||
};
|
||||
@ -128,22 +176,35 @@ const handleGetData = async () => {
|
||||
}
|
||||
const data = await handleGetCustomerAgeRatio(req)
|
||||
|
||||
console.log('fdisfsauifhdsaj', data);
|
||||
|
||||
for (let i = 0; i < 4; i++) {
|
||||
let sum: number = (data[0].data[i] + data[1].data[i])
|
||||
seriesData.push(sum.toFixed(2))
|
||||
percentData.push((sum / 200 * 100).toFixed(2))
|
||||
// for (let i = 0; i < 4; i++) {
|
||||
// let sum: number = (data[0].data[i] + data[1].data[i])
|
||||
// seriesData.push(sum.toFixed(2))
|
||||
// percentData.push((sum / 200 * 100).toFixed(2))
|
||||
// }
|
||||
|
||||
// 男生
|
||||
let seriesDataMan: number[] = []
|
||||
// 女生
|
||||
let seriesDataWoman: number[] = []
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
if (item.name === '男性') {
|
||||
seriesDataMan = item.data
|
||||
} else if (item.name === '女性') {
|
||||
seriesDataWoman = item.data
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
let res: any = {
|
||||
category: ["25以下", "25-35", "35-45", "45以上"],// x轴的内容
|
||||
seriesData: seriesData,// y轴的数据
|
||||
percentData: percentData// 真实数据
|
||||
seriesDataMan: seriesDataMan,// 男生
|
||||
seriesDataWoman: seriesDataWoman// 女生
|
||||
}
|
||||
console.log('hfuhdsuafsdjfh', res);
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
|
||||
@ -70,6 +70,7 @@ const handleShowCharts = async () => {
|
||||
name: '年龄',
|
||||
nameLocation: 'middle',
|
||||
nameGap: 25,
|
||||
min: 20,
|
||||
axisLabel: {
|
||||
formatter: '{value}岁'
|
||||
},
|
||||
|
||||
@ -13,6 +13,7 @@
|
||||
|
||||
.FestivalRevenue {
|
||||
width: 100%;
|
||||
height: 190px;
|
||||
height: 220px;
|
||||
margin-top: 20px;
|
||||
}
|
||||
}
|
||||
@ -32,6 +32,7 @@ onMounted(async () => {
|
||||
// 传入的数据
|
||||
const props = defineProps<{
|
||||
currentService?: any;
|
||||
FestivalValue?: number
|
||||
}>();
|
||||
|
||||
// 监听传入的选中服务区
|
||||
@ -117,7 +118,6 @@ const handleGoMounted = async () => {
|
||||
type: 'line' // 改为线条指示器
|
||||
},
|
||||
formatter: function (params: any) {
|
||||
console.log('djidasjd', params);
|
||||
let str1: string = `${params[0].seriesName}(${res.currentDateList[params[0].dataIndex]}):${res.currentYearReal[params[0].dataIndex].toLocaleString()}元`
|
||||
let str2: string = `${params[1].seriesName}(${res.lastYearDateList[params[0].dataIndex]}):${res.lastYearReal[params[1].dataIndex].toLocaleString()}元`
|
||||
|
||||
@ -154,7 +154,7 @@ const handleGetData = async () => {
|
||||
pushProvinceCode: 340000,
|
||||
curYear: moment().format('YYYY'),
|
||||
compareYear: moment().subtract(1, 'y').format('YYYY'),
|
||||
HolidayType: 4,
|
||||
HolidayType: props?.FestivalValue || 5,
|
||||
StatisticsDate: moment().subtract(1, 'd').format('YYYY-MM-DD'),
|
||||
ServerpartId: props.currentService?.SERVERPART_ID || "",
|
||||
}
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
|
||||
.OverviewOfServiceAreaContentTopItem {
|
||||
width: calc((100% - 20px) / 2);
|
||||
// width: 100%;
|
||||
min-height: 56px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@ -100,7 +101,7 @@
|
||||
width: calc((100% - 10px) / 2);
|
||||
background: linear-gradient(0, rgba(0, 148, 255, 0.1) 0%, rgba(0, 148, 255, 0) 100%);
|
||||
box-sizing: border-box;
|
||||
padding: 10px 15px;
|
||||
padding: 5px 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
|
||||
@ -2,7 +2,8 @@
|
||||
import { onMounted, ref } from 'vue';
|
||||
import NewBigTitleBox from '../newBigTitleBox/newBigTitleBox.vue';
|
||||
import './OverviewOfServiceArea.less'
|
||||
import { handleGetCurBusyRank, handleGetServerpartList } from '../../service';
|
||||
import { handleGetCurBusyRank, handleGetServerpartList, handleGetServerpartServiceSummary } from '../../service';
|
||||
import SmallTitle from '../smallTitle/smallTitle.vue';
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
@ -17,80 +18,93 @@ const businessInfo = ref<any>()
|
||||
// 获取服务区数据
|
||||
const handleGetData = async () => {
|
||||
const req: any = {
|
||||
Province_Code: "530000",
|
||||
ShowService: true
|
||||
ProvinceCode: "530000",
|
||||
}
|
||||
|
||||
const data = await handleGetServerpartList(req)
|
||||
const data = await handleGetServerpartServiceSummary(req)
|
||||
|
||||
console.log('fhdushgsu9dgvuisdvgsudvhnjldsfas', data);
|
||||
|
||||
// 因为之前不是这个接口 已经写了一份 为了不做过多的修改 按照老的 赋值走
|
||||
// 服务区总对数
|
||||
let serviceAllTotal: number = 0
|
||||
let serviceAllTotal: number = data.ServerpartCount
|
||||
// 司机之家对数
|
||||
let HASPILOTLOUNGETotal: number = 0
|
||||
let HASPILOTLOUNGETotal: number = data.DriverRoomCount
|
||||
// 加油站对数
|
||||
let REFUELINGGUNTotal: number = 0
|
||||
let REFUELINGGUNTotal: number = data.GasStationCount
|
||||
// 充电桩个数
|
||||
let ChargingStationTotal: number = 0
|
||||
let ChargingStationTotal: number = data.ChargeStationCount
|
||||
// 停车位个数
|
||||
let ParkingSpaceTotal: number = 0
|
||||
let ParkingSpaceTotal: number = data.ParkingLotCount
|
||||
// 卫生间个数
|
||||
let toiletTotal: number = 0
|
||||
let toiletTotal: number = data.ToiletCount
|
||||
// 母婴室个数
|
||||
let NursingRoomTotal: number = 0
|
||||
let NursingRoomTotal: number = data.NursingRoomCount
|
||||
// 尿素
|
||||
let URECOUNTTotal: number = 0
|
||||
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
serviceAllTotal += 1
|
||||
|
||||
if (item.RegionInfo && item.RegionInfo.length > 0) {
|
||||
item.RegionInfo.forEach((subItem: any) => {
|
||||
if (subItem.HASPILOTLOUNGE > 0) {
|
||||
HASPILOTLOUNGETotal += 1
|
||||
}
|
||||
|
||||
if (subItem.STATEGRIDCHARGE > 0 || subItem.LIAUTOCHARGE > 0 || subItem.GACENERGYCHARGE > 0 || subItem.OTHERCHARGE > 0) {
|
||||
ChargingStationTotal += (subItem.STATEGRIDCHARGE || 0)
|
||||
ChargingStationTotal += (subItem.LIAUTOCHARGE || 0)
|
||||
ChargingStationTotal += (subItem.GACENERGYCHARGE || 0)
|
||||
ChargingStationTotal += (subItem.OTHERCHARGE || 0)
|
||||
}
|
||||
let URECOUNTTotal: number = data.UreaCount
|
||||
// 加水站数量
|
||||
let WaterStationCount: number = data.WaterStationCount
|
||||
// 观景台数量
|
||||
let ViewingDeckCount: number = data.ViewingDeckCount
|
||||
// 停车区数量
|
||||
let ParkingServiceCount: number = data.ParkingServiceCount
|
||||
// 加水
|
||||
let WaterCount: number = data.WaterCount
|
||||
// 休息区数量
|
||||
let RestAreaCount: number = data.RestAreaCount
|
||||
// 总数
|
||||
let ServerpartTotalCount: number = data.ServerpartTotalCount
|
||||
|
||||
|
||||
if (subItem.REFUELINGGUN98 > 0 || subItem.REFUELINGGUN92 > 0 || subItem.REFUELINGGUN95 > 0 || subItem.REFUELINGGUN0 > 0) {
|
||||
REFUELINGGUNTotal += (subItem.REFUELINGGUN98 || 0)
|
||||
REFUELINGGUNTotal += (subItem.REFUELINGGUN92 || 0)
|
||||
REFUELINGGUNTotal += (subItem.REFUELINGGUN95 || 0)
|
||||
REFUELINGGUNTotal += (subItem.REFUELINGGUN0 || 0)
|
||||
}
|
||||
// if (data && data.length > 0) {
|
||||
// data.forEach((item: any) => {
|
||||
// serviceAllTotal += 1
|
||||
|
||||
if (subItem.SMALLPARKING > 0 || subItem.PACKING > 0 || subItem.TRUCKPACKING > 0 || subItem.LONGPACKING > 0 || subItem.DANPACKING > 0 || subItem.LIVESTOCKPACKING > 0) {
|
||||
ParkingSpaceTotal += (subItem.SMALLPARKING || 0)
|
||||
ParkingSpaceTotal += (subItem.PACKING || 0)
|
||||
ParkingSpaceTotal += (subItem.TRUCKPACKING || 0)
|
||||
ParkingSpaceTotal += (subItem.LONGPACKING || 0)
|
||||
ParkingSpaceTotal += (subItem.DANPACKING || 0)
|
||||
ParkingSpaceTotal += (subItem.LIVESTOCKPACKING || 0)
|
||||
}
|
||||
// if (item.RegionInfo && item.RegionInfo.length > 0) {
|
||||
// item.RegionInfo.forEach((subItem: any) => {
|
||||
// if (subItem.HASPILOTLOUNGE > 0) {
|
||||
// HASPILOTLOUNGETotal += 1
|
||||
// }
|
||||
|
||||
if (subItem.TOILETCOUNT > 0 || subItem.HASWIFI > 0 || subItem.HASPANTRY > 0) {
|
||||
toiletTotal += (subItem.TOILETCOUNT || 0)
|
||||
toiletTotal += (subItem.HASWIFI || 0)
|
||||
toiletTotal += (subItem.HASPANTRY || 0)
|
||||
}
|
||||
if (subItem.HASMOTHER) {
|
||||
NursingRoomTotal += 1
|
||||
}
|
||||
if (subItem.UREA_COUNT > 0) {
|
||||
URECOUNTTotal += (subItem.UREA_COUNT || 0)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
// if (subItem.STATEGRIDCHARGE > 0 || subItem.LIAUTOCHARGE > 0 || subItem.GACENERGYCHARGE > 0 || subItem.OTHERCHARGE > 0) {
|
||||
// ChargingStationTotal += (subItem.STATEGRIDCHARGE || 0)
|
||||
// ChargingStationTotal += (subItem.LIAUTOCHARGE || 0)
|
||||
// ChargingStationTotal += (subItem.GACENERGYCHARGE || 0)
|
||||
// ChargingStationTotal += (subItem.OTHERCHARGE || 0)
|
||||
// }
|
||||
|
||||
|
||||
// if (subItem.REFUELINGGUN98 > 0 || subItem.REFUELINGGUN92 > 0 || subItem.REFUELINGGUN95 > 0 || subItem.REFUELINGGUN0 > 0) {
|
||||
// REFUELINGGUNTotal += (subItem.REFUELINGGUN98 || 0)
|
||||
// REFUELINGGUNTotal += (subItem.REFUELINGGUN92 || 0)
|
||||
// REFUELINGGUNTotal += (subItem.REFUELINGGUN95 || 0)
|
||||
// REFUELINGGUNTotal += (subItem.REFUELINGGUN0 || 0)
|
||||
// }
|
||||
|
||||
// if (subItem.SMALLPARKING > 0 || subItem.PACKING > 0 || subItem.TRUCKPACKING > 0 || subItem.LONGPACKING > 0 || subItem.DANPACKING > 0 || subItem.LIVESTOCKPACKING > 0) {
|
||||
// ParkingSpaceTotal += (subItem.SMALLPARKING || 0)
|
||||
// ParkingSpaceTotal += (subItem.PACKING || 0)
|
||||
// ParkingSpaceTotal += (subItem.TRUCKPACKING || 0)
|
||||
// ParkingSpaceTotal += (subItem.LONGPACKING || 0)
|
||||
// ParkingSpaceTotal += (subItem.DANPACKING || 0)
|
||||
// ParkingSpaceTotal += (subItem.LIVESTOCKPACKING || 0)
|
||||
// }
|
||||
|
||||
// if (subItem.TOILETCOUNT > 0 || subItem.HASWIFI > 0 || subItem.HASPANTRY > 0) {
|
||||
// toiletTotal += (subItem.TOILETCOUNT || 0)
|
||||
// toiletTotal += (subItem.HASWIFI || 0)
|
||||
// toiletTotal += (subItem.HASPANTRY || 0)
|
||||
// }
|
||||
// if (subItem.HASMOTHER) {
|
||||
// NursingRoomTotal += 1
|
||||
// }
|
||||
// if (subItem.UREA_COUNT > 0) {
|
||||
// URECOUNTTotal += (subItem.UREA_COUNT || 0)
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
let res: any = {
|
||||
serviceAllTotal: serviceAllTotal,
|
||||
@ -101,6 +115,12 @@ const handleGetData = async () => {
|
||||
toiletTotal: toiletTotal,
|
||||
NursingRoomTotal: NursingRoomTotal,
|
||||
URECOUNTTotal: URECOUNTTotal,
|
||||
WaterStationCount: WaterStationCount,
|
||||
ViewingDeckCount: ViewingDeckCount,
|
||||
ParkingServiceCount: ParkingServiceCount,
|
||||
WaterCount: WaterCount,
|
||||
ServerpartTotalCount: ServerpartTotalCount,
|
||||
RestAreaCount: RestAreaCount
|
||||
}
|
||||
console.log('fdjsifjasjfs', res);
|
||||
|
||||
@ -119,22 +139,24 @@ const handleGetData = async () => {
|
||||
const businessData = await handleGetCurBusyRank(businessReq)
|
||||
console.log('服务区繁忙度数据:', businessData);
|
||||
|
||||
// 繁忙个数
|
||||
let businessTotal: number = 0
|
||||
// 正常个数
|
||||
let noramlTotal: number = 0
|
||||
if (businessData && businessData.length > 0) {
|
||||
businessData.forEach((item: any) => {
|
||||
if (item.TicketCount > 30) {
|
||||
businessTotal += 1
|
||||
} else {
|
||||
noramlTotal += 1
|
||||
}
|
||||
})
|
||||
}
|
||||
let businessRes: any = businessData.OtherData
|
||||
|
||||
// // 繁忙个数
|
||||
// let businessTotal: number = 0
|
||||
// // 正常个数
|
||||
// let noramlTotal: number = 0
|
||||
// if (businessData && businessData.length > 0) {
|
||||
// businessData.forEach((item: any) => {
|
||||
// if (item.TicketCount > 30) {
|
||||
// businessTotal += 1
|
||||
// } else {
|
||||
// noramlTotal += 1
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
businessInfo.value = {
|
||||
businessTotal: businessTotal,
|
||||
noramlTotal: noramlTotal,
|
||||
businessTotal: businessRes.value,
|
||||
noramlTotal: businessRes.data,
|
||||
}
|
||||
}
|
||||
|
||||
@ -146,58 +168,93 @@ const handleGetData = async () => {
|
||||
<div class="OverviewOfServiceAreaBox">
|
||||
<NewBigTitleBox title="服务区概况" />
|
||||
|
||||
|
||||
<div class="OverviewOfServiceAreaContent">
|
||||
<div class="OverviewOfServiceAreaContentTop">
|
||||
<div class="OverviewOfServiceAreaContentTopItem" style="width: 100%;">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">管理站点/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #56BCE6;">{{
|
||||
serviceInfo?.ServerpartTotalCount || "0" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="OverviewOfServiceAreaContentTop">
|
||||
<div class="OverviewOfServiceAreaContentTopItem">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">服务区总数/对</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">服务区/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #56BCE6;">{{
|
||||
serviceInfo?.serviceAllTotal || "0" }}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItem">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">司机之家/对</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #5ABE89;">{{
|
||||
serviceInfo?.HASPILOTLOUNGETotal || "0" }}</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">停车区/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #ef5a0d;">{{
|
||||
serviceInfo?.ParkingServiceCount || "0" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="OverviewOfServiceAreaContentBottom">
|
||||
<div class="OverviewOfServiceAreaContentTop">
|
||||
<div class="OverviewOfServiceAreaContentTopItem" style="width: calc((100% - 20px) / 3);">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">加水站/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #1aba80;">{{
|
||||
serviceInfo?.WaterStationCount || "0" }}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItem" style="width: calc((100% - 20px) / 3);">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">观景台/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #f41a09;">{{
|
||||
serviceInfo?.ViewingDeckCount || "0" }}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItem" style="width: calc((100% - 20px) / 3);">
|
||||
<div class="OverviewOfServiceAreaContentTopItemLabel">休息区/座</div>
|
||||
<div class="OverviewOfServiceAreaContentTopItemvalue" style="color: #b5ebf7;">{{
|
||||
serviceInfo?.RestAreaCount || "0" }}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<SmallTitle title="设备设施" style="margin-top: 10px;" />
|
||||
|
||||
<div class="OverviewOfServiceAreaContentBottom" style="margin-top: 10px;">
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">加油站/对</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">加油站/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.REFUELINGGUNTotal || "0"
|
||||
}}</div>
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">充电桩/个</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">充电桩/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.ChargingStationTotal || "0"
|
||||
}}</div>
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">停车位/个</div>
|
||||
<!-- <div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">停车位/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.ParkingSpaceTotal || "0"
|
||||
}}</div>
|
||||
}}</div>
|
||||
</div> -->
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">司机之家/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{
|
||||
serviceInfo?.HASPILOTLOUNGETotal || "0" }}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">卫生间/个</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.toiletTotal || "0"
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">母婴室/个</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">母婴室/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.NursingRoomTotal || "0"
|
||||
}}</div>
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">尿素/台</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">尿素/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.URECOUNTTotal || "0"
|
||||
}}</div>
|
||||
}}</div>
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItem">
|
||||
<div class="OverviewOfServiceAreaContentBottomItemLabel">加水/座</div>
|
||||
<div class="OverviewOfServiceAreaContentBottomItemValue">{{ serviceInfo?.WaterCount || "0"
|
||||
}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<NewBigTitleBox title="服务承载" style="margin-top: 23px;" />
|
||||
<NewBigTitleBox title="服务承载" style="margin-top: 5px;" />
|
||||
<!-- <SmallTitle title="服务承载"/> -->
|
||||
|
||||
|
||||
<div class="OverviewOfServiceAreaBusyContent">
|
||||
<div class="OverviewOfServiceAreaBusyContentItem">
|
||||
@ -211,7 +268,7 @@ const handleGetData = async () => {
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightValueBox">
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightNumber">{{ businessInfo?.businessTotal }}
|
||||
</div>
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightUnit">对</div>
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightUnit">座</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -227,7 +284,7 @@ const handleGetData = async () => {
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightValueBox">
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightNumber" style="color: #fff;">
|
||||
{{ businessInfo?.noramlTotal }}</div>
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightUnit">对</div>
|
||||
<div class="OverviewOfServiceAreaBusyContentItemRightUnit">座</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -40,8 +40,9 @@ onMounted(async () => {
|
||||
// tooltip: { // 新增 tooltip 配置
|
||||
// trigger: 'item',
|
||||
// formatter: function (params: any) {
|
||||
// return `
|
||||
// <div style="font-weight:bold">${params.name}</div>
|
||||
// console.log('params', params);
|
||||
|
||||
// return `<div>${params.name} ${params.value}</div>
|
||||
// `;
|
||||
// }
|
||||
// },
|
||||
@ -117,7 +118,7 @@ const handleGetSectionFlowCount = async () => {
|
||||
let list: any = data.BusinessTradeRank
|
||||
if (list && list.length > 0) {
|
||||
list.forEach((item: any) => {
|
||||
category.push({ name: item.name, max: 100 })
|
||||
category.push({ name: `${item.name}:${item.value}%`, max: 100 })
|
||||
seriesData.push(Number(item.value))
|
||||
realData.push(item.data)
|
||||
})
|
||||
|
||||
@ -55,12 +55,15 @@
|
||||
|
||||
.RegionalRevenueChartsContent {
|
||||
width: 100%;
|
||||
height: 132px;
|
||||
// height: 132px;
|
||||
height: 210px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
.RegionalRevenue {
|
||||
width: 132px;
|
||||
// width: 132px;
|
||||
|
||||
width: 100%;
|
||||
height: 132px;
|
||||
}
|
||||
|
||||
|
||||
@ -62,6 +62,7 @@ const handleGoMounted = async () => {
|
||||
if (!chartDom) return;
|
||||
|
||||
myChart = echarts.init(chartDom);
|
||||
|
||||
const option = {
|
||||
tooltip: { // 新增 tooltip 配置
|
||||
trigger: 'item', // 触发类型:坐标轴触发
|
||||
@ -79,6 +80,7 @@ const handleGoMounted = async () => {
|
||||
name: 'Access From',
|
||||
type: 'pie',
|
||||
radius: ['0%', '100%'],
|
||||
center: ['20%', '50%'], // 图形向左偏移
|
||||
avoidLabelOverlap: false,
|
||||
itemStyle: {
|
||||
color: function (params: any) {
|
||||
@ -94,7 +96,36 @@ const handleGoMounted = async () => {
|
||||
},
|
||||
data: res.pieData
|
||||
}
|
||||
]
|
||||
],
|
||||
legend: {
|
||||
orient: 'vertical',
|
||||
left: 160,
|
||||
top: 'center',
|
||||
align: 'left',
|
||||
itemGap: 10,
|
||||
itemWidth: 12,
|
||||
itemHeight: 12,
|
||||
textStyle: {
|
||||
color: '#fff',
|
||||
rich: {
|
||||
name: {
|
||||
width: 90, // 固定名称宽度
|
||||
align: 'left',
|
||||
padding: [0, 10, 0, 0]
|
||||
},
|
||||
percent: {
|
||||
width: 50, // 固定百分比宽度
|
||||
align: 'right',
|
||||
padding: [0, 10, 0, 0]
|
||||
}
|
||||
}
|
||||
},
|
||||
formatter: function (name: any) {
|
||||
let percentData: any = res.lengedData.filter((item: any) => item.name === name)
|
||||
|
||||
return `{name|${name}}{percent|${percentData[0].value}%}`; // 使用rich样式
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
myChart.setOption(option);
|
||||
@ -106,6 +137,8 @@ const handleGoMounted = async () => {
|
||||
// 拿到数据
|
||||
const handleGetData = async () => {
|
||||
const req: any = {
|
||||
StartDate: "2025-04-01",
|
||||
EndDate: "2025-04-30",
|
||||
DataType: selectDataType.value,
|
||||
ServerpartIds: props.currentService?.SERVERPART_ID || allServiceId,
|
||||
DataSourceType: 1,
|
||||
@ -125,12 +158,21 @@ const handleGetData = async () => {
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
if (item.children && item.children.length > 0) {
|
||||
|
||||
let sum: number = 0
|
||||
item.children.forEach((subItem: any) => {
|
||||
sum += subItem.TotalRevenue.Revenue_Amount
|
||||
})
|
||||
|
||||
|
||||
item.children.forEach((subItem: any) => {
|
||||
category.push(subItem.Serverpart_Name)
|
||||
seriesData.push(Number((subItem.TotalRevenue.Revenue_Amount / 10000).toFixed(2)))
|
||||
realData.push(subItem.TotalRevenue.Revenue_Amount)
|
||||
pieData.push({ value: Number((subItem.TotalRevenue.Revenue_Amount / 10000).toFixed(2)), name: subItem.Serverpart_Name })
|
||||
lengedData.push({ name: subItem.Serverpart_Name, value: subItem.TotalRevenue.Revenue_Amount.toLocaleString() })
|
||||
// lengedData.push({ name: subItem.Serverpart_Name, value: subItem.TotalRevenue.Revenue_Amount.toLocaleString() })
|
||||
lengedData.push({ name: subItem.Serverpart_Name, value: Number(((subItem.TotalRevenue.Revenue_Amount / sum) * 100).toFixed(2)) })
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
@ -141,7 +183,8 @@ const handleGetData = async () => {
|
||||
category: category,// x轴的内容
|
||||
seriesData: seriesData,// y轴的数据
|
||||
realData: realData,// 真实数据
|
||||
pieData: pieData
|
||||
pieData: pieData,
|
||||
lengedData: lengedData
|
||||
}
|
||||
lengedList.value = lengedData
|
||||
return res
|
||||
@ -172,7 +215,7 @@ onBeforeUnmount(() => {
|
||||
<template>
|
||||
<div class="RegionalRevenueBox">
|
||||
<SmallTitle :title="'区域营收占比'">
|
||||
<template #extra>
|
||||
<!-- <template #extra>
|
||||
<div class="RegionalRevenueSelect">
|
||||
<div :class="selectDataType === 1 ? 'RegionalRevenueItem RegionalRevenueItemLeft selectRegionalRevenueItem' : 'RegionalRevenueItem RegionalRevenueItemLeft'"
|
||||
@click="handleChangeDataType(1)">
|
||||
@ -182,7 +225,7 @@ onBeforeUnmount(() => {
|
||||
月</div>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
</template> -->
|
||||
</SmallTitle>
|
||||
|
||||
<div class="RegionalRevenueCharts">
|
||||
@ -190,7 +233,7 @@ onBeforeUnmount(() => {
|
||||
<div class="RegionalRevenueChartsContent">
|
||||
<div class="RegionalRevenue" id="RegionalRevenue" v-if="showCharts"></div>
|
||||
|
||||
<template v-if="showCharts">
|
||||
<!-- <template v-if="showCharts">
|
||||
<div class="RegionalRevenueDataBoxList" v-if="lengedList && lengedList.length > 0">
|
||||
<div class="RegionalRevenueDataBox" v-for="(item, index) in lengedList" :key="index">
|
||||
<div class="RegionalRevenueDataLeftBox">
|
||||
@ -202,18 +245,9 @@ onBeforeUnmount(() => {
|
||||
<div class="RegionalRevenueItemUnit">元</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- <div class="RegionalRevenueDataRightBox">
|
||||
<div class="RegionalRevenueDataYOY">
|
||||
<div class="RegionalRevenueYOYTitle">环比</div>
|
||||
<div class="RegionalRevenueYOYValue">
|
||||
<div class="RegionalRevenueYOYNumber">+5%</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="RegionalRevenueDataQOQ"></div>
|
||||
</div> -->
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</template> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -42,7 +42,7 @@ onMounted(async () => {
|
||||
// 拿到数据
|
||||
const handleGetData = async () => {
|
||||
const req: any = {
|
||||
ProvinceCode: '340000'
|
||||
ProvinceCode: '530000'
|
||||
}
|
||||
const data = await handleGetProjectSummaryInfo(req)
|
||||
|
||||
@ -162,7 +162,7 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="SignedClientsBigRightRight">
|
||||
<div class="SignedClientsBigRightRightValue">{{ realDataObj?.ArrearageMerchant_Count || '' }}
|
||||
<div class="SignedClientsBigRightRightValue">{{ realDataObj?.Contractor_Count || '' }}
|
||||
</div>
|
||||
<div class="SignedClientsBigRightRightUnit">个</div>
|
||||
</div>
|
||||
@ -190,7 +190,7 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="SignedClientsSmallRightRight">
|
||||
<div class="SignedClientsSmallRightRightValue">{{ shareRevenue?.ArrearageMerchant_Count || '' }}
|
||||
<div class="SignedClientsSmallRightRightValue">{{ shareRevenue?.Contractor_Count || '' }}
|
||||
</div>
|
||||
<div class="SignedClientsSmallRightRightUnit">个</div>
|
||||
</div>
|
||||
@ -215,7 +215,7 @@ onBeforeUnmount(() => {
|
||||
</div>
|
||||
|
||||
<div class="SignedClientsSmallRightRight">
|
||||
<div class="SignedClientsSmallRightRightValue">{{ FixedRent?.ArrearageMerchant_Count || '' }}
|
||||
<div class="SignedClientsSmallRightRightValue">{{ FixedRent?.Contractor_Count || '' }}
|
||||
</div>
|
||||
<div class="SignedClientsSmallRightRightUnit">个</div>
|
||||
</div>
|
||||
|
||||
@ -21,11 +21,11 @@
|
||||
|
||||
.TodayTrendContent {
|
||||
width: 100%;
|
||||
margin-top: 15px;
|
||||
margin-top: 5px;
|
||||
|
||||
.TodayTrend {
|
||||
width: 100%;
|
||||
height: 154px;
|
||||
height: 170px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -55,6 +55,13 @@ onMounted(async () => {
|
||||
myChart = echarts.init(chartDom);
|
||||
|
||||
const option = {
|
||||
legend: {
|
||||
textStyle: {
|
||||
color: '#fff' // 设置图例文字颜色为白色,与你的主题一致
|
||||
},
|
||||
top: 0, // 图例位置在顶部
|
||||
right: 0
|
||||
},
|
||||
xAxis: {
|
||||
type: 'category',
|
||||
data: res.category,
|
||||
@ -77,9 +84,11 @@ onMounted(async () => {
|
||||
yAxis: [
|
||||
{
|
||||
type: 'value',
|
||||
name: '营收',
|
||||
name: '营收(元)',
|
||||
nameTextStyle: {
|
||||
color: '#fff'
|
||||
color: '#fff',
|
||||
padding: [0, 30, 0, 0] // 调整单位位置
|
||||
|
||||
},
|
||||
splitLine: { show: false },
|
||||
axisLine: {
|
||||
@ -91,9 +100,10 @@ onMounted(async () => {
|
||||
},
|
||||
{
|
||||
type: 'value',
|
||||
name: '客单',
|
||||
name: '客单(笔)',
|
||||
nameTextStyle: {
|
||||
color: '#fff'
|
||||
color: '#fff',
|
||||
padding: [0, 0, 0, 10] // 调整单位位置
|
||||
},
|
||||
splitLine: { show: false },
|
||||
position: 'right',
|
||||
@ -103,14 +113,13 @@ onMounted(async () => {
|
||||
color: '#fff'
|
||||
}
|
||||
},
|
||||
offset: 0
|
||||
}
|
||||
],
|
||||
grid: {
|
||||
left: '10',
|
||||
right: '10',
|
||||
bottom: '10',
|
||||
top: '10',
|
||||
top: '50',
|
||||
containLabel: true
|
||||
},
|
||||
series: [
|
||||
@ -291,7 +300,7 @@ onBeforeUnmount(() => {
|
||||
|
||||
<template>
|
||||
<div class="TodayTrendBox">
|
||||
<SmallTitle :title="'今日走势图'" style="margin-top: 13px;"></SmallTitle>
|
||||
<SmallTitle :title="`今日走势图(${moment().format('YYYY-MM-DD')})`" style="margin-top: 13px;"></SmallTitle>
|
||||
|
||||
<!-- <div class="TodayTrendUnit">
|
||||
<span>元</span>
|
||||
|
||||
@ -60,7 +60,6 @@ const handleGoMounted = async () => {
|
||||
type: 'category',
|
||||
data: res.category,
|
||||
axisLabel: {
|
||||
width: 40, // 限制标签宽度为60px
|
||||
overflow: 'truncate', // 超出部分显示为省略号
|
||||
ellipsis: '...', // 自定义省略符号(可选)
|
||||
interval: 0 // 强制显示所有标签
|
||||
@ -164,7 +163,7 @@ const handleGetSectionFlowCount = async () => {
|
||||
}
|
||||
let data = await handleGetProvinceMonthAnalysis(req)
|
||||
|
||||
let list = data.slice(0, 10)
|
||||
let list = data.slice(0, 5)
|
||||
let category: string[] = []
|
||||
let seriesData: number[] = []
|
||||
let realData: string[] = []
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
.VehicleModelStay {
|
||||
width: 100%;
|
||||
height: 150px;
|
||||
height: 170px;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -91,7 +91,7 @@ const handleGoMounted = async () => {
|
||||
series: [
|
||||
{
|
||||
name: '小型车',
|
||||
data: res?.smallCarData && res?.smallCarData.map((value, index) => ({
|
||||
data: res?.smallCarData && res?.smallCarData.map((value: any, index: any) => ({
|
||||
value: value,
|
||||
symbol: index % 2 === 0 ? 'circle' : 'none', // 关键修改:隔一个显示一个点
|
||||
symbolSize: 6,
|
||||
@ -109,7 +109,7 @@ const handleGoMounted = async () => {
|
||||
},
|
||||
{
|
||||
name: '中型车',
|
||||
data: res?.middleCarData && res?.middleCarData.map((value, index) => ({
|
||||
data: res?.middleCarData && res?.middleCarData.map((value: any, index: any) => ({
|
||||
value: value,
|
||||
symbol: index % 2 === 0 ? 'circle' : 'none', // 关键修改:隔一个显示一个点
|
||||
symbolSize: 6,
|
||||
@ -127,7 +127,7 @@ const handleGoMounted = async () => {
|
||||
},
|
||||
{
|
||||
name: '大型车',
|
||||
data: res?.bigCarData && res?.bigCarData.map((value, index) => ({
|
||||
data: res?.bigCarData && res?.bigCarData.map((value: any, index: any) => ({
|
||||
value: value,
|
||||
symbol: index % 2 === 0 ? 'circle' : 'none', // 关键修改:隔一个显示一个点
|
||||
symbolSize: 6,
|
||||
|
||||
@ -63,7 +63,6 @@ const handleGoMounted = async () => {
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
legend: {
|
||||
data: [`${res.currentYear}年车流量`, `${res.yesYear}年车流量`, `${res.currentYear}年交易额`, `${res.yesYear}年交易额`],
|
||||
textStyle: {
|
||||
@ -199,9 +198,9 @@ const handleGetSectionFlowCount = async () => {
|
||||
if (data && data.length > 0) {
|
||||
data.forEach((item: any) => {
|
||||
category.push(`${item.Statistics_Month < 10 ? '0' + item.Statistics_Month : item.Statistics_Month}`)
|
||||
seriesDataCar.push(item.Vehicle_Count / 10000)
|
||||
seriesDataCar.push(Number((item.Vehicle_Count / 10000).toFixed(2)))
|
||||
realDataCar.push(item.Vehicle_Count)
|
||||
seriesDataRevenue.push(item.RevenueAmount / 10000)
|
||||
seriesDataRevenue.push(Number((item.RevenueAmount / 10000).toFixed(2)))
|
||||
realDataRevenue.push(item.RevenueAmount)
|
||||
})
|
||||
}
|
||||
@ -213,8 +212,8 @@ const handleGetSectionFlowCount = async () => {
|
||||
|
||||
if (yesData && yesData.length > 0) {
|
||||
yesData.forEach((item: any) => {
|
||||
yesSeriesDataCar.push(item.Vehicle_Count / 10000)
|
||||
yesSeriesDataRevenue.push(item.RevenueAmount / 10000)
|
||||
yesSeriesDataCar.push(Number((item.Vehicle_Count / 10000).toFixed(2)))
|
||||
yesSeriesDataRevenue.push(Number((item.RevenueAmount / 10000).toFixed(2)))
|
||||
yesRealDataCar.push(item.Vehicle_Count)
|
||||
yesRealDataRevenue.push(item.RevenueAmount)
|
||||
})
|
||||
|
||||
@ -13,6 +13,9 @@
|
||||
font-style: normal;
|
||||
box-sizing: border-box;
|
||||
padding-left: 38px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.newBigTitleBoxLong {
|
||||
|
||||
@ -15,6 +15,6 @@ const props = defineProps<{
|
||||
<template>
|
||||
<div :class="type === 2 ? 'newBigTitleBox newBigTitleBoxLong' : 'newBigTitleBox'">
|
||||
{{ props?.title || "" }}
|
||||
|
||||
<slot name="extra"></slot>
|
||||
</div>
|
||||
</template>
|
||||
@ -41,9 +41,9 @@
|
||||
|
||||
.contentMessage {
|
||||
font-family: Microsoft YaHei, Microsoft YaHei;
|
||||
font-weight: 400;
|
||||
font-size: 19px;
|
||||
line-height: 19px;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
line-height: 16px;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
|
||||
@ -154,9 +154,9 @@ onBeforeUnmount(() => {
|
||||
<!-- 新版的顶部分区的方法 -->
|
||||
<div class="leftTabBox">
|
||||
<div :class="selectPageTab === 1 ? 'pageTopTabItem selectPageTopTabItem' : 'pageTopTabItem'"
|
||||
@click="handleChangePageTab(1)">综合运维</div>
|
||||
@click="handleChangePageTab(1)">全景总览</div>
|
||||
<div :class="selectPageTab === 2 ? 'pageTopTabItem selectPageTopTabItem' : 'pageTopTabItem'"
|
||||
@click="handleChangePageTab(2)">流量洞察</div>
|
||||
@click="handleChangePageTab(2)">商业画像</div>
|
||||
</div>
|
||||
|
||||
<!-- 最初版的内容 -->
|
||||
@ -205,9 +205,9 @@ onBeforeUnmount(() => {
|
||||
|
||||
<div class="leftTabBox">
|
||||
<div :class="selectPageTab === 3 ? 'pageTopTabItem selectPageTopTabItem' : 'pageTopTabItem'"
|
||||
@click="handleChangePageTab(3)">财约枢纽</div>
|
||||
<div :class="selectPageTab === 4 ? 'pageTopTabItem selectPageTopTabItem' : 'pageTopTabItem'"
|
||||
@click="handleChangePageTab(4)">彩云驿出行</div>
|
||||
@click="handleChangePageTab(3)">财务中枢</div>
|
||||
<div :class="selectPageTab === 4 ? 'pageTopTabItem selectPageTopTabItem' : 'pageTopTabItem'">彩云驿出行</div>
|
||||
<!-- @click="handleChangePageTab(4)" -->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@ -14,7 +14,8 @@
|
||||
font-family: Microsoft YaHei, Microsoft YaHei;
|
||||
font-weight: bold;
|
||||
font-size: 15px;
|
||||
color: #FFFFFF;
|
||||
// color: #FFFFFF;
|
||||
color: #C1ECF7;
|
||||
text-align: left;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@ -3,11 +3,12 @@
|
||||
overflow-y: scroll;
|
||||
box-sizing: border-box;
|
||||
padding: 20px 11px;
|
||||
background: linear-gradient(315deg, rgba(0, 148, 255, 0.1) 0%, rgba(0, 148, 255, 0) 100%);
|
||||
height: 418px;
|
||||
// background: linear-gradient(315deg, rgba(0, 148, 255, 0.1) 0%, rgba(0, 148, 255, 0) 100%);
|
||||
// height: 418px;
|
||||
|
||||
.supplierListItem {
|
||||
width: 100%;
|
||||
height: 86px;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 20px;
|
||||
border-radius: 10px;
|
||||
@ -16,16 +17,21 @@
|
||||
align-items: flex-start;
|
||||
margin-bottom: 10px;
|
||||
|
||||
.supplierListLeft {
|
||||
width: 66px;
|
||||
height: 66px;
|
||||
border-radius: 10px;
|
||||
margin-right: 20px;
|
||||
background-color: #fff;
|
||||
}
|
||||
// .supplierListLeft {
|
||||
// width: 66px;
|
||||
// height: 66px;
|
||||
// border-radius: 10px;
|
||||
// margin-right: 20px;
|
||||
// background-color: #fff;
|
||||
|
||||
// .supplierIcon {
|
||||
// width: 100%;
|
||||
// height: 100%;
|
||||
// }
|
||||
// }
|
||||
|
||||
.supplierListRight {
|
||||
flex: 1;
|
||||
// flex: 1;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 10px 0;
|
||||
|
||||
@ -1,27 +1,45 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { onMounted, ref } from 'vue';
|
||||
import './supplierListBox.less'
|
||||
import shopIcon from '../../../../assets/image/shopIcon.png'
|
||||
import { handleGetSupplierList } from '../../service';
|
||||
|
||||
|
||||
// 供应商列表
|
||||
let supplierList = ref<any>([])
|
||||
|
||||
|
||||
onMounted(async () => {
|
||||
await handleGetData()
|
||||
})
|
||||
|
||||
|
||||
// 拿到数据的方法
|
||||
const handleGetData = async () => {
|
||||
const req: any = {
|
||||
ProvinceCode: "530000",
|
||||
StatisticsMonth: "202505"
|
||||
}
|
||||
const data = await handleGetSupplierList(req)
|
||||
supplierList.value = data.slice(0, 9)
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="supplierListBox">
|
||||
<div class="supplierListItem">
|
||||
<div class="supplierListLeft">
|
||||
|
||||
</div>
|
||||
<div class="supplierListItem" v-for="(item, index) in supplierList" :key="index">
|
||||
<!-- <div class="supplierListLeft">
|
||||
<img class="supplierIcon" :src="item.Icon" />
|
||||
</div> -->
|
||||
|
||||
<div class="supplierListRight">
|
||||
<div class="supplierListName">今麦郎食品股份有限公司广州分公司</div>
|
||||
<div class="supplierListName">{{ item.SupplierName || '' }}</div>
|
||||
|
||||
<div class="supplierListContent">
|
||||
<img class="shopIcon" :src="shopIcon" />
|
||||
<span class="shopValue">8,888</span>
|
||||
<span class="shopValue">{{ item.VarietyCount }}</span>
|
||||
<span class="shopUnit">种</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -62,9 +62,19 @@ import AssessmentScoringRanking from './components/AssessmentScoringRanking/Asse
|
||||
// 页面样式
|
||||
let pageType = ref<string>("center")
|
||||
// 节日列表
|
||||
let FestivalOptions = [{ label: '五一', value: 1 }]
|
||||
let FestivalOptions = [
|
||||
{ label: '元旦', value: 1 },
|
||||
{ label: '春运', value: 2 },
|
||||
{ label: '清明', value: 3 },
|
||||
{ label: '五一', value: 4 },
|
||||
{ label: '端午', value: 5 },
|
||||
{ label: '暑期', value: 6 },
|
||||
{ label: '中秋', value: 7 },
|
||||
{ label: '国庆', value: 8 },
|
||||
|
||||
]
|
||||
// 选中的节日
|
||||
let FestivalValue = ref<number>(1)
|
||||
let FestivalValue = ref<number>(5)
|
||||
// 当前选择的服务区数据
|
||||
let currentService = ref<any>({})
|
||||
// 新样式顶部的tab选择
|
||||
@ -114,7 +124,7 @@ const handleChangePageTab = (value: number) => {
|
||||
<!-- 服务区概况 -->
|
||||
<OverviewOfServiceArea />
|
||||
|
||||
<NewBigTitleBox :title="'管理运营监控'" style="margin-top: 13px;" />
|
||||
<NewBigTitleBox :title="'管理运营监控'" style="margin-top: 15px;" />
|
||||
|
||||
<!-- 今日走势图 -->
|
||||
<TodayTrend />
|
||||
@ -123,7 +133,7 @@ const handleChangePageTab = (value: number) => {
|
||||
<BusyTradingRanking style="margin-top: 11px;" />
|
||||
|
||||
<!-- 交易预警 -->
|
||||
<TradingAlert style="margin-top: 11px;" />
|
||||
<!-- <TradingAlert style="margin-top: 11px;" /> -->
|
||||
</div>
|
||||
|
||||
</template>
|
||||
@ -182,21 +192,31 @@ const handleChangePageTab = (value: number) => {
|
||||
<BasicMessageBox :currentService="currentService" />
|
||||
|
||||
<template v-if="selectPageTab === 1">
|
||||
<NewBigTitleBox :title="'经营业态月度情况'" style="margin-top: 20px;" />
|
||||
<div class="rightContentBox">
|
||||
<!-- 区域营收占比 -->
|
||||
<RegionalRevenue :currentService="currentService" style="margin-top: 20px;" />
|
||||
<NewBigTitleBox title="流量趋势" style="margin-top: 24px;" />
|
||||
|
||||
<!-- 多业态收入 -->
|
||||
<MultiIndustryIncome style="margin-top: 34px;" :currentService="currentService" />
|
||||
<div class="content169LeftContent" style="margin-top: 21px;">
|
||||
<div class="leftContentBoxItem">
|
||||
<!-- 车流断面趋势 -->
|
||||
<TrendOfTrafficFlow :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
<!-- 业态结构占比 -->
|
||||
<BusinessStructure :currentService="currentService" style="margin-top: 22px;" />
|
||||
<div class="leftContentBoxItem" style="margin-top: 23px;">
|
||||
<!-- 入区车辆趋势 -->
|
||||
<VehiclesEntering :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
<div class="leftContentBoxItem" style="margin-top: 30px;">
|
||||
<!-- 客流变化 -->
|
||||
<PassengerFlowChanges :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="leftContentBoxItem" style="margin-top: 33px;">
|
||||
<!-- 车型停留分析 / 日均 -->
|
||||
<VehicleModelStay />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<NewBigTitleBox :title="'节假日营收分析'" style="margin-top: 22px;" />
|
||||
<!-- 节假日营收分析 -->
|
||||
<FestivalRevenue :currentService="currentService" />
|
||||
</template>
|
||||
|
||||
|
||||
@ -303,34 +323,31 @@ const handleChangePageTab = (value: number) => {
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
<div class="content1692stRight">
|
||||
<!-- 时间天气等内容 -->
|
||||
<BasicMessageBox style="margin-top: 19px;" />
|
||||
<NewBigTitleBox :title="'经营业态月度情况'" style="margin-top: 20px;" />
|
||||
<div class="rightContentBox">
|
||||
<!-- 区域营收占比 -->
|
||||
<RegionalRevenue :currentService="currentService" style="margin-top: 20px;" />
|
||||
|
||||
<NewBigTitleBox title="流量趋势" style="margin-top: 24px;" />
|
||||
<!-- 多业态收入 -->
|
||||
<!-- <MultiIndustryIncome style="margin-top: 34px;" :currentService="currentService" /> -->
|
||||
|
||||
<div class="content169LeftContent" style="margin-top: 21px;">
|
||||
<div class="leftContentBoxItem">
|
||||
<!-- 车流断面趋势 -->
|
||||
<TrendOfTrafficFlow :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
<div class="leftContentBoxItem" style="margin-top: 23px;">
|
||||
<!-- 入区车辆趋势 -->
|
||||
<VehiclesEntering :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
<div class="leftContentBoxItem" style="margin-top: 30px;">
|
||||
<!-- 客流变化 -->
|
||||
<PassengerFlowChanges :currentService="currentService" />
|
||||
</div>
|
||||
|
||||
|
||||
<div class="leftContentBoxItem" style="margin-top: 33px;">
|
||||
<!-- 车型停留分析 / 日均 -->
|
||||
<VehicleModelStay />
|
||||
</div>
|
||||
<!-- 业态结构占比 -->
|
||||
<BusinessStructure :currentService="currentService" style="margin-top: 22px;" />
|
||||
</div>
|
||||
|
||||
<NewBigTitleBox :title="'节假日营收分析'" style="margin-top: 34px;">
|
||||
<template #extra>
|
||||
<div class="FestivalBox">
|
||||
<el-select class="festivalSelect" v-model="FestivalValue" placeholder="Select"
|
||||
style="width: 72px;">
|
||||
<el-option v-for="item in FestivalOptions" :key="item.value" :label="item.label"
|
||||
:value="item.value" />
|
||||
</el-select>
|
||||
</div>
|
||||
</template>
|
||||
</NewBigTitleBox>
|
||||
<!-- 节假日营收分析 -->
|
||||
<FestivalRevenue :currentService="currentService" :FestivalValue="FestivalValue" />
|
||||
|
||||
|
||||
|
||||
@ -427,12 +444,6 @@ const handleChangePageTab = (value: number) => {
|
||||
<HotProductList style="margin-top: 20px;" :pageType="'left'" />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- 客群特征分析 -->
|
||||
<!-- <CustomerGroup /> -->
|
||||
|
||||
|
||||
@ -207,7 +207,7 @@ export async function handleGetCurBusyRank(params: any) {
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
return data.Result_Data.List
|
||||
return data.Result_Data
|
||||
}
|
||||
|
||||
|
||||
@ -425,3 +425,32 @@ export async function handleGetExamineResultList(params: any) {
|
||||
}
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
|
||||
// 获取服务区基础设施汇总数据
|
||||
export async function handleGetServerpartServiceSummary(params: any) {
|
||||
const data: any = await requestPos.post('/BaseInfo/GetServerpartServiceSummary', params)
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
return data.Result_Data
|
||||
}
|
||||
|
||||
|
||||
// 获取经营品牌结构分析
|
||||
export async function handleGetBrandStructureAnalysis(params: any) {
|
||||
const data: any = await requestPos.post('/BaseInfo/GetBrandStructureAnalysis', params)
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
// 获取供应商的数据
|
||||
export async function handleGetSupplierList(params: any) {
|
||||
const data: any = await requestPos.post('/SupplyChain/GetSupplierList', params)
|
||||
if (data.Result_Code !== 100) {
|
||||
return data
|
||||
}
|
||||
return data.Result_Data.List
|
||||
}
|
||||
|
||||
@ -342,6 +342,22 @@
|
||||
/* Safari 兼容 */
|
||||
}
|
||||
|
||||
.FestivalBox {
|
||||
padding-right: 20px;
|
||||
|
||||
.festivalSelect {
|
||||
.el-select__wrapper {
|
||||
// background-color: #122849;
|
||||
background: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(78, 173, 245, 0.2) 100%);
|
||||
|
||||
.el-select__selection {
|
||||
.el-select__selected-item {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -46,7 +46,7 @@ const instance = axios.create({
|
||||
baseURL: 'https://api.eshangtech.com/EShangApiMain', // 默认请求前缀
|
||||
timeout: 60000, // 请求超时时间
|
||||
headers: {
|
||||
"provincecode": "340000",
|
||||
"provincecode": "530000",
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
@ -46,7 +46,7 @@ const instance = axios.create({
|
||||
baseURL: 'https://api.eshangtech.com/', // 默认请求前缀
|
||||
timeout: 60000, // 请求超时时间
|
||||
headers: {
|
||||
"provincecode": "340000",
|
||||
"provincecode": "530000",
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
@ -48,7 +48,7 @@ const instance = axios.create({
|
||||
baseURL: 'http://10.104.1.35:57868', // 默认请求前缀
|
||||
timeout: 60000, // 请求超时时间
|
||||
headers: {
|
||||
"provincecode": "340000",
|
||||
"provincecode": "530000",
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
@ -45,7 +45,7 @@ const instance = axios.create({
|
||||
// baseURL: 'http://10.104.1.161:8070/platform/', // 默认请求前缀
|
||||
timeout: 60000, // 请求超时时间
|
||||
headers: {
|
||||
"provincecode": "340000",
|
||||
"provincecode": "530000",
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
});
|
||||
|
||||
@ -1 +1 @@
|
||||
{"root":["./src/main.ts","./src/shims-vue.d.ts","./src/vite-env.d.ts","./src/options/serveice.ts","./src/page/index/service.ts","./src/request/newrequest.ts","./src/request/request.ts","./src/request/requestcode.ts","./src/request/requestconfig.ts","./src/request/requestlocal.ts","./src/request/requestpos.ts","./src/request/requesttest.ts","./src/router/index.ts","./src/stores/counter.ts","./src/app.vue","./src/page/index/index.vue","./src/page/index/components/accountsreceivablewarning/accountsreceivablewarning.vue","./src/page/index/components/announcementtopic/announcementtopic.vue","./src/page/index/components/assessmentscoring/assessmentscoring.vue","./src/page/index/components/basicmessagebox/basicmessagebox.vue","./src/page/index/components/brandconsumptionlevel/brandconsumptionlevel.vue","./src/page/index/components/branddetail/branddetail.vue","./src/page/index/components/brandlisttbox/brandlisttbox.vue","./src/page/index/components/businesscase/businesscase.vue","./src/page/index/components/businessstructure/businessstructure.vue","./src/page/index/components/busytradingranking/busytradingranking.vue","./src/page/index/components/centertitle/centertitle.vue","./src/page/index/components/consumptionconversion/consumptionconversion.vue","./src/page/index/components/consumptionlevel/consumptionlevel.vue","./src/page/index/components/consumptionperiod/consumptionperiod.vue","./src/page/index/components/corebusinessdata/corebusinessdata.vue","./src/page/index/components/corecategory/corecategory.vue","./src/page/index/components/customeragegroup/customeragegroup.vue","./src/page/index/components/customerconsumptionpreferences/customerconsumptionpreferences.vue","./src/page/index/components/customergroup/customergroup.vue","./src/page/index/components/customergroupstay/customergroupstay.vue","./src/page/index/components/deductiontype/deductiontype.vue","./src/page/index/components/festivalrevenue/festivalrevenue.vue","./src/page/index/components/gendercustomergroup/gendercustomergroup.vue","./src/page/index/components/highqualitymerchants/highqualitymerchants.vue","./src/page/index/components/hotproductlist/hotproductlist.vue","./src/page/index/components/mallorderstatistics/mallorderstatistics.vue","./src/page/index/components/merchantcategory/merchantcategory.vue","./src/page/index/components/merchantratingranking/merchantratingranking.vue","./src/page/index/components/multiindustryincome/multiindustryincome.vue","./src/page/index/components/overviewofservicearea/overviewofservicearea.vue","./src/page/index/components/pagemap/pagemap.vue","./src/page/index/components/passengerflowchanges/passengerflowchanges.vue","./src/page/index/components/paymentprogress/paymentprogress.vue","./src/page/index/components/preferencetype/preferencetype.vue","./src/page/index/components/privaterideservice/privaterideservice.vue","./src/page/index/components/regionalrevenue/regionalrevenue.vue","./src/page/index/components/returnrate/returnrate.vue","./src/page/index/components/salescomparison/salescomparison.vue","./src/page/index/components/thismonthbenefits/thismonthbenefits.vue","./src/page/index/components/todaytrend/todaytrend.vue","./src/page/index/components/totalaccountsreceivable/totalaccountsreceivable.vue","./src/page/index/components/tradingalert/tradingalert.vue","./src/page/index/components/trendoftrafficflow/trendoftrafficflow.vue","./src/page/index/components/vehiclestayanalysis/vehiclestayanalysis.vue","./src/page/index/components/vehiclesentering/vehiclesentering.vue","./src/page/index/components/modaltitle/modaltitle.vue","./src/page/index/components/newbigtitlebox/newbigtitlebox.vue","./src/page/index/components/noticelistbox/noticelistbox.vue","./src/page/index/components/pagetop/pagetop.vue","./src/page/index/components/smalltitle/smalltitle.vue","./src/page/index/components/supplierlistbox/supplierlistbox.vue"],"version":"5.6.3"}
|
||||
{"root":["./src/main.ts","./src/shims-vue.d.ts","./src/vite-env.d.ts","./src/options/serveice.ts","./src/page/index/service.ts","./src/request/newrequest.ts","./src/request/request.ts","./src/request/requestcode.ts","./src/request/requestconfig.ts","./src/request/requestlocal.ts","./src/request/requestpos.ts","./src/request/requesttest.ts","./src/router/index.ts","./src/stores/counter.ts","./src/app.vue","./src/page/index/index.vue","./src/page/index/components/accountsreceivablewarning/accountsreceivablewarning.vue","./src/page/index/components/announcementtopic/announcementtopic.vue","./src/page/index/components/annualaccountsreceivable/annualaccountsreceivable.vue","./src/page/index/components/assessmentscoring/assessmentscoring.vue","./src/page/index/components/assessmentscoringranking/assessmentscoringranking.vue","./src/page/index/components/basicmessagebox/basicmessagebox.vue","./src/page/index/components/brandconsumptionlevel/brandconsumptionlevel.vue","./src/page/index/components/branddetail/branddetail.vue","./src/page/index/components/brandlisttbox/brandlisttbox.vue","./src/page/index/components/businesscase/businesscase.vue","./src/page/index/components/businessstructure/businessstructure.vue","./src/page/index/components/busytradingranking/busytradingranking.vue","./src/page/index/components/centertitle/centertitle.vue","./src/page/index/components/consumptionconversion/consumptionconversion.vue","./src/page/index/components/consumptionlevel/consumptionlevel.vue","./src/page/index/components/consumptionperiod/consumptionperiod.vue","./src/page/index/components/contractinformation/contractinformation.vue","./src/page/index/components/corebusinessdata/corebusinessdata.vue","./src/page/index/components/corecategory/corecategory.vue","./src/page/index/components/customeragegroup/customeragegroup.vue","./src/page/index/components/customerconsumptionpreferences/customerconsumptionpreferences.vue","./src/page/index/components/customergroup/customergroup.vue","./src/page/index/components/customergroupstay/customergroupstay.vue","./src/page/index/components/dailyinspection/dailyinspection.vue","./src/page/index/components/deductiontype/deductiontype.vue","./src/page/index/components/detailedpayment/detailedpayment.vue","./src/page/index/components/festivalrevenue/festivalrevenue.vue","./src/page/index/components/gendercustomergroup/gendercustomergroup.vue","./src/page/index/components/highqualitymerchants/highqualitymerchants.vue","./src/page/index/components/hotproductlist/hotproductlist.vue","./src/page/index/components/mallorderstatistics/mallorderstatistics.vue","./src/page/index/components/merchantcategory/merchantcategory.vue","./src/page/index/components/merchantratingranking/merchantratingranking.vue","./src/page/index/components/multiindustryincome/multiindustryincome.vue","./src/page/index/components/overviewofservicearea/overviewofservicearea.vue","./src/page/index/components/pagemap/pagemap.vue","./src/page/index/components/passengerflowchanges/passengerflowchanges.vue","./src/page/index/components/paymentprogress/paymentprogress.vue","./src/page/index/components/preferencetype/preferencetype.vue","./src/page/index/components/privaterideservice/privaterideservice.vue","./src/page/index/components/regionalrevenue/regionalrevenue.vue","./src/page/index/components/returnrate/returnrate.vue","./src/page/index/components/salescomparison/salescomparison.vue","./src/page/index/components/signedclients/signedclients.vue","./src/page/index/components/thismonthbenefits/thismonthbenefits.vue","./src/page/index/components/todaytrend/todaytrend.vue","./src/page/index/components/totalaccountsreceivable/totalaccountsreceivable.vue","./src/page/index/components/tradingalert/tradingalert.vue","./src/page/index/components/trendoftrafficflow/trendoftrafficflow.vue","./src/page/index/components/vehiclemodelstay/vehiclemodelstay.vue","./src/page/index/components/vehiclestayanalysis/vehiclestayanalysis.vue","./src/page/index/components/vehiclesentering/vehiclesentering.vue","./src/page/index/components/modaltitle/modaltitle.vue","./src/page/index/components/newbigtitlebox/newbigtitlebox.vue","./src/page/index/components/noticelistbox/noticelistbox.vue","./src/page/index/components/pagetop/pagetop.vue","./src/page/index/components/smalltitle/smalltitle.vue","./src/page/index/components/supplierlistbox/supplierlistbox.vue"],"version":"5.6.3"}
|
||||
Loading…
x
Reference in New Issue
Block a user