This commit is contained in:
cclu 2023-12-19 20:12:45 +08:00
parent bbe1edf7f3
commit c29915f8a2
15 changed files with 922 additions and 135 deletions

View File

@ -250,6 +250,19 @@
} }
] ]
}, },
{
//
"root": "pages/projectProfitSharing",
"pages": [
{
"path": "index",
"style": {
"navigationBarTitleText": "",
"navigationStyle": "custom"
}
}
]
},
{ {
// BI // BI
"root": "pages/commercialBINew", "root": "pages/commercialBINew",

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="revenueAnalysisMain"> <div class="revenueAnalysisMain">
<div class="revenueAnalysis"> <div class="revenueAnalysis">
<div class="revenueTop"> <div class="revenueTop" @click="handleRevenueDetail">
<div class="revenueTopLeft"> <div class="revenueTopLeft">
<image class="revenueLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercialBI/managerLogo.svg"/> <image class="revenueLogo" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercialBI/managerLogo.svg"/>
<div class="revenueTopMoney"> <div class="revenueTopMoney">
@ -89,7 +89,7 @@ export default {
name: "revenueAnalysis", name: "revenueAnalysis",
data() { data() {
return { return {
dataInfo:{} dataInfo:{},
} }
}, },
props: { props: {
@ -115,13 +115,32 @@ export default {
this.dataInfo.average = this.$util.fmoney((value.CashPay / value.TicketCount),2) this.dataInfo.average = this.$util.fmoney((value.CashPay / value.TicketCount),2)
// this.dataInfo.ContractProfitLoss = this.$util.fmoney(this.dataInfo.ContractProfitLoss) // this.dataInfo.ContractProfitLoss = this.$util.fmoney(this.dataInfo.ContractProfitLoss)
// this.dataInfo.SalesPerSquareMeter = this.$util.fmoney(this.dataInfo.SalesPerSquareMeter) // this.dataInfo.SalesPerSquareMeter = this.$util.fmoney(this.dataInfo.SalesPerSquareMeter)
console.log('value',value)
} }
}, },
deep:true deep:true
}, },
methods:{ methods: {
handleRevenueDetail() {
let lastDay = uni.getStorageSync('lastDay')
let date = new Date(lastDay)
let y = date.getFullYear()
let m = date.getMonth() + 1
if (m < 10) {
m = '0' + m
}
console.log('lastDay',lastDay)
let currentService = uni.getStorageSync('currentService')
this.$util.toNextRoute('navigateTo',`/pages/operatingStatements/detail?BusinessTypeValue=0&SettlementModeValue=0&et=${lastDay}&id=${currentService.Serverpart_ID}&pcode=340000&searchKey=MerchantName,Brand,Shop,Serverpart&searchValue=&st=${y}-${m}-01`)
// BusinessTypeValue: "0"
// SettlementModeValue: "0"
// et: "2023-12-18"
// id: "489"
// pcode: "340000"
// searchKey: "MerchantName,Brand,Shop,Serverpart"
// searchValue: ""
// st: "2023-12-01"
}
} }
} }
</script> </script>

View File

