Parcourir la source

refactor(地址管理): 统一字段命名并更新API端点以匹配后端接口

ylong il y a 1 jour
Parent
commit
48ad127e98

+ 12 - 41
src/views/customer/blacklist/index.vue

@@ -2,12 +2,7 @@
     <ele-page flex-table>
         <page-search @search="reload" />
 
-        <common-table
-            ref="pageRef"
-            :pageConfig="pageConfig"
-            :columns="columns"
-            :tools="false"
-        >
+        <common-table ref="pageRef" :pageConfig="pageConfig" :columns="columns" :tools="false">
             <!--
         <el-button
           type="success"
@@ -26,53 +21,29 @@
                 </div>
             </template>
             <template #status="{ row }">
-                <dict-data
-                    code="user_info_status"
-                    type="tag"
-                    :model-value="row.status"
-                />
+                <dict-data code="user_info_status" type="tag" :model-value="row.status" />
             </template>
 
             <template #action="{ row }">
                 <div>
-                    <el-button
-                        type="success"
-                        link
-                        v-permission="'customer:blacklist:detail'"
-                        @click="handleDetail(row)"
-                    >
+                    <el-button type="success" link v-permission="'customer:blacklist:detail'"
+                        @click="handleDetail(row)">
                         [用户详情]
                     </el-button>
-                    <el-button
-                        type="warning"
-                        link
-                        v-permission="'customer:blacklist:userTag'"
-                        @click="handleBindTag(row)"
-                    >
+                    <el-button type="warning" link v-permission="'customer:blacklist:userTag'"
+                        @click="handleBindTag(row)">
                         [用户标签]
                     </el-button>
-                    <el-button
-                        type="warning"
-                        link
-                        v-permission="'customer:blacklist:accountDetail'"
-                        @click="handleDetail(row, 'accountChange')"
-                    >
+                    <el-button type="warning" link v-permission="'customer:blacklist:accountDetail'"
+                        @click="handleDetail(row, 'accountChange')">
                         [账户明细]
                     </el-button>
-                    <el-button
-                        type="success"
-                        link
-                        v-permission="'customer:blacklist:history'"
-                        @click="handleBlacklistHistory(row)"
-                    >
+                    <el-button type="success" link v-permission="'customer:blacklist:history'"
+                        @click="handleBlacklistHistory(row)">
                         [拉黑历史]
                     </el-button>
-                    <el-button
-                        type="danger"
-                        link
-                        v-permission="'customer:blacklist:remove'"
-                        @click="handleRemoveBlacklist(row)"
-                    >
+                    <el-button type="danger" link v-permission="'customer:blacklist:remove'"
+                        @click="handleRemoveBlacklist(row)">
                         [移出黑名单]
                     </el-button>
                 </div>

+ 11 - 12
src/views/mallLogistics/address/components/edit-dialog.vue

