From f7fdc635c7be71ff3a097d561e332e54502c1027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E6=AD=A3=E8=88=AA?= <1915581435@qq.com> Date: Fri, 1 May 2026 12:06:37 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=8F=E7=A8=8B=E5=BA=8FUI=E9=87=8D?= =?UTF-8?q?=E6=9E=84=E4=B8=BAApple=E8=AE=BE=E8=AE=A1=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?=E5=B9=B6=E6=B7=BB=E5=8A=A0tabBar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 全局样式重构为Apple Design System风格 - 添加底部tabBar导航(首页/发布/历史/私信/我的) - 更紧凑的spacing和更小的字体尺寸 - pill圆角按钮和状态标签 - Action Blue (#0066cc) 单一accent色 - 添加tabBar图标资源 Co-Authored-By: Claude Opus 4.6 --- miniprogram/app.json | 54 +- miniprogram/app.wxss | 548 +++++++++++--------- miniprogram/assets/icons/history-active.png | Bin 0 -> 2818 bytes miniprogram/assets/icons/history.png | Bin 0 -> 3711 bytes miniprogram/assets/icons/home-active.png | Bin 0 -> 2168 bytes miniprogram/assets/icons/home.png | Bin 0 -> 3595 bytes miniprogram/assets/icons/home.svg | 4 + miniprogram/assets/icons/inbox-active.png | Bin 0 -> 1478 bytes miniprogram/assets/icons/inbox.png | Bin 0 -> 2643 bytes miniprogram/assets/icons/profile-active.png | Bin 0 -> 2083 bytes miniprogram/assets/icons/profile.png | Bin 0 -> 2990 bytes miniprogram/assets/icons/publish-active.png | Bin 0 -> 2743 bytes miniprogram/assets/icons/publish.png | Bin 0 -> 3814 bytes miniprogram/pages/home/index.js | 6 +- miniprogram/pages/home/index.wxml | 6 +- miniprogram/pages/profile/index.js | 23 + miniprogram/pages/profile/index.wxml | 35 +- 17 files changed, 404 insertions(+), 272 deletions(-) create mode 100644 miniprogram/assets/icons/history-active.png create mode 100644 miniprogram/assets/icons/history.png create mode 100644 miniprogram/assets/icons/home-active.png create mode 100644 miniprogram/assets/icons/home.png create mode 100644 miniprogram/assets/icons/home.svg create mode 100644 miniprogram/assets/icons/inbox-active.png create mode 100644 miniprogram/assets/icons/inbox.png create mode 100644 miniprogram/assets/icons/profile-active.png create mode 100644 miniprogram/assets/icons/profile.png create mode 100644 miniprogram/assets/icons/publish-active.png create mode 100644 miniprogram/assets/icons/publish.png diff --git a/miniprogram/app.json b/miniprogram/app.json index 8dbe2ac..af2e090 100644 --- a/miniprogram/app.json +++ b/miniprogram/app.json @@ -1,13 +1,13 @@ { "pages": [ - "pages/login/index", - "pages/register/index", "pages/home/index", "pages/detect/index", - "pages/batch/index", "pages/history/index", "pages/inbox/index", "pages/profile/index", + "pages/login/index", + "pages/register/index", + "pages/batch/index", "pages/admin-dashboard/index", "pages/admin-review/index", "pages/admin-users/index", @@ -15,11 +15,49 @@ ], "window": { "navigationBarTitleText": "内容风控平台", - "navigationBarBackgroundColor": "#0A1A2D", - "navigationBarTextStyle": "white", - "backgroundTextStyle": "light", - "backgroundColor": "#EEF3F8" + "navigationBarBackgroundColor": "#ffffff", + "navigationBarTextStyle": "black", + "backgroundTextStyle": "dark", + "backgroundColor": "#f5f5f7" + }, + "tabBar": { + "color": "#86868b", + "selectedColor": "#0066cc", + "backgroundColor": "#ffffff", + "borderStyle": "white", + "list": [ + { + "pagePath": "pages/home/index", + "text": "首页", + "iconPath": "assets/icons/home.png", + "selectedIconPath": "assets/icons/home-active.png" + }, + { + "pagePath": "pages/detect/index", + "text": "发布", + "iconPath": "assets/icons/publish.png", + "selectedIconPath": "assets/icons/publish-active.png" + }, + { + "pagePath": "pages/history/index", + "text": "历史", + "iconPath": "assets/icons/history.png", + "selectedIconPath": "assets/icons/history-active.png" + }, + { + "pagePath": "pages/inbox/index", + "text": "私信", + "iconPath": "assets/icons/inbox.png", + "selectedIconPath": "assets/icons/inbox-active.png" + }, + { + "pagePath": "pages/profile/index", + "text": "我的", + "iconPath": "assets/icons/profile.png", + "selectedIconPath": "assets/icons/profile-active.png" + } + ] }, "style": "v2", "sitemapLocation": "sitemap.json" -} +} \ No newline at end of file diff --git a/miniprogram/app.wxss b/miniprogram/app.wxss index dd5f5a2..68db805 100644 --- a/miniprogram/app.wxss +++ b/miniprogram/app.wxss @@ -1,74 +1,99 @@ -/** app.wxss - xAI Brutalist Design System */ +/** app.wxss - Apple Design System (Compact) */ page { - --bg-dark: #1f2228; - --bg-surface: rgba(255, 255, 255, 0.03); - --bg-hover: rgba(255, 255, 255, 0.08); + /* Background Colors */ + --bg-canvas: #ffffff; + --bg-parchment: #f5f5f7; + --bg-pearl: #fafafc; + --bg-nav: #000000; - --text-primary: #ffffff; - --text-secondary: rgba(255, 255, 255, 0.7); - --text-muted: rgba(255, 255, 255, 0.5); - --text-disabled: rgba(255, 255, 255, 0.3); + /* Text Colors */ + --text-primary: #1d1d1f; + --text-secondary: #86868b; + --text-muted: #cccccc; + --text-dark-surface: #ffffff; + --text-fine-print: #7a7a7a; - --border-default: rgba(255, 255, 255, 0.1); - --border-strong: rgba(255, 255, 255, 0.2); + /* Accent Colors */ + --accent-primary: #0066cc; + --accent-focus: #0071e3; + --accent-link: #2997ff; - --focus-ring: rgb(59, 130, 246); + /* Status Colors (Apple System) */ + --status-spam: #ff3b30; + --status-ham: #34c759; + --status-warn: #ff9500; + --status-pending: #8e8e93; + /* Border Colors */ + --border-light: #f0f0f0; + --border-medium: #e0e0e0; + + /* Radius */ --radius-none: 0rpx; - --radius-subtle: 8rpx; + --radius-sm: 12rpx; + --radius-md: 16rpx; + --radius-lg: 24rpx; + --radius-pill: 9999rpx; + /* Spacing (Compact) */ --spacing-xs: 8rpx; --spacing-sm: 16rpx; --spacing-md: 24rpx; --spacing-lg: 48rpx; - --spacing-xl: 96rpx; + --spacing-xl: 64rpx; + + /* Typography */ + --font-display: 'PingFang SC', 'SF Pro Display', -apple-system, sans-serif; + --font-text: 'PingFang SC', 'SF Pro Text', -apple-system, sans-serif; min-height: 100%; color: var(--text-primary); - font-family: 'PingFang SC', 'Microsoft YaHei', -apple-system, sans-serif; - background: var(--bg-dark); + font-family: var(--font-text); + font-size: 28rpx; + line-height: 1.4; + background: var(--bg-parchment); } .container { position: relative; - padding: var(--spacing-md); - padding-bottom: calc(var(--spacing-lg) + env(safe-area-inset-bottom)); + padding: var(--spacing-sm); + padding-bottom: calc(var(--spacing-md) + env(safe-area-inset-bottom)); } /* Hero Section */ .hero { position: relative; - padding: var(--spacing-lg) 0; + padding: var(--spacing-md) 0; text-align: center; - border-bottom: 1px solid var(--border-default); } .hero-badge { display: inline-block; - padding: var(--spacing-xs) var(--spacing-sm); - border: 1px solid var(--border-strong); - color: var(--text-primary); - font-family: 'SF Mono', 'Consolas', monospace; - font-size: 22rpx; - letter-spacing: 1rpx; - text-transform: uppercase; + padding: 6rpx 12rpx; + border-radius: var(--radius-pill); + background: var(--bg-pearl); + color: var(--accent-primary); + font-family: var(--font-text); + font-size: 20rpx; + font-weight: 600; } .hero-title { - margin-top: var(--spacing-md); - font-size: 56rpx; - font-weight: 300; - letter-spacing: 2rpx; + margin-top: var(--spacing-sm); + font-family: var(--font-display); + font-size: 48rpx; + font-weight: 600; + letter-spacing: -1rpx; color: var(--text-primary); - line-height: 1.3; + line-height: 1.1; } .hero-sub { - margin-top: var(--spacing-sm); - font-size: 28rpx; + margin-top: var(--spacing-xs); + font-size: 26rpx; color: var(--text-secondary); - line-height: 1.5; + line-height: 1.4; max-width: 600rpx; margin-left: auto; margin-right: auto; @@ -77,68 +102,67 @@ page { .hero-meta { display: flex; flex-wrap: wrap; - gap: var(--spacing-xs); - margin-top: var(--spacing-md); + gap: 8rpx; + margin-top: var(--spacing-sm); + justify-content: center; } .hero-metric { - padding: var(--spacing-xs) var(--spacing-sm); - font-size: 24rpx; - color: var(--text-muted); - border: 1px solid var(--border-default); + padding: 6rpx 12rpx; + font-size: 22rpx; + color: var(--text-secondary); + border-radius: var(--radius-sm); + background: var(--bg-canvas); } /* Cards */ .card { - margin-top: var(--spacing-md); - padding: var(--spacing-md); - background: transparent; - border: 1px solid var(--border-default); + margin-top: var(--spacing-sm); + padding: var(--spacing-sm); + background: var(--bg-canvas); + border: 1rpx solid var(--border-medium); + border-radius: var(--radius-lg); overflow: hidden; } -.card:active { - border-color: var(--border-strong); -} - .card-title { - margin-bottom: var(--spacing-sm); + margin-bottom: var(--spacing-xs); color: var(--text-primary); + font-family: var(--font-display); font-size: 32rpx; - font-weight: 400; - letter-spacing: 0.5rpx; + font-weight: 600; } .card-desc { - margin-bottom: var(--spacing-sm); + margin-bottom: var(--spacing-xs); color: var(--text-secondary); - font-size: 26rpx; - line-height: 1.5; + font-size: 24rpx; + line-height: 1.4; } /* Divider */ .glass-divider { - margin: var(--spacing-sm) 0; - height: 1px; - background: var(--border-default); + margin: var(--spacing-xs) 0; + height: 1rpx; + background: var(--border-light); } /* Fields */ .field { - margin-top: var(--spacing-sm); + margin-top: var(--spacing-xs); } .field-label { display: block; - margin-bottom: var(--spacing-xs); + margin-bottom: 6rpx; color: var(--text-secondary); - font-size: 26rpx; + font-size: 24rpx; } .field-help { - margin-top: var(--spacing-xs); - color: var(--text-muted); - font-size: 24rpx; + margin-top: 6rpx; + color: var(--text-secondary); + font-size: 22rpx; } /* Inputs */ @@ -146,39 +170,40 @@ page { .textarea { width: 100%; box-sizing: border-box; - min-height: 80rpx; + min-height: 72rpx; padding: 0 var(--spacing-sm); - background: transparent; - border: 1px solid var(--border-strong); + background: var(--bg-parchment); + border: 1rpx solid var(--border-light); + border-radius: var(--radius-md); color: var(--text-primary); - font-size: 32rpx; - line-height: 80rpx; + font-size: 28rpx; + line-height: 72rpx; } .input:focus, .textarea:focus { outline: none; - border-color: var(--focus-ring); + border-color: var(--accent-primary); } .textarea { - min-height: 200rpx; - padding-top: var(--spacing-sm); - line-height: 1.5; + min-height: 160rpx; + padding-top: var(--spacing-xs); + line-height: 1.4; } .picker-value { - min-width: 180rpx; + min-width: 140rpx; text-align: right; - color: var(--text-primary); - font-size: 28rpx; + color: var(--accent-primary); + font-size: 26rpx; } /* Buttons */ .btn-row { display: flex; - gap: var(--spacing-sm); - margin-top: var(--spacing-sm); + gap: var(--spacing-xs); + margin-top: var(--spacing-xs); } .btn-row .btn { @@ -187,17 +212,16 @@ page { } .btn { - margin-top: var(--spacing-sm); - padding: var(--spacing-sm) var(--spacing-md); + margin-top: var(--spacing-xs); + padding: 16rpx 32rpx; border: none; - border-radius: 0; - font-family: 'SF Mono', 'Consolas', monospace; - font-size: 28rpx; + border-radius: var(--radius-pill); + font-family: var(--font-text); + font-size: 26rpx; font-weight: 400; - letter-spacing: 2rpx; - text-transform: uppercase; - color: var(--bg-dark); - background: var(--text-primary); + color: var(--text-dark-surface); + background: var(--accent-primary); + transition: transform 0.1s ease; } button.btn::after { @@ -205,34 +229,45 @@ button.btn::after { } .btn:active { - opacity: 0.9; + transform: scale(0.95); } .btn[disabled] { opacity: 0.3; + transform: none; +} + +/* Primary Button */ +.btn-primary { + color: var(--text-dark-surface); + background: var(--accent-primary); } /* Ghost Button */ .btn-ghost { - color: var(--text-primary); + color: var(--accent-primary); background: transparent; - border: 1px solid var(--border-strong); + border: 1rpx solid var(--accent-primary); } .btn-ghost:active { - background: var(--bg-hover); + background: rgba(0, 102, 204, 0.1); +} + +.btn-ghost[disabled] { + opacity: 0.3; + border-color: var(--text-secondary); + color: var(--text-secondary); } /* Accent Button */ .btn-accent { - color: var(--text-primary); - background: transparent; - border: 1px solid var(--border-strong); + color: var(--accent-primary); + background: var(--bg-pearl); } .btn-accent:active { - background: var(--bg-hover); - border-color: var(--text-primary); + background: var(--bg-parchment); } /* Rows */ @@ -240,21 +275,21 @@ button.btn::after { display: flex; align-items: center; justify-content: space-between; - gap: var(--spacing-sm); + gap: var(--spacing-xs); } .row + .row { - margin-top: var(--spacing-sm); + margin-top: var(--spacing-xs); } .label { color: var(--text-secondary); - font-size: 26rpx; + font-size: 24rpx; } .value { color: var(--text-primary); - font-size: 28rpx; + font-size: 26rpx; font-weight: 400; } @@ -262,158 +297,163 @@ button.btn::after { .grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: var(--spacing-sm); + gap: var(--spacing-xs); } .grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); - gap: var(--spacing-sm); + gap: var(--spacing-xs); } .grid-auto { display: grid; - grid-template-columns: repeat(auto-fit, minmax(220rpx, 1fr)); - gap: var(--spacing-sm); + grid-template-columns: repeat(auto-fit, minmax(180rpx, 1fr)); + gap: var(--spacing-xs); } /* KPI Cards */ .kpi { - padding: var(--spacing-sm); - background: var(--bg-surface); - border: 1px solid var(--border-default); -} - -.kpi:active { - border-color: var(--border-strong); + padding: var(--spacing-xs); + background: var(--bg-parchment); + border-radius: var(--radius-md); + text-align: center; } .kpi-value { - font-size: 40rpx; - font-weight: 300; + font-family: var(--font-display); + font-size: 36rpx; + font-weight: 600; color: var(--text-primary); line-height: 1.2; } .kpi-label { - margin-top: var(--spacing-xs); - font-size: 24rpx; - color: var(--text-muted); + margin-top: 4rpx; + font-size: 22rpx; + color: var(--text-secondary); } /* Module Cards */ .module-card { - padding: var(--spacing-sm); - background: var(--bg-surface); - border: 1px solid var(--border-default); + padding: var(--spacing-xs); + background: var(--bg-canvas); + border: 1rpx solid var(--border-medium); + border-radius: var(--radius-md); + transition: transform 0.1s ease; } .module-card:active { - border-color: var(--border-strong); + transform: scale(0.98); } .module-name { color: var(--text-primary); - font-size: 30rpx; - font-weight: 400; + font-size: 28rpx; + font-weight: 600; } .module-desc { - margin-top: var(--spacing-xs); + margin-top: 4rpx; color: var(--text-secondary); - font-size: 24rpx; - line-height: 1.5; + font-size: 22rpx; + line-height: 1.4; } .module-tag { display: inline-block; - margin-top: var(--spacing-sm); - padding: var(--spacing-xs) var(--spacing-sm); - color: var(--text-muted); - font-size: 22rpx; - font-family: 'SF Mono', 'Consolas', monospace; - text-transform: uppercase; - letter-spacing: 1rpx; - border: 1px solid var(--border-default); + margin-top: var(--spacing-xs); + padding: 4rpx 10rpx; + color: var(--accent-primary); + font-size: 20rpx; + font-weight: 600; + background: rgba(0, 102, 204, 0.1); + border-radius: var(--radius-pill); } /* List Items */ .list-item { - margin-top: var(--spacing-sm); - padding: var(--spacing-sm); - background: var(--bg-surface); - border: 1px solid var(--border-default); + margin-top: var(--spacing-xs); + padding: var(--spacing-xs); + background: var(--bg-canvas); + border: 1rpx solid var(--border-light); + border-radius: var(--radius-md); } .list-item:active { - border-color: var(--border-strong); + background: var(--bg-parchment); } .item-title { color: var(--text-primary); font-size: 28rpx; - font-weight: 400; - line-height: 1.4; + font-weight: 600; + line-height: 1.3; } .item-sub { - margin-top: var(--spacing-xs); - color: var(--text-muted); - font-size: 24rpx; - line-height: 1.5; + margin-top: 4rpx; + color: var(--text-secondary); + font-size: 22rpx; + line-height: 1.4; } /* Tags & Chips */ .tag { display: inline-block; - margin-right: var(--spacing-xs); - margin-bottom: var(--spacing-xs); - padding: var(--spacing-xs) var(--spacing-sm); - border: 1px solid var(--border-strong); - font-size: 24rpx; - font-family: 'SF Mono', 'Consolas', monospace; - text-transform: uppercase; - letter-spacing: 1rpx; + margin-right: 6rpx; + margin-bottom: 6rpx; + padding: 4rpx 10rpx; + border-radius: var(--radius-sm); + font-size: 22rpx; + font-family: var(--font-text); color: var(--text-primary); - background: transparent; + background: var(--bg-parchment); } .tag-danger { - border-color: rgba(255, 91, 111, 0.5); - color: rgba(255, 91, 111, 0.9); + color: var(--status-spam); + background: rgba(255, 59, 48, 0.1); } .chip-group { display: flex; flex-wrap: wrap; - gap: var(--spacing-xs); - margin-top: var(--spacing-sm); + gap: 6rpx; + margin-top: var(--spacing-xs); } .chip { - padding: var(--spacing-xs) var(--spacing-sm); - border: 1px solid var(--border-default); - font-size: 24rpx; + padding: 6rpx 12rpx; + border-radius: var(--radius-pill); + font-size: 22rpx; color: var(--text-secondary); - background: transparent; + background: var(--bg-parchment); } -/* Progress Track - Minimalist */ +.chip:active { + background: var(--bg-pearl); +} + +/* Progress Track */ .progress-track { - margin-top: var(--spacing-xs); + margin-top: 6rpx; width: 100%; - height: 4rpx; - background: var(--border-default); + height: 6rpx; + background: var(--border-light); + border-radius: var(--radius-pill); } .progress-fill { height: 100%; - background: rgba(255, 91, 111, 0.8); + background: var(--status-spam); + border-radius: var(--radius-pill); } .progress-fill-safe { height: 100%; - background: var(--text-muted); + background: var(--status-ham); + border-radius: var(--radius-pill); } /* Status Labels */ @@ -422,40 +462,39 @@ button.btn::after { .status-warn, .status-pending { display: inline-block; - padding: var(--spacing-xs) var(--spacing-sm); - font-size: 24rpx; - font-family: 'SF Mono', 'Consolas', monospace; - text-transform: uppercase; - letter-spacing: 1rpx; - border: 1px solid var(--border-strong); + padding: 4rpx 12rpx; + font-size: 22rpx; + font-family: var(--font-text); + font-weight: 600; + border-radius: var(--radius-pill); } .status-spam { - color: rgba(255, 91, 111, 0.9); - border-color: rgba(255, 91, 111, 0.5); + color: var(--text-dark-surface); + background: var(--status-spam); } .status-ham { - color: rgba(45, 207, 149, 0.9); - border-color: rgba(45, 207, 149, 0.5); + color: var(--text-dark-surface); + background: var(--status-ham); } .status-warn { - color: rgba(255, 180, 84, 0.9); - border-color: rgba(255, 180, 84, 0.5); + color: var(--text-dark-surface); + background: var(--status-warn); } .status-pending { - color: var(--text-muted); - border-color: var(--border-default); + color: var(--text-primary); + background: var(--bg-parchment); } /* Pager */ .pager-row { - margin-top: var(--spacing-sm); + margin-top: var(--spacing-xs); display: flex; justify-content: space-between; - gap: var(--spacing-sm); + gap: var(--spacing-xs); } .pager-btn { @@ -464,44 +503,44 @@ button.btn::after { /* Muted & Small */ .muted { - color: var(--text-muted); - font-size: 26rpx; - line-height: 1.5; + color: var(--text-secondary); + font-size: 22rpx; + line-height: 1.4; } .small { - font-size: 24rpx; + font-size: 20rpx; } .empty { text-align: center; - padding: var(--spacing-lg); - color: var(--text-muted); - font-size: 26rpx; - line-height: 1.5; + padding: var(--spacing-md); + color: var(--text-secondary); + font-size: 24rpx; + line-height: 1.4; } /* Animations */ .fade-up { - animation: fadeUp 0.4s ease both; + animation: fadeUp 0.3s ease both; } .fade-up-delay-1 { - animation-delay: 0.08s; + animation-delay: 0.05s; } .fade-up-delay-2 { - animation-delay: 0.16s; + animation-delay: 0.1s; } .fade-up-delay-3 { - animation-delay: 0.24s; + animation-delay: 0.15s; } @keyframes fadeUp { from { opacity: 0; - transform: translateY(16rpx); + transform: translateY(12rpx); } to { opacity: 1; @@ -513,15 +552,15 @@ button.btn::after { .evidence-grid { display: flex; flex-wrap: wrap; - gap: var(--spacing-sm); - margin-top: var(--spacing-sm); + gap: var(--spacing-xs); + margin-top: var(--spacing-xs); } .evidence-item { position: relative; - width: 120rpx; - height: 120rpx; - border: 1px solid var(--border-strong); + width: 100rpx; + height: 100rpx; + border-radius: var(--radius-sm); overflow: hidden; } @@ -539,132 +578,135 @@ button.btn::after { position: absolute; top: -4rpx; right: -4rpx; - width: 32rpx; - height: 32rpx; - background: rgba(255, 91, 111, 0.9); - color: var(--text-primary); - font-size: 24rpx; + width: 28rpx; + height: 28rpx; + background: var(--status-spam); + color: var(--text-dark-surface); + font-size: 20rpx; text-align: center; - line-height: 32rpx; + line-height: 28rpx; + border-radius: 50%; } .evidence-add { - width: 120rpx; - height: 120rpx; - border: 1px solid var(--border-strong); + width: 100rpx; + height: 100rpx; + border-radius: var(--radius-sm); + background: var(--bg-parchment); display: flex; align-items: center; justify-content: center; } .evidence-add-icon { - font-size: 48rpx; - color: var(--text-muted); + font-size: 36rpx; + color: var(--text-secondary); } /* Credit Score Bar */ .credit-score-bar { position: relative; - width: 180rpx; - height: 28rpx; - background: var(--border-default); + width: 140rpx; + height: 20rpx; + background: var(--border-light); + border-radius: var(--radius-pill); } .credit-fill { height: 100%; - background: rgba(45, 207, 149, 0.6); + background: var(--status-ham); + border-radius: var(--radius-pill); } .credit-value { position: absolute; - right: var(--spacing-xs); + right: 8rpx; top: 50%; transform: translateY(-50%); - font-size: 22rpx; + font-size: 18rpx; color: var(--text-primary); } /* Report Modal */ .report-modal { - margin-top: var(--spacing-md); - padding: var(--spacing-md); - background: var(--bg-surface); - border: 1px solid var(--border-strong); + margin-top: var(--spacing-sm); + padding: var(--spacing-sm); + background: var(--bg-canvas); + border: 1rpx solid var(--border-medium); + border-radius: var(--radius-lg); position: relative; } .report-header { text-align: center; - margin-bottom: var(--spacing-sm); + margin-bottom: var(--spacing-xs); } .report-title { - font-size: 36rpx; - font-weight: 300; + font-size: 32rpx; + font-weight: 600; color: var(--text-primary); - font-family: 'SF Mono', 'Consolas', monospace; + font-family: var(--font-display); } .report-period { - font-size: 24rpx; - color: var(--text-muted); - margin-top: var(--spacing-xs); + font-size: 22rpx; + color: var(--text-secondary); + margin-top: 4rpx; } .report-close { position: absolute; - top: var(--spacing-sm); - right: var(--spacing-sm); - width: 40rpx; - height: 40rpx; - color: rgba(255, 91, 111, 0.9); - font-size: 32rpx; + top: var(--spacing-xs); + right: var(--spacing-xs); + width: 36rpx; + height: 36rpx; + color: var(--status-spam); + font-size: 28rpx; text-align: center; - line-height: 40rpx; + line-height: 36rpx; } .report-section { - margin-top: var(--spacing-sm); - padding: var(--spacing-sm); + margin-top: var(--spacing-xs); + padding: var(--spacing-xs); background: transparent; - border-top: 1px solid var(--border-default); + border-top: 1rpx solid var(--border-light); } .report-section-title { - font-size: 28rpx; + font-size: 24rpx; color: var(--text-secondary); - margin-bottom: var(--spacing-sm); - font-family: 'SF Mono', 'Consolas', monospace; - text-transform: uppercase; - letter-spacing: 1rpx; + margin-bottom: var(--spacing-xs); + font-weight: 600; } .report-kpi { - padding: var(--spacing-sm); - background: var(--bg-surface); + padding: var(--spacing-xs); + background: var(--bg-parchment); text-align: center; - border: 1px solid var(--border-default); + border-radius: var(--radius-md); } .report-kpi-value { - font-size: 32rpx; - font-weight: 300; + font-size: 28rpx; + font-weight: 600; color: var(--text-primary); } .report-kpi-label { - font-size: 22rpx; - color: var(--text-muted); - margin-top: var(--spacing-xs); + font-size: 20rpx; + color: var(--text-secondary); + margin-top: 4rpx; } .report-trend-item { - margin-top: var(--spacing-xs); + margin-top: 4rpx; } /* Note textarea */ .note-textarea { - min-height: 120rpx; + min-height: 100rpx; } /* Media Query */ diff --git a/miniprogram/assets/icons/history-active.png b/miniprogram/assets/icons/history-active.png new file mode 100644 index 0000000000000000000000000000000000000000..a47f7127e203d4c539d42f1939a3204bad00ea77 GIT binary patch literal 2818 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 UZw-}WUH||907*qoM6N<$f_;G$R{#J2 literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/history.png b/miniprogram/assets/icons/history.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3309fb4b29ae9d6e39b6ec12e0efd742e350a0 GIT binary patch literal 3711 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 Wq_SL~a%BHU36M-IjVldl%>Mv=g_EuT literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/home-active.png b/miniprogram/assets/icons/home-active.png new file mode 100644 index 0000000000000000000000000000000000000000..e34273fe4bc1fd26a6defcd283ee2b8b72863de5 GIT binary patch literal 2168 zcmc&#`#;l*8@C~wyApA1`xxb*0z zH{1rx4^$X-g9xDdx{AiY0*9G_BZ2{7T{7=0_|e$3=h>;6GceK=#UsmY3Us1;s_q*2peXX(lTjvm_MiV4y4b`KZ7q7hM1^=c)t$Bwv zHg%-SKG}O=Kr}0Mk6<-y4JaQVzM3XpTx=4`2a9h1d2+<#6=kG_YF=wnzEp6Py+?8A z!#DGXacN_xVCFN(iS~h|rfD^zr@WQM;Ud!RJ?^6hg1Q?WcN^{(xJ^TeP+!6EavsVb zrZR=f=&azON@a|EGAwfsD<>B9rO)7k6Y#-ZnxA?gV{71iLN1oZu_!AXYsB!NtxZYT zx1pFv6aubdjQSJikv9QnV!9W0gZhY>FH-vGS6B7E7~o2}I6K1#6`;4@yhX_~=2=1m zHKIpbtu2T9%^i&jio%3{_5K4#ubXEGgJ7B0w|vSkG}bU*VCi+w8Iu_mld{qO$k-`t z8GGntviFv~m1G}+mEkui=CWxdxRYGSo!KJM3R;$;iPgRZg;n(vX5%pJB=4)?(@;`- z3w5zpDjMh)_e7@&8%%Te=E&TprK%9oZK?h52-^}bObs)?u5n1*V**eJJ%jJBbzNL% zXlptdCTkgZB2OpDwoS(V(n6&Wf}io8My6?N z?xS~2ZbES!)xC>N;~w%=YbtrDOKJ1=W|RT3Az~-dz(a-TyGPhG9k;UdxvxF@_t{ZD zEeC0ff5Zr55jvo%;uXiI$?l~a(y3mSiM5{E^r$3rJ}9UEIYPIdE6%xxJg4}WmbBU* z`Ge*d#bd3g_fXT&-8-yw5Idaiz8{ElvR$mri=fYt?0`7dbh5Scw7L!4)^WnI8*2w> z+3`E<9OUKRZ_9~EAP2Mf$Q!K7z+m30lNJK!?J>~lFy>USk+xyjvHp4KS_2$fRM$4w z4*xx~Q>c;jEOg~d!6o}((b%TOaNynL6!f*_@8YXzr6J2&3HZf6(SJh-8?!TuZ=);h znyO2)3$Jxgla50!1~@r)e`qy_(;L*@7GujxCd3PVEl6@GrYe#9IK|mo_!URNe?^6AAeDYh_l}}c$uR^+7!(zDJ&y-{`J*5ym zCbmkf=QuvsWW>%evq~v9c7cP66Z~ri;w;Egw4$+r{D9Dh12i{d`dxk*yQFk}^BsO5 zvcPBdXbz(_MNoQkq;@c}7-&dWEajFgzp1F# zCGQ4H9eV}vLA|MSOGTEDE>wKfLDbf(=-p&h!%l^~dlAgiVoAvi$KcG9_}2^7adU{m0r4AgFAW_Sm%S#KOdVhO z>$GOqiouytdYCxCpq(3=a%gOW{_|Ss{;y|2g_?blm=E6i8!GAM89#kzo1!;k(~-=- zC3qiQgalI48tQINeGq*t)*_;jh~IdJPc}WA!j+dHjk1D!8VQS2l96YW^|(3l?m!6M zVdt3%eNj`1PhDf2!Pvs^K?|AET0HCP$r>229#ycd=y&yWW0`4b@l(b3{VvgJ2I(fb zP-$$*uvUM1Ci#r@a(!S({4F~Uqg6dit9wI&aUHy|hQ1d^-(0@kL)R~p33&S3RssyI l6ODe^j??`2y~}Y}eOqzyX7~$Gu%vn?O>*qHU`&>ov4jR=3|W#TV^=fC3|TU^WXnGGJ$uGPk!`4~QMN)NvWFzu z$yP)nB9aoKA-v=F_xs1a&$;(J&*$9pz2~0$eG)Gl6F8uPPyhhHp-0Yrx_1_V~glk9-XIECWcjE&~lE3*uZycY5*w@Nj+M&(&vR zsti&#(x8`PQ=m!{w-|8<3WG(k@=g^2fQ6Blfgo*>M<8FQJhf@H`|5p398Nli%sFlZ z1T8#1N0Dt9STGgM)QB;@&4S|ozNn45`*^z9w9@oXlAq1Xh&QUx>T+_izlw!7>t zRv{-L#Lm^Dr5`c-FRET5(hoRhvwzmDe`)Mn^XT-ooK*tqD;-=o+WCebZ_q;O#F)W@ z0t5anN0p&2^vK|F8@ZfU%{yx9uvqjr+dvM36LL7*e1@+|Sa8G^zC%yD*oW6lG~1ZaR?=<%aofdf6(Ava%g`Haa+BhLFNF%wj2xK*Zg-t_(@YH?}WL zZU1B|o9f^8qta3WBQMn`h(^VRZ~}V_vfjz1?n=bozFZ#;Liq17z4`6m84}RCdv;#F zLfHrhGCcYR8W|iO8K{u8TZ(t0g#R!?z@9(nYh0Y?6B&eO0QwQIM`b5e4*|IoxoFJQ zw=DhKFxn%|#>GdO4%wm@oGTjyH<&yhHr13@m1lb+Dw2cW{=Ebw;oEj(Nop&(`PIx7 zZ}v9dnUlA2au?JZKb1s66XJBb3^N5@CfwuEUQlaJ`kstRRo6BnwEWzl2SOl;8y{u^ zGQtPfBy7p5nQhv7lG+Q(lgTK9Sz6&q7~E6+}&qmBkW_k>P1xNk6Q8=vt>VPLrt;X=R~q<6q1{R%>kmId6bN@QPQqDDpi;~`KnzF zS&*?V4oR%0w(NmjZrYE`1i+9cnKn({j*lOEJKmyH!cV)aT8cKWwd}Uf1vuDC1~%6h zAV8ajCnb?+yh-xj5+4FF)R*g9Nb>an)hdRT+7AN#W^-QsNp=O*!oVvowYgTjYaiKu zToAR+Q39dSHH=sB1{4=Zw@K=&5QfdKH%*nK#@#BJaCIWv*{)l0Kwz9tW&$SlPgUI3 zB$sK$JT<_LG%l(Y9OC5Em>za>03U8{eFxy*e7UQRh*&6W{5d}`JmO6FSPg}(nAO8> z$7-WVb{WoC3TkqxtW|o#%(s_QFeBG@_9>vmO*Q)!cKh$tA$^%;xxce$^Qn7&9!cL~-{Elxzmz2OoQCRa{Yhv7!b#jr>_Uv0J= z5BW??PZ1FRCOydhzC+aWYL500uD$!t`=-rVXZT=W$E)fl;Jd30PuXsjto(b12F89) zJ(&?q{x;o2A`=blTKHHYJgJ>#1b@}a#yI=VOo+ZI1(rHOtTZvo37I_&rvu1sO<5DX zOps0fK<{!fK+mivs34a#^6NAo5VDC*@^AVQcT2bH!I_xA;b(*ZPggF;R>guU)kmh| zwgsGSW6cC=6{<#8_kZY%9(WJdZ=e9alu1|jPttwXm_+;3V`MaNBZMU9BkiM(B zc70{KO&?GcssB%nSWG4c5{>ks5FXBD3+8}`XQMUv40f8JF|KYHo4L92Ci7l8h7Hww zF8Fck*F;`*tT-=b6zKS!SimV%WJM;DK6zYZ28U@3Po%?yg?c6Y-@>$FWCT$-)ogV{ zZ@NydEN{j<<&lcFRHrwwr@T)YmO-Z5;2D?jdLn%@Kze;!ksmd(<^MS~%cQ#>Li4y- zxYbAnP>Dswl?$&`S*%GrfGs#{-i@0v|$)cUn4GSW__@jgLD3 zQa)Q2*&-<|FV%EFKrkDt89{HTv-@?SiKc0})Mtu(NQv=nP6f|kPbdf>hl3CxD&;d0 zf{3{!S9ctxTx{@ZMP6ckG3)1+$R$5DASmu;xJ8_EF-Q$p1j0e zUZgTP&7^;=c)@g0YW_sxGlyy5LTi`eUBr!xWs>i%xr^{@Xjs>88EN2*{od7GSRlXb zUW_sWiZI)nnO&dWnPq$qtCwdiDP$8aNDuADKV&(D4>7Z3F-MTW?NKucZ58L-N{Dq9 zjUXtoGA+!4vK@ai3wsdg6*ClEW>T^20Zvhajh|V!%d6V=4Ekr;sF57B&1HPJ!ab?y z5)s}S>ZGyo_Gasm-R{Zr6^Y1!ol3FZ+D=Bj@+)qIv40asFJ~GYd_Dx3_yk*>!fo}p z*YRd7ZIZ5`z8Taj=G?p<+BjD?bT~%9(w<2dvvgTmzP+I*lpeL;z30L6+|ZeXrwZx^ z2PcMaXe3oxXt56XJypq#Q0bWfxGh7b|^``JWGK9Lw7p=4wQ8!C zgT(ZDm6Yc}gnlK7tdxc{?{wg(gX*;X%HM>J77w1wKL}PD{2_h@xUs)1HqnEF>seQF zFMw(*_{0*rL;Ix%Ae-Lpw)Wh*xcaP;q`5XNr$T3jyX3lJb}D?&e82-^~z}1iQFU zP!4ZJ^3q%*qg$GGWX1~j3~+kjgylS1Area7je6o^Li%L_=_LXL1dv<}E)RF2A!7^qSsjOW2k>>9EUkDEndI zmkxwj2=8(|O5ZbfwD8Po>`8#pLQJ^yXxIu>pcDN?XFp}$+?KAr5`Ibw;0`XAqQYR< zL2w+UET6?R77i|4XyZ6r)6}(q@H%0_*oMJCMJJj+m8@+C$_{Bkc2QOBixz2-FgbdG z`7$Eu(wXDrF)dTZw7PUP_jqj^-Sbp9>x%tmKq3|+BGyaO&VDC==f}$zl+<-Xig=PE zVfojRQR;2Bm(EccK5j47N=uIcY+@D2NQ1i&MF+nnqmohlCZwy5U{h$f7Q+(g!Sd~^ zN{=c3(Zv$7qCVYZ@9TjmmcW*S^k90hF|kw$#KRVvz2;_bmDG_ox9}Mcm17-6vUI9>)}`x!)B%kOgs(U6jtI0+n4V zj{X212L~_e8^|#1%IhZ9QMPVK(fB~U5`&WP^jFw>XYlWgv`CsLogaUTr!#68(g~sd z#+35v!Ah@vy14>&29F*q!=QA%4{iOfKn?5b(dwl|C8Knpj_2LMj^Ni}8Dmhf1d{wu zd@xmk%J77;Lk!BocMbbL{P@(_6vUUz+3{<13a=neh6*G$p@>duK?zZhX9pU6_)_@(lWVvyUhZ`RC2n*swq z-FrJmUFUh!VLa2muN*GqgN5_b?2n4&RIHqGZ-SPKiq0NhX(9$&jjYXNuO&ImA-~JC zOeR#_S?nH+j;mBdGcTO2j`&ie)B)kZ@V@y5&q^r%&G((APsECSsr3x8%wVdG>%#s)#V6GaJ%Sph^oE}e z_pt`l-g`OM`VQ|g2vpg?=gSiotz*-p?w(iD+1(X?!6Y_hVie;(mVM@zk>TkWkE`M0 zkHf{$)w$i)d$4wqU|Dv&OmG(92{{TZq Bd_VvI literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/home.svg b/miniprogram/assets/icons/home.svg new file mode 100644 index 0000000..a2d9324 --- /dev/null +++ b/miniprogram/assets/icons/home.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/miniprogram/assets/icons/inbox-active.png b/miniprogram/assets/icons/inbox-active.png new file mode 100644 index 0000000000000000000000000000000000000000..843adbb59366183e24dd2eb764eb7361d65c582d GIT binary patch literal 1478 zcmchXX;2af6vx%PM^Zp4Nez>AM_V^fBrQNN@>sM`^GLiaZ7j^ZQW4i&oYpi}G;=X_ z-9af$iPTjiG*<l2ohoy#JLUqc*wIgH3RX@^6gL%F0`s$& zNS*1~AQ1+La1;&(2A4Cm<9VSGBWX&d=`%v*yGI>iTuJLSUh>0lCA?cdFklF5VaaCSni9ln-=y+?`$9Y;|bP8%dLn7sal0)Pk3ywMuEHZzbEx z3nqLpMhyv`uFN6g^8Mhsi|8)k;n+ZlBE_k4Ct-m;UoE{9(z_2`GZiTQ4366YVMF&= z(3M3?if}gpugag(x?Nsp!?&xmGU7oAwFTGU3M7$h?Go5>ENuB8teDuCvf>V3C@_PL zk(2D5VTql=-G!`F98~F?h|*J@Ou`JmR3NBmqYL#0Wq1q>_kX=EV?sPGxA+43*TtD} z@P;hk)(-|5MNb+4 zUfr~AH}5Z9NyvhVOz85D{&Cez-FA3d6MQ zt!n@6-ILtRjmBQns`c9(%AZJ}=8=}DiWWnxv01DqEf4dp^yHq_>e}41^Guw=R zB1!f(jVHB7a>+O=_pshy9rvu!p4Zt4Go6`39k*6d86Y|(jFc{qSdY3PcQ^g33DuX* zCj_(a%D->8S1V2g;^v>Kp$8{Ed>o!(X2^b#o6?4TCJSep=qnp&!c416rC!VEj7jOE zM&^%7Cx^7|XB}PBmM`BcQj)WIMDJnZWIA7&u!?dwCRAJvG`3&+#9N3>bD>#!ga7W2 zPXWg5tk>xgd*CH_R-s=S>A>i&%As=-N8!i`KQuFrYW(&0sG(6H+u9$w>nV+6MlJo4 N^*QeE)rgJG{||$|tyTa4 literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/inbox.png b/miniprogram/assets/icons/inbox.png new file mode 100644 index 0000000000000000000000000000000000000000..006cc93f7656b8214f0d76b2536a4ae46b02405e GIT binary patch literal 2643 zcmeHJ|2NYMAD{W03@t;1CLcEIu0$;fAwz74%Otv_c2!F0vg=#Ee@`t2R!Hb^*QJM@cw$<=e*wMb>8Q^-l;#jI3N|Y6ksqI zl1#F5mqy-qLu`}!r(Tss(jY@~cd&s~cBAKDFa;#pj_46_R!~TE-)*+j`eB&*<2>8# z^)eSO>6pq_O{p_}s#2seb)!bO$VoJnFdV;4{}C18b>%m9(AJhuPPs?@L*bSr?(Uyg zb}vQ{VQ?drrK$uNa26L2ddLC)LRq8U$ifjeNb3i57>1;I^o*u%JZP_S^4FlfXIMehXTWn*oW-%vaRVZ^B;SaLiQ*2{EyaTE38jZ=;8K^9UU(dEzcPg$75|~GxQ2rc)>gaKq?cYL3|!IUQ8|e8iC}YCzy`6m zPmG;}x@N!py!eeJvvDQ~W%!~}Z1Dh@EHq76UrAh(+@u)>Y0NfNer-D5Wmz|E8cbAA zJCTjq|A`|E&5bWj-=0vHV3GfJa*ua6MQyUbLLKry(4A@fXgrKFREy;VF^%T9Hx!B0 zgE}!|X?{*j6FKKw*1~k{xzLmVw;k))fH1!(g4*k(tNM%=*Kw9#P-@ttJn;q&0=qEq z`r4b|&I~df@!3>B2XRLt%mM%+D*L_kgiz81D^7EB=DbTf@%65j_4fwQ4Eew-h+a3R z2XA*wp~_0Y>#nxZRoB=wLo4K)K!5mXJ^OjLZ_KMD?wGa%!x3t zQgrT^VRWxiCP>mJN=%X7O13WS*sDIhg|y@`qs?(YM>~cB#P19a8$%w~H9kKC(N1sq zt~dK#v0<1){&AXtEl0|}^?8mNZjKkv5v8-6ky;ryX|_$>PhM)UH2i#$w@Xs@0FOaZ zW7L3IuITMEyk|yIAQf4y-&tP_XKz^X&M^6l2Y>p#qodVppTlyM_cVffd);w_;xU{0;kY1Yi?yL7NAt5I&+GgikdIyek$4qHClsfl<_03U+%u{ zx%_j$qW{X=PD;hECo-D0Mb4?Hr4i=!EKaG^>r`3@i}Z#+eG{=+0q>9H@qfLojP-5J z(k7Z1#SA%QaaN7{<}PIxQEOD8zm`Tj%2*USh_?(|ajg>YMmw;(CLS}-Aqf*78Xr#! zT519vqqJ-ztk7woBak;<6S!A>0)H80mj@mykT;kN4>9LzVMW25(m;m1pztsL_Z8@% zf&+s^zP=Rdr`C_RXZ+coRIOab)r-yj53~-J8^Bs6x;I;_#d77qfs-r^VxQW>vkW{SyHk**~5hV*4$bY^=6M`5P zT~Cuyfu`CsHlkx^ULNmpHo%Z^KM0cZl>J}Z#2lX8KkKvE?xd8kKCu=qG#;UY3!x;T zv6HJAs)Gi2>Lzx64B0r8)SeC2H$Qr?+_VF(o0ugPj`{=l`S;~@3uY0g9lLW)&?7+{ zujqzi6K$ny?aTY*vDbO`RQ+G7r!uGcz3$#>fGF*?Kp=P_)rwt1c{4z2z#y|##M{HA z=36^5`1!}o`fG<6K_=WAbtG)$$%d60f!NAB$}GQY9*EQ+H&hPpsmroCc%8iPZ7DQy9(khocpKH7P z-reCw2>0;%pH(<8BWQaiouf|prjhhpS*S95a79K&9*)o>=2#6#zl$S}v8aE_|Amcp Y9a%9^3fJwxuYB$q>LN)BN$7U7H#Dx)HqdnUTj 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 ZOnCAyOc1lA&oba3b5m=4o$;mk{{VK$I$;0+ literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/publish-active.png b/miniprogram/assets/icons/publish-active.png new file mode 100644 index 0000000000000000000000000000000000000000..7b83ef1313ebbd5c8e02ff0ee66e3f6b5bd12b84 GIT binary patch literal 2743 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 literal 0 HcmV?d00001 diff --git a/miniprogram/assets/icons/publish.png b/miniprogram/assets/icons/publish.png new file mode 100644 index 0000000000000000000000000000000000000000..3ea955eb6295f833d7ff6a9b9adcbb95a0cbfdc1 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/miniprogram/pages/home/index.js b/miniprogram/pages/home/index.js index 686286a..c1b546a 100644 --- a/miniprogram/pages/home/index.js +++ b/miniprogram/pages/home/index.js @@ -1,11 +1,7 @@ const { request } = require('../../utils/request') const USER_MODULES = [ - { name: '信息发布', desc: '发布公开 / 私有 / 私信文本并实时检测', tag: '发布检测', path: '/pages/detect/index' }, - { name: '批量识别', desc: '多条文本批量检测并给出风险汇总', tag: '批量筛查', path: '/pages/batch/index' }, - { name: '发布历史', desc: '查看发布状态、概率和申诉进度', tag: '历史追踪', path: '/pages/history/index' }, - { name: '私信收件箱', desc: '查看通过检测后成功送达的私信', tag: '私信查看', path: '/pages/inbox/index' }, - { name: '个人中心', desc: '维护个人资料与密码设置', tag: '账号设置', path: '/pages/profile/index' } + { name: '批量识别', desc: '多条文本批量检测并给出风险汇总', tag: '批量筛查', path: '/pages/batch/index' } ] const ADMIN_MODULES = [ diff --git a/miniprogram/pages/home/index.wxml b/miniprogram/pages/home/index.wxml index 806f99f..3d23e43 100644 --- a/miniprogram/pages/home/index.wxml +++ b/miniprogram/pages/home/index.wxml @@ -33,8 +33,8 @@ - 用户功能 - 常用操作入口,覆盖发布、检测、历史和账号设置。 + 更多功能 + 批量检测与管理功能入口。 {{item.name}} @@ -55,6 +55,4 @@ - - diff --git a/miniprogram/pages/profile/index.js b/miniprogram/pages/profile/index.js index 9768cdc..a74197d 100644 --- a/miniprogram/pages/profile/index.js +++ b/miniprogram/pages/profile/index.js @@ -3,6 +3,7 @@ const { request } = require('../../utils/request') Page({ data: { loading: false, + user: null, form: { nickname: '', company: '', @@ -17,6 +18,9 @@ Page({ }, async loadProfile() { + const app = getApp() + const user = app.globalData.user || wx.getStorageSync('user') + this.setData({ user }) const profile = await request({ url: '/user/profile' }) this.setData({ form: { @@ -29,6 +33,12 @@ Page({ }) }, + goto(e) { + const path = e.currentTarget.dataset.path + if (!path) return + wx.navigateTo({ url: path }) + }, + onInput(e) { const field = e.currentTarget.dataset.field this.setData({ [`form.${field}`]: (e.detail.value || '').trim() }) @@ -57,5 +67,18 @@ Page({ } finally { this.setData({ loading: false }) } + }, + + logout() { + wx.showModal({ + title: '退出登录', + content: '确定要退出登录吗?', + success: (res) => { + if (res.confirm) { + getApp().clearAuth() + wx.reLaunch({ url: '/pages/login/index' }) + } + } + }) } }) diff --git a/miniprogram/pages/profile/index.wxml b/miniprogram/pages/profile/index.wxml index 03663cb..2659488 100644 --- a/miniprogram/pages/profile/index.wxml +++ b/miniprogram/pages/profile/index.wxml @@ -1,7 +1,7 @@ PROFILE - 个人资料设置 + 个人中心 完善你的身份信息,便于审计追踪和团队协同。 @@ -36,4 +36,35 @@ - + + + 管理员入口 + 管理后台功能快速访问。 + + + 运营看板 + 监控发布、拦截、样本和模型状态 + 数据概览 + + + 复核与申诉 + 处理拦截复核和用户申诉 + 审核处理 + + + 样本管理 + 维护训练样本并触发模型重训 + 模型迭代 + + + 用户管理 + 编辑用户信息和权限 + 权限管理 + + + + + + + + \ No newline at end of file