修复前端迁移后的类型错误

This commit is contained in:
yml2213
2026-06-04 11:07:34 +08:00
parent eb6aed7e56
commit 75e849a91a
23 changed files with 1561 additions and 29 deletions
@@ -23,6 +23,9 @@ export interface Order {
deposit_amount: number
platform_fee?: number
account_snapshot?: Record<string, unknown>
listing_snapshot?: string
checkout_info?: string
counter_info?: string
status: OrderStatus
handoff_status: HandoffStatus
settlement_status: SettlementStatus
@@ -131,11 +131,10 @@ export function useOrderDetail() {
if (!order.value) return false
disputing.value = true
try {
await createDispute({
order_id: order.value.id,
await createDispute(order.value.id, {
type: disputeType.value,
description: disputeDescription.value.trim(),
evidence: disputeEvidenceText.value.trim(),
evidence_urls: linesToList(disputeEvidenceText.value),
})
await loadOrder()
return true
@@ -180,6 +179,13 @@ export function useOrderDetail() {
return stepMap[status] ?? 0
}
function linesToList(value: string) {
return value
.split('\n')
.map((line) => line.trim())
.filter(Boolean)
}
onMounted(loadOrder)
return {
@@ -41,7 +41,7 @@ export function readSnapshotResources(order: Order | null): SnapshotResource[] {
label: String(item.label || ''),
quantity: readNumber(item.quantity),
unitPrice: readNumber(item.price),
chargeMode: item.charge_mode === '收费' ? '收费' : '赠送',
chargeMode: (item.charge_mode === '收费' ? '收费' : '赠送') as SnapshotResource['chargeMode'],
}))
.filter((item) => item.key && item.label)
}
@@ -108,7 +108,7 @@ export function hydrateResourceUsageFromOrder(
if (consumedResources) {
resources.forEach((res) => {
if (res.key in consumedResources) {
usage[res.key] = consumedResources[res.key]
usage[res.key] = consumedResources[res.key] ?? 0
}
})
}
@@ -1,4 +1,4 @@
import { ref, computed } from 'vue'
import { ref, type Ref } from 'vue'
import { submitCheckout, acceptCheckout, counterCheckout, confirmCheckout } from '../api/orders'
import type { Order } from '../api/orders'
@@ -23,7 +23,7 @@ export interface CounterForm {
* 订单结算 Composable
* 负责处理订单结算流程:提交结算、接受结算、反驳结算、确认结算
*/
export function useSettlement(order: globalThis.Ref<Order | null>) {
export function useSettlement(order: Ref<Order | null>) {
const returning = ref(false)
const acceptingCheckout = ref(false)
const countering = ref(false)
@@ -61,7 +61,7 @@ export function useSettlement(order: globalThis.Ref<Order | null>) {
consumable_amount: checkoutForm.value.consumable_amount,
coin_consumed_m: checkoutForm.value.coin_consumed_m,
other_amount: checkoutForm.value.other_amount,
evidence: checkoutForm.value.evidenceText.trim(),
evidence_urls: linesToList(checkoutForm.value.evidenceText),
})
onSuccess?.()
return true
@@ -98,7 +98,7 @@ export function useSettlement(order: globalThis.Ref<Order | null>) {
other_amount: counterForm.value.other_amount,
deposit_deduct_amount: counterForm.value.deposit_deduct_amount,
reason: counterForm.value.reason.trim(),
evidence: counterForm.value.evidenceText.trim(),
evidence_urls: linesToList(counterForm.value.evidenceText),
})
onSuccess?.()
return true
@@ -120,7 +120,7 @@ export function useSettlement(order: globalThis.Ref<Order | null>) {
other_amount: 0,
deposit_deduct_amount: 0,
reason: reason.trim(),
evidence: '',
evidence_urls: [],
})
onSuccess?.()
return true
@@ -144,6 +144,13 @@ export function useSettlement(order: globalThis.Ref<Order | null>) {
}
}
function linesToList(value: string) {
return value
.split('\n')
.map((line) => line.trim())
.filter(Boolean)
}
return {
// Loading states
returning,
@@ -3,9 +3,9 @@ import { computed, onMounted, ref } from "vue";
import { useRoute, useRouter } from "vue-router";
import { showToast, showDialog } from "vant";
import { fetchOrderChat } from "@/api/chats";
import { createDispute } from "@/api/disputes";
import { uploadFile } from "@/api/files";
import { fetchOrderChat } from "@/features/chats/api/chats";
import { createDispute } from "@/features/disputes/api/disputes";
import { uploadFile } from "@/shared/api/files";
import {
acceptCheckout,
cancelOrder,
@@ -20,7 +20,7 @@ import {
type HandoffRecord,
type Order,
type PaymentOrder,
} from "@/api/orders";
} from "@/features/orders/api/orders";
import { useSessionStore } from "@/stores/session";
import { handoffStatusLabel, orderStatusLabel } from "@/utils/statusLabels";
import { formatDateTime } from "@/utils/time";
@@ -4,7 +4,7 @@ import { useRouter, useRoute } from "vue-router";
import { showDialog, showToast } from "vant";
import MobileBottomNav from "@/components/MobileBottomNav.vue";
import { fetchOrders, startOrderPayment, type Order, type PaymentOrder } from "@/api/orders";
import { fetchOrders, startOrderPayment, type Order, type PaymentOrder } from "@/features/orders/api/orders";
import { useSessionStore } from "@/stores/session";
import { formatDateMinute } from "@/utils/time";