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>
|
<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)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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({
|
||||||
|
|||||||
@ -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) {
|
||||||
|
|||||||
@ -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
@ -1,11 +1,11 @@
|
|||||||
<template>
|
<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">
|
scroll-with-animation v-if="showPage">
|
||||||
<div class="box-card" :style="'opacity:' + (1 - opacity) + ';'">
|
<div class="box-card" :style="'opacity:' + (1 - opacity) + ';'">
|
||||||
<div class="box-top-title">
|
<div class="box-top-title">
|
||||||
<span class="box-center-title">{{ sMsg.serverpartname }}</span>
|
<span class="box-center-title">{{ sMsg.serverpartname }}</span>
|
||||||
<picker mode="date" @change="bindDateChange" :value="theRequest&&theRequest.time" :start="startTime" :end="endTime"
|
<picker mode="date" @change="bindDateChange" :value="theRequest && theRequest.time" :start="startTime"
|
||||||
class="title-clock">
|
:end="endTime" class="title-clock">
|
||||||
<view>{{ searchDate }} <text class="uni-icon uni-icon-arrowdown"></text></view>
|
<view>{{ searchDate }} <text class="uni-icon uni-icon-arrowdown"></text></view>
|
||||||
</picker>
|
</picker>
|
||||||
|
|
||||||
@ -17,9 +17,11 @@
|
|||||||
<div class="tab-unit" @tap="showPop">
|
<div class="tab-unit" @tap="showPop">
|
||||||
<span>上传门店:</span>
|
<span>上传门店:</span>
|
||||||
<span class="tab-unit-num"
|
<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 "
|
<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>
|
</div>
|
||||||
<div class="uni-flex ai-base jc-between">
|
<div class="uni-flex ai-base jc-between">
|
||||||
@ -72,7 +74,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</view>
|
</view>
|
||||||
</div>
|
</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>{{ sMsg.serverpartname || '' }}</cover-view>
|
||||||
<cover-view class="price-text" style="width: 200rpx;text-align: right;">¥ {{ sMsg.totalMoneyShow }}
|
<cover-view class="price-text" style="width: 200rpx;text-align: right;">¥ {{ sMsg.totalMoneyShow }}
|
||||||
</cover-view>
|
</cover-view>
|
||||||
@ -112,14 +115,21 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="uni-flex jc-between">
|
<div class="uni-flex jc-between">
|
||||||
<div style="color: #667ED5;">{{ operationModel[0].name }}: <span
|
<div style="color: #667ED5;">{{ operationModel[0].name }}: <span
|
||||||
style="font-size: 32rpx;">{{operationModel[0].bili}}</span>%</div>
|
style="font-size: 32rpx;">{{
|
||||||
<div style="color: #F3AF50;" v-if="operationModel[1].name">{{operationModel[1].name}}: <span
|
operationModel[0].bili }}</span>%</div>
|
||||||
style="font-size: 32rpx;">{{operationModel[1].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>
|
||||||
<div class="uni-flex jc-between">
|
<div class="uni-flex jc-between">
|
||||||
<div><span style="font-size: 32rpx;">{{operationModel[0].data}}</span>元</div>
|
<div style="margin-bottom: 0;"><span style="font-size: 32rpx;">{{ operationModel[0].data
|
||||||
<div v-if="operationModel[1].data"><span
|
}}</span>元
|
||||||
style="font-size: 32rpx;">{{operationModel[1].data}}</span>元</div>
|
</div>
|
||||||
|
<div style="margin-bottom: 0;" v-if="operationModel[1].data"><span
|
||||||
|
style="font-size: 32rpx;">{{
|
||||||
|
operationModel[1].data
|
||||||
|
}}</span>元
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -130,7 +140,8 @@
|
|||||||
:class="{ 'active': nowShop == i }" @click="selectCate(i)">{{ n.Bussiness_Name }}</div>
|
:class="{ 'active': nowShop == i }" @click="selectCate(i)">{{ n.Bussiness_Name }}</div>
|
||||||
</scroll-view>
|
</scroll-view>
|
||||||
<div class="tab-content" v-if="cateBrandList.length">
|
<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>
|
<div>
|
||||||
<image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image>
|
<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>
|
<image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image>
|
||||||
@ -697,16 +708,17 @@
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped>
|
<style lang="scss" scoped>
|
||||||
.page-body {
|
.page-body {
|
||||||
background-color: #fff;
|
background-color: #f8f9fa;
|
||||||
padding-bottom: 20rpx;
|
padding: 0 32rpx 32rpx;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
-webkit-overflow-scrolling: touch;
|
-webkit-overflow-scrolling: touch;
|
||||||
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mt8 {
|
.mt8 {
|
||||||
margin-top: 16rpx;
|
margin-top: 20rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
cover-view.page-title {
|
cover-view.page-title {
|
||||||
@ -730,16 +742,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.fixed-box {
|
.fixed-box {
|
||||||
background-color: #686D8F;
|
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||||
/* background: linear-gradient(to right, #686D8F, #A1ACC6); */
|
transition: all .3s ease;
|
||||||
transition: all .2s;
|
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 32rpx;
|
||||||
width: 100%;
|
width: calc(100% - 64rpx);
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
color: #fff;
|
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 {
|
.shop-box {
|
||||||
margin: 32rpx 20rpx;
|
margin: 24rpx 0;
|
||||||
border-radius: 8rpx;
|
border-radius: 16rpx;
|
||||||
background-color: #F6F8FA;
|
background-color: #fff;
|
||||||
padding: 36rpx 20rpx;
|
padding: 32rpx 24rpx;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||||
|
border: 1rpx solid #f0f0f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-shop {
|
.tab-shop {
|
||||||
@ -802,130 +817,187 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.pie-content {
|
.pie-content {
|
||||||
margin: 0 30rpx;
|
margin: 24rpx 0 32rpx;
|
||||||
border-radius: 12rpx;
|
border-radius: 16rpx;
|
||||||
box-shadow: 0 2rpx 10rpx 0 rgba(230, 230, 230, 0.49);
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
position: relative;
|
position: relative;
|
||||||
margin-bottom: 48rpx;
|
padding: 32rpx 24rpx;
|
||||||
padding-top: 32rpx;
|
border: 1rpx solid #f0f0f0;
|
||||||
padding-bottom: 30rpx;
|
overflow: hidden;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 4rpx;
|
||||||
|
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.pie-title {
|
.pie-title {
|
||||||
padding: 0 20rpx;
|
padding: 0;
|
||||||
line-height: 80rpx;
|
line-height: 1.5;
|
||||||
font-size: 26rpx;
|
font-size: 32rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 24rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 门店卡片 */
|
/* 门店卡片 */
|
||||||
.shop-card {
|
.shop-card {
|
||||||
width: 210rpx;
|
width: 210rpx;
|
||||||
height: 227rpx;
|
height: 240rpx;
|
||||||
border-radius: 8rpx;
|
border-radius: 16rpx;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
padding-top: 20rpx;
|
padding: 24rpx 16rpx;
|
||||||
box-sizing: border-box;
|
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) {
|
.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: linear-gradient(135deg, #ff6b6b, #ee5a52);
|
||||||
background-size: contain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card:nth-child(6n-4) {
|
.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;
|
margin-left: 18rpx;
|
||||||
background-size: contain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card:nth-child(6n-3) {
|
.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;
|
margin-left: 18rpx;
|
||||||
background-size: contain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card:nth-child(6n-2) {
|
.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: linear-gradient(135deg, #74b9ff, #0984e3);
|
||||||
background-size: contain;
|
|
||||||
margin-left: 0rpx;
|
margin-left: 0rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card:nth-child(6n-1) {
|
.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;
|
margin-left: 18rpx;
|
||||||
background-size: contain;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card:nth-child(6n) {
|
.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);
|
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||||
margin-left: 18rpx;
|
|
||||||
background-size: contain;
|
|
||||||
margin-left: 18rpx;
|
margin-left: 18rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card .shop-name {
|
.shop-card .shop-name {
|
||||||
font-size: 24rpx;
|
font-size: 26rpx;
|
||||||
text-shadow: 0 2rpx 2rpx #A9a5a0;
|
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
|
||||||
line-height: 1.4;
|
line-height: 1.4;
|
||||||
max-height: 62rpx;
|
max-height: 64rpx;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
font-weight: 500;
|
||||||
|
margin: 12rpx 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card image {
|
.shop-card image {
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
border: 2rpx solid #fff;
|
border: 3rpx solid rgba(255, 255, 255, 0.9);
|
||||||
background-color: #FFFFFF;
|
background-color: #FFFFFF;
|
||||||
width: 62rpx;
|
width: 64rpx;
|
||||||
height: 62rpx;
|
height: 64rpx;
|
||||||
|
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.shop-card .price-num {
|
.shop-card .price-num {
|
||||||
|
font-size: 36rpx;
|
||||||
font-size: 38rpx;
|
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||||
font-family: Bahnschrift Regular;
|
font-weight: 700;
|
||||||
|
text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
|
||||||
|
margin-top: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-card {
|
.box-card {
|
||||||
padding: 24upx 24upx 0;
|
padding: 32rpx 24rpx 0;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
transition: all .2s;
|
transition: all .3s ease;
|
||||||
background: url('https://eshangtech.com/ShopICO/ahyd-BID/effective/bg-top.png') no-repeat center;
|
margin: 0 0 24rpx;
|
||||||
background-size: contain;
|
border-radius: 16rpx;
|
||||||
background-repeat: no-repeat;
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||||
background-position: top center;
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 8rpx;
|
||||||
|
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.top-card {
|
.top-card {
|
||||||
background: linear-gradient(to top, #989fb9, #686d8f);
|
background: linear-gradient(135deg, #27B25F 0%, #4CCC7F 100%);
|
||||||
margin-top: 24upx;
|
margin-top: 32rpx;
|
||||||
padding: 32upx 0 32rpx 0;
|
padding: 40rpx 0;
|
||||||
border-radius: 8rpx;
|
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 {
|
.budgetamount {
|
||||||
margin-left: 14rpx;
|
margin-left: 16rpx;
|
||||||
color: #fff;
|
color: rgba(255, 255, 255, 0.9);
|
||||||
font-family: 'Bahnschrift Regular';
|
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||||
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
.budget-title {
|
.budget-title {
|
||||||
color: #DEE1F1;
|
color: rgba(255, 255, 255, 0.8);
|
||||||
padding: 4rpx 6rpx 2rpx 6rpx;
|
padding: 6rpx 12rpx;
|
||||||
border-radius: 2rpx;
|
border-radius: 12rpx;
|
||||||
margin-right: 4rpx;
|
margin-right: 8rpx;
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
font-size: 22rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.up-text-title,
|
.up-text-title,
|
||||||
.down-text-title {
|
.down-text-title {
|
||||||
font-size: 32rpx;
|
font-size: 34rpx;
|
||||||
font-family: 'Bahnschrift Regular';
|
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||||
/* line-height: 1.2; */
|
font-weight: 600;
|
||||||
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.up-text-title:after {
|
.up-text-title:after {
|
||||||
@ -954,12 +1026,17 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
margin-bottom: 8rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title-clock {
|
.title-clock {
|
||||||
color: #999;
|
color: #666;
|
||||||
font-size: 24upx;
|
font-size: 26rpx;
|
||||||
text-align: right;
|
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 {
|
.box-center-title {
|
||||||
font-size: 24upx;
|
font-size: 28rpx;
|
||||||
color: #010101;
|
color: #fff;
|
||||||
border-radius: 24upx;
|
border-radius: 24rpx;
|
||||||
padding: 0 16upx;
|
padding: 8rpx 20rpx;
|
||||||
background-color: #DEDEDE;
|
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
font-weight: 400;
|
||||||
|
box-shadow: 0 4rpx 12rpx rgba(39, 178, 95, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.uni-icon-arrowdown {
|
.uni-icon-arrowdown {
|
||||||
@ -1005,40 +1083,46 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.center-num {
|
.center-num {
|
||||||
font-size: 64rpx;
|
font-size: 40rpx;
|
||||||
color: #fff;
|
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,
|
.check-unit,
|
||||||
.budgetamount {
|
.budgetamount {
|
||||||
font-size: 24rpx;
|
font-size: 26rpx;
|
||||||
color: #DEE1F1;
|
color: rgba(255, 255, 255, 0.9);
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
line-height: 1.4;
|
||||||
}
|
}
|
||||||
|
|
||||||
.main-amount-title {
|
.main-amount-title {
|
||||||
|
color: rgba(255, 255, 255, 0.9);
|
||||||
color: #DEE1F1;
|
font-size: 26rpx;
|
||||||
font-size: 24rpx;
|
font-weight: 500;
|
||||||
/* flex: 1; */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab-unit {
|
.tab-unit {
|
||||||
background-color: #3A3E5B;
|
background: rgba(255, 255, 255, 0.2);
|
||||||
border-radius: 24rpx 0 0 24rpx;
|
border-radius: 20rpx;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 24rpx;
|
font-size: 26rpx;
|
||||||
position: relative;
|
padding: 8rpx 16rpx;
|
||||||
right: -12px;
|
font-weight: 500;
|
||||||
padding: 0 20rpx;
|
backdrop-filter: blur(10rpx);
|
||||||
|
border: 1rpx solid rgba(255, 255, 255, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
.check-price-color {
|
.check-price-color {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 34rpx;
|
font-size: 38rpx;
|
||||||
font-family: Bahnschrift Regular;
|
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||||
line-height: 1.2;
|
line-height: 1.3;
|
||||||
|
font-weight: 600;
|
||||||
|
margin-top: 8rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.check-price-color text {
|
.check-price-color text {
|
||||||
@ -1096,69 +1180,81 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.uni-popup-middle {
|
.uni-popup-middle {
|
||||||
/* overflow: hidden; */
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
min-width: 400upx;
|
min-width: 500rpx;
|
||||||
min-height: 400upx;
|
min-height: 400rpx;
|
||||||
border-radius: 16upx;
|
border-radius: 20rpx;
|
||||||
top: 30%;
|
top: 30%;
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translate(-50%, -20%);
|
transform: translate(-50%, -20%);
|
||||||
justify-content: flex-start;
|
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 {
|
.header-top {
|
||||||
font-size: 30rpx;
|
font-size: 32rpx;
|
||||||
font-weight: 600;
|
font-weight: 700;
|
||||||
color: #333;
|
color: #333;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
padding: 32rpx 0;
|
padding: 32rpx 0 24rpx;
|
||||||
background-color: #fff;
|
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 {
|
.pop-body {
|
||||||
width: 600rpx;
|
width: 100%;
|
||||||
max-height: 600rpx;
|
max-height: 500rpx;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding-bottom: 8rpx;
|
padding-bottom: 16rpx;
|
||||||
|
border-radius: 8rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pop-row {
|
.pop-row {
|
||||||
padding: 24rpx 10rpx 24rpx 0;
|
padding: 20rpx 0;
|
||||||
font-size: 24rpx;
|
font-size: 26rpx;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: space-between;
|
justify-content: flex-start;
|
||||||
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
color: #333;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pop-row .pop-row-bottom {
|
.pop-row .pop-row-bottom {
|
||||||
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 2rpx;
|
height: 1rpx;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background-color: #efefef;
|
background: linear-gradient(90deg, transparent 0%, #e5e5e5 50%, transparent 100%);
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pop-index {
|
.pop-index {
|
||||||
color: #DF7F42;
|
color: #fff;
|
||||||
border: 1rpx solid #DF7F42;
|
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||||
border-radius: 8rpx;
|
border-radius: 12rpx;
|
||||||
padding: 2rpx 12rpx 0 12rpx;
|
padding: 4rpx 12rpx;
|
||||||
margin-right: 12rpx;
|
margin-right: 16rpx;
|
||||||
font-size: 24rpx;
|
font-size: 22rpx;
|
||||||
line-height: 30rpx;
|
font-weight: 600;
|
||||||
height: 30rpx;
|
min-width: 48rpx;
|
||||||
display: inline-block;
|
text-align: center;
|
||||||
vertical-align: middle;
|
box-shadow: 0 2rpx 8rpx rgba(39, 178, 95, 0.3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .customer-title {
|
/* .customer-title {
|
||||||
@ -1185,53 +1281,73 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.analysis-tabs {
|
.analysis-tabs {
|
||||||
margin: 24rpx auto;
|
margin: 24rpx 0;
|
||||||
width: 708rpx;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
/* color: #777777; */
|
background-color: #fff;
|
||||||
border: 1rpx solid #647bd1;
|
border-radius: 12rpx;
|
||||||
border-radius: 39rpx;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
|
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.08);
|
||||||
|
border: 1rpx solid #f0f0f0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab {
|
.tab {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
height: 76rpx;
|
height: 80rpx;
|
||||||
line-height: 76rpx;
|
line-height: 80rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #666;
|
||||||
|
transition: all 0.3s ease;
|
||||||
|
font-weight: 500;
|
||||||
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
.tab.active {
|
.tab.active {
|
||||||
background: #f2f4f9;
|
background: linear-gradient(135deg, #27B25F, #4CCC7F);
|
||||||
color: #647BD1;
|
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 {
|
.model-busniess {
|
||||||
margin: 12rpx 30rpx;
|
font-family: 'DIN Alternate', 'Bahnschrift', sans-serif;
|
||||||
font-family: 'Bahnschrift Regular';
|
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 {
|
.model-busniess view {
|
||||||
font-size: 26rpx;
|
font-size: 28rpx;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #333;
|
||||||
|
margin-bottom: 16rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-busniess .progress-content {
|
.model-busniess .progress-content {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 28rpx;
|
height: 12rpx;
|
||||||
border-radius: 2rpx;
|
border-radius: 6rpx;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
margin-top: 30rpx;
|
margin: 20rpx 0 16rpx;
|
||||||
margin-bottom: 4rpx;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
box-shadow: inset 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-busniess .progress-left {
|
.model-busniess .progress-left {
|
||||||
background-color: #667ED5;
|
background: linear-gradient(90deg, #27B25F, #4CCC7F);
|
||||||
|
border-radius: 6rpx 0 0 6rpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
.model-busniess .progress-right {
|
.model-busniess .progress-right {
|
||||||
background-color: #F3AF50;
|
background: linear-gradient(90deg, #ff9f43, #ffb84d);
|
||||||
|
border-radius: 0 6rpx 6rpx 0;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@ -12,12 +12,13 @@
|
|||||||
<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>
|
||||||
@ -114,7 +115,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.ranking-content .ranking-list-unit {
|
.ranking-content .ranking-list-unit {
|
||||||
font-size: 28rpx;
|
font-size: 24rpx;
|
||||||
flex: 1;
|
flex: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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]) {
|
||||||
|
|||||||
@ -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() {
|
||||||
|
|||||||
@ -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">m²</text>
|
<text class="stat-unit">m²</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">m²</text>
|
<text class="stat-unit">m²</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">m²</text>
|
<text class="stat-unit">m²</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)
|
||||||
|
}}m²)</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)
|
||||||
|
}}m²)</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)
|
||||||
|
}}m²)</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 || '-' }}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>
|
</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 {
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user