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