Browse Source

add statistics api

organize
刘嘉炜 3 years ago
parent
commit
c8d287ee0f
  1. 5
      src/js/api.js
  2. 14
      src/pages/collection/info/info.vue
  3. 81
      src/pages/collection/list/list.vue
  4. 2
      src/pages/index/index.vue
  5. 57
      src/pages/turnover/turnover.vue

5
src/js/api.js

@ -20,6 +20,11 @@ export const API = {
collectionRecord: `${ORIGIN}/admin/assistant/collection/record`, // 收款记录
collectionDetails: `${ORIGIN}/admin/assistant/collection/details`, // 收款记录-收款明细
// 20220422 收款记录
consumeCountLs: `${ORIGIN}/admin/stadium/consumeCount/list`, // 收款记录
consumeCountDetailLs: `${ORIGIN}/admin/stadium/consumeCountDetail/list`, // 收款明细列表
consumeCountGetScene: `${ORIGIN}/config/get`, // 收款明细列表
// reservationOrder: `${ORIGIN}/admin/stadium/order/list`, // 预约订单
reservationOrder:`${ORIGIN}/admin/assistant/stadiumOrder/list`, //k-订单管理-预约订单列表 PM:2021/4/19

14
src/pages/collection/info/info.vue

@ -5,8 +5,8 @@
<view class="cs-txt">当前门店</view>
<picker>
<view class="cs-picker">
<input />
<image></image>
<input disabled />
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png"></image>
</view>
</picker>
@ -18,7 +18,7 @@
<input />
<view></view>
<picker>
<image></image>
<image mode="aspectFit" src="/static/images/icon/calendar.png"></image>
</picker>
</view>
@ -28,8 +28,8 @@
<view class="ci-frame ci-scene">
<picker class="cs-picker">
<view class="cp-picker-frame">
<input />
<image></image>
<input disabled />
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png" style="transform: rotateZ(90deg);"></image>
</view>
</picker>
</view>
@ -113,7 +113,7 @@ export default {
flex-shrink: 0;
width: 28upx;
height: 28upx;
background-color: skyblue;
transform: rotateZ(90deg);
}
}
}
@ -162,7 +162,6 @@ export default {
display: block;
height: 40upx;
width: 40upx;
background-color: skyblue;
}
}
@ -187,7 +186,6 @@ export default {
margin-left: 16upx;
height: 28upx;
width: 28upx;
background-color: skyblue;
}
}
}

81
src/pages/collection/list/list.vue

