@hieuzest/koishi-plugin-mahjongpub 0.3.6 → 0.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +3 -3
- package/dist/style.css +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +16 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{icons as Lt,send as
|
|
1
|
+
import{icons as Lt,send as R,receive as Ut}from"@koishijs/client";import{createElementBlock as _,openBlock as i,createCommentVNode as V,createElementVNode as c,defineComponent as G,warn as Ft,watch as ce,unref as T,inject as fe,ref as S,computed as P,isRef as Bt,getCurrentInstance as _e,provide as Kt,renderSlot as Ve,mergeProps as Ht,normalizeClass as Y,createVNode as s,Transition as ft,withCtx as o,withDirectives as Le,toDisplayString as N,normalizeStyle as vt,vShow as Ue,shallowReactive as Gt,onMounted as je,createBlock as j,resolveDynamicComponent as Zt,Fragment as q,withModifiers as Se,isVNode as yt,render as tt,resolveComponent as k,createTextVNode as C,renderList as ee,withKeys as De,reactive as Jt,onUnmounted as Yt,nextTick as qt}from"vue";import{isClient as Fe,useEventListener as Wt,useResizeObserver as Xt,useTimeoutFn as Qt}from"@vueuse/core";const ie=(e,n)=>{const t=e.__vccOpts||e;for(const[a,l]of n)t[a]=l;return t},en={},tn={class:"k-icon",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"};function nn(e,n){return i(),_("svg",tn,[V(" Mahjong tile "),n[0]||(n[0]=c("rect",{x:"3",y:"1",width:"18",height:"22",rx:"2",ry:"2",fill:"none",stroke:"currentColor","stroke-width":"1.5"},null,-1)),n[1]||(n[1]=c("rect",{x:"5",y:"3",width:"14",height:"18",rx:"1",ry:"1",fill:"none",stroke:"currentColor","stroke-width":"0.8"},null,-1)),V(" 中 character simplified "),n[2]||(n[2]=c("rect",{x:"8",y:"7",width:"8",height:"10",rx:"0.5",fill:"none",stroke:"currentColor","stroke-width":"1.2"},null,-1)),n[3]||(n[3]=c("line",{x1:"12",y1:"7",x2:"12",y2:"17",stroke:"currentColor","stroke-width":"1.2"},null,-1)),n[4]||(n[4]=c("line",{x1:"8",y1:"12",x2:"16",y2:"12",stroke:"currentColor","stroke-width":"1.2"},null,-1))])}const an=ie(en,[["render",nn]]);Lt.register("mahjongpub:icon",an);/**
|
|
2
2
|
* @vue/shared v3.5.26
|
|
3
3
|
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
|
4
4
|
* @license MIT
|
|
5
|
-
**/const ln=Object.prototype.hasOwnProperty,nt=(e,n)=>ln.call(e,n),Ie=e=>typeof e=="function",ze=e=>typeof e=="string",gt=e=>e!==null&&typeof e=="object";var on=typeof global=="object"&&global&&global.Object===Object&&global,sn=typeof self=="object"&&self&&self.Object===Object&&self,Be=on||sn||Function("return this")(),ve=Be.Symbol,ht=Object.prototype,rn=ht.hasOwnProperty,un=ht.toString,he=ve?ve.toStringTag:void 0;function dn(e){var n=rn.call(e,he),t=e[he];try{e[he]=void 0;var a=true}catch{}var l=un.call(e);return a&&(n?e[he]=t:delete e[he]),l}var cn=Object.prototype,pn=cn.toString;function mn(e){return pn.call(e)}var fn="[object Null]",vn="[object Undefined]",at=ve?ve.toStringTag:void 0;function _t(e){return e==null?e===void 0?vn:fn:at&&at in Object(e)?dn(e):mn(e)}function yn(e){return e!=null&&typeof e=="object"}var gn="[object Symbol]";function Ke(e){return typeof e=="symbol"||yn(e)&&_t(e)==gn}function hn(e,n){for(var t=-1,a=e==null?0:e.length,l=Array(a);++t<a;)l[t]=n(e[t],t,e);return l}var He=Array.isArray,lt=ve?ve.prototype:void 0,ot=lt?lt.toString:void 0;function bt(e){if(typeof e=="string")return e;if(He(e))return hn(e,bt)+"";if(Ke(e))return ot?ot.call(e):"";var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function wt(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var _n="[object AsyncFunction]",bn="[object Function]",wn="[object GeneratorFunction]",Cn="[object Proxy]";function xn(e){if(!wt(e))return false;var n=_t(e);return n==bn||n==wn||n==_n||n==Cn}var Me=Be["__core-js_shared__"],st=function(){var e=/[^.]+$/.exec(Me&&Me.keys&&Me.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function $n(e){return!!st&&st in e}var kn=Function.prototype,Sn=kn.toString;function In(e){if(e!=null){try{return Sn.call(e)}catch{}try{return e+""}catch{}}return""}var zn=/[\\^$.*+?()[\]{}|]/g,Tn=/^\[object .+?Constructor\]$/,Vn=Function.prototype,jn=Object.prototype,Pn=Vn.toString,Nn=jn.hasOwnProperty,On=RegExp("^"+Pn.call(Nn).replace(zn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function En(e){if(!wt(e)||$n(e))return false;var n=xn(e)?On:Tn;return n.test(In(e))}function Mn(e,n){return e==null?void 0:e[n]}function Ct(e,n){var t=Mn(e,n);return En(t)?t:void 0}function Dn(e,n){return e===n||e!==e&&n!==n}var Rn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,An=/^\w*$/;function Ln(e,n){if(He(e))return false;var t=typeof e;return t=="number"||t=="symbol"||t=="boolean"||e==null||Ke(e)?true:An.test(e)||!Rn.test(e)||n!=null&&e in Object(n)}var be=Ct(Object,"create");function Un(){this.__data__=be?be(null):{},this.size=0}function Fn(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n}var Bn="__lodash_hash_undefined__",Kn=Object.prototype,Hn=Kn.hasOwnProperty;function Gn(e){var n=this.__data__;if(be){var t=n[e];return t===Bn?void 0:t}return Hn.call(n,e)?n[e]:void 0}var Zn=Object.prototype,Jn=Zn.hasOwnProperty;function Yn(e){var n=this.__data__;return be?n[e]!==void 0:Jn.call(n,e)}var qn="__lodash_hash_undefined__";function Wn(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=be&&n===void 0?qn:n,this}function pe(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}pe.prototype.clear=Un;pe.prototype.delete=Fn;pe.prototype.get=Gn;pe.prototype.has=Yn;pe.prototype.set=Wn;function Xn(){this.__data__=[],this.size=0}function Pe(e,n){for(var t=e.length;t--;)if(Dn(e[t][0],n))return t;return-1}var Qn=Array.prototype,ea=Qn.splice;function ta(e){var n=this.__data__,t=Pe(n,e);if(t<0)return false;var a=n.length-1;return t==a?n.pop():ea.call(n,t,1),--this.size,true}function na(e){var n=this.__data__,t=Pe(n,e);return t<0?void 0:n[t][1]}function aa(e){return Pe(this.__data__,e)>-1}function la(e,n){var t=this.__data__,a=Pe(t,e);return a<0?(++this.size,t.push([e,n])):t[a][1]=n,this}function ge(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}ge.prototype.clear=Xn;ge.prototype.delete=ta;ge.prototype.get=na;ge.prototype.has=aa;ge.prototype.set=la;var oa=Ct(Be,"Map");function sa(){this.size=0,this.__data__={hash:new pe,map:new(oa||ge),string:new pe}}function ra(e){var n=typeof e;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?e!=="__proto__":e===null}function Ne(e,n){var t=e.__data__;return ra(n)?t[typeof n=="string"?"string":"hash"]:t.map}function ia(e){var n=Ne(this,e).delete(e);return this.size-=n?1:0,n}function ua(e){return Ne(this,e).get(e)}function da(e){return Ne(this,e).has(e)}function ca(e,n){var t=Ne(this,e),a=t.size;return t.set(e,n),this.size+=t.size==a?0:1,this}function me(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}me.prototype.clear=sa;me.prototype.delete=ia;me.prototype.get=ua;me.prototype.has=da;me.prototype.set=ca;var pa="Expected a function";function Ge(e,n){if(typeof e!="function"||n!=null&&typeof n!="function")throw new TypeError(pa);var t=function(){var a=arguments,l=n?n.apply(this,a):a[0],u=t.cache;if(u.has(l))return u.get(l);var d=e.apply(this,a);return t.cache=u.set(l,d)||u,d};return t.cache=new(Ge.Cache||me),t}Ge.Cache=me;var ma=500;function fa(e){var n=Ge(e,function(a){return t.size===ma&&t.clear(),a}),t=n.cache;return n}var va=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ya=/\\(\\)?/g,ga=fa(function(e){var n=[];return e.charCodeAt(0)===46&&n.push(""),e.replace(va,function(t,a,l,u){n.push(l?u.replace(ya,"$1"):a||t)}),n});function ha(e){return e==null?"":bt(e)}function _a(e,n){return He(e)?e:Ln(e,n)?[e]:ga(ha(e))}function ba(e){if(typeof e=="string"||Ke(e))return e;var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function wa(e,n){n=_a(n,e);for(var t=0,a=n.length;e!=null&&t<a;)e=e[ba(n[t++])];return t&&t==a?e:void 0}function Ca(e,n,t){var a=e==null?void 0:wa(e,n);return a===void 0?t:a}function xa(e){for(var n=-1,t=e==null?0:e.length,a={};++n<t;){var l=e[n];a[l[0]]=l[1]}return a}const $a=e=>e===void 0,we=e=>typeof e=="number",ka=e=>typeof Element>"u"?false:e instanceof Element,Sa=e=>ze(e)?!Number.isNaN(Number(e)):false,rt=e=>Object.keys(e);function Re(e,n="px"){if(!e)return"";if(we(e)||Sa(e))return`${e}${n}`;if(ze(e))return e}/*! Element Plus Icons Vue v2.3.2 */var Ia=H({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(n,t)=>(i(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),za=Ia,Ta=H({name:"Close",__name:"close",setup(e){return(n,t)=>(i(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Va=Ta,ja=H({name:"InfoFilled",__name:"info-filled",setup(e){return(n,t)=>(i(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Pa=ja,Na=H({name:"SuccessFilled",__name:"success-filled",setup(e){return(n,t)=>(i(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Oa=Na,Ea=H({name:"WarningFilled",__name:"warning-filled",setup(e){return(n,t)=>(i(),h("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Ma=Ea;const xt="__epPropKey",oe=e=>e,Da=e=>gt(e)&&!!e[xt],$t=(e,n)=>{if(!gt(e)||Da(e))return e;const{values:t,required:a,default:l,type:u,validator:d}=e,C={type:u,required:!!a,validator:t||d?S=>{let f=false,b=[];if(t&&(b=Array.from(t),nt(e,"default")&&b.push(l),f||(f=b.includes(S))),d&&(f||(f=d(S))),!f&&b.length>0){const _=[...new Set(b)].map(x=>JSON.stringify(x)).join(", ");Ft(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${_}], got value ${JSON.stringify(S)}.`)}return f}:void 0,[xt]:true};return nt(e,"default")&&(C.default=l),C},Ce=e=>xa(Object.entries(e).map(([n,t])=>[n,$t(t,n)])),Ra=oe([String,Object,Function]),Aa={Close:Va},it={success:Oa,warning:Ma,error:za,info:Pa},kt=(e,n)=>(e.install=t=>{for(const a of[e,...Object.values({})])t.component(a.name,a)},e),La=(e,n)=>(e.install=t=>{e._context=t._context,t.config.globalProperties[n]=e},e),Ua={esc:"Escape"},Fa=["","default","small","large"],Ba=e=>e,ut=({from:e,replacement:n,scope:t,version:a,ref:l,type:u="API"},d)=>{ce(()=>T(d),v=>{},{immediate:true})};var Ka={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Ha=e=>(n,t)=>Ga(n,t,T(e)),Ga=(e,n,t)=>Ca(t,e,e).replace(/\{(\w+)\}/g,(a,l)=>{var u;return`${(u=n==null?void 0:n[l])!=null?u:`{${l}}`}`}),Za=e=>{const n=P(()=>T(e).name),t=Bt(e)?e:I(e);return{lang:n,locale:t,t:Ha(e)}},St=Symbol("localeContextKey"),Ja=e=>{const n=e||fe(St,I());return Za(P(()=>n.value||Ka))},ke="el",Ya="is-",de=(e,n,t,a,l)=>{let u=`${e}-${n}`;return t&&(u+=`-${t}`),a&&(u+=`__${a}`),l&&(u+=`--${l}`),u},It=Symbol("namespaceContextKey"),qa=e=>{const n=e||(_e()?fe(It,I(ke)):I(ke));return P(()=>T(n)||ke)},Ze=(e,n)=>{const t=qa(n);return{namespace:t,b:(m="")=>de(t.value,e,m,"",""),e:m=>m?de(t.value,e,"",m,""):"",m:m=>m?de(t.value,e,"","",m):"",be:(m,p)=>m&&p?de(t.value,e,m,p,""):"",em:(m,p)=>m&&p?de(t.value,e,"",m,p):"",bm:(m,p)=>m&&p?de(t.value,e,m,"",p):"",bem:(m,p,$)=>m&&p&&$?de(t.value,e,m,p,$):"",is:(m,...p)=>{const $=p.length>=1?p[0]:true;return m&&$?`${Ya}${m}`:""},cssVar:m=>{const p={};for(const $ in m)m[$]&&(p[`--${t.value}-${$}`]=m[$]);return p},cssVarName:m=>`--${t.value}-${m}`,cssVarBlock:m=>{const p={};for(const $ in m)m[$]&&(p[`--${t.value}-${e}-${$}`]=m[$]);return p},cssVarBlockName:m=>`--${t.value}-${e}-${m}`}},dt={current:0},ct=I(0),zt=2e3,pt=Symbol("elZIndexContextKey"),Tt=Symbol("zIndexContextKey"),Wa=e=>{const n=_e()?fe(pt,dt):dt,t=e||(_e()?fe(Tt,void 0):void 0),a=P(()=>{const d=T(t);return we(d)?d:zt}),l=P(()=>a.value+ct.value),u=()=>(n.current++,ct.value=n.current,l.value);return!Fe&&fe(pt),{initialZIndex:a,currentZIndex:l,nextZIndex:u}},Xa=$t({type:String,values:Fa,required:false}),Qa=Symbol("size"),el=Symbol("emptyValuesContextKey"),tl=Ce({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Ie(e)?!e():!e}}),Vt=Symbol(),Te=I();function jt(e,n=void 0){return _e()?fe(Vt,Te):Te}function nl(e,n){const t=jt(),a=Ze(e,P(()=>{var v;return((v=t.value)==null?void 0:v.namespace)||ke})),l=Ja(P(()=>{var v;return(v=t.value)==null?void 0:v.locale})),u=Wa(P(()=>{var v;return((v=t.value)==null?void 0:v.zIndex)||zt})),d=P(()=>{var v;return T(n)||((v=t.value)==null?void 0:v.size)||""});return Pt(P(()=>T(t)||{})),{ns:a,locale:l,zIndex:u,size:d}}const Pt=(e,n,t=false)=>{var a;const l=!!_e(),u=l?jt():void 0,d=(a=void 0)!=null?a:l?Kt:void 0;if(!d)return;const v=P(()=>{const C=T(e);return u!=null&&u.value?al(u.value,C):C});return d(Vt,v),d(St,P(()=>v.value.locale)),d(It,P(()=>v.value.namespace)),d(Tt,P(()=>v.value.zIndex)),d(Qa,{size:P(()=>v.value.size||"")}),d(el,P(()=>({emptyValues:v.value.emptyValues,valueOnClear:v.value.valueOnClear}))),(t||!Te.value)&&(Te.value=v.value),v},al=(e,n)=>{const t=[...new Set([...rt(e),...rt(n)])],a={};for(const l of t)a[l]=n[l]!==void 0?n[l]:e[l];return a},ll=Ce({a11y:{type:Boolean,default:true},locale:{type:oe(Object)},size:Xa,button:{type:oe(Object)},experimentalFeatures:{type:oe(Object)},keyboardNavigation:{type:Boolean,default:true},message:{type:oe(Object)},zIndex:Number,namespace:{type:String,default:"el"},...tl}),Ae={};H({name:"ElConfigProvider",props:ll,setup(e,{slots:n}){ce(()=>e.message,a=>{Object.assign(Ae,a??{})},{immediate:true,deep:true});const t=Pt(e);return()=>Ve(n,"default",{config:t==null?void 0:t.value})}});var Je=(e,n)=>{const t=e.__vccOpts||e;for(const[a,l]of n)t[a]=l;return t};const ol=Ce({size:{type:oe([Number,String])},color:{type:String}}),sl=H({name:"ElIcon",inheritAttrs:false}),rl=H({...sl,props:ol,setup(e){const n=e,t=Ze("icon"),a=P(()=>{const{size:l,color:u}=n;return!l&&!u?{}:{fontSize:$a(l)?void 0:Re(l),"--color":u}});return(l,u)=>(i(),h("i",Ht({class:T(t).b(),style:T(a)},l.$attrs),[Ve(l.$slots,"default")],16))}});var il=Je(rl,[["__file","icon.vue"]]);const mt=kt(il),ul=Ce({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:true},color:String,dotStyle:{type:oe([String,Object,Array])},badgeStyle:{type:oe([String,Object,Array])},offset:{type:oe(Array),default:[0,0]},dotClass:{type:String},badgeClass:{type:String}}),dl=["textContent"],cl=H({name:"ElBadge"}),pl=H({...cl,props:ul,setup(e,{expose:n}){const t=e,a=Ze("badge"),l=P(()=>t.isDot?"":we(t.value)&&we(t.max)?t.max<t.value?`${t.max}+`:t.value===0&&!t.showZero?"":`${t.value}`:`${t.value}`),u=P(()=>{var d,v,C,S,f,b;return[{backgroundColor:t.color,marginRight:Re(-((v=(d=t.offset)==null?void 0:d[0])!=null?v:0)),marginTop:Re((S=(C=t.offset)==null?void 0:C[1])!=null?S:0)},(f=t.dotStyle)!=null?f:{},(b=t.badgeStyle)!=null?b:{}]});return ut({from:"dot-style",replacement:"badge-style",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},P(()=>!!t.dotStyle)),ut({from:"dot-class",replacement:"badge-class",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},P(()=>!!t.dotClass)),n({content:l}),(d,v)=>(i(),h("div",{class:Y(T(a).b())},[Ve(d.$slots,"default"),s(ft,{name:`${T(a).namespace.value}-zoom-in-center`,persisted:""},{default:o(()=>[Le(c("sup",{class:Y([T(a).e("content"),T(a).em("content",d.type),T(a).is("fixed",!!d.$slots.default),T(a).is("dot",d.isDot),d.dotClass,d.badgeClass]),style:vt(T(u)),textContent:N(T(l))},null,14,dl),[[Ue,!d.hidden&&(T(l)||d.isDot)]])]),_:1},8,["name"])],2))}});var ml=Je(pl,[["__file","badge.vue"]]);const fl=kt(ml),Nt=["success","info","warning","error"],Z=Ba({customClass:"",center:false,dangerouslyUseHTMLString:false,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:false,type:"info",plain:false,offset:16,zIndex:0,grouping:false,repeatNum:1,appendTo:Fe?document.body:void 0}),vl=Ce({customClass:{type:String,default:Z.customClass},center:{type:Boolean,default:Z.center},dangerouslyUseHTMLString:{type:Boolean,default:Z.dangerouslyUseHTMLString},duration:{type:Number,default:Z.duration},icon:{type:Ra,default:Z.icon},id:{type:String,default:Z.id},message:{type:oe([String,Object,Function]),default:Z.message},onClose:{type:oe(Function),default:Z.onClose},showClose:{type:Boolean,default:Z.showClose},type:{type:String,values:Nt,default:Z.type},plain:{type:Boolean,default:Z.plain},offset:{type:Number,default:Z.offset},zIndex:{type:Number,default:Z.zIndex},grouping:{type:Boolean,default:Z.grouping},repeatNum:{type:Number,default:Z.repeatNum}}),yl={destroy:()=>true},se=Gt([]),gl=e=>{const n=se.findIndex(l=>l.id===e),t=se[n];let a;return n>0&&(a=se[n-1]),{current:t,prev:a}},hl=e=>{const{prev:n}=gl(e);return n?n.vm.exposed.bottom.value:0},_l=(e,n)=>se.findIndex(a=>a.id===e)>0?16:n,bl=["id"],wl=["innerHTML"],Cl=H({name:"ElMessage"}),xl=H({...Cl,props:vl,emits:yl,setup(e,{expose:n}){const t=e,{Close:a}=Aa,{ns:l,zIndex:u}=nl("message"),{currentZIndex:d,nextZIndex:v}=u,C=I(),S=I(false),f=I(0);let b;const _=P(()=>t.type?t.type==="error"?"danger":t.type:"info"),x=P(()=>{const M=t.type;return{[l.bm("icon",M)]:M&&it[M]}}),O=P(()=>t.icon||it[t.type]||""),m=P(()=>hl(t.id)),p=P(()=>_l(t.id,t.offset)+m.value),$=P(()=>f.value+p.value),y=P(()=>({top:`${p.value}px`,zIndex:d.value}));function U(){t.duration!==0&&({stop:b}=Qt(()=>{B()},t.duration))}function D(){b==null||b()}function B(){S.value=false}function J({code:M}){M===Ua.esc&&B()}return je(()=>{U(),v(),S.value=true}),ce(()=>t.repeatNum,()=>{D(),U()}),Wt(document,"keydown",J),Xt(C,()=>{f.value=C.value.getBoundingClientRect().height}),n({visible:S,bottom:$,close:B}),(M,z)=>(i(),j(ft,{name:T(l).b("fade"),onBeforeLeave:M.onClose,onAfterLeave:z[0]||(z[0]=K=>M.$emit("destroy")),persisted:""},{default:o(()=>[Le(c("div",{id:M.id,ref_key:"messageRef",ref:C,class:Y([T(l).b(),{[T(l).m(M.type)]:M.type},T(l).is("center",M.center),T(l).is("closable",M.showClose),T(l).is("plain",M.plain),M.customClass]),style:vt(T(y)),role:"alert",onMouseenter:D,onMouseleave:U},[M.repeatNum>1?(i(),j(T(fl),{key:0,value:M.repeatNum,type:T(_),class:Y(T(l).e("badge"))},null,8,["value","type","class"])):V("v-if",true),T(O)?(i(),j(T(mt),{key:1,class:Y([T(l).e("icon"),T(x)])},{default:o(()=>[(i(),j(Zt(T(O))))]),_:1},8,["class"])):V("v-if",true),Ve(M.$slots,"default",{},()=>[M.dangerouslyUseHTMLString?(i(),h(q,{key:1},[V(" Caution here, message could've been compromised, never use user's input as message "),c("p",{class:Y(T(l).e("content")),innerHTML:M.message},null,10,wl)],2112)):(i(),h("p",{key:0,class:Y(T(l).e("content"))},N(M.message),3))]),M.showClose?(i(),j(T(mt),{key:2,class:Y(T(l).e("closeBtn")),onClick:Se(B,["stop"])},{default:o(()=>[s(T(a))]),_:1},8,["class","onClick"])):V("v-if",true)],46,bl),[[Ue,S.value]])]),_:3},8,["name","onBeforeLeave"]))}});var $l=Je(xl,[["__file","message.vue"]]);let kl=1;const Ot=e=>{const n=!e||ze(e)||yt(e)||Ie(e)?{message:e}:e,t={...Z,...n};if(!t.appendTo)t.appendTo=document.body;else if(ze(t.appendTo)){let a=document.querySelector(t.appendTo);ka(a)||(a=document.body),t.appendTo=a}return t},Sl=e=>{const n=se.indexOf(e);if(n===-1)return;se.splice(n,1);const{handler:t}=e;t.close()},Il=({appendTo:e,...n},t)=>{const a=`message_${kl++}`,l=n.onClose,u=document.createElement("div"),d={...n,id:a,onClose:()=>{l==null||l(),Sl(f)},onDestroy:()=>{tt(null,u)}},v=s($l,d,Ie(d.message)||yt(d.message)?{default:Ie(d.message)?d.message:()=>d.message}:null);v.appContext=t||ye._context,tt(v,u),e.appendChild(u.firstElementChild);const C=v.component,f={id:a,vnode:v,vm:C,handler:{close:()=>{C.exposed.visible.value=false}},props:v.component.props};return f},ye=(e={},n)=>{if(!Fe)return{close:()=>{}};if(we(Ae.max)&&se.length>=Ae.max)return{close:()=>{}};const t=Ot(e);if(t.grouping&&se.length){const l=se.find(({vnode:u})=>{var d;return((d=u.props)==null?void 0:d.message)===t.message});if(l)return l.props.repeatNum+=1,l.props.type=t.type,l.handler}const a=Il(t,n);return se.push(a),a.handler};Nt.forEach(e=>{ye[e]=(n={},t)=>{const a=Ot(n);return ye({...a,type:e},t)}});function zl(e){for(const n of se)(!e||e===n.props.type)&&n.handler.close()}ye.closeAll=zl;ye._context=null;const F=La(ye,"$message"),Tl={class:"sidebar"},Vl={class:"sidebar-header"},jl={class:"contest-list"},Pl=["onClick","onContextmenu"],Nl={class:"contest-name"},Ol={class:"contest-cid"},El=H({__name:"sidebar",props:{contests:{},activeCid:{}},emits:["select","add","remove","update"],setup(e,{emit:n}){const t=n,a=I(false),l=I(null),u=I(""),d=I(null);async function v(){if(l.value){importLoading.value=true;try{d.value=await A("mahjongpub/search-contests",l.value,u.value||void 0)}catch(m){F.error(`查询失败: ${m}`)}finally{importLoading.value=false}}}async function C(){if(d.value){importLoading.value=true;try{const m={cid:d.value.cid,name:d.value.name,adminPassword:u.value||void 0};await A("mahjongpub/add-managed",m),t("add",m),a.value=false,l.value=null,d.value=null,u.value=""}catch(m){F.error(`添加失败: ${m}`)}finally{importLoading.value=false}}}const S=I(false),f=I(null),b=I("");function _(m,p){f.value=p,b.value=p.adminPassword??"",S.value=true}async function x(){if(f.value)try{await A("mahjongpub/update-managed",f.value.cid,{adminPassword:b.value||void 0}),t("update",f.value.cid,{adminPassword:b.value||void 0}),S.value=false}catch(m){F.error(`保存失败: ${m}`)}}async function O(){if(f.value)try{await A("mahjongpub/remove-managed",f.value.cid),t("remove",f.value.cid),S.value=false}catch(m){F.error(`移除失败: ${m}`)}}return(m,p)=>{const $=k("el-button"),y=k("el-icon"),U=k("el-input"),D=k("el-form-item"),B=k("el-tag"),J=k("el-form"),M=k("el-dialog");return i(),h("div",Tl,[c("div",Vl,[p[9]||(p[9]=c("span",null,"比赛列表",-1)),s($,{size:"small",type:"primary",onClick:p[0]||(p[0]=z=>a.value=true)},{default:o(()=>[...p[8]||(p[8]=[w("+ 添加",-1)])]),_:1})]),c("div",jl,[(i(true),h(q,null,ee(e.contests,z=>(i(),h("div",{key:z.cid,class:Y(["contest-item",{active:z.cid===e.activeCid}]),onClick:K=>m.$emit("select",z.cid),onContextmenu:Se(K=>_(K,z),["prevent"])},[c("div",Nl,N(z.name),1),c("div",Ol,"#"+N(z.cid),1),z.adminPassword?(i(),j(y,{key:0,class:"admin-badge",title:"已配置管理密码"},{default:o(()=>[...p[10]||(p[10]=[c("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"currentColor"},[c("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"})],-1)])]),_:1})):V("v-if",true)],42,Pl))),128))]),V(" Import Dialog "),s(M,{modelValue:a.value,"onUpdate:modelValue":p[4]||(p[4]=z=>a.value=z),title:"添加比赛",width:"420"},{footer:o(()=>[s($,{onClick:p[3]||(p[3]=z=>a.value=false)},{default:o(()=>[...p[13]||(p[13]=[w("取消",-1)])]),_:1}),s($,{loading:m.importLoading,onClick:v},{default:o(()=>[...p[14]||(p[14]=[w("查询",-1)])]),_:1},8,["loading"]),s($,{type:"primary",disabled:!d.value,onClick:C},{default:o(()=>[...p[15]||(p[15]=[w("添加",-1)])]),_:1},8,["disabled"])]),default:o(()=>[s(J,{"label-width":"80px",onSubmit:Se(C,["prevent"])},{default:o(()=>[s(D,{label:"比赛 ID"},{default:o(()=>[s(U,{modelValue:l.value,"onUpdate:modelValue":p[1]||(p[1]=z=>l.value=z),modelModifiers:{number:true},placeholder:"输入大凤林比赛 ID"},null,8,["modelValue"])]),_:1}),d.value?(i(),j(D,{key:0,label:"比赛名称"},{default:o(()=>[c("span",null,N(d.value.name),1)]),_:1})):V("v-if",true),d.value?(i(),j(D,{key:1,label:"当前轮次"},{default:o(()=>[c("span",null,N(d.value.round),1)]),_:1})):V("v-if",true),s(D,{label:"管理密码"},{default:o(()=>[s(U,{modelValue:u.value,"onUpdate:modelValue":p[2]||(p[2]=z=>u.value=z),placeholder:"可选,用于队伍管理","show-password":""},null,8,["modelValue"])]),_:1}),d.value&&u.value?(i(),j(D,{key:2,label:"密码验证"},{default:o(()=>[d.value.adminVerified?(i(),j(B,{key:0,type:"success",size:"small"},{default:o(()=>[...p[11]||(p[11]=[w("密码正确",-1)])]),_:1})):(i(),j(B,{key:1,type:"danger",size:"small"},{default:o(()=>[...p[12]||(p[12]=[w("密码错误",-1)])]),_:1}))]),_:1})):V("v-if",true)]),_:1})]),_:1},8,["modelValue"]),V(" Context Menu (password edit) "),s(M,{modelValue:S.value,"onUpdate:modelValue":p[7]||(p[7]=z=>S.value=z),title:"编辑比赛",width:"400"},{footer:o(()=>[s($,{type:"danger",onClick:O},{default:o(()=>[...p[16]||(p[16]=[w("移除比赛",-1)])]),_:1}),s($,{onClick:p[6]||(p[6]=z=>S.value=false)},{default:o(()=>[...p[17]||(p[17]=[w("取消",-1)])]),_:1}),s($,{type:"primary",onClick:x},{default:o(()=>[...p[18]||(p[18]=[w("保存",-1)])]),_:1})]),default:o(()=>[f.value?(i(),j(J,{key:0,"label-width":"80px"},{default:o(()=>[s(D,{label:"比赛名称"},{default:o(()=>[c("span",null,N(f.value.name)+" (#"+N(f.value.cid)+")",1)]),_:1}),s(D,{label:"管理密码"},{default:o(()=>[s(U,{modelValue:b.value,"onUpdate:modelValue":p[5]||(p[5]=z=>b.value=z),placeholder:"留空则无队伍管理权限","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})):V("v-if",true)]),_:1},8,["modelValue"])])}}}),Ml=ie(El,[["__scopeId","data-v-ce82ea9a"]]),Dl={class:"cls-header"},Rl={class:"cls-title"},Al={key:0,class:"error-msg"},Ll={class:"player-list"},Ul={class:"player-info"},Fl={class:"player-name"},Bl={class:"swap-popover"},Kl={key:0,class:"swap-section"},Hl=["onClick"],Gl={class:"swap-manual"},Zl={class:"swap-mode-actions"},Jl={class:"player-right"},Yl=["onClick"],ql={key:1,class:"point-edit"},Wl={key:0,class:"no-players"},Xl={class:"cls-actions"},Ql=H({__name:"cls-card",props:{cls:{},status:{},externalCheckResult:{},hasAdmin:{type:Boolean}},emits:["start","stop","check","swap","edit-point"],setup(e,{emit:n}){const t=e,a=n,l=P(()=>t.status.next??t.status.last??[]),u=P(()=>t.status.status==="pending"||t.status.status==="suspended"),d=I(false),v=I(null),C=P(()=>v.value??t.externalCheckResult??null),S=I(""),f=I({});function b($,y){f.value[$]=y}function _($){const y=f.value[$];y!==void 0&&a("edit-point",$,y),f.value[$]=void 0}function x(){d.value=true,v.value=null,a("check",$=>{v.value=$,d.value=false})}function O($,y,U){y!=null&&y.trim()&&(a("swap",$,y.trim(),U),S.value="")}const m=P(()=>{switch(t.status.status){case"pending":return"info";case"running":return"success";case"finished":return"";case"suspended":return"warning";case"error":return"danger"}}),p=P(()=>{switch(t.status.status){case"pending":return"等待中";case"running":return"进行中";case"finished":return"已结束";case"suspended":return"已停止";case"error":return"错误"}});return($,y)=>{const U=k("el-tag"),D=k("el-button"),B=k("el-divider"),J=k("el-input"),M=k("el-popover"),z=k("el-card");return i(),j(z,{class:Y(["cls-card",`status-${e.status.status}`]),shadow:"hover"},{header:o(()=>[c("div",Dl,[c("span",Rl,N(e.cls)+"组 - "+N(e.status.rowi+1),1),s(U,{type:m.value,size:"small",effect:"dark"},{default:o(()=>[w(N(p.value),1)]),_:1},8,["type"])])]),default:o(()=>[e.status.status==="error"&&e.status.msg?(i(),h("div",Al,N(e.status.msg),1)):V("v-if",true),c("div",Ll,[(i(true),h(q,null,ee(l.value,(K,G)=>{var xe;return i(),h("div",{key:G,class:"player-row"},[c("div",Ul,[C.value?(i(),h("span",{key:0,class:Y(["online-dot",(xe=C.value[G])!=null&&xe.online?"online":"offline"])},null,2)):V("v-if",true),c("span",Fl,N(K.player),1),u.value?(i(),j(M,{key:1,trigger:"click",width:220,placement:"right","popper-class":"swap-popover-container"},{reference:o(()=>[s(D,{size:"small",text:"",class:"swap-btn",title:"换人"},{default:o(()=>[...y[3]||(y[3]=[w("✎",-1)])]),_:1})]),default:o(()=>{var te;return[c("div",Bl,[(te=K.teammates)!=null&&te.length?(i(),h("div",Kl,[y[4]||(y[4]=c("div",{class:"swap-title"},"从队伍名单选择",-1)),(i(true),h(q,null,ee(K.teammates,(re,Oe)=>(i(),h("div",{key:Oe,class:Y(["swap-option",{active:re===K.player}]),onClick:Ye=>O(G,re,false)},N(re),11,Hl))),128))])):V("v-if",true),s(B,{style:{margin:"8px 0"}}),y[7]||(y[7]=c("div",{class:"swap-title"},"手动输入",-1)),c("div",Gl,[s(J,{modelValue:S.value,"onUpdate:modelValue":y[0]||(y[0]=re=>S.value=re),size:"small",placeholder:"选手名"},null,8,["modelValue"])]),c("div",Zl,[s(D,{size:"small",onClick:re=>O(G,S.value,false)},{default:o(()=>[...y[5]||(y[5]=[w("临时替换",-1)])]),_:1},8,["onClick"]),e.hasAdmin?(i(),j(D,{key:0,size:"small",type:"primary",onClick:re=>O(G,S.value,true)},{default:o(()=>[...y[6]||(y[6]=[w("修改名单",-1)])]),_:1},8,["onClick"])):V("v-if",true)])])]}),_:2},1024)):V("v-if",true)]),c("div",Jl,[f.value[G]?(i(),h("div",ql,[s(J,{modelValue:f.value[G],"onUpdate:modelValue":te=>f.value[G]=te,modelModifiers:{number:true},size:"small",style:{width:"70px"},onKeyup:[De(te=>_(G),["enter"]),De(te=>f.value[G]=void 0,["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),s(D,{size:"small",text:"",type:"primary",class:"point-edit-btn",onClick:te=>_(G)},{default:o(()=>[...y[8]||(y[8]=[w("✓",-1)])]),_:1},8,["onClick"]),s(D,{size:"small",text:"",class:"point-edit-btn",onClick:te=>f.value[G]=void 0},{default:o(()=>[...y[9]||(y[9]=[w("✕",-1)])]),_:1},8,["onClick"])])):(i(),h("span",{key:0,class:Y(["player-point",{editable:u.value}]),onClick:te=>u.value&&b(G,K.point)},N(K.point),11,Yl))])])}),128)),l.value.length?V("v-if",true):(i(),h("div",Wl,"-"))]),c("div",Xl,[e.status.status==="pending"||e.status.status==="suspended"?(i(),j(D,{key:0,type:"success",size:"small",onClick:y[1]||(y[1]=K=>$.$emit("start"))},{default:o(()=>[...y[10]||(y[10]=[w(" 开赛 ",-1)])]),_:1})):V("v-if",true),e.status.status==="pending"||e.status.status==="running"?(i(),j(D,{key:1,type:"warning",size:"small",onClick:y[2]||(y[2]=K=>$.$emit("stop"))},{default:o(()=>[...y[11]||(y[11]=[w(" 停止 ",-1)])]),_:1})):V("v-if",true),u.value?(i(),j(D,{key:2,size:"small",loading:d.value,onClick:x},{default:o(()=>[...y[12]||(y[12]=[w(" 检查 ",-1)])]),_:1},8,["loading"])):V("v-if",true)])]),_:1},8,["class"])}}}),eo=ie(Ql,[["__scopeId","data-v-559ac705"]]),to={class:"match-manager"},no={class:"config-header"},ao={class:"schedule-section"},lo={class:"schedule-list"},oo={class:"config-actions"},so={class:"subscriber-list"},ro={key:0,class:"subscriber-empty"},io={class:"subscriber-add"},uo={class:"schedule-control-header"},co={class:"schedule-control-list"},po={class:"schedule-info"},mo={key:0,class:"schedule-time"},fo={key:2,class:"status-section"},vo={class:"status-header"},yo={class:"status-actions"},go={class:"cls-grid"},ho={key:3,class:"status-placeholder"},_o={class:"log-header"},bo={class:"log-time"},wo={class:"log-msg"},Co={key:0,class:"log-empty"},xo=H({__name:"match-manager",props:{cid:{},contestInfo:{}},emits:["refresh"],setup(e,{emit:n}){const t=e,a=n,l=I({type:"ssb",round:"",lobby:"",playerIndex:"",ver:"",maxRow:"",schedules:[]}),u=I([]),d=I([]),v=I(),C=I(false),S=I(false),f=Jt({}),b=I("");let _=null;function x(g){if(g===""||g===void 0||g===null)return;const r=Number(g);return isNaN(r)?void 0:r}ce(()=>{var g;return(g=t.contestInfo)==null?void 0:g.extra},g=>{g&&(l.value.type=g.type??"ssb",l.value.round=g.round??"",l.value.lobby=g.lobby??"",l.value.playerIndex=g.playerIndex??"",l.value.ver=g.ver||"",l.value.maxRow=g.maxRow??"",l.value.schedules=(g.schedules??[]).map(r=>({...r,_time:r.startAt?new Date(2e3,0,1,...r.startAt.split(":").map(Number)):void 0})))},{immediate:true});function O(){l.value.schedules.push({maxRow:10,_time:void 0})}function m(){l.value.schedules=[{maxRow:6,startAt:"14:00",_time:new Date(2e3,0,1,14,0)},{maxRow:10,startAt:"19:00",_time:new Date(2e3,0,1,19,0)}]}async function p(){const g=l.value.schedules.map(r=>({maxRow:r.maxRow,startAt:r._time?`${r._time.getHours().toString().padStart(2,"0")}:${r._time.getMinutes().toString().padStart(2,"0")}`:void 0}));await A("mahjongpub/init",t.cid,{type:l.value.type,round:x(l.value.round),lobby:l.value.lobby||void 0,playerIndex:x(l.value.playerIndex),ver:x(l.value.ver),maxRow:x(l.value.maxRow),schedules:g.length?g:void 0}),a("refresh"),await y()}async function $(){await A("mahjongpub/deinit",t.cid),u.value=[],a("refresh")}async function y(){var g;if(!(!((g=t.contestInfo)!=null&&g.extra)&&!u.value.length))try{u.value=await A("mahjongpub/cls-status",t.cid)}catch(r){console.error("Failed to refresh status:",r)}}async function U(g){await A("mahjongpub/start",t.cid,[g]),setTimeout(y,1e3)}async function D(g){await A("mahjongpub/stop",t.cid,[g]),setTimeout(y,500)}async function B(g,r){try{const L=await A("mahjongpub/check-players",t.cid,g);f[g]=L,r(L)}catch(L){F.error(`检查失败: ${L}`),r([])}}async function J(){S.value=true;const g=[];try{const r=u.value.filter(([,L])=>L.status==="pending"||L.status==="suspended").map(([L,ne])=>[L,ne]);for(const[L,ne]of r)try{const ae=await A("mahjongpub/check-players",t.cid,L);f[L]=ae}catch(ae){g.push(`${L}组: ${ae}`);const le=ne.next??ne.last??[];f[L]=le.map(W=>({player:W.player,online:false}))}g.length&&F.warning(`部分检查失败:
|
|
5
|
+
**/const ln=Object.prototype.hasOwnProperty,nt=(e,n)=>ln.call(e,n),Ie=e=>typeof e=="function",ze=e=>typeof e=="string",gt=e=>e!==null&&typeof e=="object";var on=typeof global=="object"&&global&&global.Object===Object&&global,sn=typeof self=="object"&&self&&self.Object===Object&&self,Be=on||sn||Function("return this")(),ve=Be.Symbol,ht=Object.prototype,rn=ht.hasOwnProperty,un=ht.toString,he=ve?ve.toStringTag:void 0;function dn(e){var n=rn.call(e,he),t=e[he];try{e[he]=void 0;var a=true}catch{}var l=un.call(e);return a&&(n?e[he]=t:delete e[he]),l}var cn=Object.prototype,pn=cn.toString;function mn(e){return pn.call(e)}var fn="[object Null]",vn="[object Undefined]",at=ve?ve.toStringTag:void 0;function _t(e){return e==null?e===void 0?vn:fn:at&&at in Object(e)?dn(e):mn(e)}function yn(e){return e!=null&&typeof e=="object"}var gn="[object Symbol]";function Ke(e){return typeof e=="symbol"||yn(e)&&_t(e)==gn}function hn(e,n){for(var t=-1,a=e==null?0:e.length,l=Array(a);++t<a;)l[t]=n(e[t],t,e);return l}var He=Array.isArray,lt=ve?ve.prototype:void 0,ot=lt?lt.toString:void 0;function bt(e){if(typeof e=="string")return e;if(He(e))return hn(e,bt)+"";if(Ke(e))return ot?ot.call(e):"";var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function wt(e){var n=typeof e;return e!=null&&(n=="object"||n=="function")}var _n="[object AsyncFunction]",bn="[object Function]",wn="[object GeneratorFunction]",Cn="[object Proxy]";function xn(e){if(!wt(e))return false;var n=_t(e);return n==bn||n==wn||n==_n||n==Cn}var Me=Be["__core-js_shared__"],st=function(){var e=/[^.]+$/.exec(Me&&Me.keys&&Me.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}();function $n(e){return!!st&&st in e}var kn=Function.prototype,Sn=kn.toString;function In(e){if(e!=null){try{return Sn.call(e)}catch{}try{return e+""}catch{}}return""}var zn=/[\\^$.*+?()[\]{}|]/g,Tn=/^\[object .+?Constructor\]$/,Vn=Function.prototype,jn=Object.prototype,Pn=Vn.toString,Nn=jn.hasOwnProperty,On=RegExp("^"+Pn.call(Nn).replace(zn,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function En(e){if(!wt(e)||$n(e))return false;var n=xn(e)?On:Tn;return n.test(In(e))}function Mn(e,n){return e==null?void 0:e[n]}function Ct(e,n){var t=Mn(e,n);return En(t)?t:void 0}function Dn(e,n){return e===n||e!==e&&n!==n}var Rn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,An=/^\w*$/;function Ln(e,n){if(He(e))return false;var t=typeof e;return t=="number"||t=="symbol"||t=="boolean"||e==null||Ke(e)?true:An.test(e)||!Rn.test(e)||n!=null&&e in Object(n)}var be=Ct(Object,"create");function Un(){this.__data__=be?be(null):{},this.size=0}function Fn(e){var n=this.has(e)&&delete this.__data__[e];return this.size-=n?1:0,n}var Bn="__lodash_hash_undefined__",Kn=Object.prototype,Hn=Kn.hasOwnProperty;function Gn(e){var n=this.__data__;if(be){var t=n[e];return t===Bn?void 0:t}return Hn.call(n,e)?n[e]:void 0}var Zn=Object.prototype,Jn=Zn.hasOwnProperty;function Yn(e){var n=this.__data__;return be?n[e]!==void 0:Jn.call(n,e)}var qn="__lodash_hash_undefined__";function Wn(e,n){var t=this.__data__;return this.size+=this.has(e)?0:1,t[e]=be&&n===void 0?qn:n,this}function pe(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}pe.prototype.clear=Un;pe.prototype.delete=Fn;pe.prototype.get=Gn;pe.prototype.has=Yn;pe.prototype.set=Wn;function Xn(){this.__data__=[],this.size=0}function Pe(e,n){for(var t=e.length;t--;)if(Dn(e[t][0],n))return t;return-1}var Qn=Array.prototype,ea=Qn.splice;function ta(e){var n=this.__data__,t=Pe(n,e);if(t<0)return false;var a=n.length-1;return t==a?n.pop():ea.call(n,t,1),--this.size,true}function na(e){var n=this.__data__,t=Pe(n,e);return t<0?void 0:n[t][1]}function aa(e){return Pe(this.__data__,e)>-1}function la(e,n){var t=this.__data__,a=Pe(t,e);return a<0?(++this.size,t.push([e,n])):t[a][1]=n,this}function ge(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}ge.prototype.clear=Xn;ge.prototype.delete=ta;ge.prototype.get=na;ge.prototype.has=aa;ge.prototype.set=la;var oa=Ct(Be,"Map");function sa(){this.size=0,this.__data__={hash:new pe,map:new(oa||ge),string:new pe}}function ra(e){var n=typeof e;return n=="string"||n=="number"||n=="symbol"||n=="boolean"?e!=="__proto__":e===null}function Ne(e,n){var t=e.__data__;return ra(n)?t[typeof n=="string"?"string":"hash"]:t.map}function ia(e){var n=Ne(this,e).delete(e);return this.size-=n?1:0,n}function ua(e){return Ne(this,e).get(e)}function da(e){return Ne(this,e).has(e)}function ca(e,n){var t=Ne(this,e),a=t.size;return t.set(e,n),this.size+=t.size==a?0:1,this}function me(e){var n=-1,t=e==null?0:e.length;for(this.clear();++n<t;){var a=e[n];this.set(a[0],a[1])}}me.prototype.clear=sa;me.prototype.delete=ia;me.prototype.get=ua;me.prototype.has=da;me.prototype.set=ca;var pa="Expected a function";function Ge(e,n){if(typeof e!="function"||n!=null&&typeof n!="function")throw new TypeError(pa);var t=function(){var a=arguments,l=n?n.apply(this,a):a[0],u=t.cache;if(u.has(l))return u.get(l);var d=e.apply(this,a);return t.cache=u.set(l,d)||u,d};return t.cache=new(Ge.Cache||me),t}Ge.Cache=me;var ma=500;function fa(e){var n=Ge(e,function(a){return t.size===ma&&t.clear(),a}),t=n.cache;return n}var va=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ya=/\\(\\)?/g,ga=fa(function(e){var n=[];return e.charCodeAt(0)===46&&n.push(""),e.replace(va,function(t,a,l,u){n.push(l?u.replace(ya,"$1"):a||t)}),n});function ha(e){return e==null?"":bt(e)}function _a(e,n){return He(e)?e:Ln(e,n)?[e]:ga(ha(e))}function ba(e){if(typeof e=="string"||Ke(e))return e;var n=e+"";return n=="0"&&1/e==-1/0?"-0":n}function wa(e,n){n=_a(n,e);for(var t=0,a=n.length;e!=null&&t<a;)e=e[ba(n[t++])];return t&&t==a?e:void 0}function Ca(e,n,t){var a=e==null?void 0:wa(e,n);return a===void 0?t:a}function xa(e){for(var n=-1,t=e==null?0:e.length,a={};++n<t;){var l=e[n];a[l[0]]=l[1]}return a}const $a=e=>e===void 0,we=e=>typeof e=="number",ka=e=>typeof Element>"u"?false:e instanceof Element,Sa=e=>ze(e)?!Number.isNaN(Number(e)):false,rt=e=>Object.keys(e);function Re(e,n="px"){if(!e)return"";if(we(e)||Sa(e))return`${e}${n}`;if(ze(e))return e}/*! Element Plus Icons Vue v2.3.2 */var Ia=G({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(n,t)=>(i(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),za=Ia,Ta=G({name:"Close",__name:"close",setup(e){return(n,t)=>(i(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),Va=Ta,ja=G({name:"InfoFilled",__name:"info-filled",setup(e){return(n,t)=>(i(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.99 12.99 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),Pa=ja,Na=G({name:"SuccessFilled",__name:"success-filled",setup(e){return(n,t)=>(i(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.27 38.27 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),Oa=Na,Ea=G({name:"WarningFilled",__name:"warning-filled",setup(e){return(n,t)=>(i(),_("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[c("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.43 58.43 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.43 58.43 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),Ma=Ea;const xt="__epPropKey",oe=e=>e,Da=e=>gt(e)&&!!e[xt],$t=(e,n)=>{if(!gt(e)||Da(e))return e;const{values:t,required:a,default:l,type:u,validator:d}=e,$={type:u,required:!!a,validator:t||d?I=>{let y=false,b=[];if(t&&(b=Array.from(t),nt(e,"default")&&b.push(l),y||(y=b.includes(I))),d&&(y||(y=d(I))),!y&&b.length>0){const h=[...new Set(b)].map(x=>JSON.stringify(x)).join(", ");Ft(`Invalid prop: validation failed${n?` for prop "${n}"`:""}. Expected one of [${h}], got value ${JSON.stringify(I)}.`)}return y}:void 0,[xt]:true};return nt(e,"default")&&($.default=l),$},Ce=e=>xa(Object.entries(e).map(([n,t])=>[n,$t(t,n)])),Ra=oe([String,Object,Function]),Aa={Close:Va},it={success:Oa,warning:Ma,error:za,info:Pa},kt=(e,n)=>(e.install=t=>{for(const a of[e,...Object.values({})])t.component(a.name,a)},e),La=(e,n)=>(e.install=t=>{e._context=t._context,t.config.globalProperties[n]=e},e),Ua={esc:"Escape"},Fa=["","default","small","large"],Ba=e=>e,ut=({from:e,replacement:n,scope:t,version:a,ref:l,type:u="API"},d)=>{ce(()=>T(d),m=>{},{immediate:true})};var Ka={name:"en",el:{breadcrumb:{label:"Breadcrumb"},colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"},carousel:{leftArrow:"Carousel arrow left",rightArrow:"Carousel arrow right",indicator:"Carousel switch to index {index}"}}};const Ha=e=>(n,t)=>Ga(n,t,T(e)),Ga=(e,n,t)=>Ca(t,e,e).replace(/\{(\w+)\}/g,(a,l)=>{var u;return`${(u=n==null?void 0:n[l])!=null?u:`{${l}}`}`}),Za=e=>{const n=P(()=>T(e).name),t=Bt(e)?e:S(e);return{lang:n,locale:t,t:Ha(e)}},St=Symbol("localeContextKey"),Ja=e=>{const n=e||fe(St,S());return Za(P(()=>n.value||Ka))},ke="el",Ya="is-",de=(e,n,t,a,l)=>{let u=`${e}-${n}`;return t&&(u+=`-${t}`),a&&(u+=`__${a}`),l&&(u+=`--${l}`),u},It=Symbol("namespaceContextKey"),qa=e=>{const n=e||(_e()?fe(It,S(ke)):S(ke));return P(()=>T(n)||ke)},Ze=(e,n)=>{const t=qa(n);return{namespace:t,b:(v="")=>de(t.value,e,v,"",""),e:v=>v?de(t.value,e,"",v,""):"",m:v=>v?de(t.value,e,"","",v):"",be:(v,w)=>v&&w?de(t.value,e,v,w,""):"",em:(v,w)=>v&&w?de(t.value,e,"",v,w):"",bm:(v,w)=>v&&w?de(t.value,e,v,"",w):"",bem:(v,w,p)=>v&&w&&p?de(t.value,e,v,w,p):"",is:(v,...w)=>{const p=w.length>=1?w[0]:true;return v&&p?`${Ya}${v}`:""},cssVar:v=>{const w={};for(const p in v)v[p]&&(w[`--${t.value}-${p}`]=v[p]);return w},cssVarName:v=>`--${t.value}-${v}`,cssVarBlock:v=>{const w={};for(const p in v)v[p]&&(w[`--${t.value}-${e}-${p}`]=v[p]);return w},cssVarBlockName:v=>`--${t.value}-${e}-${v}`}},dt={current:0},ct=S(0),zt=2e3,pt=Symbol("elZIndexContextKey"),Tt=Symbol("zIndexContextKey"),Wa=e=>{const n=_e()?fe(pt,dt):dt,t=e||(_e()?fe(Tt,void 0):void 0),a=P(()=>{const d=T(t);return we(d)?d:zt}),l=P(()=>a.value+ct.value),u=()=>(n.current++,ct.value=n.current,l.value);return!Fe&&fe(pt),{initialZIndex:a,currentZIndex:l,nextZIndex:u}},Xa=$t({type:String,values:Fa,required:false}),Qa=Symbol("size"),el=Symbol("emptyValuesContextKey"),tl=Ce({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Ie(e)?!e():!e}}),Vt=Symbol(),Te=S();function jt(e,n=void 0){return _e()?fe(Vt,Te):Te}function nl(e,n){const t=jt(),a=Ze(e,P(()=>{var m;return((m=t.value)==null?void 0:m.namespace)||ke})),l=Ja(P(()=>{var m;return(m=t.value)==null?void 0:m.locale})),u=Wa(P(()=>{var m;return((m=t.value)==null?void 0:m.zIndex)||zt})),d=P(()=>{var m;return T(n)||((m=t.value)==null?void 0:m.size)||""});return Pt(P(()=>T(t)||{})),{ns:a,locale:l,zIndex:u,size:d}}const Pt=(e,n,t=false)=>{var a;const l=!!_e(),u=l?jt():void 0,d=(a=void 0)!=null?a:l?Kt:void 0;if(!d)return;const m=P(()=>{const $=T(e);return u!=null&&u.value?al(u.value,$):$});return d(Vt,m),d(St,P(()=>m.value.locale)),d(It,P(()=>m.value.namespace)),d(Tt,P(()=>m.value.zIndex)),d(Qa,{size:P(()=>m.value.size||"")}),d(el,P(()=>({emptyValues:m.value.emptyValues,valueOnClear:m.value.valueOnClear}))),(t||!Te.value)&&(Te.value=m.value),m},al=(e,n)=>{const t=[...new Set([...rt(e),...rt(n)])],a={};for(const l of t)a[l]=n[l]!==void 0?n[l]:e[l];return a},ll=Ce({a11y:{type:Boolean,default:true},locale:{type:oe(Object)},size:Xa,button:{type:oe(Object)},experimentalFeatures:{type:oe(Object)},keyboardNavigation:{type:Boolean,default:true},message:{type:oe(Object)},zIndex:Number,namespace:{type:String,default:"el"},...tl}),Ae={};G({name:"ElConfigProvider",props:ll,setup(e,{slots:n}){ce(()=>e.message,a=>{Object.assign(Ae,a??{})},{immediate:true,deep:true});const t=Pt(e);return()=>Ve(n,"default",{config:t==null?void 0:t.value})}});var Je=(e,n)=>{const t=e.__vccOpts||e;for(const[a,l]of n)t[a]=l;return t};const ol=Ce({size:{type:oe([Number,String])},color:{type:String}}),sl=G({name:"ElIcon",inheritAttrs:false}),rl=G({...sl,props:ol,setup(e){const n=e,t=Ze("icon"),a=P(()=>{const{size:l,color:u}=n;return!l&&!u?{}:{fontSize:$a(l)?void 0:Re(l),"--color":u}});return(l,u)=>(i(),_("i",Ht({class:T(t).b(),style:T(a)},l.$attrs),[Ve(l.$slots,"default")],16))}});var il=Je(rl,[["__file","icon.vue"]]);const mt=kt(il),ul=Ce({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"},showZero:{type:Boolean,default:true},color:String,dotStyle:{type:oe([String,Object,Array])},badgeStyle:{type:oe([String,Object,Array])},offset:{type:oe(Array),default:[0,0]},dotClass:{type:String},badgeClass:{type:String}}),dl=["textContent"],cl=G({name:"ElBadge"}),pl=G({...cl,props:ul,setup(e,{expose:n}){const t=e,a=Ze("badge"),l=P(()=>t.isDot?"":we(t.value)&&we(t.max)?t.max<t.value?`${t.max}+`:t.value===0&&!t.showZero?"":`${t.value}`:`${t.value}`),u=P(()=>{var d,m,$,I,y,b;return[{backgroundColor:t.color,marginRight:Re(-((m=(d=t.offset)==null?void 0:d[0])!=null?m:0)),marginTop:Re((I=($=t.offset)==null?void 0:$[1])!=null?I:0)},(y=t.dotStyle)!=null?y:{},(b=t.badgeStyle)!=null?b:{}]});return ut({from:"dot-style",replacement:"badge-style",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},P(()=>!!t.dotStyle)),ut({from:"dot-class",replacement:"badge-class",version:"2.8.0",scope:"el-badge",ref:"https://element-plus.org/en-US/component/badge.html"},P(()=>!!t.dotClass)),n({content:l}),(d,m)=>(i(),_("div",{class:Y(T(a).b())},[Ve(d.$slots,"default"),s(ft,{name:`${T(a).namespace.value}-zoom-in-center`,persisted:""},{default:o(()=>[Le(c("sup",{class:Y([T(a).e("content"),T(a).em("content",d.type),T(a).is("fixed",!!d.$slots.default),T(a).is("dot",d.isDot),d.dotClass,d.badgeClass]),style:vt(T(u)),textContent:N(T(l))},null,14,dl),[[Ue,!d.hidden&&(T(l)||d.isDot)]])]),_:1},8,["name"])],2))}});var ml=Je(pl,[["__file","badge.vue"]]);const fl=kt(ml),Nt=["success","info","warning","error"],Z=Ba({customClass:"",center:false,dangerouslyUseHTMLString:false,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:false,type:"info",plain:false,offset:16,zIndex:0,grouping:false,repeatNum:1,appendTo:Fe?document.body:void 0}),vl=Ce({customClass:{type:String,default:Z.customClass},center:{type:Boolean,default:Z.center},dangerouslyUseHTMLString:{type:Boolean,default:Z.dangerouslyUseHTMLString},duration:{type:Number,default:Z.duration},icon:{type:Ra,default:Z.icon},id:{type:String,default:Z.id},message:{type:oe([String,Object,Function]),default:Z.message},onClose:{type:oe(Function),default:Z.onClose},showClose:{type:Boolean,default:Z.showClose},type:{type:String,values:Nt,default:Z.type},plain:{type:Boolean,default:Z.plain},offset:{type:Number,default:Z.offset},zIndex:{type:Number,default:Z.zIndex},grouping:{type:Boolean,default:Z.grouping},repeatNum:{type:Number,default:Z.repeatNum}}),yl={destroy:()=>true},se=Gt([]),gl=e=>{const n=se.findIndex(l=>l.id===e),t=se[n];let a;return n>0&&(a=se[n-1]),{current:t,prev:a}},hl=e=>{const{prev:n}=gl(e);return n?n.vm.exposed.bottom.value:0},_l=(e,n)=>se.findIndex(a=>a.id===e)>0?16:n,bl=["id"],wl=["innerHTML"],Cl=G({name:"ElMessage"}),xl=G({...Cl,props:vl,emits:yl,setup(e,{expose:n}){const t=e,{Close:a}=Aa,{ns:l,zIndex:u}=nl("message"),{currentZIndex:d,nextZIndex:m}=u,$=S(),I=S(false),y=S(0);let b;const h=P(()=>t.type?t.type==="error"?"danger":t.type:"info"),x=P(()=>{const M=t.type;return{[l.bm("icon",M)]:M&&it[M]}}),O=P(()=>t.icon||it[t.type]||""),v=P(()=>hl(t.id)),w=P(()=>_l(t.id,t.offset)+v.value),p=P(()=>y.value+w.value),f=P(()=>({top:`${w.value}px`,zIndex:d.value}));function B(){t.duration!==0&&({stop:b}=Qt(()=>{A()},t.duration))}function U(){b==null||b()}function A(){I.value=false}function J({code:M}){M===Ua.esc&&A()}return je(()=>{B(),m(),I.value=true}),ce(()=>t.repeatNum,()=>{U(),B()}),Wt(document,"keydown",J),Xt($,()=>{y.value=$.value.getBoundingClientRect().height}),n({visible:I,bottom:p,close:A}),(M,K)=>(i(),j(ft,{name:T(l).b("fade"),onBeforeLeave:M.onClose,onAfterLeave:K[0]||(K[0]=z=>M.$emit("destroy")),persisted:""},{default:o(()=>[Le(c("div",{id:M.id,ref_key:"messageRef",ref:$,class:Y([T(l).b(),{[T(l).m(M.type)]:M.type},T(l).is("center",M.center),T(l).is("closable",M.showClose),T(l).is("plain",M.plain),M.customClass]),style:vt(T(f)),role:"alert",onMouseenter:U,onMouseleave:B},[M.repeatNum>1?(i(),j(T(fl),{key:0,value:M.repeatNum,type:T(h),class:Y(T(l).e("badge"))},null,8,["value","type","class"])):V("v-if",true),T(O)?(i(),j(T(mt),{key:1,class:Y([T(l).e("icon"),T(x)])},{default:o(()=>[(i(),j(Zt(T(O))))]),_:1},8,["class"])):V("v-if",true),Ve(M.$slots,"default",{},()=>[M.dangerouslyUseHTMLString?(i(),_(q,{key:1},[V(" Caution here, message could've been compromised, never use user's input as message "),c("p",{class:Y(T(l).e("content")),innerHTML:M.message},null,10,wl)],2112)):(i(),_("p",{key:0,class:Y(T(l).e("content"))},N(M.message),3))]),M.showClose?(i(),j(T(mt),{key:2,class:Y(T(l).e("closeBtn")),onClick:Se(A,["stop"])},{default:o(()=>[s(T(a))]),_:1},8,["class","onClick"])):V("v-if",true)],46,bl),[[Ue,I.value]])]),_:3},8,["name","onBeforeLeave"]))}});var $l=Je(xl,[["__file","message.vue"]]);let kl=1;const Ot=e=>{const n=!e||ze(e)||yt(e)||Ie(e)?{message:e}:e,t={...Z,...n};if(!t.appendTo)t.appendTo=document.body;else if(ze(t.appendTo)){let a=document.querySelector(t.appendTo);ka(a)||(a=document.body),t.appendTo=a}return t},Sl=e=>{const n=se.indexOf(e);if(n===-1)return;se.splice(n,1);const{handler:t}=e;t.close()},Il=({appendTo:e,...n},t)=>{const a=`message_${kl++}`,l=n.onClose,u=document.createElement("div"),d={...n,id:a,onClose:()=>{l==null||l(),Sl(y)},onDestroy:()=>{tt(null,u)}},m=s($l,d,Ie(d.message)||yt(d.message)?{default:Ie(d.message)?d.message:()=>d.message}:null);m.appContext=t||ye._context,tt(m,u),e.appendChild(u.firstElementChild);const $=m.component,y={id:a,vnode:m,vm:$,handler:{close:()=>{$.exposed.visible.value=false}},props:m.component.props};return y},ye=(e={},n)=>{if(!Fe)return{close:()=>{}};if(we(Ae.max)&&se.length>=Ae.max)return{close:()=>{}};const t=Ot(e);if(t.grouping&&se.length){const l=se.find(({vnode:u})=>{var d;return((d=u.props)==null?void 0:d.message)===t.message});if(l)return l.props.repeatNum+=1,l.props.type=t.type,l.handler}const a=Il(t,n);return se.push(a),a.handler};Nt.forEach(e=>{ye[e]=(n={},t)=>{const a=Ot(n);return ye({...a,type:e},t)}});function zl(e){for(const n of se)(!e||e===n.props.type)&&n.handler.close()}ye.closeAll=zl;ye._context=null;const F=La(ye,"$message"),Tl={class:"sidebar"},Vl={class:"sidebar-header"},jl={class:"contest-list"},Pl=["onClick","onContextmenu"],Nl={class:"contest-name"},Ol={class:"contest-cid"},El=G({__name:"sidebar",props:{contests:{},activeCid:{}},emits:["select","add","remove","update"],setup(e,{emit:n}){const t=n,a=S(false),l=S(null),u=S(""),d=S(null),m=S(false);async function $(){if(l.value){m.value=true;try{d.value=await R("mahjongpub/search-contests",l.value,u.value||void 0)}catch(w){F.error(`查询失败: ${w}`)}finally{m.value=false}}}async function I(){if(d.value){m.value=true;try{const w={cid:d.value.cid,name:d.value.name,adminPassword:u.value||void 0};await R("mahjongpub/add-managed",w),t("add",w),a.value=false,l.value=null,d.value=null,u.value=""}catch(w){F.error(`添加失败: ${w}`)}finally{m.value=false}}}const y=S(false),b=S(null),h=S("");function x(w,p){b.value=p,h.value=p.adminPassword??"",y.value=true}async function O(){if(b.value)try{await R("mahjongpub/update-managed",b.value.cid,{adminPassword:h.value||void 0}),t("update",b.value.cid,{adminPassword:h.value||void 0}),y.value=false}catch(w){F.error(`保存失败: ${w}`)}}async function v(){if(b.value)try{await R("mahjongpub/remove-managed",b.value.cid),t("remove",b.value.cid),y.value=false}catch(w){F.error(`移除失败: ${w}`)}}return(w,p)=>{const f=k("el-button"),B=k("el-icon"),U=k("el-input"),A=k("el-form-item"),J=k("el-tag"),M=k("el-form"),K=k("el-dialog");return i(),_("div",Tl,[c("div",Vl,[p[9]||(p[9]=c("span",null,"比赛列表",-1)),s(f,{size:"small",type:"primary",onClick:p[0]||(p[0]=z=>a.value=true)},{default:o(()=>[...p[8]||(p[8]=[C("+ 添加",-1)])]),_:1})]),c("div",jl,[(i(true),_(q,null,ee(e.contests,z=>(i(),_("div",{key:z.cid,class:Y(["contest-item",{active:z.cid===e.activeCid}]),onClick:H=>w.$emit("select",z.cid),onContextmenu:Se(H=>x(H,z),["prevent"])},[c("div",Nl,N(z.name),1),c("div",Ol,"#"+N(z.cid),1),z.adminPassword?(i(),j(B,{key:0,class:"admin-badge",title:"已配置管理密码"},{default:o(()=>[...p[10]||(p[10]=[c("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"currentColor"},[c("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2zm-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2z"})],-1)])]),_:1})):V("v-if",true)],42,Pl))),128))]),V(" Import Dialog "),s(K,{modelValue:a.value,"onUpdate:modelValue":p[4]||(p[4]=z=>a.value=z),title:"添加比赛",width:"420"},{footer:o(()=>[s(f,{onClick:p[3]||(p[3]=z=>a.value=false)},{default:o(()=>[...p[13]||(p[13]=[C("取消",-1)])]),_:1}),s(f,{loading:m.value,onClick:$},{default:o(()=>[...p[14]||(p[14]=[C("查询",-1)])]),_:1},8,["loading"]),s(f,{type:"primary",disabled:!d.value,onClick:I},{default:o(()=>[...p[15]||(p[15]=[C("添加",-1)])]),_:1},8,["disabled"])]),default:o(()=>[s(M,{"label-width":"80px",onSubmit:Se(I,["prevent"])},{default:o(()=>[s(A,{label:"比赛 ID"},{default:o(()=>[s(U,{modelValue:l.value,"onUpdate:modelValue":p[1]||(p[1]=z=>l.value=z),modelModifiers:{number:true},placeholder:"输入大凤林比赛 ID"},null,8,["modelValue"])]),_:1}),d.value?(i(),j(A,{key:0,label:"比赛名称"},{default:o(()=>[c("span",null,N(d.value.name),1)]),_:1})):V("v-if",true),d.value?(i(),j(A,{key:1,label:"当前轮次"},{default:o(()=>[c("span",null,N(d.value.round),1)]),_:1})):V("v-if",true),s(A,{label:"管理密码"},{default:o(()=>[s(U,{modelValue:u.value,"onUpdate:modelValue":p[2]||(p[2]=z=>u.value=z),placeholder:"可选,用于队伍管理","show-password":""},null,8,["modelValue"])]),_:1}),d.value&&u.value?(i(),j(A,{key:2,label:"密码验证"},{default:o(()=>[d.value.adminVerified?(i(),j(J,{key:0,type:"success",size:"small"},{default:o(()=>[...p[11]||(p[11]=[C("密码正确",-1)])]),_:1})):(i(),j(J,{key:1,type:"danger",size:"small"},{default:o(()=>[...p[12]||(p[12]=[C("密码错误",-1)])]),_:1}))]),_:1})):V("v-if",true)]),_:1})]),_:1},8,["modelValue"]),V(" Context Menu (password edit) "),s(K,{modelValue:y.value,"onUpdate:modelValue":p[7]||(p[7]=z=>y.value=z),title:"编辑比赛",width:"400"},{footer:o(()=>[s(f,{type:"danger",onClick:v},{default:o(()=>[...p[16]||(p[16]=[C("移除比赛",-1)])]),_:1}),s(f,{onClick:p[6]||(p[6]=z=>y.value=false)},{default:o(()=>[...p[17]||(p[17]=[C("取消",-1)])]),_:1}),s(f,{type:"primary",onClick:O},{default:o(()=>[...p[18]||(p[18]=[C("保存",-1)])]),_:1})]),default:o(()=>[b.value?(i(),j(M,{key:0,"label-width":"80px"},{default:o(()=>[s(A,{label:"比赛名称"},{default:o(()=>[c("span",null,N(b.value.name)+" (#"+N(b.value.cid)+")",1)]),_:1}),s(A,{label:"管理密码"},{default:o(()=>[s(U,{modelValue:h.value,"onUpdate:modelValue":p[5]||(p[5]=z=>h.value=z),placeholder:"留空则无队伍管理权限","show-password":""},null,8,["modelValue"])]),_:1})]),_:1})):V("v-if",true)]),_:1},8,["modelValue"])])}}}),Ml=ie(El,[["__scopeId","data-v-8b51a7a2"]]),Dl={class:"cls-header"},Rl={class:"cls-title"},Al={key:0,class:"error-msg"},Ll={class:"player-list"},Ul={class:"player-info"},Fl={class:"player-name"},Bl={class:"swap-popover"},Kl={key:0,class:"swap-section"},Hl=["onClick"],Gl={class:"swap-manual"},Zl={class:"swap-mode-actions"},Jl={class:"player-right"},Yl=["onClick"],ql={key:1,class:"point-edit"},Wl={key:0,class:"no-players"},Xl={class:"cls-actions"},Ql=G({__name:"cls-card",props:{cls:{},status:{},externalCheckResult:{},hasAdmin:{type:Boolean}},emits:["start","stop","check","swap","edit-point"],setup(e,{emit:n}){const t=e,a=n,l=P(()=>t.status.next??t.status.last??[]),u=P(()=>t.status.status==="pending"||t.status.status==="suspended"),d=S(false),m=S(null),$=P(()=>m.value??t.externalCheckResult??null),I=S(""),y=S({});function b(p,f){y.value[p]=f}function h(p){const f=y.value[p];f!==void 0&&a("edit-point",p,f),y.value[p]=void 0}function x(){d.value=true,m.value=null,a("check",p=>{m.value=p,d.value=false})}function O(p,f,B){f!=null&&f.trim()&&(a("swap",p,f.trim(),B),I.value="")}const v=P(()=>{switch(t.status.status){case"pending":return"info";case"running":return"success";case"finished":return"";case"suspended":return"warning";case"error":return"danger"}}),w=P(()=>{switch(t.status.status){case"pending":return"等待中";case"running":return"进行中";case"finished":return"已结束";case"suspended":return"已停止";case"error":return"错误"}});return(p,f)=>{const B=k("el-tag"),U=k("el-button"),A=k("el-divider"),J=k("el-input"),M=k("el-popover"),K=k("el-card");return i(),j(K,{class:Y(["cls-card",`status-${e.status.status}`]),shadow:"hover"},{header:o(()=>[c("div",Dl,[c("span",Rl,N(e.cls)+"组 - "+N(e.status.rowi+1),1),s(B,{type:v.value,size:"small",effect:"dark"},{default:o(()=>[C(N(w.value),1)]),_:1},8,["type"])])]),default:o(()=>[e.status.status==="error"&&e.status.msg?(i(),_("div",Al,N(e.status.msg),1)):V("v-if",true),c("div",Ll,[(i(true),_(q,null,ee(l.value,(z,H)=>{var xe;return i(),_("div",{key:H,class:"player-row"},[c("div",Ul,[$.value?(i(),_("span",{key:0,class:Y(["online-dot",(xe=$.value[H])!=null&&xe.online?"online":"offline"])},null,2)):V("v-if",true),c("span",Fl,N(z.player),1),u.value?(i(),j(M,{key:1,trigger:"click",width:220,placement:"right","popper-class":"swap-popover-container"},{reference:o(()=>[s(U,{size:"small",text:"",class:"swap-btn",title:"换人"},{default:o(()=>[...f[3]||(f[3]=[C("✎",-1)])]),_:1})]),default:o(()=>{var te;return[c("div",Bl,[(te=z.teammates)!=null&&te.length?(i(),_("div",Kl,[f[4]||(f[4]=c("div",{class:"swap-title"},"从队伍名单选择",-1)),(i(true),_(q,null,ee(z.teammates,(re,Oe)=>(i(),_("div",{key:Oe,class:Y(["swap-option",{active:re===z.player}]),onClick:Ye=>O(H,re,false)},N(re),11,Hl))),128))])):V("v-if",true),s(A,{style:{margin:"8px 0"}}),f[7]||(f[7]=c("div",{class:"swap-title"},"手动输入",-1)),c("div",Gl,[s(J,{modelValue:I.value,"onUpdate:modelValue":f[0]||(f[0]=re=>I.value=re),size:"small",placeholder:"选手名"},null,8,["modelValue"])]),c("div",Zl,[s(U,{size:"small",onClick:re=>O(H,I.value,false)},{default:o(()=>[...f[5]||(f[5]=[C("临时替换",-1)])]),_:1},8,["onClick"]),e.hasAdmin?(i(),j(U,{key:0,size:"small",type:"primary",onClick:re=>O(H,I.value,true)},{default:o(()=>[...f[6]||(f[6]=[C("修改名单",-1)])]),_:1},8,["onClick"])):V("v-if",true)])])]}),_:2},1024)):V("v-if",true)]),c("div",Jl,[y.value[H]?(i(),_("div",ql,[s(J,{modelValue:y.value[H],"onUpdate:modelValue":te=>y.value[H]=te,modelModifiers:{number:true},size:"small",style:{width:"70px"},onKeyup:[De(te=>h(H),["enter"]),De(te=>y.value[H]=void 0,["escape"])]},null,8,["modelValue","onUpdate:modelValue","onKeyup"]),s(U,{size:"small",text:"",type:"primary",class:"point-edit-btn",onClick:te=>h(H)},{default:o(()=>[...f[8]||(f[8]=[C("✓",-1)])]),_:1},8,["onClick"]),s(U,{size:"small",text:"",class:"point-edit-btn",onClick:te=>y.value[H]=void 0},{default:o(()=>[...f[9]||(f[9]=[C("✕",-1)])]),_:1},8,["onClick"])])):(i(),_("span",{key:0,class:Y(["player-point",{editable:u.value}]),onClick:te=>u.value&&b(H,z.point)},N(z.point),11,Yl))])])}),128)),l.value.length?V("v-if",true):(i(),_("div",Wl,"-"))]),c("div",Xl,[e.status.status==="pending"||e.status.status==="suspended"?(i(),j(U,{key:0,type:"success",size:"small",onClick:f[1]||(f[1]=z=>p.$emit("start"))},{default:o(()=>[...f[10]||(f[10]=[C(" 开赛 ",-1)])]),_:1})):V("v-if",true),e.status.status==="pending"||e.status.status==="running"?(i(),j(U,{key:1,type:"warning",size:"small",onClick:f[2]||(f[2]=z=>p.$emit("stop"))},{default:o(()=>[...f[11]||(f[11]=[C(" 停止 ",-1)])]),_:1})):V("v-if",true),u.value?(i(),j(U,{key:2,size:"small",loading:d.value,onClick:x},{default:o(()=>[...f[12]||(f[12]=[C(" 检查 ",-1)])]),_:1},8,["loading"])):V("v-if",true)])]),_:1},8,["class"])}}}),eo=ie(Ql,[["__scopeId","data-v-559ac705"]]),to={class:"match-manager"},no={class:"config-header"},ao={class:"schedule-section"},lo={class:"schedule-list"},oo={class:"config-actions"},so={class:"subscriber-list"},ro={key:0,class:"subscriber-empty"},io={class:"subscriber-add"},uo={class:"schedule-control-header"},co={class:"schedule-control-list"},po={class:"schedule-info"},mo={key:0,class:"schedule-time"},fo={key:2,class:"status-section"},vo={class:"status-header"},yo={class:"status-actions"},go={class:"cls-grid"},ho={key:3,class:"status-placeholder"},_o={class:"log-header"},bo={class:"log-time"},wo={class:"log-msg"},Co={key:0,class:"log-empty"},xo=G({__name:"match-manager",props:{cid:{},contestInfo:{}},emits:["refresh"],setup(e,{emit:n}){const t=e,a=n,l=S({type:"ssb",round:"",lobby:"",playerIndex:"",ver:"",maxRow:"",schedules:[]}),u=S([]),d=S([]),m=S(),$=S(false),I=S(false),y=Jt({}),b=S("");let h=null;function x(g){if(g===""||g===void 0||g===null)return;const r=Number(g);return isNaN(r)?void 0:r}ce(()=>{var g;return(g=t.contestInfo)==null?void 0:g.extra},g=>{g&&(l.value.type=g.type??"ssb",l.value.round=g.round??"",l.value.lobby=g.lobby??"",l.value.playerIndex=g.playerIndex??"",l.value.ver=g.ver||"",l.value.maxRow=g.maxRow??"",l.value.schedules=(g.schedules??[]).map(r=>({...r,_time:r.startAt?new Date(2e3,0,1,...r.startAt.split(":").map(Number)):void 0})))},{immediate:true});function O(){l.value.schedules.push({maxRow:10,_time:void 0})}function v(){l.value.schedules=[{maxRow:6,startAt:"14:00",_time:new Date(2e3,0,1,14,0)},{maxRow:10,startAt:"19:00",_time:new Date(2e3,0,1,19,0)}]}async function w(){const g=l.value.schedules.map(r=>({maxRow:r.maxRow,startAt:r._time?`${r._time.getHours().toString().padStart(2,"0")}:${r._time.getMinutes().toString().padStart(2,"0")}`:void 0}));await R("mahjongpub/init",t.cid,{type:l.value.type,round:x(l.value.round),lobby:l.value.lobby||void 0,playerIndex:x(l.value.playerIndex),ver:x(l.value.ver),maxRow:x(l.value.maxRow),schedules:g.length?g:void 0}),a("refresh"),await f()}async function p(){await R("mahjongpub/deinit",t.cid),u.value=[],a("refresh")}async function f(){var g;if(!(!((g=t.contestInfo)!=null&&g.extra)&&!u.value.length))try{u.value=await R("mahjongpub/cls-status",t.cid)}catch(r){console.error("Failed to refresh status:",r)}}async function B(g){await R("mahjongpub/start",t.cid,[g]),setTimeout(f,1e3)}async function U(g){await R("mahjongpub/stop",t.cid,[g]),setTimeout(f,500)}async function A(g,r){try{const L=await R("mahjongpub/check-players",t.cid,g);y[g]=L,r(L)}catch(L){F.error(`检查失败: ${L}`),r([])}}async function J(){I.value=true;const g=[];try{const r=u.value.filter(([,L])=>L.status==="pending"||L.status==="suspended").map(([L,ne])=>[L,ne]);for(const[L,ne]of r)try{const ae=await R("mahjongpub/check-players",t.cid,L);y[L]=ae}catch(ae){g.push(`${L}组: ${ae}`);const le=ne.next??ne.last??[];y[L]=le.map(W=>({player:W.player,online:false}))}g.length&&F.warning(`部分检查失败:
|
|
6
6
|
${g.join(`
|
|
7
|
-
`)}`)}finally{S.value=false}}async function M(g,r,L,ne){try{if(ne){const ae=u.value.find(([W])=>W===g);if(!ae)return;const le=(ae[1].next??ae[1].last??[]).map(W=>W.player);le[r]=L,await A("mahjongpub/swap-cls-players",t.cid,g,le),F.success("名单已修改")}else await A("mahjongpub/override-player",t.cid,g,r,L),F.success("临时替换成功");await y()}catch(ae){F.error(`换人失败: ${ae}`)}}async function z(g,r,L){try{await A("mahjongpub/edit-point",t.cid,g,r,L),F.success("分数已修改"),await y()}catch(ne){F.error(`修改失败: ${ne}`)}}async function K(){const g=b.value.trim();if(g)try{await A("mahjongpub/add-subscriber",t.cid,g),b.value="",a("refresh")}catch(r){F.error(`添加失败: ${r}`)}}async function G(g){try{await A("mahjongpub/remove-subscriber",t.cid,g),a("refresh")}catch(r){F.error(`移除失败: ${r}`)}}async function xe(g){try{await A("mahjongpub/apply-schedule",t.cid,g),a("refresh"),setTimeout(y,1e3)}catch(r){F.error(`应用失败: ${r}`)}}async function te(g){try{await A("mahjongpub/toggle-schedule-pause",t.cid,g),a("refresh")}catch(r){F.error(`操作失败: ${r}`)}}async function re(){C.value=true;try{await A("mahjongpub/start",t.cid,[])}finally{C.value=false,setTimeout(y,1e3)}}async function Oe(){await A("mahjongpub/stop",t.cid,[]),setTimeout(y,500)}function Ye(g){const r=new Date,L=`${r.getHours().toString().padStart(2,"0")}:${r.getMinutes().toString().padStart(2,"0")}:${r.getSeconds().toString().padStart(2,"0")}`;d.value.push({time:L,message:g}),d.value.length>200&&d.value.splice(0,d.value.length-200),qt(()=>{v.value&&(v.value.scrollTop=v.value.scrollHeight)})}return Ut("mahjongpub/log",g=>{const[r,L]=g;r===t.cid&&Ye(L)}),je(()=>{var g;(g=t.contestInfo)!=null&&g.extra&&y(),_=setInterval(y,3e3)}),Yt(()=>{_&&clearInterval(_)}),(g,r)=>{var qe,We,Xe,Qe,et;const L=k("el-tag"),ne=k("el-option"),ae=k("el-select"),le=k("el-form-item"),W=k("el-input"),Et=k("el-form"),Mt=k("el-input-number"),Dt=k("el-time-picker"),X=k("el-button"),$e=k("el-card"),Rt=k("el-switch");return i(),h("div",to,[V(" Config Bar "),s($e,{class:"config-card",shadow:"never"},{header:o(()=>{var R,E;return[c("div",no,[c("span",null,N((R=e.contestInfo)==null?void 0:R.name)+" — 比赛配置",1),(E=e.contestInfo)!=null&&E.extra?(i(),j(L,{key:0,type:"success",size:"small"},{default:o(()=>[...r[9]||(r[9]=[w("已初始化",-1)])]),_:1})):(i(),j(L,{key:1,type:"info",size:"small"},{default:o(()=>[...r[10]||(r[10]=[w("未初始化",-1)])]),_:1}))])]}),default:o(()=>{var R;return[s(Et,{inline:true,size:"small","label-width":"70px"},{default:o(()=>[s(le,{label:"类型"},{default:o(()=>[s(ae,{modelValue:l.value.type,"onUpdate:modelValue":r[0]||(r[0]=E=>l.value.type=E),style:{width:"100px"}},{default:o(()=>[s(ne,{label:"掌心 (ti)",value:"ti"}),s(ne,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(le,{label:"轮次"},{default:o(()=>[s(W,{modelValue:l.value.round,"onUpdate:modelValue":r[1]||(r[1]=E=>l.value.round=E),style:{width:"80px"},placeholder:"默认"},null,8,["modelValue"])]),_:1}),s(le,{label:"比赛场"},{default:o(()=>[s(W,{modelValue:l.value.lobby,"onUpdate:modelValue":r[2]||(r[2]=E=>l.value.lobby=E),style:{width:"120px"},placeholder:"lobby ID"},null,8,["modelValue"])]),_:1}),s(le,{label:"选手序号"},{default:o(()=>[s(W,{modelValue:l.value.playerIndex,"onUpdate:modelValue":r[3]||(r[3]=E=>l.value.playerIndex=E),style:{width:"60px"},placeholder:"自动"},null,8,["modelValue"])]),_:1}),s(le,{label:"版本"},{default:o(()=>[s(W,{modelValue:l.value.ver,"onUpdate:modelValue":r[4]||(r[4]=E=>l.value.ver=E),style:{width:"60px"},placeholder:"0"},null,8,["modelValue"])]),_:1}),s(le,{label:"最大行"},{default:o(()=>[s(W,{modelValue:l.value.maxRow,"onUpdate:modelValue":r[5]||(r[5]=E=>l.value.maxRow=E),style:{width:"60px"},placeholder:"默认"},null,8,["modelValue"])]),_:1})]),_:1}),c("div",ao,[r[14]||(r[14]=c("div",{class:"schedule-label"},"定时阶段",-1)),c("div",lo,[(i(true),h(q,null,ee(l.value.schedules,(E,ue)=>(i(),h("div",{key:ue,class:"schedule-row"},[s(Mt,{modelValue:E.maxRow,"onUpdate:modelValue":Q=>E.maxRow=Q,min:1,size:"small","controls-position":"right",style:{width:"80px"},placeholder:"maxRow"},null,8,["modelValue","onUpdate:modelValue"]),s(Dt,{modelValue:E._time,"onUpdate:modelValue":Q=>E._time=Q,size:"small",format:"HH:mm",style:{width:"120px"},placeholder:"开始时间",clearable:""},null,8,["modelValue","onUpdate:modelValue"]),s(X,{size:"small",type:"danger",text:"",onClick:Q=>l.value.schedules.splice(ue,1)},{default:o(()=>[...r[11]||(r[11]=[w("×",-1)])]),_:1},8,["onClick"])]))),128))]),s(X,{size:"small",onClick:O},{default:o(()=>[...r[12]||(r[12]=[w("+ 添加阶段",-1)])]),_:1}),l.value.type==="ti"?(i(),j(X,{key:0,size:"small",type:"info",onClick:m},{default:o(()=>[...r[13]||(r[13]=[w("先2副7 预设",-1)])]),_:1})):V("v-if",true)]),c("div",oo,[s(X,{type:"primary",size:"small",onClick:p},{default:o(()=>[...r[15]||(r[15]=[w("初始化",-1)])]),_:1}),s(X,{type:"danger",size:"small",disabled:!((R=e.contestInfo)!=null&&R.extra),onClick:$},{default:o(()=>[...r[16]||(r[16]=[w("反初始化",-1)])]),_:1},8,["disabled"])])]}),_:1}),V(" Subscribers "),(qe=e.contestInfo)!=null&&qe.extra?(i(),j($e,{key:0,class:"subscriber-card",shadow:"never"},{header:o(()=>[...r[17]||(r[17]=[c("div",{class:"subscriber-header"},[c("span",null,"消息订阅")],-1)])]),default:o(()=>{var R;return[c("div",so,[(i(true),h(q,null,ee(e.contestInfo.extra.subscribers,E=>(i(),j(L,{key:E,closable:"",size:"small",class:"subscriber-tag",onClose:ue=>G(E)},{default:o(()=>[w(N(E),1)]),_:2},1032,["onClose"]))),128)),(R=e.contestInfo.extra.subscribers)!=null&&R.length?V("v-if",true):(i(),h("span",ro,"暂无订阅"))]),c("div",io,[s(W,{modelValue:b.value,"onUpdate:modelValue":r[6]||(r[6]=E=>b.value=E),size:"small",placeholder:"platform:channelId",style:{width:"240px"},onKeyup:De(K,["enter"])},null,8,["modelValue"]),s(X,{size:"small",type:"primary",onClick:K},{default:o(()=>[...r[18]||(r[18]=[w("添加",-1)])]),_:1})])]}),_:1})):V("v-if",true),V(" Schedule Control (runtime) "),(Qe=(Xe=(We=e.contestInfo)==null?void 0:We.extra)==null?void 0:Xe.schedules)!=null&&Qe.length?(i(),j($e,{key:1,class:"schedule-control-card",shadow:"never"},{header:o(()=>[c("div",uo,[c("span",null,"定时控制 (当前 maxRow="+N(e.contestInfo.extra.maxRow??"默认")+")",1),s(Rt,{"model-value":!e.contestInfo.extra.schedulePaused,"active-text":"自动","inactive-text":"暂停",size:"small",onChange:r[7]||(r[7]=R=>te(!R))},null,8,["model-value"])])]),default:o(()=>[c("div",co,[(i(true),h(q,null,ee(e.contestInfo.extra.schedules,(R,E)=>(i(),h("div",{key:E,class:"schedule-control-row"},[c("span",po,[w(" 阶段 "+N(E+1)+":"+N(R.maxRow)+" 行 ",1),R.startAt?(i(),h("span",mo,"@ "+N(R.startAt),1)):V("v-if",true)]),e.contestInfo.extra.maxRow>=R.maxRow?(i(),j(L,{key:0,type:"success",size:"small"},{default:o(()=>[...r[19]||(r[19]=[w("已生效",-1)])]),_:1})):(i(),j(X,{key:1,size:"small",type:"primary",onClick:ue=>xe(R.maxRow)},{default:o(()=>[...r[20]||(r[20]=[w(" 立即生效 ",-1)])]),_:1},8,["onClick"]))]))),128))])]),_:1})):V("v-if",true),V(" Status Cards "),(et=e.contestInfo)!=null&&et.extra?(i(),h("div",fo,[c("div",vo,[c("span",null,"对局状态 — 第 "+N(e.contestInfo.extra.round??e.contestInfo.totalRounds)+" 轮",1),c("div",yo,[s(X,{type:"success",size:"small",loading:C.value,onClick:re},{default:o(()=>[...r[21]||(r[21]=[w("全部开赛",-1)])]),_:1},8,["loading"]),s(X,{type:"warning",size:"small",onClick:Oe},{default:o(()=>[...r[22]||(r[22]=[w("全部停止",-1)])]),_:1}),s(X,{size:"small",loading:S.value,onClick:J},{default:o(()=>[...r[23]||(r[23]=[w("全部检查",-1)])]),_:1},8,["loading"]),s(X,{size:"small",onClick:y},{default:o(()=>[...r[24]||(r[24]=[w("刷新",-1)])]),_:1})])]),c("div",go,[(i(true),h(q,null,ee(u.value,([R,E])=>{var ue;return i(),j(eo,{key:R,cls:R,status:E,"external-check-result":f[R],"has-admin":(ue=e.contestInfo)==null?void 0:ue.hasAdmin,onStart:Q=>U(R),onStop:Q=>D(R),onCheck:Q=>B(R,Q),onSwap:(Q,Ee,At)=>M(R,Q,Ee,At),onEditPoint:(Q,Ee)=>z(R,Q,Ee)},null,8,["cls","status","external-check-result","has-admin","onStart","onStop","onCheck","onSwap","onEditPoint"])}),128))])])):(i(),h("div",ho,[...r[25]||(r[25]=[c("p",null,"请先初始化比赛配置",-1)])])),V(" Log Panel "),s($e,{class:"log-card",shadow:"never"},{header:o(()=>[c("div",_o,[r[27]||(r[27]=c("span",null,"日志",-1)),s(X,{size:"small",text:"",onClick:r[8]||(r[8]=R=>d.value=[])},{default:o(()=>[...r[26]||(r[26]=[w("清空",-1)])]),_:1})])]),default:o(()=>[c("div",{ref_key:"logScrollRef",ref:v,class:"log-scroll"},[(i(true),h(q,null,ee(d.value,(R,E)=>(i(),h("div",{key:E,class:"log-line"},[c("span",bo,N(R.time),1),c("span",wo,N(R.message),1)]))),128)),d.value.length?V("v-if",true):(i(),h("div",Co,"暂无日志"))],512)]),_:1})])}}}),$o=ie(xo,[["__scopeId","data-v-cc43e8e6"]]),ko={class:"team-manager"},So={class:"team-header"},Io={class:"team-header-actions"},zo={key:0,class:"inline-edit"},To={class:"player-index"},Vo={class:"inline-edit-actions"},jo={key:1,class:"player-display"},Po={key:0,class:"no-players"},No=H({__name:"team-manager",props:{cid:{}},setup(e){const n=e,t=I([]),a=I(""),l=I(null),u=I([]),d=I(false),v=P(()=>{if(!a.value)return t.value;const _=a.value.toLowerCase();return t.value.filter(x=>x.name.toLowerCase().includes(_)||x.tid.toString().includes(_)||x.players.some(O=>O.toLowerCase().includes(_)))});async function C(){try{t.value=await A("mahjongpub/list-teams",n.cid)}catch(_){F.error(`加载队伍失败: ${_}`)}}function S(_){l.value=_.tid,u.value=[..._.players]}function f(){l.value=null,u.value=[]}async function b(_){d.value=true;try{const x=u.value.filter(m=>m.trim()),O=await A("mahjongpub/update-team-players",n.cid,_.tid,x);F.success(O||"保存成功"),l.value=null,u.value=[],await C()}catch(x){F.error(`保存失败: ${x}`)}finally{d.value=false}}return je(C),(_,x)=>{const O=k("el-input"),m=k("el-button"),p=k("el-table-column"),$=k("el-tag"),y=k("el-table");return i(),h("div",ko,[c("div",So,[x[3]||(x[3]=c("span",null,"队伍管理",-1)),c("div",Io,[s(O,{modelValue:a.value,"onUpdate:modelValue":x[0]||(x[0]=U=>a.value=U),size:"small",placeholder:"搜索队名/选手",clearable:"",style:{width:"200px"}},null,8,["modelValue"]),s(m,{size:"small",onClick:C},{default:o(()=>[...x[2]||(x[2]=[w("刷新",-1)])]),_:1})])]),s(y,{data:v.value,size:"small",border:"",class:"team-table","row-key":"tid"},{default:o(()=>[s(p,{prop:"tid",label:"ID",width:"60",sortable:""}),s(p,{prop:"name",label:"队名",width:"120",sortable:""}),s(p,{label:"选手名单","min-width":"400"},{default:o(({row:U})=>[l.value===U.tid?(i(),h("div",zo,[(i(true),h(q,null,ee(u.value,(D,B)=>(i(),h("div",{key:B,class:"inline-edit-row"},[c("span",To,N(B+1)+".",1),s(O,{modelValue:u.value[B],"onUpdate:modelValue":J=>u.value[B]=J,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),s(m,{size:"small",type:"danger",text:"",onClick:J=>u.value.splice(B,1)},{default:o(()=>[...x[4]||(x[4]=[w("×",-1)])]),_:1},8,["onClick"])]))),128)),c("div",Vo,[s(m,{size:"small",onClick:x[1]||(x[1]=D=>u.value.push(""))},{default:o(()=>[...x[5]||(x[5]=[w("+ 添加",-1)])]),_:1}),s(m,{size:"small",type:"primary",loading:d.value,onClick:D=>b(U)},{default:o(()=>[...x[6]||(x[6]=[w("保存",-1)])]),_:1},8,["loading","onClick"]),s(m,{size:"small",onClick:f},{default:o(()=>[...x[7]||(x[7]=[w("取消",-1)])]),_:1})])])):(i(),h("div",jo,[(i(true),h(q,null,ee(U.players,(D,B)=>(i(),j($,{key:B,size:"small",class:"player-tag"},{default:o(()=>[w(N(D),1)]),_:2},1024))),128)),U.players.length?V("v-if",true):(i(),h("span",Po,"无选手"))]))]),_:1}),s(p,{label:"操作",width:"80",align:"center"},{default:o(({row:U})=>[l.value!==U.tid?(i(),j(m,{key:0,size:"small",text:"",onClick:D=>S(U)},{default:o(()=>[...x[8]||(x[8]=[w(" 编辑 ",-1)])]),_:1},8,["onClick"])):V("v-if",true)]),_:1})]),_:1},8,["data"])])}}}),Oo=ie(No,[["__scopeId","data-v-064b204b"]]),Eo={class:"lobby-panel"},Mo={class:"lobby-config"},Do={class:"section-header"},Ro={key:1,class:"empty-hint"},Ao={class:"section-header"},Lo={key:0,class:"game-list"},Uo={class:"game-header"},Fo=["title"],Bo={class:"game-actions"},Ko={class:"game-players"},Ho={key:1,class:"empty-hint"},Go=H({__name:"lobby-panel",props:{cid:{},initLobby:{},initType:{}},setup(e){const n=e,t=I(n.initLobby??""),a=I(n.initType??"ssb"),l=I([]),u=I([]),d=I(false);ce(()=>n.initLobby,b=>{b&&(t.value=b)}),ce(()=>n.initType,b=>{b&&(a.value=b)});async function v(){if(t.value){d.value=true;try{const[b,_]=await Promise.all([A("mahjongpub/lobby-players",+t.value,a.value),A("mahjongpub/lobby-games",+t.value,a.value)]);l.value=b,u.value=_}catch(b){F.error(`查询失败: ${b}`)}finally{d.value=false}}}async function C(b){try{await A("mahjongpub/lobby-pause",+t.value,a.value,b),F.success("已暂停")}catch(_){F.error(`暂停失败: ${_}`)}}async function S(b){try{await A("mahjongpub/lobby-resume",+t.value,a.value,b),F.success("已恢复")}catch(_){F.error(`恢复失败: ${_}`)}}async function f(b){try{await A("mahjongpub/lobby-stop",+t.value,a.value,b),F.success("已中止"),await v()}catch(_){F.error(`中止失败: ${_}`)}}return(b,_)=>{const x=k("el-input"),O=k("el-form-item"),m=k("el-option"),p=k("el-select"),$=k("el-button"),y=k("el-form"),U=k("el-table-column"),D=k("el-table"),B=k("el-card"),J=k("el-popconfirm"),M=k("el-tag");return i(),h("div",Eo,[c("div",Mo,[s(y,{inline:true,size:"small"},{default:o(()=>[s(O,{label:"比赛场 ID"},{default:o(()=>[s(x,{modelValue:t.value,"onUpdate:modelValue":_[0]||(_[0]=z=>t.value=z),placeholder:"lobby ID",style:{width:"140px"}},null,8,["modelValue"])]),_:1}),s(O,{label:"平台"},{default:o(()=>[s(p,{modelValue:a.value,"onUpdate:modelValue":_[1]||(_[1]=z=>a.value=z),style:{width:"120px"}},{default:o(()=>[s(m,{label:"掌心 (ti)",value:"ti"}),s(m,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(O,null,{default:o(()=>[s($,{size:"small",type:"primary",onClick:v},{default:o(()=>[..._[2]||(_[2]=[w("刷新",-1)])]),_:1})]),_:1})]),_:1})]),V(" Ready Players "),s(B,{shadow:"never",class:"section-card"},{header:o(()=>[c("div",Do,[c("span",null,"待机选手 ("+N(l.value.length)+")",1)])]),default:o(()=>[l.value.length?(i(),j(D,{key:0,data:l.value,size:"small",border:"","max-height":"300"},{default:o(()=>[s(U,{prop:"nickname",label:"昵称","min-width":"150"}),s(U,{prop:"accountId",label:"ID",width:"120"})]),_:1},8,["data"])):(i(),h("div",Ro,N(d.value?"加载中...":t.value?"暂无待机选手":"请输入比赛场 ID 后查询"),1))]),_:1}),V(" Running Games "),s(B,{shadow:"never",class:"section-card"},{header:o(()=>[c("div",Ao,[c("span",null,"进行中对局 ("+N(u.value.length)+")",1)])]),default:o(()=>[u.value.length?(i(),h("div",Lo,[(i(true),h(q,null,ee(u.value,z=>(i(),j(B,{key:z.id,shadow:"hover",class:"game-card"},{default:o(()=>[c("div",Uo,[c("span",{class:"game-id",title:z.id},N(z.id.slice(0,12))+"...",9,Fo),c("div",Bo,[s($,{size:"small",type:"warning",onClick:K=>C(z.id)},{default:o(()=>[..._[3]||(_[3]=[w("暂停",-1)])]),_:1},8,["onClick"]),s($,{size:"small",type:"primary",onClick:K=>S(z.id)},{default:o(()=>[..._[4]||(_[4]=[w("恢复",-1)])]),_:1},8,["onClick"]),s(J,{title:"确定中止该对局?",onConfirm:K=>f(z.id)},{reference:o(()=>[s($,{size:"small",type:"danger"},{default:o(()=>[..._[5]||(_[5]=[w("中止",-1)])]),_:1})]),_:1},8,["onConfirm"])])]),c("div",Ko,[(i(true),h(q,null,ee(z.players,(K,G)=>(i(),j(M,{key:G,size:"small",class:"player-tag"},{default:o(()=>[w(N(K.nickname||`#${K.accountId}`),1)]),_:2},1024))),128))])]),_:2},1024))),128))])):(i(),h("div",Ho,N(d.value?"加载中...":t.value?"暂无进行中对局":"请输入比赛场 ID 后查询"),1))]),_:1})])}}}),Zo=ie(Go,[["__scopeId","data-v-a21c65dd"]]),Jo={key:0,class:"empty-state"},Yo={key:1,class:"empty-state"},qo={key:2,class:"contest-panel"},Wo={class:"first-tab-label"},Xo={key:1},Qo=H({__name:"contest-panel",props:{cid:{},managed:{},sidebarCollapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(e,{emit:n}){const t=e,a=I("match"),l=I(false),u=I(null);async function d(){l.value=true;try{u.value=await A("mahjongpub/contest-info",t.cid)}catch(v){console.error("Failed to load contest info:",v)}finally{l.value=false}}return ce(()=>t.cid,()=>{a.value="match",d()},{immediate:true}),(v,C)=>{const S=k("el-button"),f=k("el-tab-pane"),b=k("el-tooltip"),_=k("el-tabs");return e.cid?l.value&&!u.value?(i(),h("div",Yo,[...C[3]||(C[3]=[c("p",null,"加载中...",-1)])])):(i(),h("div",qo,[s(_,{modelValue:a.value,"onUpdate:modelValue":C[1]||(C[1]=x=>a.value=x)},{default:o(()=>{var x;return[s(f,{name:"match"},{label:o(()=>[c("div",Wo,[s(S,{class:"sidebar-toggle-btn",size:"small",text:"",title:e.sidebarCollapsed?"展开侧边栏":"收起侧边栏",onClick:C[0]||(C[0]=Se(O=>v.$emit("toggle-sidebar"),["stop"]))},{default:o(()=>[w(N(e.sidebarCollapsed?"▶":"◀"),1)]),_:1},8,["title"]),C[4]||(C[4]=c("span",null,"比赛进程",-1))])]),default:o(()=>[s($o,{cid:e.cid,"contest-info":u.value,onRefresh:d},null,8,["cid","contest-info"])]),_:1}),s(f,{label:"队伍管理",name:"team",disabled:!((x=u.value)!=null&&x.hasAdmin)},{label:o(()=>{var O;return[(O=u.value)!=null&&O.hasAdmin?(i(),h("span",Xo,"队伍管理")):(i(),j(b,{key:0,content:"请先配置管理密码(右键侧边栏比赛项)",placement:"top"},{default:o(()=>[...C[5]||(C[5]=[c("span",null,"队伍管理",-1)])]),_:1}))]}),default:o(()=>{var O;return[(O=u.value)!=null&&O.hasAdmin?(i(),j(Oo,{key:0,cid:e.cid},null,8,["cid"])):V("v-if",true)]}),_:1},8,["disabled"]),s(f,{label:"比赛场",name:"lobby"},{default:o(()=>{var O,m,p,$;return[s(Zo,{cid:e.cid,"init-lobby":(m=(O=u.value)==null?void 0:O.extra)==null?void 0:m.lobby,"init-type":($=(p=u.value)==null?void 0:p.extra)==null?void 0:$.type},null,8,["cid","init-lobby","init-type"])]}),_:1})]}),_:1},8,["modelValue"])])):(i(),h("div",Jo,[...C[2]||(C[2]=[c("p",null,"请选择比赛",-1)])]))}}}),es=ie(Qo,[["__scopeId","data-v-c9a9bbef"]]),ts={class:"main-layout"},ns={class:"content-wrapper"},as={key:1,class:"empty-state"},ls=H({__name:"layout",setup(e){const n=I([]),t=I(null),a=I(false),l=P(()=>n.value.find(S=>S.cid===t.value)??null);async function u(){n.value=await A("mahjongpub/list-managed")}async function d(S){await u(),t.value=S.cid}async function v(S){var f;await u(),t.value===S&&(t.value=((f=n.value[0])==null?void 0:f.cid)??null)}async function C(S,f){await u()}return je(u),(S,f)=>{const b=k("k-layout");return i(),j(b,null,{default:o(()=>[c("div",ts,[c("div",{class:Y(["sidebar-wrapper",{collapsed:a.value}])},[Le(s(Ml,{contests:n.value,"active-cid":t.value,onSelect:f[0]||(f[0]=_=>t.value=_),onAdd:d,onRemove:v,onUpdate:C},null,8,["contests","active-cid"]),[[Ue,!a.value]])],2),c("div",ns,[t.value?(i(),j(es,{key:t.value,cid:t.value,managed:l.value,"sidebar-collapsed":a.value,onToggleSidebar:f[1]||(f[1]=_=>a.value=!a.value)},null,8,["cid","managed","sidebar-collapsed"])):(i(),h("div",as,[...f[2]||(f[2]=[c("p",null,"请从左侧选择或添加比赛",-1)])]))])])]),_:1})}}}),os=ie(ls,[["__scopeId","data-v-592f974d"]]),us=e=>{e.page({name:"比赛管理",path:"/mahjongpub",icon:"mahjongpub:icon",component:os,authority:3})};export{us as default};
|
|
7
|
+
`)}`)}finally{I.value=false}}async function M(g,r,L,ne){try{if(ne){const ae=u.value.find(([W])=>W===g);if(!ae)return;const le=(ae[1].next??ae[1].last??[]).map(W=>W.player);le[r]=L,await R("mahjongpub/swap-cls-players",t.cid,g,le),F.success("名单已修改")}else await R("mahjongpub/override-player",t.cid,g,r,L),F.success("临时替换成功");await f()}catch(ae){F.error(`换人失败: ${ae}`)}}async function K(g,r,L){try{await R("mahjongpub/edit-point",t.cid,g,r,L),F.success("分数已修改"),await f()}catch(ne){F.error(`修改失败: ${ne}`)}}async function z(){const g=b.value.trim();if(g)try{await R("mahjongpub/add-subscriber",t.cid,g),b.value="",a("refresh")}catch(r){F.error(`添加失败: ${r}`)}}async function H(g){try{await R("mahjongpub/remove-subscriber",t.cid,g),a("refresh")}catch(r){F.error(`移除失败: ${r}`)}}async function xe(g){try{await R("mahjongpub/apply-schedule",t.cid,g),a("refresh"),setTimeout(f,1e3)}catch(r){F.error(`应用失败: ${r}`)}}async function te(g){try{await R("mahjongpub/toggle-schedule-pause",t.cid,g),a("refresh")}catch(r){F.error(`操作失败: ${r}`)}}async function re(){$.value=true;try{await R("mahjongpub/start",t.cid,[])}finally{$.value=false,setTimeout(f,1e3)}}async function Oe(){await R("mahjongpub/stop",t.cid,[]),setTimeout(f,500)}function Ye(g){const r=new Date,L=`${r.getHours().toString().padStart(2,"0")}:${r.getMinutes().toString().padStart(2,"0")}:${r.getSeconds().toString().padStart(2,"0")}`;d.value.push({time:L,message:g}),d.value.length>200&&d.value.splice(0,d.value.length-200),qt(()=>{m.value&&(m.value.scrollTop=m.value.scrollHeight)})}return Ut("mahjongpub/log",g=>{const[r,L]=g;r===t.cid&&Ye(L)}),je(()=>{var g;(g=t.contestInfo)!=null&&g.extra&&f(),h=setInterval(f,3e3)}),Yt(()=>{h&&clearInterval(h)}),(g,r)=>{var qe,We,Xe,Qe,et;const L=k("el-tag"),ne=k("el-option"),ae=k("el-select"),le=k("el-form-item"),W=k("el-input"),Et=k("el-form"),Mt=k("el-input-number"),Dt=k("el-time-picker"),X=k("el-button"),$e=k("el-card"),Rt=k("el-switch");return i(),_("div",to,[V(" Config Bar "),s($e,{class:"config-card",shadow:"never"},{header:o(()=>{var D,E;return[c("div",no,[c("span",null,N((D=e.contestInfo)==null?void 0:D.name)+" — 比赛配置",1),(E=e.contestInfo)!=null&&E.extra?(i(),j(L,{key:0,type:"success",size:"small"},{default:o(()=>[...r[9]||(r[9]=[C("已初始化",-1)])]),_:1})):(i(),j(L,{key:1,type:"info",size:"small"},{default:o(()=>[...r[10]||(r[10]=[C("未初始化",-1)])]),_:1}))])]}),default:o(()=>{var D;return[s(Et,{inline:true,size:"small","label-width":"70px"},{default:o(()=>[s(le,{label:"类型"},{default:o(()=>[s(ae,{modelValue:l.value.type,"onUpdate:modelValue":r[0]||(r[0]=E=>l.value.type=E),style:{width:"100px"}},{default:o(()=>[s(ne,{label:"掌心 (ti)",value:"ti"}),s(ne,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(le,{label:"轮次"},{default:o(()=>[s(W,{modelValue:l.value.round,"onUpdate:modelValue":r[1]||(r[1]=E=>l.value.round=E),style:{width:"80px"},placeholder:"默认"},null,8,["modelValue"])]),_:1}),s(le,{label:"比赛场"},{default:o(()=>[s(W,{modelValue:l.value.lobby,"onUpdate:modelValue":r[2]||(r[2]=E=>l.value.lobby=E),style:{width:"120px"},placeholder:"lobby ID"},null,8,["modelValue"])]),_:1}),s(le,{label:"选手序号"},{default:o(()=>[s(W,{modelValue:l.value.playerIndex,"onUpdate:modelValue":r[3]||(r[3]=E=>l.value.playerIndex=E),style:{width:"60px"},placeholder:"自动"},null,8,["modelValue"])]),_:1}),s(le,{label:"版本"},{default:o(()=>[s(W,{modelValue:l.value.ver,"onUpdate:modelValue":r[4]||(r[4]=E=>l.value.ver=E),style:{width:"60px"},placeholder:"0"},null,8,["modelValue"])]),_:1}),s(le,{label:"最大行"},{default:o(()=>[s(W,{modelValue:l.value.maxRow,"onUpdate:modelValue":r[5]||(r[5]=E=>l.value.maxRow=E),style:{width:"60px"},placeholder:"默认"},null,8,["modelValue"])]),_:1})]),_:1}),c("div",ao,[r[14]||(r[14]=c("div",{class:"schedule-label"},"定时阶段",-1)),c("div",lo,[(i(true),_(q,null,ee(l.value.schedules,(E,ue)=>(i(),_("div",{key:ue,class:"schedule-row"},[s(Mt,{modelValue:E.maxRow,"onUpdate:modelValue":Q=>E.maxRow=Q,min:1,size:"small","controls-position":"right",style:{width:"80px"},placeholder:"maxRow"},null,8,["modelValue","onUpdate:modelValue"]),s(Dt,{modelValue:E._time,"onUpdate:modelValue":Q=>E._time=Q,size:"small",format:"HH:mm",style:{width:"120px"},placeholder:"开始时间",clearable:""},null,8,["modelValue","onUpdate:modelValue"]),s(X,{size:"small",type:"danger",text:"",onClick:Q=>l.value.schedules.splice(ue,1)},{default:o(()=>[...r[11]||(r[11]=[C("×",-1)])]),_:1},8,["onClick"])]))),128))]),s(X,{size:"small",onClick:O},{default:o(()=>[...r[12]||(r[12]=[C("+ 添加阶段",-1)])]),_:1}),l.value.type==="ti"?(i(),j(X,{key:0,size:"small",type:"info",onClick:v},{default:o(()=>[...r[13]||(r[13]=[C("先2副7 预设",-1)])]),_:1})):V("v-if",true)]),c("div",oo,[s(X,{type:"primary",size:"small",onClick:w},{default:o(()=>[...r[15]||(r[15]=[C("初始化",-1)])]),_:1}),s(X,{type:"danger",size:"small",disabled:!((D=e.contestInfo)!=null&&D.extra),onClick:p},{default:o(()=>[...r[16]||(r[16]=[C("反初始化",-1)])]),_:1},8,["disabled"])])]}),_:1}),V(" Subscribers "),(qe=e.contestInfo)!=null&&qe.extra?(i(),j($e,{key:0,class:"subscriber-card",shadow:"never"},{header:o(()=>[...r[17]||(r[17]=[c("div",{class:"subscriber-header"},[c("span",null,"消息订阅")],-1)])]),default:o(()=>{var D;return[c("div",so,[(i(true),_(q,null,ee(e.contestInfo.extra.subscribers,E=>(i(),j(L,{key:E,closable:"",size:"small",class:"subscriber-tag",onClose:ue=>H(E)},{default:o(()=>[C(N(E),1)]),_:2},1032,["onClose"]))),128)),(D=e.contestInfo.extra.subscribers)!=null&&D.length?V("v-if",true):(i(),_("span",ro,"暂无订阅"))]),c("div",io,[s(W,{modelValue:b.value,"onUpdate:modelValue":r[6]||(r[6]=E=>b.value=E),size:"small",placeholder:"platform:channelId",style:{width:"240px"},onKeyup:De(z,["enter"])},null,8,["modelValue"]),s(X,{size:"small",type:"primary",onClick:z},{default:o(()=>[...r[18]||(r[18]=[C("添加",-1)])]),_:1})])]}),_:1})):V("v-if",true),V(" Schedule Control (runtime) "),(Qe=(Xe=(We=e.contestInfo)==null?void 0:We.extra)==null?void 0:Xe.schedules)!=null&&Qe.length?(i(),j($e,{key:1,class:"schedule-control-card",shadow:"never"},{header:o(()=>[c("div",uo,[c("span",null,"定时控制 (当前 maxRow="+N(e.contestInfo.extra.maxRow??"默认")+")",1),s(Rt,{"model-value":!e.contestInfo.extra.schedulePaused,"active-text":"自动","inactive-text":"暂停",size:"small",onChange:r[7]||(r[7]=D=>te(!D))},null,8,["model-value"])])]),default:o(()=>[c("div",co,[(i(true),_(q,null,ee(e.contestInfo.extra.schedules,(D,E)=>(i(),_("div",{key:E,class:"schedule-control-row"},[c("span",po,[C(" 阶段 "+N(E+1)+":"+N(D.maxRow)+" 行 ",1),D.startAt?(i(),_("span",mo,"@ "+N(D.startAt),1)):V("v-if",true)]),e.contestInfo.extra.maxRow>=D.maxRow?(i(),j(L,{key:0,type:"success",size:"small"},{default:o(()=>[...r[19]||(r[19]=[C("已生效",-1)])]),_:1})):(i(),j(X,{key:1,size:"small",type:"primary",onClick:ue=>xe(D.maxRow)},{default:o(()=>[...r[20]||(r[20]=[C(" 立即生效 ",-1)])]),_:1},8,["onClick"]))]))),128))])]),_:1})):V("v-if",true),V(" Status Cards "),(et=e.contestInfo)!=null&&et.extra?(i(),_("div",fo,[c("div",vo,[c("span",null,"对局状态 — 第 "+N(e.contestInfo.extra.round??e.contestInfo.totalRounds)+" 轮",1),c("div",yo,[s(X,{type:"success",size:"small",loading:$.value,onClick:re},{default:o(()=>[...r[21]||(r[21]=[C("全部开赛",-1)])]),_:1},8,["loading"]),s(X,{type:"warning",size:"small",onClick:Oe},{default:o(()=>[...r[22]||(r[22]=[C("全部停止",-1)])]),_:1}),s(X,{size:"small",loading:I.value,onClick:J},{default:o(()=>[...r[23]||(r[23]=[C("全部检查",-1)])]),_:1},8,["loading"]),s(X,{size:"small",onClick:f},{default:o(()=>[...r[24]||(r[24]=[C("刷新",-1)])]),_:1})])]),c("div",go,[(i(true),_(q,null,ee(u.value,([D,E])=>{var ue;return i(),j(eo,{key:D,cls:D,status:E,"external-check-result":y[D],"has-admin":(ue=e.contestInfo)==null?void 0:ue.hasAdmin,onStart:Q=>B(D),onStop:Q=>U(D),onCheck:Q=>A(D,Q),onSwap:(Q,Ee,At)=>M(D,Q,Ee,At),onEditPoint:(Q,Ee)=>K(D,Q,Ee)},null,8,["cls","status","external-check-result","has-admin","onStart","onStop","onCheck","onSwap","onEditPoint"])}),128))])])):(i(),_("div",ho,[...r[25]||(r[25]=[c("p",null,"请先初始化比赛配置",-1)])])),V(" Log Panel "),s($e,{class:"log-card",shadow:"never"},{header:o(()=>[c("div",_o,[r[27]||(r[27]=c("span",null,"日志",-1)),s(X,{size:"small",text:"",onClick:r[8]||(r[8]=D=>d.value=[])},{default:o(()=>[...r[26]||(r[26]=[C("清空",-1)])]),_:1})])]),default:o(()=>[c("div",{ref_key:"logScrollRef",ref:m,class:"log-scroll"},[(i(true),_(q,null,ee(d.value,(D,E)=>(i(),_("div",{key:E,class:"log-line"},[c("span",bo,N(D.time),1),c("span",wo,N(D.message),1)]))),128)),d.value.length?V("v-if",true):(i(),_("div",Co,"暂无日志"))],512)]),_:1})])}}}),$o=ie(xo,[["__scopeId","data-v-cc43e8e6"]]),ko={class:"team-manager"},So={class:"team-header"},Io={class:"team-header-actions"},zo={key:0,class:"inline-edit"},To={class:"player-index"},Vo={class:"inline-edit-actions"},jo={key:1,class:"player-display"},Po={key:0,class:"no-players"},No=G({__name:"team-manager",props:{cid:{}},setup(e){const n=e,t=S([]),a=S(""),l=S(null),u=S([]),d=S(false),m=P(()=>{if(!a.value)return t.value;const h=a.value.toLowerCase();return t.value.filter(x=>x.name.toLowerCase().includes(h)||x.tid.toString().includes(h)||x.players.some(O=>O.toLowerCase().includes(h)))});async function $(){try{t.value=await R("mahjongpub/list-teams",n.cid)}catch(h){F.error(`加载队伍失败: ${h}`)}}function I(h){l.value=h.tid,u.value=[...h.players]}function y(){l.value=null,u.value=[]}async function b(h){d.value=true;try{const x=u.value.filter(v=>v.trim()),O=await R("mahjongpub/update-team-players",n.cid,h.tid,x);F.success(O||"保存成功"),l.value=null,u.value=[],await $()}catch(x){F.error(`保存失败: ${x}`)}finally{d.value=false}}return je($),(h,x)=>{const O=k("el-input"),v=k("el-button"),w=k("el-table-column"),p=k("el-tag"),f=k("el-table");return i(),_("div",ko,[c("div",So,[x[3]||(x[3]=c("span",null,"队伍管理",-1)),c("div",Io,[s(O,{modelValue:a.value,"onUpdate:modelValue":x[0]||(x[0]=B=>a.value=B),size:"small",placeholder:"搜索队名/选手",clearable:"",style:{width:"200px"}},null,8,["modelValue"]),s(v,{size:"small",onClick:$},{default:o(()=>[...x[2]||(x[2]=[C("刷新",-1)])]),_:1})])]),s(f,{data:m.value,size:"small",border:"",class:"team-table","row-key":"tid"},{default:o(()=>[s(w,{prop:"tid",label:"ID",width:"60",sortable:""}),s(w,{prop:"name",label:"队名",width:"120",sortable:""}),s(w,{label:"选手名单","min-width":"400"},{default:o(({row:B})=>[l.value===B.tid?(i(),_("div",zo,[(i(true),_(q,null,ee(u.value,(U,A)=>(i(),_("div",{key:A,class:"inline-edit-row"},[c("span",To,N(A+1)+".",1),s(O,{modelValue:u.value[A],"onUpdate:modelValue":J=>u.value[A]=J,size:"small"},null,8,["modelValue","onUpdate:modelValue"]),s(v,{size:"small",type:"danger",text:"",onClick:J=>u.value.splice(A,1)},{default:o(()=>[...x[4]||(x[4]=[C("×",-1)])]),_:1},8,["onClick"])]))),128)),c("div",Vo,[s(v,{size:"small",onClick:x[1]||(x[1]=U=>u.value.push(""))},{default:o(()=>[...x[5]||(x[5]=[C("+ 添加",-1)])]),_:1}),s(v,{size:"small",type:"primary",loading:d.value,onClick:U=>b(B)},{default:o(()=>[...x[6]||(x[6]=[C("保存",-1)])]),_:1},8,["loading","onClick"]),s(v,{size:"small",onClick:y},{default:o(()=>[...x[7]||(x[7]=[C("取消",-1)])]),_:1})])])):(i(),_("div",jo,[(i(true),_(q,null,ee(B.players,(U,A)=>(i(),j(p,{key:A,size:"small",class:"player-tag"},{default:o(()=>[C(N(U),1)]),_:2},1024))),128)),B.players.length?V("v-if",true):(i(),_("span",Po,"无选手"))]))]),_:1}),s(w,{label:"操作",width:"80",align:"center"},{default:o(({row:B})=>[l.value!==B.tid?(i(),j(v,{key:0,size:"small",text:"",onClick:U=>I(B)},{default:o(()=>[...x[8]||(x[8]=[C(" 编辑 ",-1)])]),_:1},8,["onClick"])):V("v-if",true)]),_:1})]),_:1},8,["data"])])}}}),Oo=ie(No,[["__scopeId","data-v-064b204b"]]),Eo={class:"lobby-panel"},Mo={class:"lobby-config"},Do={class:"section-header"},Ro={key:1,class:"empty-hint"},Ao={class:"section-header"},Lo={key:0,class:"game-list"},Uo={class:"game-header"},Fo=["title"],Bo={class:"game-actions"},Ko={class:"game-players"},Ho={key:1,class:"empty-hint"},Go=G({__name:"lobby-panel",props:{cid:{},initLobby:{},initType:{}},setup(e){const n=e,t=S(n.initLobby??""),a=S(n.initType??"ssb"),l=S([]),u=S([]),d=S(false);ce(()=>n.initLobby,b=>{b&&(t.value=b)}),ce(()=>n.initType,b=>{b&&(a.value=b)});async function m(){if(t.value){d.value=true;try{const[b,h]=await Promise.all([R("mahjongpub/lobby-players",+t.value,a.value),R("mahjongpub/lobby-games",+t.value,a.value)]);l.value=b,u.value=h}catch(b){F.error(`查询失败: ${b}`)}finally{d.value=false}}}async function $(b){try{await R("mahjongpub/lobby-pause",+t.value,a.value,b),F.success("已暂停")}catch(h){F.error(`暂停失败: ${h}`)}}async function I(b){try{await R("mahjongpub/lobby-resume",+t.value,a.value,b),F.success("已恢复")}catch(h){F.error(`恢复失败: ${h}`)}}async function y(b){try{await R("mahjongpub/lobby-stop",+t.value,a.value,b),F.success("已中止"),await m()}catch(h){F.error(`中止失败: ${h}`)}}return(b,h)=>{const x=k("el-input"),O=k("el-form-item"),v=k("el-option"),w=k("el-select"),p=k("el-button"),f=k("el-form"),B=k("el-table-column"),U=k("el-table"),A=k("el-card"),J=k("el-popconfirm"),M=k("el-tag");return i(),_("div",Eo,[c("div",Mo,[s(f,{inline:true,size:"small"},{default:o(()=>[s(O,{label:"比赛场 ID"},{default:o(()=>[s(x,{modelValue:t.value,"onUpdate:modelValue":h[0]||(h[0]=K=>t.value=K),placeholder:"lobby ID",style:{width:"140px"}},null,8,["modelValue"])]),_:1}),s(O,{label:"平台"},{default:o(()=>[s(w,{modelValue:a.value,"onUpdate:modelValue":h[1]||(h[1]=K=>a.value=K),style:{width:"120px"}},{default:o(()=>[s(v,{label:"掌心 (ti)",value:"ti"}),s(v,{label:"雀魂 (ssb)",value:"ssb"})]),_:1},8,["modelValue"])]),_:1}),s(O,null,{default:o(()=>[s(p,{size:"small",type:"primary",onClick:m},{default:o(()=>[...h[2]||(h[2]=[C("刷新",-1)])]),_:1})]),_:1})]),_:1})]),V(" Ready Players "),s(A,{shadow:"never",class:"section-card"},{header:o(()=>[c("div",Do,[c("span",null,"待机选手 ("+N(l.value.length)+")",1)])]),default:o(()=>[l.value.length?(i(),j(U,{key:0,data:l.value,size:"small",border:"","max-height":"300"},{default:o(()=>[s(B,{prop:"nickname",label:"昵称","min-width":"150"}),s(B,{prop:"accountId",label:"ID",width:"120"})]),_:1},8,["data"])):(i(),_("div",Ro,N(d.value?"加载中...":t.value?"暂无待机选手":"请输入比赛场 ID 后查询"),1))]),_:1}),V(" Running Games "),s(A,{shadow:"never",class:"section-card"},{header:o(()=>[c("div",Ao,[c("span",null,"进行中对局 ("+N(u.value.length)+")",1)])]),default:o(()=>[u.value.length?(i(),_("div",Lo,[(i(true),_(q,null,ee(u.value,K=>(i(),j(A,{key:K.id,shadow:"hover",class:"game-card"},{default:o(()=>[c("div",Uo,[c("span",{class:"game-id",title:K.id},N(K.id.slice(0,12))+"...",9,Fo),c("div",Bo,[s(p,{size:"small",type:"warning",onClick:z=>$(K.id)},{default:o(()=>[...h[3]||(h[3]=[C("暂停",-1)])]),_:1},8,["onClick"]),s(p,{size:"small",type:"primary",onClick:z=>I(K.id)},{default:o(()=>[...h[4]||(h[4]=[C("恢复",-1)])]),_:1},8,["onClick"]),s(J,{title:"确定中止该对局?",onConfirm:z=>y(K.id)},{reference:o(()=>[s(p,{size:"small",type:"danger"},{default:o(()=>[...h[5]||(h[5]=[C("中止",-1)])]),_:1})]),_:1},8,["onConfirm"])])]),c("div",Ko,[(i(true),_(q,null,ee(K.players,(z,H)=>(i(),j(M,{key:H,size:"small",class:"player-tag"},{default:o(()=>[C(N(z.nickname||`#${z.accountId}`),1)]),_:2},1024))),128))])]),_:2},1024))),128))])):(i(),_("div",Ho,N(d.value?"加载中...":t.value?"暂无进行中对局":"请输入比赛场 ID 后查询"),1))]),_:1})])}}}),Zo=ie(Go,[["__scopeId","data-v-a21c65dd"]]),Jo={key:0,class:"empty-state"},Yo={key:1,class:"empty-state"},qo={key:2,class:"contest-panel"},Wo={class:"first-tab-label"},Xo={key:1},Qo=G({__name:"contest-panel",props:{cid:{},managed:{},sidebarCollapsed:{type:Boolean}},emits:["toggle-sidebar"],setup(e,{emit:n}){const t=e,a=S("match"),l=S(false),u=S(null);async function d(){l.value=true;try{u.value=await R("mahjongpub/contest-info",t.cid)}catch(m){console.error("Failed to load contest info:",m)}finally{l.value=false}}return ce(()=>t.cid,()=>{a.value="match",d()},{immediate:true}),(m,$)=>{const I=k("el-button"),y=k("el-tab-pane"),b=k("el-tooltip"),h=k("el-tabs");return e.cid?l.value&&!u.value?(i(),_("div",Yo,[...$[3]||($[3]=[c("p",null,"加载中...",-1)])])):(i(),_("div",qo,[s(h,{modelValue:a.value,"onUpdate:modelValue":$[1]||($[1]=x=>a.value=x)},{default:o(()=>{var x;return[s(y,{name:"match"},{label:o(()=>[c("div",Wo,[s(I,{class:"sidebar-toggle-btn",size:"small",text:"",title:e.sidebarCollapsed?"展开侧边栏":"收起侧边栏",onClick:$[0]||($[0]=Se(O=>m.$emit("toggle-sidebar"),["stop"]))},{default:o(()=>[C(N(e.sidebarCollapsed?"▶":"◀"),1)]),_:1},8,["title"]),$[4]||($[4]=c("span",null,"比赛进程",-1))])]),default:o(()=>[s($o,{cid:e.cid,"contest-info":u.value,onRefresh:d},null,8,["cid","contest-info"])]),_:1}),s(y,{label:"队伍管理",name:"team",disabled:!((x=u.value)!=null&&x.hasAdmin)},{label:o(()=>{var O;return[(O=u.value)!=null&&O.hasAdmin?(i(),_("span",Xo,"队伍管理")):(i(),j(b,{key:0,content:"请先配置管理密码(右键侧边栏比赛项)",placement:"top"},{default:o(()=>[...$[5]||($[5]=[c("span",null,"队伍管理",-1)])]),_:1}))]}),default:o(()=>{var O;return[(O=u.value)!=null&&O.hasAdmin?(i(),j(Oo,{key:0,cid:e.cid},null,8,["cid"])):V("v-if",true)]}),_:1},8,["disabled"]),s(y,{label:"比赛场",name:"lobby"},{default:o(()=>{var O,v,w,p;return[s(Zo,{cid:e.cid,"init-lobby":(v=(O=u.value)==null?void 0:O.extra)==null?void 0:v.lobby,"init-type":(p=(w=u.value)==null?void 0:w.extra)==null?void 0:p.type},null,8,["cid","init-lobby","init-type"])]}),_:1})]}),_:1},8,["modelValue"])])):(i(),_("div",Jo,[...$[2]||($[2]=[c("p",null,"请选择比赛",-1)])]))}}}),es=ie(Qo,[["__scopeId","data-v-c9a9bbef"]]),ts={class:"main-layout"},ns={class:"content-wrapper"},as={key:1,class:"empty-state"},ls=G({__name:"layout",setup(e){const n=S([]),t=S(null),a=S(false),l=P(()=>n.value.find(I=>I.cid===t.value)??null);async function u(){n.value=await R("mahjongpub/list-managed")}async function d(I){await u(),t.value=I.cid}async function m(I){var y;await u(),t.value===I&&(t.value=((y=n.value[0])==null?void 0:y.cid)??null)}async function $(I,y){await u()}return je(u),(I,y)=>{const b=k("k-layout");return i(),j(b,null,{default:o(()=>[c("div",ts,[c("div",{class:Y(["sidebar-wrapper",{collapsed:a.value}])},[Le(s(Ml,{contests:n.value,"active-cid":t.value,onSelect:y[0]||(y[0]=h=>t.value=h),onAdd:d,onRemove:m,onUpdate:$},null,8,["contests","active-cid"]),[[Ue,!a.value]])],2),c("div",ns,[t.value?(i(),j(es,{key:t.value,cid:t.value,managed:l.value,"sidebar-collapsed":a.value,onToggleSidebar:y[1]||(y[1]=h=>a.value=!a.value)},null,8,["cid","managed","sidebar-collapsed"])):(i(),_("div",as,[...y[2]||(y[2]=[c("p",null,"请从左侧选择或添加比赛",-1)])]))])])]),_:1})}}}),os=ie(ls,[["__scopeId","data-v-592f974d"]]),us=e=>{e.page({name:"比赛管理",path:"/mahjongpub",icon:"mahjongpub:icon",component:os,authority:3})};export{us as default};
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.sidebar[data-v-ce82ea9a]{height:100%;display:flex;flex-direction:column}.sidebar-header[data-v-ce82ea9a]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--k-color-divider);font-weight:700}.contest-list[data-v-ce82ea9a]{flex:1;overflow-y:auto}.contest-item[data-v-ce82ea9a]{padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--k-color-divider);position:relative;transition:background-color .2s}.contest-item[data-v-ce82ea9a]:hover{background:var(--k-hover-bg, var(--el-fill-color-light))}.contest-item.active[data-v-ce82ea9a]{background:var(--k-hover-bg, var(--el-color-primary-light-9));border-left:3px solid var(--el-color-primary)}.contest-name[data-v-ce82ea9a]{font-size:14px;font-weight:500}.contest-cid[data-v-ce82ea9a]{font-size:12px;color:var(--k-text-light)}.admin-badge[data-v-ce82ea9a]{position:absolute;top:10px;right:12px;color:var(--el-color-success)}.cls-card[data-v-559ac705]{border-left:3px solid transparent}.cls-card.status-pending[data-v-559ac705]{border-left-color:var(--el-color-info)}.cls-card.status-running[data-v-559ac705]{border-left-color:var(--el-color-success)}.cls-card.status-finished[data-v-559ac705]{border-left-color:var(--el-color-primary)}.cls-card.status-suspended[data-v-559ac705]{border-left-color:var(--el-color-warning)}.cls-card.status-error[data-v-559ac705]{border-left-color:var(--el-color-danger)}.cls-header[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center}.cls-title[data-v-559ac705]{font-weight:700}.error-msg[data-v-559ac705]{color:var(--el-color-danger);font-size:12px;margin-bottom:8px}.player-list[data-v-559ac705]{display:flex;flex-direction:column;gap:4px}.player-row[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 4px;border-radius:2px}.player-row[data-v-559ac705]:nth-child(odd){background:var(--k-hover-bg, var(--el-fill-color))}.player-info[data-v-559ac705]{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}.online-dot[data-v-559ac705]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.online-dot.online[data-v-559ac705]{background:var(--el-color-success)}.online-dot.offline[data-v-559ac705]{background:var(--el-color-danger)}.player-name[data-v-559ac705]{font-weight:500;color:var(--k-text-normal, var(--el-text-color-primary))}.player-right[data-v-559ac705]{display:flex;align-items:center;gap:4px;flex-shrink:0}.player-point[data-v-559ac705]{color:var(--k-text-light, var(--el-text-color-secondary));font-family:monospace}.player-point.editable[data-v-559ac705]{cursor:pointer;border-bottom:1px dashed var(--el-border-color)}.player-point.editable[data-v-559ac705]:hover{color:var(--el-color-primary)}.point-edit[data-v-559ac705]{display:flex;align-items:center;gap:2px;margin-left:auto}.point-edit-btn[data-v-559ac705]{padding:0 4px;min-width:auto;font-size:13px;margin-left:0!important}.swap-btn[data-v-559ac705]{padding:2px;font-size:13px}.no-players[data-v-559ac705]{text-align:center;color:var(--k-text-light, var(--el-text-color-secondary))}.cls-actions[data-v-559ac705]{margin-top:8px;display:flex;gap:4px;flex-wrap:wrap}.swap-popover-container{padding:8px 4px 8px 12px!important}.swap-popover-container .swap-popover{max-height:240px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--el-border-color) transparent}.swap-popover-container .swap-popover::-webkit-scrollbar{width:4px}.swap-popover-container .swap-popover::-webkit-scrollbar-track{background:transparent}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:2px}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-placeholder)}.swap-popover-container .swap-title{font-size:12px;color:var(--el-text-color-secondary);margin-bottom:4px}.swap-popover-container .swap-option{padding:4px 8px;cursor:pointer;border-radius:4px;font-size:13px}.swap-popover-container .swap-option:hover{background:var(--el-fill-color-light)}.swap-popover-container .swap-option.active{color:var(--el-color-primary);font-weight:500}.swap-popover-container .swap-manual{display:flex;gap:4px;margin-bottom:8px}.swap-popover-container .swap-mode-actions{display:flex;gap:4px;justify-content:flex-end}.swap-popover-container .swap-section{margin-bottom:4px}.match-manager[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:16px;min-height:100%}.config-header[data-v-cc43e8e6]{display:flex;align-items:center;gap:8px}.config-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.config-actions[data-v-cc43e8e6]{margin-top:8px}.status-section[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:12px}.status-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.status-actions[data-v-cc43e8e6]{display:flex;gap:8px}.cls-grid[data-v-cc43e8e6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.status-placeholder[data-v-cc43e8e6]{text-align:center;padding:40px;color:var(--k-text-light)}.log-card[data-v-cc43e8e6]{flex:1;display:flex;flex-direction:column;min-height:200px}.log-card[data-v-cc43e8e6] .el-card__body{padding:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.log-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center}.log-scroll[data-v-cc43e8e6]{flex:1;overflow-y:auto;padding:8px 16px;font-family:monospace;font-size:12px;scrollbar-width:thin}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar{width:6px}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:3px}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker, var(--el-text-color-placeholder))}.log-line[data-v-cc43e8e6]{padding:2px 0;line-height:1.5}.log-time[data-v-cc43e8e6]{color:var(--k-text-light);margin-right:8px}.log-empty[data-v-cc43e8e6]{text-align:center;color:var(--k-text-light);padding:20px}.subscriber-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.subscriber-header[data-v-cc43e8e6]{font-weight:700}.subscriber-list[data-v-cc43e8e6]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.subscriber-tag[data-v-cc43e8e6]{font-family:monospace}.subscriber-empty[data-v-cc43e8e6]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:13px}.subscriber-add[data-v-cc43e8e6]{display:flex;gap:8px;align-items:center}.schedule-section[data-v-cc43e8e6]{margin-top:12px;border-top:1px solid var(--k-color-divider, var(--el-border-color-lighter));padding-top:12px}.schedule-label[data-v-cc43e8e6]{font-size:13px;font-weight:500;margin-bottom:8px}.schedule-list[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.schedule-row[data-v-cc43e8e6]{display:flex;gap:8px;align-items:center}.schedule-control-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.schedule-control-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.schedule-control-list[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:8px}.schedule-control-row[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-radius:4px;background:var(--k-hover-bg, var(--el-fill-color))}.schedule-info[data-v-cc43e8e6]{font-size:13px}.schedule-time[data-v-cc43e8e6]{color:var(--k-text-light, var(--el-text-color-secondary));margin-left:4px}.team-manager[data-v-064b204b]{display:flex;flex-direction:column;gap:12px}.team-header[data-v-064b204b]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.team-header-actions[data-v-064b204b]{display:flex;gap:8px}.player-display[data-v-064b204b]{display:flex;flex-wrap:wrap;gap:4px}.player-tag[data-v-064b204b]{font-size:12px}.no-players[data-v-064b204b]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px}.inline-edit[data-v-064b204b]{display:flex;flex-direction:column;gap:4px;padding:4px 0}.inline-edit-row[data-v-064b204b]{display:flex;align-items:center;gap:6px}.player-index[data-v-064b204b]{width:20px;text-align:right;color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px;flex-shrink:0}.inline-edit-actions[data-v-064b204b]{display:flex;gap:6px;margin-top:4px}.lobby-panel[data-v-a21c65dd]{display:flex;flex-direction:column;gap:16px}.lobby-config[data-v-a21c65dd]{margin-bottom:4px}.section-card[data-v-a21c65dd] .el-card__header{padding:12px 16px}.section-header[data-v-a21c65dd]{font-weight:700}.empty-hint[data-v-a21c65dd]{text-align:center;padding:20px;color:var(--k-text-light);font-size:13px}.game-list[data-v-a21c65dd]{display:flex;flex-direction:column;gap:8px}.game-card[data-v-a21c65dd]{border-left:3px solid var(--el-color-success)}.game-card[data-v-a21c65dd] .el-card__body{padding:12px}.game-header[data-v-a21c65dd]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.game-id[data-v-a21c65dd]{font-family:monospace;font-size:12px;color:var(--k-text-light)}.game-actions[data-v-a21c65dd]{display:flex;gap:4px}.game-players[data-v-a21c65dd]{display:flex;gap:6px;flex-wrap:wrap}.player-tag[data-v-a21c65dd]{font-size:13px}.contest-panel[data-v-c9a9bbef]{height:100%;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}.first-tab-label[data-v-c9a9bbef]{display:inline-flex;align-items:center;gap:4px}.sidebar-toggle-btn[data-v-c9a9bbef]{font-size:inherit;padding:0;min-width:auto;height:auto;line-height:inherit;color:var(--el-text-color-primary);font-weight:400}.sidebar-toggle-btn[data-v-c9a9bbef]:hover{color:var(--el-color-primary)}.contest-panel[data-v-c9a9bbef] .el-tabs{display:flex;flex-direction:column;flex:1;overflow:hidden}.contest-panel[data-v-c9a9bbef] .el-tabs__header{padding-left:8px}.contest-panel[data-v-c9a9bbef] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.contest-panel[data-v-c9a9bbef] .el-tab-pane{flex:1;overflow-y:auto;padding:12px 16px 16px}.empty-state[data-v-c9a9bbef]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--k-text-light)}.main-layout[data-v-592f974d]{display:flex;height:100%;overflow:hidden}.sidebar-wrapper[data-v-592f974d]{position:relative;width:240px;min-width:240px;border-right:1px solid var(--k-color-divider, var(--el-border-color-lighter));transition:width .2s,min-width .2s;display:flex;flex-direction:column}.sidebar-wrapper.collapsed[data-v-592f974d]{width:0;min-width:0;overflow:hidden}.content-wrapper[data-v-592f974d]{flex:1;overflow:hidden;min-width:0}.empty-state[data-v-592f974d]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--k-text-light);font-size:16px}
|
|
1
|
+
.sidebar[data-v-8b51a7a2]{height:100%;display:flex;flex-direction:column}.sidebar-header[data-v-8b51a7a2]{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--k-color-divider);font-weight:700}.contest-list[data-v-8b51a7a2]{flex:1;overflow-y:auto}.contest-item[data-v-8b51a7a2]{padding:10px 16px;cursor:pointer;border-bottom:1px solid var(--k-color-divider);position:relative;transition:background-color .2s}.contest-item[data-v-8b51a7a2]:hover{background:var(--k-hover-bg, var(--el-fill-color-light))}.contest-item.active[data-v-8b51a7a2]{background:var(--k-hover-bg, var(--el-color-primary-light-9));border-left:3px solid var(--el-color-primary)}.contest-name[data-v-8b51a7a2]{font-size:14px;font-weight:500}.contest-cid[data-v-8b51a7a2]{font-size:12px;color:var(--k-text-light)}.admin-badge[data-v-8b51a7a2]{position:absolute;top:10px;right:12px;color:var(--el-color-success)}.cls-card[data-v-559ac705]{border-left:3px solid transparent}.cls-card.status-pending[data-v-559ac705]{border-left-color:var(--el-color-info)}.cls-card.status-running[data-v-559ac705]{border-left-color:var(--el-color-success)}.cls-card.status-finished[data-v-559ac705]{border-left-color:var(--el-color-primary)}.cls-card.status-suspended[data-v-559ac705]{border-left-color:var(--el-color-warning)}.cls-card.status-error[data-v-559ac705]{border-left-color:var(--el-color-danger)}.cls-header[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center}.cls-title[data-v-559ac705]{font-weight:700}.error-msg[data-v-559ac705]{color:var(--el-color-danger);font-size:12px;margin-bottom:8px}.player-list[data-v-559ac705]{display:flex;flex-direction:column;gap:4px}.player-row[data-v-559ac705]{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:2px 4px;border-radius:2px}.player-row[data-v-559ac705]:nth-child(odd){background:var(--k-hover-bg, var(--el-fill-color))}.player-info[data-v-559ac705]{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden}.online-dot[data-v-559ac705]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.online-dot.online[data-v-559ac705]{background:var(--el-color-success)}.online-dot.offline[data-v-559ac705]{background:var(--el-color-danger)}.player-name[data-v-559ac705]{font-weight:500;color:var(--k-text-normal, var(--el-text-color-primary))}.player-right[data-v-559ac705]{display:flex;align-items:center;gap:4px;flex-shrink:0}.player-point[data-v-559ac705]{color:var(--k-text-light, var(--el-text-color-secondary));font-family:monospace}.player-point.editable[data-v-559ac705]{cursor:pointer;border-bottom:1px dashed var(--el-border-color)}.player-point.editable[data-v-559ac705]:hover{color:var(--el-color-primary)}.point-edit[data-v-559ac705]{display:flex;align-items:center;gap:2px;margin-left:auto}.point-edit-btn[data-v-559ac705]{padding:0 4px;min-width:auto;font-size:13px;margin-left:0!important}.swap-btn[data-v-559ac705]{padding:2px;font-size:13px}.no-players[data-v-559ac705]{text-align:center;color:var(--k-text-light, var(--el-text-color-secondary))}.cls-actions[data-v-559ac705]{margin-top:8px;display:flex;gap:4px;flex-wrap:wrap}.swap-popover-container{padding:8px 4px 8px 12px!important}.swap-popover-container .swap-popover{max-height:240px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--el-border-color) transparent}.swap-popover-container .swap-popover::-webkit-scrollbar{width:4px}.swap-popover-container .swap-popover::-webkit-scrollbar-track{background:transparent}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:2px}.swap-popover-container .swap-popover::-webkit-scrollbar-thumb:hover{background:var(--el-text-color-placeholder)}.swap-popover-container .swap-title{font-size:12px;color:var(--el-text-color-secondary);margin-bottom:4px}.swap-popover-container .swap-option{padding:4px 8px;cursor:pointer;border-radius:4px;font-size:13px}.swap-popover-container .swap-option:hover{background:var(--el-fill-color-light)}.swap-popover-container .swap-option.active{color:var(--el-color-primary);font-weight:500}.swap-popover-container .swap-manual{display:flex;gap:4px;margin-bottom:8px}.swap-popover-container .swap-mode-actions{display:flex;gap:4px;justify-content:flex-end}.swap-popover-container .swap-section{margin-bottom:4px}.match-manager[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:16px;min-height:100%}.config-header[data-v-cc43e8e6]{display:flex;align-items:center;gap:8px}.config-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.config-actions[data-v-cc43e8e6]{margin-top:8px}.status-section[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:12px}.status-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.status-actions[data-v-cc43e8e6]{display:flex;gap:8px}.cls-grid[data-v-cc43e8e6]{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.status-placeholder[data-v-cc43e8e6]{text-align:center;padding:40px;color:var(--k-text-light)}.log-card[data-v-cc43e8e6]{flex:1;display:flex;flex-direction:column;min-height:200px}.log-card[data-v-cc43e8e6] .el-card__body{padding:0;flex:1;display:flex;flex-direction:column;overflow:hidden}.log-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center}.log-scroll[data-v-cc43e8e6]{flex:1;overflow-y:auto;padding:8px 16px;font-family:monospace;font-size:12px;scrollbar-width:thin}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar{width:6px}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:3px}.log-scroll[data-v-cc43e8e6]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker, var(--el-text-color-placeholder))}.log-line[data-v-cc43e8e6]{padding:2px 0;line-height:1.5}.log-time[data-v-cc43e8e6]{color:var(--k-text-light);margin-right:8px}.log-empty[data-v-cc43e8e6]{text-align:center;color:var(--k-text-light);padding:20px}.subscriber-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.subscriber-header[data-v-cc43e8e6]{font-weight:700}.subscriber-list[data-v-cc43e8e6]{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.subscriber-tag[data-v-cc43e8e6]{font-family:monospace}.subscriber-empty[data-v-cc43e8e6]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:13px}.subscriber-add[data-v-cc43e8e6]{display:flex;gap:8px;align-items:center}.schedule-section[data-v-cc43e8e6]{margin-top:12px;border-top:1px solid var(--k-color-divider, var(--el-border-color-lighter));padding-top:12px}.schedule-label[data-v-cc43e8e6]{font-size:13px;font-weight:500;margin-bottom:8px}.schedule-list[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.schedule-row[data-v-cc43e8e6]{display:flex;gap:8px;align-items:center}.schedule-control-card[data-v-cc43e8e6] .el-card__body{padding-top:12px;padding-bottom:12px}.schedule-control-header[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.schedule-control-list[data-v-cc43e8e6]{display:flex;flex-direction:column;gap:8px}.schedule-control-row[data-v-cc43e8e6]{display:flex;justify-content:space-between;align-items:center;padding:4px 8px;border-radius:4px;background:var(--k-hover-bg, var(--el-fill-color))}.schedule-info[data-v-cc43e8e6]{font-size:13px}.schedule-time[data-v-cc43e8e6]{color:var(--k-text-light, var(--el-text-color-secondary));margin-left:4px}.team-manager[data-v-064b204b]{display:flex;flex-direction:column;gap:12px}.team-header[data-v-064b204b]{display:flex;justify-content:space-between;align-items:center;font-weight:700}.team-header-actions[data-v-064b204b]{display:flex;gap:8px}.player-display[data-v-064b204b]{display:flex;flex-wrap:wrap;gap:4px}.player-tag[data-v-064b204b]{font-size:12px}.no-players[data-v-064b204b]{color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px}.inline-edit[data-v-064b204b]{display:flex;flex-direction:column;gap:4px;padding:4px 0}.inline-edit-row[data-v-064b204b]{display:flex;align-items:center;gap:6px}.player-index[data-v-064b204b]{width:20px;text-align:right;color:var(--k-text-light, var(--el-text-color-secondary));font-size:12px;flex-shrink:0}.inline-edit-actions[data-v-064b204b]{display:flex;gap:6px;margin-top:4px}.lobby-panel[data-v-a21c65dd]{display:flex;flex-direction:column;gap:16px}.lobby-config[data-v-a21c65dd]{margin-bottom:4px}.section-card[data-v-a21c65dd] .el-card__header{padding:12px 16px}.section-header[data-v-a21c65dd]{font-weight:700}.empty-hint[data-v-a21c65dd]{text-align:center;padding:20px;color:var(--k-text-light);font-size:13px}.game-list[data-v-a21c65dd]{display:flex;flex-direction:column;gap:8px}.game-card[data-v-a21c65dd]{border-left:3px solid var(--el-color-success)}.game-card[data-v-a21c65dd] .el-card__body{padding:12px}.game-header[data-v-a21c65dd]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.game-id[data-v-a21c65dd]{font-family:monospace;font-size:12px;color:var(--k-text-light)}.game-actions[data-v-a21c65dd]{display:flex;gap:4px}.game-players[data-v-a21c65dd]{display:flex;gap:6px;flex-wrap:wrap}.player-tag[data-v-a21c65dd]{font-size:13px}.contest-panel[data-v-c9a9bbef]{height:100%;box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden}.first-tab-label[data-v-c9a9bbef]{display:inline-flex;align-items:center;gap:4px}.sidebar-toggle-btn[data-v-c9a9bbef]{font-size:inherit;padding:0;min-width:auto;height:auto;line-height:inherit;color:var(--el-text-color-primary);font-weight:400}.sidebar-toggle-btn[data-v-c9a9bbef]:hover{color:var(--el-color-primary)}.contest-panel[data-v-c9a9bbef] .el-tabs{display:flex;flex-direction:column;flex:1;overflow:hidden}.contest-panel[data-v-c9a9bbef] .el-tabs__header{padding-left:8px}.contest-panel[data-v-c9a9bbef] .el-tabs__content{flex:1;overflow:hidden;display:flex;flex-direction:column}.contest-panel[data-v-c9a9bbef] .el-tab-pane{flex:1;overflow-y:auto;padding:12px 16px 16px}.empty-state[data-v-c9a9bbef]{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--k-text-light)}.main-layout[data-v-592f974d]{display:flex;height:100%;overflow:hidden}.sidebar-wrapper[data-v-592f974d]{position:relative;width:240px;min-width:240px;border-right:1px solid var(--k-color-divider, var(--el-border-color-lighter));transition:width .2s,min-width .2s;display:flex;flex-direction:column}.sidebar-wrapper.collapsed[data-v-592f974d]{width:0;min-width:0;overflow:hidden}.content-wrapper[data-v-592f974d]{flex:1;overflow:hidden;min-width:0}.empty-state[data-v-592f974d]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--k-text-light);font-size:16px}
|
package/lib/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ declare module 'koishi' {
|
|
|
16
16
|
'mahjongpub/bind-team': string;
|
|
17
17
|
'mahjongpub/bind-contest': string;
|
|
18
18
|
'mahjongpub/bind-contestpw': string;
|
|
19
|
+
'mahjongpub/bind-contesteditrow': number;
|
|
19
20
|
}
|
|
20
21
|
interface Tables {
|
|
21
22
|
'mahjongpub.contests': ConsoleExtension.ContestConfig;
|
package/lib/index.js
CHANGED
|
@@ -23,7 +23,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
23
23
|
// src/locales/zh-CN.yml
|
|
24
24
|
var require_zh_CN = __commonJS({
|
|
25
25
|
"src/locales/zh-CN.yml"(exports2, module2) {
|
|
26
|
-
module2.exports = { commands: { "mahjongpub.team.bind": { description: "绑定队伍", messages: { failed: "绑定失败", success: "成功: [{cid}:{tid}] {name}" } }, "mahjongpub.team.unbind": { description: "解除绑定", messages: { notbind: "未绑定", success: "成功" } }, "mahjongpub.team.password": { description: "查看密码", messages: { notbind: "未绑定", output: "密码: {0}" } }, "mahjongpub.team.stats": { description: "查看队伍信息", messages: { notbind: "未绑定", failed: "失败", output: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.desc": { description: "队伍简介", messages: { notbind: "未绑定", failed: "失败", output: "- [{cid}:{tid}] {name}\n{description}\n" } }, "mahjongpub.team.logo": { description: "队伍头像", messages: { notbind: "未绑定", failed: "失败" } }, "mahjongpub.team.add": { description: "添加队员", messages: { notbind: "未绑定", failed: "失败", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.remove": { description: "删除队员", messages: { notbind: "未绑定", failed: "失败", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.swap": { description: "交换队员", messages: { notbind: "未绑定", failed: "失败", invalid: "参数错误", "wide-range": "范围过大", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.contest.bind": { description: "绑定比赛", messages: { failed: "绑定失败", success: "成功: [{cid}] {name}" } }, "mahjongpub.contest.password": { description: "查看密码", messages: { failed: "未绑定", success: "[{0}] {1}\n" } }, "mahjongpub.contest.record.get": { description: "查询比赛记录", messages: { failed: "查询失败" } }, "mahjongpub.contest.record.update": { description: "修改比赛记录", messages: { failed: "修改失败" } }, "mahjongpub.database.record.get": { description: "查询比赛记录", messages: { failed: "查询失败" } }, "mahjongpub.database.record.update": { description: "修改比赛记录", messages: { success: "修改成功", failed: "修改失败", unmodified: "未修改" } } } };
|
|
26
|
+
module2.exports = { commands: { "mahjongpub.team.bind": { description: "绑定队伍", messages: { failed: "绑定失败", success: "成功: [{cid}:{tid}] {name}" } }, "mahjongpub.team.unbind": { description: "解除绑定", messages: { notbind: "未绑定", success: "成功" } }, "mahjongpub.team.password": { description: "查看密码", messages: { notbind: "未绑定", output: "密码: {0}" } }, "mahjongpub.team.stats": { description: "查看队伍信息", messages: { notbind: "未绑定", failed: "失败", output: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.desc": { description: "队伍简介", messages: { notbind: "未绑定", failed: "失败", output: "- [{cid}:{tid}] {name}\n{description}\n" } }, "mahjongpub.team.logo": { description: "队伍头像", messages: { notbind: "未绑定", failed: "失败" } }, "mahjongpub.team.add": { description: "添加队员", messages: { notbind: "未绑定", failed: "失败", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.remove": { description: "删除队员", messages: { notbind: "未绑定", failed: "失败", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.team.swap": { description: "交换队员", messages: { notbind: "未绑定", failed: "失败", invalid: "参数错误", "wide-range": "范围过大", unauthorized: "无权限", success: "- [{cid}:{tid}] {name}\n{players.map((p, i) => '' + (i+1) + ': ' + p).join('\\n')}\n" } }, "mahjongpub.contest.bind": { description: "绑定比赛", messages: { failed: "绑定失败", success: "成功: [{cid}] {name}" } }, "mahjongpub.contest.password": { description: "查看密码", messages: { failed: "未绑定", success: "[{0}] {1}\n" } }, "mahjongpub.contest.record.get": { description: "查询比赛记录", messages: { failed: "查询失败" } }, "mahjongpub.contest.record.update": { description: "修改比赛记录", messages: { failed: "修改失败" } }, "mahjongpub.database.record.get": { description: "查询比赛记录", messages: { failed: "查询失败" } }, "mahjongpub.database.record.update": { description: "修改比赛记录", messages: { success: "修改成功", failed: "修改失败", unmodified: "未修改" } } } };
|
|
27
27
|
}
|
|
28
28
|
});
|
|
29
29
|
|
|
@@ -1325,7 +1325,8 @@ var MahjongPub2 = class extends import_koishi4.Service {
|
|
|
1325
1325
|
ctx.model.extend("channel", {
|
|
1326
1326
|
"mahjongpub/bind-team": "string",
|
|
1327
1327
|
"mahjongpub/bind-contest": "string",
|
|
1328
|
-
"mahjongpub/bind-contestpw": "string"
|
|
1328
|
+
"mahjongpub/bind-contestpw": "string",
|
|
1329
|
+
"mahjongpub/bind-contesteditrow": { type: "unsigned", initial: 0 }
|
|
1329
1330
|
});
|
|
1330
1331
|
ctx.model.extend("mahjongpub.contests", {
|
|
1331
1332
|
cid: "unsigned",
|
|
@@ -1475,8 +1476,20 @@ var MahjongPub2 = class extends import_koishi4.Service {
|
|
|
1475
1476
|
return session.text(".failed");
|
|
1476
1477
|
}
|
|
1477
1478
|
});
|
|
1478
|
-
ctx.command("mahjongpub.team.swap <...indices:natural>", { authority:
|
|
1479
|
+
ctx.command("mahjongpub.team.swap <...indices:natural>", { authority: 1 }).alias("!交换", "!交换").option("channel", "-c <channel:channel>").option("team", "-t <team:string>").option("start", "-s <start:number>").option("end", "-e <end:number>").option("slim", "--slim").userFields(["mahjongpub/bind-team", "mahjongpub/bind-teams", "authority"]).channelFields(["mahjongpub/bind-team", "mahjongpub/bind-contest", "mahjongpub/bind-contestpw", "mahjongpub/bind-contesteditrow"]).action(async ({ session, options }, ...indices) => {
|
|
1479
1480
|
let pw = options.channel ? (await session.getChannel(parsePlatform(options.channel)[1], ["mahjongpub/bind-team"]))["mahjongpub/bind-team"] : session.isDirect ? session.user["mahjongpub/bind-team"] : session.channel["mahjongpub/bind-team"] ?? session.user["mahjongpub/bind-team"];
|
|
1481
|
+
if (session.user.authority < 3 && (!pw || options.team || options.start || options.end)) {
|
|
1482
|
+
return session.text(".unauthorized");
|
|
1483
|
+
}
|
|
1484
|
+
if (session.user.authority < 3) {
|
|
1485
|
+
const maxEditRow = session.channel?.["mahjongpub/bind-contesteditrow"] || 0;
|
|
1486
|
+
if (maxEditRow && indices.some((i) => i > maxEditRow)) {
|
|
1487
|
+
return session.text(".unauthorized");
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1490
|
+
if (!pw && !options.team && session.author?.nick) {
|
|
1491
|
+
options.team = session.author.nick.split(/[\s+\-]/)[0];
|
|
1492
|
+
}
|
|
1480
1493
|
if (options.team) {
|
|
1481
1494
|
const [cid, cpw] = [session.channel["mahjongpub/bind-contest"], session.channel["mahjongpub/bind-contestpw"]];
|
|
1482
1495
|
if (!cid || !cpw) return session.text(".notbind");
|