|
@@ -1,11 +1,15 @@
|
|
|
<script setup lang="ts">
|
|
|
-import { close } from '../../../core/libs/svgs'
|
|
|
-import { DialogShowOptions, HonorDialogSymbol } from '../../../composables/honor-dialog'
|
|
|
+import { close } from '../../../../core/libs/svgs'
|
|
|
+import { HonorDialogOptions, HonorDialogSymbol } from '.'
|
|
|
import earnBadgeTitle from '@designer-hub/assets/src/libs/assets/earnBadgeTitle'
|
|
|
import radiation from '@designer-hub/assets/src/libs/assets/radiation'
|
|
|
-import { NetImages } from '../../../core/libs/net-images'
|
|
|
+import { NetImages } from '@/core/libs/net-images'
|
|
|
import { ConfigProviderThemeVars } from 'wot-design-uni'
|
|
|
+import { useRouter } from '@/core/utils/router'
|
|
|
|
|
|
+const dialogOption = inject(HonorDialogSymbol, ref<HonorDialogOptions>({}))
|
|
|
+const { push } = useRouter()
|
|
|
+const lazyRender = ref<boolean>(true)
|
|
|
const modelValue = defineModel({ default: false, type: Boolean })
|
|
|
const themeVars: ConfigProviderThemeVars = {
|
|
|
overlayBg: 'rgba(0,0,0,0.85)',
|
|
@@ -16,26 +20,54 @@ const path = ref('')
|
|
|
const src = ref(
|
|
|
'https://image.zhuchaohui.com/zhucaohui/e104215c64d39e4a0f8676c48b8e7221c891eade1c8d7f02b2a7f0be862e3f76.png',
|
|
|
)
|
|
|
-const show = (options: DialogShowOptions) => {
|
|
|
- title.value = options.title
|
|
|
- content.value = options.content
|
|
|
- path.value = options.path
|
|
|
- src.value = options.image
|
|
|
- modelValue.value = true
|
|
|
+const reset = (option) => {
|
|
|
+ if (option) {
|
|
|
+ modelValue.value = option.show
|
|
|
+ lazyRender.value = option.lazyRender
|
|
|
+ title.value = option.title || '东方研习营'
|
|
|
+ content.value = option.content || '获得东方研习营游学徽章'
|
|
|
+ path.value = option.path || ''
|
|
|
+ src.value = option.image || src.value
|
|
|
+ }
|
|
|
}
|
|
|
-provide(HonorDialogSymbol, { show })
|
|
|
+const jumpTo = () => {
|
|
|
+ if (dialogOption.value?.type && dialogOption.value?.type === 'certificate') {
|
|
|
+ push('/pages/mine/honors/index?active=certificate')
|
|
|
+ }
|
|
|
+ if (dialogOption.value?.type && dialogOption.value?.type === 'badge') {
|
|
|
+ push('/pages/mine/honors/index?active=badge')
|
|
|
+ }
|
|
|
+}
|
|
|
+const handleLoad = () => {
|
|
|
+ console.log(1111)
|
|
|
+ if (dialogOption.value?.onLoad && typeof dialogOption.value?.onLoad === 'function') {
|
|
|
+ dialogOption.value.onLoad()
|
|
|
+ }
|
|
|
+}
|
|
|
+watch(
|
|
|
+ () => dialogOption.value,
|
|
|
+ (newVal) => {
|
|
|
+ reset(newVal)
|
|
|
+ },
|
|
|
+)
|
|
|
+// provide(HonorDialogSymbol, { show })
|
|
|
</script>
|
|
|
<template>
|
|
|
<wd-config-provider :themeVars="themeVars">
|
|
|
- <wd-popup v-model="modelValue" custom-class="bg-transparent! bg-[#f6f6f6]!">
|
|
|
+ <wd-popup
|
|
|
+ v-model="modelValue"
|
|
|
+ :lazy-render="lazyRender"
|
|
|
+ custom-class="bg-transparent! bg-[#f6f6f6]!"
|
|
|
+ >
|
|
|
<div class="flex flex-col items-center relative">
|
|
|
<wd-img width="60vw" mode="widthFix" :src="earnBadgeTitle"></wd-img>
|
|
|
<div class="w-[100vw] h-[68vw] pt-2 flex">
|
|
|
<div class="w-100vw h-100vw absolute left-0 right-0 top--8">
|
|
|
<wd-img
|
|
|
- custom-class="absolute! vertical-bottom"
|
|
|
+ custom-class="absolute! top-50% left-50% translate-[-50%,-50%] vertical-bottom"
|
|
|
width="68%"
|
|
|
height="68%"
|
|
|
+ @load="handleLoad"
|
|
|
:src="radiation"
|
|
|
></wd-img>
|
|
|
<wd-img
|
|
@@ -71,6 +103,7 @@ provide(HonorDialogSymbol, { show })
|
|
|
>
|
|
|
<div
|
|
|
class="text-center text-[#c7bdab] text-base font-normal font-['PingFang_SC'] leading-normal"
|
|
|
+ @click.stop="jumpTo"
|
|
|
>
|
|
|
查看奖励
|
|
|
</div>
|