@oxiaom/adoremix 1.0.16 → 1.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/package.json +1 -1
  2. package/src/config/webui.js +38 -18
  3. package/webui/high/assets/AdminLayout-BeGqmJmh.js +1 -0
  4. package/webui/high/assets/AdminLayout-Dg0cblhW.css +1 -0
  5. package/webui/high/assets/Announce-2364DXIw.css +1 -0
  6. package/webui/high/assets/Announce-BxOu3PDa.js +1 -0
  7. package/webui/high/assets/Billing-9pkW40cw.css +1 -0
  8. package/webui/high/assets/Billing-DkKexnBS.js +1 -0
  9. package/webui/high/assets/Gallery-BUO8AayT.js +1 -0
  10. package/webui/high/assets/Gallery-CvDy0BG_.css +1 -0
  11. package/webui/high/assets/Info-BRpM9vrH.css +1 -0
  12. package/webui/high/assets/Info-jgxOyI48.js +1 -0
  13. package/webui/high/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  14. package/webui/high/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-7lwszLYh.js +1 -0
  15. package/webui/high/assets/MainLayout-Cg9w3D6H.js +1 -0
  16. package/webui/high/assets/MainLayout-CtxzU51m.css +1 -0
  17. package/webui/high/assets/Upload-BUllX3F9.css +1 -0
  18. package/webui/high/assets/Upload-BhZe08V8.js +1 -0
  19. package/webui/high/assets/Users-BajKphJ2.css +1 -0
  20. package/webui/high/assets/Users-C-uvafHe.js +1 -0
  21. package/webui/high/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  22. package/webui/high/assets/api-C3Fyph-A.js +1 -0
  23. package/webui/high/assets/index-6wTg37PL.js +1 -0
  24. package/webui/high/assets/index-BU_CDG5n.js +1 -0
  25. package/webui/high/assets/index-B_eXN_Ka.css +1 -0
  26. package/webui/high/assets/index-BeMdB8li.css +1 -0
  27. package/webui/high/assets/index-BeyjdvRw.css +1 -0
  28. package/webui/high/assets/index-Bqlp4X7Z.css +1 -0
  29. package/webui/high/assets/index-BwGOSVLU.css +1 -0
  30. package/webui/high/assets/index-C0plBGGv.js +1 -0
  31. package/webui/high/assets/index-CG0Cxnu7.js +1 -0
  32. package/webui/high/assets/index-CGTbAKLR.css +1 -0
  33. package/webui/high/assets/index-CTbFCtHG.js +1 -0
  34. package/webui/high/assets/index-CTtQ-PJh.css +1 -0
  35. package/webui/high/assets/index-Ci-5piG7.css +1 -0
  36. package/webui/high/assets/index-DPlPWsqM.js +1 -0
  37. package/webui/high/assets/index-DbeENJC3.css +1 -0
  38. package/webui/high/assets/index-DdwHcYZD.js +1 -0
  39. package/webui/high/assets/index-KMJ_Zaix.js +1 -0
  40. package/webui/high/assets/index-LP7k5pkh.js +1 -0
  41. package/webui/high/assets/index-MthettIa.css +1 -0
  42. package/webui/high/assets/index-_3H0q9yh.css +1 -0
  43. package/webui/high/assets/index-npdYRXyk.js +18 -0
  44. package/webui/high/assets/index-ptOpmqku.js +1 -0
  45. package/webui/high/assets/index-r_gAV5lM.css +1 -0
  46. package/webui/high/assets/index-u4IuHZw8.js +1 -0
  47. package/webui/high/assets/test-BQUWlKVf.css +1 -0
  48. package/webui/high/assets/test-Bt3E-Okh.js +1 -0
  49. package/webui/high/assets/useDeviceScan-CM8xsf7h.js +1 -0
  50. package/webui/high/assets/vue-vendor-BaBirIg_.js +38 -0
  51. package/webui/high/index.html +23 -0
  52. package/webui/high/js/lame.min.js +308 -0
  53. package/webui/high/js/worker-realtime.js +81 -0
  54. package/webui/low/assets/AdminLayout-Dg0cblhW.css +1 -0
  55. package/webui/low/assets/AdminLayout-Dio6Q0f_.js +1 -0
  56. package/webui/low/assets/Announce-2364DXIw.css +1 -0
  57. package/webui/low/assets/Announce-DiogX_-D.js +1 -0
  58. package/webui/low/assets/Billing-9pkW40cw.css +1 -0
  59. package/webui/low/assets/Billing-C42F8wIt.js +1 -0
  60. package/webui/low/assets/Gallery-CvDy0BG_.css +1 -0
  61. package/webui/low/assets/Gallery-DGUAhDtI.js +1 -0
  62. package/webui/low/assets/Info-BRpM9vrH.css +1 -0
  63. package/webui/low/assets/Info-BolVapGU.js +1 -0
  64. package/webui/low/assets/LanguageSwitcher-wcRpxcC2.css +1 -0
  65. package/webui/low/assets/LanguageSwitcher.vue_vue_type_style_index_0_lang-BUO99DZc.js +1 -0
  66. package/webui/low/assets/MainLayout-BmBcNVVu.js +1 -0
  67. package/webui/low/assets/MainLayout-CtxzU51m.css +1 -0
  68. package/webui/low/assets/Upload-BUllX3F9.css +1 -0
  69. package/webui/low/assets/Upload-B_Cx6QMR.js +1 -0
  70. package/webui/low/assets/Users-BajKphJ2.css +1 -0
  71. package/webui/low/assets/Users-an7uFkx4.js +1 -0
  72. package/webui/low/assets/_plugin-vue_export-helper-BCo6x5W8.js +1 -0
  73. package/webui/low/assets/api-C3Fyph-A.js +1 -0
  74. package/webui/low/assets/index-2JKvpOh3.js +1 -0
  75. package/webui/low/assets/index-B_eXN_Ka.css +1 -0
  76. package/webui/low/assets/index-BeMdB8li.css +1 -0
  77. package/webui/low/assets/index-BeyjdvRw.css +1 -0
  78. package/webui/low/assets/index-BoV0S81L.js +1 -0
  79. package/webui/low/assets/index-Bqlp4X7Z.css +1 -0
  80. package/webui/low/assets/index-BuEwLgbU.js +18 -0
  81. package/webui/low/assets/index-BwGOSVLU.css +1 -0
  82. package/webui/low/assets/index-CGTbAKLR.css +1 -0
  83. package/webui/low/assets/index-CSahVaR0.js +1 -0
  84. package/webui/low/assets/index-CTtQ-PJh.css +1 -0
  85. package/webui/low/assets/index-CgyUlqk5.js +1 -0
  86. package/webui/low/assets/index-Ci-5piG7.css +1 -0
  87. package/webui/low/assets/index-Cjg2XVty.js +1 -0
  88. package/webui/low/assets/index-D-BJ_vlf.js +1 -0
  89. package/webui/low/assets/index-D0uan-_I.js +1 -0
  90. package/webui/low/assets/index-DWP2gbuh.js +1 -0
  91. package/webui/low/assets/index-DbeENJC3.css +1 -0
  92. package/webui/low/assets/index-DdPisNCE.js +1 -0
  93. package/webui/low/assets/index-F-Qi4toA.js +1 -0
  94. package/webui/low/assets/index-FUUYrqc8.js +1 -0
  95. package/webui/low/assets/index-MthettIa.css +1 -0
  96. package/webui/low/assets/index-_3H0q9yh.css +1 -0
  97. package/webui/low/assets/index-r_gAV5lM.css +1 -0
  98. package/webui/low/assets/test-BQUWlKVf.css +1 -0
  99. package/webui/low/assets/test-DI2hJTQF.js +1 -0
  100. package/webui/low/assets/useDeviceScan-CM8xsf7h.js +1 -0
  101. package/webui/low/assets/vue-vendor-BaBirIg_.js +38 -0
  102. package/webui/low/index.html +23 -0
  103. package/webui/low/js/lame.min.js +308 -0
  104. package/webui/low/js/worker-realtime.js +81 -0
