first commit

This commit is contained in:
ylj20011123 2025-08-21 18:29:29 +08:00
parent 41d431011b
commit 4d514a9008
12 changed files with 2797 additions and 1591 deletions

View File

@ -12,11 +12,11 @@
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image> <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select"> <view class="select">
<view class="content"> <view class="content">
<view class="uni-input">{{ serviceInfo.SERVERPART_NAME ? serviceInfo.SERVERPART_NAME : <view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
'请选择服务区' }} '请选择服务区' }}
</view> </view>
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }} <!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
</p> </p> -->
<image class="rightArrow" <image class="rightArrow"
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image> src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view> </view>
@ -262,14 +262,15 @@ export default {
this.menu = uni.getMenuButtonBoundingClientRect() this.menu = uni.getMenuButtonBoundingClientRect()
let currentService = uni.getStorageSync('currentService') let currentService = uni.getStorageSync('currentService')
this.serviceInfo = currentService this.serviceInfo = currentService
this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID) // this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID)
this.handleGetData(currentService.SERVERPART_NAME) this.handleGetData(currentService.SAName)
}, },
async onShow() { async onShow() {
let currentService = uni.getStorageSync('currentService') let currentService = uni.getStorageSync('currentService')
if (currentService.Serverpart_ID !== this.serviceInfo.SERVERPART_ID && !this.isFirst) { if (currentService.SACode !== this.serviceInfo.SACode && !this.isFirst) {
this.handleGetServerpartDetail(currentService.Serverpart_ID) // this.handleGetServerpartDetail(currentService.Serverpart_ID)
this.handleGetData(currentService.SERVERPART_NAME) this.serviceInfo = currentService
this.handleGetData(currentService.SAName)
} }
this.isFirst = false this.isFirst = false
}, },
@ -283,7 +284,7 @@ export default {
retryLoad() { retryLoad() {
if (this.retryCount < 3) { if (this.retryCount < 3) {
this.retryCount++ this.retryCount++
this.handleGetData(this.serviceInfo.SERVERPART_NAME) this.handleGetData(this.serviceInfo.SAName)
} else { } else {
uni.showToast({ uni.showToast({
title: '多次重试失败,请检查网络连接', title: '多次重试失败,请检查网络连接',
@ -391,7 +392,7 @@ export default {
onCalendarConfirm(e) { onCalendarConfirm(e) {
console.log('选择日期:', e) console.log('选择日期:', e)
this.selectDate = e.fulldate 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.selectDate = `${y}-${m}-${d}`;
this.retryCount = 0 // this.retryCount = 0 //
await this.handleGetData(this.serviceInfo.SERVERPART_NAME) await this.handleGetData(this.serviceInfo.SAName)
}, },
} }
} }

View File

@ -339,7 +339,7 @@ export default {
this.showList = [] this.showList = []
const req = { const req = {
bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3", bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3",
saName: this.serviceInfo.SERVERPART_NAME saName: this.serviceInfo.SAName
} }
const data = await new Promise((resolve, reject) => { const data = await new Promise((resolve, reject) => {
uni.request({ uni.request({
@ -368,7 +368,7 @@ export default {
this.showList = [] this.showList = []
const req = { const req = {
bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55", bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55",
saName: this.serviceInfo.SERVERPART_NAME saName: this.serviceInfo.SAName
} }
const data = await new Promise((resolve, reject) => { const data = await new Promise((resolve, reject) => {
uni.request({ uni.request({

View File

@ -11,11 +11,11 @@
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image> <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select"> <view class="select">
<view class="content"> <view class="content">
<view class="uni-input">{{ serviceInfo.SERVERPART_NAME ? serviceInfo.SERVERPART_NAME : <view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
'' }} '' }}
</view> </view>
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }} <!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }} -->
</p> <!-- </p> -->
<image class="rightArrow" <image class="rightArrow"
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image> src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view> </view>
@ -28,14 +28,13 @@
<!-- 服务区的信息 --> <!-- 服务区的信息 -->
<view class="serviceDetail" style="margin-top: 16rpx;"> <view class="serviceDetail" style="margin-top: 16rpx;">
<view class="detailTop"> <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" <swiper scroll-x="true" circular="true" class="banner" indicator-dots="true"
indicator-active-color="#272625" autoplay interval="3000" :current="pageMsg.current" indicator-active-color="#272625" autoplay interval="3000" :current="pageMsg.current"
style="width: 100%; height: 100%"> style="width: 100%; height: 100%">
<swiper-item v-for="(img, i) in serviceInfo.ImageLits" :key="i" <swiper-item v-for="(img, i) in serviceInfo.fileId" :key="i" style="width: 100%; height: 100%">
style="width: 100%; height: 100%">
<image style="width: 100%; height: 100%" mode="aspectFill" lazy-load="true" <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> </image>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -504,12 +503,15 @@ export default {
onLoad() { onLoad() {
this.menu = uni.getMenuButtonBoundingClientRect() this.menu = uni.getMenuButtonBoundingClientRect()
let currentService = uni.getStorageSync('currentService') let currentService = uni.getStorageSync('currentService')
console.log('currentServicecurrentServicecurrentService', currentService);
// currentService // currentService
if (currentService && (currentService.Serverpart_ID || currentService.SERVERPART_ID)) { if (currentService && (currentService.SAName || currentService.SACode)) {
this.handleGetServerpartDetail(currentService.Serverpart_ID || currentService.SERVERPART_ID) this.serviceInfo = {
this.handleGetCurrentServiceAttendanceData(currentService.SERVERPART_NAME) ...currentService,
this.handleGetEventsData(currentService.SERVERPART_NAME) }
this.handleGetCurrentServiceAttendanceData(currentService.SAName)
this.handleGetEventsData(currentService.SAName)
} else { } else {
console.warn('onLoad: currentService 为空或无效') console.warn('onLoad: currentService 为空或无效')
// //
@ -517,24 +519,28 @@ export default {
}, },
onShow() { onShow() {
let currentService = uni.getStorageSync('currentService') let currentService = uni.getStorageSync('currentService')
console.log('currentService', currentService); console.log('onShowonShowonShowonShow', currentService);
// currentService // currentService
if (!currentService || (!currentService.Serverpart_ID && !currentService.SERVERPART_ID)) { if (!currentService || (!currentService.SACode)) {
console.warn('currentService 为空或无效,跳过更新'); console.warn('currentService 为空或无效,跳过更新');
this.isFirst = false; this.isFirst = false;
return; return;
} }
// ID // ID
const currentServiceId = currentService.Serverpart_ID || currentService.SERVERPART_ID; const currentServiceId = currentService.SACode;
const currentServiceName = currentService.SERVERPART_NAME; 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.emergencyListLength = 0
this.dailyListLength = 0 this.dailyListLength = 0
this.handleGetServerpartDetail(currentServiceId); this.serviceInfo = {
...currentService,
}
// this.handleGetServerpartDetail(currentServiceId);
this.handleGetCurrentServiceAttendanceData(currentServiceName); this.handleGetCurrentServiceAttendanceData(currentServiceName);
this.handleGetEventsData(currentServiceName) this.handleGetEventsData(currentServiceName)
} else { } else {
@ -546,7 +552,7 @@ export default {
async handleGetEventsData(saName) { async handleGetEventsData(saName) {
const req = { const req = {
bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3", bsessionKey: "EA65F66FA29B47FD8072A4AFC66967B3",
saName: saName || this.serviceInfo.SERVERPART_NAME saName: saName || this.serviceInfo.SAName
} }
console.log('reqreq', req); console.log('reqreq', req);
@ -568,7 +574,7 @@ export default {
const req2 = { const req2 = {
bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55", bsessionKey: "0DAF3A5982D54A619D4B63A34CA20C55",
saName: saName || this.serviceInfo.SERVERPART_NAME saName: saName || this.serviceInfo.SAName
} }
const data2 = await new Promise((resolve, reject) => { const data2 = await new Promise((resolve, reject) => {
uni.request({ uni.request({
@ -672,7 +678,7 @@ export default {
this.selectDate = `${year}-${month}-${day}`; this.selectDate = `${year}-${month}-${day}`;
console.log('serviceInfo', this.serviceInfo); console.log('serviceInfo', this.serviceInfo);
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SERVERPART_NAME) await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SAName)
}, },
// //
async handleGetServerpartDetail(id) { async handleGetServerpartDetail(id) {
@ -716,7 +722,7 @@ export default {
latitude: obj.latitude ? obj.latitude * 1 : obj.SERVERPART_Y * 1, latitude: obj.latitude ? obj.latitude * 1 : obj.SERVERPART_Y * 1,
longitude: obj.longitude ? obj.longitude * 1 : obj.SERVERPART_X * 1, longitude: obj.longitude ? obj.longitude * 1 : obj.SERVERPART_X * 1,
scale: 16, // scale: 16, //
name: obj.SERVERPART_NAME, name: obj.SAName,
// address: "", // // address: "", //
success(data) { success(data) {
}, },
@ -748,7 +754,7 @@ export default {
// this.selectDate = e.detail.value // this.selectDate = e.detail.value
this.selectDate = e.fulldate this.selectDate = e.fulldate
await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SERVERPART_NAME) await this.handleGetCurrentServiceAttendanceData(this.serviceInfo.SAName)
}, },
// tab // tab
handleChangeTab(e) { handleChangeTab(e) {

View File

@ -10,11 +10,11 @@
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image> <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select"> <view class="select">
<view class="content"> <view class="content">
<view class="uni-input">{{ serviceInfo.SERVERPART_NAME ? serviceInfo.SERVERPART_NAME : <view class="uni-input">{{ serviceInfo.SAName ? serviceInfo.SAName :
'' }} '' }}
</view> </view>
<p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }} <!-- <p class="area">{{ serviceInfo.SPREGIONTYPE_NAME ? serviceInfo.SPREGIONTYPE_NAME : '' }}
</p> </p> -->
<image class="rightArrow" <image class="rightArrow"
src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image> src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view> </view>
@ -175,25 +175,25 @@ export default {
this.serviceInfo = currentService this.serviceInfo = currentService
this.handleGetNewMonthData() this.handleGetNewMonthData()
// //
this.loadRosterData(currentService.SERVERPART_NAME) this.loadRosterData(currentService.SAName)
}, },
onShow() { onShow() {
let currentService = uni.getStorageSync('currentService') let currentService = uni.getStorageSync('currentService')
console.log('currentService', currentService); console.log('currentService', currentService);
// currentService // currentService
if (!currentService || (!currentService.Serverpart_ID && !currentService.SERVERPART_ID)) { if (!currentService || (!currentService.SACode)) {
console.warn('currentService 为空或无效,跳过更新'); console.warn('currentService 为空或无效,跳过更新');
this.isFirst = false; this.isFirst = false;
return; return;
} }
// ID // ID
const currentServiceId = currentService.Serverpart_ID || currentService.SERVERPART_ID; const currentServiceId = currentService.SACode;
const currentServiceName = currentService.SERVERPART_NAME; 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.serviceInfo = currentService
this.rosterData = [] this.rosterData = []
this.userList = [] this.userList = []
@ -213,7 +213,7 @@ export default {
retryLoad() { retryLoad() {
if (this.retryCount < 3) { if (this.retryCount < 3) {
this.retryCount++ this.retryCount++
this.loadRosterData(this.serviceInfo.SERVERPART_NAME) this.loadRosterData(this.serviceInfo.SAName)
} else { } else {
uni.showToast({ uni.showToast({
title: '多次重试失败,请检查网络连接', title: '多次重试失败,请检查网络连接',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,23 +1,24 @@
<template> <template>
<block> <block>
<div class="uni-inline-item ranking-tab-box"> <div class="uni-inline-item ranking-tab-box">
<div class="ranking-tab-unit" @tap="selectTab(1000)" :class="{'active':nowRank==1000}">商超 <div class="ranking-tab-unit" @tap="selectTab(1000)" :class="{ 'active': nowRank == 1000 }">商超
</div> </div>
<div class="ranking-tab-unit" @tap="selectTab(2000)" :class="{'active':nowRank==2000}">餐饮 <div class="ranking-tab-unit" @tap="selectTab(2000)" :class="{ 'active': nowRank == 2000 }">餐饮
</div> </div>
<div class="ranking-tab-unit" @tap="selectTab(3000)" :class="{'active':nowRank==3000}">小吃 <div class="ranking-tab-unit" @tap="selectTab(3000)" :class="{ 'active': nowRank == 3000 }">小吃
</div> </div>
</div> </div>
<div class="ranking-content" v-if="wechatPushSalesList"> <div class="ranking-content" v-if="wechatPushSalesList">
<div class="ranking-list" v-for="(item,index) in wechatPushSalesList[nowRank]" :key="index"> <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="rank-index">{{ item.RANK_ID || item.Rank_ID }}</div>
<div class="ranking-list-unit"> <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"> <div class="ranking-unit-info">
<text>销售金额 </text> <text style="font-size: 24rpx;">销售金额 </text>
<text>¥{{$util.fmoney(item.TOTALPRICE || item.TotalPrice)}}</text> <text style="font-size: 28rpx;font-weight: 600;">¥{{ $util.fmoney(item.TOTALPRICE ||
<text>销售数量 </text> item.TotalPrice) }}</text>
<text>{{item.SELLCOUNT || item.SellCount}}</text> <text style="font-size: 24rpx;">销售数量 </text>
<text style="font-size: 28rpx;font-weight: 600;">{{ item.SELLCOUNT || item.SellCount }}</text>
</div> </div>
</div> </div>
</div> </div>
@ -26,28 +27,28 @@
</template> </template>
<script> <script>
export default { export default {
props: ['wechatPushSalesList'], props: ['wechatPushSalesList'],
data: () => { data: () => {
return { return {
nowRank: 1000 nowRank: 1000
} }
}, },
methods:{ methods: {
selectTab(index){ selectTab(index) {
this.nowRank=index this.nowRank = index
} }
}, },
onLoad() { onLoad() {
} }
} }
</script> </script>
<style> <style>
/*排行*/ /*排行*/
.ranking-tab-box { .ranking-tab-box {
margin: 20rpx 32rpx; margin: 20rpx 32rpx;
border: 2rpx solid #565656; border: 2rpx solid #565656;
border-radius: 8rpx; border-radius: 8rpx;
@ -55,37 +56,37 @@
align-items: center; align-items: center;
text-align: center; text-align: center;
} }
.ranking-tab-box .ranking-tab-unit { .ranking-tab-box .ranking-tab-unit {
color: #565656; color: #565656;
flex: 1; flex: 1;
height: 64rpx; height: 64rpx;
line-height: 60rpx; line-height: 60rpx;
} }
.ranking-tab-box .ranking-tab-unit.active { .ranking-tab-box .ranking-tab-unit.active {
background-color: #565656; background-color: #565656;
color: #fff color: #fff
} }
.ranking-tab-box .ranking-tab-unit+.ranking-tab-unit { .ranking-tab-box .ranking-tab-unit+.ranking-tab-unit {
border-left: 2rpx solid #565656; border-left: 2rpx solid #565656;
} }
.ranking-content { .ranking-content {
/* display: none; */ /* display: none; */
min-height: 160rpx; min-height: 160rpx;
} }
.ranking-content .ranking-list { .ranking-content .ranking-list {
display: flex; display: flex;
align-items: center; align-items: center;
color: #000; color: #000;
padding: 24rpx 32rpx; padding: 24rpx 32rpx;
} }
.ranking-content .rank-index { .ranking-content .rank-index {
width: 72rpx; width: 72rpx;
height: 72rpx; height: 72rpx;
text-align: center; text-align: center;
@ -93,53 +94,53 @@
font-size: 30rpx; font-size: 30rpx;
font-weight: bolder; font-weight: bolder;
margin-right: 32rpx; margin-right: 32rpx;
} }
.ranking-content .ranking-list:nth-child(1) .rank-index { .ranking-content .ranking-list:nth-child(1) .rank-index {
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top1.png') no-repeat center; background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top1.png') no-repeat center;
background-size: contain; background-size: contain;
font-size: 0; font-size: 0;
} }
.ranking-content .ranking-list:nth-child(2) .rank-index { .ranking-content .ranking-list:nth-child(2) .rank-index {
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top2.png') no-repeat center; background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top2.png') no-repeat center;
background-size: contain; background-size: contain;
font-size: 0; font-size: 0;
} }
.ranking-content .ranking-list:nth-child(3) .rank-index { .ranking-content .ranking-list:nth-child(3) .rank-index {
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top3.png') no-repeat center; background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/top3.png') no-repeat center;
background-size: contain; background-size: contain;
font-size: 0; font-size: 0;
} }
.ranking-content .ranking-list-unit { .ranking-content .ranking-list-unit {
font-size: 28rpx; font-size: 24rpx;
flex: 1; flex: 1;
} }
.ranking-content .ranking-unit-info { .ranking-content .ranking-unit-info {
/* margin-top: 16rpx; */ /* margin-top: 16rpx; */
display: flex; display: flex;
align-items: center; align-items: center;
/* font-size: .13rem; */ /* font-size: .13rem; */
} }
.ranking-content .ranking-unit-info text { .ranking-content .ranking-unit-info text {
flex: 2; flex: 2;
color: #929292; color: #929292;
} }
.ranking-content .ranking-unit-info text:nth-child(2) { .ranking-content .ranking-unit-info text:nth-child(2) {
flex: 3; flex: 3;
} }
.ranking-content .ranking-unit-info text:nth-child(2n) { .ranking-content .ranking-unit-info text:nth-child(2n) {
color: #000 color: #000
} }
.ranking-ico { .ranking-ico {
width: 72rpx; width: 72rpx;
height: 72rpx; height: 72rpx;
} }
</style> </style>

View File

@ -407,7 +407,7 @@ export default {
color: #bed4f4; color: #bed4f4;
/* color: #FAD5D2; */ /* color: #FAD5D2; */
font-size: 30rpx; font-size: 28rpx;
} }
.head-cost-text .date-tag { .head-cost-text .date-tag {
@ -549,7 +549,7 @@ export default {
.revenue-card-cont { .revenue-card-cont {
border-radius: 12rpx; border-radius: 12rpx;
margin: 38rpx 20rpx 0 20rpx; margin: 38rpx 32rpx 0 32rpx;
overflow: hidden; overflow: hidden;
box-shadow: 1rpx 2rpx 8rpx 0px rgba(224, 224, 224, 0.4); box-shadow: 1rpx 2rpx 8rpx 0px rgba(224, 224, 224, 0.4);
background: linear-gradient(to top, #ffffff 0%, #ffffff 51%, #e5e9fc 100%); background: linear-gradient(to top, #ffffff 0%, #ffffff 51%, #e5e9fc 100%);
@ -559,7 +559,7 @@ export default {
.revenue-card-title { .revenue-card-title {
font-weight: 500; font-weight: 500;
text-align: left; text-align: left;
font-size: 30rpx; font-size: 28rpx;
} }
.center-amount, .center-amount,

View File

@ -356,6 +356,7 @@ export default {
latitude: res.latitude, latitude: res.latitude,
longitude: res.longitude, longitude: res.longitude,
}; };
uni.setStorageSync("seatInfo", JSON.stringify(seatInfo)); uni.setStorageSync("seatInfo", JSON.stringify(seatInfo));
_this.handleGetNearService(seatInfo.latitude, seatInfo.longitude) _this.handleGetNearService(seatInfo.latitude, seatInfo.longitude)
}, },
@ -410,6 +411,23 @@ export default {
_this.monthDataCache = {}; _this.monthDataCache = {};
_this.loadingMap = {}; _this.loadingMap = {};
_this.handleGetOnLoad(); _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(); uni.stopPullDownRefresh();
}, },
@ -799,20 +817,88 @@ export default {
}, },
// //
async handleGetNearService(latitude, longitude) { async handleGetNearService(latitude, longitude) {
let req = { // let req = {
Province_Code: "530000", // Province_Code: "530000",
longitude: latitude, // longitude: latitude,
latitude: longitude, // latitude: longitude,
ShowService: true, // ShowService: true,
PageIndex: 1, // PageIndex: 1,
PageSize: 1 // PageSize: 1
} // }
const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req) // const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req)
console.log('sdjkajdas', data); // console.log('sdjkajdas', data);
let list = data.Result_Data.List // let list = data.Result_Data.List
uni.setStorageSync('currentService', list[0]); // //
}, // // 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 // uniapp
getCurrentMonthText(index) { getCurrentMonthText(index) {
if (this.selectIndex === index && this.monthList[index]) { if (this.selectIndex === index && this.monthList[index]) {

View File

@ -28,8 +28,9 @@
@click="handleGoDetail(item.SERVERPART_ID, item)"> @click="handleGoDetail(item.SERVERPART_ID, item)">
<div class="topItem"> <div class="topItem">
<view class="leftItem"> <view class="leftItem">
<p class="title">{{ item.SERVERPART_NAME }}</p> <!-- <p class="title">{{ item.SERVERPART_NAME }}</p> -->
<view class="typeBox">{{ serviceTypeObj[item.SERVERPART_TYPE] }}</view> <p class="title">{{ item.SAName }}</p>
<!-- <view class="typeBox">{{ serviceTypeObj[item.SERVERPART_TYPE] }}</view> -->
</view> </view>
<div class="box"> <div class="box">
<div class="imgBox"> <div class="imgBox">
@ -43,7 +44,7 @@
<p class="distance">距您 <text class="number">{{ item.SERVERPART_DISTANCE }}</text> km</p> <p class="distance">距您 <text class="number">{{ item.SERVERPART_DISTANCE }}</text> km</p>
<div class="info"> <div class="info">
<image class="infoIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/address.svg"></image> <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>
<div class="info" v-if="item.STARTDATE"> <div class="info" v-if="item.STARTDATE">
<image class="infoIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/time.svg"></image> <image class="infoIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/time.svg"></image>
@ -96,7 +97,8 @@ export default {
type: '',// type: '',//
serviceTypeObj: {}, serviceTypeObj: {},
serviceMessage: {},// serviceMessage: {},//
seatInfo: {} seatInfo: {},
allServiceList: []
} }
}, },
onLoad(option) { onLoad(option) {
@ -204,10 +206,10 @@ export default {
handleGomap(item) { handleGomap(item) {
let obj = item; let obj = item;
uni.openLocation({ uni.openLocation({
latitude: obj.latitude ? obj.latitude * 1 : obj.SERVERPART_Y * 1, latitude: obj.latitude * 1,
longitude: obj.longitude ? obj.longitude * 1 : obj.SERVERPART_X * 1, longitude: obj.longitude * 1,
scale: 16, // scale: 16, //
name: obj.SERVERPART_NAME, name: obj.SAName,
// address: "", // // address: "", //
success(data) { success(data) {
}, },
@ -313,34 +315,47 @@ export default {
}, },
// //
async handleSearch() { async handleSearch() {
let req = { if (this.searchText) {
longitude: this.longitude, let res = []
Province_Code: '530000', if (this.allServiceList && this.allServiceList.length > 0) {
latitude: this.latitude,
Serverpart_Name: this.searchText 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) { handleGoDetail(id, item) {
let res = { let res = {
SERVERPART_NAME: item.SERVERPART_NAME,// ...item,
SPREGIONTYPE_NAME: item.SPREGIONTYPE_NAME,// // SERVERPART_NAME: item.SAName,//
Serverpart_ID: item.SERVERPART_ID, // SPREGIONTYPE_NAME: item.belongArea,//
SPRegionType_ID: item.SPREGIONTYPE_ID, // Serverpart_ID: "",
longitude: item.SERVERPART_X, // SPRegionType_ID: "",
latitude: item.SERVERPART_Y, // longitude: item.longitude,
// latitude: item.latitude,
} }
uni.setStorageSync('currentService', res) // uni.setStorageSync('currentService', res)
let pageList = getCurrentPages() let pageList = getCurrentPages()
if (this.type === 'index') { if (this.type === 'index') {
this.$util.toNextRoute('navigateTo', `/pages/summaryOfPortraits/index?index=0`) 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') { } else if (this.type === 'attendanceStatus') {
uni.navigateBack({ uni.navigateBack({
delta: 1 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() { async getListData() {
let user = uni.getStorageSync('seatInfo')
let req = { let req = {
Province_Code: '530000', bsessionKey: "46BC6D5E069411B39C215C8A3B474B31",
Serverpart_ID: '', pageNum: 1,
longitude: this.seatInfo.longitude, pageSize: 500
latitude: this.seatInfo.latitude
} }
console.log('req', req) const data = await new Promise((resolve, reject) => {
// const data = await request.$webGet('CommercialApi/BaseInfo/GetServerpartList', req) uni.request({
const data = await request.$webJavaGet('third-party/getServerPartList', req) url: "https://fwqznxj.yciccloud.com:9081/ynjt/pushManage/getSaMsgAll",
console.log('datadatadatadata', data); 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() { handleChangeUp() {

View File

@ -4,11 +4,12 @@
<!-- 服务区的信息 --> <!-- 服务区的信息 -->
<view class="serviceDetail" style="margin-top: 16rpx;"> <view class="serviceDetail" style="margin-top: 16rpx;">
<view class="detailTop"> <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" <swiper scroll-x="true" circular="true" class="banner" indicator-dots="true" indicator-active-color="#272625"
autoplay interval="3000" style="width: 100%; height: 100%"> autoplay interval="3000" style="width: 100%; height: 100%">
<swiper-item v-for="(img, i) in topBg" :key="i" style="width: 100%; height: 100%"> <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="img" <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> @click="handlePreview"></image>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -19,20 +20,15 @@
<view class="detailBottom"> <view class="detailBottom">
<view class="detailFirst"> <view class="detailFirst">
<text class="serviceName">{{ <text class="serviceName">{{
info.SERVERPART_NAME || "" info.SAName || ""
}}</text> }}</text>
<text class="serviceStatus">营业中</text> <text class="serviceStatus">营业中</text>
</view> </view>
<view class="detailSecond"> <view class="detailSecond">
<image class="detailFixedIcon" src="/static/images/home/address.png" /> <image class="detailFixedIcon" src="/static/images/home/address.png" />
<text class="address"> <text class="address">
<text class="distance">{{ <text class="distance">{{ info.SERVERPART_DISTANCE || "-" }}km</text>
info.SERVERPART_DISTANCE === 0 <text class="addressText">{{ info.belongRegion || "-" }}{{ info.belongLine || "-" }}</text>
? 0
: info.SERVERPART_DISTANCE || "-"
}}km</text>
<text class="addressText">{{ info.ServerpartInfo.SERVERPART_ADDRESS || "-"
}}{{ info.ServerpartInfo.EXPRESSWAY_NAME || "-" }}</text>
</text> </text>
</view> </view>
<view class="navigationBox" @click="handleGoMap"> <view class="navigationBox" @click="handleGoMap">
@ -42,7 +38,8 @@
</view> </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"> <view class="content-container">
<!-- 基本信息卡片 --> <!-- 基本信息卡片 -->
@ -52,28 +49,34 @@
</view> </view>
<view class="info-grid"> <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"> <view class="info-item">
<text class="info-label">取水方式</text> <text class="info-label">所属片区</text>
<text class="info-value">{{ getWaterIntakeType(info.ServerpartInfo && <text class="info-value">{{ info.belongArea || '-' }}</text>
info.ServerpartInfo.WATERINTAKE_TYPE) }}</text>
</view> </view>
<view class="info-item"> <view class="info-item">
<text class="info-label">污水处理</text> <text class="info-label">所在线路</text>
<text class="info-value">{{ getSewageType(info.ServerpartInfo && info.ServerpartInfo.SEWAGEDISPOSAL_TYPE) <text class="info-value">{{ info.belongLine || '-' }}</text>
}}</text>
</view> </view>
<view class="info-item"> <view class="info-item">
<text class="info-label">所在地区</text> <text class="info-label">所在地区</text>
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.SERVERPART_ADDRESS) || '-' <text class="info-value">{{ info.belongRegion || '-' }}</text>
}}</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>
<view class="info-item"> <view class="info-item">
<text class="info-label">管理单位</text> <text class="info-label">产权归属</text>
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.MANAGERCOMPANY) || '-' }}</text> <text class="info-value">{{ info.propertyOwnership || '-' }}</text>
</view>
<view class="info-item">
<text class="info-label">产权单位</text>
<text class="info-value">{{ (info.ServerpartInfo && info.ServerpartInfo.OWNEDCOMPANY) || '-' }}</text>
</view> </view>
</view> </view>
</view> </view>
@ -86,31 +89,31 @@
<view class="area-stats"> <view class="area-stats">
<view class="stat-item"> <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-label">占地面积</text>
<text class="stat-unit"></text> <text class="stat-unit"></text>
</view> </view>
<view class="stat-divider"></view> <view class="stat-divider"></view>
<view class="stat-item"> <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-label">停车场面积</text>
<text class="stat-unit"></text> <text class="stat-unit"></text>
</view> </view>
<view class="stat-divider"></view> <view class="stat-divider"></view>
<view class="stat-item"> <view class="stat-item">
<text class="stat-number">{{ formatArea(info.ServerpartInfo && info.ServerpartInfo.SERVERPART_AREA) <text class="stat-number">{{ formatArea((info.synthesisCatering || 0) + (info.supermarket || 0) +
}}</text> (info.synthesiOther || 0)) }}</text>
<text class="stat-label">建筑面积</text> <text class="stat-label">综合楼面积</text>
<text class="stat-unit"></text> <text class="stat-unit"></text>
</view> </view>
</view> </view>
</view> </view>
<!-- 服务详情卡片 --> <!-- 服务详情卡片 -->
<view class="service-card" v-for="(region, regionIndex) in info.RegionInfo" :key="regionIndex"> <view class="service-card">
<view class="service-header"> <!-- <view class="service-header">
<text class="service-title">🏢 {{ region.SERVERPART_REGIONNAME || '服务区域' }}</text> <text class="service-title">🏢 {{ info.SAName || '服务区域' }}</text>
</view> </view> -->
<!-- 服务信息 --> <!-- 服务信息 -->
<view class="service-section"> <view class="service-section">
@ -121,42 +124,45 @@
<view class="service-grid"> <view class="service-grid">
<view class="service-row"> <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" /> <image class="service-icon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/manWc.svg" />
<text class="service-name">男厕</text> <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>
<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" /> <image class="service-icon" src="https://eshangtech.com/ShopICO/ahyd-BID/service/womanWc.svg" />
<text class="service-name">女厕</text> <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> </view>
<view class="service-row"> <view class="service-row">
<view class="service-item" <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-name">第三卫生间</text>
<text class="service-count" v-if="info.otherWCNum">({{ info.otherWCNum }})</text>
</view> </view>
<view class="service-item" <view class="service-item"
:class="{ 'available': region.TOILETCOUNT, 'unavailable': !region.TOILETCOUNT }"> :class="{ 'available': info.babyCareRoomNum > 0, 'unavailable': !info.babyCareRoomNum }">
<text class="service-name">潮汐厕位</text> <text class="service-name">母婴室</text>
<text class="service-count" v-if="region.TOILETCOUNT">({{ region.TOILETCOUNT }})</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> </view>
<view class="service-row"> <view class="service-row">
<view class="service-item" <view class="service-item"
:class="{ 'available': region.HASWATERROOM, 'unavailable': !region.HASWATERROOM }"> :class="{ 'available': info.addWaterArea > 0, 'unavailable': !info.addWaterArea }">
<text class="service-name">开水器</text> <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>
</view> </view>
<view class="service-item empty-item"> <view class="service-item empty-item">
<!-- 空白项保持对齐 --> <!-- 空白项保持对齐 -->
@ -175,22 +181,22 @@
<view class="parking-grid"> <view class="parking-grid">
<view class="parking-row"> <view class="parking-row">
<view class="parking-item"> <view class="parking-item">
<text class="parking-label">轿车车位</text> <text class="parking-label">小型车位</text>
<text class="parking-count">{{ region.SMALLPARKING || 0 }}</text> <text class="parking-count">{{ info.minStallNum || 0 }}</text>
</view> </view>
<view class="parking-item"> <view class="parking-item">
<text class="parking-label">客车车位</text> <text class="parking-label">中型车位</text>
<text class="parking-count">{{ region.PACKING || 0 }}</text> <text class="parking-count">{{ info.middleStallNum || 0 }}</text>
</view> </view>
</view> </view>
<view class="parking-row"> <view class="parking-row">
<view class="parking-item"> <view class="parking-item">
<text class="parking-label">货车车位</text> <text class="parking-label">大型车位</text>
<text class="parking-count">{{ region.TRUCKPACKING || 0 }}</text> <text class="parking-count">{{ info.maxStallNum || 0 }}</text>
</view> </view>
<view class="parking-item"> <view class="parking-item">
<text class="parking-label">危化品车位</text> <text class="parking-label">加油车道</text>
<text class="parking-count">{{ region.DANPACKING || 0 }}</text> <text class="parking-count">{{ info.addOilRoadNum || 0 }}</text>
</view> </view>
</view> </view>
</view> </view>
@ -206,36 +212,115 @@
<view class="business-grid"> <view class="business-grid">
<view class="business-row"> <view class="business-row">
<view class="business-item" <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-name">餐饮服务</text>
<text class="business-count" v-if="info.synthesisCatering">({{ formatArea(info.synthesisCatering)
}})</text>
</view> </view>
<view class="business-item" <view class="business-item"
:class="{ 'available': region.HASMESSAGESEARCH, 'unavailable': !region.HASMESSAGESEARCH }"> :class="{ 'available': info.supermarket > 0, 'unavailable': !info.supermarket }">
<text class="business-name">住宿服务</text> <text class="business-name">超市便利店</text>
<text class="business-count" v-if="info.supermarket">({{ formatArea(info.supermarket) }}m²)</text>
</view> </view>
</view> </view>
<view class="business-row"> <view class="business-row">
<view class="business-item" <view class="business-item"
:class="{ 'available': region.HASBACKGROUNDRADIO, 'unavailable': !region.HASBACKGROUNDRADIO }"> :class="{ 'available': info.LPGStationsArea > 0, 'unavailable': !info.LPGStationsArea }">
<text class="business-name">便利店</text> <text class="business-name">加气站</text>
<text class="business-count" v-if="info.LPGStationsArea">({{ formatArea(info.LPGStationsArea)
}})</text>
</view> </view>
<view class="business-item" <view class="business-item"
:class="{ 'available': region.DININGBXCOUNT, 'unavailable': !region.DININGBXCOUNT }"> :class="{ 'available': info.chargingStationArea > 0, 'unavailable': !info.chargingStationArea }">
<text class="business-name">商铺</text> <text class="business-name">充电站</text>
<text class="business-count" v-if="region.DININGBXCOUNT">({{ region.DININGBXCOUNT }})</text> <text class="business-count" v-if="info.chargingStationArea">({{ formatArea(info.chargingStationArea)
}})</text>
</view> </view>
</view> </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> <text class=" business-type-label">经营模式</text>
<view class="business-type-tag"> <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> </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 || '-' }}</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> </view>
</scroll-view> </scroll-view>
@ -288,10 +373,10 @@ export default {
// //
handleGoMap() { handleGoMap() {
uni.openLocation({ uni.openLocation({
latitude: this.info.SERVERPART_Y * 1, latitude: this.info.latitude * 1,
longitude: this.info.SERVERPART_X * 1, longitude: this.info.longitude * 1,
scale: 16, scale: 16,
name: this.info.SERVERPART_NAME, name: this.info.SAName,
success(data) { success(data) {
console.log(data); console.log(data);
}, },
@ -316,10 +401,20 @@ export default {
let systemInfo = uni.getSystemInfoSync() let systemInfo = uni.getSystemInfoSync()
this.menu = uni.getMenuButtonBoundingClientRect() this.menu = uni.getMenuButtonBoundingClientRect()
let seat = uni.getStorageSync('currentService') let seat = uni.getStorageSync('currentService')
this.handleSearch(seat) // this.handleSearch(seat)
this.handleGetData(seat)
this.topBg = [] 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) { async handleSearch(seat) {
let currentService = uni.getStorageSync("currentService"); let currentService = uni.getStorageSync("currentService");
@ -372,23 +467,6 @@ export default {
return typeMap[type] || '' return typeMap[type] || ''
}, },
//
getWaterIntakeType(type) {
const typeMap = {
1: '自来水',
2: '井水'
}
return typeMap[type] || '-'
},
//
getSewageType(type) {
const typeMap = {
1: '市政',
2: '污水处理设备'
}
return typeMap[type] || '-'
},
// //
formatArea(area) { formatArea(area) {
@ -624,7 +702,7 @@ export default {
.content-scroll { .content-scroll {
background: @bg; background: @bg;
margin-top: 24rpx; // margin-top: 24rpx;
} }
.content-container { .content-container {

View File

@ -17,9 +17,9 @@
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image> <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select"> <view class="select">
<view class="content"> <view class="content">
<view class="uni-input">{{ serviceInfo.SERVERPART_NAME ? serviceInfo.SERVERPART_NAME : '' }}</view> <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> -->
<text class="noticeText" v-if="serviceInfo.SERVERPART_NAME === '安徽驿达'">选择您要看的服务区</text> <!-- <text class="noticeText" v-if="serviceInfo.SERVERPART_NAME === '安徽驿达'">选择您要看的服务区</text> -->
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"> <image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg">
</image> </image>
</view> </view>