@ -3,38 +3,38 @@
<view class="cl-date">
<view class="cd-txt">收款日期</view>
<view class="cd-content">
<input class="cc-ipt" />
<input class="cc-ipt" disabled :value="dateStr" />
<view class="cc-icon"></view>
<picker class="cc-img">
<image></image>
<picker class="cc-img" mode="date" @change="timeChange">
<image mode="aspectFit" src="/static/images/icon/calendar.png"></image>
</picker>
</view>
</view>
<view class="cl-list">
<view class="cl-item" v-for="i in 10" :key="i">
<view class="cl-item" v-for="(e, i) in recordLs" :key="i" @click="toInfo(e)">
<view class="ci-tit-name">
<view class="ctn-name">
<view>品牌收入汇总</view>
<image></image>
<view>{{ e.brand_or_stadium_name || '-' }}</view>
<image mode="aspectFit" @click.stop="showModal(e)" src="/static/images/icon/question_mark.png"></image>
</view>
<image></image>
<image mode="aspectFit" src="/static/images/icon/arrow_b2.png"></image>
</view>
<view class="ci-price">
<text></text>10800.<text>00</text>
<text></text>{{ e.day_actual_income_amount || 0 }}<text>.00</text>
</view>
<view class="ci-tip">日总收入</view>
<view class="ci-preview">
<view class="cp-line cp-first">
<view><text class="margin">收款100笔</text>10000.00 </view>
<view><text class="margin">退款2笔</text>200.00</view>
<view><text class="margin">线上 ¥{{ e.online_actual_income_amount || 0 }}</text></view>
<view><text class="margin">线下 ¥{{ e.offline_actual_income_amount || 0 }}</text></view>
</view>
<view class="cp-line">
<view><text class="margin">收款100</text>10000.00 </view>
<view><text class="margin">退款2</text>200.00</view>
<view><text class="margin">收款{{ e.online_income_num || 0 }}</text>{{ e.online_income_amount || 0 }} </view>
<view><text class="margin">收款{{ e.offline_income_num || 0 }}</text>{{ e.offline_income_amount || 0 }}</view>
</view>
<view class="cp-line">
<view><text class="margin">收款100</text><text class="orange">200.00</text> </view>
<view><text class="margin">退款2</text><text class="orange">200.00</text></view>
<view><text class="margin">退款{{ e.online_refund_num || 0 }}</text><text class="orange">{{ e.online_refund_amount || 0 }}</text> </view>
<view><text class="margin">退款{{ e.offline_refund_num || 0 }}</text><text class="orange">{{ e.offline_refund_amount || 0 }}</text></view>
</view>
</view>
</view>
@ -43,8 +43,57 @@
</template>
<script>
import { API } from '../../../js/api'
import { servers } from '../../../js/server'
import util from '../../../utils/util'
import { mapState } from 'vuex';
import numeral from 'numeral';
export default {
computed: {
...mapState(['brandInfo']),
},
data(){
return {
dateStr: '',
recordLs: []
}
},
onLoad(){
let _dateStr = util.formatDate({date: '2022-04-12'});
this.dateStr = _dateStr;
this.getRecordList(_dateStr);
},
methods: {
toInfo(e){
util.routeTo(`/pages/collection/info/info?stadium_id=${e.stadium_id}&brand_id=${e.brand_id}`, 'nT')
},
showModal(e){
util.showModal({
title: '提示',
content: e.income_record_tips || '-'
})
},
timeChange(e){
console.warn(e);
this.dateStr = e.detail.value;
},
getRecordList(time = ''){
let { brandInfo } = this;
console.warn(brandInfo)
servers.get({
url: API.consumeCountLs,
data: {
brand_id: brandInfo.brand.id,
time_str: time
},
failMsg: '加载列表失败!'
})
.then(res=>{
let _list = res.list || [];
this.recordLs = _list;
})
}
}
}
</script>
@ -87,7 +136,6 @@ export default {
image{
width: 40upx;
height: 40upx;
background-color: skyblue;
}
}
}
@ -119,7 +167,6 @@ export default {
margin-left: 12upx;
width: 28upx;
height: 28upx;
background-color: skyblue;
}
}
.ci-price{

2
src/pages/index/index.vue

@ -86,7 +86,7 @@
{
id: 1,
name: '收款记录',
path: '/pages/collection/record/record',
path: '/pages/collection/list/list',
serverKey: 1002 //
},
{

57
src/pages/turnover/turnover.vue

@ -29,11 +29,11 @@
<text>总收入</text>
<image mode="aspectFit" src="/static/images/icon/question_mark.png" @click="showQuestionModal"></image>
</view>
<view><text>¥</text>{{totalData.total || '0'}}</view>
<view><text>¥</text>{{totalData.count_type_actual_income_amount || '0'}}</view>
</view>
<view class="tts-preview">
<view>线上 ¥0.00</view>
<view>线下 ¥200.00</view>
<view>线上 ¥{{totalData.online_actual_income_amount || '0'}}</view>
<view>线下 ¥{{totalData.offline_actual_income_amount || '0'}}</view>
</view>
</view>
<view class="tc-info-section">
@ -56,30 +56,34 @@
</view>
<view class="td-tip">总收入</view>
<view class="td-price"><text>¥</text>{{pageInfo.calc.total || 0}}</view>
<view class="td-price"><text>¥</text>{{botData.count_type_actual_income_amount || 0}}</view>
<view class="td-detail">
<view>
<view class="td-first">
线上 ¥1000.00
线上 ¥{{ botData.online_actual_income_amount || '0' }}
</view>
<view>
<text class="margin">收款笔数 </text> {{pageInfo.calc.in_count || 0}}
<text class="margin">收款{{ botData.online_income_num || '0' }} </text>
{{ botData.online_income_amount || '0' }}
</view>
<view>
<text class="margin">退款笔数 </text> <text class="orange"> {{pageInfo.calc.out_count || 0}} </text>
<text class="margin">退款{{ botData.online_refund_num || '0' }} </text>
<text class="orange"> {{ botData.online_refund_amount || '0' }} </text>
</view>
</view>
<view>
<view class="td-first">
线 ¥1000.00
线 ¥{{ botData.offline_actual_income_amount || '0' }}
</view>
<view>
<text class="margin">收款金额 </text> {{pageInfo.calc.in_total || '0.00'}}
<text class="margin">收款{{ botData.offline_income_num || '0' }} </text>
{{botData.offline_income_amount || '0.00'}}
</view>
<view>
<text class="margin">退款金额 </text> <text class="orange"> {{pageInfo.calc.out_total || '0.00'}} </text>
<text class="margin">退款{{ botData.offline_refund_num || '0' }} </text>
<text class="orange"> {{ botData.offline_refund_amount || '0' }} </text>
</view>
</view>
@ -114,7 +118,10 @@ export default {
return {
tabID: 4,
timeTabIdx: 0,
totalData: {},
botData: {},
pageInfo: {
calc: {}
},
@ -162,16 +169,17 @@ export default {
7 统计品牌的某一年
*/
getCountType({ tab_id = -1, time_tab_idx = -1 }){
console.warn(tab_id, time_tab_idx, getType(time_tab_idx) + 5);
if(time_tab_idx == -1)return tab_id;
let _type = getType(time_tab_idx) || -1
let _type = getType(time_tab_idx)
if(tab_id == 3&&_type != -1)return _type;
if(tab_id == 4&&_type != -1)return _type + 5;
if(tab_id == 4&&_type != -1)return _type += 5;
function getType(idx){
switch(idx){
switch(+idx){
case 0:
return 0
case 1:
@ -188,8 +196,8 @@ export default {
showQuestionModal(){
let { totalData } = this
util.showModal({
title: totalData.income_record_tips || '提示',
content: totalData.income_record_name || '总收入为:线上(微信支付)+ 线下的总收入(退款已删除)',
title: totalData.income_record_name|| '提示',
content: totalData.income_record_tips || '总收入为:线上(微信支付)+ 线下的总收入(退款已删除)',
showCancel: true,
success: mRes => {
@ -214,17 +222,28 @@ export default {
if(timeTabIdx == 2)_date = `${curTime.month}-01` || '' //
if(timeTabIdx == 3)_date = `${curTime.year}-01-01` || ''//
let _type = this.getCountType({ tab_id: tabID, time_tab_idx: timeTabIdx });
let _query = {
type: timeTabIdx + 1,
date: _date,
stadium_id: curSelectStore.id || '',
count_type: _type,
time_str: _date || '',
}
if(timeTabIdx == 1&&(_type == 0 || _type == 5)){
_query['time_str_min'] = util.formatDate({ date: new Date().getTime() - (7*24*60*60*1000) })
_query['time_str_max'] = util.formatDate({ })
}
if(tabID == 3)_query.stadium_id = curSelectStore.id;
//
this.getCountData({
stadium_id: curSelectStore.id || '',
count_type: this.getCountType({ tab_id: tabID })
})
this.getBrandInfo(_query);
this.getCountData(_query);
// this.getBrandInfo(_query);
},
//
storeChange(e){

Loading…
Cancel
Save