@@ -0,0 +1 @@
1
+ import{f as e,o as a,k as l,n as t,y as s,A as n,u as o,p as i,M as c,H as r,B as d,W as u,F as v,z as k,E as p,G as m,C as b,N as h,r as f,c as y,t as g}from"./vue-vendor-BaBirIg_.js";import{u as w}from"./index-npdYRXyk.js";import{y as C,g as x,t as F,z as D,A as S,B as M,C as V,D as T,E as B,F as G,G as U,H as j,I as _,J as P,K as N,L,M as H,N as A,O as $,P as E,Q as I,R as q,S as R,T as z}from"./api-C3Fyph-A.js";import{_ as O}from"./_plugin-vue_export-helper-BCo6x5W8.js";const J={class:"task-manage"},K={class:"page-header"},Q={class:"page-title"},W={class:"header-actions"},X={class:"view-mode-toggle"},Y=["title"],Z=["title"],ee=["disabled","title"],ae={class:"filter-section"},le={class:"filter-group"},te={value:0},se=["value"],ne={class:"group-actions"},oe={key:0,class:"batch-toolbar"},ie={class:"batch-toolbar-label"},ce={class:"batch-actions"},re={class:"task-list-container"},de={key:0,class:"task-table-scroll"},ue={class:"task-table"},ve={class:"col-checkbox"},ke={class:"col-index"},pe={class:"col-name"},me={class:"col-time"},be={class:"col-duration"},he={class:"col-endtime"},fe={class:"col-loop"},ye={class:"col-dates"},ge={class:"col-group"},we={class:"col-status"},Ce={class:"col-actions"},xe={key:0},Fe={colspan:"12",class:"empty-cell"},De={class:"empty-state"},Se=["onClick"],Me=["value"],Ve={class:"col-index"},Te={class:"col-id"},Be={class:"col-name"},Ge={class:"task-name-text"},Ue={key:0,class:"playing-badge"},je={key:1,class:"disabled-badge"},_e={key:2,class:"conflict-badge"},Pe={class:"col-time"},Ne={class:"col-duration"},Le={class:"col-endtime"},He={class:"col-loop"},Ae={key:0},$e={key:1},Ee={class:"col-dates"},Ie=["onClick"],qe=["onClick"],Re=["onClick"],ze=["title"],Oe=["onUpdate:modelValue","onChange"],Je={class:"toggle-label"},Ke={class:"action-btn-group"},Qe=["onClick","title"],We=["onClick","title"],Xe=["onClick","title"],Ye={key:1,class:"card-scroll"},Ze={key:0,class:"empty-state"},ea={class:"task-card-grid"},aa=["onClick"],la={class:"task-card-header"},ta=["onUpdate:modelValue","onChange"],sa={class:"task-card-id"},na={key:0,class:"playing-badge"},oa=["title"],ia=["onClick","title"],ca=["onClick","title"],ra=["onClick","title"],da={class:"task-card-name"},ua={key:0,class:"disabled-badge"},va={class:"task-card-time-bar"},ka={class:"time-label"},pa={class:"time-label"},ma={class:"time-duration"},ba={class:"task-card-info"},ha={class:"task-card-info-row"},fa={class:"info-label"},ya=["onClick"],ga={class:"task-card-info-row"},wa={class:"info-label"},Ca={key:0,class:"info-value"},xa={key:1,class:"info-value"},Fa={class:"task-card-info-row"},Da={class:"info-label"},Sa={class:"info-value"},Ma=["onClick"],Va=["onClick"],Ta={class:"dialog-header"},Ba={class:"modal-body"},Ga={class:"form-group"},Ua=["placeholder"],ja={class:"char-count"},_a={class:"modal-footer"},Pa={class:"dialog-header"},Na={class:"modal-body"},La={class:"form-group"},Ha={class:"form-group"},Aa={value:0},$a=["value"],Ea={class:"modal-footer"},Ia={class:"dialog-header"},qa={class:"modal-body"},Ra={class:"transfer-section"},za={class:"transfer-container"},Oa={class:"transfer-panel"},Ja={class:"transfer-header"},Ka={class:"transfer-body"},Qa=["value"],Wa={class:"transfer-panel"},Xa={class:"transfer-header"},Ya={class:"transfer-body"},Za={class:"modal-footer"},el={class:"dialog-header"},al={class:"modal-body"},ll={class:"file-search-container"},tl=["placeholder"],sl={class:"modal-play-content"},nl={class:"file-selector"},ol={class:"file-list-content"},il=["onClick","onDblclick"],cl={class:"file-info"},rl={class:"file-name"},dl={class:"file-meta"},ul={key:0},vl={key:0,class:"play-empty-files"},kl={class:"selected-files-panel"},pl={class:"selected-files-content"},ml=["onDragstart","onDrop"],bl={class:"selected-file-info"},hl={class:"file-number"},fl={class:"file-name"},yl={class:"file-actions"},gl=["onClick","disabled","title"],wl=["onClick","disabled","title"],Cl=["onClick","title"],xl={key:0,class:"play-empty-files"},Fl={class:"hint"},Dl={key:0,class:"transfer-footer"},Sl={class:"modal-footer"},Ml={class:"dialog-header"},Vl={class:"modal-body"},Tl={class:"form-group"},Bl={value:0},Gl=["value"],Ul={class:"modal-footer"},jl={class:"dialog-header"},_l={class:"modal-body"},Pl={class:"task-table"},Nl=["onUpdate:modelValue"],Ll={class:"modal-footer"},Hl={class:"dialog-header"},Al={class:"modal-body"},$l={class:"form-group"},El={class:"form-hint"},Il={class:"modal-footer"},ql={class:"dialog-header"},Rl={class:"modal-body"},zl={class:"form-group"},Ol={class:"duration-input-group"},Jl={key:0,class:"duration-presets"},Kl=["onClick"],Ql={class:"form-hint"},Wl={class:"modal-footer"},Xl={class:"dialog-header"},Yl={class:"modal-body"},Zl={class:"selected-tasks-list"},et={class:"modal-footer"},at={class:"dialog-header"},lt={class:"modal-body"},tt={class:"copy-config-grid"},st={class:"copy-config-row"},nt={class:"copy-config-label"},ot={class:"copy-config-control"},it=["disabled"],ct=["disabled"],rt=["disabled"],dt=["disabled"],ut={class:"copy-config-row"},vt={class:"copy-config-label"},kt={class:"copy-config-control"},pt=["placeholder"],mt={class:"copy-config-row"},bt={class:"copy-config-label"},ht={class:"copy-config-control"},ft=["disabled"],yt=["disabled"],gt={class:"copy-interval-unit"},wt={key:0,class:"copy-preview-section"},Ct={class:"section-title",style:{margin:"16px 0 8px"}},xt={class:"task-table copy-preview-table"},Ft={style:{width:"120px"}},Dt={style:{"text-align":"center"}},St=["onUpdate:modelValue"],Mt=["onUpdate:modelValue"],Vt={class:"modal-footer"},Tt=["disabled"],Bt={class:"dialog-header"},Gt={class:"modal-body modal-body-large"},Ut={class:"task-form-grid"},jt={class:"task-form-section"},_t={class:"form-row-2"},Pt={class:"form-field"},Nt=["placeholder"],Lt={class:"form-field"},Ht={key:0,class:"form-row-2 advanced-content"},At={class:"form-field"},$t=["min"],Et={class:"form-field"},It=["min"],qt={key:1,class:"date-hint"},Rt={class:"form-field"},zt={class:"weekday-checkboxes"},Ot=["onUpdate:modelValue"],Jt={class:"section-title"},Kt={key:0,class:"section-count"},Qt={class:"device-select-area"},Wt={class:"device-search-bar"},Xt=["placeholder"],Yt={class:"search-stats"},Zt={class:"device-check-grid"},es=["value"],as={key:0,class:"play-empty-files",style:{"grid-column":"1 / -1"}},ls={class:"section-title"},ts={key:0,class:"section-count"},ss={class:"file-search-container",style:{"margin-bottom":"12px"}},ns=["placeholder"],os={class:"modal-play-content"},is={class:"file-selector"},cs={class:"file-list-content"},rs=["onClick","onDblclick"],ds={class:"file-info"},us={class:"file-name"},vs={class:"file-meta"},ks={key:0},ps={key:0,class:"play-empty-files"},ms={class:"selected-files-panel"},bs={class:"selected-files-content"},hs=["onDragstart","onDrop"],fs={class:"selected-file-info"},ys={class:"file-number"},gs={class:"file-name"},ws={class:"file-actions"},Cs=["onClick","disabled","title"],xs=["onClick","disabled","title"],Fs=["onClick","title"],Ds={key:0,class:"play-empty-files"},Ss={class:"hint"},Ms={key:0,class:"transfer-footer"},Vs={class:"section-title"},Ts={key:0,class:"section-count"},Bs={class:"play-settings-area"},Gs={class:"play-settings-grid"},Us={class:"form-field"},js={value:1},_s={value:0},Ps={key:0,class:"form-field"},Ns={class:"form-field"},Ls={key:0,class:"duration-display-row"},Hs={class:"duration-label"},As={class:"duration-value"},$s={class:"duration-bracket"},Es={class:"duration-formula"},Is={key:1,class:"form-field"},qs={class:"duration-input-group"},Rs=["placeholder"],zs={key:0,class:"duration-presets"},Os=["onClick"],Js={key:2,class:"form-field"},Ks=["max","placeholder"],Qs={class:"form-hint"},Ws={class:"modal-footer"},Xs=["disabled"],Ys=O(e({__name:"index",setup(e){const{t:O}=w(),Ys=f(!1),Zs=f([]),en=f([]),an=f(!1),ln=f(0),tn=f("list"),sn=f([]),nn=f({}),on=f(!1),cn=f(!1),rn=f(!1),dn=f(!1),un=f(!1),vn=f(!1),kn=f(!1),pn=f(!1),mn=f(!1),bn=f(!1),hn=f(!1),fn=f(null),yn=f(1),gn=f(""),wn=f(30),Cn=f([]),xn=f(""),Fn=f(!1),Dn=f(null),Sn=f(!1),Mn=f(null),Vn=f(0),Tn=f(0),Bn=f(1),Gn=f(0),Un=f(!1),jn=f(!1),_n=f(!1),Pn=[60,120,300,600,1200,1800,2400,3e3,3600,7200,10800,14400,18e3];function Nn(e){return e<60?`${e}${O("common.seconds")}`:e<3600?`${Math.floor(e/60)}${O("common.minutes")}`:`${Math.floor(e/3600)}${O("common.hours")}`}function Ln(e){return e&&"无限制"!==e&&"0"!==e?e:O("tasks.noLimit")}const Hn=y(()=>en.value.map(e=>Zs.value.find(a=>a.id===e)).filter(Boolean)),An=f([]),$n=f([]),En=f(""),In=f(""),qn=y(()=>{if(!En.value.trim())return An.value;const e=En.value.trim().toLowerCase();return An.value.filter(a=>a.label.toLowerCase().includes(e))}),Rn=y(()=>{if(!In.value.trim())return $n.value;const e=In.value.trim().toLowerCase();return $n.value.filter(a=>a.label.toLowerCase().includes(e))}),zn=f(""),On=f(-1),Jn=y(()=>{if(!zn.value.trim())return $n.value;const e=zn.value.trim().toLowerCase();return $n.value.filter(a=>a.label.toLowerCase().includes(e))}),Kn=(new Date).toISOString().slice(0,10),Qn=y(()=>[O("tasks.monday"),O("tasks.tuesday"),O("tasks.wednesday"),O("tasks.thursday"),O("tasks.friday"),O("tasks.saturday"),O("tasks.sunday")]),Wn=f({taskname:"",selectedDevices:[],selectedFiles:[],start_time:"",startdate:"",enddate:"",len:0,jiange:2,kind:1,playCount:1,weeks:[!0,!0,!0,!0,!0,!0,!0]}),Xn=f({show:!1,text:"",type:"success"}),Yn=y(()=>0===ln.value?Zs.value:Zs.value.filter(e=>e.groupid===ln.value)),Zn=y(()=>{const e=new Set,a=Yn.value.filter(e=>1===e.enable);for(let l=0;l<a.length;l++){const t=a[l],s=eo(t.tasktime),n=s+(Number(t.len)||0);for(let o=l+1;o<a.length;o++){const l=a[o],i=eo(l.tasktime),c=i+(Number(l.len)||0);ao(t.startdate,t.enddate,l.startdate,l.enddate)&&s<c&&i<n&&(e.add(t.id),e.add(l.id))}}return e});function eo(e){if(!e)return 0;const a=e.split(":");return 3600*(Number(a[0])||0)+60*(Number(a[1])||0)+(Number(a[2])||0)}function ao(e,a,l,t){if(!(e&&a&&l&&t))return!0;const s=new Date(e).getTime(),n=new Date(a).getTime(),o=new Date(l).getTime();return s<=new Date(t).getTime()&&o<=n}function lo(e,a="success"){Xn.value={show:!0,text:e,type:a},setTimeout(()=>{Xn.value.show=!1},3e3)}async function to(){Ys.value=!0;try{const e=await C();e.res&&(Zs.value=e.taskary||[])}catch(e){console.error("获取任务列表失败:",e)}finally{Ys.value=!1}}let so=null;async function no(){try{const e=await C();if(e.res){const a=e.taskary||[],l=JSON.stringify(Zs.value);l!==JSON.stringify(a)&&(Zs.value=a)}}catch{}}async function oo(){try{const e=await x();let a=[];!0===e.res&&Array.isArray(e.results)?a=e.results:!0===e.res&&Array.isArray(e.list)?a=e.list:!0===e.res&&Array.isArray(e.filelist)&&(a=e.filelist),An.value=a.map(e=>({id:e.id,label:e.devname||e.device_name||e.name||`设备${e.id}`})),console.log("✓ 获取设备列表:",An.value.length,"个")}catch(e){console.error("获取设备列表失败:",e)}}async function io(){try{const e=await F();let a=[];!0===e.res&&Array.isArray(e.filelist)?a=e.filelist:!0===e.res&&Array.isArray(e.list)?a=e.list:!0===e.res&&Array.isArray(e.results)&&(a=e.results),$n.value=a.map(e=>({id:e.id,label:e.name||e.filename||e.path||`文件${e.id}`,len:e.len||e.duration||0})),console.log("✓ 获取文件列表:",$n.value.length,"个")}catch(e){console.error("获取文件列表失败:",e)}}async function co(){try{const e=await D();if(e.res){const a=e.list||[];sn.value=a.map(e=>({value:e.pid,label:e.pname})),nn.value=sn.value.reduce((e,a)=>(e[a.value]=a.label,e),{}),console.log("✓ 获取任务组列表:",sn.value.length,"个")}}catch(e){console.error("获取任务组列表失败:",e)}}async function ro(){Wn.value={taskname:"",selectedDevices:[],selectedFiles:[],start_time:"",startdate:"",enddate:"",len:0,jiange:2,kind:1,playCount:1,weeks:[!0,!0,!0,!0,!0,!0,!0]},Sn.value=!1,Mn.value=null,Un.value=!1,En.value="",In.value="",rn.value=!0,await Promise.all([oo(),io()])}async function uo(e){if(1!==e.statu)try{const a=await q({taskid:e.id});if(!a.res)return void lo(a.info||"获取任务详情失败","error");const l=a,t=l.task,s=l.devlistary||[],n=l.filelistary||[],o=(t.week||"1111111").split("").map(e=>"1"===e);await Promise.all([oo(),io()]),Wn.value={taskname:t.task_name||"",selectedDevices:s.map(e=>e.devseedid),selectedFiles:n.map(e=>e.id),start_time:t.tasktime||"",startdate:t.startdate&&"无限制"!==t.startdate&&"0"!==t.startdate?oi(t.startdate):"",enddate:t.enddate&&"无限制"!==t.enddate&&"0"!==t.enddate?oi(t.enddate):"",len:Number(t.len)||0,jiange:t.jiange||2,kind:0===t.kind?0:1,playCount:t.kind>1?t.kind:1,weeks:7===o.length?o:[!0,!0,!0,!0,!0,!0,!0]},Sn.value=!0,Mn.value=e.id,En.value="",In.value="",Un.value=!(!Wn.value.startdate&&!Wn.value.enddate),rn.value=!0}catch(a){console.error("获取任务详情失败:",a),lo("获取任务详情失败","error")}else lo(O("tasks.cannotEditPlaying"),"error")}async function vo(){if(0!==Wn.value.selectedDevices.length)if(0!==Wn.value.selectedFiles.length)if(Wn.value.start_time)if(Wn.value.startdate&&Wn.value.enddate&&Wn.value.startdate>Wn.value.enddate)lo(O("tasks.dateRangeError"),"error");else{Fn.value=!0;try{const e=Wn.value.weeks.map(e=>e?"1":"0").join("");let a=Wn.value.kind;1===a&&Wn.value.playCount>1&&(a=Math.min(Wn.value.playCount,100));const l=2===Wn.value.start_time.split(":").length?Wn.value.start_time+":00":Wn.value.start_time;let t;if(0===Wn.value.kind){if(!Wn.value.len||Wn.value.len<=0)return lo(O("tasks.durationRequired"),"error"),void(Fn.value=!1);t=Wn.value.len}else t=Wn.value.len>0?Wn.value.len:ti.value>0?ti.value:void 0;if(Sn.value&&Mn.value){const[s,n,o]=await Promise.all([S({taskid:Mn.value,task_name:Wn.value.taskname||void 0,start_time:l,startdate:Wn.value.startdate||"0",enddate:Wn.value.enddate||"0",len:t,jiange:Wn.value.jiange,kind:a,week:e}),M({taskid:Mn.value,deviceIds:Wn.value.selectedDevices}),V({taskid:Mn.value,fileIds:Wn.value.selectedFiles})]);s.res?(lo(O("tasks.saveSuccess")),ui(),await to()):lo(s.info||O("tasks.saveFailed"),"error")}else{const s={snids:Wn.value.selectedDevices.join("|"),fileids:Wn.value.selectedFiles.join("|"),start_time:l,startdate:Wn.value.startdate||void 0,enddate:Wn.value.enddate||void 0,len:t,jiange:Wn.value.jiange,kind:a,weeks:e,taskname:Wn.value.taskname||void 0},n=await T(s);n.res?(lo(O("tasks.saveSuccess")),ui(),await to()):lo(n.info||O("tasks.saveFailed"),"error")}}catch(e){console.error("保存任务失败:",e),lo(O("tasks.saveFailed"),"error")}finally{Fn.value=!1}}else lo(O("tasks.startTimeRequired"),"error");else lo(O("tasks.filesRequired"),"error");else lo(O("tasks.devicesRequired"),"error")}async function ko(e){if(1!==e.statu)if(1!==e.enable){if(confirm(O("tasks.deleteConfirm")))try{const a=await I({taskidstr:String(e.id)});a.res?(lo(O("tasks.deleteSuccess")),await to()):lo(a.info||O("tasks.deleteFailed"),"error")}catch(a){console.error("删除任务失败:",a),lo(O("tasks.deleteFailed"),"error")}}else lo(O("tasks.cannotDeleteEnabled"),"error");else lo(O("tasks.cannotDeletePlaying"),"error")}async function po(e){try{const a=1===e.enable?await G({id:e.id}):await B({id:e.id});a.res?(lo(1===e.enable?O("tasks.enableSuccess"):O("tasks.disableSuccess")),await to()):(e.enable=1===e.enable?0:1,lo(a.info||O("common.error"),"error"))}catch(a){e.enable=1===e.enable?0:1,console.error("操作失败:",a),lo(O("common.error"),"error")}}async function mo(e){try{const a=await R({id:e.id});a.res?(lo(O("tasks.startPlaySuccess")),await to()):lo(a.info||O("tasks.startPlayFailed"),"error")}catch(a){console.error("试听失败:",a),lo(O("tasks.startPlayFailed"),"error")}}async function bo(e){try{const a=await z({id:e.id});a.res?(lo(O("tasks.stopPlaySuccess")),await to()):lo(a.info||O("tasks.stopPlayFailed"),"error")}catch(a){console.error("停止失败:",a),lo(O("tasks.stopPlayFailed"),"error")}}function ho(){an.value?en.value=Yn.value.map(e=>e.id):en.value=[]}function fo(e){const a=en.value.indexOf(e);a>-1?en.value.splice(a,1):en.value.push(e)}async function yo(){if(0!==en.value.length)try{const e=en.value,a=(await Promise.allSettled(e.map(e=>B({id:e})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.batchDisableSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),en.value=[],await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.noTasksSelected"),"error")}async function go(){if(0!==en.value.length)try{const e=en.value,a=(await Promise.allSettled(e.map(e=>G({id:e})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.batchEnableSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),en.value=[],await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.noTasksSelected"),"error")}function wo(){0!==en.value.length?bn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function Co(){xn.value="",on.value=!0}function xo(){on.value=!1}async function Fo(){if(xn.value)try{const e=await U({pname:xn.value});e.res?(lo(O("tasks.addGroupSuccess")),xo(),await co()):lo(e.info||O("tasks.addGroupFailed"),"error")}catch(e){console.error("添加任务组失败:",e),lo(O("tasks.addGroupFailed"),"error")}else lo(O("tasks.groupNameRequired"),"error")}function Do(e){Dn.value=e,Vn.value=e.groupid||0,cn.value=!0}function So(){cn.value=!1}async function Mo(){try{const e=await j({pid:Vn.value,taskid:Dn.value.id});e.res?(lo(O("tasks.applyGroupSuccess")),So(),await to()):lo(e.info||O("tasks.applyGroupFailed"),"error")}catch(e){console.error("编辑任务组失败:",e),lo(O("tasks.applyGroupFailed"),"error")}}async function Vo(){if(0!==ln.value){if(confirm(O("tasks.deleteGroupConfirm")))try{const e=await _({pid:ln.value});e.res?(lo(O("tasks.deleteGroupSuccess")),ln.value=0,await co(),await to()):lo(e.info||O("tasks.deleteGroupFailed"),"error")}catch(e){lo(O("tasks.deleteGroupFailed"),"error")}}else lo(O("tasks.selectGroupFirst"),"error")}async function To(){if(0!==ln.value)try{const e=Zs.value.filter(e=>e.groupid===ln.value);if(0===e.length)return void lo(O("tasks.noTasksInGroup"),"error");const a=(await Promise.allSettled(e.map(e=>B({id:e.id})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.disableGroupSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.selectGroupFirst"),"error")}async function Bo(){if(0!==ln.value)try{const e=Zs.value.filter(e=>e.groupid===ln.value);if(0===e.length)return void lo(O("tasks.noTasksInGroup"),"error");const a=(await Promise.allSettled(e.map(e=>G({id:e.id})))).filter(e=>"rejected"===e.status).length;0===a?lo(O("tasks.enableGroupSuccess")):lo(O("tasks.batchPartialFailed",{failed:a}),"error"),await to()}catch(e){lo(O("common.error"),"error")}else lo(O("tasks.selectGroupFirst"),"error")}function Go(){0!==en.value.length?dn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function Uo(){0!==en.value.length?(Wn.value.selectedFiles=[],zn.value="",un.value=!0):lo(O("tasks.noTasksSelected"),"error")}function jo(e){Wn.value.selectedFiles.push(e)}function _o(){0!==en.value.length?(Tn.value=0,vn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Po(){0!==en.value.length?kn.value=!0:lo(O("tasks.noTasksSelected"),"error")}function No(){0!==en.value.length?(Bn.value=1,pn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Lo(){0!==en.value.length?(Gn.value=0,mn.value=!0):lo(O("tasks.noTasksSelected"),"error")}function Ho(e,a){const[l,t,s]=e.split(":").map(Number),n=3600*l+60*t+(s||0)+60*a;return[Math.floor(n/3600)%24,Math.floor(n%3600/60),n%60].map(e=>String(e).padStart(2,"0")).join(":")}function Ao(){if(!fn.value)return;const e=fn.value,a=[];for(let l=0;l<yn.value;l++){const t=gn.value||e.task_name;a.push({task_name:t+(l+1),tasktime:Ho(e.tasktime,wn.value*l)})}Cn.value=a}function $o(e){yn.value=Math.max(1,yn.value-e),Ao()}function Eo(e){yn.value=Math.min(20,yn.value+e),Ao()}function Io(){if(0===en.value.length)return void lo(O("tasks.noTasksSelected"),"error");const e=Yn.value.find(e=>e.id===en.value[0]);e&&Ro(e)}function qo(e){Ro(e)}function Ro(e){fn.value=e,yn.value=1,gn.value="",wn.value=30,Cn.value=[],hn.value=!0,Ao()}async function zo(){if(0!==Cn.value.length)try{const e=Cn.value.map(e=>e.task_name).join(","),a=Cn.value.map(e=>e.tasktime).join(","),l=await P({tasknamestr:e,tasktimestr:a,cptskid:fn.value.id});l.res?(lo(O("tasks.copySuccess")),hn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.copyFailed"),"error")}catch(e){lo(O("tasks.copyFailed"),"error")}}async function Oo(){try{const e=en.value.join(","),a=Wn.value.selectedDevices.join(","),l=await N({taskids:e,snids:a});l.res?(lo(O("tasks.saveSuccess")),dn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存设备失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Jo(){try{const e=en.value.join(","),a=Wn.value.selectedFiles.join(","),l=await L({taskids:e,fileids:a});l.res?(lo(O("tasks.saveSuccess")),un.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存文件失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Ko(){try{const e=en.value.join(","),a=await H({taskids:e,fanganid:Tn.value});a.res?(lo(O("tasks.applyGroupSuccess")),vn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.applyGroupFailed"),"error")}catch(e){console.error("批量应用方案失败:",e),lo(O("tasks.applyGroupFailed"),"error")}}async function Qo(){try{const e=Hn.value.map(e=>e.id).join(","),a=Hn.value.map(e=>e.tasktime).join(","),l=await A({taskids:e,tasktimestr:a});l.res?(lo(O("tasks.saveSuccess")),kn.value=!1,en.value=[],await to()):lo(l.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存时间失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Wo(){try{const e=en.value.join(","),a=await $({taskids:e,kind:Bn.value});a.res?(lo(O("tasks.saveSuccess")),pn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存循环次数失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Xo(){try{const e=en.value.join(","),a=await E({taskids:e,len:Gn.value});a.res?(lo(O("tasks.saveSuccess")),mn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.saveFailed"),"error")}catch(e){console.error("批量保存时长失败:",e),lo(O("tasks.saveFailed"),"error")}}async function Yo(){const e=Hn.value.filter(e=>1===e.statu);if(e.length>0){const a=e.map(e=>e.task_name).join(", ");return void lo(O("tasks.cannotDeletePlaying")+": "+a,"error")}const a=Hn.value.filter(e=>1===e.enable);if(a.length>0){const e=a.map(e=>e.task_name).join(", ");return void lo(O("tasks.cannotDeleteEnabled")+": "+e,"error")}try{const e=en.value.join(","),a=await I({taskidstr:e});a.res?(lo(O("tasks.deleteSuccess")),bn.value=!1,en.value=[],await to()):lo(a.info||O("tasks.deleteFailed"),"error")}catch(l){console.error("批量删除失败:",l),lo(O("tasks.deleteFailed"),"error")}}function Zo(e){e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect="move")}function ei(e){const a=$n.value.find(a=>a.id===e);return(null==a?void 0:a.label)||O("tasks.unknownFile")}function ai(e){const a=$n.value.find(a=>a.id===e);return(null==a?void 0:a.len)||0}const li=y(()=>Wn.value.selectedFiles.reduce((e,a)=>e+ai(a),0)),ti=y(()=>{if(0===Wn.value.selectedFiles.length)return 0;let e=0,a=!1;for(const t of Wn.value.selectedFiles){const l=$n.value.find(e=>e.id===t);l&&l.len&&(e+=l.len,a=!0)}if(!a)return 0;const l=e+Wn.value.selectedFiles.length*Wn.value.jiange;return 1===Wn.value.kind?l*Wn.value.playCount:l});function si(e){return nn.value[e]||O("tasks.noGroup")}function ni(e,a){if(!e)return"-";const l=Number(a)||0;if(l<=0)return"-";const t=e.split(":");if(t.length<2)return"-";const s=3600*(Number(t[0])||0)+60*(Number(t[1])||0)+(Number(t[2])||0)+l,n=Math.floor(s/3600)%24,o=Math.floor(s%3600/60),i=s%60;return`${String(n).padStart(2,"0")}:${String(o).padStart(2,"0")}:${String(i).padStart(2,"0")}`}function oi(e){if(!e)return"";const a=e.split("-");return 3!==a.length?e:`${a[0]}-${a[1].padStart(2,"0")}-${a[2].padStart(2,"0")}`}function ii(e){const a=Number(e)||0,l=Math.floor(a/3600),t=Math.floor(a%3600/60),s=a%60;return`${String(l).padStart(2,"0")}:${String(t).padStart(2,"0")}:${String(s).padStart(2,"0")}`}function ci(e){Wn.value.selectedFiles.push(e)}const ri=f(-1);const di=y(()=>Wn.value.selectedFiles.reduce((e,a)=>e+ai(a),0));function ui(){rn.value=!1}return a(async()=>{await Promise.all([to(),oo(),io(),co()]),so||(so=setInterval(no,2e3))}),l(()=>{so&&(clearInterval(so),so=null)}),(e,a)=>(g(),t("div",J,[s("div",K,[s("h2",Q,n(o(O)("tasks.title")),1),s("div",W,[s("div",X,[s("button",{class:i(["view-mode-btn",{active:"list"===tn.value}]),onClick:a[0]||(a[0]=e=>tn.value="list"),title:o(O)("devices.listView")},[...a[80]||(a[80]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-1b5971d9><line x1="8" y1="6" x2="21" y2="6" data-v-1b5971d9></line><line x1="8" y1="12" x2="21" y2="12" data-v-1b5971d9></line><line x1="8" y1="18" x2="21" y2="18" data-v-1b5971d9></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-1b5971d9></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-1b5971d9></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-1b5971d9></line></svg>',1)])],10,Y),s("button",{class:i(["view-mode-btn",{active:"card"===tn.value}]),onClick:a[1]||(a[1]=e=>tn.value="card"),title:o(O)("devices.cardView")},[...a[81]||(a[81]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-1b5971d9><rect x="3" y="3" width="7" height="7" data-v-1b5971d9></rect><rect x="14" y="3" width="7" height="7" data-v-1b5971d9></rect><rect x="3" y="14" width="7" height="7" data-v-1b5971d9></rect><rect x="14" y="14" width="7" height="7" data-v-1b5971d9></rect></svg>',1)])],10,Z)]),s("button",{class:"refresh-btn",onClick:to,disabled:Ys.value,title:o(O)("common.refresh")},[...a[82]||(a[82]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[s("polyline",{points:"23 4 23 10 17 10"}),s("polyline",{points:"1 20 1 14 7 14"}),s("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})],-1)])],8,ee),s("button",{class:"add-btn",onClick:ro},[a[83]||(a[83]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),r(" "+n(o(O)("tasks.addTask")),1)])])]),s("div",ae,[s("div",le,[s("label",null,n(o(O)("tasks.taskGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[2]||(a[2]=e=>ln.value=e),class:"form-select"},[s("option",te,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,se))),128))],512),[[u,ln.value]])]),s("div",ne,[s("button",{onClick:Co,class:"action-btn"},[a[84]||(a[84]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})],-1)),r(" "+n(o(O)("tasks.addTaskGroup")),1)]),s("button",{onClick:Vo,class:"action-btn action-btn-danger"},[a[85]||(a[85]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.deleteTaskGroup")),1)]),s("button",{onClick:To,class:"action-btn"},[a[86]||(a[86]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("line",{x1:"4.93",y1:"4.93",x2:"19.07",y2:"19.07"})],-1)),r(" "+n(o(O)("tasks.disableTaskGroup")),1)]),s("button",{onClick:Bo,class:"action-btn"},[a[87]||(a[87]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),s("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),r(" "+n(o(O)("tasks.enableTaskGroup")),1)])])]),en.value.length>0?(g(),t("div",oe,[s("span",ie,n(o(O)("tasks.selectedCount",{count:en.value.length}))+":",1),s("div",ce,[s("button",{onClick:yo,class:"action-btn action-btn-warning"},[a[88]||(a[88]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("line",{x1:"4.93",y1:"4.93",x2:"19.07",y2:"19.07"})],-1)),r(" "+n(o(O)("tasks.batchDisable")),1)]),s("button",{onClick:go,class:"action-btn action-btn-success"},[a[89]||(a[89]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("path",{d:"M22 11.08V12a10 10 0 1 1-5.93-9.14"}),s("polyline",{points:"22 4 12 14.01 9 11.01"})],-1)),r(" "+n(o(O)("tasks.batchEnable")),1)]),s("button",{onClick:Go,class:"action-btn"},[a[90]||(a[90]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("rect",{x:"2",y:"3",width:"20",height:"14",rx:"2",ry:"2"}),s("line",{x1:"8",y1:"21",x2:"16",y2:"21"}),s("line",{x1:"12",y1:"17",x2:"12",y2:"21"})],-1)),r(" "+n(o(O)("tasks.batchEditDevices")),1)]),s("button",{onClick:Uo,class:"action-btn"},[a[91]||(a[91]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" data-v-1b5971d9></path><polyline points="14 2 14 8 20 8" data-v-1b5971d9></polyline><line x1="16" y1="13" x2="8" y2="13" data-v-1b5971d9></line><line x1="16" y1="17" x2="8" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchEditFiles")),1)]),s("button",{onClick:_o,class:"action-btn"},[a[92]||(a[92]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" data-v-1b5971d9></path><circle cx="8.5" cy="7" r="4" data-v-1b5971d9></circle><line x1="20" y1="8" x2="20" y2="14" data-v-1b5971d9></line><line x1="23" y1="11" x2="17" y2="11" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchApplyGroup")),1)]),s("button",{onClick:Po,class:"action-btn"},[a[93]||(a[93]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("polyline",{points:"12 6 12 12 16 14"})],-1)),r(" "+n(o(O)("tasks.batchEditTime")),1)]),s("button",{onClick:No,class:"action-btn"},[a[94]||(a[94]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="17 1 21 5 17 9" data-v-1b5971d9></polyline><path d="M3 11V9a4 4 0 0 1 4-4h14" data-v-1b5971d9></path><polyline points="7 23 3 19 7 15" data-v-1b5971d9></polyline><path d="M21 13v2a4 4 0 0 1-4 4H3" data-v-1b5971d9></path></svg>',1)),r(" "+n(o(O)("tasks.batchEditLoopCount")),1)]),s("button",{onClick:Lo,class:"action-btn"},[a[95]||(a[95]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("circle",{cx:"12",cy:"12",r:"10"}),s("polyline",{points:"12 6 12 12"}),s("line",{x1:"12",y1:"16",x2:"12.01",y2:"16"})],-1)),r(" "+n(o(O)("tasks.batchEditDuration")),1)]),s("button",{onClick:Io,class:"action-btn"},[a[96]||(a[96]=s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)),r(" "+n(o(O)("tasks.batchCopy")),1)]),s("button",{onClick:wo,class:"action-btn action-btn-danger"},[a[97]||(a[97]=c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)),r(" "+n(o(O)("tasks.batchDelete")),1)])])])):p("",!0),s("div",re,["list"===tn.value?(g(),t("div",de,[s("table",ue,[s("thead",null,[s("tr",null,[s("th",ve,[d(s("input",{type:"checkbox","onUpdate:modelValue":a[3]||(a[3]=e=>an.value=e),onChange:ho},null,544),[[m,an.value]])]),s("th",ke,n(o(O)("common.index")),1),a[98]||(a[98]=s("th",{class:"col-id"},"ID",-1)),s("th",pe,n(o(O)("tasks.taskName")),1),s("th",me,n(o(O)("tasks.startTime")),1),s("th",be,n(o(O)("tasks.duration")),1),s("th",he,n(o(O)("tasks.endTime")),1),s("th",fe,n(o(O)("tasks.loopCount")),1),s("th",ye,n(o(O)("tasks.startDate"))+" / "+n(o(O)("tasks.endDate")),1),s("th",ge,n(o(O)("tasks.taskGroup")),1),s("th",we,n(o(O)("common.status")),1),s("th",Ce,n(o(O)("common.actions")),1)])]),s("tbody",null,[0===Yn.value.length?(g(),t("tr",xe,[s("td",Fe,[s("div",De,[s("p",null,n(o(O)("tasks.noTasks")),1)])])])):p("",!0),(g(!0),t(v,null,k(Yn.value,(e,l)=>(g(),t("tr",{key:e.id,class:i({"row-disabled":0===e.enable,"row-playing":1===e.statu,"row-selected":en.value.includes(e.id),"row-conflict":Zn.value.has(e.id)&&1===e.enable}),onClick:a=>fo(e.id)},[s("td",{class:"col-checkbox",onClick:a[5]||(a[5]=h(()=>{},["stop"]))},[d(s("input",{type:"checkbox","onUpdate:modelValue":a[4]||(a[4]=e=>en.value=e),value:e.id},null,8,Me),[[m,en.value]])]),s("td",Ve,n(l+1),1),s("td",Te,n(e.id),1),s("td",Be,[s("span",Ge,n(e.task_name),1),1===e.statu?(g(),t("span",Ue,[a[99]||(a[99]=s("span",{class:"playing-dot"},null,-1)),r(n(o(O)("devices.playing")),1)])):p("",!0),0===e.enable?(g(),t("span",je,n(o(O)("tasks.disabled")||"已禁用"),1)):p("",!0),Zn.value.has(e.id)&&1===e.enable?(g(),t("span",_e,"⚠ "+n(o(O)("tasks.timeConflict")),1)):p("",!0)]),s("td",Pe,n(e.tasktime),1),s("td",Ne,n(e.len)+"s ("+n(ii(e.len))+")",1),s("td",Le,n(ni(e.tasktime,e.len)),1),s("td",He,[0===e.kind?(g(),t("span",Ae,n(o(O)("tasks.randomPlay")),1)):p("",!0),e.kind>0?(g(),t("span",$e,n(o(O)("tasks.loopPlay",{count:e.kind})),1)):p("",!0)]),s("td",Ee,[s("span",null,n(Ln(e.startdate)),1),a[100]||(a[100]=s("span",{class:"date-sep"},"~",-1)),s("span",null,n(Ln(e.enddate)),1)]),s("td",{class:"col-group",onClick:a[6]||(a[6]=h(()=>{},["stop"]))},[s("button",{onClick:a=>Do(e),class:"btn-text"},n(si(e.groupid)),9,Ie)]),s("td",{class:"col-status",onClick:a[7]||(a[7]=h(()=>{},["stop"]))},[0===e.statu?(g(),t("button",{key:0,onClick:a=>mo(e),class:"status-btn status-btn-play"},[a[101]||(a[101]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("polygon",{points:"5 3 19 12 5 21"})],-1)),s("span",null,n(o(O)("tasks.tryPlay")),1)],8,qe)):p("",!0),1===e.statu?(g(),t("button",{key:1,onClick:a=>bo(e),class:"status-btn status-btn-stop"},[a[102]||(a[102]=s("span",{class:"status-pulse-ring"},null,-1)),a[103]||(a[103]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})],-1)),s("span",null,n(o(O)("common.stop")),1)],8,Re)):p("",!0)]),s("td",{class:"col-actions",onClick:a[8]||(a[8]=h(()=>{},["stop"]))},[s("label",{class:"toggle-switch",title:1===e.enable?o(O)("tasks.disableTask"):o(O)("tasks.enableTask")},[d(s("input",{type:"checkbox","onUpdate:modelValue":a=>e.enable=a,"true-value":1,"false-value":0,onChange:a=>po(e)},null,40,Oe),[[m,e.enable]]),a[104]||(a[104]=s("span",{class:"toggle-track"},null,-1)),s("span",Je,n(1===e.enable?o(O)("tasks.enabled"):o(O)("tasks.disabled")),1)],8,ze),s("div",Ke,[s("button",{onClick:a=>uo(e),class:"row-action-btn",title:o(O)("common.edit")},[...a[105]||(a[105]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),s("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,Qe),s("button",{onClick:a=>qo(e),class:"row-action-btn",title:o(O)("tasks.batchCopy")},[...a[106]||(a[106]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,We),s("button",{onClick:a=>ko(e),class:"row-action-btn btn-danger",title:o(O)("common.delete")},[...a[107]||(a[107]=[c('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14" data-v-1b5971d9><polyline points="3 6 5 6 21 6" data-v-1b5971d9></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" data-v-1b5971d9></path><line x1="10" y1="11" x2="10" y2="17" data-v-1b5971d9></line><line x1="14" y1="11" x2="14" y2="17" data-v-1b5971d9></line></svg>',1)])],8,Xe)])])],10,Se))),128))])])])):p("",!0),"card"===tn.value?(g(),t("div",Ye,[0===Yn.value.length?(g(),t("div",Ze,[s("p",null,n(o(O)("tasks.noTasks")),1)])):p("",!0),s("div",ea,[(g(!0),t(v,null,k(Yn.value,(e,l)=>(g(),t("div",{key:e.id,class:i(["task-card",{"card-disabled":0===e.enable,"card-playing":1===e.statu,"card-selected":en.value.includes(e.id),"card-conflict":Zn.value.has(e.id)&&1===e.enable}]),onClick:a=>fo(e.id)},[s("div",la,[s("label",{class:"toggle-switch",onClick:a[9]||(a[9]=h(()=>{},["stop"]))},[d(s("input",{type:"checkbox","onUpdate:modelValue":a=>e.enable=a,"true-value":1,"false-value":0,onChange:a=>po(e)},null,40,ta),[[m,e.enable]]),a[108]||(a[108]=s("span",{class:"toggle-track"},null,-1))]),s("span",sa,"#"+n(e.id),1),1===e.statu?(g(),t("span",na,[...a[109]||(a[109]=[s("span",{class:"playing-dot"},null,-1)])])):p("",!0),Zn.value.has(e.id)&&1===e.enable?(g(),t("span",{key:1,class:"conflict-badge",title:o(O)("tasks.timeConflict")},"⚠",8,oa)):p("",!0),s("div",{class:"task-card-actions",onClick:a[10]||(a[10]=h(()=>{},["stop"]))},[s("button",{onClick:a=>uo(e),class:"row-action-btn",title:o(O)("common.edit")},[...a[110]||(a[110]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("path",{d:"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"}),s("path",{d:"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"})],-1)])],8,ia),s("button",{onClick:a=>qo(e),class:"row-action-btn",title:o(O)("tasks.batchCopy")},[...a[111]||(a[111]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})],-1)])],8,ca),s("button",{onClick:a=>ko(e),class:"row-action-btn btn-danger",title:o(O)("common.delete")},[...a[112]||(a[112]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[s("polyline",{points:"3 6 5 6 21 6"}),s("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ra)])]),s("div",da,[r(n(e.task_name)+" ",1),0===e.enable?(g(),t("span",ua,n(o(O)("tasks.disabled")||"已禁用"),1)):p("",!0)]),s("div",va,[s("span",ka,n(e.tasktime),1),a[113]||(a[113]=s("span",{class:"time-arrow"},"→",-1)),s("span",pa,n(ni(e.tasktime,e.len)),1),s("span",ma,n(ii(e.len)),1)]),s("div",ba,[s("div",ha,[s("span",fa,n(o(O)("tasks.taskGroup"))+":",1),s("button",{onClick:h(a=>Do(e),["stop"]),class:"btn-text"},n(si(e.groupid)),9,ya)]),s("div",ga,[s("span",wa,n(o(O)("tasks.loopCount"))+":",1),0===e.kind?(g(),t("span",Ca,n(o(O)("tasks.randomPlay")),1)):p("",!0),e.kind>0?(g(),t("span",xa,n(o(O)("tasks.loopPlay",{count:e.kind})),1)):p("",!0)]),s("div",Fa,[s("span",Da,n(o(O)("tasks.dateRange")||"日期")+":",1),s("span",Sa,n(Ln(e.startdate))+" ~ "+n(Ln(e.enddate)),1)])]),s("div",{class:"task-card-footer",onClick:a[11]||(a[11]=h(()=>{},["stop"]))},[0===e.statu?(g(),t("button",{key:0,onClick:a=>mo(e),class:"status-btn status-btn-play"},[a[114]||(a[114]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("polygon",{points:"5 3 19 12 5 21"})],-1)),s("span",null,n(o(O)("tasks.tryPlay")),1)],8,Ma)):p("",!0),1===e.statu?(g(),t("button",{key:1,onClick:a=>bo(e),class:"status-btn status-btn-stop"},[a[115]||(a[115]=s("span",{class:"status-pulse-ring"},null,-1)),a[116]||(a[116]=s("svg",{viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},[s("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})],-1)),s("span",null,n(o(O)("common.stop")),1)],8,Va)):p("",!0)])],10,aa))),128))])])):p("",!0)]),on.value?(g(),t("div",{key:1,class:"modal-overlay",onClick:xo},[s("div",{class:"modal-content",onClick:a[13]||(a[13]=h(()=>{},["stop"]))},[s("div",Ta,[s("h3",null,n(o(O)("tasks.addTaskGroup")),1),s("button",{class:"close-btn",onClick:xo},[...a[117]||(a[117]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Ba,[s("div",Ga,[s("label",null,n(o(O)("tasks.taskGroupName"))+":",1),d(s("input",{"onUpdate:modelValue":a[12]||(a[12]=e=>xn.value=e),type:"text",class:"form-input",maxlength:"15",placeholder:o(O)("tasks.enterGroupName")},null,8,Ua),[[b,xn.value]]),s("span",ja,n(xn.value.length)+"/15",1)])]),s("div",_a,[s("button",{onClick:xo,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Fo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),cn.value?(g(),t("div",{key:2,class:"modal-overlay",onClick:So},[s("div",{class:"modal-content",onClick:a[15]||(a[15]=h(()=>{},["stop"]))},[s("div",Pa,[s("h3",null,n(o(O)("tasks.applyTaskGroup")),1),s("button",{class:"close-btn",onClick:So},[...a[118]||(a[118]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Na,[s("div",La,[s("label",null,"任务: "+n(Dn.value.task_name)+" -- "+n(Dn.value.id),1)]),s("div",Ha,[s("label",null,n(o(O)("tasks.selectGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[14]||(a[14]=e=>Vn.value=e),class:"form-select"},[s("option",Aa,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,$a))),128))],512),[[u,Vn.value]])])]),s("div",Ea,[s("button",{onClick:So,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Mo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),dn.value?(g(),t("div",{key:3,class:"modal-overlay",onClick:a[20]||(a[20]=e=>dn.value=!1)},[s("div",{class:"modal-content",onClick:a[19]||(a[19]=h(()=>{},["stop"]))},[s("div",Ia,[s("h3",null,n(o(O)("tasks.batchEditDevices")),1),s("button",{class:"close-btn",onClick:a[16]||(a[16]=e=>dn.value=!1)},[...a[119]||(a[119]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",qa,[s("div",Ra,[s("div",za,[s("div",Oa,[s("div",Ja,n(o(O)("tasks.allDevices")),1),s("div",Ka,[(g(!0),t(v,null,k(An.value,e=>(g(),t("div",{key:e.id,class:"transfer-item"},[s("label",null,[d(s("input",{type:"checkbox","onUpdate:modelValue":a[17]||(a[17]=e=>Wn.value.selectedDevices=e),value:e.id},null,8,Qa),[[m,Wn.value.selectedDevices]]),r(" "+n(e.label),1)])]))),128))])]),s("div",Wa,[s("div",Xa,n(o(O)("tasks.selectedDevices")),1),s("div",Ya,[(g(!0),t(v,null,k(Wn.value.selectedDevices,e=>(g(),t("div",{key:e,class:"transfer-item"},n(function(e){const a=An.value.find(a=>a.id===e);return(null==a?void 0:a.label)||O("tasks.unknownDevice")}(e)),1))),128))])])])])]),s("div",Za,[s("button",{onClick:a[18]||(a[18]=e=>dn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Oo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),un.value?(g(),t("div",{key:4,class:"modal-overlay",onClick:a[26]||(a[26]=e=>un.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[25]||(a[25]=h(()=>{},["stop"]))},[s("div",el,[s("h3",null,n(o(O)("tasks.batchEditFiles")),1),s("button",{class:"close-btn",onClick:a[21]||(a[21]=e=>un.value=!1)},[...a[120]||(a[120]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",al,[s("div",ll,[d(s("input",{"onUpdate:modelValue":a[22]||(a[22]=e=>zn.value=e),type:"text",class:"file-search-input form-input",placeholder:o(O)("common.search")+"..."},null,8,tl),[[b,zn.value]])]),s("div",sl,[s("div",nl,[s("h4",null,n(o(O)("tasks.allFiles"))+" ("+n(Jn.value.length)+")",1),s("div",ol,[(g(!0),t(v,null,k(Jn.value,e=>(g(),t("div",{key:e.id,class:i(["file-item",{"file-selected":Wn.value.selectedFiles.includes(e.id)}]),onClick:a=>jo(e.id),onDblclick:a=>jo(e.id)},[s("div",cl,[s("div",rl,n(e.label),1),s("div",dl,[e.len?(g(),t("span",ul,n(ii(e.len)),1)):p("",!0)])])],42,il))),128)),0===Jn.value.length?(g(),t("div",vl,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",kl,[s("h4",null,n(o(O)("tasks.selectedFiles"))+" ("+n(Wn.value.selectedFiles.length)+")",1),s("div",pl,[(g(!0),t(v,null,k(Wn.value.selectedFiles,(e,l)=>(g(),t("div",{key:`${e}-${l}`,class:"selected-file-item",draggable:"true",onDragstart:e=>function(e,a){On.value=e,a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",String(e)))}(l,e),onDragover:a[23]||(a[23]=e=>Zo(e)),onDrop:e=>function(e,a){if(a.preventDefault(),-1===On.value||On.value===e)return;const l=Wn.value.selectedFiles[On.value];Wn.value.selectedFiles.splice(On.value,1),Wn.value.selectedFiles.splice(e,0,l),On.value=-1}(l,e)},[s("div",bl,[s("div",hl,n(l+1)+".",1),s("div",fl,n(ei(e)),1)]),s("div",yl,[s("button",{onClick:e=>function(e){if(e>0){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e-1],Wn.value.selectedFiles[e-1]=a}}(l),class:"file-action-btn",disabled:0===l,title:o(O)("common.moveUp")},"↑",8,gl),s("button",{onClick:e=>function(e){if(e<Wn.value.selectedFiles.length-1){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e+1],Wn.value.selectedFiles[e+1]=a}}(l),class:"file-action-btn",disabled:l===Wn.value.selectedFiles.length-1,title:o(O)("common.moveDown")},"↓",8,wl),s("button",{onClick:e=>function(e){Wn.value.selectedFiles.splice(e,1)}(l),class:"file-action-btn btn-remove",title:o(O)("common.delete")},"×",8,Cl)])],40,ml))),128)),0===Wn.value.selectedFiles.length?(g(),t("div",xl,[s("p",null,n(o(O)("tasks.noSelectedFiles")),1),s("p",Fl,n(o(O)("tasks.clickToAddHint")),1)])):p("",!0)]),Wn.value.selectedFiles.length>0?(g(),t("div",Dl,n(o(O)("tasks.estimatedDuration"))+": "+n(ii(li.value)),1)):p("",!0)])])]),s("div",Sl,[s("button",{onClick:a[24]||(a[24]=e=>un.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Jo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),vn.value?(g(),t("div",{key:5,class:"modal-overlay",onClick:a[31]||(a[31]=e=>vn.value=!1)},[s("div",{class:"modal-content",onClick:a[30]||(a[30]=h(()=>{},["stop"]))},[s("div",Ml,[s("h3",null,n(o(O)("tasks.batchApplyGroup")),1),s("button",{class:"close-btn",onClick:a[27]||(a[27]=e=>vn.value=!1)},[...a[121]||(a[121]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Vl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length}))+": "+n(en.value.join(", ")),1),s("div",Tl,[s("label",null,n(o(O)("tasks.selectGroup"))+":",1),d(s("select",{"onUpdate:modelValue":a[28]||(a[28]=e=>Tn.value=e),class:"form-select"},[s("option",Bl,n(o(O)("tasks.allGroups")),1),(g(!0),t(v,null,k(sn.value,e=>(g(),t("option",{key:e.value,value:e.value},n(e.label),9,Gl))),128))],512),[[u,Tn.value]])])]),s("div",Ul,[s("button",{onClick:a[29]||(a[29]=e=>vn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Ko,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),kn.value?(g(),t("div",{key:6,class:"modal-overlay modal-large",onClick:a[35]||(a[35]=e=>kn.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[34]||(a[34]=h(()=>{},["stop"]))},[s("div",jl,[s("h3",null,n(o(O)("tasks.batchEditTime")),1),s("button",{class:"close-btn",onClick:a[32]||(a[32]=e=>kn.value=!1)},[...a[122]||(a[122]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",_l,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("table",Pl,[s("thead",null,[s("tr",null,[s("th",null,n(o(O)("tasks.id")),1),s("th",null,n(o(O)("tasks.taskName")),1),s("th",null,n(o(O)("tasks.startTime")),1)])]),s("tbody",null,[(g(!0),t(v,null,k(Hn.value,e=>(g(),t("tr",{key:e.id},[s("td",null,n(e.id),1),s("td",null,n(e.task_name),1),s("td",null,[d(s("input",{"onUpdate:modelValue":a=>e.tasktime=a,type:"time",class:"form-input",step:"2"},null,8,Nl),[[b,e.tasktime]])])]))),128))])])]),s("div",Ll,[s("button",{onClick:a[33]||(a[33]=e=>kn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Qo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),pn.value?(g(),t("div",{key:7,class:"modal-overlay",onClick:a[40]||(a[40]=e=>pn.value=!1)},[s("div",{class:"modal-content",onClick:a[39]||(a[39]=h(()=>{},["stop"]))},[s("div",Hl,[s("h3",null,n(o(O)("tasks.batchEditLoopCount")),1),s("button",{class:"close-btn",onClick:a[36]||(a[36]=e=>pn.value=!1)},[...a[123]||(a[123]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Al,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("div",$l,[s("label",null,n(o(O)("tasks.loopCount"))+" ("+n(o(O)("tasks.playMode1").replace("顺序播放1遍",""))+"):",1),d(s("input",{"onUpdate:modelValue":a[37]||(a[37]=e=>Bn.value=e),type:"number",class:"form-input",min:1,max:1e3},null,512),[[b,Bn.value,void 0,{number:!0}]]),s("span",El,n(o(O)("tasks.playModeHint")),1)])]),s("div",Il,[s("button",{onClick:a[38]||(a[38]=e=>pn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Wo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),mn.value?(g(),t("div",{key:8,class:"modal-overlay",onClick:a[46]||(a[46]=e=>mn.value=!1)},[s("div",{class:"modal-content",onClick:a[45]||(a[45]=h(()=>{},["stop"]))},[s("div",ql,[s("h3",null,n(o(O)("tasks.batchEditDuration")),1),s("button",{class:"close-btn",onClick:a[41]||(a[41]=e=>mn.value=!1)},[...a[124]||(a[124]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Rl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("div",zl,[s("label",null,n(o(O)("tasks.taskDuration"))+" ("+n(o(O)("common.seconds"))+"):",1),s("div",Ol,[d(s("input",{"onUpdate:modelValue":a[42]||(a[42]=e=>Gn.value=e),type:"number",class:"form-input duration-input",min:1,max:72e3},null,512),[[b,Gn.value,void 0,{number:!0}]]),s("button",{onClick:a[43]||(a[43]=e=>_n.value=!_n.value),class:"toggle-quick-btn",type:"button"},n(o(O)("common.quick")),1)]),_n.value?(g(),t("div",Jl,[(g(),t(v,null,k(Pn,e=>s("button",{key:e,onClick:a=>{Gn.value=e,_n.value=!1},class:i(["duration-preset-btn",{active:Gn.value===e}]),type:"button"},n(Nn(e)),11,Kl)),64))])):p("",!0),s("span",Ql,n(o(O)("tasks.batchDurationHint")),1)])]),s("div",Wl,[s("button",{onClick:a[44]||(a[44]=e=>mn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Xo,class:"btn btn-primary"},n(o(O)("common.confirm")),1)])])])):p("",!0),bn.value?(g(),t("div",{key:9,class:"modal-overlay",onClick:a[50]||(a[50]=e=>bn.value=!1)},[s("div",{class:"modal-content",onClick:a[49]||(a[49]=h(()=>{},["stop"]))},[s("div",Xl,[s("h3",null,n(o(O)("common.deleteConfirm")),1),s("button",{class:"close-btn",onClick:a[47]||(a[47]=e=>bn.value=!1)},[...a[125]||(a[125]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Yl,[s("p",null,n(o(O)("tasks.selectedCount",{count:en.value.length})),1),s("p",null,n(o(O)("tasks.deleteConfirm")),1),s("div",Zl,[(g(!0),t(v,null,k(Hn.value,e=>(g(),t("div",{key:e.id,class:"selected-task-item"},n(e.task_name),1))),128))])]),s("div",et,[s("button",{onClick:a[48]||(a[48]=e=>bn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:Yo,class:"btn btn-danger"},n(o(O)("common.confirm")),1)])])])):p("",!0),hn.value?(g(),t("div",{key:10,class:"modal-overlay",onClick:a[63]||(a[63]=e=>hn.value=!1)},[s("div",{class:"modal-content modal-large-content",onClick:a[62]||(a[62]=h(()=>{},["stop"]))},[s("div",at,[s("h3",null,n(o(O)("tasks.batchCopy")),1),s("button",{class:"close-btn",onClick:a[51]||(a[51]=e=>hn.value=!1)},[...a[126]||(a[126]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",lt,[s("div",tt,[s("div",st,[s("div",nt,n(o(O)("tasks.copyCount")),1),s("div",ot,[s("button",{class:"copy-step-btn copy-step-danger",onClick:a[52]||(a[52]=e=>$o(5)),disabled:yn.value<=5},"-5",8,it),s("button",{class:"copy-step-btn",onClick:a[53]||(a[53]=e=>$o(1)),disabled:yn.value<=1},"-",8,ct),d(s("input",{type:"number",class:"copy-count-input","onUpdate:modelValue":a[54]||(a[54]=e=>yn.value=e),min:1,max:20,onInput:Ao},null,544),[[b,yn.value,void 0,{number:!0}]]),s("button",{class:"copy-step-btn",onClick:a[55]||(a[55]=e=>Eo(1)),disabled:yn.value>=20},"+",8,rt),s("button",{class:"copy-step-btn copy-step-success",onClick:a[56]||(a[56]=e=>Eo(5)),disabled:yn.value>=20},"+5",8,dt)])]),s("div",ut,[s("div",vt,n(o(O)("tasks.copyNewName")),1),s("div",kt,[d(s("input",{type:"text",class:"form-input copy-name-input","onUpdate:modelValue":a[57]||(a[57]=e=>gn.value=e),placeholder:o(O)("tasks.copyNewNamePlaceholder"),maxlength:"10",onInput:Ao},null,40,pt),[[b,gn.value]])])]),s("div",mt,[s("div",bt,n(o(O)("tasks.copyInterval")),1),s("div",ht,[s("button",{class:"copy-step-btn",onClick:a[58]||(a[58]=e=>wn.value=Math.max(1,wn.value-1)),disabled:wn.value<=1},"-",8,ft),d(s("input",{type:"number",class:"copy-count-input","onUpdate:modelValue":a[59]||(a[59]=e=>wn.value=e),min:1,max:600,onInput:Ao},null,544),[[b,wn.value,void 0,{number:!0}]]),s("button",{class:"copy-step-btn",onClick:a[60]||(a[60]=e=>wn.value=Math.min(600,wn.value+1)),disabled:wn.value>=600},"+",8,yt),s("span",gt,n(o(O)("tasks.copyIntervalUnit")),1)])])]),Cn.value.length>0?(g(),t("div",wt,[s("div",Ct,n(o(O)("tasks.copyPreview")),1),s("table",xt,[s("thead",null,[s("tr",null,[a[127]||(a[127]=s("th",{style:{width:"50px"}},"#",-1)),s("th",null,n(o(O)("tasks.taskName")),1),s("th",Ft,n(o(O)("tasks.startTime")),1)])]),s("tbody",null,[(g(!0),t(v,null,k(Cn.value,(e,a)=>(g(),t("tr",{key:a},[s("td",Dt,n(a+1),1),s("td",null,[d(s("input",{type:"text",class:"form-input copy-inline-input","onUpdate:modelValue":e=>Cn.value[a].task_name=e},null,8,St),[[b,Cn.value[a].task_name]])]),s("td",null,[d(s("input",{type:"time",class:"form-input copy-inline-input","onUpdate:modelValue":e=>Cn.value[a].tasktime=e,step:"1"},null,8,Mt),[[b,Cn.value[a].tasktime]])])]))),128))])])])):p("",!0)]),s("div",Vt,[s("button",{onClick:a[61]||(a[61]=e=>hn.value=!1),class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:zo,class:"btn btn-primary",disabled:0===Cn.value.length},n(o(O)("common.confirm")),9,Tt)])])])):p("",!0),rn.value?(g(),t("div",{key:11,class:"modal-overlay",onClick:ui},[s("div",{class:"modal-content modal-large-content",onClick:a[79]||(a[79]=h(()=>{},["stop"]))},[s("div",Bt,[s("h3",null,n(Sn.value?o(O)("tasks.editTask"):o(O)("tasks.addTask")),1),s("button",{class:"close-btn",onClick:ui},[...a[128]||(a[128]=[s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[s("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),s("div",Gt,[s("div",Ut,[s("div",jt,[s("div",_t,[s("div",Pt,[s("label",null,n(o(O)("tasks.taskName")),1),d(s("input",{"onUpdate:modelValue":a[64]||(a[64]=e=>Wn.value.taskname=e),type:"text",class:"form-input",placeholder:o(O)("tasks.enterTaskName")},null,8,Nt),[[b,Wn.value.taskname]])]),s("div",Lt,[s("label",null,n(o(O)("tasks.startTime"))+" (HH:MM:SS) *",1),d(s("input",{"onUpdate:modelValue":a[65]||(a[65]=e=>Wn.value.start_time=e),type:"time",class:"form-input",step:"1"},null,512),[[b,Wn.value.start_time]])])]),s("div",{class:"advanced-toggle",onClick:a[66]||(a[66]=e=>Un.value=!Un.value)},[(g(),t("svg",{class:i({rotated:Un.value}),viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[...a[129]||(a[129]=[s("polyline",{points:"6 9 12 15 18 9"},null,-1)])],2)),s("span",null,n(o(O)("tasks.advancedSettings")),1)]),Un.value?(g(),t("div",Ht,[s("div",At,[s("label",null,n(o(O)("tasks.startDate")),1),d(s("input",{"onUpdate:modelValue":a[67]||(a[67]=e=>Wn.value.startdate=e),type:"date",class:"form-input",min:o(Kn)},null,8,$t),[[b,Wn.value.startdate]])]),s("div",Et,[s("label",null,n(o(O)("tasks.endDate")),1),d(s("input",{"onUpdate:modelValue":a[68]||(a[68]=e=>Wn.value.enddate=e),type:"date",class:"form-input",min:Wn.value.startdate||o(Kn)},null,8,It),[[b,Wn.value.enddate]])])])):p("",!0),Un.value?(g(),t("div",qt,n(o(O)("tasks.dateHint")),1)):p("",!0),s("div",Rt,[s("label",null,n(o(O)("tasks.weekdays")),1),s("div",zt,[(g(!0),t(v,null,k(Qn.value,(e,a)=>(g(),t("label",{key:a,class:i(["weekday-chip",{active:Wn.value.weeks[a]}])},[d(s("input",{type:"checkbox","onUpdate:modelValue":e=>Wn.value.weeks[a]=e},null,8,Ot),[[m,Wn.value.weeks[a]]]),r(" "+n(e),1)],2))),128))])])])]),s("div",Jt,[r(n(o(O)("tasks.selectDevices"))+" ",1),Wn.value.selectedDevices.length>0?(g(),t("span",Kt,"("+n(Wn.value.selectedDevices.length)+")",1)):p("",!0)]),s("div",Qt,[s("div",Wt,[d(s("input",{"onUpdate:modelValue":a[69]||(a[69]=e=>En.value=e),type:"text",class:"form-input",placeholder:o(O)("common.search")+"..."},null,8,Xt),[[b,En.value]]),s("span",Yt,n(qn.value.length)+" / "+n(An.value.length),1)]),s("div",Zt,[(g(!0),t(v,null,k(qn.value,e=>(g(),t("label",{key:e.id,class:i(["device-check-item",{checked:Wn.value.selectedDevices.includes(e.id)}])},[d(s("input",{type:"checkbox","onUpdate:modelValue":a[70]||(a[70]=e=>Wn.value.selectedDevices=e),value:e.id},null,8,es),[[m,Wn.value.selectedDevices]]),s("span",null,n(e.label),1)],2))),128)),0===qn.value.length?(g(),t("div",as,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",ls,[r(n(o(O)("tasks.selectFiles"))+" ",1),Wn.value.selectedFiles.length>0?(g(),t("span",ts,"("+n(Wn.value.selectedFiles.length)+")",1)):p("",!0)]),s("div",ss,[d(s("input",{"onUpdate:modelValue":a[71]||(a[71]=e=>In.value=e),type:"text",class:"file-search-input form-input",placeholder:o(O)("common.search")+"..."},null,8,ns),[[b,In.value]])]),s("div",os,[s("div",is,[s("h4",null,n(o(O)("tasks.allFiles"))+" ("+n(Rn.value.length)+")",1),s("div",cs,[(g(!0),t(v,null,k(Rn.value,e=>(g(),t("div",{key:e.id,class:i(["file-item",{"file-selected":Wn.value.selectedFiles.includes(e.id)}]),onClick:a=>ci(e.id),onDblclick:a=>ci(e.id)},[s("div",ds,[s("div",us,n(e.label),1),s("div",vs,[e.len?(g(),t("span",ks,n(ii(e.len)),1)):p("",!0)])])],42,rs))),128)),0===Rn.value.length?(g(),t("div",ps,[s("p",null,n(o(O)("common.search"))+": 0",1)])):p("",!0)])]),s("div",ms,[s("h4",null,n(o(O)("tasks.selectedFiles"))+" ("+n(Wn.value.selectedFiles.length)+")",1),s("div",bs,[(g(!0),t(v,null,k(Wn.value.selectedFiles,(e,l)=>(g(),t("div",{key:`${e}-${l}`,class:"selected-file-item",draggable:"true",onDragstart:e=>function(e,a){ri.value=e,a.dataTransfer&&(a.dataTransfer.effectAllowed="move",a.dataTransfer.setData("text/plain",String(e)))}(l,e),onDragover:a[72]||(a[72]=e=>Zo(e)),onDrop:e=>function(e,a){if(a.preventDefault(),-1===ri.value||ri.value===e)return;const l=Wn.value.selectedFiles[ri.value];Wn.value.selectedFiles.splice(ri.value,1),Wn.value.selectedFiles.splice(e,0,l),ri.value=-1}(l,e)},[s("div",fs,[s("div",ys,n(l+1)+".",1),s("div",gs,n(ei(e)),1)]),s("div",ws,[s("button",{onClick:e=>function(e){if(e>0){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e-1],Wn.value.selectedFiles[e-1]=a}}(l),class:"file-action-btn",disabled:0===l,title:o(O)("common.moveUp")},"↑",8,Cs),s("button",{onClick:e=>function(e){if(e<Wn.value.selectedFiles.length-1){const a=Wn.value.selectedFiles[e];Wn.value.selectedFiles[e]=Wn.value.selectedFiles[e+1],Wn.value.selectedFiles[e+1]=a}}(l),class:"file-action-btn",disabled:l===Wn.value.selectedFiles.length-1,title:o(O)("common.moveDown")},"↓",8,xs),s("button",{onClick:e=>function(e){Wn.value.selectedFiles.splice(e,1)}(l),class:"file-action-btn btn-remove",title:o(O)("common.delete")},"×",8,Fs)])],40,hs))),128)),0===Wn.value.selectedFiles.length?(g(),t("div",Ds,[s("p",null,n(o(O)("tasks.noSelectedFiles")),1),s("p",Ss,n(o(O)("tasks.clickToAddHint")),1)])):p("",!0)]),Wn.value.selectedFiles.length>0?(g(),t("div",Ms,n(o(O)("tasks.estimatedDuration"))+": "+n(ii(di.value)),1)):p("",!0)])]),s("div",Vs,[r(n(o(O)("tasks.playSettings"))+" ",1),ti.value>0?(g(),t("span",Ts,"("+n(o(O)("tasks.estimatedDuration"))+": "+n(ii(ti.value))+")",1)):p("",!0)]),s("div",Bs,[s("div",Gs,[s("div",Us,[s("label",null,n(o(O)("tasks.playMode")),1),d(s("select",{"onUpdate:modelValue":a[73]||(a[73]=e=>Wn.value.kind=e),class:"form-select"},[s("option",js,n(o(O)("tasks.sequentialPlay")),1),s("option",_s,n(o(O)("tasks.randomPlay")),1)],512),[[u,Wn.value.kind]])]),1===Wn.value.kind?(g(),t("div",Ps,[s("label",null,n(o(O)("tasks.playCount")),1),d(s("input",{"onUpdate:modelValue":a[74]||(a[74]=e=>Wn.value.playCount=e),type:"number",class:"form-input",min:"1",max:"100"},null,512),[[b,Wn.value.playCount,void 0,{number:!0}]])])):p("",!0),s("div",Ns,[s("label",null,n(o(O)("tasks.intervalDuration"))+" ("+n(o(O)("common.seconds"))+")",1),d(s("input",{"onUpdate:modelValue":a[75]||(a[75]=e=>Wn.value.jiange=e),type:"number",class:"form-input",min:"0"},null,512),[[b,Wn.value.jiange,void 0,{number:!0}]])])]),ti.value>0?(g(),t("div",Ls,[s("span",Hs,n(o(O)("tasks.estimatedDuration"))+":",1),s("span",As,n(ti.value)+n(o(O)("common.seconds")),1),s("span",$s,"(≈ "+n(ii(ti.value))+")",1),s("span",Es,n(o(O)("tasks.durationFormula")),1)])):p("",!0),0===Wn.value.kind?(g(),t("div",Is,[s("label",null,n(o(O)("tasks.taskDuration"))+" ("+n(o(O)("common.seconds"))+") *",1),s("div",qs,[d(s("input",{"onUpdate:modelValue":a[76]||(a[76]=e=>Wn.value.len=e),type:"number",class:"form-input duration-input",min:"1",max:"72000",placeholder:o(O)("tasks.durationRequired")},null,8,Rs),[[b,Wn.value.len,void 0,{number:!0}]]),s("button",{onClick:a[77]||(a[77]=e=>jn.value=!jn.value),class:"toggle-quick-btn",type:"button"},n(o(O)("common.quick")),1)]),jn.value?(g(),t("div",zs,[(g(),t(v,null,k(Pn,e=>s("button",{key:e,onClick:a=>{return l=e,Wn.value.len=l,void(jn.value=!1);var l},class:i(["duration-preset-btn",{active:Wn.value.len===e}]),type:"button"},n(Nn(e)),11,Os)),64))])):p("",!0)])):p("",!0),Wn.value.kind>0?(g(),t("div",Js,[s("label",null,n(o(O)("tasks.forceStopDuration"))+" ("+n(o(O)("common.seconds"))+")",1),d(s("input",{"onUpdate:modelValue":a[78]||(a[78]=e=>Wn.value.len=e),type:"number",class:"form-input",min:"0",max:ti.value||void 0,placeholder:o(O)("tasks.autoCalc")},null,8,Ks),[[b,Wn.value.len,void 0,{number:!0}]]),s("span",Qs,n(o(O)("tasks.forceStopHint")),1)])):p("",!0)])]),s("div",Ws,[s("button",{onClick:ui,class:"btn btn-cancel"},n(o(O)("common.cancel")),1),s("button",{onClick:vo,class:"btn btn-primary",disabled:Fn.value},n(Fn.value?o(O)("common.saving"):o(O)("common.confirm")),9,Xs)])])])):p("",!0),Xn.value.show?(g(),t("div",{key:12,class:i(["message-toast",Xn.value.type])},n(Xn.value.text),3)):p("",!0)]))}}),[["__scopeId","data-v-1b5971d9"]]);export{Ys as default};
@@ -0,0 +1 @@
1
+ .login-container[data-v-3b7ca9c3]{position:relative;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;overflow:hidden}.particles[data-v-3b7ca9c3]{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden}.particle[data-v-3b7ca9c3]{position:absolute;width:4px;height:4px;background:var(--diablo-primary);border-radius:50%;opacity:.6;animation:particle-float-3b7ca9c3 10s infinite ease-in-out}@keyframes particle-float-3b7ca9c3{0%,to{transform:translate(0) scale(1);opacity:.6}50%{transform:translate(100px,-100px) scale(.5);opacity:0}}.login-card[data-v-3b7ca9c3]{width:100%;max-width:440px;padding:48px 40px;background:var(--glass-bg-card);-webkit-backdrop-filter:blur(var(--glass-blur-heavy));backdrop-filter:blur(var(--glass-blur-heavy));border:1px solid var(--glass-border);border-radius:16px;box-shadow:var(--glass-shadow),var(--glass-inner-glow);position:relative;z-index:1;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.login-header[data-v-3b7ca9c3]{text-align:center;margin-bottom:32px}.logo-icon[data-v-3b7ca9c3]{display:inline-block;margin-bottom:20px}.logo-container[data-v-3b7ca9c3]{display:flex;justify-content:center;margin-bottom:20px}.diablo-logo[data-v-3b7ca9c3]{position:relative;width:80px;height:80px;display:flex;align-items:center;justify-content:center}.logo-core[data-v-3b7ca9c3]{position:absolute;width:20px;height:20px;background:var(--diablo-primary);border-radius:50%;box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80;animation:core-pulse-3b7ca9c3 2s infinite ease-in-out}.logo-ring[data-v-3b7ca9c3]{position:absolute;width:50px;height:50px;border:2px solid var(--diablo-accent);border-radius:50%;box-shadow:0 0 20px #ff95004d,inset 0 0 20px #ff95001a;animation:ring-rotate-3b7ca9c3 8s infinite linear}.logo-particles[data-v-3b7ca9c3]{position:absolute;width:100%;height:100%}.logo-particle[data-v-3b7ca9c3]{position:absolute;top:50%;left:50%;width:6px;height:6px;background:var(--diablo-primary);border-radius:50%;opacity:.8;transform-origin:center;animation:particle-orbit-3b7ca9c3 4s infinite ease-in-out;animation-delay:var(--delay)}@keyframes core-pulse-3b7ca9c3{0%,to{transform:scale(1);box-shadow:0 0 30px var(--diablo-primary),0 0 60px #0a84ff80}50%{transform:scale(1.2);box-shadow:0 0 40px var(--diablo-primary),0 0 80px #0a84ffcc}}@keyframes ring-rotate-3b7ca9c3{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes particle-orbit-3b7ca9c3{0%,to{transform:translate(-50%,-50%) rotate(var(--angle)) translate(30px);opacity:.8}50%{transform:translate(-50%,-50%) rotate(var(--angle)) translate(40px);opacity:.4}}.login-title[data-v-3b7ca9c3]{margin-bottom:8px;font-size:32px}.subtitle[data-v-3b7ca9c3]{font-family:var(--diablo-font-family-ui);font-size:12px;color:var(--diablo-text-muted);letter-spacing:4px;text-transform:uppercase}.diablo-gold-line[data-v-3b7ca9c3]{margin:24px 0;width:100%;height:1px;background:linear-gradient(90deg,transparent,var(--diablo-accent),transparent);opacity:.5}.language-selector[data-v-3b7ca9c3]{margin-bottom:24px}.login-form[data-v-3b7ca9c3]{margin-top:32px}.form-group[data-v-3b7ca9c3]{margin-bottom:20px}.login-btn[data-v-3b7ca9c3]{width:100%;margin-top:24px;font-size:16px;letter-spacing:3px}.loading-text[data-v-3b7ca9c3]{display:flex;align-items:center;justify-content:center;gap:10px}.form-footer[data-v-3b7ca9c3]{display:flex;justify-content:center;align-items:center;margin-top:20px;font-size:14px}.remember-me[data-v-3b7ca9c3]{display:flex;align-items:center;gap:8px;color:var(--diablo-text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.remember-me input[data-v-3b7ca9c3]{cursor:pointer}.login-footer[data-v-3b7ca9c3]{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:32px;padding-top:24px;border-top:1px solid rgba(255,255,255,.1);font-size:12px;color:var(--diablo-text-muted)}.footer-divider[data-v-3b7ca9c3]{color:var(--diablo-accent);width:24px;height:24px;display:flex;align-items:center;justify-content:center}.footer-divider svg[data-v-3b7ca9c3]{width:100%;height:100%;stroke:var(--diablo-accent)}.fire-effect[data-v-3b7ca9c3]{position:absolute;bottom:0;left:50%;transform:translate(-50%);display:flex;gap:4px;pointer-events:none}.flame[data-v-3b7ca9c3]{width:3px;height:60px;background:linear-gradient(to top,var(--diablo-fire),transparent);border-radius:50%/60% 60% 40% 40%;animation:flame-dance-3b7ca9c3 2s infinite ease-in-out;opacity:.6}@keyframes flame-dance-3b7ca9c3{0%,to{height:40px;opacity:.4}50%{height:80px;opacity:.8}}@media (max-width: 480px){.login-card[data-v-3b7ca9c3]{padding:32px 24px}.login-title[data-v-3b7ca9c3]{font-size:24px}.diablo-logo[data-v-3b7ca9c3]{width:60px;height:60px}.logo-ring[data-v-3b7ca9c3]{width:40px;height:40px}}.login-card{background:var(--glass-bg-card)!important;border-color:var(--glass-border)!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important}.language-select{background:var(--diablo-bg-input)!important;color:var(--diablo-text)!important;border-color:var(--diablo-border)!important}.language-select option{background:var(--diablo-bg-card)!important;color:var(--diablo-text)!important}.theme-light .login-card{background:var(--glass-bg-card)!important;border-color:var(--glass-border)!important;-webkit-backdrop-filter:blur(var(--glass-blur-heavy))!important;backdrop-filter:blur(var(--glass-blur-heavy))!important}.theme-light .language-select{background:#f5f7fa!important;color:#333!important;border-color:#e0e0e0!important}.theme-light .language-select option{background:#fff!important;color:#333!important}
@@ -0,0 +1 @@
1
+ import{f as e,o as l,n as a,y as t,A as i,u as o,p as n,M as s,H as d,E as r,N as c,F as u,L as v,B as h,C as m,G as p,z as f,W as y,r as w,c as b,X as k,t as g}from"./vue-vendor-BaBirIg_.js";import{a as x,u as C}from"./index-npdYRXyk.js";import{t as M,U as B,V as F,W as V,X as U}from"./api-C3Fyph-A.js";import{_ as S}from"./_plugin-vue_export-helper-BCo6x5W8.js";const z={class:"media-manage"},T={class:"page-header"},$={class:"page-title"},L={class:"header-actions"},N={class:"view-mode-toggle"},_=["title"],D=["title"],H=["disabled","title"],A={class:"drop-zone-sub"},P={class:"drop-zone-actions"},R={key:1,class:"upload-inline-progress"},j={class:"upload-progress-track"},W={class:"filter-section"},q={class:"search-bar"},I=["placeholder"],E={class:"search-stats"},X={key:1,class:"batch-toolbar"},G={class:"batch-toolbar-label"},K={class:"batch-actions"},O={class:"file-list-container"},J={key:0,class:"file-table-scroll"},Q={class:"file-table"},Y={class:"col-checkbox"},Z={class:"col-index"},ee={class:"col-name"},le={class:"col-duration"},ae={class:"col-size"},te={class:"col-actions"},ie={key:0},oe={colspan:"6",class:"empty-cell"},ne={class:"empty-state"},se=["onClick"],de=["value"],re={class:"col-index"},ce={class:"col-name"},ue={class:"file-name-cell"},ve={class:"file-name-text"},he={key:0,class:"playing-badge"},me={class:"col-duration"},pe={class:"col-size"},fe={class:"action-btn-group"},ye=["onClick","title"],we={key:0,viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},be={key:1,viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},ke=["href","download","title"],ge=["onClick","title"],xe={key:1,class:"card-scroll"},Ce={key:0,class:"empty-state"},Me={class:"file-card-grid"},Be=["onClick"],Fe={class:"file-card-header"},Ve=["onClick","title"],Ue={key:0,viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},Se={key:1,viewBox:"0 0 24 24",fill:"currentColor",width:"14",height:"14"},ze=["href","download","title"],Te=["onClick","title"],$e={class:"file-card-name"},Le={class:"file-card-meta"},Ne={class:"meta-duration"},_e={class:"meta-size"},De={key:2,class:"audio-player"},He={class:"player-info"},Ae={class:"player-name"},Pe=["src"],Re=["title"],je={class:"dialog-header"},We={class:"modal-body"},qe={class:"modal-footer"},Ie={class:"dialog-header"},Ee={class:"tts-body"},Xe={class:"tts-field"},Ge={class:"tts-label"},Ke=["placeholder"],Oe={class:"tts-row"},Je={class:"tts-field tts-field-half"},Qe={class:"tts-label"},Ye=["value"],Ze={class:"tts-field tts-field-half"},el={class:"tts-label"},ll={value:35},al={value:50},tl={value:65},il={class:"tts-field"},ol={class:"tts-label"},nl=["placeholder"],sl={class:"tts-char-count"},dl={class:"modal-footer"},rl=["disabled"],cl={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14",class:"spin-icon"},ul={class:"dialog-header"},vl={class:"radio-body"},hl={class:"radio-field"},ml={class:"radio-label"},pl=["placeholder"],fl={class:"radio-field"},yl={class:"radio-label"},wl={class:"radio-field"},bl={class:"radio-label"},kl={class:"radio-presets"},gl=["placeholder"],xl={class:"modal-footer"},Cl=["disabled"],Ml={key:0,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14",class:"spin-icon"},Bl=S(e({__name:"index",setup(e){var S,Bl;const Fl=x(),{t:Vl}=C(),Ul=w(!1),Sl=w(!1),zl=w(0),Tl=w(""),$l=w([]),Ll=w([]),Nl=w(!1),_l=window.innerWidth<=768||"undefined"!=typeof window&&!!(null==(Bl=null==(S=window.Capacitor)?void 0:S.isNativePlatform)?void 0:Bl.call(S)),Dl=w(_l?"card":"list"),Hl=w(""),Al=w(!1),Pl=w(null),Rl=w(null),jl=w(null),Wl=w(null),ql=w(!1),Il=w(!1),El=w(""),Xl=w("xiaoyan"),Gl=w(50),Kl=w(""),Ol=w(!1),Jl=w(!1),Ql=w(""),Yl=w(""),Zl=w(1800),ea=w(!1),la=[{value:"xiaoxiao",label:"晓晓 - 女声,自然亲切"},{value:"yunxi",label:"云希 - 男声,年轻活力"},{value:"yunjian",label:"云健 - 男声,成熟稳重"},{value:"xiaoyi",label:"晓伊 - 女声,温柔甜美"},{value:"yunxia",label:"云夏 - 男童声"},{value:"xiaochen",label:"晓辰 - 女声,新闻播报风格"},{value:"xiaohan",label:"晓涵 - 女声,温暖"},{value:"xiaomeng",label:"晓梦 - 女声,活泼"},{value:"xiaomo",label:"晓墨 - 女声,知性"},{value:"xiaoqiu",label:"晓秋 - 女声,温和"},{value:"xiaorui",label:"晓睿 - 女童声"},{value:"xiaoshuang",label:"晓双 - 女童声"},{value:"xiaoxuan",label:"晓萱 - 女声"},{value:"xiaoyan",label:"晓妍 - 女声"},{value:"xiaoyou",label:"悠悠 - 女童声"},{value:"yunfeng",label:"云枫 - 男声"},{value:"yunhao",label:"云皓 - 男声"},{value:"yunxiang",label:"云翔 - 男声"},{value:"yunyang",label:"云扬 - 男声"}],aa=w({show:!1,text:"",type:"success"});function ta(e,l="success"){aa.value={show:!0,text:e,type:l},setTimeout(()=>{aa.value.show=!1},3e3)}const ia=b(()=>{if(!Hl.value.trim())return $l.value;const e=Hl.value.trim().toLowerCase();return $l.value.filter(l=>(l.filename||l.name||"").toLowerCase().includes(e))});async function oa(){Ul.value=!0;try{const e=await M();e.res&&($l.value=e.filelist||[])}catch(e){console.error("获取文件列表失败:",e)}finally{Ul.value=!1}}function na(){const e=Wl.value||document.getElementById("media-file-input");e&&(e.value="",e.click())}async function sa(e){var l;const a=e.target;(null==(l=a.files)?void 0:l.length)&&(await ca(Array.from(a.files)),a.value="")}async function da(e){var l;Al.value=!1;const a=null==(l=e.dataTransfer)?void 0:l.files;if(!(null==a?void 0:a.length))return;const t=Array.from(a).filter(e=>{var l;return"mp3"===(null==(l=e.name.split(".").pop())?void 0:l.toLowerCase())});0!==t.length?await ca(t):ta(Vl("media.onlyMp3"),"error")}function ra(e){return new Promise(l=>setTimeout(l,e))}async function ca(e){const l=[...e].sort((e,l)=>e.name.localeCompare(l.name));Sl.value=!0,zl.value=0,Tl.value="",await k();const a=l.length;let t=0,i=0;for(let o=0;o<l.length;o++){const e=l[o];if(e.size/1024/1024>40)ta(`${e.name}: ${Vl("media.fileTooLarge")}`,"error"),i++,zl.value=Math.round(i/a*100),await k();else{Tl.value=`(${i+1}/${a}) ${e.name}`,zl.value=Math.round(i/a*100),await k();try{const l=await B(e);l.res?t++:ta(`${e.name}: ${l.info||Vl("media.uploadFailed")}`,"error")}catch{ta(`${e.name}: ${Vl("media.uploadFailed")}`,"error")}i++,zl.value=Math.round(i/a*100),await k(),o<l.length-1&&await ra(500)}}zl.value=100,Tl.value=Vl("media.uploadDone")||"完成",await k(),t>0&&(ta(Vl("media.uploadSuccess",{count:t})),await oa()),setTimeout(()=>{Sl.value=!1,Tl.value=""},800)}async function ua(e){if(confirm(Vl("media.deleteSingleConfirm")+` ${e.filename||e.name}?`))try{const l=await F({id:e.id});l.res?(ta(Vl("media.deleteSuccess")),Pl.value===e.id&&fa(),await oa()):ta(l.info||Vl("media.deleteFailed"),"error")}catch{ta(Vl("media.deleteFailed"),"error")}}async function va(){try{const e=[...Ll.value];let l=0;for(const a of e)try{(await F({id:a})).res&&l++}catch{}ta(Vl("media.batchDeleteSuccess",{count:l})),Pl.value&&e.includes(Pl.value)&&fa(),Ll.value=[],Nl.value=!1,ql.value=!1,await oa()}catch{ta(Vl("media.deleteFailed"),"error")}}function ha(){Ll.value=Nl.value?ia.value.map(e=>e.id):[]}function ma(e){const l=Ll.value.indexOf(e);l>-1?Ll.value.splice(l,1):Ll.value.push(e)}function pa(e){Pl.value!==e.id?(Rl.value=e,Pl.value=e.id):fa()}function fa(){Rl.value=null,Pl.value=null}function ya(){Pl.value=null}function wa(e){const l=Number(e)||0;if(l<=0)return"--:--";return`${Math.floor(l/60)}:${String(l%60).padStart(2,"0")}`}function ba(e){const l=Number(e)||0;return l<=0?"-":l<1024?l+"B":l<1048576?(l/1024).toFixed(1)+"KB":(l/1024/1024).toFixed(1)+"MB"}async function ka(){if(!Kl.value.trim()||Kl.value.trim().length<3)ta(Vl("media.ttsTextTooShort")||"Text too short","error");else{Ol.value=!0;try{const e=await V({text:Kl.value,fileName:El.value||void 0,voice:Xl.value,speed:Gl.value,vol:100});e.res?(ta(Vl("media.ttsSuccess")||"TTS file created"),Il.value=!1,Kl.value="",El.value="",await oa()):ta(e.info||Vl("media.ttsFailed")||"TTS failed","error")}catch{ta(Vl("media.ttsFailed")||"TTS failed","error")}finally{Ol.value=!1}}}async function ga(){if(Ql.value.trim())if(Yl.value.trim())if(Yl.value.startsWith("http")&&Yl.value.toLowerCase().endsWith(".mp3"))if(!Zl.value||Zl.value<1)ta(Vl("media.radioDurationRequired"),"error");else{ea.value=!0;try{const e=await U({name:Ql.value.trim(),url:Yl.value.trim(),len:Zl.value});e.res?(ta(Vl("media.radioAddSuccess")),Jl.value=!1,Ql.value="",Yl.value="",Zl.value=1800,await oa()):ta(e.msg||Vl("media.radioAddFailed"),"error")}catch{ta(Vl("media.radioAddFailed"),"error")}finally{ea.value=!1}}else ta(Vl("media.radioUrlInvalid"),"error");else ta(Vl("media.radioUrlRequired"),"error");else ta(Vl("media.radioNameRequired"),"error")}return l(()=>{oa()}),(e,l)=>(g(),a("div",z,[t("div",T,[t("h2",$,i(o(Vl)("media.title")),1),t("div",L,[t("div",N,[t("button",{class:n(["view-mode-btn",{active:"list"===Dl.value}]),onClick:l[0]||(l[0]=e=>Dl.value="list"),title:o(Vl)("devices.listView")},[...l[36]||(l[36]=[s('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ff8fe5a0><line x1="8" y1="6" x2="21" y2="6" data-v-ff8fe5a0></line><line x1="8" y1="12" x2="21" y2="12" data-v-ff8fe5a0></line><line x1="8" y1="18" x2="21" y2="18" data-v-ff8fe5a0></line><line x1="3" y1="6" x2="3.01" y2="6" data-v-ff8fe5a0></line><line x1="3" y1="12" x2="3.01" y2="12" data-v-ff8fe5a0></line><line x1="3" y1="18" x2="3.01" y2="18" data-v-ff8fe5a0></line></svg>',1)])],10,_),t("button",{class:n(["view-mode-btn",{active:"card"===Dl.value}]),onClick:l[1]||(l[1]=e=>Dl.value="card"),title:o(Vl)("devices.cardView")},[...l[37]||(l[37]=[s('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="18" height="18" data-v-ff8fe5a0><rect x="3" y="3" width="7" height="7" data-v-ff8fe5a0></rect><rect x="14" y="3" width="7" height="7" data-v-ff8fe5a0></rect><rect x="3" y="14" width="7" height="7" data-v-ff8fe5a0></rect><rect x="14" y="14" width="7" height="7" data-v-ff8fe5a0></rect></svg>',1)])],10,D)]),t("button",{class:"refresh-btn",onClick:oa,disabled:Ul.value,title:o(Vl)("common.refresh")},[...l[38]||(l[38]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"18",height:"18"},[t("polyline",{points:"23 4 23 10 17 10"}),t("polyline",{points:"1 20 1 14 7 14"}),t("path",{d:"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15"})],-1)])],8,H),o(Fl).canUploadFile?(g(),a("button",{key:0,class:"add-btn",onClick:na},[l[39]||(l[39]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),t("polyline",{points:"17 8 12 3 7 8"}),t("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)),d(" "+i(o(Vl)("media.upload")),1)])):r("",!0),o(Fl).canUploadFile?(g(),a("button",{key:1,class:"tts-btn",onClick:l[2]||(l[2]=e=>Il.value=!0)},[l[40]||(l[40]=s('<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" data-v-ff8fe5a0><path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z" data-v-ff8fe5a0></path><path d="M19 10v2a7 7 0 0 1-14 0v-2" data-v-ff8fe5a0></path><line x1="12" y1="19" x2="12" y2="23" data-v-ff8fe5a0></line><line x1="8" y1="23" x2="16" y2="23" data-v-ff8fe5a0></line></svg>',1)),d(" "+i(o(Vl)("media.tts")),1)])):r("",!0),o(Fl).canUploadFile?(g(),a("button",{key:2,class:"radio-btn",onClick:l[3]||(l[3]=e=>Jl.value=!0)},[l[41]||(l[41]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("circle",{cx:"12",cy:"12",r:"2"}),t("path",{d:"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.83a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14"})],-1)),d(" "+i(o(Vl)("media.radio")),1)])):r("",!0),o(Fl).canUploadFile?(g(),a("input",{key:3,id:"media-file-input",ref_key:"fileInputRef",ref:Wl,type:"file",accept:".mp3,.MP3",multiple:"",onChange:sa,class:"hidden-input"},null,544)):r("",!0)])]),o(Fl).canUploadFile?(g(),a("div",{key:0,class:n(["upload-drop-zone",{"drop-active":Al.value,uploading:Sl.value}]),onDragover:l[4]||(l[4]=c(e=>Al.value=!0,["prevent"])),onDragleave:l[5]||(l[5]=c(e=>Al.value=!1,["prevent"])),onDrop:c(da,["prevent"])},[Sl.value?(g(),a("div",R,[l[43]||(l[43]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"24",height:"24",class:"spin-icon"},[t("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"})],-1)),t("span",null,i(o(Vl)("media.uploading"))+" "+i(zl.value)+"% ("+i(Tl.value)+")",1),t("div",j,[t("div",{class:"upload-progress-fill",style:v({width:zl.value+"%"})},null,4)])])):(g(),a(u,{key:0},[l[42]||(l[42]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",width:"32",height:"32"},[t("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),t("polyline",{points:"17 8 12 3 7 8"}),t("line",{x1:"12",y1:"3",x2:"12",y2:"15"})],-1)),t("span",null,i(o(Vl)("media.dropHint")),1),t("span",A,i(o(Vl)("media.dropSub")),1),t("div",P,[t("button",{class:"drop-zone-btn",onClick:na},i(o(Vl)("media.selectFiles")),1)])],64))],34)):r("",!0),t("div",W,[t("div",q,[l[44]||(l[44]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[t("circle",{cx:"11",cy:"11",r:"8"}),t("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})],-1)),h(t("input",{"onUpdate:modelValue":l[6]||(l[6]=e=>Hl.value=e),type:"text",class:"search-input form-input",placeholder:o(Vl)("common.search")+"..."},null,8,I),[[m,Hl.value]]),t("span",E,i(ia.value.length)+" / "+i($l.value.length),1)])]),Ll.value.length>0&&o(Fl).canUploadFile?(g(),a("div",X,[t("span",G,i(o(Vl)("media.selectedCount",{count:Ll.value.length})),1),t("div",K,[t("button",{onClick:l[7]||(l[7]=e=>ql.value=!0),class:"action-btn action-btn-danger"},[l[45]||(l[45]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},[t("polyline",{points:"3 6 5 6 21 6"}),t("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)),d(" "+i(o(Vl)("media.batchDelete")),1)])])])):r("",!0),t("div",O,["list"===Dl.value?(g(),a("div",J,[t("table",Q,[t("thead",null,[t("tr",null,[t("th",Y,[h(t("input",{type:"checkbox","onUpdate:modelValue":l[8]||(l[8]=e=>Nl.value=e),onChange:ha},null,544),[[p,Nl.value]])]),t("th",Z,i(o(Vl)("common.index")),1),t("th",ee,i(o(Vl)("media.fileName")),1),t("th",le,i(o(Vl)("media.duration")),1),t("th",ae,i(o(Vl)("media.fileSize")),1),t("th",te,i(o(Vl)("common.actions")),1)])]),t("tbody",null,[0===ia.value.length?(g(),a("tr",ie,[t("td",oe,[t("div",ne,[t("p",null,i(o(Vl)("media.noFiles")),1)])])])):r("",!0),(g(!0),a(u,null,f(ia.value,(e,s)=>(g(),a("tr",{key:e.id,class:n({"row-selected":Ll.value.includes(e.id),"row-playing":Pl.value===e.id}),onClick:l=>ma(e.id)},[t("td",{class:"col-checkbox",onClick:l[10]||(l[10]=c(()=>{},["stop"]))},[h(t("input",{type:"checkbox","onUpdate:modelValue":l[9]||(l[9]=e=>Ll.value=e),value:e.id},null,8,de),[[p,Ll.value]])]),t("td",re,i(s+1),1),t("td",ce,[t("div",ue,[l[47]||(l[47]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16",class:"file-icon"},[t("path",{d:"M9 18V5l12-2v13"}),t("circle",{cx:"6",cy:"18",r:"3"}),t("circle",{cx:"18",cy:"16",r:"3"})],-1)),t("span",ve,i(e.filename||e.name||`文件${e.id}`),1),Pl.value===e.id?(g(),a("span",he,[l[46]||(l[46]=t("span",{class:"playing-dot"},null,-1)),d(i(o(Vl)("devices.playing")),1)])):r("",!0)])]),t("td",me,i(wa(e.len||e.duration)),1),t("td",pe,i(e.sizeStr||ba(e.filesize||e.size)),1),t("td",{class:"col-actions",onClick:l[11]||(l[11]=c(()=>{},["stop"]))},[t("div",fe,[t("button",{onClick:l=>pa(e),class:"row-action-btn",title:o(Vl)("media.play")},[Pl.value!==e.id?(g(),a("svg",we,[...l[48]||(l[48]=[t("polygon",{points:"5 3 19 12 5 21"},null,-1)])])):(g(),a("svg",be,[...l[49]||(l[49]=[t("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"},null,-1)])]))],8,ye),t("a",{href:e.url,download:e.filename||e.name,class:"row-action-btn",title:o(Vl)("media.download"),target:"_blank"},[...l[50]||(l[50]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[t("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),t("polyline",{points:"7 10 12 15 17 10"}),t("line",{x1:"12",y1:"15",x2:"12",y2:"3"})],-1)])],8,ke),o(Fl).canUploadFile?(g(),a("button",{key:0,onClick:l=>ua(e),class:"row-action-btn btn-danger",title:o(Vl)("common.delete")},[...l[51]||(l[51]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[t("polyline",{points:"3 6 5 6 21 6"}),t("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,ge)):r("",!0)])])],10,se))),128))])])])):r("",!0),"card"===Dl.value?(g(),a("div",xe,[0===ia.value.length?(g(),a("div",Ce,[t("p",null,i(o(Vl)("media.noFiles")),1)])):r("",!0),t("div",Me,[(g(!0),a(u,null,f(ia.value,e=>(g(),a("div",{key:e.id,class:n(["file-card",{"card-selected":Ll.value.includes(e.id),"card-playing":Pl.value===e.id}]),onClick:l=>ma(e.id)},[t("div",Fe,[l[56]||(l[56]=t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.5",width:"24",height:"24",class:"file-icon-large"},[t("path",{d:"M9 18V5l12-2v13"}),t("circle",{cx:"6",cy:"18",r:"3"}),t("circle",{cx:"18",cy:"16",r:"3"})],-1)),t("div",{class:"file-card-actions",onClick:l[12]||(l[12]=c(()=>{},["stop"]))},[t("button",{onClick:l=>pa(e),class:"row-action-btn",title:o(Vl)("media.play")},[Pl.value!==e.id?(g(),a("svg",Ue,[...l[52]||(l[52]=[t("polygon",{points:"5 3 19 12 5 21"},null,-1)])])):(g(),a("svg",Se,[...l[53]||(l[53]=[t("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"},null,-1)])]))],8,Ve),t("a",{href:e.url,download:e.filename||e.name,class:"row-action-btn",title:o(Vl)("media.download"),target:"_blank"},[...l[54]||(l[54]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[t("path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"}),t("polyline",{points:"7 10 12 15 17 10"}),t("line",{x1:"12",y1:"15",x2:"12",y2:"3"})],-1)])],8,ze),o(Fl).canUploadFile?(g(),a("button",{key:0,onClick:l=>ua(e),class:"row-action-btn btn-danger",title:o(Vl)("common.delete")},[...l[55]||(l[55]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"14",height:"14"},[t("polyline",{points:"3 6 5 6 21 6"}),t("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})],-1)])],8,Te)):r("",!0)])]),t("div",$e,i(e.filename||e.name||`文件${e.id}`),1),t("div",Le,[t("span",Ne,i(wa(e.len||e.duration)),1),t("span",_e,i(e.sizeStr||ba(e.filesize||e.size)),1)])],10,Be))),128))])])):r("",!0)]),Rl.value?(g(),a("div",De,[t("div",He,[l[57]||(l[57]=t("span",{class:"playing-dot"},null,-1)),t("span",Ae,i(Rl.value.filename||Rl.value.name),1)]),t("audio",{ref_key:"audioRef",ref:jl,src:Rl.value.url,controls:"",class:"player-controls",onEnded:ya},null,40,Pe),t("button",{class:"player-close",onClick:fa,title:o(Vl)("common.close")},[...l[58]||(l[58]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"16",height:"16"},[t("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])],8,Re)])):r("",!0),ql.value?(g(),a("div",{key:3,class:"modal-overlay",onClick:l[16]||(l[16]=e=>ql.value=!1)},[t("div",{class:"modal-content",onClick:l[15]||(l[15]=c(()=>{},["stop"]))},[t("div",je,[t("h3",null,i(o(Vl)("common.deleteConfirm")),1),t("button",{class:"close-btn",onClick:l[13]||(l[13]=e=>ql.value=!1)},[...l[59]||(l[59]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[t("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),t("div",We,[t("p",null,i(o(Vl)("media.selectedCount",{count:Ll.value.length})),1),t("p",null,i(o(Vl)("media.deleteConfirm")),1)]),t("div",qe,[t("button",{onClick:l[14]||(l[14]=e=>ql.value=!1),class:"btn btn-cancel"},i(o(Vl)("common.cancel")),1),t("button",{onClick:va,class:"btn btn-danger"},i(o(Vl)("common.confirm")),1)])])])):r("",!0),aa.value.show?(g(),a("div",{key:4,class:n(["message-toast",aa.value.type])},i(aa.value.text),3)):r("",!0),Il.value?(g(),a("div",{key:5,class:"modal-overlay",onClick:l[24]||(l[24]=e=>Il.value=!1)},[t("div",{class:"modal-content tts-modal",onClick:l[23]||(l[23]=c(()=>{},["stop"]))},[t("div",Ie,[t("h3",null,i(o(Vl)("media.tts")),1),t("button",{class:"close-btn",onClick:l[17]||(l[17]=e=>Il.value=!1)},[...l[60]||(l[60]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[t("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),t("div",Ee,[t("div",Xe,[t("label",Ge,i(o(Vl)("media.ttsFileName")),1),h(t("input",{"onUpdate:modelValue":l[18]||(l[18]=e=>El.value=e),class:"form-input tts-input",placeholder:o(Vl)("media.ttsFileNamePlaceholder")},null,8,Ke),[[m,El.value]])]),t("div",Oe,[t("div",Je,[t("label",Qe,i(o(Vl)("media.ttsVoice")),1),h(t("select",{"onUpdate:modelValue":l[19]||(l[19]=e=>Xl.value=e),class:"form-input tts-select"},[(g(),a(u,null,f(la,e=>t("option",{key:e.value,value:e.value},i(e.label),9,Ye)),64))],512),[[y,Xl.value]])]),t("div",Ze,[t("label",el,i(o(Vl)("media.ttsSpeed")),1),h(t("select",{"onUpdate:modelValue":l[20]||(l[20]=e=>Gl.value=e),class:"form-input tts-select"},[t("option",ll,i(o(Vl)("media.ttsSpeedSlow")),1),t("option",al,i(o(Vl)("media.ttsSpeedMedium")),1),t("option",tl,i(o(Vl)("media.ttsSpeedFast")),1)],512),[[y,Gl.value]])])]),t("div",il,[t("label",ol,i(o(Vl)("media.ttsText")),1),h(t("textarea",{"onUpdate:modelValue":l[21]||(l[21]=e=>Kl.value=e),class:"form-input tts-textarea",placeholder:o(Vl)("media.ttsTextPlaceholder"),maxlength:"2000",rows:"10"},null,8,nl),[[m,Kl.value]]),t("span",sl,i(Kl.value.length)+" / 2000",1)])]),t("div",dl,[t("button",{onClick:l[22]||(l[22]=e=>Il.value=!1),class:"btn btn-cancel"},i(o(Vl)("common.cancel")),1),t("button",{onClick:ka,class:"btn btn-primary",disabled:Ol.value||!Kl.value.trim()},[Ol.value?(g(),a("svg",cl,[...l[61]||(l[61]=[t("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"},null,-1)])])):r("",!0),d(" "+i(o(Vl)("common.confirm")),1)],8,rl)])])])):r("",!0),Jl.value?(g(),a("div",{key:6,class:"modal-overlay",onClick:l[35]||(l[35]=e=>Jl.value=!1)},[t("div",{class:"modal-content radio-modal",onClick:l[34]||(l[34]=c(()=>{},["stop"]))},[t("div",ul,[t("h3",null,i(o(Vl)("media.addRadio")),1),t("button",{class:"close-btn",onClick:l[25]||(l[25]=e=>Jl.value=!1)},[...l[62]||(l[62]=[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2",width:"20",height:"20"},[t("path",{d:"M18 6L6 18M6 6l12 12"})],-1)])])]),t("div",vl,[t("div",hl,[t("label",ml,i(o(Vl)("media.radioName")),1),h(t("input",{"onUpdate:modelValue":l[26]||(l[26]=e=>Ql.value=e),class:"form-input radio-input",placeholder:o(Vl)("media.radioNamePlaceholder"),maxlength:"30"},null,8,pl),[[m,Ql.value]])]),t("div",fl,[t("label",yl,i(o(Vl)("media.radioUrl")),1),h(t("input",{"onUpdate:modelValue":l[27]||(l[27]=e=>Yl.value=e),class:"form-input radio-input",placeholder:"http://xxx.mp3"},null,512),[[m,Yl.value]])]),t("div",wl,[t("label",bl,i(o(Vl)("media.radioDuration")),1),t("div",kl,[t("button",{class:"preset-btn",onClick:l[28]||(l[28]=e=>Zl.value=600)},i(o(Vl)("media.radio10min")),1),t("button",{class:"preset-btn",onClick:l[29]||(l[29]=e=>Zl.value=1200)},i(o(Vl)("media.radio20min")),1),t("button",{class:"preset-btn",onClick:l[30]||(l[30]=e=>Zl.value=1800)},i(o(Vl)("media.radio30min")),1),t("button",{class:"preset-btn",onClick:l[31]||(l[31]=e=>Zl.value=3600)},i(o(Vl)("media.radio1hour")),1)]),h(t("input",{"onUpdate:modelValue":l[32]||(l[32]=e=>Zl.value=e),type:"number",class:"form-input radio-input",placeholder:o(Vl)("media.radioDurationPlaceholder")},null,8,gl),[[m,Zl.value,void 0,{number:!0}]])])]),t("div",xl,[t("button",{onClick:l[33]||(l[33]=e=>Jl.value=!1),class:"btn btn-cancel"},i(o(Vl)("common.cancel")),1),t("button",{onClick:ga,class:"btn btn-primary",disabled:ea.value},[ea.value?(g(),a("svg",Ml,[...l[63]||(l[63]=[t("path",{d:"M21 12a9 9 0 1 1-6.219-8.56"},null,-1)])])):r("",!0),d(" "+i(o(Vl)("common.add")),1)],8,Cl)])])])):r("",!0)]))}}),[["__scopeId","data-v-ff8fe5a0"]]);export{Bl as default};
@@ -0,0 +1 @@
1
+ .test-page[data-v-f5ea5c29]{padding:40px;background:#0a0a0f;min-height:100vh}h1[data-v-f5ea5c29]{color:#e8e8e8;margin-bottom:20px}p[data-v-f5ea5c29]{color:#889;margin-bottom:20px}button[data-v-f5ea5c29]{padding:12px 24px;background:#0a84ff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:16px;margin-right:10px}.links[data-v-f5ea5c29]{margin-top:20px}.link-btn[data-v-f5ea5c29]{background:#ff9500}
@@ -0,0 +1 @@
1
+ import{f as o,n as l,y as s,A as a,u as e,r as n,c as t,J as u,t as p}from"./vue-vendor-BaBirIg_.js";import{u as c}from"./index-npdYRXyk.js";import{_ as i}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./api-C3Fyph-A.js";const m={class:"test-page"},r=i(o({__name:"test",setup(o){const i=u(),{t:r,locale:v}=c(),f=n(0),g=t(()=>v.value);function d(){f.value++,console.log("测试点击:",f.value),console.log("i18n 测试:",r("common.appName")),console.log("当前语言:",v.value)}function _(){i.push("/login")}return(o,n)=>(p(),l("div",m,[n[0]||(n[0]=s("h1",null,"测试页面 - Test Page",-1)),n[1]||(n[1]=s("p",null,"如果你能看到这个页面,说明 Vue 基本功能正常",-1)),s("p",null,"当前语言: "+a(g.value),1),s("p",null,"测试翻译: "+a(e(r)("common.appName")),1),s("button",{onClick:d},"点击测试 Click Test"),s("p",null,"点击次数: "+a(f.value),1),s("div",{class:"links"},[s("button",{onClick:_,class:"link-btn"},"前往登录页面 Go to Login")])]))}}),[["__scopeId","data-v-f5ea5c29"]]);export{r as default};
@@ -0,0 +1 @@
1
+ import{k as e,r as n,c as t}from"./vue-vendor-BaBirIg_.js";function r(){const r=n([]),s=n(!1),a=n(""),c=t(()=>{var e;return!!(null==(e=window.electronAPI)?void 0:e.isElectron)}),i=n([]);let u=!1;const o=new Map;function l(e){i.value.push(e),i.value.length>500&&(i.value=i.value.slice(-300))}function v(e){const n=r.value.findIndex(n=>n.seed===e.seed);n>=0?r.value[n]=e:r.value.push(e)}function d(e){if(l(e),"recv"===e.type||"info"===e.type){const n=e.msg.match(/←\s*(\d+\.\d+\.\d+\.\d+)/);n&&o.set(n[1],Date.now())}}async function f(){if(!c.value)return;if(u)return;const e=window.electronAPI;try{await e.udpStartListener(),e.onDeviceFound(v),e.onUdpLog(d),u=!0,l({type:"info",msg:"[系统] UDP 监听已启动"})}catch(n){a.value=n.message||"启动UDP监听失败",l({type:"error",msg:`[错误] ${n.message}`})}}async function w(){if(!c.value||!u)return;const e=window.electronAPI;try{e.removeDeviceFoundListener(),e.removeDeviceInfoListener(),e.removeUdpLogListener(),await e.udpStopListener(),u=!1}catch{}}return e(()=>{w()}),{scannedDevices:r,isScanning:s,scanError:a,isElectron:c,udpLogs:i,startScan:async function(e){if(c.value)if(!e||32===e.length&&/^[0-9a-fA-F]{32}$/.test(e)){a.value="",s.value=!0,r.value=[];try{await f();const n=window.electronAPI,t=await n.udpScan(e||"");t.success||(a.value=t.error||"扫描失败")}catch(n){a.value=n.message||"扫描失败"}finally{setTimeout(()=>{s.value=!1},5e3)}}else a.value="SEED 必须为 32 位十六进制字符";else a.value="设备扫描仅支持 Electron 桌面客户端"},testCommunication:async function(e){if(!c.value)return!1;if(!e||32!==e.length||!/^[0-9a-fA-F]{32}$/.test(e))return l({type:"error",msg:"[错误] SEED 格式不正确,需要 32 位 hex"}),!1;await f();const n=window.electronAPI,t=r.value.find(n=>n.seed===e),s=(null==t?void 0:t.ip)||"",a=Date.now();o.delete(s);const i=await n.udpScan(e);return i.success?new Promise(n=>{let t=!1;const c=setInterval(()=>{if(t)return;const u=o.get(s);if(s&&u&&u>=a)return t=!0,clearInterval(c),clearTimeout(i),l({type:"recv",msg:`[成功] 设备 ${e.substring(0,16)}... 响应正常 → IP=${s}`}),void n(!0);const v=r.value.find(n=>n.seed===e);v&&v.ip!==s&&(t=!0,clearInterval(c),clearTimeout(i),l({type:"recv",msg:`[成功] 设备 ${e.substring(0,16)}... 响应正常 → IP=${v.ip}`}),n(!0))},300),i=setTimeout(()=>{t||(t=!0,clearInterval(c),l({type:"error",msg:`[超时] 设备 ${e.substring(0,16)}... 无响应 (5秒)`}),n(!1))},5e3)}):(l({type:"error",msg:`[错误] 发送失败: ${i.error}`}),!1)},configureDevice:async function(e){if(!c.value)return!1;const n=window.electronAPI;return(await n.udpConfigure(e)).success},clearDevice:async function(){if(!c.value)return!1;const e=window.electronAPI;return(await e.udpClear()).success},setDeviceVolume:async function(e,n,t){if(!c.value)return!1;const r=window.electronAPI;return(await r.udpSetVolume(e,n,t)).success},sendAmixer:async function(e,n,t){if(!c.value)return!1;await f();const r=window.electronAPI;return(await r.udpAmixer(e,n,t)).success},getAmixerStatus:async function(e){if(!c.value)return!1;await f();const n=window.electronAPI;return(await n.udpAmixerGet(e)).success},startListener:f,stopListener:w,clearLogs:function(){i.value=[]}}}export{r as u};