@ -10,13 +10,107 @@
<div class="charts"> <div class="charts">
<div class="chartsItem"> <div class="chartsItem">
<p class="title">营收分析</p> <p class="title">营收分析<span class="dateText">{{lastDay}}</span></p>
<revenue-analysis :data="monthDetail"/> <revenue-analysis :data="monthDetail"/>
</div> </div>
<div class="chartsItem" style="margin-top: 32px">
<p class="title">合同保底</p> <div class="chartsItem" style="margin-top: 32px">
<contract-guarantee :data="contractList"/> <div class="titleTop">
<p class="title">本月自营计划</p>
<div class="question" @click.stop="handleShowNotice">
<image src="https://eshangtech.com/ShopICO/ahyd-BID/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNotice" class="titleTopNotice">{{monthNoticeText}}</div>
<div v-if="showNotice" class="meng" @click.stop="handleNoShowNotice"></div>
</div> </div>
<view class="box" @click="handleGoServiceInfo('month')">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/thisMonth.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageMonth?plan.percentageMonth + '%':'-'}}</p>
<p v-if="plan.percentageMonth>=100" class="desc"><image class="success" src="https://eshangtech.com/ShopICO/ahyd-BID/index/successMonth.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<view class="box2">
<image class="addIcon" :src="plan.MonthGrowth_Rate>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{monthAdd?monthAdd + '%':'-'}}</p>
</view>
</view>
</view>
<div class="progressPlan">
<div class="trans" :style="{width:plan.percentageMonth + '%'}"></div>
<!-- <div class=pro :style="{width:(100 - plan.percentageMonth)+ '%'}"></div>-->
<!-- <view class="trans" :style="{width: plan.percentageMonth + '%'}"></view>-->
<!-- <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/index/progress_orange.png"></image>-->
<!-- <div class=pro :style="{width:(100 - plan.percentageMonth)+ '%'}"></div>-->
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">本月已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueMonth_Amount?plan.RevenueMonth_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">本月计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetMonth_Amount?plan.BudgetMonth_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
<div class="chartsItem" style="margin-top: 32px">
<div class="titleTop">
<p class="title">年度自营计划</p>
<div class="question" @click.stop="handleShowNoticeYear">
<image src="https://eshangtech.com/ShopICO/ahyd-BID/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNoticeYear" class="titleTopNotice">{{yearNoticeText}}</div>
<div v-if="showNoticeYear" class="meng" @click.stop="handleNoShowNoticeYear"></div>
</div>
<view class="box" @click="handleGoServiceInfo('year')">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/planYear.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageYear?plan.percentageYear + '%':'-'}}</p>
<p v-if="plan.percentageYear>=100" class="desc" style="color: #4E68FF"><image class="success" src="https://eshangtech.com/ShopICO/ahyd-BID/index/yearSuccess.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="plan.YearGrowth_Rate>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{yearAdd?yearAdd + '%':''}}</p>
</div>
</view>
</view>
<div class="progressPlan">
<div class="transYear" :style="{width:plan.percentageYear + '%'}"></div>
<!-- <image class="img" :style="{width: plan.percentageYear + '%'}" src="https://eshangtech.com/ShopICO/ahyd-BID/index/progress_blue.png"></image>-->
<!-- <div class=pro :style="{width:(100 - plan.percentageYear)+ '%'}"></div>-->
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">年度已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueYear_Amount?plan.RevenueYear_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">年度计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetYear_Amount?plan.BudgetYear_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
<!-- <div class="chartsItem" style="margin-top: 32px">--> <!-- <div class="chartsItem" style="margin-top: 32px">-->
<!-- <p class="title">客流客单交易</p>--> <!-- <p class="title">客流客单交易</p>-->
<!-- <contract-guarantee :data="orderTransaction"/>--> <!-- <contract-guarantee :data="orderTransaction"/>-->
@ -84,102 +178,10 @@
</div> </div>
</div> </div>
<div class="chartsItem" style="margin-top: 32px"> <div class="chartsItem" style="margin-top: 32px">
<div class="titleTop"> <p class="title">合同保底</p>
<p class="title">本月自营计划</p> <contract-guarantee :data="contractList"/>
<div class="question" @click.stop="handleShowNotice"> </div>
<image src="https://eshangtech.com/ShopICO/ahyd-BID/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNotice" class="titleTopNotice">{{monthNoticeText}}</div>
<div v-if="showNotice" class="meng" @click.stop="handleNoShowNotice"></div>
</div>
<view class="box" @click="handleGoServiceInfo('month')">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/thisMonth.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageMonth?plan.percentageMonth + '%':'-'}}</p>
<p v-if="plan.percentageMonth>=100" class="desc"><image class="success" src="https://eshangtech.com/ShopICO/ahyd-BID/index/successMonth.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<view class="box2">
<image class="addIcon" :src="plan.MonthGrowth_Rate>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{monthAdd?monthAdd + '%':'-'}}</p>
</view>
</view>
</view>
<div class="progressPlan">
<div class="trans" :style="{width:plan.percentageMonth + '%'}"></div>
<!-- <div class=pro :style="{width:(100 - plan.percentageMonth)+ '%'}"></div>-->
<!-- <view class="trans" :style="{width: plan.percentageMonth + '%'}"></view>-->
<!-- <image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/index/progress_orange.png"></image>-->
<!-- <div class=pro :style="{width:(100 - plan.percentageMonth)+ '%'}"></div>-->
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">本月已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueMonth_Amount?plan.RevenueMonth_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">本月计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetMonth_Amount?plan.BudgetMonth_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
<div class="chartsItem" style="margin-top: 32px">
<div class="titleTop">
<p class="title">年度自营计划</p>
<div class="question" @click.stop="handleShowNoticeYear">
<image src="https://eshangtech.com/ShopICO/ahyd-BID/index/noticeQuestion.svg"></image>
</div>
<div v-if="showNoticeYear" class="titleTopNotice">{{yearNoticeText}}</div>
<div v-if="showNoticeYear" class="meng" @click.stop="handleNoShowNoticeYear"></div>
</div>
<view class="box" @click="handleGoServiceInfo('year')">
<view class="top">
<view class="big">
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/index/planYear.svg"></image>
</view>
<view class="text">
<view class="textTop">
<view class="left">
<p class="number">{{plan.percentageYear?plan.percentageYear + '%':'-'}}</p>
<p v-if="plan.percentageYear>=100" class="desc" style="color: #4E68FF"><image class="success" src="https://eshangtech.com/ShopICO/ahyd-BID/index/yearSuccess.svg"></image></p>
</view>
<view class="right">
<text class="comparePlan">比计划 </text>
<div class="box2">
<image class="addIcon" :src="plan.YearGrowth_Rate>0?'https://eshangtech.com/ShopICO/ahyd-BID/index/addIcon.svg':'https://eshangtech.com/ShopICO/ahyd-BID/index/reduce.svg'"></image>
<p class="text">{{yearAdd?yearAdd + '%':''}}</p>
</div>
</view>
</view>
<div class="progressPlan">
<div class="transYear" :style="{width:plan.percentageYear + '%'}"></div>
<!-- <image class="img" :style="{width: plan.percentageYear + '%'}" src="https://eshangtech.com/ShopICO/ahyd-BID/index/progress_blue.png"></image>-->
<!-- <div class=pro :style="{width:(100 - plan.percentageYear)+ '%'}"></div>-->
</div>
</view>
</view>
<view class="bottom">
<view class="success" style="margin-right: 39px">
<p class="text">年度已完成<text class="unit">/</text></p>
<p class="money">{{plan.RevenueYear_Amount?plan.RevenueYear_Amount:'-'}}</p>
</view>
<view class="success">
<p class="text">年度计划<text class="unit">/</text></p>
<p class="money">{{plan.BudgetYear_Amount?plan.BudgetYear_Amount:'-'}}</p>
</view>
</view>
</view>
</div>
</div> </div>
</div> </div>
@ -757,6 +759,7 @@ export default {
font-weight: 600; font-weight: 600;
color: #160002; color: #160002;
line-height: 44rpx; line-height: 44rpx;
} }
.question{ .question{
width: 16px; width: 16px;
@ -798,6 +801,14 @@ export default {
line-height: 20px; line-height: 20px;
margin-left: 4px; margin-left: 4px;
} }
.dateText{
display: inline-block;
margin-left: 16rpx;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #A69E9F;
}
} }
.progress{ .progress{
width:calc(100vw - 32px); width:calc(100vw - 32px);

View File

@ -338,6 +338,7 @@
</view> </view>
<view class="funEntry"> <view class="funEntry">
<span @click="handleGoProject">111</span>
<!-- 五个有背景的导航栏--> <!-- 五个有背景的导航栏-->
<view class="funBox"> <view class="funBox">
<view class="firstBox"> <view class="firstBox">
@ -610,7 +611,7 @@
<view class="chart"> <view class="chart">
<div v-show="selectTab===1" v-if="regionProgress.length>0"> <div v-show="selectTab===1" v-if="regionProgress.length>0">
<div> <div>
<div class="operation-c-list" v-for="(item,o) in regionProgress" :key="o"> <div class="operation-c-list" v-for="(item,o) in regionProgress" :key="o" :style="{marginBottom:o===regionProgress.length?'0px':''}">
<div class="top"> <div class="top">
<div class="left"> <div class="left">
<div class="icon"> <div class="icon">
@ -632,7 +633,7 @@
</div> </div>
<div v-show="selectTab===2" v-if="areaProgress.length>0"> <div v-show="selectTab===2" v-if="areaProgress.length>0">
<div> <div>
<div class="operation-c-list" v-for="(item,o) in areaProgress" :key="o"> <div class="operation-c-list" v-for="(item,o) in areaProgress" :key="o" :style="{marginBottom:o===regionProgress.length?'0px':''}">
<div class="top"> <div class="top">
<div class="left"> <div class="left">
<div class="icon"> <div class="icon">
@ -1185,7 +1186,7 @@ export default {
}, },
// //
goToRevenueStatic(){ goToRevenueStatic(){
this.$util.toNextRoute('navigateTo', `/pages/revenueStatistics/index?time=${this.lastDay}`) this.$util.toNextRoute('navigateTo', `/pages/revenueStatistics/index?time=${this.lastDay}&month=${this.single}`)
}, },
goToNational(){ goToNational(){
this.$util.toNextRoute('navigateTo', `/pages/nationalPage/index?time=${this.lastDay}`) this.$util.toNextRoute('navigateTo', `/pages/nationalPage/index?time=${this.lastDay}`)
@ -1215,6 +1216,9 @@ export default {
}, },
handleGoWarning(){ handleGoWarning(){
this.$util.toNextRoute('navigateTo', `/pages/commercialBI/specialCase`) this.$util.toNextRoute('navigateTo', `/pages/commercialBI/specialCase`)
},
handleGoProject(){
this.$util.toNextRoute('navigateTo', `/pages/projectProfitSharing/index`)
}, },
// //
handleStoreUpload(){ handleStoreUpload(){

View File

@ -356,7 +356,7 @@ export default {
margin-right: 16px; margin-right: 16px;
} }
.pickers{ .pickers{
min-width: 167px; min-width: 175px;
height: 32px; height: 32px;
background: #FFFFFF; background: #FFFFFF;
border-radius: 16px; border-radius: 16px;

View File

@ -408,7 +408,7 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
.left{ .left{
width: 30%; width: 40%;
position: relative; position: relative;
.pick{ .pick{
.box{ .box{

View File

@ -145,6 +145,7 @@ import request from '@/util/index.js'
}, },
// //
onLoad(op) { onLoad(op) {
console.log('op',op)
this.pageOption = op this.pageOption = op
if (this.pageOption.st){ if (this.pageOption.st){
this.pageData.searchTime[0] = this.pageOption.st this.pageData.searchTime[0] = this.pageOption.st

View File

@ -6,28 +6,36 @@
<!-- <view class="searchBtn" @click="handleSelect">查询筛选</view>--> <!-- <view class="searchBtn" @click="handleSelect">查询筛选</view>-->
<!-- 搜索框内容 --> <!-- 搜索框内容 -->
<div style="display: flex;align-items: center;justify-content: space-between;padding: 10rpx 0"> <div style="display: flex;align-items: center;justify-content: space-between;padding: 10rpx 0">
<div class="search_box"> <!-- <div class="search_box">-->
<img src="/static/images/recons/search_icon.svg" alt="" class="search_icon"> <!-- <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"> <!-- <img src="/static/images/recons/delete.svg" alt="" class="delete" @click="handleDelete">-->
</div> <!-- </div>-->
<!-- <div class="select_btn" @click="handleSelect" >-->
<!-- <img src="/static/images/recons/select_icon.svg" alt="" class="select_icon">-->
<!-- 筛选-->
<!-- </div>-->
</div>
<!-- 查询时间 -->
<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">
<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">
<text>{{pageData.searchTime[1]}}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
</view>
<div class="select_btn" @click="handleSelect" > <div class="select_btn" @click="handleSelect" >
<img src="/static/images/recons/select_icon.svg" alt="" class="select_icon"> <img src="/static/images/recons/select_icon.svg" alt="" class="select_icon">
筛选 筛选
</div> </div>
</div> </div>
<!-- 查询时间 -->
<div style="display: flex">
<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">
<text>{{pageData.searchTime[1]}}</text>
<text class="uni-icon uni-icon-arrowdown"></text>
</picker>
</div>
<!-- BusinessType经营模式 SettlementMode结算模式 --> <!-- BusinessType经营模式 SettlementMode结算模式 -->
<!-- <view class="searchBox">--> <!-- <view class="searchBox">-->
<!-- <view class="searchItem">--> <!-- <view class="searchItem">-->

View File

@ -0,0 +1,50 @@
<template>
<div class="main">
<image class="typeImg" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/noData.svg"></image>
<p class="text" >抱歉,暂无数据</p>
</div>
</template>
<script>
export default {
name: "noData",
data(){
return {
type:''
}
},
onLoad(query){
},
onUnload() {
},
methods:{
}
}
</script>
<style scoped lang="scss">
.main{
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
margin-top: 12px;
padding: 16px 0;
.typeImg{
width: 80px;
height: 80px;
margin-bottom: 16px;
}
.text{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #6C737A;
line-height: 20rpx;
}
}
</style>

View File

@ -0,0 +1,658 @@
<template>
<view class="main">
<div class="headerTop" >
<div class="header" :style="{height:menu.height + 'px',top:menu.top+'px'}">
<image class="backArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/examine/leftArrowWhite.svg" @click="handleBack"/>
<div class="timeSelect">
<img class="selectIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/selectDateIcon.svg"/>
<picker mode="date" :value="searchText" :end="lastDay" @change="changeAllProvinceSearch" >
<view class="time">
<view class="text">{{ searchText }}</view>
<image class="icon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"></image>
</view>
</picker>
</div>
</div>
<div class="picker" :style="{top:(menu.bottom + 24)+'px'}" @click="handleGoSelectService">
<div class="selectService" >
<image class="img" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/fixed.svg"></image>
<view class="select">
<view class="content">
<view class="uni-input">{{serviceInfo.SERVERPART_NAME}}</view>
<p class="area" v-if="serviceInfo.Serverpart_ID">{{serviceInfo.SPREGIONTYPE_NAME}}</p>
<image class="rightArrow" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"></image>
</view>
</view>
</div>
</div>
</div>
<view class="pageContent">
<view class="tabBox">
<view :class="selectTab===1?'tab selectTab':'tab'" @click="handleChangeSelectTab(1)">驿达应收</view>
<view :class="selectTab===2?'tab selectTab':'tab'" @click="handleChangeSelectTab(2)">商家欠款</view>
</view>
<view class="descBox">
<view class="smallBox">
<view class="leftBox">
<span class="descLabel">排序字段</span>
<picker mode="selector" :value="searchField" :range="fieldList" range-key="label" @change="handleChangeField">
{{fieldList[searchField].label}}
</picker>
</view>
<view class="rightBox" @click="handleChangeDesc">
<span class="descText">{{ descType==='ascend'?'升序':'降序' }}</span>
<image class="descIcon" :src="descType==='ascend'?'/static/images/project/ascend.svg':'/static/images/project/descend.svg'"/>
</view>
</view>
</view>
<view class="listBox">
<view v-if="showList && showList.length>0">
<div class="listItem" v-for="(item,index) in showList" :key="index" @click="handleNoneChild(item)">
<div class="listBox" :style="{borderBottom:item.showChild?'1px solid #D9DBE0':'0px solid #D9DBE0'}">
<div class="itemTop">
<div class="itemLeft">
<div style="display: flex;align-items: center">
<img class="itemFixed" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/fixedIcon.svg"/>
<span class="serverName">{{selectTab===1?item.SPREGIONTYPE_NAME?item.SPREGIONTYPE_NAME.split('管理中心')[0]:'':item.MERCHANTS_NAME}}</span>
</div>
</div>
<img class="itemRight" :style="{transform:item.showChild?'':'rotate(-90deg)'}" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/arrow_bottom.svg"/>
</div>
<div class="itemDetail">
<div class="message">
<span class="value">{{ $util.fmoney(selectTab===1?(item.ROYALTY_PRICE || 0):(item.SUBROYALTY_PRICE || 0),2)}}</span>
<span class="label">{{ selectTab===1?'驿达到账':'商家到账' }}</span>
</div>
<div class="message">
<span class="value">{{ $util.fmoney(selectTab===1?(item.ROYALTYDAILY_THEORY || 0):(item.SUBROYALTYDAILY_THEORY || 0),2) }}</span>
<span class="label">{{ selectTab===1?'驿达入账':'商家入账' }}</span>
</div>
<div class="message">
<span class="value">{{ selectTab===1?$util.fmoney(((item.ROYALTY_PRICE || 0) - (item.ROYALTYDAILY_THEORY || 0)),2):
$util.fmoney(((item.SUBROYALTY_PRICE || 0) - (item.SUBROYALTYDAILY_THEORY || 0)),2)}}</span>
<span class="label">{{ selectTab===1?'驿达差额':'商家应缴' }}</span>
</div>
</div>
</div>
<div class="childList" v-if="item.showChild && item.children && item.children.length>0">
<div class="childItem" @click.stop="handleShowSecondChildren(item,subItem)" v-for="(subItem,subIndex) in item.children" :key="subIndex">
<div class="secondItemBox" :style="{borderBottom:subItem.showChild?'1px solid #D9DBE0':'0px solid #D9DBE0'}">
<div class="childTop">
<div class="topLeft">
<div class="imgBox">
<image class="topIcon" src="https://eshangtech.com/ShopICO/ahyd-BID/newCommercial/mapIcon.svg"/>
</div>
<span class="serviceName">{{subItem.SERVERPART_NAME}}</span>
</div>
<image class="topRight" :style="{transform:subItem.showChild?'rotate(90deg)':''}" src="https://eshangtech.com/ShopICO/ahyd-BID/commercial/rightArrow.svg"/>
</div>
<div class="childDetailBox">
<div class="message">
<span class="value">{{ $util.fmoney(selectTab===1?(subItem.ROYALTY_PRICE || 0):(subItem.SUBROYALTY_PRICE || 0),2)}}</span>
<span class="label">{{ selectTab===1?'驿达到账':'商家到账' }}</span>
</div>
<div class="message">
<span class="value">{{ $util.fmoney(selectTab===1?(subItem.ROYALTYDAILY_THEORY || 0):(subItem.SUBROYALTYDAILY_THEORY || 0),2) }}</span>
<span class="label">{{ selectTab===1?'驿达入账':'商家入账' }}</span>
</div>
<div class="message">
<span class="value">{{ selectTab===1?$util.fmoney(((subItem.ROYALTY_PRICE || 0) - (subItem.ROYALTYDAILY_THEORY || 0)),2):
$util.fmoney(((subItem.SUBROYALTY_PRICE || 0) - (subItem.SUBROYALTYDAILY_THEORY || 0)),2)}}</span>
<span class="label">{{ selectTab===1?'驿达差额':'商家应缴' }}</span>
</div>
</div>
</div>
<div class="childDetailList" v-if="subItem.showChild && subItem.children && subItem.children.length>0">
<div class="thirdItem" v-for="(thirdItem,thirdIndex) in subItem.children" :key="thirdIndex" :style="{borderBottom:thirdIndex===subItem.children.length-1?'0 solid #EEEEEE':'2px solid #EEEEEE'}">
<div class="thirdItemTop">
<div class="itemBox">
<span class="label">经营单位:</span>
<span>{{selectTab===1?thirdItem.MERCHANTS_NAME:thirdItem.SERVERPARTSHOP_NAME}}</span>
</div>
<div class="itemBox" v-if="selectTab===1">
<span class="label">经营门店:</span>
<span>{{thirdItem.SERVERPARTSHOP_NAME}}</span>
</div>
</div>
<div class="thirdItemBottom">
<div class="bottomItem">
<span class="value">{{ $util.fmoney(selectTab===1?(thirdItem.ROYALTY_PRICE || 0):(thirdItem.SUBROYALTY_PRICE || 0),2)}}</span>
<span class="label">{{ selectTab===1?'驿达到账':'商家到账' }}</span>
</div>
<div class="bottomItem">
<span class="value">{{ $util.fmoney(selectTab===1?(thirdItem.ROYALTYDAILY_THEORY || 0):(thirdItem.SUBROYALTYDAILY_THEORY || 0),2) }}</span>
<span class="label">{{ selectTab===1?'驿达入账':'商家入账' }}</span>
</div>
<div class="bottomItem">
<span class="value">{{ selectTab===1?$util.fmoney(((thirdItem.ROYALTY_PRICE || 0) - (thirdItem.ROYALTYDAILY_THEORY || 0)),2):
$util.fmoney(((thirdItem.SUBROYALTY_PRICE || 0) - (thirdItem.SUBROYALTYDAILY_THEORY || 0)),2)}}</span>
<span class="label">{{ selectTab===1?'驿达差额':'商家应缴' }}</span>
</div>
</div>
<div class="thirdItemBottom">
<div class="bottomItem">
<span class="value">{{thirdItem.BUSINESS_TYPE===1000?'合作经营':thirdItem.BUSINESS_TYPE===2000?'固定租金':thirdItem.BUSINESS_TYPE===3000?'自营提成':thirdItem.BUSINESS_TYPE===4000?'业主自营':''}}</span>
<span class="label">经营模式</span>
</div>
<div class="bottomItem">
<span class="value">{{thirdItem.SETTLEMENT_MODES?settlement[thirdItem.SETTLEMENT_MODES]:'-'}}</span>
<span class="label">结算模式</span>
</div>
<div class="bottomItem">
<span class="value">{{thirdItem.COMPACT_TYPE?compactType[thirdItem.COMPACT_TYPE]:'-'}}</span>
<span class="label">合同类型</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</view>
<view class="noDataBox" v-else>
<NoData/>
</view>
</view>
</view>
</view>
</template>
<script>
import request from '@/util/index.js'
import NoData from "./components/noData.vue";
import {getFieldEnum, wrapTreeNode} from "../../util/dateTime";
export default {
components: {NoData},
data() {
return {
searchText:'',//
menu:{}, //,
statusBarHeight:'',
serviceInfo:{},//
selectTab: 1,
showList: [],//
otherData:{},//
settlement:{},//
compactType:{},//
searchField:0,//
fieldList:[{label:'驿达到账',value:0},{label:'驿达入账',value:1},{label:'驿达差额',value:2}],
descType:'ascend',//
}
},
onLoad(){
let systemInfo = uni.getSystemInfoSync()
this.statusBarHeight = Number(systemInfo.statusBarHeight)
this.menu = uni.getMenuButtonBoundingClientRect()
this.handleGetSETTLEMENT()
this.handleGetCOMPACTTYPE()
},
onShow(){
this.fieldList = this.selectTab===1?[{label:'驿达到账',value:0},{label:'驿达入账',value:1},{label:'驿达差额',value:2}]:[{label:'商家到账',value:0},{label:'商家入账',value:1},{label:'商家应缴',value:2}]
this.searchText = uni.getStorageSync('lastDay')
this.serviceInfo = uni.getStorageSync('currentService')
this.handleGetPageData()
},
methods:{
async handleGetPageData(){
// Finance/GetProjectSummary 驿
// Finance/GetProjectMerchantSummary
uni.showLoading({
title: '正在加载...'
})
const req = {
StartDate: this.searchText,
EndDate: this.searchText,
ServerpartId:this.serviceInfo.Serverpart_ID,
CompactType:'340001'
}
if (this.selectTab===1){
const data = await request.$webGet('EShangApiMain/Finance/GetProjectSummary',req)
this.showList = wrapTreeNode(data.Result_Data.List)
this.otherData = data.Result_Data.OtherData
console.log('showList',this.showList)
console.log('otherData',this.otherData)
uni.hideLoading()
}else{
const data = await request.$webGet('EShangApiMain/Finance/GetProjectMerchantSummary',req)
let list = wrapTreeNode(data.Result_Data.List)
this.showList = list
this.otherData = data.Result_Data.OtherData
console.log('showList',this.showList)
console.log('otherData',this.otherData)
uni.hideLoading()
}
},
//
handleGoSelectService() {
uni.navigateTo({
url:`/pages/map/index?chartType=${true}&page=/pages/projectProfitSharing/index&serviceInfo=${JSON.stringify(this.serviceInfo)}`
})
},
// 退
handleBack(){
uni.navigateBack({
delta: 1
})
},
//
handleChangeSelectTab(num){
this.selectTab = num
this.handleGetPageData()
},
//
handleNoneChild(obj){
this.showList.forEach(item=>{
if (this.selectTab===1){
if (item.SPREGIONTYPE_NAME === obj.SPREGIONTYPE_NAME){
item.showChild = !item.showChild
}
}else{
if (item.MERCHANTS_NAME === obj.MERCHANTS_NAME){
item.showChild = !item.showChild
}
}
})
this.$forceUpdate()
console.log('this.showList',this.showList)
},
//
handleShowSecondChildren(obj,subObj){
this.showList.forEach(item=>{
if (item.SPREGIONTYPE_NAME === obj.SPREGIONTYPE_NAME){
item.children.forEach(subItem=>{
if (subItem.SPREGIONTYPE_NAME === subObj.SPREGIONTYPE_NAME){
subItem.showChild = !subItem.showChild
}
})
}
})
this.$forceUpdate()
},
//
async handleGetSETTLEMENT(){
const data = await getFieldEnum({ FieldExplainField: 'SETTLEMENT_MODES' });
console.log('data',data)
if (data && data.length>0){
let obj = {}
data.forEach(item=>{
obj[item.value] = item.label
})
this.settlement = obj
console.log('this.settlement',this.settlement)
}
},
//
async handleGetCOMPACTTYPE(){
const data = await getFieldEnum({ FieldExplainField: 'COMPACT_CHARACTER' });
console.log('data',data)
if (data && data.length>0){
let obj = {}
data.forEach(item=>{
obj[item.value] = item.label
})
this.compactType = obj
console.log('this.compactType',this.compactType)
}
},
//
handleChangeDesc(){
if (this.descType==='ascend'){
this.descType = 'descend'
}else{
this.descType = 'ascend'
}
},
//
handleChangeField(e){
this.searchField = Number(e.detail.value)
}
}
}
</script>
<style scoped lang="scss">
@import '/static/public/font/stylesheet.css';
.main{
width: 100%;
height: 100%;
.headerTop{
width: 100%;
height: 152px;
box-sizing: border-box;
position: relative;
background: linear-gradient(90deg, #60AAFF 0%,#3E74FF 100%);
.header{
position: absolute;
width: 100%;
padding: 0 16px;
box-sizing: border-box;
display: flex;
align-items: center;
.backArrow{
width: 24px;
height: 24px;
margin-right: 16px;
}
.timeSelect{
display: flex;
align-items: center;
.selectIcon{
width: 16px;
height: 16px;
}
.time{
display: flex;
align-items: center;
.text{
margin: 0 5px;
color: #fff;
}
.icon{
width: 18px;
height: 18px;
}
}
}
}
.picker{
position: absolute;
left: 16px;
.selectService{
display: flex;
align-items: center;
.img{
width: 40px;
height: 40px;
z-index: 2;
}
.select{
height: 32px;
background: #F8F8FA;
border-radius: 0 16px 16px 0;
transform: translateX(-20px);
box-sizing: border-box;
padding-left: 25px;
display: flex;
align-items: center;
.content{
display: flex;
align-items: center;
.uni-input{
padding: 0;
background: transparent;
font-size: 14px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
}
.area{
font-size: 12px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 40px;
margin-left: 4px;
}
.rightArrow{
width: 24px;
height: 12px;
}
}
}
}
}
}
.pageContent{
width: 100%;
height: 100%;
padding: 16rpx 32rpx 0;
box-sizing: border-box;
background: #f8f8f8;
.tabBox{
width: 100%;
height: 76rpx;
box-sizing: border-box;
padding: 8rpx;
background: #F2F1F1;
border-radius: 8rpx;
display: flex;
justify-content: space-between;
.tab{
width: calc((100% - 16rpx)/2);
height: 100%;
border-radius: 8rpx;
text-align: center;
line-height: 60rpx;
font-size: 28rpx;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #786B6C;
}
.selectTab{
background: #FFFFFF;
color: #160002;
}
}
.descBox{
width: 100%;
.smallBox{
width: 100%;
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: space-between;
.leftBox{
display: flex;
align-items: center;
}
.rightBox{
display: flex;
align-items: center;
.descIcon{
width: 50rpx;
height: 50rpx;
}
}
}
}
.listBox{
padding-top: 24rpx;
.listItem{
margin-bottom: 12px;
border: 1px solid #D9DBE0;
border-radius: 8px;
position: relative;
.bg{
position: absolute;
right: 0;top: 0;
width: 97px;
height: 97px;
}
.listBox{
width: 100%;
box-sizing: border-box;
padding: 12px 16px;
background: linear-gradient(314deg, #EAEFFF 0%, #F3F5FF 32%, #F5FCFF 50%, #F0F7FF 67%, #DBE5FF 100%);
border-bottom: 1px solid #D9DBE0;
border-radius: 8px;
.itemTop{
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.itemLeft{
display: inline-block;
padding: 2px 8px;
background: rgba(26, 95, 255, 0.1);
border-radius: 14px;
.itemFixed{
width: 12px;
height: 14px;
margin-right: 4px;
}
.serverName{
font-size: 16px;
font-family: Alimama ShuHeiTi;
color: #1A5FFF;
line-height: 22px
}
}
.itemRight{
width: 26px;
height: 14px;
}
}
.itemDetail{
margin-top: 16px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.message{
width: 33%;
display: flex;
flex-direction: column;
.cirRate{
width: 40px;
height: 40px;
}
.label{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px
}
.value{
font-size: 18px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
line-height: 24px;
white-space: nowrap;
}
}
}
}
.childList{
border-radius: 8px 8px 0 0;
width: 100%;
.childItem{
width: 100%;
.secondItemBox{
padding: 12px 16px;
box-sizing: border-box;
border-bottom: 1px solid #EEEEEE;
border-radius: 8px;
.childTop{
width: 100%;
margin-bottom: 12px;
display: flex;
align-items: center;
justify-content: space-between;
.topLeft{
display: flex;
align-items: center;
.imgBox{
width: 28px;
height: 28px;
border-radius: 50%;
border: 1px solid #FFFFFF;
overflow: hidden;
.topIcon{
width: 100%;
height: 100%;
}
}
.serviceName{
font-size: 16px;
font-family: PingFangSC-Semibold, PingFang SC;
font-weight: 600;
color: #160002;
line-height: 22px;
margin-left: 6px;
}
}
.topRight{
width: 16px;
height: 16px;
}
}
.childDetailBox{
margin-top: 16px;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
.message{
width: 33%;
display: flex;
flex-direction: column;
.cirRate{
width: 40px;
height: 40px;
}
.label{
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #786B6C;
line-height: 20px
}
.value{
font-size: 18px;
font-family: DINAlternate-Bold, DINAlternate;
font-weight: bold;
color: #160002;
line-height: 24px;
white-space: nowrap;
}
}
}
}
.childDetailList{
box-sizing: border-box;
padding: 0 16px;
.thirdItem{
padding: 12px 0;
box-sizing: border-box;
border-bottom: 2px solid #EEEEEE;
.thirdItemTop{
}
.thirdItemBottom{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
.bottomItem{
width: 33%;
display: flex;
flex-direction: column;
}
}
}
}
}
}
}
.noDataBox{
width: 100%;
min-height: 60vh;
display: flex;
align-items: center;
justify-content: center;
}
}
}
}
</style>

View File

@ -1380,10 +1380,14 @@ export default {
uni.showLoading({ uni.showLoading({
title:'正在加载' title:'正在加载'
}) })
const date = new Date(this.single)
const y = date.getFullYear()
let m = date.getMonth() + 1
const req = { const req = {
Month:this.thisMonth Month:`${y}${m}`
} }
const data = await request.$webGet('EShangApiMain/Budget/GetbudgetProjectReport',req) // const data = await request.$webGet('EShangApiMain/Budget/GetbudgetProjectReport',req)
const data = await request.$webGet('EShangApiMain/Budget/GetbudgetProjectReportDynamic',req)
console.log('data',data) console.log('data',data)
this.currentResult = data.Result_Data this.currentResult = data.Result_Data
let sum = 0 let sum = 0

View File

@ -429,14 +429,10 @@ export default {
console.log('statusBarHeight',this.statusBarHeight) console.log('statusBarHeight',this.statusBarHeight)
console.log('menu',this.menu) console.log('menu',this.menu)
if (option.time){ if (option.time){
const date = new Date(option.time)
let y = date.getFullYear()
let m = date.getMonth() + 1
if (m<10){
m = '0'+m
}
this.lastDay = option.time this.lastDay = option.time
this.searchText = `${y}-${m}` }
if (option.month){
this.searchText = option.month
} }
this.handleGetTableData() this.handleGetTableData()
}, },

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702971985062" class="icon" viewBox="0 0 1824 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6322" xmlns:xlink="http://www.w3.org/1999/xlink" width="356.25" height="200"><path d="M863.764 270.458c32.518-35.975 85.239-35.975 117.757 0l401.018 443.652c32.519 35.977 19.57 65.14-28.913 65.14H491.657c-48.485 0-61.43-29.164-28.913-65.14l401.018-443.652z" fill="#1890ff" p-id="6323"></path></svg>

After

Width:  |  Height:  |  Size: 548 B

View File

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702972049000" class="icon" viewBox="0 0 1824 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7371" xmlns:xlink="http://www.w3.org/1999/xlink" width="356.25" height="200"><path d="M855.721 739.856c30.486 33.728 79.913 33.728 110.397 0l375.954-415.921c30.487-33.729 18.347-61.069-27.103-61.069h-808.099c-45.455 0-57.591 27.341-27.106 61.068l375.955 415.923z" p-id="7372" fill="#1890ff"></path></svg>

After

Width:  |  Height:  |  Size: 554 B

View File

@ -1,3 +1,4 @@
import request from '@/util/index.js'
export function timestampToTime(timestamp) { export function timestampToTime(timestamp) {
const date = new Date(timestamp) //时间戳为10位需*1000时间戳为13位的话不需乘1000 const date = new Date(timestamp) //时间戳为10位需*1000时间戳为13位的话不需乘1000
const Y = date.getFullYear() + '-' const Y = date.getFullYear() + '-'
@ -80,3 +81,23 @@ export function tableList(list) {
success: true, success: true,
}; };
} }
export function formateField(list) {
const valueNumber = [];
list.map((n) => {
if (!isNaN(Number(n.value))) {
valueNumber.push({
label: n.label,
value: numeral(n.value).value(),
});
}
});
return valueNumber.length > 0 ? valueNumber : list;
}
export async function getFieldEnum(params){
const data = await request.$webGet(`/EShangApiMain/FrameWork/GetFieldEnumByField`, params);
if (data.Result_Code !== 100) {
return [];
}
return data.Result_Data.List;
}