Merge branch 'master' of 10.103.1.7:eshangweb/wechat_yxcl

This commit is contained in:
zzy 2022-06-13 09:26:19 +08:00
commit 02e7ac596e
7 changed files with 599 additions and 418 deletions

View File

@ -435,15 +435,60 @@ function getDataRange(minData, maxData) {
function measureText(text, fontSize, context) { function measureText(text, fontSize, context) {
var width = 0; var width = 0;
text = String(text); // text = String(text);
// #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE // #ifdef MP-ALIPAY || MP-BAIDU || APP-NVUE
context = false; context = false;
// #endif // #endif
if (context !== false && context !== undefined && context.setFontSize && context.measureText) { if (context !== false && context !== undefined && context.setFontSize && context.measureText) {
context.setFontSize(fontSize); context.setFontSize(fontSize);
return context.measureText(text).width; if(text instanceof Array) {
let max = 0
text.map(n=>{
let len = getLen(n)
if(max<len){
max=len
}
})
return max
}else { }else {
return getLen(text)
}
// context.setFontSize(fontSize);
// return context.measureText(text).width;
} else {
return getLen(text)
// var text = text.split('');
// for (let i = 0; i < text.length; i++) {
// let item = text[i];
// if (/[a-zA-Z]/.test(item)) {
// width += 7;
// } else if (/[0-9]/.test(item)) {
// width += 5.5;
// } else if (/\./.test(item)) {
// width += 2.7;
// } else if (/-/.test(item)) {
// width += 3.25;
// } else if (/:/.test(item)) {
// width += 2.5;
// } else if (/[\u4e00-\u9fa5]/.test(item)) {
// width += 10;
// } else if (/\(|\)/.test(item)) {
// width += 3.73;
// } else if (/\s/.test(item)) {
// width += 2.5;
// } else if (/%/.test(item)) {
// width += 8;
// } else {
// width += 10;
// }
// }
// return width * fontSize / 10;
}
function getLen(text) {
text = String(text);
var text = text.split(''); var text = text.split('');
var width = 0;
for (let i = 0; i < text.length; i++) { for (let i = 0; i < text.length; i++) {
let item = text[i]; let item = text[i];
if (/[a-zA-Z]/.test(item)) { if (/[a-zA-Z]/.test(item)) {
@ -454,8 +499,6 @@ function measureText(text, fontSize, context) {
width += 2.7; width += 2.7;
} else if (/-/.test(item)) { } else if (/-/.test(item)) {
width += 3.25; width += 3.25;
} else if (/:/.test(item)) {
width += 2.5;
} else if (/[\u4e00-\u9fa5]/.test(item)) { } else if (/[\u4e00-\u9fa5]/.test(item)) {
width += 10; width += 10;
} else if (/\(|\)/.test(item)) { } else if (/\(|\)/.test(item)) {
@ -469,6 +512,7 @@ function measureText(text, fontSize, context) {
} }
} }
return width * fontSize / 10; return width * fontSize / 10;
} }
} }
@ -2270,6 +2314,7 @@ function drawPieText(series, opts, config, context, radius, center) {
labelShow: item.labelShow labelShow: item.labelShow
}; };
}); });
for (let i = 0; i < seriesConvert.length; i++) { for (let i = 0; i < seriesConvert.length; i++) {
let item = seriesConvert[i]; let item = seriesConvert[i];
// line end // line end
@ -2352,7 +2397,16 @@ function drawPieText(series, opts, config, context, radius, center) {
context.beginPath(); context.beginPath();
context.setFontSize(item.textSize * opts.pix || config.fontSize); context.setFontSize(item.textSize * opts.pix || config.fontSize);
context.setFillStyle(item.textColor || opts.fontColor); context.setFillStyle(item.textColor || opts.fontColor);
if(item.text instanceof Array) {
item.text.map((n,i)=>{
let y = textPosition.y + 3 +(i*(item.textSize || config.fontSize))
context.fillText(n, textStartX, y);
})
}else{
context.fillText(item.text, textStartX, textPosition.y + 3); context.fillText(item.text, textStartX, textPosition.y + 3);
}
// context.fillText(item.text, textStartX, textPosition.y + 3);
context.closePath(); context.closePath();
context.stroke(); context.stroke();
context.closePath(); context.closePath();

View File

@ -69,10 +69,8 @@
<div class="bgO" :style="{'width':item.bili+'%'}"></div> <div class="bgO" :style="{'width':item.bili+'%'}"></div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</view> </view>
</div> </div>
@ -154,8 +152,8 @@
</div> </div>
</template> </template>
<template v-else> <template v-else>
<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' />
</shopCell>
</template> </template>
</view> </view>
<template v-if="theRequest && theRequest.ProvinceCode==620000"> <template v-if="theRequest && theRequest.ProvinceCode==620000">
@ -176,7 +174,7 @@
import { import {
mapState mapState
} from 'vuex'; } from 'vuex';
import uCharts from '@/components/u-charts/u-charts.js'; import uCharts from '@/components/u-charts.js';
import shopCell from './components/listUnit.vue' import shopCell from './components/listUnit.vue'
import AnhHead from './components/anhHead.vue' import AnhHead from './components/anhHead.vue'
import RankContent from './components/RankContent.vue' import RankContent from './components/RankContent.vue'
@ -316,12 +314,13 @@
let data = { let data = {
series: [] series: []
} }
const ctx = uni.createCanvasContext(obj.id, this);
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
colors: obj.colors, context: ctx,
color: obj.colors,
type: 'ring', type: 'ring',
fontSize: 12, fontSize: 12,
padding: [15, 15, 25, 15], padding: [15, 15, 25, 15],
@ -339,7 +338,7 @@
height: uni.upx2px(510), height: uni.upx2px(510),
dataLabel: true, dataLabel: true,
extra: { extra: {
pie: { ring: {
ringWidth: 40, ringWidth: 40,
labelWidth: 16, labelWidth: 16,
border: true, border: true,
@ -495,8 +494,14 @@
_data1.push({ _data1.push({
...n, ...n,
textColor: '#999', textColor: '#999',
format: function(arg) { formatter: function(arg) {
if (typeof arg === 'number') {
return [n.name, (arg * 100).toFixed(2) + '%'] return [n.name, (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
} }
}); });

View File

@ -12,7 +12,6 @@
</div> </div>
<view class="top-card"> <view class="top-card">
<div class="box-center-box"> <div class="box-center-box">
<div class="uni-flex ai-center jc-between"> <div class="uni-flex ai-center jc-between">
<div class="main-amount-title">对客营收()</div> <div class="main-amount-title">对客营收()</div>
<div class="tab-unit" @tap="showPop"> <div class="tab-unit" @tap="showPop">
@ -24,9 +23,7 @@
</div> </div>
</div> </div>
<div class="uni-flex ai-base jc-between"> <div class="uni-flex ai-base jc-between">
<span class="center-num">{{sMsg.totalMoneyShow}}</span> <span class="center-num">{{sMsg.totalMoneyShow}}</span>
<span class="budgetamount"> <span class="budgetamount">
<text class="budget-title">计划营收():</text> <text class="budget-title">计划营收():</text>
<text :class="sMsg.budgetAmount< sMsg.cashPay ? 'up-text-title':'down-text-title'"> <text :class="sMsg.budgetAmount< sMsg.cashPay ? 'up-text-title':'down-text-title'">
@ -36,7 +33,6 @@
</span> </span>
</div> </div>
</div> </div>
<div class="uni-flex jc-between box-center-box"> <div class="uni-flex jc-between box-center-box">
<div class="check-unit"> <div class="check-unit">
@ -74,9 +70,7 @@
<div class="check-price-color">{{$util.fmoney(sMsg.countave,2)}} <text></text></div> <div class="check-price-color">{{$util.fmoney(sMsg.countave,2)}} <text></text></div>
</div> </div>
</div> </div>
</view> </view>
</div> </div>
<cover-view class="fixed-box page-title" :style="'transform: translateY('+fixedY+'px);opacity:'+opacity+';'"> <cover-view class="fixed-box page-title" :style="'transform: translateY('+fixedY+'px);opacity:'+opacity+';'">
<cover-view>{{sMsg.serverpartname || ''}}</cover-view> <cover-view>{{sMsg.serverpartname || ''}}</cover-view>
@ -136,8 +130,7 @@
:class="{'active': nowShop==i}" @click="selectCate(i)">{{n.Bussiness_Name}}</div> :class="{'active': nowShop==i}" @click="selectCate(i)">{{n.Bussiness_Name}}</div>
</scroll-view> </scroll-view>
<div class="tab-content" v-if="cateBrandList.length"> <div class="tab-content" v-if="cateBrandList.length">
<div class="shop-card" v-for="(m,i) in cateBrandList[nowShop].listBrandModel" :key="i" <div class="shop-card" v-for="(m,i) in cateBrandList[nowShop].listBrandModel" :key="i" @click="toBrandPage(m,i)">
@click="toBrandPage(m,i)">
<div> <div>
<image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image> <image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image>
<image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image> <image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image>
@ -148,7 +141,6 @@
</div> </div>
</div> </div>
</div> </div>
</view> </view>
<view class="" v-show="nowTab==2"> <view class="" v-show="nowTab==2">
@ -186,7 +178,7 @@
</template> </template>
<script> <script>
import uCharts from '@/components/u-charts/u-charts.js'; import uCharts from '@/components/u-charts.js';
import ServiceRevenuePie from './components/ServiceRevenuePie.vue' import ServiceRevenuePie from './components/ServiceRevenuePie.vue'
import CustomerAnalysis from './components/CustomerAnalysis.vue' import CustomerAnalysis from './components/CustomerAnalysis.vue'
import CarAnalysis from './components/CarAnalysis.vue' import CarAnalysis from './components/CarAnalysis.vue'
@ -300,7 +292,6 @@
showFixed(options) { showFixed(options) {
this.scrollTop = options.scrollTop this.scrollTop = options.scrollTop
let selfHeight = uni.upx2px(396) let selfHeight = uni.upx2px(396)
if (options.scrollTop > selfHeight) { if (options.scrollTop > selfHeight) {
@ -325,8 +316,7 @@
let btid = this.cateBrandList[nowShop].Business_Trade let btid = this.cateBrandList[nowShop].Business_Trade
let pages = let pages = `/pages/everdayRenven/serviceDetail?bid=${item.Brand_Id}&shopid=${item.ServerpartShop_Id}&id=${theRequest.ServerpartIds}&time=${theRequest.time}&provinceId=${theRequest.ProvinceCode}&btid=${item.Business_Trade}`
`/pages/everdayRenven/serviceDetail?bid=${item.Brand_Id}&shopid=${item.ServerpartShop_Id}&id=${theRequest.ServerpartIds}&time=${theRequest.time}&provinceId=${theRequest.ProvinceCode}&btid=${item.Business_Trade}`
this.$util.toNextRoute('navigateTo', pages) this.$util.toNextRoute('navigateTo', pages)
}, },
async selectCate(index) { async selectCate(index) {
@ -377,8 +367,13 @@
n.textColor = '#D1D1D1' n.textColor = '#D1D1D1'
n.textSize = uni.upx2px(26) n.textSize = uni.upx2px(26)
n.format = function(arg) { n.formatter = function(arg) {
if (typeof arg === 'number') {
return [n.name, (arg * 100).toFixed(2) + '%'] return [n.name, (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
} }
list.push(n) list.push(n)
} }
@ -408,7 +403,6 @@
data: list, data: list,
colors: colors1, colors: colors1,
}); });
} }
}, },
operationBusniess(arr, data) { // operationBusniess(arr, data) { //
@ -422,9 +416,13 @@
name: n[1], name: n[1],
textColor: '#999', textColor: '#999',
data: data[n[0]], //+Number(data2[n[0]]) data: data[n[0]], //+Number(data2[n[0]])
format: function(arg) { formatter: function(arg) {
if(typeof arg==='number'){
return [n[1],(arg * 100).toFixed(2) + '%'] return [n[1],(arg * 100).toFixed(2) + '%']
}else{
return [arg.name,(arg._proportion_ * 100).toFixed(2) + '%']
}
// return [n[1], (arg * 100).toFixed(2) + '%']
} }
}); });
} }
@ -439,11 +437,13 @@
let data = { let data = {
series: [] series: []
} }
const ctx = uni.createCanvasContext(obj.id, this);
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: _self, // $this: _self,
canvasId: obj.id, // canvasId: obj.id,
colors: obj.colors, context: ctx,
color: obj.colors,
type: 'ring', type: 'ring',
padding: obj.id != 'modelCount' ? [15, 15, 25, 0] : '', padding: obj.id != 'modelCount' ? [15, 15, 25, 0] : '',
legend: { legend: {
@ -473,7 +473,7 @@
disablePieStroke: true, disablePieStroke: true,
dataPointShape: false, dataPointShape: false,
extra: { extra: {
pie: { ring: {
ringWidth: obj.id != 'modelCount' ? uni.upx2px(90) : 40, ringWidth: obj.id != 'modelCount' ? uni.upx2px(90) : 40,
labelWidth: uni.upx2px(40), labelWidth: uni.upx2px(40),
activeOpacity: 1, activeOpacity: 1,
@ -538,17 +538,14 @@
statictics_Time: theRequest.time, statictics_Time: theRequest.time,
pushProvinceCode: theRequest.ProvinceCode pushProvinceCode: theRequest.ProvinceCode
}).then(res => { }).then(res => {
if (res.Result_Code != 100) return if (res.Result_Code != 100) return
_this.pageData = res.Result_Data _this.pageData = res.Result_Data
if (res.Result_Data.listBusinessModel) { if (res.Result_Data.listBusinessModel) {
let list = JSON.parse(JSON.stringify(res.Result_Data.listBusinessModel)) let list = JSON.parse(JSON.stringify(res.Result_Data.listBusinessModel))
if (list.length > 0) { if (list.length > 0) {
let all = { let all = {
Bussiness_Name: '全部', Bussiness_Name: '全部',
listBrandModel: [] listBrandModel: []
} }
list.map(n => { list.map(n => {
@ -568,9 +565,7 @@
return return
} }
_this.cateBrandList = [] _this.cateBrandList = []
}) })
}, },
// //
@ -579,7 +574,6 @@
const [totalData, busniessTypePie, busniessTradePie, busniessTradeFathPie] = const [totalData, busniessTypePie, busniessTradePie, busniessTradeFathPie] =
await anhuiYestodayRevenueData.getData(theRequest, true) await anhuiYestodayRevenueData.getData(theRequest, true)
totalData.tickave = totalData.ticketCount > 0 ? this.$util.fmoney(totalData.cashPay / totalData totalData.tickave = totalData.ticketCount > 0 ? this.$util.fmoney(totalData.cashPay / totalData
.ticketCount, 2) : 0 .ticketCount, 2) : 0
totalData.countave = totalData.totalCount > 0 ? this.$util.fmoney(totalData.cashPay / totalData totalData.countave = totalData.totalCount > 0 ? this.$util.fmoney(totalData.cashPay / totalData
@ -622,8 +616,13 @@
_data1.push({ _data1.push({
...n, ...n,
textColor: '#999', textColor: '#999',
format: function(arg) { formatter: function(arg) {
if(typeof arg==='number'){
return [n.name,(arg * 100).toFixed(2) + '%'] return [n.name,(arg * 100).toFixed(2) + '%']
}else{
return [arg.name,(arg._proportion_ * 100).toFixed(2) + '%']
}
} }
}); });
@ -656,16 +655,12 @@
} }
let _data = res.Result_Data let _data = res.Result_Data
_this.unUploadList = _data.List _this.unUploadList = _data.List
}) })
}, },
}, },
onPageScroll(e) { onPageScroll(e) {
this.showFixed(e) this.showFixed(e)
} }
} }
</script> </script>

