From a1950872fcdca49ddef9a9fb5e109c4f5ebdffca Mon Sep 17 00:00:00 2001 From: huang <1724659546@qq.com> Date: Wed, 10 Sep 2025 19:03:41 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E5=A4=8D=E5=8F=82=E6=95=B0=E8=A7=A3?= =?UTF-8?q?=E6=9E=90bug=202.=20=E5=A2=9E=E5=8A=A0=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E8=AF=A6=E6=83=85=E7=9A=84=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yml | 2 +- frontend/dist/assets/index.0581bd6d.js | 21 - ...{index.42c8d2d4.css => index.9a05129d.css} | 2 +- frontend/dist/assets/index.9fd2dfb4.js | 21 + frontend/dist/index.html | 4 +- frontend/src/pages/FeedPlan.vue | 2 +- frontend/src/pages/FeedPlanDetail.vue | 601 ++++++++++++++++++ frontend/src/router/index.js | 8 + internal/controller/feed/feed.go | 57 +- 9 files changed, 664 insertions(+), 54 deletions(-) delete mode 100644 frontend/dist/assets/index.0581bd6d.js rename frontend/dist/assets/{index.42c8d2d4.css => index.9a05129d.css} (60%) create mode 100644 frontend/dist/assets/index.9fd2dfb4.js create mode 100644 frontend/src/pages/FeedPlanDetail.vue diff --git a/config.yml b/config.yml index dd313bf..08506c9 100644 --- a/config.yml +++ b/config.yml @@ -32,6 +32,6 @@ websocket: # 心跳配置 heartbeat: # 心跳间隔(秒) - interval: 5 + interval: 30 # 请求并发数 concurrency: 5 \ No newline at end of file diff --git a/frontend/dist/assets/index.0581bd6d.js b/frontend/dist/assets/index.0581bd6d.js deleted file mode 100644 index e1586a3..0000000 --- a/frontend/dist/assets/index.0581bd6d.js +++ /dev/null @@ -1,21 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const o of r)if(o.type==="childList")for(const l of o.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(r){const o={};return r.integrity&&(o.integrity=r.integrity),r.referrerpolicy&&(o.referrerPolicy=r.referrerpolicy),r.crossorigin==="use-credentials"?o.credentials="include":r.crossorigin==="anonymous"?o.credentials="omit":o.credentials="same-origin",o}function s(r){if(r.ep)return;r.ep=!0;const o=n(r);fetch(r.href,o)}})();/** -* @vue/shared v3.5.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Ps(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Mt=[],Fe=()=>{},Wr=()=>!1,$n=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),As=e=>e.startsWith("onUpdate:"),ue=Object.assign,Rs=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},pi=Object.prototype.hasOwnProperty,J=(e,t)=>pi.call(e,t),j=Array.isArray,It=e=>dn(e)==="[object Map]",Vn=e=>dn(e)==="[object Set]",Ys=e=>dn(e)==="[object Date]",$=e=>typeof e=="function",le=e=>typeof e=="string",ze=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",qr=e=>(se(e)||$(e))&&$(e.then)&&$(e.catch),zr=Object.prototype.toString,dn=e=>zr.call(e),hi=e=>dn(e).slice(8,-1),Gr=e=>dn(e)==="[object Object]",Ts=e=>le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Jt=Ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Bn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},gi=/-\w/g,Te=Bn(e=>e.replace(gi,t=>t.slice(1).toUpperCase())),mi=/\B([A-Z])/g,Ct=Bn(e=>e.replace(mi,"-$1").toLowerCase()),Un=Bn(e=>e.charAt(0).toUpperCase()+e.slice(1)),es=Bn(e=>e?`on${Un(e)}`:""),pt=(e,t)=>!Object.is(e,t),xn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},An=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Qs;const pn=()=>Qs||(Qs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Os(e){if(j(e)){const t={};for(let n=0;n{if(n){const s=n.split(vi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function St(e){let t="";if(le(e))t=e;else if(j(e))for(let n=0;nKn(n,t))}const Qr=e=>!!(e&&e.__v_isRef===!0),X=e=>le(e)?e:e==null?"":j(e)||se(e)&&(e.toString===zr||!$(e.toString))?Qr(e)?X(e.value):JSON.stringify(e,Xr,2):String(e),Xr=(e,t)=>Qr(t)?Xr(e,t.value):It(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],o)=>(n[ts(s,o)+" =>"]=r,n),{})}:Vn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ts(n))}:ze(t)?ts(t):se(t)&&!j(t)&&!Gr(t)?String(t):t,ts=(e,t="")=>{var n;return ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.5.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let be;class Ei{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(be=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Qt){let t=Qt;for(Qt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Yt;){let t=Yt;for(Yt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function no(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function so(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),Ds(s),Ai(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function ps(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ro(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ro(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===rn)||(e.globalVersion=rn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ps(e))))return;e.flags|=2;const t=e.dep,n=ne,s=ke;ne=e,ke=!0;try{no(e);const r=e.fn(e._value);(t.version===0||pt(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ne=n,ke=s,so(e),e.flags&=-3}}function Ds(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Ds(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ai(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let ke=!0;const oo=[];function nt(){oo.push(ke),ke=!1}function st(){const e=oo.pop();ke=e===void 0?!0:e}function Xs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let rn=0;class Ri{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ne||!ke||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new Ri(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,io(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,rn++,this.notify(t)}notify(t){Ms();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Is()}}}function io(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)io(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const hs=new WeakMap,wt=Symbol(""),gs=Symbol(""),on=Symbol("");function pe(e,t,n){if(ke&&ne){let s=hs.get(e);s||hs.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new Fs),r.map=s,r.key=n),r.track()}}function Ze(e,t,n,s,r,o){const l=hs.get(e);if(!l){rn++;return}const i=c=>{c&&c.trigger()};if(Ms(),t==="clear")l.forEach(i);else{const c=j(e),d=c&&Ts(n);if(c&&n==="length"){const a=Number(s);l.forEach((p,g)=>{(g==="length"||g===on||!ze(g)&&g>=a)&&i(p)})}else switch((n!==void 0||l.has(void 0))&&i(l.get(n)),d&&i(l.get(on)),t){case"add":c?d&&i(l.get("length")):(i(l.get(wt)),It(e)&&i(l.get(gs)));break;case"delete":c||(i(l.get(wt)),It(e)&&i(l.get(gs)));break;case"set":It(e)&&i(l.get(wt));break}}Is()}function Rt(e){const t=G(e);return t===e?t:(pe(t,"iterate",on),Re(e)?t:t.map(fe))}function Wn(e){return pe(e=G(e),"iterate",on),e}const Ti={__proto__:null,[Symbol.iterator](){return ss(this,Symbol.iterator,fe)},concat(...e){return Rt(this).concat(...e.map(t=>j(t)?Rt(t):t))},entries(){return ss(this,"entries",e=>(e[1]=fe(e[1]),e))},every(e,t){return Ye(this,"every",e,t,void 0,arguments)},filter(e,t){return Ye(this,"filter",e,t,n=>n.map(fe),arguments)},find(e,t){return Ye(this,"find",e,t,fe,arguments)},findIndex(e,t){return Ye(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ye(this,"findLast",e,t,fe,arguments)},findLastIndex(e,t){return Ye(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ye(this,"forEach",e,t,void 0,arguments)},includes(...e){return rs(this,"includes",e)},indexOf(...e){return rs(this,"indexOf",e)},join(e){return Rt(this).join(e)},lastIndexOf(...e){return rs(this,"lastIndexOf",e)},map(e,t){return Ye(this,"map",e,t,void 0,arguments)},pop(){return Ut(this,"pop")},push(...e){return Ut(this,"push",e)},reduce(e,...t){return Zs(this,"reduce",e,t)},reduceRight(e,...t){return Zs(this,"reduceRight",e,t)},shift(){return Ut(this,"shift")},some(e,t){return Ye(this,"some",e,t,void 0,arguments)},splice(...e){return Ut(this,"splice",e)},toReversed(){return Rt(this).toReversed()},toSorted(e){return Rt(this).toSorted(e)},toSpliced(...e){return Rt(this).toSpliced(...e)},unshift(...e){return Ut(this,"unshift",e)},values(){return ss(this,"values",fe)}};function ss(e,t,n){const s=Wn(e),r=s[t]();return s!==e&&!Re(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=n(o.value)),o}),r}const Oi=Array.prototype;function Ye(e,t,n,s,r,o){const l=Wn(e),i=l!==e&&!Re(e),c=l[t];if(c!==Oi[t]){const p=c.apply(e,o);return i?fe(p):p}let d=n;l!==e&&(i?d=function(p,g){return n.call(this,fe(p),g,e)}:n.length>2&&(d=function(p,g){return n.call(this,p,g,e)}));const a=c.call(l,d,s);return i&&r?r(a):a}function Zs(e,t,n,s){const r=Wn(e);let o=n;return r!==e&&(Re(e)?n.length>3&&(o=function(l,i,c){return n.call(this,l,i,c,e)}):o=function(l,i,c){return n.call(this,l,fe(i),c,e)}),r[t](o,...s)}function rs(e,t,n){const s=G(e);pe(s,"iterate",on);const r=s[t](...n);return(r===-1||r===!1)&&Ls(n[0])?(n[0]=G(n[0]),s[t](...n)):r}function Ut(e,t,n=[]){nt(),Ms();const s=G(e)[t].apply(e,n);return Is(),st(),s}const Mi=Ps("__proto__,__v_isRef,__isVue"),lo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ze));function Ii(e){ze(e)||(e=String(e));const t=G(this);return pe(t,"has",e),t.hasOwnProperty(e)}class co{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return o;if(n==="__v_raw")return s===(r?o?Bi:po:o?fo:ao).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=j(t);if(!r){let c;if(l&&(c=Ti[n]))return c;if(n==="hasOwnProperty")return Ii}const i=Reflect.get(t,n,ge(t)?t:s);return(ze(n)?lo.has(n):Mi(n))||(r||pe(t,"get",n),o)?i:ge(i)?l&&Ts(n)?i:i.value:se(i)?r?go(i):qn(i):i}}class uo extends co{constructor(t=!1){super(!1,t)}set(t,n,s,r){let o=t[n];if(!this._isShallow){const c=ht(o);if(!Re(s)&&!ht(s)&&(o=G(o),s=G(s)),!j(t)&&ge(o)&&!ge(s))return c||(o.value=s),!0}const l=j(t)&&Ts(n)?Number(n)e,vn=e=>Reflect.getPrototypeOf(e);function Li(e,t,n){return function(...s){const r=this.__v_raw,o=G(r),l=It(o),i=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,d=r[e](...s),a=n?ms:t?Rn:fe;return!t&&pe(o,"iterate",c?gs:wt),{next(){const{value:p,done:g}=d.next();return g?{value:p,done:g}:{value:i?[a(p[0]),a(p[1])]:a(p),done:g}},[Symbol.iterator](){return this}}}}function yn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function ji(e,t){const n={get(r){const o=this.__v_raw,l=G(o),i=G(r);e||(pt(r,i)&&pe(l,"get",r),pe(l,"get",i));const{has:c}=vn(l),d=t?ms:e?Rn:fe;if(c.call(l,r))return d(o.get(r));if(c.call(l,i))return d(o.get(i));o!==l&&o.get(r)},get size(){const r=this.__v_raw;return!e&&pe(G(r),"iterate",wt),r.size},has(r){const o=this.__v_raw,l=G(o),i=G(r);return e||(pt(r,i)&&pe(l,"has",r),pe(l,"has",i)),r===i?o.has(r):o.has(r)||o.has(i)},forEach(r,o){const l=this,i=l.__v_raw,c=G(i),d=t?ms:e?Rn:fe;return!e&&pe(c,"iterate",wt),i.forEach((a,p)=>r.call(o,d(a),d(p),l))}};return ue(n,e?{add:yn("add"),set:yn("set"),delete:yn("delete"),clear:yn("clear")}:{add(r){!t&&!Re(r)&&!ht(r)&&(r=G(r));const o=G(this);return vn(o).has.call(o,r)||(o.add(r),Ze(o,"add",r,r)),this},set(r,o){!t&&!Re(o)&&!ht(o)&&(o=G(o));const l=G(this),{has:i,get:c}=vn(l);let d=i.call(l,r);d||(r=G(r),d=i.call(l,r));const a=c.call(l,r);return l.set(r,o),d?pt(o,a)&&Ze(l,"set",r,o):Ze(l,"add",r,o),this},delete(r){const o=G(this),{has:l,get:i}=vn(o);let c=l.call(o,r);c||(r=G(r),c=l.call(o,r)),i&&i.call(o,r);const d=o.delete(r);return c&&Ze(o,"delete",r,void 0),d},clear(){const r=G(this),o=r.size!==0,l=r.clear();return o&&Ze(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Li(r,e,t)}),n}function ks(e,t){const n=ji(e,t);return(s,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(J(n,r)&&r in s?n:s,r,o)}const Hi={get:ks(!1,!1)},$i={get:ks(!1,!0)},Vi={get:ks(!0,!1)};const ao=new WeakMap,fo=new WeakMap,po=new WeakMap,Bi=new WeakMap;function Ui(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ki(e){return e.__v_skip||!Object.isExtensible(e)?0:Ui(hi(e))}function qn(e){return ht(e)?e:Ns(e,!1,Fi,Hi,ao)}function ho(e){return Ns(e,!1,Ni,$i,fo)}function go(e){return Ns(e,!0,ki,Vi,po)}function Ns(e,t,n,s,r){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=Ki(e);if(o===0)return e;const l=r.get(e);if(l)return l;const i=new Proxy(e,o===2?s:n);return r.set(e,i),i}function Dt(e){return ht(e)?Dt(e.__v_raw):!!(e&&e.__v_isReactive)}function ht(e){return!!(e&&e.__v_isReadonly)}function Re(e){return!!(e&&e.__v_isShallow)}function Ls(e){return e?!!e.__v_raw:!1}function G(e){const t=e&&e.__v_raw;return t?G(t):e}function Wi(e){return!J(e,"__v_skip")&&Object.isExtensible(e)&&Jr(e,"__v_skip",!0),e}const fe=e=>se(e)?qn(e):e,Rn=e=>se(e)?go(e):e;function ge(e){return e?e.__v_isRef===!0:!1}function qi(e){return mo(e,!1)}function zi(e){return mo(e,!0)}function mo(e,t){return ge(e)?e:new Gi(e,t)}class Gi{constructor(t,n){this.dep=new Fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:G(t),this._value=n?t:fe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Re(t)||ht(t);t=s?t:G(t),pt(t,n)&&(this._rawValue=t,this._value=s?t:fe(t),this.dep.trigger())}}function Ft(e){return ge(e)?e.value:e}const Ji={get:(e,t,n)=>t==="__v_raw"?e:Ft(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ge(r)&&!ge(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function _o(e){return Dt(e)?e:new Proxy(e,Ji)}class Yi{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=rn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return to(this,!0),!0}get value(){const t=this.dep.track();return ro(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Qi(e,t,n=!1){let s,r;return $(e)?s=e:(s=e.get,r=e.set),new Yi(s,r,n)}const bn={},Tn=new WeakMap;let yt;function Xi(e,t=!1,n=yt){if(n){let s=Tn.get(n);s||Tn.set(n,s=[]),s.push(e)}}function Zi(e,t,n=ee){const{immediate:s,deep:r,once:o,scheduler:l,augmentJob:i,call:c}=n,d=D=>r?D:Re(D)||r===!1||r===0?et(D,1):et(D);let a,p,g,_,R=!1,O=!1;if(ge(e)?(p=()=>e.value,R=Re(e)):Dt(e)?(p=()=>d(e),R=!0):j(e)?(O=!0,R=e.some(D=>Dt(D)||Re(D)),p=()=>e.map(D=>{if(ge(D))return D.value;if(Dt(D))return d(D);if($(D))return c?c(D,2):D()})):$(e)?t?p=c?()=>c(e,2):e:p=()=>{if(g){nt();try{g()}finally{st()}}const D=yt;yt=a;try{return c?c(e,3,[_]):e(_)}finally{yt=D}}:p=Fe,t&&r){const D=p,Z=r===!0?1/0:r;p=()=>et(D(),Z)}const V=Pi(),k=()=>{a.stop(),V&&V.active&&Rs(V.effects,a)};if(o&&t){const D=t;t=(...Z)=>{D(...Z),k()}}let M=O?new Array(e.length).fill(bn):bn;const N=D=>{if(!(!(a.flags&1)||!a.dirty&&!D))if(t){const Z=a.run();if(r||R||(O?Z.some((ae,oe)=>pt(ae,M[oe])):pt(Z,M))){g&&g();const ae=yt;yt=a;try{const oe=[Z,M===bn?void 0:O&&M[0]===bn?[]:M,_];M=Z,c?c(t,3,oe):t(...oe)}finally{yt=ae}}}else a.run()};return i&&i(N),a=new Zr(p),a.scheduler=l?()=>l(N,!1):N,_=D=>Xi(D,!1,a),g=a.onStop=()=>{const D=Tn.get(a);if(D){if(c)c(D,4);else for(const Z of D)Z();Tn.delete(a)}},t?s?N(!0):M=a.run():l?l(N.bind(null,!0),!0):a.run(),k.pause=a.pause.bind(a),k.resume=a.resume.bind(a),k.stop=k,k}function et(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,ge(e))et(e.value,t,n);else if(j(e))for(let s=0;s{et(s,t,n)});else if(Gr(e)){for(const s in e)et(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&et(e[s],t,n)}return e}/** -* @vue/runtime-core v3.5.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function hn(e,t,n,s){try{return s?e(...s):e()}catch(r){zn(r,t,n)}}function Ge(e,t,n,s){if($(e)){const r=hn(e,t,n,s);return r&&qr(r)&&r.catch(o=>{zn(o,t,n)}),r}if(j(e)){const r=[];for(let o=0;o>>1,r=_e[s],o=ln(r);o=ln(n)?_e.push(e):_e.splice(tl(t),0,e),e.flags|=1,yo()}}function yo(){On||(On=vo.then(xo))}function nl(e){j(e)?kt.push(...e):at&&e.id===-1?at.splice(Tt+1,0,e):e.flags&1||(kt.push(e),e.flags|=1),yo()}function er(e,t,n=Ue+1){for(;n<_e.length;n++){const s=_e[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;_e.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function bo(e){if(kt.length){const t=[...new Set(kt)].sort((n,s)=>ln(n)-ln(s));if(kt.length=0,at){at.push(...t);return}for(at=t,Tt=0;Tte.id==null?e.flags&2?-1:1/0:e.id;function xo(e){const t=Fe;try{for(Ue=0;Ue<_e.length;Ue++){const n=_e[Ue];n&&!(n.flags&8)&&(n.flags&4&&(n.flags&=-2),hn(n,n.i,n.i?15:14),n.flags&4||(n.flags&=-2))}}finally{for(;Ue<_e.length;Ue++){const n=_e[Ue];n&&(n.flags&=-2)}Ue=-1,_e.length=0,bo(),On=null,(_e.length||kt.length)&&xo()}}let Ee=null,So=null;function Mn(e){const t=Ee;return Ee=e,So=e&&e.type.__scopeId||null,t}function We(e,t=Ee,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&Fn(-1);const o=Mn(t);let l;try{l=e(...r)}finally{Mn(o),s._d&&Fn(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Me(e,t){if(Ee===null)return e;const n=Xn(Ee),s=e.dirs||(e.dirs=[]);for(let r=0;re.__isTeleport,ol=Symbol("_leaveCb");function $s(e,t){e.shapeFlag&6&&e.component?(e.transition=t,$s(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function wo(e,t){return $(e)?(()=>ue({name:e.name},t,{setup:e}))():e}function Co(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const In=new WeakMap;function Xt(e,t,n,s,r=!1){if(j(e)){e.forEach((R,O)=>Xt(R,t&&(j(t)?t[O]:t),n,s,r));return}if(Zt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Xt(e,t,n,s.component.subTree);return}const o=s.shapeFlag&4?Xn(s.component):s.el,l=r?null:o,{i,r:c}=e,d=t&&t.r,a=i.refs===ee?i.refs={}:i.refs,p=i.setupState,g=G(p),_=p===ee?Wr:R=>J(g,R);if(d!=null&&d!==c){if(tr(t),le(d))a[d]=null,_(d)&&(p[d]=null);else if(ge(d)){d.value=null;const R=t;R.k&&(a[R.k]=null)}}if($(c))hn(c,i,12,[l,a]);else{const R=le(c),O=ge(c);if(R||O){const V=()=>{if(e.f){const k=R?_(c)?p[c]:a[c]:c.value;if(r)j(k)&&Rs(k,o);else if(j(k))k.includes(o)||k.push(o);else if(R)a[c]=[o],_(c)&&(p[c]=a[c]);else{const M=[o];c.value=M,e.k&&(a[e.k]=M)}}else R?(a[c]=l,_(c)&&(p[c]=l)):O&&(c.value=l,e.k&&(a[e.k]=l))};if(l){const k=()=>{V(),In.delete(e)};k.id=-1,In.set(e,k),Ce(k,n)}else tr(e),V()}}}function tr(e){const t=In.get(e);t&&(t.flags|=8,In.delete(e))}pn().requestIdleCallback;pn().cancelIdleCallback;const Zt=e=>!!e.type.__asyncLoader,Eo=e=>e.type.__isKeepAlive;function il(e,t){Po(e,"a",t)}function ll(e,t){Po(e,"da",t)}function Po(e,t,n=he){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Gn(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Eo(r.parent.vnode)&&cl(s,t,n,r),r=r.parent}}function cl(e,t,n,s){const r=Gn(t,e,s,!0);Ao(()=>{Rs(s[t],r)},n)}function Gn(e,t,n=he,s=!1){if(n){const r=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...l)=>{nt();const i=gn(n),c=Ge(t,n,e,l);return i(),st(),c});return s?r.unshift(o):r.push(o),o}}const rt=e=>(t,n=he)=>{(!un||e==="sp")&&Gn(e,(...s)=>t(...s),n)},ul=rt("bm"),al=rt("m"),fl=rt("bu"),dl=rt("u"),pl=rt("bum"),Ao=rt("um"),hl=rt("sp"),gl=rt("rtg"),ml=rt("rtc");function _l(e,t=he){Gn("ec",e,t)}const Ro="components";function Jn(e,t){return yl(Ro,e,!0,t)||e}const vl=Symbol.for("v-ndc");function yl(e,t,n=!0,s=!1){const r=Ee||he;if(r){const o=r.type;if(e===Ro){const i=ac(o,!1);if(i&&(i===t||i===Te(t)||i===Un(Te(t))))return o}const l=nr(r[e]||o[e],t)||nr(r.appContext[e],t);return!l&&s?o:l}}function nr(e,t){return e&&(e[t]||e[Te(t)]||e[Un(Te(t))])}function zt(e,t,n,s){let r;const o=n&&n[s],l=j(e);if(l||le(e)){const i=l&&Dt(e);let c=!1,d=!1;i&&(c=!Re(e),d=ht(e),e=Wn(e)),r=new Array(e.length);for(let a=0,p=e.length;at(i,c,void 0,o&&o[c]));else{const i=Object.keys(e);r=new Array(i.length);for(let c=0,d=i.length;ce?zo(e)?Xn(e):_s(e.parent):null,en=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>_s(e.parent),$root:e=>_s(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Vs(e),$forceUpdate:e=>e.f||(e.f=()=>{Hs(e.update)}),$nextTick:e=>e.n||(e.n=js.bind(e.proxy)),$watch:e=>Vl.bind(e)}),os=(e,t)=>e!==ee&&!e.__isScriptSetup&&J(e,t),bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:o,accessCache:l,type:i,appContext:c}=e;let d;if(t[0]!=="$"){const _=l[t];if(_!==void 0)switch(_){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return o[t]}else{if(os(s,t))return l[t]=1,s[t];if(r!==ee&&J(r,t))return l[t]=2,r[t];if((d=e.propsOptions[0])&&J(d,t))return l[t]=3,o[t];if(n!==ee&&J(n,t))return l[t]=4,n[t];vs&&(l[t]=0)}}const a=en[t];let p,g;if(a)return t==="$attrs"&&pe(e.attrs,"get",""),a(e);if((p=i.__cssModules)&&(p=p[t]))return p;if(n!==ee&&J(n,t))return l[t]=4,n[t];if(g=c.config.globalProperties,J(g,t))return g[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:o}=e;return os(r,t)?(r[t]=n,!0):s!==ee&&J(s,t)?(s[t]=n,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:o,type:l}},i){let c,d;return!!(n[i]||e!==ee&&i[0]!=="$"&&J(e,i)||os(t,i)||(c=o[0])&&J(c,i)||J(s,i)||J(en,i)||J(r.config.globalProperties,i)||(d=l.__cssModules)&&d[i])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:J(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function sr(e){return j(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let vs=!0;function xl(e){const t=Vs(e),n=e.proxy,s=e.ctx;vs=!1,t.beforeCreate&&rr(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:l,watch:i,provide:c,inject:d,created:a,beforeMount:p,mounted:g,beforeUpdate:_,updated:R,activated:O,deactivated:V,beforeDestroy:k,beforeUnmount:M,destroyed:N,unmounted:D,render:Z,renderTracked:ae,renderTriggered:oe,errorCaptured:Le,serverPrefetch:ot,expose:je,inheritAttrs:it,components:mt,directives:He,filters:Vt}=t;if(d&&Sl(d,s,null),l)for(const Q in l){const W=l[Q];$(W)&&(s[Q]=W.bind(n))}if(r){const Q=r.call(n,n);se(Q)&&(e.data=qn(Q))}if(vs=!0,o)for(const Q in o){const W=o[Q],Je=$(W)?W.bind(n,n):$(W.get)?W.get.bind(n,n):Fe,lt=!$(W)&&$(W.set)?W.set.bind(n):Fe,$e=De({get:Je,set:lt});Object.defineProperty(s,Q,{enumerable:!0,configurable:!0,get:()=>$e.value,set:ve=>$e.value=ve})}if(i)for(const Q in i)To(i[Q],s,n,Q);if(c){const Q=$(c)?c.call(n):c;Reflect.ownKeys(Q).forEach(W=>{Sn(W,Q[W])})}a&&rr(a,e,"c");function ce(Q,W){j(W)?W.forEach(Je=>Q(Je.bind(n))):W&&Q(W.bind(n))}if(ce(ul,p),ce(al,g),ce(fl,_),ce(dl,R),ce(il,O),ce(ll,V),ce(_l,Le),ce(ml,ae),ce(gl,oe),ce(pl,M),ce(Ao,D),ce(hl,ot),j(je))if(je.length){const Q=e.exposed||(e.exposed={});je.forEach(W=>{Object.defineProperty(Q,W,{get:()=>n[W],set:Je=>n[W]=Je,enumerable:!0})})}else e.exposed||(e.exposed={});Z&&e.render===Fe&&(e.render=Z),it!=null&&(e.inheritAttrs=it),mt&&(e.components=mt),He&&(e.directives=He),ot&&Co(e)}function Sl(e,t,n=Fe){j(e)&&(e=ys(e));for(const s in e){const r=e[s];let o;se(r)?"default"in r?o=tt(r.from||s,r.default,!0):o=tt(r.from||s):o=tt(r),ge(o)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[s]=o}}function rr(e,t,n){Ge(j(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function To(e,t,n,s){let r=s.includes(".")?Bo(n,s):()=>n[s];if(le(e)){const o=t[e];$(o)&&wn(r,o)}else if($(e))wn(r,e.bind(n));else if(se(e))if(j(e))e.forEach(o=>To(o,t,n,s));else{const o=$(e.handler)?e.handler.bind(n):t[e.handler];$(o)&&wn(r,o,e)}}function Vs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,i=o.get(t);let c;return i?c=i:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(d=>Dn(c,d,l,!0)),Dn(c,t,l)),se(t)&&o.set(t,c),c}function Dn(e,t,n,s=!1){const{mixins:r,extends:o}=t;o&&Dn(e,o,n,!0),r&&r.forEach(l=>Dn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const i=wl[l]||n&&n[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const wl={data:or,props:ir,emits:ir,methods:Gt,computed:Gt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Gt,directives:Gt,watch:El,provide:or,inject:Cl};function or(e,t){return t?e?function(){return ue($(e)?e.call(this,this):e,$(t)?t.call(this,this):t)}:t:e}function Cl(e,t){return Gt(ys(e),ys(t))}function ys(e){if(j(e)){const t={};for(let n=0;n1)return n&&$(t)?t.call(s&&s.proxy):t}}const Mo={},Io=()=>Object.create(Mo),Do=e=>Object.getPrototypeOf(e)===Mo;function Rl(e,t,n,s=!1){const r={},o=Io();e.propsDefaults=Object.create(null),Fo(e,t,r,o);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);n?e.props=s?r:ho(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Tl(e,t,n,s){const{props:r,attrs:o,vnode:{patchFlag:l}}=e,i=G(r),[c]=e.propsOptions;let d=!1;if((s||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let p=0;p{c=!0;const[g,_]=ko(p,t,!0);ue(l,g),_&&i.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!o&&!c)return se(e)&&s.set(e,Mt),Mt;if(j(o))for(let a=0;ae==="_"||e==="_ctx"||e==="$stable",Us=e=>j(e)?e.map(Ke):[Ke(e)],Ml=(e,t,n)=>{if(t._n)return t;const s=We((...r)=>Us(t(...r)),n);return s._c=!1,s},No=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Bs(r))continue;const o=e[r];if($(o))t[r]=Ml(r,o,s);else if(o!=null){const l=Us(o);t[r]=()=>l}}},Lo=(e,t)=>{const n=Us(t);e.slots.default=()=>n},jo=(e,t,n)=>{for(const s in t)(n||!Bs(s))&&(e[s]=t[s])},Il=(e,t,n)=>{const s=e.slots=Io();if(e.vnode.shapeFlag&32){const r=t._;r?(jo(s,t,n),n&&Jr(s,"_",r,!0)):No(t,s)}else t&&Lo(e,t)},Dl=(e,t,n)=>{const{vnode:s,slots:r}=e;let o=!0,l=ee;if(s.shapeFlag&32){const i=t._;i?n&&i===1?o=!1:jo(r,t,n):(o=!t.$stable,No(t,r)),l=t}else t&&(Lo(e,t),l={default:1});if(o)for(const i in r)!Bs(i)&&l[i]==null&&delete r[i]};function Fl(){typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__!="boolean"&&(pn().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const Ce=Jl;function kl(e){return Nl(e)}function Nl(e,t){Fl();const n=pn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:o,createElement:l,createText:i,createComment:c,setText:d,setElementText:a,parentNode:p,nextSibling:g,setScopeId:_=Fe,insertStaticContent:R}=e,O=(u,f,h,b=null,v=null,x=null,E=void 0,C=null,w=!!f.dynamicChildren)=>{if(u===f)return;u&&!Kt(u,f)&&(b=y(u),ve(u,v,x,!0),u=null),f.patchFlag===-2&&(w=!1,f.dynamicChildren=null);const{type:S,ref:L,shapeFlag:A}=f;switch(S){case Qn:V(u,f,h,b);break;case gt:k(u,f,h,b);break;case Cn:u==null&&M(f,h,b,E);break;case xe:mt(u,f,h,b,v,x,E,C,w);break;default:A&1?Z(u,f,h,b,v,x,E,C,w):A&6?He(u,f,h,b,v,x,E,C,w):(A&64||A&128)&&S.process(u,f,h,b,v,x,E,C,w,I)}L!=null&&v?Xt(L,u&&u.ref,x,f||u,!f):L==null&&u&&u.ref!=null&&Xt(u.ref,null,x,u,!0)},V=(u,f,h,b)=>{if(u==null)s(f.el=i(f.children),h,b);else{const v=f.el=u.el;f.children!==u.children&&d(v,f.children)}},k=(u,f,h,b)=>{u==null?s(f.el=c(f.children||""),h,b):f.el=u.el},M=(u,f,h,b)=>{[u.el,u.anchor]=R(u.children,f,h,b,u.el,u.anchor)},N=({el:u,anchor:f},h,b)=>{let v;for(;u&&u!==f;)v=g(u),s(u,h,b),u=v;s(f,h,b)},D=({el:u,anchor:f})=>{let h;for(;u&&u!==f;)h=g(u),r(u),u=h;r(f)},Z=(u,f,h,b,v,x,E,C,w)=>{f.type==="svg"?E="svg":f.type==="math"&&(E="mathml"),u==null?ae(f,h,b,v,x,E,C,w):ot(u,f,v,x,E,C,w)},ae=(u,f,h,b,v,x,E,C)=>{let w,S;const{props:L,shapeFlag:A,transition:F,dirs:H}=u;if(w=u.el=l(u.type,x,L&&L.is,L),A&8?a(w,u.children):A&16&&Le(u.children,w,null,b,v,is(u,x),E,C),H&&_t(u,null,b,"created"),oe(w,u,u.scopeId,E,b),L){for(const te in L)te!=="value"&&!Jt(te)&&o(w,te,null,L[te],x,b);"value"in L&&o(w,"value",null,L.value,x),(S=L.onVnodeBeforeMount)&&Be(S,b,u)}H&&_t(u,null,b,"beforeMount");const B=Ll(v,F);B&&F.beforeEnter(w),s(w,f,h),((S=L&&L.onVnodeMounted)||B||H)&&Ce(()=>{S&&Be(S,b,u),B&&F.enter(w),H&&_t(u,null,b,"mounted")},v)},oe=(u,f,h,b,v)=>{if(h&&_(u,h),b)for(let x=0;x{for(let S=w;S{const C=f.el=u.el;let{patchFlag:w,dynamicChildren:S,dirs:L}=f;w|=u.patchFlag&16;const A=u.props||ee,F=f.props||ee;let H;if(h&&vt(h,!1),(H=F.onVnodeBeforeUpdate)&&Be(H,h,f,u),L&&_t(f,u,h,"beforeUpdate"),h&&vt(h,!0),(A.innerHTML&&F.innerHTML==null||A.textContent&&F.textContent==null)&&a(C,""),S?je(u.dynamicChildren,S,C,h,b,is(f,v),x):E||W(u,f,C,null,h,b,is(f,v),x,!1),w>0){if(w&16)it(C,A,F,h,v);else if(w&2&&A.class!==F.class&&o(C,"class",null,F.class,v),w&4&&o(C,"style",A.style,F.style,v),w&8){const B=f.dynamicProps;for(let te=0;te{H&&Be(H,h,f,u),L&&_t(f,u,h,"updated")},b)},je=(u,f,h,b,v,x,E)=>{for(let C=0;C{if(f!==h){if(f!==ee)for(const x in f)!Jt(x)&&!(x in h)&&o(u,x,f[x],null,v,b);for(const x in h){if(Jt(x))continue;const E=h[x],C=f[x];E!==C&&x!=="value"&&o(u,x,C,E,v,b)}"value"in h&&o(u,"value",f.value,h.value,v)}},mt=(u,f,h,b,v,x,E,C,w)=>{const S=f.el=u?u.el:i(""),L=f.anchor=u?u.anchor:i("");let{patchFlag:A,dynamicChildren:F,slotScopeIds:H}=f;H&&(C=C?C.concat(H):H),u==null?(s(S,h,b),s(L,h,b),Le(f.children||[],h,L,v,x,E,C,w)):A>0&&A&64&&F&&u.dynamicChildren?(je(u.dynamicChildren,F,h,v,x,E,C),(f.key!=null||v&&f===v.subTree)&&Ho(u,f,!0)):W(u,f,h,L,v,x,E,C,w)},He=(u,f,h,b,v,x,E,C,w)=>{f.slotScopeIds=C,u==null?f.shapeFlag&512?v.ctx.activate(f,h,b,E,w):Vt(f,h,b,v,x,E,w):Et(u,f,w)},Vt=(u,f,h,b,v,x,E)=>{const C=u.component=rc(u,b,v);if(Eo(u)&&(C.ctx.renderer=I),ic(C,!1,E),C.asyncDep){if(v&&v.registerDep(C,ce,E),!u.el){const w=C.subTree=ie(gt);k(null,w,f,h),u.placeholder=w.el}}else ce(C,u,f,h,v,x,E)},Et=(u,f,h)=>{const b=f.component=u.component;if(zl(u,f,h))if(b.asyncDep&&!b.asyncResolved){Q(b,f,h);return}else b.next=f,b.update();else f.el=u.el,b.vnode=f},ce=(u,f,h,b,v,x,E)=>{const C=()=>{if(u.isMounted){let{next:A,bu:F,u:H,parent:B,vnode:te}=u;{const Se=$o(u);if(Se){A&&(A.el=te.el,Q(u,A,E)),Se.asyncDep.then(()=>{u.isUnmounted||C()});return}}let Y=A,ye;vt(u,!1),A?(A.el=te.el,Q(u,A,E)):A=te,F&&xn(F),(ye=A.props&&A.props.onVnodeBeforeUpdate)&&Be(ye,B,A,te),vt(u,!0);const de=ls(u),Oe=u.subTree;u.subTree=de,O(Oe,de,p(Oe.el),y(Oe),u,v,x),A.el=de.el,Y===null&&Gl(u,de.el),H&&Ce(H,v),(ye=A.props&&A.props.onVnodeUpdated)&&Ce(()=>Be(ye,B,A,te),v)}else{let A;const{el:F,props:H}=f,{bm:B,m:te,parent:Y,root:ye,type:de}=u,Oe=Zt(f);if(vt(u,!1),B&&xn(B),!Oe&&(A=H&&H.onVnodeBeforeMount)&&Be(A,Y,f),vt(u,!0),F&&re){const Se=()=>{u.subTree=ls(u),re(F,u.subTree,u,v,null)};Oe&&de.__asyncHydrate?de.__asyncHydrate(F,u,Se):Se()}else{ye.ce&&ye.ce._def.shadowRoot!==!1&&ye.ce._injectChildStyle(de);const Se=u.subTree=ls(u);O(null,Se,h,b,u,v,x),f.el=Se.el}if(te&&Ce(te,v),!Oe&&(A=H&&H.onVnodeMounted)){const Se=f;Ce(()=>Be(A,Y,Se),v)}(f.shapeFlag&256||Y&&Zt(Y.vnode)&&Y.vnode.shapeFlag&256)&&u.a&&Ce(u.a,v),u.isMounted=!0,f=h=b=null}};u.scope.on();const w=u.effect=new Zr(C);u.scope.off();const S=u.update=w.run.bind(w),L=u.job=w.runIfDirty.bind(w);L.i=u,L.id=u.uid,w.scheduler=()=>Hs(L),vt(u,!0),S()},Q=(u,f,h)=>{f.component=u;const b=u.vnode.props;u.vnode=f,u.next=null,Tl(u,f.props,b,h),Dl(u,f.children,h),nt(),er(u),st()},W=(u,f,h,b,v,x,E,C,w=!1)=>{const S=u&&u.children,L=u?u.shapeFlag:0,A=f.children,{patchFlag:F,shapeFlag:H}=f;if(F>0){if(F&128){lt(S,A,h,b,v,x,E,C,w);return}else if(F&256){Je(S,A,h,b,v,x,E,C,w);return}}H&8?(L&16&&Ae(S,v,x),A!==S&&a(h,A)):L&16?H&16?lt(S,A,h,b,v,x,E,C,w):Ae(S,v,x,!0):(L&8&&a(h,""),H&16&&Le(A,h,b,v,x,E,C,w))},Je=(u,f,h,b,v,x,E,C,w)=>{u=u||Mt,f=f||Mt;const S=u.length,L=f.length,A=Math.min(S,L);let F;for(F=0;FL?Ae(u,v,x,!0,!1,A):Le(f,h,b,v,x,E,C,w,A)},lt=(u,f,h,b,v,x,E,C,w)=>{let S=0;const L=f.length;let A=u.length-1,F=L-1;for(;S<=A&&S<=F;){const H=u[S],B=f[S]=w?ft(f[S]):Ke(f[S]);if(Kt(H,B))O(H,B,h,null,v,x,E,C,w);else break;S++}for(;S<=A&&S<=F;){const H=u[A],B=f[F]=w?ft(f[F]):Ke(f[F]);if(Kt(H,B))O(H,B,h,null,v,x,E,C,w);else break;A--,F--}if(S>A){if(S<=F){const H=F+1,B=HF)for(;S<=A;)ve(u[S],v,x,!0),S++;else{const H=S,B=S,te=new Map;for(S=B;S<=F;S++){const we=f[S]=w?ft(f[S]):Ke(f[S]);we.key!=null&&te.set(we.key,S)}let Y,ye=0;const de=F-B+1;let Oe=!1,Se=0;const Bt=new Array(de);for(S=0;S=de){ve(we,v,x,!0);continue}let Ve;if(we.key!=null)Ve=te.get(we.key);else for(Y=B;Y<=F;Y++)if(Bt[Y-B]===0&&Kt(we,f[Y])){Ve=Y;break}Ve===void 0?ve(we,v,x,!0):(Bt[Ve-B]=S+1,Ve>=Se?Se=Ve:Oe=!0,O(we,f[Ve],h,null,v,x,E,C,w),ye++)}const zs=Oe?jl(Bt):Mt;for(Y=zs.length-1,S=de-1;S>=0;S--){const we=B+S,Ve=f[we],Gs=f[we+1],Js=we+1{const{el:x,type:E,transition:C,children:w,shapeFlag:S}=u;if(S&6){$e(u.component.subTree,f,h,b);return}if(S&128){u.suspense.move(f,h,b);return}if(S&64){E.move(u,f,h,I);return}if(E===xe){s(x,f,h);for(let A=0;AC.enter(x),v);else{const{leave:A,delayLeave:F,afterLeave:H}=C,B=()=>{u.ctx.isUnmounted?r(x):s(x,f,h)},te=()=>{x._isLeaving&&x[ol](!0),A(x,()=>{B(),H&&H()})};F?F(x,B,te):te()}else s(x,f,h)},ve=(u,f,h,b=!1,v=!1)=>{const{type:x,props:E,ref:C,children:w,dynamicChildren:S,shapeFlag:L,patchFlag:A,dirs:F,cacheIndex:H}=u;if(A===-2&&(v=!1),C!=null&&(nt(),Xt(C,null,h,u,!0),st()),H!=null&&(f.renderCache[H]=void 0),L&256){f.ctx.deactivate(u);return}const B=L&1&&F,te=!Zt(u);let Y;if(te&&(Y=E&&E.onVnodeBeforeUnmount)&&Be(Y,f,u),L&6)_n(u.component,h,b);else{if(L&128){u.suspense.unmount(h,b);return}B&&_t(u,null,f,"beforeUnmount"),L&64?u.type.remove(u,f,h,I,b):S&&!S.hasOnce&&(x!==xe||A>0&&A&64)?Ae(S,f,h,!1,!0):(x===xe&&A&384||!v&&L&16)&&Ae(w,f,h),b&&Pt(u)}(te&&(Y=E&&E.onVnodeUnmounted)||B)&&Ce(()=>{Y&&Be(Y,f,u),B&&_t(u,null,f,"unmounted")},h)},Pt=u=>{const{type:f,el:h,anchor:b,transition:v}=u;if(f===xe){At(h,b);return}if(f===Cn){D(u);return}const x=()=>{r(h),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(u.shapeFlag&1&&v&&!v.persisted){const{leave:E,delayLeave:C}=v,w=()=>E(h,x);C?C(u.el,x,w):w()}else x()},At=(u,f)=>{let h;for(;u!==f;)h=g(u),r(u),u=h;r(f)},_n=(u,f,h)=>{const{bum:b,scope:v,job:x,subTree:E,um:C,m:w,a:S}=u;cr(w),cr(S),b&&xn(b),v.stop(),x&&(x.flags|=8,ve(E,u,f,h)),C&&Ce(C,f),Ce(()=>{u.isUnmounted=!0},f)},Ae=(u,f,h,b=!1,v=!1,x=0)=>{for(let E=x;E{if(u.shapeFlag&6)return y(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const f=g(u.anchor||u.el),h=f&&f[sl];return h?g(h):f};let T=!1;const P=(u,f,h)=>{u==null?f._vnode&&ve(f._vnode,null,null,!0):O(f._vnode||null,u,f,null,null,null,h),f._vnode=u,T||(T=!0,er(),bo(),T=!1)},I={p:O,um:ve,m:$e,r:Pt,mt:Vt,mc:Le,pc:W,pbc:je,n:y,o:e};let q,re;return t&&([q,re]=t(I)),{render:P,hydrate:q,createApp:Al(P,q)}}function is({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function vt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ll(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ho(e,t,n=!1){const s=e.children,r=t.children;if(j(s)&&j(r))for(let o=0;o>1,e[n[i]]0&&(t[s]=n[o-1]),n[o]=s)}}for(o=n.length,l=n[o-1];o-- >0;)n[o]=l,l=t[l];return n}function $o(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$o(t)}function cr(e){if(e)for(let t=0;ttt(Hl);function wn(e,t,n){return Vo(e,t,n)}function Vo(e,t,n=ee){const{immediate:s,deep:r,flush:o,once:l}=n,i=ue({},n),c=t&&s||!t&&o!=="post";let d;if(un){if(o==="sync"){const _=$l();d=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=Fe,_.resume=Fe,_.pause=Fe,_}}const a=he;i.call=(_,R,O)=>Ge(_,a,R,O);let p=!1;o==="post"?i.scheduler=_=>{Ce(_,a&&a.suspense)}:o!=="sync"&&(p=!0,i.scheduler=(_,R)=>{R?_():Hs(_)}),i.augmentJob=_=>{t&&(_.flags|=4),p&&(_.flags|=2,a&&(_.id=a.uid,_.i=a))};const g=Zi(e,t,i);return un&&(d?d.push(g):c&&g()),g}function Vl(e,t,n){const s=this.proxy,r=le(e)?e.includes(".")?Bo(s,e):()=>s[e]:e.bind(s,s);let o;$(t)?o=t:(o=t.handler,n=t);const l=gn(this),i=Vo(r,o.bind(s),n);return l(),i}function Bo(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;rt==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Te(t)}Modifiers`]||e[`${Ct(t)}Modifiers`];function Ul(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let r=n;const o=t.startsWith("update:"),l=o&&Bl(s,t.slice(7));l&&(l.trim&&(r=n.map(a=>le(a)?a.trim():a)),l.number&&(r=n.map(An)));let i,c=s[i=es(t)]||s[i=es(Te(t))];!c&&o&&(c=s[i=es(Ct(t))]),c&&Ge(c,e,6,r);const d=s[i+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Ge(d,e,6,r)}}const Kl=new WeakMap;function Uo(e,t,n=!1){const s=n?Kl:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const o=e.emits;let l={},i=!1;if(!$(e)){const c=d=>{const a=Uo(d,t,!0);a&&(i=!0,ue(l,a))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!i?(se(e)&&s.set(e,null),null):(j(o)?o.forEach(c=>l[c]=null):ue(l,o),se(e)&&s.set(e,l),l)}function Yn(e,t){return!e||!$n(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,Ct(t))||J(e,t))}function ls(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[o],slots:l,attrs:i,emit:c,render:d,renderCache:a,props:p,data:g,setupState:_,ctx:R,inheritAttrs:O}=e,V=Mn(e);let k,M;try{if(n.shapeFlag&4){const D=r||s,Z=D;k=Ke(d.call(Z,D,a,p,_,g,R)),M=i}else{const D=t;k=Ke(D.length>1?D(p,{attrs:i,slots:l,emit:c}):D(p,null)),M=t.props?i:Wl(i)}}catch(D){tn.length=0,zn(D,e,1),k=ie(gt)}let N=k;if(M&&O!==!1){const D=Object.keys(M),{shapeFlag:Z}=N;D.length&&Z&7&&(o&&D.some(As)&&(M=ql(M,o)),N=jt(N,M,!1,!0))}return n.dirs&&(N=jt(N,null,!1,!0),N.dirs=N.dirs?N.dirs.concat(n.dirs):n.dirs),n.transition&&$s(N,n.transition),k=N,Mn(V),k}const Wl=e=>{let t;for(const n in e)(n==="class"||n==="style"||$n(n))&&((t||(t={}))[n]=e[n]);return t},ql=(e,t)=>{const n={};for(const s in e)(!As(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function zl(e,t,n){const{props:s,children:r,component:o}=e,{props:l,children:i,patchFlag:c}=t,d=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ur(s,l,d):!!l;if(c&8){const a=t.dynamicProps;for(let p=0;pe.__isSuspense;function Jl(e,t){t&&t.pendingBranch?j(e)?t.effects.push(...e):t.effects.push(e):nl(e)}const xe=Symbol.for("v-fgt"),Qn=Symbol.for("v-txt"),gt=Symbol.for("v-cmt"),Cn=Symbol.for("v-stc"),tn=[];let Pe=null;function U(e=!1){tn.push(Pe=e?null:[])}function Yl(){tn.pop(),Pe=tn[tn.length-1]||null}let cn=1;function Fn(e,t=!1){cn+=e,e<0&&Pe&&t&&(Pe.hasOnce=!0)}function Wo(e){return e.dynamicChildren=cn>0?Pe||Mt:null,Yl(),cn>0&&Pe&&Pe.push(e),e}function K(e,t,n,s,r,o){return Wo(m(e,t,n,s,r,o,!0))}function Ql(e,t,n,s,r){return Wo(ie(e,t,n,s,r,!0))}function kn(e){return e?e.__v_isVNode===!0:!1}function Kt(e,t){return e.type===t.type&&e.key===t.key}const qo=({key:e})=>e!=null?e:null,En=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?le(e)||ge(e)||$(e)?{i:Ee,r:e,k:t,f:!!n}:e:null);function m(e,t=null,n=null,s=0,r=null,o=e===xe?0:1,l=!1,i=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qo(t),ref:t&&En(t),scopeId:So,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ee};return i?(Ks(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=le(n)?8:16),cn>0&&!l&&Pe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Pe.push(c),c}const ie=Xl;function Xl(e,t=null,n=null,s=0,r=null,o=!1){if((!e||e===vl)&&(e=gt),kn(e)){const i=jt(e,t,!0);return n&&Ks(i,n),cn>0&&!o&&Pe&&(i.shapeFlag&6?Pe[Pe.indexOf(e)]=i:Pe.push(i)),i.patchFlag=-2,i}if(fc(e)&&(e=e.__vccOpts),t){t=Zl(t);let{class:i,style:c}=t;i&&!le(i)&&(t.class=St(i)),se(c)&&(Ls(c)&&!j(c)&&(c=ue({},c)),t.style=Os(c))}const l=le(e)?1:Ko(e)?128:rl(e)?64:se(e)?4:$(e)?2:0;return m(e,t,n,s,r,l,o,!0)}function Zl(e){return e?Ls(e)||Do(e)?ue({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:r,ref:o,patchFlag:l,children:i,transition:c}=e,d=t?tc(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&qo(d),ref:t&&t.ref?n&&o?j(o)?o.concat(En(t)):[o,En(t)]:En(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==xe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&$s(a,c.clone(a)),a}function qe(e=" ",t=0){return ie(Qn,null,e,t)}function ec(e,t){const n=ie(Cn,null,e);return n.staticCount=t,n}function Ie(e="",t=!1){return t?(U(),Ql(gt,null,e)):ie(gt,null,e)}function Ke(e){return e==null||typeof e=="boolean"?ie(gt):j(e)?ie(xe,null,e.slice()):kn(e)?ft(e):ie(Qn,null,String(e))}function ft(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function Ks(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(j(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ks(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Do(t)?t._ctx=Ee:r===3&&Ee&&(Ee.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else $(t)?(t={default:t,_ctx:Ee},n=32):(t=String(t),s&64?(n=16,t=[qe(t)]):n=8);e.children=t,e.shapeFlag|=n}function tc(...e){const t={};for(let n=0;nhe||Ee;let Nn,xs;{const e=pn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),o=>{r.length>1?r.forEach(l=>l(o)):r[0](o)}};Nn=t("__VUE_INSTANCE_SETTERS__",n=>he=n),xs=t("__VUE_SSR_SETTERS__",n=>un=n)}const gn=e=>{const t=he;return Nn(e),e.scope.on(),()=>{e.scope.off(),Nn(t)}},ar=()=>{he&&he.scope.off(),Nn(null)};function zo(e){return e.vnode.shapeFlag&4}let un=!1;function ic(e,t=!1,n=!1){t&&xs(t);const{props:s,children:r}=e.vnode,o=zo(e);Rl(e,s,o,t),Il(e,r,n||t);const l=o?lc(e,t):void 0;return t&&xs(!1),l}function lc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,bl);const{setup:s}=n;if(s){nt();const r=e.setupContext=s.length>1?uc(e):null,o=gn(e),l=hn(s,e,0,[e.props,r]),i=qr(l);if(st(),o(),(i||e.sp)&&!Zt(e)&&Co(e),i){if(l.then(ar,ar),t)return l.then(c=>{fr(e,c,t)}).catch(c=>{zn(c,e,0)});e.asyncDep=l}else fr(e,l,t)}else Go(e,t)}function fr(e,t,n){$(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=_o(t)),Go(e,n)}let dr;function Go(e,t,n){const s=e.type;if(!e.render){if(!t&&dr&&!s.render){const r=s.template||Vs(e).template;if(r){const{isCustomElement:o,compilerOptions:l}=e.appContext.config,{delimiters:i,compilerOptions:c}=s,d=ue(ue({isCustomElement:o,delimiters:i},l),c);s.render=dr(r,d)}}e.render=s.render||Fe}{const r=gn(e);nt();try{xl(e)}finally{st(),r()}}}const cc={get(e,t){return pe(e,"get",""),e[t]}};function uc(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,cc),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(_o(Wi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in en)return en[n](e)},has(t,n){return n in t||n in en}})):e.proxy}function ac(e,t=!0){return $(e)?e.displayName||e.name:e.name||t&&e.__name}function fc(e){return $(e)&&"__vccOpts"in e}const De=(e,t)=>Qi(e,t,un);function Jo(e,t,n){const s=(o,l,i)=>{Fn(-1);try{return ie(o,l,i)}finally{Fn(1)}},r=arguments.length;return r===2?se(t)&&!j(t)?kn(t)?s(e,null,[t]):s(e,t):s(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&kn(n)&&(n=[n]),s(e,t,n))}const dc="3.5.21";/** -* @vue/runtime-dom v3.5.21 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ss;const pr=typeof window<"u"&&window.trustedTypes;if(pr)try{Ss=pr.createPolicy("vue",{createHTML:e=>e})}catch{}const Yo=Ss?e=>Ss.createHTML(e):e=>e,pc="http://www.w3.org/2000/svg",hc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,hr=Xe&&Xe.createElement("template"),gc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?Xe.createElementNS(pc,e):t==="mathml"?Xe.createElementNS(hc,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,o){const l=n?n.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===o||!(r=r.nextSibling)););else{hr.innerHTML=Yo(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const i=hr.content;if(s==="svg"||s==="mathml"){const c=i.firstChild;for(;c.firstChild;)i.appendChild(c.firstChild);i.removeChild(c)}t.insertBefore(i,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},mc=Symbol("_vtc");function _c(e,t,n){const s=e[mc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ln=Symbol("_vod"),Qo=Symbol("_vsh"),gr={name:"show",beforeMount(e,{value:t},{transition:n}){e[Ln]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Wt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Wt(e,!0),s.enter(e)):s.leave(e,()=>{Wt(e,!1)}):Wt(e,t))},beforeUnmount(e,{value:t}){Wt(e,t)}};function Wt(e,t){e.style.display=t?e[Ln]:"none",e[Qo]=!t}const vc=Symbol(""),yc=/(?:^|;)\s*display\s*:/;function bc(e,t,n){const s=e.style,r=le(n);let o=!1;if(n&&!r){if(t)if(le(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();n[i]==null&&Pn(s,i,"")}else for(const l in t)n[l]==null&&Pn(s,l,"");for(const l in n)l==="display"&&(o=!0),Pn(s,l,n[l])}else if(r){if(t!==n){const l=s[vc];l&&(n+=";"+l),s.cssText=n,o=yc.test(n)}}else t&&e.removeAttribute("style");Ln in e&&(e[Ln]=o?s.display:"",e[Qo]&&(s.display="none"))}const mr=/\s*!important$/;function Pn(e,t,n){if(j(n))n.forEach(s=>Pn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=xc(e,t);mr.test(n)?e.setProperty(Ct(s),n.replace(mr,""),"important"):e[s]=n}}const _r=["Webkit","Moz","ms"],cs={};function xc(e,t){const n=cs[t];if(n)return n;let s=Te(t);if(s!=="filter"&&s in e)return cs[t]=s;s=Un(s);for(let r=0;r<_r.length;r++){const o=_r[r]+s;if(o in e)return cs[t]=o}return t}const vr="http://www.w3.org/1999/xlink";function yr(e,t,n,s,r,o=Si(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(vr,t.slice(6,t.length)):e.setAttributeNS(vr,t,n):n==null||o&&!Yr(n)?e.removeAttribute(t):e.setAttribute(t,o?"":ze(n)?String(n):n)}function br(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?Yo(n):n);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const i=o==="OPTION"?e.getAttribute("value")||"":e.value,c=n==null?e.type==="checkbox"?"on":"":String(n);(i!==c||!("_value"in e))&&(e.value=c),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const i=typeof e[t];i==="boolean"?n=Yr(n):n==null&&i==="string"?(n="",l=!0):i==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(r||t)}function bt(e,t,n,s){e.addEventListener(t,n,s)}function Sc(e,t,n,s){e.removeEventListener(t,n,s)}const xr=Symbol("_vei");function wc(e,t,n,s,r=null){const o=e[xr]||(e[xr]={}),l=o[t];if(s&&l)l.value=s;else{const[i,c]=Cc(t);if(s){const d=o[t]=Ac(s,r);bt(e,i,d,c)}else l&&(Sc(e,i,l,c),o[t]=void 0)}}const Sr=/(?:Once|Passive|Capture)$/;function Cc(e){let t;if(Sr.test(e)){t={};let s;for(;s=e.match(Sr);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ct(e.slice(2)),t]}let us=0;const Ec=Promise.resolve(),Pc=()=>us||(Ec.then(()=>us=0),us=Date.now());function Ac(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ge(Rc(s,n.value),t,5,[s])};return n.value=e,n.attached=Pc(),n}function Rc(e,t){if(j(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const wr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Tc=(e,t,n,s,r,o)=>{const l=r==="svg";t==="class"?_c(e,s,l):t==="style"?bc(e,n,s):$n(t)?As(t)||wc(e,t,n,s,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Oc(e,t,s,l))?(br(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&yr(e,t,s,l,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!le(s))?br(e,Te(t),s,o,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),yr(e,t,s,l))};function Oc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&wr(t)&&$(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return wr(t)&&le(n)?!1:t in e}const jn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return j(t)?n=>xn(t,n):t};function Mc(e){e.target.composing=!0}function Cr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Lt=Symbol("_assign"),xt={created(e,{modifiers:{lazy:t,trim:n,number:s}},r){e[Lt]=jn(r);const o=s||r.props&&r.props.type==="number";bt(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;n&&(i=i.trim()),o&&(i=An(i)),e[Lt](i)}),n&&bt(e,"change",()=>{e.value=e.value.trim()}),t||(bt(e,"compositionstart",Mc),bt(e,"compositionend",Cr),bt(e,"change",Cr))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:r,number:o}},l){if(e[Lt]=jn(l),e.composing)return;const i=(o||e.type==="number")&&!/^0\d/.test(e.value)?An(e.value):e.value,c=t==null?"":t;i!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||r&&e.value.trim()===c)||(e.value=c))}},Er={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=Vn(t);bt(e,"change",()=>{const o=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?An(Hn(l)):Hn(l));e[Lt](e.multiple?r?new Set(o):o:o[0]),e._assigning=!0,js(()=>{e._assigning=!1})}),e[Lt]=jn(s)},mounted(e,{value:t}){Pr(e,t)},beforeUpdate(e,t,n){e[Lt]=jn(n)},updated(e,{value:t}){e._assigning||Pr(e,t)}};function Pr(e,t){const n=e.multiple,s=j(t);if(!(n&&!s&&!Vn(t))){for(let r=0,o=e.options.length;rString(d)===String(i)):l.selected=Ci(t,i)>-1}else l.selected=t.has(i);else if(Kn(Hn(l),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Hn(e){return"_value"in e?e._value:e.value}const Ic=["ctrl","shift","alt","meta"],Dc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Ic.some(n=>e[`${n}Key`]&&!t.includes(n))},ut=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...o)=>{for(let l=0;l{const t=kc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=jc(s);if(!r)return;const o=t._component;!$(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const l=n(r,!1,Lc(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t};function Lc(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function jc(e){return le(e)?document.querySelector(e):e}const mn=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},Hc={name:"App"},$c={id:"app"};function Vc(e,t,n,s,r,o){const l=Jn("router-view");return U(),K("div",$c,[ie(l)])}const Bc=mn(Hc,[["render",Vc]]);/*! - * vue-router v4.5.1 - * (c) 2025 Eduardo San Martin Morote - * @license MIT - */const Ot=typeof document<"u";function Xo(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Xo(e.default)}const z=Object.assign;function as(e,t){const n={};for(const s in t){const r=t[s];n[s]=Ne(r)?r.map(e):e(r)}return n}const nn=()=>{},Ne=Array.isArray,Zo=/#/g,Kc=/&/g,Wc=/\//g,qc=/=/g,zc=/\?/g,ei=/\+/g,Gc=/%5B/g,Jc=/%5D/g,ti=/%5E/g,Yc=/%60/g,ni=/%7B/g,Qc=/%7C/g,si=/%7D/g,Xc=/%20/g;function Ws(e){return encodeURI(""+e).replace(Qc,"|").replace(Gc,"[").replace(Jc,"]")}function Zc(e){return Ws(e).replace(ni,"{").replace(si,"}").replace(ti,"^")}function ws(e){return Ws(e).replace(ei,"%2B").replace(Xc,"+").replace(Zo,"%23").replace(Kc,"%26").replace(Yc,"`").replace(ni,"{").replace(si,"}").replace(ti,"^")}function eu(e){return ws(e).replace(qc,"%3D")}function tu(e){return Ws(e).replace(Zo,"%23").replace(zc,"%3F")}function nu(e){return e==null?"":tu(e).replace(Wc,"%2F")}function an(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const su=/\/$/,ru=e=>e.replace(su,"");function fs(e,t,n="/"){let s,r={},o="",l="";const i=t.indexOf("#");let c=t.indexOf("?");return i=0&&(c=-1),c>-1&&(s=t.slice(0,c),o=t.slice(c+1,i>-1?i:t.length),r=e(o)),i>-1&&(s=s||t.slice(0,i),l=t.slice(i,t.length)),s=cu(s!=null?s:t,n),{fullPath:s+(o&&"?")+o+l,path:s,query:r,hash:an(l)}}function ou(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Rr(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function iu(e,t,n){const s=t.matched.length-1,r=n.matched.length-1;return s>-1&&s===r&&Ht(t.matched[s],n.matched[r])&&ri(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ht(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function ri(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!lu(e[n],t[n]))return!1;return!0}function lu(e,t){return Ne(e)?Tr(e,t):Ne(t)?Tr(t,e):e===t}function Tr(e,t){return Ne(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function cu(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),r=s[s.length-1];(r===".."||r===".")&&s.push("");let o=n.length-1,l,i;for(l=0;l1&&o--;else break;return n.slice(0,o).join("/")+"/"+s.slice(l).join("/")}const ct={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var fn;(function(e){e.pop="pop",e.push="push"})(fn||(fn={}));var sn;(function(e){e.back="back",e.forward="forward",e.unknown=""})(sn||(sn={}));function uu(e){if(!e)if(Ot){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),ru(e)}const au=/^[^#]+#/;function fu(e,t){return e.replace(au,"#")+t}function du(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Zn=()=>({left:window.scrollX,top:window.scrollY});function pu(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),r=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!r)return;t=du(r,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Or(e,t){return(history.state?history.state.position-t:-1)+e}const Cs=new Map;function hu(e,t){Cs.set(e,t)}function gu(e){const t=Cs.get(e);return Cs.delete(e),t}let mu=()=>location.protocol+"//"+location.host;function oi(e,t){const{pathname:n,search:s,hash:r}=t,o=e.indexOf("#");if(o>-1){let i=r.includes(e.slice(o))?e.slice(o).length:1,c=r.slice(i);return c[0]!=="/"&&(c="/"+c),Rr(c,"")}return Rr(n,e)+s+r}function _u(e,t,n,s){let r=[],o=[],l=null;const i=({state:g})=>{const _=oi(e,location),R=n.value,O=t.value;let V=0;if(g){if(n.value=_,t.value=g,l&&l===R){l=null;return}V=O?g.position-O.position:0}else s(_);r.forEach(k=>{k(n.value,R,{delta:V,type:fn.pop,direction:V?V>0?sn.forward:sn.back:sn.unknown})})};function c(){l=n.value}function d(g){r.push(g);const _=()=>{const R=r.indexOf(g);R>-1&&r.splice(R,1)};return o.push(_),_}function a(){const{history:g}=window;!g.state||g.replaceState(z({},g.state,{scroll:Zn()}),"")}function p(){for(const g of o)g();o=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",a)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",a,{passive:!0}),{pauseListeners:c,listen:d,destroy:p}}function Mr(e,t,n,s=!1,r=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:r?Zn():null}}function vu(e){const{history:t,location:n}=window,s={value:oi(e,n)},r={value:t.state};r.value||o(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(c,d,a){const p=e.indexOf("#"),g=p>-1?(n.host&&document.querySelector("base")?e:e.slice(p))+c:mu()+e+c;try{t[a?"replaceState":"pushState"](d,"",g),r.value=d}catch(_){console.error(_),n[a?"replace":"assign"](g)}}function l(c,d){const a=z({},t.state,Mr(r.value.back,c,r.value.forward,!0),d,{position:r.value.position});o(c,a,!0),s.value=c}function i(c,d){const a=z({},r.value,t.state,{forward:c,scroll:Zn()});o(a.current,a,!0);const p=z({},Mr(s.value,c,null),{position:a.position+1},d);o(c,p,!1),s.value=c}return{location:s,state:r,push:i,replace:l}}function yu(e){e=uu(e);const t=vu(e),n=_u(e,t.state,t.location,t.replace);function s(o,l=!0){l||n.pauseListeners(),history.go(o)}const r=z({location:"",base:e,go:s,createHref:fu.bind(null,e)},t,n);return Object.defineProperty(r,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(r,"state",{enumerable:!0,get:()=>t.state.value}),r}function bu(e){return typeof e=="string"||e&&typeof e=="object"}function ii(e){return typeof e=="string"||typeof e=="symbol"}const li=Symbol("");var Ir;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Ir||(Ir={}));function $t(e,t){return z(new Error,{type:e,[li]:!0},t)}function Qe(e,t){return e instanceof Error&&li in e&&(t==null||!!(e.type&t))}const Dr="[^/]+?",xu={sensitive:!1,strict:!1,start:!0,end:!0},Su=/[.+*?^${}()[\]/\\]/g;function wu(e,t){const n=z({},xu,t),s=[];let r=n.start?"^":"";const o=[];for(const d of e){const a=d.length?[]:[90];n.strict&&!d.length&&(r+="/");for(let p=0;pt.length?t.length===1&&t[0]===40+40?1:-1:0}function ci(e,t){let n=0;const s=e.score,r=t.score;for(;n0&&t[t.length-1]<0}const Eu={type:0,value:""},Pu=/[a-zA-Z0-9_]/;function Au(e){if(!e)return[[]];if(e==="/")return[[Eu]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${n})/"${d}": ${_}`)}let n=0,s=n;const r=[];let o;function l(){o&&r.push(o),o=[]}let i=0,c,d="",a="";function p(){!d||(n===0?o.push({type:0,value:d}):n===1||n===2||n===3?(o.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${d}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:d,regexp:a,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),d="")}function g(){d+=c}for(;i{l(N)}:nn}function l(p){if(ii(p)){const g=s.get(p);g&&(s.delete(p),n.splice(n.indexOf(g),1),g.children.forEach(l),g.alias.forEach(l))}else{const g=n.indexOf(p);g>-1&&(n.splice(g,1),p.record.name&&s.delete(p.record.name),p.children.forEach(l),p.alias.forEach(l))}}function i(){return n}function c(p){const g=Iu(p,n);n.splice(g,0,p),p.record.name&&!Lr(p)&&s.set(p.record.name,p)}function d(p,g){let _,R={},O,V;if("name"in p&&p.name){if(_=s.get(p.name),!_)throw $t(1,{location:p});V=_.record.name,R=z(kr(g.params,_.keys.filter(N=>!N.optional).concat(_.parent?_.parent.keys.filter(N=>N.optional):[]).map(N=>N.name)),p.params&&kr(p.params,_.keys.map(N=>N.name))),O=_.stringify(R)}else if(p.path!=null)O=p.path,_=n.find(N=>N.re.test(O)),_&&(R=_.parse(O),V=_.record.name);else{if(_=g.name?s.get(g.name):n.find(N=>N.re.test(g.path)),!_)throw $t(1,{location:p,currentLocation:g});V=_.record.name,R=z({},g.params,p.params),O=_.stringify(R)}const k=[];let M=_;for(;M;)k.unshift(M.record),M=M.parent;return{name:V,path:O,params:R,matched:k,meta:Mu(k)}}e.forEach(p=>o(p));function a(){n.length=0,s.clear()}return{addRoute:o,resolve:d,removeRoute:l,clearRoutes:a,getRoutes:i,getRecordMatcher:r}}function kr(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function Nr(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Ou(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Ou(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Lr(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Mu(e){return e.reduce((t,n)=>z(t,n.meta),{})}function jr(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Iu(e,t){let n=0,s=t.length;for(;n!==s;){const o=n+s>>1;ci(e,t[o])<0?s=o:n=o+1}const r=Du(e);return r&&(s=t.lastIndexOf(r,s-1)),s}function Du(e){let t=e;for(;t=t.parent;)if(ui(t)&&ci(e,t)===0)return t}function ui({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Fu(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let r=0;ro&&ws(o)):[s&&ws(s)]).forEach(o=>{o!==void 0&&(t+=(t.length?"&":"")+n,o!=null&&(t+="="+o))})}return t}function ku(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Ne(s)?s.map(r=>r==null?null:""+r):s==null?s:""+s)}return t}const Nu=Symbol(""),$r=Symbol(""),qs=Symbol(""),ai=Symbol(""),Es=Symbol("");function qt(){let e=[];function t(s){return e.push(s),()=>{const r=e.indexOf(s);r>-1&&e.splice(r,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function dt(e,t,n,s,r,o=l=>l()){const l=s&&(s.enterCallbacks[r]=s.enterCallbacks[r]||[]);return()=>new Promise((i,c)=>{const d=g=>{g===!1?c($t(4,{from:n,to:t})):g instanceof Error?c(g):bu(g)?c($t(2,{from:t,to:g})):(l&&s.enterCallbacks[r]===l&&typeof g=="function"&&l.push(g),i())},a=o(()=>e.call(s&&s.instances[r],t,n,d));let p=Promise.resolve(a);e.length<3&&(p=p.then(d)),p.catch(g=>c(g))})}function ds(e,t,n,s,r=o=>o()){const o=[];for(const l of e)for(const i in l.components){let c=l.components[i];if(!(t!=="beforeRouteEnter"&&!l.instances[i]))if(Xo(c)){const a=(c.__vccOpts||c)[t];a&&o.push(dt(a,n,s,l,i,r))}else{let d=c();o.push(()=>d.then(a=>{if(!a)throw new Error(`Couldn't resolve component "${i}" at "${l.path}"`);const p=Uc(a)?a.default:a;l.mods[i]=a,l.components[i]=p;const _=(p.__vccOpts||p)[t];return _&&dt(_,n,s,l,i,r)()}))}}return o}function Vr(e){const t=tt(qs),n=tt(ai),s=De(()=>{const c=Ft(e.to);return t.resolve(c)}),r=De(()=>{const{matched:c}=s.value,{length:d}=c,a=c[d-1],p=n.matched;if(!a||!p.length)return-1;const g=p.findIndex(Ht.bind(null,a));if(g>-1)return g;const _=Br(c[d-2]);return d>1&&Br(a)===_&&p[p.length-1].path!==_?p.findIndex(Ht.bind(null,c[d-2])):g}),o=De(()=>r.value>-1&&Vu(n.params,s.value.params)),l=De(()=>r.value>-1&&r.value===n.matched.length-1&&ri(n.params,s.value.params));function i(c={}){if($u(c)){const d=t[Ft(e.replace)?"replace":"push"](Ft(e.to)).catch(nn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>d),d}return Promise.resolve()}return{route:s,href:De(()=>s.value.href),isActive:o,isExactActive:l,navigate:i}}function Lu(e){return e.length===1?e[0]:e}const ju=wo({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Vr,setup(e,{slots:t}){const n=qn(Vr(e)),{options:s}=tt(qs),r=De(()=>({[Ur(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ur(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const o=t.default&&Lu(t.default(n));return e.custom?o:Jo("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:r.value},o)}}}),Hu=ju;function $u(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Vu(e,t){for(const n in t){const s=t[n],r=e[n];if(typeof s=="string"){if(s!==r)return!1}else if(!Ne(r)||r.length!==s.length||s.some((o,l)=>o!==r[l]))return!1}return!0}function Br(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ur=(e,t,n)=>e!=null?e:t!=null?t:n,Bu=wo({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=tt(Es),r=De(()=>e.route||s.value),o=tt($r,0),l=De(()=>{let d=Ft(o);const{matched:a}=r.value;let p;for(;(p=a[d])&&!p.components;)d++;return d}),i=De(()=>r.value.matched[l.value]);Sn($r,De(()=>l.value+1)),Sn(Nu,i),Sn(Es,r);const c=qi();return wn(()=>[c.value,i.value,e.name],([d,a,p],[g,_,R])=>{a&&(a.instances[p]=d,_&&_!==a&&d&&d===g&&(a.leaveGuards.size||(a.leaveGuards=_.leaveGuards),a.updateGuards.size||(a.updateGuards=_.updateGuards))),d&&a&&(!_||!Ht(a,_)||!g)&&(a.enterCallbacks[p]||[]).forEach(O=>O(d))},{flush:"post"}),()=>{const d=r.value,a=e.name,p=i.value,g=p&&p.components[a];if(!g)return Kr(n.default,{Component:g,route:d});const _=p.props[a],R=_?_===!0?d.params:typeof _=="function"?_(d):_:null,V=Jo(g,z({},R,t,{onVnodeUnmounted:k=>{k.component.isUnmounted&&(p.instances[a]=null)},ref:c}));return Kr(n.default,{Component:V,route:d})||V}}});function Kr(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Uu=Bu;function Ku(e){const t=Tu(e.routes,e),n=e.parseQuery||Fu,s=e.stringifyQuery||Hr,r=e.history,o=qt(),l=qt(),i=qt(),c=zi(ct);let d=ct;Ot&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const a=as.bind(null,y=>""+y),p=as.bind(null,nu),g=as.bind(null,an);function _(y,T){let P,I;return ii(y)?(P=t.getRecordMatcher(y),I=T):I=y,t.addRoute(I,P)}function R(y){const T=t.getRecordMatcher(y);T&&t.removeRoute(T)}function O(){return t.getRoutes().map(y=>y.record)}function V(y){return!!t.getRecordMatcher(y)}function k(y,T){if(T=z({},T||c.value),typeof y=="string"){const f=fs(n,y,T.path),h=t.resolve({path:f.path},T),b=r.createHref(f.fullPath);return z(f,h,{params:g(h.params),hash:an(f.hash),redirectedFrom:void 0,href:b})}let P;if(y.path!=null)P=z({},y,{path:fs(n,y.path,T.path).path});else{const f=z({},y.params);for(const h in f)f[h]==null&&delete f[h];P=z({},y,{params:p(f)}),T.params=p(T.params)}const I=t.resolve(P,T),q=y.hash||"";I.params=a(g(I.params));const re=ou(s,z({},y,{hash:Zc(q),path:I.path})),u=r.createHref(re);return z({fullPath:re,hash:q,query:s===Hr?ku(y.query):y.query||{}},I,{redirectedFrom:void 0,href:u})}function M(y){return typeof y=="string"?fs(n,y,c.value.path):z({},y)}function N(y,T){if(d!==y)return $t(8,{from:T,to:y})}function D(y){return oe(y)}function Z(y){return D(z(M(y),{replace:!0}))}function ae(y){const T=y.matched[y.matched.length-1];if(T&&T.redirect){const{redirect:P}=T;let I=typeof P=="function"?P(y):P;return typeof I=="string"&&(I=I.includes("?")||I.includes("#")?I=M(I):{path:I},I.params={}),z({query:y.query,hash:y.hash,params:I.path!=null?{}:y.params},I)}}function oe(y,T){const P=d=k(y),I=c.value,q=y.state,re=y.force,u=y.replace===!0,f=ae(P);if(f)return oe(z(M(f),{state:typeof f=="object"?z({},q,f.state):q,force:re,replace:u}),T||P);const h=P;h.redirectedFrom=T;let b;return!re&&iu(s,I,P)&&(b=$t(16,{to:h,from:I}),$e(I,I,!0,!1)),(b?Promise.resolve(b):je(h,I)).catch(v=>Qe(v)?Qe(v,2)?v:lt(v):W(v,h,I)).then(v=>{if(v){if(Qe(v,2))return oe(z({replace:u},M(v.to),{state:typeof v.to=="object"?z({},q,v.to.state):q,force:re}),T||h)}else v=mt(h,I,!0,u,q);return it(h,I,v),v})}function Le(y,T){const P=N(y,T);return P?Promise.reject(P):Promise.resolve()}function ot(y){const T=At.values().next().value;return T&&typeof T.runWithContext=="function"?T.runWithContext(y):y()}function je(y,T){let P;const[I,q,re]=Wu(y,T);P=ds(I.reverse(),"beforeRouteLeave",y,T);for(const f of I)f.leaveGuards.forEach(h=>{P.push(dt(h,y,T))});const u=Le.bind(null,y,T);return P.push(u),Ae(P).then(()=>{P=[];for(const f of o.list())P.push(dt(f,y,T));return P.push(u),Ae(P)}).then(()=>{P=ds(q,"beforeRouteUpdate",y,T);for(const f of q)f.updateGuards.forEach(h=>{P.push(dt(h,y,T))});return P.push(u),Ae(P)}).then(()=>{P=[];for(const f of re)if(f.beforeEnter)if(Ne(f.beforeEnter))for(const h of f.beforeEnter)P.push(dt(h,y,T));else P.push(dt(f.beforeEnter,y,T));return P.push(u),Ae(P)}).then(()=>(y.matched.forEach(f=>f.enterCallbacks={}),P=ds(re,"beforeRouteEnter",y,T,ot),P.push(u),Ae(P))).then(()=>{P=[];for(const f of l.list())P.push(dt(f,y,T));return P.push(u),Ae(P)}).catch(f=>Qe(f,8)?f:Promise.reject(f))}function it(y,T,P){i.list().forEach(I=>ot(()=>I(y,T,P)))}function mt(y,T,P,I,q){const re=N(y,T);if(re)return re;const u=T===ct,f=Ot?history.state:{};P&&(I||u?r.replace(y.fullPath,z({scroll:u&&f&&f.scroll},q)):r.push(y.fullPath,q)),c.value=y,$e(y,T,P,u),lt()}let He;function Vt(){He||(He=r.listen((y,T,P)=>{if(!_n.listening)return;const I=k(y),q=ae(I);if(q){oe(z(q,{replace:!0,force:!0}),I).catch(nn);return}d=I;const re=c.value;Ot&&hu(Or(re.fullPath,P.delta),Zn()),je(I,re).catch(u=>Qe(u,12)?u:Qe(u,2)?(oe(z(M(u.to),{force:!0}),I).then(f=>{Qe(f,20)&&!P.delta&&P.type===fn.pop&&r.go(-1,!1)}).catch(nn),Promise.reject()):(P.delta&&r.go(-P.delta,!1),W(u,I,re))).then(u=>{u=u||mt(I,re,!1),u&&(P.delta&&!Qe(u,8)?r.go(-P.delta,!1):P.type===fn.pop&&Qe(u,20)&&r.go(-1,!1)),it(I,re,u)}).catch(nn)}))}let Et=qt(),ce=qt(),Q;function W(y,T,P){lt(y);const I=ce.list();return I.length?I.forEach(q=>q(y,T,P)):console.error(y),Promise.reject(y)}function Je(){return Q&&c.value!==ct?Promise.resolve():new Promise((y,T)=>{Et.add([y,T])})}function lt(y){return Q||(Q=!y,Vt(),Et.list().forEach(([T,P])=>y?P(y):T()),Et.reset()),y}function $e(y,T,P,I){const{scrollBehavior:q}=e;if(!Ot||!q)return Promise.resolve();const re=!P&&gu(Or(y.fullPath,0))||(I||!P)&&history.state&&history.state.scroll||null;return js().then(()=>q(y,T,re)).then(u=>u&&pu(u)).catch(u=>W(u,y,T))}const ve=y=>r.go(y);let Pt;const At=new Set,_n={currentRoute:c,listening:!0,addRoute:_,removeRoute:R,clearRoutes:t.clearRoutes,hasRoute:V,getRoutes:O,resolve:k,options:e,push:D,replace:Z,go:ve,back:()=>ve(-1),forward:()=>ve(1),beforeEach:o.add,beforeResolve:l.add,afterEach:i.add,onError:ce.add,isReady:Je,install(y){const T=this;y.component("RouterLink",Hu),y.component("RouterView",Uu),y.config.globalProperties.$router=T,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>Ft(c)}),Ot&&!Pt&&c.value===ct&&(Pt=!0,D(r.location).catch(q=>{}));const P={};for(const q in ct)Object.defineProperty(P,q,{get:()=>c.value[q],enumerable:!0});y.provide(qs,T),y.provide(ai,ho(P)),y.provide(Es,c);const I=y.unmount;At.add(y),y.unmount=function(){At.delete(y),At.size<1&&(d=ct,He&&He(),He=null,c.value=ct,Pt=!1,Q=!1),I()}}};function Ae(y){return y.reduce((T,P)=>T.then(()=>ot(P)),Promise.resolve())}return _n}function Wu(e,t){const n=[],s=[],r=[],o=Math.max(t.matched.length,e.matched.length);for(let l=0;lHt(d,i))?s.push(i):n.push(i));const c=e.matched[l];c&&(t.matched.find(d=>Ht(d,c))||r.push(c))}return[n,s,r]}const qu={name:"Login",data(){return{loginForm:{username:"",password:""},loading:!1,error:"",success:""}},methods:{async handleLogin(){this.loading=!0,this.error="",this.success="";try{const e=await fetch("/api/v1/user/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.loginForm)}),t=await e.json();e.ok&&t.code===0?(this.success=t.message,localStorage.setItem("authToken",t.data.token),localStorage.setItem("userId",t.data.id),localStorage.setItem("username",t.data.username),setTimeout(()=>{this.$router.push("/dashboard")},500)):this.error=t.message||"\u767B\u5F55\u5931\u8D25"}catch{this.error="\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"}finally{this.loading=!1}}}},zu={class:"login-container"},Gu={class:"form-group"},Ju={class:"form-group"},Yu=["disabled"],Qu={key:0,class:"error-message"},Xu={key:1,class:"success-message"};function Zu(e,t,n,s,r,o){return U(),K("div",zu,[t[5]||(t[5]=m("div",{class:"logo"},"\u{1F437}",-1)),t[6]||(t[6]=m("h1",null,"\u732A\u573A\u7BA1\u7406\u7CFB\u7EDF",-1)),t[7]||(t[7]=m("p",{class:"subtitle"},"\u8BF7\u767B\u5F55\u60A8\u7684\u8D26\u6237",-1)),m("form",{onSubmit:t[2]||(t[2]=ut((...l)=>o.handleLogin&&o.handleLogin(...l),["prevent"]))},[m("div",Gu,[t[3]||(t[3]=m("label",{for:"username"},"\u7528\u6237\u540D",-1)),Me(m("input",{type:"text",id:"username","onUpdate:modelValue":t[0]||(t[0]=l=>r.loginForm.username=l),required:"",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},null,512),[[xt,r.loginForm.username]])]),m("div",Ju,[t[4]||(t[4]=m("label",{for:"password"},"\u5BC6\u7801",-1)),Me(m("input",{type:"password",id:"password","onUpdate:modelValue":t[1]||(t[1]=l=>r.loginForm.password=l),required:"",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"},null,512),[[xt,r.loginForm.password]])]),m("button",{type:"submit",disabled:r.loading},X(r.loading?"\u767B\u5F55\u4E2D...":"\u767B\u5F55"),9,Yu)],32),r.error?(U(),K("div",Qu,X(r.error),1)):Ie("",!0),r.success?(U(),K("div",Xu,X(r.success),1)):Ie("",!0)])}const ea=mn(qu,[["render",Zu],["__scopeId","data-v-bb5c78dc"]]);const ta={name:"Dashboard",data(){return{username:localStorage.getItem("username")||"\u7BA1\u7406\u5458"}},methods:{logout(){localStorage.removeItem("authToken"),localStorage.removeItem("userId"),localStorage.removeItem("username"),this.$router.push("/")},controlDevice(e,t){alert(`\u6B63\u5728${t==="on"?"\u5F00\u542F":"\u5173\u95ED"}${e==="fan"?"\u98CE\u673A":"\u6C34\u5E18"}`)}}},na={class:"header"},sa={class:"user-info"},ra={class:"nav"},oa={class:"container"},ia={class:"device-control"},la={class:"control-grid"},ca={class:"control-item"},ua={class:"control-buttons"},aa={class:"control-item"},fa={class:"control-buttons"};function da(e,t,n,s,r,o){const l=Jn("router-link");return U(),K("div",null,[m("div",na,[t[5]||(t[5]=m("h1",null,"\u{1F437} \u732A\u573A\u7BA1\u7406\u7CFB\u7EDF",-1)),m("div",sa,[m("span",null,X(r.username),1),m("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>o.logout&&o.logout(...i))},"\u9000\u51FA\u767B\u5F55")])]),m("div",ra,[m("ul",null,[m("li",null,[ie(l,{to:"/dashboard",class:"active"},{default:We(()=>[...t[6]||(t[6]=[qe("\u63A7\u5236\u53F0",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/device"},{default:We(()=>[...t[7]||(t[7]=[qe("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/feed/plan"},{default:We(()=>[...t[8]||(t[8]=[qe("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),m("div",oa,[t[12]||(t[12]=m("div",{class:"dashboard-grid"},[m("div",{class:"card"},[m("h3",null,"\u{1F4C8} \u73AF\u5883\u76D1\u63A7"),m("p",null,"\u5B9E\u65F6\u76D1\u63A7\u732A\u820D\u73AF\u5883\u53C2\u6570\uFF0C\u5305\u62EC\u6E29\u5EA6\u3001\u6E7F\u5EA6\u3001\u6C28\u6C14\u6D53\u5EA6\u7B49\u5173\u952E\u6307\u6807\u3002")]),m("div",{class:"card"},[m("h3",null,"\u{1F514} \u544A\u8B66\u4FE1\u606F"),m("p",null,"\u67E5\u770B\u7CFB\u7EDF\u544A\u8B66\u548C\u5F02\u5E38\u60C5\u51B5\uFF0C\u53CA\u65F6\u5904\u7406\u5404\u79CD\u8BBE\u5907\u6545\u969C\u548C\u73AF\u5883\u5F02\u5E38\u3002")]),m("div",{class:"card"},[m("h3",null,"\u{1F4CA} \u6570\u636E\u5206\u6790"),m("p",null,"\u5206\u6790\u5386\u53F2\u6570\u636E\uFF0C\u751F\u6210\u8D8B\u52BF\u56FE\u8868\uFF0C\u4E3A\u517B\u6B96\u51B3\u7B56\u63D0\u4F9B\u6570\u636E\u652F\u6301\u3002")])],-1)),m("div",ia,[t[11]||(t[11]=m("h3",null,"\u2699\uFE0F \u8BBE\u5907\u63A7\u5236",-1)),m("div",la,[m("div",ca,[t[9]||(t[9]=m("h4",null,"\u98CE\u673A\u63A7\u5236",-1)),m("div",ua,[m("button",{class:"control-btn on-btn",onClick:t[1]||(t[1]=i=>o.controlDevice("fan","on"))},"\u5F00\u542F"),m("button",{class:"control-btn off-btn",onClick:t[2]||(t[2]=i=>o.controlDevice("fan","off"))},"\u5173\u95ED")])]),m("div",aa,[t[10]||(t[10]=m("h4",null,"\u6C34\u5E18\u63A7\u5236",-1)),m("div",fa,[m("button",{class:"control-btn on-btn",onClick:t[3]||(t[3]=i=>o.controlDevice("water_curtain","on"))},"\u5F00\u542F"),m("button",{class:"control-btn off-btn",onClick:t[4]||(t[4]=i=>o.controlDevice("water_curtain","off"))},"\u5173\u95ED")])])])])])])}const pa=mn(ta,[["render",da],["__scopeId","data-v-904f2d71"]]);const ha={name:"Device",data(){return{username:localStorage.getItem("username")||"\u7BA1\u7406\u5458",devices:[],showModal:!1,editingDevice:null,deviceForm:{id:null,name:"",type:"",parent_id:null,address:null,bus_number:null,device_address:null},expandedNodes:new Set}},computed:{relayDevices(){return this.devices.filter(e=>e.type==="relay")}},mounted(){this.loadDevices()},methods:{logout(){localStorage.removeItem("authToken"),localStorage.removeItem("userId"),localStorage.removeItem("username"),this.$router.push("/")},toggleNode(e){this.expandedNodes.has(e)?this.expandedNodes.delete(e):this.expandedNodes.add(e)},getControllerDevices(e){return this.devices.filter(t=>t.parent_id===e&&(t.type==="pig_pen_controller"||t.type==="feed_mill_controller"))},getLeafDevices(e){return this.devices.filter(t=>t.parent_id===e&&(t.type==="fan"||t.type==="water_curtain"))},getDeviceTypeText(e){return{relay:"\u4E2D\u7EE7",pig_pen_controller:"\u732A\u820D\u4E3B\u63A7",feed_mill_controller:"\u505A\u6599\u8F66\u95F4\u4E3B\u63A7",fan:"\u98CE\u673A",water_curtain:"\u6C34\u5E18"}[e]||e},getParentDevices(e){return e==="pig_pen_controller"||e==="feed_mill_controller"?this.devices.filter(t=>t.type==="relay"):e==="fan"||e==="water_curtain"?this.devices.filter(t=>t.type==="pig_pen_controller"||t.type==="feed_mill_controller"):[]},getParentDevicesWithDisplayName(e){const t=this.getParentDevices(e);return e==="pig_pen_controller"||e==="feed_mill_controller"?t.map(n=>({...n,display_name:n.name})):e==="fan"||e==="water_curtain"?t.map(n=>{const s=this.devices.find(o=>o.id===n.parent_id),r=s?s.name:"\u672A\u77E5\u4E2D\u7EE7";return{...n,display_name:`${r} - ${n.name}`}}):[]},async loadDevices(){try{const e=await fetch("/api/v1/device/list",{headers:{Authorization:"Bearer "+localStorage.getItem("authToken")}}),t=await e.json();e.ok&&t.code===0?(this.devices=t.data.devices,this.expandAllNodes()):console.error("\u83B7\u53D6\u8BBE\u5907\u5217\u8868\u5931\u8D25:",t.message)}catch(e){console.error("\u83B7\u53D6\u8BBE\u5907\u5217\u8868\u5931\u8D25:",e)}},expandAllNodes(){this.expandedNodes.clear(),this.relayDevices.forEach(e=>{this.expandedNodes.add(e.id),this.getControllerDevices(e.id).forEach(n=>{this.expandedNodes.add(n.id)})})},openAddDeviceModal(){this.editingDevice=null,this.deviceForm={id:null,name:"",type:"",parent_id:null,address:null,bus_number:null,device_address:null},this.showModal=!0},editDevice(e){if(this.editingDevice=e,this.deviceForm={...e},(e.type==="fan"||e.type==="water_curtain")&&e.address){const t=e.address.split(":");t.length===2?(this.deviceForm.bus_number=parseInt(t[0]),this.deviceForm.device_address=t[1]):this.deviceForm.device_address=e.address}this.showModal=!0},initializeDeviceForm(){return{id:null,name:"",type:"",parent_id:null,address:null}},closeDeviceModal(){this.showModal=!1},async saveDevice(){if(!this.deviceForm.name||!this.deviceForm.type){alert("\u8BF7\u586B\u5199\u5FC5\u586B\u5B57\u6BB5");return}if(this.deviceForm.type!=="relay"&&!this.deviceForm.parent_id){alert("\u8BF7\u9009\u62E9\u4E0A\u7EA7\u8BBE\u5907");return}try{let e,t;const n={name:this.deviceForm.name,type:this.deviceForm.type,parent_id:this.deviceForm.parent_id,address:this.deviceForm.address,bus_number:this.deviceForm.bus_number,device_address:this.deviceForm.device_address};this.editingDevice?(e="/api/v1/device/update",t="POST",n.id=this.deviceForm.id):(e="/api/v1/device/create",t="POST");const s=await fetch(e,{method:t,headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify(n)}),r=await s.json();s.ok&&r.code===0?(await this.loadDevices(),this.closeDeviceModal()):alert("\u4FDD\u5B58\u5931\u8D25: "+r.message)}catch(e){console.error("\u4FDD\u5B58\u8BBE\u5907\u5931\u8D25:",e),alert("\u4FDD\u5B58\u8BBE\u5907\u5931\u8D25: "+e.message)}},async deleteDevice(e){if(!!confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u8BBE\u5907\u5417\uFF1F"))try{const t=await fetch("/api/v1/device/delete",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify({id:e})}),n=await t.json();t.ok&&n.code===0?await this.loadDevices():alert("\u5220\u9664\u5931\u8D25: "+n.message)}catch(t){console.error("\u5220\u9664\u8BBE\u5907\u5931\u8D25:",t),alert("\u5220\u9664\u8BBE\u5907\u5931\u8D25: "+t.message)}},toggleParentField(){this.deviceForm.type==="relay"&&(this.deviceForm.parent_id=null)},toggleNode(e){this.expandedNodes.has(e)?this.expandedNodes.delete(e):this.expandedNodes.add(e)}}},ga={class:"device-management"},ma={class:"header"},_a={class:"user-info"},va={class:"nav"},ya={class:"main-content"},ba={class:"toolbar"},xa={class:"device-tree"},Sa={key:0,class:"no-devices"},wa={key:1},Ca=["onClick"],Ea={class:"node-info"},Pa={class:"toggle-icon"},Aa={class:"node-title"},Ra={class:"node-type relay-type"},Ta={key:0,class:"node-address"},Oa={class:"node-actions"},Ma=["onClick"],Ia=["onClick"],Da={class:"children-container"},Fa=["onClick"],ka={class:"node-info"},Na={class:"toggle-icon"},La={class:"node-title"},ja={class:"node-type controller-type"},Ha={key:0,class:"node-address"},$a={class:"node-actions"},Va=["onClick"],Ba=["onClick"],Ua={class:"children-container"},Ka={class:"node-header"},Wa={class:"node-info"},qa={class:"node-title"},za={class:"node-type device-type"},Ga={key:0,class:"node-address"},Ja={class:"node-actions"},Ya=["onClick"],Qa=["onClick"],Xa={key:0,class:"modal"},Za={class:"modal-content"},ef={class:"modal-header"},tf={class:"modal-body"},nf={class:"form-group"},sf={class:"form-group"},rf={key:0,class:"form-group"},of={key:1,class:"form-group"},lf={key:2,class:"form-group"},cf={key:3,class:"form-group"},uf=["value"],af={class:"modal-footer"};function ff(e,t,n,s,r,o){const l=Jn("router-link");return U(),K("div",ga,[m("header",ma,[t[14]||(t[14]=m("h1",null,"\u8BBE\u5907\u7BA1\u7406",-1)),m("div",_a,[m("span",null,"\u6B22\u8FCE, "+X(r.username),1),m("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>o.logout&&o.logout(...i))},"\u9000\u51FA")])]),m("nav",va,[m("ul",null,[m("li",null,[ie(l,{to:"/dashboard"},{default:We(()=>[...t[15]||(t[15]=[qe("\u63A7\u5236\u53F0",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/device",class:"active"},{default:We(()=>[...t[16]||(t[16]=[qe("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/feed/plan"},{default:We(()=>[...t[17]||(t[17]=[qe("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),m("main",ya,[m("div",ba,[m("button",{class:"btn btn-primary",onClick:t[1]||(t[1]=(...i)=>o.openAddDeviceModal&&o.openAddDeviceModal(...i))},"\u6DFB\u52A0\u8BBE\u5907")]),m("div",xa,[r.devices.length===0?(U(),K("div",Sa," \u6682\u65E0\u8BBE\u5907\u6570\u636E ")):(U(),K("div",wa,[(U(!0),K(xe,null,zt(o.relayDevices,i=>(U(),K("div",{key:i.id,class:"tree-node relay-node"},[m("div",{class:"node-header",onClick:c=>o.toggleNode(i.id)},[m("div",Ea,[m("span",Pa,X(r.expandedNodes.has(i.id)?"\u25BC":"\u25BA"),1),m("span",Aa,X(i.name),1),m("span",Ra,X(o.getDeviceTypeText(i.type)),1),i.address?(U(),K("span",Ta,"["+X(i.address)+"]",1)):Ie("",!0),m("span",{class:St(["node-status",{"status-active":i.active,"status-inactive":!i.active}])},X(i.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),m("div",Oa,[m("button",{class:"action-btn edit-btn",onClick:ut(c=>o.editDevice(i),["stop"])},"\u7F16\u8F91",8,Ma),m("button",{class:"action-btn delete-btn",onClick:ut(c=>o.deleteDevice(i.id),["stop"])},"\u5220\u9664",8,Ia)])],8,Ca),Me(m("div",Da,[(U(!0),K(xe,null,zt(o.getControllerDevices(i.id),c=>(U(),K("div",{key:c.id,class:"tree-node controller-node"},[m("div",{class:"node-header",onClick:d=>o.toggleNode(c.id)},[m("div",ka,[m("span",Na,X(r.expandedNodes.has(c.id)?"\u25BC":"\u25BA"),1),m("span",La,X(c.name),1),m("span",ja,X(o.getDeviceTypeText(c.type)),1),c.address?(U(),K("span",Ha,"["+X(c.address)+"]",1)):Ie("",!0),m("span",{class:St(["node-status",{"status-active":c.active,"status-inactive":!c.active}])},X(c.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),m("div",$a,[m("button",{class:"action-btn edit-btn",onClick:ut(d=>o.editDevice(c),["stop"])},"\u7F16\u8F91",8,Va),m("button",{class:"action-btn delete-btn",onClick:ut(d=>o.deleteDevice(c.id),["stop"])},"\u5220\u9664",8,Ba)])],8,Fa),Me(m("div",Ua,[(U(!0),K(xe,null,zt(o.getLeafDevices(c.id),d=>(U(),K("div",{key:d.id,class:"tree-node device-node"},[m("div",Ka,[m("div",Wa,[m("span",qa,X(d.name),1),m("span",za,X(o.getDeviceTypeText(d.type)),1),d.address?(U(),K("span",Ga,"["+X(d.address)+"]",1)):Ie("",!0),m("span",{class:St(["node-status",{"status-active":d.active,"status-inactive":!d.active}])},X(d.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),m("div",Ja,[m("button",{class:"action-btn edit-btn",onClick:ut(a=>o.editDevice(d),["stop"])},"\u7F16\u8F91",8,Ya),m("button",{class:"action-btn delete-btn",onClick:ut(a=>o.deleteDevice(d.id),["stop"])},"\u5220\u9664",8,Qa)])])]))),128))],512),[[gr,r.expandedNodes.has(c.id)]])]))),128))],512),[[gr,r.expandedNodes.has(i.id)]])]))),128))]))])]),r.showModal?(U(),K("div",Xa,[m("div",Za,[m("div",ef,[m("h3",null,X(r.editingDevice?"\u7F16\u8F91\u8BBE\u5907":"\u6DFB\u52A0\u8BBE\u5907"),1),m("button",{class:"close-btn",onClick:t[2]||(t[2]=(...i)=>o.closeDeviceModal&&o.closeDeviceModal(...i))},"\xD7")]),m("div",tf,[m("form",{onSubmit:t[11]||(t[11]=ut((...i)=>o.saveDevice&&o.saveDevice(...i),["prevent"]))},[Me(m("input",{type:"hidden","onUpdate:modelValue":t[3]||(t[3]=i=>r.deviceForm.id=i)},null,512),[[xt,r.deviceForm.id]]),m("div",nf,[t[18]||(t[18]=m("label",{for:"deviceName"},"\u8BBE\u5907\u540D\u79F0",-1)),Me(m("input",{type:"text",id:"deviceName","onUpdate:modelValue":t[4]||(t[4]=i=>r.deviceForm.name=i),required:""},null,512),[[xt,r.deviceForm.name]])]),m("div",sf,[t[20]||(t[20]=m("label",{for:"deviceType"},"\u8BBE\u5907\u7C7B\u578B",-1)),Me(m("select",{id:"deviceType","onUpdate:modelValue":t[5]||(t[5]=i=>r.deviceForm.type=i),required:"",onChange:t[6]||(t[6]=(...i)=>o.toggleParentField&&o.toggleParentField(...i))},[...t[19]||(t[19]=[ec('',6)])],544),[[Er,r.deviceForm.type]])]),(r.deviceForm.type==="fan"||r.deviceForm.type==="water_curtain")&&r.deviceForm.type!==""?(U(),K("div",rf,[t[21]||(t[21]=m("label",{for:"busNumber"},"485\u603B\u7EBF\u53F7",-1)),Me(m("input",{type:"number",id:"busNumber","onUpdate:modelValue":t[7]||(t[7]=i=>r.deviceForm.bus_number=i),placeholder:"\u8BF7\u8F93\u5165485\u603B\u7EBF\u53F7"},null,512),[[xt,r.deviceForm.bus_number,void 0,{number:!0}]])])):Ie("",!0),(r.deviceForm.type==="fan"||r.deviceForm.type==="water_curtain")&&r.deviceForm.type!==""?(U(),K("div",of,[t[22]||(t[22]=m("label",{for:"device485Address"},"485\u8BBE\u5907\u5730\u5740",-1)),Me(m("input",{type:"text",id:"device485Address","onUpdate:modelValue":t[8]||(t[8]=i=>r.deviceForm.device_address=i),placeholder:"\u8BF7\u8F93\u5165485\u8BBE\u5907\u5730\u5740"},null,512),[[xt,r.deviceForm.device_address]])])):Ie("",!0),r.deviceForm.type!=="relay"&&r.deviceForm.type!==""&&r.deviceForm.type!=="fan"&&r.deviceForm.type!=="water_curtain"?(U(),K("div",lf,[t[23]||(t[23]=m("label",{for:"deviceAddress"},"\u8BBE\u5907\u5730\u5740",-1)),Me(m("input",{type:"text",id:"deviceAddress","onUpdate:modelValue":t[9]||(t[9]=i=>r.deviceForm.address=i),placeholder:"\u8BF7\u8F93\u5165\u8BBE\u5907\u5730\u5740"},null,512),[[xt,r.deviceForm.address]])])):Ie("",!0),r.deviceForm.type!=="relay"&&r.deviceForm.type!==""?(U(),K("div",cf,[t[25]||(t[25]=m("label",{for:"parentId"},"\u4E0A\u7EA7\u8BBE\u5907",-1)),Me(m("select",{id:"parentId","onUpdate:modelValue":t[10]||(t[10]=i=>r.deviceForm.parent_id=i)},[t[24]||(t[24]=m("option",{value:""},"\u8BF7\u9009\u62E9\u4E0A\u7EA7\u8BBE\u5907",-1)),(U(!0),K(xe,null,zt(o.getParentDevicesWithDisplayName(r.deviceForm.type),i=>(U(),K("option",{key:i.id,value:i.id},X(i.display_name),9,uf))),128))],512),[[Er,r.deviceForm.parent_id]])])):Ie("",!0)],32)]),m("div",af,[m("button",{class:"btn btn-secondary",onClick:t[12]||(t[12]=(...i)=>o.closeDeviceModal&&o.closeDeviceModal(...i))},"\u53D6\u6D88"),m("button",{class:"btn btn-primary",onClick:t[13]||(t[13]=(...i)=>o.saveDevice&&o.saveDevice(...i))},"\u4FDD\u5B58")])])])):Ie("",!0)])}const df=mn(ha,[["render",ff],["__scopeId","data-v-a2f9bd42"]]);const pf={name:"FeedPlan",data(){return{username:"",plans:[],loading:!0}},mounted(){this.username=localStorage.getItem("username")||"\u7BA1\u7406\u5458",this.loadPlans()},methods:{async loadPlans(){this.loading=!0;try{const e=await fetch("/api/v1/feed/plan/list",{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")}}),t=await e.json();e.ok&&t.code===0?this.plans=t.data.plans||[]:console.error("\u83B7\u53D6\u9972\u5582\u8BA1\u5212\u5217\u8868\u5931\u8D25:",t.message)}catch(e){console.error("\u83B7\u53D6\u9972\u5582\u8BA1\u5212\u5217\u8868\u5931\u8D25:",e)}finally{this.loading=!1}},viewDetail(e){this.$router.push(`/feed/plan/${e}`)},createPlan(){alert("\u521B\u5EFA\u8BA1\u5212\u529F\u80FD\u5F85\u5B9E\u73B0")},editPlan(e){alert(`\u7F16\u8F91\u8BA1\u5212: ${e.name}`)},async deletePlan(e){var t,n,s;if(!!confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u9972\u5582\u8BA1\u5212\u5417\uFF1F"))try{const r=await fetch("/api/v1/feed/plan/delete",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify({id:e})}),o=await r.json();r.ok&&o.code===0?(await this.loadPlans(),(t=this.$message)!=null&&t.success("\u5220\u9664\u6210\u529F")||alert("\u5220\u9664\u6210\u529F")):(n=this.$message)!=null&&n.error("\u5220\u9664\u5931\u8D25: "+o.message)||alert("\u5220\u9664\u5931\u8D25: "+o.message)}catch(r){console.error("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25:",r),(s=this.$message)!=null&&s.error("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25: "+r.message)||alert("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25: "+r.message)}},logout(){localStorage.removeItem("authToken"),localStorage.removeItem("username"),this.$router.push("/")}}},hf={class:"feed-plan-management"},gf={class:"header"},mf={class:"user-info"},_f={class:"nav"},vf={class:"main-content"},yf={class:"toolbar"},bf={class:"plan-list"},xf={key:0,class:"loading"},Sf={key:1,class:"no-plans"},wf={key:2,class:"plans-container"},Cf={class:"plan-header"},Ef={class:"plan-details"},Pf={class:"plan-description"},Af={class:"plan-meta"},Rf={class:"plan-type"},Tf={key:0,class:"plan-cron"},Of={class:"plan-actions"},Mf=["onClick"],If=["onClick"],Df=["onClick"];function Ff(e,t,n,s,r,o){const l=Jn("router-link");return U(),K("div",hf,[m("div",gf,[t[2]||(t[2]=m("h1",null,"\u9972\u5582\u8BA1\u5212\u7BA1\u7406",-1)),m("div",mf,[m("span",null,"\u6B22\u8FCE, "+X(r.username),1),m("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>o.logout&&o.logout(...i))},"\u9000\u51FA")])]),m("nav",_f,[m("ul",null,[m("li",null,[ie(l,{to:"/dashboard"},{default:We(()=>[...t[3]||(t[3]=[qe("\u63A7\u5236\u53F0",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/device"},{default:We(()=>[...t[4]||(t[4]=[qe("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),m("li",null,[ie(l,{to:"/feed/plan",class:"active"},{default:We(()=>[...t[5]||(t[5]=[qe("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),m("main",vf,[m("div",yf,[m("button",{class:"btn btn-primary",onClick:t[1]||(t[1]=(...i)=>o.createPlan&&o.createPlan(...i))},"\u521B\u5EFA\u8BA1\u5212")]),m("div",bf,[r.loading?(U(),K("div",xf," \u52A0\u8F7D\u4E2D... ")):r.plans.length===0?(U(),K("div",Sf," \u6682\u65E0\u9972\u5582\u8BA1\u5212 ")):(U(),K("div",wf,[(U(!0),K(xe,null,zt(r.plans,i=>(U(),K("div",{key:i.id,class:"plan-card"},[m("div",Cf,[m("h3",null,X(i.name),1),m("span",{class:St(["plan-status",{enabled:i.enabled,disabled:!i.enabled}])},X(i.enabled?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),3)]),m("div",Ef,[m("p",Pf,X(i.description||"\u6682\u65E0\u63CF\u8FF0"),1),m("div",Af,[m("span",Rf,X(i.type==="manual"?"\u624B\u52A8\u89E6\u53D1":"\u81EA\u52A8\u89E6\u53D1"),1),i.schedule_cron?(U(),K("span",Tf,"\u5B9A\u65F6: "+X(i.schedule_cron),1)):Ie("",!0)])]),m("div",Of,[m("button",{class:"action-btn detail-btn",onClick:c=>o.viewDetail(i.id)},"\u8BE6\u60C5",8,Mf),m("button",{class:"action-btn edit-btn",onClick:c=>o.editPlan(i)},"\u7F16\u8F91",8,If),m("button",{class:"action-btn delete-btn",onClick:c=>o.deletePlan(i.id)},"\u5220\u9664",8,Df)])]))),128))]))])])])}const kf=mn(pf,[["render",Ff],["__scopeId","data-v-181c8146"]]),Nf=[{path:"/",name:"Login",component:ea},{path:"/dashboard",name:"Dashboard",component:pa,meta:{requiresAuth:!0}},{path:"/device",name:"Device",component:df,meta:{requiresAuth:!0}},{path:"/feed/plan",name:"FeedPlan",component:kf,meta:{requiresAuth:!0}}],fi=Ku({history:yu(),routes:Nf});fi.beforeEach((e,t,n)=>{const s=localStorage.getItem("authToken");e.matched.some(r=>r.meta.requiresAuth)?s?n():n("/"):s&&e.name==="Login"?n("/dashboard"):n()});const di=Nc(Bc);di.use(fi);di.mount("#app"); diff --git a/frontend/dist/assets/index.42c8d2d4.css b/frontend/dist/assets/index.9a05129d.css similarity index 60% rename from frontend/dist/assets/index.42c8d2d4.css rename to frontend/dist/assets/index.9a05129d.css index b09bec9..15b09bb 100644 --- a/frontend/dist/assets/index.42c8d2d4.css +++ b/frontend/dist/assets/index.9a05129d.css @@ -1 +1 @@ -*{margin:0;padding:0;box-sizing:border-box}#app{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f5f7fa;min-height:100vh}.login-container[data-v-bb5c78dc]{background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 15px 35px #0003;padding:40px;width:100%;max-width:400px;text-align:center;animation:fadeIn-bb5c78dc .5s ease-out;margin:100px auto}@keyframes fadeIn-bb5c78dc{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.logo[data-v-bb5c78dc]{width:80px;height:80px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:50%;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;font-weight:700}h1[data-v-bb5c78dc]{color:#333;margin-bottom:10px;font-size:28px}.subtitle[data-v-bb5c78dc]{color:#666;margin-bottom:30px;font-size:14px}.form-group[data-v-bb5c78dc]{margin-bottom:20px;text-align:left}label[data-v-bb5c78dc]{display:block;margin-bottom:8px;color:#555;font-weight:500}input[data-v-bb5c78dc]{width:100%;padding:15px;border:2px solid #e1e1e1;border-radius:10px;font-size:16px;transition:all .3s ease;outline:none}input[data-v-bb5c78dc]:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}button[data-v-bb5c78dc]{width:100%;padding:15px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:none;border-radius:10px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}button[data-v-bb5c78dc]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 15px #667eea66}button[data-v-bb5c78dc]:disabled{opacity:.7;cursor:not-allowed}.error-message[data-v-bb5c78dc]{color:#dc3545;margin-top:15px;padding:10px;background-color:#f8d7da;border-radius:5px}.success-message[data-v-bb5c78dc]{color:#28a745;margin-top:15px;padding:10px;background-color:#d4edda;border-radius:5px}.header[data-v-904f2d71]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:20px;box-shadow:0 2px 10px #0000001a;display:flex;justify-content:space-between;align-items:center}.header h1[data-v-904f2d71]{font-size:24px;display:flex;align-items:center;gap:10px}.user-info[data-v-904f2d71]{display:flex;align-items:center;gap:15px}.logout-btn[data-v-904f2d71]{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 15px;border-radius:5px;cursor:pointer;transition:all .3s ease}.logout-btn[data-v-904f2d71]:hover{background:rgba(255,255,255,.3)}.nav[data-v-904f2d71]{background:white;padding:15px 20px;box-shadow:0 2px 5px #0000000d}.nav ul[data-v-904f2d71]{display:flex;list-style:none;gap:20px}.nav a[data-v-904f2d71]{text-decoration:none;color:#666;padding:8px 15px;border-radius:5px;transition:all .3s ease}.nav a[data-v-904f2d71]:hover,.nav a.active[data-v-904f2d71]{background:#667eea;color:#fff}.container[data-v-904f2d71]{max-width:1200px;margin:30px auto;padding:0 20px}.dashboard-grid[data-v-904f2d71]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:30px}.card[data-v-904f2d71]{background:white;border-radius:15px;box-shadow:0 5px 15px #00000014;padding:25px;transition:transform .3s ease,box-shadow .3s ease}.card[data-v-904f2d71]:hover{transform:translateY(-5px);box-shadow:0 8px 25px #0000001f}.card h3[data-v-904f2d71]{color:#333;margin-bottom:15px;display:flex;align-items:center;gap:10px}.card p[data-v-904f2d71]{color:#666;line-height:1.6}.device-control[data-v-904f2d71]{background:white;border-radius:15px;box-shadow:0 5px 15px #00000014;padding:25px;margin-bottom:30px}.control-grid[data-v-904f2d71]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:20px}.control-item[data-v-904f2d71]{background:#f8f9fa;border-radius:10px;padding:20px;text-align:center}.control-item h4[data-v-904f2d71]{margin-bottom:15px;color:#333}.control-buttons[data-v-904f2d71]{display:flex;gap:10px;justify-content:center}.control-btn[data-v-904f2d71]{padding:8px 15px;border:none;border-radius:5px;cursor:pointer;font-size:14px;transition:all .3s ease}.on-btn[data-v-904f2d71]{background:#28a745;color:#fff}.off-btn[data-v-904f2d71]{background:#dc3545;color:#fff}.control-btn[data-v-904f2d71]:hover{opacity:.9;transform:translateY(-2px)}@media (max-width: 768px){.dashboard-grid[data-v-904f2d71]{grid-template-columns:1fr}.header[data-v-904f2d71]{flex-direction:column;gap:15px}}.device-management[data-v-a2f9bd42]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.nav[data-v-a2f9bd42]{background-color:#343a40;padding:0;margin-bottom:20px}.nav ul[data-v-a2f9bd42]{list-style-type:none;margin:0;padding:0;display:flex}.nav li[data-v-a2f9bd42]{margin:0}.nav a[data-v-a2f9bd42]{display:block;padding:15px 20px;color:#fff;text-decoration:none;transition:background-color .3s}.nav a[data-v-a2f9bd42]:hover{background-color:#495057}.nav a.active[data-v-a2f9bd42]{background-color:#007bff}.header[data-v-a2f9bd42]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px #0000001a}.header h1[data-v-a2f9bd42]{margin:0;font-size:1.5rem;display:flex;align-items:center;gap:10px}.user-info[data-v-a2f9bd42]{display:flex;align-items:center;gap:1rem}.logout-btn[data-v-a2f9bd42]{background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.3);padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .3s ease}.logout-btn[data-v-a2f9bd42]:hover{background:rgba(255,255,255,.3)}.main-content[data-v-a2f9bd42]{flex:1;padding:1.5rem;overflow-y:auto}.toolbar[data-v-a2f9bd42]{margin-bottom:1.5rem;display:flex;justify-content:flex-end}.btn[data-v-a2f9bd42]{padding:.75rem 1.5rem;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .3s ease;display:inline-flex;align-items:center;gap:8px}.btn-primary[data-v-a2f9bd42]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 4px 15px #0003}.btn-primary[data-v-a2f9bd42]:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000040}.btn-secondary[data-v-a2f9bd42]{background:#f5f5f5;color:#333;border:1px solid #ddd}.btn-secondary[data-v-a2f9bd42]:hover{background:#e0e0e0}.device-tree[data-v-a2f9bd42]{background:white;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:1.5rem;overflow:hidden}.tree-node[data-v-a2f9bd42]{margin-bottom:.75rem;border-radius:8px;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.tree-node[data-v-a2f9bd42]:hover{box-shadow:0 2px 8px #00000026}.tree-node.relay-node[data-v-a2f9bd42]{background:#fff3e0;border-left:4px solid #ff9800}.tree-node.controller-node[data-v-a2f9bd42]{background:#e3f2fd;border-left:4px solid #2196f3;margin-left:1.5rem}.tree-node.device-node[data-v-a2f9bd42]{background:#e8f5e9;border-left:4px solid #4caf50;margin-left:3rem}.node-header[data-v-a2f9bd42]{display:flex;justify-content:space-between;align-items:center;padding:1rem;cursor:pointer}.node-header[data-v-a2f9bd42]:hover{background-color:#00000005}.node-info[data-v-a2f9bd42]{display:flex;align-items:center;gap:.75rem}.toggle-icon[data-v-a2f9bd42]{width:20px;text-align:center;font-size:.8rem;color:#666}.node-title[data-v-a2f9bd42]{font-weight:600;color:#333;font-size:1.1rem}.node-address[data-v-a2f9bd42]{font-size:.9rem;color:#666;background:rgba(0,0,0,.05);padding:.2rem .5rem;border-radius:4px}.node-type[data-v-a2f9bd42]{font-size:.8rem;padding:.3rem .6rem;border-radius:12px;font-weight:500;text-transform:uppercase}.node-status[data-v-a2f9bd42]{font-size:.8rem;padding:.3rem .6rem;border-radius:12px;font-weight:500}.status-active[data-v-a2f9bd42]{background:#4caf50;color:#fff}.status-inactive[data-v-a2f9bd42]{background:#9e9e9e;color:#fff}.relay-type[data-v-a2f9bd42]{background:#ff9800;color:#fff}.controller-type[data-v-a2f9bd42]{background:#2196f3;color:#fff}.device-type[data-v-a2f9bd42]{background:#4caf50;color:#fff}.node-actions[data-v-a2f9bd42]{display:flex;gap:.5rem}.action-btn[data-v-a2f9bd42]{padding:.4rem .8rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s ease}.edit-btn[data-v-a2f9bd42]{background:#1976d2;color:#fff}.edit-btn[data-v-a2f9bd42]:hover{background:#1565c0;transform:translateY(-1px)}.delete-btn[data-v-a2f9bd42]{background:#d32f2f;color:#fff}.delete-btn[data-v-a2f9bd42]:hover{background:#c62828;transform:translateY(-1px)}.children-container[data-v-a2f9bd42]{padding:.5rem 0 .5rem 1rem;border-left:2px dashed rgba(0,0,0,.1);margin-left:1rem}.modal[data-v-a2f9bd42]{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn-a2f9bd42 .3s ease}@keyframes fadeIn-a2f9bd42{0%{opacity:0}to{opacity:1}}.modal-content[data-v-a2f9bd42]{background:white;border-radius:10px;width:90%;max-width:500px;box-shadow:0 10px 30px #0000004d;animation:slideIn-a2f9bd42 .3s ease}@keyframes slideIn-a2f9bd42{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.modal-header[data-v-a2f9bd42]{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #eee}.modal-header h3[data-v-a2f9bd42]{margin:0;color:#333;font-size:1.3rem}.close-btn[data-v-a2f9bd42]{background:none;border:none;font-size:1.8rem;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:#999;transition:color .2s ease}.close-btn[data-v-a2f9bd42]:hover{color:#333}.modal-body[data-v-a2f9bd42]{padding:1.5rem}.form-group[data-v-a2f9bd42]{margin-bottom:1.5rem}.form-group label[data-v-a2f9bd42]{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group input[data-v-a2f9bd42],.form-group select[data-v-a2f9bd42]{width:100%;padding:.8rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease}.form-group input[data-v-a2f9bd42]:focus,.form-group select[data-v-a2f9bd42]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-footer[data-v-a2f9bd42]{padding:1.5rem;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:.75rem}.no-devices[data-v-a2f9bd42]{text-align:center;color:#7f8c8d;padding:3rem;font-style:italic;font-size:1.1rem}@media (max-width: 768px){.main-content[data-v-a2f9bd42],.header[data-v-a2f9bd42]{padding:1rem}.node-header[data-v-a2f9bd42]{flex-direction:column;align-items:flex-start;gap:.75rem}.node-actions[data-v-a2f9bd42]{align-self:flex-end}.tree-node.controller-node[data-v-a2f9bd42],.tree-node.device-node[data-v-a2f9bd42]{margin-left:1rem}}.feed-plan-management[data-v-181c8146]{padding:20px}.header[data-v-181c8146]{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.header h1[data-v-181c8146]{margin:0;color:#333}.user-info[data-v-181c8146]{display:flex;align-items:center;gap:15px}.logout-btn[data-v-181c8146]{padding:8px 16px;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s}.logout-btn[data-v-181c8146]:hover{background-color:#c82333}.nav[data-v-181c8146]{background-color:#343a40;padding:0;margin-bottom:20px}.nav ul[data-v-181c8146]{list-style-type:none;margin:0;padding:0;display:flex}.nav li[data-v-181c8146]{margin:0}.nav a[data-v-181c8146]{display:block;padding:15px 20px;color:#fff;text-decoration:none;transition:background-color .3s}.nav a[data-v-181c8146]:hover{background-color:#495057}.nav a.active[data-v-181c8146]{background-color:#007bff}.toolbar[data-v-181c8146]{margin-bottom:20px}.btn[data-v-181c8146]{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s}.btn-primary[data-v-181c8146]{background-color:#007bff;color:#fff}.btn-primary[data-v-181c8146]:hover{background-color:#0069d9}.plan-list[data-v-181c8146]{min-height:400px}.loading[data-v-181c8146],.no-plans[data-v-181c8146]{text-align:center;padding:50px;color:#666;font-size:16px}.plans-container[data-v-181c8146]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px}.plan-card[data-v-181c8146]{border:1px solid #ddd;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a;background-color:#fff;transition:box-shadow .3s,transform .3s}.plan-card[data-v-181c8146]:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.plan-header[data-v-181c8146]{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.plan-header h3[data-v-181c8146]{margin:0;color:#333;font-size:18px}.plan-status[data-v-181c8146]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700}.plan-status.enabled[data-v-181c8146]{background-color:#d4edda;color:#155724}.plan-status.disabled[data-v-181c8146]{background-color:#f8d7da;color:#721c24}.plan-details[data-v-181c8146]{margin-bottom:20px}.plan-description[data-v-181c8146]{margin:0 0 15px;color:#666;line-height:1.5}.plan-meta[data-v-181c8146]{display:flex;flex-wrap:wrap;gap:10px}.plan-type[data-v-181c8146],.plan-cron[data-v-181c8146]{padding:4px 8px;background-color:#e9ecef;border-radius:4px;font-size:12px;color:#495057}.plan-actions[data-v-181c8146]{display:flex;gap:10px;justify-content:flex-end}.action-btn[data-v-181c8146]{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .3s}.detail-btn[data-v-181c8146]{background-color:#17a2b8;color:#fff}.detail-btn[data-v-181c8146]:hover{background-color:#138496}.edit-btn[data-v-181c8146]{background-color:#ffc107;color:#212529}.edit-btn[data-v-181c8146]:hover{background-color:#e0a800}.delete-btn[data-v-181c8146]{background-color:#dc3545;color:#fff}.delete-btn[data-v-181c8146]:hover{background-color:#c82333}@media (max-width: 768px){.plans-container[data-v-181c8146]{grid-template-columns:1fr}.header[data-v-181c8146]{flex-direction:column;gap:15px;align-items:flex-start}.nav ul[data-v-181c8146]{flex-direction:column}} +*{margin:0;padding:0;box-sizing:border-box}#app{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f5f7fa;min-height:100vh}.login-container[data-v-bb5c78dc]{background:rgba(255,255,255,.95);backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 15px 35px #0003;padding:40px;width:100%;max-width:400px;text-align:center;animation:fadeIn-bb5c78dc .5s ease-out;margin:100px auto}@keyframes fadeIn-bb5c78dc{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.logo[data-v-bb5c78dc]{width:80px;height:80px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border-radius:50%;margin:0 auto 20px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:30px;font-weight:700}h1[data-v-bb5c78dc]{color:#333;margin-bottom:10px;font-size:28px}.subtitle[data-v-bb5c78dc]{color:#666;margin-bottom:30px;font-size:14px}.form-group[data-v-bb5c78dc]{margin-bottom:20px;text-align:left}label[data-v-bb5c78dc]{display:block;margin-bottom:8px;color:#555;font-weight:500}input[data-v-bb5c78dc]{width:100%;padding:15px;border:2px solid #e1e1e1;border-radius:10px;font-size:16px;transition:all .3s ease;outline:none}input[data-v-bb5c78dc]:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}button[data-v-bb5c78dc]{width:100%;padding:15px;background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);border:none;border-radius:10px;color:#fff;font-size:16px;font-weight:600;cursor:pointer;transition:all .3s ease}button[data-v-bb5c78dc]:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 5px 15px #667eea66}button[data-v-bb5c78dc]:disabled{opacity:.7;cursor:not-allowed}.error-message[data-v-bb5c78dc]{color:#dc3545;margin-top:15px;padding:10px;background-color:#f8d7da;border-radius:5px}.success-message[data-v-bb5c78dc]{color:#28a745;margin-top:15px;padding:10px;background-color:#d4edda;border-radius:5px}.header[data-v-904f2d71]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:20px;box-shadow:0 2px 10px #0000001a;display:flex;justify-content:space-between;align-items:center}.header h1[data-v-904f2d71]{font-size:24px;display:flex;align-items:center;gap:10px}.user-info[data-v-904f2d71]{display:flex;align-items:center;gap:15px}.logout-btn[data-v-904f2d71]{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;padding:8px 15px;border-radius:5px;cursor:pointer;transition:all .3s ease}.logout-btn[data-v-904f2d71]:hover{background:rgba(255,255,255,.3)}.nav[data-v-904f2d71]{background:white;padding:15px 20px;box-shadow:0 2px 5px #0000000d}.nav ul[data-v-904f2d71]{display:flex;list-style:none;gap:20px}.nav a[data-v-904f2d71]{text-decoration:none;color:#666;padding:8px 15px;border-radius:5px;transition:all .3s ease}.nav a[data-v-904f2d71]:hover,.nav a.active[data-v-904f2d71]{background:#667eea;color:#fff}.container[data-v-904f2d71]{max-width:1200px;margin:30px auto;padding:0 20px}.dashboard-grid[data-v-904f2d71]{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-bottom:30px}.card[data-v-904f2d71]{background:white;border-radius:15px;box-shadow:0 5px 15px #00000014;padding:25px;transition:transform .3s ease,box-shadow .3s ease}.card[data-v-904f2d71]:hover{transform:translateY(-5px);box-shadow:0 8px 25px #0000001f}.card h3[data-v-904f2d71]{color:#333;margin-bottom:15px;display:flex;align-items:center;gap:10px}.card p[data-v-904f2d71]{color:#666;line-height:1.6}.device-control[data-v-904f2d71]{background:white;border-radius:15px;box-shadow:0 5px 15px #00000014;padding:25px;margin-bottom:30px}.control-grid[data-v-904f2d71]{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:20px}.control-item[data-v-904f2d71]{background:#f8f9fa;border-radius:10px;padding:20px;text-align:center}.control-item h4[data-v-904f2d71]{margin-bottom:15px;color:#333}.control-buttons[data-v-904f2d71]{display:flex;gap:10px;justify-content:center}.control-btn[data-v-904f2d71]{padding:8px 15px;border:none;border-radius:5px;cursor:pointer;font-size:14px;transition:all .3s ease}.on-btn[data-v-904f2d71]{background:#28a745;color:#fff}.off-btn[data-v-904f2d71]{background:#dc3545;color:#fff}.control-btn[data-v-904f2d71]:hover{opacity:.9;transform:translateY(-2px)}@media (max-width: 768px){.dashboard-grid[data-v-904f2d71]{grid-template-columns:1fr}.header[data-v-904f2d71]{flex-direction:column;gap:15px}}.device-management[data-v-a2f9bd42]{height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}.nav[data-v-a2f9bd42]{background-color:#343a40;padding:0;margin-bottom:20px}.nav ul[data-v-a2f9bd42]{list-style-type:none;margin:0;padding:0;display:flex}.nav li[data-v-a2f9bd42]{margin:0}.nav a[data-v-a2f9bd42]{display:block;padding:15px 20px;color:#fff;text-decoration:none;transition:background-color .3s}.nav a[data-v-a2f9bd42]:hover{background-color:#495057}.nav a.active[data-v-a2f9bd42]{background-color:#007bff}.header[data-v-a2f9bd42]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 10px #0000001a}.header h1[data-v-a2f9bd42]{margin:0;font-size:1.5rem;display:flex;align-items:center;gap:10px}.user-info[data-v-a2f9bd42]{display:flex;align-items:center;gap:1rem}.logout-btn[data-v-a2f9bd42]{background:rgba(255,255,255,.2);color:#fff;border:1px solid rgba(255,255,255,.3);padding:.5rem 1rem;border-radius:4px;cursor:pointer;transition:all .3s ease}.logout-btn[data-v-a2f9bd42]:hover{background:rgba(255,255,255,.3)}.main-content[data-v-a2f9bd42]{flex:1;padding:1.5rem;overflow-y:auto}.toolbar[data-v-a2f9bd42]{margin-bottom:1.5rem;display:flex;justify-content:flex-end}.btn[data-v-a2f9bd42]{padding:.75rem 1.5rem;border:none;border-radius:6px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .3s ease;display:inline-flex;align-items:center;gap:8px}.btn-primary[data-v-a2f9bd42]{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;box-shadow:0 4px 15px #0003}.btn-primary[data-v-a2f9bd42]:hover{transform:translateY(-2px);box-shadow:0 6px 20px #00000040}.btn-secondary[data-v-a2f9bd42]{background:#f5f5f5;color:#333;border:1px solid #ddd}.btn-secondary[data-v-a2f9bd42]:hover{background:#e0e0e0}.device-tree[data-v-a2f9bd42]{background:white;border-radius:10px;box-shadow:0 2px 10px #0000001a;padding:1.5rem;overflow:hidden}.tree-node[data-v-a2f9bd42]{margin-bottom:.75rem;border-radius:8px;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.tree-node[data-v-a2f9bd42]:hover{box-shadow:0 2px 8px #00000026}.tree-node.relay-node[data-v-a2f9bd42]{background:#fff3e0;border-left:4px solid #ff9800}.tree-node.controller-node[data-v-a2f9bd42]{background:#e3f2fd;border-left:4px solid #2196f3;margin-left:1.5rem}.tree-node.device-node[data-v-a2f9bd42]{background:#e8f5e9;border-left:4px solid #4caf50;margin-left:3rem}.node-header[data-v-a2f9bd42]{display:flex;justify-content:space-between;align-items:center;padding:1rem;cursor:pointer}.node-header[data-v-a2f9bd42]:hover{background-color:#00000005}.node-info[data-v-a2f9bd42]{display:flex;align-items:center;gap:.75rem}.toggle-icon[data-v-a2f9bd42]{width:20px;text-align:center;font-size:.8rem;color:#666}.node-title[data-v-a2f9bd42]{font-weight:600;color:#333;font-size:1.1rem}.node-address[data-v-a2f9bd42]{font-size:.9rem;color:#666;background:rgba(0,0,0,.05);padding:.2rem .5rem;border-radius:4px}.node-type[data-v-a2f9bd42]{font-size:.8rem;padding:.3rem .6rem;border-radius:12px;font-weight:500;text-transform:uppercase}.node-status[data-v-a2f9bd42]{font-size:.8rem;padding:.3rem .6rem;border-radius:12px;font-weight:500}.status-active[data-v-a2f9bd42]{background:#4caf50;color:#fff}.status-inactive[data-v-a2f9bd42]{background:#9e9e9e;color:#fff}.relay-type[data-v-a2f9bd42]{background:#ff9800;color:#fff}.controller-type[data-v-a2f9bd42]{background:#2196f3;color:#fff}.device-type[data-v-a2f9bd42]{background:#4caf50;color:#fff}.node-actions[data-v-a2f9bd42]{display:flex;gap:.5rem}.action-btn[data-v-a2f9bd42]{padding:.4rem .8rem;border:none;border-radius:4px;cursor:pointer;font-size:.85rem;transition:all .2s ease}.edit-btn[data-v-a2f9bd42]{background:#1976d2;color:#fff}.edit-btn[data-v-a2f9bd42]:hover{background:#1565c0;transform:translateY(-1px)}.delete-btn[data-v-a2f9bd42]{background:#d32f2f;color:#fff}.delete-btn[data-v-a2f9bd42]:hover{background:#c62828;transform:translateY(-1px)}.children-container[data-v-a2f9bd42]{padding:.5rem 0 .5rem 1rem;border-left:2px dashed rgba(0,0,0,.1);margin-left:1rem}.modal[data-v-a2f9bd42]{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.5);display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn-a2f9bd42 .3s ease}@keyframes fadeIn-a2f9bd42{0%{opacity:0}to{opacity:1}}.modal-content[data-v-a2f9bd42]{background:white;border-radius:10px;width:90%;max-width:500px;box-shadow:0 10px 30px #0000004d;animation:slideIn-a2f9bd42 .3s ease}@keyframes slideIn-a2f9bd42{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.modal-header[data-v-a2f9bd42]{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;border-bottom:1px solid #eee}.modal-header h3[data-v-a2f9bd42]{margin:0;color:#333;font-size:1.3rem}.close-btn[data-v-a2f9bd42]{background:none;border:none;font-size:1.8rem;cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;color:#999;transition:color .2s ease}.close-btn[data-v-a2f9bd42]:hover{color:#333}.modal-body[data-v-a2f9bd42]{padding:1.5rem}.form-group[data-v-a2f9bd42]{margin-bottom:1.5rem}.form-group label[data-v-a2f9bd42]{display:block;margin-bottom:.5rem;font-weight:500;color:#333}.form-group input[data-v-a2f9bd42],.form-group select[data-v-a2f9bd42]{width:100%;padding:.8rem;border:1px solid #ddd;border-radius:6px;font-size:1rem;box-sizing:border-box;transition:border-color .2s ease,box-shadow .2s ease}.form-group input[data-v-a2f9bd42]:focus,.form-group select[data-v-a2f9bd42]:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.modal-footer[data-v-a2f9bd42]{padding:1.5rem;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:.75rem}.no-devices[data-v-a2f9bd42]{text-align:center;color:#7f8c8d;padding:3rem;font-style:italic;font-size:1.1rem}@media (max-width: 768px){.main-content[data-v-a2f9bd42],.header[data-v-a2f9bd42]{padding:1rem}.node-header[data-v-a2f9bd42]{flex-direction:column;align-items:flex-start;gap:.75rem}.node-actions[data-v-a2f9bd42]{align-self:flex-end}.tree-node.controller-node[data-v-a2f9bd42],.tree-node.device-node[data-v-a2f9bd42]{margin-left:1rem}}.feed-plan-management[data-v-32cbd47e]{padding:20px}.header[data-v-32cbd47e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.header h1[data-v-32cbd47e]{margin:0;color:#333}.user-info[data-v-32cbd47e]{display:flex;align-items:center;gap:15px}.logout-btn[data-v-32cbd47e]{padding:8px 16px;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s}.logout-btn[data-v-32cbd47e]:hover{background-color:#c82333}.nav[data-v-32cbd47e]{background-color:#343a40;padding:0;margin-bottom:20px}.nav ul[data-v-32cbd47e]{list-style-type:none;margin:0;padding:0;display:flex}.nav li[data-v-32cbd47e]{margin:0}.nav a[data-v-32cbd47e]{display:block;padding:15px 20px;color:#fff;text-decoration:none;transition:background-color .3s}.nav a[data-v-32cbd47e]:hover{background-color:#495057}.nav a.active[data-v-32cbd47e]{background-color:#007bff}.toolbar[data-v-32cbd47e]{margin-bottom:20px}.btn[data-v-32cbd47e]{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s}.btn-primary[data-v-32cbd47e]{background-color:#007bff;color:#fff}.btn-primary[data-v-32cbd47e]:hover{background-color:#0069d9}.plan-list[data-v-32cbd47e]{min-height:400px}.loading[data-v-32cbd47e],.no-plans[data-v-32cbd47e]{text-align:center;padding:50px;color:#666;font-size:16px}.plans-container[data-v-32cbd47e]{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));gap:20px}.plan-card[data-v-32cbd47e]{border:1px solid #ddd;border-radius:8px;padding:20px;box-shadow:0 2px 4px #0000001a;background-color:#fff;transition:box-shadow .3s,transform .3s}.plan-card[data-v-32cbd47e]:hover{box-shadow:0 4px 8px #00000026;transform:translateY(-2px)}.plan-header[data-v-32cbd47e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.plan-header h3[data-v-32cbd47e]{margin:0;color:#333;font-size:18px}.plan-status[data-v-32cbd47e]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700}.plan-status.enabled[data-v-32cbd47e]{background-color:#d4edda;color:#155724}.plan-status.disabled[data-v-32cbd47e]{background-color:#f8d7da;color:#721c24}.plan-details[data-v-32cbd47e]{margin-bottom:20px}.plan-description[data-v-32cbd47e]{margin:0 0 15px;color:#666;line-height:1.5}.plan-meta[data-v-32cbd47e]{display:flex;flex-wrap:wrap;gap:10px}.plan-type[data-v-32cbd47e],.plan-cron[data-v-32cbd47e]{padding:4px 8px;background-color:#e9ecef;border-radius:4px;font-size:12px;color:#495057}.plan-actions[data-v-32cbd47e]{display:flex;gap:10px;justify-content:flex-end}.action-btn[data-v-32cbd47e]{padding:6px 12px;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .3s}.detail-btn[data-v-32cbd47e]{background-color:#17a2b8;color:#fff}.detail-btn[data-v-32cbd47e]:hover{background-color:#138496}.edit-btn[data-v-32cbd47e]{background-color:#ffc107;color:#212529}.edit-btn[data-v-32cbd47e]:hover{background-color:#e0a800}.delete-btn[data-v-32cbd47e]{background-color:#dc3545;color:#fff}.delete-btn[data-v-32cbd47e]:hover{background-color:#c82333}@media (max-width: 768px){.plans-container[data-v-32cbd47e]{grid-template-columns:1fr}.header[data-v-32cbd47e]{flex-direction:column;gap:15px;align-items:flex-start}.nav ul[data-v-32cbd47e]{flex-direction:column}}.feed-plan-detail[data-v-6912d473]{padding:20px}.header[data-v-6912d473]{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.header h1[data-v-6912d473]{margin:0;color:#333}.user-info[data-v-6912d473]{display:flex;align-items:center;gap:15px}.logout-btn[data-v-6912d473]{padding:8px 16px;background-color:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s}.logout-btn[data-v-6912d473]:hover{background-color:#c82333}.nav[data-v-6912d473]{background-color:#343a40;padding:0;margin-bottom:20px}.nav ul[data-v-6912d473]{list-style-type:none;margin:0;padding:0;display:flex}.nav li[data-v-6912d473]{margin:0}.nav a[data-v-6912d473]{display:block;padding:15px 20px;color:#fff;text-decoration:none;transition:background-color .3s}.nav a[data-v-6912d473]:hover{background-color:#495057}.nav a.active[data-v-6912d473]{background-color:#007bff}.loading[data-v-6912d473],.error[data-v-6912d473]{text-align:center;padding:50px;font-size:16px}.loading[data-v-6912d473]{color:#666}.error[data-v-6912d473]{color:#dc3545}.plan-detail-container[data-v-6912d473]{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000001a;padding:30px}.plan-header[data-v-6912d473]{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:1px solid #eee}.plan-header h2[data-v-6912d473]{margin:0;color:#333}.plan-status[data-v-6912d473]{padding:6px 12px;border-radius:4px;font-size:14px;font-weight:700}.plan-status.enabled[data-v-6912d473]{background-color:#d4edda;color:#155724}.plan-status.disabled[data-v-6912d473]{background-color:#f8d7da;color:#721c24}.plan-info[data-v-6912d473]{margin-bottom:30px}.info-item[data-v-6912d473]{display:flex;margin-bottom:15px;align-items:center}.info-item label[data-v-6912d473]{width:150px;font-weight:700;color:#333}.info-item span[data-v-6912d473]{flex:1;color:#666}.plan-steps[data-v-6912d473],.sub-plans[data-v-6912d473]{margin-bottom:30px}.plan-steps h3[data-v-6912d473],.sub-plans h3[data-v-6912d473]{margin-top:0;margin-bottom:20px;color:#333;padding-bottom:10px;border-bottom:1px solid #eee}.steps-list[data-v-6912d473]{display:flex;flex-direction:column;gap:20px}.step-item[data-v-6912d473]{border:1px solid #ddd;border-radius:6px;padding:20px;background-color:#f8f9fa}.step-header[data-v-6912d473]{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #eee}.step-number[data-v-6912d473]{font-weight:700;color:#007bff}.step-cron[data-v-6912d473]{font-size:12px;color:#666;background-color:#e9ecef;padding:2px 6px;border-radius:3px}.step-details[data-v-6912d473]{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:15px}.detail-item[data-v-6912d473]{display:flex;flex-direction:column}.detail-item label[data-v-6912d473]{font-size:12px;color:#666;margin-bottom:3px}.detail-item span[data-v-6912d473]{font-weight:500;color:#333}.no-steps[data-v-6912d473]{text-align:center;padding:30px;color:#666;font-style:italic}.sub-plans-list[data-v-6912d473]{display:flex;flex-direction:column;gap:25px}.sub-plan-item[data-v-6912d473]{border:1px solid #ddd;border-radius:8px;padding:20px;background-color:#fff;box-shadow:0 1px 3px #0000001a}.sub-plan-header[data-v-6912d473]{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid #eee}.sub-plan-header h4[data-v-6912d473]{margin:0;color:#333}.sub-plan-info[data-v-6912d473]{margin-bottom:20px}.sub-plan-info .info-item[data-v-6912d473]{margin-bottom:10px}.sub-plan-steps h5[data-v-6912d473]{margin-top:0;margin-bottom:15px;color:#333}.actions[data-v-6912d473]{display:flex;justify-content:flex-end;gap:15px;padding-top:20px;border-top:1px solid #eee}.btn[data-v-6912d473]{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px;transition:background-color .3s}.btn-primary[data-v-6912d473]{background-color:#007bff;color:#fff}.btn-primary[data-v-6912d473]:hover{background-color:#0069d9}.btn-secondary[data-v-6912d473]{background-color:#6c757d;color:#fff}.btn-secondary[data-v-6912d473]:hover{background-color:#5a6268}@media (max-width: 768px){.header[data-v-6912d473]{flex-direction:column;gap:15px;align-items:flex-start}.nav ul[data-v-6912d473]{flex-direction:column}.info-item[data-v-6912d473]{flex-direction:column;align-items:flex-start;gap:5px}.info-item label[data-v-6912d473]{width:auto}.step-details[data-v-6912d473]{grid-template-columns:1fr}.actions[data-v-6912d473]{flex-direction:column}} diff --git a/frontend/dist/assets/index.9fd2dfb4.js b/frontend/dist/assets/index.9fd2dfb4.js new file mode 100644 index 0000000..7adc3eb --- /dev/null +++ b/frontend/dist/assets/index.9fd2dfb4.js @@ -0,0 +1,21 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const o of document.querySelectorAll('link[rel="modulepreload"]'))s(o);new MutationObserver(o=>{for(const r of o)if(r.type==="childList")for(const l of r.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(o){const r={};return o.integrity&&(r.integrity=o.integrity),o.referrerpolicy&&(r.referrerPolicy=o.referrerpolicy),o.crossorigin==="use-credentials"?r.credentials="include":o.crossorigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function s(o){if(o.ep)return;o.ep=!0;const r=n(o);fetch(o.href,r)}})();/** +* @vue/shared v3.5.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ps(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const ee={},Dt=[],Ne=()=>{},qo=()=>!1,Vn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),As=e=>e.startsWith("onUpdate:"),ue=Object.assign,Ts=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},pi=Object.prototype.hasOwnProperty,Y=(e,t)=>pi.call(e,t),V=Array.isArray,Mt=e=>pn(e)==="[object Map]",Bn=e=>pn(e)==="[object Set]",Ys=e=>pn(e)==="[object Date]",U=e=>typeof e=="function",le=e=>typeof e=="string",ze=e=>typeof e=="symbol",se=e=>e!==null&&typeof e=="object",zo=e=>(se(e)||U(e))&&U(e.then)&&U(e.catch),Go=Object.prototype.toString,pn=e=>Go.call(e),hi=e=>pn(e).slice(8,-1),Jo=e=>pn(e)==="[object Object]",Rs=e=>le(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Yt=Ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Un=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},gi=/-\w/g,De=Un(e=>e.replace(gi,t=>t.slice(1).toUpperCase())),mi=/\B([A-Z])/g,Et=Un(e=>e.replace(mi,"-$1").toLowerCase()),Kn=Un(e=>e.charAt(0).toUpperCase()+e.slice(1)),es=Un(e=>e?`on${Kn(e)}`:""),gt=(e,t)=>!Object.is(e,t),Sn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Tn=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Qs;const hn=()=>Qs||(Qs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Os(e){if(V(e)){const t={};for(let n=0;n{if(n){const s=n.split(vi);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function tt(e){let t="";if(le(e))t=e;else if(V(e))for(let n=0;nWn(n,t))}const Xo=e=>!!(e&&e.__v_isRef===!0),F=e=>le(e)?e:e==null?"":V(e)||se(e)&&(e.toString===Go||!U(e.toString))?Xo(e)?F(e.value):JSON.stringify(e,Zo,2):String(e),Zo=(e,t)=>Xo(t)?Zo(e,t.value):Mt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,o],r)=>(n[ts(s,r)+" =>"]=o,n),{})}:Bn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>ts(n))}:ze(t)?ts(t):se(t)&&!V(t)&&!Jo(t)?String(t):t,ts=(e,t="")=>{var n;return ze(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.5.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Se;class Ei{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Se,!t&&Se&&(this.index=(Se.scopes||(Se.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t0&&--this._on===0&&(Se=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n0)return;if(Xt){let t=Xt;for(Xt=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Qt;){let t=Qt;for(Qt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function sr(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function or(e){let t,n=e.depsTail,s=n;for(;s;){const o=s.prevDep;s.version===-1?(s===n&&(n=o),Ms(s),Ai(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=o}e.deps=t,e.depsTail=n}function ps(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(rr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function rr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===rn)||(e.globalVersion=rn,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ps(e))))return;e.flags|=2;const t=e.dep,n=ne,s=$e;ne=e,$e=!0;try{sr(e);const o=e.fn(e._value);(t.version===0||gt(o,e._value))&&(e.flags|=128,e._value=o,t.version++)}catch(o){throw t.version++,o}finally{ne=n,$e=s,or(e),e.flags&=-3}}function Ms(e,t=!1){const{dep:n,prevSub:s,nextSub:o}=e;if(s&&(s.nextSub=o,e.prevSub=void 0),o&&(o.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let r=n.computed.deps;r;r=r.nextDep)Ms(r,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function Ai(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let $e=!0;const ir=[];function st(){ir.push($e),$e=!1}function ot(){const e=ir.pop();$e=e===void 0?!0:e}function Xs(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=ne;ne=void 0;try{t()}finally{ne=n}}}let rn=0;class Ti{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class Fs{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ne||!$e||ne===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==ne)n=this.activeLink=new Ti(ne,this),ne.deps?(n.prevDep=ne.depsTail,ne.depsTail.nextDep=n,ne.depsTail=n):ne.deps=ne.depsTail=n,lr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=ne.depsTail,n.nextDep=void 0,ne.depsTail.nextDep=n,ne.depsTail=n,ne.deps===n&&(ne.deps=s)}return n}trigger(t){this.version++,rn++,this.notify(t)}notify(t){Is();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Ds()}}}function lr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)lr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const hs=new WeakMap,Ct=Symbol(""),gs=Symbol(""),ln=Symbol("");function ge(e,t,n){if($e&&ne){let s=hs.get(e);s||hs.set(e,s=new Map);let o=s.get(n);o||(s.set(n,o=new Fs),o.map=s,o.key=n),o.track()}}function Ze(e,t,n,s,o,r){const l=hs.get(e);if(!l){rn++;return}const i=c=>{c&&c.trigger()};if(Is(),t==="clear")l.forEach(i);else{const c=V(e),p=c&&Rs(n);if(c&&n==="length"){const u=Number(s);l.forEach((h,m)=>{(m==="length"||m===ln||!ze(m)&&m>=u)&&i(h)})}else switch((n!==void 0||l.has(void 0))&&i(l.get(n)),p&&i(l.get(ln)),t){case"add":c?p&&i(l.get("length")):(i(l.get(Ct)),Mt(e)&&i(l.get(gs)));break;case"delete":c||(i(l.get(Ct)),Mt(e)&&i(l.get(gs)));break;case"set":Mt(e)&&i(l.get(Ct));break}}Ds()}function Rt(e){const t=J(e);return t===e?t:(ge(t,"iterate",ln),Ie(e)?t:t.map(de))}function qn(e){return ge(e=J(e),"iterate",ln),e}const Ri={__proto__:null,[Symbol.iterator](){return ss(this,Symbol.iterator,de)},concat(...e){return Rt(this).concat(...e.map(t=>V(t)?Rt(t):t))},entries(){return ss(this,"entries",e=>(e[1]=de(e[1]),e))},every(e,t){return Ye(this,"every",e,t,void 0,arguments)},filter(e,t){return Ye(this,"filter",e,t,n=>n.map(de),arguments)},find(e,t){return Ye(this,"find",e,t,de,arguments)},findIndex(e,t){return Ye(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ye(this,"findLast",e,t,de,arguments)},findLastIndex(e,t){return Ye(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ye(this,"forEach",e,t,void 0,arguments)},includes(...e){return os(this,"includes",e)},indexOf(...e){return os(this,"indexOf",e)},join(e){return Rt(this).join(e)},lastIndexOf(...e){return os(this,"lastIndexOf",e)},map(e,t){return Ye(this,"map",e,t,void 0,arguments)},pop(){return Wt(this,"pop")},push(...e){return Wt(this,"push",e)},reduce(e,...t){return Zs(this,"reduce",e,t)},reduceRight(e,...t){return Zs(this,"reduceRight",e,t)},shift(){return Wt(this,"shift")},some(e,t){return Ye(this,"some",e,t,void 0,arguments)},splice(...e){return Wt(this,"splice",e)},toReversed(){return Rt(this).toReversed()},toSorted(e){return Rt(this).toSorted(e)},toSpliced(...e){return Rt(this).toSpliced(...e)},unshift(...e){return Wt(this,"unshift",e)},values(){return ss(this,"values",de)}};function ss(e,t,n){const s=qn(e),o=s[t]();return s!==e&&!Ie(e)&&(o._next=o.next,o.next=()=>{const r=o._next();return r.value&&(r.value=n(r.value)),r}),o}const Oi=Array.prototype;function Ye(e,t,n,s,o,r){const l=qn(e),i=l!==e&&!Ie(e),c=l[t];if(c!==Oi[t]){const h=c.apply(e,r);return i?de(h):h}let p=n;l!==e&&(i?p=function(h,m){return n.call(this,de(h),m,e)}:n.length>2&&(p=function(h,m){return n.call(this,h,m,e)}));const u=c.call(l,p,s);return i&&o?o(u):u}function Zs(e,t,n,s){const o=qn(e);let r=n;return o!==e&&(Ie(e)?n.length>3&&(r=function(l,i,c){return n.call(this,l,i,c,e)}):r=function(l,i,c){return n.call(this,l,de(i),c,e)}),o[t](r,...s)}function os(e,t,n){const s=J(e);ge(s,"iterate",ln);const o=s[t](...n);return(o===-1||o===!1)&&$s(n[0])?(n[0]=J(n[0]),s[t](...n)):o}function Wt(e,t,n=[]){st(),Is();const s=J(e)[t].apply(e,n);return Ds(),ot(),s}const Ii=Ps("__proto__,__v_isRef,__isVue"),cr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ze));function Di(e){ze(e)||(e=String(e));const t=J(this);return ge(t,"has",e),t.hasOwnProperty(e)}class ar{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const o=this._isReadonly,r=this._isShallow;if(n==="__v_isReactive")return!o;if(n==="__v_isReadonly")return o;if(n==="__v_isShallow")return r;if(n==="__v_raw")return s===(o?r?Bi:pr:r?dr:fr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=V(t);if(!o){let c;if(l&&(c=Ri[n]))return c;if(n==="hasOwnProperty")return Di}const i=Reflect.get(t,n,_e(t)?t:s);return(ze(n)?cr.has(n):Ii(n))||(o||ge(t,"get",n),r)?i:_e(i)?l&&Rs(n)?i:i.value:se(i)?o?gr(i):zn(i):i}}class ur extends ar{constructor(t=!1){super(!1,t)}set(t,n,s,o){let r=t[n];if(!this._isShallow){const c=mt(r);if(!Ie(s)&&!mt(s)&&(r=J(r),s=J(s)),!V(t)&&_e(r)&&!_e(s))return c||(r.value=s),!0}const l=V(t)&&Rs(n)?Number(n)e,yn=e=>Reflect.getPrototypeOf(e);function $i(e,t,n){return function(...s){const o=this.__v_raw,r=J(o),l=Mt(r),i=e==="entries"||e===Symbol.iterator&&l,c=e==="keys"&&l,p=o[e](...s),u=n?ms:t?Rn:de;return!t&&ge(r,"iterate",c?gs:Ct),{next(){const{value:h,done:m}=p.next();return m?{value:h,done:m}:{value:i?[u(h[0]),u(h[1])]:u(h),done:m}},[Symbol.iterator](){return this}}}}function bn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Li(e,t){const n={get(o){const r=this.__v_raw,l=J(r),i=J(o);e||(gt(o,i)&&ge(l,"get",o),ge(l,"get",i));const{has:c}=yn(l),p=t?ms:e?Rn:de;if(c.call(l,o))return p(r.get(o));if(c.call(l,i))return p(r.get(i));r!==l&&r.get(o)},get size(){const o=this.__v_raw;return!e&&ge(J(o),"iterate",Ct),o.size},has(o){const r=this.__v_raw,l=J(r),i=J(o);return e||(gt(o,i)&&ge(l,"has",o),ge(l,"has",i)),o===i?r.has(o):r.has(o)||r.has(i)},forEach(o,r){const l=this,i=l.__v_raw,c=J(i),p=t?ms:e?Rn:de;return!e&&ge(c,"iterate",Ct),i.forEach((u,h)=>o.call(r,p(u),p(h),l))}};return ue(n,e?{add:bn("add"),set:bn("set"),delete:bn("delete"),clear:bn("clear")}:{add(o){!t&&!Ie(o)&&!mt(o)&&(o=J(o));const r=J(this);return yn(r).has.call(r,o)||(r.add(o),Ze(r,"add",o,o)),this},set(o,r){!t&&!Ie(r)&&!mt(r)&&(r=J(r));const l=J(this),{has:i,get:c}=yn(l);let p=i.call(l,o);p||(o=J(o),p=i.call(l,o));const u=c.call(l,o);return l.set(o,r),p?gt(r,u)&&Ze(l,"set",o,r):Ze(l,"add",o,r),this},delete(o){const r=J(this),{has:l,get:i}=yn(r);let c=l.call(r,o);c||(o=J(o),c=l.call(r,o)),i&&i.call(r,o);const p=r.delete(o);return c&&Ze(r,"delete",o,void 0),p},clear(){const o=J(this),r=o.size!==0,l=o.clear();return r&&Ze(o,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(o=>{n[o]=$i(o,e,t)}),n}function ks(e,t){const n=Li(e,t);return(s,o,r)=>o==="__v_isReactive"?!e:o==="__v_isReadonly"?e:o==="__v_raw"?s:Reflect.get(Y(n,o)&&o in s?n:s,o,r)}const ji={get:ks(!1,!1)},Hi={get:ks(!1,!0)},Vi={get:ks(!0,!1)};const fr=new WeakMap,dr=new WeakMap,pr=new WeakMap,Bi=new WeakMap;function Ui(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ki(e){return e.__v_skip||!Object.isExtensible(e)?0:Ui(hi(e))}function zn(e){return mt(e)?e:Ns(e,!1,Fi,ji,fr)}function hr(e){return Ns(e,!1,Ni,Hi,dr)}function gr(e){return Ns(e,!0,ki,Vi,pr)}function Ns(e,t,n,s,o){if(!se(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=Ki(e);if(r===0)return e;const l=o.get(e);if(l)return l;const i=new Proxy(e,r===2?s:n);return o.set(e,i),i}function Ft(e){return mt(e)?Ft(e.__v_raw):!!(e&&e.__v_isReactive)}function mt(e){return!!(e&&e.__v_isReadonly)}function Ie(e){return!!(e&&e.__v_isShallow)}function $s(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function Wi(e){return!Y(e,"__v_skip")&&Object.isExtensible(e)&&Yo(e,"__v_skip",!0),e}const de=e=>se(e)?zn(e):e,Rn=e=>se(e)?gr(e):e;function _e(e){return e?e.__v_isRef===!0:!1}function qi(e){return mr(e,!1)}function zi(e){return mr(e,!0)}function mr(e,t){return _e(e)?e:new Gi(e,t)}class Gi{constructor(t,n){this.dep=new Fs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:J(t),this._value=n?t:de(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||Ie(t)||mt(t);t=s?t:J(t),gt(t,n)&&(this._rawValue=t,this._value=s?t:de(t),this.dep.trigger())}}function kt(e){return _e(e)?e.value:e}const Ji={get:(e,t,n)=>t==="__v_raw"?e:kt(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const o=e[t];return _e(o)&&!_e(n)?(o.value=n,!0):Reflect.set(e,t,n,s)}};function _r(e){return Ft(e)?e:new Proxy(e,Ji)}class Yi{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Fs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=rn-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&ne!==this)return nr(this,!0),!0}get value(){const t=this.dep.track();return rr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function Qi(e,t,n=!1){let s,o;return U(e)?s=e:(s=e.get,o=e.set),new Yi(s,o,n)}const xn={},On=new WeakMap;let xt;function Xi(e,t=!1,n=xt){if(n){let s=On.get(n);s||On.set(n,s=[]),s.push(e)}}function Zi(e,t,n=ee){const{immediate:s,deep:o,once:r,scheduler:l,augmentJob:i,call:c}=n,p=M=>o?M:Ie(M)||o===!1||o===0?et(M,1):et(M);let u,h,m,_,T=!1,O=!1;if(_e(e)?(h=()=>e.value,T=Ie(e)):Ft(e)?(h=()=>p(e),T=!0):V(e)?(O=!0,T=e.some(M=>Ft(M)||Ie(M)),h=()=>e.map(M=>{if(_e(M))return M.value;if(Ft(M))return p(M);if(U(M))return c?c(M,2):M()})):U(e)?t?h=c?()=>c(e,2):e:h=()=>{if(m){st();try{m()}finally{ot()}}const M=xt;xt=u;try{return c?c(e,3,[_]):e(_)}finally{xt=M}}:h=Ne,t&&o){const M=h,Z=o===!0?1/0:o;h=()=>et(M(),Z)}const K=Pi(),N=()=>{u.stop(),K&&K.active&&Ts(K.effects,u)};if(r&&t){const M=t;t=(...Z)=>{M(...Z),N()}}let I=O?new Array(e.length).fill(xn):xn;const j=M=>{if(!(!(u.flags&1)||!u.dirty&&!M))if(t){const Z=u.run();if(o||T||(O?Z.some((fe,ie)=>gt(fe,I[ie])):gt(Z,I))){m&&m();const fe=xt;xt=u;try{const ie=[Z,I===xn?void 0:O&&I[0]===xn?[]:I,_];I=Z,c?c(t,3,ie):t(...ie)}finally{xt=fe}}}else u.run()};return i&&i(j),u=new er(h),u.scheduler=l?()=>l(j,!1):j,_=M=>Xi(M,!1,u),m=u.onStop=()=>{const M=On.get(u);if(M){if(c)c(M,4);else for(const Z of M)Z();On.delete(u)}},t?s?j(!0):I=u.run():l?l(j.bind(null,!0),!0):u.run(),N.pause=u.pause.bind(u),N.resume=u.resume.bind(u),N.stop=N,N}function et(e,t=1/0,n){if(t<=0||!se(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,_e(e))et(e.value,t,n);else if(V(e))for(let s=0;s{et(s,t,n)});else if(Jo(e)){for(const s in e)et(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&et(e[s],t,n)}return e}/** +* @vue/runtime-core v3.5.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function gn(e,t,n,s){try{return s?e(...s):e()}catch(o){Gn(o,t,n)}}function Ge(e,t,n,s){if(U(e)){const o=gn(e,t,n,s);return o&&zo(o)&&o.catch(r=>{Gn(r,t,n)}),o}if(V(e)){const o=[];for(let r=0;r>>1,o=ye[s],r=cn(o);r=cn(n)?ye.push(e):ye.splice(tl(t),0,e),e.flags|=1,yr()}}function yr(){In||(In=vr.then(xr))}function nl(e){V(e)?Nt.push(...e):ft&&e.id===-1?ft.splice(Ot+1,0,e):e.flags&1||(Nt.push(e),e.flags|=1),yr()}function eo(e,t,n=We+1){for(;ncn(n)-cn(s));if(Nt.length=0,ft){ft.push(...t);return}for(ft=t,Ot=0;Ote.id==null?e.flags&2?-1:1/0:e.id;function xr(e){const t=Ne;try{for(We=0;We{s._d&&kn(-1);const r=Dn(t);let l;try{l=e(...o)}finally{Dn(r),s._d&&kn(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Fe(e,t){if(Te===null)return e;const n=Xn(Te),s=e.dirs||(e.dirs=[]);for(let o=0;oe.__isTeleport,rl=Symbol("_leaveCb");function Hs(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Hs(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function wr(e,t){return U(e)?(()=>ue({name:e.name},t,{setup:e}))():e}function Cr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const Mn=new WeakMap;function Zt(e,t,n,s,o=!1){if(V(e)){e.forEach((T,O)=>Zt(T,t&&(V(t)?t[O]:t),n,s,o));return}if(en(s)&&!o){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Zt(e,t,n,s.component.subTree);return}const r=s.shapeFlag&4?Xn(s.component):s.el,l=o?null:r,{i,r:c}=e,p=t&&t.r,u=i.refs===ee?i.refs={}:i.refs,h=i.setupState,m=J(h),_=h===ee?qo:T=>Y(m,T);if(p!=null&&p!==c){if(to(t),le(p))u[p]=null,_(p)&&(h[p]=null);else if(_e(p)){p.value=null;const T=t;T.k&&(u[T.k]=null)}}if(U(c))gn(c,i,12,[l,u]);else{const T=le(c),O=_e(c);if(T||O){const K=()=>{if(e.f){const N=T?_(c)?h[c]:u[c]:c.value;if(o)V(N)&&Ts(N,r);else if(V(N))N.includes(r)||N.push(r);else if(T)u[c]=[r],_(c)&&(h[c]=u[c]);else{const I=[r];c.value=I,e.k&&(u[e.k]=I)}}else T?(u[c]=l,_(c)&&(h[c]=l)):O&&(c.value=l,e.k&&(u[e.k]=l))};if(l){const N=()=>{K(),Mn.delete(e)};N.id=-1,Mn.set(e,N),Ae(N,n)}else to(e),K()}}}function to(e){const t=Mn.get(e);t&&(t.flags|=8,Mn.delete(e))}hn().requestIdleCallback;hn().cancelIdleCallback;const en=e=>!!e.type.__asyncLoader,Er=e=>e.type.__isKeepAlive;function il(e,t){Pr(e,"a",t)}function ll(e,t){Pr(e,"da",t)}function Pr(e,t,n=me){const s=e.__wdc||(e.__wdc=()=>{let o=n;for(;o;){if(o.isDeactivated)return;o=o.parent}return e()});if(Jn(t,s,n),n){let o=n.parent;for(;o&&o.parent;)Er(o.parent.vnode)&&cl(s,t,n,o),o=o.parent}}function cl(e,t,n,s){const o=Jn(t,e,s,!0);Ar(()=>{Ts(s[t],o)},n)}function Jn(e,t,n=me,s=!1){if(n){const o=n[e]||(n[e]=[]),r=t.__weh||(t.__weh=(...l)=>{st();const i=_n(n),c=Ge(t,n,e,l);return i(),ot(),c});return s?o.unshift(r):o.push(r),r}}const rt=e=>(t,n=me)=>{(!un||e==="sp")&&Jn(e,(...s)=>t(...s),n)},al=rt("bm"),ul=rt("m"),fl=rt("bu"),dl=rt("u"),pl=rt("bum"),Ar=rt("um"),hl=rt("sp"),gl=rt("rtg"),ml=rt("rtc");function _l(e,t=me){Jn("ec",e,t)}const Tr="components";function mn(e,t){return yl(Tr,e,!0,t)||e}const vl=Symbol.for("v-ndc");function yl(e,t,n=!0,s=!1){const o=Te||me;if(o){const r=o.type;if(e===Tr){const i=uc(r,!1);if(i&&(i===t||i===De(t)||i===Kn(De(t))))return r}const l=no(o[e]||r[e],t)||no(o.appContext[e],t);return!l&&s?r:l}}function no(e,t){return e&&(e[t]||e[De(t)]||e[Kn(De(t))])}function ht(e,t,n,s){let o;const r=n&&n[s],l=V(e);if(l||le(e)){const i=l&&Ft(e);let c=!1,p=!1;i&&(c=!Ie(e),p=mt(e),e=qn(e)),o=new Array(e.length);for(let u=0,h=e.length;ut(i,c,void 0,r&&r[c]));else{const i=Object.keys(e);o=new Array(i.length);for(let c=0,p=i.length;ce?zr(e)?Xn(e):_s(e.parent):null,tn=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>_s(e.parent),$root:e=>_s(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Vs(e),$forceUpdate:e=>e.f||(e.f=()=>{js(e.update)}),$nextTick:e=>e.n||(e.n=Ls.bind(e.proxy)),$watch:e=>Vl.bind(e)}),rs=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),bl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:o,props:r,accessCache:l,type:i,appContext:c}=e;let p;if(t[0]!=="$"){const _=l[t];if(_!==void 0)switch(_){case 1:return s[t];case 2:return o[t];case 4:return n[t];case 3:return r[t]}else{if(rs(s,t))return l[t]=1,s[t];if(o!==ee&&Y(o,t))return l[t]=2,o[t];if((p=e.propsOptions[0])&&Y(p,t))return l[t]=3,r[t];if(n!==ee&&Y(n,t))return l[t]=4,n[t];vs&&(l[t]=0)}}const u=tn[t];let h,m;if(u)return t==="$attrs"&&ge(e.attrs,"get",""),u(e);if((h=i.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return l[t]=4,n[t];if(m=c.config.globalProperties,Y(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:o,ctx:r}=e;return rs(o,t)?(o[t]=n,!0):s!==ee&&Y(s,t)?(s[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:o,propsOptions:r,type:l}},i){let c,p;return!!(n[i]||e!==ee&&i[0]!=="$"&&Y(e,i)||rs(t,i)||(c=r[0])&&Y(c,i)||Y(s,i)||Y(tn,i)||Y(o.config.globalProperties,i)||(p=l.__cssModules)&&p[i])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function so(e){return V(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let vs=!0;function xl(e){const t=Vs(e),n=e.proxy,s=e.ctx;vs=!1,t.beforeCreate&&oo(t.beforeCreate,e,"bc");const{data:o,computed:r,methods:l,watch:i,provide:c,inject:p,created:u,beforeMount:h,mounted:m,beforeUpdate:_,updated:T,activated:O,deactivated:K,beforeDestroy:N,beforeUnmount:I,destroyed:j,unmounted:M,render:Z,renderTracked:fe,renderTriggered:ie,errorCaptured:je,serverPrefetch:it,expose:He,inheritAttrs:lt,components:vt,directives:Ve,filters:Ut}=t;if(p&&Sl(p,s,null),l)for(const X in l){const q=l[X];U(q)&&(s[X]=q.bind(n))}if(o){const X=o.call(n,n);se(X)&&(e.data=zn(X))}if(vs=!0,r)for(const X in r){const q=r[X],Je=U(q)?q.bind(n,n):U(q.get)?q.get.bind(n,n):Ne,ct=!U(q)&&U(q.set)?q.set.bind(n):Ne,Be=ke({get:Je,set:ct});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>Be.value,set:be=>Be.value=be})}if(i)for(const X in i)Rr(i[X],s,n,X);if(c){const X=U(c)?c.call(n):c;Reflect.ownKeys(X).forEach(q=>{wn(q,X[q])})}u&&oo(u,e,"c");function ae(X,q){V(q)?q.forEach(Je=>X(Je.bind(n))):q&&X(q.bind(n))}if(ae(al,h),ae(ul,m),ae(fl,_),ae(dl,T),ae(il,O),ae(ll,K),ae(_l,je),ae(ml,fe),ae(gl,ie),ae(pl,I),ae(Ar,M),ae(hl,it),V(He))if(He.length){const X=e.exposed||(e.exposed={});He.forEach(q=>{Object.defineProperty(X,q,{get:()=>n[q],set:Je=>n[q]=Je,enumerable:!0})})}else e.exposed||(e.exposed={});Z&&e.render===Ne&&(e.render=Z),lt!=null&&(e.inheritAttrs=lt),vt&&(e.components=vt),Ve&&(e.directives=Ve),it&&Cr(e)}function Sl(e,t,n=Ne){V(e)&&(e=ys(e));for(const s in e){const o=e[s];let r;se(o)?"default"in o?r=nt(o.from||s,o.default,!0):r=nt(o.from||s):r=nt(o),_e(r)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[s]=r}}function oo(e,t,n){Ge(V(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Rr(e,t,n,s){let o=s.includes(".")?Br(n,s):()=>n[s];if(le(e)){const r=t[e];U(r)&&Cn(o,r)}else if(U(e))Cn(o,e.bind(n));else if(se(e))if(V(e))e.forEach(r=>Rr(r,t,n,s));else{const r=U(e.handler)?e.handler.bind(n):t[e.handler];U(r)&&Cn(o,r,e)}}function Vs(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:o,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,i=r.get(t);let c;return i?c=i:!o.length&&!n&&!s?c=t:(c={},o.length&&o.forEach(p=>Fn(c,p,l,!0)),Fn(c,t,l)),se(t)&&r.set(t,c),c}function Fn(e,t,n,s=!1){const{mixins:o,extends:r}=t;r&&Fn(e,r,n,!0),o&&o.forEach(l=>Fn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const i=wl[l]||n&&n[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const wl={data:ro,props:io,emits:io,methods:Jt,computed:Jt,beforeCreate:ve,created:ve,beforeMount:ve,mounted:ve,beforeUpdate:ve,updated:ve,beforeDestroy:ve,beforeUnmount:ve,destroyed:ve,unmounted:ve,activated:ve,deactivated:ve,errorCaptured:ve,serverPrefetch:ve,components:Jt,directives:Jt,watch:El,provide:ro,inject:Cl};function ro(e,t){return t?e?function(){return ue(U(e)?e.call(this,this):e,U(t)?t.call(this,this):t)}:t:e}function Cl(e,t){return Jt(ys(e),ys(t))}function ys(e){if(V(e)){const t={};for(let n=0;n1)return n&&U(t)?t.call(s&&s.proxy):t}}const Ir={},Dr=()=>Object.create(Ir),Mr=e=>Object.getPrototypeOf(e)===Ir;function Tl(e,t,n,s=!1){const o={},r=Dr();e.propsDefaults=Object.create(null),Fr(e,t,o,r);for(const l in e.propsOptions[0])l in o||(o[l]=void 0);n?e.props=s?o:hr(o):e.type.props?e.props=o:e.props=r,e.attrs=r}function Rl(e,t,n,s){const{props:o,attrs:r,vnode:{patchFlag:l}}=e,i=J(o),[c]=e.propsOptions;let p=!1;if((s||l>0)&&!(l&16)){if(l&8){const u=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,_]=kr(h,t,!0);ue(l,m),_&&i.push(..._)};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!r&&!c)return se(e)&&s.set(e,Dt),Dt;if(V(r))for(let u=0;ue==="_"||e==="_ctx"||e==="$stable",Us=e=>V(e)?e.map(qe):[qe(e)],Il=(e,t,n)=>{if(t._n)return t;const s=we((...o)=>Us(t(...o)),n);return s._c=!1,s},Nr=(e,t,n)=>{const s=e._ctx;for(const o in e){if(Bs(o))continue;const r=e[o];if(U(r))t[o]=Il(o,r,s);else if(r!=null){const l=Us(r);t[o]=()=>l}}},$r=(e,t)=>{const n=Us(t);e.slots.default=()=>n},Lr=(e,t,n)=>{for(const s in t)(n||!Bs(s))&&(e[s]=t[s])},Dl=(e,t,n)=>{const s=e.slots=Dr();if(e.vnode.shapeFlag&32){const o=t._;o?(Lr(s,t,n),n&&Yo(s,"_",o,!0)):Nr(t,s)}else t&&$r(e,t)},Ml=(e,t,n)=>{const{vnode:s,slots:o}=e;let r=!0,l=ee;if(s.shapeFlag&32){const i=t._;i?n&&i===1?r=!1:Lr(o,t,n):(r=!t.$stable,Nr(t,o)),l=t}else t&&($r(e,t),l={default:1});if(r)for(const i in o)!Bs(i)&&l[i]==null&&delete o[i]};function Fl(){typeof __VUE_PROD_HYDRATION_MISMATCH_DETAILS__!="boolean"&&(hn().__VUE_PROD_HYDRATION_MISMATCH_DETAILS__=!1)}const Ae=Jl;function kl(e){return Nl(e)}function Nl(e,t){Fl();const n=hn();n.__VUE__=!0;const{insert:s,remove:o,patchProp:r,createElement:l,createText:i,createComment:c,setText:p,setElementText:u,parentNode:h,nextSibling:m,setScopeId:_=Ne,insertStaticContent:T}=e,O=(a,d,g,b=null,v=null,x=null,E=void 0,C=null,w=!!d.dynamicChildren)=>{if(a===d)return;a&&!qt(a,d)&&(b=y(a),be(a,v,x,!0),a=null),d.patchFlag===-2&&(w=!1,d.dynamicChildren=null);const{type:S,ref:H,shapeFlag:A}=d;switch(S){case Qn:K(a,d,g,b);break;case _t:N(a,d,g,b);break;case En:a==null&&I(d,g,b,E);break;case pe:vt(a,d,g,b,v,x,E,C,w);break;default:A&1?Z(a,d,g,b,v,x,E,C,w):A&6?Ve(a,d,g,b,v,x,E,C,w):(A&64||A&128)&&S.process(a,d,g,b,v,x,E,C,w,D)}H!=null&&v?Zt(H,a&&a.ref,x,d||a,!d):H==null&&a&&a.ref!=null&&Zt(a.ref,null,x,a,!0)},K=(a,d,g,b)=>{if(a==null)s(d.el=i(d.children),g,b);else{const v=d.el=a.el;d.children!==a.children&&p(v,d.children)}},N=(a,d,g,b)=>{a==null?s(d.el=c(d.children||""),g,b):d.el=a.el},I=(a,d,g,b)=>{[a.el,a.anchor]=T(a.children,d,g,b,a.el,a.anchor)},j=({el:a,anchor:d},g,b)=>{let v;for(;a&&a!==d;)v=m(a),s(a,g,b),a=v;s(d,g,b)},M=({el:a,anchor:d})=>{let g;for(;a&&a!==d;)g=m(a),o(a),a=g;o(d)},Z=(a,d,g,b,v,x,E,C,w)=>{d.type==="svg"?E="svg":d.type==="math"&&(E="mathml"),a==null?fe(d,g,b,v,x,E,C,w):it(a,d,v,x,E,C,w)},fe=(a,d,g,b,v,x,E,C)=>{let w,S;const{props:H,shapeFlag:A,transition:k,dirs:B}=a;if(w=a.el=l(a.type,x,H&&H.is,H),A&8?u(w,a.children):A&16&&je(a.children,w,null,b,v,is(a,x),E,C),B&&yt(a,null,b,"created"),ie(w,a,a.scopeId,E,b),H){for(const te in H)te!=="value"&&!Yt(te)&&r(w,te,null,H[te],x,b);"value"in H&&r(w,"value",null,H.value,x),(S=H.onVnodeBeforeMount)&&Ke(S,b,a)}B&&yt(a,null,b,"beforeMount");const W=$l(v,k);W&&k.beforeEnter(w),s(w,d,g),((S=H&&H.onVnodeMounted)||W||B)&&Ae(()=>{S&&Ke(S,b,a),W&&k.enter(w),B&&yt(a,null,b,"mounted")},v)},ie=(a,d,g,b,v)=>{if(g&&_(a,g),b)for(let x=0;x{for(let S=w;S{const C=d.el=a.el;let{patchFlag:w,dynamicChildren:S,dirs:H}=d;w|=a.patchFlag&16;const A=a.props||ee,k=d.props||ee;let B;if(g&&bt(g,!1),(B=k.onVnodeBeforeUpdate)&&Ke(B,g,d,a),H&&yt(d,a,g,"beforeUpdate"),g&&bt(g,!0),(A.innerHTML&&k.innerHTML==null||A.textContent&&k.textContent==null)&&u(C,""),S?He(a.dynamicChildren,S,C,g,b,is(d,v),x):E||q(a,d,C,null,g,b,is(d,v),x,!1),w>0){if(w&16)lt(C,A,k,g,v);else if(w&2&&A.class!==k.class&&r(C,"class",null,k.class,v),w&4&&r(C,"style",A.style,k.style,v),w&8){const W=d.dynamicProps;for(let te=0;te{B&&Ke(B,g,d,a),H&&yt(d,a,g,"updated")},b)},He=(a,d,g,b,v,x,E)=>{for(let C=0;C{if(d!==g){if(d!==ee)for(const x in d)!Yt(x)&&!(x in g)&&r(a,x,d[x],null,v,b);for(const x in g){if(Yt(x))continue;const E=g[x],C=d[x];E!==C&&x!=="value"&&r(a,x,C,E,v,b)}"value"in g&&r(a,"value",d.value,g.value,v)}},vt=(a,d,g,b,v,x,E,C,w)=>{const S=d.el=a?a.el:i(""),H=d.anchor=a?a.anchor:i("");let{patchFlag:A,dynamicChildren:k,slotScopeIds:B}=d;B&&(C=C?C.concat(B):B),a==null?(s(S,g,b),s(H,g,b),je(d.children||[],g,H,v,x,E,C,w)):A>0&&A&64&&k&&a.dynamicChildren?(He(a.dynamicChildren,k,g,v,x,E,C),(d.key!=null||v&&d===v.subTree)&&jr(a,d,!0)):q(a,d,g,H,v,x,E,C,w)},Ve=(a,d,g,b,v,x,E,C,w)=>{d.slotScopeIds=C,a==null?d.shapeFlag&512?v.ctx.activate(d,g,b,E,w):Ut(d,g,b,v,x,E,w):Pt(a,d,w)},Ut=(a,d,g,b,v,x,E)=>{const C=a.component=oc(a,b,v);if(Er(a)&&(C.ctx.renderer=D),ic(C,!1,E),C.asyncDep){if(v&&v.registerDep(C,ae,E),!a.el){const w=C.subTree=oe(_t);N(null,w,d,g),a.placeholder=w.el}}else ae(C,a,d,g,v,x,E)},Pt=(a,d,g)=>{const b=d.component=a.component;if(zl(a,d,g))if(b.asyncDep&&!b.asyncResolved){X(b,d,g);return}else b.next=d,b.update();else d.el=a.el,b.vnode=d},ae=(a,d,g,b,v,x,E)=>{const C=()=>{if(a.isMounted){let{next:A,bu:k,u:B,parent:W,vnode:te}=a;{const Ee=Hr(a);if(Ee){A&&(A.el=te.el,X(a,A,E)),Ee.asyncDep.then(()=>{a.isUnmounted||C()});return}}let Q=A,xe;bt(a,!1),A?(A.el=te.el,X(a,A,E)):A=te,k&&Sn(k),(xe=A.props&&A.props.onVnodeBeforeUpdate)&&Ke(xe,W,A,te),bt(a,!0);const he=ls(a),Me=a.subTree;a.subTree=he,O(Me,he,h(Me.el),y(Me),a,v,x),A.el=he.el,Q===null&&Gl(a,he.el),B&&Ae(B,v),(xe=A.props&&A.props.onVnodeUpdated)&&Ae(()=>Ke(xe,W,A,te),v)}else{let A;const{el:k,props:B}=d,{bm:W,m:te,parent:Q,root:xe,type:he}=a,Me=en(d);if(bt(a,!1),W&&Sn(W),!Me&&(A=B&&B.onVnodeBeforeMount)&&Ke(A,Q,d),bt(a,!0),k&&re){const Ee=()=>{a.subTree=ls(a),re(k,a.subTree,a,v,null)};Me&&he.__asyncHydrate?he.__asyncHydrate(k,a,Ee):Ee()}else{xe.ce&&xe.ce._def.shadowRoot!==!1&&xe.ce._injectChildStyle(he);const Ee=a.subTree=ls(a);O(null,Ee,g,b,a,v,x),d.el=Ee.el}if(te&&Ae(te,v),!Me&&(A=B&&B.onVnodeMounted)){const Ee=d;Ae(()=>Ke(A,Q,Ee),v)}(d.shapeFlag&256||Q&&en(Q.vnode)&&Q.vnode.shapeFlag&256)&&a.a&&Ae(a.a,v),a.isMounted=!0,d=g=b=null}};a.scope.on();const w=a.effect=new er(C);a.scope.off();const S=a.update=w.run.bind(w),H=a.job=w.runIfDirty.bind(w);H.i=a,H.id=a.uid,w.scheduler=()=>js(H),bt(a,!0),S()},X=(a,d,g)=>{d.component=a;const b=a.vnode.props;a.vnode=d,a.next=null,Rl(a,d.props,b,g),Ml(a,d.children,g),st(),eo(a),ot()},q=(a,d,g,b,v,x,E,C,w=!1)=>{const S=a&&a.children,H=a?a.shapeFlag:0,A=d.children,{patchFlag:k,shapeFlag:B}=d;if(k>0){if(k&128){ct(S,A,g,b,v,x,E,C,w);return}else if(k&256){Je(S,A,g,b,v,x,E,C,w);return}}B&8?(H&16&&Oe(S,v,x),A!==S&&u(g,A)):H&16?B&16?ct(S,A,g,b,v,x,E,C,w):Oe(S,v,x,!0):(H&8&&u(g,""),B&16&&je(A,g,b,v,x,E,C,w))},Je=(a,d,g,b,v,x,E,C,w)=>{a=a||Dt,d=d||Dt;const S=a.length,H=d.length,A=Math.min(S,H);let k;for(k=0;kH?Oe(a,v,x,!0,!1,A):je(d,g,b,v,x,E,C,w,A)},ct=(a,d,g,b,v,x,E,C,w)=>{let S=0;const H=d.length;let A=a.length-1,k=H-1;for(;S<=A&&S<=k;){const B=a[S],W=d[S]=w?dt(d[S]):qe(d[S]);if(qt(B,W))O(B,W,g,null,v,x,E,C,w);else break;S++}for(;S<=A&&S<=k;){const B=a[A],W=d[k]=w?dt(d[k]):qe(d[k]);if(qt(B,W))O(B,W,g,null,v,x,E,C,w);else break;A--,k--}if(S>A){if(S<=k){const B=k+1,W=Bk)for(;S<=A;)be(a[S],v,x,!0),S++;else{const B=S,W=S,te=new Map;for(S=W;S<=k;S++){const Pe=d[S]=w?dt(d[S]):qe(d[S]);Pe.key!=null&&te.set(Pe.key,S)}let Q,xe=0;const he=k-W+1;let Me=!1,Ee=0;const Kt=new Array(he);for(S=0;S=he){be(Pe,v,x,!0);continue}let Ue;if(Pe.key!=null)Ue=te.get(Pe.key);else for(Q=W;Q<=k;Q++)if(Kt[Q-W]===0&&qt(Pe,d[Q])){Ue=Q;break}Ue===void 0?be(Pe,v,x,!0):(Kt[Ue-W]=S+1,Ue>=Ee?Ee=Ue:Me=!0,O(Pe,d[Ue],g,null,v,x,E,C,w),xe++)}const zs=Me?Ll(Kt):Dt;for(Q=zs.length-1,S=he-1;S>=0;S--){const Pe=W+S,Ue=d[Pe],Gs=d[Pe+1],Js=Pe+1{const{el:x,type:E,transition:C,children:w,shapeFlag:S}=a;if(S&6){Be(a.component.subTree,d,g,b);return}if(S&128){a.suspense.move(d,g,b);return}if(S&64){E.move(a,d,g,D);return}if(E===pe){s(x,d,g);for(let A=0;AC.enter(x),v);else{const{leave:A,delayLeave:k,afterLeave:B}=C,W=()=>{a.ctx.isUnmounted?o(x):s(x,d,g)},te=()=>{x._isLeaving&&x[rl](!0),A(x,()=>{W(),B&&B()})};k?k(x,W,te):te()}else s(x,d,g)},be=(a,d,g,b=!1,v=!1)=>{const{type:x,props:E,ref:C,children:w,dynamicChildren:S,shapeFlag:H,patchFlag:A,dirs:k,cacheIndex:B}=a;if(A===-2&&(v=!1),C!=null&&(st(),Zt(C,null,g,a,!0),ot()),B!=null&&(d.renderCache[B]=void 0),H&256){d.ctx.deactivate(a);return}const W=H&1&&k,te=!en(a);let Q;if(te&&(Q=E&&E.onVnodeBeforeUnmount)&&Ke(Q,d,a),H&6)vn(a.component,g,b);else{if(H&128){a.suspense.unmount(g,b);return}W&&yt(a,null,d,"beforeUnmount"),H&64?a.type.remove(a,d,g,D,b):S&&!S.hasOnce&&(x!==pe||A>0&&A&64)?Oe(S,d,g,!1,!0):(x===pe&&A&384||!v&&H&16)&&Oe(w,d,g),b&&At(a)}(te&&(Q=E&&E.onVnodeUnmounted)||W)&&Ae(()=>{Q&&Ke(Q,d,a),W&&yt(a,null,d,"unmounted")},g)},At=a=>{const{type:d,el:g,anchor:b,transition:v}=a;if(d===pe){Tt(g,b);return}if(d===En){M(a);return}const x=()=>{o(g),v&&!v.persisted&&v.afterLeave&&v.afterLeave()};if(a.shapeFlag&1&&v&&!v.persisted){const{leave:E,delayLeave:C}=v,w=()=>E(g,x);C?C(a.el,x,w):w()}else x()},Tt=(a,d)=>{let g;for(;a!==d;)g=m(a),o(a),a=g;o(d)},vn=(a,d,g)=>{const{bum:b,scope:v,job:x,subTree:E,um:C,m:w,a:S}=a;co(w),co(S),b&&Sn(b),v.stop(),x&&(x.flags|=8,be(E,a,d,g)),C&&Ae(C,d),Ae(()=>{a.isUnmounted=!0},d)},Oe=(a,d,g,b=!1,v=!1,x=0)=>{for(let E=x;E{if(a.shapeFlag&6)return y(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const d=m(a.anchor||a.el),g=d&&d[sl];return g?m(g):d};let R=!1;const P=(a,d,g)=>{a==null?d._vnode&&be(d._vnode,null,null,!0):O(d._vnode||null,a,d,null,null,null,g),d._vnode=a,R||(R=!0,eo(),br(),R=!1)},D={p:O,um:be,m:Be,r:At,mt:Ut,mc:je,pc:q,pbc:He,n:y,o:e};let z,re;return t&&([z,re]=t(D)),{render:P,hydrate:z,createApp:Al(P,z)}}function is({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function bt({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function $l(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function jr(e,t,n=!1){const s=e.children,o=t.children;if(V(s)&&V(o))for(let r=0;r>1,e[n[i]]0&&(t[s]=n[r-1]),n[r]=s)}}for(r=n.length,l=n[r-1];r-- >0;)n[r]=l,l=t[l];return n}function Hr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Hr(t)}function co(e){if(e)for(let t=0;tnt(jl);function Cn(e,t,n){return Vr(e,t,n)}function Vr(e,t,n=ee){const{immediate:s,deep:o,flush:r,once:l}=n,i=ue({},n),c=t&&s||!t&&r!=="post";let p;if(un){if(r==="sync"){const _=Hl();p=_.__watcherHandles||(_.__watcherHandles=[])}else if(!c){const _=()=>{};return _.stop=Ne,_.resume=Ne,_.pause=Ne,_}}const u=me;i.call=(_,T,O)=>Ge(_,u,T,O);let h=!1;r==="post"?i.scheduler=_=>{Ae(_,u&&u.suspense)}:r!=="sync"&&(h=!0,i.scheduler=(_,T)=>{T?_():js(_)}),i.augmentJob=_=>{t&&(_.flags|=4),h&&(_.flags|=2,u&&(_.id=u.uid,_.i=u))};const m=Zi(e,t,i);return un&&(p?p.push(m):c&&m()),m}function Vl(e,t,n){const s=this.proxy,o=le(e)?e.includes(".")?Br(s,e):()=>s[e]:e.bind(s,s);let r;U(t)?r=t:(r=t.handler,n=t);const l=_n(this),i=Vr(o,r.bind(s),n);return l(),i}function Br(e,t){const n=t.split(".");return()=>{let s=e;for(let o=0;ot==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${De(t)}Modifiers`]||e[`${Et(t)}Modifiers`];function Ul(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||ee;let o=n;const r=t.startsWith("update:"),l=r&&Bl(s,t.slice(7));l&&(l.trim&&(o=n.map(u=>le(u)?u.trim():u)),l.number&&(o=n.map(Tn)));let i,c=s[i=es(t)]||s[i=es(De(t))];!c&&r&&(c=s[i=es(Et(t))]),c&&Ge(c,e,6,o);const p=s[i+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Ge(p,e,6,o)}}const Kl=new WeakMap;function Ur(e,t,n=!1){const s=n?Kl:t.emitsCache,o=s.get(e);if(o!==void 0)return o;const r=e.emits;let l={},i=!1;if(!U(e)){const c=p=>{const u=Ur(p,t,!0);u&&(i=!0,ue(l,u))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!r&&!i?(se(e)&&s.set(e,null),null):(V(r)?r.forEach(c=>l[c]=null):ue(l,r),se(e)&&s.set(e,l),l)}function Yn(e,t){return!e||!Vn(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,Et(t))||Y(e,t))}function ls(e){const{type:t,vnode:n,proxy:s,withProxy:o,propsOptions:[r],slots:l,attrs:i,emit:c,render:p,renderCache:u,props:h,data:m,setupState:_,ctx:T,inheritAttrs:O}=e,K=Dn(e);let N,I;try{if(n.shapeFlag&4){const M=o||s,Z=M;N=qe(p.call(Z,M,u,h,_,m,T)),I=i}else{const M=t;N=qe(M.length>1?M(h,{attrs:i,slots:l,emit:c}):M(h,null)),I=t.props?i:Wl(i)}}catch(M){nn.length=0,Gn(M,e,1),N=oe(_t)}let j=N;if(I&&O!==!1){const M=Object.keys(I),{shapeFlag:Z}=j;M.length&&Z&7&&(r&&M.some(As)&&(I=ql(I,r)),j=jt(j,I,!1,!0))}return n.dirs&&(j=jt(j,null,!1,!0),j.dirs=j.dirs?j.dirs.concat(n.dirs):n.dirs),n.transition&&Hs(j,n.transition),N=j,Dn(K),N}const Wl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Vn(n))&&((t||(t={}))[n]=e[n]);return t},ql=(e,t)=>{const n={};for(const s in e)(!As(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function zl(e,t,n){const{props:s,children:o,component:r}=e,{props:l,children:i,patchFlag:c}=t,p=r.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ao(s,l,p):!!l;if(c&8){const u=t.dynamicProps;for(let h=0;he.__isSuspense;function Jl(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):nl(e)}const pe=Symbol.for("v-fgt"),Qn=Symbol.for("v-txt"),_t=Symbol.for("v-cmt"),En=Symbol.for("v-stc"),nn=[];let Re=null;function $(e=!1){nn.push(Re=e?null:[])}function Yl(){nn.pop(),Re=nn[nn.length-1]||null}let an=1;function kn(e,t=!1){an+=e,e<0&&Re&&t&&(Re.hasOnce=!0)}function Wr(e){return e.dynamicChildren=an>0?Re||Dt:null,Yl(),an>0&&Re&&Re.push(e),e}function L(e,t,n,s,o,r){return Wr(f(e,t,n,s,o,r,!0))}function Ql(e,t,n,s,o){return Wr(oe(e,t,n,s,o,!0))}function Nn(e){return e?e.__v_isVNode===!0:!1}function qt(e,t){return e.type===t.type&&e.key===t.key}const qr=({key:e})=>e!=null?e:null,Pn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?le(e)||_e(e)||U(e)?{i:Te,r:e,k:t,f:!!n}:e:null);function f(e,t=null,n=null,s=0,o=null,r=e===pe?0:1,l=!1,i=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qr(t),ref:t&&Pn(t),scopeId:Sr,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:s,dynamicProps:o,dynamicChildren:null,appContext:null,ctx:Te};return i?(Ks(c,n),r&128&&e.normalize(c)):n&&(c.shapeFlag|=le(n)?8:16),an>0&&!l&&Re&&(c.patchFlag>0||r&6)&&c.patchFlag!==32&&Re.push(c),c}const oe=Xl;function Xl(e,t=null,n=null,s=0,o=null,r=!1){if((!e||e===vl)&&(e=_t),Nn(e)){const i=jt(e,t,!0);return n&&Ks(i,n),an>0&&!r&&Re&&(i.shapeFlag&6?Re[Re.indexOf(e)]=i:Re.push(i)),i.patchFlag=-2,i}if(fc(e)&&(e=e.__vccOpts),t){t=Zl(t);let{class:i,style:c}=t;i&&!le(i)&&(t.class=tt(i)),se(c)&&($s(c)&&!V(c)&&(c=ue({},c)),t.style=Os(c))}const l=le(e)?1:Kr(e)?128:ol(e)?64:se(e)?4:U(e)?2:0;return f(e,t,n,s,o,l,r,!0)}function Zl(e){return e?$s(e)||Mr(e)?ue({},e):e:null}function jt(e,t,n=!1,s=!1){const{props:o,ref:r,patchFlag:l,children:i,transition:c}=e,p=t?tc(o||{},t):o,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&qr(p),ref:t&&t.ref?n&&r?V(r)?r.concat(Pn(t)):[r,Pn(t)]:Pn(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==pe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&jt(e.ssContent),ssFallback:e.ssFallback&&jt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&Hs(u,c.clone(u)),u}function Ce(e=" ",t=0){return oe(Qn,null,e,t)}function ec(e,t){const n=oe(En,null,e);return n.staticCount=t,n}function ce(e="",t=!1){return t?($(),Ql(_t,null,e)):oe(_t,null,e)}function qe(e){return e==null||typeof e=="boolean"?oe(_t):V(e)?oe(pe,null,e.slice()):Nn(e)?dt(e):oe(Qn,null,String(e))}function dt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:jt(e)}function Ks(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(V(t))n=16;else if(typeof t=="object")if(s&65){const o=t.default;o&&(o._c&&(o._d=!1),Ks(e,o()),o._c&&(o._d=!0));return}else{n=32;const o=t._;!o&&!Mr(t)?t._ctx=Te:o===3&&Te&&(Te.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else U(t)?(t={default:t,_ctx:Te},n=32):(t=String(t),s&64?(n=16,t=[Ce(t)]):n=8);e.children=t,e.shapeFlag|=n}function tc(...e){const t={};for(let n=0;nme||Te;let $n,xs;{const e=hn(),t=(n,s)=>{let o;return(o=e[n])||(o=e[n]=[]),o.push(s),r=>{o.length>1?o.forEach(l=>l(r)):o[0](r)}};$n=t("__VUE_INSTANCE_SETTERS__",n=>me=n),xs=t("__VUE_SSR_SETTERS__",n=>un=n)}const _n=e=>{const t=me;return $n(e),e.scope.on(),()=>{e.scope.off(),$n(t)}},uo=()=>{me&&me.scope.off(),$n(null)};function zr(e){return e.vnode.shapeFlag&4}let un=!1;function ic(e,t=!1,n=!1){t&&xs(t);const{props:s,children:o}=e.vnode,r=zr(e);Tl(e,s,r,t),Dl(e,o,n||t);const l=r?lc(e,t):void 0;return t&&xs(!1),l}function lc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,bl);const{setup:s}=n;if(s){st();const o=e.setupContext=s.length>1?ac(e):null,r=_n(e),l=gn(s,e,0,[e.props,o]),i=zo(l);if(ot(),r(),(i||e.sp)&&!en(e)&&Cr(e),i){if(l.then(uo,uo),t)return l.then(c=>{fo(e,c,t)}).catch(c=>{Gn(c,e,0)});e.asyncDep=l}else fo(e,l,t)}else Gr(e,t)}function fo(e,t,n){U(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:se(t)&&(e.setupState=_r(t)),Gr(e,n)}let po;function Gr(e,t,n){const s=e.type;if(!e.render){if(!t&&po&&!s.render){const o=s.template||Vs(e).template;if(o){const{isCustomElement:r,compilerOptions:l}=e.appContext.config,{delimiters:i,compilerOptions:c}=s,p=ue(ue({isCustomElement:r,delimiters:i},l),c);s.render=po(o,p)}}e.render=s.render||Ne}{const o=_n(e);st();try{xl(e)}finally{ot(),o()}}}const cc={get(e,t){return ge(e,"get",""),e[t]}};function ac(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,cc),slots:e.slots,emit:e.emit,expose:t}}function Xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(_r(Wi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in tn)return tn[n](e)},has(t,n){return n in t||n in tn}})):e.proxy}function uc(e,t=!0){return U(e)?e.displayName||e.name:e.name||t&&e.__name}function fc(e){return U(e)&&"__vccOpts"in e}const ke=(e,t)=>Qi(e,t,un);function Jr(e,t,n){const s=(r,l,i)=>{kn(-1);try{return oe(r,l,i)}finally{kn(1)}},o=arguments.length;return o===2?se(t)&&!V(t)?Nn(t)?s(e,null,[t]):s(e,t):s(e,null,t):(o>3?n=Array.prototype.slice.call(arguments,2):o===3&&Nn(n)&&(n=[n]),s(e,t,n))}const dc="3.5.21";/** +* @vue/runtime-dom v3.5.21 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ss;const ho=typeof window<"u"&&window.trustedTypes;if(ho)try{Ss=ho.createPolicy("vue",{createHTML:e=>e})}catch{}const Yr=Ss?e=>Ss.createHTML(e):e=>e,pc="http://www.w3.org/2000/svg",hc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,go=Xe&&Xe.createElement("template"),gc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const o=t==="svg"?Xe.createElementNS(pc,e):t==="mathml"?Xe.createElementNS(hc,e):n?Xe.createElement(e,{is:n}):Xe.createElement(e);return e==="select"&&s&&s.multiple!=null&&o.setAttribute("multiple",s.multiple),o},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,o,r){const l=n?n.previousSibling:t.lastChild;if(o&&(o===r||o.nextSibling))for(;t.insertBefore(o.cloneNode(!0),n),!(o===r||!(o=o.nextSibling)););else{go.innerHTML=Yr(s==="svg"?`${e}`:s==="mathml"?`${e}`:e);const i=go.content;if(s==="svg"||s==="mathml"){const c=i.firstChild;for(;c.firstChild;)i.appendChild(c.firstChild);i.removeChild(c)}t.insertBefore(i,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},mc=Symbol("_vtc");function _c(e,t,n){const s=e[mc];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ln=Symbol("_vod"),Qr=Symbol("_vsh"),mo={name:"show",beforeMount(e,{value:t},{transition:n}){e[Ln]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):zt(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),zt(e,!0),s.enter(e)):s.leave(e,()=>{zt(e,!1)}):zt(e,t))},beforeUnmount(e,{value:t}){zt(e,t)}};function zt(e,t){e.style.display=t?e[Ln]:"none",e[Qr]=!t}const vc=Symbol(""),yc=/(?:^|;)\s*display\s*:/;function bc(e,t,n){const s=e.style,o=le(n);let r=!1;if(n&&!o){if(t)if(le(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();n[i]==null&&An(s,i,"")}else for(const l in t)n[l]==null&&An(s,l,"");for(const l in n)l==="display"&&(r=!0),An(s,l,n[l])}else if(o){if(t!==n){const l=s[vc];l&&(n+=";"+l),s.cssText=n,r=yc.test(n)}}else t&&e.removeAttribute("style");Ln in e&&(e[Ln]=r?s.display:"",e[Qr]&&(s.display="none"))}const _o=/\s*!important$/;function An(e,t,n){if(V(n))n.forEach(s=>An(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=xc(e,t);_o.test(n)?e.setProperty(Et(s),n.replace(_o,""),"important"):e[s]=n}}const vo=["Webkit","Moz","ms"],cs={};function xc(e,t){const n=cs[t];if(n)return n;let s=De(t);if(s!=="filter"&&s in e)return cs[t]=s;s=Kn(s);for(let o=0;oas||(Ec.then(()=>as=0),as=Date.now());function Ac(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ge(Tc(s,n.value),t,5,[s])};return n.value=e,n.attached=Pc(),n}function Tc(e,t){if(V(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>o=>!o._stopped&&s&&s(o))}else return t}const Co=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Rc=(e,t,n,s,o,r)=>{const l=o==="svg";t==="class"?_c(e,s,l):t==="style"?bc(e,n,s):Vn(t)?As(t)||wc(e,t,n,s,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Oc(e,t,s,l))?(xo(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&bo(e,t,s,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!le(s))?xo(e,De(t),s,r,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),bo(e,t,s,l))};function Oc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Co(t)&&U(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const o=e.tagName;if(o==="IMG"||o==="VIDEO"||o==="CANVAS"||o==="SOURCE")return!1}return Co(t)&&le(n)?!1:t in e}const jn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?n=>Sn(t,n):t};function Ic(e){e.target.composing=!0}function Eo(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Lt=Symbol("_assign"),wt={created(e,{modifiers:{lazy:t,trim:n,number:s}},o){e[Lt]=jn(o);const r=s||o.props&&o.props.type==="number";St(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;n&&(i=i.trim()),r&&(i=Tn(i)),e[Lt](i)}),n&&St(e,"change",()=>{e.value=e.value.trim()}),t||(St(e,"compositionstart",Ic),St(e,"compositionend",Eo),St(e,"change",Eo))},mounted(e,{value:t}){e.value=t==null?"":t},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:s,trim:o,number:r}},l){if(e[Lt]=jn(l),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?Tn(e.value):e.value,c=t==null?"":t;i!==c&&(document.activeElement===e&&e.type!=="range"&&(s&&t===n||o&&e.value.trim()===c)||(e.value=c))}},Po={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const o=Bn(t);St(e,"change",()=>{const r=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?Tn(Hn(l)):Hn(l));e[Lt](e.multiple?o?new Set(r):r:r[0]),e._assigning=!0,Ls(()=>{e._assigning=!1})}),e[Lt]=jn(s)},mounted(e,{value:t}){Ao(e,t)},beforeUpdate(e,t,n){e[Lt]=jn(n)},updated(e,{value:t}){e._assigning||Ao(e,t)}};function Ao(e,t){const n=e.multiple,s=V(t);if(!(n&&!s&&!Bn(t))){for(let o=0,r=e.options.length;oString(p)===String(i)):l.selected=Ci(t,i)>-1}else l.selected=t.has(i);else if(Wn(Hn(l),t)){e.selectedIndex!==o&&(e.selectedIndex=o);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Hn(e){return"_value"in e?e._value:e.value}const Dc=["ctrl","shift","alt","meta"],Mc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Dc.some(n=>e[`${n}Key`]&&!t.includes(n))},ut=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(o,...r)=>{for(let l=0;l{const t=kc().createApp(...e),{mount:n}=t;return t.mount=s=>{const o=Lc(s);if(!o)return;const r=t._component;!U(r)&&!r.render&&!r.template&&(r.template=o.innerHTML),o.nodeType===1&&(o.textContent="");const l=n(o,!1,$c(o));return o instanceof Element&&(o.removeAttribute("v-cloak"),o.setAttribute("data-v-app","")),l},t};function $c(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Lc(e){return le(e)?document.querySelector(e):e}const Bt=(e,t)=>{const n=e.__vccOpts||e;for(const[s,o]of t)n[s]=o;return n},jc={name:"App"},Hc={id:"app"};function Vc(e,t,n,s,o,r){const l=mn("router-view");return $(),L("div",Hc,[oe(l)])}const Bc=Bt(jc,[["render",Vc]]);/*! + * vue-router v4.5.1 + * (c) 2025 Eduardo San Martin Morote + * @license MIT + */const It=typeof document<"u";function Xr(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Uc(e){return e.__esModule||e[Symbol.toStringTag]==="Module"||e.default&&Xr(e.default)}const G=Object.assign;function us(e,t){const n={};for(const s in t){const o=t[s];n[s]=Le(o)?o.map(e):e(o)}return n}const sn=()=>{},Le=Array.isArray,Zr=/#/g,Kc=/&/g,Wc=/\//g,qc=/=/g,zc=/\?/g,ei=/\+/g,Gc=/%5B/g,Jc=/%5D/g,ti=/%5E/g,Yc=/%60/g,ni=/%7B/g,Qc=/%7C/g,si=/%7D/g,Xc=/%20/g;function Ws(e){return encodeURI(""+e).replace(Qc,"|").replace(Gc,"[").replace(Jc,"]")}function Zc(e){return Ws(e).replace(ni,"{").replace(si,"}").replace(ti,"^")}function ws(e){return Ws(e).replace(ei,"%2B").replace(Xc,"+").replace(Zr,"%23").replace(Kc,"%26").replace(Yc,"`").replace(ni,"{").replace(si,"}").replace(ti,"^")}function ea(e){return ws(e).replace(qc,"%3D")}function ta(e){return Ws(e).replace(Zr,"%23").replace(zc,"%3F")}function na(e){return e==null?"":ta(e).replace(Wc,"%2F")}function fn(e){try{return decodeURIComponent(""+e)}catch{}return""+e}const sa=/\/$/,oa=e=>e.replace(sa,"");function fs(e,t,n="/"){let s,o={},r="",l="";const i=t.indexOf("#");let c=t.indexOf("?");return i=0&&(c=-1),c>-1&&(s=t.slice(0,c),r=t.slice(c+1,i>-1?i:t.length),o=e(r)),i>-1&&(s=s||t.slice(0,i),l=t.slice(i,t.length)),s=ca(s!=null?s:t,n),{fullPath:s+(r&&"?")+r+l,path:s,query:o,hash:fn(l)}}function ra(e,t){const n=t.query?e(t.query):"";return t.path+(n&&"?")+n+(t.hash||"")}function Ro(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function ia(e,t,n){const s=t.matched.length-1,o=n.matched.length-1;return s>-1&&s===o&&Ht(t.matched[s],n.matched[o])&&oi(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ht(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function oi(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!la(e[n],t[n]))return!1;return!0}function la(e,t){return Le(e)?Oo(e,t):Le(t)?Oo(t,e):e===t}function Oo(e,t){return Le(t)?e.length===t.length&&e.every((n,s)=>n===t[s]):e.length===1&&e[0]===t}function ca(e,t){if(e.startsWith("/"))return e;if(!e)return t;const n=t.split("/"),s=e.split("/"),o=s[s.length-1];(o===".."||o===".")&&s.push("");let r=n.length-1,l,i;for(l=0;l1&&r--;else break;return n.slice(0,r).join("/")+"/"+s.slice(l).join("/")}const at={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0};var dn;(function(e){e.pop="pop",e.push="push"})(dn||(dn={}));var on;(function(e){e.back="back",e.forward="forward",e.unknown=""})(on||(on={}));function aa(e){if(!e)if(It){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),oa(e)}const ua=/^[^#]+#/;function fa(e,t){return e.replace(ua,"#")+t}function da(e,t){const n=document.documentElement.getBoundingClientRect(),s=e.getBoundingClientRect();return{behavior:t.behavior,left:s.left-n.left-(t.left||0),top:s.top-n.top-(t.top||0)}}const Zn=()=>({left:window.scrollX,top:window.scrollY});function pa(e){let t;if("el"in e){const n=e.el,s=typeof n=="string"&&n.startsWith("#"),o=typeof n=="string"?s?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!o)return;t=da(o,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Io(e,t){return(history.state?history.state.position-t:-1)+e}const Cs=new Map;function ha(e,t){Cs.set(e,t)}function ga(e){const t=Cs.get(e);return Cs.delete(e),t}let ma=()=>location.protocol+"//"+location.host;function ri(e,t){const{pathname:n,search:s,hash:o}=t,r=e.indexOf("#");if(r>-1){let i=o.includes(e.slice(r))?e.slice(r).length:1,c=o.slice(i);return c[0]!=="/"&&(c="/"+c),Ro(c,"")}return Ro(n,e)+s+o}function _a(e,t,n,s){let o=[],r=[],l=null;const i=({state:m})=>{const _=ri(e,location),T=n.value,O=t.value;let K=0;if(m){if(n.value=_,t.value=m,l&&l===T){l=null;return}K=O?m.position-O.position:0}else s(_);o.forEach(N=>{N(n.value,T,{delta:K,type:dn.pop,direction:K?K>0?on.forward:on.back:on.unknown})})};function c(){l=n.value}function p(m){o.push(m);const _=()=>{const T=o.indexOf(m);T>-1&&o.splice(T,1)};return r.push(_),_}function u(){const{history:m}=window;!m.state||m.replaceState(G({},m.state,{scroll:Zn()}),"")}function h(){for(const m of r)m();r=[],window.removeEventListener("popstate",i),window.removeEventListener("beforeunload",u)}return window.addEventListener("popstate",i),window.addEventListener("beforeunload",u,{passive:!0}),{pauseListeners:c,listen:p,destroy:h}}function Do(e,t,n,s=!1,o=!1){return{back:e,current:t,forward:n,replaced:s,position:window.history.length,scroll:o?Zn():null}}function va(e){const{history:t,location:n}=window,s={value:ri(e,n)},o={value:t.state};o.value||r(s.value,{back:null,current:s.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function r(c,p,u){const h=e.indexOf("#"),m=h>-1?(n.host&&document.querySelector("base")?e:e.slice(h))+c:ma()+e+c;try{t[u?"replaceState":"pushState"](p,"",m),o.value=p}catch(_){console.error(_),n[u?"replace":"assign"](m)}}function l(c,p){const u=G({},t.state,Do(o.value.back,c,o.value.forward,!0),p,{position:o.value.position});r(c,u,!0),s.value=c}function i(c,p){const u=G({},o.value,t.state,{forward:c,scroll:Zn()});r(u.current,u,!0);const h=G({},Do(s.value,c,null),{position:u.position+1},p);r(c,h,!1),s.value=c}return{location:s,state:o,push:i,replace:l}}function ya(e){e=aa(e);const t=va(e),n=_a(e,t.state,t.location,t.replace);function s(r,l=!0){l||n.pauseListeners(),history.go(r)}const o=G({location:"",base:e,go:s,createHref:fa.bind(null,e)},t,n);return Object.defineProperty(o,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(o,"state",{enumerable:!0,get:()=>t.state.value}),o}function ba(e){return typeof e=="string"||e&&typeof e=="object"}function ii(e){return typeof e=="string"||typeof e=="symbol"}const li=Symbol("");var Mo;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(Mo||(Mo={}));function Vt(e,t){return G(new Error,{type:e,[li]:!0},t)}function Qe(e,t){return e instanceof Error&&li in e&&(t==null||!!(e.type&t))}const Fo="[^/]+?",xa={sensitive:!1,strict:!1,start:!0,end:!0},Sa=/[.+*?^${}()[\]/\\]/g;function wa(e,t){const n=G({},xa,t),s=[];let o=n.start?"^":"";const r=[];for(const p of e){const u=p.length?[]:[90];n.strict&&!p.length&&(o+="/");for(let h=0;ht.length?t.length===1&&t[0]===40+40?1:-1:0}function ci(e,t){let n=0;const s=e.score,o=t.score;for(;n0&&t[t.length-1]<0}const Ea={type:0,value:""},Pa=/[a-zA-Z0-9_]/;function Aa(e){if(!e)return[[]];if(e==="/")return[[Ea]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(_){throw new Error(`ERR (${n})/"${p}": ${_}`)}let n=0,s=n;const o=[];let r;function l(){r&&o.push(r),r=[]}let i=0,c,p="",u="";function h(){!p||(n===0?r.push({type:0,value:p}):n===1||n===2||n===3?(r.length>1&&(c==="*"||c==="+")&&t(`A repeatable param (${p}) must be alone in its segment. eg: '/:ids+.`),r.push({type:1,value:p,regexp:u,repeatable:c==="*"||c==="+",optional:c==="*"||c==="?"})):t("Invalid state to consume buffer"),p="")}function m(){p+=c}for(;i{l(j)}:sn}function l(h){if(ii(h)){const m=s.get(h);m&&(s.delete(h),n.splice(n.indexOf(m),1),m.children.forEach(l),m.alias.forEach(l))}else{const m=n.indexOf(h);m>-1&&(n.splice(m,1),h.record.name&&s.delete(h.record.name),h.children.forEach(l),h.alias.forEach(l))}}function i(){return n}function c(h){const m=Da(h,n);n.splice(m,0,h),h.record.name&&!Lo(h)&&s.set(h.record.name,h)}function p(h,m){let _,T={},O,K;if("name"in h&&h.name){if(_=s.get(h.name),!_)throw Vt(1,{location:h});K=_.record.name,T=G(No(m.params,_.keys.filter(j=>!j.optional).concat(_.parent?_.parent.keys.filter(j=>j.optional):[]).map(j=>j.name)),h.params&&No(h.params,_.keys.map(j=>j.name))),O=_.stringify(T)}else if(h.path!=null)O=h.path,_=n.find(j=>j.re.test(O)),_&&(T=_.parse(O),K=_.record.name);else{if(_=m.name?s.get(m.name):n.find(j=>j.re.test(m.path)),!_)throw Vt(1,{location:h,currentLocation:m});K=_.record.name,T=G({},m.params,h.params),O=_.stringify(T)}const N=[];let I=_;for(;I;)N.unshift(I.record),I=I.parent;return{name:K,path:O,params:T,matched:N,meta:Ia(N)}}e.forEach(h=>r(h));function u(){n.length=0,s.clear()}return{addRoute:r,resolve:p,removeRoute:l,clearRoutes:u,getRoutes:i,getRecordMatcher:o}}function No(e,t){const n={};for(const s of t)s in e&&(n[s]=e[s]);return n}function $o(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:Oa(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function Oa(e){const t={},n=e.props||!1;if("component"in e)t.default=n;else for(const s in e.components)t[s]=typeof n=="object"?n[s]:n;return t}function Lo(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function Ia(e){return e.reduce((t,n)=>G(t,n.meta),{})}function jo(e,t){const n={};for(const s in e)n[s]=s in t?t[s]:e[s];return n}function Da(e,t){let n=0,s=t.length;for(;n!==s;){const r=n+s>>1;ci(e,t[r])<0?s=r:n=r+1}const o=Ma(e);return o&&(s=t.lastIndexOf(o,s-1)),s}function Ma(e){let t=e;for(;t=t.parent;)if(ai(t)&&ci(e,t)===0)return t}function ai({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function Fa(e){const t={};if(e===""||e==="?")return t;const s=(e[0]==="?"?e.slice(1):e).split("&");for(let o=0;or&&ws(r)):[s&&ws(s)]).forEach(r=>{r!==void 0&&(t+=(t.length?"&":"")+n,r!=null&&(t+="="+r))})}return t}function ka(e){const t={};for(const n in e){const s=e[n];s!==void 0&&(t[n]=Le(s)?s.map(o=>o==null?null:""+o):s==null?s:""+s)}return t}const Na=Symbol(""),Vo=Symbol(""),qs=Symbol(""),ui=Symbol(""),Es=Symbol("");function Gt(){let e=[];function t(s){return e.push(s),()=>{const o=e.indexOf(s);o>-1&&e.splice(o,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function pt(e,t,n,s,o,r=l=>l()){const l=s&&(s.enterCallbacks[o]=s.enterCallbacks[o]||[]);return()=>new Promise((i,c)=>{const p=m=>{m===!1?c(Vt(4,{from:n,to:t})):m instanceof Error?c(m):ba(m)?c(Vt(2,{from:t,to:m})):(l&&s.enterCallbacks[o]===l&&typeof m=="function"&&l.push(m),i())},u=r(()=>e.call(s&&s.instances[o],t,n,p));let h=Promise.resolve(u);e.length<3&&(h=h.then(p)),h.catch(m=>c(m))})}function ds(e,t,n,s,o=r=>r()){const r=[];for(const l of e)for(const i in l.components){let c=l.components[i];if(!(t!=="beforeRouteEnter"&&!l.instances[i]))if(Xr(c)){const u=(c.__vccOpts||c)[t];u&&r.push(pt(u,n,s,l,i,o))}else{let p=c();r.push(()=>p.then(u=>{if(!u)throw new Error(`Couldn't resolve component "${i}" at "${l.path}"`);const h=Uc(u)?u.default:u;l.mods[i]=u,l.components[i]=h;const _=(h.__vccOpts||h)[t];return _&&pt(_,n,s,l,i,o)()}))}}return r}function Bo(e){const t=nt(qs),n=nt(ui),s=ke(()=>{const c=kt(e.to);return t.resolve(c)}),o=ke(()=>{const{matched:c}=s.value,{length:p}=c,u=c[p-1],h=n.matched;if(!u||!h.length)return-1;const m=h.findIndex(Ht.bind(null,u));if(m>-1)return m;const _=Uo(c[p-2]);return p>1&&Uo(u)===_&&h[h.length-1].path!==_?h.findIndex(Ht.bind(null,c[p-2])):m}),r=ke(()=>o.value>-1&&Va(n.params,s.value.params)),l=ke(()=>o.value>-1&&o.value===n.matched.length-1&&oi(n.params,s.value.params));function i(c={}){if(Ha(c)){const p=t[kt(e.replace)?"replace":"push"](kt(e.to)).catch(sn);return e.viewTransition&&typeof document<"u"&&"startViewTransition"in document&&document.startViewTransition(()=>p),p}return Promise.resolve()}return{route:s,href:ke(()=>s.value.href),isActive:r,isExactActive:l,navigate:i}}function $a(e){return e.length===1?e[0]:e}const La=wr({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"},viewTransition:Boolean},useLink:Bo,setup(e,{slots:t}){const n=zn(Bo(e)),{options:s}=nt(qs),o=ke(()=>({[Ko(e.activeClass,s.linkActiveClass,"router-link-active")]:n.isActive,[Ko(e.exactActiveClass,s.linkExactActiveClass,"router-link-exact-active")]:n.isExactActive}));return()=>{const r=t.default&&$a(t.default(n));return e.custom?r:Jr("a",{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:o.value},r)}}}),ja=La;function Ha(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Va(e,t){for(const n in t){const s=t[n],o=e[n];if(typeof s=="string"){if(s!==o)return!1}else if(!Le(o)||o.length!==s.length||s.some((r,l)=>r!==o[l]))return!1}return!0}function Uo(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const Ko=(e,t,n)=>e!=null?e:t!=null?t:n,Ba=wr({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const s=nt(Es),o=ke(()=>e.route||s.value),r=nt(Vo,0),l=ke(()=>{let p=kt(r);const{matched:u}=o.value;let h;for(;(h=u[p])&&!h.components;)p++;return p}),i=ke(()=>o.value.matched[l.value]);wn(Vo,ke(()=>l.value+1)),wn(Na,i),wn(Es,o);const c=qi();return Cn(()=>[c.value,i.value,e.name],([p,u,h],[m,_,T])=>{u&&(u.instances[h]=p,_&&_!==u&&p&&p===m&&(u.leaveGuards.size||(u.leaveGuards=_.leaveGuards),u.updateGuards.size||(u.updateGuards=_.updateGuards))),p&&u&&(!_||!Ht(u,_)||!m)&&(u.enterCallbacks[h]||[]).forEach(O=>O(p))},{flush:"post"}),()=>{const p=o.value,u=e.name,h=i.value,m=h&&h.components[u];if(!m)return Wo(n.default,{Component:m,route:p});const _=h.props[u],T=_?_===!0?p.params:typeof _=="function"?_(p):_:null,K=Jr(m,G({},T,t,{onVnodeUnmounted:N=>{N.component.isUnmounted&&(h.instances[u]=null)},ref:c}));return Wo(n.default,{Component:K,route:p})||K}}});function Wo(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const Ua=Ba;function Ka(e){const t=Ra(e.routes,e),n=e.parseQuery||Fa,s=e.stringifyQuery||Ho,o=e.history,r=Gt(),l=Gt(),i=Gt(),c=zi(at);let p=at;It&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const u=us.bind(null,y=>""+y),h=us.bind(null,na),m=us.bind(null,fn);function _(y,R){let P,D;return ii(y)?(P=t.getRecordMatcher(y),D=R):D=y,t.addRoute(D,P)}function T(y){const R=t.getRecordMatcher(y);R&&t.removeRoute(R)}function O(){return t.getRoutes().map(y=>y.record)}function K(y){return!!t.getRecordMatcher(y)}function N(y,R){if(R=G({},R||c.value),typeof y=="string"){const d=fs(n,y,R.path),g=t.resolve({path:d.path},R),b=o.createHref(d.fullPath);return G(d,g,{params:m(g.params),hash:fn(d.hash),redirectedFrom:void 0,href:b})}let P;if(y.path!=null)P=G({},y,{path:fs(n,y.path,R.path).path});else{const d=G({},y.params);for(const g in d)d[g]==null&&delete d[g];P=G({},y,{params:h(d)}),R.params=h(R.params)}const D=t.resolve(P,R),z=y.hash||"";D.params=u(m(D.params));const re=ra(s,G({},y,{hash:Zc(z),path:D.path})),a=o.createHref(re);return G({fullPath:re,hash:z,query:s===Ho?ka(y.query):y.query||{}},D,{redirectedFrom:void 0,href:a})}function I(y){return typeof y=="string"?fs(n,y,c.value.path):G({},y)}function j(y,R){if(p!==y)return Vt(8,{from:R,to:y})}function M(y){return ie(y)}function Z(y){return M(G(I(y),{replace:!0}))}function fe(y){const R=y.matched[y.matched.length-1];if(R&&R.redirect){const{redirect:P}=R;let D=typeof P=="function"?P(y):P;return typeof D=="string"&&(D=D.includes("?")||D.includes("#")?D=I(D):{path:D},D.params={}),G({query:y.query,hash:y.hash,params:D.path!=null?{}:y.params},D)}}function ie(y,R){const P=p=N(y),D=c.value,z=y.state,re=y.force,a=y.replace===!0,d=fe(P);if(d)return ie(G(I(d),{state:typeof d=="object"?G({},z,d.state):z,force:re,replace:a}),R||P);const g=P;g.redirectedFrom=R;let b;return!re&&ia(s,D,P)&&(b=Vt(16,{to:g,from:D}),Be(D,D,!0,!1)),(b?Promise.resolve(b):He(g,D)).catch(v=>Qe(v)?Qe(v,2)?v:ct(v):q(v,g,D)).then(v=>{if(v){if(Qe(v,2))return ie(G({replace:a},I(v.to),{state:typeof v.to=="object"?G({},z,v.to.state):z,force:re}),R||g)}else v=vt(g,D,!0,a,z);return lt(g,D,v),v})}function je(y,R){const P=j(y,R);return P?Promise.reject(P):Promise.resolve()}function it(y){const R=Tt.values().next().value;return R&&typeof R.runWithContext=="function"?R.runWithContext(y):y()}function He(y,R){let P;const[D,z,re]=Wa(y,R);P=ds(D.reverse(),"beforeRouteLeave",y,R);for(const d of D)d.leaveGuards.forEach(g=>{P.push(pt(g,y,R))});const a=je.bind(null,y,R);return P.push(a),Oe(P).then(()=>{P=[];for(const d of r.list())P.push(pt(d,y,R));return P.push(a),Oe(P)}).then(()=>{P=ds(z,"beforeRouteUpdate",y,R);for(const d of z)d.updateGuards.forEach(g=>{P.push(pt(g,y,R))});return P.push(a),Oe(P)}).then(()=>{P=[];for(const d of re)if(d.beforeEnter)if(Le(d.beforeEnter))for(const g of d.beforeEnter)P.push(pt(g,y,R));else P.push(pt(d.beforeEnter,y,R));return P.push(a),Oe(P)}).then(()=>(y.matched.forEach(d=>d.enterCallbacks={}),P=ds(re,"beforeRouteEnter",y,R,it),P.push(a),Oe(P))).then(()=>{P=[];for(const d of l.list())P.push(pt(d,y,R));return P.push(a),Oe(P)}).catch(d=>Qe(d,8)?d:Promise.reject(d))}function lt(y,R,P){i.list().forEach(D=>it(()=>D(y,R,P)))}function vt(y,R,P,D,z){const re=j(y,R);if(re)return re;const a=R===at,d=It?history.state:{};P&&(D||a?o.replace(y.fullPath,G({scroll:a&&d&&d.scroll},z)):o.push(y.fullPath,z)),c.value=y,Be(y,R,P,a),ct()}let Ve;function Ut(){Ve||(Ve=o.listen((y,R,P)=>{if(!vn.listening)return;const D=N(y),z=fe(D);if(z){ie(G(z,{replace:!0,force:!0}),D).catch(sn);return}p=D;const re=c.value;It&&ha(Io(re.fullPath,P.delta),Zn()),He(D,re).catch(a=>Qe(a,12)?a:Qe(a,2)?(ie(G(I(a.to),{force:!0}),D).then(d=>{Qe(d,20)&&!P.delta&&P.type===dn.pop&&o.go(-1,!1)}).catch(sn),Promise.reject()):(P.delta&&o.go(-P.delta,!1),q(a,D,re))).then(a=>{a=a||vt(D,re,!1),a&&(P.delta&&!Qe(a,8)?o.go(-P.delta,!1):P.type===dn.pop&&Qe(a,20)&&o.go(-1,!1)),lt(D,re,a)}).catch(sn)}))}let Pt=Gt(),ae=Gt(),X;function q(y,R,P){ct(y);const D=ae.list();return D.length?D.forEach(z=>z(y,R,P)):console.error(y),Promise.reject(y)}function Je(){return X&&c.value!==at?Promise.resolve():new Promise((y,R)=>{Pt.add([y,R])})}function ct(y){return X||(X=!y,Ut(),Pt.list().forEach(([R,P])=>y?P(y):R()),Pt.reset()),y}function Be(y,R,P,D){const{scrollBehavior:z}=e;if(!It||!z)return Promise.resolve();const re=!P&&ga(Io(y.fullPath,0))||(D||!P)&&history.state&&history.state.scroll||null;return Ls().then(()=>z(y,R,re)).then(a=>a&&pa(a)).catch(a=>q(a,y,R))}const be=y=>o.go(y);let At;const Tt=new Set,vn={currentRoute:c,listening:!0,addRoute:_,removeRoute:T,clearRoutes:t.clearRoutes,hasRoute:K,getRoutes:O,resolve:N,options:e,push:M,replace:Z,go:be,back:()=>be(-1),forward:()=>be(1),beforeEach:r.add,beforeResolve:l.add,afterEach:i.add,onError:ae.add,isReady:Je,install(y){const R=this;y.component("RouterLink",ja),y.component("RouterView",Ua),y.config.globalProperties.$router=R,Object.defineProperty(y.config.globalProperties,"$route",{enumerable:!0,get:()=>kt(c)}),It&&!At&&c.value===at&&(At=!0,M(o.location).catch(z=>{}));const P={};for(const z in at)Object.defineProperty(P,z,{get:()=>c.value[z],enumerable:!0});y.provide(qs,R),y.provide(ui,hr(P)),y.provide(Es,c);const D=y.unmount;Tt.add(y),y.unmount=function(){Tt.delete(y),Tt.size<1&&(p=at,Ve&&Ve(),Ve=null,c.value=at,At=!1,X=!1),D()}}};function Oe(y){return y.reduce((R,P)=>R.then(()=>it(P)),Promise.resolve())}return vn}function Wa(e,t){const n=[],s=[],o=[],r=Math.max(t.matched.length,e.matched.length);for(let l=0;lHt(p,i))?s.push(i):n.push(i));const c=e.matched[l];c&&(t.matched.find(p=>Ht(p,c))||o.push(c))}return[n,s,o]}const qa={name:"Login",data(){return{loginForm:{username:"",password:""},loading:!1,error:"",success:""}},methods:{async handleLogin(){this.loading=!0,this.error="",this.success="";try{const e=await fetch("/api/v1/user/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(this.loginForm)}),t=await e.json();e.ok&&t.code===0?(this.success=t.message,localStorage.setItem("authToken",t.data.token),localStorage.setItem("userId",t.data.id),localStorage.setItem("username",t.data.username),setTimeout(()=>{this.$router.push("/dashboard")},500)):this.error=t.message||"\u767B\u5F55\u5931\u8D25"}catch{this.error="\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"}finally{this.loading=!1}}}},za={class:"login-container"},Ga={class:"form-group"},Ja={class:"form-group"},Ya=["disabled"],Qa={key:0,class:"error-message"},Xa={key:1,class:"success-message"};function Za(e,t,n,s,o,r){return $(),L("div",za,[t[5]||(t[5]=f("div",{class:"logo"},"\u{1F437}",-1)),t[6]||(t[6]=f("h1",null,"\u732A\u573A\u7BA1\u7406\u7CFB\u7EDF",-1)),t[7]||(t[7]=f("p",{class:"subtitle"},"\u8BF7\u767B\u5F55\u60A8\u7684\u8D26\u6237",-1)),f("form",{onSubmit:t[2]||(t[2]=ut((...l)=>r.handleLogin&&r.handleLogin(...l),["prevent"]))},[f("div",Ga,[t[3]||(t[3]=f("label",{for:"username"},"\u7528\u6237\u540D",-1)),Fe(f("input",{type:"text",id:"username","onUpdate:modelValue":t[0]||(t[0]=l=>o.loginForm.username=l),required:"",placeholder:"\u8BF7\u8F93\u5165\u7528\u6237\u540D"},null,512),[[wt,o.loginForm.username]])]),f("div",Ja,[t[4]||(t[4]=f("label",{for:"password"},"\u5BC6\u7801",-1)),Fe(f("input",{type:"password",id:"password","onUpdate:modelValue":t[1]||(t[1]=l=>o.loginForm.password=l),required:"",placeholder:"\u8BF7\u8F93\u5165\u5BC6\u7801"},null,512),[[wt,o.loginForm.password]])]),f("button",{type:"submit",disabled:o.loading},F(o.loading?"\u767B\u5F55\u4E2D...":"\u767B\u5F55"),9,Ya)],32),o.error?($(),L("div",Qa,F(o.error),1)):ce("",!0),o.success?($(),L("div",Xa,F(o.success),1)):ce("",!0)])}const eu=Bt(qa,[["render",Za],["__scopeId","data-v-bb5c78dc"]]);const tu={name:"Dashboard",data(){return{username:localStorage.getItem("username")||"\u7BA1\u7406\u5458"}},methods:{logout(){localStorage.removeItem("authToken"),localStorage.removeItem("userId"),localStorage.removeItem("username"),this.$router.push("/")},controlDevice(e,t){alert(`\u6B63\u5728${t==="on"?"\u5F00\u542F":"\u5173\u95ED"}${e==="fan"?"\u98CE\u673A":"\u6C34\u5E18"}`)}}},nu={class:"header"},su={class:"user-info"},ou={class:"nav"},ru={class:"container"},iu={class:"device-control"},lu={class:"control-grid"},cu={class:"control-item"},au={class:"control-buttons"},uu={class:"control-item"},fu={class:"control-buttons"};function du(e,t,n,s,o,r){const l=mn("router-link");return $(),L("div",null,[f("div",nu,[t[5]||(t[5]=f("h1",null,"\u{1F437} \u732A\u573A\u7BA1\u7406\u7CFB\u7EDF",-1)),f("div",su,[f("span",null,F(o.username),1),f("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>r.logout&&r.logout(...i))},"\u9000\u51FA\u767B\u5F55")])]),f("div",ou,[f("ul",null,[f("li",null,[oe(l,{to:"/dashboard",class:"active"},{default:we(()=>[...t[6]||(t[6]=[Ce("\u63A7\u5236\u53F0",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/device"},{default:we(()=>[...t[7]||(t[7]=[Ce("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/feed/plan"},{default:we(()=>[...t[8]||(t[8]=[Ce("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),f("div",ru,[t[12]||(t[12]=f("div",{class:"dashboard-grid"},[f("div",{class:"card"},[f("h3",null,"\u{1F4C8} \u73AF\u5883\u76D1\u63A7"),f("p",null,"\u5B9E\u65F6\u76D1\u63A7\u732A\u820D\u73AF\u5883\u53C2\u6570\uFF0C\u5305\u62EC\u6E29\u5EA6\u3001\u6E7F\u5EA6\u3001\u6C28\u6C14\u6D53\u5EA6\u7B49\u5173\u952E\u6307\u6807\u3002")]),f("div",{class:"card"},[f("h3",null,"\u{1F514} \u544A\u8B66\u4FE1\u606F"),f("p",null,"\u67E5\u770B\u7CFB\u7EDF\u544A\u8B66\u548C\u5F02\u5E38\u60C5\u51B5\uFF0C\u53CA\u65F6\u5904\u7406\u5404\u79CD\u8BBE\u5907\u6545\u969C\u548C\u73AF\u5883\u5F02\u5E38\u3002")]),f("div",{class:"card"},[f("h3",null,"\u{1F4CA} \u6570\u636E\u5206\u6790"),f("p",null,"\u5206\u6790\u5386\u53F2\u6570\u636E\uFF0C\u751F\u6210\u8D8B\u52BF\u56FE\u8868\uFF0C\u4E3A\u517B\u6B96\u51B3\u7B56\u63D0\u4F9B\u6570\u636E\u652F\u6301\u3002")])],-1)),f("div",iu,[t[11]||(t[11]=f("h3",null,"\u2699\uFE0F \u8BBE\u5907\u63A7\u5236",-1)),f("div",lu,[f("div",cu,[t[9]||(t[9]=f("h4",null,"\u98CE\u673A\u63A7\u5236",-1)),f("div",au,[f("button",{class:"control-btn on-btn",onClick:t[1]||(t[1]=i=>r.controlDevice("fan","on"))},"\u5F00\u542F"),f("button",{class:"control-btn off-btn",onClick:t[2]||(t[2]=i=>r.controlDevice("fan","off"))},"\u5173\u95ED")])]),f("div",uu,[t[10]||(t[10]=f("h4",null,"\u6C34\u5E18\u63A7\u5236",-1)),f("div",fu,[f("button",{class:"control-btn on-btn",onClick:t[3]||(t[3]=i=>r.controlDevice("water_curtain","on"))},"\u5F00\u542F"),f("button",{class:"control-btn off-btn",onClick:t[4]||(t[4]=i=>r.controlDevice("water_curtain","off"))},"\u5173\u95ED")])])])])])])}const pu=Bt(tu,[["render",du],["__scopeId","data-v-904f2d71"]]);const hu={name:"Device",data(){return{username:localStorage.getItem("username")||"\u7BA1\u7406\u5458",devices:[],showModal:!1,editingDevice:null,deviceForm:{id:null,name:"",type:"",parent_id:null,address:null,bus_number:null,device_address:null},expandedNodes:new Set}},computed:{relayDevices(){return this.devices.filter(e=>e.type==="relay")}},mounted(){this.loadDevices()},methods:{logout(){localStorage.removeItem("authToken"),localStorage.removeItem("userId"),localStorage.removeItem("username"),this.$router.push("/")},toggleNode(e){this.expandedNodes.has(e)?this.expandedNodes.delete(e):this.expandedNodes.add(e)},getControllerDevices(e){return this.devices.filter(t=>t.parent_id===e&&(t.type==="pig_pen_controller"||t.type==="feed_mill_controller"))},getLeafDevices(e){return this.devices.filter(t=>t.parent_id===e&&(t.type==="fan"||t.type==="water_curtain"))},getDeviceTypeText(e){return{relay:"\u4E2D\u7EE7",pig_pen_controller:"\u732A\u820D\u4E3B\u63A7",feed_mill_controller:"\u505A\u6599\u8F66\u95F4\u4E3B\u63A7",fan:"\u98CE\u673A",water_curtain:"\u6C34\u5E18"}[e]||e},getParentDevices(e){return e==="pig_pen_controller"||e==="feed_mill_controller"?this.devices.filter(t=>t.type==="relay"):e==="fan"||e==="water_curtain"?this.devices.filter(t=>t.type==="pig_pen_controller"||t.type==="feed_mill_controller"):[]},getParentDevicesWithDisplayName(e){const t=this.getParentDevices(e);return e==="pig_pen_controller"||e==="feed_mill_controller"?t.map(n=>({...n,display_name:n.name})):e==="fan"||e==="water_curtain"?t.map(n=>{const s=this.devices.find(r=>r.id===n.parent_id),o=s?s.name:"\u672A\u77E5\u4E2D\u7EE7";return{...n,display_name:`${o} - ${n.name}`}}):[]},async loadDevices(){try{const e=await fetch("/api/v1/device/list",{headers:{Authorization:"Bearer "+localStorage.getItem("authToken")}}),t=await e.json();e.ok&&t.code===0?(this.devices=t.data.devices,this.expandAllNodes()):console.error("\u83B7\u53D6\u8BBE\u5907\u5217\u8868\u5931\u8D25:",t.message)}catch(e){console.error("\u83B7\u53D6\u8BBE\u5907\u5217\u8868\u5931\u8D25:",e)}},expandAllNodes(){this.expandedNodes.clear(),this.relayDevices.forEach(e=>{this.expandedNodes.add(e.id),this.getControllerDevices(e.id).forEach(n=>{this.expandedNodes.add(n.id)})})},openAddDeviceModal(){this.editingDevice=null,this.deviceForm={id:null,name:"",type:"",parent_id:null,address:null,bus_number:null,device_address:null},this.showModal=!0},editDevice(e){if(this.editingDevice=e,this.deviceForm={...e},(e.type==="fan"||e.type==="water_curtain")&&e.address){const t=e.address.split(":");t.length===2?(this.deviceForm.bus_number=parseInt(t[0]),this.deviceForm.device_address=t[1]):this.deviceForm.device_address=e.address}this.showModal=!0},initializeDeviceForm(){return{id:null,name:"",type:"",parent_id:null,address:null}},closeDeviceModal(){this.showModal=!1},async saveDevice(){if(!this.deviceForm.name||!this.deviceForm.type){alert("\u8BF7\u586B\u5199\u5FC5\u586B\u5B57\u6BB5");return}if(this.deviceForm.type!=="relay"&&!this.deviceForm.parent_id){alert("\u8BF7\u9009\u62E9\u4E0A\u7EA7\u8BBE\u5907");return}try{let e,t;const n={name:this.deviceForm.name,type:this.deviceForm.type,parent_id:this.deviceForm.parent_id,address:this.deviceForm.address,bus_number:this.deviceForm.bus_number,device_address:this.deviceForm.device_address};this.editingDevice?(e="/api/v1/device/update",t="POST",n.id=this.deviceForm.id):(e="/api/v1/device/create",t="POST");const s=await fetch(e,{method:t,headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify(n)}),o=await s.json();s.ok&&o.code===0?(await this.loadDevices(),this.closeDeviceModal()):alert("\u4FDD\u5B58\u5931\u8D25: "+o.message)}catch(e){console.error("\u4FDD\u5B58\u8BBE\u5907\u5931\u8D25:",e),alert("\u4FDD\u5B58\u8BBE\u5907\u5931\u8D25: "+e.message)}},async deleteDevice(e){if(!!confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u8BBE\u5907\u5417\uFF1F"))try{const t=await fetch("/api/v1/device/delete",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify({id:e})}),n=await t.json();t.ok&&n.code===0?await this.loadDevices():alert("\u5220\u9664\u5931\u8D25: "+n.message)}catch(t){console.error("\u5220\u9664\u8BBE\u5907\u5931\u8D25:",t),alert("\u5220\u9664\u8BBE\u5907\u5931\u8D25: "+t.message)}},toggleParentField(){this.deviceForm.type==="relay"&&(this.deviceForm.parent_id=null)},toggleNode(e){this.expandedNodes.has(e)?this.expandedNodes.delete(e):this.expandedNodes.add(e)}}},gu={class:"device-management"},mu={class:"header"},_u={class:"user-info"},vu={class:"nav"},yu={class:"main-content"},bu={class:"toolbar"},xu={class:"device-tree"},Su={key:0,class:"no-devices"},wu={key:1},Cu=["onClick"],Eu={class:"node-info"},Pu={class:"toggle-icon"},Au={class:"node-title"},Tu={class:"node-type relay-type"},Ru={key:0,class:"node-address"},Ou={class:"node-actions"},Iu=["onClick"],Du=["onClick"],Mu={class:"children-container"},Fu=["onClick"],ku={class:"node-info"},Nu={class:"toggle-icon"},$u={class:"node-title"},Lu={class:"node-type controller-type"},ju={key:0,class:"node-address"},Hu={class:"node-actions"},Vu=["onClick"],Bu=["onClick"],Uu={class:"children-container"},Ku={class:"node-header"},Wu={class:"node-info"},qu={class:"node-title"},zu={class:"node-type device-type"},Gu={key:0,class:"node-address"},Ju={class:"node-actions"},Yu=["onClick"],Qu=["onClick"],Xu={key:0,class:"modal"},Zu={class:"modal-content"},ef={class:"modal-header"},tf={class:"modal-body"},nf={class:"form-group"},sf={class:"form-group"},of={key:0,class:"form-group"},rf={key:1,class:"form-group"},lf={key:2,class:"form-group"},cf={key:3,class:"form-group"},af=["value"],uf={class:"modal-footer"};function ff(e,t,n,s,o,r){const l=mn("router-link");return $(),L("div",gu,[f("header",mu,[t[14]||(t[14]=f("h1",null,"\u8BBE\u5907\u7BA1\u7406",-1)),f("div",_u,[f("span",null,"\u6B22\u8FCE, "+F(o.username),1),f("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>r.logout&&r.logout(...i))},"\u9000\u51FA")])]),f("nav",vu,[f("ul",null,[f("li",null,[oe(l,{to:"/dashboard"},{default:we(()=>[...t[15]||(t[15]=[Ce("\u63A7\u5236\u53F0",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/device",class:"active"},{default:we(()=>[...t[16]||(t[16]=[Ce("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/feed/plan"},{default:we(()=>[...t[17]||(t[17]=[Ce("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),f("main",yu,[f("div",bu,[f("button",{class:"btn btn-primary",onClick:t[1]||(t[1]=(...i)=>r.openAddDeviceModal&&r.openAddDeviceModal(...i))},"\u6DFB\u52A0\u8BBE\u5907")]),f("div",xu,[o.devices.length===0?($(),L("div",Su," \u6682\u65E0\u8BBE\u5907\u6570\u636E ")):($(),L("div",wu,[($(!0),L(pe,null,ht(r.relayDevices,i=>($(),L("div",{key:i.id,class:"tree-node relay-node"},[f("div",{class:"node-header",onClick:c=>r.toggleNode(i.id)},[f("div",Eu,[f("span",Pu,F(o.expandedNodes.has(i.id)?"\u25BC":"\u25BA"),1),f("span",Au,F(i.name),1),f("span",Tu,F(r.getDeviceTypeText(i.type)),1),i.address?($(),L("span",Ru,"["+F(i.address)+"]",1)):ce("",!0),f("span",{class:tt(["node-status",{"status-active":i.active,"status-inactive":!i.active}])},F(i.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),f("div",Ou,[f("button",{class:"action-btn edit-btn",onClick:ut(c=>r.editDevice(i),["stop"])},"\u7F16\u8F91",8,Iu),f("button",{class:"action-btn delete-btn",onClick:ut(c=>r.deleteDevice(i.id),["stop"])},"\u5220\u9664",8,Du)])],8,Cu),Fe(f("div",Mu,[($(!0),L(pe,null,ht(r.getControllerDevices(i.id),c=>($(),L("div",{key:c.id,class:"tree-node controller-node"},[f("div",{class:"node-header",onClick:p=>r.toggleNode(c.id)},[f("div",ku,[f("span",Nu,F(o.expandedNodes.has(c.id)?"\u25BC":"\u25BA"),1),f("span",$u,F(c.name),1),f("span",Lu,F(r.getDeviceTypeText(c.type)),1),c.address?($(),L("span",ju,"["+F(c.address)+"]",1)):ce("",!0),f("span",{class:tt(["node-status",{"status-active":c.active,"status-inactive":!c.active}])},F(c.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),f("div",Hu,[f("button",{class:"action-btn edit-btn",onClick:ut(p=>r.editDevice(c),["stop"])},"\u7F16\u8F91",8,Vu),f("button",{class:"action-btn delete-btn",onClick:ut(p=>r.deleteDevice(c.id),["stop"])},"\u5220\u9664",8,Bu)])],8,Fu),Fe(f("div",Uu,[($(!0),L(pe,null,ht(r.getLeafDevices(c.id),p=>($(),L("div",{key:p.id,class:"tree-node device-node"},[f("div",Ku,[f("div",Wu,[f("span",qu,F(p.name),1),f("span",zu,F(r.getDeviceTypeText(p.type)),1),p.address?($(),L("span",Gu,"["+F(p.address)+"]",1)):ce("",!0),f("span",{class:tt(["node-status",{"status-active":p.active,"status-inactive":!p.active}])},F(p.active?"\u5728\u7EBF":"\u79BB\u7EBF"),3)]),f("div",Ju,[f("button",{class:"action-btn edit-btn",onClick:ut(u=>r.editDevice(p),["stop"])},"\u7F16\u8F91",8,Yu),f("button",{class:"action-btn delete-btn",onClick:ut(u=>r.deleteDevice(p.id),["stop"])},"\u5220\u9664",8,Qu)])])]))),128))],512),[[mo,o.expandedNodes.has(c.id)]])]))),128))],512),[[mo,o.expandedNodes.has(i.id)]])]))),128))]))])]),o.showModal?($(),L("div",Xu,[f("div",Zu,[f("div",ef,[f("h3",null,F(o.editingDevice?"\u7F16\u8F91\u8BBE\u5907":"\u6DFB\u52A0\u8BBE\u5907"),1),f("button",{class:"close-btn",onClick:t[2]||(t[2]=(...i)=>r.closeDeviceModal&&r.closeDeviceModal(...i))},"\xD7")]),f("div",tf,[f("form",{onSubmit:t[11]||(t[11]=ut((...i)=>r.saveDevice&&r.saveDevice(...i),["prevent"]))},[Fe(f("input",{type:"hidden","onUpdate:modelValue":t[3]||(t[3]=i=>o.deviceForm.id=i)},null,512),[[wt,o.deviceForm.id]]),f("div",nf,[t[18]||(t[18]=f("label",{for:"deviceName"},"\u8BBE\u5907\u540D\u79F0",-1)),Fe(f("input",{type:"text",id:"deviceName","onUpdate:modelValue":t[4]||(t[4]=i=>o.deviceForm.name=i),required:""},null,512),[[wt,o.deviceForm.name]])]),f("div",sf,[t[20]||(t[20]=f("label",{for:"deviceType"},"\u8BBE\u5907\u7C7B\u578B",-1)),Fe(f("select",{id:"deviceType","onUpdate:modelValue":t[5]||(t[5]=i=>o.deviceForm.type=i),required:"",onChange:t[6]||(t[6]=(...i)=>r.toggleParentField&&r.toggleParentField(...i))},[...t[19]||(t[19]=[ec('',6)])],544),[[Po,o.deviceForm.type]])]),(o.deviceForm.type==="fan"||o.deviceForm.type==="water_curtain")&&o.deviceForm.type!==""?($(),L("div",of,[t[21]||(t[21]=f("label",{for:"busNumber"},"485\u603B\u7EBF\u53F7",-1)),Fe(f("input",{type:"number",id:"busNumber","onUpdate:modelValue":t[7]||(t[7]=i=>o.deviceForm.bus_number=i),placeholder:"\u8BF7\u8F93\u5165485\u603B\u7EBF\u53F7"},null,512),[[wt,o.deviceForm.bus_number,void 0,{number:!0}]])])):ce("",!0),(o.deviceForm.type==="fan"||o.deviceForm.type==="water_curtain")&&o.deviceForm.type!==""?($(),L("div",rf,[t[22]||(t[22]=f("label",{for:"device485Address"},"485\u8BBE\u5907\u5730\u5740",-1)),Fe(f("input",{type:"text",id:"device485Address","onUpdate:modelValue":t[8]||(t[8]=i=>o.deviceForm.device_address=i),placeholder:"\u8BF7\u8F93\u5165485\u8BBE\u5907\u5730\u5740"},null,512),[[wt,o.deviceForm.device_address]])])):ce("",!0),o.deviceForm.type!=="relay"&&o.deviceForm.type!==""&&o.deviceForm.type!=="fan"&&o.deviceForm.type!=="water_curtain"?($(),L("div",lf,[t[23]||(t[23]=f("label",{for:"deviceAddress"},"\u8BBE\u5907\u5730\u5740",-1)),Fe(f("input",{type:"text",id:"deviceAddress","onUpdate:modelValue":t[9]||(t[9]=i=>o.deviceForm.address=i),placeholder:"\u8BF7\u8F93\u5165\u8BBE\u5907\u5730\u5740"},null,512),[[wt,o.deviceForm.address]])])):ce("",!0),o.deviceForm.type!=="relay"&&o.deviceForm.type!==""?($(),L("div",cf,[t[25]||(t[25]=f("label",{for:"parentId"},"\u4E0A\u7EA7\u8BBE\u5907",-1)),Fe(f("select",{id:"parentId","onUpdate:modelValue":t[10]||(t[10]=i=>o.deviceForm.parent_id=i)},[t[24]||(t[24]=f("option",{value:""},"\u8BF7\u9009\u62E9\u4E0A\u7EA7\u8BBE\u5907",-1)),($(!0),L(pe,null,ht(r.getParentDevicesWithDisplayName(o.deviceForm.type),i=>($(),L("option",{key:i.id,value:i.id},F(i.display_name),9,af))),128))],512),[[Po,o.deviceForm.parent_id]])])):ce("",!0)],32)]),f("div",uf,[f("button",{class:"btn btn-secondary",onClick:t[12]||(t[12]=(...i)=>r.closeDeviceModal&&r.closeDeviceModal(...i))},"\u53D6\u6D88"),f("button",{class:"btn btn-primary",onClick:t[13]||(t[13]=(...i)=>r.saveDevice&&r.saveDevice(...i))},"\u4FDD\u5B58")])])])):ce("",!0)])}const df=Bt(hu,[["render",ff],["__scopeId","data-v-a2f9bd42"]]);const pf={name:"FeedPlan",data(){return{username:"",plans:[],loading:!0}},mounted(){this.username=localStorage.getItem("username")||"\u7BA1\u7406\u5458",this.loadPlans()},methods:{async loadPlans(){this.loading=!0;try{const e=await fetch("/api/v1/feed/plan/list",{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")}}),t=await e.json();e.ok&&t.code===0?this.plans=t.data.plans||[]:console.error("\u83B7\u53D6\u9972\u5582\u8BA1\u5212\u5217\u8868\u5931\u8D25:",t.message)}catch(e){console.error("\u83B7\u53D6\u9972\u5582\u8BA1\u5212\u5217\u8868\u5931\u8D25:",e)}finally{this.loading=!1}},viewDetail(e){this.$router.push(`/feed/plan/detail/${e}`)},createPlan(){alert("\u521B\u5EFA\u8BA1\u5212\u529F\u80FD\u5F85\u5B9E\u73B0")},editPlan(e){alert(`\u7F16\u8F91\u8BA1\u5212: ${e.name}`)},async deletePlan(e){var t,n,s;if(!!confirm("\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u9972\u5582\u8BA1\u5212\u5417\uFF1F"))try{const o=await fetch("/api/v1/feed/plan/delete",{method:"POST",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")},body:JSON.stringify({id:e})}),r=await o.json();o.ok&&r.code===0?(await this.loadPlans(),(t=this.$message)!=null&&t.success("\u5220\u9664\u6210\u529F")||alert("\u5220\u9664\u6210\u529F")):(n=this.$message)!=null&&n.error("\u5220\u9664\u5931\u8D25: "+r.message)||alert("\u5220\u9664\u5931\u8D25: "+r.message)}catch(o){console.error("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25:",o),(s=this.$message)!=null&&s.error("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25: "+o.message)||alert("\u5220\u9664\u9972\u5582\u8BA1\u5212\u5931\u8D25: "+o.message)}},logout(){localStorage.removeItem("authToken"),localStorage.removeItem("username"),this.$router.push("/")}}},hf={class:"feed-plan-management"},gf={class:"header"},mf={class:"user-info"},_f={class:"nav"},vf={class:"main-content"},yf={class:"toolbar"},bf={class:"plan-list"},xf={key:0,class:"loading"},Sf={key:1,class:"no-plans"},wf={key:2,class:"plans-container"},Cf={class:"plan-header"},Ef={class:"plan-details"},Pf={class:"plan-description"},Af={class:"plan-meta"},Tf={class:"plan-type"},Rf={key:0,class:"plan-cron"},Of={class:"plan-actions"},If=["onClick"],Df=["onClick"],Mf=["onClick"];function Ff(e,t,n,s,o,r){const l=mn("router-link");return $(),L("div",hf,[f("div",gf,[t[2]||(t[2]=f("h1",null,"\u9972\u5582\u8BA1\u5212\u7BA1\u7406",-1)),f("div",mf,[f("span",null,"\u6B22\u8FCE, "+F(o.username),1),f("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>r.logout&&r.logout(...i))},"\u9000\u51FA")])]),f("nav",_f,[f("ul",null,[f("li",null,[oe(l,{to:"/dashboard"},{default:we(()=>[...t[3]||(t[3]=[Ce("\u63A7\u5236\u53F0",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/device"},{default:we(()=>[...t[4]||(t[4]=[Ce("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/feed/plan",class:"active"},{default:we(()=>[...t[5]||(t[5]=[Ce("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})])])]),f("main",vf,[f("div",yf,[f("button",{class:"btn btn-primary",onClick:t[1]||(t[1]=(...i)=>r.createPlan&&r.createPlan(...i))},"\u521B\u5EFA\u8BA1\u5212")]),f("div",bf,[o.loading?($(),L("div",xf," \u52A0\u8F7D\u4E2D... ")):o.plans.length===0?($(),L("div",Sf," \u6682\u65E0\u9972\u5582\u8BA1\u5212 ")):($(),L("div",wf,[($(!0),L(pe,null,ht(o.plans,i=>($(),L("div",{key:i.id,class:"plan-card"},[f("div",Cf,[f("h3",null,F(i.name),1),f("span",{class:tt(["plan-status",{enabled:i.enabled,disabled:!i.enabled}])},F(i.enabled?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),3)]),f("div",Ef,[f("p",Pf,F(i.description||"\u6682\u65E0\u63CF\u8FF0"),1),f("div",Af,[f("span",Tf,F(i.type==="manual"?"\u624B\u52A8\u89E6\u53D1":"\u81EA\u52A8\u89E6\u53D1"),1),i.schedule_cron?($(),L("span",Rf,"\u5B9A\u65F6: "+F(i.schedule_cron),1)):ce("",!0)])]),f("div",Of,[f("button",{class:"action-btn detail-btn",onClick:c=>r.viewDetail(i.id)},"\u8BE6\u60C5",8,If),f("button",{class:"action-btn edit-btn",onClick:c=>r.editPlan(i)},"\u7F16\u8F91",8,Df),f("button",{class:"action-btn delete-btn",onClick:c=>r.deletePlan(i.id)},"\u5220\u9664",8,Mf)])]))),128))]))])])])}const kf=Bt(pf,[["render",Ff],["__scopeId","data-v-32cbd47e"]]);const Nf={name:"FeedPlanDetail",data(){return{username:"",plan:null,loading:!0,error:null}},mounted(){this.username=localStorage.getItem("username")||"\u7BA1\u7406\u5458",this.loadPlanDetail()},methods:{async loadPlanDetail(){this.loading=!0,this.error=null;try{const e=this.$route.query.id||this.$route.params.id;if(!e){this.error="\u65E0\u6548\u7684\u8BA1\u5212ID";return}const t=await fetch(`/api/v1/feed/plan/detail?id=${e}`,{method:"GET",headers:{"Content-Type":"application/json",Authorization:"Bearer "+localStorage.getItem("authToken")}}),n=await t.json();t.ok&&n.code===0?this.plan=n.data:this.error=n.message||"\u83B7\u53D6\u8BA1\u5212\u8BE6\u60C5\u5931\u8D25"}catch(e){console.error("\u83B7\u53D6\u8BA1\u5212\u8BE6\u60C5\u5931\u8D25:",e),this.error="\u83B7\u53D6\u8BA1\u5212\u8BE6\u60C5\u5931\u8D25: "+e.message}finally{this.loading=!1}},goBack(){this.$router.push("/feed/plan")},editPlan(){alert("\u7F16\u8F91\u8BA1\u5212\u529F\u80FD\u5F85\u5B9E\u73B0")},logout(){localStorage.removeItem("authToken"),localStorage.removeItem("username"),this.$router.push("/")}}},$f={class:"feed-plan-detail"},Lf={class:"header"},jf={class:"user-info"},Hf={class:"nav"},Vf={class:"main-content"},Bf={key:0,class:"loading"},Uf={key:1,class:"error"},Kf={key:2,class:"plan-detail-container"},Wf={class:"plan-header"},qf={class:"plan-info"},zf={class:"info-item"},Gf={class:"info-item"},Jf={key:0,class:"info-item"},Yf={class:"info-item"},Qf={key:1,class:"info-item"},Xf={key:2,class:"info-item"},Zf={class:"plan-steps"},ed={key:0,class:"steps-list"},td={class:"step-header"},nd={class:"step-number"},sd={key:0,class:"step-cron"},od={class:"step-details"},rd={class:"detail-item"},id={class:"detail-item"},ld={class:"detail-item"},cd={class:"detail-item"},ad={key:1,class:"no-steps"},ud={key:0,class:"sub-plans"},fd={class:"sub-plans-list"},dd={class:"sub-plan-header"},pd={class:"sub-plan-info"},hd={class:"info-item"},gd={class:"info-item"},md={key:0,class:"info-item"},_d={class:"info-item"},vd={class:"sub-plan-steps"},yd={key:0,class:"steps-list"},bd={class:"step-header"},xd={class:"step-number"},Sd={key:0,class:"step-cron"},wd={class:"step-details"},Cd={class:"detail-item"},Ed={class:"detail-item"},Pd={class:"detail-item"},Ad={class:"detail-item"},Td={key:1,class:"no-steps"},Rd={class:"actions"};function Od(e,t,n,s,o,r){const l=mn("router-link");return $(),L("div",$f,[f("div",Lf,[t[3]||(t[3]=f("h1",null,"\u9972\u5582\u8BA1\u5212\u8BE6\u60C5",-1)),f("div",jf,[f("span",null,"\u6B22\u8FCE, "+F(o.username),1),f("button",{class:"logout-btn",onClick:t[0]||(t[0]=(...i)=>r.logout&&r.logout(...i))},"\u9000\u51FA")])]),f("nav",Hf,[f("ul",null,[f("li",null,[oe(l,{to:"/dashboard"},{default:we(()=>[...t[4]||(t[4]=[Ce("\u63A7\u5236\u53F0",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/device"},{default:we(()=>[...t[5]||(t[5]=[Ce("\u8BBE\u5907\u7BA1\u7406",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/feed/plan"},{default:we(()=>[...t[6]||(t[6]=[Ce("\u9972\u5582\u8BA1\u5212",-1)])]),_:1})]),f("li",null,[oe(l,{to:"/feed/plan/detail",class:"active"},{default:we(()=>[...t[7]||(t[7]=[Ce("\u8BA1\u5212\u8BE6\u60C5",-1)])]),_:1})])])]),f("main",Vf,[o.loading?($(),L("div",Bf," \u52A0\u8F7D\u4E2D... ")):o.error?($(),L("div",Uf,F(o.error),1)):o.plan?($(),L("div",Kf,[f("div",Wf,[f("h2",null,F(o.plan.name),1),f("span",{class:tt(["plan-status",{enabled:o.plan.enabled,disabled:!o.plan.enabled}])},F(o.plan.enabled?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),3)]),f("div",qf,[f("div",zf,[t[8]||(t[8]=f("label",null,"\u8BA1\u5212\u63CF\u8FF0:",-1)),f("span",null,F(o.plan.description||"\u65E0\u63CF\u8FF0"),1)]),f("div",Gf,[t[9]||(t[9]=f("label",null,"\u8BA1\u5212\u7C7B\u578B:",-1)),f("span",null,F(o.plan.type==="manual"?"\u624B\u52A8\u89E6\u53D1":"\u81EA\u52A8\u89E6\u53D1"),1)]),o.plan.schedule_cron?($(),L("div",Jf,[t[10]||(t[10]=f("label",null,"\u5B9A\u65F6\u8868\u8FBE\u5F0F:",-1)),f("span",null,F(o.plan.schedule_cron),1)])):ce("",!0),f("div",Yf,[t[11]||(t[11]=f("label",null,"\u6267\u884C\u6B21\u6570\u9650\u5236:",-1)),f("span",null,F(o.plan.execution_limit>0?o.plan.execution_limit:"\u65E0\u9650\u5236"),1)]),o.plan.parent_id?($(),L("div",Qf,[t[12]||(t[12]=f("label",null,"\u7236\u8BA1\u5212ID:",-1)),f("span",null,F(o.plan.parent_id),1)])):ce("",!0),o.plan.order_in_parent!==null?($(),L("div",Xf,[t[13]||(t[13]=f("label",null,"\u7236\u8BA1\u5212\u4E2D\u987A\u5E8F:",-1)),f("span",null,F(o.plan.order_in_parent),1)])):ce("",!0)]),f("div",Zf,[t[18]||(t[18]=f("h3",null,"\u8BA1\u5212\u6B65\u9AA4",-1)),o.plan.steps&&o.plan.steps.length>0?($(),L("div",ed,[($(!0),L(pe,null,ht(o.plan.steps,(i,c)=>($(),L("div",{key:i.id,class:"step-item"},[f("div",td,[f("span",nd,"\u6B65\u9AA4 "+F(c+1),1),i.schedule_cron?($(),L("span",sd,"\u5B9A\u65F6: "+F(i.schedule_cron),1)):ce("",!0)]),f("div",od,[f("div",rd,[t[14]||(t[14]=f("label",null,"\u8BBE\u5907ID:",-1)),f("span",null,F(i.device_id),1)]),f("div",id,[t[15]||(t[15]=f("label",null,"\u76EE\u6807\u503C:",-1)),f("span",null,F(i.target_value),1)]),f("div",ld,[t[16]||(t[16]=f("label",null,"\u52A8\u4F5C:",-1)),f("span",null,F(i.action),1)]),f("div",cd,[t[17]||(t[17]=f("label",null,"\u6267\u884C\u6B21\u6570\u9650\u5236:",-1)),f("span",null,F(i.execution_limit>0?i.execution_limit:"\u65E0\u9650\u5236"),1)])])]))),128))])):($(),L("div",ad," \u8BE5\u8BA1\u5212\u6682\u65E0\u6B65\u9AA4 "))]),o.plan.sub_plans&&o.plan.sub_plans.length>0?($(),L("div",ud,[t[28]||(t[28]=f("h3",null,"\u5B50\u8BA1\u5212",-1)),f("div",fd,[($(!0),L(pe,null,ht(o.plan.sub_plans,i=>($(),L("div",{key:i.id,class:"sub-plan-item"},[f("div",dd,[f("h4",null,F(i.name),1),f("span",{class:tt(["plan-status",{enabled:i.enabled,disabled:!i.enabled}])},F(i.enabled?"\u5DF2\u542F\u7528":"\u5DF2\u7981\u7528"),3)]),f("div",pd,[f("div",hd,[t[19]||(t[19]=f("label",null,"\u63CF\u8FF0:",-1)),f("span",null,F(i.description||"\u65E0\u63CF\u8FF0"),1)]),f("div",gd,[t[20]||(t[20]=f("label",null,"\u7C7B\u578B:",-1)),f("span",null,F(i.type==="manual"?"\u624B\u52A8\u89E6\u53D1":"\u81EA\u52A8\u89E6\u53D1"),1)]),i.schedule_cron?($(),L("div",md,[t[21]||(t[21]=f("label",null,"\u5B9A\u65F6\u8868\u8FBE\u5F0F:",-1)),f("span",null,F(i.schedule_cron),1)])):ce("",!0),f("div",_d,[t[22]||(t[22]=f("label",null,"\u987A\u5E8F:",-1)),f("span",null,F(i.order_in_parent),1)])]),f("div",vd,[t[27]||(t[27]=f("h5",null,"\u5B50\u8BA1\u5212\u6B65\u9AA4",-1)),i.steps&&i.steps.length>0?($(),L("div",yd,[($(!0),L(pe,null,ht(i.steps,(c,p)=>($(),L("div",{key:c.id,class:"step-item"},[f("div",bd,[f("span",xd,"\u6B65\u9AA4 "+F(p+1),1),c.schedule_cron?($(),L("span",Sd,"\u5B9A\u65F6: "+F(c.schedule_cron),1)):ce("",!0)]),f("div",wd,[f("div",Cd,[t[23]||(t[23]=f("label",null,"\u8BBE\u5907ID:",-1)),f("span",null,F(c.device_id),1)]),f("div",Ed,[t[24]||(t[24]=f("label",null,"\u76EE\u6807\u503C:",-1)),f("span",null,F(c.target_value),1)]),f("div",Pd,[t[25]||(t[25]=f("label",null,"\u52A8\u4F5C:",-1)),f("span",null,F(c.action),1)]),f("div",Ad,[t[26]||(t[26]=f("label",null,"\u6267\u884C\u6B21\u6570\u9650\u5236:",-1)),f("span",null,F(c.execution_limit>0?c.execution_limit:"\u65E0\u9650\u5236"),1)])])]))),128))])):($(),L("div",Td," \u8BE5\u5B50\u8BA1\u5212\u6682\u65E0\u6B65\u9AA4 "))])]))),128))])])):ce("",!0),f("div",Rd,[f("button",{class:"btn btn-secondary",onClick:t[1]||(t[1]=(...i)=>r.goBack&&r.goBack(...i))},"\u8FD4\u56DE\u5217\u8868"),f("button",{class:"btn btn-primary",onClick:t[2]||(t[2]=(...i)=>r.editPlan&&r.editPlan(...i))},"\u7F16\u8F91\u8BA1\u5212")])])):ce("",!0)])])}const Id=Bt(Nf,[["render",Od],["__scopeId","data-v-6912d473"]]),Dd=[{path:"/",name:"Login",component:eu},{path:"/dashboard",name:"Dashboard",component:pu,meta:{requiresAuth:!0}},{path:"/device",name:"Device",component:df,meta:{requiresAuth:!0}},{path:"/feed/plan",name:"FeedPlan",component:kf,meta:{requiresAuth:!0}},{path:"/feed/plan/detail/:id",name:"FeedPlanDetail",component:Id,meta:{requiresAuth:!0},props:!0}],fi=Ka({history:ya(),routes:Dd});fi.beforeEach((e,t,n)=>{const s=localStorage.getItem("authToken");e.matched.some(o=>o.meta.requiresAuth)?s?n():n("/"):s&&e.name==="Login"?n("/dashboard"):n()});const di=Nc(Bc);di.use(fi);di.mount("#app"); diff --git a/frontend/dist/index.html b/frontend/dist/index.html index 33983da..6ca10f8 100644 --- a/frontend/dist/index.html +++ b/frontend/dist/index.html @@ -4,8 +4,8 @@ 猪场管理系统 - - + +
diff --git a/frontend/src/pages/FeedPlan.vue b/frontend/src/pages/FeedPlan.vue index a0d6e75..7d7572e 100644 --- a/frontend/src/pages/FeedPlan.vue +++ b/frontend/src/pages/FeedPlan.vue @@ -108,7 +108,7 @@ export default { // 查看详情 viewDetail(planId) { - this.$router.push(`/feed/plan/${planId}`) + this.$router.push(`/feed/plan/detail/${planId}`) }, // 创建计划 diff --git a/frontend/src/pages/FeedPlanDetail.vue b/frontend/src/pages/FeedPlanDetail.vue new file mode 100644 index 0000000..f81633e --- /dev/null +++ b/frontend/src/pages/FeedPlanDetail.vue @@ -0,0 +1,601 @@ + + + + + \ No newline at end of file diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js index 2a43d84..8365569 100644 --- a/frontend/src/router/index.js +++ b/frontend/src/router/index.js @@ -3,6 +3,7 @@ import Login from '../pages/Login.vue' import Dashboard from '../pages/Dashboard.vue' import Device from '../pages/Device.vue' import FeedPlan from '../pages/FeedPlan.vue' +import FeedPlanDetail from '../pages/FeedPlanDetail.vue' const routes = [ { @@ -27,6 +28,13 @@ const routes = [ name: 'FeedPlan', component: FeedPlan, meta: { requiresAuth: true } + }, + { + path: '/feed/plan/detail/:id', + name: 'FeedPlanDetail', + component: FeedPlanDetail, + meta: { requiresAuth: true }, + props: true } ] diff --git a/internal/controller/feed/feed.go b/internal/controller/feed/feed.go index bceee62..13d7ff8 100644 --- a/internal/controller/feed/feed.go +++ b/internal/controller/feed/feed.go @@ -44,25 +44,25 @@ type CreateRequest struct { Enabled bool `json:"enabled"` // ScheduleCron 定时任务表达式(仅当Type为auto时有效) - ScheduleCron *string `json:"scheduleCron"` + ScheduleCron *string `json:"schedule_cron,omitempty"` // ExecutionLimit 执行次数限制(0表示无限制,仅当Type为auto时有效) - ExecutionLimit int `json:"executionLimit"` + ExecutionLimit int `json:"execution_limit"` // ParentID 父计划ID(用于支持子计划结构) - ParentID *uint `json:"parentID"` + ParentID *uint `json:"parent_id,omitempty"` // OrderInParent 在父计划中的执行顺序 - OrderInParent *int `json:"orderInParent"` + OrderInParent *int `json:"order_in_parent,omitempty"` // IsMaster 是否为主计划(主计划可以包含子计划) - IsMaster bool `json:"isMaster"` + IsMaster bool `json:"is_master"` // Steps 计划步骤列表 Steps []FeedingPlanStep `json:"steps"` // SubPlans 子计划列表 - SubPlans []CreateRequest `json:"subPlans"` + SubPlans []CreateRequest `json:"sub_plans"` } // Create 创建饲料计划 @@ -183,11 +183,12 @@ func (c *Controller) ListPlans(ctx *gin.Context) { } for _, introduction := range introductions { resp.Plans = append(resp.Plans, ListPlanResponseItem{ - ID: introduction.ID, - Name: introduction.Name, - Description: introduction.Description, - Enabled: introduction.Enabled, - Type: introduction.Type, + ID: introduction.ID, + Name: introduction.Name, + Description: introduction.Description, + Enabled: introduction.Enabled, + Type: introduction.Type, + ScheduleCron: introduction.ScheduleCron, }) } @@ -212,25 +213,25 @@ type UpdateRequest struct { Enabled bool `json:"enabled"` // ScheduleCron 定时任务表达式(仅当Type为auto时有效) - ScheduleCron *string `json:"scheduleCron"` + ScheduleCron *string `json:"schedule_cron,omitempty"` // ExecutionLimit 执行次数限制(0表示无限制,仅当Type为auto时有效) - ExecutionLimit int `json:"executionLimit"` + ExecutionLimit int `json:"execution_limit"` // ParentID 父计划ID(用于支持子计划结构) - ParentID *uint `json:"parentID"` + ParentID *uint `json:"parent_id,omitempty"` // OrderInParent 在父计划中的执行顺序 - OrderInParent *int `json:"orderInParent"` + OrderInParent *int `json:"order_in_parent,omitempty"` // IsMaster 是否为主计划(主计划可以包含子计划) - IsMaster bool `json:"isMaster"` + IsMaster bool `json:"is_master"` // Steps 计划步骤列表 Steps []FeedingPlanStep `json:"steps"` // SubPlans 子计划列表 - SubPlans []UpdateRequest `json:"subPlans"` + SubPlans []UpdateRequest `json:"sub_plans"` } // DetailResponse 喂料计划主表 @@ -251,22 +252,22 @@ type DetailResponse struct { Enabled bool `json:"enabled"` // ScheduleCron 定时任务表达式(仅当Type为auto时有效) - ScheduleCron *string `json:"scheduleCron"` + ScheduleCron *string `json:"schedule_cron,omitempty"` // ExecutionLimit 执行次数限制(0表示无限制,仅当Type为auto时有效) - ExecutionLimit int `json:"executionLimit"` + ExecutionLimit int `json:"execution_limit"` // ParentID 父计划ID(用于支持子计划结构) - ParentID *uint `json:"parentID"` + ParentID *uint `json:"parent_id,omitempty"` // OrderInParent 在父计划中的执行顺序 - OrderInParent *int `json:"orderInParent"` + OrderInParent *int `json:"order_in_parent,omitempty"` // Steps 计划步骤列表 Steps []FeedingPlanStep `json:"steps"` // SubPlans 子计划列表 - SubPlans []DetailResponse `json:"subPlans"` + SubPlans []DetailResponse `json:"sub_plans"` } // FeedingPlanStep 喂料计划步骤表,表示计划中的每个设备动作 @@ -275,25 +276,25 @@ type FeedingPlanStep struct { ID uint `json:"id"` // PlanID 关联的计划ID - PlanID uint `json:"planID"` + PlanID uint `json:"plan_id"` // StepOrder 步骤顺序 - StepOrder int `json:"stepOrder"` + StepOrder int `json:"step_order"` // DeviceID 关联的设备ID - DeviceID uint `json:"deviceID"` + DeviceID uint `json:"device_id"` // TargetValue 目标值(达到该值后停止工作切换到下一个设备) - TargetValue float64 `json:"targetValue"` + TargetValue float64 `json:"target_value"` // Action 动作(如:打开设备) Action string `json:"action"` // ScheduleCron 步骤定时任务表达式(可选) - ScheduleCron *string `json:"scheduleCron"` + ScheduleCron *string `json:"schedule_cron,omitempty"` // ExecutionLimit 步骤执行次数限制(0表示无限制) - ExecutionLimit int `json:"executionLimit"` + ExecutionLimit int `json:"execution_limit"` } // Detail 获取饲料计划列细节