2 lines
9.6 KiB
JavaScript
2 lines
9.6 KiB
JavaScript
import{K as ne,J as ie,U as re,i as ue,D as de,B as me,C as ce,M as pe,N as fe,q as _e,L as ye,g as ve,P as ge,Q as be,Z as xe,a8 as we,a9 as Se}from"./element-plus-DCRlGjqn.js";import{_ as Ve}from"./index.vue_vue_type_script_setup_true_lang-CwEtReGd.js";import{w as A}from"./@vue/runtime-dom-iFk_KP8y.js";import{L as Ce,M as Ee}from"./@element-plus/icons-vue-jYCthPJY.js";import{u as ke}from"./usePaging-B_C_SZ2Z.js";import{r as V,i as k,_ as qe}from"./index-uyUH29BJ.js";import{f as he,b as De,d as Te,ak as _,I as q,a as e,aN as t,J as n,O as o,aP as Ue,G as N,F as Ie,ap as Le,H as Ne}from"./@vue/runtime-core-C0pg79pw.js";import{Q as i}from"./@vue/shared-mAAVTE9n.js";import{y as d,a as Be,o as h,r as B}from"./@vue/reactivity-BIbyPIZJ.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-CYz6RFzi.js";import"./pinia-Ba_jX6-d.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-DIKi2bJB.js";import"./@vueuse/shared-D8934tfB.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-CZvD9OL_.js";import"./tslib-BDyQ-Jie.js";import"./zrender-BQyIY4j9.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-BVMzZUvF.js";function Ke(C){return V.get({url:"/qywx.customer/lists",params:C})}function Pe(){return V.post({url:"/qywx.customer/sync"})}function ze(){return V.get({url:"/qywx.customer/stats"})}function Fe(){return V.get({url:"/qywx.customer/getSyncSettings"})}function je(C){return V.post({url:"/qywx.customer/saveSyncSettings",params:C})}const Oe={class:"qywx-customer-page p-4"},$e={class:"flex items-center justify-between"},Me={class:"flex gap-2"},Ae={class:"grid grid-cols-4 gap-4 mb-4"},Ge={class:"text-2xl font-bold text-primary"},Je={class:"text-2xl font-bold text-success"},Qe={class:"text-sm font-medium"},Re={class:"flex items-center gap-2"},He={class:"font-medium"},Ze={class:"text-xs text-gray-400"},We={key:0},Xe={key:1,class:"text-gray-400"},Ye={class:"flex justify-end mt-4"},et=he({__name:"qywx",setup(C){const D=h(!1),b=h(!1),T=h(!1),r=h(null),y=B({total:0,today:0,lastSync:"",syncStatus:"idle",syncStatusText:"未同步"}),u=B({auto_sync:!1,interval:3600}),m=B({name:"",follow_user:""});let x=null;async function G(s){return Ke(s)}const{pager:w,getLists:U,resetPage:I,resetParams:J}=ke({fetchFun:G,params:m});function Q(){m.name="",m.follow_user="",J()}async function K(){D.value=!0;try{await Pe(),k.msgSuccess("同步成功"),await P(),await U()}catch(s){k.msgError((s==null?void 0:s.message)||"同步失败")}finally{D.value=!1}}async function P(){try{const s=await ze();Object.assign(y,s.data||s)}catch(s){console.error("加载统计失败",s)}}async function R(){try{const s=await Fe();Object.assign(u,s.data||s),u.auto_sync&&z()}catch(s){console.error("加载同步设置失败",s)}}async function H(){try{await je(u),k.msgSuccess("保存成功"),b.value=!1,F(),u.auto_sync&&z()}catch(s){k.msgError((s==null?void 0:s.message)||"保存失败")}}function z(){x||(x=window.setInterval(()=>{K()},u.interval*1e3))}function F(){x&&(clearInterval(x),x=null)}function Z(s){r.value=s,T.value=!0}function E(s){return s?new Date(typeof s=="number"?s*1e3:s).toLocaleString("zh-CN"):"—"}return De(()=>{U(),P(),R()}),Te(()=>{F()}),(s,l)=>{const p=ue,W=ne,v=ie,L=re,j=ce,S=me,O=de,X=_e,f=fe,Y=pe,ee=Ve,te=ve,g=be,le=ge,$=xe,c=Se,ae=we,se=ye;return _(),q("div",Oe,[e(v,{shadow:"never",class:"mb-4"},{header:t(()=>[n("div",$e,[l[11]||(l[11]=n("span",{class:"text-lg font-semibold"},"企业微信客户管理",-1)),n("div",Me,[e(p,{type:"primary",loading:D.value,onClick:K},{icon:t(()=>[e(d(Ce))]),default:t(()=>[l[9]||(l[9]=o(" 立即同步 ",-1))]),_:1},8,["loading"]),e(p,{onClick:l[0]||(l[0]=a=>b.value=!0)},{icon:t(()=>[e(d(Ee))]),default:t(()=>[l[10]||(l[10]=o(" 同步设置 ",-1))]),_:1})])])]),default:t(()=>[e(W,{title:"功能说明",type:"info",closable:!1,class:"mb-4"},{default:t(()=>[...l[12]||(l[12]=[n("div",{class:"text-sm"},[n("p",null,"自动从企业微信同步外部联系人(客户)信息,包括客户基本信息、跟进人等。"),n("p",{class:"mt-1"},"同步后的数据可用于患者信息匹配和自动关联。")],-1)])]),_:1}),n("div",Ae,[e(v,{shadow:"hover"},{default:t(()=>[l[13]||(l[13]=n("div",{class:"text-gray-500 text-sm mb-1"},"总客户数",-1)),n("div",Ge,i(y.total),1)]),_:1}),e(v,{shadow:"hover"},{default:t(()=>[l[14]||(l[14]=n("div",{class:"text-gray-500 text-sm mb-1"},"今日新增",-1)),n("div",Je,i(y.today),1)]),_:1}),e(v,{shadow:"hover"},{default:t(()=>[l[15]||(l[15]=n("div",{class:"text-gray-500 text-sm mb-1"},"最后同步",-1)),n("div",Qe,i(y.lastSync||"未同步"),1)]),_:1}),e(v,{shadow:"hover"},{default:t(()=>[l[16]||(l[16]=n("div",{class:"text-gray-500 text-sm mb-1"},"同步状态",-1)),e(L,{type:y.syncStatus==="success"?"success":"info",size:"small"},{default:t(()=>[o(i(y.syncStatusText),1)]),_:1},8,["type"])]),_:1})])]),_:1}),e(v,{shadow:"never"},{default:t(()=>[e(O,{model:m,inline:"",class:"mb-4"},{default:t(()=>[e(S,{label:"客户名称"},{default:t(()=>[e(j,{modelValue:m.name,"onUpdate:modelValue":l[1]||(l[1]=a=>m.name=a),placeholder:"搜索客户名称",clearable:"",onKeyup:A(d(I),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(S,{label:"跟进人"},{default:t(()=>[e(j,{modelValue:m.follow_user,"onUpdate:modelValue":l[2]||(l[2]=a=>m.follow_user=a),placeholder:"跟进人姓名",clearable:"",onKeyup:A(d(I),["enter"])},null,8,["modelValue","onKeyup"])]),_:1}),e(S,null,{default:t(()=>[e(p,{type:"primary",onClick:d(I)},{default:t(()=>[...l[17]||(l[17]=[o("查询",-1)])]),_:1},8,["onClick"]),e(p,{onClick:Q},{default:t(()=>[...l[18]||(l[18]=[o("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"]),Ue((_(),N(Y,{data:d(w).lists,stripe:""},{default:t(()=>[e(f,{label:"客户信息","min-width":"200"},{default:t(({row:a})=>[n("div",Re,[e(X,{size:40,src:a.avatar},null,8,["src"]),n("div",null,[n("div",He,i(a.name),1),n("div",Ze,i(a.external_userid),1)])])]),_:1}),e(f,{label:"类型",width:"80"},{default:t(({row:a})=>[e(L,{size:"small"},{default:t(()=>[o(i(a.type===1?"微信":"企微"),1)]),_:2},1024)]),_:1}),e(f,{label:"性别",width:"60"},{default:t(({row:a})=>[o(i(a.gender===1?"男":a.gender===2?"女":"未知"),1)]),_:1}),e(f,{label:"跟进人","min-width":"150"},{default:t(({row:a})=>[a.follow_users&&a.follow_users.length?(_(),q("div",We,[(_(!0),q(Ie,null,Le(a.follow_users,(M,oe)=>(_(),N(L,{key:oe,size:"small",class:"mr-1 mb-1"},{default:t(()=>[o(i(M.name),1)]),_:2},1024))),128))])):(_(),q("span",Xe,"—"))]),_:1}),e(f,{label:"添加时间",width:"160"},{default:t(({row:a})=>[o(i(E(a.create_time)),1)]),_:1}),e(f,{label:"更新时间",width:"160"},{default:t(({row:a})=>[o(i(E(a.update_time)),1)]),_:1}),e(f,{label:"操作",width:"120",fixed:"right"},{default:t(({row:a})=>[e(p,{type:"primary",link:"",onClick:M=>Z(a)},{default:t(()=>[...l[19]||(l[19]=[o("查看详情",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[se,d(w).loading]]),n("div",Ye,[e(ee,{modelValue:d(w),"onUpdate:modelValue":l[3]||(l[3]=a=>Be(w)?w.value=a:null),onChange:d(U)},null,8,["modelValue","onChange"])])]),_:1}),e($,{modelValue:b.value,"onUpdate:modelValue":l[7]||(l[7]=a=>b.value=a),title:"同步设置",width:"500px"},{footer:t(()=>[e(p,{onClick:l[6]||(l[6]=a=>b.value=!1)},{default:t(()=>[...l[21]||(l[21]=[o("取消",-1)])]),_:1}),e(p,{type:"primary",onClick:H},{default:t(()=>[...l[22]||(l[22]=[o("保存",-1)])]),_:1})]),default:t(()=>[e(O,{model:u,"label-width":"120px"},{default:t(()=>[e(S,{label:"自动同步"},{default:t(()=>[e(te,{modelValue:u.auto_sync,"onUpdate:modelValue":l[4]||(l[4]=a=>u.auto_sync=a)},null,8,["modelValue"]),l[20]||(l[20]=n("div",{class:"text-xs text-gray-400 mt-1"}," 开启后将定时自动同步企业微信客户数据 ",-1))]),_:1}),e(S,{label:"同步间隔"},{default:t(()=>[e(le,{modelValue:u.interval,"onUpdate:modelValue":l[5]||(l[5]=a=>u.interval=a),disabled:!u.auto_sync},{default:t(()=>[e(g,{label:"每小时",value:3600}),e(g,{label:"每2小时",value:7200}),e(g,{label:"每4小时",value:14400}),e(g,{label:"每6小时",value:21600}),e(g,{label:"每12小时",value:43200}),e(g,{label:"每天",value:86400})]),_:1},8,["modelValue","disabled"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"]),e($,{modelValue:T.value,"onUpdate:modelValue":l[8]||(l[8]=a=>T.value=a),title:"客户详情",width:"600px"},{default:t(()=>[r.value?(_(),N(ae,{key:0,column:2,border:""},{default:t(()=>[e(c,{label:"客户名称"},{default:t(()=>[o(i(r.value.name),1)]),_:1}),e(c,{label:"External ID"},{default:t(()=>[o(i(r.value.external_userid),1)]),_:1}),e(c,{label:"性别"},{default:t(()=>[o(i(r.value.gender===1?"男":r.value.gender===2?"女":"未知"),1)]),_:1}),e(c,{label:"类型"},{default:t(()=>[o(i(r.value.type===1?"微信用户":"企业微信用户"),1)]),_:1}),e(c,{label:"企业名称",span:2},{default:t(()=>[o(i(r.value.corp_name||"—"),1)]),_:1}),e(c,{label:"职位",span:2},{default:t(()=>[o(i(r.value.position||"—"),1)]),_:1}),e(c,{label:"添加时间",span:2},{default:t(()=>[o(i(E(r.value.create_time)),1)]),_:1}),e(c,{label:"更新时间",span:2},{default:t(()=>[o(i(E(r.value.update_time)),1)]),_:1})]),_:1})):Ne("",!0)]),_:1},8,["modelValue"])])}}}),jt=qe(et,[["__scopeId","data-v-02092ac5"]]);export{jt as default};
|