This commit is contained in:
Kunagisa 2025-07-06 21:20:34 +08:00
parent ced488a958
commit 839ef35e16
56 changed files with 66 additions and 9460 deletions

9231
dist/Weapon.xml vendored

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
import{_ as b,r as u,c as g,o as k,b as r,d as t,F as f,B as y,t as o,u as E,z as c,n as d}from"./index-DGJ6dnLh.js";import{b as x}from"./centre_maps-BJ03iu7g.js";const A={class:"maps"},B={class:"table-container"},C={class:"maps-table"},M=["onClick"],w={class:"rank-column"},z={class:"author-name"},D={__name:"ActiveAuthor",setup(F){const i=E(),n=u([]),l=u(!1),_=g(()=>l.value?n.value:n.value.slice(0,10)),p=e=>{i.push({name:"EditorsMaps",query:{author:e}})},v=async()=>{try{const e=await x();n.value=e.sort((a,s)=>s.credits-a.credits),console.log("排序后的作者列表:",n.value)}catch(e){console.error("获取列表失败:",e)}},h=()=>{l.value=!l.value};return k(()=>{v()}),(e,a)=>(c(),r("div",A,[a[1]||(a[1]=t("div",{class:"page-header"},[t("h1",null,"活跃作者推荐")],-1)),t("div",B,[t("table",C,[a[0]||(a[0]=t("thead",null,[t("tr",null,[t("th",{class:"rank-column"},"排名"),t("th",null,"作者名称"),t("th",null,"积分"),t("th",null,"最近三个月活跃"),t("th",null,"最近一个月活跃")])],-1)),t("tbody",null,[(c(!0),r(f,null,y(_.value,(s,m)=>(c(),r("tr",{key:s.update_editor,class:"table-row",onClick:L=>p(s.update_editor)},[t("td",w,o(m+1),1),t("td",z,o(s.update_editor),1),t("td",null,o(s.credits),1),t("td",null,[t("span",{class:d(["status-badge",s.three_month_live?"active":"inactive"])},o(s.three_month_live?"是":"否"),3)]),t("td",null,[t("span",{class:d(["status-badge",s.one_month_live?"active":"inactive"])},o(s.one_month_live?"是":"否"),3)])],8,M))),128))])])]),t("div",{class:"expand-button",onClick:h},o(l.value?"收起":"展开更多"),1)]))}},N=b(D,[["__scopeId","data-v-69b8a4e2"]]);export{N as default};

View File

