This commit is contained in:
cclu 2023-04-07 19:07:56 +08:00
parent 5137dcd55f
commit 6584176b3a
32 changed files with 1369 additions and 624 deletions

View File

@ -67,9 +67,9 @@
"postcss" : true
},
"plugins": {
"chooseLocation": {
"version": "1.0.10",
"provider": "wx76a9a06e5b4e693e"
"routePlan": {
"version": "1.0.18",
"provider": "wx50b5593e81dd937a"
}
},
"usingComponents" : true,

View File

@ -124,6 +124,12 @@
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "planDetail",
"style": {
"navigationBarTitleText": ""
}
}
]
},

View File

@ -3,13 +3,13 @@
<div>
<div v-if="isShow">
<div class='pt20 pb20'>
<view class="main-card boxshow">
<view class="card-title ">
{{ baseData.LEAVE_PERSON+"【"+baseData.DEPARTMENT_NAME+"】" }}
</view>
<view class="line-block between-circle"></view>
<image src="../../static/images/leave/spwq.png" mode="aspectFit" class="spwc-ico" v-if="baseData.FINANCEPROINST_NEXTID==9000"></image>
<image src="https://eshangtech.com/ShopICO/ahyd-BID/leave/spwq.png" mode="aspectFit" class="spwc-ico" v-if="baseData.FINANCEPROINST_NEXTID==9000"></image>
<div class="base-body card-content ">
<view style="text-align: center; padding-bottom: 12upx;">
<view class="leave-day">{{baseData.DURATION_DAYS}}<text style="font-size: 22upx;"></text></view>
@ -32,20 +32,20 @@
<div class="card-bottom ">
{{baseData.LEAVE_REASON}}
</div>
</view>
<!-- v-if="isResolve" -->
<view class="button-box" v-if="baseData.NOWSTAFF_ID==users.UserId" >
<span @tap="showPop(2000)"><image src="../../static/images/sh-btn.png" mode="aspectFit"></image> 审核 </span>
<span @tap="showPop(3000)" v-if="baseData.CAN_REJECT===1"><image src="../../static/images/bh-btn.png" mode="aspectFit"></image> 驳回</span>
</view>
</div>
<view class="base-info" v-if="baseData.RejectList.length>0">
<div class="uni-list-cell uni-collapse">
<div class="cat-box uni-list-cell-navigate">
@ -70,7 +70,7 @@
<block v-else>
<noFound v-if="loadingType === 2" :foundType="foundType" />
</block>
</div>
</template>
@ -79,21 +79,21 @@
import processUnit from '@/components/auditingProcess/item.vue'
import filesUnit from '@/components/filesComponent/fileUnit.vue'
export default {
data() {
data() {
return {
baseData: {
},
isShow: false,
loadingType: 1,
foundType:0,
cardShow:true,
isSign: false,
isResolve: false,
signInfo: {
}
}
},
@ -103,7 +103,7 @@
},
computed: {
...mapGetters({'users':'getUser'}),
},
methods: {
getDays (value) {
@ -117,29 +117,29 @@
_this.$request.$get('GetStaffLeaveDetail',{
FinanceProinstId: id
}).then(rs => {
if(!rs.ResultCode ||rs.ResultCode!='100') {
_this.isShow = false
}else{
_this.isShow = true
}
uni.hideLoading()
_this.baseData = rs.Data
if(_this.baseData.NOWSTAFF_ID==_this.users.UserId) { //
_this.isResolve= true
}
_this.$forceUpdate()
})
},
showPop(type) {
let _this = this
let url = ''
switch (type) {
case 4000:
case 4000:
url = '/pages/auditingPop/transfer?businessType=7000&PROINST_ID='+_this.baseData.FINANCEPROINST_ID+'&NOWACTINST_ID='+_this.baseData.NOWACTDEF_IDS
break;
case 2000:
@ -156,12 +156,12 @@
uni.showLoading({
title:'正在加载'
})
this.getDetail(option.id)
let _this = this
uni.$on('7000', function (data){
if(data) {
uni.showLoading({
title:'正在加载'
@ -171,15 +171,15 @@
});
},
onShow() {
},
onUnload() {
this.$util.addUserBehavior()
uni.$off('7000');
},
onHide() {
}
}
</script>
@ -243,7 +243,7 @@
right: -35upx;
z-index: 1;
top: -12upx;
}
.card-content {
justify-content: center;
@ -264,11 +264,11 @@
.leave-value {
font-size: 22upx;
background-color: #EDB86C;
height: 40upx;
color: #fff;
border-radius: 20upx;
padding: 0 16upx;
padding: 0 16upx;
justify-content: flex-start;
display: flex;
align-items: center;

View File

@ -1,6 +1,6 @@
<template>
<div class="main">
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :labelList="labelList" :topBg="topBg" :page="page"
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :analyseInfo="analyseInfo" :topBg="topBg" :page="page" :backType="backType"
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"/>
<div class="charts">
@ -15,7 +15,7 @@
<p class="title">消费时段分析</p>
<div v-if="timePeriodList.series.length>0">
<time-period-analysis :data="timePeriodList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1403,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
@ -23,7 +23,7 @@
<p class="title">消费水平<text class="unit">(Top 5)</text></p>
<div v-if="levelTopList.series.length>0">
<level-top :data="levelTopList"></level-top>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1404,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
@ -31,7 +31,7 @@
<p class="title">业态适配型</p>
<div v-if="businessTypeList.series[0].data.length>0">
<business-format :data="businessTypeList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1405,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
@ -39,14 +39,14 @@
<p class="title">消费转化对比图</p>
<div v-if="compareList.series[0].data.length>0">
<consumption-compare :data="compareList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1406,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">商超畅销品</p>
<bestseller-shop :data="bestsellerList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1407,analysisins_format: 2000}" />
</div>
</div>
</div>
@ -87,17 +87,30 @@ export default {
businessTypeList:[],//
compareList:[],//
bestsellerList:[],//
serviceInfo:{} //
serviceInfo:{} ,//
backType:'',//
analyseInfo:{
analysisins_type1: 1401,
analysisins_type2: 1402
},
}
},
onLoad(option) {
console.log('option',option)
let storeServiceInfo = uni.getStorageSync('currentService')
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = storeServiceInfo?storeServiceInfo:serviceInfo
this.backType = option.type
this.serviceInfo = serviceInfo
//
this.time = option.time
},
onShow(){
let storeTime = uni.getStorageSync('lastDay')
this.time = storeTime?storeTime:option.time
if (storeTime){
this.time = storeTime
}
let storeServiceInfo = uni.getStorageSync('currentService')
if (storeServiceInfo){
this.serviceInfo = storeServiceInfo
}
//
let systemInfo = uni.getSystemInfoSync()
//

View File

@ -4,7 +4,7 @@
<div class="header" :style="{backgroundImage: 'url('+ 'https://eshangtech.com/ShopICO/ahyd-BID/commercial/car.svg' +')'}">
<div class="analyse">
<text class="title">分析</text>
<text class="content">新桥服务区入区车辆主要来自杭州市, 入车车辆主要是普通车型(30-60)</text>
<text class="content">{{analyseText}}</text>
</div>
<div class="headerTop" :style="{height:(menu.bottom + 6) + 'px'}">
<div class="box" :style="{top:(menu.bottom - (menu.height / 2)) + 'px'}">
@ -32,7 +32,7 @@
<div class="other">
<div class="label">
<div v-for="(item,index) in labelList" :key="index" :class="index===0?'item0 item':index===1?'item1 item':index===2?'item2 item':index===3?'item3 item':index===4?'item4 item':'item'">
{{item.value}}
{{item}}
</div>
</div>
</div>
@ -88,7 +88,7 @@ export default {
serviceArray:["123465","123465","123465","123465","123465"], //
serviceIndex:0, //
area:'片区', //
labelList:[{value:'杭州'},{value:'小汽车'},{value:'一般消费'},{value:'温州'},{value:'30-60万'}], //
labelList:[], //
time:'',//
Serverpart_ID:'',//id
chartData:{},
@ -106,7 +106,9 @@ export default {
timeAnalysisData:[],//
percentEntryData:[],//
percentEntryDataAll:[],//
serviceInfo:{} //
serviceInfo:{}, //
backType:'',//
analyseText:'',//
}
},
components: {PercentEntry, CarTypeTime, HomePlace, EntryZone,timeAnalysis},
@ -117,39 +119,87 @@ export default {
},
onLoad(option){
console.log('option',option)
let storeServiceInfo = uni.getStorageSync('currentService')
this.backType = option.type
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = storeServiceInfo?storeServiceInfo:serviceInfo
this.serviceInfo = serviceInfo
console.log('this.serviceInfo',this.serviceInfo)
//
let storeTime = uni.getStorageSync('lastDay')
this.time = storeTime?storeTime:option.time
//
let systemInfo = uni.getSystemInfoSync()
//
uni.setStorageSync('phoneInfo',systemInfo)
this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect()
//
// prop
this.time = option.time
},
onShow(){
let storeTime = uni.getStorageSync('lastDay')
if (storeTime){
this.time = storeTime
}
let storeServiceInfo = uni.getStorageSync('currentService')
if (storeServiceInfo){
this.serviceInfo = storeServiceInfo
}
//
let systemInfo = uni.getSystemInfoSync()
//
uni.setStorageSync('phoneInfo',systemInfo)
this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect()
//
// prop
if (!storeServiceInfo){
this.nearestService()
}
//
this.getCarData()
//
this.getHomeData()
//
this.getCarTypeTime()
//
this.getTimeAnalysis('')
//
this.getPercentEntry()
//
this.getCarData()
//
this.getHomeData()
//
this.getCarTypeTime()
//
this.getTimeAnalysis('')
//
this.getPercentEntry()
//
this.getLabelDetail()
},
onReady(){
},
methods:{
//
async getLabelDetail(){
//
let req = {
SearchParameter:{
STATISTICS_DATE:this.time,
ANALYSISINS_TYPE:1101,
ANALYSISINS_FORMAT:1000,
ANALYSISINS_STATE:1,
SERVERPART_ID:this.serviceInfo.Serverpart_ID,
},
PageIndex:1,
PageSize:10
}
//
let reqText = {
SearchParameter:{
STATISTICS_DATE:this.time,
ANALYSISINS_TYPE:1101,
ANALYSISINS_FORMAT:2000,
ANALYSISINS_STATE:1,
SERVERPART_ID:this.serviceInfo.Serverpart_ID,
},
PageIndex:1,
PageSize:10
}
//
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req)
let list = []
data.Result_Data.List.forEach(item=>{
list.push(item.ANALYSIS_CONTENT)
})
this.labelList = list
//
const total = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',reqText)
this.analyseText = total.Result_Data.List[0].ANALYSIS_CONTENT
},
//
async nearestService(){
let seat = uni.getStorageSync('seatInfo');
@ -177,9 +227,15 @@ export default {
})
},
handleBack(){
uni.switchTab({
url: '/pages/index/index'
})
if (this.backType==='userCenter'){
uni.switchTab({
url: '/pages/userCenter/userCenter'
})
}else{
uni.switchTab({
url: '/pages/index/index'
})
}
},
//
//

View File

@ -1,17 +1,58 @@
<template>
<div class="main">
<p class="title">分析</p>
<div class="text">新桥服务区入区车辆主要来自杭州市, 入车车辆主要是普通车型(30-60)</div>
<div class="text">{{ analyseText }}</div>
</div>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "analyse",
data(){
return {
time:'',
serviceInfo:{},
analyseText:''
}
},
props:{
analyseInfo:{
type: Object,
default:()=>{}
}
},
watch:{
analyseInfo:{
handler(value){
console.log('analyseInfowatch',value)
this.getLabelDetail()
},
immediate:true,
deep:true
}
},
onLoad(){
this.time = uni.getStorageSync('lastDay')
},
methods:{
async getLabelDetail(){
this.time = uni.getStorageSync('lastDay')
let id = uni.getStorageSync('currentService')
let req = {
SearchParameter:{
ANALYSISINS_TYPE:this.analyseInfo.analysisins_type,
ANALYSISINS_FORMAT:this.analyseInfo.analysisins_format,
ANALYSISINS_STATE:1,
SERVERPART_ID:id.Serverpart_ID,
},
PageIndex:1,
PageSize:10
}
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req)
this.analyseText = data.Result_Data.List[0].ANALYSIS_CONTENT
console.log('getLabelDetail',data)
},
}
}
</script>
@ -53,4 +94,4 @@ export default {
-webkit-line-clamp: 2;
}
}
</style>
</style>

View File

@ -5,7 +5,7 @@
<canvas v-if="!carTypeTimePath" class="canvas" canvas-id="carTypeTime" id="carTypeTime"/>
<image v-if="carTypeTimePath" class="canvas" :src="carTypeTimePath"></image>
</div>
<analyse />
<analyse :analyseInfo="analyseInfo"/>
</div>
<no-data v-if="!isShowData"/>
</div>
@ -24,7 +24,11 @@ export default {
width:0,
isShowData:false,
info:{},
carTypeTimePath:''//
carTypeTimePath:'',//
analyseInfo:{
analysisins_type: 1104,
analysisins_format: 2000
},
}
},
props: {
@ -121,7 +125,7 @@ export default {
});
setTimeout( ()=>{
this.canvasToTempImage('carTypeTime')
},2000)
},1000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({

View File

@ -11,7 +11,7 @@
<image v-if="probabilityPath" class="carNum" :src="probabilityPath"></image>
</div>
</div>
<analyse />
<analyse :analyseInfo="analyseInfo" />
</div>
<no-data v-if="carData.length===0"/>
</div>
@ -35,6 +35,10 @@ export default {
carNumPath:'',//
probabilityPath:'',//
isShowData:false,
analyseInfo:{
analysisins_type: 1102,
analysisins_format: 2000
},
}
},
props:{
@ -166,7 +170,7 @@ export default {
setTimeout( ()=>{
this.canvasToTempImage1('carNum')
this.canvasToTempImage2('probability')
},2000)
},1000)
},
canvasToTempImage1(id){
uni.canvasToTempFilePath({

View File

@ -32,7 +32,7 @@
</div>
</div>
</div>
<analyse />
<analyse :analyseInfo="analyseInfo"/>
</div>
<no-data v-if="homeData.length===0"/>
</div>
@ -53,7 +53,11 @@ export default {
homeDataisTrue:false,
homeCityisTrue:false,
homePlacePath:'',//
progressList:[]//
progressList:[],//
analyseInfo:{
analysisins_type: 1103,
analysisins_format: 2000
},
}
},
props: {
@ -142,7 +146,7 @@ export default {
});
setTimeout(()=>{
this.canvasToTempImage('homePlace')
},2000)
},1000)
},
canvasToTempImage(id){
uni.canvasToTempFilePath({

View File

@ -22,6 +22,7 @@
</div>
</div>
</div>
<analyse :analyseInfo="analyseInfo"/>
</div>
<no-data v-if="data.length===0"/>
</div>
@ -29,10 +30,11 @@
<script>
import NoData from "../noData.vue";
import Analyse from "../analyse.vue";
export default {
name: "percentEntry",
components: {NoData},
components: {Analyse, NoData},
data() {
return {
dataList:[{title:'总车型入区率',value:''},{title:'小型车',value:''},{title:'中型车',value:''},{title:'大货车',value:''}],
@ -41,6 +43,10 @@ export default {
middle:0,//
big:0,//
isShowData:false,
analyseInfo:{
analysisins_type: 1106,
analysisins_format: 2000
},
}
},
props: {
@ -202,4 +208,4 @@ export default {
}
}
}
</style>
</style>

View File

@ -4,7 +4,7 @@
<div class="timeAnalysis" >
<canvas :style="{width:width+'px'}" class="timeAnalysis" canvas-id="timeAnalysis" id="timeAnalysis"/>
</div>
<analyse />
<analyse :analyseInfo="analyseInfo"/>
</div>
<no-data v-if="data.length===0"/>
</div>
@ -22,6 +22,10 @@ export default {
return {
width:0,
isShowData: false,
analyseInfo:{
analysisins_type: 1105,
analysisins_format: 2000
},
}
},
props: {

View File

@ -36,10 +36,13 @@ export default {
methods: {
//
handleCarData(value) {
let res = value
this.drawCharts('fillDegree', res)
let res = value.result
let config = {
Abundant:value.Abundant
}
this.drawCharts('fillDegree', res ,config)
},
drawCharts(id, data) {
drawCharts(id, data,config) {
const ctx = uni.createCanvasContext(id, this);
let _this = this
let phoneInfo = uni.getStorageSync('phoneInfo')
@ -59,7 +62,7 @@ export default {
dataLabel: true,
enableScroll: false,
title: {
name:'盈足',
name:config.Abundant?'盈足':'不盈足',
fontSize: 16,
color: "#341D00"
},

View File

@ -26,7 +26,8 @@ export default {
data: {
handler(value) {
this.handleCarData(value)
}
},
immediate: true
}
},
methods: {

View File

@ -33,13 +33,13 @@
</div>
<div class="analyse">
<text class="title">分析</text>
<text class="content">新桥服务区入区车辆主要来自杭州市, 入车车辆主要是普通车型(30-60)</text>
<text class="content">{{analyseText}}</text>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "headerTop",
props:{
@ -59,10 +59,6 @@ export default {
type:String,
default: ""
},
labelList:{
type:Array,
default:()=>[]
},
topBg:{
type:String,
default: ""
@ -82,25 +78,93 @@ export default {
serviceInfo:{
type:Object,
default:()=>{}
},
backType:{
type:String,
default:''
},
analyseInfo:{
type:Object,
default:()=>{}
}
},
data() {
return {
labelList:[],
analyseText:''
}
},
onLoad(){
watch:{
analyseInfo:{
handler(value){
console.log('headerTop',value)
//
this.getLabelDetail()
},
immediate:true,
deep:true
}
},
// onLoad(){
// this.getLabelDetail()
// },
methods:{
//
async getLabelDetail(){
let storeTime = uni.getStorageSync('lastDay')
let storeServiceInfo = uni.getStorageSync('currentService')
console.log('this.analyseInfo',this.analyseInfo)
//
let req = {
SearchParameter:{
STATISTICS_DATE:storeTime,
ANALYSISINS_TYPE:this.analyseInfo.analysisins_type1,
ANALYSISINS_FORMAT:1000,
ANALYSISINS_STATE:1,
SERVERPART_ID:storeServiceInfo.Serverpart_ID,
},
PageIndex:1,
PageSize:10
}
//
let reqText = {
SearchParameter:{
STATISTICS_DATE:storeTime,
ANALYSISINS_TYPE:this.analyseInfo.analysisins_type2,
ANALYSISINS_FORMAT:2000,
ANALYSISINS_STATE:1,
SERVERPART_ID:storeServiceInfo.Serverpart_ID,
},
PageIndex:1,
PageSize:10
}
//
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req)
let list = []
data.Result_Data.List.forEach(item=>{
list.push(item.ANALYSIS_CONTENT)
})
this.labelList = list
//
const total = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',reqText)
this.analyseText = total.Result_Data.List[0].ANALYSIS_CONTENT
},
bindPickerChange(){
},
//s
handleBack(){
uni.switchTab({
url: '/pages/index/index'
})
console.log('this.backType',this.backType)
if (this.backType==='userCenter'){
uni.switchTab({
url: '/pages/userCenter/userCenter'
})
}else{
uni.switchTab({
url: '/pages/index/index'
})
}
},
//
handleGoSelectService(){

View File

@ -1,14 +1,14 @@
<template>
<div class="main">
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :labelList="labelList" :topBg="topBg" :page="page"
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :analyseInfo="analyseInfo" :topBg="topBg" :page="page" :backType="backType"
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"/>
<div class="charts">
<div class="chartsItem">
<p class="title">业态充盈度</p>
<div v-if="fillDegreeList.series[0].data.length>0">
<filling-degree :data="fillDegreeList" />
<analyse />
<div v-if="fillDegreeList.result.series[0].data.length>0">
<filling-degree :data="fillDegreeList" />
<analyse :analyseInfo="{analysisins_type: 1502,analysisins_format: 2000}" />
</div>
<no-data v-else/>
</div>
@ -16,7 +16,7 @@
<p class="title">品牌消费水平<text class="unit">(Top 5)</text></p>
<div v-if="bandLevelList.length>0">
<band-level :data="bandLevelList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1503,analysisins_format: 2000}" />
</div>
<no-data v-else/>
</div>
@ -24,7 +24,7 @@
<p class="title">业态消费水平<text class="unit">(Top 5)</text></p>
<div v-if="consumLevelList.series.length>0">
<consumption-level :data="consumLevelList" />
<analyse />
<analyse :analyseInfo="{analysisins_type: 1504,analysisins_format: 2000}" />
</div>
<no-data v-else/>
</div>
@ -77,17 +77,30 @@ export default {
{name:'省内品牌',value:3},
{name:'地方特色',value:8}],//
brandInfoList:[],//
serviceInfo:{} //
serviceInfo:{}, //
backType:'',//
analyseInfo:{
analysisins_type1: 1501,
analysisins_type2: 1502
},
}
},
onLoad(option) {
console.log('option',option)
let storeServiceInfo = uni.getStorageSync('currentService')
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = storeServiceInfo?storeServiceInfo:serviceInfo
this.backType = option.type
this.serviceInfo = serviceInfo
//
this.time = option.time
},
onShow(){
let storeTime = uni.getStorageSync('lastDay')
this.time = storeTime?storeTime:option.time
if (storeTime){
this.time = storeTime
}
let storeServiceInfo = uni.getStorageSync('currentService')
if (storeServiceInfo){
this.serviceInfo = storeServiceInfo
}
//
let systemInfo = uni.getSystemInfoSync()
//
@ -132,7 +145,7 @@ export default {
StatisticsDate:this.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 all = 0
data.Result_Data.BusinessTradeRank.forEach((item,index)=>{
@ -151,6 +164,10 @@ export default {
}
]
};
let obj = {
result:result,
Abundant:data.Result_Data.Abundant//
}
// let res = {
// series: [
// {
@ -165,7 +182,7 @@ export default {
// }
// ]
// }
this.fillDegreeList = result
this.fillDegreeList = obj
},
async getBandLevelList(){

View File

@ -1,13 +1,13 @@
<template>
<div class="main">
<header-top :bgUrl="bgUrl" :menu="menu" :topBg="topBg" :bgColor="bgColor" :title="title" :labelList="labelList" :page="page"
<header-top :bgUrl="bgUrl" :menu="menu" :topBg="topBg" :bgColor="bgColor" :title="title" :page="page" :backType="backType" :analyseInfo="analyseInfo"
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"/>
<div class="charts">
<div class="chartsItem">
<p class="title">客群分析</p>
<div v-if="customer">
<customer-first :data="customer" />
<customer-first :analyseInfo="{analysisins_type: 1202,analysisins_format: 2000}" :data="customer" />
</div>
<no-data v-else />
</div>
@ -15,15 +15,15 @@
<p class="title">客群分析</p>
<div v-if="genderBubbleList.res.length!==0">
<customer-second :data="genderBubbleList" />
<analyse />
<analyse :analyseInfo="{analysisins_type: 1203,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">客群消费偏好</p>
<div v-if="consterPreferList.categories.length!==0">
<div v-if="consterPreferList.series.length>0">
<consum-prefer :data="consterPreferList" />
<analyse />
<analyse :analyseInfo="{analysisins_type: 1204,analysisins_format: 2000}" />
</div>
<no-data v-else/>
</div>
@ -31,7 +31,7 @@
<p class="title">客群消费水平</p>
<div v-if="consumptionLevelList.length>0">
<consumption-level :data="consumptionLevelList"/>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1205,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
@ -39,7 +39,7 @@
<p class="title">业态消费偏好</p>
<div v-if="businessTypeList.length>0">
<business-type :data="businessTypeList"></business-type>
<analyse />
<analyse :analyseInfo="{analysisins_type: 1206,analysisins_format: 2000}" />
</div>
<no-data v-else />
</div>
@ -75,17 +75,30 @@ export default {
consterPreferList:{},//
consumptionLevelList:[],//
businessTypeList:[],//
serviceInfo:{} //
serviceInfo:{}, //
backType:'',//
analyseInfo:{
analysisins_type1: 1201,
analysisins_type2: 1202
},
}
},
onLoad(option){
console.log('option',option)
let storeServiceInfo = uni.getStorageSync('currentService')
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = storeServiceInfo?storeServiceInfo:serviceInfo
this.backType = option.type
this.serviceInfo = serviceInfo
//
this.time = option.time
},
onShow(){
let storeTime = uni.getStorageSync('lastDay')
this.time = storeTime?storeTime:option.time
if (storeTime){
this.time = storeTime
}
let storeServiceInfo = uni.getStorageSync('currentService')
if (storeServiceInfo){
this.serviceInfo = storeServiceInfo
}
//
let systemInfo = uni.getSystemInfoSync()
//
@ -223,6 +236,7 @@ export default {
// {name: "", data: [190,210,105,35,27,102]}
// ]
// }
console.log('res',res)
this.consterPreferList = res
},
//

View File

@ -1,6 +1,6 @@
<template>
<div class="main">
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :labelList="labelList" :topBg="topBg" :page="page"
<header-top :bgUrl="bgUrl" :menu="menu" :bgColor="bgColor" :title="title" :analyseInfo="analyseInfo" :topBg="topBg" :page="page" :backType="backType"
:serverpartName="serviceInfo.SERVERPART_NAME" :spregionTypeName="serviceInfo.SPREGIONTYPE_NAME" :serviceInfo="serviceInfo"/>
<div class="charts">
@ -49,7 +49,7 @@
</div>
<no-data v-else/>
</div>
<analyse/>
<analyse :analyseInfo="{analysisins_type: selectTab===0?1305:selectTab===1?1306:selectTab===2?1307:'',analysisins_format: 2000}"/>
</div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">营收占比</p>
@ -57,10 +57,10 @@
<div class="top">
<div class="left">
<text class="title">自营</text>
<text class="value" style="margin-left: 4px">{{revenueType.own}}%</text>
<text class="value" style="margin-left: 4px">{{revenueType.own?revenueType.own:''}}%</text>
</div>
<div class="right">
<text class="value">{{revenueType.ectocyst}}%</text>
<text class="value">{{revenueType.ectocyst?revenueType.ectocyst:''}}%</text>
<text class="title" style="margin-left: 4px">外包</text>
</div>
</div>
@ -210,17 +210,30 @@ export default {
yearAdd:'', //
showNotice:false,
showNoticeYear:false,
serviceInfo:{} //
serviceInfo:{}, //
backType:'',//
analyseInfo:{
analysisins_type1: 1301,
analysisins_type2: 1302
},
}
},
onLoad(option) {
console.log('option',option)
let storeServiceInfo = uni.getStorageSync('currentService')
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = storeServiceInfo?storeServiceInfo:serviceInfo
this.backType = option.type
this.serviceInfo = serviceInfo
//
this.time = option.time
},
onShow(){
let storeTime = uni.getStorageSync('lastDay')
this.time = storeTime?storeTime:option.time
if (storeTime){
this.time = storeTime
}
let storeServiceInfo = uni.getStorageSync('currentService')
if (storeServiceInfo){
this.serviceInfo = storeServiceInfo
}
//
let systemInfo = uni.getSystemInfoSync()
//
@ -462,7 +475,8 @@ export default {
monthYearPlan(){
const monthDate= {
Province_Code:'340000',
Statistics_Date:this.time
Statistics_Date:this.time,
Serverpart_ID: this.serviceInfo.Serverpart_ID
}
request.$webGet('CommercialApi/Revenue/GetRevenueBudget',monthDate).then(res=>{
// data

View File

@ -0,0 +1,368 @@
<template>
<div class="main">
<div class="listBox" v-if="type==='year'">
<div class="list">
<div class="top">
<div class="left">
<p class="title"><text class="name">{{month}}</text></p>
<div class="value" >{{info.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(info.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{info.Growth_Rate ?info.Growth_Rate + '%':''}}</p>
</div>
</div>
</div>
<div class="progress">
<div class="have" :style="{width:info.Budget_Degree + '%'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>已完成:</p>
<text class="money">{{info.Revenue_Amount}}</text>
</div>
<div class="success">
<p>计划: </p>
<text class="money">{{info.Budget_Amount}}</text>
</div>
</div>
</div>
<div class="list" v-for="(item,index) in dataList" :key="index">
<div class="top">
<div class="left">
<p class="title" v-if="type==='year'"><text class="name">{{item.name}}</text>{{item.unit}}</p>
<div class="value" >{{item.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(item.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{item.Growth_Rate?item.Growth_Rate + '%':''}}</p>
</div>
</div>
</div>
<div class="progress">
<div class="have" :style="{width:item.Budget_Degree + '%'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>已完成:</p>
<text class="money">{{item.Revenue_Amount}}</text>
</div>
<div class="success">
<p>计划: </p>
<text class="money">{{item.Budget_Amount }}</text>
</div>
</div>
</div>
</div>
<div class="listBox" v-if="type==='month'">
<div class="list">
<div class="top">
<div class="left">
<p class="title"><text class="name">{{item.name}}</text>{{item.unit}}</p>
<div class="value" >{{info.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(info.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{info.Growth_Rate ?info.Growth_Rate + '%':''}}</p>
</div>
</div>
</div>
<div class="progress">
<div class="have" :style="{width:info.Budget_Degree + '%'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>已完成:</p>
<text class="money">{{info.Revenue_Amount}}</text>
</div>
<div class="success">
<p>计划: </p>
<text class="money">{{info.Budget_Amount}}</text>
</div>
</div>
</div>
<div class="list" v-for="(item,index) in dataList" :key="index">
<div class="top">
<div class="left">
<p class="title" ><text class="name">{{item.name}}</text>{{item.unit}}</p>
<div class="value" >{{item.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(item.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{item.Growth_Rate?item.Growth_Rate + '%':''}}</p>
</div>
</div>
</div>
<div class="progress">
<div class="have" :style="{width:item.Budget_Degree + '%'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>已完成:</p>
<text class="money">{{item.Revenue_Amount}}</text>
</div>
<div class="success">
<p>计划: </p>
<text class="money">{{item.Budget_Amount }}</text>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import request from '@/util/index.js'
export default {
name: "planDetail",
data(){
return{
date:'', //
type:'', //
dataList:[],
id:'',
info:{},
month:0,//
item:{}//
}
},
onLoad(option){
console.log('option',option)
this.type = option.type
if (option.id){
this.id =option.id
}
this.month = Number(option.month)
let date = new Date()
let y = date.getFullYear()
let m = date.getMonth() + 1
let d = date.getDate()
if (m<10){
m = '0'+m
}
if (d<10){
d = '0' + d
}
if (option.month){
if (m === Number(option.month)){
this.date = `${y}-${m}-${d}`
}else{
//
let mayDate = `${y}-${option.month}`
let addDay = this.$util.getThisMonthDay(mayDate)
this.date = `${y}-${option.month}-${addDay}`
}
}
if (option.item){
this.item = JSON.parse(option.item)
}
this.getDateList()
},
onShow(){
if (this.type==='year'){
//
uni.setNavigationBarTitle({
title: `${this.month}月自营计划`,
})
}else{
//
uni.setNavigationBarTitle({
title: `${this.item.Serverpart_Name}本月自营计划`,
})
}
},
methods:{
async getDateList(){
if (this.type==='year'){
let req = {
StatisticsDate:this.date,
ProvinceCode:'340000',
StatisticsType:1
}
const data = await request.$webGet('CommercialApi/Revenue/GetProvinceRevenueBudget',req)
data.Result_Data.RegionBudgetList.forEach(item=>{
let num = item.Serverpart_Name.indexOf('片区')
console.log(num)
if (num!==-1){
item.name = item.Serverpart_Name.slice(0,num)
item.unit = item.Serverpart_Name.slice(num,100)
}else{
item.name = item.Serverpart_Name
}
item.Revenue_Amount = this.$util.fmoney(item.Revenue_Amount)
item.Budget_Amount = this.$util.fmoney(item.Budget_Amount)
})
this.info = data.Result_Data
this.info.Budget_Amount = this.$util.fmoney(this.info.Budget_Amount)
this.info.Revenue_Amount = this.$util.fmoney(this.info.Revenue_Amount)
this.dataList = data.Result_Data.RegionBudgetList
console.log('data',data)
}else{
let time = uni.getStorageSync('lastDay')
let req = {
StatisticsDate:time,
ProvinceCode:'340000',
StatisticsType:4,
SPRegionTypeID:this.id
}
const data = await request.$webGet('CommercialApi/Revenue/GetProvinceRevenueBudget',req)
data.Result_Data.RegionBudgetList.forEach(item=>{
let num = item.Serverpart_Name.indexOf('服务区')
console.log(num)
if (num!==-1){
item.name = item.Serverpart_Name.slice(0,num)
item.unit = item.Serverpart_Name.slice(num,100)
}else{
item.name = item.Serverpart_Name
}
item.Revenue_Amount = this.$util.fmoney(item.Revenue_Amount)
item.Budget_Amount = this.$util.fmoney(item.Budget_Amount)
})
this.info = data.Result_Data
this.info.Budget_Amount = this.$util.fmoney(this.info.Budget_Amount)
this.info.Revenue_Amount = this.$util.fmoney(this.info.Revenue_Amount)
this.dataList = data.Result_Data.RegionBudgetList
console.log('data',data)
}
}
}
}
</script>
<style scoped lang="scss">
.main{
width: 100%;
min-height: 100vh;
box-sizing: border-box;
padding: 0 16px;
.listBox{
width: 100%;
box-sizing: border-box;
padding-bottom: calc(8px + env(safe-area-inset-bottom)) ;
.list{
width: 100%;
box-sizing: border-box;
padding: 12px;
background: #F5F5F5;
margin-bottom: 12px;
.top{
display: flex;
align-items: center;
justify-content: space-between;
.left{
display: flex;
align-items: center;
.icon{
width: 20px;
height: 20px;
margin-right: 8px;
}
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #150002;
line-height: 20px;
.name{
font-size: 18px;
}
}
.value{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #FF6D40;
line-height: 16px;
margin-left: 4px;
}
}
.right{
display: flex;
align-items: center;
.comparePlan{
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 36rpx;
white-space: nowrap;
}
.box2{
display: flex;
align-items: center;
.text{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
color: #150002;
font-weight: bold;
line-height: 40rpx;
}
.addIcon {
width: 16px;
height: 16px;
margin-right: 2px;
}
}
}
}
.progress{
width: 100%;
height: 8px;
background: #fff;
border-radius: 6px;
margin: 8px 0 16px;
position: relative;
overflow: hidden;
.have{
position: absolute;
height: 100%;
border-radius: 6px;
top: 0;left: 0;
background:#FF8E5B
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 16px;
.success {
width: calc(50% - 4px);
display: flex;
p{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 18px;
}
.money {
margin-left: 8px;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
}
}
}
}
}
</style>

View File

@ -93,32 +93,34 @@
</view>
</div>
<div class="list" v-for="(item,index) in dataList" :key="index">
<div class="top">
<div class="left">
<image class="icon" :src="type==='month'?'https://eshangtech.com/ShopICO/ahyd-BID/commercial/planMonth.svg':'https://eshangtech.com/ShopICO/ahyd-BID/commercial/planYear.svg'"></image>
<p class="title">{{type==='month'?item.Serverpart_Name:item.Statistics_Month + '月'}}</p>
<div class="value" :style="{color:type==='year'?'#4962FF':''}">{{item.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(item.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{item.Growth_Rate?item.Growth_Rate + '%':''}}</p>
<div class="listBox">
<div class="list" v-for="(item,index) in dataList" :key="index" @click="handleGoDetail(item)">
<div class="top">
<div class="left">
<p class="title" v-if="type==='month'"><text class="name">{{item.name}}</text>{{item.unit}}</p>
<p class="title" v-if="type==='year'"><text class="name">{{item.Statistics_Month}}</text></p>
<div class="value" :style="{color:type==='year'?'#4962FF':''}">{{item.Budget_Degree}}%</div>
</div>
<div class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="Number(item.Growth_Rate)>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{item.Growth_Rate?item.Growth_Rate + '%':''}}</p>
</div>
</div>
</div>
</div>
<div class="progress">
<div class="have" :style="{width:item.Budget_Degree + '%',background: type==='month'?'#FF8E5B':'#778CFD'}"></div>
</div>
<div class="bottom">
<div class="success">
<p>本月已完成<text>/</text></p>
<p class="money">{{item.Revenue_Amount}}</p>
<div class="progress">
<div class="have" :style="{width:item.Budget_Degree + '%',background: type==='month'?'#FF8E5B':'#778CFD'}"></div>
</div>
<div class="success">
<p>本月计划<text>/</text></p>
<p class="money">{{item.Budget_Amount }}</p>
<div class="bottom">
<div class="success">
<p>已完成:</p>
<text class="money">{{item.Revenue_Amount}}</text>
</div>
<div class="success">
<p>计划: </p>
<text class="money">{{item.Budget_Amount }}</text>
</div>
</div>
</div>
</div>
@ -147,6 +149,7 @@ export default {
}
}
},
onLoad(option){
this.lastDay = option.lastDay
this.type = option.type
@ -165,20 +168,47 @@ export default {
this.getPlanListData(option.type)
},
methods:{
async getPlanListData(type){
//
handleGoDetail(item){
console.log('item',item)
if (this.type==='year'){
uni.navigateTo({
url:`/pages/commercialBI/planDetail?type=${this.type}&month=${item.Statistics_Month}`
})
}else{
uni.navigateTo({
url:`/pages/commercialBI/planDetail?type=${this.type}&item=${JSON.stringify(item)}&id=${item.Serverpart_ID}`
})
}
},
async getPlanListData(type){
console.log('type',type)
let req = {
StatisticsDate:'2023-04-03',
ProvinceCode:'340000',
StatisticsType:type==='month'?1:type==='year'?2:''
}
const data = await request.$webGet('CommercialApi/Revenue/GetProvinceRevenueBudget',req)
console.log('data',data)
uni.hideLoading()
data.Result_Data.RegionBudgetList.forEach(item=>{
if (type==='month'){
let num = item.Serverpart_Name.indexOf('片区')
console.log(num)
if (num!==-1){
item.name = item.Serverpart_Name.slice(0,num)
item.unit = item.Serverpart_Name.slice(num,100)
}else{
item.name = item.Serverpart_Name
}
}
item.Revenue_Amount = this.$util.fmoney(item.Revenue_Amount)
item.Budget_Amount = this.$util.fmoney(item.Budget_Amount)
})
this.info = data.Result_Data
this.info.Budget_Amount = this.$util.fmoney(this.info.Budget_Amount)
this.info.Revenue_Amount = this.$util.fmoney(this.info.Revenue_Amount)
this.dataList = data.Result_Data.RegionBudgetList
console.log('data',data)
},
@ -409,117 +439,120 @@ export default {
}
}
}
.list{
.listBox{
width: 100%;
box-sizing: border-box;
padding: 12px;
background: #F5F5F5;
margin-bottom: 12px;
.top{
display: flex;
align-items: center;
justify-content: space-between;
.left{
padding-bottom: calc(8px + env(safe-area-inset-bottom)) ;
.list{
width: 100%;
box-sizing: border-box;
padding: 12px;
background: #F5F5F5;
margin-bottom: 12px;
.top{
display: flex;
align-items: center;
.icon{
width: 20px;
height: 20px;
margin-right: 8px;
}
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #150002;
line-height: 20px;
}
.value{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #FF6D40;
line-height: 16px;
margin-left: 4px;
}
}
.right{
display: flex;
align-items: center;
.comparePlan{
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 36rpx;
white-space: nowrap;
}
.box2{
justify-content: space-between;
.left{
display: flex;
align-items: center;
.text{
.icon{
width: 20px;
height: 20px;
margin-right: 8px;
}
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #150002;
line-height: 20px;
.name{
font-size: 18px;
}
}
.value{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
color: #150002;
font-weight: bold;
line-height: 40rpx;
}
.addIcon {
width: 16px;
height: 16px;
margin-right: 2px;
color: #FF6D40;
line-height: 16px;
margin-left: 4px;
}
}
}
}
.progress{
width: 100%;
height: 8px;
background: #fff;
border-radius: 6px;
margin: 8px 0 16px;
position: relative;
overflow: hidden;
.have{
position: absolute;
height: 100%;
border-radius: 6px;
top: 0;left: 0;
}
}
.bottom {
display: flex;
justify-content: flex-start;
margin-top: 16px;
.success {
width: 50%;
.text {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786b6c;
line-height: 40rpx;
margin-bottom: 2px;
.unit {
font-size: 28rpx;
.right{
display: flex;
align-items: center;
.comparePlan{
font-size: 24rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 40rpx;
margin-left: 2px;
line-height: 36rpx;
white-space: nowrap;
}
.box2{
display: flex;
align-items: center;
.text{
font-size: 14px;
font-family: DINAlternate-Bold, DINAlternate;
color: #150002;
font-weight: bold;
line-height: 40rpx;
}
.addIcon {
width: 16px;
height: 16px;
margin-right: 2px;
}
}
}
.money {
font-size: 28rpx;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: 600;
color: #160002;
line-height: 40rpx;
}
.progress{
width: 100%;
height: 8px;
background: #fff;
border-radius: 6px;
margin: 8px 0 16px;
position: relative;
overflow: hidden;
.have{
position: absolute;
height: 100%;
border-radius: 6px;
top: 0;left: 0;
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 16px;
.success {
width: calc(50% - 4px);
display: flex;
p{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #a69e9f;
line-height: 18px;
}
.money {
margin-left: 8px;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
}
}
}
}
}
</style>

View File

@ -497,7 +497,6 @@ export default {
}
uni.setStorageSync('seatInfo', seatInfo);
this.seat = seatInfo
this.nearestService()
}
})
}else{
@ -505,6 +504,8 @@ export default {
this.nearestService()
}
//
this.getLabelDetail()
//
let y = date.getFullYear()
let m = date.getMonth() + 1
@ -529,9 +530,25 @@ export default {
//
this.isShow = false
this.selectTab = 1
if (!this.seat){
this.nearestService()
}
},
methods:{
...mapActions(['memberLogin','getLoginCode']),
async getLabelDetail(){
let req = {
SearchParameter:{
STATISTICS_DATE:this.lastDay,
ANALYSISINS_TYPE:'',
ANALYSISINS_FORMAT:'1000'
},
PageIndex:1,
PageSize:10
}
const data = await request.$webPost('CommercialApi/Analysis/GetANALYSISINSList',req)
console.log('getLabelDetail',data)
},
async nearestService(){
let seat = uni.getStorageSync('seatInfo');
let req = {

View File

@ -2,11 +2,11 @@
<div class="main">
<div class="leftArrow" :style="{top:(menu.top + ((menu.height - 24)/2) )+ 'px'}" >
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/navigation-left.svg" @click="handleBack"></image>
<div class="pickers" v-if="isShowPicker">
<div class="pick" @click="handleChangeService" :value="selectIndex" :range="array" range-key="name">
<div class="pickers" v-if="isShowPicker" @click="handleChangeService">
<div class="pick" :value="selectIndex" :range="array" range-key="name">
<view class="picker">
<p class="pickTitle">{{info.SERVERPART_NAME}}</p>
{{array[selectIndex].name?array[selectIndex].name:''}}
<p class="pickTitle">{{info.SERVERPART_NAME?info.SERVERPART_NAME:''}}</p>
{{info.SPREGIONTYPE_NAME?info.SPREGIONTYPE_NAME:''}}
</view>
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</div>
@ -15,130 +15,135 @@
<div class="topImg">
<image class="topDefaultBg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/default.png"></image>
</div>
<div class="info">
<div class="menu">
<div class="top">
<div class="left">
<p class="title">{{info.SERVERPART_NAME}}</p>
<text class="status">营业中</text>
</div>
<div class="iconBox">
<div class="iconBox" @click="handleGoMap">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/map.svg"></image>
</div>
</div>
<p class="address">{{info.ServerpartInfo.EXPRESSWAY_NAME}}</p>
<div class="typeList">
<div class="typeItem" v-for="(item,index) in typeList" :key="index" v-if="item.isShow">
<image class="img" :src="item.url"></image>
<text class="text">{{item.name}}</text>
</div>
</div>
<div class="baseInfo">
<p class="title">基本信息</p>
<div class="word">
<p class="subTitle">取水方式</p>
<text class="value">{{info.ServerpartInfo.WATERINTAKE_TYPE===1?'自来水':info.ServerpartInfo.WATERINTAKE_TYPE===2?'井水':'' }}</text>
</div>
<div class="word">
<p class="subTitle">污水处理</p>
<text class="text">{{info.ServerpartInfo.SEWAGEDISPOSAL_TYPE===1?'市政':info.ServerpartInfo.SEWAGEDISPOSAL_TYPE===2?'污水处理设备':''}}</text>
</div>
<div class="word">
<p class="subTitle">市区县镇</p>
<text class="text">{{info.ServerpartInfo.SERVERPART_ADDRESS?info.ServerpartInfo.SERVERPART_ADDRESS:'' }}</text>
</div>
<div class="word">
<p class="subTitle">管理单位</p>
<text class="text">{{info.ServerpartInfo.MANAGERCOMPANY?info.ServerpartInfo.MANAGERCOMPANY:'' }}</text>
</div>
<div class="word">
<p class="subTitle">产权单位</p>
<text class="text">{{info.ServerpartInfo.OWNEDCOMPANY?info.ServerpartInfo.OWNEDCOMPANY:'' }}</text>
</div>
<div class="word">
<p class="subTitle">介绍说明</p>
<text class="text">{{info.ServerpartInfo.SERVERPART_INFO?info.ServerpartInfo.SERVERPART_INFO:'' }}</text>
</div>
</div>
<div class="areaInfo" style="margin-top: 16px">
<p class="title">面积信息</p>
<div class="word">
<p class="subTitleArea">占地面积</p>
<text class="value" v-if="info.ServerpartInfo.FLOORAREA">{{info.ServerpartInfo.FLOORAREA }}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
<div class="word">
<p class="subTitleArea">停车场面积</p>
<text class="value" v-if="info.ServerpartInfo.SHAREAREA">{{info.ServerpartInfo.SHAREAREA}}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
<div class="word">
<p class="subTitleArea">建筑面积</p>
<text class="value" v-if="info.ServerpartInfo.SERVERPART_AREA">{{info.ServerpartInfo.SERVERPART_AREA }}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
</div>
</div>
<div class="service">
<div class="serviceItem" v-for="(item,index) in info.RegionInfo" :key="index" :style="{marginTop:index!==0?'32px':''}">
<p class="title">{{item.SERVERPART_REGIONNAME}}</p>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceHotal.svg"></image>
<text class="textTitle">服务信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.HASPANTRY?'text':'unText'">{{item.HASPANTRY?'男厕(' + item.HASPANTRY+')':'男厕' }}</p>
<p :class="item.HASTHIRDTOILETS?'text':'unText'">第三卫生间</p>
<p :class="item.HASCHILD?'text':'unText'">车辆维修</p>
<p :class="item.HASWATERROOM?'text':'unText'">{{item.HASWATERROOM?'开水器(' + item.HASWATERROOM + ')':'开水器' }}</p>
<div class="scroll">
<div class="info">
<p class="address">{{info.ServerpartInfo.EXPRESSWAY_NAME}}</p>
<div class="typeList">
<div class="typeItem" v-for="(item,index) in typeList" :key="index" v-if="item.isShow">
<image class="img" :src="item.url"></image>
<text class="text">{{item.name}}</text>
</div>
<div class="item">
<p :class="item.HASWIFI?'text':'unText'">{{item.HASWIFI?'女厕(' + item.HASWIFI + ')':'女厕' }}</p>
<p :class="item.TOILETCOUNT?'text':'unText'">{{item.TOILETCOUNT?'潮汐厕位(' + item.TOILETCOUNT + ')':'潮汐厕位' }}</p>
<p :class="item.HASSHOWERROOM?'text':'unText'">车辆加水</p>
</div>
<div class="baseInfo">
<p class="title">基本信息</p>
<div class="word">
<p class="subTitle">取水方式</p>
<text class="value">{{info.ServerpartInfo.WATERINTAKE_TYPE===1?'自来水':info.ServerpartInfo.WATERINTAKE_TYPE===2?'井水':'' }}</text>
</div>
<div class="word">
<p class="subTitle">污水处理</p>
<text class="text">{{info.ServerpartInfo.SEWAGEDISPOSAL_TYPE===1?'市政':info.ServerpartInfo.SEWAGEDISPOSAL_TYPE===2?'污水处理设备':''}}</text>
</div>
<div class="word">
<p class="subTitle">市区县镇</p>
<text class="text">{{info.ServerpartInfo.SERVERPART_ADDRESS?info.ServerpartInfo.SERVERPART_ADDRESS:'' }}</text>
</div>
<div class="word">
<p class="subTitle">管理单位</p>
<text class="text">{{info.ServerpartInfo.MANAGERCOMPANY?info.ServerpartInfo.MANAGERCOMPANY:'' }}</text>
</div>
<div class="word">
<p class="subTitle">产权单位</p>
<text class="text">{{info.ServerpartInfo.OWNEDCOMPANY?info.ServerpartInfo.OWNEDCOMPANY:'' }}</text>
</div>
<div class="word">
<p class="subTitle">介绍说明</p>
<text class="text">{{info.ServerpartInfo.SERVERPART_INFO?info.ServerpartInfo.SERVERPART_INFO:'' }}</text>
</div>
</div>
<div class="areaInfo" style="margin-top: 16px">
<p class="title">面积信息</p>
<div class="word">
<p class="subTitleArea">占地面积</p>
<text class="value" v-if="info.ServerpartInfo.FLOORAREA">{{info.ServerpartInfo.FLOORAREA }}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
<div class="word">
<p class="subTitleArea">停车场面积</p>
<text class="value" v-if="info.ServerpartInfo.SHAREAREA">{{info.ServerpartInfo.SHAREAREA}}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
<div class="word">
<p class="subTitleArea">建筑面积</p>
<text class="value" v-if="info.ServerpartInfo.SERVERPART_AREA">{{info.ServerpartInfo.SERVERPART_AREA }}<text style="margin-left: 4px">m²</text></text>
<text class="value" v-else></text>
</div>
</div>
</div>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceCar.svg"> </image>
<text class="textTitle">车位信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.SMALLPARKING?'text':'unText'">{{item.SMALLPARKING?'轿车车位(' + item.SMALLPARKING + ')':'轿车车位' }}</p>
<p :class="item.TRUCKPACKING?'text':'unText'">{{item.TRUCKPACKING?'货车车位(' + item.TRUCKPACKING + ')':'货车车位' }}</p>
<div class="service">
<div class="serviceItem" v-for="(item,index) in info.RegionInfo" :key="index" :style="{marginTop:index!==0?'32px':''}">
<p class="title">{{item.SERVERPART_REGIONNAME}}</p>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceHotal.svg"></image>
<text class="textTitle">服务信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.HASPANTRY?'text':'unText'">{{item.HASPANTRY?'男厕(' + item.HASPANTRY+')':'男厕' }}</p>
<p :class="item.HASTHIRDTOILETS?'text':'unText'">第三卫生间</p>
<p :class="item.HASCHILD?'text':'unText'">车辆维修</p>
<p :class="item.HASWATERROOM?'text':'unText'">{{item.HASWATERROOM?'开水器(' + item.HASWATERROOM + ')':'开水器' }}</p>
</div>
<div class="item">
<p :class="item.HASWIFI?'text':'unText'">{{item.HASWIFI?'女厕(' + item.HASWIFI + ')':'女厕' }}</p>
<p :class="item.TOILETCOUNT?'text':'unText'">{{item.TOILETCOUNT?'潮汐厕位(' + item.TOILETCOUNT + ')':'潮汐厕位' }}</p>
<p :class="item.HASSHOWERROOM?'text':'unText'">车辆加水</p>
</div>
</div>
</div>
</div>
<div class="item">
<p :class="item.PACKING?'text':'unText'">{{item.PACKING?'客车车位(' + item.PACKING + ')':'客车车位' }}</p>
<p :class="item.DANPACKING?'text':'unText'">{{item.DANPACKING?'危化品车位(' + item.DANPACKING +')':'危化品车位' }}</p>
</div>
</div>
</div>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceCar.svg"> </image>
<text class="textTitle">车位信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.SMALLPARKING?'text':'unText'">{{item.SMALLPARKING?'轿车车位(' + item.SMALLPARKING + ')':'轿车车位' }}</p>
<p :class="item.TRUCKPACKING?'text':'unText'">{{item.TRUCKPACKING?'货车车位(' + item.TRUCKPACKING + ')':'货车车位' }}</p>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceFood.svg"></image>
<text class="textTitle">经营信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.DININGROOMCOUNT?'text':'unText'" class="text">餐饮</p>
<p :class="item.HASMESSAGESEARCH?'text':'unText'" class="text">住宿</p>
<p class="model">{{item.BUSINESSTYPE }}</p>
</div>
<div class="item">
<p :class="item.PACKING?'text':'unText'">{{item.PACKING?'客车车位(' + item.PACKING + ')':'客车车位' }}</p>
<p :class="item.DANPACKING?'text':'unText'">{{item.DANPACKING?'危化品车位(' + item.DANPACKING +')':'危化品车位' }}</p>
</div>
</div>
</div>
<div class="item">
<p :class="item.HASBACKGROUNDRADIO?'text':'unText'" >便利店</p>
<p :class="item.DININGBXCOUNT?'text':'unText'">{{item.DININGBXCOUNT?'商铺('+item.DININGBXCOUNT+')':'商铺' }}</p>
<div class="box">
<div class="left">
<image class="boxImg" src="https://eshangtech.com/ShopICO/ahyd-BID/service/serviceFood.svg"></image>
<text class="textTitle">经营信息</text>
</div>
<div class="right">
<div class="item">
<p :class="item.DININGROOMCOUNT?'text':'unText'" class="text">餐饮</p>
<p :class="item.HASMESSAGESEARCH?'text':'unText'" class="text">住宿</p>
<p class="model">{{item.BUSINESSTYPE }}</p>
</div>
<div class="item">
<p :class="item.HASBACKGROUNDRADIO?'text':'unText'" >便利店</p>
<p :class="item.DININGBXCOUNT?'text':'unText'">{{item.DININGBXCOUNT?'商铺('+item.DININGBXCOUNT+')':'商铺' }}</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</template>
@ -169,33 +174,25 @@ export default {
this.menu = uni.getMenuButtonBoundingClientRect()
if (option.isPicker==='false'){
this.isShowPicker = false
this.getServiceList()
this.getList(option)
}else if (option.isPicker==='true'){
this.isShowPicker = true
let seat = uni.getStorageSync('seatInfo')
this.handleSearch(seat.longitude,seat.latitude)
this.getServiceList()
}else{
this.getServiceList()
this.getList(option)
}
},
onShow(){
let seat = uni.getStorageSync('currentService')
this.handleSearch(seat)
let pageList = getCurrentPages()
console.log('pageList',pageList)
//
this.clearPage()
},
methods:{
async handleSearch(longitude,latitude){
let req = {
longitude:longitude,
Province_Code:'340000',
latitude:latitude,
}
console.log(req)
const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList',req)
let id =data.Result_Data.List[0].SERVERPART_ID
this.info = data.Result_Data.List[0]
async handleSearch(seat){
console.log('seat',seat)
let reqs = {
longitude:longitude,
ServerpartId:id,
latitude:latitude
longitude:seat.longitude,
ServerpartId:seat.Serverpart_ID,
latitude:seat.latitude
}
const totalData = await request.$webGet('CommercialApi/BaseInfo/GetServerpartInfo',reqs)
this.info = totalData.Result_Data
@ -210,20 +207,23 @@ export default {
}
this.typeList[1].isShow = this.info.STARTDATE
},
//
async getServiceList(){
let req = {
Province_Code:'340000'
}
const data = await request.$webGet('CommercialApi/BaseInfo/GetSPRegionList',req)
console.log('data22222',data)
this.array = data.Result_Data.List
},
//
handleChangeService(e){
uni.redirectTo({
url:'/pages/map/index'
})
handleChangeService(){
let currentService = uni.getStorageSync('currentService')
let lastDay = uni.getStorageSync('lastDay')
let pageList = getCurrentPages()
console.log('pageList',pageList)
if (pageList.length>2){
if (this.isShowPicker){
uni.navigateBack({
delta: 1
})
}
}else{
uni.navigateTo({
url:`/pages/map/index?time=${lastDay}&serviceInfo=${JSON.stringify(currentService)}`
})
}
},
async getList(option){
let req = {
@ -248,10 +248,38 @@ export default {
},
//
handleBack(){
uni.navigateBack({
delta: 1
uni.switchTab({
url: '/pages/userCenter/userCenter'
})
},
//
handleGoMap(){
let key='STWBZ-DKCR4-J6UUF-FRD5I-3EBN2-GDBOT'
let referer ='goMap'
//
let user = uni.getStorageSync('seatInfo')
let startPoint = {
name:'我的位置',
latitude:user.latitude,
longitude:user.longitude
}
//
let seat = uni.getStorageSync('currentService')
let endPoint = {
name:seat.SERVERPART_NAME,
latitude:seat.latitude,
longitude:seat.longitude
}
wx.navigateTo({
url: `plugin://routePlan/index?key=${key}&referer=${referer}&endPoint=${JSON.stringify(endPoint)}&startPoint=${JSON.stringify(startPoint)}`
});
},
//
clearPage(){
console.log(11111)
let pageList = getCurrentPages()
}
}
}
</script>
@ -260,6 +288,8 @@ export default {
.main{
width: 100%;
max-width: 100vw;
height: 100vh;
box-sizing: border-box;
position: relative;
.leftArrow{
width: 100%;
@ -320,221 +350,242 @@ export default {
height: 100%;
}
}
.info{
width: 100%;
box-sizing: border-box;
background: #FFFFFF;
border-radius: 16px 16px 1px 1px;
transform: translateY(-16px);
padding: 16px 16px 16px;
.top{
display: flex;
justify-content: space-between;
.left{
display: flex;
align-items: center;
.title{
font-size: 18px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 26px;
}
.status{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding: 0 6px;
background: #EAEAEA;
border-radius: 2px;
margin-left: 8px;
}
}
.iconBox{
width: 28px;
height: 28px;
border: 1px solid #F1F1F1;
border-radius: 50%;
.icon{
width: 100%;
height: 100%;
}
}
}
.address{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
margin-top: 4px;
}
.typeList{
width: 100%;
display: flex;
flex-flow: wrap;
margin-top: 16px;
.typeItem{
width: calc((100% - 24px)/3);
height: 66px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #F7F7F7;
border-radius: 4px;
margin-bottom: 8px;
margin-right: 8px;
.img{
width: 24px;
height: 24px;
}
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
}
.baseInfo,.areaInfo{
margin-top: 8px;
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
.word{
display: flex;
margin-top: 8px;
.subTitle{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
margin-right: 8px;
min-width: 60px;
}
.text{
flex: 1;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
display: inline-block;
}
.subTitleArea{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
display: inline-block;
margin-right: 8px;
min-width: 80px;
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
.value{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
}
}
.service{
background: #fff;
padding: 12px 16px calc(16px + env(safe-area-inset-bottom));
.serviceItem{
margin-top: 4px;
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
.box{
margin-top: 12px;
.menu{
width:100%;
height: calc(100vh - 196px);
position: relative;
border-radius: 16px 16px 1px 1px;
transform: translateY(-16px);
.top{
height: 40px;
width: calc(100% - 32px);
position: fixed;
top: 0;
box-sizing: border-box;
padding-top: 16px;
left: 16px;
background: #fff;
display: flex;
justify-content: space-between;
.left{
display: flex;
.left{
align-items: center;
.title{
font-size: 18px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 26px;
}
.status{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding: 0 6px;
background: #EAEAEA;
border-radius: 2px;
margin-left: 8px;
}
}
.iconBox{
width: 28px;
height: 28px;
border: 1px solid #F1F1F1;
border-radius: 50%;
.icon{
width: 100%;
height: 100%;
}
}
}
.scroll{
width:100%;
height: calc(100%);
overflow-y: scroll;
border-radius: 16px 16px 1px 1px;
.info{
width: 100%;
box-sizing: border-box;
background: #FFFFFF;
padding: 16px 16px 16px;
z-index:100;
.address{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
margin-top: 4px;
}
.typeList{
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
width: 60px;
margin-right: 36px;
.boxImg{
width: 25px;
height: 25px;
}
.textTitle{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 16px;
flex-flow: wrap;
margin-top: 16px;
.typeItem{
width: calc((100% - 24px)/3);
height: 66px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #F7F7F7;
border-radius: 4px;
margin-bottom: 8px;
margin-right: 8px;
.img{
width: 24px;
height: 24px;
}
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
}
.right{
flex: 1;
display: flex;
.item{
width: 50%;
.baseInfo,.areaInfo{
margin-top: 8px;
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
.word{
display: flex;
margin-top: 8px;
.subTitle{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
margin-right: 8px;
min-width: 60px;
}
.text{
font-size: 12px;
flex: 1;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
margin-bottom:4px;
}
.unText{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #A69E9F;
line-height: 18px;
text-decoration: line-through;
}
.unit{
font-size: 12px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 18px;
}
.model{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding:0 6px;
background: #EAEAEA;
border-radius: 2px;
line-height: 20px;
display: inline-block;
}
.subTitleArea{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px;
display: inline-block;
margin-right: 8px;
min-width: 80px;
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
.value{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 20px;
}
}
}
}
.service{
background: #fff;
padding: 12px 16px calc(16px + env(safe-area-inset-bottom));
.serviceItem{
margin-top: 4px;
.title{
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 20px;
}
.box{
margin-top: 12px;
display: flex;
.left{
display: flex;
flex-direction: column;
align-items: center;
width: 60px;
margin-right: 36px;
.boxImg{
width: 25px;
height: 25px;
}
.textTitle{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 16px;
}
}
.right{
flex: 1;
display: flex;
.item{
width: 50%;
.text{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
margin-bottom:4px;
}
.unText{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #A69E9F;
line-height: 18px;
text-decoration: line-through;
}
.unit{
font-size: 12px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 18px;
}
.model{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #160002;
line-height: 18px;
padding:0 6px;
background: #EAEAEA;
border-radius: 2px;
display: inline-block;
}
}
}
}
}
}
}
}
}
</style>

View File

@ -84,26 +84,32 @@ export default {
markers:'',//
covers:'',//
isFirst:true,//
area:[],//
serviceInfo:{}
}
},
onLoad(option){
console.log('option',option)
let serviceInfo = JSON.parse(option.serviceInfo)
this.serviceInfo = JSON.parse(option.serviceInfo)
if (option.chartType){
this.chartType = true
}
this.page = option.page
},
onShow(){
let userSeat = uni.getStorageSync('seatInfo')
this.userLatitude = userSeat.latitude
this.userLongitude = userSeat.longitude
this.page = option.page
let seat = uni.getStorageSync('currentService')
if (seat){
console.log('seat',seat)
this.longitude = seat.longitude
this.latitude = seat.latitude
this.area = seat.SPREGIONTYPE_NAME
this.addMarkers(seat)
}else{
this.getServiceDetail(serviceInfo.Serverpart_ID)
this.getServiceDetail(this.serviceInfo.Serverpart_ID)
}
//
let systemInfo = uni.getSystemInfoSync()
@ -116,20 +122,29 @@ export default {
// this.getListData()
},
onHide(){
this.isShowMap = true
},
onUnload(){
this.isShowMap = false
},
methods:{
//
handleGomap(item){
let seat = uni.getStorageSync('currentService')
let key='STWBZ-DKCR4-J6UUF-FRD5I-3EBN2-GDBOT'
let referer ='goMap'
let startPoint = {
name:seat.SERVERPART_NAME,
latitude:seat.latitude,
longitude:seat.longitude
}
let endPoint={
'name': item.SERVERPART_NAME,
latitude: item.SERVERPART_Y,
longitude: item.SERVERPART_X
}
wx.navigateTo({
url: `plugin://chooseLocation/index?key=${key}&referer=${referer}&location=${JSON.stringify(endPoint)}`
url: `plugin://routePlan/index?key=${key}&referer=${referer}&endPoint=${JSON.stringify(endPoint)}&startPoint=${JSON.stringify(startPoint)}`
});
},
//
@ -157,6 +172,14 @@ export default {
}
const data = await request.$webGet('CommercialApi/BaseInfo/GetSPRegionList',req)
this.array = data.Result_Data.List
console.log('this.array',this.array)
if (this.area){
this.array.forEach((item,index)=>{
if (item.name === this.area){
this.selectIndex = index
}
})
}
await this.getLocation()
},
//
@ -179,23 +202,27 @@ export default {
//
handleGoDetail(id,item){
console.log('item',item)
let res = {
SERVERPART_NAME:item.SERVERPART_NAME,//
SPREGIONTYPE_NAME:item.SPREGIONTYPE_NAME,//
Serverpart_ID:item.SERVERPART_ID,
longitude:item.SERVERPART_X,
latitude:item.SERVERPART_Y,
}
uni.setStorageSync('currentService',res) //
let pageList = getCurrentPages()
if (this.chartType){
let res = {
SERVERPART_NAME:item.SERVERPART_NAME,//
SPREGIONTYPE_NAME:item.SPREGIONTYPE_NAME,//
Serverpart_ID:item.SERVERPART_ID,
longitude:item.SERVERPART_X,
latitude:item.SERVERPART_Y,
if (pageList.length>2){
uni.navigateBack({
delta: 1
})
}
uni.setStorageSync('currentService',res) //
let time = uni.getStorageSync('lastDay')
uni.redirectTo({
url:`${this.page}?serviceInfo=${JSON.stringify(res)}&chartType=${true}&time=${time}`
})
}else{
uni.navigateTo({
url:`/pages/map/detail?SERVERPART_ID=${id}&isPicker=${false}`
})
if (pageList.length>2){
uni.navigateBack({
delta: 1
})
}
}
},
async getListData(){
@ -254,11 +281,7 @@ export default {
id: value.Serverpart_ID,
latitude: value.latitude,
longitude: value.longitude,
height: 30,
width: 20,
callout: {
padding: '6',
borderRadius: '4',
display: 'ALWAYS'
}
})

View File

@ -77,8 +77,10 @@ export default {
console.log('item',item)
if (item.value!==3 && item.value!==4){
if (item.value===2){
this.$util.toNextRoute('navigateTo', `${item.homeUrl}?time=${this.lastDay}&Serverpart_ID=372`)
}else{
let currentService = uni.getStorageSync('currentService')
console.log('currentService',currentService)
this.$util.toNextRoute('navigateTo', `${item.homeUrl}?time=${this.lastDay}&serviceInfo=${JSON.stringify(currentService)}&type=userCenter`)
} else{
this.$util.toNextRoute('navigateTo', item.homeUrl)
}
}else if(item.value === 3 && item.isNotice || item.value ===4 && item.isNotice){

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB