Skip to content

Commit

Permalink
feat: Waiting for the development of group list component
Browse files Browse the repository at this point in the history
  • Loading branch information
webyang-male committed Nov 6, 2022
1 parent 01b05cb commit 20cdd4c
Show file tree
Hide file tree
Showing 6 changed files with 87 additions and 6 deletions.
4 changes: 4 additions & 0 deletions .nuxt/components.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ declare module 'vue' {
'TimeBox': typeof import("../components/TimeBox.vue")['default'],
'Uploader': typeof import("../components/Uploader.vue")['default'],
'DetailActiveBar': typeof import("../components/Detail/ActiveBar.vue")['default'],
'DetailGroupWorks': typeof import("../components/Detail/GroupWorks.vue")['default'],
'DetailMenu': typeof import("../components/Detail/Menu.vue")['default'],
'DetailMenuItem': typeof import("../components/Detail/MenuItem.vue")['default'],
'LoadingBookSkeletion': typeof import("../components/Loading/BookSkeletion.vue")['default'],
Expand Down Expand Up @@ -79,6 +80,7 @@ declare module 'vue' {
'LazyTimeBox': typeof import("../components/TimeBox.vue")['default'],
'LazyUploader': typeof import("../components/Uploader.vue")['default'],
'LazyDetailActiveBar': typeof import("../components/Detail/ActiveBar.vue")['default'],
'LazyDetailGroupWorks': typeof import("../components/Detail/GroupWorks.vue")['default'],
'LazyDetailMenu': typeof import("../components/Detail/Menu.vue")['default'],
'LazyDetailMenuItem': typeof import("../components/Detail/MenuItem.vue")['default'],
'LazyLoadingBookSkeletion': typeof import("../components/Loading/BookSkeletion.vue")['default'],
Expand Down Expand Up @@ -135,6 +137,7 @@ export const SendCode: typeof import("../components/SendCode.vue")['default']
export const TimeBox: typeof import("../components/TimeBox.vue")['default']
export const Uploader: typeof import("../components/Uploader.vue")['default']
export const DetailActiveBar: typeof import("../components/Detail/ActiveBar.vue")['default']
export const DetailGroupWorks: typeof import("../components/Detail/GroupWorks.vue")['default']
export const DetailMenu: typeof import("../components/Detail/Menu.vue")['default']
export const DetailMenuItem: typeof import("../components/Detail/MenuItem.vue")['default']
export const LoadingBookSkeletion: typeof import("../components/Loading/BookSkeletion.vue")['default']
Expand Down Expand Up @@ -189,6 +192,7 @@ export const LazySendCode: typeof import("../components/SendCode.vue")['default'
export const LazyTimeBox: typeof import("../components/TimeBox.vue")['default']
export const LazyUploader: typeof import("../components/Uploader.vue")['default']
export const LazyDetailActiveBar: typeof import("../components/Detail/ActiveBar.vue")['default']
export const LazyDetailGroupWorks: typeof import("../components/Detail/GroupWorks.vue")['default']
export const LazyDetailMenu: typeof import("../components/Detail/Menu.vue")['default']
export const LazyDetailMenuItem: typeof import("../components/Detail/MenuItem.vue")['default']
export const LazyLoadingBookSkeletion: typeof import("../components/Loading/BookSkeletion.vue")['default']
Expand Down
8 changes: 4 additions & 4 deletions .nuxt/imports.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ export { useHead, useMeta } from '#head';
export { isVue2, isVue3 } from 'vue-demi';
export { useAsyncData, useLazyAsyncData, refreshNuxtData, defineNuxtComponent, useNuxtApp, defineNuxtPlugin, useRuntimeConfig, useState, useFetch, useLazyFetch, useCookie, useRequestHeaders, useRequestEvent, useRouter, useRoute, useActiveRoute, defineNuxtRouteMiddleware, navigateTo, abortNavigation, addRouteMiddleware, throwError, clearError, useError, defineNuxtLink } from '#app';
export { withCtx, withDirectives, withKeys, withMemo, withModifiers, withScopeId, onActivated, onBeforeMount, onBeforeUnmount, onBeforeUpdate, onDeactivated, onErrorCaptured, onMounted, onRenderTracked, onRenderTriggered, onServerPrefetch, onUnmounted, onUpdated, computed, customRef, isProxy, isReactive, isReadonly, isRef, markRaw, proxyRefs, reactive, readonly, ref, shallowReactive, shallowReadonly, shallowRef, toRaw, toRef, toRefs, triggerRef, unref, watch, watchEffect, isShallow, effect, effectScope, getCurrentScope, onScopeDispose, defineComponent, defineAsyncComponent, resolveComponent, getCurrentInstance, h, inject, nextTick, provide, useAttrs, useCssModule, useCssVars, useSlots, useTransitionState } from 'vue';
export { useUser, useRefreshUserInfo, useLogout, useHasAuth, useHandleSupportPost } from 'E:/WebProject/nuxt3-edu/composables/useAuth';
export { fetchConfig, useHttp, useHttpGet, useHttpPost } from 'E:/WebProject/nuxt3-edu/composables/useHttp';
export { usePage } from 'E:/WebProject/nuxt3-edu/composables/usePage';
export { usePostSupportApi, useDeletePostApi } from 'E:/WebProject/nuxt3-edu/apis/bbs';
export { useUser, useRefreshUserInfo, useLogout, useHasAuth, useHandleSupportPost } from 'E:/WebProject/nuxt3-edu/composables/useAuth';
export { useQueryToString, useEnterEvent, useTimeStatus } from 'E:/WebProject/nuxt3-edu/composables/useUtil';
export { usePostSupportApi, useDeletePostApi } from 'E:/WebProject/nuxt3-edu/apis/bbs';
export { useBookMenusApi, useBookDetailApi } from 'E:/WebProject/nuxt3-edu/apis/book';
export { useSearchListApi, useCouponListApi, useListApi, useReadDetailApi } from 'E:/WebProject/nuxt3-edu/apis/common';
export { usecourseListApi, useReadCourseApi, useHotCourseListApi, useLearnApi } from 'E:/WebProject/nuxt3-edu/apis/course';
export { useIndexDataApi, useGroupDataApi } from 'E:/WebProject/nuxt3-edu/apis/index';
export { useSearchListApi, useCouponListApi, useListApi, useReadDetailApi } from 'E:/WebProject/nuxt3-edu/apis/common';
export { useGetGoodsInfoApi, useGetUseableUserCouponApi, useCreateOrderApi, useWxpayApi, useGetWxpayStatusApi } from 'E:/WebProject/nuxt3-edu/apis/order';
export { useGetGoodsInfoApi, useGetUseableUserCouponApi, useCreateOrderApi, useWxpayApi, useGetWxpayStatusApi, useGetGroupWorkListApi } from 'E:/WebProject/nuxt3-edu/apis/order';
export { useLoginApi, useGetinfoApi, useRegApi, useLogoutApi, useGetCaptchaApi, useBindPhoneApi, useForgetApi, useUserHistoryApi, useOrderListApi, useUserTestApi, useMypostListApi, useUserCouponApi, useMyFavaListApi, useUncollectApi, useUpdateUserInfoApi, useUploadConfig, useUpdatePasswordApi, useCollectApi, useReceiveUserCouponApi } from 'E:/WebProject/nuxt3-edu/apis/user';
export { definePageMeta } from 'E:/WebProject/nuxt3-edu/node_modules/nuxt/dist/pages/runtime/composables';
export { useLink } from 'vue-router';
2 changes: 2 additions & 0 deletions .nuxt/types/auto-imports.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ declare global {
const useForgetApi: typeof import('../../apis/user')['useForgetApi']
const useGetCaptchaApi: typeof import('../../apis/user')['useGetCaptchaApi']
const useGetGoodsInfoApi: typeof import('../../apis/order')['useGetGoodsInfoApi']
const useGetGroupWorkListApi: typeof import('../../apis/order')['useGetGroupWorkListApi']
const useGetUseableUserCouponApi: typeof import('../../apis/order')['useGetUseableUserCouponApi']
const useGetWxpayStatusApi: typeof import('../../apis/order')['useGetWxpayStatusApi']
const useGetinfoApi: typeof import('../../apis/user')['useGetinfoApi']
Expand Down Expand Up @@ -221,6 +222,7 @@ declare module '@vue/runtime-core' {
readonly useForgetApi: UnwrapRef<typeof import('../../apis/user')['useForgetApi']>
readonly useGetCaptchaApi: UnwrapRef<typeof import('../../apis/user')['useGetCaptchaApi']>
readonly useGetGoodsInfoApi: UnwrapRef<typeof import('../../apis/order')['useGetGoodsInfoApi']>
readonly useGetGroupWorkListApi: UnwrapRef<typeof import('../../apis/order')['useGetGroupWorkListApi']>
readonly useGetUseableUserCouponApi: UnwrapRef<typeof import('../../apis/order')['useGetUseableUserCouponApi']>
readonly useGetWxpayStatusApi: UnwrapRef<typeof import('../../apis/order')['useGetWxpayStatusApi']>
readonly useGetinfoApi: UnwrapRef<typeof import('../../apis/user')['useGetinfoApi']>
Expand Down
12 changes: 10 additions & 2 deletions apis/order.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ export function useGetUseableUserCouponApi(id, type = "course") {
//创建订单
export function useCreateOrderApi(body, type) {
let url = `/order/save`;

if (type === "flashsale") {
url = `/order/flashsale`;
}else if(type == "group"){
} else if (type == "group") {
url = `/order/group`;
}

Expand All @@ -46,3 +46,11 @@ export function useGetWxpayStatusApi(no) {
$: true,
});
}

//当前拼团专栏/课程的可组团列表 /pc/group_work/list?group_id=19&page=1
export function useGetGroupWorkListApi(group_id, page = 1) {
return useHttpGet(
"getGroupWorkList",
`/group_work/list?group_id=${group_id}&page=${page}`
);
}
64 changes: 64 additions & 0 deletions components/Detail/GroupWorks.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!-- 拼团组件 -->
<template>
<div class="mb-4">
<n-card>
<template #header>
<div class="text-gray-500 text-sm">
{{ data.count }}人在拼单,可直接参与
</div>
</template>
<n-scrollbar style="height: 60px;">
<div class="flex items-center h-[60px] px-4" v-for="(item, index) in rows" :key="index">
<n-avatar :size="45" :src="item.users[0].avator" round></n-avatar>
<span class="ml-2">{{ item.users[0].nickname ? item.users[0].nickname :
item.users[0].username
}}</span>

<div class="ml-auto">
<p>还差 <span class="text-rose-500">{{ item.total - item.num }}人</span>拼成</p>
<div class="text-xs text-gray-500 mt-1 flex items-center">剩余
<Seckill :time="item.end_time" @end="handleTimeUp(index)" />
</div>
</div>
<n-button type="primary" size="small" class="ml-2">去拼团</n-button>
</div>

</n-scrollbar>
</n-card>

</div>
</template>

<script setup>
import { NCard, NScrollbar, NButton, NAvatar } from "naive-ui"

const props = defineProps({
group_id: {
type: Number,
default: 0
}
});

let {
data, error
} = useGetGroupWorkListApi(props.group_id)

const rows = ref([])
if (!error.value) {
rows.value = data.value.rows.map(o => {
o.end_time = (new Date(o.created_time)).getTime() + 24 * 60 * 60 * 1000;
o.loading = false;
return o;
})
}

//移除事件
function handleTimeUp(index) {
rows.value.splice(index, 1)
data.value.count--;
}
</script>

<style>

</style>
3 changes: 3 additions & 0 deletions pages/detail/[type]/[id].vue
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,9 @@

<n-grid :x-gap="20">
<n-grid-item :span="18">
<!-- 拼团组件 -->
<DetailGroupWorks v-if="data.isbuy && data.group" :group_id="data.group.id" />

<section class="detail-bottom">
<UiTab class="border-b">
<UiTabItem :active="tabState == item.value" v-for="(item, index) in tabs" :key="index"
Expand Down

0 comments on commit 20cdd4c

Please sign in to comment.