소스 검색

feat: 开团入团api调试

liangan 2 주 전
부모
커밋
4bd4493d42
7개의 변경된 파일86개의 추가작업 그리고 66개의 파일을 삭제
  1. 1 8
      src/api/order.ts
  2. 1 1
      src/api/product.ts
  3. 7 0
      src/api/wallet.ts
  4. 39 23
      src/pages/income/income.vue
  5. 2 2
      src/pages/index/index.vue
  6. 13 6
      src/pages/productDetail/checkOut.vue
  7. 23 26
      src/pages/productDetail/productDetail.vue

+ 1 - 8
src/api/order.ts

@@ -1,13 +1,6 @@
 import { qs } from '@/utils'
 import { http } from '@/utils/http'
 
-/**
- * 去拼团-加入
- * @returns
- */
-export function joinPink(data: any) {
-  return http.post<any>(`/mall/combination/pink`, data)
-}
 /**
  * 商品预下单
  * @returns
@@ -41,5 +34,5 @@ export function createOrder(data: any) {
  * @returns
  */
 export function payOrder(data: any) {
-  return http.post<any>(`/mall/order/goPay?${qs(data)}`)
+  return http.post<any>(`/mall/order/goPay`, data)
 }

+ 1 - 1
src/api/product.ts

@@ -7,7 +7,7 @@ import { extractAndRetained, qs } from '@/utils/index'
  */
 export function getList(data: any) {
   const { extract, retained } = extractAndRetained(data, ['page', 'size'])
-  return http.post<any>(`/mall/product/list?${qs(extract)}`, { ...retained, isShow: 1 })
+  return http.post<any>(`/mall/combination/app/list?${qs(extract)}`, { ...retained, isShow: 1 })
 }
 
 /**

+ 7 - 0
src/api/wallet.ts

@@ -7,3 +7,10 @@ import { http } from '@/utils/http'
 export function getWalletInfo() {
   return http.get<any>(`/cif/account/api/getAccountInfo`)
 }
+/**
+ * 查询账号钱包信息
+ * @returns
+ */
+export function accountFlowList(data: any) {
+  return http.post<any>(`/cif/account/api/accountFlowList`, data)
+}

+ 39 - 23
src/pages/income/income.vue

@@ -9,10 +9,13 @@
   </route>
 
 <script lang="ts" setup>
-// 必须导入需要用到的页面生命周期(即使在当前页面上没有直接使用到)
 // eslint-disable-next-line unused-imports/no-unused-imports
 import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
 import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
