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" "navigationStyle": "custom"
} }
}, },
{
"path": "serviceMessage",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
},
{ {
"path": "planMonth", "path": "planMonth",
"style": { "style": {

View File

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

View File

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

View File

@ -54,9 +54,11 @@ export default {
methods: { methods: {
// //
handleCarData(value) { 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('hotSales', res[0],{color:["#1E80FF","#E5E8EF"],title:'39.8%',subTitle:'热销商品'})
this.drawCharts('unsalableGoods', res[1],{color:["#00C2FF","#E5E8EF"],title:'21.6%',subTitle:'滞销商品'}) this.drawCharts('unsalableGoods', res[1],{color:["#00C2FF","#E5E8EF"],title:'21.6%',subTitle:'滞销商品'})
}
}, },
drawCharts(id, data,config) { drawCharts(id, data,config) {
const ctx = uni.createCanvasContext(id, this); 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" :serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg" :topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/> :haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="5"/>
<div class="charts"> <div class="charts">
<div class="chartsItem" > <div class="chartsItem" >
<p class="title">品牌指数</p> <p class="title">品牌指数</p>
@ -74,10 +74,13 @@ import BandNumber from "./components/format/bandNumber.vue";
import NoData from "./components/noData.vue"; import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue"; import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime"; import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default { export default {
name: "businessPortrait", name: "businessPortrait",
components: {NoData, BandNumber, ConsumptionLevel, BandLevel, FillingDegree, analyse, headerTop,commercialType}, components: {
SliderPage,
NoData, BandNumber, ConsumptionLevel, BandLevel, FillingDegree, analyse, headerTop,commercialType},
data() { data() {
return { return {
topBg:'linear-gradient(180deg, #C6C1F0 0%, #CECBF3 100%);',// topBg:'linear-gradient(180deg, #C6C1F0 0%, #CECBF3 100%);',//
@ -262,12 +265,17 @@ export default {
} }
const total = await request.$webGet('CommercialApi/BaseInfo/GetServerpartInfo',req) const total = await request.$webGet('CommercialApi/BaseInfo/GetServerpartInfo',req)
this.serviceInfoObj = total.Result_Data this.serviceInfoObj = total.Result_Data
this.haveFun = { if (total.Result_Data){
car:total.Result_Data.HASPILOTLOUNGE, this.haveFun = {
charge:total.Result_Data.HASCHARGE , car:total.Result_Data.HASPILOTLOUNGE,
bady:total.Result_Data.HASMOTHER , charge:total.Result_Data.HASCHARGE ,
gusetHome:total.Result_Data.HASGUESTROOM bady:total.Result_Data.HASMOTHER ,
gusetHome:total.Result_Data.HASGUESTROOM
}
}else{
this.haveFun = {}
} }
}, },
async changeLabel(item){ async changeLabel(item){
console.log('item',item) console.log('item',item)
@ -412,11 +420,20 @@ export default {
uni.setStorageSync('currentService',res) uni.setStorageSync('currentService',res)
}, },
async getFillDegreeList(){ async getFillDegreeList(){
const req = { let req
ProvinceCode:'340000', if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
StatisticsDate:this.time, req = {
serverpartId:this.serviceInfo.Serverpart_ID, ProvinceCode:'340000',
BusinessTradeIds:-1 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) const data = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeRevenue',req)
let res = [] let res = []
@ -526,16 +543,24 @@ export default {
this.consumLevelList = res this.consumLevelList = res
}, },
async getBrandInfoList(){ async getBrandInfoList(){
let req = { let req
ProvinceCode:'340000', if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
Serverpart_ID:this.serviceInfo.Serverpart_ID, req = {
Statistics_Date:this.time 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) let totalData = await request.$webGet('CommercialApi/BaseInfo/GetBrandAnalysis',req)
this.brandLabelList = totalData.Result_Data.BrandTag this.brandLabelList = totalData && totalData.Result_Data && totalData.Result_Data.BrandTag?totalData.Result_Data.BrandTag:''
this.brandLabelListNoChange = totalData.Result_Data.BrandTag this.brandLabelListNoChange = totalData && totalData.Result_Data && totalData.Result_Data.BrandTag?totalData.Result_Data.BrandTag:''
this.brandInfoList =totalData.Result_Data.ShopBrandList this.brandInfoList = totalData && totalData.Result_Data && totalData.Result_Data.ShopBrandList?totalData.Result_Data.ShopBrandList:''
this.brandInfoListNoChange = totalData.Result_Data.ShopBrandList this.brandInfoListNoChange = totalData && totalData.Result_Data && totalData.Result_Data.ShopBrandList?totalData.Result_Data.ShopBrandList:''
console.log('this.brandInfoList',this.brandInfoList) 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]}, // 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" :serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg" :topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/> :haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="2"/>
<div class="charts"> <div class="charts">
<div class="chartsItem"> <div class="chartsItem">
<div style="display: flex;align-items: center;justify-content: space-between"> <div style="display: flex;align-items: center;justify-content: space-between">
@ -33,7 +33,7 @@
</div> </div>
</div> </div>
<p class="title">{{thisMonth?thisMonth:'-'}}月客群特征分析</p> <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" /> <customer-second :data="genderBubbleList" />
<analyse :analyseInfo="{analysisins_type: 1203,analysisins_format: 2000}" /> <analyse :analyseInfo="{analysisins_type: 1203,analysisins_format: 2000}" />
</div> </div>
@ -41,7 +41,7 @@
</div> </div>
<div class="chartsItem" style="margin-top: 32px"> <div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月客群消费偏好</p> <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" /> <consum-prefer :data="consterPreferList" />
<analyse :analyseInfo="{analysisins_type: 1204,analysisins_format: 2000}" /> <analyse :analyseInfo="{analysisins_type: 1204,analysisins_format: 2000}" />
</div> </div>
@ -49,7 +49,7 @@
</div> </div>
<div class="chartsItem" style="margin-top: 32px"> <div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月客群消费水平</p> <p class="title">{{thisMonth?thisMonth:'-'}}月客群消费水平</p>
<div v-if="consumptionLevelList.length>0"> <div v-if="consumptionLevelList && consumptionLevelList.length>0">
<consumption-level :data="consumptionLevelList"/> <consumption-level :data="consumptionLevelList"/>
<analyse :analyseInfo="{analysisins_type: 1205,analysisins_format: 2000}" /> <analyse :analyseInfo="{analysisins_type: 1205,analysisins_format: 2000}" />
</div> </div>
@ -57,7 +57,7 @@
</div> </div>
<div class="chartsItem" style="margin-top: 32px"> <div class="chartsItem" style="margin-top: 32px">
<p class="title">{{thisMonth?thisMonth:'-'}}月业态客单偏好</p> <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> <business-type :data="businessTypeList"></business-type>
<analyse :analyseInfo="{analysisins_type: 1206,analysisins_format: 2000}" /> <analyse :analyseInfo="{analysisins_type: 1206,analysisins_format: 2000}" />
</div> </div>
@ -79,9 +79,12 @@ import BusinessType from "./components/guest/businessType.vue";
import NoData from "./components/noData.vue"; import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue"; import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime"; import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default { export default {
name: "guestPortrait", name: "guestPortrait",
components:{NoData, BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond,commercialType}, components:{
SliderPage,
NoData, BusinessType, ConsumptionLevel, ConsumPrefer, analyse, headerTop,customerFirst,customerSecond,commercialType},
data() { data() {
return { return {
topBg:'linear-gradient(180deg, #A1D0C1 0%, #B1D9CD 100%);',// topBg:'linear-gradient(180deg, #A1D0C1 0%, #B1D9CD 100%);',//
@ -273,7 +276,7 @@ export default {
const req = { const req = {
Province_Code:'340000', Province_Code:'340000',
Statistics_Date:time, Statistics_Date:time,
Serverpart_ID:this.serviceInfo.Serverpart_ID || '', Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
ShowConsumptionLevel:true, ShowConsumptionLevel:true,
ShowConvertRate:true ShowConvertRate:true
} }
@ -304,7 +307,7 @@ export default {
const req = { const req = {
statisticsType:1, statisticsType:1,
provinceCode:'340000', provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'', serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time) statisticsMonth:this.$util.getThisMonth(time)
} }
let totalData = await request.$webGet('CommercialApi/Customer/GetCustomerRatio',req) let totalData = await request.$webGet('CommercialApi/Customer/GetCustomerRatio',req)
@ -318,7 +321,7 @@ export default {
}) })
const bubbleReq = { const bubbleReq = {
provinceCode:'340000', provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'', serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time) statisticsMonth:this.$util.getThisMonth(time)
} }
@ -350,13 +353,22 @@ export default {
}else{ }else{
time = this.endTime time = this.endTime
} }
let req
const req = { if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
statisticsType:1, statisticsType:1,
startMonth:this.$util.getThisMonth(time), startMonth:this.$util.getThisMonth(time),
endMonth:this.$util.getThisMonth(time), endMonth:this.$util.getThisMonth(time),
provinceCode: '340000', 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) const data = await request.$webGet('CommercialApi/Customer/GetCustomerSaleRatio',req)
let res = { let res = {
@ -403,7 +415,7 @@ export default {
} }
const req = { const req = {
provinceCode:'340000', provinceCode:'340000',
serverpartId:this.serviceInfo.Serverpart_ID||'', serverpartId:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
statisticsMonth:this.$util.getThisMonth(time) statisticsMonth:this.$util.getThisMonth(time)
} }
const data = await request.$webGet('CommercialApi/Customer/GetCustomerConsumeRatio',req) const data = await request.$webGet('CommercialApi/Customer/GetCustomerConsumeRatio',req)
@ -430,10 +442,18 @@ export default {
}else{ }else{
time = this.endTime time = this.endTime
} }
const req = { let req
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req = {
ProvinceCode:'340000', ProvinceCode:'340000',
StatisticsDate:time, 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) const data = await request.$webGet('CommercialApi/Revenue/GetBusinessTradeRevenue',req)
let res = [] let res = []

View File

@ -7,7 +7,7 @@
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo" :serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"
:topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg" :topLeftBg="topLeftBg" :topLeftColor="topLeftColor" :iconObj="iconObj" :haveIconObj="haveIconObj" :detailBoxBg="detailBoxBg"
:haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/> :haveFun="haveFun" :serviceTypeObj="serviceTypeObj" :serviceInfoObj="serviceInfoObj" :pageType="pageType"/>
<SliderPage :index="3"/>
<div class="charts"> <div class="charts">
<div class="chartsItem"> <div class="chartsItem">
<p class="title">营收分析<span class="dateText">{{lastDay}}</span></p> <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===1" style="margin-top: 12px">单位: </text>
<text v-if="selectTab===2" style="margin-top: 12px">单位: </text> <text v-if="selectTab===2" style="margin-top: 12px">单位: </text>
</div> </div>
<div v-if="moneyCompareList.series.length>0"> <div v-if="moneyCompareList.series && moneyCompareList.series.length>0">
<money-compare :data="moneyCompareList"/> <money-compare :data="moneyCompareList"/>
</div> </div>
<no-data v-else/> <no-data v-else/>
@ -151,7 +151,7 @@
<p class="title" style="margin-top: 20px">营收同比分析</p> <p class="title" style="margin-top: 20px">营收同比分析</p>
<text style="margin-top: 12px">单位: 万元</text> <text style="margin-top: 12px">单位: 万元</text>
</div> </div>
<div v-if="trendsList.series.length>0"> <div v-if="trendsList.series && trendsList.series.length>0">
<revenue-trends :data="trendsList"/> <revenue-trends :data="trendsList"/>
</div> </div>
<no-data v-else/> <no-data v-else/>
@ -198,10 +198,13 @@ import request from '@/util/index.js'
import NoData from "./components/noData.vue"; import NoData from "./components/noData.vue";
import commercialType from "./commercialType.vue"; import commercialType from "./commercialType.vue";
import {getFieldEnum} from "../../util/dateTime"; import {getFieldEnum} from "../../util/dateTime";
import SliderPage from "./components/sliderPage.vue";
export default { export default {
name: "businessPortrait", name: "businessPortrait",
components: {NoData, RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop,analyse,commercialType}, components: {
SliderPage,
NoData, RevenueTrends, MoneyCompare, ContractGuarantee, RevenueAnalysis, headerTop,analyse,commercialType},
data() { data() {
return { return {
topBg:'linear-gradient(180deg, #D9CCEF 0%, #DED3F2 100%);', topBg:'linear-gradient(180deg, #D9CCEF 0%, #DED3F2 100%);',
@ -415,7 +418,9 @@ export default {
PageSize:10 PageSize:10
} }
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req) 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 PageSize:10
} }
const totalData = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',reqYear) 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(){ async nearestService(){
let seat = uni.getStorageSync('seatInfo'); let seat = uni.getStorageSync('seatInfo');
@ -469,7 +476,7 @@ export default {
this.showNoticeYear = false this.showNoticeYear = false
}, },
async getSummaryMonth(){ async getSummaryMonth(){
let currentService = uni.getStorageSync('currentService') // let currentService = uni.getStorageSync('currentService')
console.log('this.time',this.time) console.log('this.time',this.time)
const date = new Date(this.time) const date = new Date(this.time)
let y = date.getFullYear() let y = date.getFullYear()
@ -485,7 +492,7 @@ export default {
pushProvinceCode:'340000', pushProvinceCode:'340000',
Statistics_StartDate:`${y}-${m}-01`, Statistics_StartDate:`${y}-${m}-01`,
Statistics_Date:`${y}-${m}-${d}`, 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) const data = await request.$webGet('CommercialApi/Revenue/GetSummaryRevenue',req)
console.log('data22222',data) console.log('data22222',data)
@ -542,10 +549,18 @@ export default {
this.moneyCompareList = this.revenue.list this.moneyCompareList = this.revenue.list
}, },
async getMoneyCompareList(){ async getMoneyCompareList(){
let req = { let req
StatisticsDate:this.time, if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
ServerpartId:this.serviceInfo.Serverpart_ID || '' req = {
StatisticsDate:this.time,
} }
}else{
req = {
StatisticsDate:this.time,
ServerpartId:this.serviceInfo.Serverpart_ID ||''
}
}
const data = await request.$webGet('CommercialApi/Revenue/GetRevenueCompare',req) const data = await request.$webGet('CommercialApi/Revenue/GetRevenueCompare',req)
let RevenueAmount = [] // 10000 let RevenueAmount = [] // 10000
let normalAmount = [] //10000 let normalAmount = [] //10000
@ -555,48 +570,54 @@ export default {
let TicketMax = 0 let TicketMax = 0
let AvgTicketAmountList = [] // let AvgTicketAmountList = [] //
let AvgTicketMax = 0 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 list = []
let listNormal = [] let listNormal = []
let qoqAddList = [] // let qoqAddList = [] //
item.data.forEach(subItem=>{ item.data.forEach(subItem=>{
let number = (subItem[1] / 10000 ).toFixed(2) let number = (subItem[1] / 10000 ).toFixed(2)
if (number>RevenueMax){ if (number>RevenueMax){
RevenueMax = number RevenueMax = number
} }
list.push(number) list.push(number)
qoqAddList.push(subItem[2]) qoqAddList.push(subItem[2])
listNormal.push(subItem[1]) listNormal.push(subItem[1])
}) })
normalAmount.push({name:item.name,data:listNormal}) normalAmount.push({name:item.name,data:listNormal})
RevenueAmount.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value}) 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 list = []
let qoqAddList = [] // let qoqAddList = [] //
item.data.forEach(subItem=>{ item.data.forEach(subItem=>{
let number = (subItem[1]).toFixed(0) let number = (subItem[1]).toFixed(0)
if (number > TicketMax){ if (number > TicketMax){
TicketMax = Number(number) TicketMax = Number(number)
} }
qoqAddList.push(subItem[2]) qoqAddList.push(subItem[2])
list.push(number) list.push(number)
}) })
TicketCountList.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value}) 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 list = []
let qoqAddList = [] // let qoqAddList = [] //
item.data.forEach(subItem=>{ item.data.forEach(subItem=>{
let number = (subItem[1]).toFixed(2) let number = (subItem[1]).toFixed(2)
if (number>AvgTicketMax){ if (number>AvgTicketMax){
AvgTicketMax = number AvgTicketMax = number
} }
list.push(number) list.push(number)
qoqAddList.push(subItem[2]) qoqAddList.push(subItem[2])
}) })
AvgTicketAmountList.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value}) AvgTicketAmountList.push({name:item.name,data:list,qoqAdd:qoqAddList,holiday: item.value})
}) })
}
// //
this.revenueAll = [ this.revenueAll = [
{ {
@ -655,18 +676,37 @@ export default {
let date = new Date(this.time) let date = new Date(this.time)
let y = date.getFullYear() let y = date.getFullYear()
// //
let req = { let req
let yesReq
if (this.serviceInfo.SERVERPART_NAME==='安徽驿达'){
req={
ProvinceCode:'340000', ProvinceCode:'340000',
StatisticsDate:y, StatisticsDate:y,
StatisticsType:1, StatisticsType:1,
ServerpartId:this.serviceInfo.Serverpart_ID || '' }
} }else{
let yesReq = { req ={
ProvinceCode:'340000', ProvinceCode:'340000',
StatisticsDate:y - 1, StatisticsDate:y,
StatisticsType:1, 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 data = await request.$webGet('CommercialApi/Revenue/GetRevenueTrend',req)
const yesData = await request.$webGet('CommercialApi/Revenue/GetRevenueTrend',yesReq) const yesData = await request.$webGet('CommercialApi/Revenue/GetRevenueTrend',yesReq)
let list = [] let list = []
@ -714,34 +754,43 @@ export default {
pushProvinceCode:'340000', pushProvinceCode:'340000',
Statistics_StartDate:`${y}-${m}-01`, Statistics_StartDate:`${y}-${m}-01`,
Statistics_Date:this.time, 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) const data = await request.$webGet('CommercialApi/Revenue/GetSummaryRevenue',req)
let all = 0 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) 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) item.rate = ((Number(item.value) / all)*100).toFixed(2)
}) })
let res={ let res={
own:data.Result_Data.BusinessTypeList[1].rate, own:data.Result_Data.BusinessTypeList[1].rate,
ectocyst:data.Result_Data.BusinessTypeList[0].rate ectocyst:data.Result_Data.BusinessTypeList[0].rate
}
this.revenueType = res
}else{
this.revenueType = null
} }
this.revenueType = res
}, },
monthYearPlan(){ monthYearPlan(){
const monthDate= { const monthDate= {
Province_Code:'340000', Province_Code:'340000',
Serverpart_ID:this.serviceInfo.Serverpart_ID || '', Serverpart_ID:this.serviceInfo.SERVERPART_NAME==='安徽驿达'?null:this.serviceInfo.Serverpart_ID,
Statistics_Date:this.time Statistics_Date:this.time
} }
request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{ request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{
// data // data
this.plan = res.Result_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.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 date = new Date(this.time)
// let nowDay = date.getDate() // let nowDay = date.getDate()
// let day = this.$util.getThisMonthDay(this.time) // let day = this.$util.getThisMonthDay(this.time)
@ -749,7 +798,7 @@ export default {
// let oneDay = 100/day // let oneDay = 100/day
// // // //
// let thisDayShould= oneDay*nowDay // let thisDayShould= oneDay*nowDay
// //
this.monthAdd = Math.abs(this.plan.MonthGrowth_Rate) this.monthAdd = Math.abs(this.plan.MonthGrowth_Rate)
this.yearAdd = Math.abs(this.plan.YearGrowth_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.BudgetMonth_Amount = this.$util.fmoney(res.Result_Data.BudgetMonth_Amount)
this.plan.RevenueYear_Amount = this.$util.fmoney(res.Result_Data.RevenueYear_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) 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 class="swiperBox" :current="currentSwiper" @change="changeSwiper">
<swiper-item class="swiperItem" v-for="(item,index) in carSwiperList" :key="index"> <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 v-if="item!=='previous' && item!=='next'" class="header" :style="{background:`url(${item})`}">
<view class="sliderBox">
<SliderPage :index="type===1?1:0"/>
</view>
</view> </view>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -37,7 +39,7 @@
</view> </view>
<view class="content"> <view class="content">
<view v-if="type===1" class="serviceList" style="height:calc(100vh - 260px);"> <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="serviceItem" v-for="(item,index) in serviceList" :key="index" >
<view class="itemTitle"> <view class="itemTitle">
<span class="title">{{item.SERVERPART_NAME}}</span> <span class="title">{{item.SERVERPART_NAME}}</span>
@ -78,7 +80,7 @@
</view> </view>
</view> </view>
<view v-if="type===2" class="serviceList" style="height:calc(100vh - 300px);"> <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="dailyInspection" v-for="(item,index) in inspectionList" :key="index">
<view class="itemTitle"> <view class="itemTitle">
<span class="title">{{item.SERVERPART_NAME}}</span> <span class="title">{{item.SERVERPART_NAME}}</span>
@ -219,8 +221,10 @@
import request from '@/util/index.js' import request from '@/util/index.js'
import uniPopup from '@/components/uni-popup' import uniPopup from '@/components/uni-popup'
import CommercialType from "./commercialType.vue"; import CommercialType from "./commercialType.vue";
import SliderPage from "./sliderPage.vue";
export default { export default {
components:{ components:{
SliderPage,
CommercialType, CommercialType,
uniPopup uniPopup
}, },
@ -342,10 +346,18 @@ export default {
if (d<10){ if (d<10){
d = '0'+d d = '0'+d
} }
const req = { let req
SearchStartDate:`${y}-${m}-01`, if (this.currentService.SERVERPART_NAME==='安徽驿达'){
SearchEndDate:`${y}-${m}-${d}`, req = {
Serverpart_ID:this.currentService.Serverpart_ID 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) const total = await request.$webGet(`CommercialApi/Examine/WeChat_GetExamineList`,req)
this.serviceList = total.Result_Data this.serviceList = total.Result_Data
@ -426,29 +438,41 @@ export default {
if (d<10){ if (d<10){
d = '0'+d d = '0'+d
} }
const res = await request.$webGet(`CommercialApi/Examine/WeChat_GetPatrolList`,{ let req
SearchStartDate:`${y}-${m}-01`,// if (this.currentService.SERVERPART_NAME==='安徽驿达'){
SearchEndDate:`${y}-${m}-${d}`,// req = {
SPRegionType_ID:'',// "," SearchStartDate:`${y}-${m}-01`,//
Serverpart_ID:this.currentService.Serverpart_ID,// "," SearchEndDate:`${y}-${m}-${d}`,//
}) SPRegionType_ID:'',// ","
this.inspectionList = res.Result_Data }
}else{
req = {
SearchStartDate:`${y}-${m}-01`,//
SearchEndDate:`${y}-${m}-${d}`,//
SPRegionType_ID:'',// ","
Serverpart_ID:this.currentService.Serverpart_ID,// ","
}
}
this.inspectionList.forEach(item=>{ const res = await request.$webGet(`CommercialApi/Examine/WeChat_GetPatrolList`,req)
item.list.forEach(subItem=>{ this.inspectionList = res.Result_Data
let i = 0 if (this.inspectionList && this.inspectionList.length>0){
subItem.SERVERPARTList.forEach(thirdItem=>{ this.inspectionList.forEach(item=>{
if (thirdItem.COMPLETE_STATE===0){ item.list.forEach(subItem=>{
i++ 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) console.log('inspectionList',this.inspectionList)
uni.hideLoading() uni.hideLoading()
}, },
@ -536,7 +560,11 @@ export default {
position: absolute; position: absolute;
top: 0;left: 0; top: 0;left: 0;
z-index:1; 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']), ...mapActions(['memberLogin','getLoginCode']),
// //
handleGoServiceMessage(){ 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`) this.$util.toNextRoute('navigateTo', `/pages/map/detail?isPicker=${true}&come=index`)
// let _this = this // let _this = this
@ -1469,6 +1478,15 @@ export default {
} }
}, },
handleGoTab(item){ 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){ if (!this.isReturn){
this.$util.toNextRoute('navigateTo', `${item.path}?time=${this.lastDay}&serviceInfo=${JSON.stringify(this.nearServiceInfo)}`) this.$util.toNextRoute('navigateTo', `${item.path}?time=${this.lastDay}&serviceInfo=${JSON.stringify(this.nearServiceInfo)}`)
} else{ } else{

View File

View File

@ -34,6 +34,9 @@
<swiper v-if="topBg && topBg.length>0" :current="currentImg" class="carousel" @change="changeSwiper"> <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})`}"> <swiper-item class="imgIndex" v-for="(item,index) in topBg" :key="index" :style="{backgroundImage:`url(${item})`}">
<!-- <image class="img" :src="item"></image>--> <!-- <image class="img" :src="item"></image>-->
<view class="sliderPage" v-if="item.key!=='previous' && item.key!=='next'">
<SliderPage :index="0"/>
</view>
</swiper-item> </swiper-item>
</swiper> </swiper>
<div v-if="topBg && topBg.length>0" class="picNumber" @click="handlePreview"> <div v-if="topBg && topBg.length>0" class="picNumber" @click="handlePreview">
@ -179,9 +182,10 @@
<script> <script>
import request from '@/util/index.js' import request from '@/util/index.js'
import commercialType from "./commercialType.vue"; import commercialType from "./commercialType.vue";
import SliderPage from "./sliderPage.vue";
export default { export default {
name: "detail", name: "detail",
components: {commercialType}, components: {SliderPage, commercialType},
data(){ data(){
return { return {
info:{}, info:{},
@ -466,6 +470,22 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-size: 100% 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{ //.img{
// width: 100%; // width: 100%;
// height: 324px; // height: 324px;

View File

@ -3,7 +3,12 @@
<div class="leftArrow" :style="{top:(menu.top + ((menu.height - 24)/2) )+ 'px'}" @click="handleBack"> <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> <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg"></image>
</div> </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> <view v-else class="map"></view>
<div class="list" :style="{transform:isMoveUp?`translateY(calc(-40vh + ${menu.bottom + 5}px))`:''}"> <div class="list" :style="{transform:isMoveUp?`translateY(calc(-40vh + ${menu.bottom + 5}px))`:''}">
<div class="top"> <div class="top">
@ -170,6 +175,21 @@ export default {
} }
}, },
methods:{ 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 // SERVERPART_TYPE
async handleServiceType(){ async handleServiceType(){
const data = await getFieldEnum({ FieldExplainField: 'SERVERPART_TYPE' }); const data = await getFieldEnum({ FieldExplainField: 'SERVERPART_TYPE' });
@ -351,8 +371,10 @@ export default {
this.serviceList = data.Result_Data.List this.serviceList = data.Result_Data.List
console.log(' this.serviceList', this.serviceList) console.log(' this.serviceList', this.serviceList)
if (this.serviceMessage && this.serviceMessage.SERVERPART_NAME){ if (this.serviceMessage && this.serviceMessage.SERVERPART_NAME){
this.longitude = this.serviceList[0].SERVERPART_X if (this.serviceList && this.serviceList.length>0){
this.latitude = this.serviceList[0].SERVERPART_Y this.longitude = this.serviceList[0].SERVERPART_X
this.latitude = this.serviceList[0].SERVERPART_Y
}
} }
}, },
// //
@ -412,9 +434,32 @@ export default {
height: 100%; height: 100%;
} }
} }
.map{ .mapBox{
position: absolute;
top: 0;
left: 0;
width: 100%; width: 100%;
height: 40vh; 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{ .list{
width: 100%; width: 100%;
@ -422,6 +467,8 @@ export default {
box-sizing: border-box; box-sizing: border-box;
transform: translateY(-20px); transform: translateY(-20px);
background: #F2F4F5; background: #F2F4F5;
position: absolute;
top: 40vh;
.top{ .top{
width: 100%; width: 100%;
height: 74px; 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>