feat:订单导出
This commit is contained in:
1 parent
e7544d1db1
commit
c1522f1cbe
4 files changed
+68
-91
No files matched your search
+2
-2
@@ -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
|
||||
|
||||
@@ -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 })
|
||||
|
||||
@@ -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' }],
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in new issue
Block a user