no message

This commit is contained in:
wangh 2024-05-22 17:12:19 +08:00
parent 74a67d07e3
commit 963c46324c
32 changed files with 1929 additions and 186 deletions

View File

@ -88,3 +88,30 @@ export function getOilNumberGun() {
})
}
export function getgetInfoByEmApi(query) {
return request({
url: '/business/oilOrder/getInfoByEm',
method: 'get',
params: query
})
}
export function getInfoByOilTypeApi(query) {
return request({
url: '/business/oilOrder/getInfoByOilType',
method: 'get',
params: query
})
}
export function getInfoByOilGunApi(query) {
return request({
url: '/business/oilOrder/getInfoByOilGun',
method: 'get',
params: query
})
}

View File

@ -0,0 +1,70 @@
<template>
<div class="app-center">
<div class="app-top">
<el-card>
<el-radio-group v-model="radio1">
<el-radio-button label="油品销售统计"></el-radio-button>
<el-radio-button label="油枪销售统计"></el-radio-button>
<!-- <el-radio-button label="无流水门店"></el-radio-button>-->
<el-radio-button label="员工销售统计"></el-radio-button>
</el-radio-group>
</el-card>
</div>
<buy-oil v-if="radio1 == '油品销售统计'"></buy-oil>
<buy-gun v-if="radio1 == '油枪销售统计'"></buy-gun>
<buy-em v-if="radio1 == '员工销售统计'"></buy-em>
</div>
</template>
<script>
import RunningWaterInstitution from "@/views/financialStatement/runningWater/tab/instituion.vue";
import RunningWaterOilDepot from "@/views/financialStatement/runningWater/tab/oilDepot.vue";
import RunningWaterDay from "@/views/financialStatement/runningWater/tab/day.vue";
import RunningWaterNone from "@/views/financialStatement/runningWater/tab/none.vue";
import BuyOil from "@/views/financialStatement/buy/tab/oil.vue";
import BuyGun from "@/views/financialStatement/buy/tab/gun.vue";
import BuyEm from "@/views/financialStatement/buy/tab/em.vue";
export default {
name: "buy-list",
data(){
return{
radio1:'油品销售统计'
}
},
components:{
BuyEm,
BuyGun,
BuyOil,
RunningWaterNone,
RunningWaterDay,
RunningWaterOilDepot,
RunningWaterInstitution
},
methods: {
handleClick(tab, event) {
console.log(tab, event);
}
}
}
</script>
<style scoped>
.app-center{
width: 100%;
box-sizing: border-box;
padding: 10px;
}
.app-top{
width: 100%;
margin-bottom: 20px;
height: 60px;
box-sizing: border-box;
}
</style>

View File

