1 |
- import{e as et,g as at,u as ot,a as nt,b as st,c as lt}from"./columns.cc566cc7.js";import{j as rt}from"./elementPlus.df0a7e63.js";import{d as dt,r as s,Q as it,w,j as ct,a8 as U,o as ut,E as ft,G as x,a as T,M as mt,L as B,K as gt,B as _t,ab as vt}from"./vue.8d1e6c5e.js";import{_ as pt}from"./_plugin-vue_export-helper.c27b6911.js";import"./index.9f944308.js";import"./echarts.2703a7ac.js";const ht={class:"mx-3.5"},St={class:"font-semibold"},bt={class:"font-semibold",style:{color:"#164285"}},Ct=dt({__name:"mainData",props:{taskIds:Object,dayDate:Object,weekDate:Object,monthDate:Object},setup(W){const c=W;s(null);const j=s([]),$=s([]),y=s([]),g=s(null),_=s(null),v=s(null),p=s(null),h=s(null),S=s(null),m=s(""),b=s(""),C=s(""),k=s(null),I=s(null),f=s(!1),n=it({border:"inner",height:900,align:null,round:!0,loading:!1,id:"mainDataCustomStorage",columnConfig:{resizable:!0},rowConfig:{isHover:!0},pagerConfig:{enabled:!0,total:20,currentPage:1,pageSize:20,pageSizes:[10,20,30]},sortConfig:{remote:!0,defaultSort:{field:I,order:k}},customConfig:{storage:{visible:!0}},toolbarConfig:{custom:!0,zoom:{iconIn:"vxe-icon-fullscreen",iconOut:"vxe-icon-minimize"},slots:{tools:"toolbar_buttons"}},columns:j,data:$}),K=()=>{localStorage.setItem("sortField",m.value),localStorage.setItem("sortOrder",b.value),localStorage.setItem("salesOrder",k.value),localStorage.setItem("salesField",I.value)},G=()=>{m.value=localStorage.getItem("sortField")||"",b.value=localStorage.getItem("sortOrder")||"",n.sortConfig.defaultSort.order=localStorage.getItem("salesOrder")||"",n.sortConfig.defaultSort.field=localStorage.getItem("salesField")||""},Q={pageChange({currentPage:t,pageSize:a}){n.pagerConfig&&(n.pagerConfig.currentPage=t,n.pagerConfig.pageSize=a,f.value=!1,D(c.taskIds))}};async function q(t){try{const a=await nt({data_start_date:g.value,data_end_date:_.value,task_ids:t}),o=await st({data_start_date:v.value,data_end_date:p.value,task_ids:t}),l=await lt({data_start_date:h.value,data_end_date:S.value,task_ids:t});y.value={...a.data[0],...o.data[0],...l.data[0]},y.value.platformNumber="汇总"}catch(a){console.error("Error fetching total data:",a)}}async function D(t,a=!1){a&&(n.pagerConfig.currentPage=1);try{n.loading=!0,await q(t);const o=await at({page:n.pagerConfig.currentPage,limit:n.pagerConfig.pageSize,task_ids:t,day_start_date:g.value,day_end_date:_.value,week_start_date:v.value,week_end_date:p.value,month_start_date:h.value,month_end_date:S.value,sort:b.value,order_date:m.value,date_type:C.value});if(n.data=[y.value,...o.data],n.pagerConfig.total=o.total,!f.value&&o.data&&o.data.length>0){const l=[],r=/\d{2}-\d{2}/,M=/\d{4}-\d{2}-\d{2}/,z=/\d{4}-\d{2}/,E=/\d{4}-\d{2}-\d{2}~\d{4}-\d{2}-\d{2}/,P=["~","截止","近90天平台退货率","余额"],A=new Set;o.data.forEach(e=>{for(const d in e)(r.test(d)||P.some(i=>d.includes(i)))&&A.add(d)});const O=[],N=[],F=[];A.forEach(e=>{let d=!1;e.includes("的销售额")&&!e.includes("广告销售额")&&!e.includes("增长率")&&(d=!0);const i={field:e,title:e,minWidth:e.includes("~")||e.includes("截止")?94:M.test(e)?95:/\d{4}-\d{2}的销售额/.test(e)?127:76,align:"center",formatter:tt,sortable:d};P.some(u=>e.includes(u))?N.push(i):z.test(e)&&!M.test(e)?F.push(i):r.test(e)&&O.push(i)});const R=O.filter(e=>e.field.includes("的销售额")&&!e.field.includes("增长率"));R.sort((e,d)=>{const i=e.field.match(/\d{4}-\d{2}-\d{2}/),u=d.field.match(/\d{4}-\d{2}-\d{2}/);return i&&u?new Date(i[0])-new Date(u[0]):0});const H=N.filter(e=>e.field.includes("的销售额")&&!e.field.includes("增长率"));H.sort((e,d)=>{const i=e.field.match(E)[0].split("~")[0],u=d.field.match(E)[0].split("~")[0];return new Date(i)-new Date(u)});const L=F.filter(e=>e.field.includes("的销售额"));L.sort((e,d)=>{const i=`${e.field.match(z)[0]}-01`,u=`${d.field.match(z)[0]}-01`;return new Date(i)-new Date(u)}),l.push(...R,...O.filter(e=>!e.field.includes("的销售额")),...H,...N.filter(e=>!E.test(e.field)),...L,...F.filter(e=>!e.field.includes("的销售额"))),j.value=[...ot,...l]}K()}catch(o){console.error("Error fetching task data:",o)}finally{n.loading=!1}}function J({field:t,order:a}){if(k.value=a,I.value=t,b.value=a==="asc"?"smallfirst":"bigfirst",t){const o=t.match(/(\d{4}-\d{2}-\d{2})的销售额/),l=t.match(/(\d{4}-\d{2}-\d{2})~(\d{4}-\d{2}-\d{2})的销售额/),r=t.match(/(\d{4}-\d{2})的销售额/);l?(m.value=l[1],C.value="week"):o?(m.value=o[1],C.value="day"):r&&(m.value=`${r[1]}-01`,C.value="month")}n.sortConfig.defaultSort.order=a,n.sortConfig.defaultSort.field=t,f.value=!0,D(c.taskIds,!0)}async function X(){try{n.loading=!0;const t={page:n.pagerConfig.currentPage,limit:n.pagerConfig.pageSize,task_ids:c.taskIds,day_start_date:g.value,day_end_date:_.value,week_start_date:v.value,week_end_date:p.value,month_start_date:h.value,month_end_date:S.value},a=await et(t),o=window.URL.createObjectURL(new Blob([a.data])),l=document.createElement("a");l.href=o,l.setAttribute("download","合并数据展示.xlsx"),document.body.appendChild(l),l.click(),n.loading=!1,rt.success("导出数据成功")}catch(t){console.error("导出数据失败:",t)}}const Y=s(!1);w(()=>c.taskIds,t=>{f.value=!1,Y.value=!0,D(t,!0)}),w(()=>c.dayDate,t=>{if(f.value=!1,t){const{dailyStartDate:a,dailyTime:o}=t;g.value=a,_.value=o}}),w(()=>c.weekDate,t=>{if(f.value=!1,t){const{weekStartDate:a,weekEndDate:o}=t;v.value=a,p.value=o}}),w(()=>c.monthDate,t=>{if(f.value=!1,t){const{startDate:a,endDate:o}=t;h.value=a,S.value=o}D(c.taskIds,!0)});const Z=({columnIndex:t})=>t<6?{fontSize:"12px",fontWeight:"500"}:{fontSize:"12px",fontWeight:"500"},V=({column:t})=>{const a=t.field,o=/\d{2}-\d{2}/,l=/\d{4}-\d{2}-\d{2}/,r=/\d{4}-\d{2}/;return a.includes("~")||a.includes("截止")||a.includes("近90天平台退货率")||a.includes("余额")?{fontSize:"12px",backgroundColor:"#b3ced7"}:r.test(a)&&!l.test(a)?{fontSize:"12px",backgroundColor:"#8cbacc"}:o.test(a)?{fontSize:"12px",backgroundColor:"#d0dadf"}:{fontSize:"12px"}};function tt({cellValue:t}){return t==null||t===""?"--":typeof t=="number"?new Intl.NumberFormat("en-US",{minimumFractionDigits:0}).format(t):t}return ct(()=>{G()}),(t,a)=>{const o=U("vxe-button"),l=U("vxe-grid");return ut(),ft(l,_t({"cell-style":Z,"header-cell-style":V},n,vt(Q),{onSortChange:J}),{toolbar_buttons:x(()=>[T("div",ht,[mt(o,{circle:"",icon:"vxe-icon-download",onClick:X})])]),platformNumber_default:x(({row:r})=>[T("div",St,B(r.platformNumber),1)]),platformName_default:x(({row:r})=>[T("div",bt,B(r.platformName),1)]),brandName_default:x(({row:r})=>[gt(B(r.brandName),1)]),_:1},16)}}});const zt=pt(Ct,[["__scopeId","data-v-89c5e46d"]]);export{zt as default};
|