Files
zyt/server/public/admin/assets/qywx-DPcU_O23.js
T
2026-07-02 11:57:54 +08:00

2 lines
23 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{o as le,ba as I,ap as ae,aq as se,q as u,r as m,v as a,D as l,bh as ne,s as n,bg as oe,T as r,P as A,F as E,G as T,t as ie,ae as re,u as x,br as ue,L as d,K as de,cF as ce,cG as me,by as rt,co as _e,b9 as fe,b6 as ge,b7 as pe,b8 as kt,bp as ye,bm as ve,O as b,cB as xe,bn as be,ac as we,bj as he,bk as Se,a0 as ke,a1 as Ce,bi as Ve,C as Ee,I as Te,bt as Ae,c3 as Ne,c4 as qe,bB as ze,B as De,cH as $e,cI as Le,c0 as Ie,c1 as Ue,M as k,p as Z}from"./.pnpm-BGZW0UGg.js";import{_ as je}from"./index.vue_vue_type_script_setup_true_lang-ByFSC-yR.js";import{u as Pe}from"./usePaging-C4oc3vBq.js";import{r as q,i as N,_ as Me}from"./index-CTzEhZ24.js";function Be(L){return q.get({url:"/qywx.customer/lists",params:L})}function He(){return q.post({url:"/qywx.customer/sync"})}function Fe(){return q.get({url:"/qywx.customer/stats"})}function Ge(){return q.get({url:"/qywx.customer/tagStats"})}function Ke(){return q.get({url:"/qywx.customer/todayArrival"})}function Oe(L){return q.get({url:"/qywx.customer/todayArrivalList",params:L})}function Re(){return q.get({url:"/qywx.customer/getSyncSettings"})}function Ye(L){return q.post({url:"/qywx.customer/saveSyncSettings",params:L})}const We={class:"qywx-customer-page p-4"},Je={class:"flex items-center justify-between"},Qe={class:"flex gap-2"},Xe={class:"grid grid-cols-4 gap-4 mb-4"},Ze={class:"text-2xl font-bold text-primary"},tl={class:"flex items-center justify-between mb-1"},el={key:0,class:"text-xs text-gray-400"},ll={class:"flex items-end gap-2"},al={class:"text-2xl font-bold text-success leading-none"},sl=["title"],nl={class:"mt-2 pt-2 border-t border-gray-100"},ol={class:"text-lg font-semibold text-gray-800"},il={class:"text-sm font-medium"},rl={class:"flex items-center justify-between gap-3"},ul={class:"text-xs text-gray-400"},dl={class:"flex items-center gap-2"},cl={class:"font-medium"},ml={class:"text-xs text-gray-400"},_l={key:0},fl={key:1,class:"text-gray-400"},gl={key:0},pl={key:0,class:"ml-1 text-gray-400 text-xs"},yl={key:1,class:"text-gray-400"},vl={class:"flex justify-end mt-4"},xl={class:"flex items-center justify-between w-full pr-4"},bl={class:"flex items-center gap-3"},wl={class:"px-1"},hl={key:0,class:"mb-3"},Sl={class:"flex flex-wrap gap-1"},kl={class:"flex items-start gap-2"},Cl={class:"flex-1 min-w-0"},Vl={class:"text-sm font-medium truncate"},El={class:"text-xs text-gray-500 mt-0.5"},Tl={key:0,class:"ml-2"},Al={key:1,class:"ml-2 text-emerald-500"},Nl={key:3,class:"mt-3 text-center"},ql={class:"flex items-center justify-between w-full pr-4"},zl={class:"flex items-center gap-3"},Dl={class:"px-1"},$l={class:"grid grid-cols-3 gap-2 mb-3"},Ll={class:"text-xl font-bold text-warning"},Il={class:"text-xl font-bold"},Ul={class:"text-xl font-bold"},jl={class:"flex items-center gap-2 w-full"},Pl={class:"font-medium"},Ml={class:"ml-auto text-xs text-gray-500"},Bl={class:"font-medium"},Hl={class:"text-xs text-gray-400 truncate"},Fl={class:"text-warning font-bold"},Gl={key:0},Kl={key:1,class:"text-gray-400"},Ol={key:0},Rl={key:0,class:"ml-1 text-gray-400 text-xs"},Yl={key:1,class:"text-gray-400"},Wl=le({__name:"qywx",setup(L){const U=k(!1),j=k(!1),tt=k(!1),y=k(null),C=I({total:0,today:0,today_follow_staff:0,lastSync:"",syncStatus:"idle",syncStatusText:"未同步"}),Ct=Z(()=>{switch(C.syncStatus){case"success":return"success";case"syncing":return"warning";case"failed":return"danger";default:return"info"}}),w=I({auto_sync:!1,interval:3600}),_=I({name:"",follow_user:"",tag_ids:[],add_time_start:"",add_time_end:""}),et=k(null);function Vt(e){e&&e.length===2&&e[0]&&e[1]?(_.add_time_start=e[0],_.add_time_end=e[1]):(_.add_time_start="",_.add_time_end=""),z()}const v=I({total_tags:0,total_relations:0,total_tagged_customers:0,groups:[]}),P=k(!1),K=k(!1),lt=k(""),at=k([]),ut=Z(()=>{const e=lt.value.trim().toLowerCase();if(!e)return v.groups;const t=[];for(const i of v.groups){const c=(i.group_name||"").toLowerCase().includes(e),p=i.tags.filter(g=>c||(g.tag_name||"").toLowerCase().includes(e));p.length&&t.push({...i,tags:p})}return t});async function st(e=!1){P.value=!0;try{const t=await Ge();t&&typeof t=="object"&&(v.total_tags=Number(t.total_tags??0),v.total_relations=Number(t.total_relations??0),v.total_tagged_customers=Number(t.total_tagged_customers??0),v.groups=Array.isArray(t.groups)?t.groups:[]),e&&N.msgSuccess("已刷新")}catch(t){e&&N.msgError((t==null?void 0:t.message)||"加载标签统计失败"),console.error("加载标签统计失败",t)}finally{P.value=!1}}function Et(){var e;K.value=!0,at.value=(e=v.groups[0])!=null&&e.group_name?[v.groups[0].group_name]:[],v.groups.length===0&&st()}function Tt(e){e&&(_.tag_ids.includes(e)||(_.tag_ids.push(e),z()))}function At(e){e&&(_.tag_ids=[e],K.value=!1,z())}const h=I({total:0,recent_time:0,hourly:new Array(24).fill(0),by_state:[]}),M=k(!1),O=k(!1),f=I({total:0,page_no:1,page_size:20,lists:[]}),Nt=new Date().getHours(),qt=Z(()=>Math.max(1,...h.hourly));function zt(e){if(e<=0)return"2px";const t=e/qt.value;return Math.max(4,Math.round(t*32))+"px"}const Dt=Z(()=>{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 Ke();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&&M.value&&(f.page_no=1,f.lists=[],await nt())}async function nt(){O.value=!0;try{const e=await Oe({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 dt(){M.value=!0,f.page_no=1,f.lists=[],await Promise.all([R(!1),nt()])}async function $t(){f.lists.length>=f.total||(f.page_no+=1,await nt())}function Lt(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 It(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 B=null,Y=null;function ot(){Y!==null&&(clearInterval(Y),Y=null)}async function Ut(e){return Be(e)}const{pager:H,getLists:W,resetPage:z,resetParams:jt}=Pe({fetchFun:Ut,params:_});function Pt(){_.name="",_.follow_user="",_.tag_ids=[],_.add_time_start="",_.add_time_end="",et.value=null,jt()}function Mt(){ot();let e=0;Y=window.setInterval(async()=>{e+=1,await J(),await W(),(C.syncStatus!=="syncing"||e>=120)&&(ot(),U.value=!1,e>=120&&C.syncStatus==="syncing"?N.msgWarning("长时间仍为「同步中」,请刷新页面或查看服务器 runtime/log/qywx_sync.log(可能未安装 CLI php 或禁用了 exec"):C.syncStatus==="failed"&&N.msgError("同步失败,请查看服务器 runtime/log/qywx_sync.log 或后台同步状态"))},3e3)}async function ct(e){const t=(e==null?void 0:e.silent)===!0;U.value=!0;try{const i=await He();t||N.msgSuccess((i==null?void 0:i.message)||"操作成功"),await J(),await W(),i!=null&&i.background?Mt():U.value=!1}catch(i){const c=(i==null?void 0:i.message)||(i==null?void 0:i.msg)||"同步失败";(!t||!String(c).includes("正在执行"))&&N.msgError(c),U.value=!1}}async function J(){try{const e=await Fe();e&&typeof e=="object"&&Object.assign(C,e)}catch(e){console.error("加载统计失败",e)}}async function Bt(){try{const e=await Re();e&&typeof e=="object"&&Object.assign(w,e),w.auto_sync&&mt()}catch(e){console.error("加载同步设置失败",e)}}async function Ht(){try{await Ye(w),N.msgSuccess("保存成功"),j.value=!1,_t(),w.auto_sync&&mt()}catch(e){N.msgError((e==null?void 0:e.message)||"保存失败")}}function mt(){B||(B=window.setInterval(()=>{ct({silent:!0})},w.interval*1e3))}function _t(){B&&(clearInterval(B),B=null)}function Ft(e){y.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(),c=String((e==null?void 0:e.name)??"").trim();return t||(c&&i?`${c}${i}`:c||i||"—")}function Q(e){const t=String((e==null?void 0:e.admin_name)??"").trim(),i=String((e==null?void 0:e.userid)??"").trim(),c=[];return t&&c.push("后台:"+t),i&&c.push("企微:"+i),c.join("")}function gt(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 c=0;for(const p of i){const g=Number((p==null?void 0:p.createtime)??0);g>0&&(c===0||g<c)&&(c=g)}if(c>0)return c}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 c;return typeof e=="number"?c=e<1e12?e*1e3:e:!Number.isNaN(t)&&i?c=t<1e12?t*1e3:t:c=new Date(e).getTime(),Number.isNaN(c)?"—":new Date(c).toLocaleString("zh-CN")}let F=null;function Gt(){F===null&&(F=window.setInterval(()=>{J(),R(M.value)},3e4))}function Kt(){F!==null&&(clearInterval(F),F=null)}return ae(()=>{W(),J(),Bt(),R(!1),st(),Gt()}),se(()=>{_t(),ot(),Kt()}),(e,t)=>{const i=de,c=ne,p=oe,g=ue,it=pe,D=ge,Ot=ye,$=be,Rt=xe,pt=ve,yt=fe,vt=ke,S=Se,xt=Ce,bt=he,Yt=je,Wt=Te,wt=Ae,Jt=qe,Qt=Ne,ht=ze,St=De,Xt=Le,Zt=$e,V=Ue,te=Ie,ee=Ve;return u(),m("div",We,[a(p,{shadow:"never",class:"mb-4"},{header:l(()=>[n("div",Je,[t[22]||(t[22]=n("span",{class:"text-lg font-semibold"},"企业微信客户管理",-1)),n("div",Qe,[a(i,{type:"success",plain:"",onClick:dt},{icon:l(()=>[a(x(ce))]),default:l(()=>[t[18]||(t[18]=d(" 今日进入明细 ",-1))]),_:1}),a(i,{type:"warning",plain:"",onClick:Et},{icon:l(()=>[a(x(me))]),default:l(()=>[t[19]||(t[19]=d(" 标签维度 ",-1))]),_:1}),a(i,{type:"primary",loading:U.value,onClick:t[0]||(t[0]=s=>ct())},{icon:l(()=>[a(x(rt))]),default:l(()=>[t[20]||(t[20]=d(" 立即同步 ",-1))]),_:1},8,["loading"]),a(i,{onClick:t[1]||(t[1]=s=>j.value=!0)},{icon:l(()=>[a(x(_e))]),default:l(()=>[t[21]||(t[21]=d(" 同步设置 ",-1))]),_:1})])])]),default:l(()=>[a(c,{title:"功能说明",type:"info",closable:!1,class:"mb-4"},{default:l(()=>[...t[23]||(t[23]=[n("div",{class:"text-sm"},[n("p",null,"自动从企业微信同步外部联系人(客户)信息,包括客户基本信息、跟进人等。"),n("p",{class:"mt-1"},"同步后的数据可用于患者信息匹配和自动关联。")],-1)])]),_:1}),n("div",Xe,[a(p,{shadow:"hover"},{default:l(()=>[t[24]||(t[24]=n("div",{class:"text-gray-500 text-sm mb-1"},"总客户数",-1)),n("div",Ze,r(C.total),1)]),_:1}),a(p,{shadow:"hover",class:"today-arrival-card cursor-pointer",onClick:dt},{default:l(()=>[n("div",tl,[t[25]||(t[25]=n("span",{class:"text-gray-500 text-sm"},"今日新增",-1)),h.recent_time?(u(),m("span",el," 最近 "+r(Lt(h.recent_time)),1)):A("",!0)]),n("div",ll,[n("div",al,r(C.today),1),t[26]||(t[26]=n("div",{class:"text-xs text-gray-400 pb-1"},"人",-1))]),n("div",{class:"hourly-bars mt-2",title:Dt.value},[(u(!0),m(E,null,T(h.hourly,(s,o)=>(u(),m("div",{key:o,class:re(["hourly-bar",{"is-empty":s===0,"is-current":o===x(Nt)}]),style:ie({height:zt(s)})},null,6))),128))],8,sl),n("div",nl,[t[27]||(t[27]=n("div",{class:"text-gray-500 text-xs mb-0.5"},"今日跟进人合计",-1)),n("div",ol,r(C.today_follow_staff),1)])]),_:1}),a(p,{shadow:"hover"},{default:l(()=>[t[28]||(t[28]=n("div",{class:"text-gray-500 text-sm mb-1"},"最后同步",-1)),n("div",il,r(C.lastSync||"未同步"),1)]),_:1}),a(p,{shadow:"hover"},{default:l(()=>[t[29]||(t[29]=n("div",{class:"text-gray-500 text-sm mb-1"},"同步状态",-1)),a(g,{type:Ct.value,size:"small"},{default:l(()=>[d(r(C.syncStatusText),1)]),_:1},8,["type"])]),_:1})])]),_:1}),a(p,{shadow:"never"},{default:l(()=>[a(yt,{model:_,inline:"",class:"mb-4"},{default:l(()=>[a(D,{label:"客户名称"},{default:l(()=>[a(it,{modelValue:_.name,"onUpdate:modelValue":t[2]||(t[2]=s=>_.name=s),placeholder:"搜索客户名称",clearable:"",onKeyup:kt(x(z),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),a(D,{label:"跟进人"},{default:l(()=>[a(it,{modelValue:_.follow_user,"onUpdate:modelValue":t[3]||(t[3]=s=>_.follow_user=s),placeholder:"跟进人姓名",clearable:"",onKeyup:kt(x(z),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),a(D,{label:"添加时间"},{default:l(()=>[a(Ot,{modelValue:et.value,"onUpdate:modelValue":t[4]||(t[4]=s=>et.value=s),type:"daterange","value-format":"YYYY-MM-DD","start-placeholder":"开始日期","end-placeholder":"结束日期",clearable:"",class:"!w-[280px]",onChange:Vt},null,8,["modelValue"])]),_:1}),a(D,{label:"标签"},{default:l(()=>[a(pt,{modelValue:_.tag_ids,"onUpdate:modelValue":t[5]||(t[5]=s=>_.tag_ids=s),multiple:"","collapse-tags":"","collapse-tags-tooltip":"",clearable:"",filterable:"",placeholder:"按标签筛选(可多选,命中任一即返回)",loading:P.value,style:{"min-width":"320px"},onChange:x(z)},{default:l(()=>[(u(!0),m(E,null,T(v.groups,s=>(u(),b(Rt,{key:s.group_name||"_",label:(s.group_name||"(未分组)")+" · "+s.customer_count},{default:l(()=>[(u(!0),m(E,null,T(s.tags,o=>(u(),b($,{key:o.tag_id,value:o.tag_id,label:o.tag_name},{default:l(()=>[n("span",rl,[n("span",null,r(o.tag_name),1),n("span",ul,r(o.customer_count)+" 人",1)])]),_:2},1032,["value","label"]))),128))]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","loading","onChange"])]),_:1}),a(D,null,{default:l(()=>[a(i,{type:"primary",onClick:x(z)},{default:l(()=>[...t[30]||(t[30]=[d("查询",-1)])]),_:1},8,["onClick"]),a(i,{onClick:Pt},{default:l(()=>[...t[31]||(t[31]=[d("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),we((u(),b(bt,{data:x(H).lists,stripe:""},{default:l(()=>[a(S,{label:"客户信息","min-width":"200"},{default:l(({row:s})=>[n("div",dl,[a(vt,{size:40,src:s.avatar},null,8,["src"]),n("div",null,[n("div",cl,r(s.name),1),n("div",ml,r(s.external_userid),1)])])]),_:1}),a(S,{label:"类型",width:"80"},{default:l(({row:s})=>[a(g,{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(),m("div",_l,[(u(!0),m(E,null,T(s.follow_users,(o,G)=>(u(),b(xt,{key:(o.userid||"")+"-"+G,disabled:!Q(o),content:Q(o),placement:"top"},{default:l(()=>[a(g,{size:"small",class:"mr-1 mb-1"},{default:l(()=>[d(r(ft(o)),1)]),_:2},1024)]),_:2},1032,["disabled","content"]))),128))])):(u(),m("span",fl,"—"))]),_:1}),a(S,{label:"标签","min-width":"180"},{default:l(({row:s})=>[s.tags&&s.tags.length?(u(),m("div",gl,[(u(!0),m(E,null,T(s.tags,o=>(u(),b(g,{key:o.tag_id,size:"small",effect:"light",type:"warning",class:"mr-1 mb-1 cursor-pointer",onClick:G=>Tt(o.tag_id)},{default:l(()=>[d(r(o.tag_name)+" ",1),o.group_name?(u(),m("span",pl,r(o.group_name),1)):A("",!0)]),_:2},1032,["onClick"]))),128))])):(u(),m("span",yl,"—"))]),_:1}),a(S,{label:"添加时间",width:"160"},{default:l(({row:s})=>[d(r(X(gt(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=>Ft(s)},{default:l(()=>[...t[32]||(t[32]=[d("查看详情",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[ee,x(H).loading]]),n("div",vl,[a(Yt,{modelValue:x(H),"onUpdate:modelValue":t[6]||(t[6]=s=>Ee(H)?H.value=s:null),onChange:x(W)},null,8,["modelValue","onChange"])])]),_:1}),a(wt,{modelValue:j.value,"onUpdate:modelValue":t[10]||(t[10]=s=>j.value=s),title:"同步设置",width:"500px"},{footer:l(()=>[a(i,{onClick:t[9]||(t[9]=s=>j.value=!1)},{default:l(()=>[...t[34]||(t[34]=[d("取消",-1)])]),_:1}),a(i,{type:"primary",onClick:Ht},{default:l(()=>[...t[35]||(t[35]=[d("保存",-1)])]),_:1})]),default:l(()=>[a(yt,{model:w,"label-width":"120px"},{default:l(()=>[a(D,{label:"自动同步"},{default:l(()=>[a(Wt,{modelValue:w.auto_sync,"onUpdate:modelValue":t[7]||(t[7]=s=>w.auto_sync=s)},null,8,["modelValue"]),t[33]||(t[33]=n("div",{class:"text-xs text-gray-400 mt-1"}," 开启后将定时自动同步企业微信客户数据 ",-1))]),_:1}),a(D,{label:"同步间隔"},{default:l(()=>[a(pt,{modelValue:w.interval,"onUpdate:modelValue":t[8]||(t[8]=s=>w.interval=s),disabled:!w.auto_sync},{default:l(()=>[a($,{label:"每小时",value:3600}),a($,{label:"每2小时",value:7200}),a($,{label:"每4小时",value:14400}),a($,{label:"每6小时",value:21600}),a($,{label:"每12小时",value:43200}),a($,{label:"每天",value:86400})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),a(St,{modelValue:M.value,"onUpdate:modelValue":t[12]||(t[12]=s=>M.value=s),title:"今日进入明细",direction:"rtl",size:"520px","destroy-on-close":!1},{header:l(()=>[n("div",xl,[n("div",bl,[t[36]||(t[36]=n("span",{class:"text-base font-semibold"},"今日进入明细",-1)),a(g,{type:"success",effect:"plain"},{default:l(()=>[d("共 "+r(f.total)+" 人",1)]),_:1})]),a(i,{link:"",type:"primary",loading:O.value,onClick:t[11]||(t[11]=s=>R(!0))},{icon:l(()=>[a(x(rt))]),default:l(()=>[t[37]||(t[37]=d(" 刷新 ",-1))]),_:1},8,["loading"])])]),default:l(()=>{var s;return[n("div",wl,[a(c,{type:"info",closable:!1,class:"mb-3","show-icon":""},{title:l(()=>[...t[38]||(t[38]=[n("span",{class:"text-xs"}," 一次推送 = 一个人进来;数据来源为企微回调流水表(INSERT IGNORE 幂等),与客户同步解耦,数字零误差。 ",-1)])]),_:1}),(s=h.by_state)!=null&&s.length?(u(),m("div",hl,[t[39]||(t[39]=n("div",{class:"text-xs text-gray-500 mb-1"},"今日推广渠道 Top",-1)),n("div",Sl,[(u(!0),m(E,null,T(h.by_state,o=>(u(),b(g,{key:o.state||"_",size:"small",effect:"light",type:"success"},{default:l(()=>[d(r(o.state||"(无 state")+" · "+r(o.count),1)]),_:2},1024))),128))])])):A("",!0),f.lists.length?(u(),b(Qt,{key:1,class:"mt-2"},{default:l(()=>[(u(!0),m(E,null,T(f.lists,o=>(u(),b(Jt,{key:o.id,timestamp:It(o.event_time),placement:"top",type:"success",hollow:!1},{default:l(()=>[n("div",kl,[a(vt,{size:32,src:o.customer_avatar||void 0},{default:l(()=>[d(r((o.customer_name||"?").slice(0,1)),1)]),_:2},1032,["src"]),n("div",Cl,[n("div",Vl,r(o.customer_name||o.external_userid||"(未知客户)"),1),n("div",El,[n("span",null,"接待:"+r(o.admin_name||o.user_id||"—"),1),o.state?(u(),m("span",Tl,[t[40]||(t[40]=d(" 渠道:",-1)),a(g,{size:"small",type:"info",effect:"plain"},{default:l(()=>[d(r(o.state),1)]),_:2},1024)])):A("",!0),o.welcome_code?(u(),m("span",Al,"欢迎语")):A("",!0)])])])]),_:2},1032,["timestamp"]))),128))]),_:1})):(u(),b(ht,{key:2,description:"今天还没有人进入","image-size":80})),f.total>f.lists.length?(u(),m("div",Nl,[a(i,{loading:O.value,size:"small",onClick:$t},{default:l(()=>[d(" 加载更多(还剩 "+r(f.total-f.lists.length)+" ",1)]),_:1},8,["loading"])])):A("",!0)])]}),_:1},8,["modelValue"]),a(St,{modelValue:K.value,"onUpdate:modelValue":t[16]||(t[16]=s=>K.value=s),title:"标签维度统计",direction:"rtl",size:"560px","destroy-on-close":!1},{header:l(()=>[n("div",ql,[n("div",zl,[t[41]||(t[41]=n("span",{class:"text-base font-semibold"},"标签维度统计",-1)),a(g,{type:"warning",effect:"plain"},{default:l(()=>[d(r(v.groups.length)+" 组 · "+r(v.total_tags)+" 标签 ",1)]),_:1})]),a(i,{link:"",type:"primary",loading:P.value,onClick:t[13]||(t[13]=s=>st(!0))},{icon:l(()=>[a(x(rt))]),default:l(()=>[t[42]||(t[42]=d(" 刷新 ",-1))]),_:1},8,["loading"])])]),default:l(()=>[n("div",Dl,[n("div",$l,[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",Ll,r(v.total_tagged_customers),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",Il,r(v.total_tags),1)]),_:1}),a(p,{shadow:"never","body-class":"!p-3"},{default:l(()=>[t[45]||(t[45]=n("div",{class:"text-xs text-gray-500"},"关系总数",-1)),n("div",Ul,r(v.total_relations),1)]),_:1})]),a(it,{modelValue:lt.value,"onUpdate:modelValue":t[14]||(t[14]=s=>lt.value=s),placeholder:"筛选标签名 / 分组名",clearable:"",size:"small",class:"mb-3"},null,8,["modelValue"]),ut.value.length===0?(u(),b(ht,{key:0,description:P.value?"加载中…":"暂无标签数据","image-size":64},null,8,["description"])):(u(),b(Zt,{key:1,modelValue:at.value,"onUpdate:modelValue":t[15]||(t[15]=s=>at.value=s)},{default:l(()=>[(u(!0),m(E,null,T(ut.value,s=>(u(),b(Xt,{key:s.group_name||"_",name:s.group_name||"_"},{title:l(()=>[n("div",jl,[n("span",Pl,r(s.group_name||"(未分组)"),1),a(g,{size:"small",effect:"plain"},{default:l(()=>[d(r(s.tags.length),1)]),_:2},1024),n("span",Ml," 最热 "+r(s.customer_count)+" 人 ",1)])]),default:l(()=>[a(bt,{data:s.tags,size:"small",stripe:""},{default:l(()=>[a(S,{label:"标签","min-width":"160"},{default:l(({row:o})=>[n("span",Bl,r(o.tag_name),1),n("div",Hl,r(o.tag_id),1)]),_:1}),a(S,{label:"客户数",width:"100",align:"right"},{default:l(({row:o})=>[n("span",Fl,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:G=>At(o.tag_id)},{default:l(()=>[...t[46]||(t[46]=[d(" 筛选 ",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])]),_:2},1032,["name"]))),128))]),_:1},8,["modelValue"]))])]),_:1},8,["modelValue"]),a(wt,{modelValue:tt.value,"onUpdate:modelValue":t[17]||(t[17]=s=>tt.value=s),title:"客户详情",width:"600px"},{default:l(()=>[y.value?(u(),b(te,{key:0,column:2,border:""},{default:l(()=>[a(V,{label:"客户名称"},{default:l(()=>[d(r(y.value.name),1)]),_:1}),a(V,{label:"External ID"},{default:l(()=>[d(r(y.value.external_userid),1)]),_:1}),a(V,{label:"性别"},{default:l(()=>[d(r(y.value.gender===1?"男":y.value.gender===2?"女":"未知"),1)]),_:1}),a(V,{label:"类型"},{default:l(()=>[d(r(y.value.type===1?"微信用户":"企业微信用户"),1)]),_:1}),a(V,{label:"企业名称",span:2},{default:l(()=>[d(r(y.value.corp_name||"—"),1)]),_:1}),a(V,{label:"职位",span:2},{default:l(()=>[d(r(y.value.position||"—"),1)]),_:1}),a(V,{label:"添加时间",span:2},{default:l(()=>[d(r(X(gt(y.value))),1)]),_:1}),a(V,{label:"更新时间",span:2},{default:l(()=>[d(r(X(y.value.update_time)),1)]),_:1}),a(V,{label:"跟进人",span:2},{default:l(()=>{var s;return[(s=y.value.follow_users)!=null&&s.length?(u(),m("div",Gl,[(u(!0),m(E,null,T(y.value.follow_users,(o,G)=>(u(),b(xt,{key:(o.userid||"")+"-"+G,disabled:!Q(o),content:Q(o),placement:"top"},{default:l(()=>[a(g,{size:"small",class:"mr-1 mb-1"},{default:l(()=>[d(r(ft(o)),1)]),_:2},1024)]),_:2},1032,["disabled","content"]))),128))])):(u(),m("span",Kl,"—"))]}),_:1}),a(V,{label:"标签",span:2},{default:l(()=>{var s;return[(s=y.value.tags)!=null&&s.length?(u(),m("div",Ol,[(u(!0),m(E,null,T(y.value.tags,o=>(u(),b(g,{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(),m("span",Rl,r(o.group_name),1)):A("",!0)]),_:2},1024))),128))])):(u(),m("span",Yl,"—"))]}),_:1})]),_:1})):A("",!0)]),_:1},8,["modelValue"])])}}}),ta=Me(Wl,[["__scopeId","data-v-07da3e76"]]);export{ta as default};