You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
26 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import{at as e,n as t}from"./axios-CiYFffbI.js";import{I as n,N as r,Ot as i,Tt as a,V as o,X as s,Y as c,_ as l,d as u,f as d,i as f,it as p,kt as m,l as h,nt as g,p as _,u as v,ut as y,v as b,y as ee,z as x}from"./runtime-core.esm-bundler-CnFWH3R5.js";import{n as S}from"./http-LCi9aT1G.js";import{a as te,c as ne,f as re,i as ie,n as ae,o as oe,r as se,u as C}from"./index-VU3bhAhI.js";import{o as w,r as T}from"./hikPdcClient-9YlD6z0w.js";import{n as E,t as D}from"./xlsx-C0ANE5gA.js";var ce={class:`dashboard-page`},le={class:`dashboard-page__inner`},ue={class:`dashboard-page__header`},de={class:`dash-bundle`,"aria-label":`数据统计`},fe={class:`dash-core-pack`},pe={class:`dash-metric-card dash-metric-card--core`},me={class:`dash-metric-card__head`},he={class:`dash-metric-card__icon`,"aria-hidden":`true`},ge={class:`dash-metric-card__body`},_e={class:`dash-stat-grid dash-stat-grid--core dash-stat-grid--align-left`},ve={class:`dash-stat-cell dash-stat-cell--violet`},ye={class:`dash-stat-cell__value`},be={class:`dash-stat-cell dash-stat-cell--mint`},xe={class:`dash-stat-cell__value`},Se={key:0,class:`dash-stat-cell dash-stat-cell--gold`},Ce={class:`dash-stat-cell__value`},we={class:`dash-stat-cell dash-stat-cell--sky`},Te={class:`dash-stat-cell__value`},Ee={key:1,class:`dash-stat-cell dash-stat-cell--rose`},De={class:`dash-stat-cell__value`},Oe={key:2,class:`dash-stat-cell dash-stat-cell--teal`},ke={class:`dash-stat-cell__value`},Ae={key:0,class:`dash-metric-card dash-metric-card--todo`},je={class:`dash-metric-card__head dash-metric-card__head--todo`},Me={class:`dash-metric-card__icon dash-metric-card__icon--todo`,"aria-hidden":`true`},Ne={class:`dash-metric-card__body`},Pe={key:0,class:`dash-todo-sheet dash-todo-sheet--loading`},Fe={key:1,class:`dash-todo-sheet`},Ie={key:0,class:`dash-todo-sheet--empty-inner`},Le={class:`dash-todo-placeholder`},Re={class:`dash-todo-line__kind`},ze={class:`dash-todo-line__name`},Be={class:`dash-todo-line__name`},Ve={class:`dash-metric-card`},He={class:`dash-metric-card__head`},Ue={class:`dash-metric-card__icon`,"aria-hidden":`true`},We={class:`dash-metric-card__body`},Ge={class:`dash-stat-grid dash-stat-grid--schedule-act dash-stat-grid--align-left`},Ke={class:`dash-stat-cell dash-stat-cell--rose`},qe={class:`dash-stat-cell__value`},Je={class:`dash-stat-cell dash-stat-cell--violet`},Ye={class:`dash-stat-cell__value`},Xe={class:`dash-stat-cell dash-stat-cell--amber`},Ze={class:`dash-stat-cell__value`},Qe={class:`dash-stat-cell dash-stat-cell--sky`},$e={class:`dash-stat-cell__value`},et={class:`dash-stat-cell dash-stat-cell--mint`},tt={class:`dash-stat-cell__value`},nt={key:0,class:`dash-stat-cell dash-stat-cell--indigo`},rt={class:`dash-stat-cell__value`},it={key:0,class:`dash-metric-card`},at={class:`dash-metric-card__head`},ot={class:`dash-metric-card__icon dash-metric-card__icon--schedule-tg`,"aria-hidden":`true`},st={class:`dash-metric-card__body`},ct={class:`dash-stat-grid dash-stat-grid--schedule-tg dash-stat-grid--align-left`},lt={class:`dash-stat-cell dash-stat-cell--rose`},ut={class:`dash-stat-cell__value`},dt={class:`dash-stat-cell dash-stat-cell--amber`},ft={class:`dash-stat-cell__value`},pt={class:`dash-stat-cell dash-stat-cell--sky`},mt={class:`dash-stat-cell__value`},ht={class:`dash-stat-cell dash-stat-cell--mint`},gt={class:`dash-stat-cell__value`},_t={class:`dash-stat-cell dash-stat-cell--violet dash-stat-cell--verify-rate`},vt={class:`dash-stat-cell__value dash-stat-cell__value--pct`},yt={class:`dash-stat-cell__hint`},bt={key:1,class:`dash-rank-dual`},xt={class:`dash-metric-card dash-metric-card--rank`},St={class:`dash-metric-card__head`},Ct={class:`dash-metric-card__icon dash-metric-card__icon--rank-pub`,"aria-hidden":`true`},wt={class:`dash-metric-card__body dash-rank-card__body`},Tt={class:`dash-metric-card dash-metric-card--rank`},Et={class:`dash-metric-card__head`},Dt={class:`dash-metric-card__icon dash-metric-card__icon--rank-live`,"aria-hidden":`true`},Ot={class:`dash-metric-card__body dash-rank-card__body`},kt={key:2,class:`dash-venue-pc-bundle`},At={class:`dash-metric-card dash-metric-card--venue-pc`},jt={class:`dash-metric-card__head`},Mt={class:`dash-metric-card__icon dash-metric-card__icon--venue-pc`,"aria-hidden":`true`},Nt={class:`dash-metric-card__head-main`},Pt={class:`dash-metric-card__title`},Ft={class:`dash-metric-card__body dash-metric-card__body--venue-pc`},It={class:`dash-venue-pc-filters`},Lt={key:1,class:`dash-venue-pc-content`},Rt={class:`dash-venue-pc-viewbar`},zt={class:`dash-venue-pc-total`},Bt={key:0,class:`dash-venue-pc-total__range`},Vt={class:`dash-venue-pc-total__value`},Ht={class:`dash-venue-pc-chart`},Ut={class:`dash-venue-pc-chart__plot`},Wt={class:`dash-venue-pc-chart-tip__name`},Gt={class:`dash-venue-pc-chart-tip__value`},Kt={class:`dash-venue-pc-chart__col`},qt={class:`dash-venue-pc-chart__col-value`},Jt={class:`dash-venue-pc-chart__col-track`},Yt=[`title`],Xt={class:`dash-venue-pc-table-wrap`},Zt=300,O=C(ee({__name:`Dashboard`,setup(ee){let C=ne(),O=p(!1),k=p(!1),A=p(!1),j=p({scope:{role:``,venue_id:void 0,activity_id:void 0,venue_ids:[],people_counting_venue_ids:[],show_venue_people_stats:!1},summary:{activity_sessions:0,venues_count:0,ticket_grab_sessions:0,user_count:0,reservation_order_count:0,wechat_user_count:0,home_visit_total:0,home_visit_today:0},activity_schedule_counts:{total:0,total_sessions:0,not_started:0,ongoing:0,ended:0,published_venues_count:0},ticket_grab_schedule_counts:{total:0,not_started:0,ongoing:0,ended:0,verify_rate_pct:null,verified_people:0,booked_people:0},pending_audits:null,activity_publish_ranking:[],live_people_ranking:[],live_people_counting_ok:!1}),Qt=h(()=>!!w()),M=p([]),N=p(!1),P=p(null),F=p(null),$t=[{title:`场馆ID`,dataIndex:`venueId`,minWidth:110,ellipsis:!0,tooltip:!0},{title:`场馆名称`,dataIndex:`venueName`,minWidth:140,ellipsis:!0,tooltip:!0},{title:`入馆总人数`,dataIndex:`enter`,minWidth:120}];function I(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`}function en(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate()),n=t.getDay(),r=n===0?-6:1-n;return t.setDate(t.getDate()+r),t}function tn(e){let t=new Date(e.getFullYear(),e.getMonth(),e.getDate());return t.setDate(t.getDate()+6),t}function L(){let e=new Date;return new Date(e.getFullYear(),e.getMonth(),e.getDate())}function R(e,t){return e.getTime()<=t.getTime()?e:t}function nn(e){let t=L(),n,r;if(e===`week`){let e=en(t),i=tn(e);n=I(e),r=I(R(i,t))}else if(e===`month`){let e=new Date(t.getFullYear(),t.getMonth(),1),i=new Date(t.getFullYear(),t.getMonth()+1,0);n=I(e),r=I(R(i,t))}else{let e=new Date(t.getFullYear(),0,1),i=new Date(t.getFullYear(),11,31);n=I(e),r=I(R(i,t))}M.value=[n,r]}function rn(){let e=I(L());M.value=[e,e]}function z(e){if(!e||e.code!==200)return[];let t=[],n=e.venuesRangeTotals;if(Array.isArray(n)&&n.length>0)t=n.map(e=>({venueId:e.venueId,venueName:e.venueName,enter:Number(e.enter)||0}));else{let n=e.venues;if(!Array.isArray(n)||n.length===0)return[];t=n.map(e=>({venueId:e.venueId,venueName:e.venueName,enter:Number(e.enter)||0}))}return t.sort((e,t)=>{let n=(Number(t.enter)||0)-(Number(e.enter)||0);return n===0?String(e.venueId).localeCompare(String(t.venueId),void 0,{numeric:!0}):n})}let B=h(()=>A.value&&!k.value);function V(e){if(!B.value)return e;let t=j.value.scope.people_counting_venue_ids;if(!t.length)return[];let n=new Set(t.map(e=>String(e)));return e.filter(e=>n.has(String(e.venueId)))}let an=h(()=>B.value?j.value.scope.show_venue_people_stats===!0&&Qt.value:!0),H=h(()=>B.value?`场馆人数统计`:`各场馆人数统计`),U=h(()=>V(z(F.value))),W=p(`chart`),on=h(()=>U.value.reduce((e,t)=>e+(Number(t.enter)||0),0)),sn=h(()=>{let e=G();return e?e.start===e.end?e.start:`${e.start}${e.end}`:``}),cn=h(()=>{let e=U.value;return e.length?Math.max(1,...e.map(e=>Number(e.enter)||0)):1});function ln(e){let t=cn.value,n=Number(e)||0;return n<=0?`0%`:`${Math.max(6,n/t*100)}%`}function un(e){let t=e.currentTarget;!t||t.scrollWidth<=t.clientWidth+1||Math.abs(e.deltaX)>=Math.abs(e.deltaY)||(e.preventDefault(),t.scrollLeft+=e.deltaY)}function dn(e){let t=Array.isArray(e.data)?e.data:[],n=0;for(let e of t)n+=Number(e.enter)||0;return[{venueId:`合计`,venueName:``,enter:n}]}function G(){let e=M.value;if(!Array.isArray(e)||e.length<2)return null;let t=String(e[0]??``).trim(),n=String(e[1]??``).trim();return!/^\d{4}-\d{2}-\d{2}$/.test(t)||!/^\d{4}-\d{2}-\d{2}$/.test(n)||n<t?null:{start:t,end:n}}async function K(e){if(!w())return;let n=G();if(!n){t.warning(`请选择合法的日期时间段(起止 yyyy-MM-dd`);return}let{start:r,end:i}=n;N.value=!0,P.value=null;let a=e?.silentSuccess===!0;try{F.value=await T(r,i),F.value.code===200?a||t.success(`客流统计已刷新`):(P.value=F.value.message||`接口返回错误码 ${F.value.code}`,a||t.warning(P.value))}catch(e){F.value=null,P.value=(e&&typeof e==`object`&&`message`in e?String(e.message):String(e))||`客流接口请求失败`,t.error(P.value||`客流接口请求失败`)}finally{N.value=!1}}function fn(){K({silentSuccess:!1})}p([]),p(!1),g({eventId:void 0,date:void 0});let pn=p(null);h(()=>pn.value?.daily_verify_matrix?.date_labels??[]),h(()=>pn.value?.daily_verify_matrix?.rows??[]);let q=p(!1),J=p(!1);function Y(e){return e.replace(/[\\/?*[\]:]/g,`_`).slice(0,31)||`Sheet1`}function X(e,t,n){let r=Y(n),i=r,a=2;for(;e.SheetNames.includes(i);){let e=`(${a})`;i=Y(`${r.slice(0,Math.max(1,31-e.length))}${e}`),a+=1}D.book_append_sheet(e,t,i)}function mn(){let e=new Date,t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}${t(e.getMonth()+1)}${t(e.getDate())}${t(e.getHours())}${t(e.getMinutes())}${t(e.getSeconds())}统计.xlsx`}function Z(e){return D.aoa_to_sheet([[`指标`,`数值`],...e.map(([e,t])=>[e,t])])}function Q(e,t,n){if(n)return D.aoa_to_sheet([[`统计区间`,e],[`说明`,n]]);if(!t.length)return D.aoa_to_sheet([[`统计区间`,e],[],[`说明`,`暂无数据`]]);let r=t.reduce((e,t)=>e+(Number(t.enter)||0),0);return D.aoa_to_sheet([[`统计区间`,e],[],[`场馆ID`,`场馆名称`,`入馆总人数`],...t.map(e=>[e.venueId,e.venueName,e.enter]),[`合计`,``,r]])}function hn(e,t=`各场馆人数统计`){let n=L(),r=I(n);if(e===`today`)return{start:r,end:r,periodLabel:r,sheetName:`${t}-当天(${r})`};if(e===`week`){let e=en(n),r=I(e),i=I(R(tn(e),n));return{start:r,end:i,periodLabel:`${r}${i}`,sheetName:`${t}-本周(${r}${i})`}}if(e===`month`){let e=new Date(n.getFullYear(),n.getMonth(),1),r=new Date(n.getFullYear(),n.getMonth()+1,0),i=I(e),a=I(R(r,n));return{start:i,end:a,periodLabel:`${i}${a}`,sheetName:`${t}-本月(${i}${a})`}}let i=new Date(n.getFullYear(),0,1),a=new Date(n.getFullYear(),11,31),o=I(i),s=I(R(a,n));return{start:o,end:s,periodLabel:`${o}${s}`,sheetName:`${t}-本年(${o}${s})`}}function gn(){let e=j.value.ticket_grab_schedule_counts;return!e||e.booked_people<=0?`0%`:`${e.verify_rate_pct??0}%`}async function _n(){if(!J.value){J.value=!0;try{let e=D.book_new(),n=j.value.activity_schedule_counts??{};X(e,Z([[`活动数`,n.total??0],[`总场次`,n.total_sessions??0],[`未开始`,n.not_started??0],[`进行中`,n.ongoing??0],[`已结束`,n.ended??0]]),`活动统计`);let r=H.value;if(j.value.scope.show_venue_people_stats&&w()){let t=[`today`,`week`,`month`,`year`].map(e=>hn(e,r)),n=await Promise.all(t.map(e=>T(e.start,e.end).catch(()=>null)));t.forEach((t,r)=>{let i=n[r],a=V(z(i)),o=i&&i.code!==200?i.message||`接口返回错误码 ${i.code}`:void 0;X(e,Q(t.periodLabel,a,o),t.sheetName)})}E(e,mn()),t.success(`数据看板已导出`)}catch(e){console.error(`[工作台] 场馆管理员导出失败`,e);let n=e instanceof Error?e.message:typeof e==`string`?e:`导出失败`;t.error(n.includes(`already exists`)?`导出失败Sheet 名称重复,请刷新后重试`:n||`导出失败`)}finally{J.value=!1}}}async function vn(){if(B.value){await _n();return}if(!J.value){J.value=!0;try{let e=D.book_new(),n=j.value,r=n.summary??{},i=n.activity_schedule_counts??{},a=n.ticket_grab_schedule_counts??{},o=Array.isArray(n.activity_publish_ranking)?n.activity_publish_ranking:[],s=Array.isArray(n.live_people_ranking)?n.live_people_ranking:[],c=[[`现有场馆`,r.venues_count??0],[`总预约次数`,r.reservation_order_count??0]];k.value&&c.push([`总用户数`,r.wechat_user_count??0]),c.push([`预约用户数`,r.user_count??0]),k.value&&(c.push([`总访问量`,r.home_visit_total??0]),c.push([`今日访问量`,r.home_visit_today??0])),X(e,Z(c),`核心数据统计`),X(e,Z([[`活动数`,i.total??0],[`总场次`,i.total_sessions??0],[`未开始`,i.not_started??0],[`进行中`,i.ongoing??0],[`已结束`,i.ended??0],[`已发布活动场馆`,i.published_venues_count??0]]),`活动统计`),X(e,Z([[`总场数`,a.total??0],[`未开始`,a.not_started??0],[`进行中`,a.ongoing??0],[`已结束`,a.ended??0],[`核销率`,gn()],[`已核销人数`,a.verified_people??0],[`已约人数`,a.booked_people??0]]),`抢票统计`);let l=o.map((e,t)=>[t+1,e.venue_id,e.venue_name,e.published_count,e.published_sessions_count]);X(e,D.aoa_to_sheet([[`排名`,`场馆ID`,`场馆名称`,`发布活动数`,`发布场次数`],...l]),`活动发布排行`);let u=s.map((e,t)=>[t+1,e.venue_id,e.venue_name,e.live_count]);X(e,D.aoa_to_sheet([[`排名`,`场馆ID`,`场馆名称`,`在馆人数`],...u]),`实时人数排行`);let d=[`today`,`week`,`month`,`year`].map(e=>hn(e));if(w()){let t=await Promise.all(d.map(e=>T(e.start,e.end).catch(()=>null)));d.forEach((n,r)=>{let i=t[r],a=V(z(i)),o=i&&i.code!==200?i.message||`接口返回错误码 ${i.code}`:void 0;X(e,Q(n.periodLabel,a,o),n.sheetName)})}else for(let t of d)X(e,Q(t.periodLabel,[],`未配置客流统计接口`),t.sheetName);E(e,mn()),t.success(`数据看板已导出`)}catch(e){console.error(`[工作台] 导出数据看板失败`,e);let n=e instanceof Error?e.message:typeof e==`string`?e:`导出失败`;t.error(n.includes(`already exists`)?`导出失败Sheet 名称重复,请刷新后重试`:n||`导出失败`)}finally{J.value=!1}}}function yn(){let e=G();if(!e){t.warning(`请先选择日期区间并查询数据`);return}let n=U.value;if(!n.length){t.warning(`暂无数据可导出`);return}q.value=!0;try{let r=H.value,i=[[`场馆ID`,`场馆名称`,`入馆总人数`],...n.map(e=>[e.venueId,e.venueName,e.enter])],a=n.reduce((e,t)=>e+(Number(t.enter)||0),0);i.push([`合计`,``,a]);let o=D.aoa_to_sheet(i),s=D.book_new();D.book_append_sheet(s,o,Y(r)),E(s,`${e.start}${e.end}${r}.xlsx`),t.success(`已导出`)}finally{q.value=!1}}p(!1);let bn=h(()=>j.value.pending_audits?.activities.count??0),xn=h(()=>j.value.pending_audits?.venues?.count??0),Sn=h(()=>bn.value+xn.value),Cn=h(()=>j.value.pending_audits?.activities.items??[]),wn=h(()=>j.value.pending_audits?.venues?.items??[]),Tn=h(()=>Cn.value.length>0||wn.value.length>0),En=h(()=>k.value),Dn=h(()=>A.value?`暂无已退回活动`:`暂无待审核事项`),On=h(()=>A.value?`活动退回`:`活动审核`);function kn(){C.push({path:`/activities`,query:{audit_status:`pending`}})}function An(){C.push({path:`/activities`,query:{audit_status:`rejected`}})}function jn(){C.push({path:`/venues`,query:{audit_status:`pending`}})}function Mn(e){if(e===`venue`){jn();return}A.value?An():kn()}let Nn=h(()=>{let e=j.value.ticket_grab_schedule_counts;return!e||e.booked_people<=0?`0%`:`${e.verify_rate_pct??0}%`}),Pn=h(()=>{let e=j.value.ticket_grab_schedule_counts;return`已核销 ${e?.verified_people??0} / 已约 ${e?.booked_people??0}`});async function Fn(){O.value=!0;try{let{data:e}=await S.get(`/dashboard/stats`),{live_people_counting_debug:t,...n}=e;n.live_people_counting_ok===!1&&console.warn(`[工作台] 客流统计接口异常`,t??{}),j.value={...j.value,...n,summary:e.summary??j.value.summary,activity_schedule_counts:{...j.value.activity_schedule_counts,...e.activity_schedule_counts??{}},ticket_grab_schedule_counts:{...j.value.ticket_grab_schedule_counts,...e.ticket_grab_schedule_counts??{}},pending_audits:e.pending_audits??null,activity_publish_ranking:Array.isArray(e.activity_publish_ranking)?e.activity_publish_ranking:j.value.activity_publish_ranking,live_people_ranking:Array.isArray(e.live_people_ranking)?e.live_people_ranking:j.value.live_people_ranking,live_people_counting_ok:typeof e.live_people_counting_ok==`boolean`?e.live_people_counting_ok:j.value.live_people_counting_ok}}catch(e){t.error(e?.response?.data?.message??`加载统计失败`)}finally{O.value=!1}}async function In(){let{data:e}=await S.get(`/me`);k.value=e?.full_admin_access===!0,A.value=e?.role===`venue_admin`}function $(e){nn(e),K({silentSuccess:!0})}return r(async()=>{await In(),await Fn(),w()&&(!B.value||j.value.scope.show_venue_people_stats===!0)&&(rn(),await K({silentSuccess:!0}))}),(t,r)=>{let p=o(`a-button`),h=o(`a-table-column`),g=o(`a-table`),ee=o(`a-typography-text`),S=o(`a-range-picker`),ne=o(`a-divider`),C=o(`a-space`),w=o(`a-alert`),T=o(`a-tooltip`),E=o(`a-empty`),D=o(`a-spin`);return o(`a-tag`),o(`a-option`),o(`a-select`),o(`a-date-picker`),o(`a-card`),n(),_(`div`,ce,[v(`div`,le,[v(`header`,ue,[r[11]||=v(`div`,{class:`dashboard-page__heading`},[v(`h1`,{class:`dashboard-page__title`},`工作台`),v(`span`,{class:`dashboard-page__subtitle`},`数据看板`)],-1),k.value||B.value?(n(),u(p,{key:0,type:`primary`,size:`small`,loading:J.value,onClick:vn},{default:c(()=>[...r[10]||=[l(` 导出数据 `,-1)]]),_:1},8,[`loading`])):d(``,!0)]),v(`section`,de,[k.value?(n(),_(`div`,{key:0,class:a([`dash-overview-dual`,{"dash-overview-dual--split":En.value}])},[v(`div`,fe,[v(`article`,pe,[v(`header`,me,[v(`div`,he,[b(y(ie))]),r[12]||=v(`div`,{class:`dash-metric-card__head-main`},[v(`h2`,{class:`dash-metric-card__title`},`核心数据统计`)],-1)]),v(`div`,ge,[v(`div`,_e,[v(`div`,ve,[v(`div`,ye,m(j.value.summary.venues_count??0),1),r[13]||=v(`div`,{class:`dash-stat-cell__label`},`现有场馆`,-1)]),v(`div`,be,[v(`div`,xe,m(j.value.summary.reservation_order_count??0),1),r[14]||=v(`div`,{class:`dash-stat-cell__label`},`总预约次数`,-1)]),k.value?(n(),_(`div`,Se,[v(`div`,Ce,m(j.value.summary.wechat_user_count??0),1),r[15]||=v(`div`,{class:`dash-stat-cell__label`},`总用户数`,-1)])):d(``,!0),v(`div`,we,[v(`div`,Te,m(j.value.summary.user_count),1),r[16]||=v(`div`,{class:`dash-stat-cell__label`},`预约用户数`,-1)]),k.value?(n(),_(`div`,Ee,[v(`div`,De,m(j.value.summary.home_visit_total??0),1),r[17]||=v(`div`,{class:`dash-stat-cell__label`},`总访问量`,-1)])):d(``,!0),k.value?(n(),_(`div`,Oe,[v(`div`,ke,m(j.value.summary.home_visit_today??0),1),r[18]||=v(`div`,{class:`dash-stat-cell__label`},`今日访问量`,-1)])):d(``,!0)])])])]),k.value?(n(),_(`article`,Ae,[v(`header`,je,[v(`div`,Me,[b(y(oe))]),r[19]||=v(`h2`,{class:`dash-metric-card__title dash-metric-card__title--inline`},`待办事项`,-1),v(`span`,{class:a([`dash-todo-count-badge`,{"dash-todo-count-badge--zero":Sn.value===0}])},m(Sn.value),3)]),v(`div`,Ne,[O.value&&j.value.pending_audits==null?(n(),_(`div`,Pe,[...r[20]||=[v(`span`,{class:`dash-todo-placeholder`},`加载中…`,-1)]])):(n(),_(`div`,Fe,[Tn.value?(n(),_(f,{key:1},[(n(!0),_(f,null,x(Cn.value,e=>(n(),_(`button`,{key:`pa-`+e.id,type:`button`,class:`dash-todo-line`,onClick:r[0]||=e=>Mn(`activity`)},[v(`span`,Re,m(On.value),1),v(`span`,ze,m(e.title),1),r[21]||=v(`span`,{class:`dash-todo-line__action`},`去处理`,-1)]))),128)),(n(!0),_(f,null,x(wn.value,e=>(n(),_(`button`,{key:`pv-`+e.id,type:`button`,class:`dash-todo-line`,onClick:r[1]||=e=>Mn(`venue`)},[r[22]||=v(`span`,{class:`dash-todo-line__kind`},`场馆审核`,-1),v(`span`,Be,m(e.name),1),r[23]||=v(`span`,{class:`dash-todo-line__action`},`去处理`,-1)]))),128))],64)):(n(),_(`div`,Ie,[v(`span`,Le,m(Dn.value),1)]))]))])])):d(``,!0)],2)):d(``,!0),v(`div`,{class:a([`dash-schedule-dual`,{"dash-schedule-dual--single":B.value}])},[v(`article`,Ve,[v(`header`,He,[v(`div`,Ue,[b(y(re))]),r[24]||=v(`div`,{class:`dash-metric-card__head-main`},[v(`h2`,{class:`dash-metric-card__title`},`活动统计`)],-1)]),v(`div`,We,[v(`div`,Ge,[v(`div`,Ke,[v(`div`,qe,m(j.value.activity_schedule_counts.total),1),r[25]||=v(`div`,{class:`dash-stat-cell__label`},`活动数`,-1)]),v(`div`,Je,[v(`div`,Ye,m(j.value.activity_schedule_counts.total_sessions),1),r[26]||=v(`div`,{class:`dash-stat-cell__label`},`总场次`,-1)]),v(`div`,Xe,[v(`div`,Ze,m(j.value.activity_schedule_counts.not_started),1),r[27]||=v(`div`,{class:`dash-stat-cell__label`},`未开始`,-1)]),v(`div`,Qe,[v(`div`,$e,m(j.value.activity_schedule_counts.ongoing),1),r[28]||=v(`div`,{class:`dash-stat-cell__label`},`进行中`,-1)]),v(`div`,et,[v(`div`,tt,m(j.value.activity_schedule_counts.ended),1),r[29]||=v(`div`,{class:`dash-stat-cell__label`},`已结束`,-1)]),B.value?d(``,!0):(n(),_(`div`,nt,[v(`div`,rt,m(j.value.activity_schedule_counts.published_venues_count??0),1),r[30]||=v(`div`,{class:`dash-stat-cell__label`},`已发布活动场馆`,-1)]))])])]),k.value?(n(),_(`article`,it,[v(`header`,at,[v(`div`,ot,[b(y(se))]),r[31]||=v(`div`,{class:`dash-metric-card__head-main`},[v(`h2`,{class:`dash-metric-card__title`},`抢票统计`)],-1)]),v(`div`,st,[v(`div`,ct,[v(`div`,lt,[v(`div`,ut,m(j.value.ticket_grab_schedule_counts.total),1),r[32]||=v(`div`,{class:`dash-stat-cell__label`},`总场数`,-1)]),v(`div`,dt,[v(`div`,ft,m(j.value.ticket_grab_schedule_counts.not_started),1),r[33]||=v(`div`,{class:`dash-stat-cell__label`},`未开始`,-1)]),v(`div`,pt,[v(`div`,mt,m(j.value.ticket_grab_schedule_counts.ongoing),1),r[34]||=v(`div`,{class:`dash-stat-cell__label`},`进行中`,-1)]),v(`div`,ht,[v(`div`,gt,m(j.value.ticket_grab_schedule_counts.ended),1),r[35]||=v(`div`,{class:`dash-stat-cell__label`},`已结束`,-1)]),v(`div`,_t,[v(`div`,vt,m(Nn.value),1),r[36]||=v(`div`,{class:`dash-stat-cell__label`},`核销率`,-1),v(`div`,yt,m(Pn.value),1)])])])])):d(``,!0)],2),k.value?(n(),_(`div`,bt,[v(`article`,xt,[v(`header`,St,[v(`div`,Ct,[b(y(te))]),r[37]||=v(`div`,{class:`dash-metric-card__head-main`},[v(`h2`,{class:`dash-metric-card__title`},`活动发布排行`)],-1)]),v(`div`,wt,[b(g,{class:`dash-table dash-rank-table`,data:j.value.activity_publish_ranking,loading:O.value,pagination:!1,scroll:{y:Zt},"row-key":`venue_id`,size:`small`},{columns:c(()=>[b(h,{title:`#`,width:52},{cell:c(({rowIndex:e})=>[l(m(e+1),1)]),_:1}),b(h,{title:`场馆名称`,"data-index":`venue_name`,ellipsis:!0,tooltip:!0}),b(h,{title:`发布活动数`,"data-index":`published_count`,width:108,align:`right`}),b(h,{title:`发布场次数`,"data-index":`published_sessions_count`,width:108,align:`right`})]),_:1},8,[`data`,`loading`,`scroll`])])]),v(`article`,Tt,[v(`header`,Et,[v(`div`,Dt,[b(y(ae))]),r[38]||=v(`div`,{class:`dash-metric-card__head-main`},[v(`h2`,{class:`dash-metric-card__title`},`实时人数排行`)],-1)]),v(`div`,Ot,[b(g,{class:`dash-table dash-rank-table`,data:j.value.live_people_ranking,loading:O.value,pagination:!1,scroll:{y:Zt},"row-key":`venue_id`,size:`small`},{columns:c(()=>[b(h,{title:`#`,width:52},{cell:c(({rowIndex:e})=>[l(m(e+1),1)]),_:1}),b(h,{title:`场馆名称`,"data-index":`venue_name`,ellipsis:!0,tooltip:!0}),b(h,{title:`在馆人数`,"data-index":`live_count`,width:100,align:`right`})]),_:1},8,[`data`,`loading`,`scroll`])])])])):d(``,!0),an.value?(n(),_(`div`,kt,[v(`article`,At,[v(`header`,jt,[v(`div`,Mt,[b(y(ie))]),v(`div`,Nt,[v(`h2`,Pt,m(H.value),1)])]),v(`div`,Ft,[Qt.value?(n(),_(f,{key:1},[v(`div`,It,[b(C,{wrap:``,size:`small`},{default:c(()=>[r[45]||=v(`span`,{class:`dash-venue-pc-filters__label`},`时间段`,-1),b(S,{modelValue:M.value,"onUpdate:modelValue":r[2]||=e=>M.value=e,format:`YYYY-MM-DD`,"value-format":`YYYY-MM-DD`,"exchange-time":!1,"allow-clear":``,style:{width:`260px`},size:`small`},null,8,[`modelValue`]),b(p,{type:`primary`,size:`small`,loading:N.value,onClick:fn},{default:c(()=>[...r[40]||=[l(`查询`,-1)]]),_:1},8,[`loading`]),b(p,{size:`small`,loading:q.value,disabled:!U.value.length,onClick:yn},{default:c(()=>[...r[41]||=[l(` 导出 Excel `,-1)]]),_:1},8,[`loading`,`disabled`]),b(ne,{direction:`vertical`,class:`dash-venue-pc-filters__vdiv`}),b(p,{size:`small`,disabled:N.value,onClick:r[3]||=e=>$(`week`)},{default:c(()=>[...r[42]||=[l(`本周`,-1)]]),_:1},8,[`disabled`]),b(p,{size:`small`,disabled:N.value,onClick:r[4]||=e=>$(`month`)},{default:c(()=>[...r[43]||=[l(`本月`,-1)]]),_:1},8,[`disabled`]),b(p,{size:`small`,disabled:N.value,onClick:r[5]||=e=>$(`year`)},{default:c(()=>[...r[44]||=[l(`本年`,-1)]]),_:1},8,[`disabled`])]),_:1})]),b(D,{loading:N.value},{default:c(()=>[P.value?(n(),u(w,{key:0,type:`warning`,"show-icon":``,style:{"margin-bottom":`10px`}},{default:c(()=>[l(m(P.value),1)]),_:1})):d(``,!0),U.value.length?(n(),_(`div`,Lt,[v(`div`,Rt,[v(`div`,zt,[sn.value?(n(),_(`span`,Bt,m(sn.value),1)):d(``,!0),r[46]||=v(`span`,{class:`dash-venue-pc-total__label`},`合计入馆人数`,-1),v(`strong`,Vt,m(on.value),1)]),b(C,{size:`small`},{default:c(()=>[b(p,{size:`small`,type:W.value===`chart`?`primary`:`secondary`,onClick:r[6]||=e=>W.value=`chart`},{default:c(()=>[...r[47]||=[l(` 图表 `,-1)]]),_:1},8,[`type`]),b(p,{size:`small`,type:W.value===`table`?`primary`:`secondary`,onClick:r[7]||=e=>W.value=`table`},{default:c(()=>[...r[48]||=[l(` 数据 `,-1)]]),_:1},8,[`type`])]),_:1})]),s(v(`div`,Ht,[v(`div`,{class:`dash-venue-pc-chart__scroll`,role:`img`,"aria-label":`各场馆入馆人数柱状图`,onWheel:un},[v(`div`,Ut,[(n(!0),_(f,null,x(U.value,e=>(n(),u(T,{key:String(e.venueId),position:`top`,"content-class":`dash-venue-pc-chart-tip`},{content:c(()=>[v(`div`,Wt,m(e.venueName||e.venueId),1),v(`div`,Gt,`入馆人数:`+m(e.enter),1)]),default:c(()=>[v(`div`,Kt,[v(`span`,qt,m(e.enter),1),v(`div`,Jt,[v(`div`,{class:`dash-venue-pc-chart__col-bar`,style:i({height:ln(e.enter)})},null,4)]),v(`span`,{class:`dash-venue-pc-chart__col-label`,title:String(e.venueName||e.venueId)},m(e.venueName||e.venueId),9,Yt)])]),_:2},1024))),128))])],32)],512),[[e,W.value===`chart`]]),s(v(`div`,Xt,[b(g,{class:`dash-table dash-venue-pc-table`,"row-key":`venueId`,columns:$t,data:U.value,pagination:!1,size:`small`,"table-layout-fixed":``,scroll:{y:260},summary:dn},null,8,[`data`])],512),[[e,W.value===`table`]])])):!N.value&&!P.value?(n(),u(E,{key:2,description:`暂无数据,可调时间段或检查客流归档与场馆映射`})):d(``,!0)]),_:1},8,[`loading`])],64)):(n(),u(ee,{key:0,type:`warning`},{default:c(()=>[...r[39]||=[l(` 未配置 VITE_PEOPLE_COUNTING_URL 时无法加载该项。请在构建环境变量中配置海康客流 people-counting 完整接口地址。 `,-1)]]),_:1}))])])])):d(``,!0)]),d(``,!0)])])}}}),[[`__scopeId`,`data-v-0aaa1a85`]]);export{O as default};