From 648b9cc23203af9cae138f9112dbcadbf084eb71 Mon Sep 17 00:00:00 2001 From: qsh <> Date: Wed, 25 Feb 2026 16:10:19 +0800 Subject: [PATCH] sc --- .env.production | 4 +- src/pages/account/accountForm.vue | 204 ++++++++++++- src/pages/account/manage.vue | 188 +++++++++++- src/pages/account/quota.vue | 2 +- src/pages/distribution/profit-rule.vue | 179 +++++++++++ src/pages/distribution/qrcode.vue | 152 +++++++++- src/pages/distributor/add.vue | 147 ++++++++- src/pages/distributor/edit.vue | 147 ++++++++- src/pages/distributor/index.vue | 103 ++++++- src/pages/login.vue | 42 +++ src/pages/member/gift.vue | 164 +++++++++- src/pages/member/order.vue | 180 ++++++++++- src/pages/member/setting-form.vue | 319 +++++++++++++++---- src/pages/member/setting.vue | 365 ++++++++++++++++------ src/pages/mine/about-us.vue | 405 +++++++++++++++++++------ src/pages/mine/help-center.vue | 250 ++++++++++++--- src/pages/mine/index.vue | 118 ++++++- src/pages/mine/password-change.vue | 2 +- src/pages/mine/personal-info.vue | 131 +++++++- src/pages/mine/school-info.vue | 150 +++++++-- src/pages/student/list.vue | 207 ++++++++++--- src/pages/student/remind.vue | 2 +- src/pages/work/index.vue | 151 +++++++-- src/utils/request.js | 2 +- 24 files changed, 3118 insertions(+), 496 deletions(-) diff --git a/.env.production b/.env.production index 91c461f..6846ce1 100644 --- a/.env.production +++ b/.env.production @@ -11,8 +11,8 @@ VITE_APP_PHONE = 18056811878 VITE_APP_ENV = 'production' #开发环境 -VITE_APP_BASE_API = 'https://cloud.ahxunjia.cn/' -# VITE_APP_BASE_API = 'https://cloud.ahduima.com/' +# VITE_APP_BASE_API = 'https://cloud.ahxunjia.cn/' +VITE_APP_BASE_API = 'https://cloud.ahduima.com/' # VITE_WEB_BASE_URL = 'https://xj.ahduima.com' diff --git a/src/pages/account/accountForm.vue b/src/pages/account/accountForm.vue index c38b4a2..9211b71 100644 --- a/src/pages/account/accountForm.vue +++ b/src/pages/account/accountForm.vue @@ -236,6 +236,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -245,7 +250,7 @@ } .header-right { - width: 100rpx; + width: 150rpx; text-align: right; } @@ -254,6 +259,13 @@ color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .save-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 表单内容 */ @@ -265,10 +277,15 @@ /* 表单 section */ .form-section { background-color: #fff; - border-radius: 16rpx; + border-radius: 12rpx; padding: 24rpx; margin-bottom: 24rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .form-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-title { @@ -393,4 +410,187 @@ font-size: 20rpx; color: #909399; } + + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .account-form-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 32rpx; + padding: 12rpx 24rpx; + } + + .form-content { + padding: 32rpx; + } + + .form-section { + margin-bottom: 32rpx; + padding: 40rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .form-item { + margin-bottom: 32rpx; + } + + .form-label { + width: 160rpx; + font-size: 28rpx; + } + + .form-control { + padding: 20rpx 24rpx; + } + + .form-input { + font-size: 28rpx; + } + + .status-text { + font-size: 28rpx; + } + + .switch { + width: 100rpx; + height: 50rpx; + border-radius: 25rpx; + } + + .switch-button { + width: 46rpx; + height: 46rpx; + top: 2rpx; + left: 2rpx; + } + + .switch.active .switch-button { + left: 52rpx; + } + + .data-scope-item { + padding: 24rpx; + margin-bottom: 24rpx; + } + + .scope-name { + font-size: 28rpx; + margin-bottom: 8rpx; + } + + .scope-desc { + font-size: 24rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .account-form-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .save-btn { + font-size: 36rpx; + padding: 16rpx 32rpx; + } + + .form-content { + padding: 40rpx; + } + + .form-section { + padding: 48rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; + } + + .form-item { + margin-bottom: 40rpx; + } + + .form-label { + width: 180rpx; + font-size: 32rpx; + } + + .form-control { + padding: 24rpx 28rpx; + } + + .form-input { + font-size: 32rpx; + } + + .status-text { + font-size: 32rpx; + } + + .switch { + width: 120rpx; + height: 60rpx; + border-radius: 30rpx; + } + + .switch-button { + width: 56rpx; + height: 56rpx; + top: 2rpx; + left: 2rpx; + } + + .switch.active .switch-button { + left: 62rpx; + } + + .data-scope-item { + padding: 32rpx; + margin-bottom: 32rpx; + } + + .scope-name { + font-size: 32rpx; + margin-bottom: 12rpx; + } + + .scope-desc { + font-size: 28rpx; + } + } \ No newline at end of file diff --git a/src/pages/account/manage.vue b/src/pages/account/manage.vue index 745586a..4b62927 100644 --- a/src/pages/account/manage.vue +++ b/src/pages/account/manage.vue @@ -229,6 +229,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -238,7 +243,7 @@ } .header-right { - width: 100rpx; + width: 150rpx; text-align: right; } @@ -247,6 +252,13 @@ color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .add-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 筛选条件 */ @@ -254,8 +266,13 @@ padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .filter-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .filter-row { @@ -309,10 +326,21 @@ align-items: center; justify-content: space-between; background-color: #fff; - border-radius: 16rpx; + border-radius: 12rpx; padding: 24rpx; margin-bottom: 16rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + } + + .account-item:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); + transform: translateY(-2rpx); + } + + .account-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .account-info { @@ -358,6 +386,7 @@ font-size: 20rpx; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; } .edit-btn { @@ -365,11 +394,21 @@ color: #409eff; } + .edit-btn:hover { + background-color: #ebefff; + color: #66b1ff; + } + .delete-btn { background-color: #fef0f0; color: #f56c6c; } + .delete-btn:hover { + background-color: #fde2e2; + color: #f78989; + } + /* 空状态 */ .empty-state { flex: 1; @@ -442,14 +481,44 @@ color: #303133; } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .account-manage-container { - max-width: 1200px; + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .add-btn { + font-size: 32rpx; + padding: 12rpx 24rpx; + } + + .filter-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; } .filter-label { font-size: 28rpx; + margin-bottom: 12rpx; + } + + .filter-control { + padding: 20rpx 24rpx; } .picker-text, @@ -457,8 +526,18 @@ font-size: 28rpx; } + .account-list { + padding: 0 32rpx; + } + + .account-item { + padding: 32rpx; + margin-bottom: 24rpx; + } + .account-name { - font-size: 34rpx; + font-size: 32rpx; + margin-bottom: 12rpx; } .meta-item { @@ -466,7 +545,102 @@ } .action-btn { + padding: 12rpx 24rpx; + font-size: 24rpx; + } + + .pagination-info { + padding: 24rpx 40rpx; + } + + .info-text { + font-size: 24rpx; + } + + .page-btn { + padding: 12rpx 24rpx; + font-size: 24rpx; + } + + .page-info { font-size: 24rpx; } } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .account-manage-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .add-btn { + font-size: 36rpx; + padding: 16rpx 32rpx; + } + + .filter-section { + padding: 36rpx 48rpx; + } + + .filter-label { + font-size: 32rpx; + } + + .filter-control { + padding: 24rpx 28rpx; + } + + .picker-text, + .search-input { + font-size: 32rpx; + } + + .account-item { + padding: 40rpx; + } + + .account-name { + font-size: 36rpx; + margin-bottom: 16rpx; + } + + .meta-item { + font-size: 28rpx; + } + + .action-btn { + padding: 16rpx 32rpx; + font-size: 28rpx; + } + + .pagination-info { + padding: 28rpx 48rpx; + } + + .info-text { + font-size: 28rpx; + } + + .page-btn { + padding: 16rpx 32rpx; + font-size: 28rpx; + } + + .page-info { + font-size: 28rpx; + } + } \ No newline at end of file diff --git a/src/pages/account/quota.vue b/src/pages/account/quota.vue index e2aa4c7..364b53c 100644 --- a/src/pages/account/quota.vue +++ b/src/pages/account/quota.vue @@ -455,7 +455,7 @@ } .filter-section { - margin: 0 32rpx 24rpx; + margin: 32rpx 24rpx; padding: 32rpx; } diff --git a/src/pages/distribution/profit-rule.vue b/src/pages/distribution/profit-rule.vue index fa4602b..60e6781 100644 --- a/src/pages/distribution/profit-rule.vue +++ b/src/pages/distribution/profit-rule.vue @@ -623,4 +623,183 @@ color: #67c23a !important; font-weight: 500; } + + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .profit-rule-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 32rpx; + padding: 12rpx 24rpx; + } + + .rule-info-section, + .rule-config-section { + margin: 0 32rpx 24rpx; + padding: 40rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .info-card { + padding: 32rpx; + } + + .info-item { + font-size: 24rpx; + margin-bottom: 12rpx; + } + + .rule-item { + padding: 32rpx; + } + + .rule-title { + font-size: 28rpx; + } + + .rule-content { + gap: 24rpx; + } + + .rule-label { + font-size: 24rpx; + } + + .radio-label { + font-size: 28rpx; + } + + .rule-input { + width: 160rpx; + height: 80rpx; + font-size: 28rpx; + padding: 0 24rpx; + } + + .rule-unit { + font-size: 28rpx; + } + + .vip-item { + padding: 16rpx 24rpx; + } + + .checkbox-label { + font-size: 24rpx; + } + + .car-tag { + padding: 4rpx 12rpx; + font-size: 20rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .profit-rule-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .save-btn { + font-size: 36rpx; + padding: 16rpx 32rpx; + } + + .rule-info-section, + .rule-config-section { + padding: 48rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; + } + + .info-card { + padding: 40rpx; + } + + .info-item { + font-size: 28rpx; + margin-bottom: 16rpx; + } + + .rule-item { + padding: 36rpx; + } + + .rule-title { + font-size: 32rpx; + } + + .rule-content { + gap: 32rpx; + } + + .rule-label { + font-size: 28rpx; + } + + .radio-label { + font-size: 32rpx; + } + + .rule-input { + width: 180rpx; + height: 90rpx; + font-size: 32rpx; + padding: 0 28rpx; + } + + .rule-unit { + font-size: 32rpx; + } + + .vip-item { + padding: 20rpx 28rpx; + } + + .checkbox-label { + font-size: 28rpx; + } + + .car-tag { + padding: 6rpx 16rpx; + font-size: 22rpx; + } + } \ No newline at end of file diff --git a/src/pages/distribution/qrcode.vue b/src/pages/distribution/qrcode.vue index 6314ae0..43c7906 100644 --- a/src/pages/distribution/qrcode.vue +++ b/src/pages/distribution/qrcode.vue @@ -58,7 +58,7 @@ - + @@ -350,8 +350,13 @@ .qrcode-item { background-color: #fff; - border-radius: 16rpx; - box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + border-radius: 12rpx; + transition: all 0.3s ease; + } + + .qrcode-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .qrcode-card { @@ -449,9 +454,9 @@ } .action-btn { - padding: 8rpx 16rpx; + padding: 12rpx 24rpx; border-radius: 8rpx; - font-size: 16rpx; + font-size: 24rpx; font-weight: 600; cursor: pointer; } @@ -531,4 +536,141 @@ color: #909399; cursor: not-allowed; } + + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .qrcode-manage-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .filter-section { + margin: 32rpx 24rpx; + padding: 32rpx; + } + + .qrcode-list-section { + padding: 0 32rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .filter-label { + font-size: 26rpx; + } + + .picker-text, + .search-input { + font-size: 26rpx; + } + + .filter-control { + padding: 20rpx; + } + + .qrcode-grid { + grid-template-columns: repeat(auto-fill, minmax(350rpx, 1fr)); + gap: 24rpx; + } + + .qrcode-card { + padding: 32rpx; + } + + .qrcode-code { + font-size: 24rpx; + } + + .qrcode-status { + font-size: 20rpx; + padding: 6rpx 16rpx; + } + + .info-item { + font-size: 22rpx; + } + + .info-label { + width: 140rpx; + } + + .action-btn { + padding: 16rpx 28rpx; + font-size: 22rpx; + } + + .mock-qrcode { + width: 240rpx; + height: 240rpx; + } + + .qrcode-pattern { + width: 190rpx; + height: 190rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .qrcode-manage-container { + max-width: 1000px; + } + + .section-title { + font-size: 40rpx; + } + + .filter-label { + font-size: 28rpx; + } + + .picker-text, + .search-input { + font-size: 28rpx; + } + + .qrcode-grid { + grid-template-columns: repeat(auto-fill, minmax(500rpx, 1fr)); + } + + .qrcode-card { + padding: 36rpx; + } + + .qrcode-code { + font-size: 28rpx; + } + + .qrcode-status { + font-size: 22rpx; + padding: 8rpx 20rpx; + } + + .info-item { + font-size: 24rpx; + } + + .info-label { + width: 150rpx; + } + + .action-btn { + padding: 18rpx 32rpx; + font-size: 24rpx; + } + + .mock-qrcode { + width: 280rpx; + height: 280rpx; + } + + .qrcode-pattern { + width: 220rpx; + height: 220rpx; + } + } \ No newline at end of file diff --git a/src/pages/distributor/add.vue b/src/pages/distributor/add.vue index c455047..4b9dcdc 100644 --- a/src/pages/distributor/add.vue +++ b/src/pages/distributor/add.vue @@ -169,6 +169,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -178,7 +183,7 @@ } .header-right { - width: 60rpx; + width: 150rpx; text-align: right; } @@ -187,15 +192,27 @@ color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .save-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 表单内容 */ .form-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .form-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-title { @@ -335,25 +352,59 @@ } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .distributor-add-container { - max-width: 1000px; + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 28rpx; + padding: 12rpx 20rpx; + } + + .form-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; } .section-title { - font-size: 40rpx; + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .form-card { + padding: 32rpx; + } + + .form-row { + margin-bottom: 32rpx; } .form-label { font-size: 28rpx; + margin-bottom: 12rpx; } .form-input, .picker { - padding: 28rpx 32rpx; + padding: 24rpx 28rpx; font-size: 28rpx; - border-radius: 16rpx; } .picker-text { @@ -361,14 +412,88 @@ } .form-textarea { - padding: 28rpx 32rpx; + padding: 24rpx 28rpx; font-size: 28rpx; - border-radius: 16rpx; } .form-input::placeholder, .form-textarea::placeholder { font-size: 26rpx; } + + .radio-label { + font-size: 28rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .distributor-add-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .save-btn { + font-size: 32rpx; + padding: 16rpx 24rpx; + } + + .form-section { + padding: 36rpx 48rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; + } + + .form-card { + padding: 40rpx; + } + + .form-row { + margin-bottom: 40rpx; + } + + .form-label { + font-size: 32rpx; + margin-bottom: 16rpx; + } + + .form-input, + .picker { + padding: 28rpx 32rpx; + font-size: 32rpx; + } + + .picker-text { + font-size: 32rpx; + } + + .form-textarea { + padding: 28rpx 32rpx; + font-size: 32rpx; + } + + .form-input::placeholder, + .form-textarea::placeholder { + font-size: 30rpx; + } + + .radio-label { + font-size: 32rpx; + } } \ No newline at end of file diff --git a/src/pages/distributor/edit.vue b/src/pages/distributor/edit.vue index 8ee7cc1..b1e9e80 100644 --- a/src/pages/distributor/edit.vue +++ b/src/pages/distributor/edit.vue @@ -193,6 +193,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -202,7 +207,7 @@ } .header-right { - width: 60rpx; + width: 150rpx; text-align: right; } @@ -211,15 +216,27 @@ color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .save-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 表单内容 */ .form-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .form-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-title { @@ -260,7 +277,7 @@ .form-input { width: 100%; - height: 70rpx; + height: 80rpx; background-color: #fff; border: 1rpx solid #dcdfe6; border-radius: 12rpx; @@ -359,25 +376,58 @@ } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .distributor-add-container { - max-width: 1000px; + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 28rpx; + padding: 12rpx 20rpx; + } + + .form-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; } .section-title { - font-size: 40rpx; + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .form-card { + padding: 32rpx; + } + + .form-row { + margin-bottom: 32rpx; } .form-label { font-size: 28rpx; + margin-bottom: 12rpx; } .form-input, .picker { - padding: 28rpx 32rpx; font-size: 28rpx; - border-radius: 16rpx; } .picker-text { @@ -385,14 +435,87 @@ } .form-textarea { - padding: 28rpx 32rpx; + padding: 24rpx 28rpx; font-size: 28rpx; - border-radius: 16rpx; } .form-input::placeholder, .form-textarea::placeholder { font-size: 26rpx; } + + .radio-label { + font-size: 28rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .distributor-add-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .save-btn { + font-size: 32rpx; + padding: 16rpx 24rpx; + } + + .form-section { + padding: 36rpx 48rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; + } + + .form-card { + padding: 40rpx; + } + + .form-row { + margin-bottom: 40rpx; + } + + .form-label { + font-size: 32rpx; + margin-bottom: 16rpx; + } + + .form-input, + .picker { + font-size: 32rpx; + } + + .picker-text { + font-size: 32rpx; + } + + .form-textarea { + padding: 28rpx 32rpx; + font-size: 32rpx; + } + + .form-input::placeholder, + .form-textarea::placeholder { + font-size: 30rpx; + } + + .radio-label { + font-size: 32rpx; + } } \ No newline at end of file diff --git a/src/pages/distributor/index.vue b/src/pages/distributor/index.vue index 2f7bf15..1557390 100644 --- a/src/pages/distributor/index.vue +++ b/src/pages/distributor/index.vue @@ -277,7 +277,7 @@ const loadDistributorList = async () => { } .add-btn { - font-size: 24rpx; + font-size: 28rpx; color: #409eff; font-weight: 600; cursor: pointer; @@ -346,10 +346,15 @@ const loadDistributorList = async () => { .distributor-item { display: flex; align-items: center; - background-color: #fff; - border-radius: 16rpx; + background-color: #f9f9f9; + border-radius: 12rpx; padding: 24rpx; - box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + } + + .distributor-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .distributor-avatar { @@ -493,27 +498,100 @@ const loadDistributorList = async () => { } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .distributor-list-container { - max-width: 1200px; + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .filter-section { + margin: 32rpx 24rpx; + padding: 32rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; } .filter-label { - font-size: 28rpx; + font-size: 26rpx; } - .picker-text, .search-input { - font-size: 28rpx; + font-size: 26rpx; + } + + .filter-control { + padding: 20rpx; + } + + .distributor-item { + padding: 32rpx; + } + + .distributor-avatar { + width: 100rpx; + height: 100rpx; + } + + .avatar-placeholder { + font-size: 40rpx; + } + + .distributor-name { + font-size: 32rpx; + } + + .meta-item { + font-size: 22rpx; + } + + .action-btn { + padding: 16rpx 28rpx; + font-size: 22rpx; + } + + .distributor-list { + gap: 24rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .distributor-list-container { + max-width: 1000px; } .section-title { font-size: 40rpx; } + .filter-label { + font-size: 28rpx; + } + + .search-input { + font-size: 28rpx; + } + + .distributor-item { + padding: 36rpx; + } + + .distributor-avatar { + width: 120rpx; + height: 120rpx; + } + + .avatar-placeholder { + font-size: 48rpx; + } + .distributor-name { - font-size: 34rpx; + font-size: 36rpx; } .meta-item { @@ -521,7 +599,8 @@ const loadDistributorList = async () => { } .action-btn { - font-size: 20rpx; + padding: 18rpx 32rpx; + font-size: 24rpx; } } \ No newline at end of file diff --git a/src/pages/login.vue b/src/pages/login.vue index 3400418..19415ad 100644 --- a/src/pages/login.vue +++ b/src/pages/login.vue @@ -572,4 +572,46 @@ font-size: 34rpx; } } + + @media screen and (min-width: 1024px) { + .login-card { + max-width: 800rpx; + padding: 180rpx 80rpx; + } + + .app-title { + font-size: 44rpx; + } + + .app-subtitle { + font-size: 28rpx; + } + + .input-wrapper { + height: 110rpx; + padding: 0 32rpx; + } + + .form-input { + font-size: 32rpx; + } + + .icon { + font-size: 36rpx; + } + + .login-btn { + height: 116rpx; + line-height: 116rpx; + font-size: 36rpx; + } + + .checkbox-label { + font-size: 28rpx; + } + + .register-text { + font-size: 26rpx; + } + } \ No newline at end of file diff --git a/src/pages/member/gift.vue b/src/pages/member/gift.vue index 9a579ae..906d1b7 100644 --- a/src/pages/member/gift.vue +++ b/src/pages/member/gift.vue @@ -19,12 +19,12 @@ - {{ memberTypeOptions[memberTypeIndex]?.memberName || '请选择' }} + {{ memberTypeOptions[memberTypeIndex]?.displayName || '请选择' }} @@ -60,7 +60,10 @@ > {{ code.code }} - {{ getStatusText(code) }} + + + 复制 + @@ -76,19 +79,25 @@ 使用时间: {{ new Date(code.writeOffTime).toLocaleString() }} + + 使用状态: + + {{ getStatusText(code) }} + + 使用人: {{ code.writeOffUser }} - + @@ -153,7 +162,11 @@ onMounted(() => { getVipTypeList().then(res => { if (res.code == 0) { - memberTypeOptions.value = res.data.list + // 将 carName 和 memberName 合并到一个新字段中 + memberTypeOptions.value = res.data.list.map(item => ({ + ...item, + displayName: `${item.carName || ''} - ${item.memberName || ''}` + })) } }) loadCodeList() @@ -281,7 +294,7 @@ // 根据memberId获取会员类型名称 function getMemberName(memberId) { const memberType = memberTypeOptions.value.find(item => item.memberId == memberId) - return memberType?.memberName || '未知' + return memberType?.displayName || '未知' } @@ -463,6 +476,7 @@ } .code-status { + display: inline-block; font-size: 20rpx; font-weight: 600; padding: 4rpx 12rpx; @@ -491,7 +505,7 @@ .code-info { display: flex; flex-direction: column; - gap: 8rpx; + gap: 12rpx; } .info-item { @@ -584,4 +598,138 @@ color: #909399; cursor: not-allowed; } + + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .gift-member-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .generate-section, + .code-list-section { + margin: 0 32rpx 24rpx; + padding: 40rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .generate-card { + padding: 32rpx; + } + + .generate-label { + font-size: 26rpx; + } + + .generate-control { + padding: 20rpx; + } + + .picker-text, + .count-input, + .period-input { + font-size: 26rpx; + } + + .action-btn { + padding: 20rpx; + font-size: 26rpx; + } + + .code-item { + padding: 32rpx; + } + + .code-value { + font-size: 28rpx; + } + + .code-status { + font-size: 22rpx; + padding: 6rpx 16rpx; + } + + .info-item { + font-size: 24rpx; + } + + .info-label { + width: 160rpx; + } + + .pagination { + margin: 0 32rpx 32rpx; + padding: 32rpx; + } + + .page-info { + font-size: 22rpx; + } + + .page-btn { + padding: 12rpx 20rpx; + font-size: 22rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .gift-member-container { + max-width: 1000px; + } + + .section-title { + font-size: 40rpx; + } + + .generate-label { + font-size: 28rpx; + } + + .picker-text, + .count-input, + .period-input { + font-size: 28rpx; + } + + .action-btn { + padding: 24rpx; + font-size: 28rpx; + } + + .code-item { + padding: 36rpx; + } + + .code-value { + font-size: 32rpx; + } + + .code-status { + font-size: 24rpx; + padding: 8rpx 20rpx; + } + + .info-item { + font-size: 26rpx; + } + + .info-label { + width: 180rpx; + } + + .page-info { + font-size: 24rpx; + } + + .page-btn { + padding: 16rpx 24rpx; + font-size: 24rpx; + } + } \ No newline at end of file diff --git a/src/pages/member/order.vue b/src/pages/member/order.vue index bfc289e..bffac47 100644 --- a/src/pages/member/order.vue +++ b/src/pages/member/order.vue @@ -160,8 +160,8 @@ // 分页信息 const currentPage = ref(1) - const totalOrders = ref(100) - const pageSize = ref(10) + const totalOrders = ref(0) + const pageSize = ref(5) // 计算总页数 const totalPages = computed(() => { @@ -425,12 +425,16 @@ .order-item { background-color: #fff; - border-radius: 16rpx; + border-radius: 12rpx; padding: 28rpx; - box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08); transition: all 0.3s ease; } + .order-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); + } + .order-item:hover { box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.12); transform: translateY(-2rpx); @@ -579,14 +583,39 @@ cursor: not-allowed; } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .member-order-container { - max-width: 1000px; + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .filter-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; } .filter-label { font-size: 28rpx; + margin-bottom: 12rpx; + } + + .filter-control { + padding: 20rpx 24rpx; } .picker-text, @@ -594,28 +623,147 @@ font-size: 28rpx; } + .order-list-section { + padding: 0 32rpx; + margin-top: 24rpx; + } + .section-title { - font-size: 40rpx; + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .order-list { + gap: 24rpx; + } + + .order-item { + padding: 32rpx; + } + + .order-header { + margin-bottom: 28rpx; + padding-bottom: 24rpx; } .order-code { font-size: 32rpx; } - .order-status { + .distributor-name { font-size: 24rpx; - } - - .info-item { - font-size: 26rpx; + padding: 8rpx 20rpx; } .info-label { - width: 180rpx; + font-size: 28rpx; } - .action-btn { - font-size: 20rpx; + .info-value { + font-size: 28rpx; + } + + .info-value.price { + font-size: 26rpx; + } + + .pagination { + margin: 24rpx 32rpx; + padding: 28rpx 32rpx; + } + + .page-info { + font-size: 24rpx; + } + + .page-btn { + padding: 12rpx 24rpx; + font-size: 24rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .member-order-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .filter-section { + padding: 36rpx 48rpx; + } + + .filter-label { + font-size: 32rpx; + } + + .filter-control { + padding: 24rpx 28rpx; + } + + .picker-text, + .search-input { + font-size: 32rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; + } + + .order-item { + padding: 40rpx; + } + + .order-header { + margin-bottom: 32rpx; + padding-bottom: 28rpx; + } + + .order-code { + font-size: 36rpx; + } + + .distributor-name { + font-size: 28rpx; + padding: 12rpx 24rpx; + } + + .info-label { + font-size: 32rpx; + } + + .info-value { + font-size: 32rpx; + } + + .info-value.price { + font-size: 30rpx; + } + + .pagination { + padding: 32rpx 40rpx; + } + + .page-info { + font-size: 28rpx; + } + + .page-btn { + padding: 16rpx 32rpx; + font-size: 28rpx; } } \ No newline at end of file diff --git a/src/pages/member/setting-form.vue b/src/pages/member/setting-form.vue index d007838..7675482 100644 --- a/src/pages/member/setting-form.vue +++ b/src/pages/member/setting-form.vue @@ -255,50 +255,62 @@ \ No newline at end of file diff --git a/src/pages/member/setting.vue b/src/pages/member/setting.vue index e6f8105..b335026 100644 --- a/src/pages/member/setting.vue +++ b/src/pages/member/setting.vue @@ -189,23 +189,30 @@ display: flex; align-items: center; justify-content: space-between; - height: 44px; + height: 120rpx; background-color: #fff; - padding: 0 16px; - border-bottom: 1px solid #e5e5e5; + padding: 0 32rpx; + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } /* 筛选区域样式 */ .filter-container { background-color: #fff; - padding: 12px 16px; - border-bottom: 1px solid #e5e5e5; + padding: 24rpx 32rpx; + margin: 16rpx; + border-radius: 12rpx; + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .filter-container:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .filter-row { display: flex; align-items: center; - gap: 12px; + gap: 24rpx; justify-content: flex-start; } @@ -214,34 +221,35 @@ display: flex; align-items: center; background-color: #f8f9fa; - border-radius: 8px; - padding: 4px; - gap: 2px; + border-radius: 12rpx; + padding: 8rpx; + gap: 4rpx; + flex: 1; } .filter-option { - padding: 8px 16px; + padding: 16rpx 32rpx; background-color: transparent; border: none; - border-radius: 6px; - font-size: 14px; + border-radius: 10rpx; + font-size: 24rpx; color: #666; cursor: pointer; - transition: all 0.2s ease; + transition: all 0.3s ease; white-space: nowrap; flex: 1; text-align: center; } .filter-option:hover { - color: #007aff; - background-color: rgba(0, 122, 255, 0.05); + color: #409eff; + background-color: rgba(64, 158, 255, 0.05); } .filter-option.active { - background-color: #007aff; + background-color: #409eff; color: #fff; - box-shadow: 0 2px 4px rgba(0, 122, 255, 0.2); + box-shadow: 0 4rpx 12rpx rgba(64, 158, 255, 0.3); } /* 筛选选择器样式 */ @@ -311,21 +319,26 @@ } .back-btn { - width: 44px; - height: 44px; + width: 60rpx; display: flex; align-items: center; } .back-btn text { - font-size: 24px; - color: #333; + font-size: 40rpx; + color: #303133; + cursor: pointer; + transition: color 0.3s ease; + } + + .back-btn text:hover { + color: #409eff; } .title { - font-size: 16px; - font-weight: 500; - color: #333; + font-size: 32rpx; + font-weight: bold; + color: #303133; } .right-btn { @@ -335,25 +348,32 @@ } .add-btn { - padding: 6px 16px; - color: #007aff; - border-radius: 16px; + padding: 12rpx 24rpx; + color: #409eff; + border-radius: 12rpx; + transition: all 0.3s ease; + cursor: pointer; + } + + .add-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } .add-btn text { - font-size: 14px; + font-size: 24rpx; font-weight: 500; } /* 列表视图样式 */ .list-container { flex: 1; + padding: 0 16rpx; } .loading { text-align: center; - color: #999; - padding: 40px 0; + color: #909399; + padding: 100rpx 0; } .empty-list { @@ -361,68 +381,80 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 60px 0; + padding: 100rpx 0; } .empty-icon { - font-size: 48px; - margin-bottom: 16px; + font-size: 80rpx; + margin-bottom: 24rpx; } .empty-text { - font-size: 14px; - color: #999; - margin-bottom: 24px; + font-size: 24rpx; + color: #909399; + margin-bottom: 32rpx; } .empty-btn { - padding: 10px 24px; - background-color: #007aff; - border-radius: 20px; + padding: 16rpx 32rpx; + background-color: #409eff; + border-radius: 12rpx; + transition: all 0.3s ease; + cursor: pointer; + } + + .empty-btn:hover { + background-color: #66b1ff; + box-shadow: 0 4rpx 12rpx rgba(64, 158, 255, 0.3); } .member-list { - padding: 10px; + padding: 0 16rpx; display: flex; flex-direction: column; - gap: 12px; + gap: 16rpx; } .member-item { background-color: #fff; - border-radius: 12px; - padding: 20px; - box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + border-radius: 12rpx; + padding: 24rpx; + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); transition: all 0.3s ease; } .member-item:hover { - box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); - transform: translateY(-2px); + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); + transform: translateY(-2rpx); + } + + .member-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .member-info { - margin-bottom: 16px; + margin-bottom: 24rpx; } .member-name { - font-size: 18px; + font-size: 28rpx; font-weight: 600; - color: #333; + color: #303133; } .member-details { - margin-top: 8px; - font-size: 14px; - color: #666; + margin-top: 16rpx; + font-size: 24rpx; + color: #606266; display: flex; flex-direction: column; - gap: 12px; + gap: 16rpx; } .detail-row { display: flex; - gap: 24px; + gap: 24rpx; flex-wrap: wrap; } @@ -430,23 +462,23 @@ margin-bottom: 0; display: flex; align-items: center; - gap: 8px; + gap: 12rpx; line-height: 1.4; flex: 1; - min-width: 200px; + min-width: 200rpx; } .detail-item::before { content: "•"; - color: #007aff; - font-size: 16px; + color: #409eff; + font-size: 24rpx; font-weight: bold; flex-shrink: 0; } .detail-row .detail-item { flex: 0 0 auto; - min-width: 120px; + min-width: 120rpx; } /* 价格样式 */ @@ -460,15 +492,15 @@ .discount-price { color: #ff4d4f; - font-size: 16px; + font-size: 28rpx; font-weight: 600; - margin-right: 8px; + margin-right: 12rpx; } .original-price { - color: #999; + color: #909399; text-decoration: line-through; - font-size: 12px; + font-size: 20rpx; } /* 详情标签样式 */ @@ -479,60 +511,60 @@ /* 使用方式标签 */ .use-type-tags { display: flex; - gap: 8px; + gap: 12rpx; flex-wrap: wrap; align-items: center; } .use-type-tag { - padding: 4px 12px; + padding: 8rpx 16rpx; background-color: #e6f7ff; - color: #007aff; - border-radius: 12px; - font-size: 12px; + color: #409eff; + border-radius: 12rpx; + font-size: 20rpx; font-weight: 500; } /* 权益标签 */ .rights-tags { display: flex; - gap: 8px; + gap: 12rpx; flex-wrap: wrap; align-items: center; } .right-tag { - padding: 4px 12px; + padding: 8rpx 16rpx; background-color: #f6ffed; color: #52c41a; - border-radius: 12px; - font-size: 12px; + border-radius: 12rpx; + font-size: 20rpx; font-weight: 500; - border: 1px solid #d9f7be; + border: 1rpx solid #d9f7be; } .member-actions { display: flex; align-items: center; + gap: 16rpx; } .action-btn { - padding: 8px 10px; - font-size: 14px; + padding: 8rpx 16rpx; + font-size: 24rpx; font-weight: 500; - transition: all 0.2s ease; + transition: all 0.3s ease; cursor: pointer; + border-radius: 8rpx; } .edit-btn { - color: #333; + color: #303133; } .edit-btn:hover { - background-color: #e9ecef; - border-color: #007aff; - transform: translateY(-1px); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05); + background-color: rgba(64, 158, 255, 0.1); + color: #409eff; } .delete-btn { @@ -540,29 +572,178 @@ } .delete-btn:hover { - transform: translateY(-1px); - box-shadow: 0 2px 4px rgba(255, 77, 79, 0.1); + background-color: rgba(255, 77, 79, 0.1); } .btn-text { - font-size: 16px; + font-size: 24rpx; color: #fff; font-weight: 500; } - /* 响应式调整 */ - @media (max-width: 480px) { + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .header { + height: 140rpx; + padding: 0 48rpx; + } + + .title { + font-size: 36rpx; + } + + .back-btn text { + font-size: 48rpx; + } + + .add-btn { + padding: 16rpx 32rpx; + } + + .add-btn text { + font-size: 28rpx; + } + + .filter-container { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; + } + + .filter-option { + padding: 20rpx 36rpx; + font-size: 28rpx; + } + + .list-container { + padding: 0 32rpx; + } + + .member-list { + padding: 0 32rpx; + gap: 24rpx; + } + + .member-item { + padding: 32rpx; + } + + .member-name { + font-size: 32rpx; + } + + .member-details { + font-size: 28rpx; + gap: 20rpx; + } + .detail-row { - flex-direction: column; - gap: 12px; + gap: 32rpx; } - .detail-row .detail-item { - min-width: 100%; + .discount-price { + font-size: 32rpx; } - .detail-item { - min-width: 100%; + .original-price { + font-size: 24rpx; + } + + .use-type-tag { + padding: 12rpx 20rpx; + font-size: 24rpx; + } + + .right-tag { + padding: 12rpx 20rpx; + font-size: 24rpx; + } + + .action-btn { + padding: 12rpx 20rpx; + font-size: 28rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .container { + max-width: 1000px; + } + + .header { + height: 160rpx; + padding: 0 64rpx; + } + + .title { + font-size: 40rpx; + } + + .back-btn text { + font-size: 56rpx; + } + + .add-btn { + padding: 20rpx 36rpx; + } + + .add-btn text { + font-size: 32rpx; + } + + .filter-container { + padding: 36rpx 48rpx; + } + + .filter-option { + padding: 24rpx 40rpx; + font-size: 32rpx; + } + + .member-item { + padding: 40rpx; + } + + .member-name { + font-size: 36rpx; + } + + .member-details { + font-size: 32rpx; + gap: 24rpx; + } + + .detail-row { + gap: 40rpx; + } + + .discount-price { + font-size: 36rpx; + } + + .original-price { + font-size: 28rpx; + } + + .use-type-tag { + padding: 16rpx 24rpx; + font-size: 28rpx; + } + + .right-tag { + padding: 16rpx 24rpx; + font-size: 28rpx; + } + + .action-btn { + padding: 16rpx 24rpx; + font-size: 32rpx; } } \ No newline at end of file diff --git a/src/pages/mine/about-us.vue b/src/pages/mine/about-us.vue index 9c70fce..d14535d 100644 --- a/src/pages/mine/about-us.vue +++ b/src/pages/mine/about-us.vue @@ -192,6 +192,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -210,56 +215,71 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 60rpx 32rpx; + padding: 48rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .company-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .company-logo { - width: 160rpx; - height: 160rpx; - border-radius: 80rpx; + width: 120rpx; + height: 120rpx; + border-radius: 60rpx; background-color: #409eff; display: flex; align-items: center; justify-content: center; - margin-bottom: 32rpx; + margin-bottom: 24rpx; + transition: transform 0.3s ease; + } + + .company-section:hover .company-logo { + transform: scale(1.05); } .logo-icon { - font-size: 80rpx; + font-size: 60rpx; } .company-name { - font-size: 36rpx; + font-size: 32rpx; font-weight: bold; color: #303133; - margin-bottom: 16rpx; + margin-bottom: 12rpx; text-align: center; } .company-slogan { - font-size: 24rpx; + font-size: 20rpx; color: #606266; } /* 版本信息 */ .version-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 0 16rpx 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .version-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .version-item { display: flex; justify-content: space-between; align-items: center; - padding: 20rpx 0; - border-bottom: 1rpx solid #e4e7ed; + padding: 16rpx 0; + border-bottom: 1rpx solid #f0f0f0; } .version-item:last-child { @@ -267,12 +287,12 @@ } .version-label { - font-size: 28rpx; + font-size: 24rpx; color: #606266; } .version-value { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; display: flex; @@ -285,26 +305,47 @@ border-radius: 6rpx; background-color: #67c23a; margin-right: 8rpx; + animation: pulse 2s infinite; } .status-text { color: #67c23a; } + @keyframes pulse { + 0% { + transform: scale(1); + opacity: 1; + } + 50% { + transform: scale(1.2); + opacity: 0.8; + } + 100% { + transform: scale(1); + opacity: 1; + } + } + /* 功能介绍 */ .features-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 0 16rpx 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .features-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-title { - font-size: 32rpx; + font-size: 28rpx; font-weight: bold; color: #303133; - margin-bottom: 32rpx; + margin-bottom: 24rpx; padding-left: 12rpx; border-left: 8rpx solid #409eff; line-height: 1.2; @@ -312,21 +353,28 @@ .features-list { display: grid; - grid-template-columns: repeat(auto-fill, minmax(300rpx, 1fr)); - gap: 24rpx; + grid-template-columns: repeat(auto-fill, minmax(240rpx, 1fr)); + gap: 16rpx; } .feature-item { display: flex; align-items: flex-start; - padding: 24rpx; - border: 1rpx solid #e4e7ed; + padding: 20rpx; + border: 1rpx solid #dcdfe6; border-radius: 12rpx; background-color: #f9f9f9; + transition: all 0.3s ease; + } + + .feature-item:hover { + transform: translateY(-2rpx); + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1); + border-color: #409eff; } .feature-icon { - font-size: 40rpx; + font-size: 36rpx; margin-right: 16rpx; flex-shrink: 0; } @@ -336,7 +384,7 @@ } .feature-title { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; margin-bottom: 8rpx; @@ -344,38 +392,49 @@ } .feature-desc { - font-size: 24rpx; + font-size: 20rpx; color: #606266; line-height: 1.4; } /* 联系信息 */ .contact-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 0 16rpx 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .contact-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .contact-list { display: flex; flex-direction: column; - gap: 24rpx; + gap: 16rpx; } .contact-item { display: flex; align-items: center; - padding: 24rpx; - border: 1rpx solid #e4e7ed; + padding: 20rpx; + border: 1rpx solid #dcdfe6; border-radius: 12rpx; background-color: #f9f9f9; + transition: all 0.3s ease; + } + + .contact-item:hover { + border-color: #409eff; + box-shadow: 0 2rpx 8rpx rgba(64, 158, 255, 0.1); } .contact-icon { - font-size: 40rpx; - margin-right: 24rpx; + font-size: 36rpx; + margin-right: 20rpx; flex-shrink: 0; } @@ -384,13 +443,13 @@ } .contact-label { - font-size: 24rpx; + font-size: 20rpx; color: #606266; margin-bottom: 4rpx; } .contact-value { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; } @@ -401,42 +460,194 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 40rpx 32rpx; - background-color: #f0f2f5; + padding: 32rpx; + background-color: #f5f7fa; margin-top: auto; } .copyright-text { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; margin-bottom: 8rpx; } .copyright-desc { - font-size: 24rpx; + font-size: 20rpx; color: #606266; - margin-bottom: 24rpx; + margin-bottom: 16rpx; } .copyright-policy { display: flex; align-items: center; - gap: 24rpx; + gap: 16rpx; } .policy-item { - font-size: 24rpx; + font-size: 20rpx; color: #409eff; cursor: pointer; + transition: color 0.3s ease; + } + + .policy-item:hover { + color: #66b1ff; + text-decoration: underline; } .policy-divider { - font-size: 24rpx; + font-size: 20rpx; color: #909399; } + /* 平板设备响应式 */ + @media screen and (min-width: 768px) { + .about-us-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .company-section { + margin: 16rpx 32rpx; + padding: 64rpx 48rpx; + } + + .company-logo { + width: 160rpx; + height: 160rpx; + border-radius: 80rpx; + margin-bottom: 32rpx; + } + + .logo-icon { + font-size: 80rpx; + } + + .company-name { + font-size: 36rpx; + margin-bottom: 16rpx; + } + + .company-slogan { + font-size: 24rpx; + } + + .version-section { + margin: 0 32rpx 16rpx; + padding: 32rpx 40rpx; + } + + .version-item { + padding: 20rpx 0; + } + + .version-label { + font-size: 28rpx; + } + + .version-value { + font-size: 28rpx; + } + + .features-section { + margin: 0 32rpx 16rpx; + padding: 32rpx 40rpx; + } + + .section-title { + font-size: 32rpx; + margin-bottom: 32rpx; + } + + .features-list { + grid-template-columns: repeat(auto-fill, minmax(360rpx, 1fr)); + gap: 24rpx; + } + + .feature-item { + padding: 24rpx; + } + + .feature-icon { + font-size: 48rpx; + margin-right: 24rpx; + } + + .feature-title { + font-size: 28rpx; + margin-bottom: 12rpx; + } + + .feature-desc { + font-size: 24rpx; + } + + .contact-section { + margin: 0 32rpx 16rpx; + padding: 32rpx 40rpx; + } + + .contact-list { + gap: 24rpx; + } + + .contact-item { + padding: 24rpx; + } + + .contact-icon { + font-size: 48rpx; + margin-right: 24rpx; + } + + .contact-label { + font-size: 24rpx; + margin-bottom: 8rpx; + } + + .contact-value { + font-size: 28rpx; + } + + .copyright-section { + padding: 48rpx; + } + + .copyright-text { + font-size: 28rpx; + margin-bottom: 12rpx; + } + + .copyright-desc { + font-size: 24rpx; + margin-bottom: 24rpx; + } + + .policy-item { + font-size: 24rpx; + } + + .policy-divider { + font-size: 24rpx; + } + } + /* 大屏设备响应式 */ @media screen and (min-width: 1024px) { .about-us-container { @@ -457,62 +668,61 @@ } .company-section { - padding: 100rpx 50rpx; + padding: 80rpx 48rpx; } .company-logo { - width: 200rpx; - height: 200rpx; - border-radius: 100rpx; - margin-bottom: 48rpx; + width: 180rpx; + height: 180rpx; + border-radius: 90rpx; + margin-bottom: 32rpx; } .logo-icon { - font-size: 100rpx; + font-size: 96rpx; } .company-name { - font-size: 48rpx; - margin-bottom: 24rpx; + font-size: 40rpx; + margin-bottom: 16rpx; } .company-slogan { - font-size: 32rpx; + font-size: 28rpx; } .version-section { - padding: 48rpx; + padding: 32rpx 48rpx; } .version-item { - padding: 28rpx 0; + padding: 24rpx 0; } .version-label { - font-size: 36rpx; + font-size: 32rpx; } .version-value { - font-size: 36rpx; + font-size: 32rpx; } .features-section { - padding: 48rpx; + padding: 32rpx 48rpx; } .section-title { - font-size: 40rpx; - margin-bottom: 48rpx; + font-size: 36rpx; + margin-bottom: 36rpx; } .features-list { - grid-template-columns: repeat(auto-fill, minmax(450rpx, 1fr)); - gap: 40rpx; + grid-template-columns: repeat(auto-fill, minmax(400rpx, 1fr)); + gap: 24rpx; } .feature-item { - padding: 40rpx; - border-radius: 20rpx; + padding: 28rpx; } .feature-icon { @@ -521,61 +731,60 @@ } .feature-title { - font-size: 36rpx; - margin-bottom: 16rpx; - } - - .feature-desc { - font-size: 32rpx; - } - - .contact-section { - padding: 48rpx; - } - - .contact-list { - gap: 40rpx; - } - - .contact-item { - padding: 40rpx; - border-radius: 20rpx; - } - - .contact-icon { - font-size: 56rpx; - margin-right: 28rpx; - } - - .contact-label { font-size: 32rpx; margin-bottom: 12rpx; } + .feature-desc { + font-size: 28rpx; + } + + .contact-section { + padding: 32rpx 48rpx; + } + + .contact-list { + gap: 24rpx; + } + + .contact-item { + padding: 28rpx; + } + + .contact-icon { + font-size: 56rpx; + margin-right: 24rpx; + } + + .contact-label { + font-size: 28rpx; + margin-bottom: 8rpx; + } + .contact-value { - font-size: 36rpx; + font-size: 32rpx; } .copyright-section { - padding: 80rpx 50rpx; + padding: 64rpx; } .copyright-text { - font-size: 36rpx; + font-size: 32rpx; margin-bottom: 16rpx; } .copyright-desc { - font-size: 32rpx; - margin-bottom: 40rpx; + font-size: 28rpx; + margin-bottom: 32rpx; } .policy-item { - font-size: 32rpx; + font-size: 28rpx; } .policy-divider { - font-size: 32rpx; + font-size: 28rpx; } } \ No newline at end of file diff --git a/src/pages/mine/help-center.vue b/src/pages/mine/help-center.vue index 2e7445f..0841b66 100644 --- a/src/pages/mine/help-center.vue +++ b/src/pages/mine/help-center.vue @@ -132,7 +132,7 @@ { id: 4, question: '如何给学员赠送会员?', - answer: '在工作页面的"会员维护"模块中,点击"赠送会员操作",输入学员信息和赠送时长,即可生成赠送会员的核验码,学员使用核验码即可激活会员。' + answer: '在工作页面的"会员维护"模块中,点击"赠送会员操作",点击生成赠送会员的核验码,学员使用核验码即可激活会员。' }, { id: 5, @@ -292,6 +292,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -307,22 +312,27 @@ /* 常见问题 */ .faq-section { flex: 1; - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .faq-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-header { display: flex; justify-content: space-between; align-items: center; - margin-bottom: 32rpx; + margin-bottom: 24rpx; } .section-title { - font-size: 32rpx; + font-size: 28rpx; font-weight: bold; color: #303133; line-height: 1.2; @@ -333,7 +343,7 @@ } .search-input { - width: 300rpx; + width: 240rpx; height: 60rpx; padding: 0 24rpx; background-color: #f9f9f9; @@ -341,6 +351,13 @@ border-radius: 30rpx; font-size: 24rpx; color: #303133; + transition: all 0.3s ease; + } + + .search-input:focus { + border-color: #409eff; + box-shadow: 0 0 0 4rpx rgba(64, 158, 255, 0.1); + outline: none; } .faq-list { @@ -354,6 +371,12 @@ border-radius: 12rpx; overflow: hidden; background-color: #f9f9f9; + transition: all 0.3s ease; + } + + .faq-item:hover { + border-color: #c6e2ff; + box-shadow: 0 2rpx 8rpx rgba(64, 158, 255, 0.1); } .faq-header { @@ -362,15 +385,16 @@ align-items: center; padding: 24rpx; cursor: pointer; + transition: all 0.3s ease; } .faq-header:hover { - background-color: #f0f0f0; + background-color: #f5faff; } .faq-question { flex: 1; - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; line-height: 1.4; @@ -380,36 +404,42 @@ font-size: 24rpx; color: #606266; margin-left: 16rpx; + transition: transform 0.3s ease; } .faq-answer { padding: 0 24rpx 24rpx; - font-size: 26rpx; + font-size: 22rpx; color: #606266; line-height: 1.6; } /* 使用指南 */ .guide-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 0 16rpx 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .guide-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .guide-list { display: flex; flex-direction: column; gap: 16rpx; - margin-top: 24rpx; + margin-top: 16rpx; } .guide-item { display: flex; align-items: center; padding: 24rpx; - border: 1rpx solid #e4e7ed; + border: 1rpx solid #dcdfe6; border-radius: 12rpx; background-color: #f9f9f9; cursor: pointer; @@ -419,6 +449,7 @@ .guide-item:hover { transform: translateY(-2rpx); box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1); + border-color: #409eff; } .guide-icon { @@ -431,7 +462,7 @@ } .guide-title { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; margin-bottom: 8rpx; @@ -439,39 +470,55 @@ } .guide-desc { - font-size: 24rpx; + font-size: 20rpx; color: #606266; line-height: 1.4; } .guide-arrow { - font-size: 32rpx; + font-size: 28rpx; color: #909399; + transition: color 0.3s ease; + } + + .guide-item:hover .guide-arrow { + color: #409eff; } /* 联系客服 */ .contact-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 0 16rpx 32rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .contact-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .contact-info { display: flex; flex-direction: column; gap: 24rpx; - margin-top: 24rpx; + margin-top: 16rpx; } .contact-item { display: flex; align-items: center; padding: 24rpx; - border: 1rpx solid #e4e7ed; + border: 1rpx solid #dcdfe6; border-radius: 12rpx; background-color: #f9f9f9; + transition: all 0.3s ease; + } + + .contact-item:hover { + border-color: #409eff; + box-shadow: 0 2rpx 8rpx rgba(64, 158, 255, 0.1); } .contact-icon { @@ -484,13 +531,13 @@ } .contact-label { - font-size: 24rpx; + font-size: 20rpx; color: #606266; margin-bottom: 4rpx; } .contact-value { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; } @@ -499,9 +546,15 @@ padding: 12rpx 24rpx; background-color: #409eff; color: #fff; - border-radius: 8rpx; + border-radius: 12rpx; font-size: 24rpx; cursor: pointer; + transition: all 0.3s ease; + } + + .contact-action:hover { + background-color: #66b1ff; + box-shadow: 0 4rpx 12rpx rgba(64, 158, 255, 0.3); } /* 空状态 */ @@ -510,7 +563,7 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 100rpx 0; + padding: 80rpx 0; text-align: center; } @@ -520,11 +573,120 @@ } .empty-text { - font-size: 28rpx; + font-size: 24rpx; color: #909399; } + /* 平板设备响应式 */ + @media screen and (min-width: 768px) { + .help-center-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .faq-section, + .guide-section, + .contact-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; + } + + .section-title { + font-size: 32rpx; + } + + .search-input { + width: 300rpx; + height: 70rpx; + padding: 0 32rpx; + font-size: 28rpx; + } + + .faq-header { + padding: 32rpx; + } + + .faq-question { + font-size: 28rpx; + } + + .faq-icon { + font-size: 28rpx; + } + + .faq-answer { + padding: 0 32rpx 32rpx; + font-size: 24rpx; + } + + .guide-item { + padding: 32rpx; + } + + .guide-icon { + font-size: 56rpx; + margin-right: 32rpx; + } + + .guide-title { + font-size: 28rpx; + } + + .guide-desc { + font-size: 24rpx; + } + + .guide-arrow { + font-size: 32rpx; + } + + .contact-item { + padding: 32rpx; + } + + .contact-icon { + font-size: 56rpx; + margin-right: 32rpx; + } + + .contact-label { + font-size: 24rpx; + } + + .contact-value { + font-size: 28rpx; + } + + .contact-action { + padding: 16rpx 32rpx; + font-size: 28rpx; + } + + .empty-icon { + font-size: 120rpx; + margin-bottom: 32rpx; + } + + .empty-text { + font-size: 28rpx; + } + } + /* 大屏设备响应式 */ @media screen and (min-width: 1024px) { .help-center-container { @@ -547,26 +709,26 @@ .faq-section, .guide-section, .contact-section { - padding: 48rpx; + padding: 40rpx 48rpx; } .section-title { - font-size: 40rpx; + font-size: 36rpx; } .search-input { - width: 400rpx; - height: 84rpx; + width: 360rpx; + height: 80rpx; padding: 0 36rpx; font-size: 32rpx; } .faq-header { - padding: 40rpx; + padding: 36rpx; } .faq-question { - font-size: 36rpx; + font-size: 32rpx; } .faq-icon { @@ -574,12 +736,12 @@ } .faq-answer { - padding: 0 40rpx 40rpx; - font-size: 32rpx; + padding: 0 36rpx 36rpx; + font-size: 28rpx; } .guide-item { - padding: 40rpx; + padding: 36rpx; } .guide-icon { @@ -588,19 +750,19 @@ } .guide-title { - font-size: 36rpx; - } - - .guide-desc { font-size: 32rpx; } + .guide-desc { + font-size: 28rpx; + } + .guide-arrow { - font-size: 40rpx; + font-size: 36rpx; } .contact-item { - padding: 40rpx; + padding: 36rpx; } .contact-icon { @@ -609,15 +771,15 @@ } .contact-label { - font-size: 32rpx; + font-size: 28rpx; } .contact-value { - font-size: 36rpx; + font-size: 32rpx; } .contact-action { - padding: 20rpx 40rpx; + padding: 16rpx 32rpx; font-size: 32rpx; } @@ -627,7 +789,7 @@ } .empty-text { - font-size: 36rpx; + font-size: 32rpx; } } \ No newline at end of file diff --git a/src/pages/mine/index.vue b/src/pages/mine/index.vue index da7f02b..d9cacc3 100644 --- a/src/pages/mine/index.vue +++ b/src/pages/mine/index.vue @@ -356,10 +356,9 @@ .feature-card { display: flex; align-items: center; - background-color: #fff; - border-radius: 16rpx; + background-color: #f9f9f9; + border-radius: 12rpx; padding: 24rpx; - box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); transition: all 0.3s ease; cursor: pointer; } @@ -387,7 +386,7 @@ /* 图标文本样式 */ .icon-text { - font-size: 36rpx; + font-size: 40rpx; line-height: 1; text-align: center; } @@ -444,7 +443,104 @@ color: #909399; line-height: 1.4; } - + + /* 响应式设计 */ + @media screen and (min-width: 500px) { + .mine-container { + max-width: 900px; + margin: 0 auto; + padding: 30rpx; + } + + .welcome-section { + padding: 50rpx; + } + + .welcome-title { + font-size: 44rpx; + } + + .welcome-desc { + font-size: 28rpx; + } + + .section { + padding: 30rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 30rpx; + } + + .feature-card { + padding: 30rpx; + } + + .feature-icon { + width: 100rpx; + height: 100rpx; + margin-right: 24rpx; + } + + .icon-text { + font-size: 48rpx; + } + + .feature-title { + font-size: 32rpx; + } + + .feature-desc { + font-size: 24rpx; + } + } + + /* 平板响应式 */ + @media screen and (min-width: 768px) { + .mine-container { + max-width: 900px; + margin: 0 auto; + padding: 40rpx; + width: 100%; + } + + .welcome-section { + padding: 56rpx; + margin-bottom: 40rpx; + } + + .feature-section { + margin-bottom: 40rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .feature-card { + padding: 32rpx; + } + + .feature-icon { + width: 100rpx; + height: 100rpx; + margin-right: 24rpx; + } + + .icon-text { + font-size: 48rpx; + } + + .feature-title { + font-size: 32rpx; + } + + .feature-desc { + font-size: 24rpx; + } + } /* 大屏设备响应式 */ @media screen and (min-width: 1024px) { @@ -482,28 +578,22 @@ font-size: 26rpx; } - .role-tab { - padding: 32rpx; - font-size: 36rpx; - } - .section-title { font-size: 40rpx; - margin-bottom: 40rpx; + margin-bottom: 36rpx; } .feature-card { - padding: 40rpx; + padding: 36rpx; } .feature-icon { width: 120rpx; height: 120rpx; - margin-right: 32rpx; } .icon-text { - font-size: 52rpx; + font-size: 56rpx; } .feature-title { diff --git a/src/pages/mine/password-change.vue b/src/pages/mine/password-change.vue index 39851b1..778391e 100644 --- a/src/pages/mine/password-change.vue +++ b/src/pages/mine/password-change.vue @@ -284,7 +284,7 @@ } .header-right { - width: 60rpx; + width: 150rpx; text-align: right; } diff --git a/src/pages/mine/personal-info.vue b/src/pages/mine/personal-info.vue index da7f6db..4d562ab 100644 --- a/src/pages/mine/personal-info.vue +++ b/src/pages/mine/personal-info.vue @@ -199,6 +199,11 @@ const loadUserInfo = async () => { font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -208,7 +213,7 @@ const loadUserInfo = async () => { } .header-right { - width: 60rpx; + width: 150rpx; text-align: right; } @@ -217,6 +222,13 @@ const loadUserInfo = async () => { color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .save-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 表单区域 */ @@ -224,8 +236,13 @@ const loadUserInfo = async () => { padding: 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .form-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } /* 头像部分 */ @@ -366,8 +383,13 @@ const loadUserInfo = async () => { padding: 32rpx; background-color: #fff; margin: 0 16rpx 32rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .account-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .section-title { @@ -410,6 +432,105 @@ const loadUserInfo = async () => { } + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { + .personal-info-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 32rpx; + } + + .form-section { + margin: 16rpx 32rpx; + padding: 40rpx; + } + + .avatar-section { + margin-bottom: 48rpx; + } + + .avatar-preview { + width: 240rpx; + height: 240rpx; + } + + .avatar-icon { + font-size: 96rpx; + } + + .form-group { + margin-bottom: 40rpx; + } + + .form-label { + font-size: 32rpx; + margin-bottom: 16rpx; + } + + .form-input { + height: 96rpx; + font-size: 32rpx; + padding: 0 32rpx; + } + + .form-textarea { + min-height: 200rpx; + font-size: 32rpx; + padding: 32rpx; + } + + .form-text { + height: 96rpx; + font-size: 32rpx; + padding: 0 32rpx; + } + + .picker-display { + font-size: 32rpx; + padding: 0 32rpx; + } + + .account-section { + margin: 0 32rpx 32rpx; + padding: 40rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .account-info { + gap: 24rpx; + } + + .info-item { + padding: 24rpx 0; + } + + .info-label, + .info-value { + font-size: 32rpx; + } + } + /* 大屏设备响应式 */ @media screen and (min-width: 1024px) { .personal-info-container { @@ -450,10 +571,6 @@ const loadUserInfo = async () => { font-size: 112rpx; } - .avatar-tip { - font-size: 28rpx; - } - .form-group { margin-bottom: 48rpx; } diff --git a/src/pages/mine/school-info.vue b/src/pages/mine/school-info.vue index 1b66890..99234f4 100644 --- a/src/pages/mine/school-info.vue +++ b/src/pages/mine/school-info.vue @@ -215,6 +215,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -224,7 +229,7 @@ } .header-right { - width: 60rpx; + width: 150rpx; text-align: right; } @@ -233,24 +238,36 @@ color: #409eff; font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + padding: 8rpx 16rpx; + border-radius: 8rpx; + } + + .save-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } /* 表单区域 */ .form-section { flex: 1; - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .form-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .form-group { - margin-bottom: 32rpx; + margin-bottom: 24rpx; } .form-label { - font-size: 28rpx; + font-size: 24rpx; font-weight: 600; color: #303133; margin-bottom: 12rpx; @@ -263,60 +280,63 @@ .form-input { width: 100%; - height: 80rpx; - padding: 0 24rpx; - font-size: 28rpx; + height: 70rpx; + padding: 20rpx 24rpx; + font-size: 24rpx; color: #303133; border: 1rpx solid #dcdfe6; - border-radius: 8rpx; + border-radius: 12rpx; background-color: #f9f9f9; box-sizing: border-box; + transition: all 0.3s ease; } .form-input:focus { outline: none; border-color: #409eff; - box-shadow: 0 0 0 2rpx rgba(64, 158, 255, 0.2); + box-shadow: 0 0 0 4rpx rgba(64, 158, 255, 0.1); } .form-textarea { width: 100%; min-height: 160rpx; padding: 24rpx; - font-size: 28rpx; + font-size: 24rpx; color: #303133; border: 1rpx solid #dcdfe6; - border-radius: 8rpx; + border-radius: 12rpx; background-color: #f9f9f9; box-sizing: border-box; resize: none; + transition: all 0.3s ease; } .form-textarea:focus { outline: none; border-color: #409eff; - box-shadow: 0 0 0 2rpx rgba(64, 158, 255, 0.2); + box-shadow: 0 0 0 4rpx rgba(64, 158, 255, 0.1); } /* 提示信息 */ .tips-section { - padding: 32rpx; + padding: 24rpx 32rpx; background-color: #ecf5ff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; border-left: 8rpx solid #409eff; + transition: all 0.3s ease; } .tips-title { - font-size: 28rpx; + font-size: 24rpx; font-weight: bold; color: #409eff; - margin-bottom: 16rpx; + margin-bottom: 12rpx; line-height: 1.2; } .tips-content { - font-size: 24rpx; + font-size: 20rpx; color: #606266; line-height: 1.6; } @@ -326,6 +346,76 @@ } + /* 平板设备响应式 */ + @media screen and (min-width: 768px) { + .school-info-container { + max-width: 900px; + margin: 0 auto; + width: 100%; + } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + + .header-title { + font-size: 36rpx; + } + + .back-icon { + font-size: 48rpx; + } + + .save-btn { + font-size: 32rpx; + } + + .form-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; + } + + .form-group { + margin-bottom: 32rpx; + } + + .form-label { + font-size: 28rpx; + margin-bottom: 16rpx; + } + + .form-input { + padding: 24rpx 28rpx; + font-size: 28rpx; + height: 80rpx; + } + + .form-textarea { + padding: 24rpx; + font-size: 28rpx; + min-height: 200rpx; + } + + .tips-section { + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; + } + + .tips-title { + font-size: 28rpx; + margin-bottom: 16rpx; + } + + .tips-content { + font-size: 24rpx; + } + + .tip-item { + margin-bottom: 12rpx; + } + } + /* 大屏设备响应式 */ @media screen and (min-width: 1024px) { .school-info-container { @@ -350,41 +440,41 @@ } .form-section { - padding: 48rpx; + padding: 40rpx 48rpx; } .form-group { - margin-bottom: 48rpx; + margin-bottom: 36rpx; } .form-label { - font-size: 36rpx; + font-size: 32rpx; margin-bottom: 20rpx; } .form-input { - height: 112rpx; - font-size: 36rpx; - padding: 0 40rpx; + padding: 28rpx 32rpx; + font-size: 32rpx; + height: 90rpx; } .form-textarea { + padding: 28rpx; + font-size: 32rpx; min-height: 240rpx; - font-size: 36rpx; - padding: 40rpx; } .tips-section { - padding: 48rpx; + padding: 40rpx 48rpx; } .tips-title { - font-size: 36rpx; - margin-bottom: 28rpx; + font-size: 32rpx; + margin-bottom: 20rpx; } .tips-content { - font-size: 32rpx; + font-size: 28rpx; } .tip-item { diff --git a/src/pages/student/list.vue b/src/pages/student/list.vue index f656ecc..09a5364 100644 --- a/src/pages/student/list.vue +++ b/src/pages/student/list.vue @@ -221,6 +221,11 @@ font-size: 40rpx; color: #303133; cursor: pointer; + transition: color 0.3s ease; + } + + .back-icon:hover { + color: #409eff; } .header-title { @@ -241,8 +246,13 @@ padding: 24rpx 32rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + } + + .filter-section:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); } .filter-row { @@ -301,9 +311,20 @@ display: flex; align-items: center; background-color: #fff; - border-radius: 16rpx; + border-radius: 12rpx; padding: 24rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); + transition: all 0.3s ease; + } + + .student-item:hover { + box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); + transform: translateY(-2rpx); + } + + .student-item:active { + transform: translateY(2rpx); + box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .student-avatar { @@ -375,7 +396,7 @@ padding: 24rpx; background-color: #fff; margin: 16rpx; - border-radius: 16rpx; + border-radius: 12rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); } @@ -395,6 +416,11 @@ font-size: 20rpx; color: #409eff; cursor: pointer; + transition: all 0.3s ease; + } + + .page-btn:hover { + background-color: rgba(64, 158, 255, 0.1); } .page-btn.disabled { @@ -402,29 +428,143 @@ cursor: not-allowed; } - /* 大屏平板响应式 */ - @media screen and (min-width: 1024px) { + .page-btn.disabled:hover { + background-color: transparent; + } + + /* 平板和大屏响应式 */ + @media screen and (min-width: 768px) { .student-list-container { - max-width: 1200px; + max-width: 900px; + margin: 0 auto; + width: 100%; } + + .page-header { + height: 140rpx; + padding: 0 48rpx; + } + .header-title { + font-size: 36rpx; + } + + .back-icon { font-size: 48rpx; } - - .back-icon { - font-size: 60rpx; - } - + .filter-section { - padding: 40rpx; + margin: 16rpx 32rpx; + padding: 32rpx 40rpx; } .filter-label { - font-size: 48rpx; + font-size: 28rpx; + margin-bottom: 12rpx; + } + + .filter-control { + padding: 20rpx 24rpx; } .search-input { - font-size: 48rpx; + font-size: 28rpx; + } + + .student-list-section { + padding: 0 32rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 32rpx; + } + + .student-list { + gap: 24rpx; + } + + .student-item { + padding: 32rpx; + } + + .student-avatar { + width: 100rpx; + height: 100rpx; + border-radius: 50rpx; + margin-right: 32rpx; + } + + .avatar-placeholder { + font-size: 40rpx; + } + + .student-name { + font-size: 32rpx; + margin-bottom: 12rpx; + } + + .student-meta { + gap: 24rpx; + } + + .meta-item { + font-size: 24rpx; + } + + .pagination { + margin: 24rpx 32rpx; + padding: 28rpx 32rpx; + } + + .page-info { + font-size: 24rpx; + } + + .page-btn { + padding: 12rpx 24rpx; + font-size: 24rpx; + } + } + + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .student-list-container { + max-width: 1000px; + } + + .page-header { + height: 160rpx; + padding: 0 64rpx; + } + + .header-title { + font-size: 40rpx; + } + + .back-icon { + font-size: 56rpx; + } + + .filter-section { + padding: 36rpx 48rpx; + } + + .filter-label { + font-size: 32rpx; + } + + .filter-control { + padding: 24rpx 28rpx; + } + + .search-input { + font-size: 32rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 40rpx; } .student-item { @@ -432,23 +572,19 @@ } .student-avatar { - width: 200rpx; - height: 200rpx; - border-radius: 100rpx; + width: 120rpx; + height: 120rpx; + border-radius: 60rpx; margin-right: 40rpx; } .avatar-placeholder { - font-size: 80rpx; - } - - .section-title { - margin-top: 40rpx; - font-size: 60rpx; + font-size: 48rpx; } .student-name { - font-size: 56rpx; + font-size: 36rpx; + margin-bottom: 16rpx; } .student-meta { @@ -456,19 +592,20 @@ } .meta-item { - font-size: 44rpx; + font-size: 28rpx; } - + .pagination { - padding: 40rpx; - .page-info { - font-size: 44rpx; - } - .page-btn { - padding: 16rpx 32rpx; - border-radius: 16rpx; - font-size: 44rpx; - } + padding: 32rpx 40rpx; + } + + .page-info { + font-size: 28rpx; + } + + .page-btn { + padding: 16rpx 32rpx; + font-size: 28rpx; } } diff --git a/src/pages/student/remind.vue b/src/pages/student/remind.vue index ddf55cf..961a735 100644 --- a/src/pages/student/remind.vue +++ b/src/pages/student/remind.vue @@ -314,7 +314,7 @@ } .header-right { - width: 100rpx; + width: 150rpx; text-align: right; } diff --git a/src/pages/work/index.vue b/src/pages/work/index.vue index 9bc6af5..3c74a6c 100644 --- a/src/pages/work/index.vue +++ b/src/pages/work/index.vue @@ -474,18 +474,29 @@ min-height: 100vh; } + /* 统计区域 */ + .stats-section { + display: flex; + flex-direction: column; + gap: 30rpx; + } + .section { - margin-bottom: 24rpx; + background-color: #fff; + border-radius: 16rpx; + padding: 24rpx; + margin-bottom: 30rpx; + box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); } /* 标题样式 */ .section-title { - font-size: 28rpx; + font-size: 32rpx; font-weight: bold; color: #303133; - margin-bottom: 20rpx; - padding-left: 10rpx; - border-left: 6rpx solid #409eff; + margin-bottom: 24rpx; + padding-left: 12rpx; + border-left: 8rpx solid #409eff; line-height: 1.2; } @@ -500,10 +511,9 @@ .feature-card { display: flex; align-items: center; - background-color: #fff; + background-color: #f9f9f9; border-radius: 12rpx; - padding: 20rpx; - box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08); + padding: 24rpx; transition: all 0.3s ease; cursor: pointer; } @@ -515,20 +525,20 @@ /* 图标容器 */ .feature-icon { - width: 64rpx; - height: 64rpx; - border-radius: 12rpx; + width: 80rpx; + height: 80rpx; + border-radius: 16rpx; display: flex; align-items: center; justify-content: center; - margin-right: 16rpx; + margin-right: 20rpx; flex-shrink: 0; position: relative; } /* 图标文本样式 */ .icon-text { - font-size: 32rpx; + font-size: 40rpx; line-height: 1; text-align: center; } @@ -580,52 +590,98 @@ } .feature-title { - font-size: 24rpx; + font-size: 28rpx; font-weight: 600; color: #303133; - margin-bottom: 6rpx; + margin-bottom: 8rpx; line-height: 1.3; } .feature-desc { - font-size: 20rpx; + font-size: 22rpx; color: #909399; line-height: 1.4; } - /* 大屏设备响应式 */ - @media screen and (min-width: 1024px) { + /* 响应式设计 */ + @media screen and (min-width: 500px) { .work-container { - max-width: 1000px; + max-width: 900px; + margin: 0 auto; + padding: 30rpx; } .section { + padding: 30rpx; + } + + .section-title { + font-size: 36rpx; + margin-bottom: 30rpx; + } + + .feature-row { + gap: 20rpx; + } + + .feature-card { + padding: 30rpx; + } + + .feature-icon { + width: 100rpx; + height: 100rpx; + margin-right: 24rpx; + } + + .icon-text { + font-size: 48rpx; + } + + .feature-title { + font-size: 32rpx; + } + + .feature-desc { + font-size: 24rpx; + } + } + + /* 平板响应式 */ + @media screen and (min-width: 768px) { + .work-container { + max-width: 900px; + margin: 0 auto; + padding: 40rpx; + width: 100%; + } + + .section { + padding: 32rpx; margin-bottom: 40rpx; } .section-title { font-size: 36rpx; - margin-bottom: 28rpx; + margin-bottom: 32rpx; } .feature-row { - gap: 24rpx; + gap: 20rpx; } - + .feature-card { - flex: 0 0 calc(33.333% - 16rpx); - max-width: calc(33.333% - 16rpx); padding: 32rpx; } .feature-icon { - width: 96rpx; - height: 96rpx; + width: 100rpx; + height: 100rpx; margin-right: 24rpx; } .icon-text { - font-size: 44rpx; + font-size: 48rpx; } .feature-title { @@ -637,11 +693,44 @@ } } - /* 超大屏设备响应式 */ - @media screen and (min-width: 1440px) { + /* 大屏设备响应式 */ + @media screen and (min-width: 1024px) { + .work-container { + max-width: 1000px; + } + + .section { + padding: 36rpx; + } + + .section-title { + font-size: 40rpx; + margin-bottom: 36rpx; + } + + .feature-row { + gap: 24rpx; + } + .feature-card { - flex: 0 0 calc(25% - 18rpx); - max-width: calc(25% - 18rpx); + padding: 36rpx; + } + + .feature-icon { + width: 120rpx; + height: 120rpx; + } + + .icon-text { + font-size: 56rpx; + } + + .feature-title { + font-size: 36rpx; + } + + .feature-desc { + font-size: 26rpx; } } \ No newline at end of file diff --git a/src/utils/request.js b/src/utils/request.js index 27ae6c4..8fffd82 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -64,7 +64,7 @@ const request = config => { resolve(res.data); }) .catch(error => { - let { message } = error; + let message = error.errMsg || error.message; if (message === 'Network Error') { message = '后端接口连接异常'; } else if (message.includes('timeout')) {