@ -0,0 +1,452 @@
<!-- 收银台订单-->
<template>
<div style="margin-top: 30px">
<el-card class="box-card">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<!-- <el-form-item label="流水编号:">-->
<!-- <el-input v-model="queryParams.orderNo"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="交易时间:">
<!-- <el-date-picker-->
<!-- v-model="dateRange"-->
<!-- style="width: 400px"-->
<!-- size="medium"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- type="datetimerange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- ></el-date-picker>-->
<el-date-picker
v-model="beginTime"
style="width: 140px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime"
style="width: 140px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="机构:" prop="deptId">-->
<!-- <el-select-->
<!-- v-model="queryParams.deptId"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付渠道:" prop="payChannel">-->
<!-- <el-select-->
<!-- v-model="queryParams.payChannel"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="小程序" value="applet"/>-->
<!-- <el-option label="收银台" value="cashier"/>-->
<!-- <el-option label="POS端" value="POS"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付方式:" prop="payType">-->
<!-- <el-select-->
<!-- v-model="queryParams.payType"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="现金" value="CASH"/>-->
<!-- <el-option label="微信" value="WECHAT"/>-->
<!-- <el-option label="支付宝" value="ALIPAY"/>-->
<!-- <el-option label="余额" value="balance"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付状态 " prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="已支付" value="paid"/>-->
<!-- <el-option label="未支付" value="unpaid"/>-->
<!-- <el-option label="已退款" value="refund"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<!-- <el-button type="primary" icon="el-icon-plus" @click = "exportExcelCashier()">导出订单</el-button>-->
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card">
<!-- <div slot="header" class="clearfix">-->
<!-- <span>收银台订单统计</span>-->
<!-- </div>-->
<div class="box-gang">
<div class="box">
<div class="size-hui">总加油升数</div>
<div class="size-bole">{{ sum.sumL.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总加油笔数</div>
<div class="size-bole">{{ sum.sumOil.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总实收金额</div>
<div class="size-bole">{{ sum.sumPayMoney.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总油惠金额</div>
<div class="size-bole">{{ sum.sumDis.toFixed(2) }}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">银联云闪付收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
</div>
</el-card>
<el-card class="box-card">
<div class="wgang">
<div>交易明细分析列表</div>
</div>
<div class="table-box">
<el-table
:data="orderList"
style="width: 100%">
<el-table-column type="index" width="50" align="center" label="序号"/>
<el-table-column prop="realName" align="center" label="员工"> </el-table-column>
<el-table-column prop="sumOilNum" align="center" label="加油升数"> </el-table-column>
<el-table-column prop="sumCoumnt" align="center" label="加油笔数"> </el-table-column>
<el-table-column prop="sumOrderAnount" align="center" label="订单金额"> </el-table-column>
<el-table-column prop="sumDisCount" align="center" label="优惠金额"> </el-table-column>
<el-table-column prop="sumRefPayAmount" align="center" label="退款金额"> </el-table-column>
<el-table-column prop="sumPayAmount" align="center" label="实收金额"> </el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button style="width: 60px" size="mini"-->
<!-- @click="getOrdersInfo(scope.row)"-->
<!-- type="success" plain round>详情</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
<!-- <div class="pagination-box">-->
<!-- <el-pagination-->
<!-- background-->
<!-- v-show="total>0"-->
<!-- layout="prev, pager, next"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.page"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @current-change="getList">-->
<!-- </el-pagination>-->
<!-- </div>-->
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<el-dialog
title="订单信息"
:visible.sync="dialogVisible">
<el-descriptions :title="'订单号:'+ordersInfo.orderNo">
<el-descriptions-item label="门店">{{ordersInfo.storeName}}</el-descriptions-item>
<el-descriptions-item label="收银员">{{ordersInfo.createBy}}</el-descriptions-item>
<el-descriptions-item label="支付渠道">{{ordersInfo.payChannel}}</el-descriptions-item>
<el-descriptions-item label="商户号">{{ordersInfo.mchntCd}}</el-descriptions-item>
<el-descriptions-item label="费率">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="订单来源">{{ordersInfo.type}}</el-descriptions-item>
<el-descriptions-item label="所属模块">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{ordersInfo.payType}}</el-descriptions-item>
<el-descriptions-item label="付款用户">{{ordersInfo.userName}}</el-descriptions-item>
<el-descriptions-item label="支付状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="备注">{{ordersInfo.content}}</el-descriptions-item>
<!-- <el-descriptions-item label="备注">-->
<!-- <el-tag size="small">学校</el-tag>-->
<!-- </el-descriptions-item>-->
</el-descriptions>
<el-descriptions class="margin-top" title="金额详情" :column="3" border>
<el-descriptions-item>
<template slot="label">
订单金额
</template>
{{ordersInfo.goodsMoney?ordersInfo.goodsMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
优惠后应付金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
退款金额
</template>
{{ordersInfo.refMoney?ordersInfo.refMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
实收金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
</template>
<script>
import {
exportExcelTradingApi, getmyDataApi,
getRunningWaterByTissueApi,
getTissueByDataApi,
getTradingPageApi
} from "@/api/allOrder";
import {getgetInfoByEmApi} from "@/api/order/oilorder";
export default {
name: "buy-em",
data(){
return{
radio1:"油号选错",
loading:false,
dialogVisible:false,
//
staffList:[],
ordersInfo:{},
//
dateRange: [],
beginTime:"",
endTime:"",
//
isSysDate:false,
//
orderList:[],
deptList:[],
//
queryParams: {
page: 1,
pageSize: 10,
beginTime:"",
endTime:"",
orderNo:"",
status:"",
payType:"",
payChannel:"",
deptType:"3",
storeId:"",
deptId:"",
},
orderStatistics:{
CASH:"0",
WECHAT:"0",
ALIPAY:"0",
balance:"0",
CASHCount:"0",
WECHATCount:"0",
ALIPAYCount:"0",
balanceCount:"0",
refBalance:"0",
refBalanceCount:"0",
},
total:0,
sum: {
//
//
//
//
sumL:'0',
sumOil:'0',
sumPayMoney:'0',
sumDis:'0',
}
}
},
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
start.setSeconds(0)
start.setMilliseconds(0)
this.dateRange = [start,new Date()];
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
},
methods:{
async getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
exportExcelCashier() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
exportExcelTradingApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
this.$download.saveAs(blob,'交易明细统计.xLsx')
})
},
//
getOrderStatistics() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getTissueByDataApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
this.orderStatistics = res.data
})
},
//
getList(val){
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getgetInfoByEmApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
this.orderList = response.data;
// this.total = response.data.total;/
this.isSysDate = false
this.sum.sumL=0
this.sum.sumOil = 0
this.sum.sumPayMoney =0
this.sum.sumDis =0
this.orderList.forEach(res=>{
this.sum.sumL=this.sum.sumL+res.sumOilNum
this.sum.sumOil = this.sum.sumOil+res.sumCoumnt
this.sum.sumPayMoney = this.sum.sumPayMoney + res.sumPayAmount
this.sum.sumDis =this.sum.sumDis + res.sumDisCount
})
})
this.getOrderStatistics()
},
getOrdersInfo(data) {
this.dialogVisible = true;
this.ordersInfo = data
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.dateRange = [];
this.queryParams = {
page: 1,
pageSize: 10,
}
this.beginTime = ""
this.endTime = ""
this.getDeptList()
this.handleQuery();
},
}
}
</script>
<style scoped>
.app-top{
width: 100%;
height: 60px;
box-sizing: border-box;
padding: 10px;
}
.clearfix{
width: 100%;
}
.box-card{
width: 100%;
margin-bottom: 15px;
}
.box-gang{
width: 100%;
display: flex;
align-items: center;
}
.box{
width: 200px;
box-sizing: border-box;
padding: 10px;
background: #f9f9f9;
height: 86px;
margin-right: 10px;
}
.size-hui{
font-size: 14px;
margin-bottom: 10px;
margin-top: 10px;
}
.size-bole{
font-weight: bold;
}
.wgang{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.table-box{
width: 100%;
}
.pagination-box{
width: 100%;
margin: 10px auto;
display: flex;
align-items: center;
justify-content: center;
}
.top-app-sou{
width: 20%;
}
.tk{
text-align: center;
color: grey;
margin: 10px 0;
}
</style>

View File

@ -0,0 +1,447 @@
<!-- 收银台订单-->
<template>
<div style="margin-top: 30px">
<el-card class="box-card">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<!-- <el-form-item label="流水编号:">-->
<!-- <el-input v-model="queryParams.orderNo"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="交易时间:">
<!-- <el-date-picker-->
<!-- v-model="dateRange"-->
<!-- style="width: 400px"-->
<!-- size="medium"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- type="datetimerange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- ></el-date-picker>-->
<el-date-picker
v-model="beginTime"
style="width: 140px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime"
style="width: 140px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="机构:" prop="deptId">-->
<!-- <el-select-->
<!-- v-model="queryParams.deptId"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付渠道:" prop="payChannel">-->
<!-- <el-select-->
<!-- v-model="queryParams.payChannel"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="小程序" value="applet"/>-->
<!-- <el-option label="收银台" value="cashier"/>-->
<!-- <el-option label="POS端" value="POS"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付方式:" prop="payType">-->
<!-- <el-select-->
<!-- v-model="queryParams.payType"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="现金" value="CASH"/>-->
<!-- <el-option label="微信" value="WECHAT"/>-->
<!-- <el-option label="支付宝" value="ALIPAY"/>-->
<!-- <el-option label="余额" value="balance"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付状态 " prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="已支付" value="paid"/>-->
<!-- <el-option label="未支付" value="unpaid"/>-->
<!-- <el-option label="已退款" value="refund"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<!-- <el-button type="primary" icon="el-icon-plus" @click = "exportExcelCashier()">导出订单</el-button>-->
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card">
<!-- <div slot="header" class="clearfix">-->
<!-- <span>收银台订单统计</span>-->
<!-- </div>-->
<div class="box-gang">
<div class="box">
<div class="size-hui">总加油升数</div>
<div class="size-bole">{{ sum.sumL.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总加油笔数</div>
<div class="size-bole">{{ sum.sumOil.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总实收金额</div>
<div class="size-bole">{{ sum.sumPayMoney.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总油惠金额</div>
<div class="size-bole">{{ sum.sumDis.toFixed(2) }}</div>
</div>
</div>
</el-card>
<el-card class="box-card">
<div class="wgang">
<div>交易明细分析列表</div>
</div>
<div class="table-box">
<el-table
:data="orderList"
style="width: 100%">
<el-table-column type="index" width="50" align="center" label="序号"/>
<el-table-column prop="gunName" align="center" label="油枪名称"> </el-table-column>
<el-table-column prop="sumOilNum" align="center" label="加油升数"> </el-table-column>
<el-table-column prop="sumCoumnt" align="center" label="加油笔数"> </el-table-column>
<el-table-column prop="sumOrderAnount" align="center" label="订单金额"> </el-table-column>
<el-table-column prop="sumDisCount" align="center" label="优惠金额"> </el-table-column>
<el-table-column prop="sumRefPayAmount" align="center" label="退款金额"> </el-table-column>
<el-table-column prop="sumPayAmount" align="center" label="实收金额"> </el-table-column>
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button style="width: 60px" size="mini"-->
<!-- @click="getOrdersInfo(scope.row)"-->
<!-- type="success" plain round>详情</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
<!-- <div class="pagination-box">-->
<!-- <el-pagination-->
<!-- background-->
<!-- v-show="total>0"-->
<!-- layout="prev, pager, next"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.page"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @current-change="getList">-->
<!-- </el-pagination>-->
<!-- </div>-->
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<el-dialog
title="订单信息"
:visible.sync="dialogVisible">
<el-descriptions :title="'订单号:'+ordersInfo.orderNo">
<el-descriptions-item label="门店">{{ordersInfo.storeName}}</el-descriptions-item>
<el-descriptions-item label="收银员">{{ordersInfo.createBy}}</el-descriptions-item>
<el-descriptions-item label="支付渠道">{{ordersInfo.payChannel}}</el-descriptions-item>
<el-descriptions-item label="商户号">{{ordersInfo.mchntCd}}</el-descriptions-item>
<el-descriptions-item label="费率">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="订单来源">{{ordersInfo.type}}</el-descriptions-item>
<el-descriptions-item label="所属模块">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{ordersInfo.payType}}</el-descriptions-item>
<el-descriptions-item label="付款用户">{{ordersInfo.userName}}</el-descriptions-item>
<el-descriptions-item label="支付状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="备注">{{ordersInfo.content}}</el-descriptions-item>
<!-- <el-descriptions-item label="备注">-->
<!-- <el-tag size="small">学校</el-tag>-->
<!-- </el-descriptions-item>-->
</el-descriptions>
<el-descriptions class="margin-top" title="金额详情" :column="3" border>
<el-descriptions-item>
<template slot="label">
订单金额
</template>
{{ordersInfo.goodsMoney?ordersInfo.goodsMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
优惠后应付金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
退款金额
</template>
{{ordersInfo.refMoney?ordersInfo.refMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
实收金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
</template>
<script>
import {
exportExcelTradingApi, getmyDataApi,
getRunningWaterByTissueApi,
getTissueByDataApi,
getTradingPageApi
} from "@/api/allOrder";
import {getInfoByOilGunApi} from "@/api/order/oilorder";
export default {
name: "buy-gun",
data(){
return{
radio1:"油号选错",
loading:false,
dialogVisible:false,
//
staffList:[],
ordersInfo:{},
//
dateRange: [],
beginTime:"",
endTime:"",
//
isSysDate:false,
//
orderList:[],
deptList:[],
//
queryParams: {
page: 1,
pageSize: 10,
beginTime:"",
endTime:"",
orderNo:"",
status:"",
payType:"",
payChannel:"",
deptType:"3",
storeId:"",
deptId:"",
},
orderStatistics:{
CASH:"0",
WECHAT:"0",
ALIPAY:"0",
balance:"0",
CASHCount:"0",
WECHATCount:"0",
ALIPAYCount:"0",
balanceCount:"0",
refBalance:"0",
refBalanceCount:"0",
},
total:0,
sum: {
//
//
//
//
sumL:'0',
sumOil:'0',
sumPayMoney:'0',
sumDis:'0',
}
}
},
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
start.setSeconds(0)
start.setMilliseconds(0)
this.dateRange = [start,new Date()];
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
},
methods:{
async getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
exportExcelCashier() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
exportExcelTradingApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
this.$download.saveAs(blob,'交易明细统计.xLsx')
})
},
//
getOrderStatistics() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getTissueByDataApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
this.orderStatistics = res.data
})
},
//
getList(val){
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getInfoByOilGunApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
this.orderList = response.data;
// this.total = response.data.total;
this.isSysDate = false
this.sum.sumL=0
this.sum.sumOil = 0
this.sum.sumPayMoney =0
this.sum.sumDis =0
this.orderList.forEach(res=>{
this.sum.sumL=this.sum.sumL+res.sumOilNum
this.sum.sumOil = this.sum.sumOil+res.sumCoumnt
this.sum.sumPayMoney = this.sum.sumPayMoney + res.sumPayAmount
this.sum.sumDis =this.sum.sumDis + res.sumDisCount
})
})
// this.getOrderStatistics()
},
getOrdersInfo(data) {
this.dialogVisible = true;
this.ordersInfo = data
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.dateRange = [];
this.queryParams = {
page: 1,
pageSize: 10,
}
this.beginTime = ""
this.endTime = ""
this.getDeptList()
this.handleQuery();
},
}
}
</script>
<style scoped>
.app-top{
width: 100%;
height: 60px;
box-sizing: border-box;
padding: 10px;
}
.clearfix{
width: 100%;
}
.box-card{
width: 100%;
margin-bottom: 15px;
}
.box-gang{
width: 100%;
display: flex;
align-items: center;
}
.box{
width: 200px;
box-sizing: border-box;
padding: 10px;
background: #f9f9f9;
height: 86px;
margin-right: 10px;
}
.size-hui{
font-size: 14px;
margin-bottom: 10px;
margin-top: 10px;
}
.size-bole{
font-weight: bold;
}
.wgang{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.table-box{
width: 100%;
}
.pagination-box{
width: 100%;
margin: 10px auto;
display: flex;
align-items: center;
justify-content: center;
}
.top-app-sou{
width: 20%;
}
.tk{
text-align: center;
color: grey;
margin: 10px 0;
}
</style>

View File

@ -0,0 +1,467 @@
<!-- 收银台订单-->
<template>
<div style="margin-top: 30px">
<el-card class="box-card">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="120px">
<!-- <el-form-item label="流水编号:">-->
<!-- <el-input v-model="queryParams.orderNo"></el-input>-->
<!-- </el-form-item>-->
<el-form-item label="交易时间:">
<!-- <el-date-picker-->
<!-- v-model="dateRange"-->
<!-- style="width: 400px"-->
<!-- size="medium"-->
<!-- value-format="yyyy-MM-dd"-->
<!-- type="datetimerange"-->
<!-- range-separator="至"-->
<!-- start-placeholder="开始日期"-->
<!-- end-placeholder="结束日期"-->
<!-- ></el-date-picker>-->
<el-date-picker
v-model="beginTime"
style="width: 140px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime"
style="width: 140px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<!-- <el-form-item label="机构:" prop="deptId">-->
<!-- <el-select-->
<!-- v-model="queryParams.deptId"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId">-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付渠道:" prop="payChannel">-->
<!-- <el-select-->
<!-- v-model="queryParams.payChannel"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="小程序" value="applet"/>-->
<!-- <el-option label="收银台" value="cashier"/>-->
<!-- <el-option label="POS端" value="POS"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付方式:" prop="payType">-->
<!-- <el-select-->
<!-- v-model="queryParams.payType"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="现金" value="CASH"/>-->
<!-- <el-option label="微信" value="WECHAT"/>-->
<!-- <el-option label="支付宝" value="ALIPAY"/>-->
<!-- <el-option label="余额" value="balance"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="支付状态 " prop="status">-->
<!-- <el-select-->
<!-- v-model="queryParams.status"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option label="已支付" value="paid"/>-->
<!-- <el-option label="未支付" value="unpaid"/>-->
<!-- <el-option label="已退款" value="refund"/>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<!-- <el-button type="primary" icon="el-icon-plus" @click = "exportExcelCashier()">导出订单</el-button>-->
</el-form-item>
</el-form>
</el-card>
<el-card class="box-card">
<!-- <div slot="header" class="clearfix">-->
<!-- <span>收银台订单统计</span>-->
<!-- </div>-->
<div class="box-gang">
<div class="box">
<div class="size-hui">总加油升数</div>
<div class="size-bole">{{ sum.sumL.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总加油笔数</div>
<div class="size-bole">{{ sum.sumOil.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总实收金额</div>
<div class="size-bole">{{ sum.sumPayMoney.toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">总油惠金额</div>
<div class="size-bole">{{ sum.sumDis.toFixed(2) }}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">银联云闪付收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
</div>
</el-card>
<el-card class="box-card">
<div class="wgang">
<div>交易明细分析列表</div>
</div>
<div class="table-box">
<el-table
:data="orderList"
style="width: 100%">
<el-table-column type="index" width="50" align="center" label="序号"/>
<!-- <el-table-column prop="payTime" align="center" label="支付时间" width="220"> </el-table-column>-->
<!-- <el-table-column prop="orderNo" align="center" label="订单号" width="220"> </el-table-column>-->
<el-table-column prop="oilName" align="center" label="油品名称"> </el-table-column>
<el-table-column prop="sumOilNum" align="center" label="加油升数"> </el-table-column>
<el-table-column prop="sumCoumnt" align="center" label="加油笔数"> </el-table-column>
<el-table-column prop="sumOrderAnount" align="center" label="订单金额"> </el-table-column>
<el-table-column prop="sumDisCount" align="center" label="优惠金额"> </el-table-column>
<el-table-column prop="sumRefPayAmount" align="center" label="退款金额">
<template slot-scope="scope">
<span v-if="scope.row.sumRefPayAmount">{{ scope.row.sumRefPayAmount }}</span>
<span v-else>--</span>
</template>
</el-table-column>
<el-table-column prop="sumPayAmount" align="center" label="实收金额"> </el-table-column>
<!-- <el-table-column prop="userName" align="center" label="付款用户" > </el-table-column>-->
<!-- <el-table-column prop="content" align="content" label="备注" > </el-table-column>-->
<!-- <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
<!-- <template slot-scope="scope">-->
<!-- <el-button style="width: 60px" size="mini"-->
<!-- @click="getOrdersInfo(scope.row)"-->
<!-- type="success" plain round>详情</el-button>-->
<!-- </template>-->
<!-- </el-table-column>-->
</el-table>
</div>
<!-- <div class="pagination-box">-->
<!-- <el-pagination-->
<!-- background-->
<!-- v-show="total>0"-->
<!-- layout="prev, pager, next"-->
<!-- :total="total"-->
<!-- :page.sync="queryParams.page"-->
<!-- :limit.sync="queryParams.pageSize"-->
<!-- @current-change="getList">-->
<!-- </el-pagination>-->
<!-- </div>-->
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</el-card>
<el-dialog
title="订单信息"
:visible.sync="dialogVisible">
<el-descriptions :title="'订单号:'+ordersInfo.orderNo">
<el-descriptions-item label="门店">{{ordersInfo.storeName}}</el-descriptions-item>
<el-descriptions-item label="收银员">{{ordersInfo.createBy}}</el-descriptions-item>
<el-descriptions-item label="支付渠道">{{ordersInfo.payChannel}}</el-descriptions-item>
<el-descriptions-item label="商户号">{{ordersInfo.mchntCd}}</el-descriptions-item>
<el-descriptions-item label="费率">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="订单来源">{{ordersInfo.type}}</el-descriptions-item>
<el-descriptions-item label="所属模块">{{ordersInfo.amount}}</el-descriptions-item>
<el-descriptions-item label="支付方式">{{ordersInfo.payType}}</el-descriptions-item>
<el-descriptions-item label="付款用户">{{ordersInfo.userName}}</el-descriptions-item>
<el-descriptions-item label="支付状态">{{ordersInfo.status}}</el-descriptions-item>
<el-descriptions-item label="备注">{{ordersInfo.content}}</el-descriptions-item>
<!-- <el-descriptions-item label="备注">-->
<!-- <el-tag size="small">学校</el-tag>-->
<!-- </el-descriptions-item>-->
</el-descriptions>
<el-descriptions class="margin-top" title="金额详情" :column="3" border>
<el-descriptions-item>
<template slot="label">
订单金额
</template>
{{ordersInfo.goodsMoney?ordersInfo.goodsMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
优惠后应付金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
退款金额
</template>
{{ordersInfo.refMoney?ordersInfo.refMoney:"--"}}
</el-descriptions-item>
<el-descriptions-item>
<template slot="label">
实收金额
</template>
{{ordersInfo.payMoney?ordersInfo.payMoney:"--"}}
</el-descriptions-item>
</el-descriptions>
</el-dialog>
</div>
</template>
<script>
import {
exportExcelTradingApi, getmyDataApi,
getRunningWaterByTissueApi,
getTissueByDataApi,
getTradingPageApi
} from "@/api/allOrder";
import {getInfoByOilTypeApi} from "@/api/order/oilorder";
export default {
name: "buy-oil",
data(){
return{
radio1:"油号选错",
loading:false,
dialogVisible:false,
//
staffList:[],
ordersInfo:{},
//
dateRange: [],
beginTime:"",
endTime:"",
//
isSysDate:false,
//
orderList:[],
deptList:[],
//
queryParams: {
page: 1,
pageSize: 10,
beginTime:"",
endTime:"",
orderNo:"",
status:"",
payType:"",
payChannel:"",
deptType:"3",
storeId:"",
deptId:"",
},
orderStatistics:{
CASH:"0",
WECHAT:"0",
ALIPAY:"0",
balance:"0",
CASHCount:"0",
WECHATCount:"0",
ALIPAYCount:"0",
balanceCount:"0",
refBalance:"0",
refBalanceCount:"0",
},
total:0,
sum: {
//
//
//
//
sumL:'0',
sumOil:'0',
sumPayMoney:'0',
sumDis:'0',
}
}
},
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
start.setSeconds(0)
start.setMilliseconds(0)
this.dateRange = [start,new Date()];
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
},
methods:{
async getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
exportExcelCashier() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
exportExcelTradingApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
const blob = new Blob([res], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
this.$download.saveAs(blob,'交易明细统计.xLsx')
})
},
//
getOrderStatistics() {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getInfoByOilTypeApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
this.orderStatistics = res.data
})
},
//
getList(val){
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getInfoByOilTypeApi(this.addDateRange(this.queryParams,dateRange)).then(response => {
this.orderList = response.data;
// this.total = response.data.total;
this.isSysDate = false
this.sum.sumL=0
this.sum.sumOil = 0
this.sum.sumPayMoney =0
this.sum.sumDis =0
this.orderList.forEach(res=>{
this.sum.sumL=this.sum.sumL+res.sumOilNum
this.sum.sumOil = this.sum.sumOil+res.sumCoumnt
this.sum.sumPayMoney = this.sum.sumPayMoney + res.sumPayAmount
this.sum.sumDis =this.sum.sumDis + res.sumDisCount
})
})
this.getOrderStatistics()
},
getOrdersInfo(data) {
this.dialogVisible = true;
this.ordersInfo = data
},
//
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
//
resetQuery() {
this.dateRange = [];
this.queryParams = {
page: 1,
pageSize: 10,
}
this.beginTime = ""
this.endTime = ""
this.getDeptList()
this.handleQuery();
},
}
}
</script>
<style scoped>
.app-top{
width: 100%;
height: 60px;
box-sizing: border-box;
padding: 10px;
}
.clearfix{
width: 100%;
}
.box-card{
width: 100%;
margin-bottom: 15px;
}
.box-gang{
width: 100%;
display: flex;
align-items: center;
}
.box{
width: 200px;
box-sizing: border-box;
padding: 10px;
background: #f9f9f9;
height: 86px;
margin-right: 10px;
}
.size-hui{
font-size: 14px;
margin-bottom: 10px;
margin-top: 10px;
}
.size-bole{
font-weight: bold;
}
.wgang{
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 20px;
}
.table-box{
width: 100%;
}
.pagination-box{
width: 100%;
margin: 10px auto;
display: flex;
align-items: center;
justify-content: center;
}
.top-app-sou{
width: 20%;
}
.tk{
text-align: center;
color: grey;
margin: 10px 0;
}
</style>

View File

@ -29,18 +29,18 @@
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="机构:" prop="deptId">
<el-select
v-model="queryParams.deptId"
clearable
placeholder="全部"
>
<el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId">
</el-option>
<!-- <el-form-item label="机构:" prop="deptId">-->
<!-- <el-select-->
<!-- v-model="queryParams.deptId"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.deptId">-->
<!-- </el-option>-->
</el-select>
</el-form-item>
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="支付渠道:" prop="payChannel">
<el-select
v-model="queryParams.payChannel"
@ -221,7 +221,7 @@
<script>
import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from "@/api/allOrder";
import {getmyDataApi, getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from "@/api/allOrder";
export default {
name: "reconciliation-ref",
@ -260,7 +260,7 @@ import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from
total:0,
}
},
created() {
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
@ -270,8 +270,9 @@ import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
this.getDeptList();
},
methods:{
@ -306,17 +307,24 @@ import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from
//
getList(val){
getTradingPageApi(this.addDateRange(this.queryParams)).then( response => {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getTradingPageApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
this.orderList = response.data.records;
this.total = response.data.total;
this.isSysDate = false
})
this.getOrderStatistics()
},
getDeptList() {
getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
this.deptList = response.data.records;
async getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
//
@ -333,6 +341,10 @@ import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from
}
this.beginTime = ""
this.endTime = ""
this.status = "refund"
this.getDeptList()
this.handleQuery();
},
}

View File

@ -92,27 +92,27 @@
<div class="box-gang">
<div class="box">
<div class="size-hui">微信收款</div>
<div class="size-bole">{{ orderStatistics.cash?orderStatistics.cash:0 }}/{{orderStatistics.cashcount}}</div>
</div>
<div class="box">
<div class="size-hui">支付宝收款</div>
<div class="size-bole">{{ orderStatistics.wechat?orderStatistics.wechat:0 }}/{{orderStatistics.wechatcount}}</div>
</div>
<div class="box">
<div class="size-hui">会员钱包收款</div>
<div class="size-hui">支付宝收款</div>
<div class="size-bole">{{ orderStatistics.alipay?orderStatistics.alipay:0 }}/{{orderStatistics.alipaycount}}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">银行卡收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
<!-- <div class="box">-->
<!-- <div class="size-hui">银联云闪付收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
<div class="box">
<div class="size-hui">会员钱包收款</div>
<div class="size-bole">{{ orderStatistics.balance?orderStatistics.balance:0 }}/{{orderStatistics.balanceCount}}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">银行卡收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
<!-- <div class="box">-->
<!-- <div class="size-hui">银联云闪付收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
<!-- </div>-->
<div class="box">
<div class="size-hui">现金支付收款</div>
<div class="size-bole">{{ orderStatistics.balance?orderStatistics.balance:0 }}/{{orderStatistics.balanceCount}}</div>
<div class="size-bole">{{ orderStatistics.cash?orderStatistics.cash:0 }}/{{orderStatistics.cashcount}}</div>
</div>
</div>
</el-card>
@ -320,7 +320,7 @@ import {
total:0,
}
},
created() {
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
@ -330,16 +330,17 @@ import {
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
this.getDeptList();
},
methods:{
getDeptList() {
async getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
@ -374,7 +375,7 @@ import {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getTradingPageApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
getTradingPageApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
this.orderList = response.data.records;
this.total = response.data.total;
this.isSysDate = false
@ -399,6 +400,8 @@ import {
}
this.beginTime = ""
this.endTime = ""
this.getDeptList()
this.handleQuery();
},
}

View File

@ -5,7 +5,7 @@
<el-radio-group v-model="radio1">
<!-- <el-radio-button label="机构流水分析"></el-radio-button>-->
<el-radio-button label="油站流水分析"></el-radio-button>
<el-radio-button label="无流水门店"></el-radio-button>
<!-- <el-radio-button label="无流水门店"></el-radio-button>-->
<el-radio-button label="日流水分析"></el-radio-button>
</el-radio-group>
</el-card>
@ -29,7 +29,7 @@ export default {
name: "runningWater-list",
data(){
return{
radio1:'机构流水分析'
radio1:'油站流水分析'
}
},
components:{

View File

@ -85,7 +85,7 @@
<el-table-column type="index" width="50" align="center" label="序号"/>
<el-table-column prop="payTime" align="center" label="日期"></el-table-column>
<!-- <el-table-column prop="seekZero" align="center" label="活跃机构数量"> </el-table-column>-->
<el-table-column prop="storeCount" align="center" label="活跃门店数量"> </el-table-column>
<!-- <el-table-column prop="storeCount" align="center" label="活跃门店数量"> </el-table-column>-->
<el-table-column prop="amount" align="center" label="交易金额"> </el-table-column>
<el-table-column prop="strokeCount" align="center" label="交易笔数"> </el-table-column>
<el-table-column prop="unitPrice" align="center" label="笔单价">
@ -93,16 +93,16 @@
<span>{{scope.row.unitPrice}}</span>
</template>
</el-table-column>
<el-table-column prop="dailyAmount" align="center" label="日均交易金额">
<template slot-scope="scope">
<span>{{ (scope.row.amount / scope.row.storeCount).toFixed(2) }}</span>
</template>
</el-table-column>
<el-table-column prop="strokesPerDay" align="center" label="日均交易笔数">
<template slot-scope="scope">
<span>{{ (scope.row.strokeCount / scope.row.storeCount).toFixed(2) }}</span>
</template>
</el-table-column>
<!-- <el-table-column prop="dailyAmount" align="center" label="日均交易金额">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ (scope.row.amount / scope.row.storeCount).toFixed(2) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="strokesPerDay" align="center" label="日均交易笔数">-->
<!-- <template slot-scope="scope">-->
<!-- <span>{{ (scope.row.strokeCount / scope.row.storeCount).toFixed(2) }}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column prop="seekZero" align="center" label="机构日均交易金额"> </el-table-column>-->
<!-- <el-table-column prop="seekZero" align="center" label="机构日均交易笔数"> </el-table-column>-->
<!-- <el-table-column prop="seekZero" align="center" label="门店日均交易金额"> </el-table-column>-->
@ -126,7 +126,13 @@
<script>
import {exportExcelDayApi, getDayDatyListApi, getDayListApi, getRunningWaterByTissueApi} from "@/api/allOrder";
import {
exportExcelDayApi,
getDayDatyListApi,
getDayListApi,
getmyDataApi,
getRunningWaterByTissueApi
} from "@/api/allOrder";
export default {
name: "runningWater-day",
@ -163,7 +169,7 @@ import {exportExcelDayApi, getDayDatyListApi, getDayListApi, getRunningWaterByTi
total:0,
}
},
created() {
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
@ -173,14 +179,19 @@ import {exportExcelDayApi, getDayDatyListApi, getDayListApi, getRunningWaterByTi
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
this.getDeptList();
},
methods:{
async getDeptList() {
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
exportExcelCashier() {
let dateRange = []
if (this.beginTime && this.endTime) {
@ -192,11 +203,11 @@ import {exportExcelDayApi, getDayDatyListApi, getDayListApi, getRunningWaterByTi
this.$download.saveAs(blob,'日流水分析.xLsx')
})
},
getDeptList() {
getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
this.deptList = response.data.records;
})
},
// getDeptList() {
// getRunningWaterByTissueApi(this.addDateRange(this.queryParams)).then( response => {
// this.deptList = response.data.records;
// })
// },
//

View File

@ -63,18 +63,18 @@
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item label="机构:" prop="staffId">
<el-select
v-model="queryParams.staffId"
clearable
placeholder="全部"
>
<el-option v-for="item in staffList" :key="item.id" :label="item.realName" :value="item.id">
<span style="float: left">{{ item.realName }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.mobile }}</span>
</el-option>
</el-select>
</el-form-item>
<!-- <el-form-item label="机构:" prop="staffId">-->
<!-- <el-select-->
<!-- v-model="queryParams.staffId"-->
<!-- clearable-->
<!-- placeholder="全部"-->
<!-- >-->
<!-- <el-option v-for="item in staffList" :key="item.id" :label="item.realName" :value="item.id">-->
<!-- <span style="float: left">{{ item.realName }}</span>-->
<!-- <span style="float: right; color: #8492a6; font-size: 13px">{{ item.mobile }}</span>-->
<!-- </el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
@ -122,7 +122,7 @@
<script>
import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} from "@/api/allOrder";
import {getInstituionListApi, getRunningWaterByDataApi, exportExcelOilDeptApi, getmyDataApi} from "@/api/allOrder";
export default {
name: "runningWater-oilDepot",
@ -159,7 +159,7 @@ import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} fr
total:0,
}
},
created() {
async created() {
let start = new Date();
start.setHours(0)
start.setMinutes(0)
@ -169,6 +169,7 @@ import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} fr
this.beginTime = start
this.endTime = new Date()
this.isSysDate = true
await this.getDeptList();
this.getList();
},
@ -197,6 +198,11 @@ import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} fr
this.orderStatistics = res.data
})
},
async getDeptList() {
await getmyDataApi(this.addDateRange(this.queryParams)).then( response => {
this.queryParams.deptId = response.data.deptId;
})
},
//
getList(val){
@ -214,12 +220,14 @@ import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} fr
},
//
handleQuery() {
async handleQuery() {
this.queryParams.page = 1;
await this.getDeptList();
this.getList();
},
//
resetQuery() {
async resetQuery() {
this.dateRange = [];
this.queryParams = {
page: 1,
@ -227,6 +235,7 @@ import {getInstituionListApi, getRunningWaterByDataApi,exportExcelOilDeptApi} fr
}
this.beginTime = ""
this.endTime = ""
await this.getDeptList()
this.handleQuery();
},
}

View File

@ -306,8 +306,12 @@ import {getRunningWaterByTissueApi, getTissueByDataApi, getTradingPageApi} from
//
getList(val){
getTradingPageApi(this.addDateRange(this.queryParams)).then( response => {
let dateRange = []
if (this.beginTime && this.endTime) {
dateRange.push(this.beginTime.toLocaleDateString())
dateRange.push(this.endTime.toLocaleDateString())
}
getTradingPageApi(this.addDateRange(this.queryParams,dateRange)).then( response => {
this.orderList = response.data.records;
this.total = response.data.total;
this.isSysDate = false

View File

@ -92,16 +92,16 @@
<div class="box-gang">
<div class="box">
<div class="size-hui">微信收款</div>
<div class="size-bole">{{ orderStatistics.cash?orderStatistics.cash:0 }}/{{orderStatistics.cashcount}}</div>
</div>
<div class="box">
<div class="size-hui">支付宝收款</div>
<div class="size-bole">{{ orderStatistics.wechat?orderStatistics.wechat:0 }}/{{orderStatistics.wechatcount}}</div>
</div>
<div class="box">
<div class="size-hui">会员钱包收款</div>
<div class="size-hui">支付宝收款</div>
<div class="size-bole">{{ orderStatistics.alipay?orderStatistics.alipay:0 }}/{{orderStatistics.alipaycount}}</div>
</div>
<div class="box">
<div class="size-hui">会员钱包收款</div>
<div class="size-bole">{{ orderStatistics.balance?orderStatistics.balance:0 }}/{{orderStatistics.balanceCount}}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">银行卡收款</div>-->
<!-- <div class="size-bole">{{ 0 }}/{{0}}</div>-->
@ -112,7 +112,7 @@
<!-- </div>-->
<div class="box">
<div class="size-hui">现金支付收款</div>
<div class="size-bole">{{ orderStatistics.balance?orderStatistics.balance:0 }}/{{orderStatistics.balanceCount}}</div>
<div class="size-bole">{{ orderStatistics.cash?orderStatistics.cash:0 }}/{{orderStatistics.cashcount}}</div>
</div>
</div>
</el-card>
@ -361,6 +361,7 @@ import {
}
getTissueByDataApi(this.addDateRange(this.queryParams, dateRange)).then(res=>{
this.orderStatistics = res.data
console.log("res.data1111",res.data)
})
},

View File

@ -8,15 +8,15 @@
<div class="box-gang">
<div class="box">
<div class="size-hui">交易金额</div>
<div class="size-bole">{{ orderStatistics.amount }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.amount) ? '0.00' : parseFloat(orderStatistics.amount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">交易笔数</div>
<div class="size-bole">{{ orderStatistics.strokeCount }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.strokeCount) ? '0.00' : parseFloat(orderStatistics.strokeCount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">笔单价</div>
<div class="size-bole">{{ orderStatistics.unitPrice }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.unitPrice) ? '0.00' : parseFloat(orderStatistics.unitPrice).toFixed(2) }}</div>
</div>
<!-- <div class="box">-->
<!-- <div class="size-hui">日均交易金额</div>-->

View File

@ -8,27 +8,33 @@
<div class="box-gang">
<div class="box">
<div class="size-hui">交易金额</div>
<div class="size-bole">{{ orderStatistics.amount?orderStatistics.amount:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.amount) ? '0.00' : parseFloat(orderStatistics.amount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">交易笔数</div>
<div class="size-bole">{{ orderStatistics.strokeCount?orderStatistics.strokeCount:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.strokeCount) ? '0.00' : parseFloat(orderStatistics.strokeCount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">笔单价</div>
<div class="size-bole">{{ orderStatistics.unitPrice?orderStatistics.unitPrice:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.unitPrice) ? '0.00' : parseFloat(orderStatistics.unitPrice).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">日均交易金额</div>
<div class="size-bole">{{ orderStatistics.dailyAmount?orderStatistics.dailyAmount:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.dailyAmount) ? '0.00' : parseFloat(orderStatistics.dailyAmount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">日均交易笔数</div>
<div class="size-bole">{{ orderStatistics.strokesPerDay?orderStatistics.strokesPerDay:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.strokesPerDay) ? '0.00' : parseFloat(orderStatistics.strokesPerDay).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">活跃机构数</div>
<div class="size-bole">{{ orderStatistics.inertiaStore?orderStatistics.inertiaStore:0 }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.inertiaStore) ? '0.00' : parseFloat(orderStatistics.inertiaStore).toFixed(2) }}</div>
</div>
</div>
</el-card>

View File

@ -8,27 +8,31 @@
<div class="box-gang">
<div class="box">
<div class="size-hui">交易金额</div>
<div class="size-bole">{{ orderStatistics.amount }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.amount) ? '0.00' : parseFloat(orderStatistics.amount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">交易笔数</div>
<div class="size-bole">{{ orderStatistics.strokeCount }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.strokeCount) ? '0.00' : parseFloat(orderStatistics.strokeCount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">笔单价</div>
<div class="size-bole">{{ orderStatistics.unitPrice }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.unitPrice) ? '0.00' : parseFloat(orderStatistics.unitPrice).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">日均交易金额</div>
<div class="size-bole">{{ orderStatistics.dailyAmount }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.dailyAmount) ? '0.00' : parseFloat(orderStatistics.dailyAmount).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">日均交易笔数</div>
<div class="size-bole">{{ orderStatistics.strokesPerDay }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.strokesPerDay) ? '0.00' : parseFloat(orderStatistics.strokesPerDay).toFixed(2) }}</div>
</div>
<div class="box">
<div class="size-hui">活跃机构数</div>
<div class="size-bole">{{ orderStatistics.inertiaStore }}</div>
<div class="size-bole">{{ isNaN(orderStatistics.inertiaStore) ? '0.00' : parseFloat(orderStatistics.inertiaStore).toFixed(2) }}</div>
</div>
</div>
</el-card>

View File

@ -294,4 +294,32 @@ public class OilOrderController extends BaseController {
return getSuccessResult(orderService.getInfoByTime(time, oilGunId));
}
/**
* 油品销售统计
* @param order
* @return
*/
@GetMapping("getInfoByOilType")
public ResponseObject getInfoByOilType(OilOrder order){
return getSuccessResult(orderService.getInfoByOilType(order));
}
/**
* 油枪销售统计
* @param order
* @return
*/
@GetMapping("getInfoByOilGun")
public ResponseObject getInfoByOilGun(OilOrder order){
return getSuccessResult(orderService.getInfoByOilGun(order));
}
/**
* 员工销售统计
* @param order
* @return
*/
@GetMapping("getInfoByEm")
public ResponseObject getInfoByEm(OilOrder order){
return getSuccessResult(orderService.getInfoByEm(order));
}
}

View File

@ -10,4 +10,5 @@ public class AllOrderInfoDto extends AllOrderInfo {
private String deptType; //节点类型:1代理商2连锁店3基本门店4三方机构
private Long deptId; //节点类型:1代理商2连锁店3基本门店4三方机构
private List<Long> storeIds;
private String flag;
}

View File

@ -125,4 +125,8 @@ public interface OilOrderMapper extends BaseMapper<OilOrder> {
OilOrderVo selectOilOrderDescByOrderId(@Param("orderNo") String orderNo);
OilOrderVo getInfoByTime(@Param("time") Date time,@Param("list") List<OilGun> tankIds);
List<OilOrderVo> getInfoByOilType(@Param("allOrderInfo") OilOrder oilOrder);
List<OilOrderVo> getInfoByOilGun(@Param("allOrderInfo") OilOrder oilOrder);
List<OilOrderVo> getInfoByEm(@Param("allOrderInfo") OilOrder oilOrder);
}

View File

@ -13,7 +13,7 @@
</foreach>
</where>
</select>
<select id="getTradingPage" resultType="com.fuint.business.order.vo.AllOrderInfoVo">
<select id="getTradingPage" resultType="com.fuint.business.order.vo.AllOrderInfoVo">
select
aoi.id AS id,
aoi.order_no AS orderNo,
@ -307,8 +307,8 @@
COUNT(CASE WHEN pay_type = 'WECHAT' THEN 0 END) AS WECHATCount,
COUNT(CASE WHEN pay_type = 'ALIPAY' THEN 0 END) AS ALIPAYCount,
COUNT(CASE WHEN pay_type = 'balance' THEN 0 END) AS balanceCount,
SUM(CASE WHEN aoi.status = 'refunt' THEN pay_money ELSE 0 END) AS refBalance,
COUNT(CASE WHEN aoi.status = 'refunt' THEN 0 END) AS refBalanceCount
SUM(CASE WHEN aoi.status = 'refund' THEN pay_money ELSE 0 END) AS refBalance,
COUNT(CASE WHEN aoi.status = 'refund' THEN 0 END) AS refBalanceCount
from all_order_info aoi
left join mt_user mu ON aoi.user_id = mu.id

View File

@ -582,4 +582,70 @@
</if>
</where>
</select>
<select id="getInfoByOilType" resultType="com.fuint.business.order.vo.OilOrderVo">
select
na.oil_name oilName,
sum(oil_num) sumOilNum,
count(*) sumCoumnt,
sum(order_amount) sumOrderAnount,
sum(discount_amount) sumDisCount,
SUM(ref_money) sumRefMoney,
Sum(pay_amount) sumPayAmount,
SUM(CASE WHEN order_status = 'refund' THEN pay_amount ELSE 0 END) sumRefPayAmount
from oil_order oo left join
oil_name na on oo.oils = na.id
where oo.store_id = #{allOrderInfo.storeId}
<if test="allOrderInfo.params.beginTime != null and allOrderInfo.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(pay_time,'%y%m%d') &gt;= date_format(#{allOrderInfo.params.beginTime},'%y%m%d')
</if>
<if test="allOrderInfo.params.endTime != null and allOrderInfo.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(pay_time,'%y%m%d') &lt;= date_format(#{allOrderInfo.params.endTime},'%y%m%d')
</if>
GROUP BY oils
</select>
<select id="getInfoByOilGun" resultType="com.fuint.business.order.vo.OilOrderVo">
select
na.gun_name gunName,
sum(oil_num) sumOilNum,
count(*) sumCoumnt,
sum(order_amount) sumOrderAnount,
sum(discount_amount) sumDisCount,
SUM(ref_money) sumRefMoney,
Sum(pay_amount) sumPayAmount,
SUM(CASE WHEN order_status = 'refund' THEN pay_amount ELSE 0 END) sumRefPayAmount
from oil_order oo left join
oil_gun na on oo.oil_gun_num = na.id
where oo.store_id = #{allOrderInfo.storeId}
<if test="allOrderInfo.params.beginTime != null and allOrderInfo.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(pay_time,'%y%m%d') &gt;= date_format(#{allOrderInfo.params.beginTime},'%y%m%d')
</if>
<if test="allOrderInfo.params.endTime != null and allOrderInfo.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(pay_time,'%y%m%d') &lt;= date_format(#{allOrderInfo.params.endTime},'%y%m%d')
</if>
GROUP BY oil_gun_num
</select>
<select id="getInfoByEm" resultType="com.fuint.business.order.vo.OilOrderVo">
select
na.real_name realName,
sum(oil_num) sumOilNum,
count(*) sumCoumnt,
sum(order_amount) sumOrderAnount,
sum(discount_amount) sumDisCount,
SUM(ref_money) sumRefMoney,
Sum(pay_amount) sumPayAmount,
SUM(CASE WHEN order_status = 'refund' THEN pay_amount ELSE 0 END) sumRefPayAmount
from oil_order oo left join
mt_staff na on oo.staff_id = na.id
where oo.store_id = #{allOrderInfo.storeId}
<if test="allOrderInfo.params.beginTime != null and allOrderInfo.params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(pay_time,'%y%m%d') &gt;= date_format(#{allOrderInfo.params.beginTime},'%y%m%d')
</if>
<if test="allOrderInfo.params.endTime != null and allOrderInfo.params.endTime != ''"><!-- 结束时间检索 -->
and date_format(pay_time,'%y%m%d') &lt;= date_format(#{allOrderInfo.params.endTime},'%y%m%d')
</if>
GROUP BY staff_id
</select>
</mapper>

View File

@ -198,6 +198,10 @@ public interface OilOrderService extends IService<OilOrder> {
OilOrderVo getInfoByTime(Date time,Integer tankId);
List<OilOrderVo> getInfoByOilType(OilOrder oilOrder);
List<OilOrderVo> getInfoByOilGun(OilOrder oilOrder);
List<OilOrderVo> getInfoByEm(OilOrder oilOrder);
// pos端
/**

View File

@ -33,12 +33,14 @@ import com.fuint.business.petrolStationManagement.service.OilGunService;
import com.fuint.business.petrolStationManagement.service.OilTankService;
import com.fuint.business.petrolStationManagement.service.OilTrackingService;
import com.fuint.business.store.entity.MtStore;
import com.fuint.business.store.mapper.MtStoreMapper;
import com.fuint.business.store.service.StoreService;
import com.fuint.business.userManager.service.UserBalanceService;
import com.fuint.common.dto.AccountInfo;
import com.fuint.common.service.MemberService;
import com.fuint.common.service.StaffService;
import com.fuint.common.util.TokenUtil;
import com.fuint.repository.mapper.MtStaffMapper;
import com.fuint.repository.mapper.MtUserMapper;
import com.fuint.repository.model.MtStaff;
import com.fuint.repository.model.MtUser;
@ -323,6 +325,9 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
@Resource
StoreService storeService;
@Resource
MtStoreMapper mtStoreMapper;
// 处理油品
private void disposeOil(OilOrder oilOrder,Map<String, String> map) {
@ -427,17 +432,53 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
public AllOrderInfoVo getTradingData(AllOrderInfoDto allOrderInfo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
IPage<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptById2(new Page(1,10000),nowAccountInfo.getDeptId(),allOrderInfo.getDeptId(),allOrderInfo.getDeptType());
if (ObjectUtil.isEmpty(sysDepts.getRecords())) throw new RuntimeException("组织下没有油站!");
allOrderInfo.setStoreIds(sysDepts.getRecords().stream().map(SysDeptVo::getDeptId).collect(Collectors.toList()));
List<MtStore> mtStores = mtStoreMapper.queryStoresByDeptIds(allOrderInfo.getStoreIds());
if (ObjectUtil.isEmpty(mtStores)) throw new RuntimeException("组织下没有油站");
allOrderInfo.setStoreIds(mtStores.stream().map(MtStore::getId).map(Long::valueOf).collect(Collectors.toList()));
} else {
List<Long> depts = new ArrayList<>();
depts.add(Long.parseLong(nowAccountInfo.getStoreId().toString()));
allOrderInfo.setStoreIds(depts);
}
return allOrderInfoMapper.getTradingData(allOrderInfo);
}
@Resource
MtStaffMapper mtStaffMapper;
@Override
public IPage<AllOrderInfoVo> getTradingPage(Page page, AllOrderInfoDto allOrderInfo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
// IPage<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptById2( page,nowAccountInfo.getDeptId(),allOrderInfo.getDeptId(),allOrderInfo.getDeptType());
//
// allOrderInfo.setStoreIds(sysDepts.stream().map(SysDeptVo::getStoreId).collect(Collectors.toList()));
//
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
IPage<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptById2( new Page(1,10000),nowAccountInfo.getDeptId(),allOrderInfo.getDeptId(),allOrderInfo.getDeptType());
if (ObjectUtil.isEmpty(sysDepts.getRecords())) throw new RuntimeException("组织下没有油站!");
allOrderInfo.setStoreIds(sysDepts.getRecords().stream().map(SysDeptVo::getDeptId).collect(Collectors.toList()));
List<MtStore> mtStores = mtStoreMapper.queryStoresByDeptIds(allOrderInfo.getStoreIds());
if (ObjectUtil.isEmpty(mtStores)) throw new RuntimeException("组织下没有油站");
allOrderInfo.setStoreIds(mtStores.stream().map(MtStore::getId).map(Long::valueOf).collect(Collectors.toList()));
} else {
List<Long> depts = new ArrayList<>();
depts.add(Long.parseLong(nowAccountInfo.getStoreId().toString()));
allOrderInfo.setStoreIds(depts);
}
IPage<AllOrderInfoVo> pageList = allOrderInfoMapper.getTradingPage(page, allOrderInfo);
@ -451,13 +492,12 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
record.setMchntCd("--");
}
// 收银员
if (ObjectUtil.isNotEmpty(allOrderInfo.getCreateBy())) {
MtStaff mtStaff = staffService.queryStaffById2(Integer.parseInt(allOrderInfo.getCreateBy()));
if (ObjectUtil.isNotEmpty(record.getCreateBy())) {
MtStaff mtStaff = mtStaffMapper.queryStaffById(Integer.parseInt(record.getCreateBy()));
if(ObjectUtil.isNotEmpty(mtStaff)) {
record.setCreateBy(mtStaff.getRealName());
}else {
record.setCreateBy("--");
}
}
@ -534,8 +574,17 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
@Override
public IPage<SysDeptVo> runningWaterByInstituion(Page page, AllOrderInfoDto allOrderInfo) {
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
IPage<SysDeptVo> sysDepts = new Page<>();
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
sysDepts = sysDeptMapper.selectChildrenDeptById2( page,nowAccountInfo.getDeptId(),allOrderInfo.getDeptId(),allOrderInfo.getDeptType());
}else {
SysDeptVo sysDept = sysDeptMapper.selectDeptByIdVo(nowAccountInfo.getDeptId());
List<SysDeptVo> ssysDept = new ArrayList<>();
ssysDept.add(sysDept);
sysDepts.setRecords(ssysDept);
}
IPage<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptById2( page,nowAccountInfo.getDeptId(),allOrderInfo.getDeptId(),allOrderInfo.getDeptType());
for (SysDeptVo sysDept : sysDepts.getRecords()) {
long dayNum = 0;
@ -691,15 +740,23 @@ public class AllOrderInfoServiceImpl extends ServiceImpl<AllOrderInfoMapper,AllO
}
public IPage<AllOrderInfoVo> runningWaterByDay(Page page, AllOrderInfoDto allOrderInfo) {
//计算天数
if (!ObjectUtil.isNotEmpty(allOrderInfo.getParams().get("beginTime")) && ObjectUtil.isNotEmpty(allOrderInfo.getParams().get("endTime"))) {
throw new RuntimeException("");
if (ObjectUtil.isEmpty(allOrderInfo.getParams().get("beginTime")) || ObjectUtil.isEmpty(allOrderInfo.getParams().get("endTime"))) {
throw new RuntimeException("请选择时间范围");
}
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
if (ObjectUtil.isEmpty(allOrderInfo.getDeptId())) {
allOrderInfo.setDeptType("3");
List<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptByIdStore(nowAccountInfo.getDeptId());
allOrderInfo.setStoreIds(sysDepts.stream().map(SysDeptVo::getStoreId).collect(Collectors.toList()));
}else {
ArrayList<Long> longs = new ArrayList<>();
longs.add(Long.parseLong(nowAccountInfo.getStoreId().toString()));
allOrderInfo.setStoreIds(longs);
}
AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo();
allOrderInfo.setDeptType("3");
List<SysDeptVo> sysDepts = sysDeptMapper.selectChildrenDeptByIdStore(nowAccountInfo.getDeptId());
allOrderInfo.setStoreIds(sysDepts.stream().map(SysDeptVo::getStoreId).collect(Collectors.toList()));
// 数据查询
IPage<AllOrderInfoVo> runningWaterByDay = allOrderInfoMapper.getRunningWaterByDay(page,allOrderInfo);

View File

@ -1965,6 +1965,24 @@ return stringDoubleMap;
return baseMapper.getInfoByTime(time,oilGuns);
}
@Override
public List<OilOrderVo> getInfoByOilType(OilOrder oilOrder) {
oilOrder.setStoreId(TokenUtil.getNowAccountInfo().getStoreId());
return baseMapper.getInfoByOilType(oilOrder);
}
@Override
public List<OilOrderVo> getInfoByOilGun(OilOrder oilOrder) {
oilOrder.setStoreId(TokenUtil.getNowAccountInfo().getStoreId());
return baseMapper.getInfoByOilGun(oilOrder);
}
@Override
public List<OilOrderVo> getInfoByEm(OilOrder oilOrder) {
oilOrder.setStoreId(TokenUtil.getNowAccountInfo().getStoreId());
return baseMapper.getInfoByEm(oilOrder);
}
// pos端
@Override

View File

@ -14,6 +14,13 @@ public class OilOrderVo extends OilOrder {
private String oilName;
private String gunName;
private String realName;
private Double sumOilNum;
private Double sumCoumnt;
private Double sumOrderAnount;
private Double sumDisCount;
private Double sumRefMoney;
private Double sumPayAmount;
private Double sumRefPayAmount;
// 优惠券id
private Integer cardFavorableId;
// 满减或折扣消费优惠金额
@ -22,4 +29,6 @@ public class OilOrderVo extends OilOrder {
// 优惠券优惠金额
@TableField(exist = false)
private Double couponAmount;
}

View File

@ -18,7 +18,7 @@ import com.fuint.framework.web.BaseController;
import com.fuint.framework.web.ResponseObject;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.yly.print_sdk_library.RequestMethod;
//import com.yly.print_sdk_librar.RequestMethod;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.cache.CacheProperties;
import org.springframework.web.bind.annotation.*;

View File

@ -11,80 +11,97 @@ public class PrintOilOrderReport {
public static Map<String, Object> handover = new HashMap<>();
public static String printOilOrder(){
StringBuilder sb=new StringBuilder();
//
// 日期 2024-05-02
// 时间 12.59.49
// 车号 07609
// 毛重 48440(kg)
// 皮重 17900(kg)
// 净重: 30540(kg)
sb.append("<center>订单统计\r\n</center>");
sb.append("------------------------------------\r\n");
sb.append("<FS><center>称 重 单\r\n</FS></center>");
sb.append("<center>--------------------------\r\n</center>");
sb.append("<FS>日期: 2024-05-02\r\n</FS>");
sb.append("<FS>时间: 12.59.49\r\n</FS>");
sb.append("<FS>车号: 07609\r\n</FS>");
sb.append("<FS>毛重: 48440(kg)\r\n</FS>");
sb.append("<FS>皮重: 17900(kg)\r\n</FS>");
sb.append("<FS>净重: 30540(kg)\r\n</FS>");
sb.append("<center>--------------------------\r\n</center>");
if (ObjectUtil.isNotEmpty(handover.get("oilOrder"))) {
sb.append("<table><tr><td>油品</td><td>金额</td></tr>");
List<Map<String,String>> o = (List<Map<String,String>>)handover.get("oilOrder");
for (Map<String, String> stringStringMap : o) {
sb.append("<tr><td>"+stringStringMap.get("oilName")+"</td>");
sb.append("<td>"+ stringStringMap.get("amount")+"</td></tr>");
}
sb.append("</table>");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("goodsOrder"))) {
sb.append("<table><tr><td>商品</td><td>数量</td><td>单价</td></tr>");
List<Map<String,String>> o = (List<Map<String,String>>)handover.get("goodsOrder");
for (Map<String, String> stringStringMap : o) {
sb.append("<tr><td>"+stringStringMap.get("oilName")+"</td>");
sb.append("<td>"+stringStringMap.get("unit")+"</td>");
sb.append("<td>"+ stringStringMap.get("amount")+"</td></tr>");
}
sb.append("</table>");
sb.append("------------------------------------\r\n");
}
sb.append("支付方式:"+handover.get("payType")+"\r\n");
if ("credit".equals(handover.get("payType"))) {
sb.append("挂账单位:"+handover.get("unitName")+"\r\n");
sb.append("挂账金额:¥"+handover.get("creditAmount")+"\r\n");
sb.append("------------------------------------\r\n");
}
// if (ObjectUtil.isNotEmpty(handover.get("discount"))) {
// sb.append("订单总额:¥"+handover.get("discount")+"\r\n");
// sb.append("<center>订单统计\r\n</center>");
// sb.append("------------------------------------\r\n");
//
// if (ObjectUtil.isNotEmpty(handover.get("oilOrder"))) {
// sb.append("<table><tr><td>油品</td><td>金额</td></tr>");
// List<Map<String,String>> o = (List<Map<String,String>>)handover.get("oilOrder");
// for (Map<String, String> stringStringMap : o) {
// sb.append("<tr><td>"+stringStringMap.get("oilName")+"</td>");
// sb.append("<td>"+ stringStringMap.get("amount")+"</td></tr>");
// }
// sb.append("</table>");
// sb.append("------------------------------------\r\n");
//
// }
if (ObjectUtil.isNotEmpty(handover.get("discount"))) {
sb.append("优惠合计:¥"+handover.get("discount")+"\r\n");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("amount"))) {
sb.append("总金额:¥"+handover.get("amount")+"\r\n");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("consumeAmount"))) {
sb.append("储值卡付款:¥"+handover.get("consumeAmount")+"\r\n");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("consumeRefuelMoney"))) {
sb.append("囤油卡付款:"+handover.get("consumeRefuelMoney")+"L\r\n");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("actualPay"))) {
sb.append("实付款:¥"+handover.get("actualPay")+"\r\n");
sb.append("------------------------------------\r\n");
}
if (ObjectUtil.isNotEmpty(handover.get("seekZero"))) {
sb.append("找零:¥"+handover.get("seekZero")+"\r\n");
sb.append("------------------------------------\r\n");
}
sb.append("<center>谢谢惠顾,欢迎下次光临!</center>");
// if (ObjectUtil.isNotEmpty(handover.get("goodsOrder"))) {
// sb.append("<table><tr><td>商品</td><td>数量</td><td>单价</td></tr>");
// List<Map<String,String>> o = (List<Map<String,String>>)handover.get("goodsOrder");
// for (Map<String, String> stringStringMap : o) {
// sb.append("<tr><td>"+stringStringMap.get("oilName")+"</td>");
// sb.append("<td>"+stringStringMap.get("unit")+"</td>");
//
// sb.append("<td>"+ stringStringMap.get("amount")+"</td></tr>");
// }
// sb.append("</table>");
// sb.append("------------------------------------\r\n");
//
// }
//
// sb.append("支付方式:"+handover.get("payType")+"\r\n");
// if ("credit".equals(handover.get("payType"))) {
// sb.append("挂账单位:"+handover.get("unitName")+"\r\n");
// sb.append("挂账金额:¥"+handover.get("creditAmount")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
//
//// if (ObjectUtil.isNotEmpty(handover.get("discount"))) {
//// sb.append("订单总额:¥"+handover.get("discount")+"\r\n");
//// sb.append("------------------------------------\r\n");
////
//// }
// if (ObjectUtil.isNotEmpty(handover.get("discount"))) {
// sb.append("优惠合计:¥"+handover.get("discount")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
// if (ObjectUtil.isNotEmpty(handover.get("amount"))) {
// sb.append("总金额:¥"+handover.get("amount")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
// if (ObjectUtil.isNotEmpty(handover.get("consumeAmount"))) {
// sb.append("储值卡付款:¥"+handover.get("consumeAmount")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
// if (ObjectUtil.isNotEmpty(handover.get("consumeRefuelMoney"))) {
// sb.append("囤油卡付款:"+handover.get("consumeRefuelMoney")+"L\r\n");
// sb.append("------------------------------------\r\n");
//
// }
// if (ObjectUtil.isNotEmpty(handover.get("actualPay"))) {
// sb.append("实付款:¥"+handover.get("actualPay")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
// if (ObjectUtil.isNotEmpty(handover.get("seekZero"))) {
// sb.append("找零:¥"+handover.get("seekZero")+"\r\n");
// sb.append("------------------------------------\r\n");
//
// }
//
// sb.append("<center>谢谢惠顾,欢迎下次光临!</center>");
return sb.toString();
}

View File

@ -46,4 +46,7 @@ public interface MtStoreMapper extends BaseMapper<MtStore> {
int ifDeleteByDeptId(@Param("deptId") Long deptId);
MtStore getByStroeName(@Param("name") String name);
List<MtStore> queryStoresByDeptIds(@Param("list") List<Long> deptIds);
}

View File

@ -28,4 +28,14 @@
where expiration_time &lt; NOW() and status = 'qy' and expiration_time is not null
</update>
<select id="queryStoresByDeptIds" resultType="com.fuint.business.store.entity.MtStore">
select * from mt_store
where
contract_dept_id in
<foreach collection="list" item="item" open="(" close=")" separator=",">
#{item}
</foreach>
</select>
</mapper>

View File

@ -40,6 +40,7 @@ public interface SysDeptMapper extends BaseMapper<SysDept>
* @return 部门信息
*/
public SysDept selectDeptById(Long deptId);
public SysDeptVo selectDeptByIdVo(Long deptId);
/**
* 根据ID查询所有子部门

View File

@ -50,6 +50,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where d.dept_id = #{deptId}
</select>
<select id="checkDeptExistUser" parameterType="Long" resultType="int">
select count(1) from t_account where dept_id = #{deptId} and account_status = 1
</select>
@ -136,7 +138,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and dept_id = #{deptId}
</if>
</select>
<select id="selectDeptByIdVo" resultType="com.fuint.system.dept.vo.SysDeptVo">
select d.*,
(select dept_name from sys_dept where dept_id = d.parent_id) parent_name
from sys_dept d
where d.dept_id = #{deptId}
</select>
<update id="updateStatusByTurnoverTime" >

View File

@ -19,4 +19,5 @@ public interface MtStaffMapper extends BaseMapper<MtStaff> {
MtStaff queryStaffByMobile(@Param("mobile") String mobile);
MtStaff queryStaffByUserId(@Param("userId") Integer userId);
MtStaff queryStaffById(@Param("id") Integer id);
}

View File

@ -12,4 +12,8 @@
<select id="queryStaffByUserId" resultType="com.fuint.repository.model.MtStaff">
select * from mt_staff t where t.USER_ID = #{userId} and t.AUDITED_STATUS != 'D'
</select>
<select id="queryStaffById" resultType="com.fuint.repository.model.MtStaff">
select * from mt_staff t where t.id = #{id}
</select>
</mapper>