mayf
2024-10-12 53ac595354d7e577acd48dff19470b73b892c8cf
Merge remote-tracking branch 'origin/master'
已修改2个文件
已添加2个文件
404 ■■■■■ 文件已修改
pages/order/evaluation/index.vue 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/report/partner/_date.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/report/partner/index.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
utils/form-item-config.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/order/evaluation/index.vue
@@ -127,8 +127,12 @@
              {
                label: '评价星级:',
                id: 'commentGrade',
                type: 'input',
                component: 'simple-text',
                readonly: true,
                el: {
                  type: 'primary',
                },
                forceDisabled: true,
              },
              {
                label: '评论显示状态:',
@@ -241,6 +245,9 @@
      )
      if (code === 0) {
        const row = data[0]
        row.supplierName = row.supplierName+'[ID:'+ row.supplierId +'], 电话:'+row.supplierContactTel
        row.customerName = row.customerName+'[UID:'+ row.customerId +']'
        row.commentGrade = row.commentGrade+'星'
        this.$refs.crud.$refs.extraDialog[0].show(row)
      }
    },
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>
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>
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