@ -1 +0,0 @@
.maps-table[data-v-69b8a4e2]{width:100%;border-collapse:collapse;margin-top:20px}.maps-table th[data-v-69b8a4e2],.maps-table td[data-v-69b8a4e2]{padding:12px;text-align:left;border-bottom:1px solid #ddd}.maps-table th[data-v-69b8a4e2]{background-color:#f5f5f5;font-weight:700}.rank-column[data-v-69b8a4e2]{width:80px;text-align:center;font-weight:700;color:#1a237e}.table-row[data-v-69b8a4e2]{transition:background-color .2s}.table-row[data-v-69b8a4e2]:hover{background-color:#f5f5f5;cursor:pointer}.author-name[data-v-69b8a4e2]{font-weight:700;color:#1a237e}.status-badge[data-v-69b8a4e2]{display:inline-block;padding:4px 12px;border-radius:12px;font-size:.9em;font-weight:500}.status-badge.active[data-v-69b8a4e2]{background-color:#e8f5e9;color:#2e7d32}.status-badge.inactive[data-v-69b8a4e2]{background-color:#ffebee;color:#c62828}.expand-button[data-v-69b8a4e2]{display:flex;justify-content:center;align-items:center;padding:10px 20px;background-color:#1a237e;color:#fff;border-radius:4px;cursor:pointer;transition:background-color .3s;width:fit-content;margin:20px auto}.expand-button[data-v-69b8a4e2]:hover{background-color:#283593}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.competition-page[data-v-8bdb25e5]{padding:16px;max-width:1400px;margin:0 auto}.page-header[data-v-8bdb25e5]{margin-bottom:20px}.page-header h1[data-v-8bdb25e5]{font-size:22px;color:#1a237e;margin:0 0 6px}.header-subtitle[data-v-8bdb25e5]{color:#666;font-size:13px}.action-bar[data-v-8bdb25e5]{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:12px}.left-actions[data-v-8bdb25e5],.right-actions[data-v-8bdb25e5]{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.search-box[data-v-8bdb25e5]{position:relative;flex-grow:1}.search-box input[data-v-8bdb25e5]{padding:6px 10px 6px 28px;border:1px solid #ddd;border-radius:4px;font-size:13px;width:100%;max-width:220px}.search-icon[data-v-8bdb25e5]{position:absolute;left:8px;top:50%;transform:translateY(-50%);color:#999;font-size:14px}.filter-select[data-v-8bdb25e5]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px;background:#fff;min-width:100px;cursor:pointer}.btn-common[data-v-8bdb25e5]{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;font-size:13px;font-weight:500;border-radius:4px;border:1px solid #b6d2ff;cursor:pointer;transition:all .3s ease}.btn-gradient[data-v-8bdb25e5]{background:linear-gradient(90deg,#71eaeb,#416bdf);color:#fff;border:none}.btn-gradient[data-v-8bdb25e5]:hover{background:linear-gradient(90deg,#416bdf,#71eaeb);transform:translateY(-1px)}.btn-light[data-v-8bdb25e5]{background:#fff;color:#2563eb}.btn-light[data-v-8bdb25e5]:hover{background:#f5f7fa;border-color:#2563eb}.table-container[data-v-8bdb25e5]{background:#fff;border-radius:8px;box-shadow:0 1px 8px #0000000d;overflow-x:auto;margin-bottom:20px;position:relative;min-height:200px}.competition-table[data-v-8bdb25e5]{width:100%;min-width:800px;border-collapse:collapse}.competition-table th[data-v-8bdb25e5],.competition-table td[data-v-8bdb25e5]{padding:12px;text-align:left;border-bottom:1px solid #f0f0f0;font-size:13px}.competition-table th[data-v-8bdb25e5]{background-color:#f8f9fa;font-weight:600;color:#1a237e}.competition-row[data-v-8bdb25e5]{cursor:pointer;transition:all .3s ease}.competition-row[data-v-8bdb25e5]:hover{background-color:#f0f7ff;transform:translateY(-1px)}.competition-name[data-v-8bdb25e5]{font-weight:500;color:#1a237e}.status-tag[data-v-8bdb25e5]{display:inline-block;padding:2px 6px;border-radius:3px;font-size:11px;font-weight:500}.status-tag.prepare[data-v-8bdb25e5]{background-color:#e6a23c;color:#fff}.status-tag.starting[data-v-8bdb25e5]{background-color:#67c23a;color:#fff}.status-tag.finish[data-v-8bdb25e5]{background-color:#909399;color:#fff}.action-cell[data-v-8bdb25e5]{display:flex;gap:6px}.action-btn[data-v-8bdb25e5]{padding:5px 10px;border-radius:4px;background:linear-gradient(90deg,#71eaeb,#416bdf);color:#fff;font-size:13px;border:none;cursor:pointer}.empty-state[data-v-8bdb25e5]{padding:30px;text-align:center;font-size:14px;color:#909399}.error-message[data-v-8bdb25e5]{background-color:#fef0f0;color:#f56c6c;padding:10px 14px;border-radius:4px;display:flex;gap:8px;font-size:13px}.retry-btn[data-v-8bdb25e5]{margin-left:auto;padding:4px 10px;font-size:12px;background:#f56c6c;color:#fff;border:none;border-radius:3px;cursor:pointer}.loading-overlay[data-v-8bdb25e5]{position:absolute;top:0;left:0;right:0;bottom:0;background:#fffc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#409eff;font-size:14px}.table-container.loading[data-v-8bdb25e5]{opacity:.6;pointer-events:none}.btn-common[data-v-8bdb25e5]:disabled{opacity:.6;cursor:not-allowed}.action-btn[data-v-8bdb25e5]:disabled{background:#e0e0e0!important;color:#b0b0b0!important;cursor:not-allowed;border:none;opacity:1}@media (max-width: 768px){.competition-page[data-v-8bdb25e5]{padding:12px}.action-bar[data-v-8bdb25e5]{flex-direction:column;gap:10px;align-items:stretch}.left-actions[data-v-8bdb25e5],.right-actions[data-v-8bdb25e5]{flex-direction:column;gap:8px;width:100%}.table-container[data-v-8bdb25e5]{margin:0 -12px;border-radius:0}.competition-table th[data-v-8bdb25e5],.competition-table td[data-v-8bdb25e5]{padding:10px;font-size:12px}.search-box input[data-v-8bdb25e5],.filter-select[data-v-8bdb25e5]{width:100%;max-width:100%}.status-tag[data-v-8bdb25e5]{font-size:10px;padding:2px 5px}}

View File

@ -1 +0,0 @@
import{_ as S,r as u,c as V,b as o,d as s,i as C,q as g,n as _,t as l,p as y,C as B,G as M,F as N,B as U,u as D,z as r,l as F}from"./index-DGJ6dnLh.js";import{g as Q}from"./tournament-DhC9_tfq.js";const T={class:"competition-page"},I={class:"action-bar"},$={class:"left-actions"},E=["disabled"],G={class:"right-actions"},R={class:"search-box"},j={key:0,class:"error-message"},A={class:"competition-table"},H=["onClick"],J={class:"competition-name"},K={class:"action-cell"},O=["onClick","disabled"],P={key:0,class:"loading-overlay"},W={key:1,class:"empty-state"},X={__name:"Competition",setup(Y){const v=D(),m=u([]),i=u(""),d=u("all"),n=u(!1),c=u(""),h=V(()=>{let t=m.value;if(i.value){const e=i.value.toLowerCase();t=t.filter(a=>a.name.toLowerCase().includes(e)||a.organizer.toLowerCase().includes(e))}return d.value!=="all"&&(t=t.filter(e=>d.value==="ongoing"?e.status==="starting":e.status==="finish")),t}),p=t=>t.replace(/\//g,"-"),q=()=>{},k=()=>{},w=t=>{v.push({path:"/competition/detail",query:{id:t.id,name:t.name,start_time:t.start_time,end_time:t.end_time,organizer:t.organizer,qq_code:t.qq_code,format:t.format,status:t.status}})},z=t=>{v.push({name:"CompetitionSignUp",query:{id:t.id,name:t.name,start_time:t.start_time,end_time:t.end_time,organizer:t.organizer,qq_code:t.qq_code,format:t.format,status:t.status}})},x=()=>{v.push("/competition/add")},f=async()=>{var t,e;try{n.value=!0,c.value="";const a=await Q();m.value=a,console.log("刷新赛程数据成功")}catch(a){console.error("获取赛程数据失败:",a),c.value=((e=(t=a.response)==null?void 0:t.data)==null?void 0:e.message)||"获取赛程数据失败,请重试"}finally{n.value=!1}};return f(),(t,e)=>(r(),o("div",T,[e[9]||(e[9]=s("div",{class:"page-header"},[s("h1",null,"赛程信息"),s("div",{class:"header-subtitle"},[s("span",{class:"date-range"},"点击即可查看和报名")])],-1)),s("div",I,[s("div",$,[s("button",{class:"btn-common btn-gradient",onClick:x},e[2]||(e[2]=[s("i",{class:"fas fa-plus"},null,-1),g(" 添加赛程 ")])),s("button",{class:"btn-common btn-light",onClick:f,disabled:n.value},[s("i",{class:_(["fas",n.value?"fa-spinner fa-spin":"fa-sync-alt"])},null,2),g(" "+l(n.value?"刷新中...":"刷新赛程"),1)],8,E)]),s("div",G,[s("div",R,[y(s("input",{type:"text","onUpdate:modelValue":e[0]||(e[0]=a=>i.value=a),placeholder:"搜索赛程...",onInput:q},null,544),[[B,i.value]]),e[3]||(e[3]=s("i",{class:"fas fa-search search-icon"},null,-1))]),y(s("select",{"onUpdate:modelValue":e[1]||(e[1]=a=>d.value=a),onChange:k,class:"filter-select"},e[4]||(e[4]=[s("option",{value:"all"},"全部状态",-1),s("option",{value:"ongoing"},"进行中",-1),s("option",{value:"finished"},"已结束",-1)]),544),[[M,d.value]])])]),c.value?(r(),o("div",j,[e[5]||(e[5]=s("i",{class:"fas fa-exclamation-circle"},null,-1)),g(" "+l(c.value)+" ",1),s("button",{class:"retry-btn",onClick:f}," 重试 ")])):C("",!0),s("div",{class:_(["table-container",{loading:n.value}])},[s("table",A,[e[6]||(e[6]=s("thead",null,[s("tr",null,[s("th",null,"序号"),s("th",null,"赛程名称"),s("th",null,"开始时间"),s("th",null,"结束时间"),s("th",null,"状态"),s("th",null,"组织者"),s("th",null,"QQ号"),s("th",null,"赛制类型"),s("th",null,"操作")])],-1)),s("tbody",null,[(r(!0),o(N,null,U(h.value,(a,b)=>(r(),o("tr",{key:b,class:"competition-row",onClick:L=>w(a)},[s("td",null,l(b+1),1),s("td",J,l(a.name),1),s("td",null,l(p(a.start_time)),1),s("td",null,l(p(a.end_time)),1),s("td",null,[s("span",{class:_(["status-tag",a.status])},l(a.status==="prepare"?"筹备中":a.status==="starting"?"进行中":"已结束"),3)]),s("td",null,l(a.organizer),1),s("td",null,l(a.qq_code),1),s("td",null,l(a.format==="single"?"单败淘汰":a.format==="double"?"双败淘汰":"积分赛"),1),s("td",K,[s("button",{class:"action-btn view",onClick:F(L=>z(a),["stop"]),disabled:a.status==="finish"}," 报名 ",8,O)])],8,H))),128))])]),n.value?(r(),o("div",P,e[7]||(e[7]=[s("i",{class:"fas fa-spinner fa-spin"},null,-1),s("span",null,"加载中...",-1)]))):h.value.length===0?(r(),o("div",W,e[8]||(e[8]=[s("i",{class:"fas fa-calendar-times"},null,-1),s("p",null,"暂无赛程信息",-1)]))):C("",!0)],2)]))}},ts=S(X,[["__scopeId","data-v-8bdb25e5"]]);export{ts as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.signup-page[data-v-c07fba6c]{padding:20px;max-width:800px;margin:0 auto}.page-header[data-v-c07fba6c]{margin-bottom:30px}.page-header h1[data-v-c07fba6c]{font-size:24px;color:#1a237e;margin:0 0 8px}.header-subtitle[data-v-c07fba6c]{color:#666;font-size:14px}.competition-name[data-v-c07fba6c]{font-weight:500;color:#1a237e}.signup-form[data-v-c07fba6c]{background:#fff;border-radius:12px;padding:24px;box-shadow:0 2px 12px #0000001a}.form-group[data-v-c07fba6c]{margin-bottom:24px}.form-group label[data-v-c07fba6c]{display:block;font-size:16px;font-weight:500;color:#1a237e;margin-bottom:16px}.info-grid[data-v-c07fba6c]{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;background:#f8f9fa;padding:20px;border-radius:8px}.info-item[data-v-c07fba6c]{display:flex;gap:8px;align-items:center}.info-item .label[data-v-c07fba6c]{color:#666;min-width:80px;font-weight:500}.info-item .value[data-v-c07fba6c]{color:#333;font-weight:500}.input-group[data-v-c07fba6c]{margin-bottom:16px}.form-input[data-v-c07fba6c]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:all .3s ease}.form-input[data-v-c07fba6c]:focus{border-color:#1a237e;outline:none;box-shadow:0 0 0 2px #1a237e1a}.form-textarea[data-v-c07fba6c]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;min-height:100px;resize:vertical;transition:all .3s ease}.form-textarea[data-v-c07fba6c]:focus{border-color:#1a237e;outline:none;box-shadow:0 0 0 2px #1a237e1a}.form-select[data-v-c07fba6c]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;background-color:#fff;cursor:pointer;transition:all .3s ease}.form-select[data-v-c07fba6c]:focus{border-color:#1a237e;outline:none;box-shadow:0 0 0 2px #1a237e1a}.form-actions[data-v-c07fba6c]{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}.btn-cancel[data-v-c07fba6c]{padding:10px 24px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#666;font-size:14px;cursor:pointer;transition:all .3s ease}.btn-cancel[data-v-c07fba6c]:hover{background:#f5f5f5;border-color:#ccc}.btn-submit[data-v-c07fba6c]{padding:10px 24px;border:none;border-radius:6px;background:linear-gradient(90deg,#71eaeb,#416bdf);color:#fff;font-size:14px;cursor:pointer;transition:all .3s ease}.btn-submit[data-v-c07fba6c]:hover{transform:translateY(-1px);box-shadow:0 2px 8px #416bdf33}.btn-submit[data-v-c07fba6c]:active{transform:translateY(0)}@media (max-width: 768px){.signup-page[data-v-c07fba6c]{padding:15px}.info-grid[data-v-c07fba6c]{grid-template-columns:1fr}.form-actions[data-v-c07fba6c]{flex-direction:column}.btn-cancel[data-v-c07fba6c],.btn-submit[data-v-c07fba6c]{width:100%}}.status-tag[data-v-c07fba6c]{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.status-tag.prepare[data-v-c07fba6c]{background-color:#e6a23c;color:#fff}.status-tag.starting[data-v-c07fba6c]{background-color:#67c23a;color:#fff}.status-tag.finish[data-v-c07fba6c]{background-color:#909399;color:#fff}.status-select[data-v-c07fba6c]{margin-top:16px}.status-select .form-select[data-v-c07fba6c]{background-color:#f8f9fa}.status-select .form-select option[value=tie][data-v-c07fba6c]{color:#ff9800}.status-select .form-select option[value=win][data-v-c07fba6c]{color:#4caf50}.status-select .form-select option[value=lose][data-v-c07fba6c]{color:#f44336}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{_ as r,b as i,i as l,z as c,d as e,t as n,l as d}from"./index-DGJ6dnLh.js";const m={class:"error-dialog"},_={class:"error-dialog-content"},f={__name:"ErrorDialog",props:{visible:{type:Boolean,default:!1},title:{type:String,default:"错误提示"},message:{type:String,required:!0}},emits:["close"],setup(o,{emit:s}){const a=s,t=()=>{a("close")};return(g,u)=>o.visible?(c(),i("div",{key:0,class:"error-dialog-overlay",onClick:d(t,["self"])},[e("div",m,[e("div",_,n(o.message),1),e("div",{class:"error-dialog-footer"},[e("button",{class:"confirm-button",onClick:t},"确定")])])])):l("",!0)}},v=r(f,[["__scopeId","data-v-d9aac171"]]);export{v as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.map-detail[data-v-d8aed9e1]{padding:15px;max-width:1200px;margin:0 auto}.back-button[data-v-d8aed9e1]{margin-bottom:15px}.back-btn[data-v-d8aed9e1]{display:inline-flex;align-items:center;padding:8px 12px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;color:#333;cursor:pointer;transition:all .2s ease;font-size:14px}.back-btn[data-v-d8aed9e1]:hover{background:#e9ecef;border-color:#d0d0d0}.back-icon[data-v-d8aed9e1]{margin-right:6px;font-size:16px}.map-header[data-v-d8aed9e1]{margin-bottom:20px}.map-header h1[data-v-d8aed9e1]{margin:0;color:#333;font-size:1.5rem}.author[data-v-d8aed9e1]{color:#666;margin-top:5px;font-size:.9rem}.map-content[data-v-d8aed9e1]{display:flex;flex-direction:column;gap:20px}@media (min-width: 768px){.map-content[data-v-d8aed9e1]{flex-direction:row}.map-image[data-v-d8aed9e1],.map-info[data-v-d8aed9e1]{flex:1}}.map-image img[data-v-d8aed9e1]{width:100%;border-radius:8px;box-shadow:0 2px 10px #0000001a}.map-info[data-v-d8aed9e1]{padding:15px;background:#f8f9fa;border-radius:8px}.info-grid[data-v-d8aed9e1]{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px}.info-item[data-v-d8aed9e1]{display:flex;flex-direction:column}.info-label[data-v-d8aed9e1]{font-size:.8rem;color:#666}.info-value[data-v-d8aed9e1]{font-size:1rem;font-weight:500;color:#333}.tags[data-v-d8aed9e1]{margin-bottom:20px}.tags h3[data-v-d8aed9e1]{margin-bottom:10px;font-size:1.1rem;color:#333}.tag-list[data-v-d8aed9e1]{display:flex;flex-wrap:wrap;gap:8px}.tag[data-v-d8aed9e1]{background:#e9ecef;padding:4px 8px;border-radius:12px;font-size:.8rem;color:#495057}.download-btn[data-v-d8aed9e1]{display:inline-block;width:100%;padding:12px;background:#007bff;color:#fff;text-align:center;text-decoration:none;border-radius:5px;transition:background .2s;font-size:1rem}.download-btn[data-v-d8aed9e1]:hover{background:#0056b3}.score-btn[data-v-d8aed9e1]{display:inline-block;width:100%;padding:12px;background:#a8d1fb;color:#fff;text-align:center;text-decoration:none;border-radius:5px;transition:background .2s;font-size:1rem}.score-btn[data-v-d8aed9e1]:hover{background:#6c8bb9}.score-btn.disabled[data-v-d8aed9e1]{background:#ccc;cursor:not-allowed;opacity:.6}.score-btn.disabled[data-v-d8aed9e1]:hover{background:#ccc}.actions[data-v-d8aed9e1]{display:flex;flex-direction:column;gap:12px}@media (max-width: 480px){.info-grid[data-v-d8aed9e1]{grid-template-columns:1fr}.map-header h1[data-v-d8aed9e1]{font-size:1.3rem}.author[data-v-d8aed9e1]{font-size:.85rem}}.score-dialog[data-v-d8aed9e1]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:1000}.dialog-overlay[data-v-d8aed9e1]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:1001}.dialog-content[data-v-d8aed9e1]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:#fff;padding:20px;border-radius:8px;width:90%;max-width:500px;z-index:1002;box-shadow:0 2px 12px #00000026}.dialog-header[data-v-d8aed9e1]{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:10px;border-bottom:1px solid #eee}.dialog-header h2[data-v-d8aed9e1]{margin:0;font-size:1.25rem;color:#333}.close-btn[data-v-d8aed9e1]{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#666;padding:0 5px}.score-section[data-v-d8aed9e1]{margin-bottom:20px}.score-section h3[data-v-d8aed9e1]{margin:0 0 10px;font-size:1rem;color:#444}.rating[data-v-d8aed9e1]{display:flex;gap:8px;margin-bottom:10px}.star[data-v-d8aed9e1]{font-size:24px;cursor:pointer;color:#ddd;transition:color .2s}.star[data-v-d8aed9e1]:hover,.star.active[data-v-d8aed9e1]{color:gold}.dialog-footer[data-v-d8aed9e1]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;padding-top:15px;border-top:1px solid #eee}.cancel-btn[data-v-d8aed9e1],.submit-btn[data-v-d8aed9e1]{padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.cancel-btn[data-v-d8aed9e1]{background:#f5f5f5;border:1px solid #ddd;color:#666}.cancel-btn[data-v-d8aed9e1]:hover{background:#eee}.submit-btn[data-v-d8aed9e1]{background:#007bff;border:1px solid #0056b3;color:#fff}.submit-btn[data-v-d8aed9e1]:hover{background:#0056b3}@media (max-width: 480px){.dialog-content[data-v-d8aed9e1]{width:95%;padding:15px}.star[data-v-d8aed9e1]{font-size:20px}}

View File

@ -1 +0,0 @@
import{_ as $,r as l,o as F,b as d,i as C,d as s,f as P,q as T,t as n,F as D,B as M,n as I,H as U,u as q,I as R,z as v}from"./index-DGJ6dnLh.js";import{c as A}from"./maps-oN-j_GQV.js";import{u as L,s as H,g as j,a as G}from"./centre_maps-BJ03iu7g.js";import J from"./ErrorDialog-COuvC4wX.js";const K={key:0,class:"map-detail"},O={class:"map-header"},Q={class:"author"},W={class:"map-content"},X={class:"map-image"},Y=["src","alt"],Z={class:"map-info"},ss={class:"info-grid"},as={class:"info-item"},es={class:"info-value"},os={class:"info-item"},ts={class:"info-value"},ls={class:"info-item"},ns={class:"info-value"},is={class:"info-item"},rs={class:"info-value"},cs={class:"info-value"},us={class:"tags"},ds={class:"tag-list"},vs={class:"actions"},_s=["href"],ps={key:0,class:"score-dialog"},fs={class:"dialog-content"},ms={class:"dialog-header"},hs={class:"dialog-body"},gs={class:"score-section"},bs={class:"rating"},ws=["onClick"],ks={class:"dialog-footer"},ys={__name:"MapDetail",setup(Cs){const g=U(),b=q(),e=l(null),f=l(null),m=l(!1),w=l(""),k=l(""),_=l(null),r=(o,a="",t=null)=>{k.value=o,w.value=a,m.value=!0,_.value=t},S=()=>{m.value=!1,_.value&&(_.value(),_.value=null)},c=l(!1),u=l(0),p=l(!1),i=l(null),y=async()=>{try{const o=await G(e.value.name);f.value=o.rewards}catch(o){console.error("获取地图评分失败:",o)}},x=async()=>{try{await L(e.value.name),p.value=!0,await h()}catch(o){console.error("更新下载信息失败:",o),p.value=!0}},h=async()=>{if(R())try{i.value=await j(e.value.name),p.value=i.value.is_download}catch(o){console.error("获取用户地图信息失败:",o)}},B=()=>{if(!(i.value&&i.value.is_rewarded)){if(!R()){r("请先登录后再进行评分","",()=>{b.push({path:"/backend/login",query:{redirect:g.fullPath}})});return}if(!p.value){r("请先下载地图后再进行评分");return}c.value=!0}},E=async()=>{try{e.value=await A(g.params.id),await Promise.all([h(),y()])}catch(o){console.error("获取地图详情失败:",o),r("获取地图详情失败,请稍后重试")}},N=()=>{b.back()},V=o=>new Date(o).toLocaleDateString("zh-CN"),z=async()=>{if(u.value===0){r("请为地图进行评分");return}try{await H(e.value.name,u.value),c.value=!1,u.value=0,await Promise.all([h(),y()]),r("评分成功!")}catch(o){console.error("评分失败:",o),r("评分失败,请稍后重试")}};return F(()=>{E()}),(o,a)=>e.value?(v(),d("div",K,[s("div",{class:"back-button"},[s("button",{onClick:N,class:"back-btn"},a[3]||(a[3]=[s("span",{class:"back-icon"},"←",-1),T(" 返回列表 ")]))]),s("div",O,[s("h1",null,n(e.value.chinese_name),1),s("p",Q,"作者: "+n(e.value.user),1)]),s("div",W,[s("div",X,[s("img",{src:e.value.img_file,alt:e.value.chinese_name},null,8,Y)]),s("div",Z,[s("div",ss,[s("div",as,[a[4]||(a[4]=s("span",{class:"info-label"},"下载次数",-1)),s("span",es,n(e.value.download_count),1)]),s("div",os,[a[5]||(a[5]=s("span",{class:"info-label"},"收藏次数",-1)),s("span",ts,n(e.value.favourite_count),1)]),s("div",ls,[a[6]||(a[6]=s("span",{class:"info-label"},"玩家数量",-1)),s("span",ns,n(e.value.player_count),1)]),s("div",is,[a[7]||(a[7]=s("span",{class:"info-label"},"创建时间",-1)),s("span",rs,n(V(e.value.create_time)),1)]),s("div",null,[a[8]||(a[8]=s("span",{class:"info-label"},"地图评分",-1)),s("span",cs,n(f.value?f.value.toFixed(1):"暂无评分"),1)])]),s("div",us,[a[9]||(a[9]=s("h3",null,"标签",-1)),s("div",ds,[(v(!0),d(D,null,M(e.value.tags,t=>(v(),d("span",{key:t,class:"tag"},n(t),1))),128))])]),s("div",vs,[s("a",{href:e.value.zip_file,class:"download-btn",download:"",onClick:x},"下载地图",8,_s),s("a",{class:I(["score-btn",{disabled:i.value&&i.value.is_rewarded}]),onClick:B},n(i.value&&i.value.is_rewarded?"已评分":"地图评分"),3)])])]),c.value?(v(),d("div",ps,[s("div",{class:"dialog-overlay",onClick:a[0]||(a[0]=t=>c.value=!1)}),s("div",fs,[s("div",ms,[a[10]||(a[10]=s("h2",null,"评分",-1)),s("button",{class:"close-btn",onClick:a[1]||(a[1]=t=>c.value=!1)},"×")]),s("div",hs,[s("div",gs,[a[11]||(a[11]=s("h3",null,"地图评分",-1)),s("div",bs,[(v(),d(D,null,M(5,t=>s("span",{key:"map-"+t,class:I(["star",{active:t<=u.value}]),onClick:Ds=>u.value=t},"★",10,ws)),64))])])]),s("div",ks,[s("button",{class:"cancel-btn",onClick:a[2]||(a[2]=t=>c.value=!1)},"取消"),s("button",{class:"submit-btn",onClick:z},"提交评分")])])])):C("",!0),P(J,{visible:m.value,title:w.value,message:k.value,onClose:S},null,8,["visible","title","message"])])):C("",!0)}},xs=$(ys,[["__scopeId","data-v-d8aed9e1"]]);export{xs as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.image-editor[data-v-d6fab920]{padding:20px;max-width:1400px;margin:0 auto}.editor-header[data-v-d6fab920]{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px}.editor-header h1[data-v-d6fab920]{font-size:1.5rem;color:#333;margin:0}.editor-controls[data-v-d6fab920]{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.editor-controls input[data-v-d6fab920],.editor-controls button[data-v-d6fab920],.editor-controls select[data-v-d6fab920]{padding:8px 12px;border:1px solid #ccc;background:#f8f9fa;border-radius:4px;font-size:14px;cursor:pointer;transition:all .2s}.editor-controls button[data-v-d6fab920]:hover,.editor-controls select[data-v-d6fab920]:hover{background-color:#e0e0e0}.thumbnail-list[data-v-d6fab920]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:15px}.thumbnail[data-v-d6fab920]{width:80px;height:80px;border:2px solid transparent;cursor:pointer;overflow:hidden;border-radius:6px;box-shadow:0 1px 3px #0000001a}.thumbnail.active[data-v-d6fab920]{border-color:#2196f3}.thumbnail img[data-v-d6fab920]{width:100%;height:100%;object-fit:cover}.editor-canvas[data-v-d6fab920]{display:flex;justify-content:center;align-items:center}canvas[data-v-d6fab920]{max-width:100%;border:1px solid #ccc;border-radius:8px;background:#fff;box-shadow:0 2px 8px #00000014}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.privilege-dialog-overlay[data-v-69a30e0d]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1100}.privilege-dialog[data-v-69a30e0d]{background:#fff;border-radius:8px;width:90%;max-width:420px;box-shadow:0 2px 12px #00000026;animation:dialog-fade-in-69a30e0d .3s ease}.privilege-dialog-header[data-v-69a30e0d]{padding:16px 20px 0;text-align:center}.privilege-dialog-header h3[data-v-69a30e0d]{margin:0;color:#416bdf;font-size:20px;font-weight:600}.privilege-dialog-content[data-v-69a30e0d]{padding:18px 20px 0;color:#606266;font-size:15px;line-height:1.5;text-align:left}.privilege-type[data-v-69a30e0d]{margin-bottom:10px;font-size:15px;color:#333}.privilege-name[data-v-69a30e0d]{color:#416bdf;font-weight:600;font-size:16px;margin-left:4px}.privilege-dialog-footer[data-v-69a30e0d]{padding:18px 20px 20px;text-align:right}.cancel-button[data-v-69a30e0d],.apply-button[data-v-69a30e0d]{background:#f5f5f5;color:#333;border:none;padding:7px 20px;border-radius:4px;font-size:15px;cursor:pointer;margin-left:8px;transition:background .2s}.apply-button[data-v-69a30e0d]{background:#416bdf;color:#fff}.cancel-button[data-v-69a30e0d]:hover{background:#e0e0e0}.apply-button[data-v-69a30e0d]:hover{background:#274bb5}@keyframes dialog-fade-in-69a30e0d{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.privilege-type-highlight[data-v-69a30e0d]{background:#eaf3ff;border-radius:6px;padding:6px 12px;margin-bottom:14px;display:inline-block}.privilege-name.privilege-admin[data-v-69a30e0d]{color:#ff7675}.privilege-name.privilege-mod[data-v-69a30e0d]{color:#6c5ce7}.privilege-name.privilege-competitor[data-v-69a30e0d]{color:#00b894}.privilege-name.privilege-map[data-v-69a30e0d]{color:#0984e3}.privilege-name.privilege-user[data-v-69a30e0d]{color:#636e72}

View File

@ -1 +0,0 @@
import{_ as n,b as p,i as d,z as g,d as e,q as v,n as c,t as m,l as u}from"./index-DGJ6dnLh.js";const f={class:"privilege-dialog"},y={class:"privilege-dialog-content"},C={class:"privilege-type privilege-type-highlight"},b={__name:"PrivilegeRequestDialog",props:{visible:{type:Boolean,default:!1},privilegeName:{type:String,default:""}},emits:["close","apply"],setup(l,{emit:a}){const s=a;function t(){s("close")}function o(){s("apply")}const r={管理员:"privilege-admin",模组:"privilege-mod",竞技:"privilege-competitor",地图:"privilege-map",用户:"privilege-user"};return(_,i)=>l.visible?(g(),p("div",{key:0,class:"privilege-dialog-overlay",onClick:u(t,["self"])},[e("div",f,[i[2]||(i[2]=e("div",{class:"privilege-dialog-header"},[e("h3",null,"权限申请")],-1)),e("div",y,[e("div",C,[i[0]||(i[0]=v(" 申请权限:")),e("span",{class:c(["privilege-name",r[l.privilegeName]])},m(l.privilegeName),3)]),i[1]||(i[1]=e("p",null,"如需访问该功能,请点击下方按钮提交申请。",-1))]),e("div",{class:"privilege-dialog-footer"},[e("button",{class:"cancel-button",onClick:t},"取消"),e("button",{class:"apply-button",onClick:o},"提交申请")])])])):d("",!0)}},k=n(b,[["__scopeId","data-v-69a30e0d"]]);export{k as default};

View File

@ -1 +0,0 @@
.success-dialog-overlay[data-v-b7e74f67]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.success-dialog[data-v-b7e74f67]{background:#fff;border-radius:8px;width:90%;max-width:400px;box-shadow:0 2px 12px #00000026;animation:dialog-fade-in-b7e74f67 .3s ease}.success-dialog-content[data-v-b7e74f67]{padding:20px;text-align:center}.success-icon[data-v-b7e74f67]{font-size:48px;color:#67c23a;margin-bottom:16px;font-weight:700}.success-message[data-v-b7e74f67]{color:#606266;font-size:16px;line-height:1.5}.success-dialog-footer[data-v-b7e74f67]{padding:10px 20px 20px;text-align:center}.confirm-button[data-v-b7e74f67]{background-color:#67c23a;color:#fff;border:none;padding:8px 24px;border-radius:4px;font-size:14px;cursor:pointer;transition:background-color .3s}.confirm-button[data-v-b7e74f67]:hover{background-color:#85ce61}@keyframes dialog-fade-in-b7e74f67{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@media screen and (max-width: 480px){.success-dialog[data-v-b7e74f67]{width:85%}.success-icon[data-v-b7e74f67]{font-size:40px}.success-message[data-v-b7e74f67]{font-size:14px;padding:16px}.confirm-button[data-v-b7e74f67]{padding:6px 20px;font-size:13px}}

View File

@ -1 +0,0 @@
import{_ as i,b as l,i as n,z as d,d as s,t as r,l as u}from"./index-DGJ6dnLh.js";const m={class:"success-dialog"},_={class:"success-dialog-content"},f={class:"success-message"},g={__name:"SuccessDialog",props:{visible:{type:Boolean,default:!1},message:{type:String,required:!0}},emits:["close"],setup(e,{emit:t}){const a=t,c=()=>{a("close")};return(v,o)=>e.visible?(d(),l("div",{key:0,class:"success-dialog-overlay",onClick:u(c,["self"])},[s("div",m,[s("div",_,[o[0]||(o[0]=s("div",{class:"success-icon"},"✓",-1)),s("div",f,r(e.message),1)]),s("div",{class:"success-dialog-footer"},[s("button",{class:"confirm-button",onClick:c},"确定")])])])):n("",!0)}},b=i(g,[["__scopeId","data-v-b7e74f67"]]);export{b as default};

View File

@ -1 +0,0 @@
.terrain-tool-container[data-v-860e1977]{max-width:1000px;margin:0 auto;padding:2rem;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:#333}.header[data-v-860e1977]{text-align:center;margin-bottom:2rem}.header h1[data-v-860e1977]{font-size:2.2rem;color:#2c3e50;margin-bottom:.5rem}.subtitle[data-v-860e1977]{color:#7f8c8d;font-size:1.1rem}.upload-section[data-v-860e1977]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-bottom:2rem}.upload-card[data-v-860e1977]{border:2px dashed #bdc3c7;border-radius:12px;padding:1.5rem;transition:all .3s ease;background-color:#f8f9fa}.upload-card.active[data-v-860e1977]{border-color:#3498db;background-color:#e8f4fc}.upload-card[data-v-860e1977]:hover{transform:translateY(-5px);box-shadow:0 10px 20px #0000001a}.upload-label[data-v-860e1977]{display:block;cursor:pointer}.upload-label input[data-v-860e1977]{display:none}.upload-content[data-v-860e1977]{display:flex;flex-direction:column;align-items:center;text-align:center}.upload-content svg[data-v-860e1977]{margin-bottom:1rem;color:#7f8c8d}.upload-card.active svg[data-v-860e1977]{color:#3498db}.upload-content h3[data-v-860e1977]{margin:0 0 .5rem;color:#2c3e50}.upload-content p[data-v-860e1977]{margin:0;color:#7f8c8d;font-size:.9rem}.status-section[data-v-860e1977]{margin-bottom:2rem}.status-card[data-v-860e1977]{background:#fff;border-radius:10px;padding:1.5rem;box-shadow:0 4px 6px #0000000d;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem}.status-item[data-v-860e1977]{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #eee}.status-item.highlight[data-v-860e1977]{font-weight:700;color:#3498db;border-bottom:none}.status-label[data-v-860e1977]{color:#7f8c8d}.status-value[data-v-860e1977]{font-weight:700}.action-buttons[data-v-860e1977]{display:flex;justify-content:center;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.btn[data-v-860e1977]{padding:.8rem 1.8rem;border:none;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;justify-content:center}.btn[data-v-860e1977]:disabled{cursor:not-allowed;opacity:.7}.generate-btn[data-v-860e1977]{background-color:#3498db;color:#fff;min-width:200px}.generate-btn[data-v-860e1977]:hover:not(:disabled){background-color:#2980b9;transform:translateY(-2px);box-shadow:0 4px 8px #3498db4d}.download-btn[data-v-860e1977]{background-color:#2ecc71;color:#fff}.download-btn[data-v-860e1977]:hover:not(:disabled){background-color:#27ae60;transform:translateY(-2px);box-shadow:0 4px 8px #2ecc714d}.btn.disabled[data-v-860e1977]{background-color:#bdc3c7}.processing[data-v-860e1977]{display:flex;align-items:center;gap:.5rem}.spinner[data-v-860e1977]{width:20px;height:20px;animation:rotate-860e1977 2s linear infinite}.spinner .path[data-v-860e1977]{stroke:#fff;stroke-linecap:round;animation:dash-860e1977 1.5s ease-in-out infinite}@keyframes rotate-860e1977{to{transform:rotate(360deg)}}@keyframes dash-860e1977{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.results-section[data-v-860e1977]{margin-top:2rem;animation:fadeIn-860e1977 .5s ease}.results-section h2[data-v-860e1977]{color:#2c3e50;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #eee}.results-grid[data-v-860e1977]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.result-item[data-v-860e1977]{background:#fff;border-radius:8px;padding:1rem;display:flex;align-items:center;box-shadow:0 2px 4px #0000000d;transition:transform .2s ease}.result-item[data-v-860e1977]:hover{transform:translateY(-3px);box-shadow:0 4px 8px #0000001a}.file-icon[data-v-860e1977]{margin-right:1rem;color:#3498db}.file-name[data-v-860e1977]{flex:1;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size[data-v-860e1977]{color:#7f8c8d;font-size:.85rem}.instructions[data-v-860e1977]{background:#f8f9fa;border-radius:10px;padding:1.5rem;margin-top:2rem;border-left:4px solid #3498db}.instructions h3[data-v-860e1977]{color:#2c3e50;margin-top:0}.instructions ol[data-v-860e1977]{padding-left:1.5rem;line-height:1.6}.instructions .note[data-v-860e1977]{font-style:italic;color:#7f8c8d;margin-top:1rem;font-size:.9rem}@keyframes fadeIn-860e1977{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.upload-section[data-v-860e1977]{grid-template-columns:1fr}.action-buttons[data-v-860e1977]{flex-direction:column}.btn[data-v-860e1977]{width:100%}}

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
.map-detail[data-v-8143e8da]{padding:15px;max-width:1800px;margin:0 auto}.map-header[data-v-8143e8da]{margin-bottom:20px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}.map-header h1[data-v-8143e8da]{margin:0;color:#333;font-size:1.5rem}.filter-controls[data-v-8143e8da]{display:flex;align-items:center;gap:8px}select[data-v-8143e8da]{padding:6px 10px;border:1px solid #ccc;border-radius:4px;font-size:14px}.loading[data-v-8143e8da],.error[data-v-8143e8da],.no-data[data-v-8143e8da]{padding:15px;text-align:center;margin:20px 0}.error[data-v-8143e8da]{color:#d32f2f;background-color:#ffebee}.no-data[data-v-8143e8da]{color:#757575}.terrain-grid[data-v-8143e8da]{display:grid;grid-template-columns:repeat(10,1fr);gap:10px}.terrain-item[data-v-8143e8da]{position:relative;border-radius:4px;overflow:hidden;aspect-ratio:1;transition:transform .2s}.terrain-item[data-v-8143e8da]:hover{transform:scale(1.03);z-index:1}.map-image[data-v-8143e8da]{position:relative;width:100%;height:100%}.map-image img[data-v-8143e8da]{width:100%;height:100%;object-fit:cover;border-radius:4px;box-shadow:0 2px 5px #0000001a}.image-overlay[data-v-8143e8da]{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#000000b3);padding:8px;color:#fff;display:flex;justify-content:space-between;align-items:center;opacity:0;transition:opacity .2s}.terrain-item:hover .image-overlay[data-v-8143e8da]{opacity:1}.image-name[data-v-8143e8da]{font-size:.7rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80%}.download-link[data-v-8143e8da]{color:#fff;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.download-link[data-v-8143e8da]:hover{color:#4fc3f7}.pagination-controls[data-v-8143e8da]{display:flex;justify-content:center;align-items:center;gap:20px;margin:20px 0}.pagination-controls.bottom[data-v-8143e8da]{margin-top:30px}.pagination-btn[data-v-8143e8da]{padding:8px 16px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:4px;cursor:pointer;transition:all .2s}.pagination-btn[data-v-8143e8da]:hover:not(:disabled){background:#e9ecef;border-color:#d0d0d0}.pagination-btn[data-v-8143e8da]:disabled{opacity:.5;cursor:not-allowed}.page-info[data-v-8143e8da]{font-size:.9rem;color:#666}.back-btn[data-v-8143e8da]{display:inline-flex;align-items:center;padding:8px 12px;background:#f8f9fa;border:1px solid #e0e0e0;border-radius:6px;color:#333;cursor:pointer;transition:all .2s ease;font-size:14px;margin-left:10px}.back-btn[data-v-8143e8da]:hover{background:#e9ecef;border-color:#d0d0d0}@media (max-width: 1800px){.terrain-grid[data-v-8143e8da]{grid-template-columns:repeat(8,1fr)}}@media (max-width: 1400px){.terrain-grid[data-v-8143e8da]{grid-template-columns:repeat(6,1fr)}}@media (max-width: 1000px){.terrain-grid[data-v-8143e8da]{grid-template-columns:repeat(4,1fr)}}@media (max-width: 700px){.terrain-grid[data-v-8143e8da]{grid-template-columns:repeat(3,1fr)}.map-header[data-v-8143e8da]{flex-direction:column;align-items:flex-start;gap:10px}}@media (max-width: 500px){.terrain-grid[data-v-8143e8da]{grid-template-columns:repeat(2,1fr)}.pagination-controls[data-v-8143e8da]{flex-direction:column;gap:10px}}

View File

@ -1 +0,0 @@
import{_ as f,b as n,d as s,i as g,p as m,G as y,F as h,B as u,t as l,q as P,z as o}from"./index-DGJ6dnLh.js";const _={name:"TerrainList",data(){return{terrains:[],filteredTerrains:[],loading:!1,error:null,currentPage:1,itemsPerPage:100,apiBaseUrl:"https://api.zybdatasupport.online",categoryList:[],selectedCategory:"全部"}},computed:{filteredTerrainsByCategory(){return this.selectedCategory==="全部"?this.filteredTerrains:this.filteredTerrains.filter(r=>r.key.toLowerCase().startsWith(this.selectedCategory+"_"))},totalPages(){return Math.ceil(this.filteredTerrainsByCategory.length/this.itemsPerPage)},paginatedTerrains(){const r=(this.currentPage-1)*this.itemsPerPage,e=r+this.itemsPerPage;return this.filteredTerrainsByCategory.slice(r,e)}},created(){this.fetchTerrainList()},methods:{async fetchTerrainList(){this.loading=!0,this.error=null;try{const r=await fetch(`${this.apiBaseUrl}/terrain`);if(!r.ok)throw new Error("获取地形图列表失败");const e=await r.json();this.terrains=e,this.filteredTerrains=e.filter(d=>this.isImageFile(d.key)),this.extractCategories(),this.currentPage=1}catch(r){this.error=r.message,console.error("Error fetching terrain list:",r)}finally{this.loading=!1}},extractCategories(){const r=new Set;this.filteredTerrains.forEach(e=>{const d=e.key.split("_")[0].toLowerCase();r.add(d)}),this.categoryList=["全部",...Array.from(r).sort()]},getImageUrl(r){return`http://dataimg-1307694021.cos.ap-beijing.myqcloud.com/Terrain/jpg/${r}`},isImageFile(r){const e=[".jpg",".jpeg",".png",".gif",".bmp",".webp"],d=r.toLowerCase();return e.some(c=>d.endsWith(c))},nextPage(){this.currentPage<this.totalPages&&this.currentPage++},prevPage(){this.currentPage>1&&this.currentPage--}}},p={class:"map-detail"},v={class:"map-header"},b={class:"filter-controls"},k=["value"],C={class:"pagination-controls"},T=["disabled"],w={class:"page-info"},L=["disabled"],x={key:0,class:"loading"},B={key:1,class:"error"},V={class:"map-content"},I={key:0,class:"terrain-grid"},U={class:"map-image"},j=["src","alt"],E={class:"image-overlay"},H={class:"image-name"},F=["href"],M={key:1,class:"no-data"},N={class:"pagination-controls bottom"},S=["disabled"],q={class:"page-info"},z=["disabled"];function D(r,e,d,c,a,i){return o(),n("div",p,[s("div",v,[e[8]||(e[8]=s("h1",null,"地形图列表",-1)),s("div",b,[e[7]||(e[7]=s("label",{for:"category-select"},"分类:",-1)),m(s("select",{"onUpdate:modelValue":e[0]||(e[0]=t=>a.selectedCategory=t),id:"category-select",onChange:e[1]||(e[1]=t=>a.currentPage=1)},[(o(!0),n(h,null,u(a.categoryList,t=>(o(),n("option",{key:t,value:t},l(t),9,k))),128))],544),[[y,a.selectedCategory]])])]),s("div",C,[s("button",{class:"pagination-btn",onClick:e[2]||(e[2]=(...t)=>i.prevPage&&i.prevPage(...t)),disabled:a.currentPage===1}," < 上一页 ",8,T),s("span",w,"第 "+l(a.currentPage)+" 页 / 共 "+l(i.totalPages)+" 页",1),s("button",{class:"pagination-btn",onClick:e[3]||(e[3]=(...t)=>i.nextPage&&i.nextPage(...t)),disabled:a.currentPage===i.totalPages}," 下一页 > ",8,L)]),a.loading?(o(),n("div",x,"加载中...")):g("",!0),a.error?(o(),n("div",B,[P(" 加载失败: "+l(a.error)+" ",1),s("button",{onClick:e[4]||(e[4]=(...t)=>i.fetchTerrainList&&i.fetchTerrainList(...t)),class:"back-btn"},"重试")])):g("",!0),s("div",V,[i.filteredTerrainsByCategory.length>0?(o(),n("div",I,[(o(!0),n(h,null,u(i.paginatedTerrains,t=>(o(),n("div",{key:t.key,class:"terrain-item"},[s("div",U,[s("img",{src:i.getImageUrl(t.key),alt:"地形图 "+t.key},null,8,j),s("div",E,[s("span",H,l(t.key),1),s("a",{href:i.getImageUrl(t.key),class:"download-link",download:"",title:"下载"},e[9]||(e[9]=[s("svg",{viewBox:"0 0 24 24",width:"20",height:"20"},[s("path",{fill:"white",d:"M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z"})],-1)]),8,F)])])]))),128))])):a.loading?g("",!0):(o(),n("div",M," 当前分类下没有可用的地形图数据 "))]),s("div",N,[s("button",{class:"pagination-btn",onClick:e[5]||(e[5]=(...t)=>i.prevPage&&i.prevPage(...t)),disabled:a.currentPage===1}," < 上一页 ",8,S),s("span",q,"第 "+l(a.currentPage)+" 页 / 共 "+l(i.totalPages)+" 页",1),s("button",{class:"pagination-btn",onClick:e[6]||(e[6]=(...t)=>i.nextPage&&i.nextPage(...t)),disabled:a.currentPage===i.totalPages}," 下一页 > ",8,z)])])}const A=f(_,[["render",D],["__scopeId","data-v-8143e8da"]]);export{A as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{_ as y,r as b,c as f,o as v,b as u,d as e,t as l,F as h,B as m,u as M,z as i}from"./index-DGJ6dnLh.js";import{b as C}from"./maps-oN-j_GQV.js";const z={class:"weekly-recommend"},L={class:"page-header"},N={class:"header-subtitle"},R={class:"date-range"},S={class:"table-container"},B={class:"maps-table"},W=["onClick"],$={class:"rank-number"},x={class:"preview-cell"},j=["src","alt"],E={class:"map-name"},F={class:"tags"},O={__name:"WeeklyRecommend",setup(T){const D=M(),_=b([]),p=f(()=>{const a=new Date,t=new Date;return t.setDate(t.getDate()-6),`${t.toLocaleDateString("zh-CN")} - 今天 ${a.toLocaleDateString("zh-CN")}`}),g=a=>{D.push(`/map/${a}`)},w=a=>new Date(a).toLocaleDateString("zh-CN"),k=async()=>{try{const a=await C(),t=new Date;t.setDate(t.getDate()-6);const c=a.filter(s=>new Date(s.create_time)>=t).reduce((s,o)=>{const d=new Date(o.create_time).toLocaleDateString("zh-CN");return s[d]||(s[d]=[]),s[d].push(o),s},{});Object.keys(c).forEach(s=>{c[s].sort((o,d)=>d.download_count-o.download_count)});const r=Object.keys(c).sort((s,o)=>new Date(o)-new Date(s));_.value=r.reduce((s,o)=>s.concat(c[o]),[])}catch(a){console.error("获取推荐地图失败:",a)}};return v(()=>{k()}),(a,t)=>(i(),u("div",z,[e("div",L,[t[0]||(t[0]=e("h1",null,"每周热门下载地图",-1)),e("div",N,[e("span",R,l(p.value),1)])]),e("div",S,[e("table",B,[t[1]||(t[1]=e("thead",null,[e("tr",null,[e("th",null,"序号"),e("th",null,"预览图"),e("th",null,"地图名称"),e("th",null,"作者"),e("th",null,"下载次数"),e("th",null,"收藏次数"),e("th",null,"玩家数量"),e("th",null,"创建时间"),e("th",null,"标签")])],-1)),e("tbody",null,[(i(!0),u(h,null,m(_.value,(n,c)=>(i(),u("tr",{key:n.id,onClick:r=>g(n.id),class:"table-row"},[e("td",$,l(c+1),1),e("td",x,[e("img",{src:n.thumbnail,alt:n.chinese_name},null,8,j)]),e("td",E,l(n.chinese_name),1),e("td",null,l(n.user),1),e("td",null,l(n.download_count),1),e("td",null,l(n.favourite_count),1),e("td",null,l(n.player_count),1),e("td",null,l(w(n.create_time)),1),e("td",null,[e("div",F,[(i(!0),u(h,null,m(n.tags,r=>(i(),u("span",{key:r,class:"tag"},l(r),1))),128))])])],8,W))),128))])])])]))}},V=y(O,[["__scopeId","data-v-7e5f14ab"]]);export{V as default};

View File

@ -1 +0,0 @@
.weekly-recommend{padding:20px}.header-subtitle{color:#666;font-size:.9rem}.map-name{font-weight:500;color:#1a237e}.rank-number[data-v-7e5f14ab]{font-weight:700;color:#1a237e;text-align:center;width:50px;font-size:1.1em}

View File

@ -1 +0,0 @@
import{_ as o,k as r,j as c,z as n}from"./index-DGJ6dnLh.js";const t={};function s(_,a){const e=c("router-view");return n(),r(e)}const p=o(t,[["render",s]]);export{p as default};

View File

@ -1 +0,0 @@
import{M as s}from"./index-DGJ6dnLh.js";const n=async()=>{try{return(await s.get("/map/editors")).data}catch(a){throw a}},c=async(a,r)=>{try{const o={mapname:a,reward:r};return(await s.post("/user/map/reward",o)).data}catch(o){throw console.error("提交地图评分失败:",o),o}},p=async a=>{try{return(await s.get(`/user/map/${a}`)).data}catch(r){throw console.error("获取用户地图信息失败:",r),r}},w=async a=>{try{return(await s.post(`/map/download/${a}`)).data}catch(r){throw console.error("更新用户下载地图信息失败:",r),r}},d=async a=>{try{return(await s.get(`/map/reward/${a}`)).data}catch(r){throw console.error("获取指定地图评分失败:",r),r}},i=async a=>{try{const r=new URLSearchParams(a).toString();return(await s.get(`/map/search?${r}`)).data}catch(r){throw console.error("依据条件搜索地图失败:",r),r}};export{d as a,n as b,i as c,p as g,c as s,w as u};

View File

@ -1 +0,0 @@
import{M as t}from"./index-DGJ6dnLh.js";const a=async()=>{try{return(await t.get("/demands/getlist")).data}catch(r){throw console.error("获取需求列表失败:",r),r}},c=async r=>{try{const e={...r,content:r.content},o=await t.post("/demands/add",e);return console.log("添加需求的数据:",e),o.data}catch(e){throw console.error("添加需求失败:",e),e}},d=async(r,e)=>{try{const o={...e,content:e.content};return console.log("更新需求的数据:",o),(await t.put(`/demands/update/${r}`,o)).data}catch(o){throw console.error("更新需求失败:",o),o}},l=async r=>{try{return(await t.delete(`/demands/delete/${r}`)).data}catch(e){throw console.error("删除需求失败:",e),e}},p=async(r,e)=>{try{const o={id:r,reply:e.reply};return console.log("添加需求回复的数据:",o),(await t.put("/demands/reply",o)).data}catch(o){throw console.error("添加需求回复失败:",o),o}};export{p as a,c as b,l as d,a as g,d as u};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
import{M as o,O as c}from"./index-DGJ6dnLh.js";const i=async()=>{try{return(await o.get("/captcha")).data}catch(r){throw r}},p=async(r,t,e,a)=>{try{const s=await o.post("/user/login",{username:r,password:t,token:e,captcha:a});return s.data.access_token&&c(s.data.access_token,r),s.data}catch(s){throw s}},g=async(r,t,e,a)=>{try{return(await o.post("/user/register",{qq_code:r,password:t,token:e,captcha:a})).data}catch(s){throw s}},d=async(r,t)=>{try{await o.put("/admin/change_user_privilege",{uuid:r,privilege:t})}catch(e){throw e}},h=async r=>{try{console.log("申请的权限【requestTempPrivilege】privilege:",r),await o.post("/user/temp_privilege_request",{privilege:r})}catch(t){throw t}},u=async(r,t,e)=>{try{const a={uuid:r,privilege:t};e!=null&&e!==""&&(a.exp_time=e),await o.post("/admin/add_temp_privilege",a)}catch(a){throw a}};export{g as a,d as b,u as c,i as g,h as r,p as u};

Binary file not shown.

Before

Width:  |  Height:  |  Size: 952 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -1 +0,0 @@
import{J as e}from"./index-DGJ6dnLh.js";const s="https://ra3.z31.xyz/v1",c=async(r={})=>{try{return(await e.get(`${s}/maps/`,{params:{p:r.page||1,search:r.search||"",player_count:r.player_count||"",tags:r.tags||"",ordering:r.ordering||""}})).data}catch(t){throw console.error("获取地图列表失败:",t),t}},p=async(r={})=>{try{return(await e.get(`${s}/maps/`,{params:{p:r.page||1,format:"json",ordering:r.ordering||""}})).data.results}catch(t){throw console.error("获取地图列表失败:",t),t}},g=async r=>{try{return(await e.get(`${s}/maps/${r}/`)).data}catch(t){throw console.error("获取地图详情失败:",t),t}},h=async()=>{try{const r=await e.get(`${s}/maps/`),t=new Set;return r.data.results.forEach(o=>{o.tags.forEach(a=>t.add(a))}),Array.from(t)}catch(r){throw console.error("获取标签列表失败:",r),r}};export{c as a,p as b,g as c,h as g};

View File

@ -1 +0,0 @@
import{M as r}from"./index-DGJ6dnLh.js";const c=async s=>{var e,n;try{return(await r.post("/tournament/add",s)).data}catch(t){throw console.error("添加赛事失败:",{status:(e=t.response)==null?void 0:e.status,data:(n=t.response)==null?void 0:n.data,message:t.message}),t}},m=async()=>{var s,e;try{return(await r.get("/tournament/getlist")).data}catch(n){throw console.error("获取赛事列表失败:",{status:(s=n.response)==null?void 0:s.status,data:(e=n.response)==null?void 0:e.data,message:n.message}),n}},i=async(s,e)=>{var n;try{return console.log("更新赛事,发送数据:",e),(await r.put(`/tournament/update/${s}`,{name:e.name,format:e.format,organizer:e.organizer,qq_code:e.qq_code,start_time:e.start_time,end_time:e.end_time,status:e.status})).data}catch(t){throw console.error("更新赛事失败:",t),t.response&&(console.error("错误详情:",{status:t.response.status,data:t.response.data,headers:t.response.headers,config:t.config}),(n=t.response.data)!=null&&n.detail)?new Error(t.response.data.detail):t}},l=async s=>{try{return(await r.delete(`/tournament/delete/${s}`)).data}catch(e){throw console.error("删除赛事失败:",e),e}},p=async()=>{var s,e;try{return(await r.get("/tournament/signup_result/getlist")).data}catch(n){throw console.error("获取参赛结果列表失败:",{status:(s=n.response)==null?void 0:s.status,data:(e=n.response)==null?void 0:e.data,message:n.message}),n}},g=async(s,e)=>{var n,t;try{return console.log("更新报名结果..."),await r.put(`/tournament/signup_result/update/${s}`,{tournament_id:parseInt(e.tournament_id),tournament_name:e.tournament_name,team_name:e.team_name||null,sign_name:e.sign_name,win:e.win||"0",lose:e.lose||"0",status:e.status||"tie"}),console.log("报名结果更新成功"),{success:!0}}catch(o){throw console.error("更新参赛结果失败:",{status:(n=o.response)==null?void 0:n.status,data:(t=o.response)==null?void 0:t.data,message:o.message}),o}},d=async s=>{var e,n;try{return console.log("删除报名结果..."),await r.delete(`/tournament/signup_result/delete/${s}`),console.log("报名结果删除成功"),{success:!0}}catch(t){throw console.error("删除参赛选手失败:",{status:(e=t.response)==null?void 0:e.status,data:(n=t.response)==null?void 0:n.data,message:t.message}),t}},_=async s=>{var e,n,t,o;try{return console.log("开始报名流程,数据:",s),console.log("调用报名 API..."),await r.post("/tournament/signup/add",{tournament_id:s.id,type:s.type,teamname:s.team_name||"",faction:s.faction||"random",username:s.sign_name,qq:s.qq||""}),console.log("报名 API 调用成功"),console.log("调用报名结果 API..."),await r.post("/tournament/signup_result/add",{tournament_id:s.id,tournament_name:s.tournament_name,team_name:s.team_name||null,sign_name:s.sign_name,win:"0",lose:"0",status:"tie"}),console.log("报名结果 API 调用成功"),{signup:{success:!0},result:{success:!0}}}catch(a){throw console.error("报名请求错误:",{message:a.message,response:(e=a.response)==null?void 0:e.data,status:(n=a.response)==null?void 0:n.status,config:a.config}),(o=(t=a.response)==null?void 0:t.data)!=null&&o.detail?new Error(a.response.data.detail):new Error("报名失败,请检查网络连接后重试")}};export{c as a,_ as b,p as c,i as d,l as e,d as f,m as g,g as u};

BIN
dist/favicon.ico vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

15
dist/index.html vendored
View File

@ -1,15 +0,0 @@
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<title>红色警戒3数据分析中心</title>
<script type="module" crossorigin src="/assets/index-DGJ6dnLh.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-BE0BzS9Q.css">
</head>
<body>
<div id="app"></div>
</body>
</html>

View File

@ -2,6 +2,7 @@
export {};
; declare global {
const __VLS_intrinsicElements: __VLS_IntrinsicElements;
const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
const __VLS_unref: typeof import('vue').unref;
const __VLS_placeholder: any;
@ -23,31 +24,10 @@ export {};
N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N2] } :
N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N3] } :
{ [K in N0]: unknown };
type __VLS_FunctionalComponentCtx<T, K> = __VLS_PickNotAny<'__ctx' extends keyof __VLS_PickNotAny<K, {}>
? K extends { __ctx?: infer Ctx } ? NonNullable<Ctx> : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>;
type __VLS_FunctionalComponentProps<T, K> = '__ctx' extends keyof __VLS_PickNotAny<K, {}>
? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
: T extends (props: infer P, ...args: any) => any ? P
: {};
type __VLS_FunctionalComponent<T> = (props: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
__ctx?: {
attrs?: any,
slots?: T extends { $slots: infer Slots } ? Slots : Record<string, any>,
emit?: T extends { $emit: infer Emit } ? Emit : {},
props?: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>,
expose?: (exposed: T) => void,
}
};
type __VLS_NormalizeSlotReturns<S, R = NonNullable<S> extends (...args: any) => infer K ? K : any> = R extends any[] ? {
[K in keyof R]: R[K] extends infer V
? V extends Element ? V
: V extends new (...args: any) => infer R ? ReturnType<__VLS_FunctionalComponent<R>>
: V extends (...args: any) => infer R ? R
: any
: never
} : R;
type __VLS_FunctionalComponentProps<T, K> =
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
: T extends (props: infer P, ...args: any) => any ? P :
{};
type __VLS_IsFunction<T, K> = K extends keyof T
? __VLS_IsAny<T[K]> extends false
? unknown extends T[K]
@ -55,13 +35,13 @@ export {};
: true
: false
: false;
type __VLS_NormalizeComponentEvent<Props, Emits, onEvent extends keyof Props, Event extends keyof Emits, CamelizedEvent extends keyof Emits> = (
type __VLS_NormalizeComponentEvent<Props, Events, onEvent extends keyof Props, Event extends keyof Events, CamelizedEvent extends keyof Events> = (
__VLS_IsFunction<Props, onEvent> extends true
? Props
: __VLS_IsFunction<Emits, Event> extends true
? { [K in onEvent]?: Emits[Event] }
: __VLS_IsFunction<Emits, CamelizedEvent> extends true
? { [K in onEvent]?: Emits[CamelizedEvent] }
: __VLS_IsFunction<Events, Event> extends true
? { [K in onEvent]?: Events[Event] }
: __VLS_IsFunction<Events, CamelizedEvent> extends true
? { [K in onEvent]?: Events[CamelizedEvent] }
: Props
) & Record<string, unknown>;
// fix https://github.com/vuejs/language-tools/issues/926
@ -87,16 +67,14 @@ export {};
}
>
>;
type __VLS_ResolveEmits<
Comp,
Emits,
TypeEmits = {},
NormalizedEmits = __VLS_NormalizeEmits<Emits> extends infer E ? string extends keyof E ? {} : E : never,
> = __VLS_SpreadMerge<NormalizedEmits, TypeEmits>;
type __VLS_ResolveDirectives<T> = {
[K in Exclude<keyof T, keyof __VLS_GlobalDirectives> & string as `v${Capitalize<K>}`]: T[K];
type __VLS_PrettifyGlobal<T> = { [K in keyof T]: T[K]; } & {};
type __VLS_PickFunctionalComponentCtx<T, K> = NonNullable<__VLS_PickNotAny<
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>>;
type __VLS_OmitStringIndex<T> = {
[K in keyof T as string extends K ? never : K]: T[K];
};
type __VLS_PrettifyGlobal<T> = { [K in keyof T as K]: T[K]; } & {};
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
@ -112,8 +90,10 @@ export {};
key: keyof T,
index: number,
][];
function __VLS_getSlotParameters<S, D extends S>(slot: S, decl?: D):
__VLS_PickNotAny<NonNullable<D>, (...args: any) => any> extends (...args: infer P) => any ? P : any[];
// @ts-ignore
function __VLS_getSlotParams<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>;
// @ts-ignore
function __VLS_getSlotParam<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>[0];
function __VLS_asFunctionalDirective<T>(dir: T): T extends import('vue').ObjectDirective
? NonNullable<T['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>
: T extends (...args: any) => any
@ -121,12 +101,21 @@ export {};
: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] };
function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
T extends new (...args: any) => any ? __VLS_FunctionalComponent<K>
T extends new (...args: any) => any
? (props: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
__ctx?: {
attrs?: any;
slots?: K extends { $slots: infer Slots } ? Slots : any;
emit?: K extends { $emit: infer Emit } ? Emit : any;
expose?(exposed: K): void;
props?: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>;
}
}
: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>
: T extends (...args: any) => any ? T
: __VLS_FunctionalComponent<{}>;
: (_: {} & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record<string, unknown> } };
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
function __VLS_asFunctionalSlot<S>(slot: S): (props: NonNullable<S> extends (props: infer P) => any ? P : {}) => void;
function __VLS_tryAsConstant<const T>(t: T): T;
}

View File

@ -2,6 +2,7 @@
export {};
; declare global {
const __VLS_intrinsicElements: __VLS_IntrinsicElements;
const __VLS_directiveBindingRestFields: { instance: null, oldValue: null, modifiers: any, dir: any };
const __VLS_unref: typeof import('vue').unref;
const __VLS_placeholder: any;
@ -23,31 +24,10 @@ export {};
N2 extends keyof __VLS_GlobalComponents ? N2 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N2] } :
N3 extends keyof __VLS_GlobalComponents ? N3 extends N0 ? Pick<__VLS_GlobalComponents, N0 extends keyof __VLS_GlobalComponents ? N0 : never> : { [K in N0]: __VLS_GlobalComponents[N3] } :
{ [K in N0]: unknown };
type __VLS_FunctionalComponentCtx<T, K> = __VLS_PickNotAny<'__ctx' extends keyof __VLS_PickNotAny<K, {}>
? K extends { __ctx?: infer Ctx } ? NonNullable<Ctx> : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>;
type __VLS_FunctionalComponentProps<T, K> = '__ctx' extends keyof __VLS_PickNotAny<K, {}>
? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
: T extends (props: infer P, ...args: any) => any ? P
: {};
type __VLS_FunctionalComponent<T> = (props: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
__ctx?: {
attrs?: any,
slots?: T extends { $slots: infer Slots } ? Slots : Record<string, any>,
emit?: T extends { $emit: infer Emit } ? Emit : {},
props?: (T extends { $props: infer Props } ? Props : {}) & Record<string, unknown>,
expose?: (exposed: T) => void,
}
};
type __VLS_NormalizeSlotReturns<S, R = NonNullable<S> extends (...args: any) => infer K ? K : any> = R extends any[] ? {
[K in keyof R]: R[K] extends infer V
? V extends Element ? V
: V extends new (...args: any) => infer R ? ReturnType<__VLS_FunctionalComponent<R>>
: V extends (...args: any) => infer R ? R
: any
: never
} : R;
type __VLS_FunctionalComponentProps<T, K> =
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: { props?: infer P } } ? NonNullable<P> : never
: T extends (props: infer P, ...args: any) => any ? P :
{};
type __VLS_IsFunction<T, K> = K extends keyof T
? __VLS_IsAny<T[K]> extends false
? unknown extends T[K]
@ -55,13 +35,13 @@ export {};
: true
: false
: false;
type __VLS_NormalizeComponentEvent<Props, Emits, onEvent extends keyof Props, Event extends keyof Emits, CamelizedEvent extends keyof Emits> = (
type __VLS_NormalizeComponentEvent<Props, Events, onEvent extends keyof Props, Event extends keyof Events, CamelizedEvent extends keyof Events> = (
__VLS_IsFunction<Props, onEvent> extends true
? Props
: __VLS_IsFunction<Emits, Event> extends true
? { [K in onEvent]?: Emits[Event] }
: __VLS_IsFunction<Emits, CamelizedEvent> extends true
? { [K in onEvent]?: Emits[CamelizedEvent] }
: __VLS_IsFunction<Events, Event> extends true
? { [K in onEvent]?: Events[Event] }
: __VLS_IsFunction<Events, CamelizedEvent> extends true
? { [K in onEvent]?: Events[CamelizedEvent] }
: Props
) & Record<string, unknown>;
// fix https://github.com/vuejs/language-tools/issues/926
@ -87,16 +67,14 @@ export {};
}
>
>;
type __VLS_ResolveEmits<
Comp,
Emits,
TypeEmits = Comp extends { __typeEmits?: infer T } ? unknown extends T ? {} : import('vue').ShortEmitsToObject<T> : {},
NormalizedEmits = __VLS_NormalizeEmits<Emits> extends infer E ? string extends keyof E ? {} : E : never,
> = __VLS_SpreadMerge<NormalizedEmits, TypeEmits>;
type __VLS_ResolveDirectives<T> = {
[K in Exclude<keyof T, keyof __VLS_GlobalDirectives> & string as `v${Capitalize<K>}`]: T[K];
type __VLS_PrettifyGlobal<T> = { [K in keyof T]: T[K]; } & {};
type __VLS_PickFunctionalComponentCtx<T, K> = NonNullable<__VLS_PickNotAny<
'__ctx' extends keyof __VLS_PickNotAny<K, {}> ? K extends { __ctx?: infer Ctx } ? Ctx : never : any
, T extends (props: any, ctx: infer Ctx) => any ? Ctx : any
>>;
type __VLS_OmitStringIndex<T> = {
[K in keyof T as string extends K ? never : K]: T[K];
};
type __VLS_PrettifyGlobal<T> = { [K in keyof T as K]: T[K]; } & {};
type __VLS_UseTemplateRef<T> = Readonly<import('vue').ShallowRef<T | null>>;
function __VLS_getVForSourceType<T extends number | string | any[] | Iterable<any>>(source: T): [
@ -112,8 +90,10 @@ export {};
key: keyof T,
index: number,
][];
function __VLS_getSlotParameters<S, D extends S>(slot: S, decl?: D):
__VLS_PickNotAny<NonNullable<D>, (...args: any) => any> extends (...args: infer P) => any ? P : any[];
// @ts-ignore
function __VLS_getSlotParams<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>;
// @ts-ignore
function __VLS_getSlotParam<T>(slot: T): Parameters<__VLS_PickNotAny<NonNullable<T>, (...args: any[]) => any>>[0];
function __VLS_asFunctionalDirective<T>(dir: T): T extends import('vue').ObjectDirective
? NonNullable<T['created' | 'beforeMount' | 'mounted' | 'beforeUpdate' | 'updated' | 'beforeUnmount' | 'unmounted']>
: T extends (...args: any) => any
@ -121,12 +101,21 @@ export {};
: (arg1: unknown, arg2: unknown, arg3: unknown, arg4: unknown) => void;
function __VLS_makeOptional<T>(t: T): { [K in keyof T]?: T[K] };
function __VLS_asFunctionalComponent<T, K = T extends new (...args: any) => any ? InstanceType<T> : unknown>(t: T, instance?: K):
T extends new (...args: any) => any ? __VLS_FunctionalComponent<K>
T extends new (...args: any) => any
? (props: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>, ctx?: any) => __VLS_Element & {
__ctx?: {
attrs?: any;
slots?: K extends { $slots: infer Slots } ? Slots : any;
emit?: K extends { $emit: infer Emit } ? Emit : any;
expose?(exposed: K): void;
props?: (K extends { $props: infer Props } ? Props : any) & Record<string, unknown>;
}
}
: T extends () => any ? (props: {}, ctx?: any) => ReturnType<T>
: T extends (...args: any) => any ? T
: __VLS_FunctionalComponent<{}>;
: (_: {} & Record<string, unknown>, ctx?: any) => { __ctx?: { attrs?: any, expose?: any, slots?: any, emit?: any, props?: {} & Record<string, unknown> } };
function __VLS_functionalComponentArgsRest<T extends (...args: any) => any>(t: T): 2 extends Parameters<T>['length'] ? [any] : [];
function __VLS_asFunctionalElement<T>(tag: T, endTag?: T): (attrs: T & Record<string, unknown>) => void;
function __VLS_asFunctionalSlot<S>(slot: S): S extends () => infer R ? (props: {}) => R : NonNullable<S>;
function __VLS_asFunctionalSlot<S>(slot: S): (props: NonNullable<S> extends (props: infer P) => any ? P : {}) => void;
function __VLS_tryAsConstant<const T>(t: T): T;
}