From d34f4e33ff328a05228b803285b17c6432ae9c16 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期一, 25 八月 2025 10:44:49 +0800 Subject: [PATCH] '我的'页面样式修改 --- src/pages/mine.vue | 406 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 251 insertions(+), 155 deletions(-) diff --git a/src/pages/mine.vue b/src/pages/mine.vue index 8eb44db..f0f075d 100644 --- a/src/pages/mine.vue +++ b/src/pages/mine.vue @@ -1,100 +1,89 @@ <template> - <view class="mine-container" :style="{ height: `${windowHeight}px` }"> - <!--椤堕儴涓汉淇℃伅鏍�--> - <view class="header-section"> - <view class="flex padding justify-between"> - <view class="flex align-center"> - <view v-if="!avatar" class="cu-avatar xl round bg-white"> - <view class="iconfont icon-people text-gray icon"></view> - </view> - <image v-if="avatar" @click="handleToAvatar" :src="avatar" class="cu-avatar xl round" mode="widthFix"> - </image> - <view v-if="!name" @click="handleToLogin" class="login-tip"> - 鐐瑰嚮鐧诲綍 - </view> - <view v-if="name" @click="handleToInfo" class="user-info"> - <view class="u_title"> - 鐢ㄦ埛鍚嶏細{{ name }} - </view> + <view class="mine-page"> + <!-- 椤堕儴涓汉淇℃伅鍗� --> + <view class="profile-card"> + <view class="left"> + <view v-if="!avatar" class="avatar-placeholder"> + <view class="iconfont icon-people"></view> + </view> + <image + v-else + class="avatar" + :src="avatar" + mode="aspectFill" + @click="handleToAvatar" + /> + <view class="info"> + <view class="name-line"> + <text class="name" @click="name ? handleToInfo() : handleToLogin()"> + {{ name || '鐐瑰嚮鐧诲綍' }} + </text> + <text v-if="roleName" class="role-tag">{{ roleName }}</text> </view> </view> - <view @click="handleToInfo" class="flex align-center"> - <text>涓汉淇℃伅</text> - <view class="iconfont icon-right"></view> - </view> + </view> + <view class="right" @click="handleToInfo"> + <text class="link">涓汉淇℃伅</text> + <view class="iconfont icon-right"></view> </view> </view> - <view class="content-section"> - <view class="mine-actions grid col-4 text-center"> - <view class="action-item" @click="handleJiaoLiuQun"> - <view class="iconfont icon-friendfill text-pink icon"></view> - <text class="text">浜ゆ祦缇�</text> - </view> - <view class="action-item" @click="handleBuilding"> - <view class="iconfont icon-service text-blue icon"></view> - <text class="text">鍦ㄧ嚎瀹㈡湇</text> - </view> - <view class="action-item" @click="handleBuilding"> - <view class="iconfont icon-community text-mauve icon"></view> - <text class="text">鍙嶉绀惧尯</text> - </view> - <view class="action-item" @click="handleBuilding"> - <view class="iconfont icon-dianzan text-green icon"></view> - <text class="text">鐐硅禐鎴戜滑</text> - </view> + <!-- 涓変釜绠$悊鑿滃崟 --> + <view class="menu-card"> + <view class="menu-item" @click="handleUnitManage"> + <uni-icons type="home" size="22" color="#3C96F3" /> + <text class="label">鍗曚綅绠$悊</text> + <uni-icons class="arrow" type="right" size="18" color="#c0c4cc" /> </view> - - <view class="menu-list"> - <view class="list-cell list-cell-arrow" @click="handleToEditInfo"> - <view class="menu-item-box"> - <view class="iconfont icon-user menu-icon"></view> - <view>缂栬緫璧勬枡</view> - </view> - </view> - <view class="list-cell list-cell-arrow" @click="handleHelp"> - <view class="menu-item-box"> - <view class="iconfont icon-help menu-icon"></view> - <view>甯歌闂</view> - </view> - </view> - <view class="list-cell list-cell-arrow" @click="handleAbout"> - <view class="menu-item-box"> - <view class="iconfont icon-aixin menu-icon"></view> - <view>鍏充簬鎴戜滑</view> - </view> - </view> - <view class="list-cell list-cell-arrow" @click="handleToSetting"> - <view class="menu-item-box"> - <view class="iconfont icon-setting menu-icon"></view> - <view>搴旂敤璁剧疆</view> - </view> - </view> + <view class="menu-item" @click="handleUserManage"> + <uni-icons type="person" size="22" color="#3C96F3" /> + <text class="label">鐢ㄦ埛绠$悊</text> + <uni-icons class="arrow" type="right" size="18" color="#c0c4cc" /> </view> - + <view class="menu-item" @click="handleContractManage"> + <uni-icons type="compose" size="22" color="#3C96F3" /> + <text class="label">鍚堝悓绠$悊</text> + <uni-icons class="arrow" type="right" size="18" color="#c0c4cc" /> + </view> </view> + + <!-- 搴曢儴涓や釜淇℃伅鍗$墖 --> + <!-- <view class="info-cards"> + <view class="info-card"> + <view class="card-left"> + <view class="title">甯姪鏂囨。</view> + <view class="desc">浜嗚В骞冲彴鍔熻兘妯″潡</view> + <button class="card-btn" @click="handleHelp">鐐瑰嚮鏌ョ湅</button> + </view> + <view class="card-illu note"></view> + </view> + + <view class="info-card"> + <view class="card-left"> + <view class="title">闂鍙嶉</view> + <view class="desc">瑙e喅骞冲彴浣跨敤闂</view> + <button class="card-btn warn" @click="handleFeedback">鐐瑰嚮鍜ㄨ</button> + </view> + <view class="card-illu faq"></view> + </view> + </view> --> </view> - <!-- <view> - <uni-popup ref="popup" type="dialog"> - <uni-popup-dialog type="info" cancelText="鍏抽棴" confirmText="閫�鍑�" - title="閫氱煡" content="纭畾娉ㄩ攢骞堕��鍑虹郴缁熷悧" - @confirm="dialogConfirm" - @close="dialogClose"> - </uni-popup-dialog> - </uni-popup> - </view> --> </template> <script setup> -import { ref } from "vue"; +import { ref, onMounted } from "vue"; import config from '@/config.js' +import { getUserProfile } from "@/api/system/user"; import useUserStore from '@/store/modules/user' const userStore = useUserStore() const name = userStore.name; +const roleName = userStore.roleName; const version = config.appInfo.version; const avatar = ref(userStore.avatar); -const windowHeight = ref(uni.getSystemInfoSync().windowHeight - 50); +// rem 鍩哄噯锛�1rem = 16px锛堝鏈変笉鍚岃璋冩暣 REM_BASE 鎴栨牱寮忔暟鍊硷級 +const REM_BASE = 16; +const windowHeightRem = ref((uni.getSystemInfoSync().windowHeight - 50) / REM_BASE); const popup = ref(null); uni.$on('refresh', () => { @@ -104,16 +93,6 @@ function handleToInfo() { uni.navigateTo({ url: '/pages_mine/pages/info/index' - }); -}; -function handleToEditInfo() { - uni.navigateTo({ - url: '/pages_mine/pages/info/edit' - }); -}; -function handleToSetting() { - uni.navigateTo({ - url: '/pages_mine/pages/setting/index' }); }; function handleToLogin() { @@ -138,96 +117,213 @@ }); }) }; -function dialogClose() { - //console.log('鐐瑰嚮鍏抽棴') -}; -function handleHelp() { - uni.navigateTo({ - url: '/pages_mine/pages/help/index' - }); -}; -function handleAbout() { - uni.navigateTo({ - url: '/pages_mine/pages/about/index' - }); -}; -function handleJiaoLiuQun() { - uni.showToast({ - title: 'QQ缇わ細133713780', - mask: false, - icon: "none", - duration: 1000 - }); -}; -function handleBuilding() { - uni.showToast({ - title: '妯″潡寤鸿涓瓇', - mask: false, - icon: "none", - duration: 1000 - }); -} +// 鐜版湁璺宠浆鏂规硶淇濈暀锛歨andleToInfo / handleToLogin / handleToAvatar / handleHelp 绛� +function handleUnitManage() { + // TODO: 鏇挎崲涓虹湡瀹炶矾鐢� + uni.showToast({ title: '妯″潡寤鸿涓瓇', icon: 'none' }); +} +function handleUserManage() { + // TODO: 鏇挎崲涓虹湡瀹炶矾鐢� + uni.showToast({ title: '妯″潡寤鸿涓瓇', icon: 'none' }); +} +function handleContractManage() { + // TODO: 鏇挎崲涓虹湡瀹炶矾鐢� + uni.showToast({ title: '妯″潡寤鸿涓瓇', icon: 'none' }); +} +onMounted(() => { + // 璁剧疆鐢ㄦ埛淇℃伅 +}); </script> -<style lang="scss"> -page { - background-color: #f5f6f7; +<style lang="scss" scoped> +/* 椤甸潰瀹瑰櫒 */ +.mine-page { + min-height: 100vh; + padding: 1.25rem; + padding-top: env(safe-area-inset-top); + position: relative; + background: linear-gradient( 225deg, #E7F1FF 0%, rgba(255,255,255,0) 74%, rgba(255,255,255,0) 100%); } -.mine-container { - width: 100%; - height: 100%; +/* 椤堕儴涓汉淇℃伅鍗� */ +.profile-card { + display: flex; + justify-content: space-between; + align-items: center; + color: #333; + margin: 1.25rem 0; + .left { + display: flex; + align-items: center; + gap: 0.75rem; - .header-section { - padding: 15px 15px 45px 15px; - background-color: #3c96f3; - color: white; - - .login-tip { - font-size: 18px; - margin-left: 10px; + .avatar { + width: 3.5rem; + height: 3.5rem; + border-radius: 50%; + border: 0.125rem solid #fff; + background: #fff; + object-fit: cover; } + .avatar-placeholder { + width: 3.5rem; + height: 3.5rem; + border-radius: 50%; + background: #fff; + display: flex; + align-items: center; + justify-content: center; + border: 0.125rem solid #fff; - .cu-avatar { - border: 2px solid #eaeaea; - - .icon { - font-size: 40px; + .iconfont { + font-size: 2rem; + color: #c0c4cc; } } - .user-info { - margin-left: 15px; + .info { + display: flex; + flex-direction: column; - .u_title { - font-size: 18px; - line-height: 30px; + .name-line { + display: flex; + align-items: flex-end; + gap: 0.5rem; + + .name { + font-size: 1.125rem; + font-weight: 600; + color: #2c2c2c; + } + .role-tag { + font-size: 0.75rem; + color: #fff; + background: #ffa940; + padding: 0.125rem 0.5rem; + border-radius: 0.75rem; + } + } + + .phone { + margin-top: 0.25rem; + font-size: 0.8125rem; + color: #3c96f3; } } } - .content-section { + .right { + display: flex; + align-items: center; + gap: 0.375rem; + color: #666; + + .link { + font-size: 0.875rem; + } + .iconfont { + font-size: 0.875rem; + color: #c0c4cc; + } + } +} + +/* 鑿滃崟鍗$墖 */ +.menu-card { + margin-top: 0.75rem; + background: #fff; + border-radius: 0.75rem; + overflow: hidden; + + .menu-item { + display: flex; + align-items: center; + height: 3.5rem; + padding: 1.25rem; position: relative; - top: -50px; - .mine-actions { - margin: 15px 15px; - padding: 20px 0px; - border-radius: 8px; - background-color: white; + .label { + flex: 1; + margin-left: 0.625rem; + color: #303133; + font-size: 0.9375rem; + } + .arrow { + opacity: 0.6; + } + } - .action-item { - .icon { - font-size: 28px; + .menu-item + .menu-item { + border-top: 0.0625rem solid #f2f3f5; + } +} + +/* 搴曢儴淇℃伅鍗$墖 */ +.info-cards { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 0.75rem; + margin-top: 0.75rem; + + .info-card { + position: relative; + background: #fff; + border-radius: 0.75rem; + padding: 0.875rem 0.75rem; + min-height: 7rem; + overflow: hidden; + + .card-left { + display: flex; + flex-direction: column; + gap: 0.375rem; + + .title { + font-size: 1rem; + font-weight: 600; + color: #2c2c2c; + } + .desc { + font-size: 0.75rem; + color: #8a8a8a; + } + .card-btn { + margin-top: 0.5rem; + width: 6rem; + height: 1.875rem; + line-height: 1.875rem; + border: none; + border-radius: 62.4375rem; + font-size: 0.8125rem; + color: #fff; + background: #3c96f3; + + &.warn { + background: #ffb03a; } + } + } - .text { - display: block; - font-size: 13px; - margin: 8px 0px; - } + /* 鍙充晶瑁呴グ锛堝彲鏇挎崲涓哄浘鐗囷級 */ + .card-illu { + position: absolute; + right: -0.375rem; + bottom: 0; + width: 4.875rem; + height: 4.875rem; + opacity: 0.9; + + &.note { + background: radial-gradient(closest-side, #e8f2ff, transparent), + linear-gradient(135deg, #d8eaff, #f5faff); + border-radius: 0.75rem 0 0 0; + } + &.faq { + background: radial-gradient(closest-side, #ffe9d0, transparent), + linear-gradient(135deg, #ffe0b2, #fff3e0); + border-radius: 0.75rem 0 0 0; } } } -- Gitblit v1.9.3