weixin_52219567 1 mesiac pred
rodič
commit
a3a857d3e3

+ 2 - 2
src/views/cart/index.vue

@@ -41,7 +41,7 @@
           </template>
         </el-table-column>
         <el-table-column label="小计" width="140">
-          <template #default="scope"> ¥{{ scope.row.memberPrice * scope.row.productNum }} </template>
+          <template #default="scope"> ¥{{ (scope.row.memberPrice * scope.row.productNum).toFixed(2) }} </template>
         </el-table-column>
         <el-table-column label="操作">
           <template #default="scope">
@@ -91,7 +91,7 @@
           </template>
         </el-table-column>
         <el-table-column label="小计" width="140" align="center">
-          <template #default="scope"> ¥{{ scope.row.memberPrice * scope.row.productNum }} </template>
+          <template #default="scope"> ¥{{ (scope.row.memberPrice * scope.row.productNum).toFixed(2) }} </template>
         </el-table-column>
         <el-table-column label="操作">
           <template #default="scope">

+ 15 - 11
src/views/home/index-fuli.vue

@@ -105,11 +105,11 @@
       <div class="sell-bos">
         <template v-for="(item, index) in popular" :key="index">
           <div v-if="Number(index) < 5" class="sell-list">
-            <img class="sell-img" :src="item.productImage ? item.productImage.split(',')[0] : ''" alt="" />
-            <div class="sell-name ellipsis2">{{ item.name || '格力KFR-72LW/定频冷暖空调柜机3P格力KFR行车自行车自行车行政村在' }}</div>
+            <img class="sell-img" :src="item.productImage" alt="" />
+            <div class="sell-name ellipsis2">{{ item.itemName || '' }}</div>
             <div class="sell-price">
-              <span class="price1">¥{{ item.memberPrice || '23.22' }}</span>
-              <span class="price2">¥{{ item.marketPrice || '52.12' }}</span>
+              <span class="price1">¥{{ item.memberPrice || '' }}</span>
+              <span class="price2">¥{{ item.marketPrice || '' }}</span>
             </div>
           </div>
         </template>
@@ -120,10 +120,10 @@
         <div class="goods-box">
           <div v-for="(item1, index1) in 8" :key="index1" class="goods-list">
             <img class="goods-img" :src="item.productImage ? item.productImage.split(',')[0] : ''" alt="" />
-            <div class="goods-name ellipsis2">{{ item.name || '格力KFR-72LW/定频冷暖空调柜机3P格力KFR行车自行车自行车行政村在' }}</div>
+            <div class="goods-name ellipsis2">{{ item.name || '' }}</div>
             <div class="goods-price">
-              <span class="price1">¥{{ item.memberPrice || '23.22' }}</span>
-              <span class="price2">¥{{ item.marketPrice || '52.12' }}</span>
+              <span class="price1">¥{{ item.memberPrice || '' }}</span>
+              <span class="price2">¥{{ item.marketPrice || '' }}</span>
             </div>
           </div>
         </div>
@@ -135,7 +135,7 @@
         <img src="@/assets/images/home/indexFuli2.png" alt="" />
       </div>
       <div class="sell-bos recommend">
-        <div v-for="(item, index) in 15" :key="index" class="sell-list">
+        <div v-for="(item, index) in recommend" :key="index" class="sell-list">
           <img class="sell-img" :src="item.productImage ? item.productImage.split(',')[0] : ''" alt="" />
           <div class="sell-name ellipsis2">{{ item.name || '格力KFR-72LW/定频冷暖空调柜机3P格力KFR行车自行车自行车行政村在' }}</div>
           <div class="sell-price">
@@ -187,8 +187,8 @@ const realList = ref<any>([]);
 const interestsList = ref<any>([]);
 const scenario = ref<any>([]);
 const popular = ref<any>([]);
