|
@@ -19,7 +19,18 @@ import BottomAppBar from '@/components/bottom-app-bar.vue'
|
|
import { useUserStore } from '../../../../store'
|
|
import { useUserStore } from '../../../../store'
|
|
import { storeToRefs } from 'pinia'
|
|
import { storeToRefs } from 'pinia'
|
|
import { requestToast } from '../../../../core/utils/common'
|
|
import { requestToast } from '../../../../core/utils/common'
|
|
|
|
+import Test from '../components/test.vue'
|
|
|
|
+import type { ComponentExposed } from 'vue-component-type-helpers'
|
|
|
|
|
|
|
|
+import { Activity } from '@/core/models/moment'
|
|
|
|
+
|
|
|
|
+// typeof PageHelper<string, {list: string[]}>
|
|
|
|
+// const pageHelperRef =
|
|
|
|
+// ref<InstanceType<ReturnType<typeof PageHelper<string, typeof { list: string[] }>>>()
|
|
|
|
+// const a2 = ref<InstanceType<ReturnType<typeof PageHelper<any, {an}>>>>()
|
|
|
|
+// const testRef = ref<ComponentExposed<typeof Test<{ aaa: string }>> | undefined>()
|
|
|
|
+const pageHelperRef = ref<ComponentExposed<typeof PageHelper>>()
|
|
|
|
+// testRef1.value?
|
|
const userStore = useUserStore()
|
|
const userStore = useUserStore()
|
|
const { userInfo } = storeToRefs(userStore)
|
|
const { userInfo } = storeToRefs(userStore)
|
|
const data = ref([{}, {}, {}])
|
|
const data = ref([{}, {}, {}])
|
|
@@ -42,49 +53,69 @@ const handleDelete = async (product: any) => {
|
|
success: true,
|
|
success: true,
|
|
},
|
|
},
|
|
)
|
|
)
|
|
|
|
+ await pageHelperRef.value?.refresh()
|
|
}
|
|
}
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<template>
|
|
<template>
|
|
- <view class="flex-grow flex flex-col gap-14 bg-white px-3.5">
|
|
|
|
- <PageHelper :request="getProductItemBuy" :query="{ userId: userInfo.userId }">
|
|
|
|
|
|
+ <view class="flex-grow flex flex-col gap-14 bg-white px-3.5 py-6">
|
|
|
|
+ <PageHelper
|
|
|
|
+ ref="pageHelperRef"
|
|
|
|
+ :request="getProductItemBuy"
|
|
|
|
+ :query="{ userId: userInfo.userId }"
|
|
|
|
+ class="flex-grow flex flex-col"
|
|
|
|
+ >
|
|
<template #default="{ source }">
|
|
<template #default="{ source }">
|
|
- <template v-for="(it, i) in source.list" :key="i">
|
|
|
|
- <div class="flex gap-3" @click="handleDelete(it)">
|
|
|
|
- <div class="flex items-center">
|
|
|
|
- <div class="w-4 h-4 rounded-full border border-black/60 border-solid"></div>
|
|
|
|
- </div>
|
|
|
|
- <div class="w-[110px] h-[110px] bg-[#f6f6f6] rounded-2xl"></div>
|
|
|
|
- <div class="flex flex-col justify-between flex-1">
|
|
|
|
- <div class="text-black/40 text-base font-normal font-['PingFang_SC'] leading-normal">
|
|
|
|
- {{ it.prodcutName }}
|
|
|
|
- </div>
|
|
|
|
- <div class="flex items-center">
|
|
|
|
- <div
|
|
|
|
- class="text-[#ef4343] text-[22px] font-normal font-['D-DIN Exp'] leading-normal"
|
|
|
|
- >
|
|
|
|
- 1000
|
|
|
|
|
|
+ <div class="flex-grow flex flex-col gap-8">
|
|
|
|
+ <template v-for="(it, i) in source.list" :key="i">
|
|
|
|
+ <wd-swipe-action>
|
|
|
|
+ <div class="flex gap-3">
|
|
|
|
+ <div class="flex items-center">
|
|
|
|
+ <div class="w-4 h-4 rounded-full border border-black/60 border-solid"></div>
|
|
</div>
|
|
</div>
|
|
- <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px]">
|
|
|
|
- 积分
|
|
|
|
|
|
+ <div class="w-[110px] h-[110px] bg-[#f6f6f6] rounded-2xl"></div>
|
|
|
|
+ <div class="flex flex-col justify-between flex-1">
|
|
|
|
+ <div
|
|
|
|
+ class="text-black/40 text-base font-normal font-['PingFang_SC'] leading-normal"
|
|
|
|
+ >
|
|
|
|
+ {{ it.prodcutName }}
|
|
|
|
+ </div>
|
|
|
|
+ <div class="flex items-center">
|
|
|
|
+ <div
|
|
|
|
+ class="text-[#ef4343] text-[22px] font-normal font-['D-DIN Exp'] leading-normal"
|
|
|
|
+ >
|
|
|
|
+ 1000
|
|
|
|
+ </div>
|
|
|
|
+ <div
|
|
|
|
+ class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-[34px]"
|
|
|
|
+ >
|
|
|
|
+ 积分
|
|
|
|
+ </div>
|
|
|
|
+ <div class="flex-1"></div>
|
|
|
|
+ <wd-input-number v-model="it.count" />
|
|
|
|
+ </div>
|
|
</div>
|
|
</div>
|
|
- <div class="flex-1"></div>
|
|
|
|
- <wd-input-number v-model="it.count" />
|
|
|
|
</div>
|
|
</div>
|
|
- </div>
|
|
|
|
- </div>
|
|
|
|
- </template>
|
|
|
|
|
|
+ <template #right>
|
|
|
|
+ <view class="h-full">
|
|
|
|
+ <view
|
|
|
|
+ class="inline-block h-full bg-[#ef4343] text-white flex items-center px-5"
|
|
|
|
+ @click="handleDelete(it)"
|
|
|
|
+ >
|
|
|
|
+ 删除
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </template>
|
|
|
|
+ </wd-swipe-action>
|
|
|
|
+ </template>
|
|
|
|
+ </div>
|
|
</template>
|
|
</template>
|
|
</PageHelper>
|
|
</PageHelper>
|
|
- <BottomAppBar fixed>
|
|
|
|
|
|
+ <BottomAppBar fixed border>
|
|
<div class="h-[63px] bg-white backdrop-blur-[20px] flex px-3.5 items-center justify-between">
|
|
<div class="h-[63px] bg-white backdrop-blur-[20px] flex px-3.5 items-center justify-between">
|
|
- <div class="flex">
|
|
|
|
- <div class="text-[#ef4343] text-2xl font-normal font-['D-DIN Exp'] leading-normal">
|
|
|
|
- 1360
|
|
|
|
- </div>
|
|
|
|
- <div class="text-black/40 text-base font-normal font-['PingFang_SC'] leading-[34px]">
|
|
|
|
- 积分
|
|
|
|
- </div>
|
|
|
|
|
|
+ <div class="flex items-end gap-1.25">
|
|
|
|
+ <div class="text-[#ef4343] text-2xl font-normal font-['D-DIN_Exp'] leading-6">1360</div>
|
|
|
|
+ <div class="text-black text-base font-normal font-['PingFang_SC'] leading-5">积分</div>
|
|
</div>
|
|
</div>
|
|
<div class="">
|
|
<div class="">
|
|
<TiltedButton size="large">
|
|
<TiltedButton size="large">
|