2 lines
17 KiB
JavaScript
2 lines
17 KiB
JavaScript
var e=Object.defineProperty,l=Object.defineProperties,a=Object.getOwnPropertyDescriptors,t=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,o=Object.prototype.propertyIsEnumerable,s=(l,a,t)=>a in l?e(l,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[a]=t,n=(e,l)=>{for(var a in l||(l={}))i.call(l,a)&&s(e,a,l[a]);if(t)for(var a of t(l))o.call(l,a)&&s(e,a,l[a]);return e},d=(e,l,a)=>new Promise((t,i)=>{var o=e=>{try{n(a.next(e))}catch(l){i(l)}},s=e=>{try{n(a.throw(e))}catch(l){i(l)}},n=e=>e.done?t(e.value):Promise.resolve(e.value).then(o,s);n((a=a.apply(e,l)).next())});import{d as u,r,o as m,b as p,e as c,g as _,w as f,f as v,j as h,K as b,I as y,J as w,v as g,h as j,i as V,ai as x,p as k,b3 as U,E,ba as O,T as z}from"./index-BoIUJTA2.js";/* empty css */import{a as H,E as P}from"./el-tab-pane-BpPSIX41.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import"./el-tooltip-l0sNRNKZ.js";/* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css *//* empty css */import{l as N,u as S}from"./configs-BgITfp3i.js";import{f as I}from"./product-qKpGgPBm.js";import{c as J}from"./coupons-tpfgWUoF.js";import{a as A,E as L}from"./index-BcfO0-fK.js";import{E as C}from"./index-dBzz0k3i.js";import{E as D}from"./index-Dy3gZN7-.js";import{E as F}from"./index-C_sVHlWz.js";import{E as K}from"./index-CXD7B41Z.js";import{E as T}from"./index-C_S0YbqD.js";import{E as $,a as G}from"./index-BjuMygln.js";import{E as M}from"./index-rgHg98E6.js";import{E as Q,a as R}from"./index-D2gD5Tn5.js";import{E as W}from"./index-ZsMdSUVI.js";import{E as Y}from"./index-BaD29Izp.js";import{_ as q}from"./_plugin-vue_export-helper-BCo6x5W8.js";import"./raf-DsHSIRfX.js";import"./_initCloneObject-DRmC-q3t.js";import"./clamp-BXzPLned.js";import"./debounce-DQl5eUwG.js";import"./index-C0Ar9TSn.js";import"./_baseClone-Ct7RL6h5.js";import"./castArray-nM8ho4U3.js";import"./index-Bq8lawOo.js";import"./index-BnK4BbY2.js";import"./index-Cp4NEpJ7.js";import"./index-BMeOzN3u.js";import"./index-COyGylbk.js";import"./isArrayLikeObject-CFQi-X2M.js";import"./_baseIteratee-CtIat01j.js";import"./index-D8nVJoNy.js";import"./index-CXORCV4U.js";import"./token-DWNpOE8r.js";const B={class:"page-container"},X={class:"card-header"},Z={class:"header-left"},ee={class:"tab-content"},le={class:"tab-content"},ae={class:"tab-content"},te={class:"role-grid"},ie={class:"role-icon"},oe={class:"role-info"},se={class:"role-name"},ne={class:"role-skill"},de={class:"role-hp"},ue={class:"tab-content"},re={class:"font-bold"},me={class:"tab-content"},pe={class:"product-option"},ce=["src"],_e={class:"product-price"},fe={class:"product-option"},ve=["src"],he={class:"product-price"},be={class:"product-option"},ye={class:"product-price"},we={class:"alert-info mt-4"},ge={class:"tab-content"},je={class:"json-preview"},Ve="game_minesweeper_config",xe=q(u({__name:"index",setup(e){const t=r("board"),i=r(!1),o=r(!1),s=r([]),u=r(!1),q=r([]),xe=[{type:"medkit",name:"医疗包",desc:"恢复1点血量"},{type:"bomb_timer",name:"定时炸弹",desc:"3步后爆炸"},{type:"poison",name:"剧毒",desc:"中毒后每2步扣1血"},{type:"shield",name:"护盾",desc:"抵挡一次伤害"},{type:"skip",name:"好人卡",desc:"跳过本轮并获得护盾"},{type:"magnifier",name:"放大镜",desc:"透视一格的内容"},{type:"knife",name:"飞刀",desc:"对一名对手造成伤害"},{type:"revive",name:"复活甲",desc:"死亡时原地复活1血"},{type:"lightning",name:"雷击",desc:"对所有玩家造成1点伤害"},{type:"chest",name:"宝箱",desc:"获得指定优惠券"},{type:"curse",name:"诅咒",desc:"下次受到伤害翻倍"}],ke=[{type:"elephant",name:"大象",icon:"🐘",skill:"血厚:5点生命,但不能用医疗/复活/跳过",defaultHp:5},{type:"cat",name:"猫",icon:"🐱",skill:"灵动:单次受害强制为1",defaultHp:3},{type:"dog",name:"狗",icon:"🐶",skill:"嗅觉:每隔几轮自动透视一格",defaultHp:4},{type:"monkey",name:"猴子",icon:"🐵",skill:"采摘:每轮有概率回1血(限2次)",defaultHp:4},{type:"chicken",name:"小鸡",icon:"🐔",skill:"应激:受创时有概率得防御道具(限2次)",defaultHp:4},{type:"sloth",name:"树懒",icon:"🦥",skill:"慵懒:免疫中毒,炸弹伤害减半",defaultHp:4},{type:"hippo",name:"河马",icon:"🦛",skill:"顽强:存活时不能捡道具,死时有概率复活",defaultHp:4},{type:"tiger",name:"老虎",icon:"🐯",skill:"猛击:飞刀伤害+1并变为群体",defaultHp:4}],Ue=r({grid_size:10,bomb_count:30,item_min:5,item_max:10,winner_reward_points:100,participation_reward_points:10,winner_reward_product_id:null,participation_reward_product_id:null,rule_desc:"1. 每位角色拥有独特的初始血量和技能\n2. 捡到道具自动使用\n3. 点击炸弹扣除2点血量\n4. 坚持到最后即获胜",enabled_items:{},item_weights:{},character_hp:{},client_url:"https://game.1024tool.vip",server:"",key:"",match_player_count:2,turn_duration:15,chest_coupon_id:null});xe.forEach(e=>{Ue.value.enabled_items[e.type]=!0,Ue.value.item_weights[e.type]=10}),ke.forEach(e=>{Ue.value.character_hp[e.type]=e.defaultHp});const Ee=e=>d(this,null,function*(){if(e){o.value=!0;try{const l=yield I({name:e,page:1,page_size:50,status:1});s.value=l.list.map(e=>{let l="";if(e.images_json)try{const a=JSON.parse(e.images_json);a&&a.length>0&&(l=a[0])}catch(a){}return{id:e.id,name:e.name,price:e.price,image:l}})}catch(l){}finally{o.value=!1}}else s.value=[]}),Oe=e=>d(this,null,function*(){u.value=!0;try{const l=yield J.getList({name:e,page:1,page_size:50,status:1});q.value=l.list||[]}catch(l){}finally{u.value=!1}}),ze=()=>d(this,null,function*(){try{const i=(yield N(Ve,1,1)).list.find(e=>e.key===Ve);if(i&&i.value)try{const t=JSON.parse(i.value),o=xe.map(e=>e.type),d={},u={};o.forEach(e=>{var l,a,i,o,s,n;d[e]=null==(i=null!=(a=null==(l=t.enabled_items)?void 0:l[e])?a:Ue.value.enabled_items[e])||i,u[e]=null!=(n=null!=(s=null==(o=t.item_weights)?void 0:o[e])?s:Ue.value.item_weights[e])?n:10});const r=ke.map(e=>e.type),m={};r.forEach(e=>{var l,a,i,o,s;const n=null!=(a=null==(l=ke.find(l=>l.type===e))?void 0:l.defaultHp)?a:4;m[e]=null!=(s=null!=(o=null==(i=t.character_hp)?void 0:i[e])?o:Ue.value.character_hp[e])?s:n}),Ue.value=(e=n(n({},Ue.value),t),l(e,a({enabled_items:d,item_weights:u,character_hp:m})));const p=[];if(Ue.value.winner_reward_product_id&&p.push(Ue.value.winner_reward_product_id),Ue.value.participation_reward_product_id&&p.push(Ue.value.participation_reward_product_id),p.length>0){const e=yield I({page:1,page_size:100,status:1});s.value=e.list.map(e=>{let l="";if(e.images_json)try{const a=JSON.parse(e.images_json);a&&a.length>0&&(l=a[0])}catch(a){}return{id:e.id,name:e.name,price:e.price,image:l}})}if(Ue.value.chest_coupon_id){const e=yield J.getList({page:1,page_size:50,status:1});q.value=e.list||[]}}catch(t){}}catch(i){}var e}),He=()=>d(this,null,function*(){i.value=!0;try{const e=JSON.stringify(Ue.value);yield S(Ve,e,"扫雷游戏参数配置(分签)"),z.success("配置已保存")}catch(e){z.error("保存失败")}finally{i.value=!1}});return m(()=>{ze()}),(e,l)=>{const a=W,n=x,d=E,r=C,m=D,z=b,N=L,S=A,I=P,J=T,Ve=K,ze=F,Pe=G,Ne=M,Se=$,Ie=R,Je=Q,Ae=H,Le=Y;return c(),p("div",B,[_(Le,{class:"box-card main-card"},{header:f(()=>[v("div",X,[v("div",Z,[l[17]||(l[17]=v("span",{class:"title"},"扫雷游戏参数配置",-1)),_(a,{type:"info",size:"small",class:"ml-2"},{default:f(()=>[...l[16]||(l[16]=[h("全局模板",-1)])]),_:1})]),_(d,{type:"primary",loading:i.value,onClick:He,class:"save-btn"},{default:f(()=>[_(n,null,{default:f(()=>[_(k(O))]),_:1}),l[18]||(l[18]=h(" 保存全部配置 ",-1))]),_:1},8,["loading"])])]),default:f(()=>[_(Ae,{modelValue:t.value,"onUpdate:modelValue":l[15]||(l[15]=e=>t.value=e),class:"config-tabs"},{default:f(()=>[_(I,{label:"服务器配置",name:"server"},{default:f(()=>[v("div",ee,[_(S,{model:Ue.value,"label-width":"140px"},{default:f(()=>[_(r,{title:"注意:此处配置将覆盖系统默认设置",type:"warning","show-icon":"",closable:!1,class:"mb-4"}),_(m,{"content-position":"left"},{default:f(()=>[...l[19]||(l[19]=[h("客户端链接",-1)])]),_:1}),_(N,{label:"游戏大厅/客户端URL"},{default:f(()=>[_(z,{modelValue:Ue.value.client_url,"onUpdate:modelValue":l[0]||(l[0]=e=>Ue.value.client_url=e),placeholder:"例如: https://game.1024tool.vip",class:"full-width"},null,8,["modelValue"]),l[20]||(l[20]=v("div",{class:"hint"},"小程序将跳转到此地址加载游戏资源",-1))]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[21]||(l[21]=[h("Nakama 服务端",-1)])]),_:1}),_(N,{label:"服务器地址 (Host)"},{default:f(()=>[_(z,{modelValue:Ue.value.server,"onUpdate:modelValue":l[1]||(l[1]=e=>Ue.value.server=e),placeholder:"例如: wss://nakama.yourdomain.com",class:"full-width"},null,8,["modelValue"]),l[22]||(l[22]=v("div",{class:"hint"},"Nakama 服务器的 WebSocket 地址",-1))]),_:1}),_(N,{label:"服务器密钥 (Key)"},{default:f(()=>[_(z,{modelValue:Ue.value.key,"onUpdate:modelValue":l[2]||(l[2]=e=>Ue.value.key=e),placeholder:"defaultkey",class:"full-width"},null,8,["modelValue"]),l[23]||(l[23]=v("div",{class:"hint"},"Nakama 服务器的连接密钥",-1))]),_:1})]),_:1},8,["model"])])]),_:1}),_(I,{label:"棋盘与规则",name:"board"},{default:f(()=>[v("div",le,[_(S,{model:Ue.value,"label-width":"140px"},{default:f(()=>[_(m,{"content-position":"left"},{default:f(()=>[...l[24]||(l[24]=[h("地图设定",-1)])]),_:1}),_(ze,{gutter:40},{default:f(()=>[_(Ve,{span:12},{default:f(()=>[_(N,{label:"网格大小"},{default:f(()=>[_(J,{modelValue:Ue.value.grid_size,"onUpdate:modelValue":l[3]||(l[3]=e=>Ue.value.grid_size=e),min:5,max:20,class:"full-width"},null,8,["modelValue"]),l[25]||(l[25]=v("div",{class:"hint"},"默认 10 (10x10 = 100格)",-1))]),_:1})]),_:1}),_(Ve,{span:12},{default:f(()=>[_(N,{label:"炸弹数量"},{default:f(()=>[_(J,{modelValue:Ue.value.bomb_count,"onUpdate:modelValue":l[4]||(l[4]=e=>Ue.value.bomb_count=e),min:1,max:100,class:"full-width"},null,8,["modelValue"]),l[26]||(l[26]=v("div",{class:"hint"},"建议值 20-35",-1))]),_:1})]),_:1}),_(Ve,{span:12},{default:f(()=>[_(N,{label:"每回合时长(秒)"},{default:f(()=>[_(J,{modelValue:Ue.value.turn_duration,"onUpdate:modelValue":l[5]||(l[5]=e=>Ue.value.turn_duration=e),min:5,max:60,class:"full-width"},null,8,["modelValue"]),l[27]||(l[27]=v("div",{class:"hint"},"默认 15 秒",-1))]),_:1})]),_:1})]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[28]||(l[28]=[h("文本说明 (APP端展示)",-1)])]),_:1}),_(N,{label:"规则描述"},{default:f(()=>[_(z,{modelValue:Ue.value.rule_desc,"onUpdate:modelValue":l[6]||(l[6]=e=>Ue.value.rule_desc=e),type:"textarea",rows:8,placeholder:"请输入游戏规则..."},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1}),_(I,{label:"玩家与角色",name:"players"},{default:f(()=>[v("div",ae,[_(S,{model:Ue.value,"label-width":"140px"},{default:f(()=>[_(m,{"content-position":"left"},{default:f(()=>[...l[29]||(l[29]=[h("匹配设定",-1)])]),_:1}),_(N,{label:"匹配人数"},{default:f(()=>[_(J,{modelValue:Ue.value.match_player_count,"onUpdate:modelValue":l[7]||(l[7]=e=>Ue.value.match_player_count=e),min:2,max:10},null,8,["modelValue"]),l[30]||(l[30]=v("div",{class:"hint"},"需要多少人才能开始游戏(默认 2 人)",-1))]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[31]||(l[31]=[h("角色库管理",-1)])]),_:1}),v("div",te,[(c(),p(y,null,w(ke,e=>v("div",{key:e.type,class:"role-card"},[v("div",ie,g(e.icon),1),v("div",oe,[v("div",se,g(e.name),1),v("div",ne,g(e.skill),1),v("div",de,[l[32]||(l[32]=v("span",{class:"hp-label"},"血量:",-1)),_(J,{modelValue:Ue.value.character_hp[e.type],"onUpdate:modelValue":l=>Ue.value.character_hp[e.type]=l,min:1,max:10,size:"small"},null,8,["modelValue","onUpdate:modelValue"])])])])),64))])]),_:1},8,["model"])])]),_:1}),_(I,{label:"道具库管理",name:"items"},{default:f(()=>[v("div",ue,[_(S,{model:Ue.value,"label-width":"140px"},{default:f(()=>[_(m,{"content-position":"left"},{default:f(()=>[...l[33]||(l[33]=[h("道具总量范围",-1)])]),_:1}),_(ze,{gutter:40},{default:f(()=>[_(Ve,{span:12},{default:f(()=>[_(N,{label:"每局最少个数"},{default:f(()=>[_(J,{modelValue:Ue.value.item_min,"onUpdate:modelValue":l[8]||(l[8]=e=>Ue.value.item_min=e),min:0,max:50,class:"full-width"},null,8,["modelValue"])]),_:1})]),_:1}),_(Ve,{span:12},{default:f(()=>[_(N,{label:"每局最多个数"},{default:f(()=>[_(J,{modelValue:Ue.value.item_max,"onUpdate:modelValue":l[9]||(l[9]=e=>Ue.value.item_max=e),min:0,max:50,class:"full-width"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[34]||(l[34]=[h("具体道具开关",-1)])]),_:1}),_(Se,{data:xe,border:"",style:{width:"100%"},size:"small"},{default:f(()=>[_(Pe,{label:"道具名称",width:"120"},{default:f(e=>[v("span",re,g(e.row.name),1)]),_:1}),_(Pe,{label:"技能描述",prop:"desc"}),_(Pe,{label:"启用状态",width:"100",align:"center"},{default:f(e=>[_(Ne,{modelValue:Ue.value.enabled_items[e.row.type],"onUpdate:modelValue":l=>Ue.value.enabled_items[e.row.type]=l},null,8,["modelValue","onUpdate:modelValue"])]),_:1}),_(Pe,{label:"生成权重",width:"150",align:"center"},{default:f(e=>[_(J,{modelValue:Ue.value.item_weights[e.row.type],"onUpdate:modelValue":l=>Ue.value.item_weights[e.row.type]=l,min:1,max:100,size:"small"},null,8,["modelValue","onUpdate:modelValue"])]),_:1})]),_:1})]),_:1},8,["model"])])]),_:1}),_(I,{label:"奖励设定",name:"rewards"},{default:f(()=>[v("div",me,[_(S,{model:Ue.value,"label-width":"140px"},{default:f(()=>[_(m,{"content-position":"left"},{default:f(()=>[...l[35]||(l[35]=[h("获胜奖励 (商城奖品)",-1)])]),_:1}),_(N,{label:"奖品选择"},{default:f(()=>[_(Je,{modelValue:Ue.value.winner_reward_product_id,"onUpdate:modelValue":l[10]||(l[10]=e=>Ue.value.winner_reward_product_id=e),filterable:"",remote:"",clearable:"",placeholder:"搜索商城商品 (中奖后进入待发货)","remote-method":Ee,loading:o.value,class:"full-width"},{default:f(()=>[(c(!0),p(y,null,w(s.value,e=>(c(),j(Ie,{key:e.id,label:e.name,value:e.id},{default:f(()=>[v("div",pe,[e.image?(c(),p("img",{key:0,src:e.image,class:"product-thumb"},null,8,ce)):V("",!0),v("span",null,g(e.name),1),v("span",_e,"¥"+g((e.price/100).toFixed(2)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1}),_(N,{label:"积分奖励 (兜底)"},{default:f(()=>[_(J,{modelValue:Ue.value.winner_reward_points,"onUpdate:modelValue":l[11]||(l[11]=e=>Ue.value.winner_reward_points=e),min:0,class:"full-width"},null,8,["modelValue"]),l[36]||(l[36]=v("div",{class:"form-hint"},"未设置商品或发放失败时的奖励",-1))]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[37]||(l[37]=[h("参与奖励 (商城奖品)",-1)])]),_:1}),_(N,{label:"奖品选择"},{default:f(()=>[_(Je,{modelValue:Ue.value.participation_reward_product_id,"onUpdate:modelValue":l[12]||(l[12]=e=>Ue.value.participation_reward_product_id=e),filterable:"",remote:"",clearable:"",placeholder:"搜索商城商品 (未获胜但完成比赛奖励)","remote-method":Ee,loading:o.value,class:"full-width"},{default:f(()=>[(c(!0),p(y,null,w(s.value,e=>(c(),j(Ie,{key:e.id,label:e.name,value:e.id},{default:f(()=>[v("div",fe,[e.image?(c(),p("img",{key:0,src:e.image,class:"product-thumb"},null,8,ve)):V("",!0),v("span",null,g(e.name),1),v("span",he,"¥"+g((e.price/100).toFixed(2)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","loading"])]),_:1}),_(N,{label:"积分奖励 (兜底)"},{default:f(()=>[_(J,{modelValue:Ue.value.participation_reward_points,"onUpdate:modelValue":l[13]||(l[13]=e=>Ue.value.participation_reward_points=e),min:0,class:"full-width"},null,8,["modelValue"]),l[38]||(l[38]=v("div",{class:"form-hint"},"未获胜玩家的基准奖励",-1))]),_:1}),_(m,{"content-position":"left"},{default:f(()=>[...l[39]||(l[39]=[h("宝箱优惠券奖励",-1)])]),_:1}),_(N,{label:"宝箱优惠券"},{default:f(()=>[_(Je,{modelValue:Ue.value.chest_coupon_id,"onUpdate:modelValue":l[14]||(l[14]=e=>Ue.value.chest_coupon_id=e),filterable:"",remote:"",clearable:"",placeholder:"搜索优惠券 (踩到宝箱时发放)","remote-method":Oe,loading:u.value,class:"full-width"},{default:f(()=>[(c(!0),p(y,null,w(q.value,e=>(c(),j(Ie,{key:e.id,label:e.name,value:e.id},{default:f(()=>[v("div",be,[v("span",null,g(e.name),1),v("span",ye,"面值 ¥"+g((e.discount_value/100).toFixed(2)),1)])]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue","loading"]),l[40]||(l[40]=v("div",{class:"form-hint"},"玩家踩到宝箱时将获得此优惠券",-1))]),_:1}),v("div",we,[_(n,null,{default:f(()=>[_(k(U))]),_:1}),l[41]||(l[41]=v("div",null,[v("strong",null,"说明"),h(": 此配置为全局默认奖励。如果未配置具体商品 ID,系统将发放默认积分奖励。 ")],-1))])]),_:1},8,["model"])])]),_:1}),_(I,{label:"配置预览",name:"debug"},{default:f(()=>[v("div",ge,[v("pre",je,g(JSON.stringify(Ue.value,null,2)),1)])]),_:1})]),_:1},8,["modelValue"])]),_:1})])}}}),[["__scopeId","data-v-eb579752"]]);export{xe as default};
|