+// 必须导入需要用到的页面生命周期(即使在当前页面上没有直接使用到)
+
+import { getWalletInfo as _getWalletInfo, accountFlowList } from '@/api/wallet'
+import { formatNumber } from '@/utils'
 
 defineOptions({
   name: 'Income', // 收益
@@ -27,22 +30,35 @@ const dayType = ref(1)
 
 // 搜索结果
 const dataList = ref([])
-function queryList(pageNo, pageSize) {
-  // 此处请求仅为演示,请替换为自己项目中的请求
-  setTimeout(() => {
-    dataList.value = [
-      { title: '123' },
-      { title: '123' },
-      { title: '123' },
-      { title: '12345' },
-    ]
-    paging.value.complete(dataList.value)
-  }, 1000)
+const walletInfo = ref<any>({})
+async function getWalletInfo() {
+  const res = await _getWalletInfo()
+  console.log(res)
+  if (res.code === '200') {
+    walletInfo.value = res.data
+  }
+}
+async function queryList(pageNo, pageSize) {
+  const data = {
+    page: pageNo,
+    size: pageSize,
+    type: dayType.value,
+  }
+  try {
+    const res = await accountFlowList(data)
+    paging.value.complete(res.data.list)
+  }
+  catch (error) {
+    paging.value.complete(false)
+  }
 }
+onShow(() => {
+  getWalletInfo()
+})
 </script>
 
 <template>
-  <z-paging ref="paging" refresher-only use-page-scroll @query="queryList">
+  <z-paging ref="paging" v-model="dataList" use-page-scroll @on-refresh="getWalletInfo" @query="queryList">
     <view class="px-24rpx pb-24rpx">
       <view
         class="mb-20rpx rounded-16rpx from-[rgba(52,52,52,0.95)] to-[rgba(16,16,16,0.95)] bg-gradient-to-br pb-28rpx pt-44rpx text-white"
@@ -53,7 +69,7 @@ function queryList(pageNo, pageSize) {
               Total Earnings
             </view>
             <view class="text-40rpx font-bold">
-              152,418
+              {{ formatNumber(walletInfo.totalEarnings) }}
             </view>
           </view>
           <view>
@@ -61,7 +77,7 @@ function queryList(pageNo, pageSize) {
               Account Balance
             </view>
             <view class="relative text-40rpx font-bold">
-              <text>51,200</text>
+              <text>{{ formatNumber(walletInfo.balance) }}</text>
               <wd-icon custom-class="absolute -right-24rpx top-1/2 -translate-y-1/2" name="arrow-right" size="24rpx" />
             </view>
           </view>
@@ -75,7 +91,7 @@ function queryList(pageNo, pageSize) {
               <wd-icon name="help-circle" size="20rpx" />
             </view>
             <view class="text-40rpx font-bold">
-              102,566
+              {{ formatNumber(walletInfo.settledAmount) }}
             </view>
           </view>
           <wd-divider dashed custom-class="h-60rpx!" color="#A4A4A4" vertical />
@@ -87,7 +103,7 @@ function queryList(pageNo, pageSize) {
               <wd-icon name="help-circle" size="20rpx" />
             </view>
             <view class="text-40rpx font-bold">
-              28,925
+              {{ formatNumber(walletInfo.pendingAmount) }}
             </view>
           </view>
         </view>
@@ -99,25 +115,25 @@ function queryList(pageNo, pageSize) {
               TD Earnings
             </view>
             <view class="text-26rpx font-bold">
-              12,566
+              {{ formatNumber(walletInfo.tdeamings) }}
             </view>
           </view>
           <wd-divider dashed custom-class="h-40rpx!" color="#A4A4A4" vertical />
           <view class="flex-[33.33%]">
             <view class="text-22rpx text-#5B5B5B">
-              TD Earnings
+              YD Earnings
             </view>
             <view class="text-26rpx font-bold">
-              12,566
+              {{ formatNumber(walletInfo.ydeamings) }}
             </view>
           </view>
           <wd-divider dashed custom-class="h-40rpx!" color="#A4A4A4" vertical />
           <view class="flex-[33.33%]">
             <view class="text-22rpx text-#5B5B5B">
-              TD Earnings
+              MTD Earnings
             </view>
             <view class="text-26rpx font-bold">
-              12,566
+              {{ formatNumber(walletInfo.mtdeamings) }}
             </view>
           </view>
         </view>
@@ -131,7 +147,7 @@ function queryList(pageNo, pageSize) {
         </view>
         <view class="flex-1 rounded-16rpx bg-#FEE750/50 py-32rpx shadow-[4rpx_4rpx_8rpx_0rpx_rgba(0,0,0,0.5)]">
           <text class="pr-16rpx">
-            My Group Data
+            Withdraw Now
           </text>
           <wd-icon name="chevron-right-circle" size="32rpx" />
         </view>

+ 2 - 2
src/pages/index/index.vue

@@ -191,7 +191,7 @@ onLoad(() => {
         </view>
         <scroll-view scroll-x>
           <view class="flex items-center gap-22rpx pb-24rpx">
-            <product v-for="(item, index) in newProducts" :key="index" :item="item" @item-click="toPage('/pages/productDetail/productDetail', { id: item.id })" />
+            <product v-for="(item, index) in newProducts" :key="index" :item="item" @item-click="toPage('/pages/productDetail/productDetail', { productId: item.productId, id: item.id })" />
           </view>
         </scroll-view>
       </view>
@@ -202,7 +202,7 @@ onLoad(() => {
           </template>
         </wd-tabs>
         <view class="grid grid-cols-2 gap-22rpx">
-          <product v-for="(item, index) in dataList" :key="index" width="100%" :height="340" :item="item" @item-click="toPage('/pages/productDetail/productDetail', { id: item.id })" />
+          <product v-for="(item, index) in dataList" :key="index" width="100%" :height="340" :item="item" @item-click="toPage('/pages/productDetail/productDetail', { productId: item.productId, id: item.id })" />
         </view>
       </view>
     </view>

+ 13 - 6
src/pages/productDetail/checkOut.vue

@@ -25,10 +25,10 @@ const userStore = useUserStore()
 const userInfo = computed(() => {
   return userStore.userInfo
 })
-const orderId = ref('')
+const queryParams = ref<any>({})
 onLoad((options) => {
   const params = getPageParams(options)
-  orderId.value = params.orderId
+  queryParams.value = params
   getPrice()
 })
 
@@ -45,11 +45,11 @@ const orderSummary = ref({
 const walletBalance = ref(0)
 async function getPrice() {
   // 预下单详情
-  const preOrderRes = await loadPre({ preOrderNo: orderId.value })
+  const preOrderRes = await loadPre({ preOrderNo: queryParams.value.preOrderId })
   console.log(preOrderRes)
   orderDetail.value = preOrderRes?.data?.orderInfoVo?.orderDetailList?.[0]
   // 计算价格
-  const computedPriceRes = await computedPrice({ preOrderNo: orderId.value, userId: userInfo.value.userId, shippingType: 1 })
+  const computedPriceRes = await computedPrice({ preOrderNo: queryParams.value.preOrderId, userId: userInfo.value.userId, shippingType: 1 })
   console.log(computedPriceRes)
   orderSummary.value.SubTotal = computedPriceRes?.data?.proTotalFee
   orderSummary.value.Total = computedPriceRes?.data?.payFee
@@ -141,13 +141,20 @@ function showNetworkErrorDialog() {
 // 下单处理
 async function handlePlaceOrder() {
   const params = {
-    preOrderNo: orderId.value,
+    preOrderNo: queryParams.value.preOrderId,
     userId: userInfo.value.userId,
   }
   const orderRes = await createOrder(params)
   console.log(orderRes)
   if (orderRes.code === '200') {
-    const payRes = await payOrder({ orderId: 5 })
+    const payRes = await payOrder({
+      orderId: orderRes?.data?.columns?.orderNo,
+      type: queryParams.value.groupType,
+      pinkId: queryParams.value.pinkId,
+      cid: queryParams.value.cid,
+      groupType: queryParams.value.groupType,
+      userId: userInfo.value.userId,
+    })
     console.log(payRes)
     if (payRes.code === '8000') {
       showInsufficientBalanceDialog()

+ 23 - 26
src/pages/productDetail/productDetail.vue

@@ -12,7 +12,7 @@
 // eslint-disable-next-line unused-imports/no-unused-imports
 import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
 import useZPaging from 'z-paging/components/z-paging/js/hooks/useZPaging.js'
-import { preOrder as _preOrder, joinPink } from '@/api/order'
+import { preOrder as _preOrder } from '@/api/order'
 import { getDetail, pinkList } from '@/api/product'
 import { formatNumber } from '@/utils/index'
 import { getPageParams, goBack, toPage } from '@/utils/page'
@@ -49,7 +49,8 @@ onPageScroll((e) => {
     navBgColor.value = 'transparent'
   }
 })
-const id = ref('')
+const productId = ref('') // 商品id
+const id = ref('') // 数据id
 const detail = ref<any>({
   sliderImage: '',
   flatPattern: '',
@@ -84,28 +85,20 @@ function onChange(e) {
   // console.log(e)
 }
 
-// 添加头像列表数据
-const avatarList = ref([
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-  '/static/images/avatar.jpg',
-])
-
 // 拼团类型 join-加团 open-开团
 const groupType = ref('open')
 const pinkId = ref('') // 拼团id
+const joinOrderId = ref('') // 加团的拼团-订单id
 
 // sku 逻辑
 const showSku = ref(false)
-function openSku(type: string, id?: string) {
+function openSku(type: string, id?: string, pinkOrderId?: string) {
   showSku.value = true
   groupType.value = type
   if (id)
     pinkId.value = id
+  if (pinkOrderId)
+    joinOrderId.value = pinkOrderId
 }
 const formData = ref({
   productNum: 1,
@@ -200,7 +193,7 @@ function findMatchingAttrValue(selectedSpecs) {
 }
 // 查询商品详情
 async function queryDetail() {
-  const res = await getDetail({ id: id.value })
+  const res = await getDetail({ id: productId.value })
   console.log(res)
   detail.value = res.data
   // 默认选择第一个规格
@@ -210,7 +203,7 @@ async function queryDetail() {
 
 // 查询商品拼团信息
 async function queryPinkInfo() {
-  const res = await pinkList({ id: id.value })
+  const res = await pinkList({ cid: id.value })
   console.log(res)
   pinkInfo.value = res.data.list
 }
@@ -253,17 +246,11 @@ async function preOrder() {
   if (!requireLogin()) {
     return
   }
-  if (groupType.value === 'join') {
-    await joinPink({
-      cid: id.value,
-      pinkId: pinkId.value,
-      userId: userInfo.value.userId,
-    })
-  }
   const data = {
     orderDetails: {
       attrValueId: matchedAttrValue.value.id,
-      productId: id.value,
+      productId: productId.value,
+      cid: id.value,
       productNum: formData.value.productNum,
     },
     preOrderType: 'buyNow',
@@ -272,7 +259,16 @@ async function preOrder() {
   const res = await _preOrder(data)
   if (res.code === '200') {
     showSku.value = false
-    toPage('/pages/productDetail/checkOut', { orderId: res.data })
+    toPage(
+      '/pages/productDetail/checkOut',
+      {
+        preOrderId: res.data,
+        joinOrderId: joinOrderId.value,
+        pinkId: pinkId.value,
+        cid: id.value,
+        groupType: groupType.value,
+      },
+    )
   }
 }
 
@@ -281,6 +277,7 @@ onLoad((options) => {
   console.log(options)
   const params = getPageParams(options)
   id.value = params.id
+  productId.value = params.productId
 })
 onShow(() => {
   queryDetail()
@@ -406,7 +403,7 @@ onShow(() => {
               </view>
             </view>
           </view>
-          <wd-button size="small" @click="openSku('join', item.id)">
+          <wd-button size="small" @click="openSku('join', item.id, item.orderId)">
             Join Group
           </wd-button>
         </view>