This commit is contained in:
cclu 2023-12-27 18:43:41 +08:00
parent a069709f76
commit 918e83d73f
16 changed files with 1108 additions and 140 deletions

View File

@ -201,6 +201,13 @@
"navigationStyle": "custom"
}
},
{
"path": "serviceMessage",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{
"path": "planMonth",
"style": {

View File

@ -7,7 +7,7 @@
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="4"/>
<div class="charts">
<div class="chartsItem">
<div style="display: flex;justify-content: space-between;align-items: center">
@ -30,7 +30,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{month}}月消费转化对比图</p>
<div v-if="compareList.series[0].data.length>0">
<div v-if="compareList.series && compareList.series.length>0 && compareList.series[0].data && compareList.series[0].data.length>0">
<consumption-compare :data="compareList"/>
<analyse :analyseInfo="{analysisins_type: 1406,analysisins_format: 2000}" />
</div>
@ -39,7 +39,7 @@
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{month}}月消费时段分析</p>
<div v-if="timePeriodList.series.length>0">
<div v-if="timePeriodList.series && timePeriodList.series.length>0">
<time-period-analysis :data="timePeriodList"/>
<analyse :analyseInfo="{analysisins_type: 1403,analysisins_format: 2000}" />
</div>
@ -47,7 +47,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{month}}月消费水平<text class="unit"></text></p>
<div v-if="levelTopList.series.length">
<div v-if="levelTopList.series && levelTopList.series.length">
<level-top :data="levelTopList"></level-top>
<analyse :analyseInfo="{analysisins_type: 1404,analysisins_format: 2000}" />
</div>
@ -55,7 +55,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{month}}月品牌消费水平<text class="unit"></text></p>
<div v-if="bandLevelList.length>0">
<div v-if="bandLevelList && bandLevelList.length>0">
<band-level :data="bandLevelList"/>
<analyse :analyseInfo="{analysisins_type: 1503,analysisins_format: 2000}" />
</div>
@ -63,7 +63,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{month}}月业态交易值占比</p>
<div v-if="businessTypeList.series[0].data.length>0">
<div v-if="businessTypeList.series && businessTypeList.series.length>0 && businessTypeList.series[0].data && businessTypeList.series[0].data.length>0">
<business-format :data="businessTypeList"/>
<analyse :analyseInfo="{analysisins_type: 1405,analysisins_format: 2000}" />
</div>
@ -92,10 +92,12 @@ import NoData from "./components/noData.vue";
import BandLevel from "./components/format/bandLevel.vue";
import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default {
name: "businessPortrait",
components: {
SliderPage,
BandLevel,
NoData,
BestsellerShop,
@ -126,7 +128,7 @@ export default {
},
time: '',//
menu: {},//
transactionList:[],//
transactionList:{},//
timePeriodList:[],//
levelTopList:[],//
bandLevelList:[],//
@ -370,11 +372,20 @@ export default {
console.log('this.transactionList',this.transactionList)
},
async getTimePeriodList(){
let req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:this.serviceInfo.Serverpart_ID|| '',
TimeSpan:1
}
}else{
req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:this.serviceInfo.Serverpart_ID || '',
TimeSpan:1
}
}
let totalData = await request.$webGet('CommercialApi/Revenue/GetTransactionTimeAnalysis',req)
let list = [] //
@ -421,11 +432,20 @@ export default {
},
async getLevelTopList(){
let req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
ShowWholeTrade:false
}
}else{
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
ServerpartId:this.serviceInfo.Serverpart_ID|| '',
ShowWholeTrade:false
}
}
let res = {
categories:[],
@ -464,11 +484,20 @@ export default {
},
async getBandLevelList(){
let req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
ShowWholeBrand:false
}
}else{
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
ServerpartId:this.serviceInfo.Serverpart_ID|| '',
ShowWholeBrand:false
}
}
let res =[]
let totalData = await request.$webGet('CommercialApi/Revenue/GetBusinessBrandLevel',req)
@ -498,11 +527,20 @@ export default {
},
async getBusinessTypeList(){
const req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
BusinessTradeIds:-1
}
}else{
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
serverpartId:this.serviceInfo.Serverpart_ID|| '',
BusinessTradeIds:-1
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeRevenue',req)
let res = []
@ -532,11 +570,19 @@ export default {
},
async getCompareList(){
const req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:this.serviceInfo.Serverpart_ID|| ''
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
Province_Code:'340000',
Statistics_Date:this.time,
}
}else{
req = {
Province_Code:'340000',
Statistics_Date:this.time,
Serverpart_ID:this.serviceInfo.Serverpart_ID || ''
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetTransactionConvert',req)
let customerOrder = []
let customerMax = 0

View File

@ -149,6 +149,7 @@
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<SliderPage :index="1"/>
<div class="charts" v-if="!isShowAllProvince">
<div class="chartsItem">
<div style="display: flex;align-items: center;justify-content: space-between">
@ -244,7 +245,7 @@
<no-data v-if="!percentEntryData " :type="'car'"/>
</div>
</div>
<div v-else class="otherCharts">
<div v-if="isShowAllProvince" class="otherCharts">
<div class="list">
<span class="itemTitle">车流数据</span>
<div class="listItem" v-for="(item,index) in regionList" :key="index" @click="handleNoneChild(item)">
@ -386,12 +387,13 @@ import HomePlace from "./components/car/homePlace.vue";
import CarTypeTime from "./components/car/carTypeTime.vue";
import timeAnalysis from "./components/car/timeAnalysis.vue";
import PercentEntry from "./components/car/percentEntry.vue";
import MonthTotal from "./components/car/monthTotal.vue";
// import MonthTotal from "./components/car/monthTotal.vue";
import NoData from "./components/noData.vue";
import Analyse from "./components/analyse.vue";
import CommercialType from "./commercialType.vue";
// import shopCell from "../everdayRenven/components/listUnit.vue";
import EntryRate from "./components/car/entryRate.vue";
import SliderPage from "./components/sliderPage.vue";
import anhuiYestodayRevenueData from "../everdayRenven/components/anhuiYestodayRevenueData";
import {getFieldEnum} from "../../util/dateTime";
export default {
@ -455,7 +457,7 @@ export default {
components: {
// shopCell,
CommercialType,EntryRate,
Analyse, NoData, PercentEntry, CarTypeTime, HomePlace, EntryZone,timeAnalysis,MonthTotal},
Analyse, NoData, PercentEntry, CarTypeTime, HomePlace, EntryZone,timeAnalysis,SliderPage},
computed:{
isHaveData(){
return true
@ -1000,6 +1002,7 @@ export default {
let moneyCountYes = []
let monetCountMaxYes = 0
let infoYes = []
console.log('dataYes.Result_Data',dataYes.Result_Data)
dataYes.Result_Data.List.forEach(item=>{
monthListYes.push(item.Statistics_Month + '月')
if (carCountMaxYes<item.Vehicle_Count){
@ -1032,6 +1035,7 @@ export default {
{name:`${yerYear}年交易额`,data:moneyCountYes,type:'line',index:1,info:infoYes,max:monetCountMaxYes / 10000,year:yerYear}]
}
this.monthTotalList = res
console.log('this.monthTotalList',this.monthTotalList)
// categories: ["","","",""],
// series: [{name:'',data:[30,38,20,10]},
// {name:'',data:[20,17,23,32]},

View File

@ -54,9 +54,11 @@ export default {
methods: {
//
handleCarData(value) {
let res = value
let res = value
if (res && res.length>0){
this.drawCharts('hotSales', res[0],{color:["#1E80FF","#E5E8EF"],title:'39.8%',subTitle:'热销商品'})
this.drawCharts('unsalableGoods', res[1],{color:["#00C2FF","#E5E8EF"],title:'21.6%',subTitle:'滞销商品'})
}
},
drawCharts(id, data,config) {
const ctx = uni.createCanvasContext(id, this);

View File

@ -0,0 +1,97 @@
<template>
<!-- <view class="sliderPage">-->
<!-- <view class="slider">-->
<!-- <view class="rate" :style="{left: (index*15) + 'rpx'}"></view>-->
<!-- </view>-->
<!-- </view>-->
<view class="scrollPage">
<scroll-view class="scrollBox" scroll-x="true">
<view :id="'item'+i" :class="index===i?`scrollItem selectScroll${index}`:'scrollItem'" v-for="(item,i) in pageList" :key="i">{{item}}</view>
</scroll-view>
</view>
</template>
<script>
export default {
name: "sliderPage",
data(){
return {
pageList:["基础信息","车流画像","经营画像","客群画像","交易画像","业态品牌","考核考评","日常巡检"]
}
},
props:{
index:{
type: Number,
default: 0
}
},
onLoad(){
},
methods:{
}
}
</script>
<style scoped lang="scss">
.sliderPage{
width: 100%;
height: 16rpx;
display: flex;
justify-content: center;
padding-top: 8rpx;
background: #fff;
.slider{
width: 120rpx;
height: 8rpx;
background: #e0dfdf;
border-radius: 4rpx;
position: relative;
.rate{
position: absolute;
top: 0;
height: 100%;
background: #786B6C;
border-radius: 4rpx;
width: calc(100% / 8);
}
}
}
.scrollPage{
width: 100%;
height: 30px;
box-sizing: border-box;
padding: 0 16rpx;
.scrollBox{
width: 100%;
height: 100%;
white-space: nowrap;
.scrollItem{
display: inline-block;
height: 100%;
box-sizing: border-box;
padding: 8rpx 16rpx;
font-size: 32rpx;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #786B6C;
line-height: 40rpx;
}
.selectScroll1{
color: #1E67FF;
position: relative;
}
.selectScroll1:after{
content:'';
position: absolute;
display: inline-block;
bottom: 0rpx;
left: 10rpx;
width: 80%;
height: 8rpx;
background: #1E67FF;
}
}
}
</style>

View File

@ -7,7 +7,7 @@
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="5"/>
<div class="charts">
<div class="chartsItem" >
<p class="title">品牌指数</p>
@ -74,10 +74,13 @@ import BandNumber from "./components/format/bandNumber.vue";
import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default {
name: "businessPortrait",
components: {NoData, BandNumber, ConsumptionLevel, BandLevel, FillingDegree, analyse, headerTop,commercialType},
components: {
SliderPage,
NoData, BandNumber, ConsumptionLevel, BandLevel, FillingDegree, analyse, headerTop,commercialType},
data() {
return {
topBg:'linear-gradient(180deg, #C6C1F0 0%, #CECBF3 100%);',//
@ -262,12 +265,17 @@ export default {
}
const total = await request.$webGet('CommercialApi/BaseInfo/GetServerpartInfo',req)
this.serviceInfoObj = total.Result_Data
this.haveFun = {
car:total.Result_Data.HASPILOTLOUNGE,
charge:total.Result_Data.HASCHARGE ,
bady:total.Result_Data.HASMOTHER ,
gusetHome:total.Result_Data.HASGUESTROOM
if (total.Result_Data){
this.haveFun = {
car:total.Result_Data.HASPILOTLOUNGE,
charge:total.Result_Data.HASCHARGE ,
bady:total.Result_Data.HASMOTHER ,
gusetHome:total.Result_Data.HASGUESTROOM
}
}else{
this.haveFun = {}
}
},
async changeLabel(item){
console.log('item',item)
@ -412,11 +420,20 @@ export default {
uni.setStorageSync('currentService',res)
},
async getFillDegreeList(){
const req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
serverpartId:this.serviceInfo.Serverpart_ID,
BusinessTradeIds:-1
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
BusinessTradeIds:-1
}
}else{
req = {
ProvinceCode:'340000',
StatisticsDate:this.time,
serverpartId:this.serviceInfo.Serverpart_ID,
BusinessTradeIds:-1
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeRevenue',req)
let res = []
@ -526,16 +543,24 @@ export default {
this.consumLevelList = res
},
async getBrandInfoList(){
let req = {
ProvinceCode:'340000',
Serverpart_ID:this.serviceInfo.Serverpart_ID,
Statistics_Date:this.time
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
Statistics_Date:this.time
}
}else{
req = {
ProvinceCode:'340000',
Serverpart_ID:this.serviceInfo.Serverpart_ID,
Statistics_Date:this.time
}
}
let totalData = await request.$webGet('CommercialApi/BaseInfo/GetBrandAnalysis',req)
this.brandLabelList = totalData.Result_Data.BrandTag
this.brandLabelListNoChange = totalData.Result_Data.BrandTag
this.brandInfoList =totalData.Result_Data.ShopBrandList
this.brandInfoListNoChange = totalData.Result_Data.ShopBrandList
this.brandLabelList = totalData && totalData.Result_Data && totalData.Result_Data.BrandTag?totalData.Result_Data.BrandTag:''
this.brandLabelListNoChange = totalData && totalData.Result_Data && totalData.Result_Data.BrandTag?totalData.Result_Data.BrandTag:''
this.brandInfoList = totalData && totalData.Result_Data && totalData.Result_Data.ShopBrandList?totalData.Result_Data.ShopBrandList:''
this.brandInfoListNoChange = totalData && totalData.Result_Data && totalData.Result_Data.ShopBrandList?totalData.Result_Data.ShopBrandList:''
console.log('this.brandInfoList',this.brandInfoList)
// let res = [{icon:'',name:'',company:'',type:0,time:'2019.03-2022.03',label:["","30-40"],info:[9,8,8]},

View File

@ -7,7 +7,7 @@
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="2"/>
<div class="charts">
<div class="chartsItem">
<div style="display: flex;align-items: center;justify-content: space-between">
@ -33,7 +33,7 @@
</div>
</div>
<p class="title">{{thisMonth?thisMonth:'-'}}月客群特征分析</p>
<div v-if="genderBubbleList.res.length>0">
<div v-if="genderBubbleList.res && genderBubbleList.res.length>0">
<customer-second :data="genderBubbleList" />
<analyse :analyseInfo="{analysisins_type: 1203,analysisins_format: 2000}" />
</div>
@ -41,7 +41,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月客群消费偏好</p>
<div v-if="consterPreferList.series.length>0">
<div v-if="consterPreferList.series && consterPreferList.series.length>0">
<consum-prefer :data="consterPreferList" />
<analyse :analyseInfo="{analysisins_type: 1204,analysisins_format: 2000}" />
</div>
@ -49,7 +49,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月客群消费水平</p>
<div v-if="consumptionLevelList.length>0">
<div v-if="consumptionLevelList && consumptionLevelList.length>0">
<consumption-level :data="consumptionLevelList"/>
<analyse :analyseInfo="{analysisins_type: 1205,analysisins_format: 2000}" />
</div>
@ -57,7 +57,7 @@
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月业态客单偏好</p>
<div v-if="businessTypeList.length>0">
<div v-if="businessTypeList && businessTypeList.length>0">
<business-type :data="businessTypeList"></business-type>
<analyse :analyseInfo="{analysisins_type: 1206,analysisins_format: 2000}" />
</div>
@ -79,9 +79,12 @@ import BusinessType from "./components/guest/businessType.vue";
import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default {
name: "guestPortrait",
components:{NoData, BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond,commercialType},
components:{
SliderPage,
NoData, BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond,commercialType},
data() {
return {
topBg:'linear-gradient(180deg, #A1D0C1 0%, #B1D9CD 100%);',//
@ -273,7 +276,7 @@ export default {
const req = {
Province_Code:'340000',
Statistics_Date:time,
Serverpart_ID:this.serviceInfo.Serverpart_ID || '',
Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
ShowConsumptionLevel:true,
ShowConvertRate:true
}
@ -304,7 +307,7 @@ export default {
const req = {
statisticsType:1,
provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'',
serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time)
}
let totalData = await request.$webGet('CommercialApi/Customer/GetCustomerRatio',req)
@ -318,7 +321,7 @@ export default {
})
const bubbleReq = {
provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'',
serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time)
}
@ -350,13 +353,22 @@ export default {
}else{
time = this.endTime
}
const req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
statisticsType:1,
startMonth:this.$util.getThisMonth(time),
endMonth:this.$util.getThisMonth(time),
provinceCode: '340000',
serverpartId: this.serviceInfo.Serverpart_ID||''
}
}else{
req = {
statisticsType:1,
startMonth:this.$util.getThisMonth(time),
endMonth:this.$util.getThisMonth(time),
provinceCode: '340000',
serverpartId: this.serviceInfo.Serverpart_ID || ''
}
}
const data = await request.$webGet('CommercialApi/Customer/GetCustomerSaleRatio',req)
let res = {
@ -403,7 +415,7 @@ export default {
}
const req = {
provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'',
serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time)
}
const data = await request.$webGet('CommercialApi/Customer/GetCustomerConsumeRatio',req)
@ -430,10 +442,18 @@ export default {
}else{
time = this.endTime
}
const req = {
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000',
StatisticsDate:time,
serverpartId:this.serviceInfo.Serverpart_ID || ''
}
}else{
req = {
ProvinceCode:'340000',
StatisticsDate:time,
serverpartId:this.serviceInfo.Serverpart_ID
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeRevenue',req)
let res = []

View File

@ -7,7 +7,7 @@
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="3"/>
<div class="charts">
<div class="chartsItem">
<p class="title">营收分析<span class="dateText">{{lastDay}}</span></p>
@ -141,7 +141,7 @@
<text v-if="selectTab===1" style="margin-top: 12px">单位: </text>
<text v-if="selectTab===2" style="margin-top: 12px">单位: </text>
</div>
<div v-if="moneyCompareList.series.length>0">
<div v-if="moneyCompareList.series && moneyCompareList.series.length>0">
<money-compare :data="moneyCompareList"/>
</div>
<no-data v-else/>
@ -151,7 +151,7 @@
<p class="title" style="margin-top: 20px">营收同比分析</p>
<text style="margin-top: 12px">单位: 万元</text>
</div>
<div v-if="trendsList.series.length>0">
<div v-if="trendsList.series && trendsList.series.length>0">
<revenue-trends :data="trendsList"/>
</div>
<no-data v-else/>
@ -198,10 +198,13 @@ import request from '@/util/index.js'
import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default {
name: "businessPortrait",
components: {NoData, RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop,analyse,commercialType},
components: {
SliderPage,
NoData, RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop,analyse,commercialType},
data() {
return {
topBg:'linear-gradient(180deg, #D9CCEF 0%, #DED3F2 100%);',
@ -415,7 +418,9 @@ export default {
PageSize:10
}
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req)
this.monthNoticeText = data.Result_Data.List[0].ANALYSIS_CONTENT
if (data.Result_Data.List && data.Result_Data.List.length>0){
this.monthNoticeText = data.Result_Data.List[0].ANALYSIS_CONTENT
}
},
@ -437,7 +442,9 @@ export default {
PageSize:10
}
const totalData = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',reqYear)
this.yearNoticeText = totalData.Result_Data.List[0].ANALYSIS_CONTENT
if (totalData.Result_Data.List && totalData.Result_Data.List.length>0){
this.yearNoticeText = totalData.Result_Data.List[0].ANALYSIS_CONTENT
}
},
async nearestService(){
let seat = uni.getStorageSync('seatInfo');
@ -469,7 +476,7 @@ export default {
this.showNoticeYear = false
},
async getSummaryMonth(){
let currentService = uni.getStorageSync('currentService')
// let currentService = uni.getStorageSync('currentService')
console.log('this.time',this.time)
const date = new Date(this.time)
let y = date.getFullYear()
@ -485,7 +492,7 @@ export default {
pushProvinceCode:'340000',
Statistics_StartDate:`${y}-${m}-01`,
Statistics_Date:`${y}-${m}-${d}`,
Serverpart_ID:currentService.Serverpart_ID
Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID
}
const data = await request.$webGet('CommercialApi/Revenue/GetSummaryRevenue',req)
console.log('data22222',data)
@ -542,10 +549,18 @@ export default {
this.moneyCompareList = this.revenue.list
},
async getMoneyCompareList(){
let req = {
StatisticsDate:this.time,
ServerpartId:this.serviceInfo.Serverpart_ID || ''
let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
StatisticsDate:this.time,
}
}else{
req = {
StatisticsDate:this.time,
ServerpartId:this.serviceInfo.Serverpart_ID ||''
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetRevenueCompare',req)
let RevenueAmount = [] // 10000
let normalAmount = [] //10000
@ -555,48 +570,54 @@ export default {
let TicketMax = 0
let AvgTicketAmountList = [] //
let AvgTicketMax = 0
data.Result_Data.RevenueAmountList.forEach(item=>{
if (data.Result_Data.RevenueAmountList && data.Result_Data.RevenueAmountList.length>0){
data.Result_Data.RevenueAmountList.forEach(item=>{
let list = []
let listNormal = []
let qoqAddList = [] //
item.data.forEach(subItem=>{
let number = (subItem[1] / 10000 ).toFixed(2)
if (number>RevenueMax){
RevenueMax = number
}
list.push(number)
qoqAddList.push(subItem[2])
listNormal.push(subItem[1])
let number = (subItem[1] / 10000 ).toFixed(2)
if (number>RevenueMax){
RevenueMax = number
}
list.push(number)
qoqAddList.push(subItem[2])
listNormal.push(subItem[1])
})
normalAmount.push({name:item.name,data:listNormal})
RevenueAmount.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value})
})
data.Result_Data.TicketCountList.forEach(item=>{
})
}
if (data.Result_Data.TicketCountList && data.Result_Data.TicketCountList.length>0){
data.Result_Data.TicketCountList.forEach(item=>{
let list = []
let qoqAddList = [] //
item.data.forEach(subItem=>{
let number = (subItem[1]).toFixed(0)
if (number > TicketMax){
TicketMax = Number(number)
}
qoqAddList.push(subItem[2])
list.push(number)
let number = (subItem[1]).toFixed(0)
if (number > TicketMax){
TicketMax = Number(number)
}
qoqAddList.push(subItem[2])
list.push(number)
})
TicketCountList.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value})
})
data.Result_Data.AvgTicketAmountList .forEach(item=>{
})
}
if (data.Result_Data.AvgTicketAmountList && data.Result_Data.AvgTicketAmountList.length>0){
data.Result_Data.AvgTicketAmountList .forEach(item=>{
let list = []
let qoqAddList = [] //
item.data.forEach(subItem=>{
let number = (subItem[1]).toFixed(2)
if (number>AvgTicketMax){
AvgTicketMax = number
}
list.push(number)
qoqAddList.push(subItem[2])
let number = (subItem[1]).toFixed(2)
if (number>AvgTicketMax){
AvgTicketMax = number
}
list.push(number)
qoqAddList.push(subItem[2])
})
AvgTicketAmountList.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value})
})
})
}
//
this.revenueAll = [
{
@ -655,18 +676,37 @@ export default {
let date = new Date(this.time)
let y = date.getFullYear()
//
let req = {
let req
let yesReq
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req={
ProvinceCode:'340000',
StatisticsDate:y,
StatisticsType:1,
ServerpartId:this.serviceInfo.Serverpart_ID || ''
}
let yesReq = {
}
}else{
req ={
ProvinceCode:'340000',
StatisticsDate:y - 1,
StatisticsDate:y,
StatisticsType:1,
ServerpartId:this.serviceInfo.Serverpart_ID || ''
ServerpartId:this.serviceInfo.Serverpart_ID ||''
}
}
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
yesReq={
ProvinceCode:'340000',
StatisticsDate:y - 1,
StatisticsType:1,
}
}else{
yesReq = {
ProvinceCode:'340000',
StatisticsDate:y - 1,
StatisticsType:1,
ServerpartId:this.serviceInfo.Serverpart_ID ||''
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetRevenueTrend',req)
const yesData = await request.$webGet('CommercialApi/Revenue/GetRevenueTrend',yesReq)
let list = []
@ -714,34 +754,43 @@ export default {
pushProvinceCode:'340000',
Statistics_StartDate:`${y}-${m}-01`,
Statistics_Date:this.time,
Serverpart_ID:this.serviceInfo.Serverpart_ID || ''
Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID
}
const data = await request.$webGet('CommercialApi/Revenue/GetSummaryRevenue',req)
let all = 0
data.Result_Data.BusinessTypeList.forEach(item=>{
if (data.Result_Data && data.Result_Data.BusinessTypeList && data.Result_Data.BusinessTypeList.length>0){
data.Result_Data.BusinessTypeList.forEach(item=>{
all +=Number(item.value)
})
data.Result_Data.BusinessTypeList.forEach(item=>{
})
data.Result_Data.BusinessTypeList.forEach(item=>{
item.rate = ((Number(item.value) / all)*100).toFixed(2)
})
let res={
})
let res={
own:data.Result_Data.BusinessTypeList[1].rate,
ectocyst:data.Result_Data.BusinessTypeList[0].rate
}
this.revenueType = res
}else{
this.revenueType = null
}
this.revenueType = res
},
monthYearPlan(){
const monthDate= {
Province_Code:'340000',
Serverpart_ID:this.serviceInfo.Serverpart_ID || '',
Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
Statistics_Date:this.time
}
request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{
// data
this.plan = res.Result_Data
this.plan.percentageMonth = (res.Result_Data.RevenueMonth_Amount / res.Result_Data.BudgetMonth_Amount*100).toFixed(2)
if (this.plan){
if (this.plan && this.plan.RevenueMonth_Amount){
this.plan.percentageMonth = (res.Result_Data.RevenueMonth_Amount / res.Result_Data.BudgetMonth_Amount*100).toFixed(2)
}
if (this.plan && this.plan.RevenueYear_Amount){
this.plan.percentageYear = (res.Result_Data.RevenueYear_Amount / res.Result_Data.BudgetYear_Amount*100).toFixed(2)
}
// this.plan.percentageMonth = 80
this.plan.percentageYear = (res.Result_Data.RevenueYear_Amount / res.Result_Data.BudgetYear_Amount*100).toFixed(2)
// let date = new Date(this.time)
// let nowDay = date.getDate()
// let day = this.$util.getThisMonthDay(this.time)
@ -749,7 +798,7 @@ export default {
// let oneDay = 100/day
// //
// let thisDayShould= oneDay*nowDay
//
//
this.monthAdd = Math.abs(this.plan.MonthGrowth_Rate)
this.yearAdd = Math.abs(this.plan.YearGrowth_Rate)
//
@ -757,6 +806,7 @@ export default {
this.plan.BudgetMonth_Amount = this.$util.fmoney(res.Result_Data.BudgetMonth_Amount)
this.plan.RevenueYear_Amount = this.$util.fmoney(res.Result_Data.RevenueYear_Amount)
this.plan.BudgetYear_Amount = this.$util.fmoney(res.Result_Data.BudgetYear_Amount)
}
})
}
}

View File

@ -0,0 +1,500 @@
<template>
<view class="main">
<div class="headerTopBox" >
<div class="header" :style="{height:menu.height + 'px',top:menu.top+'px'}">
<image class="backArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/leftArrowWhite.svg" @click="handleBack"/>
<div class="timeSelect">
<img class="selectIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/selectDateIcon.svg"/>
<picker mode="date" :value="searchText" :end="lastDay" @change="changeAllProvinceSearch" >
<view class="time">
<view class="text">{{ searchText }}</view>
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"></image>
</view>
</picker>
</div>
</div>
<div class="picker" :style="{top:(menu.bottom + 24)+'px'}" @click="handleGoSelectService">
<div class="selectService" >
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select">
<view class="content">
<view class="uni-input">{{serviceInfo.SERVERPART_NAME}}</view>
<p class="area" v-if="serviceInfo.Serverpart_ID">{{serviceInfo.SPREGIONTYPE_NAME}}</p>
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view>
</view>
</div>
</div>
</div>
<div class="otherCharts">
<div class="list">
<span class="itemTitle">车流数据</span>
<div class="listItem" v-for="(item,index) in regionList" :key="index" @click="handleNoneChild(item)">
<div class="listBox" :style="{borderBottom:item.showChild?'1px solid #D9DBE0':'0px solid #D9DBE0'}">
<div class="itemTop">
<div class="itemLeft">
<div style="display: flex;align-items: center">
<img class="itemFixed" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/fixedIcon.svg"/>
<span class="serverName">{{serviceInfo.SERVERPART_NAME?serviceInfo.SERVERPART_NAME.split('服务区')[0]:''}}</span>
</div>
</div>
<div class="itemRight">
<div class="entryRate">
<text class="entryValue">{{item.Entry_Rate ||''}}%</text>
<text class="entryLabel">入区率</text>
</div>
<img class="img" :style="{transform:item.showChild?'':'rotate(-90deg)'}" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"/>
</div>
</div>
</div>
<div class="childList" v-if="item.showChild" >
<view class="childItem">
<text class="childValue">{{item.RevenueAmount?$util.fmoney($util.getMoney(item.RevenueAmount/10000)):''}}</text>
<text class="childLabel">营收 /万元</text>
</view>
<view class="childItem">
<text class="childValue">{{item.AvgVehicleAmount ||''}}</text>
<text class="childLabel">单车 /</text>
</view>
<view class="childItem">
<text class="childValue">{{item.Vehicle_Count?$util.fmoney($util.getMoney(item.Vehicle_Count/10000)):''}}</text>
<text class="childLabel">入区 /万辆</text>
</view>
</div>
</div>
</div>
</div>
</view>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "serviceMessage",
data(){
const lastDay = this.$util.cutDate(new Date(), 'YYYY-MM-DD', -1)
return {
menu:{}, //
serviceInfo:{},
lastDay:lastDay,
searchText:'',
regionList:[]
}
},
onLoad(){
this.menu = uni.getMenuButtonBoundingClientRect()
let storeServiceInfo = uni.getStorageSync('currentService')
let nearServiceInfo = uni.getStorageSync('nearService')
if (!storeServiceInfo){
this.serviceInfo = nearServiceInfo
}else{
this.serviceInfo = storeServiceInfo
}
let storeTime = uni.getStorageSync('lastDay')
if (storeTime){
this.time = storeTime
}
this.searchText = this.time
console.log('this.serviceInfo',this.serviceInfo)
this.getCarData()
},
methods:{
handleBack(){
uni.switchTab({
url: '/pages/index/index'
})
},
async changeAllProvinceSearch(e){
this.searchText = e.detail.value
},
handleGoSelectService() {
uni.navigateTo({
url:`/pages/map/index?chartType=${true}&page=/pages/commercialBI/carPortrait&serviceInfo=${JSON.stringify(this.serviceInfo)}`
})
},
getCarData(){
request.$webGet('CommercialApi/BigData/GetMonthAnalysis',{
// StatisticsDate: this.time,
StartDate:this.time,
EndDate:this.time,
// Serverpart_ID :this.serviceInfo.Serverpart_ID!==0?this.serviceInfo.Serverpart_ID:null,
// Serverpart_ID :419,
}).then(res=>{
this.carData = res.Result_Data.List
this.carData.forEach(item=>{
item.Serverpart_ID = this.serviceInfo.Serverpart_ID
item.showChild = false
})
this.regionList = this.carData
console.log('this.carData',this.carData)
// let sumObj = {
// Serverpart_Name:'',
// Serverpart_Region:'',
// SectionFlow_Count:0,
// Vehicle_Count:0,
// showChild:false
// }
// this.carData.forEach(item=>{
// sumObj.Serverpart_Name = item.Serverpart_Name
// sumObj.Serverpart_Region = item.Serverpart_Region
// sumObj.SectionFlow_Count += item.SectionFlow_Count
// sumObj.Vehicle_Count += item.Vehicle_Count
// })
// if (sumObj.Vehicle_Count && sumObj.SectionFlow_Count){
// sumObj.Entry_Rate = ((sumObj.Vehicle_Count / sumObj.SectionFlow_Count)*100).toFixed(2)
// }
// console.log('sumObj',sumObj)
// sumObj.Vehicle_Count = this.$util.fmoney(this.$util.getMoney(sumObj.Vehicle_Count / 10000),2)
// this.regionList = [sumObj]
})
},
handleNoneChild(obj){
this.regionList.forEach(item=>{
if (item.name === obj.name){
item.showChild = !item.showChild
}
})
},
}
}
</script>
<style scoped lang="scss">
.main {
width: 100%;
background: #fff;
min-height: 100vh;
overflow: hidden;
.headerTopBox{
width: 100%;
//height: 152px;
height: 324px;
box-sizing: border-box;
position: relative;
background: linear-gradient(90deg, #60AAFF 0%,#3E74FF 100%);
.header{
position: absolute;
width: 100%;
padding: 0 16px;
box-sizing: border-box;
display: flex;
align-items: center;
.backArrow{
width: 24px;
height: 24px;
margin-right: 16px;
}
.timeSelect{
display: flex;
align-items: center;
.selectIcon{
width: 16px;
height: 16px;
}
.time{
display: flex;
align-items: center;
.text{
margin: 0 5px;
color: #fff;
}
.icon{
width: 18px;
height: 18px;
}
}
}
}
.picker{
position: absolute;
left: 16px;
.selectService{
display: flex;
align-items: center;
.img{
width: 40px;
height: 40px;
z-index: 2;
}
.select{
height: 32px;
background: #F8F8FA;
border-radius: 0 16px 16px 0;
transform: translateX(-20px);
box-sizing: border-box;
padding-left: 25px;
display: flex;
align-items: center;
.content{
display: flex;
align-items: center;
.uni-input{
padding: 0;
background: transparent;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
}
.area{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 40px;
margin-left: 4px;
}
.rightArrow{
width: 24px;
height: 12px;
}
}
}
}
}
}
.otherCharts{
width: 100%;
box-sizing: border-box;
padding: 0 16px;
/*日结上传*/
.chartsTop {
width: 100%;
box-sizing: border-box;
padding: 0 16px;
display: flex;
align-items: center;
justify-content: space-between;
.left{
display: flex;
justify-content: flex-start;
.serviceArea{
box-sizing: border-box;
.picker{
.selectService{
display: flex;
align-items: center;
.img{
width: 40px;
height: 40px;
z-index: 2;
}
.select{
height: 32px;
background: #F8F8FA;
border-radius: 0 16px 16px 0;
transform: translateX(-20px);
box-sizing: border-box;
padding-left: 25px;
display: flex;
align-items: center;
.content{
display: flex;
align-items: center;
.uni-input{
padding: 0;
background: transparent;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
}
.area{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 40px;
margin-left: 4px;
}
.rightArrow{
width: 24px;
height: 12px;
}
}
}
}
}
}
}
.right{
.time {
display: flex;
align-items: center;
margin-right: 4px;
.day {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #782717;
line-height: 44rpx;
margin-right: 4px;
}
.uni-input {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #ae664e;
line-height: 36rpx;
}
.icon {
width: 24px;
height: 16px;
}
}
}
}
.list{
margin-top: 24px;
box-sizing: border-box;
padding-bottom: 12px;
.itemTitle{
display: block;
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
margin-bottom: 12px;
}
.listItem{
margin-bottom: 12px;
border: 1px solid #D9DBE0;
border-radius: 8px;
position: relative;
.bg{
position: absolute;
right: 0;top: 0;
width: 97px;
height: 97px;
}
.listBox{
width: 100%;
box-sizing: border-box;
padding: 12px 16px;
background: linear-gradient(314deg, #EAEFFF 0%, #F3F5FF 32%, #F5FCFF 50%, #F0F7FF 67%, #DBE5FF 100%);
border-bottom: 1px solid #D9DBE0;
border-radius: 8px;
.itemTop{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.itemLeft{
display: inline-block;
padding: 4px 12px;
background: rgba(26, 95, 255, 0.1);
border-radius: 14px;
.itemFixed{
width: 12px;
height: 14px;
margin-right: 4px;
}
.serverName{
font-size: 20px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
white-space: nowrap;
color: #1A5FFF;
line-height: 22px
}
}
.itemRight{
display: flex;
align-items: center;
.entryRate{
display: flex;
flex-direction: column;
.entryValue{
font-size: 18px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: red;
line-height: 24px;
white-space: nowrap;
}
.entryLabel{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
}
}
.img{
width: 26px;
height: 14px;
}
}
}
.itemDetail{
margin-top: 16px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.message{
display: flex;
flex-direction: column;
.cirRate{
width: 40px;
height: 40px;
}
.label{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px
}
.value{
font-size: 20px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
line-height: 24px;
white-space: nowrap;
}
}
}
}
.childList{
border-radius: 8px 8px 0 0;
box-sizing: border-box;
margin-left: 16px;
width: calc(100% - 32px);
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px;
.childItem{
width: calc(100% / 3);
display: flex;
flex-direction: column;
.childLabel{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px
}
.childValue{
font-size: 18px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
line-height: 24px;
}
}
}
}
}
}
}
</style>

View File

@ -24,7 +24,9 @@
<swiper class="swiperBox" :current="currentSwiper" @change="changeSwiper">
<swiper-item class="swiperItem" v-for="(item,index) in carSwiperList" :key="index">
<view v-if="item!=='previous' && item!=='next'" class="header" :style="{background:`url(${item})`}">
<view class="sliderBox">
<SliderPage :index="type===1?1:0"/>
</view>
</view>
</swiper-item>
</swiper>
@ -37,7 +39,7 @@
</view>
<view class="content">
<view v-if="type===1" class="serviceList" style="height:calc(100vh - 260px);">
<view v-if="serviceList.length>0">
<view v-if="serviceList && serviceList.length>0">
<view class="serviceItem" v-for="(item,index) in serviceList" :key="index" >
<view class="itemTitle">
<span class="title">{{item.SERVERPART_NAME}}</span>
@ -78,7 +80,7 @@
</view>
</view>
<view v-if="type===2" class="serviceList" style="height:calc(100vh - 300px);">
<view v-if="inspectionList.length && inspectionList.length>0 ">
<view v-if="inspectionList && inspectionList.length>0 ">
<view class="dailyInspection" v-for="(item,index) in inspectionList" :key="index">
<view class="itemTitle">
<span class="title">{{item.SERVERPART_NAME}}</span>
@ -219,8 +221,10 @@
import request from '@/util/index.js'
import uniPopup from '@/components/uni-popup'
import CommercialType from "./commercialType.vue";
import SliderPage from "./sliderPage.vue";
export default {
components:{
SliderPage,
CommercialType,
uniPopup
},
@ -342,10 +346,18 @@ export default {
if (d<10){
d = '0'+d
}
const req = {
SearchStartDate:`${y}-${m}-01`,
SearchEndDate:`${y}-${m}-${d}`,
Serverpart_ID:this.currentService.Serverpart_ID
let req
if (this.currentService.SERVERPART_NAME==='安徽驿达'){
req = {
SearchStartDate:`${y}-${m}-01`,
SearchEndDate:`${y}-${m}-${d}`,
}
}else{
req = {
SearchStartDate:`${y}-${m}-01`,
SearchEndDate:`${y}-${m}-${d}`,
Serverpart_ID:this.currentService.Serverpart_ID
}
}
const total = await request.$webGet(`CommercialApi/Examine/WeChat_GetExamineList`,req)
this.serviceList = total.Result_Data
@ -426,29 +438,41 @@ export default {
if (d<10){
d = '0'+d
}
const res = await request.$webGet(`CommercialApi/Examine/WeChat_GetPatrolList`,{
SearchStartDate:`${y}-${m}-01`,//
SearchEndDate:`${y}-${m}-${d}`,//
SPRegionType_ID:'',// ","
Serverpart_ID:this.currentService.Serverpart_ID,// ","
})
this.inspectionList = res.Result_Data
let req
if (this.currentService.SERVERPART_NAME==='安徽驿达'){
req = {
SearchStartDate:`${y}-${m}-01`,//
SearchEndDate:`${y}-${m}-${d}`,//
SPRegionType_ID:'',// ","
}
}else{
req = {
SearchStartDate:`${y}-${m}-01`,//
SearchEndDate:`${y}-${m}-${d}`,//
SPRegionType_ID:'',// ","
Serverpart_ID:this.currentService.Serverpart_ID,// ","
}
}
this.inspectionList.forEach(item=>{
item.list.forEach(subItem=>{
let i = 0
subItem.SERVERPARTList.forEach(thirdItem=>{
if (thirdItem.COMPLETE_STATE===0){
i++
const res = await request.$webGet(`CommercialApi/Examine/WeChat_GetPatrolList`,req)
this.inspectionList = res.Result_Data
if (this.inspectionList && this.inspectionList.length>0){
this.inspectionList.forEach(item=>{
item.list.forEach(subItem=>{
let i = 0
subItem.SERVERPARTList.forEach(thirdItem=>{
if (thirdItem.COMPLETE_STATE===0){
i++
}
})
if (i>0){
subItem.warning=false
}else{
subItem.warning=true
}
})
if (i>0){
subItem.warning=false
}else{
subItem.warning=true
}
})
})
}
console.log('inspectionList',this.inspectionList)
uni.hideLoading()
},
@ -536,7 +560,11 @@ export default {
position: absolute;
top: 0;left: 0;
z-index:1;
.sliderBox{
width: 100%;
position: absolute;
bottom: 20px;
}
}
}
}

View File

@ -0,0 +1,54 @@
<template>
<view class="sliderPage">
<view class="slider">
<view class="rate" :style="{right: (index*15) + 'rpx'}"></view>
</view>
</view>
</template>
<script>
export default {
name: "sliderPage",
data(){
return {
}
},
props:{
index:{
type: Number,
default: 0
}
},
onLoad(){
},
methods:{
}
}
</script>
<style scoped lang="scss">
.sliderPage{
width: 100%;
height: 16rpx;
display: flex;
justify-content: center;
margin-top: 8rpx;
.slider{
width: 120rpx;
height: 8rpx;
background: #e0dfdf;
border-radius: 4rpx;
position: relative;
.rate{
position: absolute;
top: 0;
height: 100%;
background: #786B6C;
border-radius: 4rpx;
width: calc(100% / 8);
}
}
}
</style>

View File

@ -1246,6 +1246,15 @@ export default {
...mapActions(['memberLogin','getLoginCode']),
//
handleGoServiceMessage(){
let YD = {
SERVERPART_NAME: "安徽驿达",
SPREGIONTYPE_NAME: "",
SPRegionType_ID: null,
Serverpart_ID: 424,
latitude: 32,
longitude: 117,
}
uni.setStorageSync('currentService',YD)
this.$util.toNextRoute('navigateTo', `/pages/map/detail?isPicker=${true}&come=index`)
// let _this = this
@ -1469,6 +1478,15 @@ export default {
}
},
handleGoTab(item){
let YD = {
SERVERPART_NAME: "安徽驿达",
SPREGIONTYPE_NAME: "",
SPRegionType_ID: null,
Serverpart_ID: 424,
latitude: 32,
longitude: 117,
}
uni.setStorageSync('currentService',YD)
if (!this.isReturn){
this.$util.toNextRoute('navigateTo', `${item.path}?time=${this.lastDay}&serviceInfo=${JSON.stringify(this.nearServiceInfo)}`)
} else{

View File

View File

@ -34,6 +34,9 @@
<swiper v-if="topBg && topBg.length>0" :current="currentImg" class="carousel" @change="changeSwiper">
<swiper-item class="imgIndex" v-for="(item,index) in topBg" :key="index" :style="{backgroundImage:`url(${item})`}">
<!-- <image class="img" :src="item"></image>-->
<view class="sliderPage" v-if="item.key!=='previous' && item.key!=='next'">
<SliderPage :index="0"/>
</view>
</swiper-item>
</swiper>
<div v-if="topBg && topBg.length>0" class="picNumber" @click="handlePreview">
@ -179,9 +182,10 @@
<script>
import request from '@/util/index.js'
import commercialType from "./commercialType.vue";
import SliderPage from "./sliderPage.vue";
export default {
name: "detail",
components: {commercialType},
components: {SliderPage, commercialType},
data(){
return {
info:{},
@ -466,6 +470,22 @@ export default {
width: 100%;
height: 100%;
background-size: 100% 100%;
.sliderPage{
width: 100%;
height: 16rpx;
z-index: 9;
position: absolute;
bottom: 20px;
left: 0;
display: flex;
justify-content: center;
align-items: center;
.sliderBg{
width: 120rpx;
background: #fff;
border-radius: 8rpx;
}
}
//.img{
// width: 100%;
// height: 324px;

View File

@ -3,7 +3,12 @@
<div class="leftArrow" :style="{top:(menu.top + ((menu.height - 24)/2) )+ 'px'}" @click="handleBack">
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"></image>
</div>
<map v-if="isShowMap" id="myMap" :longitude="longitude" :latitude="latitude" :markers="markers" class="map" show-location></map>
<view class="mapBox" v-if="isShowMap">
<map id="myMap" :longitude="longitude" :latitude="latitude" :markers="markers" class="map" show-location></map>
<view class="ydBox" @click="handleClickYD">
<image class="ydIcon" src="/static/images/tabBar/company_active.png"/>
</view>
</view>
<view v-else class="map"></view>
<div class="list" :style="{transform:isMoveUp?`translateY(calc(-40vh + ${menu.bottom + 5}px))`:''}">
<div class="top">
@ -170,6 +175,21 @@ export default {
}
},
methods:{
// 驿 驿
handleClickYD(){
let YD = {
SERVERPART_NAME: "安徽驿达",
SPREGIONTYPE_NAME: "",
SPRegionType_ID: null,
Serverpart_ID: 424,
latitude: 32,
longitude: 117,
}
uni.setStorageSync('currentService',YD)
uni.navigateBack({
delta: 1
})
},
// SERVERPART_TYPE
async handleServiceType(){
const data = await getFieldEnum({ FieldExplainField: 'SERVERPART_TYPE' });
@ -351,8 +371,10 @@ export default {
this.serviceList = data.Result_Data.List
console.log(' this.serviceList', this.serviceList)
if (this.serviceMessage && this.serviceMessage.SERVERPART_NAME){
this.longitude = this.serviceList[0].SERVERPART_X
this.latitude = this.serviceList[0].SERVERPART_Y
if (this.serviceList && this.serviceList.length>0){
this.longitude = this.serviceList[0].SERVERPART_X
this.latitude = this.serviceList[0].SERVERPART_Y
}
}
},
//
@ -412,9 +434,32 @@ export default {
height: 100%;
}
}
.map{
.mapBox{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 40vh;
.map{
width: 100%;
height: 40vh;
}
.ydBox{
width: 40px;
height: 40px;
background: #fff;
border-radius: 50%;
position: absolute;
bottom: 40px;
left: 16px;
display: flex;
align-items: center;
justify-content: center;
.ydIcon{
width: 30px;
height: 30px;
}
}
}
.list{
width: 100%;
@ -422,6 +467,8 @@ export default {
box-sizing: border-box;
transform: translateY(-20px);
background: #F2F4F5;
position: absolute;
top: 40vh;
.top{
width: 100%;
height: 74px;

50
pages/map/sliderPage.vue Normal file
View File

@ -0,0 +1,50 @@
<template>
<view class="sliderPage">
<view class="slider">
<view class="rate"></view>
</view>
</view>
</template>
<script>
export default {
name: "sliderPage",
data(){
return {
}
},
props:{
},
onLoad(){
},
methods:{
}
}
</script>
<style scoped lang="scss">
.sliderPage{
width: 100%;
height: 16rpx;
display: flex;
justify-content: center;
align-items: center;
.slider{
width: 120rpx;
height: 8rpx;
background: #e0dfdf;
border-radius: 4rpx;
position: relative;
.rate{
position: absolute;
top: 0;
height: 100%;
background: #786B6C;
border-radius: 4rpx;
width: calc(100% / 8);
}
}
}
</style>