PageSourceSearch

https://www.caodui.com.cn/assets/LeadAnalytics-9a7d8dae.js

js caodui.com.cn collected 2026-09-24 14:38:10 UTC 27,408 bytes, 11 lines download raw bytes

1import{v as Pt,w as jt,W as c,z as v,B as Wt,F as l,G as i,H as t,P as b,V as h,M as K,K as n,N as p,I as f,O as R,Q as it,cA as Vt,J as x,a0 as w,L as rt,Y as k}from"./head-11ac15ec.js";import{d as j}from"./dayjs.min-6b2d6dfe.js";import{_ as dt}from"./Button.vue_vue_type_script_setup_true_lang-6d49e010.js";import{U as Et}from"./UiModal-cf9fc63d.js";import{U as ut}from"./UiMultiSelect-18c61107.js";import Ft from"./CrmWorkWxTagPicker-8a8e2dbf.js";import{q as qt,a as Kt,u as Ht}from"./entry-dashboard-6ba83ea4.js";import{b as Qt,a as Jt}from"./workWx-360e4bd9.js";import{U as Xt}from"./users-round-287a5e9a.js";import{U as Zt}from"./user-check-f626c825.js";import{c as mt}from"./createLucideIcon-892d1df9.js";import{T as te}from"./trending-up-49f368c1.js";import{L as ee}from"./list-filter-b47f2eec.js";import{S as ct}from"./settings-2-6c49ffe1.js";import{R as se}from"./refresh-cw-93e5b901.js";import{C as ae}from"./chart-column-62f7acee.js";import{S as oe}from"./shield-alert-09055a60.js";import{L as ne}from"./layers-516137af.js";import{T as le}from"./tags-d77814c4.js";import{L as pt}from"./loader-circle-821936f1.js";import{S as ie}from"./index-73195574.js";import{R as re}from"./dayjs-5dbc040b.js";import{_ as de}from"./index-a6486c7e.js";import{_ as ue}from"./_plugin-vue_export-helper-c27b6911.js";import"./_commonjsHelpers-de833af9.js";import"./cn-c4c00897.js";import"./Checkbox.vue_vue_type_script_setup_true_lang-42d7a066.js";import"./check-14e880ba.js";import"./x-3e8bd54d.js";import"./chevron-down-edab01db.js";import"./search-64fe259d.js";import"./tag-c6dc5571.js";import"./folder-395c169b.js";import"./base-de1e3998.js";import"./index-b5dedc4a.js";import"./subscriptionAccess-8cab1a4f.js";import"./initDefaultProps-0241ed85.js";import"./index-ea81ff4d.js";import"./warning-9d898064.js";import"./index-f2a3b70a.js";import"./index-603b3c6c.js";import"./isVisible-497559b3.js";import"./useState-cc83b0d8.js";import"./raf-9455150d.js";import"./devWarning-8733ffd3.js";import"./compact-item-b431ee7b.js";import"./createContext-1de3bc8e.js";import"./Compact-6a65c6f0.js";import"./_getTag-8c11fcb3.js";import"./index-4f4f56e0.js";import"./colors-23b21ff3.js";import"./KeyCode-5c67594e.js";import"./vnode-52d7fb07.js";import"./useMergedState-a5e5fbd8.js";import"./Trigger-b0885fc7.js";import"./motion-c7a41033.js";import"./ResizeObserver.es-0f9f8adb.js";import"./PortalWrapper-d8c3ce9d.js";import"./useMemo-c6791208.js";import"./shallowequal-f43756e2.js";import"./FormItemContext-a613ea63.js";import"./omit-5647727f.js";import"./statusUtils-3cd7db73.js";import"./index-10054500.js";import"./move-de4903a8.js";import"./slide-63efd0f7.js";import"./roundedArrow-e2771650.js";import"./styleChecker-750eb6f2.js";import"./eagerComputed-e67f00a7.js";import"./class-b450cc59.js";import"./index-89161eae.js";import"./css-19f43f0c.js";import"./pickAttrs-17a8a441.js";import"./index-caff0cd5.js";import"./index-59937939.js";import"./BaseInput-7ce63069.js";import"./Overflow-87e2a63f.js";import"./List-04a4d482.js";import"./isMobile-2f3de9bc.js";import"./CheckOutlined-cc885d2d.js";import"./useBreakpoint-a37e6806.js";import"./responsiveObserve-6a978c72.js";import"./firstNotUndefined-29a740f3.js";import"./index-1777e642.js";import"./collapseMotion-78df4731.js";import"./index-298a226f.js";import"./debounce-1a038fa7.js";import"./toNumber-93059667.js";import"./isSymbol-e74635b2.js";import"./index-637461c2.js";import"./Checkbox-91685287.js";import"./index-039797a1.js";import"./Dropdown-0a1cabb8.js";import"./index-ceaec0d4.js";import"./_arrayIncludesWith-545a7eeb.js";import"./index-18403940.js";import"./zoom-3a287a72.js";import"./index-99158966.js";import"./index-8289ed30.js";import"./Search-bb8dbb20.js";import"./inputProps-be9c8af4.js";import"./TextArea-bb764457.js";import"./EyeOutlined-fbc82a02.js";/**
2 * @license lucide-vue-next v0.562.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const ce=mt("chart-pie",[["path",{d:"M21 12c.552 0 1.005-.449.95-.998a10 10 0 0 0-8.953-8.951c-.55-.055-.998.398-.998.95v8a1 1 0 0 0 1 1z",ke
6y:"pzmjnu"}],["path",{d:"M21.21 15.89A10 10 0 1 1 8 2.83",key:"k2fpak"}]]);/**
7 * @license lucide-vue-next v0.562.0 - ISC
8 *
9 * This source code is licensed under the ISC license.
10 * See the LICENSE file in the root directory of this source tree.
11 */const vt=mt("user-x",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}],["line",{x1:"17",x2:"22",y1:"8",y2:"13",key:"3nzzx3"}],["line",{x1:"22",x2:"17",y1:"8",y2:"13",key:"1swrse"}]]),pe={class:"lead-analytics-page h-full animate-in fade-in slide-in-from-bottom-2 duration-300 p-6"},ve={class:"analytics-header"},me={class:"analytics-toolbar"},ge={class:"quick-range","aria-label":"统计周期快捷选择"},fe=["onClick"],_e=["disabled"],be={class:"analytics-content"},he={class:"analytics-section"},ye={class:"section-heading"},Ce={class:"section-meta"},xe={class:"grid grid-cols-1 gap-3 md:grid-cols-2 xl:grid-cols-4"},we={class:"flex items-center justify-between gap-3"},ke={class:"metric-label"},Ne={class:"metric-icon-shell"},Re={class:"mt-2 text-xl font-bold text-slate-900"},Te={class:"mt-1 truncate text-xs text-slate-400"},Ie={class:"analytics-section"},Se={class:"grid grid-cols-1 gap-4 xl:grid-cols-[minmax(0,1.25fr)_minmax(340px,0.75fr)]"},Ae={class:"panel"},Le={class:"panel-header"},Ge={class:"panel-title"},Me={class:"panel-extra"},Oe={key:0,class:"trend-list"},De={class:"trend-date"},Ue={class:"trend-bars"},Ye={class:"trend-track"},Be={class:"trend-track"},$e={class:"trend-track"},ze={class:"trend-values"},Pe={class:"text-emerald-600"},je={class:"text-blue-600"},We={class:"text-rose-500"},Ve={key:1,class:"empty-state"},Ee={class:"panel"},Fe={class:"panel-header"},qe={class:"panel-title"},Ke={class:"space-y-3"},He={class:"text-sm font-semibold text-slate-800"},Qe={class:"mt-1 text-xs text-slate-400"},Je={class:"analytics-section"},Xe={class:"grid grid-cols-1 gap-4 xl:grid-cols-3"},Ze={class:"panel"},ts={class:"panel-header"},es={class:"panel-title"},ss={key:0,class:"breakdown-list"},as={class:"flex items-center justify-between gap-3"},os={class:"truncate text-sm font-semibold text-slate-700"},ns={class:"text-sm font-bold text-slate-900"},ls={class:"mt-2 h-2 rounded-full bg-slate-100"},is={class:"mt-1 flex items-center justify-between text-xs text-slate-400"},rs={key:1,class:"empty-state"},ds={class:"panel"},us={class:"panel-header"},cs={class:"panel-title"}
11,ps={key:0,class:"breakdown-list"},vs={class:"flex items-center justify-between gap-3"},ms={class:"truncate text-sm font-semibold text-slate-700"},gs={class:"text-sm font-bold text-slate-900"},fs={class:"mt-2 h-2 rounded-full bg-slate-100"},_s={class:"mt-1 flex items-center justify-between text-xs text-slate-400"},bs={key:1,class:"empty-state"},hs={class:"panel"},ys={class:"panel-header"},Cs={class:"panel-title"},xs={key:0,class:"breakdown-list"},ws={class:"flex items-center justify-between gap-3"},ks={class:"truncate text-sm font-semibold text-slate-700"},Ns={class:"text-sm font-bold text-slate-900"},Rs={class:"mt-2 h-2 rounded-full bg-slate-100"},Ts={class:"mt-1 flex items-center justify-between text-xs text-slate-400"},Is={key:1,class:"empty-state"},Ss={class:"analytics-section"},As={class:"section-heading"},Ls={key:0,class:"grid grid-cols-1 gap-4 xl:grid-cols-2"},Gs={class:"panel-header"},Ms={class:"panel-title"},Os={class:"panel-extra"},Ds={class:"breakdown-list"},Us={class:"flex items-center justify-between gap-3"},Ys={class:"truncate text-sm font-semibold text-slate-700"},Bs={class:"text-sm font-bold text-slate-900"},$s={class:"mt-2 h-2 rounded-full bg-slate-100"},zs={class:"mt-1 flex items-center justify-between text-xs text-slate-400"},Ps={key:1,class:"empty-state"},js={class:"analytics-section"},Ws={class:"panel"},Vs={key:0,class:"font-semibold text-slate-800"},Es={key:1,class:"inline-flex rounded-md border border-slate-200 bg-white px-2 py-0.5 text-xs text-slate-600"},Fs={key:2,class:"font-semibold text-emerald-600"},qs={key:3,class:"font-semibold text-blue-600"},Ks={key:4,class:"font-semibold text-rose-500"},Hs={key:5,class:"text-slate-600"},Qs={class:"scope-modal"},Js={class:"scope-modal-summary"},Xs={class:"scope-count"},Zs={key:0,class:"scope-loading"},ta={key:1,class:"scope-form"},ea={class:"scope-field"},sa={class:"scope-field"},aa={class:"scope-field"},oa={class:"relative z-[70] flex items-center justify-between gap-3"},na={class:"flex justify-end gap-2"},la=Pt({__name:"LeadAnalytics",setup(ia){const gt=jt(),T=c(!1),I=c("TODAY"),S=c([j(),j()]),D=c("day"),A=c("NONE"),u=c(Ut()),H=c([]),Q=c([]),J=c([]),X=c([]),Z=c([]),tt=c([]),U=c(Yt()),L=c(!1),Y=c(!1),y=c(!1),B=c([]),$=c([]),G=c([]),z=c([]),M=c([]),W=[{key:"TODAY",label:"今日",startOffset:0,endOffset:0},{key:"YESTERDAY",label:"昨日",startOffset:1,endOffset:1},{key:"LAST_7_DAYS",label:"近7天",startOffset:6,endOffset:0},{key:"LAST_30_DAYS",label:"近30天",startOffset:29,endOffset:0}],ft=[{label:"按日",value:"day"},{label:"按月",value:"month"},{label:"合计",value:"total"}],_t=[{label:"全部",value:"NONE"},{label:"来源",value:"SOURCE"},{label:"阶段",value:"STAGE"},{label:"标签",value:"TAG"}],et=v(()=>{var s;return I.value==="CUSTOM"?"自定义":((s=W.find(e=>e.key===I.value))==null?void 0:s.label)||"自定义"}),bt=v(()=>{const[s,e]=S.value||[];if(!s||!e)return"-";const a=s.format("YYYY-MM-DD"),r=e.format("YYYY-MM-DD");return a===r?a:`${a} 至 ${r}`}),ht=v(()=>{var s;return((s=ft.find(e=>e.value===D.value))==null?void 0:s.label)||"按日"}),yt=v(()=>{var s;return((s=_t.find(e=>e.value===A.value))==null?void 0:s.label)||"维度"}),Ct=v(()=>H.value),V=v(()=>J.value.slice(0,8)),E=v(()=>X.value.slice(0,8)),F=v(()=>tt.value.slice(0,8)),st=v(()=>Z.value.filter(s=>s.rows.length).slice(0,4)),xt=v(()=>Math.max(...V.value.map(s=>s.createdCount),1)),wt=v(()=>Math.max(...E.value.map(s=>s.createdCount),1)),kt=v(()=>Math.max(...F.value.map(s=>s.createdCount),1)),at=v(()=>B.value.map(s=>({label:s.groupName||s.groupId,value:s.groupId}))),Nt=v(()=>{const s=new Set(M.value),e=new Set(G.value);return $.value.forEach(a=>{a.groupId&&e.has(a.groupId)&&s.add(a.tagId)}),s.size}),q=v(()=>{const s=[...Q.value].sort((e,a)=>$t(e.date,a.date));return s.length<=14?s:s.slice(-14)}),Rt=v(()=>Math.max(...q.value.flatMap(s=>[s.createdCount,s.convertedCount,s.invalidCount]),1)),Tt=v(()=>[{label:"新增线索",value:m(u.value.createdCount),detail:`${et.value}创建`,icon:Xt},{label:"已转客户",value:m(u.value.convertedCount),detail:`转化率 ${_(u.value.conversionRate)}`,icon:Zt}
11,{label:"无效线索",value:m(u.value.invalidCount),detail:`无效率 ${_(u.value.invalidRate)}`,icon:vt},{label:"跟进中",value:m(u.value.activeCount),detail:"未转客户且未无效",icon:te}]),It=v(()=>{const s=Math.max(u.value.createdCount-u.value.invalidCount,0),e=u.value.createdCount>0?s/u.value.createdCount:0;return[{label:"转化质量",detail:`已转客户 / 新增线索 = ${_(u.value.conversionRate)}`,value:u.value.conversionRate>=.25?"较好":u.value.conversionRate>=.1?"观察":"偏低",tone:u.value.conversionRate>=.25?"tone-good":u.value.conversionRate>=.1?"tone-warn":"tone-bad"},{label:"无效压力",detail:`无效线索 / 新增线索 = ${_(u.value.invalidRate)}`,value:u.value.invalidRate>=.3?"偏高":u.value.invalidRate>=.15?"观察":"平稳",tone:u.value.invalidRate>=.3?"tone-bad":u.value.invalidRate>=.15?"tone-warn":"tone-good"},{label:"有效沉淀",detail:`有效线索 / 新增线索 = ${_(e)}`,value:e>=.8?"扎实":e>=.6?"观察":"偏低",tone:e>=.8?"tone-good":e>=.6?"tone-warn":"tone-bad"}]}),St=v(()=>{const s=[{title:D.value==="month"?"月份":D.value==="total"?"汇总":"日期",dataIndex:"date",key:"date",width:140}];return A.value!=="NONE"&&s.push({title:yt.value,dataIndex:"groupName",key:"groupName",width:180}),s.push({title:"新增线索",dataIndex:"createdCount",key:"createdCount",width:130},{title:"已转客户",dataIndex:"convertedCount",key:"convertedCount",width:130},{title:"无效线索",dataIndex:"invalidCount",key:"invalidCount",width:130},{title:"跟进中",dataIndex:"activeCount",key:"activeCount",width:120},{title:"私海",dataIndex:"privateCount",key:"privateCount",width:110},{title:"公海",dataIndex:"publicCount",key:"publicCount",width:110},{title:"转化率",dataIndex:"conversionRate",key:"conversionRate",width:120}),s});async function O(){var s,e;T.value=!0;try{const[a,r]=S.value||[],d=await qt({startDate:a?a.format("YYYY-MM-DD"):void 0,endDate:r?r.format("YYYY-MM-DD"):void 0,aggregateType:D.value,groupBy:A.value});if(((s=d==null?void 0:d.data)==null?void 0:s.code)!==0){k.error(((e=d==null?void 0:d.data)==null?void 0:e.msg)||"线索分析查询失败");return}const o=d.data.data||{},g=P(o.tagScope);u.value=lt(o.summary),H.value=A.value==="TAG"&&!g.configured?[]:N(o.rows),Q.value=N(o.trendRows),J.value=N(o.sourceBreakdown),X.value=N(o.stageBreakdown),tt.value=N(o.invalidReasonBreakdown),U.value=g,Z.value=Dt(o.tagGroupBreakdowns)}catch(a){k.error((a==null?void 0:a.message)||"线索分析查询失败")}finally{T.value=!1}}function At(s){const e=W.find(d=>d.key===s);if(!e)return;const a=j().subtract(e.endOffset,"day"),r=j().subtract(e.startOffset,"day");I.value=s,S.value=[r,a],O()}function Lt(){I.value="CUSTOM",O()}function Gt(){gt.push("/dashboard/market/acquisition/leads")}async function ot(){var s,e;L.value=!0,Y.value=!0;try{await Ot();const a=await Kt();if(((s=a==null?void 0:a.data)==null?void 0:s.code)!==0){k.error(((e=a==null?void 0:a.data)==null?void 0:e.msg)||"标签口径查询失败");return}const r=P(a.data.data);U.value=r,G.value=[...r.tagGroupIds],z.value=[...r.contributionTagGroupIds],M.value=[...r.tagIds]}catch(a){k.error((a==null?void 0:a.message)||"标签口径查询失败")}finally{Y.value=!1}}async function Mt(){var s,e;y.value=!0;try{const a=await Ht({tagGroupIds:G.value,contributionTagGroupIds:z.value,tagIds:M.value});if(((s=a==null?void 0:a.data)==null?void 0:s.code)!==0){k.error(((e=a==null?void 0:a.data)==null?void 0:e.msg)||"标签口径保存失败");return}U.value=P(a.data.data),L.value=!1,k.success("标签统计口径已保存"),await O()}catch(a){k.error((a==null?void 0:a.message)||"标签口径保存失败")}finally{y.value=!1}}async function Ot(){if(B.value.length||$.value.length)return;const[s,e]=await Promise.all([Qt({page:0,size:1e3}),Jt({page:0,size:9999})]),a=nt(s),r=nt(e);B.value=Array.isArray(a)?a.filter(d=>(d==null?void 0:d.groupId)&&!d.deleted):[],$.value=Array.isArray(r)?r.filter(d=>(d==null?void 0:d.tagId)&&!d.deleted):[]}function nt(s){var e,a,r;return((e=s==null?void 0:s.data)==null?void 0:e.content)||((r=(a=s==null?void 0:s.data)==null?void 0:a.data)==null?void 0:r.content)||[]}function N(s){return(Array.isArray(s)?s:[]).map((a,r)=>
11({rowKey:`${a.date||"row"}-${a.groupCode||a.groupName||"ALL"}-${r}`,date:String(a.date||"-"),groupCode:String(a.groupCode||"ALL"),groupName:String(a.groupName||a.groupCode||"全部"),count:Number(a.count??a.createdCount??0),createdCount:Number(a.createdCount??a.count??0),convertedCount:Number(a.convertedCount||0),invalidCount:Number(a.invalidCount||0),activeCount:Number(a.activeCount||0),privateCount:Number(a.privateCount||0),publicCount:Number(a.publicCount||0),conversionRate:Number(a.conversionRate||0),invalidRate:Number(a.invalidRate||0),share:Number(a.share||0)}))}function Dt(s){return(Array.isArray(s)?s:[]).map((a,r)=>({groupId:String(a.groupId||`GROUP_${r}`),groupName:String(a.groupName||a.groupId||"标签组"),leadCount:Number(a.leadCount||0),rows:N(a.rows)}))}function lt(s){const e=s||{};return{totalLeadCount:Number(e.totalLeadCount||0),totalPrivateCount:Number(e.totalPrivateCount||0),totalPublicCount:Number(e.totalPublicCount||0),createdCount:Number(e.createdCount||0),convertedCount:Number(e.convertedCount||0),invalidCount:Number(e.invalidCount||0),activeCount:Number(e.activeCount||0),privateCount:Number(e.privateCount||0),publicCount:Number(e.publicCount||0),conversionRate:Number(e.conversionRate||0),invalidRate:Number(e.invalidRate||0),privateRate:Number(e.privateRate||0),overdueFollowUpCount:Number(e.overdueFollowUpCount||0),todayFollowUpCount:Number(e.todayFollowUpCount||0),untouchedPrivateCount:Number(e.untouchedPrivateCount||0)}}function Ut(){return lt(null)}function P(s){const e=s||{},a=Array.isArray(e.tagGroupIds)?e.tagGroupIds.map(String).filter(Boolean):[],r=Array.isArray(e.contributionTagGroupIds)?e.contributionTagGroupIds.map(String).filter(Boolean):a;return{configured:!!e.configured,resolvedTagCount:Number(e.resolvedTagCount||0),selectedGroupCount:Number(e.selectedGroupCount||0),selectedContributionGroupCount:Number(e.selectedContributionGroupCount||0),selectedTagCount:Number(e.selectedTagCount||0),tagGroupIds:a,contributionTagGroupIds:r,tagIds:Array.isArray(e.tagIds)?e.tagIds.map(String).filter(Boolean):[]}}function Yt(){return P(null)}function C(s,e=Rt.value){const a=Number(s||0);return a<=0?"0%":`${Math.max(4,Math.min(100,a/Math.max(e,1)*100))}%`}function Bt(s){return Math.max(...s.map(e=>e.createdCount),1)}function $t(s,e){return s===e?0:s==="合计"?1:e==="合计"?-1:s.localeCompare(e)}function zt(s){return s?s==="合计"?s:/^\d{4}-\d{2}-\d{2}$/.test(s)?s.slice(5):s:"-"}function m(s){return Number(s||0).toLocaleString("zh-CN",{maximumFractionDigits:0})}function _(s){return`${(Number(s||0)*100).toFixed(1)}%`}return Wt(O),(s,e)=>{const a=re,r=de,d=ie;return l(),i("div",pe,[t("div",ve,[e[9]||(e[9]=t("div",{class:"min-w-0"},[t("h1",{class:"text-xl font-bold text-slate-900"},"线索数据分析"),t("p",{class:"mt-1 text-sm text-slate-500"},"来自 CRM 线索,按创建日期归因,跨私海和公海查看获客质量。")],-1)),t("div",me,[t("div",ge,[(l(),i(b,null,h(W,o=>t("button",{key:o.key,type:"button",class:K(["quick-range-btn",I.value===o.key?"quick-range-btn-active":""]),onClick:g=>At(o.key)},n(o.label),11,fe)),64))]),p(a,{value:S.value,"onUpdate:value":e[0]||(e[0]=o=>S.value=o),class:"modern-range-picker w-full sm:w-64",allowClear:!1,onChange:Lt},null,8,["value"]),t("button",{class:"ghost-btn",type:"button",onClick:Gt},[p(f(ee),{class:"h-4 w-4"}),e[6]||(e[6]=t("span",null,"线索明细",-1))]),t("button",{class:"ghost-btn",type:"button",onClick:ot},[p(f(ct),{class:"h-4 w-4"}),e[7]||(e[7]=t("span",null,"标签口径",-1))]),t("button",{class:"action-btn bg-slate-900 text-white hover:bg-slate-800",disabled:T.value,onClick:O},[p(f(se),{class:K(["h-4 w-4",{"animate-spin":T.value}])},null,8,["class"]),e[8]||(e[8]=t("span",null,"刷新",-1))],8,_e)])]),p(d,{spinning:T.value},{default:R(()=>[t("div",be,[t("section",he,[t("div",ye,[e[10]||(e[10]=t("div",null,[t("div",{class:"section-kicker"},"01 总览"),t("h2",{class:"section-title"},"线索经营全貌"),t("p",{class:"section-subtitle"},"按创建日期看新增、转客户、无效和仍在推进的线索。")],-1)),t("div",Ce,[t("span",null,n(et.value),1),t("b",null,n(bt.value),1)])]),t("div",xe,[(l(!0),i(b,null,h(Tt.value,o=>(l(),i("div",{key:o.label,class:"metric-tile"},[t("div",we,[t("span",ke,n(o.label),1),t("span",Ne,[(l(),it(Vt(o.icon),{class:"h-4 w-4"}))])]),t("div",Re,n(o.value),1),t("div",Te,n(o.detail),1)]))),128))])]),t("section",Ie,[t("div",Se,[t("section",Ae,[t("div",Le,[t("h3",Ge,[p(f(ae),{class:"h-4 w-4 text-blue-500"}),e[11]||(e[11]=x("线索趋势",-1))]),t("span",Me,n(ht.value),1)]),q.value.length?(l(),i("div",Oe,[(l(!0),i(b,null,h(q.value,o=>(l(),i("div",{key:o.date,class:"trend-row"},[t("span",De,n(zt(o.date)),1),t("div",Ue,[t("div",Ye,[t("div",{class:"trend-bar bg-emerald-400",style:w({width:C(o.createdCount)})},null,4)]),t("div",Be,[t("div",{class:"trend-bar bg-blue-400",style:w({width:C(o.c
11onvertedCount)})},null,4)]),t("div",$e,[t("div",{class:"trend-bar bg-rose-400",style:w({width:C(o.invalidCount)})},null,4)])]),t("div",ze,[t("span",Pe,"+"+n(m(o.createdCount)),1),t("span",je,"转 "+n(m(o.convertedCount)),1),t("span",We,"无效 "+n(m(o.invalidCount)),1)])]))),128))])):(l(),i("div",Ve,"暂无趋势数据"))]),t("section",Ee,[t("div",Fe,[t("h3",qe,[p(f(oe),{class:"h-4 w-4 text-orange-500"}),e[12]||(e[12]=x("质量健康度",-1))])]),t("div",Ke,[(l(!0),i(b,null,h(It.value,o=>(l(),i("div",{key:o.label,class:"health-row"},[t("div",null,[t("div",He,n(o.label),1),t("div",Qe,n(o.detail),1)]),t("span",{class:K(["health-badge",o.tone])},n(o.value),3)]))),128))])])])]),t("section",Je,[e[17]||(e[17]=t("div",{class:"section-heading"},[t("div",null,[t("div",{class:"section-kicker"},"02 结构"),t("h2",{class:"section-title"},"来源、阶段与无效原因"),t("p",{class:"section-subtitle"},"看清线索从哪里来、处在哪个阶段,以及无效主要集中在哪些原因。")])],-1)),t("div",Xe,[t("section",Ze,[t("div",ts,[t("h3",es,[p(f(ce),{class:"h-4 w-4 text-emerald-500"}),e[13]||(e[13]=x("来源贡献",-1))])]),V.value.length?(l(),i("div",ss,[(l(!0),i(b,null,h(V.value,o=>(l(),i("div",{key:o.groupCode,class:"breakdown-row"},[t("div",as,[t("span",os,n(o.groupName),1),t("span",ns,n(m(o.createdCount)),1)]),t("div",ls,[t("div",{class:"h-2 rounded-full bg-emerald-400",style:w({width:C(o.createdCount,xt.value)})},null,4)]),t("div",is,[t("span",null,"转客户 "+n(m(o.convertedCount)),1),t("span",null,n(_(o.share)),1)])]))),128))])):(l(),i("div",rs,"暂无来源数据"))]),t("section",ds,[t("div",us,[t("h3",cs,[p(f(ne),{class:"h-4 w-4 text-indigo-500"}),e[14]||(e[14]=x("阶段分布",-1))])]),E.value.length?(l(),i("div",ps,[(l(!0),i(b,null,h(E.value,o=>(l(),i("div",{key:o.groupCode,class:"breakdown-row"},[t("div",vs,[t("span",ms,n(o.groupName),1),t("span",gs,n(m(o.createdCount)),1)]),t("div",fs,[t("div",{class:"h-2 rounded-full bg-indigo-400",style:w({width:C(o.createdCount,wt.value)})},null,4)]),t("div",_s,[t("span",null,"转客户 "+n(m(o.convertedCount)),1),t("span",null,n(_(o.share)),1)])]))),128))])):(l(),i("div",bs,"暂无阶段数据"))]),t("section",hs,[t("div",ys,[t("h3",Cs,[p(f(vt),{class:"h-4 w-4 text-rose-500"}),e[15]||(e[15]=x("无效原因分布",-1))])]),F.value.length?(l(),i("div",xs,[(l(!0),i(b,null,h(F.value,o=>(l(),i("div",{key:o.groupCode,class:"breakdown-row"},[t("div",ws,[t("span",ks,n(o.groupName),1),t("span",Ns,n(m(o.createdCount)),1)]),t("div",Rs,[t("div",{class:"h-2 rounded-full bg-rose-400",style:w({width:C(o.createdCount,kt.value)})},null,4)]),t("div",Ts,[e[16]||(e[16]=t("span",null,"占无效线索",-1)),t("span",null,n(_(o.share)),1)])]))),128))])):(l(),i("div",Is,"暂无无效原因数据"))])])]),t("section",Ss,[t("div",As,[e[18]||(e[18]=t("div",null,[t("div",{class:"section-kicker"},"03 标签"),t("h2",{class:"section-title"},"标签贡献"),t("p",{class:"section-subtitle"},"按已配置的贡献维度标签组拆开看贡献。")],-1)),t("button",{class:"ghost-btn",type:"button",onClick:ot},[p(f(ct),{class:"h-4 w-4"}),t("span",null,n(U.value.configured?"调整口径":"设置口径"),1)])]),st.value.length?(l(),i("div",Ls,[(l(!0),i(b,null,h(st.value,o=>(l(),i("section",{key:o.groupId,class:"panel"},[t("div",Gs,[t("h3",Ms,[p(f(le),{class:"h-4 w-4 text-cyan-500"}),x(n(o.groupName),1)]),t("span",Os,n(m(o.leadCount))+" 条",1)]),t("div",Ds,[(l(!0),i(b,null,h(o.rows,g=>(l(),i("div",{key:`${o.groupId}-${g.groupCode}`,class:"breakdown-row"},[t("div",Us,[t("span",Ys,n(g.groupName),1),t("span",Bs,n(m(g.createdCount)),1)]),t("div",$s,[t("div",{class:"h-2 rounded-full bg-cyan-400",style:w({width:C(g.createdCount,Bt(o.rows))})},null,4)]),t("div",zs,[t("span",null,"转客户 "+n(m(g.convertedCount)),1),t("span",null,n(_(g.share)),1)])]))),128))])]))),128))])):(l(),i("div",Ps," 当前周期暂无标签贡献数据 "))]),t("section",js,[e[19]||(e[19]=t("div",{class:"section-heading"},[t("div",null,[t("div",{class:"section-kicker"},"04 明细"),t("h2",{class:"section-title"},"统计明细"),t("p",{class:"section-subtitle"},"按当前周期查看线索创建后的当前状态。")])],-1)),t("section",Ws,[p(r,{"data-source":Ct.value,columns:St.value,"row-key":"rowKey",pagination:!1,scroll:{x:A.value==="NONE"?940:1100},class:"modern-table"},{bodyCell:R(({column:o,record:g})=>[o.dataIndex==="date"?(l(),i("span",Vs,n(g.date),1)):o.dataIndex==="groupName"?(l(),i("span",Es,n(g.groupName),1)):o.dataIndex==="createdCount"?(l(),i("span",Fs,n(m(g.createdCount)),1)):o.dataIndex==="convertedCount"?(l(),i("span",qs,n(m(g.convertedCount)),1)):o.dataIndex==="invalidCount"?(l(),i("span",Ks,n(m(g.invali
11dCount)),1)):o.dataIndex==="conversionRate"?(l(),i("span",Hs,n(_(g.conversionRate)),1)):rt("",!0)]),_:1},8,["data-source","columns","scroll"])])])])]),_:1},8,["spinning"]),p(Et,{open:L.value,"onUpdate:open":e[5]||(e[5]=o=>L.value=o),title:"线索统计标签口径","max-width-class":"max-w-3xl","mask-closable":!y.value,closable:!y.value},{footer:R(()=>[t("div",oa,[e[28]||(e[28]=t("div",{class:"hidden text-xs text-slate-400 sm:block"}," 统计口径负责筛选线索;贡献维度负责拆分标签贡献榜。 ",-1)),t("div",na,[p(dt,{variant:"outline",disabled:y.value,onClick:e[4]||(e[4]=o=>L.value=!1)},{default:R(()=>[...e[26]||(e[26]=[x("取消",-1)])]),_:1},8,["disabled"]),p(dt,{disabled:Y.value||y.value,onClick:Mt},{default:R(()=>[y.value?(l(),it(f(pt),{key:0,class:"h-4 w-4 animate-spin"})):rt("",!0),e[27]||(e[27]=t("span",null,"保存口径",-1))]),_:1},8,["disabled"])])])]),default:R(()=>[t("div",Qs,[t("div",Js,[e[21]||(e[21]=t("div",{class:"min-w-0"},[t("div",{class:"text-sm font-semibold text-slate-800"},"分别配置统计口径和贡献维度"),t("div",{class:"mt-1 text-xs leading-5 text-slate-500"},"纳入统计用于筛选线索;贡献维度只决定标签贡献榜按哪些标签组拆分。")],-1)),t("div",Xs,[t("b",null,n(Nt.value),1),e[20]||(e[20]=t("span",null,"纳入标签",-1))])]),Y.value?(l(),i("div",Zs,[p(f(pt),{class:"h-5 w-5 animate-spin text-emerald-500"}),e[22]||(e[22]=t("span",null,"正在读取标签口径",-1))])):(l(),i("div",ta,[t("div",ea,[e[23]||(e[23]=t("div",{class:"scope-field-head"},[t("label",{class:"scope-field-label"},"纳入标签组"),t("span",{class:"scope-field-tip"},"选中整组后,该组下所有标签都会进入统计")],-1)),p(ut,{modelValue:G.value,"onUpdate:modelValue":e[1]||(e[1]=o=>G.value=o),options:at.value,placeholder:"选择整组标签,例如:账号、来源、投放渠道","show-search":"","max-tag-count":3},null,8,["modelValue","options"])]),t("div",sa,[e[24]||(e[24]=t("div",{class:"scope-field-head"},[t("label",{class:"scope-field-label"},"标签贡献维度"),t("span",{class:"scope-field-tip"},"只影响贡献榜,不会改变纳入统计的线索范围")],-1)),p(ut,{modelValue:z.value,"onUpdate:modelValue":e[2]||(e[2]=o=>z.value=o),options:at.value,placeholder:"选择要拆贡献榜的标签组,例如:账号、来源","show-search":"","max-tag-count":3},null,8,["modelValue","options"])]),t("div",aa,[e[25]||(e[25]=t("div",{class:"scope-field-head"},[t("label",{class:"scope-field-label"},"额外纳入单个标签"),t("span",{class:"scope-field-tip"},"标签较多,进入专门弹窗里按分类搜索选择")],-1)),p(Ft,{value:M.value,"onUpdate:value":e[3]||(e[3]=o=>M.value=o),tags:$.value,groups:B.value,placeholder:"未选择额外纳入标签","modal
11-title":"选择额外纳入标签","modal-z-index":1500},null,8,["value","tags","groups"])])]))])]),_:1},8,["open","mask-closable","closable"])])}}});const on=ue(la,[["__scopeId","data-v-f27ed767"]]);export{on as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.