This commit is contained in:
2026-10-29 13:37:28 +08:00
parent 57be5316d0
commit f51e51d50f
12 changed files with 133 additions and 40 deletions
@@ -3,6 +3,7 @@ import { computed, onMounted, reactive, ref, watch } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { ElMessage, type FormInstance } from 'element-plus'
import TransportDemandForm from './TransportDemandForm.vue'
import { requireOrderBudget } from '../api/orderBudgets'
import { createTransportDemandForm, transportDemandError, buildTransportDemand, type TransportDemandForm as DemandFormModel } from '../transportDemandForm'
import DataTable, { type DataTableColumn } from '@/components/common/DataTable.vue'
import QueryToolbar, { type QueryField, type QueryModel } from '@/components/common/QueryToolbar.vue'
@@ -118,6 +119,7 @@ const queryFields = computed<QueryField[]>(() => [
])
const form = reactive<BusinessForm>(emptyForm())
watch(() => JSON.stringify(form), () => { submitKey.value = '' })
const detailFields = computed(() => {
if (!detail.value) return []
@@ -252,6 +254,7 @@ async function loadDetail() {
}
async function submit() {
if (submitting.value) return
const failure = transportDemandError(props.kind === 'trucking' ? 'truck' : 'looseboard', form)
if (failure) { ElMessage.error(failure); return }
if (!await formRef.value?.validate().catch(() => false)) return
@@ -259,13 +262,17 @@ async function submit() {
const stableSubmitKey = submitKey.value || idempotencyKey()
submitKey.value = stableSubmitKey
try {
if (props.kind === 'trucking') await createTransport('trucking', { ...buildTransportDemand('truck', form), idempotencyKey: stableSubmitKey })
if (props.kind === 'trucking') {
const payload = { ...buildTransportDemand('truck', form), idempotencyKey: stableSubmitKey }
await requireOrderBudget('trucking', stableSubmitKey, payload.budgetAmount!, payload.currency)
await createTransport('trucking', payload)
}
else await createTransport('looseboard', { ...buildTransportDemand('looseboard', form), idempotencyKey: stableSubmitKey })
ElMessage.success('订单提交成功')
resetForm()
if (props.createPage) await router.push({ name: listRouteName.value })
else { mode.value = 'list'; await load() }
} catch (cause) { ElMessage.error(errorMessage(cause)) }
} catch (cause) { if (/已释放|已过期/.test(errorMessage(cause))) submitKey.value = ''; ElMessage.error(errorMessage(cause)) }
finally { submitting.value = false }
}