+
+ 确认接单
+
+
+ 拒绝
+
{
}
}
-const canRefund = (row: any) => row?.payStatus === "PAID"
+const canRefund = (row: any) => row?.payStatus === "PAID" && row?.orderStatus !== "PENDING_CONFIRM"
const canCancel = (row: any) =>
- row?.orderStatus !== "CANCELLED" && row?.payStatus !== "PAID" && row?.payStatus !== "REFUNDED"
+ row?.orderStatus !== "CANCELLED" &&
+ row?.orderStatus !== "PENDING_CONFIRM" &&
+ row?.payStatus !== "PAID" &&
+ row?.payStatus !== "REFUNDED"
const canCompensate = (row: any) =>
- row?.compensateStatus === "WAITING" ||
- row?.compensateStatus === "NEED_MANUAL" ||
- row?.orderStatus === "PENDING_CONFIRM"
+ (row?.compensateStatus === "WAITING" || row?.compensateStatus === "NEED_MANUAL") &&
+ row?.orderStatus !== "PENDING_CONFIRM"
+
+/** 本地数据源且待确认:可人工确认/拒绝 */
+const canConfirmLocal = (row: any) => {
+ if (!row || row.orderStatus !== "PENDING_CONFIRM") return false
+ const ds = String(row.hotelDataSource || detailHotel.value?.dataSource || detailHotel.value?.sheetName || "")
+ .trim()
+ .toLowerCase()
+ // 列表已带回 hotelDataSource;详情里可从酒店实体兜底
+ if (ds) return ds === "local"
+ // 无来源字段时仍允许操作(后端再校验本地源)
+ return String(row.platformNo || "").startsWith("LOCAL-")
+}
const quickFilter = (type: string) => {
if (type === "APP") {
- state.queryForm = { ...state.queryForm, channelNo: "APP", platformNo: "" }
+ state.queryForm = {
+ ...state.queryForm,
+ channelNo: "APP",
+ platformNo: "",
+ orderStatus: "",
+ hotelDataSource: "",
+ }
} else if (type === "LOCAL") {
- state.queryForm = { ...state.queryForm, channelNo: "", platformNo: "LOCAL-" }
+ state.queryForm = {
+ ...state.queryForm,
+ channelNo: "",
+ platformNo: "",
+ orderStatus: "PENDING_CONFIRM",
+ hotelDataSource: "local",
+ }
} else {
- state.queryForm = { ...state.queryForm, channelNo: "", platformNo: "" }
+ state.queryForm = {
+ ...state.queryForm,
+ channelNo: "",
+ platformNo: "",
+ orderStatus: "",
+ hotelDataSource: "",
+ }
}
getDataList()
}
@@ -851,6 +922,47 @@ const handleCancel = async (row: any) => {
}
}
+const handleConfirmLocal = async (row: any) => {
+ try {
+ await useMessageBox().confirm(`确认接单 ${row.channelNo}?接单后订单将变为预订成功。`)
+ } catch {
+ return
+ }
+ detailActing.value = true
+ try {
+ await confirmOrder(row.id)
+ useMessage().success("已确认接单")
+ await refreshAfterAction()
+ } catch (err: any) {
+ useMessage().error(err?.msg || err?.message || "确认失败")
+ } finally {
+ detailActing.value = false
+ }
+}
+
+const handleRejectLocal = async (row: any) => {
+ const paid = row?.payStatus === "PAID"
+ try {
+ await useMessageBox().confirm(
+ paid
+ ? `拒绝订单 ${row.channelNo}?将取消预订、释放库存并原路退款 ${formatAmount(row.sellAmount)}。`
+ : `拒绝订单 ${row.channelNo}?将取消预订并释放库存。`,
+ )
+ } catch {
+ return
+ }
+ detailActing.value = true
+ try {
+ await rejectOrder(row.id)
+ useMessage().success(paid ? "已拒绝并退款" : "已拒绝")
+ await refreshAfterAction()
+ } catch (err: any) {
+ useMessage().error(err?.msg || err?.message || "拒绝失败")
+ } finally {
+ detailActing.value = false
+ }
+}
+
const handleRefund = async (row: any) => {
try {
await useMessageBox().confirm(