Files
CoreInject/frontend/dist/assets/DrS-_GpA.js
QiuChenly 8394c93e6c 性能优化、错误修复
### 后端更新

性能优化
- Redis、数据库索引优化, 复杂联表查询查询速度从10秒降低到500ms

功能增强
- 统一文件上传 API
- 论坛权限管理优化

### 前端更新

问题修复
- 统一错误提示、组件复用、图标本地化、密码加密传输、大文件分片上传

新增功能
- 全局通知系统、WebSocket 实时消息、图标批量同步、IP 封禁管理、应用版本批量查询、头像上传、TypeScript 类型完善、讨论区功能增强

代码优化
- 删除冗余组件、统一 API 错误处理、优化代码结构、统一 UI 风格
2025-11-13 03:02:01 +08:00

17 lines
3.8 KiB
JavaScript

import{d as s,r as a,w as l,c as e,T as o,g as t,i as n,j as i,k as c,l as d,m as r,A as u,v as g,F as m,y as v,b as p,t as f,e as y,n as h}from"./Cf-ihD4f.js"
import{_ as k,a as b,A as S}from"./C_NDl53k.js"
const w={class:"modal-header"},C={class:"modal-title"},$={class:"modal-body"},M={class:"log-time"},_={class:"log-message"},T={key:0,class:"log-line loading"},j={class:"modal-footer"},B={class:"footer-status"},I={key:0,class:"status-success"},L={key:1,class:"status-error"},A={key:2,class:"status-loading"},E={class:"footer-actions"},V=b(s({__name:"LogModal",props:{visible:{type:Boolean},title:{default:"操作日志"},logs:{default:()=>[]},loading:{type:Boolean,default:!1},status:{default:"idle"},canClose:{type:Boolean,default:!0}},emits:["close"],setup(s,{emit:b}){const S=s,V=b,D=a(null),H=()=>{D.value&&(D.value.scrollTop=D.value.scrollHeight)}
l(()=>S.logs,async()=>{await h(),H()},{deep:!0,flush:"post"}),l(()=>S.loading,async()=>{await h(),H()})
const R=()=>{switch(S.status){case"success":return"mdi:check-circle"
case"error":return"mdi:alert-circle"
case"loading":return"mdi:loading"
default:return"mdi:information"}},x=s=>s.level?`log-${s.level}`:"log-info",F=()=>{V("close")},U=()=>{S.canClose&&F()}
return(a,l)=>(y(),e(o,{to:"body"},[t(n,{name:"modal"},{default:i(()=>[s.visible?(y(),c("div",{key:0,class:"modal-overlay",onClick:U},[r("div",{class:"modal-container",onClick:l[0]||(l[0]=f(()=>{},["stop"]))},[r("div",w,[r("h2",C,[t(k,{icon:R(),class:"modal-icon"},null,8,["icon"]),u(" "+g(s.title),1)]),s.canClose?(y(),c("button",{key:0,onClick:F,class:"modal-close","aria-label":"关闭"},[t(k,{icon:"mdi:close"})])):d("",!0)]),r("div",$,[r("div",{ref_key:"logContainer",ref:D,class:"log-container"},[(y(!0),c(m,null,v(s.logs,(s,a)=>(y(),c("div",{key:a,class:p(["log-line",x(s)])},[r("span",M,g(s.time),1),r("span",_,g(s.message),1)],2))),128)),s.loading?(y(),c("div",T,[...l[1]||(l[1]=[r("div",{class:"spinner-small"},null,-1),r("span",{class:"log-message"},"处理中...",-1)])])):d("",!0)],512)]),r("div",j,[r("div",B,["success"===s.status?(y(),c("span",I,[t(k,{icon:"mdi:check-circle"}),l[2]||(l[2]=u(" 操作成功 ",-1))])):"error"===s.status?(y(),c("span",L,[t(k,{icon:"mdi:alert-circle"}),l[3]||(l[3]=u(" 操作失败 ",-1))])):s.loading?(y(),c("span",A,[...l[4]||(l[4]=[r("div",{class:"spinner-small"},null,-1),u(" 处理中... ",-1)])])):d("",!0)]),r("div",E,[s.canClose?(y(),c("button",{key:0,onClick:F,class:"btn btn-outline"}," 关闭 ")):d("",!0)])])])])):d("",!0)]),_:1})]))}}),[["__scopeId","data-v-f5d3fd24"]])
function D(s){const l=a(!1),{onRefresh:e}=s,{modalVisible:o,modalTitle:t,logs:n,modalStatus:i,addLog:c,showModal:d,hideModal:r,setSuccess:u,setError:g}=function(){const s=a(!1),l=a(""),e=a([]),o=a("idle")
return{modalVisible:s,modalTitle:l,logs:e,modalStatus:o,addLog:(s,a="info")=>{const l=new Date,o=`${l.getHours().toString().padStart(2,"0")}:${l.getMinutes().toString().padStart(2,"0")}:${l.getSeconds().toString().padStart(2,"0")}`
e.value.push({time:o,message:s,level:a})},showModal:a=>{l.value=a,e.value=[],o.value="loading",s.value=!0},hideModal:()=>{s.value=!1},setSuccess:()=>{o.value="success"},setError:()=>{o.value="error"}}}()
return{updating:l,modalVisible:o,modalTitle:t,logs:n,modalStatus:i,handleUpdate:async s=>{l.value=!0,d("injected"===s.status?"更新应用":"注入应用"),c(`开始处理应用: ${s.name}`),c(`Bundle ID: ${s.bundleId}`),c(`当前版本: ${s.version}`)
try{c("正在连接到服务器...")
const a=await S.updateApp(s.bundleId)
a.logs&&a.logs.length>0&&a.logs.forEach(s=>{c(s,"info")}),a.success?(c("操作成功完成!","success"),u(),c("正在刷新应用状态..."),await e(),c("应用状态已更新","success")):(c(`操作失败: ${a.errorMessage||"更新失败"}`,"error"),g())}catch(a){c(`网络错误: ${a}`,"error"),g()}finally{l.value=!1}},handleReinstall:async()=>{},hideModal:r}}export{V as L,D as u}