diff --git a/package.json b/package.json index 39faf5d1a0b8dfa4764309e55da5caa63f5e83fe..5724666cd73541b6055c2ec5535e53e6cd36bdec 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "ant-design-vue": "^2.2.0-beta.6", "dayjs": "^1.10.5", "js-cookie": "^2.2.1", - "moment": "^2.29.1", "nprogress": "^0.2.0", "qs": "^6.10.1", "screenfull": "^5.1.0", diff --git a/src/api/order/order.ts b/src/api/order/order.ts index 5cb29c71f231bb81c6887a6bc2a0486edcb65808..b2082db387cc56eb367a3b34707a473cb2dd2829 100644 --- a/src/api/order/order.ts +++ b/src/api/order/order.ts @@ -6,6 +6,7 @@ import { AfterSaleParams } from '@/model/order/AfterSale' export enum Api { ORDER_TABLE = '/api/order/page', + ORDER_EXPORT = '/api/order/export', AFTER_SALE_TABLE = '/api/order/afterSale/page', AFTER_SALE_EXPORT = '/api/order/afterSale/export', AFTER_SALE_REIMBURSE = '/api/order/afterSale/reimburse', diff --git a/src/model/order/AllOrder.ts b/src/model/order/AllOrder.ts index 387d357cc9a061cf25020ecc967fda72544d3560..b8f38f0bb0135a129e56be53a421dd04ccb10649 100644 --- a/src/model/order/AllOrder.ts +++ b/src/model/order/AllOrder.ts @@ -1,9 +1,9 @@ // 订单请求 筛选条件参数 export interface ParamsData { - orderNo: string // 订单编号 - externalPayNo: string // 外部支付编号 - receiverName: string // 收货人姓名 - receiverPhone: string // 收货人手机号 + orderNo?: string // 订单编号 + externalPayNo?: string // 外部支付编号 + receiverName?: string // 收货人姓名 + receiverPhone?: string // 收货人手机号 receiverPhoneLastFour?: string // 收货人手机号后四位 createTimeStart?: string // 下单开始时间 createTimeEnd?: string // 下单结束时间 diff --git a/src/utils/formMethod.ts b/src/utils/formMethod.ts new file mode 100644 index 0000000000000000000000000000000000000000..d20098b53185839663db6e8ed81f289b56728dd6 --- /dev/null +++ b/src/utils/formMethod.ts @@ -0,0 +1,27 @@ +import { ParamsData } from '@/model/order/AllOrder' + +/** + * @description: 创建options选项 + * @param {Array} list + * @param {string} props + * @return {*} + */ +export const createOptions = (list: Array, props?: string) => { + const propName = props || 'value' + return list.map((item: string, index: number): object => { + return { label: item, [propName]: index++ } + }) +} +/** + * @description: 筛选get请求参数不存在0的情况 + * @param {Array} keys + * @param {ParamsData} params + * @return {*} + */ +export const filterParams = (keys: Array, params: ParamsData): ParamsData => { + const result = Object.assign({}, params) + keys.forEach((key: string) => { + if (!result[key]) delete result[key] + }) + return result +} diff --git a/src/views/order/after-sale/components/FilterForm.vue b/src/views/order/after-sale/components/FilterForm.vue index 41909fc535ffacb3c5b568d91152f532f17d8627..88a5167629be0d223b5f9cafb62696880a268dd4 100644 --- a/src/views/order/after-sale/components/FilterForm.vue +++ b/src/views/order/after-sale/components/FilterForm.vue @@ -16,24 +16,21 @@ - + {{ item.label }} - + {{ item.label }} - + - + {{ item.label }} @@ -74,6 +71,7 @@
筛选 + 重置 批量导出 查看已生成报表
@@ -87,8 +85,9 @@ import { AfterSaleParams } from '@/model/order/AfterSale' import { downloadFile } from '@/utils/download' import { Api } from '@/api/order/order' import { Modal } from 'ant-design-vue' -import { Moment } from 'moment' -import { option1, option2, option3, option4 } from './tableConfig' +import { Dayjs } from 'dayjs' +import { option1, option2, option3, option4, filterKeys } from './tableConfig' +import { filterParams } from '@/utils/formMethod' export default defineComponent({ emits: ['searchTable'], @@ -101,8 +100,8 @@ export default defineComponent({ mannerOptions: [...option4], // 售后方式选项 }) // 定义两个时间选择器变量 - const startDate = ref() - const endDate = ref() + const startDate = ref() + const endDate = ref() watch(startDate, () => { params.createStart = startDate.value?.format('YYYY-MM-DD') }) @@ -110,26 +109,37 @@ export default defineComponent({ params.createEnd = endDate.value?.format('YYYY-MM-DD') }) // 时间校验规则 - const checkStartDate = (startDate: Moment) => { + const checkStartDate = (startDate: Dayjs) => { if (!startDate || !endDate.value) { return false } return startDate.valueOf() > endDate.value.valueOf() } - const checkEndDate = (endDate: Moment) => { + const checkEndDate = (endDate: Dayjs) => { if (!endDate || !startDate.value) { return false } return startDate.value.valueOf() >= endDate.valueOf() } - // 选择框变化函数 - const handleChange = (value: number, attr: string) => { - params[attr] = value - } // 筛选按钮 const searchData = () => { emit('searchTable') } + // 重置按钮 + const resetData = () => { + params.refundType = 0 + params.status = 0 + params.interveneStatus = 0 + params.manner = 0 + params.orderNo = '' + params.afterSaleNo = '' + params.productName = '' + params.createStart = undefined + params.createEnd = undefined + startDate.value = undefined + endDate.value = undefined + emit('searchTable') + } // 导出文件 const clickExportBtn = () => { Modal.confirm({ @@ -138,7 +148,8 @@ export default defineComponent({ content: '是否导出当前售后报表?', onOk() { const apiUrl = Api.AFTER_SALE_EXPORT - downloadFile(apiUrl, params) + const exportParams = filterParams(filterKeys, params) + downloadFile(apiUrl, exportParams) }, onCancel() {}, }) @@ -149,8 +160,8 @@ export default defineComponent({ endDate, ...toRefs(state), clickExportBtn, - handleChange, searchData, + resetData, checkStartDate, checkEndDate, } diff --git a/src/views/order/after-sale/components/tableConfig.ts b/src/views/order/after-sale/components/tableConfig.ts index 210a1567f80162e05d79c830d7f1525bea4f802b..6702ed60cfc43d06791a65c2349e5f8c8b047c20 100644 --- a/src/views/order/after-sale/components/tableConfig.ts +++ b/src/views/order/after-sale/components/tableConfig.ts @@ -1,3 +1,4 @@ +import { createOptions } from '@/utils/formMethod' // 表格数据配置 export const columns: Array = [ { title: '售后编号', dataIndex: 'afterSaleNo', align: 'center' }, @@ -47,36 +48,31 @@ export const tableEnum2: Array = [ ] // 切换退款状态按钮选项 -export const filterBtns: Array = [ - { label: '全部', key: 0 }, - { label: '退款处理中', key: 1 }, - { label: '退款关闭', key: 2 }, -] +const filterArr: string[] = ['全部', '退款处理中', '退款关闭'] // select固定option选项配置 -export const option1: Array = [ - { label: '售中退款', value: 1 }, - { label: '售后退款', value: 2 }, -] -export const option2: Array = [ - { label: '售后处理中', value: 1 }, - { label: '售后申请待商家同意', value: 2 }, - { label: '商家不同意售后申请,待买家处理', value: 3 }, - { label: '商家同意售后申请,待买家处理', value: 4 }, - { label: '买家已退货', value: 5 }, - { label: '待商家确认收货', value: 6 }, - { label: '商家拒绝收货,待买家处理', value: 7 }, - { label: '商家已发货,待买家确认收货', value: 8 }, - { label: '售后成功', value: 9 }, - { label: '售后关闭', value: 10 }, -] -export const option3: Array = [ - { label: '未介入', value: 1 }, - { label: '介入中', value: 2 }, - { label: '介入结束', value: 3 }, -] -export const option4: Array = [ - { label: '仅退款', value: 1 }, - { label: '退货退款', value: 2 }, - { label: '换货', value: 3 }, +const opt1: string[] = ['全部', '售中退款', '售后退款'] +const opt2: string[] = [ + '全部', + '售后处理中', + '售后申请待商家同意', + '商家不同意售后申请,待买家处理', + '商家同意售后申请,待买家处理', + '买家已退货', + '待商家确认收货', + '商家拒绝收货,待买家处理', + '商家已发货,待买家确认收货', + '售后成功', + '售后关闭', ] +const opt3 = ['全部', '未介入', '介入中', '介入结束'] +const opt4 = ['全部', '仅退款', '退货退款', '换货'] + +// 筛选数据参数 +export const filterKeys = ['refundType', 'status', 'interveneStatus', 'manner'] + +export const option1: Array = createOptions(opt1) +export const option2: Array = createOptions(opt2) +export const option3: Array = createOptions(opt3) +export const option4: Array = createOptions(opt4) +export const filterBtns: Array = createOptions(filterArr, 'key') diff --git a/src/views/order/after-sale/index.vue b/src/views/order/after-sale/index.vue index 1000270a492ee0f6a08193047425938de477fef6..d6f686028778d7c1beb118908072ab95db714495 100644 --- a/src/views/order/after-sale/index.vue +++ b/src/views/order/after-sale/index.vue @@ -7,9 +7,11 @@