2 lines
46 KiB
JavaScript
2 lines
46 KiB
JavaScript
import{o as Xe,R as Ve,E as g,ap as It,ac as Ke,bi as Dt,q as u,r as p,s as n,v as s,D as o,u as f,cX as Et,w as Tt,cO as Mt,L as c,T as r,P as S,by as Re,K as Lt,cN as Ft,d2 as Ut,bI as zt,d3 as jt,ae as E,d4 as Je,d5 as He,d6 as Bt,d1 as Pe,cl as Ie,cv as We,F as Q,G as ee,aw as Ot,bd as qt,cD as Kt,at as Ye,O as w,bu as Rt,d7 as Jt,bh as Ht,bk as Wt,br as Yt,I as Gt,bB as Zt,bj as Xt,as as Qt,b6 as ea,bm as ta,bn as aa,bA as la,b9 as na,bs as sa,a4 as ia,d8 as oa,bq as da,b7 as ra,bK as ua,bt as ma,bc as ca,bb as _a,J as pa,bp as fa,ba as te,M as C,p as W,e as ba}from"./.pnpm-BSw4l71J.js";import{C as ga,D as va,E as ya,F as ka,G as Na,H as ha,I as wa,J as Ca,K as $a}from"./first_visit-DvqP4EAp.js";import xa from"./WecomFloatingWidgetBuilder-cl4lVmkC.js";import Aa from"./PromotionAutomationForm-CE_yJWAC.js";import{d as Ge,c as Ze,i as Sa,a as Va,s as Pa}from"./WelcomeMessageEditor-Db8YAxhU.js";import{_ as Ia}from"./index-C5omO-nb.js";const Da={class:"promotion-page","element-loading-text":"正在加载推广配置"},Ea={class:"page-header"},Ta={class:"heading-copy"},Ma={class:"heading-icon"},La={class:"heading-actions"},Fa={class:"scope-chip"},Ua={key:0,class:"update-time"},za={class:"metric-grid"},ja={class:"metric-card"},Ba={class:"metric-icon is-teal"},Oa={class:"metric-card"},qa={class:"metric-icon is-blue"},Ka={class:"metric-card"},Ra={class:"metric-icon is-green"},Ja={class:"metric-card"},Ha={class:"metric-icon is-orange"},Wa={class:"workspace-card"},Ya={class:"tab-nav","aria-label":"企业微信获客助手功能"},Ga={key:0,class:"tab-content links-tab"},Za={class:"section-heading"},Xa={class:"section-heading-actions"},Qa={key:0,class:"selection-count"},el={key:0,class:"pool-layout"},tl={class:"pool-sidebar"},al=["onClick"],ll={class:"pool-main"},nl={key:0,class:"pool-toolbar"},sl={class:"pool-title-row"},il={class:"owner-tag"},ol={class:"toolbar-actions"},dl={class:"member-cell"},rl={key:0,class:"sync-retry-tip"},ul={key:1,class:"tab-content customer-stats-tab"},ml={class:"section-heading customer-stats-heading"},cl={class:"customer-heading-actions"},_l={key:0,class:"update-time"},pl={class:"customer-metric-grid","aria-label":"获客客户消息汇总"},fl={class:"customer-metric-card"},bl={class:"metric-icon is-teal"},gl={class:"customer-metric-card"},vl={class:"metric-icon is-blue"},yl={class:"customer-metric-card"},kl={class:"metric-icon is-green"},Nl={class:"customer-metric-card"},hl={class:"metric-icon is-orange"},wl={class:"customer-filter-bar"},Cl=["title"],$l={class:"member-cell"},xl={class:"member-cell"},Al={class:"customer-pagination"},Sl={key:2,class:"tab-content authorization-tab"},Vl={class:"configuration-state"},Pl={key:0},Il={key:1},Dl={key:0,class:"missing-fields"},El={class:"callback-list"},Tl={class:"configuration-actions"},Ml={key:3,class:"tab-content install-tab"},Ll={class:"section-heading"},Fl={class:"member-tree-option__label"},Ul={key:0,class:"member-tree-option__count"},zl={key:1,class:"member-tree-option__detail"},jl={class:"form-tip"},Bl={key:0,class:"uploading-save-tip"},Ol={key:0,class:"access-pool-preview"},ql={key:0},Kl=Xe({name:"firstVisitWecomPromotionPage"}),Rl=Xe({...Kl,setup(Jl){const De=()=>({meta:{admin_id:0,scope_label:"",generated_at:""},config:{mode:"internal",configured:!1,ready:!1,missing:[],corp_id_masked:"",agent_id:"",secret_configured:!1,callback_ready:!1,callback_url:"",official_doc:""},summary:{configured_apps:0,pool_count:0,online_links:0,today_clicks:0},pools:[],links:[],member_options:[],operator_options:[],department_options:[],automation_installed:!1,customer_acquisition_link_example:"https://work.weixin.qq.com/ca/xxxxxxxx"}),m=te(De()),me=C(!1),T=C("links"),Y=C(),ae=C(),z=C([]),ie=C(!1),D=C(!1),ce=C(!1),oe=C(!1),K=C(!1),ye=C(0),_e=C(0),de=C(!1),G=C(!1),b=te({id:0,name:"",fallback_url:"",status:1,member_admin_ids:[],skip_verify:0,main_url:"",automation_config:Ge()}),ke=C(),Z=C(""),R=C(!1),x=te({pool_ids:[],operator_admin_ids:[],action:"grant"}),P=te({id:0,name:"",userid:"",daily_limit:0,status:1,active_range:[],remark:""}),re=C(!1),Ee=C(!1),Ne=C(!1),I=te({link_id:"",userid:"",chat_status:""}),M=te({page_no:1,page_size:20,total:0}),N=te({summary:{customer_count:0,messaged_customer_count:0,message_customer_rate:0,received_message_count:0,message_count_known_count:0},rows:[],link_options:[],member_options:[],meta:{last_synced_at:""}}),v=W(()=>m.pools.find(t=>Number(t.id)===Y.value)),Qe=W(()=>{var t;return Array.isArray((t=v.value)==null?void 0:t.member_rules)?v.value.member_rules:[]}),he=W(()=>m.pools.find(t=>Number(t.id)===ae.value)),pe=W(()=>m.pools.filter(t=>x.pool_ids.includes(Number(t.id)))),et={value:"value",label:"label",children:"children",disabled:"disabled"},Te=W(()=>yt(m.department_options,m.member_options)),tt=W(()=>Te.value.map(t=>t.value)),at=W(()=>N.link_options.length?N.link_options:m.links.filter(t=>t.id).map(t=>({id:Number(t.id),name:t.name||t.remote_link_id||`链接 ${t.id}`}))),lt=W(()=>N.member_options.length?N.member_options:m.member_options.map(t=>({id:Number(t.id),userid:String(t.userid||""),name:t.name,department_name:Array.isArray(t.dept_names)?t.dept_names.join(" / "):t.department_name||t.dept_name||""})));Ve(()=>m.pools.map(t=>`${Number(t.id)}:${t.can_manage_access?1:0}`).join(","),()=>{const t=m.pools.map(a=>Number(a.id)),e=new Set(m.pools.filter(a=>a.can_manage_access).map(a=>Number(a.id)));(!Y.value||!t.includes(Y.value))&&(Y.value=t[0]),(!ae.value||!t.includes(ae.value))&&(ae.value=t[0]),z.value=z.value.filter(a=>e.has(a))},{immediate:!0}),Ve(T,t=>{t==="customer-stats"&&!Ee.value&&X()}),Ve(()=>x.action,t=>{if(t!=="grant")return;const e=new Set(m.operator_options.filter(a=>a.can_grant).map(a=>Number(a.id)));x.operator_admin_ids=x.operator_admin_ids.filter(a=>e.has(Number(a)))});async function j(){me.value=!0;try{const t=await va();Object.assign(m,De(),t||{})}catch(t){g.error((t==null?void 0:t.message)||"企业微信推广配置加载失败")}finally{me.value=!1}}function nt(t,e){if(!(t!=null&&t.can_manage_access))return;const a=Number(t.id),i=new Set(z.value);e?i.add(a):i.delete(a),z.value=[...i]}function Me(t=z.value){const e=new Set(m.pools.filter(i=>i.can_manage_access).map(i=>Number(i.id))),a=[...new Set(t.map(Number).filter(i=>e.has(i)))];if(!a.length)return g.warning("请先选择可管理的分流方案");Object.assign(x,{pool_ids:a,operator_admin_ids:[],action:"grant"}),de.value=!0}async function st(){if(!x.pool_ids.length)return g.warning("请至少选择一个分流方案");if(!x.operator_admin_ids.length)return g.warning("请至少选择一名操作人");G.value=!0;try{const t=await ya({pool_ids:[...x.pool_ids],operator_admin_ids:[...x.operator_admin_ids],action:x.action});de.value=!1,z.value=[],await j();const e=x.action==="grant"?"添加":"移除";g.success(t!=null&&t.affected?`已批量${e} ${t.affected} 条方案操作权限`:"权限设置已检查,没有需要变更的记录")}catch(t){g.error((t==null?void 0:t.message)||"批量设置访问操作失败")}finally{G.value=!1}}function it(t){const e=Array.isArray(t.dept_names)&&t.dept_names.length?t.dept_names.join(" / "):"未分部门",a=Number(t.disable)===1?" · 已禁用":"";return`${t.name} · ${e}${a}`}function ot(t){const e=Array.isArray(t==null?void 0:t.operators)?t.operators:[];return e.length?e.map(a=>`${a.name||`账号 ${a.id}`}${Number(a.disable)===1?"(已禁用)":""}`).join("、"):"仅原管理范围可操作"}function dt(t){const e=t!=null&&t.main_url?"官方链接已生成":"待生成链接",a=Array.isArray(t==null?void 0:t.operator_admin_ids)?t.operator_admin_ids.length:0;return a>0?`${e} · ${a} 人可操作`:e}function we(t){const e=new Set(m.member_options.map(a=>Number(a.id)));Z.value="",R.value=!1,Object.assign(b,t?{id:Number(t.id),name:t.name,fallback_url:t.fallback_url||"",status:Number(t.status),member_admin_ids:Array.isArray(t.member_admin_ids)?t.member_admin_ids.map(Number).filter(a=>e.has(a)):[],skip_verify:Number(t.skip_verify)===1?1:0,main_url:t.main_url||"",automation_config:Ze(t.automation_config)}:{id:0,name:"",fallback_url:"",status:1,member_admin_ids:[],skip_verify:0,main_url:"",automation_config:Ge()}),ie.value=!0}async function rt(){var a,i;if(D.value||R.value)return;Z.value="";const t=Ze(b.automation_config);t.reception_mode!=="scheduled"&&(t.reception_schedule=[]),t.welcome_mode!=="channel"&&(t.welcome={text:"",attachments:[]}),(t.welcome_mode!=="channel"||!t.welcome_schedule_enabled)&&(t.welcome_schedule=[]);const e=b.name.trim()?b.member_admin_ids.length?b.fallback_url.trim()&&!Sa(b.fallback_url.trim())?"兜底获客助手链接必须为有效的 HTTP/HTTPS 地址":m.automation_installed?Va(t,b.member_admin_ids):"":"请至少选择一名主接待成员":"请输入分流方案名称";if(e)return Z.value=e,(a=ke.value)==null||a.scrollTo({top:0,behavior:"smooth"}),g.warning(e);D.value=!0;try{const{automation_config:k,...V}=b,y=await ka({...V,name:b.name.trim(),fallback_url:b.fallback_url.trim(),...m.automation_installed?{automation_config:Pa(t)}:{}});if(m.automation_installed&&(y==null?void 0:y.automation_saved)!==!0)throw new Error("方案已提交,但服务端未确认标签和欢迎语配置保存成功,请刷新后重试");ie.value=!1,await j(),y!=null&&y.id&&(Y.value=Number(y.id)),y!=null&&y.sync_error?g.warning("方案已保存,企业微信多人范围将在后台自动重试同步"):g.success(b.id?"分流方案已保存":"分流方案和官方获客链接已创建")}catch(k){Z.value=(k==null?void 0:k.message)||(typeof k=="string"?k:"分流方案保存失败,请检查配置或稍后重试"),(i=ke.value)==null||i.scrollTo({top:0,behavior:"smooth"}),g.error(Z.value)}finally{D.value=!1}}async function ut(t){try{await ba.confirm(`删除“${t.name}”将同时永久删除企业微信后台中的官方获客链接,已投放的链接会失效且无法恢复。确认继续?`,"永久删除分流方案",{type:"warning",confirmButtonText:"永久删除",cancelButtonText:"取消"})}catch{return}_e.value=Number(t.id);try{await Na({id:Number(t.id)}),g.success("分流方案及企业微信官方获客链接已永久删除"),await j()}catch(e){g.error((e==null?void 0:e.message)||"删除失败")}finally{_e.value=0}}function mt(t){const e=Number(t.active_start)>0&&Number(t.active_end)>0?[Oe(t.active_start),Oe(t.active_end)]:[];Object.assign(P,{id:Number(t.id),name:t.name||"",userid:t.userid||"",daily_limit:Number(t.daily_limit)||0,status:Number(t.enabled)===1?1:0,active_range:e,remark:t.remark||""}),oe.value=!0}async function ct(){var t,e;K.value=!0;try{const a=await ha({...P,active_start:((t=P.active_range)==null?void 0:t[0])||"",active_end:((e=P.active_range)==null?void 0:e[1])||""});oe.value=!1,await j(),a!=null&&a.sync_error?g.warning("规则已保存,企业微信成员范围将在后台自动重试同步"):g.success("医助分流规则已保存")}catch(a){g.error((a==null?void 0:a.message)||"医助分流规则保存失败")}finally{K.value=!1}}async function _t(t,e){ye.value=Number(t.id);try{const a=await wa({id:Number(t.id),status:e?1:0});await j(),a!=null&&a.sync_error?g.warning("成员状态已保存,企业微信成员范围将在后台自动重试同步"):g.success("成员规则已保存,企微多人路由范围已重新计算")}catch(a){g.error((a==null?void 0:a.message)||"成员状态更新失败"),await j()}finally{ye.value=0}}async function Le(){ce.value=!0;try{const t=await Ca();t!=null&&t.has_link?g.success((t==null?void 0:t.message)||"API 验证通过:应用凭证、可信 IP 与获客助手权限均可用"):g.warning((t==null?void 0:t.message)||"API 权限可用,但当前应用还没有创建官方获客链接")}catch(t){g.error((t==null?void 0:t.message)||"获客助手 API 验证失败")}finally{ce.value=!1}}async function pt(){await j(),T.value==="customer-stats"&&await X()}function le(t,e){for(const a of e)if((t==null?void 0:t[a])!==void 0&&(t==null?void 0:t[a])!==null&&(t==null?void 0:t[a])!==""){const i=Number(t[a]);return Number.isFinite(i)?i:0}return 0}async function X(){var t,e;re.value=!0;try{const a=await ga({page_no:M.page_no,page_size:M.page_size,promotion_link_id:I.link_id?Number(I.link_id):void 0,userid:I.userid||void 0,chat_status:I.chat_status===""?void 0:I.chat_status==="messaged"?1:I.chat_status==="unknown"?2:0}),i=(a==null?void 0:a.summary)||(a==null?void 0:a.stats)||{},k=le(i,["customer_count","total_customers","customer_total","total"]),V=le(i,["messaged_customer_count","started_chat_count","chat_customer_count","message_customer_count","chatting_customers"]),y=["message_customer_rate","chat_customer_rate","messaged_rate","chat_rate"],$=y.some(d=>(i==null?void 0:i[d])!==void 0&&(i==null?void 0:i[d])!==null&&(i==null?void 0:i[d])!=="");Object.assign(N.summary,{customer_count:k,messaged_customer_count:V,message_customer_rate:$?le(i,y):k?V/k*100:0,received_message_count:le(i,["received_message_count","recv_msg_cnt","recv_msg_count","total_recv_msg_cnt","message_count"]),message_count_known_count:le(i,["message_count_known_count","exact_message_customer_count"])}),N.rows=Array.isArray(a==null?void 0:a.lists)?a.lists:Array.isArray(a==null?void 0:a.list)?a.list:Array.isArray(a==null?void 0:a.rows)?a.rows:[],M.total=Number((a==null?void 0:a.total)??(a==null?void 0:a.count)??((t=a==null?void 0:a.page)==null?void 0:t.total)??N.rows.length)||0;const h=(a==null?void 0:a.filters)||{},B=(a==null?void 0:a.link_options)||(h==null?void 0:h.link_options)||(h==null?void 0:h.links),J=(a==null?void 0:a.member_options)||(h==null?void 0:h.member_options)||(h==null?void 0:h.members);Array.isArray(B)&&(N.link_options=B),Array.isArray(J)&&(N.member_options=J);const L=N.rows.reduce((d,_)=>{const A=_.last_synced_at||_.last_sync_time||_.synced_at||_.sync_time||"";return Number(A||0)>Number(d||0)?A:d},""),F=((e=a==null?void 0:a.meta)==null?void 0:e.last_synced_at)||(a==null?void 0:a.last_synced_at)||L||N.meta.last_synced_at||"";Object.assign(N.meta,(a==null?void 0:a.meta)||{},{last_synced_at:F?Ae(F):""}),Ee.value=!0}catch(a){g.error((a==null?void 0:a.message)||"获客客户统计加载失败")}finally{re.value=!1}}function ft(){M.page_no=1,X()}function bt(){Object.assign(I,{link_id:"",userid:"",chat_status:""}),M.page_no=1,X()}function gt(){M.page_no=1,X()}async function vt(){var t,e,a;Ne.value=!0;try{const i=await $a({promotion_link_id:I.link_id?Number(I.link_id):void 0}),k=Number((i==null?void 0:i.scanned)??(i==null?void 0:i.customer_scanned)??((t=i==null?void 0:i.customers)==null?void 0:t.scanned)??0),V=Number((i==null?void 0:i.created)??(i==null?void 0:i.customer_created)??((e=i==null?void 0:i.customers)==null?void 0:e.created)??0),y=Number((i==null?void 0:i.updated)??(i==null?void 0:i.customer_updated)??((a=i==null?void 0:i.customers)==null?void 0:a.updated)??0);g.success((i==null?void 0:i.message)||`客户同步完成:扫描 ${O(k)} 位,新增 ${O(V)} 位,更新 ${O(y)} 位`),M.page_no=1,await Promise.all([j(),X()])}catch(i){g.error((i==null?void 0:i.message)||"获客客户同步失败")}finally{Ne.value=!1}}function Ce(t){var a;const e=Math.floor(Date.now()/1e3);return Number(t.enabled)!==1?{label:"已禁用",className:"is-muted"}: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&&Ue(t)>=Number(t.daily_limit)?{label:"今日已达上限",className:"is-waiting"}:Number((a=v.value)==null?void 0:a.status)===0?{label:"方案已停用",className:"is-muted"}:t.reception_available===!1||t.reception_available===0?{label:t.is_backup?"备用待命":"非接待时段",className:"is-waiting"}:t.is_backup?{label:"备用接待中",className:"is-ok"}:{label:"可参与分流",className:"is-ok"}}function Fe(t){const e=Ce(t).className==="is-ok";return t.is_in_remote_range?{label:e?"企微路由中":"待移出",className:e?"is-online":"is-offline"}:{label:e?"待同步":"未在路由范围",className:"is-offline"}}function Ue(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 yt(t,e){const a=new Set,i=d=>{d.forEach(_=>{const A=Number(_.id);A>0&&a.add(A),Array.isArray(_.children)&&i(_.children)})};i(Array.isArray(t)?t:[]);const k=[],V=new Set;for(const d of Array.isArray(e)?e:[]){const _=Number(d.id);_<=0||V.has(_)||(V.add(_),k.push({id:_,name:String(d.name||d.userid||`成员 ${_}`),userid:String(d.userid||""),display_dept_id:Number(d.display_dept_id||0),dept_ids:Array.isArray(d.dept_ids)?Array.from(new Set(d.dept_ids.map(Number).filter(A=>A>0))):[],dept_names:Array.isArray(d.dept_names)?d.dept_names.map(String).filter(Boolean):[]}))}const y=new Map;k.forEach(d=>{var q;const _=Number(d.display_dept_id||0),A=a.has(_)?_:d.dept_ids.find(U=>a.has(U))||0;y.has(A)||y.set(A,[]),(q=y.get(A))==null||q.push(d)});const $=new Set,h=d=>{const _=d.dept_names.length?d.dept_names.join(" / "):"未分部门",A=d.userid?`${_} · ${d.userid}`:_;return{value:d.id,label:d.name,kind:"member",detail:A,search_text:`${d.name} ${d.userid} ${d.dept_names.join(" ")}`.toLocaleLowerCase()}},B=(d,_)=>d.name.localeCompare(_.name,"zh-CN"),J=(d,_)=>{const A=[];for(const q of Array.isArray(d)?d:[]){const U=Number(q.id);if(U<=0)continue;const fe=String(q.name||`部门 ${U}`),ne=[..._,fe],be=J(Array.isArray(q.children)?q.children:[],ne),ge=[...y.get(U)||[]].sort(B);ge.forEach(H=>$.add(H.id));const Se=ge.map(h),se=[...be,...Se];if(!se.length)continue;const ve=se.reduce((H,l)=>H+(l.kind==="member"?1:Number(l.member_count||0)),0);A.push({value:`dept:${U}`,label:fe,kind:"department",disabled:!0,member_count:ve,search_text:`${ne.join(" ")} ${se.map(H=>H.search_text).join(" ")}`.toLocaleLowerCase(),children:se})}return A},L=J(Array.isArray(t)?t:[],[]),F=k.filter(d=>!$.has(d.id)).sort(B);if(F.length){const d=F.map(h);L.push({value:"dept:unassigned",label:"未分部门",kind:"department",disabled:!0,member_count:d.length,search_text:`未分部门 ${d.map(_=>_.search_text).join(" ")}`.toLocaleLowerCase(),children:d})}return L}function kt(t,e){const a=String(t||"").trim().toLocaleLowerCase();return a===""||e.search_text.includes(a)}function Nt(t){var i,k;const e=Array.isArray(t==null?void 0:t.member_admin_ids)?t.member_admin_ids:[],a=((k=(i=t==null?void 0:t.automation_config)==null?void 0:i.backup_member_admin_ids)==null?void 0:k.length)||0;return e.length?`${e.length} 名主接待${a?` · ${a} 名备用`:""}`:"未选择医助"}function ht(t){return`${Array.isArray(t.dept_names)&&t.dept_names.length?t.dept_names.join(" / "):"未分部门"} · ${t.userid||"未绑定 userid"}`}function wt(t){const e=t.department_name||t.dept_name||"",a=t.userid?` · ${t.userid}`:"";return e?`${t.name} · ${e}${a}`:`${t.name}${a}`}function ze(t){const e=t.external_userid_masked||t.customer_id_masked||t.customer_masked||t.customer_name_masked;return e?String(e):Ct(t.external_userid||t.customer_id||t.id)}function Ct(t){const e=String(t||"").trim();return e?e.includes("*")?e:e.length<=4?`${e.slice(0,1)}***`:e.length<=8?`${e.slice(0,2)}***${e.slice(-1)}`:`${e.slice(0,4)}****${e.slice(-4)}`:"-"}function $t(t){return t.link_name||t.source_link_name||t.promotion_link_name||"未匹配来源链接"}function xt(t){const e=t.link_id||t.remote_link_id||t.source_link_id;return e?`链接 ID:${e}`:"暂无链接 ID"}function $e(t){return le(t,["received_message_count","recv_msg_cnt","message_count","received_count"])}function je(t){const e=t.message_count_known??t.message_count_exact??t.count_known;return e!=null?e===!0||e===1||e==="1"||e==="true":$e(t)>0}function xe(t){const e=Number(t.chat_status);if(e===2)return"unknown";const a=t.has_messaged??t.has_message??t.messaged;return a!=null?a===!0||a===1||a==="1"||a==="true"||a==="messaged"?"messaged":"silent":e===1||$e(t)>0?"messaged":"silent"}function At(t){const e=xe(t);return e==="messaged"?"已发消息":e==="unknown"?"状态未知":"未发消息"}function St(t){if(je(t))return O($e(t));const e=xe(t);return e==="silent"?"0":e==="unknown"?"未知":"待回调"}function Be(t){return t.last_message_at||t.last_chat_time||t.last_message_time||t.last_msg_time||t.event_time||""}function Ae(t){if(t==null||t===""||t===0||t==="0")return"-";if(typeof t=="number"||/^\d+$/.test(String(t))){const e=Number(t),a=new Date(e>1e11?e:e*1e3);return Number.isNaN(a.getTime())?"-":a.toLocaleString("zh-CN",{hour12:!1}).replaceAll("/","-")}return String(t).replace("T"," ").replace(/Z$/,"").slice(0,19)}function Vt(t){return`${Number(t||0).toFixed(1)}%`}function O(t){return Number(t||0).toLocaleString("zh-CN")}function Oe(t){const e=new Date(Number(t||0)*1e3),a=i=>String(i).padStart(2,"0");return`${e.getFullYear()}-${a(e.getMonth()+1)}-${a(e.getDate())} ${a(e.getHours())}:${a(e.getMinutes())}:${a(e.getSeconds())}`}async function qe(t,e){if(!t)return g.warning(`${e}暂无内容`);try{await navigator.clipboard.writeText(t)}catch{const a=document.createElement("textarea");a.value=t,a.style.position="fixed",a.style.opacity="0",document.body.appendChild(a),a.select();const i=document.execCommand("copy");if(a.remove(),!i)throw new Error("copy command failed")}g.success(`${e}已复制`)}async function Pt(){await j()}return It(async()=>{await j()}),(t,e)=>{var H;const a=Tt,i=Lt,k=qt,V=Ht,y=Yt,$=Wt,h=Gt,B=Zt,J=Xt,L=aa,F=ta,d=ea,_=na,A=sa,q=da,U=ra,fe=ua,ne=ma,be=_a,ge=ca,Se=pa,se=fa,ve=Dt;return Ke((u(),p("div",Da,[n("header",Ea,[n("div",Ta,[n("span",Ma,[s(a,null,{default:o(()=>[s(f(Et))]),_:1})]),e[38]||(e[38]=n("div",null,[n("h1",null,"企业微信获客助手"),n("p",null,"一个方案保留一条企业微信官方直链,由企业微信在多个可用医助之间原生路由")],-1))]),n("div",La,[n("span",Fa,[s(a,null,{default:o(()=>[s(f(Mt))]),_:1}),c(r(m.meta.scope_label||"当前数据范围"),1)]),m.meta.generated_at?(u(),p("span",Ua,"更新于 "+r(m.meta.generated_at),1)):S("",!0),s(i,{icon:f(Re),loading:me.value||re.value,onClick:pt},{default:o(()=>[...e[39]||(e[39]=[c("刷新",-1)])]),_:1},8,["icon","loading"])])]),n("section",za,[n("article",ja,[n("span",Ba,[s(a,null,{default:o(()=>[s(f(Ft))]),_:1})]),n("div",null,[e[40]||(e[40]=n("small",null,"内部应用",-1)),n("strong",null,r(m.summary.configured_apps),1),e[41]||(e[41]=n("p",null,"直接读取服务器环境配置",-1))])]),n("article",Oa,[n("span",qa,[s(a,null,{default:o(()=>[s(f(Ut))]),_:1})]),n("div",null,[e[42]||(e[42]=n("small",null,"分流方案",-1)),n("strong",null,r(m.summary.pool_count),1),e[43]||(e[43]=n("p",null,"每个方案对应一个官方链接",-1))])]),n("article",Ka,[n("span",Ra,[s(a,null,{default:o(()=>[s(f(zt))]),_:1})]),n("div",null,[e[44]||(e[44]=n("small",null,"官方链接",-1)),n("strong",null,r(m.summary.online_links),1),e[45]||(e[45]=n("p",null,"链接不变,成员范围自动更新",-1))])]),n("article",Ja,[n("span",Ha,[s(a,null,{default:o(()=>[s(f(jt))]),_:1})]),n("div",null,[e[46]||(e[46]=n("small",null,"今日实际获客",-1)),n("strong",null,r(m.summary.today_clicks),1),e[47]||(e[47]=n("p",null,"按企业微信回调确认承接成员",-1))])])]),n("section",Wa,[n("nav",Ya,[n("button",{class:E({active:T.value==="links"}),onClick:e[0]||(e[0]=l=>T.value="links")},[s(a,null,{default:o(()=>[s(f(Je))]),_:1}),e[48]||(e[48]=c("获客助手链接 ",-1))],2),n("button",{class:E({active:T.value==="customer-stats"}),onClick:e[1]||(e[1]=l=>T.value="customer-stats")},[s(a,null,{default:o(()=>[s(f(He))]),_:1}),e[49]||(e[49]=c("获客客户统计 ",-1))],2),n("button",{class:E({active:T.value==="configuration"}),onClick:e[2]||(e[2]=l=>T.value="configuration")},[s(a,null,{default:o(()=>[s(f(Bt))]),_:1}),e[50]||(e[50]=c("应用配置 ",-1))],2),n("button",{class:E({active:T.value==="install"}),onClick:e[3]||(e[3]=l=>T.value="install")},[s(a,null,{default:o(()=>[s(f(Pe))]),_:1}),e[51]||(e[51]=c("JS 安装 ",-1))],2)]),T.value==="links"?(u(),p("div",Ga,[n("div",Za,[e[54]||(e[54]=n("div",null,[n("h2",null,"获客助手分流方案"),n("p",null,"选择几名医助就生成几条成员规则;官方链接只在方案顶部复制,成员行不重复展示链接。")],-1)),n("div",Xa,[z.value.length?(u(),p("span",Qa,"已选 "+r(z.value.length)+" 个方案",1)):S("",!0),s(i,{icon:f(Ie),disabled:!z.value.length,onClick:e[4]||(e[4]=l=>Me())},{default:o(()=>[...e[52]||(e[52]=[c("批量设置访问操作",-1)])]),_:1},8,["icon","disabled"]),s(i,{type:"primary",icon:f(We),onClick:e[5]||(e[5]=l=>we())},{default:o(()=>[...e[53]||(e[53]=[c("新建分流方案",-1)])]),_:1},8,["icon"])])]),m.pools.length?(u(),p("div",el,[n("aside",tl,[(u(!0),p(Q,null,ee(m.pools,l=>(u(),p("div",{key:l.id,class:E(["pool-select-row",{active:Number(l.id)===Y.value}])},[s(k,{"model-value":z.value.includes(Number(l.id)),disabled:!l.can_manage_access,"aria-label":`选择方案 ${l.name}`,onChange:ue=>nt(l,ue),onClick:e[6]||(e[6]=Ot(()=>{},["stop"]))},null,8,["model-value","disabled","aria-label","onChange"]),n("button",{type:"button",class:"pool-item",onClick:ue=>Y.value=Number(l.id)},[n("span",{class:E(["pool-status",Number(l.status)===1?"online":"offline"])},null,2),n("span",null,[n("strong",null,r(l.name),1),n("small",null,r(Nt(l))+" · "+r(dt(l)),1)]),s(a,null,{default:o(()=>[s(f(Kt))]),_:1})],8,al)],2))),128))]),n("div",ll,[v.value?(u(),p("div",nl,[n("div",null,[n("div",sl,[n("h3",null,r(v.value.name),1),n("span",{class:E(["status-tag",Number(v.value.status)===1?"is-online":"is-offline"])},r(Number(v.value.status)===1?"运行中":"已停用"),3),n("span",il,r(v.value.dept_name||"未分部门")+" · "+r(v.value.owner_name||"系统"),1)]),n("p",null,"公开键:"+r(v.value.public_key),1)]),n("div",ol,[s(i,{icon:f(Ye),loading:ce.value,onClick:Le},{default:o(()=>[...e[55]||(e[55]=[c("验证 API",-1)])]),_:1},8,["icon","loading"]),s(i,{icon:f(Pe),disabled:!v.value.main_url,onClick:e[7]||(e[7]=l=>qe(v.value.main_url,"官方获客链接"))},{default:o(()=>[...e[56]||(e[56]=[c("复制链接",-1)])]),_:1},8,["icon","disabled"]),s(i,{icon:f(Pe),onClick:e[8]||(e[8]=l=>qe(v.value.install_code,"JS 安装代码"))},{default:o(()=>[...e[57]||(e[57]=[c("复制 JS",-1)])]),_:1},8,["icon"]),v.value.can_manage_access?(u(),w(i,{key:0,icon:f(Ie),onClick:e[9]||(e[9]=l=>Me([Number(v.value.id)]))},{default:o(()=>[...e[58]||(e[58]=[c("设置访问操作",-1)])]),_:1},8,["icon"])):S("",!0),v.value.can_operate?(u(),w(i,{key:1,icon:f(Rt),onClick:e[10]||(e[10]=l=>we(v.value))},{default:o(()=>[...e[59]||(e[59]=[c("编辑方案",-1)])]),_:1},8,["icon"])):S("",!0),v.value.can_delete?(u(),w(i,{key:2,type:"danger",plain:"",icon:f(Jt),loading:_e.value===Number(v.value.id),disabled:_e.value>0,onClick:e[11]||(e[11]=l=>ut(v.value))},{default:o(()=>[...e[60]||(e[60]=[c("删除",-1)])]),_:1},8,["icon","loading","disabled"])):S("",!0)])])):S("",!0),v.value.migration_state==="needs_resolution"?(u(),w(V,{key:1,class:"legacy-sync-alert",type:"warning","show-icon":"",closable:!1,title:"检测到旧版方案存在多个官方链接",description:"当前显示最新链接;保存方案后,其余旧链接只会在本地下线,企业微信端与历史客户归因仍会保留。"})):S("",!0),s(V,{class:"legacy-sync-alert",type:"info","show-icon":"",closable:!1,title:"企业微信原生多人路由",description:"当前全部可用医助会同时写入官方链接的成员范围,由企业微信在打开和添加阶段直接进行多人路由。回调只用于统计实际承接结果,并在禁用、过期或达到上限后更新成员范围。"}),s(J,{data:Qe.value,class:"link-table",stripe:""},{empty:o(()=>[s(B,{"image-size":72,description:"编辑方案并选择获客医助"})]),default:o(()=>[s($,{label:"推广成员","min-width":"210",fixed:"left"},{default:o(({row:l})=>[n("div",dl,[n("strong",null,[c(r(l.name||l.userid)+" ",1),l.is_backup?(u(),w(y,{key:0,size:"small",type:"warning",effect:"plain"},{default:o(()=>[...e[61]||(e[61]=[c("备用",-1)])]),_:1})):S("",!0)]),n("small",null,r(ht(l)),1)])]),_:1}),s($,{label:"企微范围同步",width:"130",align:"center"},{default:o(({row:l})=>[n("span",{class:E(["status-tag",Fe(l).className])},r(Fe(l).label),3),Number(l.sync_status)===3?(u(),p("div",rl,"同步失败,后台重试中")):S("",!0)]),_:1}),s($,{label:"今日 / 上限",width:"125",align:"center"},{default:o(({row:l})=>[c(r(Ue(l))+" / "+r(Number(l.daily_limit)?l.daily_limit:"不限"),1)]),_:1}),s($,{label:"累计获客",prop:"total_count",width:"105",align:"center"}),s($,{label:"当前可用性","min-width":"130"},{default:o(({row:l})=>[n("span",{class:E(["availability",Ce(l).className])},r(Ce(l).label),3)]),_:1}),s($,{label:"上线",width:"90",align:"center"},{default:o(({row:l})=>[s(h,{"model-value":Number(l.enabled)===1,disabled:!v.value.can_operate,loading:ye.value===Number(l.id),onChange:ue=>_t(l,ue)},null,8,["model-value","disabled","loading","onChange"])]),_:1}),s($,{label:"操作","min-width":"100",fixed:"right"},{default:o(({row:l})=>[v.value.can_operate?(u(),w(i,{key:0,type:"primary",link:"",onClick:ue=>mt(l)},{default:o(()=>[...e[62]||(e[62]=[c("编辑规则",-1)])]),_:1},8,["onClick"])):S("",!0)]),_:1})]),_:1},8,["data"])])])):(u(),w(B,{key:1,description:"创建方案并选择多个医助,保存后自动生成一个企业微信官方获客链接"},{default:o(()=>[s(i,{type:"primary",icon:f(We),onClick:e[12]||(e[12]=l=>we())},{default:o(()=>[...e[63]||(e[63]=[c("创建第一个方案",-1)])]),_:1},8,["icon"])]),_:1}))])):T.value==="customer-stats"?(u(),p("div",ul,[n("div",ml,[e[65]||(e[65]=n("div",null,[n("h2",null,"获客客户消息统计"),n("p",null,"统计当前权限范围内由获客助手链接添加的客户,以及客户向承接成员发送消息的情况。")],-1)),n("div",cl,[N.meta.last_synced_at?(u(),p("span",_l,"最近同步 "+r(N.meta.last_synced_at),1)):S("",!0),s(i,{type:"primary",icon:f(Re),loading:Ne.value,onClick:vt},{default:o(()=>[...e[64]||(e[64]=[c("同步客户",-1)])]),_:1},8,["icon","loading"])])]),n("section",pl,[n("article",fl,[n("span",bl,[s(a,null,{default:o(()=>[s(f(Ie))]),_:1})]),n("div",null,[e[66]||(e[66]=n("small",null,"获客客户数",-1)),n("strong",null,r(O(N.summary.customer_count)),1),e[67]||(e[67]=n("p",null,"当前筛选范围内的去重客户",-1))])]),n("article",gl,[n("span",vl,[s(a,null,{default:o(()=>[s(f(Qt))]),_:1})]),n("div",null,[e[68]||(e[68]=n("small",null,"已发消息客户数",-1)),n("strong",null,r(O(N.summary.messaged_customer_count)),1),e[69]||(e[69]=n("p",null,"至少发送过一条消息",-1))])]),n("article",yl,[n("span",kl,[s(a,null,{default:o(()=>[s(f(He))]),_:1})]),n("div",null,[e[70]||(e[70]=n("small",null,"消息客户率",-1)),n("strong",null,r(Vt(N.summary.message_customer_rate)),1),e[71]||(e[71]=n("p",null,"已发消息客户占获客客户比例",-1))])]),n("article",Nl,[n("span",hl,[s(a,null,{default:o(()=>[s(f(Je))]),_:1})]),n("div",null,[e[72]||(e[72]=n("small",null,"累计接收消息数",-1)),n("strong",null,r(O(N.summary.received_message_count)),1),n("p",null,"已精确统计 "+r(O(N.summary.message_count_known_count))+" 位客户",1)])])]),m.config.callback_ready?S("",!0):(u(),w(V,{key:0,class:"chatkey-alert",type:"warning","show-icon":"",closable:!1,title:"消息次数回调尚未配置完成",description:"复用企业微信自建应用现有的“API 接收消息”地址即可,无需新增第二个回调;请确保该地址为 /api/qywx/external-contact/notify,且服务器 Token、AESKey 与企微后台一致。未完成前无法自动累计成员获客数量,也无法在成员达到上限后自动更新官方范围。"})),s(V,{class:"chatkey-alert",type:"info","show-icon":"",closable:!1,title:"获客助手通过事件与 ChatKey 返回收消息次数",description:"本功能复用现有回调并按事件类型处理 customer_acquisition,不会占用第二个回调。客户首次发消息会推送 customer_start_chat;累计第 3、5、10 次时推送 message_from_customer,服务端需在 30 分钟内用 ChatKey 查询成员、客户、获客链接和累计收消息次数。"}),n("div",wl,[s(_,{model:I,inline:"","label-position":"top"},{default:o(()=>[s(d,{label:"来源链接"},{default:o(()=>[s(F,{modelValue:I.link_id,"onUpdate:modelValue":e[13]||(e[13]=l=>I.link_id=l),clearable:"",filterable:"",placeholder:"全部链接"},{default:o(()=>[(u(!0),p(Q,null,ee(at.value,l=>(u(),w(L,{key:String(l.id),label:l.name,value:l.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(d,{label:"承接成员"},{default:o(()=>[s(F,{modelValue:I.userid,"onUpdate:modelValue":e[14]||(e[14]=l=>I.userid=l),clearable:"",filterable:"",placeholder:"全部成员"},{default:o(()=>[(u(!0),p(Q,null,ee(lt.value,l=>(u(),w(L,{key:l.userid||String(l.id),label:wt(l),value:l.userid||String(l.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),s(d,{label:"聊天状态"},{default:o(()=>[s(F,{modelValue:I.chat_status,"onUpdate:modelValue":e[15]||(e[15]=l=>I.chat_status=l),clearable:"",placeholder:"全部状态"},{default:o(()=>[s(L,{label:"已发过消息",value:"messaged"}),s(L,{label:"未发过消息",value:"silent"}),s(L,{label:"状态未知",value:"unknown"})]),_:1},8,["modelValue"])]),_:1}),s(d,{class:"filter-actions"},{default:o(()=>[s(i,{type:"primary",icon:f(la),loading:re.value,onClick:ft},{default:o(()=>[...e[73]||(e[73]=[c("查询",-1)])]),_:1},8,["icon","loading"]),s(i,{onClick:bt},{default:o(()=>[...e[74]||(e[74]=[c("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])]),Ke((u(),w(J,{data:N.rows,class:"customer-table",stripe:""},{empty:o(()=>[s(B,{"image-size":72,description:"当前筛选范围暂无获客客户数据"})]),default:o(()=>[s($,{label:"客户标识(已脱敏)","min-width":"190",fixed:"left"},{default:o(({row:l})=>[n("span",{class:"customer-identifier",title:ze(l)},r(ze(l)),9,Cl)]),_:1}),s($,{label:"来源链接","min-width":"190"},{default:o(({row:l})=>[n("div",$l,[n("strong",null,r($t(l)),1),n("small",null,r(xt(l)),1)])]),_:1}),s($,{label:"承接成员 / 部门","min-width":"175"},{default:o(({row:l})=>[n("div",xl,[n("strong",null,r(l.member_name||l.owner_name||"未匹配成员"),1),n("small",null,r(l.department_name||l.dept_name||"未分部门")+" · "+r(l.userid||"未绑定企微账号"),1)])]),_:1}),s($,{label:"客户开口",width:"110",align:"center"},{default:o(({row:l})=>[n("span",{class:E(["message-state",`is-${xe(l)}`])},r(At(l)),3)]),_:1}),s($,{label:"累计消息",width:"100",align:"right"},{default:o(({row:l})=>[n("strong",{class:E(["message-count",{muted:!je(l)}])},r(St(l)),3)]),_:1}),s($,{label:"最近同步时间","min-width":"165"},{default:o(({row:l})=>[c(r(Ae(l.last_synced_at||l.last_sync_time||l.synced_at||l.sync_time)),1)]),_:1}),s($,{label:"最近收消息事件","min-width":"165"},{default:o(({row:l})=>[n("span",{class:E({muted:!Be(l)})},r(Ae(Be(l))),3)]),_:1})]),_:1},8,["data"])),[[ve,re.value]]),n("div",Al,[n("span",null,"共 "+r(O(M.total))+" 位客户",1),s(A,{"current-page":M.page_no,"onUpdate:currentPage":e[16]||(e[16]=l=>M.page_no=l),"page-size":M.page_size,"onUpdate:pageSize":e[17]||(e[17]=l=>M.page_size=l),background:"",layout:"sizes, prev, pager, next","page-sizes":[10,20,50,100],total:M.total,onCurrentChange:X,onSizeChange:gt},null,8,["current-page","page-size","total"])])])):T.value==="configuration"?(u(),p("div",Sl,[e[83]||(e[83]=n("div",{class:"section-heading"},[n("div",null,[n("h2",null,"企业微信内部应用配置"),n("p",null,"直接读取服务器现有的 work_wechat 配置,密钥不会返回浏览器,也不需要第三方应用授权。")])],-1)),n("div",{class:E(["configuration-panel",m.config.ready?"is-ready":"is-pending"])},[n("div",Vl,[n("span",null,[s(a,null,{default:o(()=>[(u(),w(ia(m.config.ready?f(Ye):f(oa))))]),_:1})]),n("div",null,[n("strong",null,r(m.config.ready?"内部应用已就绪":"内部应用配置不完整"),1),m.config.ready?(u(),p("p",Pl,"已识别 CorpID 与应用 Secret;点击“验证 API”可同时检查可信 IP、获客助手开通状态和应用权限。")):(u(),p("p",Il,"请补齐服务器 .env 的 [work_wechat] 配置;页面不会展示 Secret 内容。"))])]),(H=m.config.missing)!=null&&H.length?(u(),p("div",Dl,[e[75]||(e[75]=c(" 缺少:",-1)),(u(!0),p(Q,null,ee(m.config.missing,l=>(u(),p("code",{key:l},r(l),1))),128))])):S("",!0),n("dl",El,[n("div",null,[e[76]||(e[76]=n("dt",null,"企业 CorpID",-1)),n("dd",null,r(m.config.corp_id_masked||"未配置"),1),n("span",null,r(m.config.corp_id_masked?"已识别":"缺失"),1)]),n("div",null,[e[77]||(e[77]=n("dt",null,"应用 AgentID",-1)),n("dd",null,r(m.config.agent_id||"未配置"),1),n("span",null,r(m.config.agent_id?"已识别":"缺失"),1)]),n("div",null,[e[78]||(e[78]=n("dt",null,"应用 Secret",-1)),e[79]||(e[79]=n("dd",null,"仅保存在服务器环境变量中",-1)),n("span",null,r(m.config.secret_configured?"已配置":"缺失"),1)]),n("div",null,[e[80]||(e[80]=n("dt",null,"消息回调地址",-1)),n("dd",null,r(m.config.callback_url||"未生成"),1),n("span",null,r(m.config.callback_ready?"已配置密钥":"待配置 Token/AESKey"),1)])]),n("div",Tl,[s(i,{type:"primary",loading:ce.value,onClick:Le},{default:o(()=>[...e[81]||(e[81]=[c("验证获客助手 API",-1)])]),_:1},8,["loading"]),m.config.official_doc?(u(),w(q,{key:0,href:m.config.official_doc,target:"_blank",type:"primary"},{default:o(()=>[...e[82]||(e[82]=[c("查看企业微信官方文档",-1)])]),_:1},8,["href"])):S("",!0)])],2)])):(u(),p("div",Ml,[n("div",Ll,[e[84]||(e[84]=n("div",null,[n("h2",null,"安装 JS 与浮窗客服"),n("p",null,"为每个分流方案配置独立浮窗;基础脚本仍只负责展示入口、捕获点击并请求服务端分流。")],-1)),s(F,{modelValue:ae.value,"onUpdate:modelValue":e[18]||(e[18]=l=>ae.value=l),placeholder:"选择分流方案",class:"install-pool-select"},{default:o(()=>[(u(!0),p(Q,null,ee(m.pools,l=>(u(),w(L,{key:l.id,label:l.name,value:Number(l.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),he.value?(u(),w(xa,{key:Number(he.value.id),pool:he.value,onSaved:Pt},null,8,["pool"])):(u(),w(B,{key:1,description:"请先创建分流方案,系统会自动生成 JS 安装代码"}))]))]),s(ne,{modelValue:ie.value,"onUpdate:modelValue":e[27]||(e[27]=l=>ie.value=l),title:b.id?"编辑分流方案":"新建分流方案",width:"1000px",class:"promotion-pool-dialog","destroy-on-close":"","close-on-click-modal":!1,"close-on-press-escape":!D.value&&!R.value,"show-close":!D.value&&!R.value},{footer:o(()=>[R.value?(u(),p("span",Bl,"正在处理标签或素材,请稍候")):S("",!0),s(i,{disabled:D.value||R.value,onClick:e[26]||(e[26]=l=>ie.value=!1)},{default:o(()=>[...e[86]||(e[86]=[c("取消",-1)])]),_:1},8,["disabled"]),s(i,{type:"primary",loading:D.value,disabled:R.value,onClick:rt},{default:o(()=>[c(r(b.id?"保存方案":"保存并生成链接"),1)]),_:1},8,["loading","disabled"])]),default:o(()=>[n("div",{ref_key:"poolFormScroll",ref:ke,class:"pool-form-scroll"},[Z.value?(u(),w(V,{key:0,class:"pool-form-error",title:Z.value,type:"error","show-icon":"",closable:!1,role:"alert"},null,8,["title"])):S("",!0),s(_,{"label-position":"top",disabled:D.value},{default:o(()=>[s(d,{label:"方案名称",required:""},{default:o(()=>[s(U,{modelValue:b.name,"onUpdate:modelValue":e[19]||(e[19]=l=>b.name=l),disabled:D.value,maxlength:"60","show-word-limit":"",placeholder:"例如:官网咨询分流"},null,8,["modelValue","disabled"])]),_:1}),s(d,{label:"主接待成员(获客医助)",required:""},{default:o(()=>[s(fe,{modelValue:b.member_admin_ids,"onUpdate:modelValue":e[20]||(e[20]=l=>b.member_admin_ids=l),data:Te.value,props:et,"default-expanded-keys":tt.value,"filter-node-method":kt,disabled:D.value,"node-key":"value",multiple:"",filterable:"",clearable:"","show-checkbox":"","collapse-tags":"","collapse-tags-tooltip":"","max-collapse-tags":2,"multiple-limit":500,"render-after-expand":!1,placeholder:"按部门展开,或搜索姓名 / 部门 / 企微 userid",style:{width:"100%"}},{default:o(({data:l})=>[n("span",{class:E(["member-tree-option",`is-${l.kind}`])},[n("span",Fl,r(l.label),1),l.kind==="department"?(u(),p("span",Ul,r(l.member_count)+" 人",1)):(u(),p("span",zl,r(l.detail),1))],2)]),_:1},8,["modelValue","data","default-expanded-keys","disabled"]),n("span",jl,"已选 "+r(b.member_admin_ids.length)+" 名;保存后会为每名医助生成一条成员规则,官方链接地址始终只有一个。",1)]),_:1}),s(d,{label:"添加客户时跳过验证"},{default:o(()=>[s(h,{modelValue:b.skip_verify,"onUpdate:modelValue":e[21]||(e[21]=l=>b.skip_verify=l),disabled:D.value,"active-value":1,"inactive-value":0,"active-text":"跳过验证","inactive-text":"需要验证"},null,8,["modelValue","disabled"])]),_:1}),s(d,{label:"兜底获客助手链接"},{default:o(()=>[s(U,{modelValue:b.fallback_url,"onUpdate:modelValue":e[22]||(e[22]=l=>b.fallback_url=l),disabled:D.value,placeholder:"可选;仅供旧版兼容跳转使用"},null,8,["modelValue","disabled"]),e[85]||(e[85]=n("span",{class:"form-tip"},"新生成的官方直链不经过本站跳转;此项仅兼容旧安装代码。",-1))]),_:1}),s(d,{label:"运行状态"},{default:o(()=>[s(h,{modelValue:b.status,"onUpdate:modelValue":e[23]||(e[23]=l=>b.status=l),disabled:D.value,"active-value":1,"inactive-value":0,"active-text":"运行","inactive-text":"停用"},null,8,["modelValue","disabled"])]),_:1}),m.automation_installed?(u(),w(Aa,{key:0,modelValue:b.automation_config,"onUpdate:modelValue":e[24]||(e[24]=l=>b.automation_config=l),"main-member-ids":b.member_admin_ids,members:m.member_options,disabled:D.value,onBusy:e[25]||(e[25]=l=>R.value=l)},null,8,["modelValue","main-member-ids","members","disabled"])):(u(),w(V,{key:1,type:"warning","show-icon":"",closable:!1,title:"自动化配置尚未安装",description:"请先在服务端执行 add_wecom_promotion_automation.sql 并部署消费进程及定时调度,即可设置接待时段、标签、备注和欢迎语。当前仍可保存原有分流方案。"}))]),_:1},8,["disabled"])],512)]),_:1},8,["modelValue","title","close-on-press-escape","show-close"]),s(ne,{modelValue:de.value,"onUpdate:modelValue":e[31]||(e[31]=l=>de.value=l),title:"批量设置他人访问操作",width:"620px","destroy-on-close":"","close-on-click-modal":!1,"close-on-press-escape":!G.value},{footer:o(()=>[s(i,{disabled:G.value,onClick:e[30]||(e[30]=l=>de.value=!1)},{default:o(()=>[...e[92]||(e[92]=[c("取消",-1)])]),_:1},8,["disabled"]),s(i,{type:"primary",loading:G.value,onClick:st},{default:o(()=>[c(r(x.action==="grant"?"批量添加":"批量移除"),1)]),_:1},8,["loading"])]),default:o(()=>[s(V,{type:"info","show-icon":"",closable:!1,title:`将设置 ${x.pool_ids.length} 个分流方案`,description:"被添加的账号可以查看并编辑方案、成员规则和浮窗配置;不能删除方案,也不能继续分配操作权限。"},null,8,["title"]),s(_,{class:"access-form","label-position":"top"},{default:o(()=>[s(d,{label:"设置方式",required:""},{default:o(()=>[s(ge,{modelValue:x.action,"onUpdate:modelValue":e[28]||(e[28]=l=>x.action=l),disabled:G.value},{default:o(()=>[s(be,{value:"grant"},{default:o(()=>[...e[87]||(e[87]=[c("添加操作人",-1)])]),_:1}),s(be,{value:"revoke"},{default:o(()=>[...e[88]||(e[88]=[c("移除操作人",-1)])]),_:1})]),_:1},8,["modelValue","disabled"]),e[89]||(e[89]=n("span",{class:"form-tip"},"批量添加不会覆盖各方案已有操作人;批量移除只撤销本次选中的账号。",-1))]),_:1}),s(d,{label:"选择账号",required:""},{default:o(()=>[s(F,{modelValue:x.operator_admin_ids,"onUpdate:modelValue":e[29]||(e[29]=l=>x.operator_admin_ids=l),multiple:"",filterable:"",clearable:"","collapse-tags":"","collapse-tags-tooltip":"","max-collapse-tags":3,"multiple-limit":100,disabled:G.value,placeholder:"搜索姓名或部门",style:{width:"100%"}},{default:o(()=>[(u(!0),p(Q,null,ee(m.operator_options,l=>(u(),w(L,{key:l.id,label:it(l),value:Number(l.id),disabled:x.action==="grant"&&!l.can_grant},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled"]),e[90]||(e[90]=n("span",{class:"form-tip"},"添加时可选择当前管理范围内的启用账号;授权后账号会自动获得本页面入口,且只能访问已授权方案。",-1))]),_:1}),pe.value.length?(u(),p("div",Ol,[e[91]||(e[91]=n("strong",null,"当前授权",-1)),(u(!0),p(Q,null,ee(pe.value.slice(0,5),l=>(u(),p("div",{key:l.id},[n("span",null,r(l.name),1),n("small",null,r(ot(l)),1)]))),128)),pe.value.length>5?(u(),p("p",ql,"另有 "+r(pe.value.length-5)+" 个方案",1)):S("",!0)])):S("",!0)]),_:1})]),_:1},8,["modelValue","close-on-press-escape"]),s(ne,{modelValue:oe.value,"onUpdate:modelValue":e[37]||(e[37]=l=>oe.value=l),title:"编辑医助分流规则",width:"560px","destroy-on-close":"","close-on-click-modal":!1},{footer:o(()=>[s(i,{disabled:K.value,onClick:e[36]||(e[36]=l=>oe.value=!1)},{default:o(()=>[...e[94]||(e[94]=[c("取消",-1)])]),_:1},8,["disabled"]),s(i,{type:"primary",loading:K.value,onClick:ct},{default:o(()=>[...e[95]||(e[95]=[c("保存规则",-1)])]),_:1},8,["loading"])]),default:o(()=>[s(_,{"label-position":"top"},{default:o(()=>[s(d,{label:"获客医助"},{default:o(()=>[s(U,{"model-value":P.name?`${P.name} · ${P.userid}`:P.userid,readonly:""},null,8,["model-value"])]),_:1}),s(d,{label:"每日获客上限"},{default:o(()=>[s(Se,{modelValue:P.daily_limit,"onUpdate:modelValue":e[32]||(e[32]=l=>P.daily_limit=l),min:0,max:1e6,disabled:K.value,style:{width:"100%"}},null,8,["modelValue","disabled"]),e[93]||(e[93]=n("span",{class:"form-tip"},"0 表示不限;数量按实际获客回调累计,达到上限后会从企微官方成员范围移除。",-1))]),_:1}),s(d,{label:"有效时间"},{default:o(()=>[s(se,{modelValue:P.active_range,"onUpdate:modelValue":e[33]||(e[33]=l=>P.active_range=l),type:"datetimerange","range-separator":"至","start-placeholder":"开始时间","end-placeholder":"结束时间","value-format":"YYYY-MM-DD HH:mm:ss",disabled:K.value,style:{width:"100%"}},null,8,["modelValue","disabled"])]),_:1}),s(d,{label:"上线状态"},{default:o(()=>[s(h,{modelValue:P.status,"onUpdate:modelValue":e[34]||(e[34]=l=>P.status=l),"active-value":1,"inactive-value":0,"active-text":"启用","inactive-text":"禁用",disabled:K.value},null,8,["modelValue","disabled"])]),_:1}),s(d,{label:"备注"},{default:o(()=>[s(U,{modelValue:P.remark,"onUpdate:modelValue":e[35]||(e[35]=l=>P.remark=l),type:"textarea",rows:2,maxlength:"255","show-word-limit":"",disabled:K.value},null,8,["modelValue","disabled"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])),[[ve,me.value]])}}}),Ql=Ia(Rl,[["__scopeId","data-v-8768544a"]]);export{Ql as default};
|