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 0000000..a47f712 Binary files /dev/null and b/miniprogram/assets/icons/history-active.png differ diff --git a/miniprogram/assets/icons/history.png b/miniprogram/assets/icons/history.png new file mode 100644 index 0000000..cd3309f Binary files /dev/null and b/miniprogram/assets/icons/history.png differ diff --git a/miniprogram/assets/icons/home-active.png b/miniprogram/assets/icons/home-active.png new file mode 100644 index 0000000..e34273f Binary files /dev/null and b/miniprogram/assets/icons/home-active.png differ diff --git a/miniprogram/assets/icons/home.png b/miniprogram/assets/icons/home.png new file mode 100644 index 0000000..2d2691f Binary files /dev/null and b/miniprogram/assets/icons/home.png differ 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 0000000..843adbb Binary files /dev/null and b/miniprogram/assets/icons/inbox-active.png differ diff --git a/miniprogram/assets/icons/inbox.png b/miniprogram/assets/icons/inbox.png new file mode 100644 index 0000000..006cc93 Binary files /dev/null and b/miniprogram/assets/icons/inbox.png differ diff --git a/miniprogram/assets/icons/profile-active.png b/miniprogram/assets/icons/profile-active.png new file mode 100644 index 0000000..cf6e8e2 Binary files /dev/null and b/miniprogram/assets/icons/profile-active.png differ diff --git a/miniprogram/assets/icons/profile.png b/miniprogram/assets/icons/profile.png new file mode 100644 index 0000000..1324e28 Binary files /dev/null and b/miniprogram/assets/icons/profile.png differ diff --git a/miniprogram/assets/icons/publish-active.png b/miniprogram/assets/icons/publish-active.png new file mode 100644 index 0000000..7b83ef1 Binary files /dev/null and b/miniprogram/assets/icons/publish-active.png differ diff --git a/miniprogram/assets/icons/publish.png b/miniprogram/assets/icons/publish.png new file mode 100644 index 0000000..3ea955e Binary files /dev/null and b/miniprogram/assets/icons/publish.png differ 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