From 13dab651f815f307ca3a5def321ea8919e9f6ff2 Mon Sep 17 00:00:00 2001
From: 陶杰 <1378534974@qq.com>
Date: 星期六, 12 十月 2024 11:32:30 +0800
Subject: [PATCH] 1.合伙人结算报表
---
pages/report/partner/_date.vue | 143 ++++++++++++++++++++
utils/form-item-config.js | 31 ++++
pages/report/partner/index.vue | 221 +++++++++++++++++++++++++++++++
3 files changed, 395 insertions(+), 0 deletions(-)
diff --git a/pages/report/partner/_date.vue b/pages/report/partner/_date.vue
new file mode 100644
index 0000000..34cb802
--- /dev/null
+++ b/pages/report/partner/_date.vue
@@ -0,0 +1,143 @@
+<template>
+ <el-bus-crud ref="crud" v-bind="tableConfig" />
+</template>
+
+<script>
+import { getPartnerListConfig } from '@/utils/form-item-config'
+export default {
+ data() {
+ return {
+ tableConfig: {
+ url: 'flower/v2/report/order/detail/page',
+ hasEdit: false,
+ hasNew: false,
+ hasDelete: false,
+ hasView: false,
+ hasExport: true,
+ hasOperation: false,
+ exportUrl: 'flower/v2/report/order/detail/export',
+ exportText: '导出',
+ columns: [
+ { label: '订单号', prop: 'orderNo', minWidth: 150, fixed: 'left' },
+ {
+ label: '下单用户',
+ prop: 'customer',
+ minWidth: '150px',
+ fixed: 'left',
+ },
+ { label: '收货人地址', prop: 'address', minWidth: '220px' },
+ { label: '合伙人', prop: 'partnerName', minWidth: '120px' },
+ { label: '下单时间', prop: 'orderDate', minWidth: '180px' },
+ { label: '订单金额', prop: 'orderTotal', minWidth: '120px' },
+ {
+ label: '花农底价',
+ prop: 'orderSupplierPriceAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '平台区间加价',
+ prop: 'orderMarkupOneAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '平台加价',
+ prop: 'orderMarkupTwoAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '平台区域加价',
+ prop: 'platformAreaFeeAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '合伙人加价',
+ prop: 'orderMarkupPartnerAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '合伙人区间加价',
+ prop: 'partnerSectionFeeAmount',
+ minWidth: '120px',
+ },
+ {
+ label: '会员折扣',
+ prop: 'orderPriceDiscountAmount',
+ minWidth: '100px',
+ },
+ {
+ label: '优惠券',
+ prop: 'orderCouponAmountTotal',
+ minWidth: '100px',
+ },
+ { label: '质检降级扣款', prop: 'orderCheckFee', minWidth: '100px' },
+ {
+ label: '质检缺货扣款',
+ prop: 'orderLackFeeSupplier',
+ minWidth: '100px',
+ },
+ { label: '质检补货扣款', prop: 'orderReplaceFee', minWidth: '100px' },
+ {
+ label: '售后扣合伙人款',
+ prop: 'orderFeePartner',
+ minWidth: '120px',
+ },
+ {
+ label: '售后扣花农款',
+ prop: 'orderFeeSupplier',
+ minWidth: '100px',
+ },
+ {
+ label: '售后扣平台款',
+ prop: 'orderFeePlatform',
+ minWidth: '100px',
+ },
+ {
+ label: '总包干费',
+ prop: 'partnerTotalFeeAmount',
+ minWidth: '100px',
+ },
+ { label: '销售扎数', prop: 'realSaleNum', minWidth: '100px' },
+ {
+ label: '利润',
+ prop: 'profitFeeAmount',
+ minWidth: '100px',
+ fixed: 'right',
+ },
+ {
+ label: '结算状态',
+ prop: 'settleStatusStr',
+ minWidth: '120px',
+ fixed: 'right',
+ },
+ ],
+ searchForm: [
+ {
+ type: 'row',
+ span: 6,
+ items: [
+ {
+ label: '下单日期',
+ id: 'calDate',
+ component: 'el-date-picker',
+ type: 'date',
+ el: {
+ valueFormat: 'yyyy-MM-dd',
+ style: 'width:100%',
+ clearable: false,
+ },
+ default: this.$route.params.date,
+ },
+ { ...getPartnerListConfig() },
+ ],
+ },
+ ],
+ },
+ }
+ },
+ head() {
+ return {
+ title: '订单结算明细',
+ }
+ },
+}
+</script>
diff --git a/pages/report/partner/index.vue b/pages/report/partner/index.vue
new file mode 100644
index 0000000..2ecfba4
--- /dev/null
+++ b/pages/report/partner/index.vue
@@ -0,0 +1,221 @@
+<template>
+ <div>
+ <div v-loading="statisticLoading">
+ <el-row :gutter="20">
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">底价合计</div>
+ <div class="statistic-num">{{ statistic.orderPartnerPriceAmount || 0 }}</div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">合伙人加价</div>
+ <div class="statistic-num">
+ {{ statistic.orderMarkupPartnerAmount || 0 }}
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">会员折扣合计</div>
+ <div class="statistic-num">
+ {{ statistic.orderPriceDiscountAmount || 0 }}
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">销售扎数</div>
+ <div class="statistic-num">
+ {{ statistic.realSaleNum || 0 }}
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">售后扣款合计</div>
+ <div class="statistic-num">
+ {{ statistic.orderFeePartner || 0 }}
+ </div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">优惠券合计</div>
+ <div class="statistic-num">{{ statistic.orderCouponAmountTotal || 0 }}</div>
+ </el-card>
+ </el-col>
+ <el-col :span="4" class="mb-10">
+ <el-card>
+ <div class="statistic-title">包干费合计</div>
+ <div class="statistic-num">
+ {{ statistic.partnerTotalFeeAmount || 0 }}
+ </div>
+ </el-card>
+ </el-col>
+ </el-row>
+ </div>
+ <el-bus-crud v-bind="tableConfig" />
+ </div>
+</template>
+
+<script>
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+import { getPartnerListNameWithIdConfig } from '@/utils/form-item-config'
+dayjs.locale('zh-cn')
+export default {
+ data() {
+ const paymentDateStart = `${dayjs().format('YYYY-MM-DD')}`
+ const paymentDateEnd = `${dayjs().format('YYYY-MM-DD')}`
+ return {
+ statistic: {},
+ statisticLoading: false,
+ tableConfig: {
+ url: 'flower/v2/report/order/partner/sale/page',
+ hasNew: false,
+ hasEdit: false,
+ hasDelete: false,
+ // viewText: '明细',
+ hasExport: true,
+ hasOperation: false,
+ exportUrl: 'flower/v2/report/order/partner/sale/export',
+ exportText: '导出',
+ onResetView: (row) => {
+ const url = this.$router.resolve(
+ `/report/finance/${row.orderDate}`
+ ).href
+ window.open(url, '_blank')
+ },
+ operationAttrs: {
+ width: 80,
+ fixed: 'right',
+ },
+ beforeRequest: async (params) => {
+ this.statisticLoading = true
+ // eslint-disable-next-line
+ let { code, data } = await this.$elBusHttp.request(
+ `flower/v2/report/order/partner/sale/statis`,
+ { params }
+ )
+ if (code === 0) {
+ data = data || {}
+ data.checkTotalFee = Number(
+ (
+ (data.orderCheckFee ?? 0) +
+ (data.orderLackFeeSupplier ?? 0) +
+ (data.orderReplaceFee ?? 0)
+ ).toFixed(2)
+ )
+ data.saleTotalFee = Number(
+ (
+ (data.orderFeePartner ?? 0) +
+ (data.orderFeeSupplier ?? 0) +
+ (data.orderFeePlatform ?? 0)
+ ).toFixed(2)
+ )
+ data.discountTotalFee = Number(
+ (
+ (data.orderPriceDiscountAmount ?? 0) +
+ (data.orderCouponAmountTotal ?? 0)
+ ).toFixed(2)
+ )
+ this.statistic = data || {}
+ }
+ this.statisticLoading = false
+ },
+ columns: [
+ {
+ label: '下单日期',
+ prop: 'orderDate',
+ minWidth: 120,
+ fixed: 'left',
+ },
+ { label: '合伙人ID', prop: 'partnerId', minWidth: 120 },
+ {
+ label: '合伙人',
+ prop: 'partnerName',
+ minWidth: 120,
+ },
+ {
+ label: '底价',
+ prop: 'orderPartnerPriceAmount',
+ minWidth: 120,
+ },
+ {
+ label: '合伙人加价',
+ prop: 'orderMarkupPartnerAmount',
+ minWidth: 120,
+ },
+ {
+ label: '会员折扣',
+ prop: 'orderPriceDiscountAmount',
+ minWidth: 120,
+ },
+ { label: '优惠券', prop: 'orderCouponAmountTotal', minWidth: 120 },
+ { label: '售后扣合伙人款', prop: 'orderFeePartner', minWidth: 120 },
+
+ { label: '总包干费', prop: 'partnerTotalFeeAmount', minWidth: 120 },
+ { label: '实际销售扎数', prop: 'realSaleNum', minWidth: 120 },
+ ],
+ searchForm: [
+ {
+ type: 'row',
+ items: [
+ {
+ label: '下单日期',
+ id: 'paymentDateStart',
+ component: 'el-bus-date-range',
+ el: {
+ clearable: false,
+ },
+ // commonFormat: true,
+ // commonFormatProps: ['paymentDateStart', 'paymentDateEnd'],
+ inputFormat: (row) => {
+ if ('paymentDateStart' in row || 'paymentDateEnd' in row) {
+ return [
+ this.$elBusUtil.toDate(row.paymentDateStart),
+ this.$elBusUtil.toDate(row.paymentDateEnd),
+ ]
+ }
+ },
+ outputFormat: (val) => {
+ return {
+ paymentDateStart: `${this.$elBusUtil.toDate(val[0])}`,
+ paymentDateEnd: `${this.$elBusUtil.toDate(val[1])}`,
+ }
+ },
+ customClass: 'in-bus-form',
+ commonRules: true,
+ default: [paymentDateStart, paymentDateEnd],
+ },
+ { ...getPartnerListNameWithIdConfig(), label: '合伙人' },
+ ],
+ },
+ ],
+ },
+ }
+ },
+ head() {
+ return {
+ title: '财务报表',
+ }
+ },
+}
+</script>
+
+<style lang="scss" scoped>
+.statistic-title {
+ text-align: center;
+ font-size: 20px;
+ color: $main-title-color;
+ font-weight: bold;
+ margin-bottom: 6px;
+}
+.statistic-num {
+ text-align: center;
+ font-size: 16px;
+ color: $primary-color;
+}
+</style>
diff --git a/utils/form-item-config.js b/utils/form-item-config.js
index aca653c..5093906 100644
--- a/utils/form-item-config.js
+++ b/utils/form-item-config.js
@@ -94,6 +94,37 @@
}
}
+export const getPartnerListNameWithIdConfig = () => {
+ return {
+ label: '合伙人:',
+ id: 'partnerId',
+ type: 'bus-select',
+ el: {
+ interfaceUri: 'flower/api/partner/page',
+ extraQuery: {
+ current: 1,
+ size: 2000,
+ status: 'P',
+ isEnabled: 1,
+ },
+ props: {
+ label: 'name',
+ value: 'id',
+ dataPath: 'records',
+ },
+ filterable: true,
+ clearable: true,
+ style: 'width:100%',
+ // 列表返回的是id是int但是存的是string情况
+ filterOptions: (list) => {
+ const listFilter= list.map((item) => ({ ...item, id: item.id + '',name:item.name+'(PID:'+item.id +')'}))
+ return listFilter
+ },
+ },
+ }
+}
+
+
export const getGoodsCategoryListConfig = (
checkStrictly = false,
multiple = false
--
Gitblit v1.9.3