From e8804abe9a60845c7c92f6b1139b60df7bbee31c Mon Sep 17 00:00:00 2001 From: Timi Date: Wed, 9 Sep 2026 16:00:56 +0800 Subject: [PATCH] add cancel reason selector --- src/pages/salesOrder/SalesOrderCancel.vue | 57 ++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/src/pages/salesOrder/SalesOrderCancel.vue b/src/pages/salesOrder/SalesOrderCancel.vue index 819d161..3567b0d 100644 --- a/src/pages/salesOrder/SalesOrderCancel.vue +++ b/src/pages/salesOrder/SalesOrderCancel.vue @@ -22,10 +22,34 @@ v-entrance-transition="70" > - +
+ + 选择 +
+ + + @@ -49,7 +73,30 @@ const order = ref(); const loading = ref(false); const saving = ref(false); const reason = ref(""); +const cancelReasonPickerDraft = ref([]); +const cancelReasonPickerVisible = ref(false); const hasPendingFulfillment = ref(false); +const cancelReasonOptions = [ + "客户主动取消订单", + "客户重复下单", + "商品缺货,无法履约", + "订单信息有误", + "价格或优惠配置错误", + "客户需求变更", + "其他原因" +]; +const cancelReasonPickerColumns = cancelReasonOptions.map(item => ({ label: item, value: item })); + +function openCancelReasonPicker(): void { + const currentReason = cancelReasonOptions.includes(reason.value) ? reason.value : cancelReasonOptions[0]; + cancelReasonPickerDraft.value = [currentReason]; + cancelReasonPickerVisible.value = true; +} + +function confirmCancelReason(value: Array): void { + reason.value = String(value[0] || cancelReasonPickerDraft.value[0] || ""); + cancelReasonPickerVisible.value = false; +} async function loadData(): Promise { const id = String(route.params.id || ""); @@ -107,5 +154,13 @@ onUnmounted(() => navBarStore.clearRight()); padding: var(--app-nav-height) 0 2rem; display: flex; flex-direction: column; + + .form { + + .reason { + gap: .5rem; + display: flex; + } + } }