This commit is contained in:
ylj20011123 2025-09-04 14:32:29 +08:00
parent 431d95645b
commit 42f254afb9
5 changed files with 1367 additions and 859 deletions

View File

@ -1,5 +1,16 @@
<template> <template>
<view :class="'province-theme-' + currentProvinceCode"> <view :class="'province-theme-' + currentProvinceCode">
<!-- 加载骨架屏 -->
<view class="loading-skeleton" v-if="isLoading">
<view class="skeleton-header"></view>
<view class="skeleton-cards">
<view class="skeleton-card" v-for="i in 3" :key="i"></view>
</view>
<view class="skeleton-list">
<view class="skeleton-item" v-for="i in 5" :key="i"></view>
</view>
</view>
<view class="page-body" v-if="showPage"> <view class="page-body" v-if="showPage">
<AnhHead :today="today" :headMsg="headMsg" :lastDay="lastDay" :groupType="theRequest && theRequest.GroupType" <AnhHead :today="today" :headMsg="headMsg" :lastDay="lastDay" :groupType="theRequest && theRequest.GroupType"
:provinceCode="theRequest && theRequest.ProvinceCode" @bindDateChange="bindDateChange" :isup="isup" :provinceCode="theRequest && theRequest.ProvinceCode" @bindDateChange="bindDateChange" :isup="isup"
@ -277,8 +288,7 @@
<shopCell v-for="(item, i) in regionList" :key="i" :item='item' @toggleShow="toggleShow" :i='i' /> <shopCell v-for="(item, i) in regionList" :key="i" :item='item' @toggleShow="toggleShow" :i='i' />
</template> </template>
</view> </view>
<template <template v-if="theRequest && theRequest.ProvinceCode == '620000' || theRequest.ProvinceCode == '530000'">
v-if="theRequest && theRequest.ProvinceCode == '620000' || theRequest.ProvinceCode == '530000' || theRequest.ProvinceCode == '734100'">
<view class="uni-inline-item modle-title"> <view class="uni-inline-item modle-title">
<image src="/static/images/revenue/product-ranking.png" mode="aspectFit"></image> <image src="/static/images/revenue/product-ranking.png" mode="aspectFit"></image>
<text class="strong-text">商品销售排行</text> <text class="strong-text">商品销售排行</text>
@ -410,6 +420,133 @@ export default {
RankContent RankContent
}, },
methods: { methods: {
// - uniapp
parseQRCodeParams: function (qParam) {
try {
// URL
var decodedUrl = decodeURIComponent(qParam)
console.log('解码后的URL:', decodedUrl)
//
var urlParts = decodedUrl.split('?')
if (urlParts.length < 2) {
console.log('二维码URL没有参数使用默认值')
return this.getDefaultParams()
}
var queryString = urlParts[1]
var params = {}
//
var pairs = queryString.split('&')
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i]
var equalIndex = pair.indexOf('=')
if (equalIndex > -1) {
var key = pair.substring(0, equalIndex)
var value = pair.substring(equalIndex + 1)
if (key && value !== '') {
try {
params[decodeURIComponent(key)] = decodeURIComponent(value)
} catch (e) {
// 使
params[key] = value
}
}
}
}
console.log('解析的参数对象:', params)
//
var finalParams = {
ProvinceCode: params.ProvinceCode || '530000', //
GroupType: params.GroupType || '1000',
time: params.time || this.lastDay,
ServerpartIds: params.ServerpartIds || ''
}
//
if (finalParams.time) {
var timeStr = finalParams.time
console.log('原始时间字符串:', timeStr)
// URL++
timeStr = timeStr.replace(/\+/g, ' ')
console.log('处理+号后:', timeStr)
//
var datePart = ''
var timePart = ''
if (timeStr.indexOf(' ') > -1) {
var parts = timeStr.split(' ')
datePart = parts[0]
timePart = parts[1] || ''
} else {
datePart = timeStr
}
// 2025/9/1 -> 2025/09/01
if (datePart.indexOf('/') > -1) {
var dateSegments = datePart.split('/')
if (dateSegments.length === 3) {
var year = dateSegments[0]
var month = dateSegments[1].length === 1 ? '0' + dateSegments[1] : dateSegments[1]
var day = dateSegments[2].length === 1 ? '0' + dateSegments[2] : dateSegments[2]
datePart = year + '/' + month + '/' + day
}
}
//
if (timePart && timePart.indexOf(':') > -1) {
var timeSegments = timePart.split(':')
if (timeSegments.length >= 2) {
var hour = timeSegments[0].length === 1 ? '0' + timeSegments[0] : timeSegments[0]
var minute = timeSegments[1].length === 1 ? '0' + timeSegments[1] : timeSegments[1]
var second = '00'
if (timeSegments[2]) {
second = timeSegments[2].length === 1 ? '0' + timeSegments[2] : timeSegments[2]
}
timePart = hour + ':' + minute + ':' + second
}
}
//
if (timePart) {
finalParams.time = datePart + ' ' + timePart
} else {
finalParams.time = datePart
}
console.log('最终时间格式:', finalParams.time)
//
if (finalParams.time.length < 8) {
console.log('时间格式不正确,使用默认时间')
finalParams.time = this.lastDay
}
}
console.log('最终参数:', finalParams)
return finalParams
} catch (error) {
console.log('解析二维码参数失败:', error)
return this.getDefaultParams()
}
},
// - uniapp
getDefaultParams: function () {
return {
ProvinceCode: '530000', //
GroupType: '1000',
time: this.lastDay,
ServerpartIds: ''
}
},
// //
initProvinceCode() { initProvinceCode() {
let provinceCode = '' let provinceCode = ''
@ -436,7 +573,7 @@ export default {
}, },
toggleCard(isup) { toggleCard(isup) {
this.isup = !isup this.isup = !isup
this.$forceUpdate() // $forceUpdateVue
}, },
bindDateChange(e) { // bindDateChange(e) { //
// let nowDate = this.theRequest.time // let nowDate = this.theRequest.time
@ -448,12 +585,17 @@ export default {
this.$util.cutDate(selectT, 'MM.DD', -7)] this.$util.cutDate(selectT, 'MM.DD', -7)]
uni.showLoading({ uni.showLoading({
title: '正在加载...', title: '正在加载...',
mask: true mask: false //
}) })
this.initData() //
// this.getTender() Promise.all([
this.todayAmount() this.initData(),
this.$forceUpdate() this.todayAmount()
]).catch(err => {
console.error('数据刷新失败:', err)
uni.hideLoading()
})
// $forceUpdate
} }
}, },
@ -472,15 +614,15 @@ export default {
}) })
this.$util.toNextRoute('navigateTo', severpartIndexPath) this.$util.toNextRoute('navigateTo', severpartIndexPath)
item.visited = true // 使Vue.set
this.$forceUpdate() this.$set(item, 'visited', true)
}, },
selectTab(name, index) { selectTab(name, index) {
this[name] = index this[name] = index
}, },
toggleRegion(item) { toggleRegion(item) {
item.show = !item.show ? true : false // 使Vue.set
this.$forceUpdate() this.$set(item, 'show', !item.show)
}, },
// / // /
toggleRegionCollapse(item) { toggleRegionCollapse(item) {
@ -515,7 +657,7 @@ export default {
totalTicketCount: res.Data.TOTALTICKET, totalTicketCount: res.Data.TOTALTICKET,
avrticketCount: this.$util.fmoney(avrticket, 2), avrticketCount: this.$util.fmoney(avrticket, 2),
} }
_this.$forceUpdate() // $forceUpdate
}) })
}, },
@ -616,8 +758,8 @@ export default {
}, },
toggleShow(i) { toggleShow(i) {
let item = this.regionList[i] let item = this.regionList[i]
item.show = !item.show // 使Vue.set
this.$forceUpdate() this.$set(item, 'show', !item.show)
}, },
defaultMsg() { defaultMsg() {
let option = null let option = null
@ -634,85 +776,127 @@ export default {
async initData() { // async initData() { //
let _this = this let _this = this
console.log('this.theRequest1', this.theRequest) console.log('this.theRequest1', this.theRequest)
// theRequest使
if (!this.theRequest) {
console.error('theRequest未初始化')
this.isLoading = false
this.showPage = false
uni.hideLoading()
return
}
this.theRequest.GroupType = 1000 this.theRequest.GroupType = 1000
this.theRequest.ServerpartIds = '' this.theRequest.ServerpartIds = ''
const [reginList, totalData, busniessTypePie, busniessTradePie, busniessAreaPie, bayonetPie] =
await anhuiYestodayRevenueData.getData(this.theRequest) //
if (this.theRequest.GroupType !== 1010) { try {
console.log('reginList', reginList) //
this.regionList = reginList // reginListModel[] const result = await anhuiYestodayRevenueData.getData(this.theRequest)
}
//
totalData.tickave = totalData.ticketCount > 0 ? this.$util.fmoney(
totalData.cashPay / totalData.ticketCount, 2) : 0
totalData.countave = totalData.totalCount > 0 ? this.$util.fmoney(
totalData.cashPay / totalData.totalCount, 2) : 0
totalData.totalMoneyShow = this.$util.fmoney(totalData.cashPay) // if (!result) {
totalData.dayOfShow = this.$util.cutDate(this.theRequest.time, 'MM月DD日') // console.error('数据获取失败')
totalData.budgetamoutShow = totalData.budgetAmount ? this.isLoading = false
_this.$util.fmoney(totalData.budgetAmount) : 0.00 // this.showPage = false
uni.hideLoading()
busniessTypePie.forEach((n, i) => { return
if (n.name === '自营') {
//
totalData.diffBudgetTotal = Math.abs(totalData.budgetAmount - n.data)
//
totalData.diffBili = totalData.budgetAmount > 0 ?
this.$util.fmoney((totalData.diffBudgetTotal /
totalData.budgetAmount) * 100, 2) : '100'
} }
});
this.headMsg = totalData
//
const [progressList, pieList] = this.getProgressData(busniessTypePie, totalData.cashPay)
this.modelProgress = progressList
//
var colors1 = ['#FFAC37', '#6B75B8'];
// console.log(pieList)
this.showPie({
id: 'modelCont',
data: pieList,
colors: colors1,
});
//
// const [reginList, totalData, busniessTypePie, busniessTradePie, busniessAreaPie, bayonetPie] = result
const [tprogressList, tpieList] = this.getProgressData(busniessTradePie, totalData.cashPay)
this.regionProgress = tprogressList if (this.theRequest.GroupType !== 1010) {
// console.log('reginList', reginList)
var colors2 = ['#5E67B4', '#4E5699', '#75B7AD', '#AFB7E6']; this.regionList = reginList // reginListModel[]
this.showPie({ }
id: 'businessCont', //
data: tpieList, totalData.tickave = totalData.ticketCount > 0 ? this.$util.fmoney(
colors: colors2, totalData.cashPay / totalData.ticketCount, 2) : 0
}); totalData.countave = totalData.totalCount > 0 ? this.$util.fmoney(
totalData.cashPay / totalData.totalCount, 2) : 0
// totalData.totalMoneyShow = this.$util.fmoney(totalData.cashPay) //
const [aprogressList, apieList] = this.getProgressData(busniessAreaPie, totalData.cashPay) totalData.dayOfShow = this.$util.cutDate(this.theRequest.time, 'MM月DD日') //
this.areaProgress = aprogressList totalData.budgetamoutShow = totalData.budgetAmount ?
// _this.$util.fmoney(totalData.budgetAmount) : 0.00 //
var colors3 = ['#FFAC37', '#d8ece9', '#f7f5f6', '#b2b7e3', '#F4B27A', '#F3B1C9', '#e0e3f7', '#FFE886', '#f7f5f6'];
this.showPie({
id: 'areaCont',
data: apieList,
colors: colors3,
});
// busniessTypePie.forEach((n, i) => {
if (this.theRequest.GroupType == 1000 && this.theRequest.ProvinceCode == 340000) { if (n.name === '自营') {
// //
const [bayonetList] = this.getBayonetData(bayonetPie) totalData.diffBudgetTotal = Math.abs(totalData.budgetAmount - n.data)
this.bayonetProgress = bayonetList //
} totalData.diffBili = totalData.budgetAmount > 0 ?
this.$util.fmoney((totalData.diffBudgetTotal /
totalData.budgetAmount) * 100, 2) : '100'
}
});
this.headMsg = totalData
//
const [progressList, pieList] = this.getProgressData(busniessTypePie, totalData.cashPay)
this.modelProgress = progressList
//
this.$nextTick(() => {
setTimeout(() => {
//
var colors1 = ['#FFAC37', '#6B75B8'];
if (pieList.length > 0) {
this.showPie({
id: 'modelCont',
data: pieList,
colors: colors1,
});
}
if (reginList.length) { //
const [tprogressList, tpieList] = this.getProgressData(busniessTradePie, totalData.cashPay)
this.regionProgress = tprogressList
//
var colors2 = ['#5E67B4', '#4E5699', '#75B7AD', '#AFB7E6'];
if (tpieList.length > 0) {
this.showPie({
id: 'businessCont',
data: tpieList,
colors: colors2,
});
}
//
const [aprogressList, apieList] = this.getProgressData(busniessAreaPie, totalData.cashPay)
this.areaProgress = aprogressList
//
var colors3 = ['#FFAC37', '#d8ece9', '#f7f5f6', '#b2b7e3', '#F4B27A', '#F3B1C9', '#e0e3f7', '#FFE886', '#f7f5f6'];
if (apieList.length > 0) {
this.showPie({
id: 'areaCont',
data: apieList,
colors: colors3,
});
}
}, 100);
});
//
if (this.theRequest.GroupType == 1000 && this.theRequest.ProvinceCode == 340000) {
//
const [bayonetList] = this.getBayonetData(bayonetPie)
this.bayonetProgress = bayonetList
}
// loading
// 使
this.showPage = true this.showPage = true
this.isLoading = false
uni.hideLoading()
} catch (error) {
console.error('initData执行错误:', error)
this.isLoading = false
this.showPage = false
uni.hideLoading()
uni.showToast({
title: '数据加载失败',
icon: 'none'
})
} }
this.isLoading = false
uni.hideLoading()
}, },
getProgressData(data, total) { getProgressData(data, total) {
var _data1 = []; var _data1 = [];
@ -820,7 +1004,7 @@ export default {
} else { } else {
this.wechatPushSalesList = {} this.wechatPushSalesList = {}
} }
this.$forceUpdate() // $forceUpdate
}, },
// //
handleRealRevenue() { handleRealRevenue() {
@ -855,19 +1039,59 @@ export default {
this.opacity = (options.scrollTop - 30) / 68 this.opacity = (options.scrollTop - 30) / 68
}, },
onLoad(option) { onLoad(option) {
console.log('AnhuiIndex onLoad 接收参数:', option)
//
if (option.q) {
console.log('扫码进入,解析二维码参数')
option = this.parseQRCodeParams(option.q)
console.log('解析后的参数:', option)
}
//
uni.showLoading({ uni.showLoading({
title: '正在加载...' title: '正在加载...',
mask: false //
}) })
if (option.ProvinceCode) { // if (option.ProvinceCode) { //
console.log('进入页面,参数:', JSON.stringify(option))
this.theRequest = option this.theRequest = option
option.time = this.$util.cutDate(option.time, 'YYYY-MM-DD')
option.month = this.$util.cutDate(option.time, 'YYYYMM') //
if (option.time) {
console.log('处理前的时间:', option.time)
// API
var dateForApi = option.time
if (option.time.indexOf(' ') > -1) {
dateForApi = option.time.split(' ')[0]
}
// API YYYY-MM-DD
option.time = this.$util.cutDate(dateForApi, 'YYYY-MM-DD')
option.month = this.$util.cutDate(option.time, 'YYYYMM')
console.log('API用时间格式:', option.time, '月份:', option.month)
} else {
option.time = this.lastDay
option.month = this.$util.cutDate(this.lastDay, 'YYYYMM')
}
console.log('处理后的theRequest:', JSON.stringify(this.theRequest))
// //
this.initProvinceCode() this.initProvinceCode()
this.initData() //
this.handleRealRevenue() Promise.all([
this.initData(),
this.handleRealRevenue()
]).catch(err => {
console.error('数据加载失败:', err)
this.isLoading = false
this.showPage = false
uni.hideLoading()
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
})
})
} else { // } else { //
if (this.PushAuthority.length > 0) { if (this.PushAuthority.length > 0) {
@ -884,8 +1108,20 @@ export default {
// //
this.initProvinceCode() this.initProvinceCode()
this.initData() //
this.handleRealRevenue() Promise.all([
this.initData(),
this.handleRealRevenue()
]).catch(err => {
console.error('数据加载失败:', err)
this.isLoading = false
this.showPage = false
uni.hideLoading()
uni.showToast({
title: '加载失败,请重试',
icon: 'none'
})
})
} else { } else {
uni.hideLoading() uni.hideLoading()
this.theRequest = null this.theRequest = null
@ -902,7 +1138,7 @@ export default {
this.getDetail(this.theRequest) this.getDetail(this.theRequest)
} }
// //
if (this.theRequest && (this.theRequest.ProvinceCode == "620000" || this.theRequest.ProvinceCode == "530000" || this.theRequest.ProvinceCode == '734100')) { if (this.theRequest && (this.theRequest.ProvinceCode == "620000" || this.theRequest.ProvinceCode == "530000")) {
this.getRankContent() this.getRankContent()
} }
}, },
@ -1233,7 +1469,7 @@ text.fs12 {
} }
.top-revenue-card .upLoad-text { .top-revenue-card .upLoad-text {
font-size: 28rpx; font-size: 32rpx;
} }
.check-unit { .check-unit {
@ -1257,7 +1493,7 @@ text.fs12 {
/* end */ /* end */
.modle-title { .modle-title {
padding: 0 32rpx 0 32rpx; padding: 0 32rpx 24rpx 32rpx;
font-size: 32rpx; font-size: 32rpx;
font-weight: 600; font-weight: 600;
color: #333; color: #333;
@ -1933,7 +2169,7 @@ canvas.operation-content {
} }
.ranking-content .ranking-list-unit { .ranking-content .ranking-list-unit {
font-size: 24rpx; font-size: 28rpx;
flex: 1; flex: 1;
} }
@ -2051,7 +2287,7 @@ canvas.operation-content {
} }
.tab-label { .tab-label {
font-size: 24rpx; font-size: 26rpx;
font-weight: 500; font-weight: 500;
line-height: 1.2; line-height: 1.2;
} }
@ -2133,7 +2369,7 @@ canvas.operation-content {
} }
.amount { .amount {
font-size: 24rpx; font-size: 32rpx;
font-weight: 700; font-weight: 700;
color: #27B25F; color: #27B25F;
font-family: 'DIN Alternate', 'Bahnschrift', monospace; font-family: 'DIN Alternate', 'Bahnschrift', monospace;
@ -2479,7 +2715,7 @@ canvas.operation-content {
} }
.upload-text { .upload-text {
font-size: 28rpx; font-size: 32rpx;
font-weight: 600; font-weight: 600;
color: #2c3e50; color: #2c3e50;
} }
@ -2496,7 +2732,7 @@ canvas.operation-content {
} }
.summary-value { .summary-value {
font-size: 24rpx; font-size: 28rpx;
font-weight: 600; font-weight: 600;
color: #27B25F; color: #27B25F;
font-family: 'DIN Alternate', 'Bahnschrift', monospace; font-family: 'DIN Alternate', 'Bahnschrift', monospace;
@ -2656,13 +2892,13 @@ canvas.operation-content {
} }
.region-name { .region-name {
font-size: 24rpx; font-size: 30rpx;
font-weight: 600; font-weight: 600;
color: #2c3e50; color: #2c3e50;
} }
.region-revenue { .region-revenue {
font-size: 28rpx; font-size: 32rpx;
font-weight: 700; font-weight: 700;
color: #27B25F; color: #27B25F;
font-family: 'DIN Alternate', 'Bahnschrift', monospace; font-family: 'DIN Alternate', 'Bahnschrift', monospace;
@ -2685,7 +2921,7 @@ canvas.operation-content {
} }
.metric-value { .metric-value {
font-size: 24rpx; font-size: 26rpx;
font-weight: 600; font-weight: 600;
font-family: 'DIN Alternate', 'Bahnschrift', monospace; font-family: 'DIN Alternate', 'Bahnschrift', monospace;
} }
@ -2774,4 +3010,59 @@ canvas.operation-content {
/* 微信小程序兼容性修正 - 移除不支持的特性 */ /* 微信小程序兼容性修正 - 移除不支持的特性 */
/* 移除 @media 查询,改用 flex 替代 grid */ /* 移除 @media 查询,改用 flex 替代 grid */
/* 加载骨架屏样式 */
.loading-skeleton {
padding: 20rpx;
background-color: #f8f9fa;
min-height: 100vh;
}
.skeleton-header {
height: 300rpx;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
border-radius: 16rpx;
margin-bottom: 24rpx;
}
.skeleton-cards {
display: flex;
gap: 16rpx;
margin-bottom: 24rpx;
}
.skeleton-card {
flex: 1;
height: 120rpx;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
border-radius: 12rpx;
}
.skeleton-list {
display: flex;
flex-direction: column;
gap: 12rpx;
}
.skeleton-item {
height: 100rpx;
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
border-radius: 12rpx;
}
@keyframes loading {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}
</style> </style>

View File

@ -1,6 +1,6 @@
import request from '@/util/index.js' import request from '@/util/index.js'
const methods = { const methods = {
async getData(obj,isServerPartDetail) { // 获取远程数据 async getData(obj, isServerPartDetail) { // 获取远程数据
let _this = this let _this = this
/* ts /* ts
type serverpartRegion = { type serverpartRegion = {
@ -14,64 +14,86 @@ const methods = {
} }
*/ */
// let regionList = [] // 营收上传列表 reginListModel[] // let regionList = [] // 营收上传列表 reginListModel[]
this.groupType = obj.GroupType this.groupType = obj.GroupType
const requestParamas = { const requestParamas = {
Statistics_Date: obj.time , Statistics_Date: obj.time,
Statistics_Month: obj.month , Statistics_Month: obj.month,
Province_Code: obj.ProvinceCode , Province_Code: obj.ProvinceCode,
pushProvinceCode: obj.ProvinceCode , pushProvinceCode: obj.ProvinceCode,
Serverpart_ID: obj.GroupType != 1020 ? obj.ServerpartIds : '', Serverpart_ID: obj.GroupType != 1020 ? obj.ServerpartIds : '',
SPRegionType_ID: obj.GroupType == 1020 ? obj.ServerpartIds : '', SPRegionType_ID: obj.GroupType == 1020 ? obj.ServerpartIds : '',
// Revenue_Include: 1 // Revenue_Include: 1
} }
const requestParamasBudget = { const requestParamasBudget = {
Statistics_Date: obj.time , Statistics_Date: obj.time,
Statistics_Month: obj.month , Statistics_Month: obj.month,
Province_Code: obj.ProvinceCode , Province_Code: obj.ProvinceCode,
pushProvinceCode: obj.ProvinceCode , pushProvinceCode: obj.ProvinceCode,
Serverpart_ID: obj.ServerpartIds ? obj.ServerpartIds : '' Serverpart_ID: obj.ServerpartIds ? obj.ServerpartIds : ''
} }
this.provinceCode = obj.ProvinceCode this.provinceCode = obj.ProvinceCode
// 营收数据
const data = await request.$webGet('CommercialApi/Revenue/GetRevenuePushList', requestParamas)
if (data.Result_Code != 100) return
// 在营门店数量统计 try {
const busniessCounts = await request.$webGet('CommercialApi/BaseInfo/GetShopCountList', requestParamas) // 并行请求优化同时发起所有API请求减少加载时间
if (busniessCounts.Result_Code != 100) return const [data, busniessCounts, tradeData, budgetAmount, mobileShare, mallDeliver, bayonetCount] = await Promise.all([
request.$webGet('CommercialApi/Revenue/GetRevenuePushList', requestParamas),
request.$webGet('CommercialApi/BaseInfo/GetShopCountList', requestParamas),
request.$webGet('CommercialApi/BaseInfo/GetBusinessTradeList', requestParamas),
request.$webGet('CommercialApi/Revenue/GetBudgetExpenseList', requestParamasBudget),
request.$webGet('CommercialApi/Revenue/GetMobileShare', requestParamas),
request.$webGet('CommercialApi/Revenue/GetMallDeliver', requestParamas),
request.$webGet('CommercialApi/Revenue/GetSPBayonetList', requestParamas)
])
// 业态关系 // 检查数据有效性
const tradeData = await request.$webGet('CommercialApi/BaseInfo/GetBusinessTradeList', requestParamas) if (data.Result_Code != 100 ||
if (tradeData.Result_Code != 100) return busniessCounts.Result_Code != 100 ||
tradeData.Result_Code != 100 ||
budgetAmount.Result_Code != 100 ||
mobileShare.Result_Code != 100 ||
mallDeliver.Result_Code != 100 ||
bayonetCount.Result_Code != 100) {
console.error('部分API请求失败', {
data: data.Result_Code,
busniessCounts: busniessCounts.Result_Code,
tradeData: tradeData.Result_Code,
budgetAmount: budgetAmount.Result_Code,
mobileShare: mobileShare.Result_Code,
mallDeliver: mallDeliver.Result_Code,
bayonetCount: bayonetCount.Result_Code
})
// 返回一个默认的空数据结构而不是undefined
return [[], {
cashPay: 0,
ticketCount: 0,
totalCount: 0,
uploadState: '0/0'
}, [], [], [], []]
}
// 计划营收金额 if (isServerPartDetail) { // 是服务区营收推送页面
const budgetAmount = await request.$webGet('CommercialApi/Revenue/GetBudgetExpenseList', requestParamasBudget) return _this.getSeverpartReginList(data.Result_Data.List, busniessCounts.Result_Data.List,
if (budgetAmount.Result_Code != 100) return tradeData.Result_Data.List, budgetAmount.Result_Data.List)
}
return _this.getReginList(data.Result_Data.List, busniessCounts.Result_Data.List,
tradeData.Result_Data.List, budgetAmount.Result_Data.List,
bayonetCount.Result_Data.List, mobileShare.Result_Data, mallDeliver.Result_Data)
// [reginList, totalData, busniessTypePie, busniessTradePie]
// 移动支付分账数据 } catch (error) {
const mobileShare = await request.$webGet('CommercialApi/Revenue/GetMobileShare', requestParamas) console.error('API请求出错:', error)
if (mobileShare.Result_Code != 100) return // 返回默认空数据结构
return [[], {
// 万佳商城配送数据 cashPay: 0,
const mallDeliver = await request.$webGet('CommercialApi/Revenue/GetMallDeliver', requestParamas) ticketCount: 0,
if (mallDeliver.Result_Code != 100) return totalCount: 0,
uploadState: '0/0'
// 片区车流量 }, [], [], [], []]
const bayonetCount = await request.$webGet('CommercialApi/Revenue/GetSPBayonetList', requestParamas)
if (bayonetCount.Result_Code != 100) return
if (isServerPartDetail) { // 是服务区营收推送页面
return _this.getSeverpartReginList(data.Result_Data.List, busniessCounts.Result_Data.List,
tradeData.Result_Data.List, budgetAmount.Result_Data.List)
} }
return _this.getReginList(data.Result_Data.List, busniessCounts.Result_Data.List,
tradeData.Result_Data.List, budgetAmount.Result_Data.List,
bayonetCount.Result_Data.List, mobileShare.Result_Data, mallDeliver.Result_Data)
// [reginList, totalData, busniessTypePie, busniessTradePie]
}, },
getTotalShowData(newData, oldData,index) { getTotalShowData(newData, oldData, index) {
// <TotalModel> // <TotalModel>
/* /*
type TotalModel = { type TotalModel = {
ticketCount: number // 客单数量 , ticketCount: number // 客单数量 ,
@ -84,22 +106,22 @@ const methods = {
} }
*/ */
if (index>0) { if (index > 0) {
oldData.ticketCount += newData.TicketCount oldData.ticketCount += newData.TicketCount
oldData.totalCount += newData.TotalCount oldData.totalCount += newData.TotalCount
oldData.totalOffAmount += newData.TotalOffAmount oldData.totalOffAmount += newData.TotalOffAmount
oldData.mobilePayment += newData.MobilePayment oldData.mobilePayment += newData.MobilePayment
oldData.cashPay += newData.CashPay oldData.cashPay += newData.CashPay
oldData.diffLessPrice += newData.Different_Price_Less oldData.diffLessPrice += newData.Different_Price_Less
oldData.diffMorePrice += newData.Different_Price_More oldData.diffMorePrice += newData.Different_Price_More
if(newData.BusinessType==1000){ // 商超 if (newData.BusinessType == 1000) { // 商超
oldData.scCount = oldData.scCount ? oldData.scCount + 1 : 1 oldData.scCount = oldData.scCount ? oldData.scCount + 1 : 1
oldData.scCashPay = oldData.scCashPay ? oldData.scCashPay + newData.CashPay : newData.CashPay oldData.scCashPay = oldData.scCashPay ? oldData.scCashPay + newData.CashPay : newData.CashPay
} }
if(newData.BusinessType==3000){ // 餐饮 if (newData.BusinessType == 3000) { // 餐饮
oldData.cyCount = oldData.cyCount ? oldData.cyCount + 1 : 1 oldData.cyCount = oldData.cyCount ? oldData.cyCount + 1 : 1
oldData.cyCashPay = oldData.cyCashPay ? oldData.cyCashPay + newData.CashPay : newData.CashPay oldData.cyCashPay = oldData.cyCashPay ? oldData.cyCashPay + newData.CashPay : newData.CashPay
} }
} else { } else {
oldData.ticketCount = newData.TicketCount oldData.ticketCount = newData.TicketCount
@ -110,26 +132,26 @@ const methods = {
oldData.diffLessPrice = newData.Different_Price_Less oldData.diffLessPrice = newData.Different_Price_Less
oldData.diffMorePrice = newData.Different_Price_More oldData.diffMorePrice = newData.Different_Price_More
if(newData.BusinessType==1000){ // 商超 if (newData.BusinessType == 1000) { // 商超
oldData.scCount = 1 oldData.scCount = 1
oldData.scCashPay = newData.CashPay oldData.scCashPay = newData.CashPay
} }
if(newData.BusinessType==3000){ // 餐饮 if (newData.BusinessType == 3000) { // 餐饮
oldData.cyCount = 1 oldData.cyCount = 1
oldData.cyCashPay = newData.CashPay oldData.cyCashPay = newData.CashPay
} }
} }
return {...oldData} return { ...oldData }
}, },
getBusniessPie(typeName, item, list) { // 经营模式数据 getBusniessPie(typeName, item, list) { // 经营模式数据
const oldData = list.find(m => m.name === item[typeName]) const oldData = list.find(m => m.name === item[typeName])
if (oldData) { if (oldData) {
oldData.data = Number((oldData.data+ item.CashPay).toFixed(2)) oldData.data = Number((oldData.data + item.CashPay).toFixed(2))
oldData.value = Number((oldData.value+ item.CashPay).toFixed(2)) oldData.value = Number((oldData.value + item.CashPay).toFixed(2))
} else { } else {
list.push({ list.push({
name: item[typeName], name: item[typeName],
@ -159,7 +181,7 @@ const methods = {
oldRegion.MediumVehicle_Count = Number((oldRegion.MediumVehicle_Count + item.MediumVehicle_Count).toFixed(2)) oldRegion.MediumVehicle_Count = Number((oldRegion.MediumVehicle_Count + item.MediumVehicle_Count).toFixed(2))
oldRegion.LargeVehicle_Count = Number((oldRegion.LargeVehicle_Count + item.LargeVehicle_Count).toFixed(2)) oldRegion.LargeVehicle_Count = Number((oldRegion.LargeVehicle_Count + item.LargeVehicle_Count).toFixed(2))
} }
else{ else {
oldData.regionList.push({ oldData.regionList.push({
name: item["Serverpart_Region"], name: item["Serverpart_Region"],
Vehicle_Count: item.Vehicle_Count, Vehicle_Count: item.Vehicle_Count,
@ -212,7 +234,7 @@ const methods = {
return [...list] return [...list]
}, },
getSeverpartReginList(data, shopCountList,tradeList,budgetAmount){ getSeverpartReginList(data, shopCountList, tradeList, budgetAmount) {
let _this = this let _this = this
let totalShow = {} // 总营收数据统计 let totalShow = {} // 总营收数据统计
let list = [] // 上传营收列表数据 let list = [] // 上传营收列表数据
@ -222,13 +244,13 @@ const methods = {
data.map(async (n, index) => { data.map(async (n, index) => {
n.show = false n.show = false
totalShow = _this.getTotalShowData(n, totalShow,index); // 总营收数据统计 totalShow = _this.getTotalShowData(n, totalShow, index); // 总营收数据统计
// 寻找门店父业态 // 寻找门店父业态
let trade = tradeList.find(t=>t.BUSINESSTRADE_NAME==n.BusinessTrade_Name) let trade = tradeList.find(t => t.BUSINESSTRADE_NAME == n.BusinessTrade_Name)
if(trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他')==-1 ) { if (trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他') == -1) {
n.tradename = trade.BUSINESSTRADE_PNAME n.tradename = trade.BUSINESSTRADE_PNAME
}else{ } else {
n.tradename = '其他' n.tradename = '其他'
} }
@ -237,16 +259,16 @@ const methods = {
busniessTradeFathPie = _this.getBusniessPie('tradename', n, busniessTradeFathPie) busniessTradeFathPie = _this.getBusniessPie('tradename', n, busniessTradeFathPie)
}) })
totalShow.serverpartname = data[0].Serverpart_Name totalShow.serverpartname = data[0].Serverpart_Name
totalShow.uploadState = data.length+'/'+ (shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT: 0) totalShow.uploadState = data.length + '/' + (shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT : 0)
totalShow.uploadCount = data.filter(n=>n.Revenue_Upload>0).length totalShow.uploadCount = data.filter(n => n.Revenue_Upload > 0).length
totalShow.totalUploadCount = shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT: 0 totalShow.totalUploadCount = shopCountList.length ? shopCountList[0].SHOP_BUSINESSCOUNT : 0
totalShow.budgetAmount = 0 totalShow.budgetAmount = 0
if(budgetAmount.length){ if (budgetAmount.length) {
totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT
} }
return [ totalShow, busniessTypePie, busniessTradePie,busniessTradeFathPie ] return [totalShow, busniessTypePie, busniessTradePie, busniessTradeFathPie]
}, },
getReginList(data, shopCountList,tradeList,budgetAmount,bayonetCount, mobileShare, mallDeliver) { getReginList(data, shopCountList, tradeList, budgetAmount, bayonetCount, mobileShare, mallDeliver) {
let _this = this let _this = this
let totalShow = {} // 总营收数据统计 let totalShow = {} // 总营收数据统计
@ -260,12 +282,12 @@ const methods = {
n.show = false n.show = false
// 寻找门店父业态 // 寻找门店父业态
let trade = tradeList.find(t=>t.BUSINESSTRADE_NAME==n.BusinessTrade_Name) let trade = tradeList.find(t => t.BUSINESSTRADE_NAME == n.BusinessTrade_Name)
if(trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他')==-1 ) { if (trade && trade.BUSINESSTRADE_PNAME && trade.BUSINESSTRADE_PNAME.indexOf('其他') == -1) {
n.tradename = trade.BUSINESSTRADE_PNAME n.tradename = trade.BUSINESSTRADE_PNAME
}else{ } else {
n.tradename = _this.provinceCode==340000? '其他' : (n.BusinessTrade_Name || '其他') n.tradename = _this.provinceCode == 340000 ? '其他' : (n.BusinessTrade_Name || '其他')
} }
// 上传营收情况 // 上传营收情况
let regin = list.find(m => m.name === n.SPRegionType_Name) let regin = list.find(m => m.name === n.SPRegionType_Name)
@ -284,42 +306,42 @@ const methods = {
list.push({ list.push({
name: n.SPRegionType_Name, // 区域名称 name: n.SPRegionType_Name, // 区域名称
cashpay: n.CashPay, cashpay: n.CashPay,
uploadcount: n.Revenue_Upload>0 ? 1: 0, // 区域上传数量 uploadcount: n.Revenue_Upload > 0 ? 1 : 0, // 区域上传数量
totalcount: reginShopCount, totalcount: reginShopCount,
child: [{ child: [{
serverpart_Id: n.Serverpart_ID, serverpart_Id: n.Serverpart_ID,
serverpart_Name: n.Serverpart_Name, serverpart_Name: n.Serverpart_Name,
cashpay: n.CashPay, cashpay: n.CashPay,
uploadcount: n.Revenue_Upload>0 ? 1: 0, uploadcount: n.Revenue_Upload > 0 ? 1 : 0,
totalcount: serverpartShopCount totalcount: serverpartShopCount
}] }]
}) })
} else { } else {
regin.cashpay += n.CashPay regin.cashpay += n.CashPay
regin.uploadcount += n.Revenue_Upload>0 ? 1: 0 regin.uploadcount += n.Revenue_Upload > 0 ? 1 : 0
let serverpart = regin.child.find(m => m.serverpart_Name === n.Serverpart_Name) let serverpart = regin.child.find(m => m.serverpart_Name === n.Serverpart_Name)
if (serverpart) { if (serverpart) {
serverpart.cashpay += n.CashPay serverpart.cashpay += n.CashPay
serverpart.uploadcount += n.Revenue_Upload>0 ? 1: 0 serverpart.uploadcount += n.Revenue_Upload > 0 ? 1 : 0
} else { } else {
regin.child.push({ regin.child.push({
serverpart_Id: n.Serverpart_ID, serverpart_Id: n.Serverpart_ID,
serverpart_Name: n.Serverpart_Name, serverpart_Name: n.Serverpart_Name,
cashpay: n.CashPay, cashpay: n.CashPay,
uploadcount: n.Revenue_Upload>0 ? 1: 0, uploadcount: n.Revenue_Upload > 0 ? 1 : 0,
totalcount: serverpartShopCount totalcount: serverpartShopCount
}) })
} }
regin.child.sort((a, b) => b.cashpay - a.cashpay) regin.child.sort((a, b) => b.cashpay - a.cashpay)
} }
totalShow = _this.getTotalShowData(n, totalShow,index); // 总营收数据统计 totalShow = _this.getTotalShowData(n, totalShow, index); // 总营收数据统计
busniessTypePie = _this.getBusniessPie('Business_TypeName', n, busniessTypePie) busniessTypePie = _this.getBusniessPie('Business_TypeName', n, busniessTypePie)
busniessTradePie = _this.getBusniessPie('tradename', n, busniessTradePie) busniessTradePie = _this.getBusniessPie('tradename', n, busniessTradePie)
if (this.groupType == 1000){ if (this.groupType == 1000) {
busniessAreaPie = _this.getBusniessPie('SPRegionType_Name', n, busniessAreaPie) busniessAreaPie = _this.getBusniessPie('SPRegionType_Name', n, busniessAreaPie)
} }
}) })
list.sort((a, b) => b.cashpay - a.cashpay) list.sort((a, b) => b.cashpay - a.cashpay)
@ -343,18 +365,18 @@ const methods = {
}) })
} }
totalShow.uploadState = data.filter(n=>n.Revenue_Upload>0).length+'/'+totalUploadCount totalShow.uploadState = data.filter(n => n.Revenue_Upload > 0).length + '/' + totalUploadCount
totalShow.budgetAmount = 0 totalShow.budgetAmount = 0
if(_this.provinceCode==620000){ if (_this.provinceCode == 620000) {
const ele = list.find(n=>n.name=="通美公司") const ele = list.find(n => n.name == "通美公司")
totalShow.tmCrashPay = ele ? ele.cashpay :'0.00' totalShow.tmCrashPay = ele ? ele.cashpay : '0.00'
} }
if(budgetAmount.length){ if (budgetAmount.length) {
totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT totalShow.budgetAmount = budgetAmount[0].BUDGET_AMOUNT
} }
return [list, totalShow, busniessTypePie, busniessTradePie,busniessAreaPie,bayonetPie] return [list, totalShow, busniessTypePie, busniessTradePie, busniessAreaPie, bayonetPie]
} }
} }
export default methods ; export default methods;

View File

@ -153,7 +153,7 @@
<div class="ct01"> <div class="ct01">
<text class="strong-text">{{ <text class="strong-text">{{
$util.fmoney(item.CASHPAY, 2) $util.fmoney(item.CASHPAY, 2)
}}</text> }}</text>
<text></text> <text></text>
</div> </div>
</div> </div>
@ -195,7 +195,7 @@
<div class="ct01"> <div class="ct01">
<text class="strong-text">{{ <text class="strong-text">{{
$util.fmoney(item.CASHPAY, 2) $util.fmoney(item.CASHPAY, 2)
}}</text> }}</text>
<text></text> <text></text>
</div> </div>
</div> </div>
@ -247,7 +247,7 @@
<div class="ct01"> <div class="ct01">
<text class="strong-text">{{ <text class="strong-text">{{
$util.fmoney(item.CASHPAY, 2) $util.fmoney(item.CASHPAY, 2)
}}</text> }}</text>
<text></text> <text></text>
</div> </div>
</div> </div>
@ -557,7 +557,7 @@ export default {
methods: { methods: {
toggleCard(isup) { toggleCard(isup) {
this.isup = !isup; this.isup = !isup;
this.$forceUpdate(); // $forceUpdateVue
}, },
bindDateChange(e) { bindDateChange(e) {
// //
@ -574,10 +574,16 @@ export default {
title: "正在加载...", title: "正在加载...",
mask: true, mask: true,
}); });
this.getData(); //
this.getTender(); Promise.all([
this.todayAmount(); this.getData(),
this.$forceUpdate(); this.getTender(),
this.todayAmount()
]).catch(err => {
console.error('数据刷新失败:', err);
uni.hideLoading();
});
// $forceUpdate
} }
}, },
toDetail(item, provinceId) { toDetail(item, provinceId) {
@ -610,15 +616,15 @@ export default {
"navigateTo", "navigateTo",
canToSeverpartIndex ? severpartIndexPath : serverpartUploadPath canToSeverpartIndex ? severpartIndexPath : serverpartUploadPath
); );
item.visited = true; // 使Vue.set
this.$forceUpdate(); this.$set(item, 'visited', true);
}, },
selectTab(name, index) { selectTab(name, index) {
this[name] = index; this[name] = index;
}, },
toggleRegion(item) { toggleRegion(item) {
item.show = !item.show ? true : false; // 使Vue.set
this.$forceUpdate(); this.$set(item, 'show', !item.show);
}, },
touchPie(e, id) { touchPie(e, id) {
rincanvas[id].showToolTip(e, { rincanvas[id].showToolTip(e, {
@ -647,7 +653,7 @@ export default {
totalTicketCount: res.Data.TOTALTICKET, totalTicketCount: res.Data.TOTALTICKET,
avrticketCount: this.$util.fmoney(avrticket, 2), avrticketCount: this.$util.fmoney(avrticket, 2),
}; };
_this.$forceUpdate(); // $forceUpdateVue
}); });
}, },
getRankmMap(list) { getRankmMap(list) {
@ -660,7 +666,7 @@ export default {
}); });
return map; return map;
}, },
getData() { async getData() {
let _this = this; let _this = this;
let theRequest = _this.theRequest; let theRequest = _this.theRequest;
let provinceCode = _this.theRequest.ProvinceCode; let provinceCode = _this.theRequest.ProvinceCode;
@ -672,7 +678,7 @@ export default {
Statistics_Date: theRequest.time, Statistics_Date: theRequest.time,
}; };
this.$request.$get("getRevenuePush", arr).then((res) => { return this.$request.$get("getRevenuePush", arr).then((res) => {
console.log("res", res); console.log("res", res);
_this.isLoading = false; _this.isLoading = false;
if (res.ResultCode != 100) { if (res.ResultCode != 100) {
@ -711,7 +717,7 @@ export default {
} }
uni.hideLoading(); uni.hideLoading();
_this.showPage = true; _this.showPage = true;
_this.$forceUpdate(); // $forceUpdateVue
}); });
function sortMount(list) { function sortMount(list) {
@ -1182,8 +1188,8 @@ export default {
}, },
toggleShow(i) { toggleShow(i) {
let item = this.regionList[i]; let item = this.regionList[i];
item.show = !item.show; // 使Vue.set
this.$forceUpdate(); this.$set(item, 'show', !item.show);
}, },
changeDate(name, index) { changeDate(name, index) {
@ -1200,7 +1206,7 @@ export default {
}); });
}, },
getTender() { async getTender() {
// //
let _this = this; let _this = this;
let obj = this.theRequest; let obj = this.theRequest;
@ -1216,7 +1222,7 @@ export default {
2: [], 2: [],
3: [], 3: [],
}; };
_this.$request return _this.$request
.$webGet("WeChat/GetRevenueTrends", { .$webGet("WeChat/GetRevenueTrends", {
Statictics_Type: "Week", Statictics_Type: "Week",
Report_Type: Report_Type[typeIndex], Report_Type: Report_Type[typeIndex],
@ -1266,7 +1272,7 @@ export default {
}, },
], ],
}); });
_this.$forceUpdate(); // $forceUpdateVue
}); });
bili.forEach((biliName, i) => { bili.forEach((biliName, i) => {
if (i == 1) { if (i == 1) {
@ -1345,58 +1351,48 @@ export default {
}, },
onLoad(option) { onLoad(option) {
console.log("indexOption", option); console.log("indexOption", option);
uni.showLoading({
title: "正在加载...",
});
const toSnhuiPageProvinceCode = [ const toSnhuiPageProvinceCode = [
340000, 520000, 451200, 510000, 530000, 620000, 630000, 330200, 330300, 734100 340000, 520000, 451200, 510000, 530000, 620000, 630000, 330200, 330300, 734100
]; // ]; //
//
if (option.ProvinceCode) { if (option.ProvinceCode) {
// // -
console.log(
"12321312",
toSnhuiPageProvinceCode.indexOf(parseInt(option.ProvinceCode))
);
if (toSnhuiPageProvinceCode.indexOf(parseInt(option.ProvinceCode)) > -1) { if (toSnhuiPageProvinceCode.indexOf(parseInt(option.ProvinceCode)) > -1) {
// 451200510000520000620000630000330200 // loading
uni.redirectTo({ const url = "/pages/everdayRenven/AnhuiIndex?ProvinceCode=" +
url: option.ProvinceCode +
"/pages/everdayRenven/AnhuiIndex?ProvinceCode=" + "&time=" +
option.ProvinceCode + option.time +
"&time=" + "&GroupType=" +
option.time + option.GroupType +
"&GroupType=" + "&ServerpartIds=" +
option.GroupType + option.ServerpartIds;
"&ServerpartIds=" +
option.ServerpartIds, console.log('推送跳转到AnhuiIndex参数:', url);
}); uni.redirectTo({ url });
return; return;
} }
this.theRequest = option;
option.time = this.$util.cutDate(option.time, "YYYY-MM-DD");
this.getData();
this.getTender();
} else { } else {
// // -
if (this.PushAuthority.length > 0) { if (this.PushAuthority.length > 0) {
console.log(1);
this.theRequest = this.defaultMsg() || {}; this.theRequest = this.defaultMsg() || {};
if ( if (
toSnhuiPageProvinceCode.indexOf(this.theRequest.ProvinceCode) > -1 toSnhuiPageProvinceCode.indexOf(this.theRequest.ProvinceCode) > -1
) { ) {
uni.redirectTo({ //
url: "/pages/everdayRenven/AnhuiIndex", const url = "/pages/everdayRenven/AnhuiIndex?" +
}); "ProvinceCode=" + this.theRequest.ProvinceCode +
"&GroupType=" + (this.theRequest.GroupType || '1000') +
"&time=" + this.lastDay +
"&ServerpartIds=" + (this.theRequest.ServerpartIds || '');
console.log('默认跳转到AnhuiIndex参数:', url);
uni.redirectTo({ url });
return; return;
} }
this.theRequest.time = this.lastDay;
this.getData();
this.getTender();
this.nowTab = this.theRequest.ProvinceCode == 340000 ? 4 : 1;
} else { } else {
uni.hideLoading();
this.theRequest = null; this.theRequest = null;
this.isLoading = false; this.isLoading = false;
this.showPage = false; this.showPage = false;
@ -1404,11 +1400,37 @@ export default {
return; return;
} }
} }
//
uni.showLoading({
title: "正在加载...",
mask: false
});
if (option.ProvinceCode) {
this.theRequest = option;
option.time = this.$util.cutDate(option.time, "YYYY-MM-DD");
} else {
this.theRequest.time = this.lastDay;
this.nowTab = this.theRequest.ProvinceCode == 340000 ? 4 : 1;
}
//
Promise.all([
this.getData(),
this.getTender(),
this.todayAmount()
]).catch(err => {
console.error('数据加载失败:', err);
uni.hideLoading();
this.isLoading = false;
});
this.sevenDate = [ this.sevenDate = [
this.$util.cutDate(new Date(this.theRequest.time), "MM.DD", -13), this.$util.cutDate(new Date(this.theRequest.time), "MM.DD", -13),
this.$util.cutDate(new Date(this.theRequest.time), "MM.DD", -7), this.$util.cutDate(new Date(this.theRequest.time), "MM.DD", -7),
]; ];
this.todayAmount();
if (this.theRequest.GroupType == 1010) { if (this.theRequest.GroupType == 1010) {
this.getDetail(this.theRequest); this.getDetail(this.theRequest);
} }

View File

@ -1,187 +1,254 @@
<template> <template>
<view class="page-card" v-if="!isLoading"> <view class="page-card" v-if="!isLoading">
<view class="head-card" v-show="pageMsg.Serverpart_Name" @tap="toTrend" > <view class="head-card" v-show="pageMsg.Serverpart_Name" @tap="toTrend">
<view class="uni-flex jc-between ai-center text-strong"> <view class="uni-flex jc-between ai-center text-strong">
<view class=""> {{pageMsg.Serverpart_Name}} </view> <view class=""> {{ pageMsg.Serverpart_Name }} </view>
<view class=""> ¥{{$util.fmoney(pageMsg.Serverpart_Revenue,2)}} </view> <view class=""> ¥{{ $util.fmoney(pageMsg.Serverpart_Revenue, 2) }} </view>
</view> </view>
<view class="uni-flex jc-between ai-center"> <view class="uni-flex jc-between ai-center">
<text class=""> {{pageMsg.Serverpart_S||'南/东区'}} &nbsp; &nbsp;¥{{$util.fmoney(pageMsg.Serverpart_RevenueS,2)}}</text> <text class=""> {{ pageMsg.Serverpart_S || '南/东区' }} &nbsp;
<text class=""> {{pageMsg.Serverpart_N||'北/西区'}} &nbsp; &nbsp;¥{{$util.fmoney(pageMsg.Serverpart_RevenueN,2)}}</text> &nbsp;¥{{ $util.fmoney(pageMsg.Serverpart_RevenueS, 2) }}</text>
<text class=""> {{ pageMsg.Serverpart_N || '北/西区' }} &nbsp;
&nbsp;¥{{ $util.fmoney(pageMsg.Serverpart_RevenueN, 2) }}</text>
</view> </view>
</view> </view>
<view class="page-list"> <view class="page-list" v-if="pageMsg.ShopList && pageMsg.ShopList.length > 0">
<view v-for="(dateItem,i) in pageMsg.revenueReportDetilsDates" :key="i"> <!-- <view v-for="(dateItem,i) in pageMsg.revenueReportDetilsDates" :key="i">-->
<text class="list-date"> {{$util.cutDate(dateItem.Statistics_Date,'MM.DD')}}</text> <!-- <text class="list-date"> {{// $util.cutDate(dateItem.Statistics_Date,'MM.DD')}}</text>-->
<view class="cell-body uni-flex ai-center" v-for="(item,i) in dateItem.revenueReportDetils" :key="i"> <view class="cell-body uni-flex ai-center" v-for="(item, i) in pageMsg.ShopList" :key="i">
<image :src="item.BusinessType_Logo || '/static/images/revenue/operating-shop.png'" mode="aspectFit"></image> <image :src="item.BusinessType_Logo || '/static/images/revenue/operating-shop.png'" mode="aspectFit">
<view class=""> </image>
<view class="uni-flex ai-center jc-between"> <view class="">
<text>{{item.BusinessType_Name}}</text> <view class="uni-flex ai-center jc-between">
<text class="shop-total"> ¥{{$util.fmoney(item.BusinessType_Revenue,2)}}</text> <text>{{ item.BusinessType_Name }}</text>
</view> <text class="shop-total"> ¥{{ $util.fmoney(item.BusinessType_Revenue, 2) }}</text>
<view class="uni-flex ai-center jc-between"> </view>
<text class="type-text" :class="{'scan':item.Upload_Type==1,'port':item.Upload_Type==2}"> <view class="uni-flex ai-center jc-between">
<template v-if="item.Upload_Type==1"> <text style="display: inline-block;width: 20%" class="type-text"
扫码上传 :class="{ 'scan': item.Upload_Type == 1, 'port': item.Upload_Type == 2 }">
</template> <template v-if="item.Upload_Type == 1">
<template v-else-if="item.Upload_Type==2" > 扫码上传
接口传输 </template>
</template> <template v-else-if="item.Upload_Type == 2">
<template v-else> 接口传输
自动上传 </template>
</template> <template v-else>
<!-- <text class="type-text scan" v-if="item.Upload_Type==1" >扫码上传</text> 自动上传
</template>
<!-- <text class="type-text scan" v-if="item.Upload_Type==1" >扫码上传</text>
<text class="type-text port" >接口传输</text> <text class="type-text port" >接口传输</text>
<text v-else>自动上传</text> --> <text v-else>自动上传</text> -->
</text> </text>
<view class="uni-flex ai-center"> <view class="uni-flex ai-center" style="display: inline-block;width: 80%">
<text class="text-coast">{{item.Serverpart_S||'南/东区'}}: ¥{{$util.fmoney(item.Serverpart_RevenueS,2)}}</text> <div style="display: inline-block;width: 48%;text-align: left;margin-right: 4%"
<text class="text-coast">{{item.Serverpart_N||'北/西区'}}: ¥{{$util.fmoney(item.Serverpart_RevenueN,2)}}</text> class="text-coast">
</view> <text style="display: inline-block;width: 40px;text-align: left">
{{ item.Serverpart_RevenueS === 0 || item.Serverpart_RevenueS ?
`${item.Serverpart_S}
`: '' }}
</text>
<text style="display: inline-block;width: calc(100% - 50px);margin-left: 10px">
{{ item.Serverpart_RevenueS === 0 || item.Serverpart_RevenueS ?
`¥${$util.fmoney(item.Serverpart_RevenueS, 2)}` : '' }}
</text>
</div>
<div style="display: inline-block;width: 48%;text-align: right" class="text-coast">
<text style="display: inline-block;width: 40px;text-align: left">
{{ item.Serverpart_RevenueN === 0 || item.Serverpart_RevenueN ?
`${item.Serverpart_N}
`: '' }}
</text>
<text style="display: inline-block;width: calc(100% - 50px);margin-left: 10px">
{{ item.Serverpart_RevenueN === 0 || item.Serverpart_RevenueN ?
`¥${$util.fmoney(item.Serverpart_RevenueN, 2)}` : '' }}
</text>
</div>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!-- </view>-->
</view> </view>
<view class="" v-if="!isLoading && !pageMsg.Serverpart_Name"> <view class="" v-if="!isLoading && !pageMsg.Serverpart_Name">
<noFound nodata="true" :text="noDataText"/> <noFound nodata="true" :text="noDataText" />
</view> </view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
data() { data() {
return { return {
isLoading: true, isLoading: true,
pageMsg: {}, pageMsg: {},
pageOption: {}, pageOption: {},
noDataText: '抱歉,没有数据,请稍后重试' noDataText: '抱歉,没有数据,请稍后重试'
}
},
methods: {
toTrend(){
this.$util.toNextRoute('navigateTo','/pages/operatingStatements/operatingTrend?name='+this.pageMsg.Serverpart_Name+'&time='+this.pageOption.et+'&id='+this.pageOption.id+'&ProvinceCode='+this.pageOption.pcode)
},
getDetail(obj){
let _this = this
uni.showLoading({
title:'正在加载...',
mask:true
})
_this.$request.$webGet('WeChat/GetRevenueReportDetils',{
startTime: obj.st,
endTime: obj.et,
Serverpart_Id: obj.id,
pushProvinceCode: obj.pcode
}).then(res=>{
if(res.Result_Code==100) {
_this.pageMsg = res.Result_Data
}else{
_this.noDataText = res.Result_Desc
}
uni.hideLoading()
_this.isLoading = false
})
},
},
onLoad(op) {
this.pageOption = op
this.getDetail(op)
} }
},
methods: {
toTrend() {
this.$util.toNextRoute('navigateTo', '/pages/operatingStatements/operatingTrend?name=' + this.pageMsg.Serverpart_Name + '&time=' + this.pageOption.et + '&id=' + this.pageOption.id + '&ProvinceCode=' + this.pageOption.pcode)
},
getDetail(obj) {
let _this = this
uni.showLoading({
title: '正在加载...',
mask: true
})
const req = {
provinceCode: obj.pcode,
serverpartId: obj.id,
startTime: obj.st,
endTime: obj.et,
}
_this.$request.$webGet('CommercialApi/Revenue/GetRevenueReportDetil', req).then((res) => {
console.log('dadasda', res);
if (res.Result_Code == 100) {
_this.pageMsg = res.Result_Data
} else {
_this.noDataText = res.Result_Desc
}
uni.hideLoading()
_this.isLoading = false
})
// _this.$request.$webGet('WeChat/GetRevenueReportDetils',{
// startTime: obj.st,
// endTime: obj.et,
// Serverpart_Id: obj.id,
// pushProvinceCode: obj.pcode
// }).then(res=>{
// if(res.Result_Code==100) {
// _this.pageMsg = res.Result_Data
// }else{
// _this.noDataText = res.Result_Desc
// }
// uni.hideLoading()
// _this.isLoading = false
// })
},
},
onLoad(op) {
this.pageOption = op
this.getDetail(op)
} }
}
</script> </script>
<style> <style>
page { page {
background-color: #fff; background-color: #fff;
} }
.page-card {
margin: 30rpx 20rpx;
} .page-card {
.head-card { margin: 30rpx 20rpx;
padding: 30rpx 35rpx;
background: linear-gradient(to left, #f7f6f8 0%, #eceaeb 100%);
border-radius: 12rpx 12rpx 0 0 ;
}
.head-card > view+view {
margin-top: 16rpx;
}
.text-strong {
font-weight: bolder;
}
.head-card > view>text {
font-size: 24rpx;
color: #333;
}
.list-date {
font-size: 22rpx;
background-color: #f8f8f8;
border-radius: 4rpx;
padding: 4rpx 12rpx;
margin-top: 20rpx;
}
.page-list {
border: 1rpx solid #F0F0F0;
border-radius: 0 0 12rpx 12rpx;
overflow: hidden;
padding: 30rpx 16rpx 30rpx 16rpx; }
}
.cell-body {
position: relative;
padding: 20rpx 20rpx 20rpx 0;
}
.cell-body image {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
margin-right: 16rpx;
}
.cell-body>view {
flex: 1;
}
.page-list text {
font-size: 22rpx;
color: #2E2E2E;
}
text.shop-total {
font-size: 24rpx;
}
text.type-text {
color: #DFBE9F;
display: flex;
align-items: center;
}
text.type-text.scan::before,text.type-text.port::before {
content: '';
width: 21rpx;
height: 23rpx;
margin-right: 8rpx;
}
text.type-text.scan::before {
background: url(/static/images/revenue/scan-up.png) no-repeat center;
background-size: contain;
}
text.type-text.port::before {
background: url(/static/images/revenue/port.png) no-repeat center;
background-size: contain;
}
text.type-text.port {
color: #95BAF2;
}
text.text-coast {
color: #848484;
width: 184rpx;
} .head-card {
text.text-coast + text.text-coast { padding: 30rpx 35rpx;
text-align: right; background: linear-gradient(to left, #f7f6f8 0%, #eceaeb 100%);
} border-radius: 12rpx 12rpx 0 0;
}
.head-card>view+view {
margin-top: 16rpx;
}
.text-strong {
font-weight: bolder;
}
.head-card>view>text {
font-size: 24rpx;
color: #333;
}
.list-date {
font-size: 22rpx;
background-color: #f8f8f8;
border-radius: 4rpx;
padding: 4rpx 12rpx;
margin-top: 20rpx;
}
.page-list {
border: 1rpx solid #F0F0F0;
border-radius: 0 0 12rpx 12rpx;
overflow: hidden;
padding: 30rpx 16rpx 30rpx 16rpx;
}
.cell-body {
position: relative;
padding: 20rpx 20rpx 20rpx 0;
}
.cell-body image {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
margin-right: 16rpx;
}
.cell-body>view {
flex: 1;
}
.page-list text {
font-size: 22rpx;
color: #2E2E2E;
}
text.shop-total {
font-size: 24rpx;
}
text.type-text {
color: #DFBE9F;
display: flex;
align-items: center;
}
text.type-text.scan::before,
text.type-text.port::before {
content: '';
width: 21rpx;
height: 23rpx;
margin-right: 8rpx;
}
text.type-text.scan::before {
background: url(/static/images/revenue/scan-up.png) no-repeat center;
background-size: contain;
}
text.type-text.port::before {
background: url(/static/images/revenue/port.png) no-repeat center;
background-size: contain;
}
text.type-text.port {
color: #95BAF2;
}
text.text-coast {
color: #848484;
width: 184rpx;
}
text.text-coast+text.text-coast {
text-align: right;
}
</style> </style>

View File

@ -1,14 +1,16 @@
<template> <template>
<view class="page-body"> <view class="page-body">
<!-- 日期筛选 --> <!-- 日期筛选 -->
<div class="uni-flex ai-center screen-box"> <div class="uni-flex ai-center screen-box">
<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]"
<text>{{pageData.searchTime[0]}}</text> :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text>{{ pageData.searchTime[0] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text> <text class="uni-icon uni-icon-arrowdown"></text>
</picker> </picker>
<text class="mr20"></text> <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]"
<text>{{pageData.searchTime[1]}}</text> :end="pageData.endDate" start="2018-12-01" class="screen-unit">
<text>{{ pageData.searchTime[1] }}</text>
<text class="uni-icon uni-icon-arrowdown"></text> <text class="uni-icon uni-icon-arrowdown"></text>
</picker> </picker>
</div> </div>
@ -16,59 +18,64 @@
<view class="uni-flex ai-center head-card"> <view class="uni-flex ai-center head-card">
<view class="" @tap="toTrend()"> <view class="" @tap="toTrend()">
<view>实收总额</view> <view>实收总额</view>
<view class="price-num">¥{{$util.fmoney(pageData.msg.Total_Revenue,2)}}</view> <view class="price-num">¥{{ $util.fmoney(pageData.msg.Total_Revenue, 2) }}</view>
</view> </view>
<view class="" v-if="pageData.msg && pageData.msg.Province_ExternalAmount"> <view class="" v-if="pageData.msg && pageData.msg.Province_ExternalAmount">
<div class="all-diff" @tap="regionType=!regionType"> <div class="all-diff" @tap="regionType = !regionType">
<image src="../../static/images/revenue/next.png"></image> <image src="../../static/images/revenue/next.png"></image>
切换 切换
</div> </div>
<view>{{!regionType ?"省内" :"省外"}}实收</view> <view>{{ !regionType ? "省内" : "省外" }}实收</view>
<view class="price-num">¥{{!regionType ? $util.fmoney(pageData.msg.Province_InsideAmount,2) : $util.fmoney(pageData.msg.Province_ExternalAmount,2)}}</view> <view class="price-num">¥{{ !regionType ? $util.fmoney(pageData.msg.Province_InsideAmount, 2) :
$util.fmoney(pageData.msg.Province_ExternalAmount, 2) }}</view>
</view> </view>
<view class="" v-else> <view class="" v-else>
<div class="all-diff" @tap="regionType=!regionType"> <div class="all-diff" @tap="regionType = !regionType">
<image src="../../static/images/revenue/next.png"></image> <image src="../../static/images/revenue/next.png"></image>
切换方向 切换方向
</div> </div>
<view>{{!regionType ?"东 (南)" :"西 (北)"}}区实收</view> <view>{{ !regionType ? "东 (南)" : "西 (北)" }}区实收</view>
<view class="price-num">¥{{!regionType ? $util.fmoney(pageData.msg.Revenue_AmountS,2) : $util.fmoney(pageData.msg.Revenue_AmountN,2)}}</view> <view class="price-num">¥{{ !regionType ? $util.fmoney(pageData.msg.Revenue_AmountS, 2) :
$util.fmoney(pageData.msg.Revenue_AmountN, 2) }}</view>
</view> </view>
</view> </view>
<view class="modle-title"> <view class="modle-title">
<image src="/static/images/revenue/yestoday-region.png" mode="aspectFit"></image> <image src="/static/images/revenue/yestoday-region.png" mode="aspectFit"></image>
<text>经营报表</text> <text>经营报表</text>
</view> </view>
<view class="bg-white" v-if="ServerpartList.length>0"> <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> <text>省内区域</text>
</view> </view>
<view v-show="pageData.insideShow"> <view v-show="pageData.insideShow">
<view v-for="(item,i) in ServerpartList" :key="i"> <view v-for="(item, i) in ServerpartList" :key="i">
<div class=" region-cell" @tap="toggleRegion(item)"> <div class=" region-cell" @tap="toggleRegion(item)">
<div class="region-cell-unit region-title cuIcon-triangledownfill" > <div class="region-cell-unit region-title cuIcon-triangledownfill">
<text class="">{{item.Region_Name}}</text> <text class="">{{ item.Region_Name }}</text>
<div class="ct01"> <div class="ct01">
<text class="strong-text">¥{{$util.fmoney(item.Total_Revenue,2)}}</text> <text class="strong-text">¥{{ $util.fmoney(item.Total_Revenue, 2) }}</text>
</div> </div>
</div> </div>
<div class="region-cell-unit"> <div class="region-cell-unit">
<text>营收占比</text> <text>营收占比</text>
<div class="ct01"> <div class="ct01">
<text class="strong-text">{{item.Revenue_Proportion}}</text> <text class="strong-text">{{ item.Revenue_Proportion }}</text>
</div> </div>
</div> </div>
<div class="region-cell-unit"> <div class="region-cell-unit">
<text class="uni-icon uni-icon-arrowright" :class="{'active':item.show}"></text> <text class="uni-icon uni-icon-arrowright" :class="{ 'active': item.show }"></text>
</div> </div>
</div> </div>
<ul class="region-cell-area" v-show="item.show"> <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 }"
<view>{{child.Serverpart_Name}}</view> :key="index" @tap="toDetail(child)">
<view>{{ child.Serverpart_Name }}</view>
<view class="uni-flex ai-center data-number"> <view class="uni-flex ai-center data-number">
<text class="">{{child.Revenue_Proportion}}</text> <text class="">{{ child.Revenue_Proportion }}</text>
<text style="flex: 2;">¥{{$util.fmoney(child.Total_Revenue,2)}}</text> <text style="flex: 2;">¥{{ $util.fmoney(child.Total_Revenue, 2) }}</text>
</view> </view>
</li> </li>
@ -77,17 +84,19 @@
</view> </view>
<template v-if="insideRegionList.length>0"> <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> <text>省外区域</text>
</view> </view>
<view v-show="pageData.exsideShow"> <view v-show="pageData.exsideShow">
<view v-for="(item,i) in insideRegionList" :key="i"> <view v-for="(item, i) in insideRegionList" :key="i">
<div class=" region-cell" @tap="toggleRegion(item)"> <div class=" region-cell" @tap="toggleRegion(item)">
<div class="region-cell-unit region-title cuIcon-triangledownfill" :class="{'active':item.show}"> <div class="region-cell-unit region-title cuIcon-triangledownfill"
<text class="">{{item.Region_Name}}</text> :class="{ 'active': item.show }">
<text class="">{{ item.Region_Name }}</text>
<div class="ct01"> <div class="ct01">
<text class="strong-text">¥{{$util.fmoney(item.Total_Revenue,2)}}</text> <text class="strong-text">¥{{ $util.fmoney(item.Total_Revenue, 2) }}</text>
</div> </div>
@ -95,18 +104,20 @@
<div class="region-cell-unit"> <div class="region-cell-unit">
<text>营收占比</text> <text>营收占比</text>
<div class="ct01"> <div class="ct01">
<text class="strong-text">{{item.Revenue_Proportion}}</text> <text class="strong-text">{{ item.Revenue_Proportion }}</text>
</div> </div>
</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> </div>
<ul class="region-cell-area" v-show="item.show"> <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"
<view>{{child.Serverpart_Name}}</view> :class="{ 'visited': child.visited }" :key="index" @tap="toDetail(child)">
<view>{{ child.Serverpart_Name }}</view>
<view class="uni-flex ai-center data-number"> <view class="uni-flex ai-center data-number">
<text class="">{{child.Revenue_Proportion}}</text> <text class="">{{ child.Revenue_Proportion }}</text>
<text style="flex: 2;">¥{{$util.fmoney(child.Total_Revenue,2)}}</text> <text style="flex: 2;">¥{{ $util.fmoney(child.Total_Revenue, 2) }}</text>
</view> </view>
</li> </li>
@ -118,7 +129,7 @@
</view> </view>
</template> </template>
<view class="" v-else-if="!pageData.isLoading && !pageData.msg"> <view class="" v-else-if="!pageData.isLoading && !pageData.msg">
<noFound nodata=" true" :text="noDataText"/> <noFound nodata=" true" :text="noDataText" />
</view> </view>
</view> </view>
@ -126,391 +137,486 @@
</template> </template>
<script> <script>
import {mapState} from 'vuex' import { mapState } from 'vuex'
export default { export default {
data() { data() {
let now = new Date() let now = new Date()
let nowTime = this.$util.cutDate(now, 'YYYY-MM-DD',-1) let nowTime = this.$util.cutDate(now, 'YYYY-MM-DD', -1)
let sTime = this.$util.cutDate(now, 'YYYY-MM-DD', -1) let sTime = this.$util.cutDate(now, 'YYYY-MM-DD', -1)
return { return {
pageData: { pageData: {
endDate: nowTime, endDate: nowTime,
searchTime: [sTime,nowTime], searchTime: [sTime, nowTime],
msg: {}, msg: {},
isLoading: true, isLoading: true,
exsideShow: true, exsideShow: true,
insideShow: true, insideShow: true,
}, },
noDataText: '抱歉,没有数据,请稍后重试', noDataText: '抱歉,没有数据,请稍后重试',
regionType: 0, // 0 1 西 regionType: 0, // 0 1 西
ServerpartList: [], ServerpartList: [],
insideRegionList: [] // insideRegionList: [] //
}
},
computed: {
...mapState({ 'ProvinceCode': (state) => { return state.userData.ProvinceCode } }),
},
methods: {
toTrend() {
this.$util.toNextRoute('navigateTo', '/pages/operatingStatements/operatingTrend?time=' + this.pageData.searchTime[1])
},
bindDateChange(e, index) {
let nowDate = this.pageData.searchTime[index]
if (e.detail.value != nowDate) {
this.pageData.searchTime[index] = e.detail.value
this.$forceUpdate()
this.searchList()
} }
}, },
computed:{ searchList() {
...mapState({'ProvinceCode':(state)=>{return state.userData.ProvinceCode}}),
},
methods: {
toTrend(){
this.$util.toNextRoute('navigateTo','/pages/operatingStatements/operatingTrend?time='+this.pageData.searchTime[1])
},
bindDateChange(e,index){
let nowDate = this.pageData.searchTime[index]
if(e.detail.value != nowDate){
this.pageData.searchTime[index] = e.detail.value
this.$forceUpdate()
this.searchList()
}
},
searchList(){
uni.showLoading({
title:'正在加载',
mask:true
})
this.getList()
},
toggleRegion(item) {
item.show = !item.show ? true : false
this.$forceUpdate()
},
toDetail(item){
this.$util.toNextRoute('navigateTo', '/pages/operatingStatements/detail?pcode='+item.Province_Code+'&id=' + item.Serverpart_Id + '&st=' + this.pageData.searchTime[0]+ '&et=' + this.pageData.searchTime[1])
item.visited = true
this.$forceUpdate()
},
getList(){
let _this = this
let searchTime = this.pageData.searchTime
_this.$request.$webGet('WeChat/GetRevenueReport',{
startTime: searchTime[0],
endTime: searchTime[1],
additionalCode: this.ProvinceCode=='330000' ? '451200,630000' :''
}).then(res=>{
if(res.Result_Code==100) {
_this.pageData.msg = res.Result_Data
res.Result_Data.revenueRegionModels.map(n=>{
n.show = false
})
if(res.Result_Data.revenueInsideRegionModels){
res.Result_Data.revenueInsideRegionModels.map(n=>{
n.show = false
})
_this.insideRegionList = res.Result_Data.revenueInsideRegionModels
}
_this.ServerpartList = res.Result_Data.revenueRegionModels
}else{
_this.pageData.msg = null
_this.noDataText = res.Result_Desc
}
uni.hideLoading()
_this.pageData.isLoading =false
_this.$forceUpdate()
})
}
},
onLoad() {
uni.showLoading({ uni.showLoading({
title:'正在加载...', title: '正在加载',
mask:true mask: true
}) })
this.getList() this.getList()
},
toggleRegion(item) {
item.show = !item.show ? true : false
this.$forceUpdate()
},
toDetail(item) {
this.$util.toNextRoute('navigateTo', '/pages/operatingStatements/detail?pcode=' + item.Province_Code + '&id=' + item.Serverpart_Id + '&st=' + this.pageData.searchTime[0] + '&et=' + this.pageData.searchTime[1])
item.visited = true
this.$forceUpdate()
},
getList() {
let _this = this
let searchTime = this.pageData.searchTime
const req = {
provinceCode: this.ProvinceCode,
startTime: searchTime[0],
endTime: searchTime[1],
}
console.log('reqdad', req);
uni.showLoading({
title: '正在加载',
mask: true
})
_this.$request.$webGet('CommercialApi/Revenue/GetRevenueReport', req).then((res) => {
console.log('resresresres', res);
uni.hideLoading()
if (res.Result_Code == 100) {
_this.pageData.msg = res.Result_Data
_this.pageData.msg.countave = (Number(_this.pageData.msg.Province_InsideAmount) / Number(_this.pageData.msg.TotalCount)).toFixed(2)
res.Result_Data.revenueRegionModels.map(n => {
n.show = false
})
if (res.Result_Data.revenueInsideRegionModels) {
res.Result_Data.revenueInsideRegionModels.map(n => {
n.show = false
})
_this.insideRegionList = res.Result_Data.revenueInsideRegionModels
}
// _this.pageData.msg.SearchResult
//
//
if (this.searchText) {
this.showModal = false
if (res.Result_Data.SearchResult) {
let newList = []
res.Result_Data.SearchResult.forEach(item => {
newList.push(item.split(this.searchText))
_this.pageData.msg.SearchResult = newList
_this.copySearchText = JSON.parse(JSON.stringify(this.searchText))
})
}
} else {
if (this.BusinessTypeValue || this.SettlementModeValue) {
this.showModal = true
}
}
_this.ServerpartList = res.Result_Data.revenueRegionModels
} else if (res.Result_Code == 200 || res.Result_Code == 999) {
_this.noDataText = '暂无数据'
_this.insideRegionList = []
_this.pageData.msg = null
} else {
_this.pageData.msg = null
_this.noDataText = res.Result_Desc
_this.insideRegionList = []
}
_this.requestText = _this.searchText
_this.pageData.isLoading = false
_this.$forceUpdate()
})
// _this.$request.$webGet('WeChat/GetRevenueReport', {
// startTime: searchTime[0],
// endTime: searchTime[1],
// additionalCode: this.ProvinceCode == '330000' ? '451200,630000' : ''
// }).then(res => {
// if (res.Result_Code == 100) {
// _this.pageData.msg = res.Result_Data
// res.Result_Data.revenueRegionModels.map(n => {
// n.show = false
// })
// if (res.Result_Data.revenueInsideRegionModels) {
// res.Result_Data.revenueInsideRegionModels.map(n => {
// n.show = false
// })
// _this.insideRegionList = res.Result_Data.revenueInsideRegionModels
// }
// _this.ServerpartList = res.Result_Data.revenueRegionModels
// } else {
// _this.pageData.msg = null
// _this.noDataText = res.Result_Desc
// }
// uni.hideLoading()
// _this.pageData.isLoading = false
// _this.$forceUpdate()
// })
} }
},
onLoad() {
uni.showLoading({
title: '正在加载...',
mask: true
})
this.getList()
} }
}
</script> </script>
<style> <style>
.page-body { .page-body {
padding-bottom: 80rpx; padding-bottom: 80rpx;
} }
.screen-box {
background-color: #fff;
padding: 0 20rpx;
position: sticky;
top: 0;
left: 0;
z-index: 9;
}
.screen-box .screen-unit {
display: flex;
align-items: center;
width: 200rpx;
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: 40rpx 26rpx;
background-color: #fff;
}
.head-card>view {
width: 330rpx;
height: 190rpx;
color: #fff;
text-align: center;
padding-top: 30rpx;
font-size: 28rpx;
border-radius: 24rpx;
box-sizing: border-box;
} .screen-box {
.head-card>view:first-child { background-color: #fff;
padding: 0 20rpx;
position: sticky;
top: 0;
left: 0;
z-index: 9;
}
background: linear-gradient(to left,#93a4ec 0%, #4b76e9 100%); .screen-box .screen-unit {
} display: flex;
align-items: center;
width: 200rpx;
padding: 0 14rpx;
line-height: 3;
}
.head-card>view:last-child { .screen-box .mr20 {
margin-left: 30rpx; margin-right: 20rpx;
background: linear-gradient(to left,#8cdade 0%, #82c2ce 100%); color: #95999C;
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;
line-height: 36rpx;
width: 126rpx;
color: #fff;
text-align: center;
position: absolute;
right: 0;
top: 0;
font-size: 20rpx;
border-radius: 0 0 0 54rpx;
} .uni-icon-arrowdown {
.all-diff image { font-size: 22rpx;
width: 20rpx; color: #C7C7C7;
height: 17rpx; margin-left: 8rpx;
margin-right: 8rpx; }
}
.modle-title {
padding-left: 24rpx;
font-size: 30rpx;
padding-top: 32rpx;
padding-bottom: 20rpx;
font-weight: bolder;
display: flex;
align-items: center;
}
.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;
padding: 26rpx 46rpx 0 56rpx;
position: relative;
display: flex;
}
/*日结上传*/
.region-title {
position: relative;
color: #929292;
/* font-weight: bolder; */
} .screen-box text {
.region-title,.ct01 { line-height: 3;
color: #000000; }
}
.ct01 {
padding-top: 8rpx;
}
.region-area-title:before { .screen-box image {
content: ''; width: 12rpx;
position: absolute; height: 8rpx;
width: 0rpx; margin: 0 16rpx;
height: 0rpx; vertical-align: middle;
border: 0rpx; }
border-left: 8rpx solid transparent;
border-right: 8rpx solid transparent;
border-top: 8rpx solid #BBB7B7;
left: 22rpx;
top: 48rpx;
transform: rotate(-90deg);
transition: all 0.4s;
display: block;
}
.active.region-area-title:before{
border-left: 8rpx solid transparent; .head-card {
border-right: 8rpx solid transparent; padding: 40rpx 26rpx;
border-top: 8rpx solid #E0BB97; background-color: #fff;
transform: rotate(0deg); }
}
.region-cell { .head-card>view {
display: flex; width: 330rpx;
padding: 26rpx 46rpx 16rpx 56rpx; height: 190rpx;
align-items: flex-end; color: #fff;
} text-align: center;
.region-cell .active.uni-icon-arrowright::before { padding-top: 30rpx;
transform: rotate(90deg); font-size: 28rpx;
border-radius: 24rpx;
box-sizing: border-box;
}
.head-card>view:first-child {
background: linear-gradient(to left, #93a4ec 0%, #4b76e9 100%);
}
.head-card>view:last-child {
margin-left: 30rpx;
background: linear-gradient(to left, #8cdade 0%, #82c2ce 100%);
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;
line-height: 36rpx;
width: 126rpx;
color: #fff;
text-align: center;
position: absolute;
right: 0;
top: 0;
font-size: 20rpx;
border-radius: 0 0 0 54rpx;
}
.all-diff image {
width: 20rpx;
height: 17rpx;
margin-right: 8rpx;
}
.modle-title {
padding-left: 24rpx;
font-size: 30rpx;
padding-top: 32rpx;
padding-bottom: 20rpx;
font-weight: bolder;
display: flex;
align-items: center;
}
.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;
padding: 26rpx 46rpx 0 56rpx;
position: relative;
display: flex;
}
/*日结上传*/
.region-title {
position: relative;
color: #929292;
/* font-weight: bolder; */
}
.region-title,
.ct01 {
color: #000000;
}
.ct01 {
padding-top: 8rpx;
}
.region-area-title:before {
content: '';
position: absolute;
width: 0rpx;
height: 0rpx;
border: 0rpx;
border-left: 8rpx solid transparent;
border-right: 8rpx solid transparent;
border-top: 8rpx solid #BBB7B7;
left: 22rpx;
top: 48rpx;
transform: rotate(-90deg);
transition: all 0.4s;
display: block;
}
.active.region-area-title:before {
border-left: 8rpx solid transparent;
border-right: 8rpx solid transparent;
border-top: 8rpx solid #E0BB97;
transform: rotate(0deg);
}
.region-cell {
display: flex;
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 {
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;
flex-direction: column;
color: #929292;
font-size: 26rpx;
line-height: 1.5;
text-align: right;
}
.region-cell .region-cell-unit:nth-child(1) { .region-cell .uni-icon-arrowdown,
flex: 3; .region-cell .uni-icon-arrowright {
text-align: left; font-size: 36rpx;
} color: #5A5A5A;
.region-cell .region-cell-unit:nth-child(3) { /* padding-bottom: 12rpx; */
position: relative;
}
flex: 2.5; .region-cell .uni-icon-arrowright::before {
position: absolute;
right: -26rpx;
top: -46rpx;
transition: all 0.4s;
}
} .region-cell .region-cell-unit {
.region-cell-image { flex: 2;
width: 48rpx; display: flex;
display: flex; flex-direction: column;
align-items: center; color: #929292;
justify-content: flex-end; font-size: 26rpx;
height: 50rpx; line-height: 1.5;
text-align: right;
}
} .region-cell .region-cell-unit:nth-child(1) {
flex: 3;
text-align: left;
}
.region-cell image { .region-cell .region-cell-unit:nth-child(3) {
width: 14rpx;
height: 23rpx;
}
/*日结上传服务区*/ flex: 2.5;
.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;
} }
.region-cell-area li:nth-child(2n+1) { .region-cell-image {
background-color: #F9F9FB; width: 48rpx;
} display: flex;
align-items: center;
justify-content: flex-end;
height: 50rpx;
.region-cell-area li:nth-child(2n) view:first-child:before { }
content: '';
background-color: #5596F9; .region-cell image {
width: 8rpx; width: 14rpx;
height: 8rpx; height: 23rpx;
border-radius: 8rpx; }
display: block;
margin-right: 16rpx; /*日结上传服务区*/
/* position: absolute; .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;
}
.region-cell-area li:nth-child(2n+1) {
background-color: #F9F9FB;
}
.region-cell-area li:nth-child(2n) view:first-child:before {
content: '';
background-color: #5596F9;
width: 8rpx;
height: 8rpx;
border-radius: 8rpx;
display: block;
margin-right: 16rpx;
/* position: absolute;
left: 0rpx; */ left: 0rpx; */
} }
.region-cell-area li:nth-child(2n+1) view:first-child:before { .region-cell-area li:nth-child(2n+1) view:first-child:before {
content: ''; content: '';
background-color: #FE6D67; background-color: #FE6D67;
width: 8rpx; width: 8rpx;
height: 8rpx; height: 8rpx;
border-radius: 8rpx; border-radius: 8rpx;
display: block; display: block;
margin-right: 16rpx; margin-right: 16rpx;
/* position: absolute; /* position: absolute;
left: 0rpx; */ left: 0rpx; */
} }
.region-cell-area li { .region-cell-area li {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 16rpx 46rpx 16rpx 56rpx; padding: 16rpx 46rpx 16rpx 56rpx;
position: relative; position: relative;
text-align: left; text-align: left;
color: #2E2E2E; color: #2E2E2E;
} }
.region-cell-area li>view { .region-cell-area li>view {
flex: 2; flex: 2;
font-size: 22rpx; font-size: 22rpx;
position: relative; position: relative;
} }
.region-cell-area li>view text {
font-size: 22rpx; .region-cell-area li>view text {
flex: 1; font-size: 22rpx;
text-align: right; flex: 1;
} text-align: right;
.region-cell-area li>view text:last-child { }
/* text-align: right; */
font-weight: bolder; .region-cell-area li>view text:last-child {
padding-right: 8rpx; /* text-align: right; */
flex: 2; font-weight: bolder;
} padding-right: 8rpx;
.region-cell-area li> view:last-child:after { flex: 2;
content: ''; }
background: url(/static/images/revenue/you-jt.png) no-repeat center;
width: 14rpx; .region-cell-area li>view:last-child:after {
height: 24rpx; content: '';
background-size: contain; background: url(/static/images/revenue/you-jt.png) no-repeat center;
display: block; width: 14rpx;
position: absolute; height: 24rpx;
right: -28rpx; background-size: contain;
top: 8rpx; display: block;
} position: absolute;
right: -28rpx;
top: 8rpx;
}
</style> </style>