This commit is contained in:
ylj20011123 2025-07-29 19:42:40 +08:00
parent d23f7a9109
commit b23d07cf20

View File

@ -1,205 +1,110 @@
<template> <template>
<div> <div>
<view class="page-body" v-if="showPage"> <view class="page-body" v-if="showPage">
<AnhHead <AnhHead :today="today" :headMsg="headMsg" :lastDay="lastDay" :groupType="theRequest && theRequest.GroupType"
:today="today" :provinceCode="theRequest && theRequest.ProvinceCode" @bindDateChange="bindDateChange" :isup="isup"
:headMsg="headMsg" :nowDay="nowDay" :selectDate="theRequest && theRequest.time" @toggle="toggleCard"></AnhHead>
:lastDay="lastDay"
:groupType="theRequest && theRequest.GroupType"
:provinceCode="theRequest && theRequest.ProvinceCode"
@bindDateChange="bindDateChange"
:isup="isup"
:nowDay="nowDay"
:selectDate="theRequest && theRequest.time"
@toggle="toggleCard"
></AnhHead>
<!--营收占比的上面组件 --> <!--营收占比的上面组件 -->
<view style="background-color: #fff"> <view style="background-color: #fff">
<!--安徽省 昨日营收占比 --> <!--安徽省 昨日营收占比 -->
<div v-if="theRequest && theRequest.GroupType != 1010"> <div v-if="theRequest && theRequest.GroupType != 1010">
<div class="uni-inline-item modle-title"> <div class="uni-inline-item modle-title">
<image <image :src="theRequest.ProvinceCode == 530000
:src=" ? '/static/images/revenue/type-operation530000.svg'
theRequest.ProvinceCode == 530000 : '/static/images/revenue/type-operation.png'
? '/static/images/revenue/type-operation530000.svg' " mode="aspectFit"></image>
: '/static/images/revenue/type-operation.png'
"
mode="aspectFit"
></image>
<text class="strong-text">营收占比</text> <text class="strong-text">营收占比</text>
</div> </div>
<view class="box-operation"> <view class="box-operation">
<div class="operation-tab-box"> <div class="operation-tab-box">
<div <div class="operation-tab-unit" @tap="selectTab('nowTab', 1)" v-if="theRequest.ProvinceCode == 340000"
class="operation-tab-unit" :class="{ active: nowTab == 1 }">
@tap="selectTab('nowTab', 1)"
v-if="theRequest.ProvinceCode == 340000"
:class="{ active: nowTab == 1 }"
>
经营模式 经营模式
</div> </div>
<div <div class="operation-tab-unit" @tap="selectTab('nowTab', 2)" :class="{ active: nowTab == 2 }">
class="operation-tab-unit"
@tap="selectTab('nowTab', 2)"
:class="{ active: nowTab == 2 }"
>
经营业态 经营业态
</div> </div>
<div <div class="operation-tab-unit" @tap="selectTab('nowTab', 3)"
class="operation-tab-unit" v-if="areaProgress && areaProgress.length > 0" :class="{ active: nowTab == 3 }">
@tap="selectTab('nowTab', 3)"
v-if="areaProgress && areaProgress.length > 0"
:class="{ active: nowTab == 3 }"
>
区域营收 区域营收
</div> </div>
<div <div class="operation-tab-unit" @tap="selectTab('nowTab', 4)" v-if="
class="operation-tab-unit" theRequest.ProvinceCode == 340000 &&
@tap="selectTab('nowTab', 4)" theRequest.GroupType == 1000
v-if=" " :class="{ active: nowTab == 4 }">
theRequest.ProvinceCode == 340000 &&
theRequest.GroupType == 1000
"
:class="{ active: nowTab == 4 }"
>
车流分析 车流分析
</div> </div>
</div> </div>
<div class="operation-content-box"> <div class="operation-content-box">
<div <div v-show="nowTab == 1" v-if="
v-show="nowTab == 1" modelProgress &&
v-if=" modelProgress.length > 0 &&
modelProgress && theRequest.ProvinceCode == 340000
modelProgress.length > 0 && ">
theRequest.ProvinceCode == 340000 <canvas canvas-id="modelCont" id="modelCont" class="operation-content"
" @touchstart="touchPie($event, 'modelCont')"></canvas>
>
<canvas
canvas-id="modelCont"
id="modelCont"
class="operation-content"
@touchstart="touchPie($event, 'modelCont')"
></canvas>
<div> <div>
<div <div class="operation-c-list" v-for="(item, o) in modelProgress" :key="o">
class="operation-c-list"
v-for="(item, o) in modelProgress"
:key="o"
>
<div class="operation-cl-unit"> <div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text> <text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text> <text>{{ item.data }}</text>
</div> </div>
<div class="progress"> <div class="progress">
<div <div class="bgO" :style="{ width: item.bili + '%' }"></div>
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div <div v-show="nowTab == 2" v-if="regionProgress && regionProgress.length > 0">
v-show="nowTab == 2" <canvas canvas-id="businessCont" id="businessCont" class="operation-content"
v-if="regionProgress && regionProgress.length > 0" @touchstart="touchPie($event, 'businessCont')"></canvas>
>
<canvas
canvas-id="businessCont"
id="businessCont"
class="operation-content"
@touchstart="touchPie($event, 'businessCont')"
></canvas>
<div> <div>
<div <div class="operation-c-list" v-for="(item, o) in regionProgress" :key="o">
class="operation-c-list"
v-for="(item, o) in regionProgress"
:key="o"
>
<div class="operation-cl-unit"> <div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text> <text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text> <text>{{ item.data }}</text>
</div> </div>
<div class="progress"> <div class="progress">
<div <div class="bgO" :style="{ width: item.bili + '%' }"></div>
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div <div v-show="nowTab == 3" v-if="areaProgress && areaProgress.length > 0">
v-show="nowTab == 3" <canvas canvas-id="areaCont" id="areaCont" class="operation-content"
v-if="areaProgress && areaProgress.length > 0" @touchstart="touchPie($event, 'areaCont')"></canvas>
>
<canvas
canvas-id="areaCont"
id="areaCont"
class="operation-content"
@touchstart="touchPie($event, 'areaCont')"
></canvas>
<div> <div>
<div <div class="operation-c-list" v-for="(item, o) in areaProgress" :key="o">
class="operation-c-list"
v-for="(item, o) in areaProgress"
:key="o"
>
<div class="operation-cl-unit"> <div class="operation-cl-unit">
<text>{{ item.name }} {{ item.bili }}%</text> <text>{{ item.name }} {{ item.bili }}%</text>
<text>{{ item.data }}</text> <text>{{ item.data }}</text>
</div> </div>
<div class="progress"> <div class="progress">
<div <div class="bgO" :style="{ width: item.bili + '%' }"></div>
class="bgO"
:style="{ width: item.bili + '%' }"
></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div <div v-show="nowTab == 4" v-if="bayonetProgress && bayonetProgress.length > 0">
v-show="nowTab == 4"
v-if="bayonetProgress && bayonetProgress.length > 0"
>
<div> <div>
<div <div class="operation-c-list" v-for="(item, o) in bayonetProgress" :key="o">
class="operation-c-list"
v-for="(item, o) in bayonetProgress"
:key="o"
>
<div class="operation-cl-unit"> <div class="operation-cl-unit">
<text>{{ item.name }}</text> <text>{{ item.name }}</text>
</div> </div>
<div <div style="padding: 10rpx" class="bayonet-c-list" v-for="(child, o) in item.list" :key="o">
style="padding: 10rpx"
class="bayonet-c-list"
v-for="(child, o) in item.list"
:key="o"
>
<div class="operation-cl-unit1"> <div class="operation-cl-unit1">
<text class="server">{{ child.name }}</text> <text class="server">{{ child.name }}</text>
<text class="type" style="color: #868686" <text class="type" style="color: #868686">入区流量/断面流量</text>
>入区流量/断面流量</text <text class="carType" style="color: #868686">//小型车</text>
>
<text class="carType" style="color: #868686"
>//小型车</text
>
</div> </div>
<ul class="bayonet-cell-area"> <ul class="bayonet-cell-area">
<li v-for="(childItem, o) in child.list" :key="o"> <li v-for="(childItem, o) in child.list" :key="o">
<text class="server" <text class="server">{{ childItem.name }}:<text style="color: #ef884f">{{ childItem.bili
>{{ childItem.name }}:<text style="color: #ef884f" }}%</text></text>
>{{ childItem.bili }}%</text <text class="type">{{ childItem.data }}/{{ childItem.flow }}</text>
></text <text class="carType">{{ childItem.LargeVehicle_Count }}/{{
> childItem.MediumVehicle_Count
<text class="type" }}/{{ childItem.MinVehicle_Count }}</text>
>{{ childItem.data }}/{{ childItem.flow }}</text
>
<text class="carType"
>{{ childItem.LargeVehicle_Count }}/{{
childItem.MediumVehicle_Count
}}/{{ childItem.MinVehicle_Count }}</text
>
</li> </li>
</ul> </ul>
<!-- <div class="progress"> <!-- <div class="progress">
@ -214,15 +119,9 @@
</div> </div>
<!-- 昨日日结上传 --> <!-- 昨日日结上传 -->
<div <div class="uni-inline-item modle-title jc-between" v-if="regionList.length > 0">
class="uni-inline-item modle-title jc-between"
v-if="regionList.length > 0"
>
<view class="uni-inline-item"> <view class="uni-inline-item">
<image <image src="/static/images/revenue/yestoday-region.png" mode="aspectFit"></image>
src="/static/images/revenue/yestoday-region.png"
mode="aspectFit"
></image>
<text class="strong-text">日结上传</text> <text class="strong-text">日结上传</text>
</view> </view>
<view style="font-size: 26rpx"> <view style="font-size: 26rpx">
@ -230,15 +129,8 @@
<span class="upload-count">{{ headMsg.uploadState }}</span> <span class="upload-count">{{ headMsg.uploadState }}</span>
</view> </view>
</div> </div>
<template <template v-if="theRequest && theRequest.GroupType == 1020 && regionList.length">
v-if="theRequest && theRequest.GroupType == 1020 && regionList.length" <div v-for="(item, i) in regionList[0].child" :key="i" class="region-cell" @tap="toDetail(item)">
>
<div
v-for="(item, i) in regionList[0].child"
:key="i"
class="region-cell"
@tap="toDetail(item)"
>
<div class="region-cell-unit"> <div class="region-cell-unit">
<text>{{ item.serverpart_Name }}</text> <text>{{ item.serverpart_Name }}</text>
<div class="ct01"> <div class="ct01">
@ -254,21 +146,18 @@
<text class="strong-text">{{ <text class="strong-text">{{
item.totalcount > item.uploadcount item.totalcount > item.uploadcount
? $util.fmoney( ? $util.fmoney(
(item.uploadcount / item.totalcount) * 100, (item.uploadcount / item.totalcount) * 100,
2 2
) )
: 100 : 100
}}</text> }}</text>
<text>%</text> <text>%</text>
</div> </div>
</div> </div>
<div <div class="region-cell-unit" :class="{
class="region-cell-unit" 'ct-red': item.uploadcount != item.totalcount,
:class="{ 'weisc-ico': item.uploadcount != item.totalcount,
'ct-red': item.uploadcount != item.totalcount, }">
'weisc-ico': item.uploadcount != item.totalcount,
}"
>
{{ item.uploadcount + "/" + item.totalcount }} {{ item.uploadcount + "/" + item.totalcount }}
</div> </div>
<div class="region-cell-image"> <div class="region-cell-image">
@ -296,39 +185,27 @@
<text class="strong-text">{{ <text class="strong-text">{{
item.totalcount > item.uploadcount item.totalcount > item.uploadcount
? $util.fmoney( ? $util.fmoney(
(item.uploadcount / item.totalcount) * 100, (item.uploadcount / item.totalcount) * 100,
2 2
) )
: "100.00" : "100.00"
}}</text> }}</text>
<text>%</text> <text>%</text>
</div> </div>
</div> </div>
<div <div class="region-cell-unit" :class="{ 'ct-red': item.uploadcount != item.totalcount }">
class="region-cell-unit"
:class="{ 'ct-red': item.uploadcount != item.totalcount }"
>
{{ item.uploadcount + "/" + item.totalcount }} {{ item.uploadcount + "/" + item.totalcount }}
</div> </div>
<div class="region-cell-image"> <div class="region-cell-image">
<text <text class="uni-icon-arrowright uni-icon" :class="{ active: item.show }"></text>
class="uni-icon-arrowright uni-icon"
:class="{ active: item.show }"
></text>
</div> </div>
</div> </div>
<ul class="region-cell-area" v-show="item.show"> <ul class="region-cell-area" v-show="item.show">
<li <li v-for="(child, index) in item.child" :class="{ visited: child.visited }" :key="index"
v-for="(child, index) in item.child" @tap="toDetail(child)">
:class="{ visited: child.visited }"
:key="index"
@tap="toDetail(child)"
>
<div>{{ child.serverpart_Name }}</div> <div>{{ child.serverpart_Name }}</div>
<div>{{ $util.fmoney(child.cashpay, 2) }}<text></text></div> <div>{{ $util.fmoney(child.cashpay, 2) }}<text></text></div>
<div <div :class="{ 'ct-red': child.uploadcount != child.totalcount }">
:class="{ 'ct-red': child.uploadcount != child.totalcount }"
>
{{ child.uploadcount + "/" + child.totalcount }} {{ child.uploadcount + "/" + child.totalcount }}
</div> </div>
</li> </li>
@ -337,34 +214,19 @@
</div> </div>
</template> </template>
<template v-else> <template v-else>
<shopCell <shopCell v-for="(item, i) in regionList" :key="i" :item="item" @toggleShow="toggleShow" :i="i" />
v-for="(item, i) in regionList"
:key="i"
:item="item"
@toggleShow="toggleShow"
:i="i"
/>
</template> </template>
</view> </view>
<template v-if="theRequest && theRequest.ProvinceCode == 620000"> <template v-if="theRequest && theRequest.ProvinceCode == '620000' || theRequest.ProvinceCode == '530000'">
<div class="uni-inline-item modle-title"> <div class="uni-inline-item modle-title">
<image <image src="/static/images/revenue/product-ranking.png" mode="aspectFit"></image>
src="/static/images/revenue/product-ranking.png"
mode="aspectFit"
></image>
<text class="strong-text">商品销售排行</text> <text class="strong-text">商品销售排行</text>
</div> </div>
<RankContent <RankContent :wechatPushSalesList="wechatPushSalesList" v-if="!isLoading"></RankContent>
:wechatPushSalesList="wechatPushSalesList"
v-if="!isLoading"
></RankContent>
</template> </template>
</view> </view>
<div v-if="!showPage && !isLoading"> <div v-if="!showPage && !isLoading">
<noFound <noFound :nodata="!showPage && !isLoading" :text="'您暂无' + lastDay + '营收数据'" />
:nodata="!showPage && !isLoading"
:text="'您暂无' + lastDay + '营收数据'"
/>
</div> </div>
</div> </div>
</template> </template>
@ -479,8 +341,8 @@ export default {
let canToSeverpartIndex = !provinceId let canToSeverpartIndex = !provinceId
? this.hasSeverpartIndexAuthority ? this.hasSeverpartIndexAuthority
: this.PushAuthority.some((n) => { : this.PushAuthority.some((n) => {
return n.ProvinceCode == provinceId && n.ShopAnalysisType == 1; return n.ProvinceCode == provinceId && n.ShopAnalysisType == 1;
}); });
this.$util.toNextRoute( this.$util.toNextRoute(
"navigateTo", "navigateTo",
@ -689,9 +551,9 @@ export default {
totalData.diffBili = totalData.diffBili =
totalData.budgetAmount > 0 totalData.budgetAmount > 0
? this.$util.fmoney( ? this.$util.fmoney(
(totalData.diffBudgetTotal / totalData.budgetAmount) * 100, (totalData.diffBudgetTotal / totalData.budgetAmount) * 100,
2 2
) )
: "100"; : "100";
} }
}); });
@ -822,9 +684,9 @@ export default {
o.SectionFlow_Count == 0 o.SectionFlow_Count == 0
? 100 ? 100
: _this.$util.fmoney( : _this.$util.fmoney(
(o.Vehicle_Count / o.SectionFlow_Count) * 100, (o.Vehicle_Count / o.SectionFlow_Count) * 100,
2 2
), ),
MinVehicle_Count: o.MinVehicle_Count, MinVehicle_Count: o.MinVehicle_Count,
MediumVehicle_Count: o.MediumVehicle_Count, MediumVehicle_Count: o.MediumVehicle_Count,
LargeVehicle_Count: o.LargeVehicle_Count, LargeVehicle_Count: o.LargeVehicle_Count,
@ -842,9 +704,9 @@ export default {
m.SectionFlow_Count == 0 m.SectionFlow_Count == 0
? 0 ? 0
: _this.$util.fmoney( : _this.$util.fmoney(
(m.Vehicle_Count / m.SectionFlow_Count) * 100, (m.Vehicle_Count / m.SectionFlow_Count) * 100,
2 2
), ),
list: _list, list: _list,
}); });
}); });
@ -876,6 +738,9 @@ export default {
} }
); );
console.log('getRankContentgetRankContentgetRankContentgetRankContent', time);
if (data.Result_Code === 100 && data.Result_Data.TotalCount > 0) { if (data.Result_Code === 100 && data.Result_Data.TotalCount > 0) {
this.wechatPushSalesList = {}; this.wechatPushSalesList = {};
data.Result_Data.List.forEach((n) => { data.Result_Data.List.forEach((n) => {
@ -928,8 +793,11 @@ export default {
if (this.theRequest.GroupType == 1010) { if (this.theRequest.GroupType == 1010) {
this.getDetail(this.theRequest); this.getDetail(this.theRequest);
} }
console.log('this.theRequestthis.theRequestthis.theRequest', this.theRequest);
// //
if (this.theRequest.ProvinceCode == 620000) { //
if (this.theRequest.ProvinceCode == "620000" || this.theRequest.ProvinceCode == "530000") {
this.getRankContent(); this.getRankContent();
} }
}, },
@ -1292,12 +1160,12 @@ text.fs12 {
background-color: #f7f7f7; background-color: #f7f7f7;
} }
.region-cell-area li > div { .region-cell-area li>div {
flex: 2; flex: 2;
font-size: 22rpx; font-size: 22rpx;
} }
.region-cell-area li > div:nth-child(1) { .region-cell-area li>div:nth-child(1) {
flex: 3; flex: 3;
text-align: left; text-align: left;
} }
@ -1309,20 +1177,24 @@ text.fs12 {
overflow: auto; overflow: auto;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.bayonet-cell-area li { .bayonet-cell-area li {
width: 100%; width: 100%;
} }
.bayonet-cell-area li .server { .bayonet-cell-area li .server {
width: 30%; width: 30%;
display: inline-block; display: inline-block;
text-align: left; text-align: left;
padding-left: 15rpx; padding-left: 15rpx;
} }
.bayonet-cell-area li .type { .bayonet-cell-area li .type {
width: 35%; width: 35%;
display: inline-block; display: inline-block;
text-align: center; text-align: center;
} }
.bayonet-cell-area li .carType { .bayonet-cell-area li .carType {
width: 30%; width: 30%;
display: inline-block; display: inline-block;
@ -1361,11 +1233,11 @@ text.fs12 {
position: relative; position: relative;
} }
.bayonet-cell-area li > div { .bayonet-cell-area li>div {
flex: 2; flex: 2;
} }
.bayonet-cell-area li > div:nth-child(1) { .bayonet-cell-area li>div:nth-child(1) {
flex: 3; flex: 3;
text-align: left; text-align: left;
} }
@ -1420,7 +1292,7 @@ text.fs12 {
box-shadow: 1rpx 0rpx 6rpx 0px rgba(224, 224, 224, 0.54); box-shadow: 1rpx 0rpx 6rpx 0px rgba(224, 224, 224, 0.54);
} }
.revenue-line-box + .revenue-line-box { .revenue-line-box+.revenue-line-box {
margin-top: 38rpx; margin-top: 38rpx;
} }
@ -1437,7 +1309,7 @@ text.fs12 {
box-sizing: border-box; box-sizing: border-box;
} }
.revenue-line-data + .revenue-line-data { .revenue-line-data+.revenue-line-data {
margin-left: 24rpx; margin-left: 24rpx;
} }
@ -1586,28 +1458,33 @@ canvas.operation-content {
.operation-c-list { .operation-c-list {
padding: 16rpx 32rpx; padding: 16rpx 32rpx;
} }
.operation-cl-unit { .operation-cl-unit {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.operation-cl-unit1 { .operation-cl-unit1 {
width: 100%; width: 100%;
font-size: 26rpx; font-size: 26rpx;
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.operation-cl-unit1 .server { .operation-cl-unit1 .server {
width: 30%; width: 30%;
display: inline-block; display: inline-block;
text-align: left; text-align: left;
padding-left: 30rpx; padding-left: 30rpx;
} }
.operation-cl-unit1 .type { .operation-cl-unit1 .type {
width: 40%; width: 40%;
display: inline-block; display: inline-block;
text-align: left; text-align: left;
} }
.operation-cl-unit1 .carType { .operation-cl-unit1 .carType {
width: 30%; width: 30%;
display: inline-block; display: inline-block;
@ -1653,7 +1530,7 @@ canvas.operation-content {
color: #fff; color: #fff;
} }
.ranking-tab-box .ranking-tab-unit + .ranking-tab-unit { .ranking-tab-box .ranking-tab-unit+.ranking-tab-unit {
border-left: 2rpx solid #565656; border-left: 2rpx solid #565656;
} }