hookehuyr

调整我的页样式与昵称交互

1 <template> 1 <template>
2 <view class="mine-page"> 2 <view class="mine-page">
3 + <!-- 顶部装饰背景 -->
4 + <view class="header-bg">
5 + <view class="header-pattern" />
6 + </view>
7 +
3 <view class="page-content"> 8 <view class="page-content">
4 - <view class="hero-card"> 9 + <view class="hero-banner">
5 - <text class="hero-title">我的</text> 10 + <view class="hero-banner__ornament">
6 - <text class="hero-desc"> 11 + <view class="hero-banner__orb hero-banner__orb--lg" />
7 - 这里预留给个人资料、授权信息和常用入口。当前阶段先提供基础占位和授权状态展示。 12 + <view class="hero-banner__orb hero-banner__orb--sm" />
13 + </view>
14 + <view class="profile-panel" @tap="handleProfileTap">
15 + <view class="profile-panel__avatar">
16 + <view class="avatar-ring">
17 + <button
18 + class="avatar-btn"
19 + open-type="chooseAvatar"
20 + @chooseavatar="onChooseAvatar"
21 + >
22 + <image
23 + class="avatar-img"
24 + :src="avatarUrl || defaultAvatar"
25 + mode="aspectFill"
26 + />
27 + </button>
28 + </view>
29 + </view>
30 + <view class="profile-panel__body">
31 + <view class="profile-panel__head" @tap.stop="openNicknameDialog">
32 + <view class="profile-panel__name-block">
33 + <text class="nickname-text">{{ nickname || defaultNickname }}</text>
34 + <text class="profile-panel__subtext">点击修改昵称</text>
35 + </view>
36 + <text class="profile-panel__action">›</text>
37 + </view>
38 + <text class="profile-panel__tip">
39 + 当前还没接微信昵称接口,先支持手动输入并直接显示在这里。
8 </text> 40 </text>
9 </view> 41 </view>
42 + </view>
43 + </view>
10 44
11 - <view class="status-card"> 45 + <!-- 功能菜单 -->
12 - <text class="section-title">授权状态</text> 46 + <view class="menu-section">
13 - <view class="status-row"> 47 + <view class="section-title">
14 - <text class="section-desc">当前小程序登录态</text> 48 + <text class="section-title-text">常用服务</text>
15 - <text class="status-tag" :class="{ authed: isAuthed }"> 49 + </view>
16 - {{ isAuthed ? '已授权' : '未授权' }} 50 + <view class="menu-grid">
17 - </text> 51 + <view
52 + v-for="item in menuItems"
53 + :key="item.key"
54 + class="menu-item"
55 + @tap="handleMenuTap(item)"
56 + >
57 + <view class="menu-item__main">
58 + <view class="menu-icon-wrap" :class="`menu-icon--${item.key}`">
59 + <component
60 + :is="item.icon"
61 + size="20"
62 + color="#a67939"
63 + />
64 + </view>
65 + <view class="menu-item__content">
66 + <text class="menu-item-title">{{ item.title }}</text>
67 + <text class="menu-item-desc">{{ item.desc }}</text>
68 + </view>
69 + </view>
70 + <text class="menu-item-arrow">›</text>
71 + </view>
72 + </view>
73 + </view>
74 +
75 + <!-- 更多菜单 -->
76 + <view class="menu-section">
77 + <view class="section-title">
78 + <text class="section-title-text">更多</text>
79 + </view>
80 + <view class="menu-list">
81 + <view
82 + v-for="(item, idx) in bottomMenuItems"
83 + :key="item.key"
84 + class="menu-list-item"
85 + :class="{ 'menu-list-item--last': idx === bottomMenuItems.length - 1 }"
86 + @tap="handleMenuTap(item)"
87 + >
88 + <view class="menu-list-icon" :class="`menu-icon--${item.key}`">
89 + <component
90 + :is="item.icon"
91 + size="18"
92 + color="#a67939"
93 + />
94 + </view>
95 + <view class="menu-list-content">
96 + <text class="menu-list-title">{{ item.title }}</text>
97 + <text class="menu-list-desc">{{ item.desc }}</text>
98 + </view>
99 + <text class="arrow-text arrow-text--light">›</text>
100 + </view>
101 + </view>
102 + </view>
103 +
104 + <view class="page-footer-tip">
105 + <text class="page-footer-tip__text">山门清净,信息常新</text>
106 + </view>
107 + </view>
108 +
109 + <view
110 + v-if="nicknameDialogVisible"
111 + class="nickname-dialog-mask"
112 + @tap="closeNicknameDialog"
113 + >
114 + <view class="nickname-dialog" @tap.stop>
115 + <text class="nickname-dialog__title">设置昵称</text>
116 + <text class="nickname-dialog__desc">当前版本先手动输入昵称,留空时显示默认昵称。</text>
117 + <input
118 + class="nickname-dialog__input"
119 + :value="nicknameDraft"
120 + maxlength="20"
121 + placeholder="请输入昵称"
122 + focus
123 + @input="onNicknameDraftInput"
124 + />
125 + <view class="nickname-dialog__actions">
126 + <view
127 + class="nickname-dialog__btn nickname-dialog__btn--ghost"
128 + @tap="closeNicknameDialog"
129 + >
130 + 取消
131 + </view>
132 + <view
133 + class="nickname-dialog__btn"
134 + @tap="confirmNickname"
135 + >
136 + 确定
137 + </view>
18 </view> 138 </view>
19 </view> 139 </view>
20 </view> 140 </view>
...@@ -25,85 +145,527 @@ ...@@ -25,85 +145,527 @@
25 145
26 <script setup> 146 <script setup>
27 import { ref } from 'vue' 147 import { ref } from 'vue'
28 -import { useDidShow } from '@tarojs/taro' 148 +import Taro from '@tarojs/taro'
29 import AppTabbar from '@/components/AppTabbar.vue' 149 import AppTabbar from '@/components/AppTabbar.vue'
30 -import { hasAuth } from '@/utils/authRedirect' 150 +import {
151 + Footprint,
152 + Location,
153 + Notice,
154 + Order,
155 + Service,
156 + Setting,
157 + Star,
158 +} from '@nutui/icons-vue-taro'
31 159
32 -const isAuthed = ref(false) 160 +const avatarUrl = ref('')
161 +const nickname = ref('')
162 +const nicknameDraft = ref('')
163 +const nicknameDialogVisible = ref(false)
164 +const defaultNickname = '觉林寺访客'
165 +const defaultAvatar = 'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgdmlld0JveD0iMCAwIDEyMCAxMjAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iMTgiIHkxPSIxNCIgeDI9IjEwMSIgeTI9IjEwNiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIHN0b3AtY29sb3I9IiNDRkE4NUEiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM5RTcxMkQiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cmVjdCB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEyMCIgcng9IjYwIiBmaWxsPSJ1cmwoI2cpIi8+PGNpcmNsZSBjeD0iNjAiIGN5PSI0MiIgcj0iMTgiIGZpbGw9IiNGRkY3RTYiIGZpbGwtb3BhY2l0eT0iMC45NiIvPjxwYXRoIGQ9Ik0yNSA5MEMyNSA3NC41MzYgMzcuNTM2IDYyIDUzIDYySDY3QzgyLjQ2NCA2MiA5NSA3NC41MzYgOTUgOTBWOTJIMjVWOTBaIiBmaWxsPSIjRkZGN0U2IiBmaWxsLW9wYWNpdHk9IjAuOTYiLz48Y2lyY2xlIGN4PSI4OSIgY3k9IjI5IiByPSIxMCIgZmlsbD0iI0Y3REU5RCIgZmlsbC1vcGFjaXR5PSIwLjcyIi8+PC9zdmc+'
33 166
34 -useDidShow(() => { 167 +const menuItems = [
35 - isAuthed.value = hasAuth() 168 + { key: 'orders', title: '我的订单', desc: '查看法物订单', icon: Order },
36 -}) 169 + { key: 'favorites', title: '我的收藏', desc: '收藏的法物', icon: Star },
170 + { key: 'history', title: '浏览记录', desc: '最近浏览', icon: Footprint },
171 + { key: 'address', title: '收货地址', desc: '管理地址', icon: Location },
172 +]
173 +
174 +const bottomMenuItems = [
175 + { key: 'settings', title: '设置', desc: '通知与隐私', icon: Setting },
176 + { key: 'about', title: '关于觉林寺', desc: '了解寺院历史', icon: Service },
177 + { key: 'help', title: '联系客堂', desc: '在线咨询', icon: Notice },
178 +]
179 +
180 +const onChooseAvatar = (e) => {
181 + const { avatarUrl: url } = e.detail
182 + avatarUrl.value = url
183 +}
184 +
185 +const openNicknameDialog = () => {
186 + nicknameDraft.value = nickname.value
187 + nicknameDialogVisible.value = true
188 +}
189 +
190 +const closeNicknameDialog = () => {
191 + nicknameDialogVisible.value = false
192 +}
193 +
194 +const onNicknameDraftInput = (e) => {
195 + nicknameDraft.value = e.detail.value
196 +}
197 +
198 +const confirmNickname = () => {
199 + nickname.value = nicknameDraft.value.trim()
200 + closeNicknameDialog()
201 +}
202 +
203 +const handleProfileTap = () => {}
204 +
205 +const handleMenuTap = ({ title }) => {
206 + Taro.showToast({ title: `${title}功能开发中`, icon: 'none' })
207 +}
37 </script> 208 </script>
38 209
39 <style lang="less"> 210 <style lang="less">
40 .mine-page { 211 .mine-page {
41 min-height: 100vh; 212 min-height: 100vh;
42 background: 213 background:
43 - radial-gradient(circle at top right, rgba(166, 121, 57, 0.14), transparent 30%), 214 + radial-gradient(circle at top right, rgba(201, 163, 85, 0.16), transparent 26%),
44 - linear-gradient(180deg, #fffaf4 0%, #f3f5f9 100%); 215 + radial-gradient(circle at 8% 22%, rgba(255, 244, 220, 0.9), transparent 22%),
216 + linear-gradient(180deg, #fbf8f1 0%, #f4efe5 54%, #f8f5ee 100%);
217 + position: relative;
218 +
219 + // 顶部装饰背景
220 + .header-bg {
221 + position: absolute;
222 + top: 0;
223 + left: 0;
224 + right: 0;
225 + height: 304rpx;
226 + border-radius: 0 0 48rpx 48rpx;
227 + overflow: hidden;
228 + }
229 +
230 + .header-pattern {
231 + position: absolute;
232 + top: 0;
233 + left: 0;
234 + right: 0;
235 + bottom: 0;
236 + background-image:
237 + radial-gradient(circle at 20% 30%, rgba(255, 255, 255, 0.08) 0%, transparent 50%),
238 + radial-gradient(circle at 80% 60%, rgba(255, 255, 255, 0.06) 0%, transparent 40%);
239 + }
45 240
46 .page-content { 241 .page-content {
47 - padding: 32rpx 24rpx 0; 242 + position: relative;
243 + padding: 32rpx 28rpx 176rpx;
48 box-sizing: border-box; 244 box-sizing: border-box;
245 + z-index: 1;
49 } 246 }
50 247
51 - .hero-card, 248 + .hero-banner {
52 - .status-card { 249 + position: relative;
53 - padding: 32rpx; 250 + margin-top: 10rpx;
251 + padding: 28rpx;
252 + border-radius: 32rpx;
253 + background: linear-gradient(135deg, rgba(122, 88, 31, 0.18), rgba(255, 255, 255, 0.18));
254 + border: 2rpx solid rgba(255, 255, 255, 0.18);
255 + box-shadow: inset 0 2rpx 0 rgba(255, 255, 255, 0.24);
256 + backdrop-filter: blur(16rpx);
257 + overflow: hidden;
258 + box-sizing: border-box;
259 +
260 + &__ornament {
261 + position: absolute;
262 + top: 0;
263 + right: 0;
264 + bottom: 0;
265 + width: 200rpx;
266 + pointer-events: none;
267 + }
268 +
269 + &__orb {
270 + position: absolute;
271 + border-radius: 50%;
272 + background: radial-gradient(circle, rgba(255, 255, 255, 0.36) 0%, rgba(255, 255, 255, 0.04) 70%, transparent 100%);
273 +
274 + &--lg {
275 + width: 180rpx;
276 + height: 180rpx;
277 + top: -24rpx;
278 + right: -22rpx;
279 + }
280 +
281 + &--sm {
282 + width: 92rpx;
283 + height: 92rpx;
284 + right: 42rpx;
285 + bottom: 22rpx;
286 + }
287 + }
288 + }
289 +
290 + .profile-panel {
291 + position: relative;
292 + z-index: 1;
293 + display: flex;
294 + align-items: center;
295 + gap: 24rpx;
296 + padding: 30rpx 28rpx;
297 + min-height: 176rpx;
54 border-radius: 28rpx; 298 border-radius: 28rpx;
55 - background: rgba(255, 255, 255, 0.94); 299 + background: linear-gradient(135deg, rgba(255, 252, 246, 0.9), rgba(255, 250, 240, 0.72));
56 - border: 2rpx solid rgba(166, 121, 57, 0.08); 300 + border: 1rpx solid rgba(255, 255, 255, 0.45);
57 - box-shadow: 0 20rpx 60rpx rgba(15, 23, 42, 0.06); 301 + box-shadow: 0 18rpx 48rpx rgba(82, 58, 24, 0.08);
58 box-sizing: border-box; 302 box-sizing: border-box;
303 +
304 + &__avatar {
305 + flex-shrink: 0;
59 } 306 }
60 307
61 - .hero-title, 308 + &__body {
62 - .section-title { 309 + flex: 1;
63 - display: block; 310 + min-width: 0;
64 - font-size: 40rpx; 311 + display: flex;
65 - font-weight: 700; 312 + flex-direction: column;
66 - color: #111827; 313 + gap: 12rpx;
314 + }
315 +
316 + &__head {
317 + display: flex;
318 + align-items: center;
319 + justify-content: space-between;
320 + gap: 20rpx;
321 + }
322 +
323 + &__action {
324 + flex-shrink: 0;
325 + font-size: 30rpx;
326 + line-height: 1;
327 + color: rgba(142, 99, 37, 0.68);
328 + }
329 +
330 + &__name-block {
331 + min-width: 0;
332 + display: flex;
333 + flex-direction: column;
334 + gap: 6rpx;
335 + }
336 +
337 + &__subtext {
338 + font-size: 22rpx;
339 + line-height: 1.4;
340 + color: #8f816b;
341 + }
342 +
343 + &__tip {
344 + font-size: 22rpx;
345 + line-height: 1.6;
346 + color: #8f816b;
347 + }
348 + }
349 +
350 + .avatar-ring {
351 + width: 128rpx;
352 + height: 128rpx;
353 + border-radius: 50%;
354 + padding: 4rpx;
355 + background: linear-gradient(135deg, #e8d5a8, #c9a355);
67 } 356 }
68 357
69 - .hero-desc, 358 + .avatar-btn {
70 - .section-desc { 359 + padding: 0;
360 + margin: 0;
361 + width: 120rpx;
362 + height: 120rpx;
363 + border-radius: 50%;
364 + overflow: hidden;
365 + background: transparent;
366 + border: none;
367 + line-height: 1;
368 +
369 + &::after {
370 + border: none;
371 + }
372 + }
373 +
374 + .avatar-img {
375 + width: 120rpx;
376 + height: 120rpx;
377 + border-radius: 50%;
71 display: block; 378 display: block;
72 - margin-top: 16rpx;
73 - font-size: 26rpx;
74 - line-height: 1.8;
75 - color: #6b7280;
76 } 379 }
77 380
78 - .status-card { 381 + .profile-info {
79 - margin-top: 24rpx; 382 + display: none;
383 + }
384 +
385 + .nickname-text {
386 + font-size: 36rpx;
387 + font-weight: 700;
388 + color: #2f2212;
389 + line-height: 1.4;
390 + }
391 +
392 + .arrow-text {
393 + font-size: 28rpx;
394 + color: #c4a86a;
395 + line-height: 1;
396 +
397 + &--light {
398 + color: #d1c9b5;
399 + }
80 } 400 }
81 401
402 + // 菜单分区
82 .section-title { 403 .section-title {
83 - font-size: 30rpx; 404 + padding: 34rpx 8rpx 18rpx;
405 + display: flex;
406 + align-items: center;
407 + justify-content: space-between;
408 + }
409 +
410 + .section-title-text {
411 + font-size: 26rpx;
412 + font-weight: 600;
413 + color: #8c7a5e;
414 + letter-spacing: 2rpx;
415 + position: relative;
416 + padding-left: 18rpx;
417 +
418 + &::before {
419 + content: '';
420 + position: absolute;
421 + left: 0;
422 + top: 8rpx;
423 + bottom: 8rpx;
424 + width: 6rpx;
425 + border-radius: 999rpx;
426 + background: linear-gradient(180deg, #d3af6b, #a67939);
427 + }
428 + }
429 +
430 + // 网格菜单(常用服务)
431 + .menu-grid {
432 + display: grid;
433 + grid-template-columns: repeat(2, minmax(0, 1fr));
434 + gap: 18rpx;
435 + background: rgba(255, 255, 255, 0.98);
436 + border-radius: 24rpx;
437 + border: 2rpx solid rgba(166, 121, 57, 0.08);
438 + box-shadow: 0 18rpx 48rpx rgba(56, 40, 19, 0.06);
439 + padding: 22rpx;
440 + box-sizing: border-box;
84 } 441 }
85 442
86 - .status-row { 443 + .menu-item {
87 - margin-top: 20rpx;
88 display: flex; 444 display: flex;
89 align-items: center; 445 align-items: center;
90 justify-content: space-between; 446 justify-content: space-between;
91 - gap: 24rpx; 447 + gap: 16rpx;
448 + padding: 22rpx 20rpx;
449 + min-height: 0;
450 + border-radius: 20rpx;
451 + background: linear-gradient(180deg, #fffdfa 0%, #fcf7ee 100%);
452 + border: 1rpx solid rgba(166, 121, 57, 0.08);
453 + box-sizing: border-box;
92 } 454 }
93 455
94 - .status-tag { 456 + .menu-item__main {
457 + min-width: 0;
458 + flex: 1;
459 + display: flex;
460 + align-items: center;
461 + gap: 16rpx;
462 + }
463 +
464 + .menu-item__content {
465 + min-width: 0;
466 + display: flex;
467 + flex-direction: column;
468 + gap: 6rpx;
469 + }
470 +
471 + .menu-item-arrow {
95 flex-shrink: 0; 472 flex-shrink: 0;
96 - padding: 12rpx 22rpx; 473 + font-size: 26rpx;
97 - border-radius: 999rpx; 474 + color: #c8b38d;
475 + line-height: 1;
476 + }
477 +
478 + .menu-icon-wrap {
479 + width: 72rpx;
480 + height: 72rpx;
481 + border-radius: 20rpx;
482 + display: flex;
483 + align-items: center;
484 + justify-content: center;
485 + box-shadow: inset 0 2rpx 0 rgba(255, 255, 255, 0.45);
486 +
487 + &.menu-icon--orders {
488 + background: linear-gradient(135deg, #fef3e2, #fde8c8);
489 + }
490 + &.menu-icon--favorites {
491 + background: linear-gradient(135deg, #fef1e8, #fde2cc);
492 + }
493 + &.menu-icon--history {
494 + background: linear-gradient(135deg, #eef6ee, #ddefde);
495 + }
496 + &.menu-icon--address {
497 + background: linear-gradient(135deg, #eef2f8, #dde5f0);
498 + }
499 + &.menu-icon--settings {
500 + background: linear-gradient(135deg, #f0f0f0, #e4e4e4);
501 + }
502 + &.menu-icon--about {
503 + background: linear-gradient(135deg, #fef3e2, #fde8c8);
504 + }
505 + &.menu-icon--help {
506 + background: linear-gradient(135deg, #eef6ee, #ddefde);
507 + }
508 + }
509 +
510 + .menu-item-title {
98 font-size: 24rpx; 511 font-size: 24rpx;
99 font-weight: 600; 512 font-weight: 600;
100 - color: #b45309; 513 + color: #342616;
101 - background: #fef3c7; 514 + line-height: 1.2;
515 + }
516 +
517 + .menu-item-desc {
518 + font-size: 20rpx;
519 + color: #978875;
520 + line-height: 1.3;
521 + }
522 +
523 + // 列表菜单(更多)
524 + .menu-list {
525 + background: rgba(255, 255, 255, 0.98);
526 + border-radius: 24rpx;
527 + border: 2rpx solid rgba(166, 121, 57, 0.08);
528 + box-shadow: 0 18rpx 48rpx rgba(56, 40, 19, 0.06);
529 + overflow: hidden;
102 } 530 }
103 531
104 - .status-tag.authed { 532 + .menu-list-item {
105 - color: #166534; 533 + display: flex;
106 - background: #dcfce7; 534 + align-items: center;
535 + padding: 28rpx 32rpx;
536 + gap: 24rpx;
537 + position: relative;
538 + background: linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(252, 248, 240, 0.98));
539 +
540 + &::after {
541 + content: '';
542 + position: absolute;
543 + bottom: 0;
544 + left: 100rpx;
545 + right: 32rpx;
546 + height: 1rpx;
547 + background: rgba(0, 0, 0, 0.05);
548 + }
549 +
550 + &--last::after {
551 + display: none;
552 + }
553 + }
554 +
555 + .menu-list-icon {
556 + width: 64rpx;
557 + height: 64rpx;
558 + border-radius: 16rpx;
559 + display: flex;
560 + align-items: center;
561 + justify-content: center;
562 + flex-shrink: 0;
563 + }
564 +
565 + .menu-list-content {
566 + flex: 1;
567 + min-width: 0;
568 + display: flex;
569 + flex-direction: column;
570 + gap: 6rpx;
571 + }
572 +
573 + .menu-list-title {
574 + font-size: 28rpx;
575 + font-weight: 500;
576 + color: #342616;
577 + line-height: 1.3;
578 + }
579 +
580 + .menu-list-desc {
581 + font-size: 22rpx;
582 + color: #978875;
583 + line-height: 1.2;
584 + }
585 +
586 + .page-footer-tip {
587 + display: flex;
588 + justify-content: center;
589 + padding: 28rpx 0 8rpx;
590 +
591 + &__text {
592 + font-size: 22rpx;
593 + letter-spacing: 4rpx;
594 + color: rgba(143, 129, 107, 0.9);
595 + }
596 + }
597 +
598 + .nickname-dialog-mask {
599 + position: fixed;
600 + inset: 0;
601 + z-index: 20;
602 + display: flex;
603 + align-items: center;
604 + justify-content: center;
605 + padding: 32rpx;
606 + background: rgba(33, 24, 12, 0.32);
607 + box-sizing: border-box;
608 + }
609 +
610 + .nickname-dialog {
611 + width: 100%;
612 + padding: 34rpx 30rpx 30rpx;
613 + border-radius: 28rpx;
614 + background: #fffdf9;
615 + box-shadow: 0 24rpx 64rpx rgba(33, 24, 12, 0.18);
616 + box-sizing: border-box;
617 +
618 + &__title {
619 + display: block;
620 + font-size: 32rpx;
621 + font-weight: 600;
622 + color: #2f2212;
623 + line-height: 1.3;
624 + }
625 +
626 + &__desc {
627 + display: block;
628 + margin-top: 12rpx;
629 + font-size: 24rpx;
630 + line-height: 1.6;
631 + color: #8f816b;
632 + }
633 +
634 + &__input {
635 + margin-top: 24rpx;
636 + height: 88rpx;
637 + padding: 0 24rpx;
638 + border-radius: 18rpx;
639 + background: #f8f2e9;
640 + border: 1rpx solid rgba(166, 121, 57, 0.14);
641 + font-size: 28rpx;
642 + color: #2f2212;
643 + box-sizing: border-box;
644 + }
645 +
646 + &__actions {
647 + display: grid;
648 + grid-template-columns: repeat(2, minmax(0, 1fr));
649 + gap: 18rpx;
650 + margin-top: 28rpx;
651 + }
652 +
653 + &__btn {
654 + display: flex;
655 + align-items: center;
656 + justify-content: center;
657 + height: 84rpx;
658 + border-radius: 18rpx;
659 + font-size: 28rpx;
660 + font-weight: 600;
661 + color: #fffdf8;
662 + background: linear-gradient(135deg, #b98b42, #9e712d);
663 +
664 + &--ghost {
665 + color: #8e6325;
666 + background: #f8f2e9;
667 + }
668 + }
107 } 669 }
108 } 670 }
109 </style> 671 </style>
......