From a1d7e81859f554f3a53680cc35f0f49bf1f77098 Mon Sep 17 00:00:00 2001
From: wwf <1971391498@qq.com>
Date: 星期四, 14 五月 2026 14:37:02 +0800
Subject: [PATCH] 导入项目
---
src/views/mall/trade/order/form/OrderDeliveryForm.vue | 99 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 99 insertions(+), 0 deletions(-)
diff --git a/src/views/mall/trade/order/form/OrderDeliveryForm.vue b/src/views/mall/trade/order/form/OrderDeliveryForm.vue
new file mode 100644
index 0000000..d901c15
--- /dev/null
+++ b/src/views/mall/trade/order/form/OrderDeliveryForm.vue
@@ -0,0 +1,99 @@
+<template>
+ <Dialog v-model="dialogVisible" title="璁㈠崟鍙戣揣" width="25%">
+ <el-form ref="formRef" v-loading="formLoading" :model="formData" label-width="80px">
+ <el-form-item label="鍙戣揣鏂瑰紡">
+ <el-radio-group v-model="expressType">
+ <el-radio border value="express">蹇�掔墿娴�</el-radio>
+ <el-radio border value="none">鏃犻渶鍙戣揣</el-radio>
+ </el-radio-group>
+ </el-form-item>
+ <template v-if="expressType === 'express'">
+ <el-form-item label="鐗╂祦鍏徃">
+ <el-select v-model="formData.logisticsId" placeholder="璇烽�夋嫨" style="width: 100%">
+ <el-option
+ v-for="item in deliveryExpressList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id"
+ />
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鐗╂祦鍗曞彿">
+ <el-input v-model="formData.logisticsNo" />
+ </el-form-item>
+ </template>
+ </el-form>
+ <template #footer>
+ <el-button :disabled="formLoading" type="primary" @click="submitForm">纭� 瀹�</el-button>
+ <el-button @click="dialogVisible = false">鍙� 娑�</el-button>
+ </template>
+ </Dialog>
+</template>
+<script lang="ts" setup>
+import * as DeliveryExpressApi from '@/api/mall/trade/delivery/express'
+import * as TradeOrderApi from '@/api/mall/trade/order'
+import { copyValueToTarget } from '@/utils'
+
+defineOptions({ name: 'OrderDeliveryForm' })
+
+const { t } = useI18n() // 鍥介檯鍖�
+const message = useMessage() // 娑堟伅寮圭獥
+
+const dialogVisible = ref(false) // 寮圭獥鐨勬槸鍚﹀睍绀�
+const formLoading = ref(false) // 琛ㄥ崟鐨勫姞杞戒腑锛�1锛変慨鏀规椂鐨勬暟鎹姞杞斤紱2锛夋彁浜ょ殑鎸夐挳绂佺敤
+const expressType = ref('express') // 濡傛灉鍊兼槸 express锛屽垯鏄揩閫掞紱none 鍒欐槸鏃狅紱鏈潵鍋氬悓鍩庨厤閫侊紱
+const formData = ref<TradeOrderApi.DeliveryVO>({
+ id: undefined, // 璁㈠崟缂栧彿
+ logisticsId: null, // 鐗╂祦鍏徃缂栧彿
+ logisticsNo: '' // 鐗╂祦缂栧彿
+})
+const formRef = ref() // 琛ㄥ崟 Ref
+
+/** 鎵撳紑寮圭獥 */
+const open = async (row: TradeOrderApi.OrderVO) => {
+ resetForm()
+ // 璁剧疆鏁版嵁
+ copyValueToTarget(formData.value, row)
+ if (row.logisticsId === 0) {
+ expressType.value = 'none'
+ }
+ dialogVisible.value = true
+}
+defineExpose({ open }) // 鎻愪緵 open 鏂规硶锛岀敤浜庢墦寮�寮圭獥
+
+/** 鎻愪氦琛ㄥ崟 */
+const emit = defineEmits(['success']) // 瀹氫箟 success 浜嬩欢锛岀敤浜庢搷浣滄垚鍔熷悗鐨勫洖璋�
+const submitForm = async () => {
+ // 鎻愪氦璇锋眰
+ formLoading.value = true
+ try {
+ const data = unref(formData)
+ if (expressType.value === 'none') {
+ // 鏃犻渶鍙戣揣鐨勬儏鍐�
+ data.logisticsId = 0
+ data.logisticsNo = ''
+ }
+ await TradeOrderApi.deliveryOrder(data)
+ message.success(t('common.updateSuccess'))
+ dialogVisible.value = false
+ // 鍙戦�佹搷浣滄垚鍔熺殑浜嬩欢
+ emit('success', true)
+ } finally {
+ formLoading.value = false
+ }
+}
+
+/** 閲嶇疆琛ㄥ崟 */
+const resetForm = () => {
+ formData.value = {
+ id: undefined, // 璁㈠崟缂栧彿
+ logisticsId: null, // 鐗╂祦鍏徃缂栧彿
+ logisticsNo: '' // 鐗╂祦缂栧彿
+ }
+ formRef.value?.resetFields()
+}
+const deliveryExpressList = ref([])
+onMounted(async () => {
+ deliveryExpressList.value = await DeliveryExpressApi.getSimpleDeliveryExpressList()
+})
+</script>
--
Gitblit v1.8.0