feat: prioritize mobile workspace content
Some checks failed
Build and tests / test (push) Has been cancelled
Some checks failed
Build and tests / test (push) Has been cancelled
This commit is contained in:
@@ -2515,7 +2515,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 设置视图 -->
|
||||
<div v-if="isLoggedIn && currentView === 'settings'" class="main-container">
|
||||
<div v-if="isLoggedIn && currentView === 'settings'" class="main-container settings-main-container">
|
||||
<div class="card settings-page-card">
|
||||
<div class="settings-page-head">
|
||||
<h2 class="settings-page-title">
|
||||
@@ -3125,7 +3125,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 分享视图 -->
|
||||
<div v-if="isLoggedIn && currentView === 'shares'" class="main-container">
|
||||
<div v-if="isLoggedIn && currentView === 'shares'" class="main-container shares-main-container">
|
||||
<div class="card shares-page-card">
|
||||
<header class="workspace-page-header shares-page-head">
|
||||
<div class="workspace-page-heading">
|
||||
@@ -3134,21 +3134,21 @@
|
||||
<p>集中查看分享状态、访问数据和文件直链。</p>
|
||||
</div>
|
||||
<div class="shares-page-actions">
|
||||
<button class="btn btn-secondary" @click="refreshShareResources">
|
||||
<i class="fas fa-sync-alt"></i> 刷新
|
||||
<button type="button" class="btn btn-secondary share-refresh-btn" @click="refreshShareResources" aria-label="刷新分享资源">
|
||||
<i class="fas fa-sync-alt"></i><span class="share-action-label">刷新</span>
|
||||
</button>
|
||||
<button class="btn btn-primary" @click="switchView('files')">
|
||||
<i class="fas fa-plus"></i> 创建分享
|
||||
<button type="button" class="btn btn-primary share-create-btn" @click="switchView('files')">
|
||||
<i class="fas fa-plus"></i><span class="share-action-label">创建分享</span>
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<nav class="share-resource-tabs" aria-label="分享资源分类">
|
||||
<button :class="{ active: shareResourceTab === 'shares' }" @click="shareResourceTab = 'shares'">
|
||||
<button type="button" :class="{ active: shareResourceTab === 'shares' }" @click="shareResourceTab = 'shares'; showMobileShareFilters = false">
|
||||
<i class="fas fa-share-alt"></i> 分享链接
|
||||
<span>{{ shares.length }}</span>
|
||||
</button>
|
||||
<button :class="{ active: shareResourceTab === 'directLinks' }" @click="shareResourceTab = 'directLinks'">
|
||||
<button type="button" :class="{ active: shareResourceTab === 'directLinks' }" @click="shareResourceTab = 'directLinks'; showMobileShareFilters = false">
|
||||
<i class="fas fa-link"></i> 文件直链
|
||||
<span>{{ directLinks.length }}</span>
|
||||
</button>
|
||||
@@ -3161,12 +3161,22 @@
|
||||
<span><i class="fas fa-shield-alt"></i> 状态 <strong>运行正常</strong></span>
|
||||
</div>
|
||||
|
||||
<div class="share-toolbar shares-toolbar">
|
||||
<div class="share-toolbar shares-toolbar" :class="{ 'share-filters-open': showMobileShareFilters, 'share-toolbar-direct': shareResourceTab === 'directLinks' }">
|
||||
<div class="share-search-field">
|
||||
<i class="fas fa-search"></i>
|
||||
<input type="text" v-model="shareFilters.keyword" :placeholder="shareResourceTab === 'shares' ? '搜索文件名、链接或分享码' : '搜索文件名或直链地址'">
|
||||
</div>
|
||||
<template v-if="shareResourceTab === 'shares'">
|
||||
<button
|
||||
v-if="shareResourceTab === 'shares'"
|
||||
type="button"
|
||||
class="mobile-share-filter-toggle"
|
||||
:class="{ active: activeShareFilterCount > 0 }"
|
||||
:aria-expanded="showMobileShareFilters"
|
||||
@click="showMobileShareFilters = !showMobileShareFilters">
|
||||
<i class="fas fa-sliders-h"></i><span>筛选</span>
|
||||
<span v-if="activeShareFilterCount > 0" class="mobile-share-filter-count">{{ activeShareFilterCount }}</span>
|
||||
</button>
|
||||
<div v-if="shareResourceTab === 'shares'" class="share-filter-controls" :class="{ 'is-open': showMobileShareFilters }">
|
||||
<select v-model="shareFilters.type" aria-label="分享类型">
|
||||
<option value="all">全部类型</option>
|
||||
<option value="file">文件</option>
|
||||
@@ -3188,7 +3198,7 @@
|
||||
<option value="downloads_desc">下载最多</option>
|
||||
<option value="expire_asc">最早到期</option>
|
||||
</select>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="shareResourceTab === 'shares'" class="share-resource-panel">
|
||||
@@ -3300,7 +3310,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 管理员视图 -->
|
||||
<div v-if="isLoggedIn && currentView === 'admin' && user && user.is_admin" class="main-container">
|
||||
<div v-if="isLoggedIn && currentView === 'admin' && user && user.is_admin" class="main-container admin-main-container">
|
||||
<!-- 管理员标签页导航 -->
|
||||
<div class="card admin-tabs-card" style="margin-bottom: 20px; padding: 0;">
|
||||
<div class="admin-tabs-nav">
|
||||
@@ -3320,9 +3330,9 @@
|
||||
</div>
|
||||
|
||||
<!-- ========== 概览标签页 ========== -->
|
||||
<div v-show="adminTab === 'overview'">
|
||||
<div v-show="adminTab === 'overview'" class="admin-overview-page">
|
||||
<!-- 调试模式开关 -->
|
||||
<div class="card" style="margin-bottom: 30px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;">
|
||||
<div class="card admin-debug-card" style="margin-bottom: 30px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white;">
|
||||
<div class="admin-debug-row" style="display: flex; align-items: center; justify-content: space-between;">
|
||||
<div>
|
||||
<h3 style="margin-bottom: 10px; color: white;">
|
||||
@@ -3340,7 +3350,7 @@
|
||||
</div>
|
||||
|
||||
<!-- 服务器存储统计 -->
|
||||
<div class="card" style="margin-bottom: 30px;">
|
||||
<div class="card admin-storage-card" style="margin-bottom: 30px;">
|
||||
<h3 style="margin-bottom: 20px;">
|
||||
<i class="fas fa-hdd"></i> 服务器存储统计
|
||||
</h3>
|
||||
@@ -4035,16 +4045,28 @@
|
||||
</div><!-- 监控标签页结束 -->
|
||||
|
||||
<!-- ========== 用户标签页 ========== -->
|
||||
<div v-show="adminTab === 'users'">
|
||||
<div class="card">
|
||||
<div v-show="adminTab === 'users'" class="admin-users-page">
|
||||
<div class="card admin-users-card">
|
||||
<div class="admin-users-header">
|
||||
<h3 style="margin: 0;">用户管理</h3>
|
||||
<button class="btn btn-secondary" @click="loadUsers" :disabled="adminUsersLoading" style="min-width: 92px;">
|
||||
<i :class="adminUsersLoading ? 'fas fa-spinner fa-spin' : 'fas fa-rotate'"></i> 刷新
|
||||
<button
|
||||
type="button"
|
||||
class="mobile-admin-users-filter-toggle"
|
||||
:class="{ active: showMobileAdminUserFilters || activeAdminUserFilterCount > 0 }"
|
||||
:aria-expanded="showMobileAdminUserFilters ? 'true' : 'false'"
|
||||
@click="showMobileAdminUserFilters = !showMobileAdminUserFilters"
|
||||
>
|
||||
<i class="fas fa-sliders"></i>
|
||||
<span>筛选</span>
|
||||
<span v-if="activeAdminUserFilterCount" class="mobile-admin-users-filter-count">{{ activeAdminUserFilterCount }}</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-secondary admin-users-refresh-btn" @click="loadUsers" :disabled="adminUsersLoading" style="min-width: 92px;" aria-label="刷新用户列表">
|
||||
<i :class="adminUsersLoading ? 'fas fa-spinner fa-spin' : 'fas fa-rotate'"></i>
|
||||
<span>刷新</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="admin-users-toolbar">
|
||||
<div class="admin-users-toolbar" :class="{ 'is-open': showMobileAdminUserFilters }">
|
||||
<div class="admin-users-filter admin-users-filter-search">
|
||||
<label>搜索</label>
|
||||
<input type="text" v-model.trim="adminUserFilters.keyword" @input="triggerAdminUsersKeywordSearch" placeholder="ID / 用户名 / 邮箱">
|
||||
|
||||
Reference in New Issue
Block a user