Files
zyt/server/public/admin/assets/index-QZBlyNCR.js
2026-08-05 14:06:07 +08:00

2 lines
24 KiB
JavaScript

import{o as de,Q as $e,W as Pe,R as De,ap as he,ac as ze,bi as Ee,q as r,r as f,s as l,v as n,D as i,u as c,cV as Se,w as Ie,cO as Ue,L as u,T as d,P as I,by as Te,K as Le,cN as Ae,cW as qe,bI as Me,cX as Oe,ae as V,cY as Be,cZ as Fe,c_ as A,cv as R,F as U,G as q,cD as Je,bu as je,c$ as Ye,bk as He,I as Re,bB as We,bj as Ze,O as $,d0 as Ge,a4 as Ke,at as Qe,d1 as Xe,bn as el,bm as ll,d2 as tl,d3 as al,cp as nl,d4 as il,b9 as ol,b6 as sl,b7 as ul,bt as dl,J as rl,bp as ml,ba as W,M as k,p as M,E as _,e as ue}from"./.pnpm-CJoARskO.js";import{w as cl,u as _l,v as pl,x as fl,y as vl,z as gl,A as bl,B as yl}from"./first_visit-Bxm26qUz.js";import{_ as kl}from"./index-DGIIeNfq.js";const wl={class:"promotion-page","element-loading-text":"正在加载推广配置"},Nl={class:"page-header"},Vl={class:"heading-copy"},Cl={class:"heading-icon"},xl={class:"heading-actions"},$l={class:"scope-chip"},Pl={key:0,class:"update-time"},Dl={class:"metric-grid"},hl={class:"metric-card"},zl={class:"metric-icon is-teal"},El={class:"metric-card"},Sl={class:"metric-icon is-blue"},Il={class:"metric-card"},Ul={class:"metric-icon is-green"},Tl={class:"metric-card"},Ll={class:"metric-icon is-orange"},Al={class:"workspace-card"},ql={class:"tab-nav","aria-label":"企业微信推广助手功能"},Ml={key:0,class:"tab-content links-tab"},Ol={class:"section-heading"},Bl={key:0,class:"pool-layout"},Fl={class:"pool-sidebar"},Jl=["onClick"],jl={class:"pool-main"},Yl={key:0,class:"pool-toolbar"},Hl={class:"pool-title-row"},Rl={class:"owner-tag"},Wl={class:"toolbar-actions"},Zl={class:"member-cell"},Gl={key:0},Kl={key:1,class:"muted"},Ql={key:1,class:"tab-content authorization-tab"},Xl={class:"section-heading"},et={class:"configuration-state"},lt={key:0},tt={key:1},at={key:2},nt={key:0,class:"missing-fields"},it={class:"callback-list"},ot={key:2,class:"tab-content install-tab"},st={class:"section-heading"},ut={class:"install-grid"},dt={class:"code-card"},rt={class:"code-card"},mt={class:"rule-panel"},ct={class:"test-row"},_t={class:"form-grid"},pt={class:"form-tip"},ft={class:"form-grid"},vt={class:"form-grid"},gt=de({name:"firstVisitWecomPromotionPage"}),bt=de({...gt,setup(yt){const Z=()=>({meta:{scope_label:"",can_authorize:!1,generated_at:""},config:{enabled:!1,configured:!1,ready:!1,missing:[],suite_id_masked:"",ticket_received_at:0,provider_callback_url:"",auth_callback_url:""},summary:{authorized_accounts:0,pool_count:0,online_links:0,today_clicks:0},accounts:[],pools:[],links:[],allowed_link_hosts:[]}),O=$e(),re=Pe(),s=W(Z()),T=k(!1),w=k("links"),C=k(),P=k(),B=k(!1),F=k(0),h=k(!1),z=k(!1),J=k(!1),j=k(!1),y=W({id:0,name:"",fallback_url:"",status:1}),m=W({id:0,pool_id:0,account_id:void 0,name:"",group_name:"默认分组",wecom_url:"",weight:1,status:1,daily_limit:0,active_range:[],remark:""}),g=M(()=>s.pools.find(t=>Number(t.id)===C.value)),me=M(()=>s.links.filter(t=>Number(t.pool_id)===C.value)),ce=M(()=>s.accounts.filter(t=>Number(t.auth_status)===1)),x=M(()=>s.pools.find(t=>Number(t.id)===P.value));De(()=>s.pools.map(t=>Number(t.id)).join(","),()=>{const t=s.pools.map(e=>Number(e.id));(!C.value||!t.includes(C.value))&&(C.value=t[0]),(!P.value||!t.includes(P.value))&&(P.value=t[0])},{immediate:!0});async function N(){T.value=!0;try{const t=await cl();Object.assign(s,Z(),t||{})}catch(t){_.error((t==null?void 0:t.message)||"企业微信推广配置加载失败")}finally{T.value=!1}}function _e(t){return s.links.filter(e=>Number(e.pool_id)===Number(t)).length}function Y(t){Object.assign(y,t?{id:Number(t.id),name:t.name,fallback_url:t.fallback_url||"",status:Number(t.status)}:{id:0,name:"",fallback_url:"",status:1}),h.value=!0}async function pe(){if(!y.name.trim())return _.warning("请输入分流方案名称");J.value=!0;try{const t=await _l({...y});h.value=!1,await N(),t!=null&&t.id&&(C.value=Number(t.id)),_.success("分流方案已保存")}catch(t){_.error((t==null?void 0:t.message)||"分流方案保存失败")}finally{J.value=!1}}async function fe(t){await ue.confirm(`删除“${t.name}”后,该方案下的推广链接也会停用。确认继续?`,"删除分流方案",{type:"warning"});try{await pl({id:Number(t.id)}),_.success("分流方案已删除"),await N()}catch(e){_.error((e==null?void 0:e.message)||"删除失败")}}function G(t){if(!g.value)return;const e=t&&Number(t.active_start)>0&&Number(t.active_end)>0?[ee(t.active_start),ee(t.active_end)]:[];Object.assign(m,t?{id:Number(t.id),pool_id:Number(t.pool_id),account_id:Number(t.account_id)||void 0,name:t.name,group_name:t.group_name||"默认分组",wecom_url:t.wecom_url,weight:Number(t.weight)||1,status:Number(t.status),daily_limit:Number(t.daily_limit)||0,active_range:e,remark:t.remark||""}:{id:0,pool_id:Number(g.value.id),account_id:void 0,name:"",group_name:"默认分组",wecom_url:"",weight:1,status:1,daily_limit:0,active_range:[],remark:""}),z.value=!0}async function ve(){var t,e;if(!m.name.trim())return _.warning("请输入推广成员名称");if(!m.wecom_url.trim())return _.warning("请粘贴企业微信推广链接");j.value=!0;try{await fl({...m,account_id:m.account_id||0,active_start:((t=m.active_range)==null?void 0:t[0])||"",active_end:((e=m.active_range)==null?void 0:e[1])||""}),z.value=!1,await N(),_.success("推广链接已保存")}catch(o){_.error((o==null?void 0:o.message)||"推广链接保存失败")}finally{j.value=!1}}async function ge(t,e){try{await vl({id:Number(t.id),status:e?1:0}),t.status=e?1:0,_.success(e?"链接已上线":"链接已下线"),await N()}catch(o){_.error((o==null?void 0:o.message)||"状态更新失败"),await N()}}async function be(t){await ue.confirm(`确认删除推广链接“${t.name}”?`,"删除推广链接",{type:"warning"});try{await gl({id:Number(t.id)}),_.success("推广链接已删除"),await N()}catch(e){_.error((e==null?void 0:e.message)||"删除失败")}}async function ye(){B.value=!0;try{const t=await yl();if(!(t!=null&&t.url))throw new Error("未获取到企业微信授权地址");window.location.assign(t.url)}catch(t){_.error((t==null?void 0:t.message)||"授权地址生成失败"),B.value=!1}}async function ke(t){F.value=Number(t.id);try{await bl({id:Number(t.id)}),_.success("授权凭证有效"),await N()}catch(e){_.error((e==null?void 0:e.message)||"凭证验证失败")}finally{F.value=0}}function K(t){const e=Math.floor(Date.now()/1e3);return Number(t.status)!==1?{label:"已下线",className:"is-muted"}:Number(t.account_id)>0&&Number(t.auth_status)!==1?{label:"授权失效",className:"is-error"}:Number(t.active_start)>0&&Number(t.active_start)>e?{label:"尚未生效",className:"is-waiting"}:Number(t.active_end)>0&&Number(t.active_end)<e?{label:"已过期",className:"is-error"}:Number(t.daily_limit)>0&&Q(t)>=Number(t.daily_limit)?{label:"今日已达上限",className:"is-waiting"}:{label:"可参与分流",className:"is-ok"}}function Q(t){const e=new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Shanghai",year:"numeric",month:"2-digit",day:"2-digit"}).format(new Date);return t.today_date===e?Number(t.today_count||0):0}function we(t){return Number(t||0).toLocaleString("zh-CN")}function X(t){const e=Number(t||0);return e?new Date(e*1e3).toLocaleString("zh-CN",{hour12:!1}):"—"}function ee(t){const e=new Date(Number(t||0)*1e3),o=p=>String(p).padStart(2,"0");return`${e.getFullYear()}-${o(e.getMonth()+1)}-${o(e.getDate())} ${o(e.getHours())}:${o(e.getMinutes())}:${o(e.getSeconds())}`}async function E(t,e){if(!t)return _.warning(`${e}暂无内容`);try{await navigator.clipboard.writeText(t)}catch{const o=document.createElement("textarea");o.value=t,o.style.position="fixed",o.style.opacity="0",document.body.appendChild(o),o.select(),document.execCommand("copy"),o.remove()}_.success(`${e}已复制`)}function Ne(){var t;(t=x.value)!=null&&t.go_url&&window.open(x.value.go_url,"_blank","noopener,noreferrer")}async function Ve(){const t=String(O.query.wecom_auth||"");if(!t)return;w.value="authorization",t==="success"?_.success("企业微信授权成功,凭证已安全保存"):_.error(String(O.query.message||"企业微信授权失败,请重新发起"));const e={...O.query};delete e.wecom_auth,delete e.account_id,delete e.message,await re.replace({query:e})}return he(async()=>{await N(),await Ve()}),(t,e)=>{var se;const o=Ie,p=Le,v=He,H=Re,L=We,le=Ze,te=el,ae=ll,D=ul,b=sl,ne=ol,ie=dl,oe=rl,Ce=ml,xe=Ee;return ze((r(),f("div",wl,[l("header",Nl,[l("div",Vl,[l("span",Cl,[n(o,null,{default:i(()=>[n(c(Se))]),_:1})]),e[30]||(e[30]=l("div",null,[l("h1",null,"企业微信推广助手"),l("p",null,"授权企业微信后,将多个推广链接按权重、时段和每日上限安全分流")],-1))]),l("div",xl,[l("span",$l,[n(o,null,{default:i(()=>[n(c(Ue))]),_:1}),u(d(s.meta.scope_label||"当前数据范围"),1)]),s.meta.generated_at?(r(),f("span",Pl,"更新于 "+d(s.meta.generated_at),1)):I("",!0),n(p,{icon:c(Te),loading:T.value,onClick:N},{default:i(()=>[...e[31]||(e[31]=[u("刷新",-1)])]),_:1},8,["icon","loading"])])]),l("section",Dl,[l("article",hl,[l("span",zl,[n(o,null,{default:i(()=>[n(c(Ae))]),_:1})]),l("div",null,[e[32]||(e[32]=l("small",null,"已授权企业",-1)),l("strong",null,d(s.summary.authorized_accounts),1),e[33]||(e[33]=l("p",null,"凭证仅在服务端加密保存",-1))])]),l("article",El,[l("span",Sl,[n(o,null,{default:i(()=>[n(c(qe))]),_:1})]),l("div",null,[e[34]||(e[34]=l("small",null,"分流方案",-1)),l("strong",null,d(s.summary.pool_count),1),e[35]||(e[35]=l("p",null,"每个方案生成独立 JS",-1))])]),l("article",Il,[l("span",Ul,[n(o,null,{default:i(()=>[n(c(Me))]),_:1})]),l("div",null,[e[36]||(e[36]=l("small",null,"在线链接",-1)),l("strong",null,d(s.summary.online_links),1),e[37]||(e[37]=l("p",null,"停用或超限自动排除",-1))])]),l("article",Tl,[l("span",Ll,[n(o,null,{default:i(()=>[n(c(Oe))]),_:1})]),l("div",null,[e[38]||(e[38]=l("small",null,"今日分流点击",-1)),l("strong",null,d(s.summary.today_clicks),1),e[39]||(e[39]=l("p",null,"只记录脱敏访问数据",-1))])])]),l("section",Al,[l("nav",ql,[l("button",{class:V({active:w.value==="links"}),onClick:e[0]||(e[0]=a=>w.value="links")},[n(o,null,{default:i(()=>[n(c(Be))]),_:1}),e[40]||(e[40]=u("推广链接 ",-1))],2),l("button",{class:V({active:w.value==="authorization"}),onClick:e[1]||(e[1]=a=>w.value="authorization")},[n(o,null,{default:i(()=>[n(c(Fe))]),_:1}),e[41]||(e[41]=u("企业授权 ",-1))],2),l("button",{class:V({active:w.value==="install"}),onClick:e[2]||(e[2]=a=>w.value="install")},[n(o,null,{default:i(()=>[n(c(A))]),_:1}),e[42]||(e[42]=u("JS 安装 ",-1))],2)]),w.value==="links"?(r(),f("div",Ml,[l("div",Ol,[e[44]||(e[44]=l("div",null,[l("h2",null,"推广链接分流"),l("p",null,"访客点击时由服务端从当前可用链接中按权重随机选择,页面端不会暴露完整链接池。")],-1)),n(p,{type:"primary",icon:c(R),onClick:e[3]||(e[3]=a=>Y())},{default:i(()=>[...e[43]||(e[43]=[u("新建分流方案",-1)])]),_:1},8,["icon"])]),s.pools.length?(r(),f("div",Bl,[l("aside",Fl,[(r(!0),f(U,null,q(s.pools,a=>(r(),f("button",{key:a.id,class:V(["pool-item",{active:Number(a.id)===C.value}]),onClick:S=>C.value=Number(a.id)},[l("span",{class:V(["pool-status",Number(a.status)===1?"online":"offline"])},null,2),l("span",null,[l("strong",null,d(a.name),1),l("small",null,d(_e(a.id))+" 条链接 · "+d(we(a.click_count))+" 次点击",1)]),n(o,null,{default:i(()=>[n(c(Je))]),_:1})],10,Jl))),128))]),l("div",jl,[g.value?(r(),f("div",Yl,[l("div",null,[l("div",Hl,[l("h3",null,d(g.value.name),1),l("span",{class:V(["status-tag",Number(g.value.status)===1?"is-online":"is-offline"])},d(Number(g.value.status)===1?"运行中":"已停用"),3),l("span",Rl,d(g.value.dept_name||"未分部门")+" · "+d(g.value.owner_name||"系统"),1)]),l("p",null,"公开键:"+d(g.value.public_key),1)]),l("div",Wl,[n(p,{icon:c(A),onClick:e[4]||(e[4]=a=>E(g.value.install_code,"JS 安装代码"))},{default:i(()=>[...e[45]||(e[45]=[u("复制 JS",-1)])]),_:1},8,["icon"]),n(p,{icon:c(je),onClick:e[5]||(e[5]=a=>Y(g.value))},{default:i(()=>[...e[46]||(e[46]=[u("编辑方案",-1)])]),_:1},8,["icon"]),n(p,{type:"danger",plain:"",icon:c(Ye),onClick:e[6]||(e[6]=a=>fe(g.value))},{default:i(()=>[...e[47]||(e[47]=[u("删除",-1)])]),_:1},8,["icon"]),n(p,{type:"primary",icon:c(R),onClick:e[7]||(e[7]=a=>G())},{default:i(()=>[...e[48]||(e[48]=[u("添加推广链接",-1)])]),_:1},8,["icon"])])])):I("",!0),n(le,{data:me.value,class:"link-table",stripe:""},{empty:i(()=>[n(L,{"image-size":72,description:"当前方案还没有推广链接"})]),default:i(()=>[n(v,{label:"推广成员 / 分组","min-width":"180",fixed:"left"},{default:i(({row:a})=>[l("div",Zl,[l("strong",null,d(a.name),1),l("small",null,d(a.group_name||"默认分组"),1)])]),_:1}),n(v,{label:"授权企业","min-width":"150"},{default:i(({row:a})=>[a.account_id?(r(),f("span",Gl,d(a.corp_name||"授权已失效"),1)):(r(),f("span",Kl,"未关联"))]),_:1}),n(v,{label:"权重",prop:"weight",width:"84",align:"center"}),n(v,{label:"今日 / 上限","min-width":"120",align:"center"},{default:i(({row:a})=>[u(d(Q(a))+" / "+d(Number(a.daily_limit)?a.daily_limit:"不限"),1)]),_:1}),n(v,{label:"累计点击",prop:"click_count","min-width":"105",align:"center"}),n(v,{label:"当前可用性","min-width":"130"},{default:i(({row:a})=>[l("span",{class:V(["availability",K(a).className])},d(K(a).label),3)]),_:1}),n(v,{label:"上线",width:"90",align:"center"},{default:i(({row:a})=>[n(H,{"model-value":Number(a.status)===1,onChange:S=>ge(a,S)},null,8,["model-value","onChange"])]),_:1}),n(v,{label:"操作","min-width":"132",fixed:"right"},{default:i(({row:a})=>[n(p,{type:"primary",link:"",onClick:S=>G(a)},{default:i(()=>[...e[49]||(e[49]=[u("编辑",-1)])]),_:1},8,["onClick"]),n(p,{type:"danger",link:"",onClick:S=>be(a)},{default:i(()=>[...e[50]||(e[50]=[u("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])])])):(r(),$(L,{key:1,description:"先创建一个分流方案,再添加企业微信推广链接"},{default:i(()=>[n(p,{type:"primary",icon:c(R),onClick:e[8]||(e[8]=a=>Y())},{default:i(()=>[...e[51]||(e[51]=[u("创建第一个方案",-1)])]),_:1},8,["icon"])]),_:1}))])):w.value==="authorization"?(r(),f("div",Ql,[l("div",Xl,[e[53]||(e[53]=l("div",null,[l("h2",null,"企业微信第三方应用授权"),l("p",null,"永久授权码、suite_ticket 等敏感凭证全部加密存放,前端接口只返回企业名称和脱敏 CorpID。")],-1)),s.meta.can_authorize?(r(),$(p,{key:0,type:"primary",icon:c(Ge),loading:B.value,disabled:!s.config.ready,onClick:ye},{default:i(()=>[...e[52]||(e[52]=[u("授权新企业",-1)])]),_:1},8,["icon","loading","disabled"])):I("",!0)]),l("div",{class:V(["configuration-panel",s.config.ready?"is-ready":"is-pending"])},[l("div",et,[l("span",null,[n(o,null,{default:i(()=>[(r(),$(Ke(s.config.ready?c(Qe):c(Xe))))]),_:1})]),l("div",null,[l("strong",null,d(s.config.ready?"授权通道已就绪":"授权通道等待配置"),1),s.config.ready?(r(),f("p",lt,"已收到企业微信 suite_ticket,可以发起第三方应用安装授权。")):s.config.configured?(r(),f("p",tt,"配置已保存,尚未收到 suite_ticket,请核对应用指令回调地址。")):(r(),f("p",at,"请由运维按部署文档补齐服务商参数;页面不会展示任何密钥值。"))])]),(se=s.config.missing)!=null&&se.length?(r(),f("div",nt,[e[54]||(e[54]=u(" 缺少:",-1)),(r(!0),f(U,null,q(s.config.missing,a=>(r(),f("code",{key:a},d(a),1))),128))])):I("",!0),l("dl",it,[l("div",null,[e[55]||(e[55]=l("dt",null,"应用指令回调",-1)),l("dd",null,d(s.config.provider_callback_url||"—"),1),l("button",{onClick:e[9]||(e[9]=a=>E(s.config.provider_callback_url,"应用指令回调"))},"复制")]),l("div",null,[e[56]||(e[56]=l("dt",null,"授权完成回调",-1)),l("dd",null,d(s.config.auth_callback_url||"—"),1),l("button",{onClick:e[10]||(e[10]=a=>E(s.config.auth_callback_url,"授权完成回调"))},"复制")])])],2),n(le,{data:s.accounts,class:"account-table",stripe:""},{empty:i(()=>[n(L,{"image-size":72,description:"尚未授权企业微信"})]),default:i(()=>[n(v,{prop:"corp_name",label:"企业微信名称","min-width":"180",fixed:"left"},{default:i(({row:a})=>[l("strong",null,d(a.corp_name),1)]),_:1}),n(v,{prop:"corp_id_masked",label:"CorpID(脱敏)","min-width":"190"}),n(v,{prop:"agent_id",label:"应用 AgentID","min-width":"130"},{default:i(({row:a})=>[u(d(a.agent_id||"—"),1)]),_:1}),n(v,{label:"授权状态","min-width":"110"},{default:i(({row:a})=>[l("span",{class:V(["availability",Number(a.auth_status)===1?"is-ok":"is-error"])},d(Number(a.auth_status)===1?"有效":"已取消"),3)]),_:1}),n(v,{label:"授权时间","min-width":"170"},{default:i(({row:a})=>[u(d(X(a.authorized_at)),1)]),_:1}),n(v,{label:"最近校验","min-width":"170"},{default:i(({row:a})=>[u(d(X(a.last_refresh_at)),1)]),_:1}),s.meta.can_authorize?(r(),$(v,{key:0,label:"操作",width:"110",fixed:"right"},{default:i(({row:a})=>[n(p,{type:"primary",link:"",loading:F.value===Number(a.id),onClick:S=>ke(a)},{default:i(()=>[...e[57]||(e[57]=[u("验证凭证",-1)])]),_:1},8,["loading","onClick"])]),_:1})):I("",!0)]),_:1},8,["data"])])):(r(),f("div",ot,[l("div",st,[e[58]||(e[58]=l("div",null,[l("h2",null,"安装 JS 到推广落地页"),l("p",null,"基础脚本只负责捕获点击并请求服务端分流,不携带授权凭证,也不在浏览器中计算随机规则。")],-1)),n(ae,{modelValue:P.value,"onUpdate:modelValue":e[11]||(e[11]=a=>P.value=a),placeholder:"选择分流方案",class:"install-pool-select"},{default:i(()=>[(r(!0),f(U,null,q(s.pools,a=>(r(),$(te,{key:a.id,label:a.name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),x.value?(r(),f(U,{key:0},[l("div",ut,[l("article",dt,[e[60]||(e[60]=l("div",{class:"code-heading"},[l("span",null,"1"),l("div",null,[l("strong",null,"安装基础脚本"),l("p",null,[u("放在页面 "),l("code",null,"</head>"),u(" 标签之前,只需安装一次。")])])],-1)),l("pre",null,[l("code",null,d(x.value.install_code),1)]),n(p,{type:"primary",plain:"",icon:c(A),onClick:e[12]||(e[12]=a=>E(x.value.install_code,"基础脚本"))},{default:i(()=>[...e[59]||(e[59]=[u("复制代码",-1)])]),_:1},8,["icon"])]),l("article",rt,[e[62]||(e[62]=l("div",{class:"code-heading"},[l("span",null,"2"),l("div",null,[l("strong",null,"标记点击元素"),l("p",null,"按钮、图片或文字链接都可以使用同一个数据属性。")])],-1)),l("pre",null,[l("code",null,d(x.value.trigger_code),1)]),n(p,{type:"primary",plain:"",icon:c(A),onClick:e[13]||(e[13]=a=>E(x.value.trigger_code,"点击元素代码"))},{default:i(()=>[...e[61]||(e[61]=[u("复制代码",-1)])]),_:1},8,["icon"])])]),l("div",mt,[l("div",null,[n(o,null,{default:i(()=>[n(c(tl))]),_:1}),e[63]||(e[63]=l("span",null,[l("strong",null,"可用性筛选"),u("自动排除停用、授权失效、超出时间段和达到每日上限的链接。")],-1))]),l("div",null,[n(o,null,{default:i(()=>[n(c(al))]),_:1}),e[64]||(e[64]=l("span",null,[l("strong",null,"权重随机"),u("权重越高,被选中的概率越大;没有可用链接时才使用兜底链接。")],-1))]),l("div",null,[n(o,null,{default:i(()=>[n(c(nl))]),_:1}),e[65]||(e[65]=l("span",null,[l("strong",null,"隐私与安全"),u("前端看不到完整链接池;访问 IP 只保存带服务端密钥的不可逆哈希。")],-1))])]),l("div",ct,[e[67]||(e[67]=l("div",null,[l("strong",null,"分流测试"),l("p",null,"每次打开都会执行与线上相同的筛选和随机规则,并计入点击数据。")],-1)),n(p,{type:"primary",icon:c(il),onClick:Ne},{default:i(()=>[...e[66]||(e[66]=[u("打开测试链接",-1)])]),_:1},8,["icon"])])],64)):(r(),$(L,{key:1,description:"请先创建分流方案,系统会自动生成 JS 安装代码"}))]))]),n(ie,{modelValue:h.value,"onUpdate:modelValue":e[18]||(e[18]=a=>h.value=a),title:y.id?"编辑分流方案":"新建分流方案",width:"560px","destroy-on-close":""},{footer:i(()=>[n(p,{onClick:e[17]||(e[17]=a=>h.value=!1)},{default:i(()=>[...e[69]||(e[69]=[u("取消",-1)])]),_:1}),n(p,{type:"primary",loading:J.value,onClick:pe},{default:i(()=>[...e[70]||(e[70]=[u("保存方案",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(ne,{"label-position":"top"},{default:i(()=>[n(b,{label:"方案名称",required:""},{default:i(()=>[n(D,{modelValue:y.name,"onUpdate:modelValue":e[14]||(e[14]=a=>y.name=a),maxlength:"60","show-word-limit":"",placeholder:"例如:官网咨询分流"},null,8,["modelValue"])]),_:1}),n(b,{label:"兜底企业微信链接"},{default:i(()=>[n(D,{modelValue:y.fallback_url,"onUpdate:modelValue":e[15]||(e[15]=a=>y.fallback_url=a),placeholder:"可选;没有可用成员时跳转"},null,8,["modelValue"]),e[68]||(e[68]=l("span",{class:"form-tip"},"仅允许配置页列出的企业微信 HTTPS 域名。",-1))]),_:1}),n(b,{label:"运行状态"},{default:i(()=>[n(H,{modelValue:y.status,"onUpdate:modelValue":e[16]||(e[16]=a=>y.status=a),"active-value":1,"inactive-value":0,"active-text":"运行","inactive-text":"停用"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"]),n(ie,{modelValue:z.value,"onUpdate:modelValue":e[29]||(e[29]=a=>z.value=a),title:m.id?"编辑推广链接":"添加推广链接",width:"680px","destroy-on-close":""},{footer:i(()=>[n(p,{onClick:e[28]||(e[28]=a=>z.value=!1)},{default:i(()=>[...e[73]||(e[73]=[u("取消",-1)])]),_:1}),n(p,{type:"primary",loading:j.value,onClick:ve},{default:i(()=>[...e[74]||(e[74]=[u("保存链接",-1)])]),_:1},8,["loading"])]),default:i(()=>[n(ne,{"label-position":"top",class:"link-form"},{default:i(()=>[l("div",_t,[n(b,{label:"推广成员名称",required:""},{default:i(()=>[n(D,{modelValue:m.name,"onUpdate:modelValue":e[19]||(e[19]=a=>m.name=a),maxlength:"80",placeholder:"用于内部识别"},null,8,["modelValue"])]),_:1}),n(b,{label:"分组"},{default:i(()=>[n(D,{modelValue:m.group_name,"onUpdate:modelValue":e[20]||(e[20]=a=>m.group_name=a),maxlength:"60",placeholder:"默认分组"},null,8,["modelValue"])]),_:1})]),n(b,{label:"企业微信推广链接",required:""},{default:i(()=>[n(D,{modelValue:m.wecom_url,"onUpdate:modelValue":e[21]||(e[21]=a=>m.wecom_url=a),type:"textarea",rows:2,placeholder:"粘贴企业微信成员联系我、客户群或其他允许的推广链接"},null,8,["modelValue"]),l("span",pt,"允许域名:"+d(s.allowed_link_hosts.join("、")||"请先配置允许域名"),1)]),_:1}),l("div",ft,[n(b,{label:"关联授权企业"},{default:i(()=>[n(ae,{modelValue:m.account_id,"onUpdate:modelValue":e[22]||(e[22]=a=>m.account_id=a),clearable:"",placeholder:"可选;用于授权失效联动下线"},{default:i(()=>[(r(!0),f(U,null,q(ce.value,a=>(r(),$(te,{key:a.id,label:a.corp_name,value:Number(a.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),n(b,{label:"分流权重",required:""},{default:i(()=>[n(oe,{modelValue:m.weight,"onUpdate:modelValue":e[23]||(e[23]=a=>m.weight=a),min:1,max:100,"controls-position":"right"},null,8,["modelValue"])]),_:1})]),l("div",vt,[n(b,{label:"每日点击上限"},{default:i(()=>[n(oe,{modelValue:m.daily_limit,"onUpdate:modelValue":e[24]||(e[24]=a=>m.daily_limit=a),min:0,max:1e6,"controls-position":"right"},null,8,["modelValue"]),e[71]||(e[71]=l("span",{class:"form-tip"},"0 表示不限",-1))]),_:1}),n(b,{label:"上线状态"},{default:i(()=>[n(H,{modelValue:m.status,"onUpdate:modelValue":e[25]||(e[25]=a=>m.status=a),"active-value":1,"inactive-value":0,"active-text":"上线","inactive-text":"下线"},null,8,["modelValue"])]),_:1})]),n(b,{label:"生效时间段"},{default:i(()=>[n(Ce,{modelValue:m.active_range,"onUpdate:modelValue":e[26]||(e[26]=a=>m.active_range=a),type:"datetimerange","value-format":"YYYY-MM-DD HH:mm:ss","start-placeholder":"开始时间","end-placeholder":"结束时间","range-separator":"至"},null,8,["modelValue"]),e[72]||(e[72]=l("span",{class:"form-tip"},"不选择表示长期有效",-1))]),_:1}),n(b,{label:"备注"},{default:i(()=>[n(D,{modelValue:m.remark,"onUpdate:modelValue":e[27]||(e[27]=a=>m.remark=a),maxlength:"255","show-word-limit":""},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])),[[xe,T.value]])}}}),Vt=kl(bt,[["__scopeId","data-v-b40c47a2"]]);export{Vt as default};