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