first commit
This commit is contained in:
parent
41d431011b
commit
4d514a9008
@ -12,11 +12,11 @@
|
||||
<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 ? serviceInfo.SERVERPART_NAME :
|
||||
<view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
|
||||
'请选择服务区' }}
|
||||
</view>
|
||||
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
|
||||
</p>
|
||||
<!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
|
||||
</p> -->
|
||||
<image class="rightArrow"
|
||||
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
|
||||
</view>
|
||||
@ -262,14 +262,15 @@ export default {
|
||||
this.menu = uni.getMenuButtonBoundingClientRect()
|
||||
let currentService = uni.getStorageSync('currentService')
|
||||
this.serviceInfo = currentService
|
||||
this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID)
|
||||
this.handleGetData(currentService.SERVERPART_NAME)
|
||||
// this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID)
|
||||
this.handleGetData(currentService.SAName)
|
||||
},
|
||||
async onShow() {
|
||||
let currentService = uni.getStorageSync('currentService')
|
||||
if (currentService.Serverpart_ID !== this.serviceInfo.SERVERPART_ID && !this.isFirst) {
|
||||
this.handleGetServerpartDetail(currentService.Serverpart_ID)
|
||||
this.handleGetData(currentService.SERVERPART_NAME)
|
||||
if (currentService.SACode !== this.serviceInfo.SACode && !this.isFirst) {
|
||||
// this.handleGetServerpartDetail(currentService.Serverpart_ID)
|
||||
this.serviceInfo = currentService
|
||||
this.handleGetData(currentService.SAName)
|
||||
}
|
||||
this.isFirst = false
|
||||
},
|
||||
@ -283,7 +284,7 @@ export default {
|
||||
retryLoad() {
|
||||
if (this.retryCount < 3) {
|
||||
this.retryCount++
|
||||
this.handleGetData(this.serviceInfo.SERVERPART_NAME)
|
||||
this.handleGetData(this.serviceInfo.SAName)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '多次重试失败,请检查网络连接',
|
||||
@ -391,7 +392,7 @@ export default {
|
||||
onCalendarConfirm(e) {
|
||||
console.log('选择日期:', e)
|
||||
this.selectDate = e.fulldate
|
||||
this.handleGetData(this.serviceInfo.SERVERPART_NAME)
|
||||
this.handleGetData(this.serviceInfo.SAName)
|
||||
},
|
||||
|
||||
// 日历关闭
|
||||
@ -518,7 +519,7 @@ export default {
|
||||
|
||||
this.selectDate = `${y}-${m}-${d}`;
|
||||
this.retryCount = 0 // 重置重试次数
|
||||
await this.handleGetData(this.serviceInfo.SERVERPART_NAME)
|
||||
await this.handleGetData(this.serviceInfo.SAName)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
@ -339,7 +339,7 @@ export default {
|
||||
this.showList = []
|
||||
const req = {
|
||||
bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3",
|
||||
saName: this.serviceInfo.SERVERPART_NAME
|
||||
saName: this.serviceInfo.SAName
|
||||
}
|
||||
const data = await new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
@ -368,7 +368,7 @@ export default {
|
||||
this.showList = []
|
||||
const req = {
|
||||
bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55",
|
||||
saName: this.serviceInfo.SERVERPART_NAME
|
||||
saName: this.serviceInfo.SAName
|
||||
}
|
||||
const data = await new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
|
||||
@ -11,11 +11,11 @@
|
||||
<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 ? serviceInfo.SERVERPART_NAME :
|
||||
<view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
|
||||
'' }}
|
||||
</view>
|
||||
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
|
||||
</p>
|
||||
<!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }} -->
|
||||
<!-- </p> -->
|
||||
<image class="rightArrow"
|
||||
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
|
||||
</view>
|
||||
@ -28,14 +28,13 @@
|
||||
<!-- 服务区的信息 -->
|
||||
<view class="serviceDetail" style="margin-top: 16rpx;">
|
||||
<view class="detailTop">
|
||||
<view class="serviceImg" v-if="serviceInfo.ImageLits && serviceInfo.ImageLits.length > 0">
|
||||
<view class="serviceImg" v-if="serviceInfo.fileId && serviceInfo.fileId.length > 0">
|
||||
<swiper scroll-x="true" circular="true" class="banner" indicator-dots="true"
|
||||
indicator-active-color="#272625" autoplay interval="3000" :current="pageMsg.current"
|
||||
style="width: 100%; height: 100%">
|
||||
<swiper-item v-for="(img, i) in serviceInfo.ImageLits" :key="i"
|
||||
style="width: 100%; height: 100%">
|
||||
<swiper-item v-for="(img, i) in serviceInfo.fileId" :key="i" style="width: 100%; height: 100%">
|
||||
<image style="width: 100%; height: 100%" mode="aspectFill" lazy-load="true"
|
||||
:src="img || 'https://eshangtech.com/ShopICO/ahyd-BID/service/default.png'">
|
||||
:src="img.fileID ? 'https://fwqznxj.yciccloud.com:9081/fileDownloadApi/bsys/document/docDownloadAction?fileId=' + img.fileID : 'https://eshangtech.com/ShopICO/ahyd-BID/service/default.png'">
|
||||
</image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
@ -504,12 +503,15 @@ export default {
|
||||
onLoad() {
|
||||
this.menu = uni.getMenuButtonBoundingClientRect()
|
||||
let currentService = uni.getStorageSync('currentService')
|
||||
console.log('currentServicecurrentServicecurrentService', currentService);
|
||||
|
||||
// 防护:确保 currentService 存在
|
||||
if (currentService && (currentService.Serverpart_ID || currentService.SERVERPART_ID)) {
|
||||
this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID)
|
||||
this.handleGetCurrentServiceAttendanceData(currentService.SERVERPART_NAME)
|
||||
this.handleGetEventsData(currentService.SERVERPART_NAME)
|
||||
if (currentService && (currentService.SAName || currentService.SACode)) {
|
||||
this.serviceInfo = {
|
||||
...currentService,
|
||||
}
|
||||
this.handleGetCurrentServiceAttendanceData(currentService.SAName)
|
||||
this.handleGetEventsData(currentService.SAName)
|
||||
} else {
|
||||
console.warn('onLoad: currentService 为空或无效')
|
||||
// 可以考虑跳转回服务区选择页面或显示错误提示
|
||||
@ -517,24 +519,28 @@ export default {
|
||||
},
|
||||
onShow() {
|
||||
let currentService = uni.getStorageSync('currentService')
|
||||
console.log('currentService', currentService);
|
||||
console.log('onShowonShowonShowonShow', currentService);
|
||||
|
||||
// 防护:检查 currentService 是否有效
|
||||
if (!currentService || (!currentService.Serverpart_ID && !currentService.SERVERPART_ID)) {
|
||||
if (!currentService || (!currentService.SACode)) {
|
||||
console.warn('currentService 为空或无效,跳过更新');
|
||||
this.isFirst = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取统一的服务区ID
|
||||
const currentServiceId = currentService.Serverpart_ID || currentService.SERVERPART_ID;
|
||||
const currentServiceName = currentService.SERVERPART_NAME;
|
||||
const currentServiceId = currentService.SACode;
|
||||
const currentServiceName = currentService.SAName;
|
||||
|
||||
// 只有当服务区真正发生变化且不是首次加载时才更新
|
||||
if (currentServiceId && currentServiceId !== this.serviceInfo.SERVERPART_ID && !this.isFirst) {
|
||||
if (currentServiceId && currentServiceId !== this.serviceInfo.SACode && !this.isFirst) {
|
||||
console.log('111111', currentService);
|
||||
this.emergencyListLength = 0
|
||||
this.dailyListLength = 0
|
||||
this.handleGetServerpartDetail(currentServiceId);
|
||||
this.serviceInfo = {
|
||||
...currentService,
|
||||
}
|
||||
// this.handleGetServerpartDetail(currentServiceId);
|
||||
this.handleGetCurrentServiceAttendanceData(currentServiceName);
|
||||
this.handleGetEventsData(currentServiceName)
|
||||
} else {
|
||||
@ -546,7 +552,7 @@ export default {
|
||||
async handleGetEventsData(saName) {
|
||||
const req = {
|
||||
bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3",
|
||||
saName: saName || this.serviceInfo.SERVERPART_NAME
|
||||
saName: saName || this.serviceInfo.SAName
|
||||
}
|
||||
console.log('reqreq', req);
|
||||
|
||||
@ -568,7 +574,7 @@ export default {
|
||||
|
||||
const req2 = {
|
||||
bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55",
|
||||
saName: saName || this.serviceInfo.SERVERPART_NAME
|
||||
saName: saName || this.serviceInfo.SAName
|
||||
}
|
||||
const data2 = await new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
@ -672,7 +678,7 @@ export default {
|
||||
this.selectDate = `${year}-${month}-${day}`;
|
||||
|
||||
console.log('serviceInfo', this.serviceInfo);
|
||||
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SERVERPART_NAME)
|
||||
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SAName)
|
||||
},
|
||||
// 查询服务区详情
|
||||
async handleGetServerpartDetail(id) {
|
||||
@ -716,7 +722,7 @@ export default {
|
||||
latitude: obj.latitude ? obj.latitude * 1 : obj.SERVERPART_Y * 1,
|
||||
longitude: obj.longitude ? obj.longitude * 1 : obj.SERVERPART_X * 1,
|
||||
scale: 16, // 缩放比例
|
||||
name: obj.SERVERPART_NAME,
|
||||
name: obj.SAName,
|
||||
// address: "", // 这个可能会影响地图的定位,所以可以选择不填
|
||||
success(data) {
|
||||
},
|
||||
@ -748,7 +754,7 @@ export default {
|
||||
// this.selectDate = e.detail.value
|
||||
this.selectDate = e.fulldate
|
||||
|
||||
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SERVERPART_NAME)
|
||||
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SAName)
|
||||
},
|
||||
// 切换tab
|
||||
handleChangeTab(e) {
|
||||
|
||||
@ -10,11 +10,11 @@
|
||||
<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 ? serviceInfo.SERVERPART_NAME :
|
||||
<view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
|
||||
'' }}
|
||||
</view>
|
||||
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
|
||||
</p>
|
||||
<!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
|
||||
</p> -->
|
||||
<image class="rightArrow"
|
||||
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
|
||||
</view>
|
||||
@ -175,25 +175,25 @@ export default {
|
||||
this.serviceInfo = currentService
|
||||
this.handleGetNewMonthData()
|
||||
// 加载排班数据
|
||||
this.loadRosterData(currentService.SERVERPART_NAME)
|
||||
this.loadRosterData(currentService.SAName)
|
||||
},
|
||||
onShow() {
|
||||
let currentService = uni.getStorageSync('currentService')
|
||||
console.log('currentService', currentService);
|
||||
|
||||
// 防护:检查 currentService 是否有效
|
||||
if (!currentService || (!currentService.Serverpart_ID && !currentService.SERVERPART_ID)) {
|
||||
if (!currentService || (!currentService.SACode)) {
|
||||
console.warn('currentService 为空或无效,跳过更新');
|
||||
this.isFirst = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// 获取统一的服务区ID
|
||||
const currentServiceId = currentService.Serverpart_ID || currentService.SERVERPART_ID;
|
||||
const currentServiceName = currentService.SERVERPART_NAME;
|
||||
const currentServiceId = currentService.SACode;
|
||||
const currentServiceName = currentService.SAName;
|
||||
|
||||
// 只有当服务区真正发生变化且不是首次加载时才更新
|
||||
if (currentServiceId && currentServiceId !== this.serviceInfo.SERVERPART_ID && !this.isFirst) {
|
||||
if (currentServiceId && currentServiceId !== this.serviceInfo.SACode && !this.isFirst) {
|
||||
this.serviceInfo = currentService
|
||||
this.rosterData = []
|
||||
this.userList = []
|
||||
@ -213,7 +213,7 @@ export default {
|
||||
retryLoad() {
|
||||
if (this.retryCount < 3) {
|
||||
this.retryCount++
|
||||
this.loadRosterData(this.serviceInfo.SERVERPART_NAME)
|
||||
this.loadRosterData(this.serviceInfo.SAName)
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: '多次重试失败,请检查网络连接',
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<view :style="showUnUpLoad ? 'overflow:hideen;height:100vh;':'height:100%;width:750rpx;'" class="page-body"
|
||||
<view :style="showUnUpLoad ? 'overflow:hideen;height:100vh;' : 'height:100%;'" class="page-body"
|
||||
scroll-with-animation v-if="showPage">
|
||||
<div class="box-card" :style="'opacity:' + (1 - opacity) + ';'">
|
||||
<div class="box-top-title">
|
||||
<span class="box-center-title">{{ sMsg.serverpartname }}</span>
|
||||
<picker mode="date" @change="bindDateChange" :value="theRequest&&theRequest.time" :start="startTime" :end="endTime"
|
||||
class="title-clock">
|
||||
<picker mode="date" @change="bindDateChange" :value="theRequest && theRequest.time" :start="startTime"
|
||||
:end="endTime" class="title-clock">
|
||||
<view>{{ searchDate }} <text class="uni-icon uni-icon-arrowdown"></text></view>
|
||||
</picker>
|
||||
|
||||
@ -17,9 +17,11 @@
|
||||
<div class="tab-unit" @tap="showPop">
|
||||
<span>上传门店:</span>
|
||||
<span class="tab-unit-num"
|
||||
:class="{'priceRed':sMsg.uploadCount!==sMsg.totalUploadCount}">{{sMsg.uploadCount}}</span>
|
||||
:class="{ 'priceRed': sMsg.uploadCount !== sMsg.totalUploadCount }">{{ sMsg.uploadCount
|
||||
}}</span>
|
||||
<span class="tab-unit-num "
|
||||
:class="{'more-btn':sMsg.uploadCount!==sMsg.totalUploadCount}">{{sMsg.totalUploadCount}}</span>
|
||||
:class="{ 'more-btn': sMsg.uploadCount !== sMsg.totalUploadCount }">{{
|
||||
sMsg.totalUploadCount }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="uni-flex ai-base jc-between">
|
||||
@ -72,7 +74,8 @@
|
||||
</div>
|
||||
</view>
|
||||
</div>
|
||||
<cover-view class="fixed-box page-title" :style="'transform: translateY('+fixedY+'px);opacity:'+opacity+';'">
|
||||
<cover-view class="fixed-box page-title"
|
||||
:style="'transform: translateY(' + fixedY + 'px);opacity:' + opacity + ';'">
|
||||
<cover-view>{{ sMsg.serverpartname || '' }}</cover-view>
|
||||
<cover-view class="price-text" style="width: 200rpx;text-align: right;">¥ {{ sMsg.totalMoneyShow }}
|
||||
</cover-view>
|
||||
@ -112,14 +115,21 @@
|
||||
</div>
|
||||
<div class="uni-flex jc-between">
|
||||
<div style="color: #667ED5;">{{ operationModel[0].name }}: <span
|
||||
style="font-size: 32rpx;">{{operationModel[0].bili}}</span>%</div>
|
||||
<div style="color: #F3AF50;" v-if="operationModel[1].name">{{operationModel[1].name}}: <span
|
||||
style="font-size: 32rpx;">{{operationModel[1].bili}}</span>%</div>
|
||||
style="font-size: 32rpx;">{{
|
||||
operationModel[0].bili }}</span>%</div>
|
||||
<div style="color: #F3AF50;" v-if="operationModel[1].name">{{ operationModel[1].name }}:
|
||||
<span style="font-size: 32rpx;">{{ operationModel[1].bili }}</span>%
|
||||
</div>
|
||||
</div>
|
||||
<div class="uni-flex jc-between">
|
||||
<div><span style="font-size: 32rpx;">{{operationModel[0].data}}</span>元</div>
|
||||
<div v-if="operationModel[1].data"><span
|
||||
style="font-size: 32rpx;">{{operationModel[1].data}}</span>元</div>
|
||||
<div style="margin-bottom: 0;"><span style="font-size: 32rpx;">{{ operationModel[0].data
|
||||
}}</span>元
|
||||
</div>
|
||||
<div style="margin-bottom: 0;" v-if="operationModel[1].data"><span
|
||||
style="font-size: 32rpx;">{{
|
||||
operationModel[1].data
|
||||
}}</span>元
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -130,7 +140,8 @@
|
||||
:class="{ 'active': nowShop == i }" @click="selectCate(i)">{{ n.Bussiness_Name }}</div>
|
||||
</scroll-view>
|
||||
<div class="tab-content" v-if="cateBrandList.length">
|
||||
<div class="shop-card" v-for="(m,i) in cateBrandList[nowShop].listBrandModel" :key="i" @click="toBrandPage(m,i)">
|
||||
<div class="shop-card" v-for="(m, i) in cateBrandList[nowShop].listBrandModel" :key="i"
|
||||
@click="toBrandPage(m, i)">
|
||||
<div>
|
||||
<image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image>
|
||||
<image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image>
|
||||
@ -697,16 +708,17 @@
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
<style lang="scss" scoped>
|
||||
.page-body {
|
||||
background-color: #fff;
|
||||
padding-bottom: 20rpx;
|
||||
background-color: #f8f9fa;
|
||||
padding: 0 32rpx 32rpx;
|
||||
box-sizing: border-box;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.mt8 {
|
||||
margin-top: 16rpx;
|
||||
margin-top: 20rpx;
|
||||
}
|
||||
|
||||
cover-view.page-title {
|
||||
@ -730,16 +742,18 @@
|
||||
}
|
||||
|
||||
.fixed-box {
|
||||
background-color: #686D8F;
|
||||
/* background: linear-gradient(to right, #686D8F, #A1ACC6); */
|
||||
transition: all .2s;
|
||||
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||
transition: all .3s ease;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
left: 32rpx;
|
||||
width: calc(100% - 64rpx);
|
||||
z-index: 999;
|
||||
box-sizing: border-box;
|
||||
color: #fff;
|
||||
box-shadow: 0 4rpx 20rpx rgba(39, 178, 95, 0.3);
|
||||
backdrop-filter: blur(10rpx);
|
||||
border-radius: 0 0 16rpx 16rpx;
|
||||
}
|
||||
|
||||
/* 业态 */
|
||||
@ -757,11 +771,12 @@
|
||||
|
||||
/* 门店 */
|
||||
.shop-box {
|
||||
margin: 32rpx 20rpx;
|
||||
border-radius: 8rpx;
|
||||
background-color: #F6F8FA;
|
||||
padding: 36rpx 20rpx;
|
||||
|
||||
margin: 24rpx 0;
|
||||
border-radius: 16rpx;
|
||||
background-color: #fff;
|
||||
padding: 32rpx 24rpx;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
border: 1rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.tab-shop {
|
||||
@ -802,130 +817,187 @@
|
||||
}
|
||||
|
||||
.pie-content {
|
||||
margin: 0 30rpx;
|
||||
border-radius: 12rpx;
|
||||
box-shadow: 0 2rpx 10rpx 0 rgba(230, 230, 230, 0.49);
|
||||
margin: 24rpx 0 32rpx;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
margin-bottom: 48rpx;
|
||||
padding-top: 32rpx;
|
||||
padding-bottom: 30rpx;
|
||||
padding: 32rpx 24rpx;
|
||||
border: 1rpx solid #f0f0f0;
|
||||
overflow: hidden;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 4rpx;
|
||||
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||
}
|
||||
}
|
||||
|
||||
.pie-title {
|
||||
padding: 0 20rpx;
|
||||
line-height: 80rpx;
|
||||
font-size: 26rpx;
|
||||
padding: 0;
|
||||
line-height: 1.5;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 24rpx;
|
||||
}
|
||||
|
||||
/* 门店卡片 */
|
||||
.shop-card {
|
||||
width: 210rpx;
|
||||
height: 227rpx;
|
||||
border-radius: 8rpx;
|
||||
height: 240rpx;
|
||||
border-radius: 16rpx;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
padding-top: 20rpx;
|
||||
padding: 24rpx 16rpx;
|
||||
box-sizing: border-box;
|
||||
margin-top: 16rpx;
|
||||
margin-top: 20rpx;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
transition: all 0.3s ease;
|
||||
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
|
||||
|
||||
&:active {
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0) 100%);
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n-5) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #ed7c77, #d6524c);
|
||||
background-size: contain;
|
||||
background: linear-gradient(135deg, #ff6b6b, #ee5a52);
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n-4) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #d1bea8, #ba9d7b);
|
||||
background: linear-gradient(135deg, #feca57, #ff9ff3);
|
||||
margin-left: 18rpx;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n-3) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #929cc0, #aab3d0);
|
||||
background: linear-gradient(135deg, #a8e6cf, #7fcdcd);
|
||||
margin-left: 18rpx;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n-2) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #779cb1, #a3bbc9);
|
||||
background-size: contain;
|
||||
background: linear-gradient(135deg, #74b9ff, #0984e3);
|
||||
margin-left: 0rpx;
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n-1) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #c08d80, #e8cbc7);
|
||||
background: linear-gradient(135deg, #fd79a8, #e84393);
|
||||
margin-left: 18rpx;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
.shop-card:nth-child(6n) {
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/shop-card.png') no-repeat center 50%, linear-gradient(-35deg, #5cbe9c, #95d5bf);
|
||||
margin-left: 18rpx;
|
||||
background-size: contain;
|
||||
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||
margin-left: 18rpx;
|
||||
}
|
||||
|
||||
.shop-card .shop-name {
|
||||
font-size: 24rpx;
|
||||
text-shadow: 0 2rpx 2rpx #A9a5a0;
|
||||
font-size: 26rpx;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
|
||||
line-height: 1.4;
|
||||
max-height: 62rpx;
|
||||
max-height: 64rpx;
|
||||
overflow: hidden;
|
||||
font-weight: 500;
|
||||
margin: 12rpx 0;
|
||||
}
|
||||
|
||||
.shop-card image {
|
||||
border-radius: 50%;
|
||||
border: 2rpx solid #fff;
|
||||
border: 3rpx solid rgba(255, 255, 255, 0.9);
|
||||
background-color: #FFFFFF;
|
||||
width: 62rpx;
|
||||
height: 62rpx;
|
||||
width: 64rpx;
|
||||
height: 64rpx;
|
||||
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.shop-card .price-num {
|
||||
|
||||
font-size: 38rpx;
|
||||
font-family: Bahnschrift Regular;
|
||||
font-size: 36rpx;
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
font-weight: 700;
|
||||
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.box-card {
|
||||
padding: 24upx 24upx 0;
|
||||
padding: 32rpx 24rpx 0;
|
||||
background-color: #fff;
|
||||
width: 100%;
|
||||
box-sizing: border-box;
|
||||
transition: all .2s;
|
||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/effective/bg-top.png') no-repeat center;
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
background-position: top center;
|
||||
transition: all .3s ease;
|
||||
margin: 0 0 24rpx;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 8rpx;
|
||||
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||
}
|
||||
}
|
||||
|
||||
.top-card {
|
||||
background: linear-gradient(to top, #989fb9, #686d8f);
|
||||
margin-top: 24upx;
|
||||
padding: 32upx 0 32rpx 0;
|
||||
border-radius: 8rpx;
|
||||
background: linear-gradient(135deg, #27B25F 0%, #4CCC7F 100%);
|
||||
margin-top: 32rpx;
|
||||
padding: 40rpx 0;
|
||||
border-radius: 16rpx;
|
||||
position: relative;
|
||||
box-shadow: 0 8rpx 24rpx rgba(39, 178, 95, 0.2);
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><circle cx="90" cy="10" r="2" fill="white" opacity="0.3"/><circle cx="80" cy="20" r="1" fill="white" opacity="0.2"/><circle cx="70" cy="5" r="1.5" fill="white" opacity="0.4"/></svg>') repeat;
|
||||
pointer-events: none;
|
||||
}
|
||||
}
|
||||
|
||||
.budgetamount {
|
||||
margin-left: 14rpx;
|
||||
color: #fff;
|
||||
font-family: 'Bahnschrift Regular';
|
||||
margin-left: 16rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.budget-title {
|
||||
color: #DEE1F1;
|
||||
padding: 4rpx 6rpx 2rpx 6rpx;
|
||||
border-radius: 2rpx;
|
||||
margin-right: 4rpx;
|
||||
color: rgba(255, 255, 255, 0.8);
|
||||
padding: 6rpx 12rpx;
|
||||
border-radius: 12rpx;
|
||||
margin-right: 8rpx;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
font-size: 22rpx;
|
||||
}
|
||||
|
||||
.up-text-title,
|
||||
.down-text-title {
|
||||
font-size: 32rpx;
|
||||
font-family: 'Bahnschrift Regular';
|
||||
/* line-height: 1.2; */
|
||||
font-size: 34rpx;
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
font-weight: 600;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.up-text-title:after {
|
||||
@ -954,12 +1026,17 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: 8rpx;
|
||||
}
|
||||
|
||||
.title-clock {
|
||||
color: #999;
|
||||
font-size: 24upx;
|
||||
color: #666;
|
||||
font-size: 26rpx;
|
||||
text-align: right;
|
||||
padding: 8rpx 16rpx;
|
||||
background-color: rgba(255, 255, 255, 0.9);
|
||||
border-radius: 20rpx;
|
||||
border: 1rpx solid #e5e5e5;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -981,13 +1058,14 @@
|
||||
}
|
||||
|
||||
.box-center-title {
|
||||
font-size: 24upx;
|
||||
color: #010101;
|
||||
border-radius: 24upx;
|
||||
padding: 0 16upx;
|
||||
background-color: #DEDEDE;
|
||||
font-size: 28rpx;
|
||||
color: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 8rpx 20rpx;
|
||||
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||
text-align: center;
|
||||
|
||||
font-weight: 400;
|
||||
box-shadow: 0 4rpx 12rpx rgba(39, 178, 95, 0.3);
|
||||
}
|
||||
|
||||
.uni-icon-arrowdown {
|
||||
@ -1005,40 +1083,46 @@
|
||||
}
|
||||
|
||||
.center-num {
|
||||
font-size: 64rpx;
|
||||
font-size: 40rpx;
|
||||
color: #fff;
|
||||
font-family: Bahnschrift Regular;
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
font-weight: 700;
|
||||
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
|
||||
letter-spacing: 2rpx;
|
||||
}
|
||||
|
||||
.check-unit,
|
||||
.budgetamount {
|
||||
font-size: 24rpx;
|
||||
color: #DEE1F1;
|
||||
font-size: 26rpx;
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
text-align: center;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.main-amount-title {
|
||||
|
||||
color: #DEE1F1;
|
||||
font-size: 24rpx;
|
||||
/* flex: 1; */
|
||||
color: rgba(255, 255, 255, 0.9);
|
||||
font-size: 26rpx;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
.tab-unit {
|
||||
background-color: #3A3E5B;
|
||||
border-radius: 24rpx 0 0 24rpx;
|
||||
background: rgba(255, 255, 255, 0.2);
|
||||
border-radius: 20rpx;
|
||||
color: #fff;
|
||||
font-size: 24rpx;
|
||||
position: relative;
|
||||
right: -12px;
|
||||
padding: 0 20rpx;
|
||||
font-size: 26rpx;
|
||||
padding: 8rpx 16rpx;
|
||||
font-weight: 500;
|
||||
backdrop-filter: blur(10rpx);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
|
||||
.check-price-color {
|
||||
color: #fff;
|
||||
font-size: 34rpx;
|
||||
font-family: Bahnschrift Regular;
|
||||
line-height: 1.2;
|
||||
font-size: 38rpx;
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
line-height: 1.3;
|
||||
font-weight: 600;
|
||||
margin-top: 8rpx;
|
||||
}
|
||||
|
||||
.check-price-color text {
|
||||
@ -1096,69 +1180,81 @@
|
||||
}
|
||||
|
||||
.uni-popup-middle {
|
||||
/* overflow: hidden; */
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
min-width: 400upx;
|
||||
min-height: 400upx;
|
||||
border-radius: 16upx;
|
||||
min-width: 500rpx;
|
||||
min-height: 400rpx;
|
||||
border-radius: 20rpx;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -20%);
|
||||
justify-content: flex-start;
|
||||
padding: 0 30upx 30upx 30upx;
|
||||
padding: 0 32rpx 32rpx;
|
||||
box-shadow: 0 20rpx 60rpx rgba(0, 0, 0, 0.3);
|
||||
border: 1rpx solid rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.header-top {
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
font-size: 32rpx;
|
||||
font-weight: 700;
|
||||
color: #333;
|
||||
text-align: left;
|
||||
width: 100%;
|
||||
padding: 32rpx 0;
|
||||
padding: 32rpx 0 24rpx;
|
||||
background-color: #fff;
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 2rpx;
|
||||
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||
}
|
||||
}
|
||||
|
||||
.pop-body {
|
||||
width: 600rpx;
|
||||
max-height: 600rpx;
|
||||
width: 100%;
|
||||
max-height: 500rpx;
|
||||
overflow-y: auto;
|
||||
background-color: #fff;
|
||||
padding-bottom: 8rpx;
|
||||
padding-bottom: 16rpx;
|
||||
border-radius: 8rpx;
|
||||
}
|
||||
|
||||
.pop-row {
|
||||
padding: 24rpx 10rpx 24rpx 0;
|
||||
font-size: 24rpx;
|
||||
padding: 20rpx 0;
|
||||
font-size: 26rpx;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
|
||||
justify-content: flex-start;
|
||||
box-sizing: border-box;
|
||||
position: relative;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.pop-row .pop-row-bottom {
|
||||
|
||||
position: absolute;
|
||||
height: 2rpx;
|
||||
height: 1rpx;
|
||||
width: 100%;
|
||||
background-color: #efefef;
|
||||
background: linear-gradient(90deg, transparent 0%, #e5e5e5 50%, transparent 100%);
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.pop-index {
|
||||
color: #DF7F42;
|
||||
border: 1rpx solid #DF7F42;
|
||||
border-radius: 8rpx;
|
||||
padding: 2rpx 12rpx 0 12rpx;
|
||||
margin-right: 12rpx;
|
||||
font-size: 24rpx;
|
||||
line-height: 30rpx;
|
||||
height: 30rpx;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
color: #fff;
|
||||
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||
border-radius: 12rpx;
|
||||
padding: 4rpx 12rpx;
|
||||
margin-right: 16rpx;
|
||||
font-size: 22rpx;
|
||||
font-weight: 600;
|
||||
min-width: 48rpx;
|
||||
text-align: center;
|
||||
box-shadow: 0 2rpx 8rpx rgba(39, 178, 95, 0.3);
|
||||
}
|
||||
|
||||
/* .customer-title {
|
||||
@ -1185,53 +1281,73 @@
|
||||
}
|
||||
|
||||
.analysis-tabs {
|
||||
margin: 24rpx auto;
|
||||
width: 708rpx;
|
||||
margin: 24rpx 0;
|
||||
overflow: hidden;
|
||||
/* color: #777777; */
|
||||
border: 1rpx solid #647bd1;
|
||||
border-radius: 39rpx;
|
||||
background-color: #fff;
|
||||
border-radius: 12rpx;
|
||||
display: flex;
|
||||
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||
border: 1rpx solid #f0f0f0;
|
||||
}
|
||||
|
||||
.tab {
|
||||
text-align: center;
|
||||
flex: 1;
|
||||
height: 76rpx;
|
||||
line-height: 76rpx;
|
||||
height: 80rpx;
|
||||
line-height: 80rpx;
|
||||
font-size: 28rpx;
|
||||
color: #666;
|
||||
transition: all 0.3s ease;
|
||||
font-weight: 500;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.tab.active {
|
||||
background: #f2f4f9;
|
||||
color: #647BD1;
|
||||
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||
color: #fff;
|
||||
font-weight: 600;
|
||||
box-shadow: 0 4rpx 12rpx rgba(39, 178, 95, 0.3);
|
||||
border-radius: 8rpx;
|
||||
margin: 4rpx;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
}
|
||||
|
||||
// 经营模式占比
|
||||
.model-busniess {
|
||||
margin: 12rpx 30rpx;
|
||||
font-family: 'Bahnschrift Regular';
|
||||
|
||||
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||
padding: 24rpx 24rpx 0;
|
||||
background: linear-gradient(135deg, #f8f9fa 0%, #ffffff 100%);
|
||||
border-radius: 12rpx;
|
||||
border: 1rpx solid #f0f0f0;
|
||||
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
.model-busniess view {
|
||||
font-size: 26rpx;
|
||||
font-size: 28rpx;
|
||||
font-weight: 600;
|
||||
color: #333;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
|
||||
.model-busniess .progress-content {
|
||||
width: 100%;
|
||||
height: 28rpx;
|
||||
border-radius: 2rpx;
|
||||
height: 12rpx;
|
||||
border-radius: 6rpx;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 30rpx;
|
||||
margin-bottom: 4rpx;
|
||||
margin: 20rpx 0 16rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: inset 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.model-busniess .progress-left {
|
||||
background-color: #667ED5;
|
||||
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||
border-radius: 6rpx 0 0 6rpx;
|
||||
}
|
||||
|
||||
.model-busniess .progress-right {
|
||||
background-color: #F3AF50;
|
||||
background: linear-gradient(90deg, #ff9f43, #ffb84d);
|
||||
border-radius: 0 6rpx 6rpx 0;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -12,12 +12,13 @@
|
||||
<div class="ranking-list" v-for="(item, index) in wechatPushSalesList[nowRank]" :key="index">
|
||||
<div class="rank-index">{{ item.RANK_ID || item.Rank_ID }}</div>
|
||||
<div class="ranking-list-unit">
|
||||
<div>{{item.COMMODITY_NAME || item.Commodity_Name}}</div>
|
||||
<div style="font-size: 24rpx;">{{ item.COMMODITY_NAME || item.Commodity_Name }}</div>
|
||||
<div class="ranking-unit-info">
|
||||
<text>销售金额 </text>
|
||||
<text>¥{{$util.fmoney(item.TOTALPRICE || item.TotalPrice)}}</text>
|
||||
<text>销售数量 </text>
|
||||
<text>{{item.SELLCOUNT || item.SellCount}}</text>
|
||||
<text style="font-size: 24rpx;">销售金额 </text>
|
||||
<text style="font-size: 28rpx;font-weight: 600;">¥{{ $util.fmoney(item.TOTALPRICE ||
|
||||
item.TotalPrice) }}</text>
|
||||
<text style="font-size: 24rpx;">销售数量 </text>
|
||||
<text style="font-size: 28rpx;font-weight: 600;">{{ item.SELLCOUNT || item.SellCount }}</text>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -114,7 +115,7 @@
|
||||
}
|
||||
|
||||
.ranking-content .ranking-list-unit {
|
||||
font-size: 28rpx;
|
||||
font-size: 24rpx;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
|
||||
@ -407,7 +407,7 @@ export default {
|
||||
color: #bed4f4;
|
||||
/* color: #FAD5D2; */
|
||||
|
||||
font-size: 30rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.head-cost-text .date-tag {
|
||||
@ -549,7 +549,7 @@ export default {
|
||||
|
||||
.revenue-card-cont {
|
||||
border-radius: 12rpx;
|
||||
margin: 38rpx 20rpx 0 20rpx;
|
||||
margin: 38rpx 32rpx 0 32rpx;
|
||||
overflow: hidden;
|
||||
box-shadow: 1rpx 2rpx 8rpx 0px rgba(224, 224, 224, 0.4);
|
||||
background: linear-gradient(to top, #ffffff 0%, #ffffff 51%, #e5e9fc 100%);
|
||||
@ -559,7 +559,7 @@ export default {
|
||||
.revenue-card-title {
|
||||
font-weight: 500;
|
||||
text-align: left;
|
||||
font-size: 30rpx;
|
||||
font-size: 28rpx;
|
||||
}
|
||||
|
||||
.center-amount,
|
||||
|
||||
@ -356,6 +356,7 @@ export default {
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude,
|
||||
};
|
||||
|
||||
uni.setStorageSync("seatInfo", JSON.stringify(seatInfo));
|
||||
_this.handleGetNearService(seatInfo.latitude, seatInfo.longitude)
|
||||
},
|
||||
@ -410,6 +411,23 @@ export default {
|
||||
_this.monthDataCache = {};
|
||||
_this.loadingMap = {};
|
||||
_this.handleGetOnLoad();
|
||||
|
||||
|
||||
// 更新一下定位
|
||||
uni.getLocation({
|
||||
type: "gcj02",
|
||||
altitude: true,
|
||||
success: (res) => {
|
||||
let seatInfo = {
|
||||
latitude: res.latitude,
|
||||
longitude: res.longitude,
|
||||
};
|
||||
uni.setStorageSync("seatInfo", JSON.stringify(seatInfo));
|
||||
_this.handleGetNearService(seatInfo.latitude, seatInfo.longitude)
|
||||
},
|
||||
fail: (err) => {
|
||||
},
|
||||
});
|
||||
}
|
||||
uni.stopPullDownRefresh();
|
||||
},
|
||||
@ -799,20 +817,88 @@ export default {
|
||||
},
|
||||
// 拿一个最近的服务区 当默认服务区
|
||||
async handleGetNearService(latitude, longitude) {
|
||||
let req = {
|
||||
Province_Code: "530000",
|
||||
longitude: latitude,
|
||||
latitude: longitude,
|
||||
ShowService: true,
|
||||
PageIndex: 1,
|
||||
PageSize: 1
|
||||
}
|
||||
const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
console.log('sdjkajdas', data);
|
||||
let list = data.Result_Data.List
|
||||
uni.setStorageSync('currentService', list[0]);
|
||||
},
|
||||
// let req = {
|
||||
// Province_Code: "530000",
|
||||
// longitude: latitude,
|
||||
// latitude: longitude,
|
||||
// ShowService: true,
|
||||
// PageIndex: 1,
|
||||
// PageSize: 1
|
||||
// }
|
||||
// const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
// console.log('sdjkajdas', data);
|
||||
// let list = data.Result_Data.List
|
||||
// // 存第一个做为默认服务区
|
||||
// // uni.setStorageSync('currentService', list[0]);
|
||||
// let nearObj = list[0]
|
||||
// console.log('nearObjnearObjnearObj', nearObj);
|
||||
|
||||
|
||||
|
||||
let YNList = await this.handleGetYNServiceList()
|
||||
console.log('YNListYNList', YNList);
|
||||
if (YNList && YNList.length > 0) {
|
||||
let nearList = []
|
||||
YNList.forEach((item) => {
|
||||
let obj = JSON.parse(JSON.stringify(item))
|
||||
obj.SERVERPART_DISTANCE = this.haversineDistance({ lat: latitude, lng: longitude }, { lat: obj.latitude, lng: obj.longitude })
|
||||
obj.fileId = obj.fileId ? JSON.parse(obj.fileId) : []
|
||||
obj.businessModel = obj.businessModel ? JSON.parse(obj.businessModel) : []
|
||||
nearList.push(obj)
|
||||
})
|
||||
|
||||
nearList = nearList.sort((a, b) => {
|
||||
const da = parseFloat(a.SERVERPART_DISTANCE) || 0;
|
||||
const db = parseFloat(b.SERVERPART_DISTANCE) || 0;
|
||||
return da - db;
|
||||
});
|
||||
uni.setStorageSync('currentService', nearList[0]);
|
||||
// 存一下 全部的服务区 主要是拿个距离字段
|
||||
uni.setStorageSync('ServerpartList', nearList)
|
||||
}
|
||||
|
||||
},
|
||||
// 算经纬度的之间距离的方法
|
||||
haversineDistance({ lat: lat1, lng: lon1 }, { lat: lat2, lng: lon2 }) {
|
||||
const toRad = (d) => d * Math.PI / 180;
|
||||
const R = 6378137; // 地球半径(米) WGS84 椭球近似为球
|
||||
const φ1 = toRad(lat1);
|
||||
const φ2 = toRad(lat2);
|
||||
const Δφ = toRad(lat2 - lat1);
|
||||
const Δλ = toRad(lon2 - lon1);
|
||||
|
||||
const a = Math.sin(Δφ / 2) ** 2 +
|
||||
Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) ** 2;
|
||||
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
const distanceMeters = R * c;
|
||||
|
||||
return (distanceMeters / 1000).toFixed(2); // 返回 km,字符串
|
||||
},
|
||||
// 请求一下云南那边的 服务区数据
|
||||
async handleGetYNServiceList() {
|
||||
let req = {
|
||||
bsessionKey: "46BC6D5E069411B39C215C8A3B474B31",
|
||||
pageNum: 1,
|
||||
pageSize: 500
|
||||
}
|
||||
const data = await new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: "https://fwqznxj.yciccloud.com:9081/ynjt/pushManage/getSaMsgAll",
|
||||
method: "POST",
|
||||
data: req,
|
||||
header: {
|
||||
"content-type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
success(res) {
|
||||
resolve(res.data.data)
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// 这个是云南那边给来的数据 根据 云南的数据 把我们算的距离补给他们的数据里面
|
||||
// let YNList = data.data
|
||||
return data.data
|
||||
},
|
||||
// uniapp小程序兼容性方法,保留作为备用
|
||||
getCurrentMonthText(index) {
|
||||
if (this.selectIndex === index && this.monthList[index]) {
|
||||
|
||||
@ -28,8 +28,9 @@
|
||||
@click="handleGoDetail(item.SERVERPART_ID, item)">
|
||||
<div class="topItem">
|
||||
<view class="leftItem">
|
||||
<p class="title">{{ item.SERVERPART_NAME }}</p>
|
||||
<view class="typeBox">{{ serviceTypeObj[item.SERVERPART_TYPE] }}</view>
|
||||
<!-- <p class="title">{{ item.SERVERPART_NAME }}</p> -->
|
||||
<p class="title">{{ item.SAName }}</p>
|
||||
<!-- <view class="typeBox">{{ serviceTypeObj[item.SERVERPART_TYPE] }}</view> -->
|
||||
</view>
|
||||
<div class="box">
|
||||
<div class="imgBox">
|
||||
@ -43,7 +44,7 @@
|
||||
<p class="distance">距您 <text class="number">{{ item.SERVERPART_DISTANCE }}</text> km</p>
|
||||
<div class="info">
|
||||
<image class="infoIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/address.svg"></image>
|
||||
<p class="address">{{ item.SERVERPART_ADDRESS }}</p>
|
||||
<p class="address">{{ item.belongArea }}-{{ item.belongRegion }}-{{ item.belongLine }}</p>
|
||||
</div>
|
||||
<div class="info" v-if="item.STARTDATE">
|
||||
<image class="infoIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/time.svg"></image>
|
||||
@ -96,7 +97,8 @@ export default {
|
||||
type: '',// 哪里进来
|
||||
serviceTypeObj: {},
|
||||
serviceMessage: {},// 当前选中的服务区
|
||||
seatInfo: {}
|
||||
seatInfo: {},
|
||||
allServiceList: []
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
@ -204,10 +206,10 @@ export default {
|
||||
handleGomap(item) {
|
||||
let obj = item;
|
||||
uni.openLocation({
|
||||
latitude: obj.latitude ? obj.latitude * 1 : obj.SERVERPART_Y * 1,
|
||||
longitude: obj.longitude ? obj.longitude * 1 : obj.SERVERPART_X * 1,
|
||||
latitude: obj.latitude * 1,
|
||||
longitude: obj.longitude * 1,
|
||||
scale: 16, // 缩放比例
|
||||
name: obj.SERVERPART_NAME,
|
||||
name: obj.SAName,
|
||||
// address: "", // 这个可能会影响地图的定位,所以可以选择不填
|
||||
success(data) {
|
||||
},
|
||||
@ -313,34 +315,47 @@ export default {
|
||||
},
|
||||
//搜索框触发的方法
|
||||
async handleSearch() {
|
||||
let req = {
|
||||
longitude: this.longitude,
|
||||
Province_Code: '530000',
|
||||
latitude: this.latitude,
|
||||
Serverpart_Name: this.searchText
|
||||
if (this.searchText) {
|
||||
let res = []
|
||||
if (this.allServiceList && this.allServiceList.length > 0) {
|
||||
|
||||
this.allServiceList.forEach((item) => {
|
||||
if (item.SAName.indexOf(this.searchText) !== -1) {
|
||||
res.push(item)
|
||||
}
|
||||
const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
this.serviceList = data.Result_Data.List
|
||||
})
|
||||
}
|
||||
this.serviceList = res
|
||||
} else {
|
||||
this.serviceList = JSON.parse(JSON.stringify(this.allServiceList))
|
||||
}
|
||||
|
||||
|
||||
|
||||
// let req = {
|
||||
// longitude: this.longitude,
|
||||
// Province_Code: '530000',
|
||||
// latitude: this.latitude,
|
||||
// Serverpart_Name: this.searchText
|
||||
// }
|
||||
// const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
// this.serviceList = data.Result_Data.List
|
||||
},
|
||||
//跳转相对应的服务区详情界面
|
||||
handleGoDetail(id, item) {
|
||||
let res = {
|
||||
SERVERPART_NAME: item.SERVERPART_NAME,//服务区
|
||||
SPREGIONTYPE_NAME: item.SPREGIONTYPE_NAME,//片区
|
||||
Serverpart_ID: item.SERVERPART_ID,
|
||||
SPRegionType_ID: item.SPREGIONTYPE_ID,
|
||||
longitude: item.SERVERPART_X,
|
||||
latitude: item.SERVERPART_Y,
|
||||
...item,
|
||||
// SERVERPART_NAME: item.SAName,//服务区
|
||||
// SPREGIONTYPE_NAME: item.belongArea,//片区
|
||||
// Serverpart_ID: "",
|
||||
// SPRegionType_ID: "",
|
||||
// longitude: item.longitude,
|
||||
// latitude: item.latitude,
|
||||
}
|
||||
uni.setStorageSync('currentService', res) //当前选中服务区信息
|
||||
uni.setStorageSync('currentService', res)
|
||||
let pageList = getCurrentPages()
|
||||
if (this.type === 'index') {
|
||||
this.$util.toNextRoute('navigateTo', `/pages/summaryOfPortraits/index?index=0`)
|
||||
} else if (this.type === 'springTravel') {
|
||||
uni.setStorageSync('springService', res) //当前选中服务区信息
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
})
|
||||
} else if (this.type === 'attendanceStatus') {
|
||||
uni.navigateBack({
|
||||
delta: 1
|
||||
@ -358,22 +373,120 @@ export default {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// let res = {
|
||||
// SERVERPART_NAME: item.SERVERPART_NAME,//服务区
|
||||
// SPREGIONTYPE_NAME: item.SPREGIONTYPE_NAME,//片区
|
||||
// Serverpart_ID: item.SERVERPART_ID,
|
||||
// SPRegionType_ID: item.SPREGIONTYPE_ID,
|
||||
// longitude: item.SERVERPART_X,
|
||||
// latitude: item.SERVERPART_Y,
|
||||
// }
|
||||
// uni.setStorageSync('currentService', res) //当前选中服务区信息
|
||||
// let pageList = getCurrentPages()
|
||||
// if (this.type === 'index') {
|
||||
// this.$util.toNextRoute('navigateTo', `/pages/summaryOfPortraits/index?index=0`)
|
||||
// } else if (this.type === 'springTravel') {
|
||||
// uni.setStorageSync('springService', res) //当前选中服务区信息
|
||||
// uni.navigateBack({
|
||||
// delta: 1
|
||||
// })
|
||||
// } else if (this.type === 'attendanceStatus') {
|
||||
// uni.navigateBack({
|
||||
// delta: 1
|
||||
// })
|
||||
// } else {
|
||||
// if (this.chartType) {
|
||||
// uni.navigateBack({
|
||||
// delta: 1
|
||||
// })
|
||||
// } else {
|
||||
// if (pageList.length > 2) {
|
||||
// uni.navigateBack({
|
||||
// delta: 1
|
||||
// })
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
},
|
||||
async getListData() {
|
||||
let user = uni.getStorageSync('seatInfo')
|
||||
|
||||
let req = {
|
||||
Province_Code: '530000',
|
||||
Serverpart_ID: '',
|
||||
longitude: this.seatInfo.longitude,
|
||||
latitude: this.seatInfo.latitude
|
||||
bsessionKey: "46BC6D5E069411B39C215C8A3B474B31",
|
||||
pageNum: 1,
|
||||
pageSize: 500
|
||||
}
|
||||
console.log('req', req)
|
||||
// const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
const data = await request.$webJavaGet('third-party/getServerPartList', req)
|
||||
console.log('datadatadatadata', data);
|
||||
const data = await new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: "https://fwqznxj.yciccloud.com:9081/ynjt/pushManage/getSaMsgAll",
|
||||
method: "POST",
|
||||
data: req,
|
||||
header: {
|
||||
"content-type": "application/x-www-form-urlencoded",
|
||||
},
|
||||
success(res) {
|
||||
resolve(res.data.data)
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
this.serviceList = data.Result_Data.List
|
||||
// 这个是云南那边给来的数据 根据 云南的数据 把我们算的距离补给他们的数据里面
|
||||
let YNList = data.data
|
||||
if (YNList && YNList.length > 0) {
|
||||
YNList.forEach((item, index) => {
|
||||
item.SERVERPART_DISTANCE = this.haversineDistance({ lat: this.seatInfo.latitude, lng: this.seatInfo.longitude }, { lat: item.latitude, lng: item.longitude })
|
||||
item.fileId = item.fileId ? JSON.parse(item.fileId) : []
|
||||
item.businessModel = item.businessModel ? JSON.parse(item.businessModel) : []
|
||||
// fileId: obj.fileId ? JSON.parse(obj.fileId) : [],
|
||||
// businessModel: obj.businessModel ? JSON.parse(obj.businessModel) : [],
|
||||
})
|
||||
uni.setStorageSync('YNList', YNList)
|
||||
this.serviceList = YNList
|
||||
this.allServiceList = YNList
|
||||
}
|
||||
// let serverpartList = uni.getStorageSync('ServerpartList')
|
||||
// console.log('serverpartListserverpartListserverpartList', serverpartList);
|
||||
// // 判断缓存里面 是不是有数据 没数据就调接口那新的 有数据 就用 serverpartList
|
||||
// let list = []
|
||||
// if (serverpartList && serverpartList.length > 0) {
|
||||
// list = serverpartList
|
||||
// } else {
|
||||
// let req = {
|
||||
// Province_Code: "530000",
|
||||
// ShowService: true,
|
||||
// longitude: this.seatInfo.longitude,
|
||||
// latitude: this.seatInfo.latitude,
|
||||
// PageIndex: 1,
|
||||
// PageSize: 300
|
||||
// }
|
||||
// console.log('req', req)
|
||||
// const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
|
||||
// // const data = await request.$webJavaGet('third-party/getServerPartList', req)
|
||||
// console.log('datadatadatadata', data);
|
||||
// list = data.Result_Data.List
|
||||
// uni.setStorageSync('ServerpartList', list)
|
||||
// }
|
||||
|
||||
// if (list && list.length > 0) {
|
||||
|
||||
// }
|
||||
// console.log('this.serviceListthis.serviceListthis.serviceList', this.serviceList);
|
||||
|
||||
},
|
||||
// 算经纬度的之间距离的方法
|
||||
haversineDistance({ lat: lat1, lng: lon1 }, { lat: lat2, lng: lon2 }) {
|
||||
const toRad = (d) => d * Math.PI / 180;
|
||||
const R = 6378137; // 地球半径(米) WGS84 椭球近似为球
|
||||
const φ1 = toRad(lat1);
|
||||
const φ2 = toRad(lat2);
|
||||
const Δφ = toRad(lat2 - lat1);
|
||||
const Δλ = toRad(lon2 - lon1);
|
||||
|
||||
const a = Math.sin(Δφ / 2) ** 2 +
|
||||
Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ / 2) ** 2;
|
||||
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
||||
const distanceMeters = R * c;
|
||||
|
||||
return (distanceMeters / 1000).toFixed(2); // 返回 km,字符串
|
||||
},
|
||||
//点击向上移动
|
||||
handleChangeUp() {
|
||||
|
||||
@ -4,11 +4,12 @@
|
||||
<!-- 服务区的信息 -->
|
||||
<view class="serviceDetail" style="margin-top: 16rpx;">
|
||||
<view class="detailTop">
|
||||
<view class="serviceImg" v-if="topBg && topBg.length > 0">
|
||||
<view class="serviceImg" v-if="info.fileId && info.fileId.length > 0">
|
||||
<swiper scroll-x="true" circular="true" class="banner" indicator-dots="true" indicator-active-color="#272625"
|
||||
autoplay interval="3000" style="width: 100%; height: 100%">
|
||||
<swiper-item v-for="(img, i) in topBg" :key="i" style="width: 100%; height: 100%">
|
||||
<image style="width: 100%; height: 100%" mode="aspectFill" lazy-load="true" :src="img"
|
||||
<swiper-item v-for="(img, i) in info.fileId" :key="i" style="width: 100%; height: 100%">
|
||||
<image style="width: 100%; height: 100%" mode="aspectFill" lazy-load="true"
|
||||
:src="'https://fwqznxj.yciccloud.com:9081/fileDownloadApi/bsys/document/docDownloadAction?fileId=' + img.fileID"
|
||||
@click="handlePreview"></image>
|
||||
</swiper-item>
|
||||
</swiper>
|
||||
@ -19,20 +20,15 @@
|
||||
<view class="detailBottom">
|
||||
<view class="detailFirst">
|
||||
<text class="serviceName">{{
|
||||
info.SERVERPART_NAME || ""
|
||||
info.SAName || ""
|
||||
}}</text>
|
||||
<text class="serviceStatus">营业中</text>
|
||||
</view>
|
||||
<view class="detailSecond">
|
||||
<image class="detailFixedIcon" src="/static/images/home/address.png" />
|
||||
<text class="address">
|
||||
<text class="distance">{{
|
||||
info.SERVERPART_DISTANCE === 0
|
||||
? 0
|
||||
: info.SERVERPART_DISTANCE || "-"
|
||||
}}km</text>
|
||||
<text class="addressText">{{ info.ServerpartInfo.SERVERPART_ADDRESS || "-"
|
||||
}}{{ info.ServerpartInfo.EXPRESSWAY_NAME || "-" }}</text>
|
||||
<text class="distance">{{ info.SERVERPART_DISTANCE || "-" }}km</text>
|
||||
<text class="addressText">{{ info.belongRegion || "-" }}{{ info.belongLine || "-" }}</text>
|
||||
</text>
|
||||
</view>
|
||||
<view class="navigationBox" @click="handleGoMap">
|
||||
@ -42,7 +38,8 @@
|
||||
</view>
|
||||
|
||||
<!-- 主要内容区域 -->
|
||||
<scroll-view scroll-y="true" class="content-scroll" :style="{ height: `calc(100vh - ${(menu.bottom + 14)}px - 560rpx ) ` }">
|
||||
<scroll-view scroll-y="true" class="content-scroll"
|
||||
:style="{ height: `calc(100vh - ${(menu.bottom + 14)}px - 560rpx ) ` }">
|
||||
<view class="content-container">
|
||||
|
||||
<!-- 基本信息卡片 -->
|
||||
@ -52,28 +49,34 @@
|
||||
</view>
|
||||
|
||||
<view class="info-grid">
|
||||
<!-- <view class="info-item">
|
||||
<text class="info-label">服务区编码</text>
|
||||
<text class="info-value">{{ info.SACode || '-' }}</text>
|
||||
</view> -->
|
||||
<view class="info-item">
|
||||
<text class="info-label">取水方式</text>
|
||||
<text class="info-value">{{ getWaterIntakeType(info.ServerpartInfo &&
|
||||
info.ServerpartInfo.WATERINTAKE_TYPE) }}</text>
|
||||
<text class="info-label">所属片区</text>
|
||||
<text class="info-value">{{ info.belongArea || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">污水处理</text>
|
||||
<text class="info-value">{{ getSewageType(info.ServerpartInfo && info.ServerpartInfo.SEWAGEDISPOSAL_TYPE)
|
||||
}}</text>
|
||||
<text class="info-label">所在线路</text>
|
||||
<text class="info-value">{{ info.belongLine || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">所在地区</text>
|
||||
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.SERVERPART_ADDRESS) || '-'
|
||||
}}</text>
|
||||
<text class="info-value">{{ info.belongRegion || '-' }}</text>
|
||||
</view>
|
||||
<!-- <view class="info-item">
|
||||
<text class="info-label">桩号位置</text>
|
||||
<text class="info-value">{{ info.pileNumLocation || '-' }}</text>
|
||||
</view> -->
|
||||
<view class="info-item">
|
||||
<text class="info-label">经营模式</text>
|
||||
<text class="info-value">{{ info.businessModel && info.businessModel.length > 0 ?
|
||||
info.businessModel.toString() : '-' }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">管理单位</text>
|
||||
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.MANAGERCOMPANY) || '-' }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">产权单位</text>
|
||||
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.OWNEDCOMPANY) || '-' }}</text>
|
||||
<text class="info-label">产权归属</text>
|
||||
<text class="info-value">{{ info.propertyOwnership || '-' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -86,31 +89,31 @@
|
||||
|
||||
<view class="area-stats">
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">{{ formatArea(info.ServerpartInfo && info.ServerpartInfo.FLOORAREA) }}</text>
|
||||
<text class="stat-number">{{ formatArea(info.floorArea) }}</text>
|
||||
<text class="stat-label">占地面积</text>
|
||||
<text class="stat-unit">m²</text>
|
||||
</view>
|
||||
<view class="stat-divider"></view>
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">{{ formatArea(info.ServerpartInfo && info.ServerpartInfo.SHAREAREA) }}</text>
|
||||
<text class="stat-number">{{ formatArea(info.parkArea) }}</text>
|
||||
<text class="stat-label">停车场面积</text>
|
||||
<text class="stat-unit">m²</text>
|
||||
</view>
|
||||
<view class="stat-divider"></view>
|
||||
<view class="stat-item">
|
||||
<text class="stat-number">{{ formatArea(info.ServerpartInfo && info.ServerpartInfo.SERVERPART_AREA)
|
||||
}}</text>
|
||||
<text class="stat-label">建筑面积</text>
|
||||
<text class="stat-number">{{ formatArea((info.synthesisCatering || 0) + (info.supermarket || 0) +
|
||||
(info.synthesiOther || 0)) }}</text>
|
||||
<text class="stat-label">综合楼面积</text>
|
||||
<text class="stat-unit">m²</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 服务详情卡片 -->
|
||||
<view class="service-card" v-for="(region, regionIndex) in info.RegionInfo" :key="regionIndex">
|
||||
<view class="service-header">
|
||||
<text class="service-title">🏢 {{ region.SERVERPART_REGIONNAME || '服务区域' }}</text>
|
||||
</view>
|
||||
<view class="service-card">
|
||||
<!-- <view class="service-header">
|
||||
<text class="service-title">🏢 {{ info.SAName || '服务区域' }}</text>
|
||||
</view> -->
|
||||
|
||||
<!-- 服务信息 -->
|
||||
<view class="service-section">
|
||||
@ -121,42 +124,45 @@
|
||||
|
||||
<view class="service-grid">
|
||||
<view class="service-row">
|
||||
<view class="service-item" :class="{ 'available': region.HASPANTRY, 'unavailable': !region.HASPANTRY }">
|
||||
<view class="service-item"
|
||||
:class="{ 'available': info.manToiletNum > 0, 'unavailable': !info.manToiletNum }">
|
||||
<image class="service-icon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/manWc.svg" />
|
||||
<text class="service-name">男厕</text>
|
||||
<text class="service-count" v-if="region.HASPANTRY">({{ region.HASPANTRY }})</text>
|
||||
<text class="service-count" v-if="info.manToiletNum">({{ info.manToiletNum }})</text>
|
||||
</view>
|
||||
<view class="service-item" :class="{ 'available': region.HASWIFI, 'unavailable': !region.HASWIFI }">
|
||||
<view class="service-item"
|
||||
:class="{ 'available': info.womanToiletNum > 0, 'unavailable': !info.womanToiletNum }">
|
||||
<image class="service-icon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/womanWc.svg" />
|
||||
<text class="service-name">女厕</text>
|
||||
<text class="service-count" v-if="region.HASWIFI">({{ region.HASWIFI }})</text>
|
||||
<text class="service-count" v-if="info.womanToiletNum">({{ info.womanToiletNum }})</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service-row">
|
||||
<view class="service-item"
|
||||
:class="{ 'available': region.HASTHIRDTOILETS, 'unavailable': !region.HASTHIRDTOILETS }">
|
||||
:class="{ 'available': info.otherWCNum > 0, 'unavailable': !info.otherWCNum }">
|
||||
<text class="service-name">第三卫生间</text>
|
||||
<text class="service-count" v-if="info.otherWCNum">({{ info.otherWCNum }})</text>
|
||||
</view>
|
||||
<view class="service-item"
|
||||
:class="{ 'available': region.TOILETCOUNT, 'unavailable': !region.TOILETCOUNT }">
|
||||
<text class="service-name">潮汐厕位</text>
|
||||
<text class="service-count" v-if="region.TOILETCOUNT">({{ region.TOILETCOUNT }})</text>
|
||||
:class="{ 'available': info.babyCareRoomNum > 0, 'unavailable': !info.babyCareRoomNum }">
|
||||
<text class="service-name">母婴室</text>
|
||||
<text class="service-count" v-if="info.babyCareRoomNum">({{ info.babyCareRoomNum }})</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service-row">
|
||||
<view class="service-item" :class="{ 'available': info.faucetNum > 0, 'unavailable': !info.faucetNum }">
|
||||
<text class="service-name">水龙头</text>
|
||||
<text class="service-count" v-if="info.faucetNum">({{ info.faucetNum }})</text>
|
||||
</view>
|
||||
<view class="service-item"
|
||||
:class="{ 'available': info.repairStationArea > 0, 'unavailable': !info.repairStationArea }">
|
||||
<text class="service-name">汽修站</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service-row">
|
||||
<view class="service-item"
|
||||
:class="{ 'available': region.HASWATERROOM, 'unavailable': !region.HASWATERROOM }">
|
||||
<text class="service-name">开水器</text>
|
||||
<text class="service-count" v-if="region.HASWATERROOM">({{ region.HASWATERROOM }})</text>
|
||||
</view>
|
||||
<view class="service-item" :class="{ 'available': region.HASCHILD, 'unavailable': !region.HASCHILD }">
|
||||
<text class="service-name">车辆维修</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="service-row">
|
||||
<view class="service-item"
|
||||
:class="{ 'available': region.HASSHOWERROOM, 'unavailable': !region.HASSHOWERROOM }">
|
||||
<text class="service-name">车辆加水</text>
|
||||
:class="{ 'available': info.addWaterArea > 0, 'unavailable': !info.addWaterArea }">
|
||||
<text class="service-name">加水区域</text>
|
||||
</view>
|
||||
<view class="service-item empty-item">
|
||||
<!-- 空白项保持对齐 -->
|
||||
@ -175,22 +181,22 @@
|
||||
<view class="parking-grid">
|
||||
<view class="parking-row">
|
||||
<view class="parking-item">
|
||||
<text class="parking-label">轿车车位</text>
|
||||
<text class="parking-count">{{ region.SMALLPARKING || 0 }}</text>
|
||||
<text class="parking-label">小型车位</text>
|
||||
<text class="parking-count">{{ info.minStallNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="parking-item">
|
||||
<text class="parking-label">客车车位</text>
|
||||
<text class="parking-count">{{ region.PACKING || 0 }}</text>
|
||||
<text class="parking-label">中型车位</text>
|
||||
<text class="parking-count">{{ info.middleStallNum || 0 }}</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="parking-row">
|
||||
<view class="parking-item">
|
||||
<text class="parking-label">货车车位</text>
|
||||
<text class="parking-count">{{ region.TRUCKPACKING || 0 }}</text>
|
||||
<text class="parking-label">大型车位</text>
|
||||
<text class="parking-count">{{ info.maxStallNum || 0 }}</text>
|
||||
</view>
|
||||
<view class="parking-item">
|
||||
<text class="parking-label">危化品车位</text>
|
||||
<text class="parking-count">{{ region.DANPACKING || 0 }}</text>
|
||||
<text class="parking-label">加油车道</text>
|
||||
<text class="parking-count">{{ info.addOilRoadNum || 0 }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@ -206,36 +212,115 @@
|
||||
<view class="business-grid">
|
||||
<view class="business-row">
|
||||
<view class="business-item"
|
||||
:class="{ 'available': region.DININGROOMCOUNT, 'unavailable': !region.DININGROOMCOUNT }">
|
||||
:class="{ 'available': info.synthesisCatering > 0, 'unavailable': !info.synthesisCatering }">
|
||||
<text class="business-name">餐饮服务</text>
|
||||
<text class="business-count" v-if="info.synthesisCatering">({{ formatArea(info.synthesisCatering)
|
||||
}}m²)</text>
|
||||
</view>
|
||||
<view class="business-item"
|
||||
:class="{ 'available': region.HASMESSAGESEARCH, 'unavailable': !region.HASMESSAGESEARCH }">
|
||||
<text class="business-name">住宿服务</text>
|
||||
:class="{ 'available': info.supermarket > 0, 'unavailable': !info.supermarket }">
|
||||
<text class="business-name">超市便利店</text>
|
||||
<text class="business-count" v-if="info.supermarket">({{ formatArea(info.supermarket) }}m²)</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="business-row">
|
||||
<view class="business-item"
|
||||
:class="{ 'available': region.HASBACKGROUNDRADIO, 'unavailable': !region.HASBACKGROUNDRADIO }">
|
||||
<text class="business-name">便利店</text>
|
||||
:class="{ 'available': info.LPGStationsArea > 0, 'unavailable': !info.LPGStationsArea }">
|
||||
<text class="business-name">加气站</text>
|
||||
<text class="business-count" v-if="info.LPGStationsArea">({{ formatArea(info.LPGStationsArea)
|
||||
}}m²)</text>
|
||||
</view>
|
||||
<view class="business-item"
|
||||
:class="{ 'available': region.DININGBXCOUNT, 'unavailable': !region.DININGBXCOUNT }">
|
||||
<text class="business-name">商铺</text>
|
||||
<text class="business-count" v-if="region.DININGBXCOUNT">({{ region.DININGBXCOUNT }})</text>
|
||||
:class="{ 'available': info.chargingStationArea > 0, 'unavailable': !info.chargingStationArea }">
|
||||
<text class="business-name">充电站</text>
|
||||
<text class="business-count" v-if="info.chargingStationArea">({{ formatArea(info.chargingStationArea)
|
||||
}}m²)</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="business-type" v-if="region.BUSINESSTYPE">
|
||||
<view class="business-type" v-if="info.businessModel && info.businessModel.length > 0">
|
||||
<text class=" business-type-label">经营模式:</text>
|
||||
<view class="business-type-tag">
|
||||
<text class="business-type-text">{{ region.BUSINESSTYPE }}</text>
|
||||
<text class="business-type-text">{{ info.businessModel && info.businessModel.length > 0 ?
|
||||
info.businessModel.toString() : '-' }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 设施详情卡片 -->
|
||||
<view class="info-card">
|
||||
<view class="card-header">
|
||||
<text class="card-title">⚡ 设施详情</text>
|
||||
</view>
|
||||
|
||||
<view class="info-grid">
|
||||
<view class="info-item">
|
||||
<text class="info-label">污水处理方量</text>
|
||||
<text class="info-value">{{ info.sewageTreatmentVolume || '-' }}m³</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">变压器功率</text>
|
||||
<text class="info-value">{{ info.transformerVA || '-' }}VA</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">加油枪数量</text>
|
||||
<text class="info-value">{{ info.oilGunNum || 0 }}支</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">充电桩数量</text>
|
||||
<text class="info-value">{{ info.chargingStationPileNum || 0 }}桩</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">充电枪数量</text>
|
||||
<text class="info-value">{{ info.chargingStationGunNum || 0 }}枪</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">直流快充枪</text>
|
||||
<text class="info-value">{{ info.DCFastGunNum || 0 }}枪</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">直流慢充枪</text>
|
||||
<text class="info-value">{{ info.slowGunNum || 0 }}枪</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 区域面积卡片 -->
|
||||
<view class="info-card">
|
||||
<view class="card-header">
|
||||
<text class="card-title">🏗️ 区域面积 <text
|
||||
style="font-size: 24rpx;font-weight: 400;margin-left: 8rpx;">/m²</text></text>
|
||||
</view>
|
||||
|
||||
<view class="info-grid">
|
||||
<view class="info-item">
|
||||
<text class="info-label">行车道面积</text>
|
||||
<text class="info-value">{{ formatArea(info.drivewayArea) }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">办公区面积</text>
|
||||
<text class="info-value">{{ formatArea(info.officeArea) }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">卫生间面积</text>
|
||||
<text class="info-value">{{ formatArea(info.WCArea) }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">绿化面积</text>
|
||||
<text class="info-value">{{ formatArea(info.greenArea) }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">员工住宿区</text>
|
||||
<text class="info-value">{{ formatArea(info.employeeRoomArea) }}</text>
|
||||
</view>
|
||||
<view class="info-item">
|
||||
<text class="info-label">驾驶员休息室</text>
|
||||
<text class="info-value">{{ formatArea(info.driverRoomArea) }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
</view>
|
||||
</scroll-view>
|
||||
@ -288,10 +373,10 @@ export default {
|
||||
// 跳转导航
|
||||
handleGoMap() {
|
||||
uni.openLocation({
|
||||
latitude: this.info.SERVERPART_Y * 1,
|
||||
longitude: this.info.SERVERPART_X * 1,
|
||||
latitude: this.info.latitude * 1,
|
||||
longitude: this.info.longitude * 1,
|
||||
scale: 16,
|
||||
name: this.info.SERVERPART_NAME,
|
||||
name: this.info.SAName,
|
||||
success(data) {
|
||||
console.log(data);
|
||||
},
|
||||
@ -316,10 +401,20 @@ export default {
|
||||
let systemInfo = uni.getSystemInfoSync()
|
||||
this.menu = uni.getMenuButtonBoundingClientRect()
|
||||
let seat = uni.getStorageSync('currentService')
|
||||
this.handleSearch(seat)
|
||||
// this.handleSearch(seat)
|
||||
this.handleGetData(seat)
|
||||
this.topBg = []
|
||||
},
|
||||
|
||||
handleGetData(obj) {
|
||||
// 模拟新数据结构的示例数据
|
||||
let res = {
|
||||
...obj,
|
||||
// fileId: obj.fileId ? JSON.parse(obj.fileId) : [],
|
||||
// businessModel: obj.businessModel ? JSON.parse(obj.businessModel) : [],
|
||||
}
|
||||
console.log('新数据结构示例:', res);
|
||||
this.info = res
|
||||
},
|
||||
// 搜索服务区信息
|
||||
async handleSearch(seat) {
|
||||
let currentService = uni.getStorageSync("currentService");
|
||||
@ -372,23 +467,6 @@ export default {
|
||||
return typeMap[type] || ''
|
||||
},
|
||||
|
||||
// 获取取水方式
|
||||
getWaterIntakeType(type) {
|
||||
const typeMap = {
|
||||
1: '自来水',
|
||||
2: '井水'
|
||||
}
|
||||
return typeMap[type] || '-'
|
||||
},
|
||||
|
||||
// 获取污水处理方式
|
||||
getSewageType(type) {
|
||||
const typeMap = {
|
||||
1: '市政',
|
||||
2: '污水处理设备'
|
||||
}
|
||||
return typeMap[type] || '-'
|
||||
},
|
||||
|
||||
// 格式化面积
|
||||
formatArea(area) {
|
||||
@ -624,7 +702,7 @@ export default {
|
||||
|
||||
.content-scroll {
|
||||
background: @bg;
|
||||
margin-top: 24rpx;
|
||||
// margin-top: 24rpx;
|
||||
}
|
||||
|
||||
.content-container {
|
||||
|
||||
@ -17,9 +17,9 @@
|
||||
<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 ? serviceInfo.SERVERPART_NAME : '' }}</view>
|
||||
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}</p>
|
||||
<text class="noticeText" v-if="serviceInfo.SERVERPART_NAME === '安徽驿达'">选择您要看的服务区</text>
|
||||
<view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName : '' }}</view>
|
||||
<!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}</p> -->
|
||||
<!-- <text class="noticeText" v-if="serviceInfo.SERVERPART_NAME === '安徽驿达'">选择您要看的服务区</text> -->
|
||||
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg">
|
||||
</image>
|
||||
</view>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user