|
@@ -0,0 +1,96 @@
|
|
|
+<route lang="json">
|
|
|
+{
|
|
|
+ "style": {
|
|
|
+ "navigationBarTitleText": "我的荣誉",
|
|
|
+ "navigationStyle": "custom"
|
|
|
+ }
|
|
|
+}
|
|
|
+</route>
|
|
|
+<script setup lang="ts">
|
|
|
+import NavbarEvo from '@/components/navbar-evo.vue'
|
|
|
+import Card from '@/components/card.vue'
|
|
|
+import SectionHeading from '@/components/section-heading.vue'
|
|
|
+import { getBadges, getCertificates } from '../../../core/libs/requests'
|
|
|
+
|
|
|
+const active = ref('badge')
|
|
|
+const tabs = ref([
|
|
|
+ { label: '徽章', value: 'badge' },
|
|
|
+ { label: '证书', value: 'certificate' },
|
|
|
+])
|
|
|
+// 游学徽章,活动徽章,积分徽章,典藏勋章,传播徽章,打卡徽章,课程徽章
|
|
|
+const badgeTypes = ref([
|
|
|
+ { label: '游学徽章', value: '游学徽章' },
|
|
|
+ { label: '活动徽章', value: '活动徽章' },
|
|
|
+ { label: '积分徽章', value: '积分徽章' },
|
|
|
+ { label: '典藏勋章', value: '典藏勋章' },
|
|
|
+ { label: '传播徽章', value: '传播徽章' },
|
|
|
+ { label: '打卡徽章', value: '打卡徽章' },
|
|
|
+ { label: '课程徽章', value: '课程徽章' },
|
|
|
+])
|
|
|
+const { data: badges, run: setBadges } = useRequest(
|
|
|
+ () =>
|
|
|
+ // Promise.all(badgeTypes.value.map((it) => getBadges({}))).then((res) => ({
|
|
|
+ // data: res,
|
|
|
+ // code: 0,
|
|
|
+ // msg: 'ok',
|
|
|
+ // })),
|
|
|
+ getBadges({}),
|
|
|
+ {
|
|
|
+ initialData: {},
|
|
|
+ },
|
|
|
+)
|
|
|
+const { data: certificates, run: setCertificates } = useRequest(() => getCertificates({}), {
|
|
|
+ initialData: [],
|
|
|
+})
|
|
|
+onMounted(async () => {
|
|
|
+ await setBadges()
|
|
|
+ await setCertificates()
|
|
|
+ console.log(badges.value)
|
|
|
+})
|
|
|
+</script>
|
|
|
+<template>
|
|
|
+ <div class="flex-grow bg-gradient-to-b from-[#181614] to-[#0f0f0f] flex flex-col gap-4 p-3.5">
|
|
|
+ <NavbarEvo dark placeholder transparent></NavbarEvo>
|
|
|
+ <wd-tabs v-model="active">
|
|
|
+ <template v-for="(it, i) in tabs" :key="i">
|
|
|
+ <wd-tab :title="it.label" :name="it.value"></wd-tab>
|
|
|
+ </template>
|
|
|
+ </wd-tabs>
|
|
|
+ <template v-if="active === 'badge'">
|
|
|
+ <Card custom-class="border border-solid bg-[#25221f]! border-[rgba(255,236,185,0.20)]"></Card>
|
|
|
+ <template v-for="([key, it], index) in Object.entries(badges)" :key="index">
|
|
|
+ <Card
|
|
|
+ custom-class="bg-[#171615]! text-white border border-solid border-[rgba(255,236,185,0.20)]"
|
|
|
+ >
|
|
|
+ <div class="flex items-center gap-2 py-4">
|
|
|
+ <div class="w-1.5 h-1.5 bg-[#ffecb9] rounded-full"></div>
|
|
|
+ <SectionHeading :title="key.toString()" dark></SectionHeading>
|
|
|
+ </div>
|
|
|
+ <div class="grid grid-cols-3 gap-y-6">
|
|
|
+ <template v-for="(item, i) in it" :key="i">
|
|
|
+ <div class="w-full px-4 box-border">
|
|
|
+ <wd-img width="100%" mode="widthFix" :src="item.badgeNotObtainedImage"></wd-img>
|
|
|
+ <div
|
|
|
+ class="text-center text-white text-xs font-normal font-['PingFang_SC'] leading-relaxed"
|
|
|
+ >
|
|
|
+ <!-- 清华大学 -->
|
|
|
+ {{ item.badgeName }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ <!-- {{ it }} -->
|
|
|
+ </Card>
|
|
|
+ </template>
|
|
|
+ </template>
|
|
|
+ <template v-if="active === 'certificate'">
|
|
|
+ <div>
|
|
|
+ <template v-for="(it, i) in certificates" :key="i">
|
|
|
+ <div class="grid grid-cols-2">
|
|
|
+ <wd-img width="100%" :src="it.certificateImage" mode="widthFix"></wd-img>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </div>
|
|
|
+</template>
|