feat:订单导出

This commit is contained in:
dzc committed 2025-10-11 17:35:07 +08:00
1 parent e7544d1db1
commit c1522f1cbe
4 files changed
+68 -91

No files matched your search

+2 -2
View File
@@ -4,9 +4,9 @@ NODE_ENV=development
VITE_DEV=true
# 请求路径
VITE_BASE_URL='https://yffzpapi.zianxin.com'
# VITE_BASE_URL='https://yffzpapi.zianxin.com'
#VITE_BASE_URL='http://localhost:48088'
VITE_BASE_URL='http://localhost:48088'
# 文件上传类型:server - 后端上传, client - 前端直连上传,仅支持 S3 服务
VITE_UPLOAD_TYPE=server
+6
View File
@@ -121,6 +121,11 @@ export interface TradeOrderSummaryRespVO {
afterSalePrice?: string
}
// 查询交易订单列表
export const exportOrderExcel = async (params: any) => {
return await request.download({ url: `/trade/order/export-excel`, params })
}
// 查询交易订单列表
export const getOrderPage = async (params: any) => {
return await request.get({ url: `/trade/order/page`, params })
@@ -156,6 +161,7 @@ export const deliveryOrder = async (data: DeliveryVO) => {
export const deliveryOrder100 = async (data: { id: number }) => {
return await request.put({ url: `/trade/order/delivery-kuaidi100?id=${data.id}`, data })
}
// 订单备注
export const updateOrderRemark = async (data: any) => {
return await request.put({ url: `/trade/order/update-remark`, data })
+35 -89
View File
@@ -3,13 +3,7 @@
<doc-alert title="【交易】购物车" url="https://doc.iocoder.cn/mall/trade-cart/" />
<ContentWrap>
<el-form
ref="formRef"
v-loading="formLoading"
:model="formData"
:rules="formRules"
label-width="120px"
>
<el-form ref="formRef" v-loading="formLoading" :model="formData" :rules="formRules" label-width="120px">
<el-form-item v-show="false" label="hideId">
<el-input v-model="formData.id" />
</el-form-item>
@@ -17,35 +11,17 @@
<!-- 售后 -->
<el-tab-pane label="售后">
<el-form-item label="退款理由" prop="afterSaleRefundReasons">
<el-select
v-model="formData.afterSaleRefundReasons"
allow-create
filterable
multiple
placeholder="请直接输入退款理由"
>
<el-option
v-for="reason in formData.afterSaleRefundReasons"
:key="reason"
:label="reason"
:value="reason"
/>
<el-select v-model="formData.afterSaleRefundReasons" allow-create filterable multiple
placeholder="请直接输入退款理由">
<el-option v-for="reason in formData.afterSaleRefundReasons" :key="reason" :label="reason"
:value="reason" />
</el-select>
</el-form-item>
<el-form-item label="退货理由" prop="afterSaleReturnReasons">
<el-select
v-model="formData.afterSaleReturnReasons"
allow-create
filterable
multiple
placeholder="请直接输入退货理由"
>
<el-option
v-for="reason in formData.afterSaleReturnReasons"
:key="reason"
:label="reason"
:value="reason"
/>
<el-select v-model="formData.afterSaleReturnReasons" allow-create filterable multiple
placeholder="请直接输入退货理由">
<el-option v-for="reason in formData.afterSaleReturnReasons" :key="reason" :label="reason"
:value="reason" />
</el-select>
</el-form-item>
</el-tab-pane>
@@ -56,13 +32,8 @@
<el-text class="w-full" size="small" type="info"> 商城是否启用全场包邮</el-text>
</el-form-item>
<el-form-item label="满额包邮" prop="deliveryExpressFreePrice">
<el-input-number
v-model="formData.deliveryExpressFreePrice"
:min="0"
:precision="2"
class="!w-xs"
placeholder="请输入满额包邮"
/>
<el-input-number v-model="formData.deliveryExpressFreePrice" :min="0" :precision="2" class="!w-xs"
placeholder="请输入满额包邮" />
<el-text class="w-full" size="small" type="info">
商城商品满多少金额即可包邮,单位:元
</el-text>
@@ -70,6 +41,13 @@
<el-form-item label="启用门店自提" prop="deliveryPickUpEnabled">
<el-switch v-model="formData.deliveryPickUpEnabled" style="user-select: none" />
</el-form-item>
<!-- 暂时不用 -->
<el-form-item v-if="false" label="自动收货" prop="deliveryAutoReceiveDay">
<el-input v-model="formData.deliveryAutoReceiveDay" type="number" style="max-width: 350px"
placeholder="请输入自动收货时间">
<template #append>天</template>
</el-input>
</el-form-item>
</el-tab-pane>
<!-- 分销 -->
<el-tab-pane label="分销">
@@ -79,11 +57,8 @@
</el-form-item>
<el-form-item label="分佣模式" prop="brokerageEnabledCondition">
<el-radio-group v-model="formData.brokerageEnabledCondition">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_ENABLED_CONDITION)"
:key="dict.value"
:value="dict.value"
>
<el-radio v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_ENABLED_CONDITION)" :key="dict.value"
:value="dict.value">
{{ dict.label }}
</el-radio>
</el-radio-group>
@@ -96,11 +71,8 @@
</el-form-item>
<el-form-item label="分销关系绑定" prop="brokerageBindMode">
<el-radio-group v-model="formData.brokerageBindMode">
<el-radio
v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_BIND_MODE)"
:key="dict.value"
:value="dict.value"
>
<el-radio v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_BIND_MODE)" :key="dict.value"
:value="dict.value">
{{ dict.label }}
</el-radio>
</el-radio-group>
@@ -118,60 +90,35 @@
</el-text>
</el-form-item>
<el-form-item label="一级返佣比例" prop="brokerageFirstPercent">
<el-input-number
v-model="formData.brokerageFirstPercent"
:max="100"
:min="0"
class="!w-xs"
placeholder="请输入一级返佣比例"
/>
<el-input-number v-model="formData.brokerageFirstPercent" :max="100" :min="0" class="!w-xs"
placeholder="请输入一级返佣比例" />
<el-text class="w-full" size="small" type="info">
订单交易成功后给推广人返佣的百分比
</el-text>
</el-form-item>
<el-form-item label="二级返佣比例" prop="brokerageSecondPercent">
<el-input-number
v-model="formData.brokerageSecondPercent"
:max="100"
:min="0"
class="!w-xs"
placeholder="请输入二级返佣比例"
/>
<el-input-number v-model="formData.brokerageSecondPercent" :max="100" :min="0" class="!w-xs"
placeholder="请输入二级返佣比例" />
<el-text class="w-full" size="small" type="info">
订单交易成功后给推广人的推荐人返佣的百分比
</el-text>
</el-form-item>
<el-form-item label="佣金冻结天数" prop="brokerageFrozenDays">
<el-input-number
v-model="formData.brokerageFrozenDays"
:min="0"
class="!w-xs"
placeholder="请输入佣金冻结天数"
/>
<el-input-number v-model="formData.brokerageFrozenDays" :min="0" class="!w-xs" placeholder="请输入佣金冻结天数" />
<el-text class="w-full" size="small" type="info">
防止用户退款,佣金被提现了,所以需要设置佣金冻结时间,单位:天
</el-text>
</el-form-item>
<el-form-item label="提现最低金额" prop="brokerageWithdrawMinPrice">
<el-input-number
v-model="formData.brokerageWithdrawMinPrice"
:min="0"
:precision="2"
class="!w-xs"
placeholder="请输入提现最低金额"
/>
<el-input-number v-model="formData.brokerageWithdrawMinPrice" :min="0" :precision="2" class="!w-xs"
placeholder="请输入提现最低金额" />
<el-text class="w-full" size="small" type="info">
用户提现最低金额限制,单位:元
</el-text>
</el-form-item>
<el-form-item label="提现手续费" prop="brokerageWithdrawFeePercent">
<el-input-number
v-model="formData.brokerageWithdrawFeePercent"
:max="100"
:min="0"
class="!w-xs"
placeholder="请输入提现手续费"
/>
<el-input-number v-model="formData.brokerageWithdrawFeePercent" :max="100" :min="0" class="!w-xs"
placeholder="请输入提现手续费" />
<el-text class="w-full" size="small" type="info">
提现手续费百分比,范围 0-100,0 为无提现手续费。例:设置 10,即收取 10% 手续费,提现
10 元,到账 9 元,1 元手续费
@@ -179,11 +126,8 @@
</el-form-item>
<el-form-item label="提现方式" prop="brokerageWithdrawTypes">
<el-checkbox-group v-model="formData.brokerageWithdrawTypes">
<el-checkbox
v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_WITHDRAW_TYPE)"
:key="dict.value"
:value="dict.value"
>
<el-checkbox v-for="dict in getIntDictOptions(DICT_TYPE.BROKERAGE_WITHDRAW_TYPE)" :key="dict.value"
:value="dict.value">
{{ dict.label }}
</el-checkbox>
</el-checkbox-group>
@@ -217,6 +161,7 @@ const formData = ref({
deliveryExpressFreeEnabled: false,
deliveryExpressFreePrice: 0,
deliveryPickUpEnabled: false,
deliveryAutoReceiveDay: 14,
brokerageEnabled: false,
brokerageEnabledCondition: undefined,
brokerageBindMode: undefined,
@@ -230,6 +175,7 @@ const formData = ref({
})
const formRules = reactive({
deliveryExpressFreePrice: [{ required: true, message: '满额包邮不能为空', trigger: 'blur' }],
deliveryAutoReceiveDay: [{ required: true, message: '自动收货时间不能为空', trigger: 'blur' }],
brokerageEnabledCondition: [{ required: true, message: '分佣模式不能为空', trigger: 'blur' }],
brokerageBindMode: [{ required: true, message: '分销关系绑定模式不能为空', trigger: 'blur' }],
brokerageFirstPercent: [{ required: true, message: '一级返佣比例不能为空', trigger: 'blur' }],
+25
View File
@@ -75,7 +75,12 @@
<Icon class="mr-5px" icon="ep:refresh" />
重置
</el-button>
<el-button :loading="exportLoading" plain type="success" @click="handleExport">
<Icon class="mr-5px" icon="ep:download" />
导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
@@ -167,12 +172,16 @@ import * as PickUpStoreApi from '@/api/mall/trade/delivery/pickUpStore'
import { DICT_TYPE, getIntDictOptions, getStrDictOptions } from '@/utils/dict'
import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
import { DeliveryTypeEnum, TradeOrderStatusEnum } from '@/utils/constants'
import download from '@/utils/download'
import { OrderTableColumn } from './components'
defineOptions({ name: 'TradeOrder' })
const message = useMessage() // 消息弹窗
const { currentRoute, push } = useRouter() // 路由跳转
const loading = ref(true) // 列表的加载中
const exportLoading = ref(false)
const total = ref(2) // 列表的总页数
const list = ref<TradeOrderApi.OrderVO[]>([]) // 列表的数据
const queryFormRef = ref<FormInstance>() // 搜索的表单
@@ -215,6 +224,22 @@ const inputChangeSelect = (val: string) => {
})
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
// 导出的二次确认
await message.exportConfirm()
// 发起导出
exportLoading.value = true
const data = await TradeOrderApi.exportOrderExcel(queryParams.value)
console.log("data:", data);
download.excel(data, '订单列表.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 查询列表 */
const getList = async () => {
loading.value = true