mp4-845cdc6e.js 7.4 KB

1
  1. import{d as I,k as h,r as K,w as V,X as C,a6 as F,f as o,u as a,a9 as T,e as M,o as Q,F as X,Z as u,E as w,_ as Z,Y as E,aa as H}from"./vue-fae2b924.js";import{e as r,V as J,s as W,bs as B,U,aV as j,a_ as O,aZ as $,aY as ee,a0 as A,Q as te,G as ae}from"./radical-24ede98f.js";import{_ as se,u as ie,b as ne,d as G}from"./usePlay-71b7b570.js";import{u as re}from"./system-09ccec3c.js";import{a as le,g as oe}from"./mp4-bb27143c.js";import{o as me,k as ue}from"./index-bad227d6.js";import{u as de}from"./index-ac72395e.js";import{V as ce}from"./VideoPlayer-4de004b3.js";import"./gb28181-e318e8a2.js";import"./jb4-ws-flv-88e095aa.js";import"./canvas-14fb4930.js";import"./global-d3aa2cdf.js";const fe={class:"root"},ge={class:"time-range"},pe=I({__name:"time-range",props:{data:{type:Array,default:[]},streamPath:{type:String,default:""},showDatePicker:{type:Boolean,default:!0}},setup(L){const m=[],g=L,y=h(),x=h(),s=K({initTime:r(),currentTime:r(),timeSegments:[],initZoomIndex:0,inTimeSegments:!1}),R=(i,l)=>{s.currentTime=r(i),l?f(i):s.inTimeSegments=!1},z=(i,l)=>{s.currentTime=r(i),l?f(i):s.inTimeSegments=!1};function f(i){s.inTimeSegments=!0,x.value.seek(i/1e3-s.timeSegments[0].StartTime.getTime()/1e3)}const D=i=>{const l=i.sort((P,S)=>Date.parse(P.startTime)-Date.parse(S.startTime)),d=[];let c;return l.forEach(P=>{const S=new Date(P.startTime),b=new Date(P.endTime);(c==null?void 0:c.EndTime.getTime())==S.getTime()?c.EndTime=b:(c&&m.push({StartTime:c.EndTime,EndTime:S}),c={StartTime:S,EndTime:b},d.push(c))}),d};V(()=>g.data,()=>{var i,l;if((i=g.data)!=null&&i.length){s.timeSegments=D(g.data);const d=s.timeSegments[0].StartTime;s.currentTime=r(d),s.initTime=r(d)}else s.currentTime=r(),s.initTime=r(),s.timeSegments=[];(l=y.value)==null||l.reRender()},{immediate:!0});function _(i){let l=s.timeSegments[0].StartTime.getTime()+i*1e3;for(const d of m)if(l>=d.StartTime.getTime())l+=d.EndTime.getTime()-d.StartTime.getTime();else break;return r(l)}const Y=i=>{y.value.setTime(s.currentTime=_(i))};return(i,l)=>(C(),F("div",fe,[o(ce,{class:"player",ref_key:"videoPlayerRef",ref:x,src:`${a(me)("hls","/vod")}/fmp4.m3u8?start=${new Date(g.data[0].startTime).getTime()}&end=${new Date(g.data[g.data.length-1].endTime).getTime()}&streamPath=${g.streamPath}`,onTimeupdate:Y},null,8,["src"]),T("div",ge,[o(se,{ref_key:"timeRuleRef",ref:y,"init-zoom-index":s.initZoomIndex,initTime:s.initTime,timeSegments:s.timeSegments,enableZoom:!0,onDragTimeChange:R,onClick_timeline:z},null,8,["init-zoom-index","initTime","timeSegments"])])]))}});const ve=J(pe,[["__scopeId","data-v-00deca5f"]]),Te={class:"flex",style:{height:"calc(100% - 8px)"}},he={class:"h-full"},_e={class:"flex justify-between mb-16px"},Se={class:"flex items-center gap-16px"},ye={class:"w-full",style:{height:"calc(100% - 32px)"}},Pe=I({name:"Record"}),Ee=I({...Pe,setup(L){const m=ie(),g=re(),{plugins:y}=W(g),x=de(),s=M(()=>{var e;return(e=y.value)==null?void 0:e.some(t=>t.name==="MP4")}),R=M(()=>{var e;return(e=y.value)==null?void 0:e.some(t=>t.name==="FLV")}),z=M(()=>s.value||R.value),f=h(s.value?"mp4":"flv");V([s,R],([e,t])=>{!e&&!t||(!e&&t&&(f.value="flv"),e&&!t&&(f.value="mp4"))});const D=e=>{m.setCurrentStreamPath(e.streamPath),m.setTimeRangeMP4([r(e.startTime),r(e.startTime).add(1,"day")])},_=h([]),Y=async()=>{_.value=await le(f.value),_.value.length>0&&D(_.value[0])};Q(()=>{Y()}),V(()=>f.value,()=>{Y(),m.setCurrentStreamPath("")});const i=M(()=>m.getTimeRangeMP4),l=h("list"),d=h(),c=h(),P=e=>{if(m.getCurrentStreamPath){const{startTime:t,endTime:n}=_.value.find(v=>v.streamPath===m.getCurrentStreamPath)||{};return e.isBefore(r(t),"day")||e.isAfter(r(n),"day")}return!1},S=e=>{e?(d.value=[],c.value=[]):c.value=void 0},b=e=>{d.value=e},q=e=>{m.setTimeRangeMP4(e)},k=h([]),N=e=>{e&&(p.pagerConfig?(p.pagerConfig.currentPage=e.currentPage,p.pagerConfig.pageSize=e.pageSize):p.pagerConfig={currentPage:e.currentPage,pageSize:e.pageSize,total:0});const t=p.pagerConfig;oe({type:f.value,streamPath:m.getCurrentStreamPath,range:`${G(i.value[0],"YYYY-MM-DD 00:00:00")/1e3}~${G(i.value[1],"YYYY-MM-DD 24:00:00")/1e3}`,pageNum:(t==null?void 0:t.currentPage)||1,pageSize:(t==null?void 0:t.pageSize)||10}).then(n=>{var v;k.value=n,p.pagerConfig&&(p.pagerConfig.total=n.total||0),p.data=k.value,x.tableRef.reloadData(k.value),(v=k.value)!=null&&v.length||ae.warn("当前无可播放的录像!!!")}).catch(n=>{console.error(`getRecords-error: ${n}`)})};V([()=>m.getCurrentStreamPath,()=>i.value],()=>{N()});const p=K({data:[],height:"auto",rowConfig:{keyField:"startTime",useKey:!0},columnConfig:{useKey:!0},pagerConfig:{currentPage:1,pageSize:10,total:0},columns:[{field:"id",title:"ID",width:"70px"},{field:"filePath",title:"文件路径"},{field:"startTime",title:"录像开始时间",formatter:({cellValue:e})=>r(e).format("YYYY-MM-DD HH:mm:ss")},{field:"endTime",title:"录像结束时间",formatter:({cellValue:e})=>r(e).format("YYYY-MM-DD HH:mm:ss")},{field:"any",title:"录像时长",width:"100px",formatter:({row:e})=>{const{startTime:t,endTime:n}=e,v=r(n).diff(r(t),"seconds");return`${Math.floor(v/60)}′${v%60}″`}},{field:"operate",title:"操作",width:"70px",slots:{default:"operate"},align:"center",fixed:"right"}]});return(e,t)=>(C(),F("div",Te,[z.value?(C(),F(X,{key:0},[o(a(j),{class:"w-342px m-r-8px flex-shrink-0",bordered:!1,bodyStyle:{height:"100%",padding:"16px"}},{default:u(()=>[o(a(B),{dataSource:_.value,"item-layout":"horizontal"},{renderItem:u(({item:n})=>[o(a(B).Item,null,{default:u(()=>[o(a(B).Item.Meta,{description:a(r)(n.startTime).format("YYYY-MM-DD")+"-"+a(r)(n.endTime).format("YYYY-MM-DD")},{title:u(()=>[o(a(U),{type:a(m).getCurrentStreamPath===n.streamPath?"primary":"link",onClick:v=>D(n)},{default:u(()=>[w(Z(n.streamPath),1)]),_:2},1032,["type","onClick"])]),_:2},1032,["description"]),T("div",null,Z(n.count)+"个文件",1)]),_:2},1024)]),_:1},8,["dataSource"])]),_:1}),o(a(j),{class:"flex-1",bordered:!1,bodyStyle:{height:"100%",padding:"16px"}},{default:u(()=>[T("div",he,[T("div",_e,[T("div",Se,[o(a(O),{value:f.value,"onUpdate:value":t[0]||(t[0]=n=>f.value=n)},{default:u(()=>[o(a($),{value:"mp4",disabled:!s.value},{default:u(()=>t[2]||(t[2]=[w("MP4")])),_:1},8,["disabled"]),o(a($),{value:"flv",disabled:!R.value},{default:u(()=>t[3]||(t[3]=[w("FLV")])),_:1},8,["disabled"])]),_:1},8,["value"]),o(a(ee),{value:c.value||i.value,disabledDate:P,onOpenChange:S,onChange:q,onCalendarChange:b,allowClear:!1},null,8,["value"])]),o(a(O),{value:l.value,"onUpdate:value":t[1]||(t[1]=n=>l.value=n)},{default:u(()=>[o(a($),{value:"video"},{default:u(()=>[o(a(A),{icon:"mdi:timeline-clock-outline",class:"v-text-bottom"}),t[4]||(t[4]=T("span",null," 时间轴视图",-1))]),_:1}),o(a($),{value:"list"},{default:u(()=>[o(a(A),{icon:"pixelarticons:list-box",class:"v-text-bottom"}),t[5]||(t[5]=T("span",null," 列表视图",-1))]),_:1})]),_:1},8,["value"])]),T("div",ye,[l.value==="video"?(C(),E(ve,{data:k.value,streamPath:a(m).getCurrentStreamPath,key:a(m).getCurrentStreamPath},null,8,["data","streamPath"])):H("",!0),l.value==="list"?(C(),E(a(ue),{key:1,uid:a(x).uid,gridOptions:p,gridEvent:{pageChange:N}},{operate:u(({row:n})=>[o(a(U),{size:"small",type:"link",onClick:()=>a(ne)({row:n})},{default:u(()=>t[6]||(t[6]=[w(" 播放 ")])),_:2},1032,["onClick"])]),_:1},8,["uid","gridOptions","gridEvent"])):H("",!0)])])]),_:1})],64)):(C(),E(a(te),{key:1,status:"warning",title:"MP4 或 FLV 插件未启用","sub-title":"请先启用 MP4 或 FLV 插件后再使用录像功能",class:"w-full h-full"}))]))}});export{Ee as default};