Sfoglia il codice sorgente

fix: 修复订单状态显示和物流字典配置

- 修正商城订单详情中已完成状态判断逻辑
- 统一物流公司字典配置为kd100_express_name
- 新增退款订单地址修改组件并修复地址选择器传参问题
- 修复地址修改后页面不刷新的问题
ylong 1 giorno fa
parent
commit
1f73f23dfa

+ 1 - 1
src/views/mallOrder/all/components/manual-delivery-dialog.vue

@@ -20,7 +20,7 @@
                         clearable
                     />
                     <dict-data
-                        code="shop_order_express_name"
+                        code="kd100_express_name"
                         v-model="pkg.expressName"
                         type="select"
                         placeholder="请选择快递公司"

+ 2 - 2
src/views/mallOrder/all/components/order-base-info.vue

@@ -206,10 +206,10 @@
                             {{ detail.status >= 3 ? '已发货' : '未发货' }}
                         </el-tag>
                         <el-tag
-                            :type="detail.status == 4 ? 'success' : 'warning'"
+                            :type="detail.status == 5 ? 'success' : 'warning'"
                             effect="dark"
                         >
-                            {{ detail.status == 4 ? '已完成' : '未完成' }}
+                            {{ detail.status == 5 ? '已完成' : '未完成' }}
                         </el-tag>
                     </div>
                 </div>

+ 1 - 1
src/views/recycleOrder/components/manual-delivery.vue

@@ -44,7 +44,7 @@
             </el-form-item>
             <el-form-item label="物流公司" prop="expressName">
                 <dict-data
-                    code="refund_order_express_name"
+                    code="kd100_express_name"
                     type="select"
                     value-key="dictLabel"
                     v-model="form.expressName"

+ 8 - 5
src/views/recycleOrder/components/modify-address.vue

@@ -8,8 +8,11 @@
         @success="(data) => emit('success', data)"
         :formatData="formatData"
     >
-        <template #areaSelect>
-            <area-select v-model="formData.proCodes" />
+        <template #areaSelect="{ model, updateValue }">
+            <area-select
+                :modelValue="model.proCodes"
+                @update:modelValue="(val) => updateValue(val)"
+            />
         </template>
     </simple-form-modal>
 </template>
