From faa767dccaee9446061dae6387649beb77a5cd41 Mon Sep 17 00:00:00 2001
From: mayf <m13160102112@163.com>
Date: 星期一, 30 九月 2024 15:26:17 +0800
Subject: [PATCH] 财务报表

---
 /dev/null                      |   77 ---------
 pages/report/finance/_date.vue |  143 +++++++++++++++++
 pages/report/finance/index.vue |  247 ++++++++++++++++++++++++++++++
 3 files changed, 390 insertions(+), 77 deletions(-)

diff --git a/pages/report/finance/_date.vue b/pages/report/finance/_date.vue
new file mode 100644
index 0000000..34cb802
--- /dev/null
+++ b/pages/report/finance/_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/finance/index.vue b/pages/report/finance/index.vue
new file mode 100644
index 0000000..0e6a193
--- /dev/null
+++ b/pages/report/finance/index.vue
@@ -0,0 +1,247 @@
+<template>
+  <div>
+    <el-row :gutter="20">
+      <el-col :span="4" class="mb-10">
+        <el-card>
+          <div class="statistic-title">销售合计</div>
+          <div class="statistic-num">{{ statistic.orderTotal || 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.orderSupplierPriceAmount || 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.orderMarkupOneAmount || 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.orderMarkupTwoAmount || 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.checkTotalFee || 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.saleTotalFee || 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.discountTotalFee || 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-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-row>
+    <el-bus-crud v-bind="tableConfig" />
+  </div>
+</template>
+
+<script>
+import dayjs from 'dayjs'
+import 'dayjs/locale/zh-cn'
+import { getPartnerListConfig } from '@/utils/form-item-config'
+dayjs.locale('zh-cn')
+export default {
+  data() {
+    const endDate = `${dayjs().format('YYYY-MM-DD')} 00:00:00`
+    const startDate = `${dayjs()
+      .subtract(1, 'month')
+      .format('YYYY-MM-DD')} 23:59:59`
+    return {
+      statistic: {},
+      tableConfig: {
+        url: 'flower/v2/report/order/sale/page',
+        hasNew: false,
+        hasEdit: false,
+        hasDelete: false,
+        viewText: '明细',
+        onResetView: (row) => {
+          const url = this.$router.resolve(
+            `/report/finance/${row.orderDate}`
+          ).href
+          window.open(url, '_blank')
+        },
+        operationAttrs: {
+          width: 80,
+          fixed: 'right',
+        },
+        beforeRequest: async (params) => {
+          const { code, data } = await this.$elBusHttp.request(
+            `flower/v2/report/order/sale/statis`,
+            { params }
+          )
+          if (code === 0) {
+            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 || {}
+          }
+        },
+        columns: [
+          {
+            label: '下单日期',
+            prop: 'orderDate',
+            minWidth: 120,
+            fixed: 'left',
+          },
+          { label: '销售额', prop: 'orderTotal', minWidth: 120 },
+          {
+            label: '花农底价',
+            prop: 'orderSupplierPriceAmount',
+            minWidth: 120,
+          },
+          {
+            label: '平台区间加价',
+            prop: 'orderMarkupOneAmount',
+            minWidth: 120,
+          },
+          { label: '平台加价', prop: 'orderMarkupTwoAmount', minWidth: 120 },
+          {
+            label: '合伙人加价',
+            prop: 'orderMarkupPartnerAmount',
+            minWidth: 120,
+          },
+          {
+            label: '会员折扣',
+            prop: 'orderPriceDiscountAmount',
+            minWidth: 120,
+          },
+          { label: '优惠券', prop: 'orderCouponAmountTotal', minWidth: 120 },
+          { label: '降级扣款', prop: 'orderCheckFee', minWidth: 120 },
+          { label: '缺货扣款', prop: 'orderLackFeeSupplier', minWidth: 120 },
+          { label: '补货扣款', prop: 'orderReplaceFee', minWidth: 120 },
+          { label: '售后扣合伙人款', prop: 'orderFeePartner', minWidth: 150 },
+          { label: '售后扣花农款', prop: 'orderFeeSupplier', minWidth: 150 },
+          { label: '售后扣平台款', prop: 'orderFeePlatform', minWidth: 150 },
+          { label: '总包干费', prop: 'partnerTotalFeeAmount', minWidth: 120 },
+          { label: '销售扎数', prop: 'realSaleNum', minWidth: 120 },
+          {
+            label: '利润',
+            prop: 'profitFeeAmount',
+            minWidth: 120,
+            fixed: 'right',
+          },
+          {
+            label: '结算状态',
+            prop: 'settleStatus',
+            minWidth: 120,
+            fixed: 'right',
+          },
+        ],
+        searchForm: [
+          {
+            type: 'row',
+            items: [
+              {
+                label: '下单日期',
+                id: 'startDate',
+                component: 'el-bus-date-range',
+                el: {
+                  clearable: false,
+                },
+                // commonFormat: true,
+                // commonFormatProps: ['startDate', 'endDate'],
+                inputFormat: (row) => {
+                  if ('startDate' in row || 'endDate' in row) {
+                    return [
+                      this.$elBusUtil.toDate(row.startDate),
+                      this.$elBusUtil.toDate(row.endDate),
+                    ]
+                  }
+                },
+                outputFormat: (val) => {
+                  return {
+                    startDate: `${this.$elBusUtil.toDate(val[0])} 00:00:00`,
+                    endDate: `${this.$elBusUtil.toDate(val[1])} 23:59:59`,
+                  }
+                },
+                customClass: 'in-bus-form',
+                commonRules: true,
+                default: [startDate, endDate],
+              },
+              { ...getPartnerListConfig(), 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/pages/report/order-detail.vue b/pages/report/order-detail.vue
deleted file mode 100644
index d8ac2ea..0000000
--- a/pages/report/order-detail.vue
+++ /dev/null
@@ -1,77 +0,0 @@
-<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: '180px'},
-          {label: '下单用户', prop: 'customer', minWidth: '100px'},
-          {label: '收货人地址', prop: 'address', minWidth: '220px'},
-          {label: '合伙人', prop: 'partnerName', minWidth: '100px'},
-          {label: '下单时间', prop: 'orderDate', minWidth: '180px'},
-          {label: '订单金额', prop: 'orderTotal', minWidth: '120px'},
-          {label: '花农底价', prop: 'orderSupplierPriceAmount', minWidth: '100px'},
-          {label: '平台区间加价', prop: 'orderMarkupOneAmount', minWidth: '100px'},
-          {label: '平台加价', prop: 'orderMarkupTwoAmount', minWidth: '100px'},
-          {label: '平台区域加价', prop: 'platformAreaFeeAmount', minWidth: '100px'},
-          {label: '合伙人加价', prop: 'orderMarkupPartnerAmount', minWidth: '100px'},
-          {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'},
-          {label: '结算状态', prop: 'settleStatusStr', minWidth: '100px'},
-        ],
-        searchForm: [
-          {
-            type: 'row',
-            items: [
-              {
-                label: '下单日期',
-                id: 'calDate',
-                component: 'el-date-picker',
-                type: 'date',
-                el: {
-                  valueFormat: 'yyyy-MM-dd',
-                },
-              },
-              { ...getPartnerListConfig() },
-            ],
-          },
-        ],
-        form: [],
-        // extraButtons: [],
-        // extraDialogs: [],
-      },
-    }
-  },
-  head() {
-    return {
-      title: '订单结算明细',
-    }
-  },
-  methods: {},
-}
-</script>
-

--
Gitblit v1.9.3