View File

@ -235,7 +235,7 @@
textColor: '#747474', textColor: '#747474',
textSize: uni.upx2px(20), textSize: uni.upx2px(20),
formatter: (val) => { formatter: (val) => {
console.log(val)
return parseInt(val)+'辆' return parseInt(val)+'辆'
} }
}], }],
@ -274,14 +274,11 @@
this.getProportion(this.canvasTab, params) this.getProportion(this.canvasTab, params)
this.getAnalysisDesc(this.canvasTab, params) this.getAnalysisDesc(this.canvasTab, params)
}, },
// tapchart(e, id) {
// rincanvas[id].showToolTip(e)
// },
tap(e) { tap(e) {
rincanvas[e.target.id].touchLegend(e); rincanvas[e.target.id].touchLegend(e);
rincanvas[e.target.id].showToolTip(e); rincanvas[e.target.id].showToolTip(e);
}, },
showPie(obj) { showPie(obj) {
let data = { let data = {
series: [] series: []

View File

@ -6,10 +6,10 @@
<div v-show="!loading && !pageEmpty"> <div v-show="!loading && !pageEmpty">
<div class="tab-btn" @tap="tabChange(canvasTab==1?2:1,opt)">{{canvasTab==1 ? '消费能力分析' : '消费人群分析'}}</div> <div class="tab-btn" @tap="tabChange(canvasTab==1?2:1,opt)">{{canvasTab==1 ? '消费能力分析' : '消费人群分析'}}</div>
<div class="customer-title">{{canvasTab==1? '消费人群': '消费能力'}}占比</div> <div class="customer-title">{{canvasTab==1? '消费人群': '消费能力'}}占比</div>
<canvas canvas-id="sexCate" id="sexCate" class="operation-cate-content"></canvas> <canvas canvas-id="sexCate" id="sexCate" class="operation-cate-content" @touchend="tap"></canvas>
<div class="customer-title">年龄层占比</div> <div class="customer-title">年龄层占比</div>
<canvas canvas-id="stockShare1" id="stockShare1" class="operation-stock-content" v-show="canvasTab==1" ></canvas> <canvas canvas-id="stockShare1" id="stockShare1" class="operation-stock-content" v-show="canvasTab==1" @touchend="tap"></canvas>
<canvas canvas-id="stockShare2" id="stockShare2" class="operation-stock-content" v-show="canvasTab==2" ></canvas> <canvas canvas-id="stockShare2" id="stockShare2" class="operation-stock-content" v-show="canvasTab==2" @touchend="tap"></canvas>
<div class="analysis-text" v-if="proportionList[canvasTab]"> <div class="analysis-text" v-if="proportionList[canvasTab]">
<span class="key-text">分析</span><span>{{proportionList[canvasTab][1]}}</span> <span class="key-text">分析</span><span>{{proportionList[canvasTab][1]}}</span>
</div> </div>
@ -18,7 +18,7 @@
</template> </template>
<script> <script>
import uCharts from '@/components/u-charts/u-charts.js'; import uCharts from '@/components/u-charts.js';
let rincanvas = {} let rincanvas = {}
export default { export default {
@ -47,7 +47,6 @@
methods: { methods: {
refreshData(data) { refreshData(data) {
// //
rincanvas['sexCate'].updateData({series:data[0]}); rincanvas['sexCate'].updateData({series:data[0]});
this.$forceUpdate() this.$forceUpdate()
}, },
@ -77,22 +76,33 @@
let pieSerise = [{ let pieSerise = [{
name: list[0].name, name: list[0].name,
data: list[0].data[0], data: list[0].data[0],
format: function(arg) { formatter: function(arg) {
if (typeof arg === 'number') {
return [list[0].name, (arg * 100).toFixed(2) + '%'] return [list[0].name, (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
// return [list[0].name, (arg * 100).toFixed(2) + '%']
} }
}, },
{ {
name: list[1].name, name: list[1].name,
data: list[1].data[0], data: list[1].data[0],
format: function(arg) { formatter: function(arg) {
if (typeof arg === 'number') {
return [list[1].name, (arg * 100).toFixed(2) + '%'] return [list[1].name, (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
} }
} }
] ]
let clounm = [{ let clounm = [{
name: list[2].name, name: list[2].name,
data: ([]).concat(list[2].data), data: ([]).concat(list[2].data),
format: function(arg) { formatter: function(arg) {
return [ arg + '%'] return [ arg + '%']
} }
}] }]
@ -108,7 +118,7 @@
_this.showClounm({ _this.showClounm({
id: 'stockShare'+type, id: 'stockShare'+type,
data: clounm, data: clounm,
categories: ['00后', '90后', '80后', '70后'] categories: ['00后', '90后', '80后', '70后'],
}) })
@ -126,21 +136,23 @@
...params ...params
}) })
return data.Result_Data.Analysis_Content || '' return data.Result_Data.Analysis_Content || ''
}, },
touchPie() {}, tap(e) {
rincanvas[e.target.id].touchLegend(e);
rincanvas[e.target.id].showToolTip(e);
},
showPie(obj) { showPie(obj) {
let data = { let data = {
series: [] series: []
} }
const ctx = uni.createCanvasContext(obj.id, this);
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
colors: ['#667ED5', '#F6B760'], context: ctx,
color: ['#667ED5', '#F6B760'],
type: 'ring', type: 'ring',
fontSize: 12, fontSize: 12,
// padding: [15, 15, 25, 15], // padding: [15, 15, 25, 15],
@ -158,7 +170,7 @@
height: uni.upx2px(480), height: uni.upx2px(480),
dataLabel: true, dataLabel: true,
extra: { extra: {
pie: { ring: {
ringWidth: 40, ringWidth: 40,
labelWidth: 20, labelWidth: 20,
border: true, border: true,
@ -175,16 +187,17 @@
let data = { let data = {
series: [] series: []
} }
const ctx = uni.createCanvasContext(obj.id, this);
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
new uCharts({ rincanvas[obj.id] = new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
context: ctx,
type: 'column', type: 'column',
legend: { legend: {
show: false show: false
}, },
colors: ['#78BFB4'], color: ['#78BFB4'],
fontSize: 12, fontSize: 12,
background: '#FFFFFF', background: '#FFFFFF',
padding: [30, 12, 12, 12], padding: [30, 12, 12, 12],
@ -205,7 +218,7 @@
disabled: false, disabled: false,
axisLine: false, axisLine: false,
fontColor: '#777777', fontColor: '#777777',
format: (val) => { formatter: (val) => {
return parseInt(val) + '%' return parseInt(val) + '%'
} }
}], }],

View File

@ -419,7 +419,7 @@
import { import {
mapState mapState
} from 'vuex'; } from 'vuex';
import uCharts from '@/components/u-charts/u-charts.js'; import uCharts from '@/components/u-charts.js';
import shopCell from './components/listUnit.vue' import shopCell from './components/listUnit.vue'
import RankContent from './components/RankContent.vue' import RankContent from './components/RankContent.vue'
@ -538,7 +538,7 @@
}, },
touchPie(e, id) { touchPie(e, id) {
rincanvas[id].showToolTip(e, { rincanvas[id].showToolTip(e, {
format: function(item) { formatter: function(item) {
return item.name + ':' + item.data return item.name + ':' + item.data
} }
}); });
@ -700,7 +700,7 @@
}, },
operationFn(data, ohterData) { // operationFn(data, ohterData) { //
var _this = this; var _this = this;
console.log(1)
if (data.SHOWBUSINESSTRADE == 1) { // if (data.SHOWBUSINESSTRADE == 1) { //
var colors1 = ['#5E67B4', '#4E5699', '#75B7AD', '#AFB7E6']; var colors1 = ['#5E67B4', '#4E5699', '#75B7AD', '#AFB7E6'];
var SHOWBUSINESSTRADE = [ var SHOWBUSINESSTRADE = [
@ -775,8 +775,13 @@
name: showName, name: showName,
data: n.CASHPAY, data: n.CASHPAY,
textColor: '#999', textColor: '#999',
format: function(arg) { formatter: function(arg) {
if(typeof arg==='number'){
return [showName,(arg * 100).toFixed(2) + '%'] return [showName,(arg * 100).toFixed(2) + '%']
}else{
return [arg.name,(arg._proportion_ * 100).toFixed(2) + '%']
}
} }
}); });
_data2.push({ _data2.push({
@ -805,9 +810,14 @@
name: n[1], name: n[1],
textColor: '#999', textColor: '#999',
data: data[n[0]], //+Number(data2[n[0]]) data: data[n[0]], //+Number(data2[n[0]])
format: function(arg) { // labelText: '',
formatter: function(arg) {
if(typeof arg==='number'){
return [n[1],(arg * 100).toFixed(2) + '%'] return [n[1],(arg * 100).toFixed(2) + '%']
}else{
return [arg.name,(arg._proportion_ * 100).toFixed(2) + '%']
}
} }
}); });
@ -831,15 +841,16 @@
let data = { let data = {
series: [] series: []
} }
const ctx = uni.createCanvasContext(obj.id, this);
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
colors: obj.colors, context: ctx,
color: obj.colors,
type: 'ring', type: 'ring',
fontSize: 12, fontSize: 12,
padding: [15, 15, 25, 15], // padding: [15, 15, 25, 15],
legend: { legend: {
show: false, show: false,
padding: 5, padding: 5,
@ -854,7 +865,7 @@
height: uni.upx2px(510), height: uni.upx2px(510),
dataLabel: true, dataLabel: true,
extra: { extra: {
pie: { ring: {
ringWidth: 40, ringWidth: 40,
labelWidth: 16, labelWidth: 16,
border: true, border: true,
@ -866,10 +877,12 @@
}); });
}, },
showLine(obj) { showLine(obj) {
const ctx = uni.createCanvasContext(obj.id, this);
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
colors: ['#667ED5'], context: ctx,
color: ['#667ED5'],
type: 'area', type: 'area',
fontSize: 12, fontSize: 12,
legend: { legend: {
@ -883,7 +896,6 @@
categories: obj.categories, categories: obj.categories,
series: obj.data, series: obj.data,
animation: false, animation: false,
xAxis: { xAxis: {
disabled: false, disabled: false,
disableGrid: true, disableGrid: true,
@ -895,12 +907,11 @@
// scrollAlign: 'left',// // scrollAlign: 'left',//
}, },
yAxis: { yAxis: {
data: [{ data: [{
disabled: false, disabled: false,
axisLine: false, axisLine: false,
fontColor: '#B3B3B3', fontColor: '#B3B3B3',
format: (val) => { formatter: (val) => {
return parseInt(val) return parseInt(val)
} }
}], }],
@ -923,14 +934,16 @@
}, },
showClounm(obj) { showClounm(obj) {
// rincanvas[obj.id] = // rincanvas[obj.id] =
const ctx = uni.createCanvasContext(obj.id, this);
new uCharts({ new uCharts({
$this: this, // $this: this,
canvasId: obj.id, // canvasId: obj.id,
context: ctx,
type: 'column', type: 'column',
legend: { legend: {
show: false show: false
}, },
colors: ['#D1DBEF'], color: ['#D1DBEF'],
fontSize: 12, fontSize: 12,
background: '#FFFFFF', background: '#FFFFFF',
padding: [30, 12, 12, 12], padding: [30, 12, 12, 12],
@ -951,7 +964,7 @@
disabled: false, disabled: false,
axisLine: false, axisLine: false,
fontColor: '#B3B3B3', fontColor: '#B3B3B3',
format: (val) => { formatter: (val) => {
return parseInt(val) return parseInt(val)
} }
}], }],

View File

@ -1,31 +1,38 @@
<template> <template>
<view :style="showUnUpLoad ? 'overflow:hideen;height:100vh;':'height:100%;width:750rpx;'" class="page-body" scroll-with-animation v-if="showPage"> <view :style="showUnUpLoad ? 'overflow:hideen;height:100vh;':'height:100%;width:750rpx;'" class="page-body"
scroll-with-animation v-if="showPage">
<div class="box-card" :style="'opacity:'+(1-opacity)+';'"> <div class="box-card" :style="'opacity:'+(1-opacity)+';'">
<div class="box-top-title"> <div class="box-top-title">
<span class="box-center-title">{{pageData.Serverpart_Name}}</span> <span class="box-center-title">{{pageData.Serverpart_Name}}</span>
<picker mode="date" @change="bindDateChange" :value="theRequest.time" :end="lastDay" start="2021/01/01" class="title-clock" > <picker mode="date" @change="bindDateChange" :value="theRequest.time" :end="lastDay" start="2021/01/01"
class="title-clock">
<view>{{searchDate}} <text class="uni-icon uni-icon-arrowdown"></text></view> <view>{{searchDate}} <text class="uni-icon uni-icon-arrowdown"></text></view>
</picker> </picker>
</div> </div>
<view class="top-card" :style="theRequest.ProvinceCode!='340000'? 'padding: 0 0 24rpx 0;border-radius: 12rpx;': ''"> <view class="top-card"
:style="theRequest.ProvinceCode!='340000'? 'padding: 0 0 24rpx 0;border-radius: 12rpx;': ''">
<div class="box-center-box"> <div class="box-center-box">
<template v-if="theRequest.ProvinceCode=='340000'"> <template v-if="theRequest.ProvinceCode=='340000'">
<div class="uni-flex ai-center jc-between"> <div class="uni-flex ai-center jc-between">
<div class="main-amount-title">对客营收()</div> <div class="main-amount-title">对客营收()</div>
<div class="tab-unit" @tap="showPop" v-if="upcouts"> <div class="tab-unit" @tap="showPop" v-if="upcouts">
<span>上传门店</span> <span>上传门店</span>
<span class="tab-unit-num" :class="{'priceRed':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_UPCOUNT}}</span> <span class="tab-unit-num"
<span class="tab-unit-num " :class="{'more-btn':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_TCOUNT}}</span> :class="{'priceRed':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_UPCOUNT}}</span>
<span class="tab-unit-num "
:class="{'more-btn':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_TCOUNT}}</span>
</div> </div>
</div> </div>
<div class="uni-flex ai-base jc-between"> <div class="uni-flex ai-base jc-between">
<span class="center-num">{{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</span> <span
class="center-num">{{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</span>
<span class="budgetamount" v-if="sMsg"> <span class="budgetamount" v-if="sMsg">
<text class="budget-title">计划营收():</text> <text class="budget-title">计划营收():</text>
<text :class="sMsg.BUDGETAMOUNT< pageData.Revenue_Amount ? 'up-text-title':'down-text-title'"> <text
:class="sMsg.BUDGETAMOUNT< pageData.Revenue_Amount ? 'up-text-title':'down-text-title'">
{{sMsg.BUDGETAMOUNT ? $util.fmoney(sMsg.BUDGETAMOUNT,2) : '0.00'}} {{sMsg.BUDGETAMOUNT ? $util.fmoney(sMsg.BUDGETAMOUNT,2) : '0.00'}}
</text> </text>
</span> </span>
@ -34,12 +41,15 @@
<template v-else> <template v-else>
<div class="uni-flex ai-base jc-between"> <div class="uni-flex ai-base jc-between">
<div> <div>
<span class="center-num">{{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</span> <span
class="center-num">{{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</span>
<span class="center-title"></span> <span class="center-title"></span>
</div> </div>
<div v-if="upcouts" @tap="showPop"> <div v-if="upcouts" @tap="showPop">
<span class="tab-unit-num" :class="{'priceRed':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_UPCOUNT}}</span> <span class="tab-unit-num"
<span class="tab-unit-num " :class="{'more-btn':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_TCOUNT}}</span> :class="{'priceRed':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_UPCOUNT}}</span>
<span class="tab-unit-num "
:class="{'more-btn':upcouts.SHOP_UPCOUNT!==upcouts.SHOP_TCOUNT}">{{upcouts.SHOP_TCOUNT}}</span>
</div> </div>
</div> </div>
</template> </template>
@ -88,7 +98,8 @@
</div> </div>
<cover-view class="fixed-box page-title" :style="'transform: translateY('+fixedY+'px);opacity:'+opacity+';'"> <cover-view class="fixed-box page-title" :style="'transform: translateY('+fixedY+'px);opacity:'+opacity+';'">
<cover-view>{{pageData.Serverpart_Name || ''}}</cover-view> <cover-view>{{pageData.Serverpart_Name || ''}}</cover-view>
<cover-view class="price-text" style="width: 200rpx;text-align: right;">¥ {{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</cover-view> <cover-view class="price-text" style="width: 200rpx;text-align: right;">¥
{{pageData.Revenue_Amount ? $util.fmoney(pageData.Revenue_Amount,2) : '0.00'}}</cover-view>
</cover-view> </cover-view>
<template v-if="cateBrandList.length"> <template v-if="cateBrandList.length">
@ -103,7 +114,8 @@
<div class="pie-title">经营模式占比</div> <div class="pie-title">经营模式占比</div>
<view class="operation-model-content"> <view class="operation-model-content">
<canvas canvas-id="modelCount" v-if="operationModel.length>0" id="modelCount" class="operation-model-content" @click="touchPie($event,'modelCount')"/> <canvas canvas-id="modelCount" v-if="operationModel.length>0" id="modelCount"
class="operation-model-content" @click="touchPie($event,'modelCount')" />
</view> </view>
</view> </view>
</template> </template>
@ -111,25 +123,30 @@
<view class="" v-show="nowTab==1"> <view class="" v-show="nowTab==1">
<!-- 安徽省 --> <!-- 安徽省 -->
<ServiceRevenuePie ref="serviceRevenuePie" v-if="ServiceRevenueData.length==2 && nowTab==1" :data="ServiceRevenueData" @selectCate="selectCate"/> <ServiceRevenuePie ref="serviceRevenuePie" v-if="ServiceRevenueData.length==2 && nowTab==1"
:data="ServiceRevenueData" @selectCate="selectCate" />
<!-- 其余省份 --> <!-- 其余省份 -->
<canvas v-else-if="sellData.length>0" canvas-id="sellCate" id="sellCate" class="operation-cate-content" @click="touchPie($event,'sellCate')"></canvas> <canvas v-else-if="sellData.length>0" canvas-id="sellCate" id="sellCate" class="operation-cate-content"
@click="touchPie($event,'sellCate')"></canvas>
<!-- 品牌列表 --> <!-- 品牌列表 -->
<div class="shop-box"> <div class="shop-box">
<scroll-view scroll-x class="tab-shop" scroll-with-animation :scroll-left="scrollLeft"> <scroll-view scroll-x class="tab-shop" scroll-with-animation :scroll-left="scrollLeft">
<div v-for="(n,i) in cateBrandList" :key="i" :id="`tabNum${i}`" class="cate-name" :class="{'active': nowShop==i}" @click="selectCate(i)">{{n.Bussiness_Name}}</div> <div v-for="(n,i) in cateBrandList" :key="i" :id="`tabNum${i}`" class="cate-name"
:class="{'active': nowShop==i}" @click="selectCate(i)">{{n.Bussiness_Name}}</div>
</scroll-view> </scroll-view>
<div class="tab-content" v-if="cateBrandList.length"> <div class="tab-content" v-if="cateBrandList.length">
<div class="shop-card" v-for="(m,i) in cateBrandList[nowShop].listBrandModel" :key="i" @click="toBrandPage(m,i)" > <div class="shop-card" v-for="(m,i) in cateBrandList[nowShop].listBrandModel" :key="i"
@click="toBrandPage(m,i)">
<div> <div>
<image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image> <image v-if="m.Brand_ICO" :src="m.Brand_ICO" mode="aspectFit"></image>
<image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image> <image v-else src="/static/images/revenue/home.png" mode="aspectFit"></image>
</div> </div>
<div class="shop-name">{{m.Brand_Name}}</div> <div class="shop-name">{{m.Brand_Name}}</div>
<div class="price-num">¥ {{m.Revenue_Amount ? $util.fmoney(m.Revenue_Amount,2) : '0.00'}}</div> <div class="price-num">¥ {{m.Revenue_Amount ? $util.fmoney(m.Revenue_Amount,2) : '0.00'}}
</div>
</div> </div>
</div> </div>
</div> </div>
@ -146,8 +163,10 @@
<noFound :nodata="'true'" :text="noDataText" /> <noFound :nodata="'true'" :text="noDataText" />
</view> </view>
<cover-view class="uni-mask" :style="showUnUpLoad ? ' display:block;':'opacity:0; display: none;'" @click="closePop" :catchtouchmove="showUnUpLoad? 'return':''"></cover-view> <cover-view class="uni-mask" :style="showUnUpLoad ? ' display:block;':'opacity:0; display: none;'"
<cover-view class="uni-popup uni-popup-middle" :style="showUnUpLoad ? 'display:flex;':'display: none;'" :catchtouchmove="showUnUpLoad? 'return':''"> @click="closePop" :catchtouchmove="showUnUpLoad? 'return':''"></cover-view>
<cover-view class="uni-popup uni-popup-middle" :style="showUnUpLoad ? 'display:flex;':'display: none;'"
:catchtouchmove="showUnUpLoad? 'return':''">
<cover-view class="header-top" v-if="unUploadList.length>0">{{pageData.Serverpart_Name}}未上传门店</cover-view> <cover-view class="header-top" v-if="unUploadList.length>0">{{pageData.Serverpart_Name}}未上传门店</cover-view>
<cover-view class="pop-body"> <cover-view class="pop-body">
@ -166,7 +185,8 @@
<cover-view class="pop-index">{{i>8 ? i+1 :'0'+(i+1)}}</cover-view> <cover-view class="pop-index">{{i>8 ? i+1 :'0'+(i+1)}}</cover-view>
<cover-view class="inline-item">{{c.SHOPNAME}}</cover-view> <cover-view class="inline-item">{{c.SHOPNAME}}</cover-view>
</cover-view> </cover-view>
<cover-view class="">{{c.DOWNLOAD_DATE ? $util.cutDate(c.DOWNLOAD_DATE,'MM/DD hh:mm:ss'): ''}} </cover-view> <cover-view class="">{{c.DOWNLOAD_DATE ? $util.cutDate(c.DOWNLOAD_DATE,'MM/DD hh:mm:ss'): ''}}
</cover-view>
<cover-view class="pop-row-bottom"></cover-view> <cover-view class="pop-row-bottom"></cover-view>
</cover-view> </cover-view>
</cover-view> </cover-view>
@ -176,7 +196,7 @@
</template> </template>
<script> <script>
import uCharts from '@/components/u-charts/u-charts.js'; import uCharts from '@/components/u-charts.js';
import ServiceRevenuePie from './components/ServiceRevenuePie.vue' import ServiceRevenuePie from './components/ServiceRevenuePie.vue'
import CustomerAnalysis from './components/CustomerAnalysis.vue' import CustomerAnalysis from './components/CustomerAnalysis.vue'
let rincanvas = {} let rincanvas = {}
@ -263,12 +283,10 @@
this.getHeader(opt) this.getHeader(opt)
this.getData(opt) this.getData(opt)
} else { } else {
uni.showToast( uni.showToast({
{
title: '请选择有效日期', title: '请选择有效日期',
icon: 'none', icon: 'none',
} })
)
} }
}, },
@ -300,7 +318,8 @@
let btid = this.cateBrandList[nowShop].Business_Trade let btid = this.cateBrandList[nowShop].Business_Trade
let pages = `/pages/everdayRenven/serviceDetail?bid=${item.Brand_Id}&id=${theRequest.ServerpartIds}&time=${theRequest.time}&provinceId=${theRequest.ProvinceCode}&btid=${item.Business_Trade}` let pages =
`/pages/everdayRenven/serviceDetail?bid=${item.Brand_Id}&id=${theRequest.ServerpartIds}&time=${theRequest.time}&provinceId=${theRequest.ProvinceCode}&btid=${item.Business_Trade}`
this.$util.toNextRoute('navigateTo', pages) this.$util.toNextRoute('navigateTo', pages)
}, },
async selectCate(index) { async selectCate(index) {
@ -351,8 +370,13 @@
n.textColor = '#D1D1D1' n.textColor = '#D1D1D1'
n.textSize = uni.upx2px(26) n.textSize = uni.upx2px(26)
n.format = function(arg) { n.formatter = function(arg) {
if(typeof arg==='number'){
return [n.name,(arg * 100).toFixed(2) + '%'] return [n.name,(arg * 100).toFixed(2) + '%']
}else{
return [arg.name,(arg._proportion_ * 100).toFixed(2) + '%']
}
} }
list.push(n) list.push(n)
} }
@ -396,9 +420,13 @@
name: n[1], name: n[1],
textColor: '#999', textColor: '#999',
data: data[n[0]], //+Number(data2[n[0]]) data: data[n[0]], //+Number(data2[n[0]])
format: function(arg) { formatter: function(arg) {
if (typeof arg === 'number') {
return [n[1], (arg * 100).toFixed(2) + '%'] return [n[1], (arg * 100).toFixed(2) + '%']
} else {
return [arg.name, (arg._proportion_ * 100).toFixed(2) + '%']
}
} }
}); });
} }
@ -410,14 +438,16 @@
return _data1; return _data1;
}, },
showPie(obj) { showPie(obj) {
const ctx = uni.createCanvasContext(obj.id, this);
let data = { let data = {
series: [] series: []
} }
data.series = data.series.concat(obj.data) data.series = data.series.concat(obj.data)
rincanvas[obj.id] = new uCharts({ rincanvas[obj.id] = new uCharts({
$this: _self, // $this: _self,
canvasId: obj.id, // canvasId: obj.id,
colors: obj.colors, context: ctx,
color: obj.colors,
type: 'ring', type: 'ring',
padding: obj.id != 'modelCount' ? [15, 15, 25, 0] : '', padding: obj.id != 'modelCount' ? [15, 15, 25, 0] : '',
legend: { legend: {
@ -447,7 +477,7 @@
disablePieStroke: true, disablePieStroke: true,
dataPointShape: false, dataPointShape: false,
extra: { extra: {
pie: { ring: {
ringWidth: obj.id != 'modelCount' ? uni.upx2px(90) : 40, ringWidth: obj.id != 'modelCount' ? uni.upx2px(90) : 40,
labelWidth: uni.upx2px(40), labelWidth: uni.upx2px(40),
activeOpacity: 1, activeOpacity: 1,
@ -465,12 +495,16 @@
touchPie(e, id, opt) { touchPie(e, id, opt) {
let touches = null let touches = null
if(id=="modelCount" && e.currentTarget.offsetTop<100) {e.currentTarget.offsetTop = e.currentTarget.offsetTop + uni.upx2px(620)} if (id == "modelCount" && e.currentTarget.offsetTop < 100) {
e.currentTarget.offsetTop = e.currentTarget.offsetTop + uni.upx2px(620)
}
let index = rincanvas[id].getCurrentDataIndex(e) let index = rincanvas[id].getCurrentDataIndex(e)
if (index == -1) return if (index == -1) return
let item = id != "modelCount" ? this.sellData[index] : this.operationModel[index] let item = id != "modelCount" ? this.sellData[index] : this.operationModel[index]
if (id != "modelCount") { if (id != "modelCount") {
this.sellData.map(n=>{n.textColor="#d1d1d1"}) this.sellData.map(n => {
n.textColor = "#d1d1d1"
})
item.textColor = "#999" item.textColor = "#999"
this.nowShop = index + 1 this.nowShop = index + 1
@ -522,7 +556,6 @@
let all = { let all = {
Bussiness_Name: '全部', Bussiness_Name: '全部',
listBrandModel: [] listBrandModel: []
} }
list.map(n => { list.map(n => {
@ -559,14 +592,34 @@
uni.hideLoading() uni.hideLoading()
if (res.ResultCode == 100) { if (res.ResultCode == 100) {
let _data = res.Data let _data = res.Data
let {DIFFERENT_PRICE_LESS,DIFFERENT_PRICE_MORE,TICKETCOUNT,COMMODITY_COUNT,MOBILEPAYMENT,TOTALOFFAMOUNT,CASHPAY,BUDGETAMOUNT,UPLOADSTATE} = _data let {
DIFFERENT_PRICE_LESS,
DIFFERENT_PRICE_MORE,
TICKETCOUNT,
COMMODITY_COUNT,
MOBILEPAYMENT,
TOTALOFFAMOUNT,
CASHPAY,
BUDGETAMOUNT,
UPLOADSTATE
} = _data
let headmsg = {DIFFERENT_PRICE_LESS,DIFFERENT_PRICE_MORE,TICKETCOUNT,COMMODITY_COUNT,MOBILEPAYMENT,TOTALOFFAMOUNT,CASHPAY,BUDGETAMOUNT,} let headmsg = {
DIFFERENT_PRICE_LESS,
DIFFERENT_PRICE_MORE,
TICKETCOUNT,
COMMODITY_COUNT,
MOBILEPAYMENT,
TOTALOFFAMOUNT,
CASHPAY,
BUDGETAMOUNT,
}
headmsg.DIFFERENT_PRICE_LESS = _this.$util.fmoney(DIFFERENT_PRICE_LESS) headmsg.DIFFERENT_PRICE_LESS = _this.$util.fmoney(DIFFERENT_PRICE_LESS)
headmsg.DIFFERENT_PRICE_MORE = _this.$util.fmoney(DIFFERENT_PRICE_MORE) headmsg.DIFFERENT_PRICE_MORE = _this.$util.fmoney(DIFFERENT_PRICE_MORE)
headmsg.TICKETAVE = TICKETCOUNT > 0 ? this.$util.fmoney(CASHPAY / TICKETCOUNT, 2) : 0 headmsg.TICKETAVE = TICKETCOUNT > 0 ? this.$util.fmoney(CASHPAY / TICKETCOUNT, 2) : 0
headmsg.COMMODITYAVE = COMMODITY_COUNT > 0 ? this.$util.fmoney(CASHPAY / COMMODITY_COUNT, 2) : 0 headmsg.COMMODITYAVE = COMMODITY_COUNT > 0 ? this.$util.fmoney(CASHPAY / COMMODITY_COUNT,
2) : 0
const uploadArray = UPLOADSTATE.split('/') const uploadArray = UPLOADSTATE.split('/')
this.upcouts = { this.upcouts = {
SHOP_UPCOUNT: uploadArray[0], SHOP_UPCOUNT: uploadArray[0],
@ -677,9 +730,11 @@
box-sizing: border-box; box-sizing: border-box;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.mt8 { .mt8 {
margin-top: 16rpx; margin-top: 16rpx;
} }
cover-view.page-title { cover-view.page-title {
color: #fff; color: #fff;
} }
@ -695,9 +750,11 @@
color: #000; color: #000;
font-size: 30rpx; font-size: 30rpx;
} }
.page-title text:last-child { .page-title text:last-child {
color: #383838; color: #383838;
} }
.fixed-box { .fixed-box {
background-color: #686D8F; background-color: #686D8F;
/* background: linear-gradient(to right, #686D8F, #A1ACC6); */ /* background: linear-gradient(to right, #686D8F, #A1ACC6); */
@ -710,17 +767,20 @@
box-sizing: border-box; box-sizing: border-box;
color: #fff; color: #fff;
} }
/* 业态 */ /* 业态 */
.operation-cate-content { .operation-cate-content {
height: 585rpx; height: 585rpx;
width: 690rpx; width: 690rpx;
margin: 0 auto; margin: 0 auto;
} }
.operation-model-content { .operation-model-content {
height: 480rpx; height: 480rpx;
width: 690rpx; width: 690rpx;
margin: 0 auto; margin: 0 auto;
} }
/* 门店 */ /* 门店 */
.shop-box { .shop-box {
margin: 32rpx 20rpx; margin: 32rpx 20rpx;
@ -729,6 +789,7 @@
padding: 36rpx 20rpx; padding: 36rpx 20rpx;
} }
.tab-shop { .tab-shop {
color: #999999; color: #999999;
@ -737,23 +798,27 @@
align-items: center; */ align-items: center; */
} }
.tab-shop .cate-name { .tab-shop .cate-name {
padding-right: 16rpx; padding-right: 16rpx;
font-size: 26rpx; font-size: 26rpx;
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
} }
.tab-shop .cate-name+.cate-name::before { .tab-shop .cate-name+.cate-name::before {
content: '|'; content: '|';
color: #eeeeee; color: #eeeeee;
padding-right: 16rpx; padding-right: 16rpx;
} }
.tab-shop .cate-name.active { .tab-shop .cate-name.active {
color: #000; color: #000;
font-size: 28rpx; font-size: 28rpx;
font-weight: 600; font-weight: 600;
} }
.tab-content { .tab-content {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
@ -764,6 +829,7 @@
height: inherit; height: inherit;
width: inherit; width: inherit;
} }
.pie-content { .pie-content {
margin: 0 30rpx; margin: 0 30rpx;
border-radius: 8rpx; border-radius: 8rpx;
@ -772,11 +838,13 @@
position: relative; position: relative;
margin-bottom: 48rpx; margin-bottom: 48rpx;
} }
.pie-title { .pie-title {
padding: 0 20rpx; padding: 0 20rpx;
line-height: 80rpx; line-height: 80rpx;
font-size: 26rpx; font-size: 26rpx;
} }
/* 门店卡片 */ /* 门店卡片 */
.shop-card { .shop-card {
width: 210rpx; width: 210rpx;
@ -788,6 +856,7 @@
box-sizing: border-box; box-sizing: border-box;
margin-top: 16rpx; margin-top: 16rpx;
} }
.shop-card:nth-child(6n-5) { .shop-card:nth-child(6n-5) {
background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #ed7c77, #d6524c); background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #ed7c77, #d6524c);
background-size: contain; background-size: contain;
@ -798,27 +867,32 @@
margin-left: 18rpx; margin-left: 18rpx;
background-size: contain; background-size: contain;
} }
.shop-card:nth-child(6n-3) { .shop-card:nth-child(6n-3) {
background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #929cc0, #aab3d0); background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #929cc0, #aab3d0);
margin-left: 18rpx; margin-left: 18rpx;
background-size: contain; background-size: contain;
} }
.shop-card:nth-child(6n-2) { .shop-card:nth-child(6n-2) {
background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #779cb1, #a3bbc9); background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #779cb1, #a3bbc9);
background-size: contain; background-size: contain;
margin-left: 0rpx; margin-left: 0rpx;
} }
.shop-card:nth-child(6n-1) { .shop-card:nth-child(6n-1) {
background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #c08d80, #e8cbc7); background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #c08d80, #e8cbc7);
margin-left: 18rpx; margin-left: 18rpx;
background-size: contain; background-size: contain;
} }
.shop-card:nth-child(6n) { .shop-card:nth-child(6n) {
background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #5cbe9c, #95d5bf); background: url(/static/images/revenue/shop-card.png) no-repeat center 50%, linear-gradient(-35deg, #5cbe9c, #95d5bf);
margin-left: 18rpx; margin-left: 18rpx;
background-size: contain; background-size: contain;
margin-left: 18rpx; margin-left: 18rpx;
} }
.shop-card .shop-name { .shop-card .shop-name {
font-size: 24rpx; font-size: 24rpx;
text-shadow: 0 2rpx 2rpx #A9a5a0; text-shadow: 0 2rpx 2rpx #A9a5a0;
@ -826,6 +900,7 @@
max-height: 62rpx; max-height: 62rpx;
overflow: hidden; overflow: hidden;
} }
.shop-card image { .shop-card image {
border-radius: 50%; border-radius: 50%;
border: 2rpx solid #fff; border: 2rpx solid #fff;
@ -833,6 +908,7 @@
width: 62rpx; width: 62rpx;
height: 62rpx; height: 62rpx;
} }
.shop-card .price-num { .shop-card .price-num {
font-size: 38rpx; font-size: 38rpx;
@ -851,17 +927,20 @@
background-position: top center; background-position: top center;
} }
.top-card { .top-card {
background: linear-gradient(to top, #989fb9, #686d8f); background: linear-gradient(to top, #989fb9, #686d8f);
margin-top: 24upx; margin-top: 24upx;
padding: 32upx 0 32rpx 0; padding: 32upx 0 32rpx 0;
border-radius: 8rpx; border-radius: 8rpx;
} }
.budgetamount { .budgetamount {
margin-left: 14rpx; margin-left: 14rpx;
color: #fff; color: #fff;
font-family: 'Bahnschrift Regular'; font-family: 'Bahnschrift Regular';
} }
.budget-title { .budget-title {
color: #DEE1F1; color: #DEE1F1;
@ -870,11 +949,14 @@
margin-right: 4rpx; margin-right: 4rpx;
} }
.up-text-title ,.down-text-title{
.up-text-title,
.down-text-title {
font-size: 32rpx; font-size: 32rpx;
font-family: 'Bahnschrift Regular'; font-family: 'Bahnschrift Regular';
/* line-height: 1.2; */ /* line-height: 1.2; */
} }
.up-text-title:after { .up-text-title:after {
content: ""; content: "";
margin-left: 6rpx; margin-left: 6rpx;
@ -885,6 +967,7 @@
background-size: contain; background-size: contain;
} }
.down-text-title:after { .down-text-title:after {
content: ""; content: "";
margin-left: 6rpx; margin-left: 6rpx;
@ -901,11 +984,13 @@
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.title-clock { .title-clock {
color: #999; color: #999;
font-size: 24upx; font-size: 24upx;
text-align: right; text-align: right;
} }
/* /*
.more-btn,.weisc-ico { .more-btn,.weisc-ico {
display: flex; display: flex;
@ -933,24 +1018,30 @@
text-align: center; text-align: center;
} }
.uni-icon-arrowdown { .uni-icon-arrowdown {
font-size: 24rpx; font-size: 24rpx;
} }
.box-center-box { .box-center-box {
/* margin-bottom: 16rpx; */ /* margin-bottom: 16rpx; */
padding: 0 24rpx; padding: 0 24rpx;
} }
.center-title { .center-title {
color: #DEDEDE; color: #DEDEDE;
font-size: 24rpx; font-size: 24rpx;
} }
.center-num { .center-num {
font-size: 64rpx; font-size: 64rpx;
color: #fff; color: #fff;
font-family: Bahnschrift Regular; font-family: Bahnschrift Regular;
} }
.check-unit,.budgetamount {
.check-unit,
.budgetamount {
font-size: 24rpx; font-size: 24rpx;
color: #DEE1F1; color: #DEE1F1;
text-align: center; text-align: center;
@ -962,6 +1053,7 @@
font-size: 24rpx; font-size: 24rpx;
/* flex: 1; */ /* flex: 1; */
} }
.tab-unit { .tab-unit {
background-color: #3A3E5B; background-color: #3A3E5B;
border-radius: 24rpx 0 0 24rpx; border-radius: 24rpx 0 0 24rpx;
@ -971,15 +1063,18 @@
right: -12px; right: -12px;
padding: 0 20rpx; padding: 0 20rpx;
} }
.check-price-color { .check-price-color {
color: #fff; color: #fff;
font-size: 34rpx; font-size: 34rpx;
font-family: Bahnschrift Regular; font-family: Bahnschrift Regular;
line-height: 1.2; line-height: 1.2;
} }
.check-price-color text { .check-price-color text {
font-size: 22rpx; font-size: 22rpx;
} }
.tab-icon2 { .tab-icon2 {
font-size: 26rpx; font-size: 26rpx;
color: #DEDEDE; color: #DEDEDE;
@ -996,12 +1091,15 @@
margin: 0 4rpx; margin: 0 4rpx;
color: #fff; color: #fff;
} }
.priceGreen,.priceGreen.tab-unit-num {
.priceGreen,
.priceGreen.tab-unit-num {
color: #7CB9A5; color: #7CB9A5;
/* font-size: 28rpx; */ /* font-size: 28rpx; */
} }
.priceRed,.tab-unit-num.priceRed { .priceRed,
.tab-unit-num.priceRed {
color: #DD7575; color: #DD7575;
/* font-size: 28rpx; */ /* font-size: 28rpx; */
} }
@ -1019,6 +1117,7 @@
width: 750rpx; width: 750rpx;
opacity: 0.6; opacity: 0.6;
} }
.uni-popup { .uni-popup {
position: fixed; position: fixed;
z-index: 999; z-index: 999;
@ -1040,6 +1139,7 @@
justify-content: flex-start; justify-content: flex-start;
padding: 0 30upx 30upx 30upx; padding: 0 30upx 30upx 30upx;
} }
.header-top { .header-top {
font-size: 30rpx; font-size: 30rpx;
font-weight: 600; font-weight: 600;
@ -1067,6 +1167,7 @@
box-sizing: border-box; box-sizing: border-box;
position: relative; position: relative;
} }
.pop-row .pop-row-bottom { .pop-row .pop-row-bottom {
position: absolute; position: absolute;
@ -1089,6 +1190,7 @@
display: inline-block; display: inline-block;
vertical-align: middle; vertical-align: middle;
} }
/* .customer-title { /* .customer-title {
color: #525280; color: #525280;
font-size: 32rpx; font-size: 32rpx;
@ -1121,12 +1223,14 @@
border-radius: 39rpx; border-radius: 39rpx;
display: flex; display: flex;
} }
.tab { .tab {
text-align: center; text-align: center;
flex: 1; flex: 1;
height: 76rpx; height: 76rpx;
line-height: 76rpx; line-height: 76rpx;
} }
.tab.active { .tab.active {
background: #f2f4f9; background: #f2f4f9;
color: #647BD1; color: #647BD1;