@@ -73,7 +76,7 @@
 
     //默认值
     const baseUrl = reactive({
-        add: '/order/orderInfo/modifyAddress'
+        add: '/order/orderInfo/modifyAddress',
     });
     const formData = ref({
         orderId: '',
@@ -102,7 +105,6 @@
 
     function handleOpen(data) {
         console.log('handleOpen called with:', data);
-
         // 先重置formData,确保清空所有数据
         formData.value = {
             orderId: '',
@@ -112,7 +114,8 @@
             cityId: 0,
             districtId: 0,
             detailAddress: '',
-            proCodes: []
+            proCodes: [],
+            refundOrderId: ''
         };
 
         if (data && data.orderId) {

+ 140 - 0
src/views/recycleOrder/components/modify-refund-address.vue

@@ -0,0 +1,140 @@
+<!-- 搜索表单 -->
+<template>
+    <simple-form-modal
+        title="修改地址"
+        :items="formItems"
+        ref="editRef"
+        :baseUrl="baseUrl"
+        @success="(data) => emit('success', data)"
+        :formatData="formatData"
+    >
+        <template #areaSelect="{ model, updateValue }">
+            <area-select
+                :modelValue="model.proCodes"
+                @update:modelValue="(val) => updateValue(val)"
+            />
+        </template>
+    </simple-form-modal>
+</template>
+
+<script setup>
+    import {
+        reactive,
+        ref,
+        defineEmits,
+        getCurrentInstance,
+        nextTick,
+        computed
+    } from 'vue';
+    import SimpleFormModal from '@/components/CommonPage/SimpleFormModal.vue';
+    import AreaSelect from '@/components/CommonPage/AreaSelect.vue';
+    const { proxy } = getCurrentInstance();
+
+    const emit = defineEmits(['success']);
+
+    const formItems = computed(() => {
+        return [
+            {
+                type: 'input',
+                label: '收件人',
+                prop: 'receiveName',
+                required: true
+            },
+            {
+                type: 'input',
+                label: '手机号',
+                prop: 'receiveMobile',
+                itemProps: {
+                    rules: [
+                        {
+                            required: true,
+                            message: '请输入手机号',
+                            trigger: ['blur']
+                        },
+                        {
+                            pattern: /^1[3-9]\d{9}$/,
+                            message: '请输入正确的手机号',
+                            trigger: ['change']
+                        }
+                    ]
+                }
+            },
+            {
+                type: 'areaSelect',
+                label: '省市区',
+                prop: 'proCodes',
+                required: true
+            },
+            {
+                type: 'textarea',
+                label: '详细地址',
+                prop: 'detailAddress',
+                required: true
+            }
+        ];
+    });
+
+    const baseUrl = reactive({
+        add: '/order/orderInfo/refund/modifyAddress',
+    });
+    const formData = ref({
+        refundOrderId: '',
+        receiveName: '',
+        receiveMobile: '',
+        provinceId: 0,
+        cityId: 0,
+        districtId: 0,
+        detailAddress: '',
+        proCodes: []
+    });
+
+    const editRef = ref(null);
+
+    const formatData = (data) => {
+        if (data.proCodes.length > 0) {
+            data.provinceId = data.proCodes[0];
+            data.cityId = data.proCodes[1];
+            data.districtId = data.proCodes[2];
+        }
+        return {
+            refundOrderId: formData.value.refundOrderId,
+            receiveName: data.receiveName,
+            receiveMobile: data.receiveMobile,
+            provinceId: data.provinceId,
+            cityId: data.cityId,
+            districtId: data.districtId,
+            detailAddress: data.detailAddress
+        };
+    };
+
+    function handleOpen(data) {
+        // 先重置formData,确保清空所有数据
+        formData.value = {
+            refundOrderId: '',
+            receiveName: '',
+            receiveMobile: '',
+            provinceId: 0,
+            cityId: 0,
+            districtId: 0,
+            detailAddress: '',
+            proCodes: []
+        };
+
+        if (data && data.refundOrderId) {
+            formData.value.refundOrderId = data.refundOrderId;
+            formData.value.receiveName = data.receiveName;
+            formData.value.receiveMobile = data.receiveMobile;
+            formData.value.detailAddress = data.receiveAddress;
+            formData.value.proCodes = data.receiveSsqId
+                ? data.receiveSsqId.split('/').map(Number)
+                : [];
+        }
+
+        // 使用nextTick确保数据重置后再打开弹窗
+        nextTick(() => {
+            editRef.value?.handleOpen(formData.value);
+        });
+    }
+
+    defineExpose({ handleOpen });
+</script>

+ 2 - 2
src/views/recycleOrder/needReturned/index.vue

@@ -160,7 +160,7 @@
         <orderLog ref="logRef" type="refund" />
         <manualDelivery ref="deliveryRef" @success="reload()" />
         <orderRefundDetail ref="orderDetailRef" />
-        <modifyAddress ref="modifyAddressRef" />
+        <modifyRefundAddress ref="modifyAddressRef" @success="reload()" />
     </ele-page>
 </template>
 
@@ -177,7 +177,7 @@
     import orderTimeline from '@/views/recycleOrder/components/order-timeline.vue';
     import orderLog from '@/views/recycleOrder/components/order-log.vue';
     import manualDelivery from '@/views/recycleOrder/components/manual-delivery.vue';
-    import modifyAddress from '@/views/recycleOrder/components/modify-address.vue';
+    import modifyRefundAddress from '@/views/recycleOrder/components/modify-refund-address.vue';
 
     //订单详情
     import orderRefundDetail from '@/views/recycleOrder/needReturned/order-refund-detail.vue';