Files
senmesh-zc/deployment/ow/web/assets/recycle-T9KHbr3K.js
KodouWZF d39b3b035d feat(部署): 新增 deployment/ 内外网两套按侧部署包
按 demo/ 的写法把交付包改成「角色由目录决定」:iw/ 拷内网机、ow/ 拷外网机,
各自含镜像 tar、SQL、配置与 install.sh,install.sh 不再收 iw/ow 参数。

前端不再打进镜像,改为静态包放在 <侧>/web/ 只读挂进 nginx:1.27-alpine,
现场临时改页面直接替换文件 + restart web 即可。数据仍全部挂宿主机,
子目录命名与 deploy/offline 一致(pgdata/redis/mq/upload/logs/gate),
默认根改为包内 ./volumes,放数据盘只改 .env 的 SFILE_DATA_ROOT。

后端镜像 sfile-app:1.0.1 含传输优化那一批(实测组包 11.4×、解包 9.9×)。
出包脚本 deployment/scripts/build-package.sh 负责 jar→镜像→前端双包→sql→tar→VERSION。
2026-11-04 21:44:56 +08:00

1 line
9.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{t as e}from"./useQuery-Hj7E43Q9.js";import{n as t,t as n}from"./file-category-filter-BmGVvDiP.js";import{t as r}from"./file-DlDBClxy.js";import{t as i}from"./folder-input-lYe4JQ9T.js";import{t as a}from"./folder-DDlXKK_x.js";import{Dt as o,Et as s,F as c,Ot as l,Qt as u,Vn as d,Zt as f,ct as p,fn as m,ht as h,ln as g,pt as _,qn as v,st as y,t as b,tn as x,yn as S,zn as C}from"./index-CjPx3lfT.js";import{t as w}from"./directory-breadcrumb-BIvEu5Qr.js";import{n as T,r as E,t as D}from"./data-table-B1a8BMaf.js";import{t as O}from"./pagination-DP8LewWY.js";import{a as k,i as A,n as j,o as M,r as N,s as P,t as F}from"./dialog-ITi__DUr.js";var I=m(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),L=v(d(),1);const R=e=>{let{mutateAsync:t,isPending:n}=S({mutationFn:o,...e||{}});return{remove:e=>{g.promise(t(e),{loading:`删除中`,success:`删除成功`})},removeIsPending:n}};var z=v(C(),1);function B({open:e,setOpen:t,data:n,refetch:i}){let{remove:o,removeIsPending:s}=R({onSuccess(){i==null||i(),t(!1)}});return(0,z.jsx)(F,{open:e,onOpenChange:t,children:(0,z.jsxs)(N,{className:`w-[400px]`,children:[(0,z.jsxs)(M,{children:[(0,z.jsxs)(P,{children:[`您确定要彻底删除该`,(n==null?void 0:n.fileType)===p.FILE?`文件`:`目录`,`?`]}),(n==null?void 0:n.fileType)===p.FILE?(0,z.jsx)(A,{children:`彻底删除后文件将被永久删除,无法恢复`}):(0,z.jsx)(A,{children:`彻底删除后目录下的文件也会一并被删除,无法恢复`}),(0,z.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-sm p-2 rounded-md bg-gray-50`,children:[(n==null?void 0:n.fileType)===p.FILE?(0,z.jsx)(r,{size:16,className:`text-primary flex-none`}):(0,z.jsx)(a,{size:16,className:`text-amber-500 flex-none`}),(0,z.jsx)(`span`,{className:`break-all`,children:n==null?void 0:n.fileName})]})]}),(0,z.jsxs)(k,{children:[(0,z.jsx)(j,{asChild:!0,children:(0,z.jsx)(u,{variant:`outline`,children:`取消`})}),(0,z.jsxs)(u,{type:`submit`,variant:`destructive`,disabled:s,onClick:()=>{o(n==null?void 0:n.id)},children:[s&&(0,z.jsx)(f,{}),`确定`]})]})]})})}const V=e=>{let{mutateAsync:t,isPending:n}=S({mutationFn:s,...e||{}});return{recover:e=>{g.promise(t(e),{loading:`恢复中`,success:`恢复成功`})},recoverIsPending:n}};function H({open:e,setOpen:t,data:n,refetch:i}){let{recover:o,recoverIsPending:s}=V({onSuccess(){i==null||i(),t(!1)}});return(0,z.jsx)(F,{open:e,onOpenChange:t,children:(0,z.jsxs)(N,{className:`w-[400px]`,children:[(0,z.jsxs)(M,{children:[(0,z.jsxs)(P,{children:[`您确定要恢复该`,(n==null?void 0:n.fileType)===p.FILE?`文件`:`目录`,`?`]}),(n==null?void 0:n.fileType)===p.FILE?(0,z.jsx)(A,{children:`恢复后文件将被恢复到回收站,可以再次删除`}):(0,z.jsx)(A,{children:`恢复后目录下的文件也会一并被恢复,可以再次删除`}),(0,z.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 text-sm p-2 rounded-md bg-gray-50`,children:[(n==null?void 0:n.fileType)===p.FILE?(0,z.jsx)(r,{size:16,className:`text-primary flex-none`}):(0,z.jsx)(a,{size:16,className:`text-amber-500 flex-none`}),(0,z.jsx)(`span`,{className:`break-all`,children:n==null?void 0:n.fileName})]})]}),(0,z.jsxs)(k,{children:[(0,z.jsx)(j,{asChild:!0,children:(0,z.jsx)(u,{variant:`outline`,children:`取消`})}),(0,z.jsxs)(u,{type:`submit`,disabled:s,onClick:()=>{o(n==null?void 0:n.id)},children:[s&&(0,z.jsx)(f,{}),`确定`]})]})]})})}const U=({useColumns:t,queryKey:n,params:r})=>{var i,a,o;let[s,c]=(0,L.useState)([]),[l,u]=(0,L.useState)(0),[d,f]=(0,L.useState)({pageIndex:0,pageSize:10}),[p,m]=(0,L.useState)({}),g=e({queryKey:[...n,d,l,r],queryFn:()=>h({parentId:l||void 0,parentNotInvalid:!l,pageSize:d.pageSize,pageNo:d.pageIndex+1,...r}).then(e=>e.data)}),_=e=>{u(e.id),y.setPageIndex(0),c(t=>[...t,e]),y.resetRowSelection()},v=t(_),y=T({data:(g==null||(i=g.data)==null?void 0:i.entityList)||[],columns:v,getCoreRowModel:E(),manualPagination:!1,rowCount:(g==null||(a=g.data)==null?void 0:a.totalCount)||0,pageCount:(g==null||(o=g.data)==null?void 0:o.pageCount)||0,onPaginationChange:f,autoResetPageIndex:!1,onRowSelectionChange:m,state:{pagination:d,rowSelection:p}});return{parentId:l,setParentId:u,handleChangeParentId:_,openDirectorys:s,changeOpenDirectorys:e=>{u(e==null?void 0:e.id),y.setPageIndex(0),c(t=>{let n=t.findIndex(t=>t.id===(e==null?void 0:e.id));return n>-1?[...t.slice(0,n+1)]:[]}),y.resetRowSelection()},pagination:d,table:y,query:g,reset:()=>{u(0),y.setPageIndex(0),c([]),y.resetRowSelection()},rowSelection:p,setRowSelection:m}},W=e=>{let{mutateAsync:t,isPending:n}=S({mutationFn:l,...e||{}});return{batchRemove:e=>{g.promise(t(e),{loading:`删除中`,success:`删除成功`})},batchRemoveIsPending:n}};function G({open:e,setOpen:t,ids:n,refetch:r}){let{batchRemove:i,batchRemoveIsPending:a}=W({onSuccess(){r==null||r(),t(!1)}});return(0,z.jsx)(F,{open:e,onOpenChange:t,children:(0,z.jsxs)(N,{className:`w-[400px]`,children:[(0,z.jsxs)(M,{children:[(0,z.jsx)(P,{children:`您确定要彻底删除选中的文件/目录吗?`}),(0,z.jsxs)(A,{children:[`当前选中`,(0,z.jsx)(`span`,{className:`text-primary px-1`,children:(n==null?void 0:n.length)||0}),`个文件/目录,彻底删除后文件/目录将被永久删除,无法恢复`]})]}),(0,z.jsxs)(k,{children:[(0,z.jsx)(j,{asChild:!0,children:(0,z.jsx)(u,{variant:`outline`,children:`取消`})}),(0,z.jsxs)(u,{type:`submit`,variant:`destructive`,disabled:a,onClick:()=>{if(!(n!=null&&n.length)){g(`请至少选择一个文件/目录`);return}i(n)},children:[a&&(0,z.jsx)(f,{}),`确定`]})]})]})})}function K({handleChangeParentId:e,handleRecover:t,handleRemove:n,handleFilePreview:o}){return[{id:`select`,header:({table:e})=>(0,z.jsx)(b,{checked:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected()&&`indeterminate`,onCheckedChange:t=>e.toggleAllPageRowsSelected(!!t)}),cell:({row:e})=>(0,z.jsx)(b,{checked:e.getIsSelected(),onCheckedChange:t=>e.toggleSelected(!!t)})},{accessorKey:`fileName`,header:`文件名`,cell:({row:t})=>{var n;return(0,z.jsxs)(`div`,{className:`flex items-center gap-1 break-all cursor-pointer hover:underline hover:text-primary group`,onClick:()=>{var n;(t==null||(n=t.original)==null?void 0:n.fileType)===p.DIRECTORY?e(t==null?void 0:t.original):o(t==null?void 0:t.original)},children:[(t==null||(n=t.original)==null?void 0:n.fileType)===p.FILE?(0,z.jsx)(z.Fragment,{children:(0,z.jsx)(r,{size:18,className:`text-primary`})}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(a,{size:18,className:`text-amber-500 group-hover:hidden`}),(0,z.jsx)(i,{size:18,className:`text-amber-500 group-hover:block hidden`})]}),(0,z.jsx)(`span`,{children:t.getValue(`fileName`)})]})}},{accessorKey:`updateTime`,header:`删除日期`,cell:({row:e})=>(0,z.jsx)(`div`,{children:e.getValue(`updateTime`)})},{accessorKey:`fileSize`,header:`文件大小`,cell:({row:e})=>(0,z.jsx)(`div`,{children:x(e.getValue(`fileSize`))})},{accessorKey:`fileCategory`,header:`文件种类`,cell:({row:e})=>(0,z.jsx)(`div`,{children:e.original.fileType===p.FILE?c(e.getValue(`fileCategory`)):`-`})},{id:`actions`,enableHiding:!1,header:`操作`,cell:({row:e})=>{var r;return(0,z.jsxs)(`div`,{className:`space-x-2`,children:[(0,z.jsx)(u,{size:`sm`,variant:`outline`,onClick:()=>t(e==null?void 0:e.original),children:`恢复`}),(0,z.jsx)(u,{size:`sm`,variant:`destructive`,onClick:()=>n(e==null?void 0:e.original),children:`彻底删除`}),((r=e.original)==null?void 0:r.fileType)===p.FILE&&(0,z.jsx)(u,{variant:`outline`,size:`sm`,onClick:()=>{var t;_({code:(t=e.original)==null?void 0:t.fileCode})},children:`下载`})]})}}]}function q(){let[e,r]=(0,L.useState)(null),[i,a]=(0,L.useState)(!1),o=e=>{r(e),a(!0)},[s,c]=(0,L.useState)(!1),l=e=>{r(e),c(!0)},[d,f]=(0,L.useState)(!1),p=e=>{r(e),f(!0)},[m,h]=(0,L.useState)(!1),_=()=>{if(!C.getFilteredSelectedRowModel().rows.length){g.error(`请选择要删除的文件`);return}h(!0)},[v,b]=(0,L.useState)(`all`),{openDirectorys:x,changeOpenDirectorys:S,table:C,query:T,reset:E}=U({useColumns:e=>K({handleChangeParentId:e,handleRecover:o,handleRemove:l,handleFilePreview:p}),queryKey:[`recycleFiles`],params:(0,L.useMemo)(()=>({fileStatus:y.INVALID,fileCategory:v===`all`?void 0:v}),[v])});return(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(G,{open:m,setOpen:h,ids:C.getFilteredSelectedRowModel().rows.map(e=>e.original.id),refetch:T.refetch}),(0,z.jsx)(B,{open:s,setOpen:c,data:e,refetch:T.refetch}),(0,z.jsx)(H,{open:i,setOpen:a,data:e,refetch:T.refetch}),(0,z.jsx)(t,{open:d,setOpen:f,data:e}),(0,z.jsxs)(`div`,{className:`p-4 box-border min-h-full space-y-4`,children:[(0,z.jsxs)(`div`,{children:[(0,z.jsx)(`div`,{className:`text-lg`,children:`回收站`}),(0,z.jsx)(`div`,{className:`text-xs text-black/50`,children:`列表展示当前用户七天之内删除的所有文件,文件删除七天以上系统自动进行彻底删除不再保存。`})]}),(0,z.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,z.jsx)(n,{fileCategory:v,setFileCategory:b,reset:E})}),(0,z.jsxs)(`div`,{className:`p-4 rounded-lg border bg-white space-y-2`,children:[(0,z.jsx)(`div`,{className:`flex items-center gap-2 empty:hidden`,children:(0,z.jsxs)(u,{variant:`destructive`,onClick:_,children:[(0,z.jsx)(I,{}),`批量删除`]})}),(0,z.jsx)(w,{directorys:x,onChangeDirectorys:S}),(0,z.jsxs)(`div`,{className:`relative overflow-hidden`,children:[(0,z.jsx)(D,{table:C,query:T}),(0,z.jsx)(O,{table:C,className:`justify-end p-2 sticky bottom-0 left-0 right-0 z-10 bg-white`})]})]})]})]})}export{q as component,K as useColumns};