@@ -18,7 +18,7 @@ const title = ref('添加地址');
 
 const formItems = computed(() => {
     return [
-        { type: 'input', label: '联系人', prop: 'contactName', required: true },
+        { type: 'input', label: '联系人', prop: 'name', required: true },
         {
             type: 'areaSelect',
             label: '所在地区',
@@ -34,7 +34,7 @@ const formItems = computed(() => {
         {
             type: 'input',
             label: '手机号',
-            prop: 'phone',
+            prop: 'mobile',
             itemProps: {
                 rules: [
                     { required: true, message: '请输入手机号', trigger: ['blur'] },
@@ -42,23 +42,23 @@ const formItems = computed(() => {
                 ]
             }
         },
-        { type: 'input', label: '邮编编码', prop: 'zipCode' },
+        { type: 'input', label: '邮编编码', prop: 'postalCode' },
         { type: 'textarea', label: '备注', prop: 'remark' }
     ];
 });
 
 const baseUrl = reactive({
-    add: '/mallLogistics/address/add',
-    edit: '/mallLogistics/address/update'
+    add: '/shop/shopAddress/setShopAddressInfo',
+    update: '/shop/shopAddress/setShopAddressInfo'
 });
 
 const formData = ref({
     id: undefined,
-    contactName: '',
-    phone: '',
+    name: '',
+    mobile: '',
     proCodes: [],
     detailAddress: '',
-    zipCode: '',
+    postalCode: '',
     remark: ''
 });
 
@@ -76,18 +76,17 @@ const formatData = (data) => {
 const handleOpen = (row) => {
     formData.value = {
         id: undefined,
-        contactName: '',
-        phone: '',
+        name: '',
+        mobile: '',
         proCodes: [],
         detailAddress: '',
-        zipCode: '',
+        postalCode: '',
         remark: ''
     };
 
     if (row && row.id) {
         title.value = '编辑地址';
         formData.value = { ...row };
-        // Map province/city/district to proCodes if they exist separately in row
         if (row.provinceId && row.cityId && row.districtId) {
             formData.value.proCodes = [row.provinceId, row.cityId, row.districtId];
         } else if (row.proCodes) {

+ 2 - 2
src/views/mallLogistics/address/components/page-search.vue

@@ -11,8 +11,8 @@ import ProSearch from '@/components/CommonPage/ProSearch2.vue';
 const emit = defineEmits(['search']);
 
 const formItems = reactive([
-	{ type: 'input', label: '联系人', prop: 'contactName', placeholder: '请输入联系人' },
-	{ type: 'input', label: '手机号码', prop: 'phone', placeholder: '请输入手机号码' },
+	{ type: 'input', label: '联系人', prop: 'name', placeholder: '请输入联系人' },
+	{ type: 'input', label: '手机号码', prop: 'mobile', placeholder: '请输入手机号码' },
 ]);
 
 const search = (data) => {

+ 66 - 61
src/views/mallLogistics/address/index.vue

@@ -10,12 +10,14 @@
             </template>
 
             <!-- Custom Slots for Radio Buttons -->
-            <template #isSend="{ row }">
-                <el-radio :model-value="row.isSend" :label="1" @change="handleSetDefault(row, 'send')">默认</el-radio>
+            <template #defaultShipingFlag="{ row }">
+                <el-radio :model-value="row.defaultShipingFlag" :label="'1'"
+                    @change="handleSetDefault(row, 1)">默认</el-radio>
             </template>
 
-            <template #isReturn="{ row }">
-                <el-radio :model-value="row.isReturn" :label="1" @change="handleSetDefault(row, 'return')">默认</el-radio>
+            <template #defaultReturnFlag="{ row }">
+                <el-radio :model-value="row.defaultReturnFlag" :label="'1'"
+                    @change="handleSetDefault(row, 2)">默认</el-radio>
             </template>
 
             <template #action="{ row }">
@@ -29,63 +31,66 @@
 </template>
 
 <script setup>
-import { ref, reactive, getCurrentInstance } from 'vue';
-import { Plus } from '@element-plus/icons-vue';
-import CommonTable from '@/components/CommonPage/CommonTable.vue';
-import PageSearch from './components/page-search.vue';
-import EditDialog from './components/edit-dialog.vue';
-import { ElMessage, ElMessageBox } from 'element-plus';
-
-const { proxy } = getCurrentInstance();
-
-const tableRef = ref(null);
-const editDialogRef = ref(null);
-
-const pageConfig = reactive({
-    pageUrl: '/mallLogistics/address/page',
-    rowKey: 'id',
-    fileName: '地址管理',
-    params: {}
-});
-
-const columns = ref([
-    { prop: 'isSend', label: '发货地址', slot: 'isSend', width: 100, align: 'center' },
-    { prop: 'isReturn', label: '退货地址', slot: 'isReturn', width: 100, align: 'center' },
-    { prop: 'contactName', label: '联系人', minWidth: 100 },
-    { prop: 'area', label: '所在地区', minWidth: 150 },
-    { prop: 'detailAddress', label: '详细地址', minWidth: 200 },
-    { prop: 'phone', label: '手机号码', width: 120 },
-    { columnKey: 'action', label: '操作', width: 150, fixed: 'right', align: 'center', slot: 'action' }
-]);
-
-const handleSearch = (params) => {
-    tableRef.value?.reload({ where: params });
-};
-
-const handleAdd = () => {
-    editDialogRef.value?.handleOpen();
-};
-
-const handleEdit = (row) => {
-    editDialogRef.value?.handleOpen(row);
-};
-
-const handleDelete = (row) => {
-    tableRef.value.messageConfrim({
-        message: "确认删除该地址?",
-        fetch: () => proxy.$http.post('/mallLogistics/address/delete', { id: row.id })
-    })
-};
-
-const handleSetDefault = (row, type) => {
-    const url = type === 'send' ? '/mallLogistics/address/setDefaultSend' : '/mallLogistics/address/setDefaultReturn';
-    proxy.$http.post(url, { id: row.id }).then(() => {
-        ElMessage.success('设置成功');
-        refreshPage();
+    import { ref, reactive, getCurrentInstance } from 'vue';
+    import { Plus } from '@element-plus/icons-vue';
+    import CommonTable from '@/components/CommonPage/CommonTable.vue';
+    import PageSearch from './components/page-search.vue';
+    import EditDialog from './components/edit-dialog.vue';
+    import { ElMessage, ElMessageBox } from 'element-plus';
+
+    const { proxy } = getCurrentInstance();
+
+    const tableRef = ref(null);
+    const editDialogRef = ref(null);
+
+    const pageConfig = reactive({
+        pageUrl: '/shop/shopAddress/pagelist',
+        rowKey: 'id',
+        fileName: '地址管理',
+        params: {}
     });
-};
 
-const refreshPage = () => {
-    tableRef.value?.reload();
-};
+    const columns = ref([
+        { prop: 'defaultShipingFlag', label: '发货地址', slot: 'defaultShipingFlag', align: 'center' },
+        { prop: 'defaultReturnFlag', label: '退货地址', slot: 'defaultReturnFlag', align: 'center' },
+        { prop: 'name', label: '联系人' },
+        {
+            prop: 'area',
+            label: '所在地区',
+            formatter: (row) => `${row.provinceName || ''}${row.cityName || ''}${row.districtName || ''}`
+        },
+        { prop: 'detailAddress', label: '详细地址', minWidth: 200 },
+        { prop: 'mobile', label: '手机号码', },
+        { columnKey: 'action', label: '操作', width: 150, fixed: 'right', align: 'center', slot: 'action' }
+    ]);
+
+    const handleSearch = (where) => {
+        tableRef.value?.reload(where);
+    };
+
+    const handleAdd = () => {
+        editDialogRef.value?.handleOpen();
+    };
+
+    const handleEdit = (row) => {
+        editDialogRef.value?.handleOpen(row);
+    };
+
+    const handleDelete = (row) => {
+        tableRef.value?.messageBoxConfirm({
+            message: "确认删除该地址?",
+            fetch: () => proxy.$http.post('/shop/shopAddress/remove', { id: row.id })
+        })
+    };
+
+    const handleSetDefault = (row, type) => {
+        proxy.$http.post('/shop/shopAddress/setDefault', { id: row.id, type }).then(() => {
+            ElMessage.success('设置成功');
+            refreshPage();
+        });
+    };
+
+    const refreshPage = () => {
+        tableRef.value?.reload();
+    };
 </script>