import{bo as X,n as e,a2 as ee,a5 as i,aQ as $,bD as te,bc as D,d as F,aC as z,f as y,c as S,j as ae,h as G,Z as Y,$ as V,a0 as u,a6 as M,T as t,M as se,a4 as E,x as oe,b9 as le,at as ne,a1 as Q,a7 as k,bE as re,br as W,a8 as j,bs as de,a9 as A,aK as ue,b4 as K}from"./index-a8341fa1.js";import{u as ie,_ as ce}from"./index.vue_vue_type_script_setup_true_lang-73cdf10f.js";import{d as b}from"./dayjs-919e6097.js";import{u as pe}from"./usePromise-9066227b.js";import{u as me}from"./index-7b240cde.js";import{s as fe,c as ve,e as ge}from"./gb28181-0e98f3aa.js";import{u as O,a as _e,d as H,V as he}from"./usePlay-5884af03.js";import{P as we}from"./index-04d608f8.js";import{D as ye}from"./DownloadOutlined-3b02c5ed.js";import{D as Ce}from"./index-d1462287.js";import"./jb4-7b5b6ba3.js";import"./canvas-b3f2b616.js";const xe=(c,l,p,w,f,a,o)=>{const g=()=>{const n=c.value.downloadId.split("_");if(n.length>=4){const v=n[0],T=n[1],I=new Date(parseInt(n[2])*1e3).toLocaleString("zh-CN"),C=new Date(parseInt(n[3])*1e3).toLocaleString("zh-CN");return{startTime:I,endTime:C,deviceId:v,channelId:T}}return null},r=()=>{const n=te()+c.value.downloadUrl,v=document.createElement("a");v.href=n,v.download=c.value.fileName,v.target="_blank",document.body.appendChild(v),v.click(),document.body.removeChild(v),D.success("开始下载文件")};return()=>{const n=g();X({content:()=>e("div",{class:"download-progress-container"},[e("div",{class:"progress-info"},[n&&e(ee,null,[e("div",{class:"info-item"},[e("span",{class:"label"},[i("设备ID:")]),e("span",{class:"value"},[n.deviceId])]),e("div",{class:"info-item"},[e("span",{class:"label"},[i("通道ID:")]),e("span",{class:"value"},[n.channelId])]),e("div",{class:"info-item"},[e("span",{class:"label"},[i("开始时间:")]),e("span",{class:"value"},[n.startTime])]),e("div",{class:"info-item"},[e("span",{class:"label"},[i("结束时间:")]),e("span",{class:"value"},[n.endTime])])]),e("div",{class:"info-item"},[e("span",{class:"label"},[i("状态:")]),e("span",{class:["value",p.value]},[l.value])]),e("div",{class:"info-item"},[e("span",{class:"label"},[i("进度:")]),e("span",{class:"value"},[c.value.progress,i("%")])])]),e(we,{percent:c.value.progress,status:w.value,strokeColor:f.value},null),e("div",{class:"download-actions"},[c.value.status==="failed"?e($,{type:"primary",danger:!0,onClick:o},{default:()=>[i("重新下载")]}):e($,{type:"primary",disabled:c.value.progress<100,onClick:r},{default:()=>[e(ye,null,null),i("下载文件")]})]),c.value.error&&e("div",{class:"error-message"},[c.value.error])]),modalConfig:{width:"500px",title:"录像下载",footer:null,maskClosable:!1,onCancel:()=>a()}})}},Ie=F({__name:"list",props:{data:{type:Array,default:[]}},setup(c){const{t:l}=z(),p=c,w=O(),f=y(()=>w.getCurrentChannel),a=S({downloadId:"",fileName:"",progress:0,status:"pending",error:"",downloadUrl:""});let o=null,g=null,r=4;const n=y(()=>({pending:"准备中",downloading:"下载中",completed:"已完成",failed:"失败"})[a.value.status]||"未知"),v=y(()=>({"status-pending":a.value.status==="pending","status-downloading":a.value.status==="downloading","status-completed":a.value.status==="completed","status-failed":a.value.status==="failed"})),T=y(()=>a.value.status==="failed"?"exception":a.value.status==="completed"?"success":"active"),I=y(()=>a.value.status==="failed"?"#ff4d4f":a.value.status==="completed"?"#52c41a":"#1890ff"),C=()=>{o&&(clearInterval(o),o=null)},d=xe(a,n,v,T,I,C,()=>{g&&(C(),_(g,r))}),_=async(s,m=4)=>{try{const{deviceId:x,startTime:N,endTime:q}=s;g=s,r=m;const U=await fe({deviceId:f.value.parentId,channelId:x,start:b(N).format("YYYY-MM-DDTHH:mm:ss"),end:b(q).format("YYYY-MM-DDTHH:mm:ss"),downloadSpeed:m});if(U&&U.data){const B=U.data,J=B.downloadUrl.split("/").pop()||"download.mp4",L=B.status==="completed";a.value={downloadId:B.downloadId,fileName:J,progress:L?100:0,status:B.status,error:"",downloadUrl:B.downloadUrl},L?(d(),D.success("录像已存在(来自缓存),可直接下载")):(h(),d(),D.success("下载任务已创建"))}else D.error("创建下载任务失败")}catch(x){console.error("下载失败:",x),D.error("创建下载任务失败")}},h=()=>{o&&clearInterval(o),o=setInterval(async()=>{try{const s=await ve(a.value.downloadId);s&&s.data&&(a.value.progress=s.data.progress,a.value.status=s.data.status,a.value.error=s.data.error,s.data.downloadUrl&&(a.value.downloadUrl=s.data.downloadUrl),(s.data.status==="completed"||s.data.status==="failed")&&C())}catch(s){console.error("获取进度失败:",s)}},1e3)};ae(()=>{C()});const P=me(),Z={height:"auto",rowConfig:{keyField:"StartTime",useKey:!0},columnConfig:{useKey:!0},columns:[{field:"deviceId",get title(){return l("routes.record.通道编号")},minWidth:"120px",showOverflow:"tooltip"},{field:"name",get title(){return l("routes.record.名称")},minWidth:"120px"},{field:"address",get title(){return l("routes.record.地址")},minWidth:"120px",showOverflow:"tooltip"},{field:"startTime",get title(){return l("routes.record.录像开始时间")},width:"200px",formatter:({cellValue:s})=>b(s).format("YYYY-MM-DD HH:mm:ss")},{field:"endTime",get title(){return l("routes.record.录像结束时间")},width:"200px",formatter:({cellValue:s})=>b(s).format("YYYY-MM-DD HH:mm:ss")},{field:"any",get title(){return l("routes.record.录像时长")},minWidth:"120px",formatter:({row:s})=>{const{startTime:m,endTime:x}=s;return`${b(x).diff(b(m),"minutes")} ${l("routes.record.分钟")}`}},{field:"operate",get title(){return l("routes.record.操作")},width:"140px",slots:{default:"operate"},align:"center",fixed:"right"}],data:p.data};return G(()=>p.data,()=>{p.data?.length?P?.tableRef?.loadData(p.data):P?.tableRef?.loadData([])}),(s,m)=>(Y(),V(t(le),{uid:t(P).uid,gridOptions:Z},{operate:u(({row:x})=>[e(t($),{size:"small",type:"link",onClick:()=>t(_e)({row:x,channel:f.value})},{default:u(()=>[i(M(t(l)("routes.record.播放")),1)]),_:2},1032,["onClick"]),e(t(oe),{trigger:["hover"]},{overlay:u(()=>[e(t(se),{onClick:({key:N})=>_(x,Number(N))},{default:u(()=>[e(t(E),{key:"1"},{default:u(()=>m[1]||(m[1]=[i("1倍速下载")])),_:1}),e(t(E),{key:"2"},{default:u(()=>m[2]||(m[2]=[i("2倍速下载")])),_:1}),e(t(E),{key:"4"},{default:u(()=>m[3]||(m[3]=[i("4倍速下载")])),_:1})]),_:2},1032,["onClick"])]),default:u(()=>[e(t($),{size:"small",type:"link"},{default:u(()=>m[0]||(m[0]=[i(" 下载 ")])),_:1})]),_:2},1024)]),_:1},8,["uid"]))}});const be=ne(Ie,[["__scopeId","data-v-3c28c25c"]]),De={class:"h-full"},ke={class:"flex justify-between mb-16px"},Te={class:"w-full",style:{height:"calc(100% - 32px)"}},Re=F({__name:"content",setup(c){const{t:l}=z(),p=O(),w=y(()=>p.getCurrentChannel),f=y(()=>p.getTimeRange),a=S("video"),o=S(),g=S(),r=d=>{if(!o.value||o.value.length===0)return!1;const _=o.value[0]&&d.diff(o.value[0],"days")>2;return o.value[1]&&o.value[1].diff(d,"days")>2||_},n=d=>{d?(o.value=[],g.value=[]):g.value=void 0},v=d=>{o.value=d},T=d=>{p.setTimeRange(d)},I=y(()=>`${w.value.parentId}/${w.value.deviceId}`),C=y(()=>`${H(f.value[1])}`),R=S([]);return G([()=>p.getCurrentChannel?.key,()=>f.value],()=>{const{parentId:d,deviceId:_}=w.value;d&&_&&ge({deviceId:d,channelId:_,start:`${H(f.value[0])}`,end:`${H(f.value[1])}`}).then(h=>{h.count===0||!h.data?.length?(D.warn(l("routes.record.当前无可播放的录像")),R.value=[]):R.value=h.data}).catch(h=>{console.error(`getRecords-error: ${h}`)})}),(d,_)=>(Y(),Q("div",De,[k("div",ke,[e(t(re),{value:g.value||f.value,disabledDate:r,onOpenChange:n,onChange:T,onCalendarChange:v,allowClear:!1},null,8,["value"]),e(t(de),{value:a.value,"onUpdate:value":_[0]||(_[0]=h=>a.value=h)},{default:u(()=>[e(t(W),{value:"video"},{default:u(()=>[e(t(j),{icon:"mdi:timeline-clock-outline",class:"v-text-bottom"}),k("span",null,M(t(l)("routes.record.时间轴视图")),1)]),_:1}),e(t(W),{value:"list"},{default:u(()=>[e(t(j),{icon:"pixelarticons:list-box",class:"v-text-bottom"}),k("span",null,M(t(l)("routes.record.列表视图")),1)]),_:1})]),_:1},8,["value"])]),k("div",Te,[a.value==="video"?(Y(),V(he,{data:R.value,streamPath:I.value,endTime:C.value,key:I.value},null,8,["data","streamPath","endTime"])):A("",!0),a.value==="list"?(Y(),V(be,{key:1,data:R.value},null,8,["data"])):A("",!0)])]))}}),Be={class:"flex",style:{height:"calc(100% - 8px)"}},Se={class:"flex items-center justify-between p-8px"},Ye={class:"text-14px"},$e=F({name:"Record"}),We=F({...$e,setup(c){const{t:l}=z(),p=ie();function w(){return new Promise(async r=>{await p.fetchdeviceTree(),setTimeout(()=>{r({})},1200)})}const{loading:f,handleFn:a}=pe(w,{immediate:!1}),o=O(),g=r=>{o.setCurrentChannel({key:r.key,parentId:r.parentId,deviceId:r.deviceId,name:r.deviceId,parentName:r.parentName})};return(r,n)=>(Y(),Q("div",Be,[e(t(K),{class:"w-342px m-r-8px flex-shrink-0",bordered:!1,bodyStyle:{height:"100%",padding:0}},{default:u(()=>[k("div",Se,[k("span",Ye,M(t(l)("routes.record.录像设备树")),1),e(t(ue),{placement:"left",title:t(l)("routes.record.更新设备树")},{default:u(()=>[e(t(j),{icon:"ant-design:redo-outlined",class:"v-text-bottom cursor-pointer",size:"18",infinite:t(f),onClick:t(a)},null,8,["infinite","onClick"])]),_:1},8,["title"])]),e(t(Ce),{class:"m-0"}),e(ce,{onSelect:g})]),_:1}),e(t(K),{class:"flex-1",bordered:!1,bodyStyle:{height:"100%",padding:"16px"}},{default:u(()=>[e(Re)]),_:1})]))}});export{We as default}; //# sourceMappingURL=index-3d4510c6.js.map