fix: 搜索路由参数校验 — page>=1、limit 1-500
This commit is contained in:
@@ -95,7 +95,7 @@
|
|||||||
<el-table-column label="转存启用" width="80" align="center">
|
<el-table-column label="转存启用" width="80" align="center">
|
||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-switch
|
<el-switch
|
||||||
:model-value="row.is_transfer_enabled !== 0"
|
:model-value="row.is_active !== 0"
|
||||||
size="small"
|
size="small"
|
||||||
@change="(val: boolean) => handleToggleTransfer(row, val)"
|
@change="(val: boolean) => handleToggleTransfer(row, val)"
|
||||||
/>
|
/>
|
||||||
@@ -105,7 +105,7 @@
|
|||||||
<template #default="{ row }">
|
<template #default="{ row }">
|
||||||
<el-switch
|
<el-switch
|
||||||
:model-value="row.is_primary === 1"
|
:model-value="row.is_primary === 1"
|
||||||
:disabled="!row.is_transfer_enabled"
|
:disabled="!row.is_active"
|
||||||
size="small"
|
size="small"
|
||||||
@change="(val: boolean) => handleTogglePrimary(row, val)"
|
@change="(val: boolean) => handleTogglePrimary(row, val)"
|
||||||
/>
|
/>
|
||||||
@@ -386,11 +386,10 @@ async function handleToggleTransfer(row: CloudConfig, enabled: boolean) {
|
|||||||
cloud_type: row.cloud_type,
|
cloud_type: row.cloud_type,
|
||||||
nickname: row.nickname || '',
|
nickname: row.nickname || '',
|
||||||
promotion_account: row.promotion_account || '',
|
promotion_account: row.promotion_account || '',
|
||||||
is_transfer_enabled: newVal,
|
is_active: newVal,
|
||||||
is_active: row.is_active,
|
|
||||||
cookie: undefined, // don't send cookie on toggle-only
|
cookie: undefined, // don't send cookie on toggle-only
|
||||||
})
|
})
|
||||||
row.is_transfer_enabled = newVal
|
row.is_active = newVal
|
||||||
ElMessage.success(enabled ? '转存已开启' : '转存已关闭')
|
ElMessage.success(enabled ? '转存已开启' : '转存已关闭')
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
ElMessage.error(e.response?.data?.error || '操作失败')
|
ElMessage.error(e.response?.data?.error || '操作失败')
|
||||||
@@ -455,7 +454,7 @@ function openDialog(row: CloudConfig | null) {
|
|||||||
form.cloud_type = row.cloud_type
|
form.cloud_type = row.cloud_type
|
||||||
form.nickname = row.nickname || ''
|
form.nickname = row.nickname || ''
|
||||||
form.promotion_account = row.promotion_account || ''
|
form.promotion_account = row.promotion_account || ''
|
||||||
form.is_transfer_enabled = row.is_transfer_enabled !== 0
|
form.is_transfer_enabled = row.is_active !== 0
|
||||||
form.cookie = row.cookie || ''
|
form.cookie = row.cookie || ''
|
||||||
form._verifying = false
|
form._verifying = false
|
||||||
form._storageUsed = ''
|
form._storageUsed = ''
|
||||||
@@ -506,9 +505,8 @@ async function handleSave() {
|
|||||||
cloud_type: form.cloud_type as CloudType,
|
cloud_type: form.cloud_type as CloudType,
|
||||||
nickname: form.nickname,
|
nickname: form.nickname,
|
||||||
promotion_account: form.promotion_account,
|
promotion_account: form.promotion_account,
|
||||||
is_transfer_enabled: form.is_transfer_enabled ? 1 : 0,
|
is_active: form.is_transfer_enabled ? 1 : 0,
|
||||||
cookie: form.cookie || undefined,
|
cookie: form.cookie || undefined,
|
||||||
is_active: 1,
|
|
||||||
})
|
})
|
||||||
ElMessage.success('配置更新成功')
|
ElMessage.success('配置更新成功')
|
||||||
} else {
|
} else {
|
||||||
@@ -516,9 +514,8 @@ async function handleSave() {
|
|||||||
cloud_type: form.cloud_type as CloudType,
|
cloud_type: form.cloud_type as CloudType,
|
||||||
nickname: form.nickname,
|
nickname: form.nickname,
|
||||||
promotion_account: form.promotion_account,
|
promotion_account: form.promotion_account,
|
||||||
is_transfer_enabled: form.is_transfer_enabled ? 1 : 0,
|
is_active: form.is_transfer_enabled ? 1 : 0,
|
||||||
cookie: form.cookie,
|
cookie: form.cookie,
|
||||||
is_active: 1,
|
|
||||||
})
|
})
|
||||||
ElMessage.success('配置保存成功')
|
ElMessage.success('配置保存成功')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
<div class="user-layout">
|
<div class="user-layout">
|
||||||
<!-- Header -->
|
<!-- Header -->
|
||||||
<div class="user-header">
|
<div class="user-header">
|
||||||
<span class="user-title">CloudSearch 用户中心</span>
|
<span class="user-title">{{ siteName }} 用户中心</span>
|
||||||
<div class="header-right">
|
<div class="header-right">
|
||||||
<span class="user-account">{{ account }}</span>
|
<span class="user-account">{{ account }}</span>
|
||||||
<el-button size="small" @click="handleLogout">退出登录</el-button>
|
<el-button size="small" @click="handleLogout">退出登录</el-button>
|
||||||
@@ -152,6 +152,21 @@
|
|||||||
<!-- 新增/编辑网盘弹窗 — 复刻 admin CloudConfig dialog -->
|
<!-- 新增/编辑网盘弹窗 — 复刻 admin CloudConfig dialog -->
|
||||||
<el-dialog v-model="showAddDrive" :title="editingDrive ? '编辑网盘配置' : '新增网盘配置'" width="560px">
|
<el-dialog v-model="showAddDrive" :title="editingDrive ? '编辑网盘配置' : '新增网盘配置'" width="560px">
|
||||||
<el-form ref="driveFormRef" :model="driveForm" :rules="driveRules" label-width="120px">
|
<el-form ref="driveFormRef" :model="driveForm" :rules="driveRules" label-width="120px">
|
||||||
|
<!-- 白名单目录提示 -->
|
||||||
|
<el-alert
|
||||||
|
v-show="whitelistDirs.length > 0"
|
||||||
|
type="warning"
|
||||||
|
show-icon
|
||||||
|
:closable="false"
|
||||||
|
style="margin-bottom: 18px;"
|
||||||
|
>
|
||||||
|
<template #title>
|
||||||
|
<div style="line-height: 1.6;">
|
||||||
|
<div>🧹 请在网盘主目录内创建:<b>{{ whitelistDirs.join('、') }}</b> 目录</div>
|
||||||
|
<div>并将你的重要文件移至该目录,<b>只有这个目录不会被自动清理</b></div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-alert>
|
||||||
<el-form-item label="网盘类型" prop="cloud_type">
|
<el-form-item label="网盘类型" prop="cloud_type">
|
||||||
<el-select v-model="driveForm.cloud_type" style="width: 100%" :disabled="!!editingDrive" @change="onDriveTypeChange">
|
<el-select v-model="driveForm.cloud_type" style="width: 100%" :disabled="!!editingDrive" @change="onDriveTypeChange">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -195,12 +210,35 @@ import { useRouter } from 'vue-router'
|
|||||||
import { ElMessage } from 'element-plus'
|
import { ElMessage } from 'element-plus'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { CLOUD_LABELS } from '../../types'
|
import { CLOUD_LABELS } from '../../types'
|
||||||
|
import { getSystemConfigs } from '../../api'
|
||||||
import type { CloudType } from '../../types'
|
import type { CloudType } from '../../types'
|
||||||
import CloudBadge from '../../components/CloudBadge.vue'
|
import CloudBadge from '../../components/CloudBadge.vue'
|
||||||
import type { ElForm } from 'element-plus'
|
import type { ElForm } from 'element-plus'
|
||||||
|
|
||||||
const router = useRouter()
|
const router = useRouter()
|
||||||
const account = ref('')
|
const account = ref('')
|
||||||
|
const siteName = ref('CloudSearch')
|
||||||
|
|
||||||
|
/** 白名单目录提示 */
|
||||||
|
const systemConfigs = ref<Record<string, string>>({})
|
||||||
|
const whitelistDirs = computed(() => {
|
||||||
|
try {
|
||||||
|
const raw = systemConfigs.value.cleanup_whitelist_dirs || '[]'
|
||||||
|
const arr = JSON.parse(raw)
|
||||||
|
return Array.isArray(arr) && arr.length > 0 ? arr : []
|
||||||
|
} catch { return [] }
|
||||||
|
})
|
||||||
|
|
||||||
|
async function loadSystemConfigs() {
|
||||||
|
try {
|
||||||
|
const { data } = await axios.get('/api/system-configs')
|
||||||
|
const map: Record<string, string> = {}
|
||||||
|
for (const item of data) {
|
||||||
|
map[item.key] = item.value
|
||||||
|
}
|
||||||
|
systemConfigs.value = map
|
||||||
|
} catch (e) { console.error('加载系统配置失败', e) }
|
||||||
|
}
|
||||||
|
|
||||||
function userApi() {
|
function userApi() {
|
||||||
const token = localStorage.getItem('user_token')
|
const token = localStorage.getItem('user_token')
|
||||||
@@ -220,7 +258,14 @@ onMounted(async () => {
|
|||||||
localStorage.removeItem('user_token')
|
localStorage.removeItem('user_token')
|
||||||
localStorage.removeItem('user_account')
|
localStorage.removeItem('user_account')
|
||||||
router.push('/user/login')
|
router.push('/user/login')
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
// 获取网站名称
|
||||||
|
try {
|
||||||
|
const { data } = await axios.get('/api/site-config')
|
||||||
|
if (data.site_name) siteName.value = data.site_name
|
||||||
|
} catch { /* use default */ }
|
||||||
|
loadSystemConfigs()
|
||||||
})
|
})
|
||||||
|
|
||||||
function handleLogout() {
|
function handleLogout() {
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as m,a as o,t as _,e,w as t,g as p,q as w,h as u,i as g,j as r,C as M,k as l,D as T,G as j,H as A,I as D,J as E,u as H,y as R,_ as z}from"./index-Cez7RKLo.js";import{a as G}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const J={class:"admin-layout"},W={class:"admin-sidebar"},F={class:"sidebar-brand"},K={class:"sidebar-logo"},O=["src","alt"],P={key:1,class:"sidebar-logo-fallback"},Q={class:"sidebar-brand-text"},U={class:"sidebar-version"},X={class:"admin-content"},Y={class:"content-header"},Z={class:"content-breadcrumb"},$={class:"breadcrumb-current"},ss={class:"content-actions"},es={class:"content-body"},ts=I({__name:"AdminLayout",setup(os){const d=H(),v=R(),f=p(""),c=p(""),y=p(""),h={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","sys-platforms":"推广平台管理","save-records":"转存日志"},b=w(()=>{const n=v.name;return n==="admin-cloud-configs"?"cloud-configs-toggle":n==="admin-cleanup"?"cloud-configs-cleanup":n==="admin-system"?v.query.section||"sys-site":n==="admin-save-records"?"save-records":"dashboard"}),k=w(()=>h[b.value]||"仪表盘");function C(n){n==="dashboard"?d.push("/admin/dashboard"):n==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):n==="cloud-configs-cleanup"?d.push("/admin/cleanup"):n.startsWith("sys-")?d.push({path:"/admin/system",query:{section:n}}):n==="save-records"?d.push("/admin/save-records"):n==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function S(){d.push("/")}return L(async()=>{try{const n=await G();f.value=n.site_name||"",c.value=n.site_logo||""}catch{}try{const s=await(await fetch("/health")).json();y.value=s.version}catch{}}),(n,s)=>{const i=u("el-icon"),a=u("el-menu-item"),x=u("el-sub-menu"),B=u("el-menu"),N=u("el-button"),V=u("router-view");return g(),m("div",J,[o("aside",W,[o("div",F,[o("div",K,[c.value?(g(),m("img",{key:0,src:c.value,alt:f.value||"CloudSearch",class:"sidebar-logo-img",onError:s[0]||(s[0]=q=>{q.target.style.display="none",c.value=""})},null,40,O)):(g(),m("span",P,"☁️"))]),o("div",Q,[o("h2",null,_(f.value||"CloudSearch"),1),s[1]||(s[1]=o("p",null,"管理控制台",-1))])]),e(B,{"default-active":b.value,class:"sidebar-menu",onSelect:C},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=o("span",null,"仪表盘",-1))]),_:1}),e(x,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=o("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(x,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=o("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1}),e(a,{index:"sys-platforms"},{default:t(()=>[...s[13]||(s[13]=[l("👥 推广平台管理",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[14]||(s[14]=o("span",null,"转存日志",-1))]),_:1}),s[16]||(s[16]=o("div",{class:"sidebar-spacer"},null,-1)),o("div",U,"v"+_(y.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(D))]),_:1}),s[15]||(s[15]=o("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),o("div",X,[o("header",Y,[o("div",Z,[o("span",$,_(k.value),1)]),o("div",ss,[e(N,{text:"",size:"small",onClick:S},{default:t(()=>[e(i,null,{default:t(()=>[e(r(E))]),_:1}),s[17]||(s[17]=l(" 返回前台 ",-1))]),_:1})])]),o("main",es,[e(V)])])])}}}),ds=z(ts,[["__scopeId","data-v-6f75751a"]]);export{ds as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as m,a as o,t as _,e,w as t,g as p,q as w,h as u,i as g,j as r,C as M,k as l,D as T,G as j,H as A,I as D,J as E,u as H,y as R,_ as z}from"./index-BNH_lgW0.js";import{a as G}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const J={class:"admin-layout"},W={class:"admin-sidebar"},F={class:"sidebar-brand"},K={class:"sidebar-logo"},O=["src","alt"],P={key:1,class:"sidebar-logo-fallback"},Q={class:"sidebar-brand-text"},U={class:"sidebar-version"},X={class:"admin-content"},Y={class:"content-header"},Z={class:"content-breadcrumb"},$={class:"breadcrumb-current"},ss={class:"content-actions"},es={class:"content-body"},ts=I({__name:"AdminLayout",setup(os){const d=H(),v=R(),f=p(""),c=p(""),y=p(""),h={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","sys-platforms":"推广平台管理","save-records":"转存日志"},b=w(()=>{const n=v.name;return n==="admin-cloud-configs"?"cloud-configs-toggle":n==="admin-cleanup"?"cloud-configs-cleanup":n==="admin-system"?v.query.section||"sys-site":n==="admin-save-records"?"save-records":"dashboard"}),k=w(()=>h[b.value]||"仪表盘");function C(n){n==="dashboard"?d.push("/admin/dashboard"):n==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):n==="cloud-configs-cleanup"?d.push("/admin/cleanup"):n.startsWith("sys-")?d.push({path:"/admin/system",query:{section:n}}):n==="save-records"?d.push("/admin/save-records"):n==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function S(){d.push("/")}return L(async()=>{try{const n=await G();f.value=n.site_name||"",c.value=n.site_logo||""}catch{}try{const s=await(await fetch("/health")).json();y.value=s.version}catch{}}),(n,s)=>{const i=u("el-icon"),a=u("el-menu-item"),x=u("el-sub-menu"),B=u("el-menu"),N=u("el-button"),V=u("router-view");return g(),m("div",J,[o("aside",W,[o("div",F,[o("div",K,[c.value?(g(),m("img",{key:0,src:c.value,alt:f.value||"CloudSearch",class:"sidebar-logo-img",onError:s[0]||(s[0]=q=>{q.target.style.display="none",c.value=""})},null,40,O)):(g(),m("span",P,"☁️"))]),o("div",Q,[o("h2",null,_(f.value||"CloudSearch"),1),s[1]||(s[1]=o("p",null,"管理控制台",-1))])]),e(B,{"default-active":b.value,class:"sidebar-menu",onSelect:C},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=o("span",null,"仪表盘",-1))]),_:1}),e(x,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=o("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(x,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=o("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1}),e(a,{index:"sys-platforms"},{default:t(()=>[...s[13]||(s[13]=[l("👥 推广平台管理",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[14]||(s[14]=o("span",null,"转存日志",-1))]),_:1}),s[16]||(s[16]=o("div",{class:"sidebar-spacer"},null,-1)),o("div",U,"v"+_(y.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(D))]),_:1}),s[15]||(s[15]=o("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),o("div",X,[o("header",Y,[o("div",Z,[o("span",$,_(k.value),1)]),o("div",ss,[e(N,{text:"",size:"small",onClick:S},{default:t(()=>[e(i,null,{default:t(()=>[e(r(E))]),_:1}),s[17]||(s[17]=l(" 返回前台 ",-1))]),_:1})])]),o("main",es,[e(V)])])])}}}),ds=z(ts,[["__scopeId","data-v-6f75751a"]]);export{ds as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as m,a as o,t as _,e,w as t,g as p,q as w,h as u,i as g,j as r,C as M,k as l,D as T,G as j,H as A,I as D,J as E,u as H,y as R,_ as z}from"./index-C7z77r4S.js";import{a as G}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const J={class:"admin-layout"},W={class:"admin-sidebar"},F={class:"sidebar-brand"},K={class:"sidebar-logo"},O=["src","alt"],P={key:1,class:"sidebar-logo-fallback"},Q={class:"sidebar-brand-text"},U={class:"sidebar-version"},X={class:"admin-content"},Y={class:"content-header"},Z={class:"content-breadcrumb"},$={class:"breadcrumb-current"},ss={class:"content-actions"},es={class:"content-body"},ts=I({__name:"AdminLayout",setup(os){const d=H(),v=R(),f=p(""),c=p(""),y=p(""),h={dashboard:"仪表盘","cloud-configs-toggle":"网盘设置及授权","cloud-configs-cleanup":"存储清理","sys-site":"网站设置","sys-services":"外部服务 & 缓存","sys-strategy":"性能配置","sys-password":"修改管理员密码","sys-notify":"消息推送","sys-daily-report":"每日汇报","sys-platforms":"推广平台管理","save-records":"转存日志"},b=w(()=>{const n=v.name;return n==="admin-cloud-configs"?"cloud-configs-toggle":n==="admin-cleanup"?"cloud-configs-cleanup":n==="admin-system"?v.query.section||"sys-site":n==="admin-save-records"?"save-records":"dashboard"}),k=w(()=>h[b.value]||"仪表盘");function C(n){n==="dashboard"?d.push("/admin/dashboard"):n==="cloud-configs-toggle"?d.push("/admin/cloud-configs"):n==="cloud-configs-cleanup"?d.push("/admin/cleanup"):n.startsWith("sys-")?d.push({path:"/admin/system",query:{section:n}}):n==="save-records"?d.push("/admin/save-records"):n==="logout"&&(localStorage.removeItem("admin_token"),d.push("/admin/login"))}function S(){d.push("/")}return L(async()=>{try{const n=await G();f.value=n.site_name||"",c.value=n.site_logo||""}catch{}try{const s=await(await fetch("/health")).json();y.value=s.version}catch{}}),(n,s)=>{const i=u("el-icon"),a=u("el-menu-item"),x=u("el-sub-menu"),B=u("el-menu"),N=u("el-button"),V=u("router-view");return g(),m("div",J,[o("aside",W,[o("div",F,[o("div",K,[c.value?(g(),m("img",{key:0,src:c.value,alt:f.value||"CloudSearch",class:"sidebar-logo-img",onError:s[0]||(s[0]=q=>{q.target.style.display="none",c.value=""})},null,40,O)):(g(),m("span",P,"☁️"))]),o("div",Q,[o("h2",null,_(f.value||"CloudSearch"),1),s[1]||(s[1]=o("p",null,"管理控制台",-1))])]),e(B,{"default-active":b.value,class:"sidebar-menu",onSelect:C},{default:t(()=>[e(a,{index:"dashboard"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(M))]),_:1}),s[2]||(s[2]=o("span",null,"仪表盘",-1))]),_:1}),e(x,{index:"cloud-configs"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(T))]),_:1}),s[3]||(s[3]=o("span",null,"网盘管理",-1))]),default:t(()=>[e(a,{index:"cloud-configs-toggle"},{default:t(()=>[...s[4]||(s[4]=[l("📋 设置及授权",-1)])]),_:1}),e(a,{index:"cloud-configs-cleanup"},{default:t(()=>[...s[5]||(s[5]=[l("🧹 存储清理",-1)])]),_:1})]),_:1}),e(x,{index:"system"},{title:t(()=>[e(i,null,{default:t(()=>[e(r(j))]),_:1}),s[6]||(s[6]=o("span",null,"系统设置",-1))]),default:t(()=>[e(a,{index:"sys-site"},{default:t(()=>[...s[7]||(s[7]=[l("🌐 网站设置",-1)])]),_:1}),e(a,{index:"sys-services"},{default:t(()=>[...s[8]||(s[8]=[l("🔗 外部服务 & 缓存",-1)])]),_:1}),e(a,{index:"sys-strategy"},{default:t(()=>[...s[9]||(s[9]=[l("⚡ 性能配置",-1)])]),_:1}),e(a,{index:"sys-password"},{default:t(()=>[...s[10]||(s[10]=[l("🔑 修改密码",-1)])]),_:1}),e(a,{index:"sys-notify"},{default:t(()=>[...s[11]||(s[11]=[l("📬 消息推送",-1)])]),_:1}),e(a,{index:"sys-daily-report"},{default:t(()=>[...s[12]||(s[12]=[l("📊 每日汇报",-1)])]),_:1}),e(a,{index:"sys-platforms"},{default:t(()=>[...s[13]||(s[13]=[l("👥 推广平台管理",-1)])]),_:1})]),_:1}),e(a,{index:"save-records"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(A))]),_:1}),s[14]||(s[14]=o("span",null,"转存日志",-1))]),_:1}),s[16]||(s[16]=o("div",{class:"sidebar-spacer"},null,-1)),o("div",U,"v"+_(y.value),1),e(a,{index:"logout"},{default:t(()=>[e(i,null,{default:t(()=>[e(r(D))]),_:1}),s[15]||(s[15]=o("span",null,"退出登录",-1))]),_:1})]),_:1},8,["default-active"])]),o("div",X,[o("header",Y,[o("div",Z,[o("span",$,_(k.value),1)]),o("div",ss,[e(N,{text:"",size:"small",onClick:S},{default:t(()=>[e(i,null,{default:t(()=>[e(r(E))]),_:1}),s[17]||(s[17]=l(" 返回前台 ",-1))]),_:1})])]),o("main",es,[e(V)])])])}}}),ds=z(ts,[["__scopeId","data-v-6f75751a"]]);export{ds as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as k,o as C,c as w,a,t as m,e as t,w as i,f as x,b as L,g as d,h as p,i as y,k as N,B as S,E as B,_ as E}from"./index-C7z77r4S.js";import{a as M,f as U}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const q={class:"admin-login-page"},A={class:"login-card"},I={class:"login-brand"},K={class:"login-title"},R={key:0,class:"error-msg"},j={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const _=d(),u=d(!1),c=d(""),g=d(""),v=d("");M().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=_.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await U(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return y(),w("div",q,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",A,[a("div",I,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",K,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:_,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=f=>s.username=f),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=f=>s.password=f),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(y(),w("p",R,m(c.value),1)):L("",!0),a("p",j,"CloudSearch v"+m(v.value),1)])])}}}),H=E(z,[["__scopeId","data-v-bd0b6672"]]);export{H as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as k,o as C,c as w,a,t as m,e as t,w as i,f as x,b as L,g as d,h as p,i as y,k as N,B as S,E as B,_ as E}from"./index-Cez7RKLo.js";import{a as M,f as U}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const q={class:"admin-login-page"},A={class:"login-card"},I={class:"login-brand"},K={class:"login-title"},R={key:0,class:"error-msg"},j={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const _=d(),u=d(!1),c=d(""),g=d(""),v=d("");M().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=_.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await U(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return y(),w("div",q,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",A,[a("div",I,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",K,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:_,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=f=>s.username=f),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=f=>s.password=f),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(y(),w("p",R,m(c.value),1)):L("",!0),a("p",j,"CloudSearch v"+m(v.value),1)])])}}}),H=E(z,[["__scopeId","data-v-bd0b6672"]]);export{H as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as k,o as C,c as w,a,t as m,e as t,w as i,f as x,b as L,g as d,h as p,i as y,k as N,B as S,E as B,_ as E}from"./index-BNH_lgW0.js";import{a as M,f as U}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const q={class:"admin-login-page"},A={class:"login-card"},I={class:"login-brand"},K={class:"login-title"},R={key:0,class:"error-msg"},j={class:"login-footer"},z=k({__name:"AdminLogin",setup(D){const _=d(),u=d(!1),c=d(""),g=d(""),v=d("");M().then(l=>{l.site_name&&(g.value=l.site_name)}).catch(()=>{});const s=S({username:"",password:""}),b={username:[{required:!0,message:"请输入用户名",trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"}]};async function h(){var e,r,n;if(await((e=_.value)==null?void 0:e.validate().catch(()=>!1))){u.value=!0,c.value="";try{const o=await U(s.username,s.password);localStorage.setItem("admin_token",o.token),B.success("登录成功"),window.location.href="/admin"}catch(o){c.value=((n=(r=o==null?void 0:o.response)==null?void 0:r.data)==null?void 0:n.message)||(o==null?void 0:o.message)||"登录失败"}finally{u.value=!1}}}return C(async()=>{try{const e=await(await fetch("/health")).json();v.value=e.version||""}catch{}}),(l,e)=>{const r=p("el-input"),n=p("el-form-item"),o=p("el-button"),V=p("el-form");return y(),w("div",q,[e[4]||(e[4]=a("div",{class:"login-bg-pattern"},null,-1)),a("div",A,[a("div",I,[e[2]||(e[2]=a("div",{class:"login-logo"},"☁️",-1)),a("h1",K,m(g.value||"CloudSearch"),1),e[3]||(e[3]=a("p",{class:"login-subtitle"},"管理后台",-1))]),t(V,{ref_key:"formRef",ref:_,model:s,rules:b,"label-width":"0",size:"large",onKeyup:x(h,["enter"])},{default:i(()=>[t(n,{prop:"username"},{default:i(()=>[t(r,{modelValue:s.username,"onUpdate:modelValue":e[0]||(e[0]=f=>s.username=f),placeholder:"用户名","prefix-icon":"User"},null,8,["modelValue"])]),_:1}),t(n,{prop:"password"},{default:i(()=>[t(r,{modelValue:s.password,"onUpdate:modelValue":e[1]||(e[1]=f=>s.password=f),type:"password",placeholder:"密码","prefix-icon":"Lock","show-password":""},null,8,["modelValue"])]),_:1}),t(n,null,{default:i(()=>[t(o,{type:"primary",loading:u.value,class:"login-btn",onClick:h},{default:i(()=>[N(m(u.value?"登录中...":"登 录"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),c.value?(y(),w("p",R,m(c.value),1)):L("",!0),a("p",j,"CloudSearch v"+m(v.value),1)])])}}}),H=E(z,[["__scopeId","data-v-bd0b6672"]]);export{H as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d,c as t,n as l,j as o,b as r,k as u,t as _,i as c,_ as m}from"./index-Cez7RKLo.js";const i=["src"],C=d({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(p,y)=>(c(),t("span",{class:"cloud-badge",style:l({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(c(),t("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,i)):r("",!0),u(" "+_(o(n)[e.cloud_type]),1)],4))}}),B=m(C,[["__scopeId","data-v-9106805f"]]);export{B as C};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d,c as t,n as l,j as o,b as r,k as u,t as _,i as c,_ as m}from"./index-C7z77r4S.js";const i=["src"],C=d({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(p,y)=>(c(),t("span",{class:"cloud-badge",style:l({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(c(),t("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,i)):r("",!0),u(" "+_(o(n)[e.cloud_type]),1)],4))}}),B=m(C,[["__scopeId","data-v-9106805f"]]);export{B as C};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{C as s,b as a,a as n}from"./index-Bn7NwETH.js";import{d,c as t,n as l,j as o,b as r,k as u,t as _,i as c,_ as m}from"./index-BNH_lgW0.js";const i=["src"],C=d({__name:"CloudBadge",props:{cloud_type:{},showIcon:{type:Boolean}},setup(e){return(p,y)=>(c(),t("span",{class:"cloud-badge",style:l({background:o(s)[e.cloud_type]})},[e.showIcon&&o(a)[e.cloud_type]?(c(),t("img",{key:0,src:o(a)[e.cloud_type],class:"badge-icon"},null,8,i)):r("",!0),u(" "+_(o(n)[e.cloud_type]),1)],4))}}),B=m(C,[["__scopeId","data-v-9106805f"]]);export{B as C};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.table-card[data-v-7c0dba25]{border-radius:var(--radius-lg);border:1px solid var(--border)!important;margin-bottom:20px}.table-card[data-v-7c0dba25] .el-card__header{font-size:15px;font-weight:600;background:var(--bg-card-header);border-bottom:1px solid var(--border);padding:12px 18px}.table-card[data-v-7c0dba25] .el-card__body{padding:0}.toolbar[data-v-7c0dba25]{margin-bottom:16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.nickname-text[data-v-7c0dba25]{font-weight:600;color:var(--text)}.promotion-text[data-v-7c0dba25]{font-size:12px;color:var(--text-secondary)}.uid-cell[data-v-7c0dba25]{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;color:var(--text-tertiary);letter-spacing:.3px}.save-count[data-v-7c0dba25]{font-size:12px;color:var(--text-tertiary)}.verifying[data-v-7c0dba25]{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-tertiary)}.storage-cell[data-v-7c0dba25]{display:flex;flex-direction:column;gap:3px;padding:2px 0}.storage-bar-wrap[data-v-7c0dba25]{height:4px;background:var(--border-light);border-radius:2px;overflow:hidden}.storage-bar-fill[data-v-7c0dba25]{height:100%;border-radius:2px;transition:width .3s}.storage-bar-fill.bar-normal[data-v-7c0dba25]{background:#67c23a}.storage-bar-fill.bar-warning[data-v-7c0dba25]{background:#e6a23c}.storage-bar-fill.bar-danger[data-v-7c0dba25]{background:#f56c6c}.storage-text[data-v-7c0dba25]{font-size:11px;color:var(--text-tertiary);display:flex;align-items:center;gap:3px}.storage-used[data-v-7c0dba25]{color:var(--text-secondary);font-weight:600}.storage-total[data-v-7c0dba25]{color:var(--text);font-weight:600}.storage-free[data-v-7c0dba25]{color:var(--text-tertiary)}.cookie-tips-item[data-v-7c0dba25] .el-form-item__content{margin-left:0!important}.cookie-tips[data-v-7c0dba25]{background:#f8faff;border:1px solid #e8f0fe;border-radius:var(--radius-sm);padding:14px 16px;font-size:12px;line-height:1.8;color:var(--text-secondary);width:100%;box-sizing:border-box}.cookie-tips-header[data-v-7c0dba25]{margin-bottom:10px}.cookie-tips-title[data-v-7c0dba25]{font-weight:700;color:var(--primary);font-size:13px}.cookie-tips-steps[data-v-7c0dba25]{margin:0;padding-left:20px}.cookie-tips-steps li[data-v-7c0dba25]{margin-bottom:4px}.cookie-tips-steps code[data-v-7c0dba25]{background:var(--primary-soft);padding:1px 5px;border-radius:3px;font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.cookie-tips-note[data-v-7c0dba25]{margin-top:8px;padding:6px 10px;background:#fffbe6;border:1px solid #fff3c4;border-radius:4px;color:#8a6d3b;font-size:11px;line-height:1.5}.cookie-tips-note code[data-v-7c0dba25]{background:#f5f0e0;font-size:11px}[data-theme=dark] .cookie-tips[data-v-7c0dba25]{background:#409eff0f;border-color:#409eff26}[data-theme=dark] .cookie-tips-title[data-v-7c0dba25]{color:#66b1ff}[data-theme=dark] .cookie-tips-steps code[data-v-7c0dba25]{background:#409eff1f}[data-theme=dark] .cookie-tips-note[data-v-7c0dba25]{background:#ffc1071a;border-color:#ffc10733;color:#d4a84b}[data-theme=dark] .cookie-tips-note code[data-v-7c0dba25]{background:#ffc1071f}.cloud-toggle-grid[data-v-7c0dba25]{display:flex;flex-wrap:wrap;gap:8px}.cloud-toggle-chip[data-v-7c0dba25]{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.cloud-toggle-chip[data-v-7c0dba25]:hover{border-color:var(--primary)}.cloud-icon-img[data-v-7c0dba25]{width:20px;height:20px;object-fit:contain;flex-shrink:0}.cloud-label[data-v-7c0dba25]{font-size:13px;font-weight:500}[data-v-7c0dba25] .el-dialog__header{font-weight:700;font-size:16px}[data-v-7c0dba25] .el-dialog__body{padding:20px 24px}[data-v-7c0dba25] .el-dialog__wrapper .el-dialog{border-radius:var(--radius-lg)}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.table-card[data-v-da98fdaa]{border-radius:var(--radius-lg);border:1px solid var(--border)!important;margin-bottom:20px}.table-card[data-v-da98fdaa] .el-card__header{font-size:15px;font-weight:600;background:var(--bg-card-header);border-bottom:1px solid var(--border);padding:12px 18px}.table-card[data-v-da98fdaa] .el-card__body{padding:0}.toolbar[data-v-da98fdaa]{margin-bottom:16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.nickname-text[data-v-da98fdaa]{font-weight:600;color:var(--text)}.promotion-text[data-v-da98fdaa]{font-size:12px;color:var(--text-secondary)}.uid-cell[data-v-da98fdaa]{font-family:SF Mono,Fira Code,Cascadia Code,monospace;font-size:11px;color:var(--text-tertiary);letter-spacing:.3px}.save-count[data-v-da98fdaa]{font-size:12px;color:var(--text-tertiary)}.verifying[data-v-da98fdaa]{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--text-tertiary)}.storage-cell[data-v-da98fdaa]{display:flex;flex-direction:column;gap:3px;padding:2px 0}.storage-bar-wrap[data-v-da98fdaa]{height:4px;background:var(--border-light);border-radius:2px;overflow:hidden}.storage-bar-fill[data-v-da98fdaa]{height:100%;border-radius:2px;transition:width .3s}.storage-bar-fill.bar-normal[data-v-da98fdaa]{background:#67c23a}.storage-bar-fill.bar-warning[data-v-da98fdaa]{background:#e6a23c}.storage-bar-fill.bar-danger[data-v-da98fdaa]{background:#f56c6c}.storage-text[data-v-da98fdaa]{font-size:11px;color:var(--text-tertiary);display:flex;align-items:center;gap:3px}.storage-used[data-v-da98fdaa]{color:var(--text-secondary);font-weight:600}.storage-total[data-v-da98fdaa]{color:var(--text);font-weight:600}.storage-free[data-v-da98fdaa]{color:var(--text-tertiary)}.cookie-tips-item[data-v-da98fdaa] .el-form-item__content{margin-left:0!important}.cookie-tips[data-v-da98fdaa]{background:#f8faff;border:1px solid #e8f0fe;border-radius:var(--radius-sm);padding:14px 16px;font-size:12px;line-height:1.8;color:var(--text-secondary);width:100%;box-sizing:border-box}.cookie-tips-header[data-v-da98fdaa]{margin-bottom:10px}.cookie-tips-title[data-v-da98fdaa]{font-weight:700;color:var(--primary);font-size:13px}.cookie-tips-steps[data-v-da98fdaa]{margin:0;padding-left:20px}.cookie-tips-steps li[data-v-da98fdaa]{margin-bottom:4px}.cookie-tips-steps code[data-v-da98fdaa]{background:var(--primary-soft);padding:1px 5px;border-radius:3px;font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.cookie-tips-note[data-v-da98fdaa]{margin-top:8px;padding:6px 10px;background:#fffbe6;border:1px solid #fff3c4;border-radius:4px;color:#8a6d3b;font-size:11px;line-height:1.5}.cookie-tips-note code[data-v-da98fdaa]{background:#f5f0e0;font-size:11px}[data-theme=dark] .cookie-tips[data-v-da98fdaa]{background:#409eff0f;border-color:#409eff26}[data-theme=dark] .cookie-tips-title[data-v-da98fdaa]{color:#66b1ff}[data-theme=dark] .cookie-tips-steps code[data-v-da98fdaa]{background:#409eff1f}[data-theme=dark] .cookie-tips-note[data-v-da98fdaa]{background:#ffc1071a;border-color:#ffc10733;color:#d4a84b}[data-theme=dark] .cookie-tips-note code[data-v-da98fdaa]{background:#ffc1071f}.cloud-toggle-grid[data-v-da98fdaa]{display:flex;flex-wrap:wrap;gap:8px}.cloud-toggle-chip[data-v-da98fdaa]{display:flex;align-items:center;gap:6px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.cloud-toggle-chip[data-v-da98fdaa]:hover{border-color:var(--primary)}.cloud-icon-img[data-v-da98fdaa]{width:20px;height:20px;object-fit:contain;flex-shrink:0}.cloud-label[data-v-da98fdaa]{font-size:13px;font-weight:500}[data-v-da98fdaa] .el-dialog__header{font-weight:700;font-size:16px}[data-v-da98fdaa] .el-dialog__body{padding:20px 24px}[data-v-da98fdaa] .el-dialog__wrapper .el-dialog{border-radius:var(--radius-lg)}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
import{d as D,o as I,c as a,a as u,F as N,t as d,b as f,e as m,w as p,f as L,r as P,g as i,h as C,u as U,i as n,j,s as E,k as x,n as F,_ as H}from"./index-C7z77r4S.js";import{g as K,a as Q}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const T={class:"home-page"},A={class:"hero-section"},W=["src","alt"],$={key:1,class:"logo-text"},G={class:"search-box"},J={key:1,class:"quote-line"},O={key:0,class:"cloud-zone"},X={class:"word-cloud"},Y=["onClick"],Z={key:1,class:"empty-area"},ee={key:2,class:"site-footer"},oe={class:"footer-inner"},te=D({__name:"HomePage",setup(se){const S=U(),v=i(""),g=i(!1),_=i(""),h=i(""),y=i(""),k=i(""),z=i(""),b=i([]),M=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","千里之行,始于足下。","书山有路,勤为径。","学以致用,知行合一。","路漫漫其修远兮,吾将上下而求索。"],V=["#e74c3c","#e67e22","#f39c12","#27ae60","#2980b9","#8e44ad","#2c3e50","#16a085","#d35400","#c0392b","#1abc9c","#3498db","#9b59b6","#34495e","#e91e63","#009688","#ff5722","#795548","#607d8b","#673ab7"],q=[48,42,38,34,30,28,26,24,22,20,18,17,16,15,14,13,12];function w(){const l=v.value.trim();l&&S.push("/search?q="+encodeURIComponent(l))}function R(l){S.push("/search?q="+encodeURIComponent(l))}function B(){window.open("/disclaimer/","_blank")}return I(async()=>{var l;k.value=M[Math.floor(Math.random()*M.length)],z.value="古籍经典";try{const[o,r]=await Promise.all([K(),Q()]);if(r.site_logo&&(_.value=r.site_logo),r.site_name&&(h.value=r.site_name),r.site_disclaimer&&(y.value=r.site_disclaimer),g.value=!0,o!=null&&o.categories){const c=o.categories.find(t=>t.category==="hot");if((l=c==null?void 0:c.hot)!=null&&l.length){const t=c.hot.slice(0,25).map((e,s)=>({k:e.keyword,s:q[Math.min(s,q.length-1)],c:V[s%V.length],w:s<5?800:s<10?600:400,r:(Math.random()-.5)*6,o:1-s*.02,d:s*.08}));for(let e=t.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[t[e],t[s]]=[t[s],t[e]]}b.value=t}}}catch(o){console.error(o)}}),(l,o)=>{const r=C("el-icon"),c=C("el-input"),t=C("el-button");return n(),a("div",T,[u("div",A,[g.value?(n(),a(N,{key:0},[_.value?(n(),a("img",{key:0,src:_.value,alt:h.value||"CloudSearch",class:"logo-img",onError:o[0]||(o[0]=e=>{e.target.style.display="none",_.value=""})},null,40,W)):(n(),a("div",$,d(h.value||"CloudSearch"),1))],64)):f("",!0),u("div",G,[m(c,{modelValue:v.value,"onUpdate:modelValue":o[1]||(o[1]=e=>v.value=e),placeholder:"搜索网盘资源...",size:"large",clearable:"",onKeyup:L(w,["enter"])},{prefix:p(()=>[m(r,null,{default:p(()=>[m(j(E))]),_:1})]),_:1},8,["modelValue"]),m(t,{type:"primary",size:"large",onClick:w,class:"search-btn"},{default:p(()=>[...o[2]||(o[2]=[x("搜索",-1)])]),_:1})]),k.value?(n(),a("div",J,"「 "+d(k.value)+" 」 ---"+d(z.value),1)):f("",!0)]),b.value.length>0?(n(),a("div",O,[o[3]||(o[3]=u("p",{class:"cloud-title"},"大家都在搜",-1)),u("div",X,[(n(!0),a(N,null,P(b.value,e=>(n(),a("span",{key:e.k,class:"wc-word",style:F({fontSize:e.s+"px",color:e.c,fontWeight:e.w,transform:"rotate("+e.r+"deg)",opacity:e.o,animationDelay:e.d+"s"}),onClick:s=>R(e.k)},d(e.k),13,Y))),128))])])):g.value?(n(),a("div",Z,[...o[4]||(o[4]=[u("p",null,"搜索脉搏采集中...",-1)])])):f("",!0),y.value?(n(),a("div",ee,[u("div",oe,d(y.value),1),m(t,{class:"footer-btn",size:"small",onClick:B},{default:p(()=>[...o[5]||(o[5]=[x("免责声明",-1)])]),_:1})])):f("",!0)])}}}),re=H(te,[["__scopeId","data-v-6df62b50"]]);export{re as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as D,o as I,c as a,a as u,F as N,t as d,b as f,e as m,w as p,f as L,r as P,g as i,h as C,u as U,i as n,j,s as E,k as x,n as F,_ as H}from"./index-BNH_lgW0.js";import{g as K,a as Q}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const T={class:"home-page"},A={class:"hero-section"},W=["src","alt"],$={key:1,class:"logo-text"},G={class:"search-box"},J={key:1,class:"quote-line"},O={key:0,class:"cloud-zone"},X={class:"word-cloud"},Y=["onClick"],Z={key:1,class:"empty-area"},ee={key:2,class:"site-footer"},oe={class:"footer-inner"},te=D({__name:"HomePage",setup(se){const S=U(),v=i(""),g=i(!1),_=i(""),h=i(""),y=i(""),k=i(""),z=i(""),b=i([]),M=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","千里之行,始于足下。","书山有路,勤为径。","学以致用,知行合一。","路漫漫其修远兮,吾将上下而求索。"],V=["#e74c3c","#e67e22","#f39c12","#27ae60","#2980b9","#8e44ad","#2c3e50","#16a085","#d35400","#c0392b","#1abc9c","#3498db","#9b59b6","#34495e","#e91e63","#009688","#ff5722","#795548","#607d8b","#673ab7"],q=[48,42,38,34,30,28,26,24,22,20,18,17,16,15,14,13,12];function w(){const l=v.value.trim();l&&S.push("/search?q="+encodeURIComponent(l))}function R(l){S.push("/search?q="+encodeURIComponent(l))}function B(){window.open("/disclaimer/","_blank")}return I(async()=>{var l;k.value=M[Math.floor(Math.random()*M.length)],z.value="古籍经典";try{const[o,r]=await Promise.all([K(),Q()]);if(r.site_logo&&(_.value=r.site_logo),r.site_name&&(h.value=r.site_name),r.site_disclaimer&&(y.value=r.site_disclaimer),g.value=!0,o!=null&&o.categories){const c=o.categories.find(t=>t.category==="hot");if((l=c==null?void 0:c.hot)!=null&&l.length){const t=c.hot.slice(0,25).map((e,s)=>({k:e.keyword,s:q[Math.min(s,q.length-1)],c:V[s%V.length],w:s<5?800:s<10?600:400,r:(Math.random()-.5)*6,o:1-s*.02,d:s*.08}));for(let e=t.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[t[e],t[s]]=[t[s],t[e]]}b.value=t}}}catch(o){console.error(o)}}),(l,o)=>{const r=C("el-icon"),c=C("el-input"),t=C("el-button");return n(),a("div",T,[u("div",A,[g.value?(n(),a(N,{key:0},[_.value?(n(),a("img",{key:0,src:_.value,alt:h.value||"CloudSearch",class:"logo-img",onError:o[0]||(o[0]=e=>{e.target.style.display="none",_.value=""})},null,40,W)):(n(),a("div",$,d(h.value||"CloudSearch"),1))],64)):f("",!0),u("div",G,[m(c,{modelValue:v.value,"onUpdate:modelValue":o[1]||(o[1]=e=>v.value=e),placeholder:"搜索网盘资源...",size:"large",clearable:"",onKeyup:L(w,["enter"])},{prefix:p(()=>[m(r,null,{default:p(()=>[m(j(E))]),_:1})]),_:1},8,["modelValue"]),m(t,{type:"primary",size:"large",onClick:w,class:"search-btn"},{default:p(()=>[...o[2]||(o[2]=[x("搜索",-1)])]),_:1})]),k.value?(n(),a("div",J,"「 "+d(k.value)+" 」 ---"+d(z.value),1)):f("",!0)]),b.value.length>0?(n(),a("div",O,[o[3]||(o[3]=u("p",{class:"cloud-title"},"大家都在搜",-1)),u("div",X,[(n(!0),a(N,null,P(b.value,e=>(n(),a("span",{key:e.k,class:"wc-word",style:F({fontSize:e.s+"px",color:e.c,fontWeight:e.w,transform:"rotate("+e.r+"deg)",opacity:e.o,animationDelay:e.d+"s"}),onClick:s=>R(e.k)},d(e.k),13,Y))),128))])])):g.value?(n(),a("div",Z,[...o[4]||(o[4]=[u("p",null,"搜索脉搏采集中...",-1)])])):f("",!0),y.value?(n(),a("div",ee,[u("div",oe,d(y.value),1),m(t,{class:"footer-btn",size:"small",onClick:B},{default:p(()=>[...o[5]||(o[5]=[x("免责声明",-1)])]),_:1})])):f("",!0)])}}}),re=H(te,[["__scopeId","data-v-6df62b50"]]);export{re as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as D,o as I,c as a,a as u,F as N,t as d,b as f,e as m,w as p,f as L,r as P,g as i,h as C,u as U,i as n,j,s as E,k as x,n as F,_ as H}from"./index-Cez7RKLo.js";import{g as K,a as Q}from"./index-iQrvdwZD.js";import"./index-DZ_Kha3d.js";const T={class:"home-page"},A={class:"hero-section"},W=["src","alt"],$={key:1,class:"logo-text"},G={class:"search-box"},J={key:1,class:"quote-line"},O={key:0,class:"cloud-zone"},X={class:"word-cloud"},Y=["onClick"],Z={key:1,class:"empty-area"},ee={key:2,class:"site-footer"},oe={class:"footer-inner"},te=D({__name:"HomePage",setup(se){const S=U(),v=i(""),g=i(!1),_=i(""),h=i(""),y=i(""),k=i(""),z=i(""),b=i([]),M=["学而时习之,不亦说乎。","温故而知新,可以为师矣。","千里之行,始于足下。","书山有路,勤为径。","学以致用,知行合一。","路漫漫其修远兮,吾将上下而求索。"],V=["#e74c3c","#e67e22","#f39c12","#27ae60","#2980b9","#8e44ad","#2c3e50","#16a085","#d35400","#c0392b","#1abc9c","#3498db","#9b59b6","#34495e","#e91e63","#009688","#ff5722","#795548","#607d8b","#673ab7"],q=[48,42,38,34,30,28,26,24,22,20,18,17,16,15,14,13,12];function w(){const l=v.value.trim();l&&S.push("/search?q="+encodeURIComponent(l))}function R(l){S.push("/search?q="+encodeURIComponent(l))}function B(){window.open("/disclaimer/","_blank")}return I(async()=>{var l;k.value=M[Math.floor(Math.random()*M.length)],z.value="古籍经典";try{const[o,r]=await Promise.all([K(),Q()]);if(r.site_logo&&(_.value=r.site_logo),r.site_name&&(h.value=r.site_name),r.site_disclaimer&&(y.value=r.site_disclaimer),g.value=!0,o!=null&&o.categories){const c=o.categories.find(t=>t.category==="hot");if((l=c==null?void 0:c.hot)!=null&&l.length){const t=c.hot.slice(0,25).map((e,s)=>({k:e.keyword,s:q[Math.min(s,q.length-1)],c:V[s%V.length],w:s<5?800:s<10?600:400,r:(Math.random()-.5)*6,o:1-s*.02,d:s*.08}));for(let e=t.length-1;e>0;e--){const s=Math.floor(Math.random()*(e+1));[t[e],t[s]]=[t[s],t[e]]}b.value=t}}}catch(o){console.error(o)}}),(l,o)=>{const r=C("el-icon"),c=C("el-input"),t=C("el-button");return n(),a("div",T,[u("div",A,[g.value?(n(),a(N,{key:0},[_.value?(n(),a("img",{key:0,src:_.value,alt:h.value||"CloudSearch",class:"logo-img",onError:o[0]||(o[0]=e=>{e.target.style.display="none",_.value=""})},null,40,W)):(n(),a("div",$,d(h.value||"CloudSearch"),1))],64)):f("",!0),u("div",G,[m(c,{modelValue:v.value,"onUpdate:modelValue":o[1]||(o[1]=e=>v.value=e),placeholder:"搜索网盘资源...",size:"large",clearable:"",onKeyup:L(w,["enter"])},{prefix:p(()=>[m(r,null,{default:p(()=>[m(j(E))]),_:1})]),_:1},8,["modelValue"]),m(t,{type:"primary",size:"large",onClick:w,class:"search-btn"},{default:p(()=>[...o[2]||(o[2]=[x("搜索",-1)])]),_:1})]),k.value?(n(),a("div",J,"「 "+d(k.value)+" 」 ---"+d(z.value),1)):f("",!0)]),b.value.length>0?(n(),a("div",O,[o[3]||(o[3]=u("p",{class:"cloud-title"},"大家都在搜",-1)),u("div",X,[(n(!0),a(N,null,P(b.value,e=>(n(),a("span",{key:e.k,class:"wc-word",style:F({fontSize:e.s+"px",color:e.c,fontWeight:e.w,transform:"rotate("+e.r+"deg)",opacity:e.o,animationDelay:e.d+"s"}),onClick:s=>R(e.k)},d(e.k),13,Y))),128))])])):g.value?(n(),a("div",Z,[...o[4]||(o[4]=[u("p",null,"搜索脉搏采集中...",-1)])])):f("",!0),y.value?(n(),a("div",ee,[u("div",oe,d(y.value),1),m(t,{class:"footer-btn",size:"small",onClick:B},{default:p(()=>[...o[5]||(o[5]=[x("免责声明",-1)])]),_:1})])):f("",!0)])}}}),re=H(te,[["__scopeId","data-v-6df62b50"]]);export{re as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
|||||||
|
.user-layout[data-v-c70450d4]{min-height:100vh;background:#f0f2f5}.user-header[data-v-c70450d4]{display:flex;justify-content:space-between;align-items:center;padding:0 24px;height:56px;background:#fff;box-shadow:0 1px 4px #0000000f}.user-title[data-v-c70450d4]{font-size:16px;font-weight:600;color:#303133}.header-right[data-v-c70450d4]{display:flex;align-items:center;gap:12px}.user-account[data-v-c70450d4]{font-size:13px;color:#606266}.user-body[data-v-c70450d4]{display:flex;min-height:calc(100vh - 56px)}.user-sidebar[data-v-c70450d4]{width:180px;background:#fff;border-right:1px solid #e4e7ed;padding:12px 0;flex-shrink:0}.sidebar-item[data-v-c70450d4]{padding:10px 20px;cursor:pointer;font-size:14px;color:#606266;transition:all .2s}.sidebar-item[data-v-c70450d4]:hover{background:#f5f7fa;color:#303133}.sidebar-item.active[data-v-c70450d4]{background:#ecf5ff;color:#409eff;font-weight:500;border-right:2px solid #409eff}.user-content[data-v-c70450d4]{flex:1;padding:20px;overflow:auto}.cookie-tips-item[data-v-c70450d4] .el-form-item__content{margin-left:0!important}.cookie-tips[data-v-c70450d4]{background:#f8faff;border:1px solid #e8f0fe;border-radius:6px;padding:14px 16px;font-size:12px;line-height:1.8;color:#606266;width:100%;box-sizing:border-box}.cookie-tips-header[data-v-c70450d4]{margin-bottom:10px}.cookie-tips-title[data-v-c70450d4]{font-weight:700;color:#409eff;font-size:13px}.cookie-tips-steps[data-v-c70450d4]{margin:0;padding-left:20px}.cookie-tips-steps li[data-v-c70450d4]{margin-bottom:4px}.cookie-tips-steps code[data-v-c70450d4]{background:#ecf5ff;padding:1px 5px;border-radius:3px;font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.cookie-tips-note[data-v-c70450d4]{margin-top:8px;padding:6px 10px;background:#fffbe6;border:1px solid #fff3c4;border-radius:4px;color:#8a6d3b;font-size:11px;line-height:1.5}.cookie-tips-note code[data-v-c70450d4]{background:#f5f0e0;font-size:11px}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
.user-layout[data-v-c6012e1c]{min-height:100vh;background:#f0f2f5}.user-header[data-v-c6012e1c]{display:flex;justify-content:space-between;align-items:center;padding:0 24px;height:56px;background:#fff;box-shadow:0 1px 4px #0000000f}.user-title[data-v-c6012e1c]{font-size:16px;font-weight:600;color:#303133}.header-right[data-v-c6012e1c]{display:flex;align-items:center;gap:12px}.user-account[data-v-c6012e1c]{font-size:13px;color:#606266}.user-body[data-v-c6012e1c]{display:flex;min-height:calc(100vh - 56px)}.user-sidebar[data-v-c6012e1c]{width:180px;background:#fff;border-right:1px solid #e4e7ed;padding:12px 0;flex-shrink:0}.sidebar-item[data-v-c6012e1c]{padding:10px 20px;cursor:pointer;font-size:14px;color:#606266;transition:all .2s}.sidebar-item[data-v-c6012e1c]:hover{background:#f5f7fa;color:#303133}.sidebar-item.active[data-v-c6012e1c]{background:#ecf5ff;color:#409eff;font-weight:500;border-right:2px solid #409eff}.user-content[data-v-c6012e1c]{flex:1;padding:20px;overflow:auto}.cookie-tips-item[data-v-c6012e1c] .el-form-item__content{margin-left:0!important}.cookie-tips[data-v-c6012e1c]{background:#f8faff;border:1px solid #e8f0fe;border-radius:6px;padding:14px 16px;font-size:12px;line-height:1.8;color:#606266;width:100%;box-sizing:border-box}.cookie-tips-header[data-v-c6012e1c]{margin-bottom:10px}.cookie-tips-title[data-v-c6012e1c]{font-weight:700;color:#409eff;font-size:13px}.cookie-tips-steps[data-v-c6012e1c]{margin:0;padding-left:20px}.cookie-tips-steps li[data-v-c6012e1c]{margin-bottom:4px}.cookie-tips-steps code[data-v-c6012e1c]{background:#ecf5ff;padding:1px 5px;border-radius:3px;font-size:11px;font-family:SF Mono,Fira Code,Cascadia Code,monospace}.cookie-tips-note[data-v-c6012e1c]{margin-top:8px;padding:6px 10px;background:#fffbe6;border:1px solid #fff3c4;border-radius:4px;color:#8a6d3b;font-size:11px;line-height:1.5}.cookie-tips-note code[data-v-c6012e1c]{background:#f5f0e0;font-size:11px}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as f,a as n,t as p,e as r,w as i,f as N,k as h,F as C,r as P,b as E,g as _,h as m,i as u,x as U,B as R,E as y,u as F,_ as K}from"./index-BNH_lgW0.js";import{a as V}from"./index-DZ_Kha3d.js";const M={class:"user-login-page"},T={class:"login-card"},$={class:"login-subtitle"},j={class:"login-switch"},D={key:0,class:"qr-section"},A={class:"qr-title"},G={class:"qr-grid"},H={class:"qr-label"},J={class:"qr-img-wrap"},O=["src","alt"],Q=I({__name:"UserLogin",setup(W){const z=F(),l=_(!0),w=_(!1),q=_(),g=_([]),b=_("扫码加入推广团队"),o=R({platform:"",phone:"",password:"",confirmPassword:""}),B={platform:[{required:!0,message:"请选择推广平台",trigger:"change"}],phone:[{validator:(d,e,t)=>{e?/^1[3-9]\d{9}$/.test(e)?t():t(new Error("请输入有效的手机号码")):t(new Error("请输入手机号码"))},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码至少6位",trigger:"blur"}],confirmPassword:[{validator:(d,e,t)=>{e?e!==o.password?t(new Error("两次密码不一致")):t():t(new Error("请确认密码"))},trigger:"blur"}]};L(async()=>{try{const{data:d}=await V.get("/api/promotion-platforms");g.value=d.platforms,d.title&&(b.value=d.title)}catch{}});async function k(){var e,t,v;if(await((e=q.value)==null?void 0:e.validate().catch(()=>!1))){w.value=!0;try{if(l.value){const a=o.platform+"-"+o.phone.trim(),{data:c}=await V.post("/api/user/login",{account:a,password:o.password});localStorage.setItem("user_token",c.token),localStorage.setItem("user_account",a),y.success("登录成功"),z.push("/user/dashboard")}else{const{data:a}=await V.post("/api/user/register",{platform:o.platform,phone:o.phone.trim(),password:o.password});y.success(a.message||"注册成功,请登录"),l.value=!0,o.password="",o.confirmPassword=""}}catch(a){y.error(((v=(t=a.response)==null?void 0:t.data)==null?void 0:v.error)||"操作失败")}finally{w.value=!1}}}return(d,e)=>{const t=m("el-option"),v=m("el-select"),a=m("el-form-item"),c=m("el-input"),x=m("el-button"),S=m("el-form");return u(),f("div",M,[n("div",T,[e[5]||(e[5]=n("h1",{class:"login-title"},"CloudSearch 用户中心",-1)),n("p",$,p(l.value?"登录您的账号":"注册新账号"),1),r(S,{ref_key:"formRef",ref:q,model:o,rules:B,"label-width":"0",onKeyup:N(k,["enter"])},{default:i(()=>[r(a,{prop:"platform"},{default:i(()=>[r(v,{modelValue:o.platform,"onUpdate:modelValue":e[0]||(e[0]=s=>o.platform=s),placeholder:"选择推广平台",size:"large",style:{width:"100%"}},{default:i(()=>[(u(!0),f(C,null,P(g.value,s=>(u(),U(t,{key:s.name,label:s.name,value:s.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),r(a,{prop:"phone"},{default:i(()=>[r(c,{modelValue:o.phone,"onUpdate:modelValue":e[1]||(e[1]=s=>o.phone=s),placeholder:"手机号码",size:"large"},null,8,["modelValue"])]),_:1}),r(a,{prop:"password"},{default:i(()=>[r(c,{modelValue:o.password,"onUpdate:modelValue":e[2]||(e[2]=s=>o.password=s),type:"password",placeholder:"密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1}),l.value?E("",!0):(u(),U(a,{key:0,prop:"confirmPassword"},{default:i(()=>[r(c,{modelValue:o.confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=s=>o.confirmPassword=s),type:"password",placeholder:"确认密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1})),r(a,null,{default:i(()=>[r(x,{type:"primary",size:"large",loading:w.value,style:{width:"100%"},onClick:k},{default:i(()=>[h(p(l.value?"登 录":"注 册"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),n("div",j,[h(p(l.value?"还没有账号?":"已有账号?")+" ",1),r(x,{link:"",type:"primary",onClick:e[4]||(e[4]=s=>l.value=!l.value)},{default:i(()=>[h(p(l.value?"立即注册":"去登录"),1)]),_:1})])]),g.value.length>0?(u(),f("div",D,[n("div",A,p(b.value),1),n("div",G,[(u(!0),f(C,null,P(g.value,s=>(u(),f("div",{key:s.name,class:"qr-item"},[n("div",H,"加入【"+p(s.name)+"】团队",1),n("div",J,[n("img",{src:"https://api.qrserver.com/v1/create-qr-code/?size=120x120&data="+encodeURIComponent(s.join_url),alt:"加入"+s.name,class:"qr-image"},null,8,O)])]))),128))])])):E("",!0)])}}}),ee=K(Q,[["__scopeId","data-v-f27b738e"]]);export{ee as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as f,a as n,t as p,e as r,w as i,f as N,k as h,F as C,r as P,b as E,g as _,h as m,i as u,x as U,B as R,E as y,u as F,_ as K}from"./index-Cez7RKLo.js";import{a as V}from"./index-DZ_Kha3d.js";const M={class:"user-login-page"},T={class:"login-card"},$={class:"login-subtitle"},j={class:"login-switch"},D={key:0,class:"qr-section"},A={class:"qr-title"},G={class:"qr-grid"},H={class:"qr-label"},J={class:"qr-img-wrap"},O=["src","alt"],Q=I({__name:"UserLogin",setup(W){const z=F(),l=_(!0),w=_(!1),q=_(),g=_([]),b=_("扫码加入推广团队"),o=R({platform:"",phone:"",password:"",confirmPassword:""}),B={platform:[{required:!0,message:"请选择推广平台",trigger:"change"}],phone:[{validator:(d,e,t)=>{e?/^1[3-9]\d{9}$/.test(e)?t():t(new Error("请输入有效的手机号码")):t(new Error("请输入手机号码"))},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码至少6位",trigger:"blur"}],confirmPassword:[{validator:(d,e,t)=>{e?e!==o.password?t(new Error("两次密码不一致")):t():t(new Error("请确认密码"))},trigger:"blur"}]};L(async()=>{try{const{data:d}=await V.get("/api/promotion-platforms");g.value=d.platforms,d.title&&(b.value=d.title)}catch{}});async function k(){var e,t,v;if(await((e=q.value)==null?void 0:e.validate().catch(()=>!1))){w.value=!0;try{if(l.value){const a=o.platform+"-"+o.phone.trim(),{data:c}=await V.post("/api/user/login",{account:a,password:o.password});localStorage.setItem("user_token",c.token),localStorage.setItem("user_account",a),y.success("登录成功"),z.push("/user/dashboard")}else{const{data:a}=await V.post("/api/user/register",{platform:o.platform,phone:o.phone.trim(),password:o.password});y.success(a.message||"注册成功,请登录"),l.value=!0,o.password="",o.confirmPassword=""}}catch(a){y.error(((v=(t=a.response)==null?void 0:t.data)==null?void 0:v.error)||"操作失败")}finally{w.value=!1}}}return(d,e)=>{const t=m("el-option"),v=m("el-select"),a=m("el-form-item"),c=m("el-input"),x=m("el-button"),S=m("el-form");return u(),f("div",M,[n("div",T,[e[5]||(e[5]=n("h1",{class:"login-title"},"CloudSearch 用户中心",-1)),n("p",$,p(l.value?"登录您的账号":"注册新账号"),1),r(S,{ref_key:"formRef",ref:q,model:o,rules:B,"label-width":"0",onKeyup:N(k,["enter"])},{default:i(()=>[r(a,{prop:"platform"},{default:i(()=>[r(v,{modelValue:o.platform,"onUpdate:modelValue":e[0]||(e[0]=s=>o.platform=s),placeholder:"选择推广平台",size:"large",style:{width:"100%"}},{default:i(()=>[(u(!0),f(C,null,P(g.value,s=>(u(),U(t,{key:s.name,label:s.name,value:s.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),r(a,{prop:"phone"},{default:i(()=>[r(c,{modelValue:o.phone,"onUpdate:modelValue":e[1]||(e[1]=s=>o.phone=s),placeholder:"手机号码",size:"large"},null,8,["modelValue"])]),_:1}),r(a,{prop:"password"},{default:i(()=>[r(c,{modelValue:o.password,"onUpdate:modelValue":e[2]||(e[2]=s=>o.password=s),type:"password",placeholder:"密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1}),l.value?E("",!0):(u(),U(a,{key:0,prop:"confirmPassword"},{default:i(()=>[r(c,{modelValue:o.confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=s=>o.confirmPassword=s),type:"password",placeholder:"确认密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1})),r(a,null,{default:i(()=>[r(x,{type:"primary",size:"large",loading:w.value,style:{width:"100%"},onClick:k},{default:i(()=>[h(p(l.value?"登 录":"注 册"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),n("div",j,[h(p(l.value?"还没有账号?":"已有账号?")+" ",1),r(x,{link:"",type:"primary",onClick:e[4]||(e[4]=s=>l.value=!l.value)},{default:i(()=>[h(p(l.value?"立即注册":"去登录"),1)]),_:1})])]),g.value.length>0?(u(),f("div",D,[n("div",A,p(b.value),1),n("div",G,[(u(!0),f(C,null,P(g.value,s=>(u(),f("div",{key:s.name,class:"qr-item"},[n("div",H,"加入【"+p(s.name)+"】团队",1),n("div",J,[n("img",{src:"https://api.qrserver.com/v1/create-qr-code/?size=120x120&data="+encodeURIComponent(s.join_url),alt:"加入"+s.name,class:"qr-image"},null,8,O)])]))),128))])])):E("",!0)])}}}),ee=K(Q,[["__scopeId","data-v-f27b738e"]]);export{ee as default};
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
import{d as I,o as L,c as f,a as n,t as p,e as r,w as i,f as N,k as h,F as C,r as P,b as E,g as _,h as m,i as u,x as U,B as R,E as y,u as F,_ as K}from"./index-C7z77r4S.js";import{a as V}from"./index-DZ_Kha3d.js";const M={class:"user-login-page"},T={class:"login-card"},$={class:"login-subtitle"},j={class:"login-switch"},D={key:0,class:"qr-section"},A={class:"qr-title"},G={class:"qr-grid"},H={class:"qr-label"},J={class:"qr-img-wrap"},O=["src","alt"],Q=I({__name:"UserLogin",setup(W){const z=F(),l=_(!0),w=_(!1),q=_(),g=_([]),b=_("扫码加入推广团队"),o=R({platform:"",phone:"",password:"",confirmPassword:""}),B={platform:[{required:!0,message:"请选择推广平台",trigger:"change"}],phone:[{validator:(d,e,t)=>{e?/^1[3-9]\d{9}$/.test(e)?t():t(new Error("请输入有效的手机号码")):t(new Error("请输入手机号码"))},trigger:"blur"}],password:[{required:!0,message:"请输入密码",trigger:"blur"},{min:6,message:"密码至少6位",trigger:"blur"}],confirmPassword:[{validator:(d,e,t)=>{e?e!==o.password?t(new Error("两次密码不一致")):t():t(new Error("请确认密码"))},trigger:"blur"}]};L(async()=>{try{const{data:d}=await V.get("/api/promotion-platforms");g.value=d.platforms,d.title&&(b.value=d.title)}catch{}});async function k(){var e,t,v;if(await((e=q.value)==null?void 0:e.validate().catch(()=>!1))){w.value=!0;try{if(l.value){const a=o.platform+"-"+o.phone.trim(),{data:c}=await V.post("/api/user/login",{account:a,password:o.password});localStorage.setItem("user_token",c.token),localStorage.setItem("user_account",a),y.success("登录成功"),z.push("/user/dashboard")}else{const{data:a}=await V.post("/api/user/register",{platform:o.platform,phone:o.phone.trim(),password:o.password});y.success(a.message||"注册成功,请登录"),l.value=!0,o.password="",o.confirmPassword=""}}catch(a){y.error(((v=(t=a.response)==null?void 0:t.data)==null?void 0:v.error)||"操作失败")}finally{w.value=!1}}}return(d,e)=>{const t=m("el-option"),v=m("el-select"),a=m("el-form-item"),c=m("el-input"),x=m("el-button"),S=m("el-form");return u(),f("div",M,[n("div",T,[e[5]||(e[5]=n("h1",{class:"login-title"},"CloudSearch 用户中心",-1)),n("p",$,p(l.value?"登录您的账号":"注册新账号"),1),r(S,{ref_key:"formRef",ref:q,model:o,rules:B,"label-width":"0",onKeyup:N(k,["enter"])},{default:i(()=>[r(a,{prop:"platform"},{default:i(()=>[r(v,{modelValue:o.platform,"onUpdate:modelValue":e[0]||(e[0]=s=>o.platform=s),placeholder:"选择推广平台",size:"large",style:{width:"100%"}},{default:i(()=>[(u(!0),f(C,null,P(g.value,s=>(u(),U(t,{key:s.name,label:s.name,value:s.name},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),r(a,{prop:"phone"},{default:i(()=>[r(c,{modelValue:o.phone,"onUpdate:modelValue":e[1]||(e[1]=s=>o.phone=s),placeholder:"手机号码",size:"large"},null,8,["modelValue"])]),_:1}),r(a,{prop:"password"},{default:i(()=>[r(c,{modelValue:o.password,"onUpdate:modelValue":e[2]||(e[2]=s=>o.password=s),type:"password",placeholder:"密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1}),l.value?E("",!0):(u(),U(a,{key:0,prop:"confirmPassword"},{default:i(()=>[r(c,{modelValue:o.confirmPassword,"onUpdate:modelValue":e[3]||(e[3]=s=>o.confirmPassword=s),type:"password",placeholder:"确认密码",size:"large","show-password":""},null,8,["modelValue"])]),_:1})),r(a,null,{default:i(()=>[r(x,{type:"primary",size:"large",loading:w.value,style:{width:"100%"},onClick:k},{default:i(()=>[h(p(l.value?"登 录":"注 册"),1)]),_:1},8,["loading"])]),_:1})]),_:1},8,["model"]),n("div",j,[h(p(l.value?"还没有账号?":"已有账号?")+" ",1),r(x,{link:"",type:"primary",onClick:e[4]||(e[4]=s=>l.value=!l.value)},{default:i(()=>[h(p(l.value?"立即注册":"去登录"),1)]),_:1})])]),g.value.length>0?(u(),f("div",D,[n("div",A,p(b.value),1),n("div",G,[(u(!0),f(C,null,P(g.value,s=>(u(),f("div",{key:s.name,class:"qr-item"},[n("div",H,"加入【"+p(s.name)+"】团队",1),n("div",J,[n("img",{src:"https://api.qrserver.com/v1/create-qr-code/?size=120x120&data="+encodeURIComponent(s.join_url),alt:"加入"+s.name,class:"qr-image"},null,8,O)])]))),128))])])):E("",!0)])}}}),ee=K(Q,[["__scopeId","data-v-f27b738e"]]);export{ee as default};
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -15,7 +15,7 @@
|
|||||||
}).catch(function(){});
|
}).catch(function(){});
|
||||||
})();
|
})();
|
||||||
</script>
|
</script>
|
||||||
<script type="module" crossorigin src="/assets/index-DG5Z6wYC.js"></script>
|
<script type="module" crossorigin src="/assets/index-BNH_lgW0.js"></script>
|
||||||
<link rel="stylesheet" crossorigin href="/assets/index-CAy_4E9W.css">
|
<link rel="stylesheet" crossorigin href="/assets/index-CAy_4E9W.css">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|||||||
@@ -141,9 +141,13 @@ export function saveCloudConfig(data: {
|
|||||||
WHERE id = ?`
|
WHERE id = ?`
|
||||||
).run(data.cloud_type, encryptedCookie, data.nickname || null, cookieUidForUpdate || null, cookieUidForUpdate || null, data.promotion_account || null, data.is_active ?? 1, data.storage_used || null, data.storage_total || null, localTimestamp(), data.id);
|
).run(data.cloud_type, encryptedCookie, data.nickname || null, cookieUidForUpdate || null, cookieUidForUpdate || null, data.promotion_account || null, data.is_active ?? 1, data.storage_used || null, data.storage_total || null, localTimestamp(), data.id);
|
||||||
} else {
|
} else {
|
||||||
const existing = db.prepare(
|
const existing = data.promotion_account
|
||||||
'SELECT id, nickname FROM cloud_configs WHERE cloud_type = ? AND is_active = 1 LIMIT 1'
|
? db.prepare(
|
||||||
).get(data.cloud_type) as any;
|
'SELECT id, nickname FROM cloud_configs WHERE cloud_type = ? AND is_active = 1 AND promotion_account = ? LIMIT 1'
|
||||||
|
).get(data.cloud_type, data.promotion_account) as any
|
||||||
|
: db.prepare(
|
||||||
|
'SELECT id, nickname FROM cloud_configs WHERE cloud_type = ? AND is_active = 1 LIMIT 1'
|
||||||
|
).get(data.cloud_type) as any;
|
||||||
if (existing) {
|
if (existing) {
|
||||||
db.prepare(
|
db.prepare(
|
||||||
`UPDATE cloud_configs SET
|
`UPDATE cloud_configs SET
|
||||||
|
|||||||
@@ -1,11 +1,22 @@
|
|||||||
import { Router } from 'express';
|
import { Router } from "express";
|
||||||
import searchRoutes from './search.routes';
|
import searchRoutes from "./search.routes";
|
||||||
import adminRoutes from './admin.routes';
|
import adminRoutes from "./admin.routes";
|
||||||
import uploadRoutes from './upload.routes';
|
import uploadRoutes from "./upload.routes";
|
||||||
import cleanupRoutes from './cleanup.routes';
|
import cleanupRoutes from "./cleanup.routes";
|
||||||
|
import { getAllSystemConfigs } from "../admin/system-config.service";
|
||||||
|
|
||||||
const router = Router();
|
const router = Router();
|
||||||
|
|
||||||
|
// Public system configs endpoint (for whitelist dirs etc.)
|
||||||
|
router.get("/system-configs", (_req, res) => {
|
||||||
|
try {
|
||||||
|
const configs = getAllSystemConfigs();
|
||||||
|
res.json(configs);
|
||||||
|
} catch (err: any) {
|
||||||
|
res.status(500).json({ error: err.message || "Failed to get system configs" });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
router.use(searchRoutes);
|
router.use(searchRoutes);
|
||||||
router.use(adminRoutes);
|
router.use(adminRoutes);
|
||||||
router.use(uploadRoutes);
|
router.use(uploadRoutes);
|
||||||
|
|||||||
@@ -289,6 +289,17 @@ router.get('/search', searchLimiter, async (req: Request, res: Response) => {
|
|||||||
res.status(400).json({ error: 'Query parameter "q" is required' });
|
res.status(400).json({ error: 'Query parameter "q" is required' });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (isNaN(page) || page < 1) {
|
||||||
|
res.status(400).json({ error: 'Page must be >= 1' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (req.query.limit !== undefined) {
|
||||||
|
const limit = parseInt(req.query.limit as string, 10);
|
||||||
|
if (isNaN(limit) || limit < 1 || limit > 500) {
|
||||||
|
res.status(400).json({ error: 'Limit must be 1-500' });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const result = await search(keyword, page, ip);
|
const result = await search(keyword, page, ip);
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ router.get('/save-records', (req: Request, res: Response) => {
|
|||||||
router.get('/cloud-configs', (req: Request, res: Response) => {
|
router.get('/cloud-configs', (req: Request, res: Response) => {
|
||||||
const db = getDb();
|
const db = getDb();
|
||||||
const configs = db.prepare(
|
const configs = db.prepare(
|
||||||
'SELECT id, cloud_type, nickname, cloud_type_uid, cookie_uid, promotion_account, storage_used, storage_total, is_active, verification_status, consecutive_failures, last_used_at, total_saves, created_at FROM cloud_configs WHERE promotion_account = ? AND is_active = 1 ORDER BY created_at DESC'
|
'SELECT id, cloud_type, nickname, cloud_type_uid, cookie_uid, promotion_account, storage_used, storage_total, is_active, verification_status, consecutive_failures, last_used_at, total_saves, created_at FROM cloud_configs WHERE promotion_account = ? ORDER BY created_at DESC'
|
||||||
).all(req.user!.account);
|
).all(req.user!.account);
|
||||||
res.json(configs);
|
res.json(configs);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user