wui-components-v2 1.1.70 → 1.1.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/feishu.ts +20 -20
- package/api/index.ts +4 -4
- package/api/login.ts +51 -51
- package/api/tree.ts +28 -28
- package/components/action-popup/action-popup.vue +116 -116
- package/components/add-address-list/add-address-list.vue +187 -187
- package/components/add-address-page/config.ts +297 -297
- package/components/audio-play/audio-play.vue +220 -220
- package/components/batch-upload-file/batch-upload-file.vue +75 -75
- package/components/card-botom-buttons/card-botom-buttons.vue +279 -279
- package/components/demo-card/demo-card.vue +44 -44
- package/components/fold-card/fold-card.vue +2 -2
- package/components/form-control/form-control.vue +9 -1
- package/components/global-loading/GlobalLoading.md +366 -366
- package/components/global-loading/global-loading.vue +55 -55
- package/components/global-message/GlobalMessage.md +570 -570
- package/components/global-toast/GlobalToast.md +261 -261
- package/components/global-toast/global-toast.vue +56 -56
- package/components/label-value/open-value-more.vue +56 -56
- package/components/loading/loading.vue +5 -5
- package/components/login-form-box/login-form-box.vue +65 -65
- package/components/phone-login-form/phone-login-form.vue +204 -204
- package/components/privacy-popup/privacy-popup.vue +191 -191
- package/components/scan-input/scan-input.vue +406 -406
- package/components/select-col-picker/select-col-picker.vue +168 -168
- package/components/tab-search/tab-search.vue +73 -73
- package/components/tree-select/components/TreeNode.vue +200 -200
- package/components/tree-select/components/index.vue +471 -471
- package/components/tree-select/components/tree-select.vue +56 -56
- package/components/tree-select/index.vue +93 -93
- package/components/user-choose/user-choose.vue +169 -151
- package/components/video-play/video-play.vue +56 -56
- package/components/wui-auto-update-component/wui-auto-update-component.vue +132 -132
- package/components/wui-default/wui-default.vue +49 -49
- package/components/wui-details-page/wui-details-page.vue +147 -147
- package/components/wui-edit-page/wui-edit-page-copy.vue +757 -757
- package/components/wui-edit-page/wui-edit-page.vue +793 -793
- package/components/wui-login/wui-login.vue +43 -43
- package/components/wui-login1/wui-login.vue +41 -41
- package/components/wui-menus/wui-menus-top.vue +137 -137
- package/components/wui-menus/wui-menus-top1.vue +8 -8
- package/components/wui-menus1/components/banner-carousel.vue +320 -320
- package/components/wui-menus1/components/quick-panel.vue +55 -55
- package/components/wui-menus1/components/search-bar.vue +49 -49
- package/components/wui-menus1/components/section-menus.vue +208 -208
- package/components/wui-menus1/wui-menus-top.vue +718 -718
- package/components/wui-menus1/wui-menus-top1.vue +398 -398
- package/components/wui-notify-info/notify-handle.vue +53 -53
- package/components/wui-scan-binding-sensor/wui-scan-binding-sensor.vue +75 -75
- package/components/wui-search-history-babbar/components/SearchBar.vue +70 -70
- package/components/wui-select-list/wui-select-list.vue +1 -9
- package/components/wui-select-popup/wui-select-popup.vue +1 -0
- package/components/wui-tree-page/wui-tree-page.vue +297 -297
- package/components/wui-update-component/wui-update-component.vue +221 -221
- package/composables/types/theme.ts +65 -65
- package/composables/types/user.ts +5 -5
- package/composables/useColorGenerator.ts +221 -221
- package/composables/useCompanyFieldFilter.ts +26 -24
- package/composables/useEnumes.ts +43 -43
- package/composables/useEventBus.ts +37 -37
- package/composables/useGlobalLoading.ts +47 -47
- package/composables/useGlobalMessage.ts +53 -53
- package/composables/useGlobalToast.ts +63 -63
- package/composables/useLocale.ts +54 -54
- package/composables/useManualTheme.ts +179 -179
- package/composables/useSectionMenus.ts +120 -120
- package/composables/useTabbar.ts +50 -50
- package/composables/useTheme.ts +74 -74
- package/composables/useUser.ts +24 -24
- package/index.d.ts +90 -90
- package/package.json +24 -24
- package/store/manualThemeStore.ts +143 -143
- package/store/persist.ts +41 -41
- package/store/themeStore.ts +74 -74
- package/store/userStore.ts +22 -22
- package/styles/dark-mode.scss +498 -498
- package/type.ts +154 -154
- package/utils/control-tree.ts +353 -353
- package/utils/eventBus.ts +36 -36
- package/utils/idata-scan.ts +99 -99
- package/utils/index.ts +979 -979
- package/utils/rsaEncrypt.ts +10 -10
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
<!-- 纯色风格登录页面 -->
|
|
2
|
-
<script setup lang="ts">
|
|
3
|
-
import { defineOptions, defineProps } from 'vue'
|
|
4
|
-
import loginFormBox from '../login-form-box/login-form-box.vue'
|
|
5
|
-
import { useManualTheme } from '../../composables/useManualTheme'
|
|
6
|
-
import type { TabbarItem } from '../../composables/useTabbar'
|
|
7
|
-
|
|
8
|
-
defineOptions({
|
|
9
|
-
name: 'WuiLogin',
|
|
10
|
-
})
|
|
11
|
-
|
|
12
|
-
const props = defineProps<Props>()
|
|
13
|
-
// 定义 Props 类型
|
|
14
|
-
interface Props {
|
|
15
|
-
tabbarItems: TabbarItem[]
|
|
16
|
-
loginlog: any
|
|
17
|
-
showRagister?: boolean
|
|
18
|
-
gurl?: string// 获取验证码接口
|
|
19
|
-
url?: string// 手机号登录接口
|
|
20
|
-
}
|
|
21
|
-
const {
|
|
22
|
-
currentThemeColor,
|
|
23
|
-
} = useManualTheme()
|
|
24
|
-
</script>
|
|
25
|
-
|
|
26
|
-
<template>
|
|
27
|
-
<view class="h-[calc(100vh-44px)] flex flex-col" :style="{ backgroundColor: currentThemeColor.primary }">
|
|
28
|
-
<!-- <view class="flex flex-col items-center justify-center pa-3 pb-5">
|
|
29
|
-
<wd-img :width="100" :height="100" round :src="loginlog" />
|
|
30
|
-
<view class="text-center">
|
|
31
|
-
<text class="text-2xl dark:text-white">
|
|
32
|
-
欢迎登录
|
|
33
|
-
</text>
|
|
34
|
-
</view>
|
|
35
|
-
</view> -->
|
|
36
|
-
<view class="flex items-center justify-center">
|
|
37
|
-
<image class="h-250px w-250px" src="./footerImg.png" />
|
|
38
|
-
</view>
|
|
39
|
-
<view class="flex-1 border-rd-t-2 p-y-2 bg-white dark:bg-[var(--wot-dark-background2)]">
|
|
40
|
-
<loginFormBox :tabbar-items="props.tabbarItems" :show-ragister="showRagister" :gurl="props.gurl" :url="props.url" />
|
|
41
|
-
</view>
|
|
42
|
-
</view>
|
|
43
|
-
</template>
|
|
1
|
+
<!-- 纯色风格登录页面 -->
|
|
2
|
+
<script setup lang="ts">
|
|
3
|
+
import { defineOptions, defineProps } from 'vue'
|
|
4
|
+
import loginFormBox from '../login-form-box/login-form-box.vue'
|
|
5
|
+
import { useManualTheme } from '../../composables/useManualTheme'
|
|
6
|
+
import type { TabbarItem } from '../../composables/useTabbar'
|
|
7
|
+
|
|
8
|
+
defineOptions({
|
|
9
|
+
name: 'WuiLogin',
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
const props = defineProps<Props>()
|
|
13
|
+
// 定义 Props 类型
|
|
14
|
+
interface Props {
|
|
15
|
+
tabbarItems: TabbarItem[]
|
|
16
|
+
loginlog: any
|
|
17
|
+
showRagister?: boolean
|
|
18
|
+
gurl?: string// 获取验证码接口
|
|
19
|
+
url?: string// 手机号登录接口
|
|
20
|
+
}
|
|
21
|
+
const {
|
|
22
|
+
currentThemeColor,
|
|
23
|
+
} = useManualTheme()
|
|
24
|
+
</script>
|
|
25
|
+
|
|
26
|
+
<template>
|
|
27
|
+
<view class="h-[calc(100vh-44px)] flex flex-col" :style="{ backgroundColor: currentThemeColor.primary }">
|
|
28
|
+
<!-- <view class="flex flex-col items-center justify-center pa-3 pb-5">
|
|
29
|
+
<wd-img :width="100" :height="100" round :src="loginlog" />
|
|
30
|
+
<view class="text-center">
|
|
31
|
+
<text class="text-2xl dark:text-white">
|
|
32
|
+
欢迎登录
|
|
33
|
+
</text>
|
|
34
|
+
</view>
|
|
35
|
+
</view> -->
|
|
36
|
+
<view class="flex items-center justify-center">
|
|
37
|
+
<image class="h-250px w-250px" src="./footerImg.png" />
|
|
38
|
+
</view>
|
|
39
|
+
<view class="flex-1 border-rd-t-2 p-y-2 bg-white dark:bg-[var(--wot-dark-background2)]">
|
|
40
|
+
<loginFormBox :tabbar-items="props.tabbarItems" :show-ragister="showRagister" :gurl="props.gurl" :url="props.url" />
|
|
41
|
+
</view>
|
|
42
|
+
</view>
|
|
43
|
+
</template>
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
<!-- 自定义背景风格登录页面 -->
|
|
2
|
-
<script setup lang="ts">
|
|
3
|
-
import { defineOptions, defineProps } from 'vue'
|
|
4
|
-
import loginFormBox from '../login-form-box/login-form-box.vue'
|
|
5
|
-
import { useManualTheme } from '../../composables/useManualTheme'
|
|
6
|
-
import type { TabbarItem } from '../../composables/useTabbar'
|
|
7
|
-
|
|
8
|
-
defineOptions({
|
|
9
|
-
name: 'Wuilogin1',
|
|
10
|
-
})
|
|
11
|
-
const props = defineProps<{
|
|
12
|
-
loginlog: string
|
|
13
|
-
loginBackgroundimg: string
|
|
14
|
-
tabbarItems: TabbarItem[]
|
|
15
|
-
showRagister?: boolean
|
|
16
|
-
gurl?: string// 获取验证码接口
|
|
17
|
-
url?: string// 手机号登录接口
|
|
18
|
-
}>()
|
|
19
|
-
const {
|
|
20
|
-
currentThemeColor,
|
|
21
|
-
} = useManualTheme()
|
|
22
|
-
console.log(currentThemeColor)
|
|
23
|
-
</script>
|
|
24
|
-
|
|
25
|
-
<template>
|
|
26
|
-
<view class="h-[calc(100vh-44px)] flex flex-col">
|
|
27
|
-
<view class="position-relative h-390px w-full">
|
|
28
|
-
<image class="h-full w-full" :src="props.loginBackgroundimg" />
|
|
29
|
-
<view class="position-absolute bottom-40rpx box-border w-full flex justify-center border-rd-t-2 bg-white bg-opacity-20 p-3 backdrop-blur-md dark:bg-[var(--wot-dark-background2)]">
|
|
30
|
-
<image class="mr-1.5 h-66px w-66px border-rd-100" :src="props.loginlog" />
|
|
31
|
-
<text class="mt-3 font-size-22px c-#171819 font-bold dark:text-white">
|
|
32
|
-
你好,欢迎登录阀门检测
|
|
33
|
-
</text>
|
|
34
|
-
</view>
|
|
35
|
-
</view>
|
|
36
|
-
|
|
37
|
-
<view class="flex-1 border-rd-t-2 p-y-2 bg-white dark:bg-[var(--wot-dark-background2)]">
|
|
38
|
-
<loginFormBox :tabbar-items="props.tabbarItems" :show-ragister="showRagister" :gurl="props.gurl" :url="props.url" />
|
|
39
|
-
</view>
|
|
40
|
-
</view>
|
|
41
|
-
</template>
|
|
1
|
+
<!-- 自定义背景风格登录页面 -->
|
|
2
|
+
<script setup lang="ts">
|
|
3
|
+
import { defineOptions, defineProps } from 'vue'
|
|
4
|
+
import loginFormBox from '../login-form-box/login-form-box.vue'
|
|
5
|
+
import { useManualTheme } from '../../composables/useManualTheme'
|
|
6
|
+
import type { TabbarItem } from '../../composables/useTabbar'
|
|
7
|
+
|
|
8
|
+
defineOptions({
|
|
9
|
+
name: 'Wuilogin1',
|
|
10
|
+
})
|
|
11
|
+
const props = defineProps<{
|
|
12
|
+
loginlog: string
|
|
13
|
+
loginBackgroundimg: string
|
|
14
|
+
tabbarItems: TabbarItem[]
|
|
15
|
+
showRagister?: boolean
|
|
16
|
+
gurl?: string// 获取验证码接口
|
|
17
|
+
url?: string// 手机号登录接口
|
|
18
|
+
}>()
|
|
19
|
+
const {
|
|
20
|
+
currentThemeColor,
|
|
21
|
+
} = useManualTheme()
|
|
22
|
+
console.log(currentThemeColor)
|
|
23
|
+
</script>
|
|
24
|
+
|
|
25
|
+
<template>
|
|
26
|
+
<view class="h-[calc(100vh-44px)] flex flex-col">
|
|
27
|
+
<view class="position-relative h-390px w-full">
|
|
28
|
+
<image class="h-full w-full" :src="props.loginBackgroundimg" />
|
|
29
|
+
<view class="position-absolute bottom-40rpx box-border w-full flex justify-center border-rd-t-2 bg-white bg-opacity-20 p-3 backdrop-blur-md dark:bg-[var(--wot-dark-background2)]">
|
|
30
|
+
<image class="mr-1.5 h-66px w-66px border-rd-100" :src="props.loginlog" />
|
|
31
|
+
<text class="mt-3 font-size-22px c-#171819 font-bold dark:text-white">
|
|
32
|
+
你好,欢迎登录阀门检测
|
|
33
|
+
</text>
|
|
34
|
+
</view>
|
|
35
|
+
</view>
|
|
36
|
+
|
|
37
|
+
<view class="flex-1 border-rd-t-2 p-y-2 bg-white dark:bg-[var(--wot-dark-background2)]">
|
|
38
|
+
<loginFormBox :tabbar-items="props.tabbarItems" :show-ragister="showRagister" :gurl="props.gurl" :url="props.url" />
|
|
39
|
+
</view>
|
|
40
|
+
</view>
|
|
41
|
+
</template>
|
|
@@ -1,137 +1,137 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { defineOptions } from 'vue'
|
|
3
|
-
import { useManualTheme } from '../../composables/useManualTheme'
|
|
4
|
-
import { useUser } from '../../composables/useUser'
|
|
5
|
-
import { formatChineseDate } from '../../utils'
|
|
6
|
-
|
|
7
|
-
defineOptions({
|
|
8
|
-
name: 'WuiMenusTop',
|
|
9
|
-
})
|
|
10
|
-
|
|
11
|
-
const user = useUser().getUserInfo()
|
|
12
|
-
|
|
13
|
-
const {
|
|
14
|
-
currentThemeColor,
|
|
15
|
-
} = useManualTheme()
|
|
16
|
-
</script>
|
|
17
|
-
|
|
18
|
-
<template>
|
|
19
|
-
<view class="position-relative">
|
|
20
|
-
<view
|
|
21
|
-
class="rounded-b-1rem"
|
|
22
|
-
style="box-sizing: border-box; padding: 20px; position: absolute;z-index: -1; height: 350rpx;width: 100%; background: linear-gradient( 180deg, #2094FF 0%, rgba(32,148,255,0.3) 100%);"
|
|
23
|
-
:style="{ background: currentThemeColor.primary }"
|
|
24
|
-
>
|
|
25
|
-
<view class="flex items-center gap-2 text-lg color-white">
|
|
26
|
-
<image
|
|
27
|
-
class="h-10 w-10 border-rd-100%" style="border:2px solid #fff;" src="../../static/hader.png"
|
|
28
|
-
mode="scaleToFill"
|
|
29
|
-
/>
|
|
30
|
-
<view>
|
|
31
|
-
<view>你好,{{ user.name }}</view>
|
|
32
|
-
</view>
|
|
33
|
-
</view>
|
|
34
|
-
<view style="padding: 20rpx 0;margin-top: 10px;" class="text-xs color-white">
|
|
35
|
-
{{ formatChineseDate() }}
|
|
36
|
-
</view>
|
|
37
|
-
</view>
|
|
38
|
-
<!-- <image
|
|
39
|
-
class="h-30 w-50"
|
|
40
|
-
style="position: absolute;z-index: -1;top: 0; right: -21px;"
|
|
41
|
-
src="../../static/home.png"
|
|
42
|
-
mode="scaleToFill"
|
|
43
|
-
/> -->
|
|
44
|
-
<div class="dashboard-header__illustration">
|
|
45
|
-
<div class="dec-circle c-1" />
|
|
46
|
-
<div class="dec-circle c-2" />
|
|
47
|
-
<div class="dec-cube" />
|
|
48
|
-
</div>
|
|
49
|
-
|
|
50
|
-
<view class="h-3 p-12" />
|
|
51
|
-
</view>
|
|
52
|
-
</template>
|
|
53
|
-
|
|
54
|
-
<style lang="scss" scoped>
|
|
55
|
-
.dashboard-header__illustration {
|
|
56
|
-
position: absolute;
|
|
57
|
-
right: 15px;
|
|
58
|
-
top: 15px;
|
|
59
|
-
width: 100px;
|
|
60
|
-
height: 100px;
|
|
61
|
-
opacity: 0.8;
|
|
62
|
-
pointer-events: none;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
.dec-circle {
|
|
66
|
-
position: absolute;
|
|
67
|
-
border-radius: 50%;
|
|
68
|
-
background: rgba(255, 255, 255, 0.1);
|
|
69
|
-
backdrop-filter: blur(4px);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
.c-1 {
|
|
73
|
-
width: 80px;
|
|
74
|
-
height: 80px;
|
|
75
|
-
right: 0;
|
|
76
|
-
top: 0;
|
|
77
|
-
animation: float 6s ease-in-out infinite;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
.c-2 {
|
|
81
|
-
width: 40px;
|
|
82
|
-
height: 40px;
|
|
83
|
-
left: 0;
|
|
84
|
-
bottom: 0;
|
|
85
|
-
background: rgba(255, 255, 255, 0.2);
|
|
86
|
-
animation: float 4s ease-in-out infinite reverse;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.dec-cube {
|
|
90
|
-
position: absolute;
|
|
91
|
-
top: 25px;
|
|
92
|
-
left: 25px;
|
|
93
|
-
width: 40px;
|
|
94
|
-
height: 40px;
|
|
95
|
-
background: linear-gradient(135deg, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.1));
|
|
96
|
-
border-radius: 8px;
|
|
97
|
-
transform: rotate(45deg);
|
|
98
|
-
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
|
99
|
-
animation: floatCube 8s ease-in-out infinite;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@keyframes fadeIn {
|
|
103
|
-
from {
|
|
104
|
-
opacity: 0;
|
|
105
|
-
transform: translateY(10px);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
to {
|
|
109
|
-
opacity: 1;
|
|
110
|
-
transform: translateY(0);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
@keyframes float {
|
|
115
|
-
|
|
116
|
-
0%,
|
|
117
|
-
100% {
|
|
118
|
-
transform: translateY(0);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
50% {
|
|
122
|
-
transform: translateY(-10px);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
@keyframes floatCube {
|
|
127
|
-
|
|
128
|
-
0%,
|
|
129
|
-
100% {
|
|
130
|
-
transform: rotate(45deg) translateY(0);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
50% {
|
|
134
|
-
transform: rotate(45deg) translateY(-8px);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
</style>
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { defineOptions } from 'vue'
|
|
3
|
+
import { useManualTheme } from '../../composables/useManualTheme'
|
|
4
|
+
import { useUser } from '../../composables/useUser'
|
|
5
|
+
import { formatChineseDate } from '../../utils'
|
|
6
|
+
|
|
7
|
+
defineOptions({
|
|
8
|
+
name: 'WuiMenusTop',
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
const user = useUser().getUserInfo()
|
|
12
|
+
|
|
13
|
+
const {
|
|
14
|
+
currentThemeColor,
|
|
15
|
+
} = useManualTheme()
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
<template>
|
|
19
|
+
<view class="position-relative">
|
|
20
|
+
<view
|
|
21
|
+
class="rounded-b-1rem"
|
|
22
|
+
style="box-sizing: border-box; padding: 20px; position: absolute;z-index: -1; height: 350rpx;width: 100%; background: linear-gradient( 180deg, #2094FF 0%, rgba(32,148,255,0.3) 100%);"
|
|
23
|
+
:style="{ background: currentThemeColor.primary }"
|
|
24
|
+
>
|
|
25
|
+
<view class="flex items-center gap-2 text-lg color-white">
|
|
26
|
+
<image
|
|
27
|
+
class="h-10 w-10 border-rd-100%" style="border:2px solid #fff;" src="../../static/hader.png"
|
|
28
|
+
mode="scaleToFill"
|
|
29
|
+
/>
|
|
30
|
+
<view>
|
|
31
|
+
<view>你好,{{ user.name }}</view>
|
|
32
|
+
</view>
|
|
33
|
+
</view>
|
|
34
|
+
<view style="padding: 20rpx 0;margin-top: 10px;" class="text-xs color-white">
|
|
35
|
+
{{ formatChineseDate() }}
|
|
36
|
+
</view>
|
|
37
|
+
</view>
|
|
38
|
+
<!-- <image
|
|
39
|
+
class="h-30 w-50"
|
|
40
|
+
style="position: absolute;z-index: -1;top: 0; right: -21px;"
|
|
41
|
+
src="../../static/home.png"
|
|
42
|
+
mode="scaleToFill"
|
|
43
|
+
/> -->
|
|
44
|
+
<div class="dashboard-header__illustration">
|
|
45
|
+
<div class="dec-circle c-1" />
|
|
46
|
+
<div class="dec-circle c-2" />
|
|
47
|
+
<div class="dec-cube" />
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<view class="h-3 p-12" />
|
|
51
|
+
</view>
|
|
52
|
+
</template>
|
|
53
|
+
|
|
54
|
+
<style lang="scss" scoped>
|
|
55
|
+
.dashboard-header__illustration {
|
|
56
|
+
position: absolute;
|
|
57
|
+
right: 15px;
|
|
58
|
+
top: 15px;
|
|
59
|
+
width: 100px;
|
|
60
|
+
height: 100px;
|
|
61
|
+
opacity: 0.8;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.dec-circle {
|
|
66
|
+
position: absolute;
|
|
67
|
+
border-radius: 50%;
|
|
68
|
+
background: rgba(255, 255, 255, 0.1);
|
|
69
|
+
backdrop-filter: blur(4px);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.c-1 {
|
|
73
|
+
width: 80px;
|
|
74
|
+
height: 80px;
|
|
75
|
+
right: 0;
|
|
76
|
+
top: 0;
|
|
77
|
+
animation: float 6s ease-in-out infinite;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.c-2 {
|
|
81
|
+
width: 40px;
|
|
82
|
+
height: 40px;
|
|
83
|
+
left: 0;
|
|
84
|
+
bottom: 0;
|
|
85
|
+
background: rgba(255, 255, 255, 0.2);
|
|
86
|
+
animation: float 4s ease-in-out infinite reverse;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.dec-cube {
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: 25px;
|
|
92
|
+
left: 25px;
|
|
93
|
+
width: 40px;
|
|
94
|
+
height: 40px;
|
|
95
|
+
background: linear-gradient(135deg, rgba(255, 255, 255, 0.4), rgba(255, 255, 255, 0.1));
|
|
96
|
+
border-radius: 8px;
|
|
97
|
+
transform: rotate(45deg);
|
|
98
|
+
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
|
|
99
|
+
animation: floatCube 8s ease-in-out infinite;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@keyframes fadeIn {
|
|
103
|
+
from {
|
|
104
|
+
opacity: 0;
|
|
105
|
+
transform: translateY(10px);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
to {
|
|
109
|
+
opacity: 1;
|
|
110
|
+
transform: translateY(0);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
@keyframes float {
|
|
115
|
+
|
|
116
|
+
0%,
|
|
117
|
+
100% {
|
|
118
|
+
transform: translateY(0);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
50% {
|
|
122
|
+
transform: translateY(-10px);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
@keyframes floatCube {
|
|
127
|
+
|
|
128
|
+
0%,
|
|
129
|
+
100% {
|
|
130
|
+
transform: rotate(45deg) translateY(0);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
50% {
|
|
134
|
+
transform: rotate(45deg) translateY(-8px);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
</style>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<template>
|
|
2
|
-
<view>
|
|
3
|
-
<image
|
|
4
|
-
src="../../imgs/homeLog.png"
|
|
5
|
-
class="w-830rpx"
|
|
6
|
-
/>
|
|
7
|
-
</view>
|
|
8
|
-
</template>
|
|
1
|
+
<template>
|
|
2
|
+
<view>
|
|
3
|
+
<image
|
|
4
|
+
src="../../imgs/homeLog.png"
|
|
5
|
+
class="w-830rpx"
|
|
6
|
+
/>
|
|
7
|
+
</view>
|
|
8
|
+
</template>
|