From fd65cf1bf3ea6291c856b73cccdeb0379c38f8b3 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 27 Aug 2025 15:58:28 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat:=E7=AE=A1=E7=90=86=E5=91=98=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E8=AE=B0=E5=BD=95=E5=88=86=E9=A1=B5=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hard/hard-after-sale/order-refund.vue | 21 +-- .../components/admin-refund-dialog/form.vue | 2 +- .../components/admin-refund-dialog/table.vue | 173 +++++++++++++++--- src/views/hard/hard-order/index.vue | 6 +- 4 files changed, 158 insertions(+), 44 deletions(-) diff --git a/src/views/hard/hard-after-sale/order-refund.vue b/src/views/hard/hard-after-sale/order-refund.vue index 31bafbb..6aa3efd 100644 --- a/src/views/hard/hard-after-sale/order-refund.vue +++ b/src/views/hard/hard-after-sale/order-refund.vue @@ -41,14 +41,8 @@ - + - \ No newline at end of file + + + \ No newline at end of file diff --git a/src/views/hard/hard-order/index.vue b/src/views/hard/hard-order/index.vue index 89d95d7..8a3cb26 100644 --- a/src/views/hard/hard-order/index.vue +++ b/src/views/hard/hard-order/index.vue @@ -54,7 +54,8 @@ + @sort-change="sortChangeHandle" :show-summary="false" :summary-method="getSummaries" + row-key="id"> @@ -242,7 +243,6 @@ - @@ -402,7 +402,7 @@ const getSummaries = (param: SummaryMethodProps) => { { column: "totalPrice", columnName: "商品总价", color: "#67C260" }, { column: "extraPrice", columnName: "额外支付", color: "#F56E9B" }, { column: "payPrice", columnName: "实际支付", color: "#355CF6" }, - ].forEach(({ column, columnName, color }: any, index: number) => { + ].forEach(({ column, columnName, color }: any) => { const values = data.map((item) => Number(item[column])) if (!values.every((value) => Number.isNaN(value))) { priceVNode.push( From ca11691c03c14200bce6ce5589400a432795991b Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 27 Aug 2025 20:15:28 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat:=E8=B4=AD=E7=89=A9=E8=BD=A6=E5=95=86?= =?UTF-8?q?=E5=93=81=E7=BA=A7=E9=80=80=E6=AC=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/hard/hard-after-sale.ts | 8 ++ src/api/hard/hard-car.ts | 77 ++++++----- src/hooks/table.ts | 4 +- .../components/admin-refund-dialog/form.vue | 8 +- .../components/admin-refund-dialog/index.vue | 19 ++- .../components/admin-refund-dialog/table.vue | 123 +++++++++++++++--- src/views/hard/hard-order/index.vue | 5 +- 7 files changed, 182 insertions(+), 62 deletions(-) diff --git a/src/api/hard/hard-after-sale.ts b/src/api/hard/hard-after-sale.ts index ad4ae65..283cbd9 100644 --- a/src/api/hard/hard-after-sale.ts +++ b/src/api/hard/hard-after-sale.ts @@ -8,6 +8,14 @@ export function adminRefund(data?: Object) { }) } +export function adminReinforceRefund(data?: Object) { + return request({ + url: "/hard/hard-after-sale/admin-reinforce-refund", + method: "post", + data, + }) +} + export function history(query?: Object) { return request({ url: "/hard/hard-after-sale/history", diff --git a/src/api/hard/hard-car.ts b/src/api/hard/hard-car.ts index 6c068e1..d92a11a 100644 --- a/src/api/hard/hard-car.ts +++ b/src/api/hard/hard-car.ts @@ -1,57 +1,64 @@ import request from "/@/utils/request" export function getCarByOrderId(query?: Object) { - return request({ - url: '/hard/hard-car/order-id', - method: 'get', - params: query - }) + return request({ + url: "/hard/hard-car/order-id", + method: "get", + params: query, + }) +} + +export function refundCar(query?: Object) { + return request({ + url: "/hard/hard-car/refund-car", + method: "get", + params: query, + }) } export function pageJoin(query?: Object) { - return request({ - url: '/hard/hard-car/page-join', - method: 'get', - params: query - }) + return request({ + url: "/hard/hard-car/page-join", + method: "get", + params: query, + }) } export function fetchList(query?: Object) { - return request({ - url: '/hard/hard-car/page', - method: 'get', - params: query - }) + return request({ + url: "/hard/hard-car/page", + method: "get", + params: query, + }) } export function addObj(obj?: Object) { - return request({ - url: '/hard/hard-car', - method: 'post', - data: obj - }) + return request({ + url: "/hard/hard-car", + method: "post", + data: obj, + }) } export function getObj(id?: string) { - return request({ - url: '/hard/hard-car/' + id, - method: 'get' - }) + return request({ + url: "/hard/hard-car/" + id, + method: "get", + }) } export function delObjs(ids?: Object) { - return request({ - url: '/hard/hard-car', - method: 'delete', - data: ids - }) + return request({ + url: "/hard/hard-car", + method: "delete", + data: ids, + }) } export function putObj(obj?: Object) { - return request({ - url: '/hard/hard-car', - method: 'put', - data: obj - }) + return request({ + url: "/hard/hard-car", + method: "put", + data: obj, + }) } - diff --git a/src/hooks/table.ts b/src/hooks/table.ts index af2c58c..1fe3749 100644 --- a/src/hooks/table.ts +++ b/src/hooks/table.ts @@ -203,13 +203,13 @@ export function useTable(options?: BasicTableProps) { * 刷新后不跳转第一页,则入参 getDataList(false) * @param refresh 是否刷新当前页码 */ - const getDataList = (refresh?: any) => { + const getDataList = async (refresh?: any) => { // 如果需要刷新,则将state.pagination.current重置为1 if (refresh !== false) { state.pagination!.current = 1 } // 再次发起查询操作 - query() + await query() } /** diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/form.vue b/src/views/hard/hard-order/components/admin-refund-dialog/form.vue index ccf9882..106581c 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/form.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/form.vue @@ -33,6 +33,7 @@ diff --git a/src/views/hard/hard-order/index.vue b/src/views/hard/hard-order/index.vue index 8a3cb26..c4ab917 100644 --- a/src/views/hard/hard-order/index.vue +++ b/src/views/hard/hard-order/index.vue @@ -224,8 +224,7 @@ v-auth="'hard_hardwareOrder_edit'" @click="formDialogRef.openDialog(row.id)"> 编辑 - 退款 @@ -402,7 +401,7 @@ const getSummaries = (param: SummaryMethodProps) => { { column: "totalPrice", columnName: "商品总价", color: "#67C260" }, { column: "extraPrice", columnName: "额外支付", color: "#F56E9B" }, { column: "payPrice", columnName: "实际支付", color: "#355CF6" }, - ].forEach(({ column, columnName, color }: any) => { + ].forEach(({ column, columnName, color }: any, index: number) => { const values = data.map((item) => Number(item[column])) if (!values.every((value) => Number.isNaN(value))) { priceVNode.push( From af8e6df1c0cd0b338c12b21f0e4e5d69d36ab2c1 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Wed, 27 Aug 2025 20:34:11 +0800 Subject: [PATCH 3/7] =?UTF-8?q?feat:=E9=80=80=E6=AC=BE=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E5=BE=85=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/admin-refund-dialog/form.vue | 5 +++ .../components/admin-refund-dialog/index.vue | 6 +++- .../components/admin-refund-dialog/table.vue | 34 ++++++++++++------- 3 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/form.vue b/src/views/hard/hard-order/components/admin-refund-dialog/form.vue index 106581c..bb55ae0 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/form.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/form.vue @@ -90,7 +90,12 @@ const validate = async () => { return form } +const resetFields = async () => { + await dataFormRef.value.resetFields() +} + defineExpose({ validate, + resetFields }) \ No newline at end of file diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/index.vue b/src/views/hard/hard-order/components/admin-refund-dialog/index.vue index 65a140b..79c3a9f 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/index.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/index.vue @@ -56,10 +56,14 @@ const state = reactive({ const openDialog = (id: string) => { visible.value = true state.orderId = id + + nextTick(() => { + refundTableRef.value?.getCarList(state.orderId) + refundFormRef.value?.resetFields() + }) } function tabClick(e: any) { - console.log("tabClick", e); nextTick(async () => { loading.value = true try { diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/table.vue b/src/views/hard/hard-order/components/admin-refund-dialog/table.vue index d04906a..d0dd289 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/table.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/table.vue @@ -9,7 +9,7 @@ @@ -36,7 +36,7 @@ @@ -66,7 +66,7 @@ @@ -76,16 +76,16 @@ @@ -132,6 +132,14 @@ const getCarList = async (orderId: string) => { // 获取已退款的商品 const { data } = await hardCar.refundCar({ orderId }) if (!data || !data.length) { + disposeDataList.value = state.dataList.map((item) => { + if (!item) return null + return { + ...item, + refundProductCount: 0, + refundTotalPrice: 0, + } + }).filter(Boolean) return } refundSuccessList.value = data From 105679446a6fa988e0e021b51e9542f4ac6d0a3b Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 28 Aug 2025 12:41:55 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat:=E9=80=80=E6=AC=BE=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/formatMoney.ts | 6 ++ src/views/hard/hard-after-sale/index.vue | 40 ++++---- .../components/admin-refund-dialog/index.vue | 16 ++-- .../components/admin-refund-dialog/table.vue | 91 ++++++++++++++----- 4 files changed, 100 insertions(+), 53 deletions(-) diff --git a/src/utils/formatMoney.ts b/src/utils/formatMoney.ts index 4615c6d..cf21e1b 100644 --- a/src/utils/formatMoney.ts +++ b/src/utils/formatMoney.ts @@ -9,6 +9,12 @@ export function displayPrice(price: any, suffix: string = "元", fixed = 2) { return (parsedNumber / 100.0).toFixed(fixed) + suffix } +export function displayWeight(price: any, fixed = 2) { + if (typeof price === "undefined") return "0" + const parsedNumber = typeof price === "string" ? parseFloat(price) : price + return parsedNumber.toFixed(fixed) +} + /** * 把显示价格改为分 * @param price diff --git a/src/views/hard/hard-after-sale/index.vue b/src/views/hard/hard-after-sale/index.vue index 1f7fd35..90cd47f 100644 --- a/src/views/hard/hard-after-sale/index.vue +++ b/src/views/hard/hard-after-sale/index.vue @@ -10,23 +10,19 @@ - + - {{ $t("common.queryBtn") }} + {{ $t("common.queryBtn") + }} {{ $t("common.resetBtn") }} - + @@ -58,27 +54,25 @@ - + diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/index.vue b/src/views/hard/hard-order/components/admin-refund-dialog/index.vue index 79c3a9f..bb0b42b 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/index.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/index.vue @@ -57,9 +57,13 @@ const openDialog = (id: string) => { visible.value = true state.orderId = id - nextTick(() => { + nextTick(async () => { + loading.value = true + await new Promise((resolve) => setTimeout(() => resolve(true), 500)) + state.currentTab = data.tabs[0].name refundTableRef.value?.getCarList(state.orderId) refundFormRef.value?.resetFields() + loading.value = false }) } @@ -68,11 +72,11 @@ function tabClick(e: any) { loading.value = true try { await new Promise((resolve) => setTimeout(() => resolve(true), 250)) - switch (e.paneName) { - case "CAR": - refundTableRef.value?.getCarList(state.orderId) - break - } + // switch (e.paneName) { + // case "CAR": + // refundTableRef.value?.getCarList(state.orderId) + // break + // } await new Promise((resolve) => setTimeout(() => resolve(true), 250)) } catch (error: any) { console.log(error); diff --git a/src/views/hard/hard-order/components/admin-refund-dialog/table.vue b/src/views/hard/hard-order/components/admin-refund-dialog/table.vue index d0dd289..e9cec80 100644 --- a/src/views/hard/hard-order/components/admin-refund-dialog/table.vue +++ b/src/views/hard/hard-order/components/admin-refund-dialog/table.vue @@ -5,19 +5,29 @@ - - + + + + + - + + +