Files
zyt/server/public/admin/assets/qywx-DZgrwl8-.js
T
2026-05-06 18:22:24 +08:00

2 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{K as Yt,J as te,T as ee,i as le,D as ae,B as se,C as ne,P as oe,af as ie,Q as re,M as ue,N as de,q as me,r as ce,L as fe,g as _e,V as pe,ab as ge,ac as ye,R as ve,e as xe,ag as be,ah as we,a9 as he,aa as Se}from"./element-plus-B7Dx6hR2.js";import{_ as ke}from"./index.vue_vue_type_script_setup_true_lang-Clh1LnRz.js";import{w as St}from"./@vue/runtime-dom-CEiKlVMn.js";import{Z as Ce,_ as Ve,K as it,V as Ee}from"./@element-plus/icons-vue-C25ce6PD.js";import{u as Te}from"./usePaging-BIG1oWvJ.js";import{r as z,i as A,_ as Ae}from"./index-CMjmnkXt.js";import{f as Ne,b as ze,d as qe,ak as u,I as c,a,aN as l,J as n,H as N,F as V,ap as E,O as d,G as v,aP as De,A as Y}from"./@vue/runtime-core-tF_2qJHK.js";import{r as I,y as x,a as $e,n as T}from"./@vue/reactivity-BmZ-20sQ.js";import{Q as r,p as Le,o as Ie}from"./@vue/shared-mAAVTE9n.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-BjeWxBI0.js";import"./pinia-CTWOnonq.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-Da2f2eD_.js";import"./@vueuse/shared-Bl-RnC0s.js";import"./css-color-function-DI01JAaZ.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-yVHyDRAS.js";import"./tslib-BDyQ-Jie.js";import"./zrender-C0YiHEZX.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-Bm7NQW9r.js";function Ue(D){return z.get({url:"/qywx.customer/lists",params:D})}function je(){return z.post({url:"/qywx.customer/sync"})}function Pe(){return z.get({url:"/qywx.customer/stats"})}function He(){return z.get({url:"/qywx.customer/tagStats"})}function Me(){return z.get({url:"/qywx.customer/todayArrival"})}function Ke(D){return z.get({url:"/qywx.customer/todayArrivalList",params:D})}function Be(){return z.get({url:"/qywx.customer/getSyncSettings"})}function Fe(D){return z.post({url:"/qywx.customer/saveSyncSettings",params:D})}const Ge={class:"qywx-customer-page p-4"},Oe={class:"flex items-center justify-between"},Re={class:"flex gap-2"},Je={class:"grid grid-cols-4 gap-4 mb-4"},Qe={class:"text-2xl font-bold text-primary"},We={class:"flex items-center justify-between mb-1"},Ze={key:0,class:"text-xs text-gray-400"},Xe={class:"flex items-end gap-2"},Ye={class:"text-2xl font-bold text-success leading-none"},tl=["title"],el={class:"mt-2 pt-2 border-t border-gray-100"},ll={class:"text-lg font-semibold text-gray-800"},al={class:"text-sm font-medium"},sl={class:"flex items-center justify-between gap-3"},nl={class:"text-xs text-gray-400"},ol={class:"flex items-center gap-2"},il={class:"font-medium"},rl={class:"text-xs text-gray-400"},ul={key:0},dl={key:1,class:"text-gray-400"},ml={key:0},cl={key:0,class:"ml-1 text-gray-400 text-xs"},fl={key:1,class:"text-gray-400"},_l={class:"flex justify-end mt-4"},pl={class:"flex items-center justify-between w-full pr-4"},gl={class:"flex items-center gap-3"},yl={class:"px-1"},vl={key:0,class:"mb-3"},xl={class:"flex flex-wrap gap-1"},bl={class:"flex items-start gap-2"},wl={class:"flex-1 min-w-0"},hl={class:"text-sm font-medium truncate"},Sl={class:"text-xs text-gray-500 mt-0.5"},kl={key:0,class:"ml-2"},Cl={key:1,class:"ml-2 text-emerald-500"},Vl={key:3,class:"mt-3 text-center"},El={class:"flex items-center justify-between w-full pr-4"},Tl={class:"flex items-center gap-3"},Al={class:"px-1"},Nl={class:"grid grid-cols-3 gap-2 mb-3"},zl={class:"text-xl font-bold text-warning"},ql={class:"text-xl font-bold"},Dl={class:"text-xl font-bold"},$l={class:"flex items-center gap-2 w-full"},Ll={class:"font-medium"},Il={class:"ml-auto text-xs text-gray-500"},Ul={class:"font-medium"},jl={class:"text-xs text-gray-400 truncate"},Pl={class:"text-warning font-bold"},Hl={key:0},Ml={key:1,class:"text-gray-400"},Kl={key:0},Bl={key:0,class:"ml-1 text-gray-400 text-xs"},Fl={key:1,class:"text-gray-400"},Gl=Ne({__name:"qywx",setup(D){const U=T(!1),j=T(!1),tt=T(!1),g=T(null),k=I({total:0,today:0,today_follow_staff:0,lastSync:"",syncStatus:"idle",syncStatusText:"未同步"}),kt=Y(()=>{switch(k.syncStatus){case"success":return"success";case"syncing":return"warning";case"failed":return"danger";default:return"info"}}),w=I({auto_sync:!1,interval:3600}),b=I({name:"",follow_user:"",tag_ids:[]}),y=I({total_tags:0,total_relations:0,total_tagged_customers:0,groups:[]}),P=T(!1),G=T(!1),et=T(""),lt=T([]),rt=Y(()=>{const e=et.value.trim().toLowerCase();if(!e)return y.groups;const t=[];for(const i of y.groups){const m=(i.group_name||"").toLowerCase().includes(e),p=i.tags.filter(_=>m||(_.tag_name||"").toLowerCase().includes(e));p.length&&t.push({...i,tags:p})}return t});async function at(e=!1){P.value=!0;try{const t=await He();t&&typeof t=="object"&&(y.total_tags=Number(t.total_tags??0),y.total_relations=Number(t.total_relations??0),y.total_tagged_customers=Number(t.total_tagged_customers??0),y.groups=Array.isArray(t.groups)?t.groups:[]),e&&A.msgSuccess("已刷新")}catch(t){e&&A.msgError((t==null?void 0:t.message)||"加载标签统计失败"),console.error("加载标签统计失败",t)}finally{P.value=!1}}function Ct(){var e;G.value=!0,lt.value=(e=y.groups[0])!=null&&e.group_name?[y.groups[0].group_name]:[],y.groups.length===0&&at()}function Vt(e){e&&(b.tag_ids.includes(e)||(b.tag_ids.push(e),$()))}function Et(e){e&&(b.tag_ids=[e],G.value=!1,$())}const h=I({total:0,recent_time:0,hourly:new Array(24).fill(0),by_state:[]}),H=T(!1),O=T(!1),f=I({total:0,page_no:1,page_size:20,lists:[]}),Tt=new Date().getHours(),At=Y(()=>Math.max(1,...h.hourly));function Nt(e){if(e<=0)return"2px";const t=e/At.value;return Math.max(4,Math.round(t*32))+"px"}const zt=Y(()=>{const e=[];return h.hourly.forEach((t,i)=>{t>0&&e.push(`${String(i).padStart(2,"0")}:00 · ${t}`)}),e.length?e.join(" "):"今天还没有人进入"});async function R(e=!1){try{const t=await Me();t&&(h.total=Number(t.total??0),h.recent_time=Number(t.recent_time??0),h.hourly=Array.isArray(t.hourly)&&t.hourly.length===24?t.hourly.map(i=>Number(i)||0):new Array(24).fill(0),h.by_state=Array.isArray(t.by_state)?t.by_state:[])}catch(t){console.error("加载今日进入分布失败",t)}e&&H.value&&(f.page_no=1,f.lists=[],await st())}async function st(){O.value=!0;try{const e=await Ke({page_no:f.page_no,page_size:f.page_size});if(e){f.total=Number(e.total??0);const t=Array.isArray(e.lists)?e.lists:[];f.page_no===1?f.lists=t:f.lists.push(...t)}}catch(e){console.error("加载今日进入明细失败",e)}finally{O.value=!1}}async function ut(){H.value=!0,f.page_no=1,f.lists=[],await Promise.all([R(!1),st()])}async function qt(){f.lists.length>=f.total||(f.page_no+=1,await st())}function Dt(e){if(!e||e<=0)return"";const t=new Date(e<1e12?e*1e3:e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}`}function $t(e){if(!e||e<=0)return"—";const t=new Date(e<1e12?e*1e3:e);return`${String(t.getHours()).padStart(2,"0")}:${String(t.getMinutes()).padStart(2,"0")}:${String(t.getSeconds()).padStart(2,"0")}`}let M=null,J=null;function nt(){J!==null&&(clearInterval(J),J=null)}async function Lt(e){return Ue(e)}const{pager:K,getLists:Q,resetPage:$,resetParams:It}=Te({fetchFun:Lt,params:b});function Ut(){b.name="",b.follow_user="",b.tag_ids=[],It()}function jt(){nt();let e=0;J=window.setInterval(async()=>{e+=1,await W(),await Q(),(k.syncStatus!=="syncing"||e>=120)&&(nt(),U.value=!1,e>=120&&k.syncStatus==="syncing"?A.msgWarning("长时间仍为「同步中」,请刷新页面或查看服务器 runtime/log/qywx_sync.log(可能未安装 CLI php 或禁用了 exec"):k.syncStatus==="failed"&&A.msgError("同步失败,请查看服务器 runtime/log/qywx_sync.log 或后台同步状态"))},3e3)}async function dt(e){const t=(e==null?void 0:e.silent)===!0;U.value=!0;try{const i=await je();t||A.msgSuccess((i==null?void 0:i.message)||"操作成功"),await W(),await Q(),i!=null&&i.background?jt():U.value=!1}catch(i){const m=(i==null?void 0:i.message)||(i==null?void 0:i.msg)||"同步失败";(!t||!String(m).includes("正在执行"))&&A.msgError(m),U.value=!1}}async function W(){try{const e=await Pe();e&&typeof e=="object"&&Object.assign(k,e)}catch(e){console.error("加载统计失败",e)}}async function Pt(){try{const e=await Be();e&&typeof e=="object"&&Object.assign(w,e),w.auto_sync&&mt()}catch(e){console.error("加载同步设置失败",e)}}async function Ht(){try{await Fe(w),A.msgSuccess("保存成功"),j.value=!1,ct(),w.auto_sync&&mt()}catch(e){A.msgError((e==null?void 0:e.message)||"保存失败")}}function mt(){M||(M=window.setInterval(()=>{dt({silent:!0})},w.interval*1e3))}function ct(){M&&(clearInterval(M),M=null)}function Mt(e){g.value=e,tt.value=!0}function ft(e){const t=String((e==null?void 0:e.admin_name)??"").trim(),i=String((e==null?void 0:e.userid)??"").trim(),m=String((e==null?void 0:e.name)??"").trim();return t||(m&&i?`${m}${i}`:m||i||"—")}function Z(e){const t=String((e==null?void 0:e.admin_name)??"").trim(),i=String((e==null?void 0:e.userid)??"").trim(),m=[];return t&&m.push("后台:"+t),i&&m.push("企微:"+i),m.join("")}function _t(e){if(!e)return null;const t=Number(e.external_first_add_time??0);if(t>0)return t;const i=e.follow_users;if(Array.isArray(i)&&i.length>0){let m=0;for(const p of i){const _=Number((p==null?void 0:p.createtime)??0);_>0&&(m===0||_<m)&&(m=_)}if(m>0)return m}return e.create_time??null}function X(e){if(e===""||e===null||e===void 0)return"—";const t=Number(e),i=typeof e=="string"&&/^\d+$/.test(e.trim());let m;return typeof e=="number"?m=e<1e12?e*1e3:e:!Number.isNaN(t)&&i?m=t<1e12?t*1e3:t:m=new Date(e).getTime(),Number.isNaN(m)?"—":new Date(m).toLocaleString("zh-CN")}let B=null;function Kt(){B===null&&(B=window.setInterval(()=>{W(),R(H.value)},3e4))}function Bt(){B!==null&&(clearInterval(B),B=null)}return ze(()=>{Q(),W(),Pt(),R(!1),at(),Kt()}),qe(()=>{ct(),nt(),Bt()}),(e,t)=>{const i=le,m=Yt,p=te,_=ee,ot=ne,L=se,q=re,Ft=ie,pt=oe,gt=ae,yt=me,S=de,vt=ce,xt=ue,Gt=ke,Ot=_e,bt=pe,Rt=ye,Jt=ge,wt=ve,ht=xe,Qt=we,Wt=be,C=Se,Zt=he,Xt=fe;return u(),c("div",Ge,[a(p,{shadow:"never",class:"mb-4"},{header:l(()=>[n("div",Oe,[t[21]||(t[21]=n("span",{class:"text-lg font-semibold"},"企业微信客户管理",-1)),n("div",Re,[a(i,{type:"success",plain:"",onClick:ut},{icon:l(()=>[a(x(Ce))]),default:l(()=>[t[17]||(t[17]=d(" 今日进入明细 ",-1))]),_:1}),a(i,{type:"warning",plain:"",onClick:Ct},{icon:l(()=>[a(x(Ve))]),default:l(()=>[t[18]||(t[18]=d(" 标签维度 ",-1))]),_:1}),a(i,{type:"primary",loading:U.value,onClick:t[0]||(t[0]=s=>dt())},{icon:l(()=>[a(x(it))]),default:l(()=>[t[19]||(t[19]=d(" 立即同步 ",-1))]),_:1},8,["loading"]),a(i,{onClick:t[1]||(t[1]=s=>j.value=!0)},{icon:l(()=>[a(x(Ee))]),default:l(()=>[t[20]||(t[20]=d(" 同步设置 ",-1))]),_:1})])])]),default:l(()=>[a(m,{title:"功能说明",type:"info",closable:!1,class:"mb-4"},{default:l(()=>[...t[22]||(t[22]=[n("div",{class:"text-sm"},[n("p",null,"自动从企业微信同步外部联系人(客户)信息,包括客户基本信息、跟进人等。"),n("p",{class:"mt-1"},"同步后的数据可用于患者信息匹配和自动关联。")],-1)])]),_:1}),n("div",Je,[a(p,{shadow:"hover"},{default:l(()=>[t[23]||(t[23]=n("div",{class:"text-gray-500 text-sm mb-1"},"总客户数",-1)),n("div",Qe,r(k.total),1)]),_:1}),a(p,{shadow:"hover",class:"today-arrival-card cursor-pointer",onClick:ut},{default:l(()=>[n("div",We,[t[24]||(t[24]=n("span",{class:"text-gray-500 text-sm"},"今日新增",-1)),h.recent_time?(u(),c("span",Ze," 最近 "+r(Dt(h.recent_time)),1)):N("",!0)]),n("div",Xe,[n("div",Ye,r(k.today),1),t[25]||(t[25]=n("div",{class:"text-xs text-gray-400 pb-1"},"人",-1))]),n("div",{class:"hourly-bars mt-2",title:zt.value},[(u(!0),c(V,null,E(h.hourly,(s,o)=>(u(),c("div",{key:o,class:Ie(["hourly-bar",{"is-empty":s===0,"is-current":o===x(Tt)}]),style:Le({height:Nt(s)})},null,6))),128))],8,tl),n("div",el,[t[26]||(t[26]=n("div",{class:"text-gray-500 text-xs mb-0.5"},"今日跟进人合计",-1)),n("div",ll,r(k.today_follow_staff),1)])]),_:1}),a(p,{shadow:"hover"},{default:l(()=>[t[27]||(t[27]=n("div",{class:"text-gray-500 text-sm mb-1"},"最后同步",-1)),n("div",al,r(k.lastSync||"未同步"),1)]),_:1}),a(p,{shadow:"hover"},{default:l(()=>[t[28]||(t[28]=n("div",{class:"text-gray-500 text-sm mb-1"},"同步状态",-1)),a(_,{type:kt.value,size:"small"},{default:l(()=>[d(r(k.syncStatusText),1)]),_:1},8,["type"])]),_:1})])]),_:1}),a(p,{shadow:"never"},{default:l(()=>[a(gt,{model:b,inline:"",class:"mb-4"},{default:l(()=>[a(L,{label:"客户名称"},{default:l(()=>[a(ot,{modelValue:b.name,"onUpdate:modelValue":t[2]||(t[2]=s=>b.name=s),placeholder:"搜索客户名称",clearable:"",onKeyup:St(x($),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),a(L,{label:"跟进人"},{default:l(()=>[a(ot,{modelValue:b.follow_user,"onUpdate:modelValue":t[3]||(t[3]=s=>b.follow_user=s),placeholder:"跟进人姓名",clearable:"",onKeyup:St(x($),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),a(L,{label:"标签"},{default:l(()=>[a(pt,{modelValue:b.tag_ids,"onUpdate:modelValue":t[4]||(t[4]=s=>b.tag_ids=s),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",clearable:"",filterable:"",placeholder:"按标签筛选(可多选,命中任一即返回)",loading:P.value,style:{"min-width":"320px"},onChange:x($)},{default:l(()=>[(u(!0),c(V,null,E(y.groups,s=>(u(),v(Ft,{key:s.group_name||"_",label:(s.group_name||"(未分组)")+" · "+s.customer_count},{default:l(()=>[(u(!0),c(V,null,E(s.tags,o=>(u(),v(q,{key:o.tag_id,value:o.tag_id,label:o.tag_name},{default:l(()=>[n("span",sl,[n("span",null,r(o.tag_name),1),n("span",nl,r(o.customer_count)+" 人",1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading","onChange"])]),_:1}),a(L,null,{default:l(()=>[a(i,{type:"primary",onClick:x($)},{default:l(()=>[...t[29]||(t[29]=[d("查询",-1)])]),_:1},8,["onClick"]),a(i,{onClick:Ut},{default:l(()=>[...t[30]||(t[30]=[d("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),De((u(),v(xt,{data:x(K).lists,stripe:""},{default:l(()=>[a(S,{label:"客户信息","min-width":"200"},{default:l(({row:s})=>[n("div",ol,[a(yt,{size:40,src:s.avatar},null,8,["src"]),n("div",null,[n("div",il,r(s.name),1),n("div",rl,r(s.external_userid),1)])])]),_:1}),a(S,{label:"类型",width:"80"},{default:l(({row:s})=>[a(_,{size:"small"},{default:l(()=>[d(r(s.type===1?"微信":"企微"),1)]),_:2},1024)]),_:1}),a(S,{label:"性别",width:"60"},{default:l(({row:s})=>[d(r(s.gender===1?"男":s.gender===2?"女":"未知"),1)]),_:1}),a(S,{label:"跟进人","min-width":"150"},{default:l(({row:s})=>[s.follow_users&&s.follow_users.length?(u(),c("div",ul,[(u(!0),c(V,null,E(s.follow_users,(o,F)=>(u(),v(vt,{key:(o.userid||"")+"-"+F,disabled:!Z(o),content:Z(o),placement:"top"},{default:l(()=>[a(_,{size:"small",class:"mr-1 mb-1"},{default:l(()=>[d(r(ft(o)),1)]),_:2},1024)]),_:2},1032,["disabled","content"]))),128))])):(u(),c("span",dl,"—"))]),_:1}),a(S,{label:"标签","min-width":"180"},{default:l(({row:s})=>[s.tags&&s.tags.length?(u(),c("div",ml,[(u(!0),c(V,null,E(s.tags,o=>(u(),v(_,{key:o.tag_id,size:"small",effect:"light",type:"warning",class:"mr-1 mb-1 cursor-pointer",onClick:F=>Vt(o.tag_id)},{default:l(()=>[d(r(o.tag_name)+" ",1),o.group_name?(u(),c("span",cl,r(o.group_name),1)):N("",!0)]),_:2},1032,["onClick"]))),128))])):(u(),c("span",fl,"—"))]),_:1}),a(S,{label:"添加时间",width:"160"},{default:l(({row:s})=>[d(r(X(_t(s))),1)]),_:1}),a(S,{label:"更新时间",width:"160"},{default:l(({row:s})=>[d(r(X(s.update_time)),1)]),_:1}),a(S,{label:"操作",width:"120",fixed:"right"},{default:l(({row:s})=>[a(i,{type:"primary",link:"",onClick:o=>Mt(s)},{default:l(()=>[...t[31]||(t[31]=[d("查看详情",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Xt,x(K).loading]]),n("div",_l,[a(Gt,{modelValue:x(K),"onUpdate:modelValue":t[5]||(t[5]=s=>$e(K)?K.value=s:null),onChange:x(Q)},null,8,["modelValue","onChange"])])]),_:1}),a(bt,{modelValue:j.value,"onUpdate:modelValue":t[9]||(t[9]=s=>j.value=s),title:"同步设置",width:"500px"},{footer:l(()=>[a(i,{onClick:t[8]||(t[8]=s=>j.value=!1)},{default:l(()=>[...t[33]||(t[33]=[d("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:Ht},{default:l(()=>[...t[34]||(t[34]=[d("保存",-1)])]),_:1})]),default:l(()=>[a(gt,{model:w,"label-width":"120px"},{default:l(()=>[a(L,{label:"自动同步"},{default:l(()=>[a(Ot,{modelValue:w.auto_sync,"onUpdate:modelValue":t[6]||(t[6]=s=>w.auto_sync=s)},null,8,["modelValue"]),t[32]||(t[32]=n("div",{class:"text-xs text-gray-400 mt-1"}," 开启后将定时自动同步企业微信客户数据 ",-1))]),_:1}),a(L,{label:"同步间隔"},{default:l(()=>[a(pt,{modelValue:w.interval,"onUpdate:modelValue":t[7]||(t[7]=s=>w.interval=s),disabled:!w.auto_sync},{default:l(()=>[a(q,{label:"每小时",value:3600}),a(q,{label:"每2小时",value:7200}),a(q,{label:"每4小时",value:14400}),a(q,{label:"每6小时",value:21600}),a(q,{label:"每12小时",value:43200}),a(q,{label:"每天",value:86400})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),a(ht,{modelValue:H.value,"onUpdate:modelValue":t[11]||(t[11]=s=>H.value=s),title:"今日进入明细",direction:"rtl",size:"520px","destroy-on-close":!1},{header:l(()=>[n("div",pl,[n("div",gl,[t[35]||(t[35]=n("span",{class:"text-base font-semibold"},"今日进入明细",-1)),a(_,{type:"success",effect:"plain"},{default:l(()=>[d("共 "+r(f.total)+" 人",1)]),_:1})]),a(i,{link:"",type:"primary",loading:O.value,onClick:t[10]||(t[10]=s=>R(!0))},{icon:l(()=>[a(x(it))]),default:l(()=>[t[36]||(t[36]=d(" 刷新 ",-1))]),_:1},8,["loading"])])]),default:l(()=>{var s;return[n("div",yl,[a(m,{type:"info",closable:!1,class:"mb-3","show-icon":""},{title:l(()=>[...t[37]||(t[37]=[n("span",{class:"text-xs"}," 一次推送 = 一个人进来;数据来源为企微回调流水表(INSERT IGNORE 幂等),与客户同步解耦,数字零误差。 ",-1)])]),_:1}),(s=h.by_state)!=null&&s.length?(u(),c("div",vl,[t[38]||(t[38]=n("div",{class:"text-xs text-gray-500 mb-1"},"今日推广渠道 Top",-1)),n("div",xl,[(u(!0),c(V,null,E(h.by_state,o=>(u(),v(_,{key:o.state||"_",size:"small",effect:"light",type:"success"},{default:l(()=>[d(r(o.state||"(无 state")+" · "+r(o.count),1)]),_:2},1024))),128))])])):N("",!0),f.lists.length?(u(),v(Jt,{key:1,class:"mt-2"},{default:l(()=>[(u(!0),c(V,null,E(f.lists,o=>(u(),v(Rt,{key:o.id,timestamp:$t(o.event_time),placement:"top",type:"success",hollow:!1},{default:l(()=>[n("div",bl,[a(yt,{size:32,src:o.customer_avatar||void 0},{default:l(()=>[d(r((o.customer_name||"?").slice(0,1)),1)]),_:2},1032,["src"]),n("div",wl,[n("div",hl,r(o.customer_name||o.external_userid||"(未知客户)"),1),n("div",Sl,[n("span",null,"接待:"+r(o.admin_name||o.user_id||"—"),1),o.state?(u(),c("span",kl,[t[39]||(t[39]=d(" 渠道:",-1)),a(_,{size:"small",type:"info",effect:"plain"},{default:l(()=>[d(r(o.state),1)]),_:2},1024)])):N("",!0),o.welcome_code?(u(),c("span",Cl,"欢迎语")):N("",!0)])])])]),_:2},1032,["timestamp"]))),128))]),_:1})):(u(),v(wt,{key:2,description:"今天还没有人进入","image-size":80})),f.total>f.lists.length?(u(),c("div",Vl,[a(i,{loading:O.value,size:"small",onClick:qt},{default:l(()=>[d(" 加载更多(还剩 "+r(f.total-f.lists.length)+" ",1)]),_:1},8,["loading"])])):N("",!0)])]}),_:1},8,["modelValue"]),a(ht,{modelValue:G.value,"onUpdate:modelValue":t[15]||(t[15]=s=>G.value=s),title:"标签维度统计",direction:"rtl",size:"560px","destroy-on-close":!1},{header:l(()=>[n("div",El,[n("div",Tl,[t[40]||(t[40]=n("span",{class:"text-base font-semibold"},"标签维度统计",-1)),a(_,{type:"warning",effect:"plain"},{default:l(()=>[d(r(y.groups.length)+" 组 · "+r(y.total_tags)+" 标签 ",1)]),_:1})]),a(i,{link:"",type:"primary",loading:P.value,onClick:t[12]||(t[12]=s=>at(!0))},{icon:l(()=>[a(x(it))]),default:l(()=>[t[41]||(t[41]=d(" 刷新 ",-1))]),_:1},8,["loading"])])]),default:l(()=>[n("div",Al,[n("div",Nl,[a(p,{shadow:"never","body-class":"!p-3"},{default:l(()=>[t[42]||(t[42]=n("div",{class:"text-xs text-gray-500"},"已打标签客户",-1)),n("div",zl,r(y.total_tagged_customers),1)]),_:1}),a(p,{shadow:"never","body-class":"!p-3"},{default:l(()=>[t[43]||(t[43]=n("div",{class:"text-xs text-gray-500"},"标签数",-1)),n("div",ql,r(y.total_tags),1)]),_:1}),a(p,{shadow:"never","body-class":"!p-3"},{default:l(()=>[t[44]||(t[44]=n("div",{class:"text-xs text-gray-500"},"关系总数",-1)),n("div",Dl,r(y.total_relations),1)]),_:1})]),a(ot,{modelValue:et.value,"onUpdate:modelValue":t[13]||(t[13]=s=>et.value=s),placeholder:"筛选标签名 / 分组名",clearable:"",size:"small",class:"mb-3"},null,8,["modelValue"]),rt.value.length===0?(u(),v(wt,{key:0,description:P.value?"加载中…":"暂无标签数据","image-size":64},null,8,["description"])):(u(),v(Wt,{key:1,modelValue:lt.value,"onUpdate:modelValue":t[14]||(t[14]=s=>lt.value=s)},{default:l(()=>[(u(!0),c(V,null,E(rt.value,s=>(u(),v(Qt,{key:s.group_name||"_",name:s.group_name||"_"},{title:l(()=>[n("div",$l,[n("span",Ll,r(s.group_name||"(未分组)"),1),a(_,{size:"small",effect:"plain"},{default:l(()=>[d(r(s.tags.length),1)]),_:2},1024),n("span",Il," 最热 "+r(s.customer_count)+" 人 ",1)])]),default:l(()=>[a(xt,{data:s.tags,size:"small",stripe:""},{default:l(()=>[a(S,{label:"标签","min-width":"160"},{default:l(({row:o})=>[n("span",Ul,r(o.tag_name),1),n("div",jl,r(o.tag_id),1)]),_:1}),a(S,{label:"客户数",width:"100",align:"right"},{default:l(({row:o})=>[n("span",Pl,r(o.customer_count),1)]),_:1}),a(S,{label:"操作",width:"80",align:"center"},{default:l(({row:o})=>[a(i,{link:"",type:"primary",size:"small",onClick:F=>Et(o.tag_id)},{default:l(()=>[...t[45]||(t[45]=[d(" 筛选 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"]))])]),_:1},8,["modelValue"]),a(bt,{modelValue:tt.value,"onUpdate:modelValue":t[16]||(t[16]=s=>tt.value=s),title:"客户详情",width:"600px"},{default:l(()=>[g.value?(u(),v(Zt,{key:0,column:2,border:""},{default:l(()=>[a(C,{label:"客户名称"},{default:l(()=>[d(r(g.value.name),1)]),_:1}),a(C,{label:"External ID"},{default:l(()=>[d(r(g.value.external_userid),1)]),_:1}),a(C,{label:"性别"},{default:l(()=>[d(r(g.value.gender===1?"男":g.value.gender===2?"女":"未知"),1)]),_:1}),a(C,{label:"类型"},{default:l(()=>[d(r(g.value.type===1?"微信用户":"企业微信用户"),1)]),_:1}),a(C,{label:"企业名称",span:2},{default:l(()=>[d(r(g.value.corp_name||"—"),1)]),_:1}),a(C,{label:"职位",span:2},{default:l(()=>[d(r(g.value.position||"—"),1)]),_:1}),a(C,{label:"添加时间",span:2},{default:l(()=>[d(r(X(_t(g.value))),1)]),_:1}),a(C,{label:"更新时间",span:2},{default:l(()=>[d(r(X(g.value.update_time)),1)]),_:1}),a(C,{label:"跟进人",span:2},{default:l(()=>{var s;return[(s=g.value.follow_users)!=null&&s.length?(u(),c("div",Hl,[(u(!0),c(V,null,E(g.value.follow_users,(o,F)=>(u(),v(vt,{key:(o.userid||"")+"-"+F,disabled:!Z(o),content:Z(o),placement:"top"},{default:l(()=>[a(_,{size:"small",class:"mr-1 mb-1"},{default:l(()=>[d(r(ft(o)),1)]),_:2},1024)]),_:2},1032,["disabled","content"]))),128))])):(u(),c("span",Ml,"—"))]}),_:1}),a(C,{label:"标签",span:2},{default:l(()=>{var s;return[(s=g.value.tags)!=null&&s.length?(u(),c("div",Kl,[(u(!0),c(V,null,E(g.value.tags,o=>(u(),v(_,{key:o.tag_id,size:"small",effect:"light",type:"warning",class:"mr-1 mb-1"},{default:l(()=>[d(r(o.tag_name)+" ",1),o.group_name?(u(),c("span",Bl,r(o.group_name),1)):N("",!0)]),_:2},1024))),128))])):(u(),c("span",Fl,"—"))]}),_:1})]),_:1})):N("",!0)]),_:1},8,["modelValue"])])}}}),za=Ae(Gl,[["__scopeId","data-v-12c36062"]]);export{za as default};