This commit is contained in:
ylj20011123 2025-08-12 17:42:22 +08:00
parent 3da9305716
commit 626b4bc998
2 changed files with 1212 additions and 1086 deletions

View File

@ -17,7 +17,7 @@
<!-- 月份的轮播框 -->
<view class="monthListBox" :style="{ marginTop: menu.bottom + 8 + 'px' }">
<swiper class="swiperBox" previous-margin="40rpx" next-margin="40rpx" :current="selectIndex"
@change="handleChangeSwiper">
@animationfinish="handleChangeSwiper">
<swiper-item class="swiperItem" v-for="(item, index) in monthList" :key="index">
<view class="swiperItemContent"
:class="{ 'is-first': index === 0, 'is-last': index === monthList.length - 1 }">
@ -51,23 +51,21 @@
<view class="monthRevenueBox" v-if="selectIndex === index">
<view class="leftBox" @click="handleShowYDModal">
<view class="rateChartsBox">
<view class="rateChartsBox" v-if="moneyRateList && moneyRateList.length > 0">
<rateCharts :success="moneyRateList"
:colorList="['#1677FE', '#456497', '#97A9C6']"
:name="`${selectIndex}rate`" />
</view>
<view class="haveNoticeBox" v-if="ydModal" @click.stop="handleShowYDModal">
<view class="haveNoticeBox"
v-if="ydModal && modalRateList && modalRateList.length > 0"
@click.stop="handleShowYDModal">
<view class="field">
<view class="label">便利店:</view>
<view class="value">{{ ydRate }}%</view>
<view class="label">自营:</view>
<view class="value">{{ modalRateList[0] }}%</view>
</view>
<view class="field">
<view class="label">餐饮客房:</view>
<view class="value">{{ shopRate }}%</view>
</view>
<view class="field">
<view class="label">商铺租赁:</view>
<view class="value">{{ shopOutRate }}%</view>
<view class="label">外包:</view>
<view class="value">{{ modalRateList[1] }}%</view>
</view>
</view>
</view>
@ -138,7 +136,8 @@
: topShowData && topShowData.MonthRevenueModel && topShowData.MonthRevenueModel.YearRevenueAddNumber < 0
? '#0E9976'
: '',
}"><span class="revenueAddNotice">{{
}">
<span class="revenueAddNotice">{{
topShowData && topShowData.MonthRevenueModel &&
topShowData.MonthRevenueModel.YearRevenueAddNumber > 0
? "增长"
@ -153,9 +152,10 @@
100000000
)
: ""
}}</span>
}}
</span>
<span class="revenueAdd" :style="{
<span class="revenueAdd" v-if="selectIndex === index" :style="{
color:
topShowData && topShowData.MonthRevenueModel && topShowData.MonthRevenueModel.YearRevenueAdd > 0
? '#E83944'
@ -313,7 +313,9 @@ export default {
currentMoney: "",//
page: "/pages/index/index",
otherRealData: [],//
single: ""
single: "",
ydModal: false, // 驿
modalRateList: [],//
}
},
components: {
@ -352,12 +354,16 @@ export default {
// 尿
this.handleGetYNRealData()
uni.setStorageSync("lastDay", this.lastDay);
},
onShow() {
// tabbar tabbar
uni.hideTabBar();
},
methods: {
handleShowYDModal() {
this.ydModal = !this.ydModal;
},
goToRobot() {
this.$util.toNextRoute("navigateTo", `/pages/robot/index`);
// this.$util.toNextRoute("navigateTo", `/pages/testPage/index`);
@ -426,8 +432,12 @@ export default {
//
async handleChangeSwiper(e) {
console.log('e', e);
await this.handleGetTopData(e.target.current)
this.selectIndex = e.target.current
this.topShowData = null
this.moneyRateList = []
this.profitSharingList = []
this.modalRateList = []
await this.handleGetTopData(e.target.current)
},
//
async handleRealRevenue() {
@ -437,7 +447,6 @@ export default {
};
const res = await request.$webGet("CommercialApi/Revenue/GetCurRevenue", req)
this.currentMoney = res.Result_Data.CurRevenueAmount.toFixed(2);
console.log('this.currentMoneythis.currentMoneythis.currentMoney', this.currentMoney);
},
//
@ -468,6 +477,8 @@ export default {
//
let shareList = [{}, {}];
//
let sum = 0
resObj.BusinessTypeList.forEach((item) => {
//
if (item.data) {
@ -494,10 +505,26 @@ export default {
//
if (item.name === "自营") {
shareList[0] = item;
sum += Number(item.value)
} else if (item.name === "外包") {
shareList[1] = item;
sum += Number(item.value)
}
})
console.log('sum', sum);
console.log('shareListshareListshareList', shareList);
let modalListRate = []
if (shareList && shareList.length > 0) {
shareList.forEach((item) => {
modalListRate.push((Number(item.value) / sum * 100).toFixed(2))
})
}
this.modalRateList = modalListRate
this.moneyRateList = [
Number(shareList[0].value),
Number(shareList[1].value)

View File

@ -19,12 +19,14 @@
<!-- 查询时间 -->
<div style="display: flex;justify-content: space-between">
<view style="display: flex;">
<picker mode="date" @change="bindDateChange($event,0)" :value="pageData.searchTime[0]" :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<picker mode="date" @change="bindDateChange($event, 0)" :value="pageData.searchTime[0]"
:end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text>{{ pageData.searchTime[0] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
<text class="mr20"></text>
<picker mode="date" @change="bindDateChange($event,1)" :value="pageData.searchTime[1]" :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<picker mode="date" @change="bindDateChange($event, 1)" :value="pageData.searchTime[1]"
:end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text>{{ pageData.searchTime[1] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
@ -93,16 +95,21 @@
</view>
<view class="modleText" v-if="pageData.msg.SearchResult">
<div v-if="showModal">
<span v-if="copySearchText && BusinessTypeValue || copySearchText && BusinessTypeValue" class="text" style="color: red;display: block">温馨提示模糊查询不支持选择经营方法/结算方式</span>
<span v-if="copySearchText && BusinessTypeValue || copySearchText && BusinessTypeValue" class="text"
style="color: red;display: block">温馨提示模糊查询不支持选择经营方法/结算方式</span>
<span class="text">{{ pageData.msg.SearchResult[0] }}</span>
<view class="text" v-if="BusinessTypeValue!==0">{{`经营模式: ${BusinessTypeList.filter(item=> item.value===BusinessTypeValue)[0].label}`}}</view>
<view class="text" v-if="SettlementModeValue!==0">{{`结算模式: ${SettlementModeList.filter(item=> item.value===SettlementModeValue)[0].label}`}}</view>
<view class="text" v-if="BusinessTypeValue !== 0">{{`经营模式: ${BusinessTypeList.filter(item =>
item.value === BusinessTypeValue)[0].label}`}}</view>
<view class="text" v-if="SettlementModeValue !== 0">{{`结算模式: ${SettlementModeList.filter(item =>
item.value === SettlementModeValue)[0].label}`}}</view>
</div>
<div v-else>
<span v-if="copySearchText && BusinessTypeValue || copySearchText && BusinessTypeValue" class="text" style="color: red">温馨提示模糊查询不支持选择经营方法/结算方式</span>
<span v-if="copySearchText && BusinessTypeValue || copySearchText && BusinessTypeValue" class="text"
style="color: red">温馨提示模糊查询不支持选择经营方法/结算方式</span>
<div v-for="(item, index) in pageData.msg.SearchResult" :key="index">
<span class="text" v-for="(subItem, subIndex) in item" :key="subIndex">
<span class="text" style="color:red" v-if="item.length>1 && subItem.indexOf('')===-1">{{copySearchText}}</span>
<span class="text" style="color:red" v-if="item.length > 1 && subItem.indexOf('') === -1">{{
copySearchText }}</span>
{{ subItem }}
</span>
</div>
@ -112,7 +119,8 @@
</view>
<view class="bg-white" v-if="ServerpartList.length > 0">
<view class="region-area-title uni-flex ai-center jc-between" v-show="pageData.msg.Province_ExternalAmount" :class="{'active':pageData.insideShow}" @tap="pageData.insideShow=!pageData.insideShow">
<view class="region-area-title uni-flex ai-center jc-between" v-show="pageData.msg.Province_ExternalAmount"
:class="{ 'active': pageData.insideShow }" @tap="pageData.insideShow = !pageData.insideShow">
<text>省内区域</text>
</view>
<view v-show="pageData.insideShow">
@ -135,7 +143,8 @@
</div>
</div>
<ul class="region-cell-area" v-show="item.show">
<li v-for="(child,index) in item.revenueServerModels" :class="{'visited':child.visited}" :key="index" @tap="toDetail(child)">
<li v-for="(child, index) in item.revenueServerModels" :class="{ 'visited': child.visited }" :key="index"
@tap="toDetail(child)">
<view>{{ child.Serverpart_Name }}</view>
<view class="uni-flex ai-center data-number">
<text class="">{{ child.Revenue_Proportion }}</text>
@ -148,7 +157,8 @@
</view>
<template v-if="insideRegionList.length > 0">
<view class="region-area-title uni-flex ai-center jc-between" :class="{'active':pageData.exsideShow }" @tap="pageData.exsideShow = !pageData.exsideShow">
<view class="region-area-title uni-flex ai-center jc-between" :class="{ 'active': pageData.exsideShow }"
@tap="pageData.exsideShow = !pageData.exsideShow">
<text>省外区域</text>
</view>
<view v-show="pageData.exsideShow">
@ -167,10 +177,12 @@
</div>
</div>
<div class="region-cell-unit"><text class="uni-icon uni-icon-arrowright" :class="{'active':item.show}"></text></div>
<div class="region-cell-unit"><text class="uni-icon uni-icon-arrowright"
:class="{ 'active': item.show }"></text></div>
</div>
<ul class="region-cell-area" v-show="item.show">
<li v-for="(child,index) in item.revenueServerModels" :class="{'visited':child.visited}" :key="index" @tap="toDetail(child)">
<li v-for="(child, index) in item.revenueServerModels" :class="{ 'visited': child.visited }"
:key="index" @tap="toDetail(child)">
<view>{{ child.Serverpart_Name }}</view>
<view class="uni-flex ai-center data-number">
<text class="">{{ child.Revenue_Proportion }}</text>
@ -199,30 +211,43 @@
<div class="popupContent">
<div class="search_box">
<img src="/static/images/recons/search_icon.svg" alt="" class="search_icon">
<input v-model="searchText" confirm-type="search" @confirm="getList" placeholder="可以查询门店/服务区/品牌/商家等信息" class="select_input" clear/>
<input v-model="searchText" confirm-type="search" @confirm="getList" placeholder="可以查询门店/服务区/品牌/商家等信息"
class="select_input" clear />
<img src="/static/images/recons/delete.svg" alt="" class="delete" @click="handleDelete">
</div>
<view style="height: 380px;overflow-y: scroll">
<view class="popupTitle">日期选择</view>
<view class="timeList">
<view :class="selectTime===item.value?'timeItem timeSelectItem':'timeItem'" v-for="(item,index) in timeTypeList" :key="index" @click="handleChangeTime(item.value)">{{item.label}}</view>
<view :class="selectTime === item.value ? 'timeItem timeSelectItem' : 'timeItem'"
v-for="(item, index) in timeTypeList" :key="index" @click="handleChangeTime(item.value)">{{ item.label
}}
</view>
</view>
<view class="timeList">
<view :class="selectTimeOther?'timeItem timeSelectItem':'timeItem'" @click="handleTimeOther">自定义</view>
<view :class="selectTimeOther ? 'timeItem timeSelectItem' : 'timeItem'" @click="handleTimeOther">自定义
</view>
</view>
<view class="popupTitle">业态类型</view>
<view class="timeList">
<view :class="BusinessTrade===item.value?'timeItem timeSelectItem':'timeItem'" v-for="(item,index) in tradeList" :key="index" @click="handleChangeTrade(item.value,index)">{{item.label}}</view>
<view :class="BusinessTrade === item.value ? 'timeItem timeSelectItem' : 'timeItem'"
v-for="(item, index) in tradeList" :key="index" @click="handleChangeTrade(item.value, index)">
{{ item.label }}
</view>
<view class="timeList" v-if="bigTradeIndex>=0 && tradeList[bigTradeIndex] && tradeList[bigTradeIndex].children && tradeList[bigTradeIndex].children.length>0">
<view :class="BusinessSmallTrade.indexOf(item.value)!==-1 ?'timeItem timeSelectItem':'timeItem'" v-for="(item,index) in tradeList[bigTradeIndex].children" :key="index" @click="handleChangeSmallTrade(item.value)">{{item.label}}</view>
</view>
<view class="timeList"
v-if="bigTradeIndex >= 0 && tradeList[bigTradeIndex] && tradeList[bigTradeIndex].children && tradeList[bigTradeIndex].children.length > 0">
<view :class="BusinessSmallTrade.indexOf(item.value) !== -1 ? 'timeItem timeSelectItem' : 'timeItem'"
v-for="(item, index) in tradeList[bigTradeIndex].children" :key="index"
@click="handleChangeSmallTrade(item.value)">{{ item.label }}</view>
</view>
<view class="popupTitle">经营模式</view>
<view class="timeList">
<view :class="BusinessTypeValue===item.value?'timeItem timeSelectItem':'timeItem'" v-for="(item,index) in BusinessTypeList" :key="index" @click="handleChangeBusiness(item.value)">{{item.label}}</view>
<view :class="BusinessTypeValue === item.value ? 'timeItem timeSelectItem' : 'timeItem'"
v-for="(item, index) in BusinessTypeList" :key="index" @click="handleChangeBusiness(item.value)">
{{ item.label }}</view>
</view>
<view class="popupTitle" style="display: flex;position: relative;align-items: center">
<span class="title">结算模式</span>
@ -238,7 +263,9 @@
</view>
<view class="timeList">
<view :class="SettlementModeValue===item.value?'timeItem timeSelectItem':'timeItem'" v-for="(item,index) in SettlementModeList" :key="index" @click="handleChangeSettlement(item.value)">{{item.label}}</view>
<view :class="SettlementModeValue === item.value ? 'timeItem timeSelectItem' : 'timeItem'"
v-for="(item, index) in SettlementModeList" :key="index" @click="handleChangeSettlement(item.value)">
{{ item.label }}</view>
</view>
</view>
</div>
@ -248,12 +275,14 @@
<uni-popup ref="timePopup" type="center" style="background: #fff">
<div class="timePopup">
<div style="display: flex;margin-left: 10%">
<picker mode="date" @change="handleChangeTimePopup($event,0)" :value="searchTimePopup[0]" :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<picker mode="date" @change="handleChangeTimePopup($event, 0)" :value="searchTimePopup[0]"
:end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text style="font-size: 32rpx">{{ searchTimePopup[0] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
<text class="mr20"></text>
<picker mode="date" @change="handleChangeTimePopup($event,0)" :value="searchTimePopup[1]" :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<picker mode="date" @change="handleChangeTimePopup($event, 0)" :value="searchTimePopup[1]"
:end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text style="font-size: 32rpx">{{ searchTimePopup[1] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
@ -619,6 +648,8 @@
}
},
async onLoad(query) {
console.log('queryqueryquery', query);
//
this.lastDay = uni.getStorageSync('lastDay')
if (query.time) {
@ -662,13 +693,16 @@
.page-body {
//padding-bottom: 80rpx;
}
.meng {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;left: 0;
top: 0;
left: 0;
z-index: 101;
}
.search_box {
position: relative;
width: 558rpx;
@ -678,17 +712,20 @@
flex-direction: row;
align-items: center;
border-radius: 36rpx;
img {
width: 35rpx;
height: 35rpx;
margin: auto 16rpx auto 24rpx;
}
.select_input {
width: 420rpx;
border: none;
height: 40rpx;
font-size: 28rpx;
}
.delete {
width: 20px;
height: 20px;
@ -704,6 +741,7 @@
align-items: center;
font-size: 28rpx;
color: #6C737A;
img {
width: 35rpx;
height: 35rpx;
@ -717,8 +755,10 @@
box-sizing: border-box;
padding: 24rpx;
position: relative;
.popupContent {
margin-top: 24rpx;
.search_box {
position: relative;
width: 100%;
@ -728,17 +768,20 @@
flex-direction: row;
align-items: center;
border-radius: 36rpx;
img {
width: 35rpx;
height: 35rpx;
margin: auto 16rpx auto 24rpx;
}
.select_input {
width: 80%;
border: none;
height: 40rpx;
font-size: 28rpx;
}
.delete {
width: 20px;
height: 20px;
@ -747,18 +790,21 @@
z-index: 99;
}
}
.popupTitle {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: bold;
line-height: 40rpx;
margin-top: 24rpx;
.title {
font-size: 32rpx;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: bold;
line-height: 40rpx;
}
.notice {
margin-left: 8rpx;
width: 12px;
@ -771,6 +817,7 @@
color: #A69E9F;
font-size: 12px;
font-weight: 500;
.noticeBox {
max-width: 80%;
position: absolute;
@ -782,18 +829,21 @@
box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(166, 158, 159, 0.3);
z-index: 100;
transform: translateY(-100%);
.noticeText {
display: block;
}
}
}
}
.timeList {
width: 100%;
display: flex;
align-items: center;
flex-flow: wrap;
padding: 12rpx 0;
.timeItem {
width: 22%;
margin-right: 3%;
@ -803,6 +853,7 @@
border: 1rpx solid #efefef;
margin-bottom: 8rpx;
}
.timeSelectItem {
background: #e8f3fd;
border: 1rpx solid #e8f3fd;
@ -818,13 +869,16 @@
font-weight: bold;
line-height: 40rpx;
}
.delete {
width: 20px;
height: 20px;
}
.checkBox {
padding: 30rpx 0;
}
.btn {
position: absolute;
width: calc(100% - 48px);
@ -839,6 +893,7 @@
transform: translateX(-50%);
}
}
::v-deep.vue-ref {
padding-bottom: 0px !important;
}
@ -853,6 +908,7 @@
display: flex;
flex-direction: column;
justify-content: center;
.btn {
width: calc(100% - 48px);
margin-left: 24px;
@ -873,6 +929,7 @@
left: 0;
z-index: 9;
}
.screen-box .searchBtn {
margin-top: 12rpx;
box-sizing: border-box;
@ -882,17 +939,20 @@
color: #fff;
display: inline-block;
}
.screen-box .searchBox {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
.screen-box .searchBox .searchItem {
display: flex;
width: 50%;
align-items: center;
}
.searchBox .searchItem .searchLabel {
margin-right: 16rpx;
font-size: 16px;
@ -910,28 +970,34 @@
padding: 0 14rpx;
line-height: 3;
}
.screen-box .mr20 {
margin-right: 20rpx;
color: #95999C;
}
.uni-icon-arrowdown {
font-size: 22rpx;
color: #C7C7C7;
margin-left: 8rpx;
}
.screen-box text {
line-height: 3;
}
.screen-box image {
width: 12rpx;
height: 8rpx;
margin: 0 16rpx;
vertical-align: middle;
}
.head-card {
padding: 12rpx 26rpx 40rpx;
background-color: #fff;
}
.head-card>view {
width: 330rpx;
//height: 190rpx;
@ -942,12 +1008,14 @@
border-radius: 24rpx;
box-sizing: border-box;
}
.head-card .topDetail .detailBox {
width: 100%;
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
.head-card .topDetail .label {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
@ -957,10 +1025,12 @@
line-height: 40rpx;
margin-bottom: 2px;
}
.detailBox .detailItem {
width: 33%;
margin-bottom: 16px;
}
.detailBox .detailItem .value {
font-size: 16px;
font-family: DINAlternate-Bold, DINAlternate;
@ -968,6 +1038,7 @@
color: #fff;
line-height: 40rpx;
}
.detailBox .detailItem .label {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
@ -977,6 +1048,7 @@
line-height: 40rpx;
margin-bottom: 2px;
}
.detailBox .detailItem .label .unit {
font-size: 28rpx;
font-family: PingFangSC-Regular, PingFang SC;
@ -998,11 +1070,13 @@
position: relative;
//overflow: hidden;
}
.head-card .price-num {
font-family: 'Bahnschrift Regular';
font-size: 50rpx;
line-height: 1.5;
}
.all-diff {
background: linear-gradient(#f28785, #ee5b4c);
height: 36rpx;
@ -1017,11 +1091,13 @@
border-radius: 0 0 0 54rpx;
}
.all-diff image {
width: 20rpx;
height: 17rpx;
margin-right: 8rpx;
}
.modle-title {
padding-left: 24rpx;
font-size: 30rpx;
@ -1031,27 +1107,32 @@
display: flex;
align-items: center;
}
.modleText {
width: 100%;
box-sizing: border-box;
padding: 0 24rpx 18rpx 74rpx;
.text {
font-size: 26rpx;
color: #929292;
white-space: pre-wrap;
}
}
.modle-title image {
max-width: 36rpx;
max-height: 36rpx;
margin-right: 14rpx;
}
.bg-white {
background-color: #fff;
margin: 0 24rpx;
border-radius: 12rpx;
padding-bottom: 26rpx;
}
.region-area-title {
color: #000;
font-weight: bolder;
@ -1059,6 +1140,7 @@
position: relative;
display: flex;
}
/*日结上传*/
.region-title {
position: relative;
@ -1066,9 +1148,12 @@
/* font-weight: bolder; */
}
.region-title,.ct01 {
.region-title,
.ct01 {
color: #000000;
}
.ct01 {
padding-top: 8rpx;
}
@ -1088,6 +1173,7 @@
transition: all 0.4s;
display: block;
}
.active.region-area-title:before {
border-left: 8rpx solid transparent;
@ -1101,23 +1187,28 @@
padding: 26rpx 46rpx 16rpx 56rpx;
align-items: flex-end;
}
.region-cell .active.uni-icon-arrowright::before {
transform: rotate(90deg);
}
.region-cell .uni-icon-arrowdown,.region-cell .uni-icon-arrowright {
.region-cell .uni-icon-arrowdown,
.region-cell .uni-icon-arrowright {
font-size: 36rpx;
color: #5A5A5A;
/* padding-bottom: 12rpx; */
position: relative;
}
.region-cell .uni-icon-arrowright::before {
position: absolute;
right: -26rpx;
top: -46rpx;
transition: all 0.4s;
}
.region-cell .region-cell-unit {
flex: 2;
display: flex;
@ -1132,11 +1223,13 @@
flex: 3;
text-align: left;
}
.region-cell .region-cell-unit:nth-child(3) {
flex: 2.5;
}
.region-cell-image {
width: 48rpx;
display: flex;
@ -1155,13 +1248,16 @@
.region-cell-area {
box-sizing: border-box;
}
.region-cell-area li:nth-child(2n+1) {
background-color: #FCFCFC;
}
.region-cell-area li view:first-child {
display: flex;
align-items: center;
}
.region-cell-area li.visited view:first-child {
color: #007AFF;
@ -1211,17 +1307,20 @@
font-size: 22rpx;
position: relative;
}
.region-cell-area li>view text {
font-size: 22rpx;
flex: 1;
text-align: right;
}
.region-cell-area li>view text:last-child {
/* text-align: right; */
font-weight: bolder;
padding-right: 8rpx;
flex: 2;
}
.region-cell-area li>view:last-child:after {
content: '';
background: url('https://eshangtech.com/ShopICO/ahyd-BID/revenue/you-jt.png')no-repeat center;