-const goodsList = ref<any>([{}, {}, {}]);
-const recommend = ref<any>([{}, {}, {}]);
+const goodsList = ref<any>([]);
+const recommend = ref<any>([]);
 
 //头部分类
 getProductCategoryTree({}).then((res) => {
@@ -247,7 +247,11 @@ getRecommendAdList({}).then((res) => {
 //热门定制
 getHotCustomGiftFloorList({}).then((res) => {
   if (res.code == 200) {
-    popular.value = res.data;
+    getGiftFloorLinkProductList({ floorId: res.data[0].id }).then((res1) => {
+      if (res1.code == 200) {
+        popular.value = res1.data;
+      }
+    });
   }
 });
 

+ 66 - 28
src/views/home/index-mro.vue

@@ -104,9 +104,9 @@
         <template v-for="(item, index) in tradeList" :key="index">
           <div v-if="Number(index) < 4" class="trade-list flex-row-between">
             <div class="trade-box flex-column-between">
-              <div class="trade-title">{{ item.title||'' }}</div>
+              <div class="trade-title">{{ item.title || '' }}</div>
               <div class="trade-info ellipsis2">
-                {{ item.remark||'' }}
+                {{ item.remark || '' }}
               </div>
               <img class="trade-look" src="@/assets/images/home/indexMro1.png" alt="" />
             </div>
@@ -123,23 +123,23 @@
           <img src="@/assets/images/home/indexMro3.png" alt="" />
         </div>
         <div class="goods-box">
-          <img class="goods-one" src="" alt="" />
+          <img class="goods-one" :src="item.imageUrl" alt="" />
           <div class="goods-shop">
-            <template v-for="(item1, index1) in 10" :key="index1">
+            <template v-for="(item1, index1) in item.goodsList" :key="index1">
               <div v-if="Number(index1) < 8" class="shop-list flex-column-between">
-                <img class="shop-img" :src="item.productImage ? item.productImage.split(',')[0] : ''" alt="" />
-                <div class="shop-name ellipsis2">{{ item.itemName || '格力KFR-72LW/定频冷暖空调柜机3P格力KFR行车自行车自行车行政村在' }}</div>
+                <img class="shop-img" :src="item1.productImage ? item1.productImage.split(',')[0] : ''" alt="" />
+                <div class="shop-name ellipsis2">{{ item1.itemName || '' }}</div>
                 <div class="shop-price">
-                  <span class="price1">¥{{ item.memberPrice || '23.22' }}</span>
-                  <span class="price2">¥{{ item.marketPrice || '52.12' }}</span>
+                  <span class="price1">¥{{ item1.memberPrice || '' }}</span>
+                  <span class="price2">¥{{ item1.marketPrice || '' }}</span>
                 </div>
               </div>
             </template>
           </div>
-          <div class="goods-brand flex-column-between">
+          <div class="goods-brand flex-column-between" v-if="item.brandList && item.brandList.length > 0">
             <div class="brand-bos">
-              <template v-for="(item1, index1) in 8" :key="index1">
-                <img clear-both v-if="Number(index1) < 6" class="brand-img" src="" alt="" />
+              <template v-for="(item1, index1) in item.brandList" :key="index1">
+                <img clear-both v-if="Number(index1) < 6" class="brand-img" :src="item1.brandLogo" alt="" />
               </template>
             </div>
             <div class="brand-more flex-row-center">
@@ -156,18 +156,18 @@
         <img src="@/assets/images/home/indexMro3.png" alt="" />
       </div>
       <div class="nav-bos flex-row-center">
-        <template v-for="(item, index) in 10" :key="index">
-          <div class="nav-list" :class="index == 0 ? 'hig' : ''" v-if="Number(index) < 9">为你推荐</div>
+        <template v-for="(item, index) in recommendNav" :key="index">
+          <div @click="onNav(item)" class="nav-list" :class="categoryId == item.id ? 'hig' : ''" v-if="Number(index) < 9">{{ item.title }}</div>
         </template>
       </div>
       <!-- 轮播展位商品 -->
       <div class="sell-bos recommend">
-        <div v-for="(item, index) in 20" :key="index" class="sell-list">
+        <div v-for="(item, index) in recommendList" :key="index" class="sell-list">
           <img class="sell-img" :src="item.productImage ? item.productImage.split(',')[0] : ''" alt="" />
-          <div class="sell-name ellipsis2">{{ item.itemName || '格力KFR-72LW/定频冷暖空调柜机3P格力KFR行车自行车自行车行政村在' }}</div>
+          <div class="sell-name ellipsis2">{{ item.itemName || '' }}</div>
           <div class="sell-price">
-            <span class="price1">¥{{ item.memberPrice || '23.22' }}</span>
-            <span class="price2">¥{{ item.marketPrice || '52.12' }}</span>
+            <span class="price1">¥{{ item.memberPrice || '' }}</span>
+            <span class="price2">¥{{ item.marketPrice || '' }}</span>
           </div>
         </div>
       </div>
@@ -205,6 +205,9 @@ const interestsList = ref<any>([]);
 const sellList = ref<any>([]);
 const tradeList = ref<any>([]);
 const goodsList = ref<any>([]);
+const recommendNav = ref<any>([]);
+const recommendList = ref<any>([]);
+const categoryId = ref<any>('');
 
 onMounted(() => {
   if (getToken()) {
@@ -230,7 +233,7 @@ const enterClassify = (res: any) => {
 
 //头部分类
 getProductCategoryTree({
-  platform:1
+  platform: 1
 }).then((res) => {
   if (res.code == 200) {
     classifyList.value = res.data;
@@ -273,33 +276,68 @@ getBusinessLabelList({}).then((res) => {
 });
 
 //循环
-getIndustrialFloor({}).then((res) => {
+getIndustrialFloor({}).then(async (res) => {
   if (res.code == 200) {
-    goodsList.value = res.data;
-    res.data.forEach((item: any) => {
-      getIndustrialFloorProductList({ floorId: item.id }).then((res) => {
-        if (res.code == 200) {
+    for (const item of res.data) {
+      try {
+        // const datas1 = await getClassificationFloorDetail(item.floorNo);
+        // if (datas1.code == 200) {
+        //   if (datas1.data.length > 0) {
+        //     item.imgOne = datas1.data[0];
+        //     if (datas1.data.length > 1) {
+        //       item.home1List = datas1.data.slice(1, 4);
+        //     }
+        //     if (datas1.data.length > 4) {
+        //       item.home2List = datas1.data.slice(4, 6);
+        //     }
+        //     if (datas1.data.length > 6) {
+        //       item.infoTwo = datas1.data[6];
+        //     }
+        //   }
+        // }
+
+        const datas2 = await getIndustrialFloorProductList({ floorId: item.id });
+        if (datas2.code == 200) {
+          item.goodsList = datas2.data;
         }
-      });
-      getIndustrialFloorBrand({ floorId: item.id }).then((res) => {
-        if (res.code == 200) {
+
+        const datas3 = await getIndustrialFloorBrand({ floorId: item.id });
+        if (datas2.code == 200) {
+          item.brandList = datas3.data;
         }
-      });
-    });
+      } catch (error) {}
+    }
+
+    goodsList.value = res.data;
   }
 });
 
 //为你推荐-分类
 getRecommendedCategory({}).then((res) => {
   if (res.code == 200) {
+    recommendNav.value = res.data;
+    recommendNav.value.unshift({
+      id: '',
+      title: '全部'
+    });
   }
 });
 
 //为你推荐-商品
 getRecommendedCategoryProductList({}).then((res) => {
   if (res.code == 200) {
+    recommendList.value = res.data;
   }
 });
+
+const onNav = (item: any) => {
+  categoryId.value = item.id;
+  getRecommendedCategoryProductList({ categoryId: categoryId.value }).then((res) => {
+    if (res.code == 200) {
+      recommendList.value = res.data;
+    }
+  });
+};
 </script>
 
 <style lang="scss" scoped>

+ 127 - 2
src/views/trad/index.vue

@@ -10,7 +10,12 @@
         <span class="border"></span>
         <!-- <span>某某部门</span> -->
       </div>
-      <div class="address-title">收货地址</div>
+      <div class="address-title">
+        <div>收货地址</div>
+        <el-button type="danger" link @click="handleAdd">
+          <el-icon><Plus /></el-icon>新增收货地址
+        </el-button>
+      </div>
       <div class="address-bos">
         <div
           @click="onAddress(item)"
@@ -144,13 +149,43 @@
         </div>
       </div>
     </div>
+
+    <!-- 新增/编辑弹窗 -->
+    <el-dialog v-model="dialogVisible" title="新增收货地址" width="550px">
+      <el-form ref="formRef" :model="formAddress" :rules="rules" label-width="100px">
+        <el-form-item label="收货人" prop="name">
+          <el-input v-model="formAddress.name" placeholder="请输入收货人姓名" />
+        </el-form-item>
+        <el-form-item label="联系电话" prop="phone">
+          <el-input v-model="formAddress.phone" placeholder="请输入联系电话" />
+        </el-form-item>
+        <el-form-item label="所在地区" prop="region">
+          <el-cascader
+            v-model="formAddress.regionCodes"
+            :options="regionData as any"
+            placeholder="请选择省/市/区"
+            style="width: 100%"
+            @change="handleRegionChange"
+          />
+        </el-form-item>
+        <el-form-item label="详细地址" prop="address">
+          <el-input v-model="formAddress.address" type="textarea" :rows="2" placeholder="请输入详细地址" />
+        </el-form-item>
+        <el-form-item label="设为默认"><el-switch v-model="formAddress.isDefault" /></el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="dialogVisible = false">取消</el-button>
+        <el-button type="danger" @click="handleSave">确定</el-button>
+      </template>
+    </el-dialog>
   </div>
 </template>
 
 <script setup lang="ts">
-import { getAddressList } from '@/api/pc/enterprise';
+import { getAddressList, addAddress } from '@/api/pc/enterprise';
 import { shoppingCartList, pcOrdersubmit } from '@/api/goods/index';
 import { onPath } from '@/utils/siteConfig';
+import { regionData } from 'element-china-area-data';
 const route = useRoute();
 const ids = ref<any>('');
 const tableData = ref<any>([]);
@@ -175,6 +210,19 @@ const options = [
   }
 ];
 
+//收货地址
+const dialogVisible = ref(false);
+const formRef = ref();
+const formAddress = reactive({ name: '', phone: '', regionCodes: [], region: '', address: '', isDefault: false });
+const rules = {
+  name: [{ required: true, message: '请输入收货人姓名', trigger: 'blur' }],
+  phone: [
+    { required: true, message: '请输入联系电话', trigger: 'blur' },
+    { pattern: /^1[3-9]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }
+  ],
+  address: [{ required: true, message: '请输入详细地址', trigger: 'blur' }]
+};
+
 onMounted(() => {
   ids.value = route.query.ids;
   form.value.productShoppingCartId = ids.value.split(',');
@@ -233,6 +281,80 @@ const onSubmit = () => {
   });
   console.log(form.value);
 };
+
+const handleAdd = () => {
+  resetForm();
+  dialogVisible.value = true;
+};
+
+const resetForm = () => {
+  formAddress.name = '';
+  formAddress.phone = '';
+  formAddress.regionCodes = [];
+  formAddress.region = '';
+  formAddress.address = '';
+  formAddress.isDefault = false;
+};
+
+// 处理地区选择变化
+const handleRegionChange = (value: string[]) => {
+  if (value && value.length === 3) {
+    // 根据选中的代码查找对应的名称
+
+    // 根据编码获取名称
+    const names: string[] = [];
+    if (value[0]) {
+      const province = regionData.find((item: any) => item.value === value[0]);
+      if (province) {
+        names.push(province.label);
+
+        if (value[1] && province.children) {
+          const city = province.children.find((item: any) => item.value === value[1]);
+          if (city) {
+            names.push(city.label);
+
+            if (value[2] && city.children) {
+              const county = city.children.find((item: any) => item.value === value[2]);
+              if (county) {
+                names.push(county.label);
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // 将省市区名称用斜杠连接
+    formAddress.region = names.join('/');
+  }
+};
+const handleSave = async () => {
+  const valid = await formRef.value?.validate();
+  if (!valid) return;
+  try {
+    const data: any = {
+      consignee: formAddress.name,
+      phone: formAddress.phone,
+      address: formAddress.address,
+      isDefault: formAddress.isDefault
+    };
+
+    // 如果选择了省市区,发送代码
+    if (formAddress.regionCodes && formAddress.regionCodes.length === 3) {
+      data.provincialNo = formAddress.regionCodes[0];
+      data.cityNo = formAddress.regionCodes[1];
+      data.countryNo = formAddress.regionCodes[2];
+      data.provincialCityCountry = formAddress.region;
+    }
+
+    await addAddress(data);
+    ElMessage.success('新增成功');
+    dialogVisible.value = false;
+    loadAddressList();
+  } catch (error) {
+    ElMessage.error('操作失败');
+  }
+};
 </script>
 
 <style lang="scss" scoped>
@@ -269,6 +391,9 @@ const onSubmit = () => {
       font-size: 14px;
       color: #101828;
       margin: 30px 0 10px 0;
+      display: flex;
+      justify-content: space-between;
+      align-items: center;
     }
     .address-bos {
       display: flex;