Pārlūkot izejas kodu

添加到购物车

lifanagju_citu 4 mēneši atpakaļ
vecāks
revīzija
396a5bd194

+ 1 - 1
components.d.ts

@@ -43,7 +43,7 @@ declare module 'vue' {
     IndustryTypeCard: typeof import('./src/components/industryTypeCard/index.vue')['default']
     Info: typeof import('./src/components/Enterprise/info.vue')['default']
     InitPay: typeof import('./src/components/personalRecharge/initPay.vue')['default']
-    Item: typeof import('./src/components/Position/item.vue')['default']
+    Item: typeof import('./src/components/PositionLongStrip/item.vue')['default']
     JobTypeCard: typeof import('./src/components/jobTypeCard/index.vue')['default']
     ListGroup: typeof import('./src/components/FormUI/nestedListGroup/components/listGroup.vue')['default']
     Loading: typeof import('./src/components/Loading/index.vue')['default']

+ 1 - 1
src/api/mall/cart.js

@@ -32,7 +32,7 @@ export const updateCartCount = async (data) => {
 }
 
 // 添加商品到购物车
-export const addCartGoods = async (data) => {
+export const addCart = async (data) => {
   return request.post({
     url: '/app-api/trade/cart/add',
     data

+ 17 - 34
src/views/mall/components/details.vue

@@ -3,7 +3,10 @@
   <div class="default-width py-5" v-if="state.goodsInfo && Object.keys(state.goodsInfo).length">
     <div class="d-flex justify-space-between">
       <v-btn class="mb-3" size="large" color="primary" variant="text" prepend-icon="mdi-chevron-triple-left" @click="router.go(-1)">返回上一页</v-btn>
-      <v-btn v-if="getToken()" class="mb-3" size="large" color="primary" variant="text" prepend-icon="mdi-account-circle-outline" to="/mall/user/order">我的订单</v-btn>
+      <div v-if="getToken()">
+        <v-btn class="mb-3" size="large" color="primary" variant="text" prepend-icon="mdi-account-circle-outline" to="/mall/user/order">我的订单</v-btn>
+        <v-btn class="mb-3 ml-1" size="large" color="primary" variant="text" prepend-icon="mdi-cart-outline" to="/mall/cart">购物车</v-btn>
+      </div>
     </div>
     <v-card class="carousel border-radius-8 white-bgc pa-5" style="width: 100%;">
       <div class=" d-flex">
@@ -44,6 +47,7 @@
             :goodsInfo="state.goodsInfo"
             @change="onSkuChange"
             @buy="onBuy"
+            @addCart="onAddCart"
           ></selectSku>
         </div>
       </div>
@@ -72,6 +76,7 @@
 <script setup>
 defineOptions({name: 'goods-details'})
 import { getProductDetail } from '@/api/mall/product'
+import { addCart } from '@/api/mall/cart'
 import selectSku from './details/s-select-sku.vue'
 import describe from './details/describe.vue'
 import comment from './details/detail-comment-card.vue'
@@ -146,46 +151,24 @@ const skuInfo = ref(null) // 购买商品规格信息
 const onBuy = async (e) => {
   if (!getToken()) return handleLogin()
   if (!e?.id) return Snackbar.warning('请选择商品规格!')
-  console.log('购买规格信息:', e)
+  // console.log('购买规格信息:', e)
   //
   skuInfo.value = JSON.stringify({
     items: [{ skuId: e.id, count: e.goods_num, categoryId: state.goodsInfo.categoryId, }]
   })
   showPay.value = true
 }
-// Snackbar.warning('购买功能暂未开放,敬请期待!')
 
-// onMounted(() => {
-//   onBuy({
-//     id: 45, 
-//     properties: [
-//         {
-//             propertyId: 19, 
-//             propertyName: "颜色", 
-//             valueId: 31, 
-//             valueName: "酒红色"
-//         }, 
-//         {
-//             propertyId: 21, 
-//             propertyName: "材质", 
-//             valueId: 33, 
-//             valueName: "纯棉"
-//         }
-//     ], 
-//     price: 2190, 
-//     marketPrice: 2190, 
-//     vipPrice: null, 
-//     picUrl: "http://menduner.citupro.com:6868/admin-api/infra/file/24/get/84d51e3ce5c466667c8cdf4b05c432b98a845559ef81461a78677c08a0608d62.jpg", 
-//     stock: 99, 
-//     weight: 0.1, 
-//     volume: 0.1, 
-//     value_id_array: [
-//         31, 
-//         33
-//     ], 
-//     goods_num: 1
-//   })
-// })
+// 添加购物车
+const onAddCart = async (e) => {
+  if (!e.id) {
+    Snackbar.warning('请选择商品规格')
+    return;
+  }
+  await addCart({ skuId: e.id, count: e.goods_num })
+  Snackbar.success('已添加到购物车~')
+  // 刷新购物车列表
+}
 
 const confirmRef = ref()
 const handleSubmit = () => {

+ 2 - 2
src/views/mall/components/details/order/confirm.vue

@@ -197,10 +197,10 @@
       channelExtras: {},
     };
     const res = await payOrderSubmit(obj)
-    console.log('提交支付订单payOrderSubmit:', res)
+    // console.log('提交支付订单payOrderSubmit:', res)
     Snackbar.success('支付成功,请前往我的订单查看!')
     emit('paySuccess')
-    userStore.getUserInfos()
+    userStore.getUserAccountBalance()
   }
 
   // 设置支付订单信息

+ 14 - 13
src/views/mall/components/details/s-select-sku.vue

@@ -42,9 +42,10 @@
         </div>
       </div>
     </div>
-    <!-- 操作区 onAddCart onBuy -->
+    <!-- 操作区 -->
     <div>
       <v-btn class="buttons" color="primary" @click="onBuy">立即购买</v-btn>
+      <v-btn class="ml-3 px-8" color="warning" @click="onAddCart">加入购物车</v-btn>
     </div>
   </div>
 </template>
@@ -100,18 +101,18 @@ const props = defineProps({
   }
 
   // 加入购物车
-  // function onAddCart() {
-  //   if (state.selectedSku.id <= 0) {
-  //     Snackbar.warning('请选择商品规格')
-  //     return;
-  //   }
-  //   if (state.selectedSku.stock <= 0) {
-  //     Snackbar.warning('库存不足')
-  //     return;
-  //   }
-
-  //   emits('addCart', state.selectedSku);
-  // }
+  function onAddCart() {
+    if (state.selectedSku.id <= 0) {
+      Snackbar.warning('请选择商品规格')
+      return;
+    }
+    if (state.selectedSku.stock <= 0) {
+      Snackbar.warning('库存不足')
+      return;
+    }
+
+    emits('addCart', state.selectedSku);
+  }
 
   // 立即购买
   function onBuy() {