2 lines
6.8 KiB
JavaScript
2 lines
6.8 KiB
JavaScript
import{_ as S,u as T,g as j,h as y,c as t,a as e,i as x,d as l,F as I,j as q,w as G,t as r,b as u,v as c,x as h,s as k,r as _,m as H,o as i}from"./index-z4tF8s-R.js";const J={class:"toolbar"},K={class:"membership-grid"},O={class:"card-header"},Q={class:"slug"},R={class:"card-body"},W={class:"info-row"},X={class:"info-row"},Y={class:"info-row"},Z={class:"permissions"},ss={key:0,class:"perm-tag"},es={key:1,class:"perm-tag"},as={key:2,class:"perm-tag"},os={key:3,class:"perm-tag"},ns={key:4,class:"field-hint"},ts={class:"card-actions"},is=["onClick"],ls=["onClick"],us={class:"modal"},ds={class:"modal-header"},rs={class:"modal-body"},ms={class:"form-group"},_s={class:"form-group"},ps=["disabled"],cs={class:"form-group"},bs={class:"form-group"},vs={class:"form-group"},fs={class:"form-group"},gs={class:"check-item"},ys={class:"check-item"},xs={class:"check-item"},hs={class:"check-item"},ks={key:0,class:"form-error"},ws={class:"modal-footer"},Vs=["disabled"],Cs={__name:"MembershipsView",setup(Ms){const b=T(),V=_([]),m=_(null),p=_(!1),v=_(!1),d=_(""),f=_(!1),a=H({name:"",slug:"",max_conversations:20,max_messages_per_day:50,max_upload_size_mb:5,permissions:{can_upload_image:!1,can_upload_video:!1,can_upload_file:!1,can_use_voice:!1}});j(w);async function w(){const n=await y.get("/admin/memberships");V.value=n.data.data||[]}function C(n){return n?n.id===1||["free","admin"].includes(n.slug):!1}function L(n){const s=n.permissions||{};return s.can_upload_image||s.can_upload_video||s.can_upload_file||s.can_use_voice}function F(){a.name="",a.slug="",a.max_conversations=20,a.max_messages_per_day=50,a.max_upload_size_mb=5,a.permissions={can_upload_image:!1,can_upload_video:!1,can_upload_file:!1,can_use_voice:!1}}function N(){p.value=!0,m.value=null,F(),d.value="",v.value=!0}function A(n){p.value=!1,m.value=n,a.name=n.name,a.slug=n.slug,a.max_conversations=n.max_conversations,a.max_messages_per_day=n.max_messages_per_day,a.max_upload_size_mb=n.max_upload_size_mb,a.permissions={can_upload_image:!1,can_upload_video:!1,can_upload_file:!1,can_use_voice:!1,...n.permissions||{}},d.value="",v.value=!0}function g(){v.value=!1,m.value=null,d.value=""}async function D(){if(d.value="",!a.name.trim()){d.value="请填写名称";return}const n={name:a.name.trim(),slug:a.slug.trim()||void 0,max_conversations:a.max_conversations,max_messages_per_day:a.max_messages_per_day,max_upload_size_mb:a.max_upload_size_mb,permissions:{...a.permissions}};f.value=!0;try{p.value?await y.post("/admin/memberships",n):await y.put(`/admin/memberships/${m.value.id}`,n),g(),await w()}catch(s){d.value=s.message||"保存失败"}finally{f.value=!1}}async function E(n){if(confirm(`确定删除会员等级「${n.name}」?`))try{await y.delete(`/admin/memberships/${n.id}`),await w()}catch(s){alert(s.message||"删除失败")}}return(n,s)=>{var M;return i(),t("div",null,[s[22]||(s[22]=e("div",{class:"page-header"},[e("h2",null,"会员等级"),e("p",null,"配置会员权限与使用限制,支持新增、编辑、删除")],-1)),e("div",J,[x(b).hasButton("btn:membership:create")||x(b).hasButton("btn:membership:edit")?(i(),t("button",{key:0,class:"btn btn-primary",onClick:N}," 新增等级 ")):l("",!0)]),e("div",K,[(i(!0),t(I,null,q(V.value,o=>{var z,B,U,$;return i(),t("div",{key:o.id,class:"membership-card"},[e("div",O,[e("h3",null,r(o.name),1),e("span",Q,r(o.slug),1)]),e("div",R,[e("div",W,[s[9]||(s[9]=e("span",null,"最大会话数",-1)),e("strong",null,r(o.max_conversations),1)]),e("div",X,[s[10]||(s[10]=e("span",null,"每日消息上限",-1)),e("strong",null,r(o.max_messages_per_day),1)]),e("div",Y,[s[11]||(s[11]=e("span",null,"上传大小限制",-1)),e("strong",null,r(o.max_upload_size_mb)+" MB",1)]),e("div",Z,[(z=o.permissions)!=null&&z.can_upload_image?(i(),t("span",ss,"图片上传")):l("",!0),(B=o.permissions)!=null&&B.can_upload_video?(i(),t("span",es,"视频上传")):l("",!0),(U=o.permissions)!=null&&U.can_upload_file?(i(),t("span",as,"文件上传")):l("",!0),($=o.permissions)!=null&&$.can_use_voice?(i(),t("span",os,"语音")):l("",!0),L(o)?l("",!0):(i(),t("span",ns,"无额外权限"))])]),e("div",ts,[x(b).hasButton("btn:membership:edit")?(i(),t("button",{key:0,class:"btn btn-ghost",onClick:P=>A(o)},"编辑",8,is)):l("",!0),x(b).hasButton("btn:membership:delete")&&!C(o)?(i(),t("button",{key:1,class:"btn btn-ghost danger",onClick:P=>E(o)},"删除",8,ls)):l("",!0)])])}),128))]),v.value?(i(),t("div",{key:0,class:"modal-overlay",onClick:G(g,["self"])},[e("div",us,[e("div",ds,[e("h3",null,r(p.value?"新增会员等级":`编辑会员等级 - ${(M=m.value)==null?void 0:M.name}`),1),e("button",{onClick:g},"×")]),e("div",rs,[e("div",ms,[s[12]||(s[12]=e("label",null,"名称",-1)),u(e("input",{"onUpdate:modelValue":s[0]||(s[0]=o=>a.name=o),class:"form-input",placeholder:"如:企业版"},null,512),[[c,a.name]])]),e("div",_s,[s[13]||(s[13]=e("label",null,"标识 slug",-1)),u(e("input",{"onUpdate:modelValue":s[1]||(s[1]=o=>a.slug=o),class:"form-input",placeholder:"英文标识,留空自动生成",disabled:!p.value&&C(m.value)},null,8,ps),[[c,a.slug]])]),e("div",cs,[s[14]||(s[14]=e("label",null,"最大会话数",-1)),u(e("input",{"onUpdate:modelValue":s[2]||(s[2]=o=>a.max_conversations=o),type:"number",class:"form-input"},null,512),[[c,a.max_conversations,void 0,{number:!0}]])]),e("div",bs,[s[15]||(s[15]=e("label",null,"每日消息上限",-1)),u(e("input",{"onUpdate:modelValue":s[3]||(s[3]=o=>a.max_messages_per_day=o),type:"number",class:"form-input"},null,512),[[c,a.max_messages_per_day,void 0,{number:!0}]])]),e("div",vs,[s[16]||(s[16]=e("label",null,"上传大小 (MB)",-1)),u(e("input",{"onUpdate:modelValue":s[4]||(s[4]=o=>a.max_upload_size_mb=o),type:"number",class:"form-input"},null,512),[[c,a.max_upload_size_mb,void 0,{number:!0}]])]),e("div",fs,[s[21]||(s[21]=e("label",null,"权限",-1)),e("label",gs,[u(e("input",{type:"checkbox","onUpdate:modelValue":s[5]||(s[5]=o=>a.permissions.can_upload_image=o)},null,512),[[h,a.permissions.can_upload_image]]),s[17]||(s[17]=k(" 图片上传",-1))]),e("label",ys,[u(e("input",{type:"checkbox","onUpdate:modelValue":s[6]||(s[6]=o=>a.permissions.can_upload_video=o)},null,512),[[h,a.permissions.can_upload_video]]),s[18]||(s[18]=k(" 视频上传",-1))]),e("label",xs,[u(e("input",{type:"checkbox","onUpdate:modelValue":s[7]||(s[7]=o=>a.permissions.can_upload_file=o)},null,512),[[h,a.permissions.can_upload_file]]),s[19]||(s[19]=k(" 文件上传",-1))]),e("label",hs,[u(e("input",{type:"checkbox","onUpdate:modelValue":s[8]||(s[8]=o=>a.permissions.can_use_voice=o)},null,512),[[h,a.permissions.can_use_voice]]),s[20]||(s[20]=k(" 语音功能",-1))])]),d.value?(i(),t("p",ks,r(d.value),1)):l("",!0)]),e("div",ws,[e("button",{class:"btn btn-ghost",onClick:g},"取消"),e("button",{class:"btn btn-primary",disabled:f.value,onClick:D},r(f.value?"保存中...":"保存"),9,Vs)])])])):l("",!0)])}}},Bs=S(Cs,[["__scopeId","data-v-b7a460a8"]]);export{Bs as default};
|