/* ========== 通用 ========== */ .status-bar { height: var(--status-bar-height); background: linear-gradient(180deg, #fafbff 0%, #f5f6fa 100%); } .page-container { display: flex; flex-direction: column; height: 100vh; background: linear-gradient(180deg, #f0f2ff 0%, #f5f4f9 40%, #faf9fe 100%); } /* ========== 导航栏 ========== */ .cloud-db-header { background-color: #ffffff; flex-shrink: 0; position: relative; z-index: 10; } .custom-navbar { display: flex; align-items: center; justify-content: space-between; height: 88rpx; padding: 0 30rpx; } .navbar-left { display: flex; align-items: center; min-width: 120rpx; } .custom-navbar-icon { font-size: 40rpx; color: #333; } .navbar-title { font-size: 34rpx; font-weight: 600; color: #333; flex: 1; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .navbar-right { min-width: 120rpx; display: flex; justify-content: flex-end; } /* 下拉菜单 */ .menu-card { position: absolute; top: 88rpx; right: 20rpx; background: #fff; border-radius: 16rpx; box-shadow: 0 8rpx 32rpx rgba(0,0,0,0.12); z-index: 500; overflow: hidden; min-width: 200rpx; } .menu-card-item { padding: 24rpx 36rpx; font-size: 28rpx; color: #333; text-align: center; } .menu-card-item:active { background-color: #f5f6fa; } .solid-line { height: 1rpx; background-color: #eee; margin: 0 20rpx; } /* ========== 数据库信息栏 ========== */ .db-info-bar { display: flex; align-items: center; gap: 24rpx; padding: 20rpx 30rpx; background: #fff; border-bottom: 1rpx solid #f0f0f0; } .db-info-text { font-size: 24rpx; color: #999; } /* ========== 内容区域 ========== */ .cloud-db-content { flex: 1; overflow-y: auto; } .section-block { margin: 20rpx; background: #fff; border-radius: 20rpx; overflow: hidden; } .section-header { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 30rpx; border-bottom: 1rpx solid #f5f6fa; } .section-title { display: flex; align-items: center; gap: 12rpx; font-size: 30rpx; font-weight: 600; color: #333; } .section-title .iconfont { font-size: 36rpx; color: #3b86ff; } .section-actions { display: flex; align-items: center; gap: 16rpx; } .row-count { font-size: 24rpx; color: #999; } .section-divider { height: 1rpx; background-color: #f0f0f0; margin: 0 20rpx; } .section-body { padding: 16rpx 0; } /* ========== 空状态 ========== */ .empty-tip { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60rpx 0; color: #ccc; font-size: 26rpx; } .empty-tip .iconfont { font-size: 80rpx; margin-bottom: 16rpx; } /* ========== 表列表 ========== */ .table-list { padding: 0 30rpx; } .table-item { display: flex; align-items: center; padding: 24rpx 0; border-bottom: 1rpx solid #f5f6fa; } .table-item:last-child { border-bottom: none; } .table-item:active { background-color: #fafbfc; margin: 0 -30rpx; padding-left: 30rpx; padding-right: 30rpx; } .table-icon { width: 72rpx; height: 72rpx; border-radius: 16rpx; background: rgba(59, 134, 255, 0.08); display: flex; align-items: center; justify-content: center; margin-right: 20rpx; flex-shrink: 0; } .table-info { flex: 1; overflow: hidden; } .table-name { font-size: 30rpx; font-weight: 500; color: #333; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .table-desc { font-size: 24rpx; color: #999; margin-top: 4rpx; } .table-meta { display: flex; align-items: center; gap: 8rpx; flex-shrink: 0; } /* ========== 数据表格 ========== */ .data-table-wrapper { padding: 0; } .data-table-scroll { width: 100%; } .data-table { min-width: 100%; } .data-row { display: flex; flex-direction: row; border-bottom: 1rpx solid #f0f0f0; } .data-row:last-child { border-bottom: none; } .data-header { background-color: #f8f9fb; } .data-cell { padding: 16rpx 20rpx; font-size: 26rpx; color: #333; min-width: 160rpx; max-width: 300rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; border-right: 1rpx solid #f0f0f0; flex-shrink: 0; } .data-cell:last-child { border-right: none; } .data-header .data-cell { font-weight: 600; color: #666; font-size: 24rpx; } .index-cell { min-width: 80rpx !important; max-width: 80rpx !important; text-align: center; color: #999; font-size: 24rpx; } .data-row:active { background-color: #f5f7fa; } /* ========== 弹窗通用 ========== */ .popup-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 900; } .popup-card { width: 640rpx; background: #fff; border-radius: 24rpx; padding: 40rpx 36rpx 30rpx; position: relative; } .close-popup-card { position: absolute; top: 20rpx; right: 20rpx; width: 48rpx; height: 48rpx; display: flex; align-items: center; justify-content: center; } .close-popup-card .iconfont { font-size: 36rpx; color: #999; } .popup-title { font-size: 34rpx; font-weight: 600; color: #333; text-align: center; margin-bottom: 30rpx; } .new-folder-name { font-size: 26rpx; color: #666; margin-bottom: 12rpx; } .create-folder-name { margin-bottom: 24rpx; } .create-folder-name input { width: 100%; height: 80rpx; border: 2rpx solid #e0e0e0; border-radius: 12rpx; padding: 0 20rpx; font-size: 28rpx; box-sizing: border-box; background: #f8f9fb; } .upload-file-area { width: 100%; height: 120rpx; border: 2rpx dashed #d0d0d0; border-radius: 12rpx; display: flex; align-items: center; justify-content: center; margin-bottom: 24rpx; background: #fafbfc; } .selected-file { font-size: 26rpx; color: #3b86ff; } .upload-hint { font-size: 24rpx; color: #999; } .option-wrapper { display: flex; gap: 20rpx; margin-top: 10rpx; } .opt-btn { flex: 1; height: 80rpx; border-radius: 12rpx; display: flex; align-items: center; justify-content: center; font-size: 30rpx; } .opt-cancel { background: #f5f6fa; color: #666; } .opt-confirm { background: #3b86ff; color: #fff; } /* ========== 权限管理 ========== */ .permission-body { max-height: 600rpx; margin-bottom: 20rpx; } .permission-list { padding: 0 10rpx; } .permission-item { display: flex; align-items: center; padding: 20rpx 10rpx; border-bottom: 1rpx solid #f0f0f0; } .perm-info { flex: 1; display: flex; flex-direction: column; gap: 4rpx; } .perm-name { font-size: 28rpx; color: #333; } .perm-type { font-size: 22rpx; color: #999; } .perm-level { font-size: 24rpx; color: #3b86ff; background: rgba(59, 134, 255, 0.08); padding: 6rpx 16rpx; border-radius: 8rpx; margin: 0 16rpx; } .perm-actions { display: flex; gap: 12rpx; } .perm-action-btn { font-size: 24rpx; color: #3b86ff; padding: 8rpx 16rpx; border: 1rpx solid #3b86ff; border-radius: 8rpx; } .perm-action-btn.delete { color: #f56c6c; border-color: #f56c6c; } .close-permission-btn { text-align: center; font-size: 28rpx; color: #999; padding: 16rpx 0; } .folder-null { text-align: center; padding: 40rpx 0; font-size: 26rpx; color: #999; } /* ========== 移交团队 ========== */ .transfer-body { max-height: 500rpx; margin-bottom: 20rpx; } .transfer-list { padding: 0 10rpx; } .transfer-item { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 16rpx; border-bottom: 1rpx solid #f0f0f0; border-radius: 12rpx; margin-bottom: 8rpx; } .transfer-item.active { background: rgba(59, 134, 255, 0.06); } .transfer-name { font-size: 28rpx; color: #333; } /* ===== 加载动画 ===== */ .loading-area { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60rpx 0; gap: 16rpx; } .loading-spinner { width: 56rpx; height: 56rpx; border: 4rpx solid #e8e8e8; border-top-color: #3b86ff; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text { font-size: 24rpx; color: #999; }