Files
zyt/server/public/admin/assets/mubiao-EYSm1j1W.js
T
2026-05-05 13:41:37 +08:00

2 lines
6.2 KiB
JavaScript

import{d as K,a2 as O,i as Q,L as U}from"./element-plus-B7Dx6hR2.js";import{a as W}from"./@vue/runtime-dom-CEiKlVMn.js";import{a0 as j,K as M,f as q,a1 as H}from"./@element-plus/icons-vue-C25ce6PD.js";import D from"./mubiao-dept-card-GvblpJEB.js";import{d as X,i as Z}from"./finance-Bqjikfgz.js";import{i as N,_ as tt}from"./index-Bx_nF8uU.js";import{f as z,b as et,as as at,ak as n,I as _,J as a,a as r,aN as s,aP as I,G as k,O as B,F,ap as T,A as V}from"./@vue/runtime-core-tF_2qJHK.js";import{n as f,y as g}from"./@vue/reactivity-BmZ-20sQ.js";import{Q as Y}from"./@vue/shared-mAAVTE9n.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-BjeWxBI0.js";import"./pinia-CTWOnonq.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-Da2f2eD_.js";import"./@vueuse/shared-Bl-RnC0s.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-yVHyDRAS.js";import"./tslib-BDyQ-Jie.js";import"./zrender-C0YiHEZX.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-Bm7NQW9r.js";const ot={class:"mubiao-page"},lt={class:"toolbar"},rt={class:"toolbar__left"},it={class:"toolbar__icon"},nt={class:"toolbar__center"},st={class:"month-picker-wrap"},dt={class:"toolbar__right"},ut={class:"summary-strip"},mt={class:"summary-item"},pt={class:"summary-item__val"},ct={class:"summary-item"},_t={class:"summary-item__val primary"},ft={"element-loading-text":"数据加载中…",class:"board-wrap"},vt={key:0,class:"empty-state"},gt={class:"empty-state__icon"},ht={key:1,class:"board-grid"},yt=z({name:"financeMubiao"}),bt=z({...yt,setup(kt){function h(e){const t={dept_id:Number(e.dept_id??0),dept_name:String(e.dept_name??""),dept_path:String(e.dept_path??""),target_id:Number(e.target_id??0),target_amount:Number(e.target_amount??0),remark:String(e.remark??"")},o=e.children;return Array.isArray(o)&&o.length>0&&(t.children=o.map(h)),t}function w(e){var o;let t=0;for(const l of e)t+=Number(l.target_amount??0),(o=l.children)!=null&&o.length&&(t+=w(l.children));return Math.round(t*100)/100}function S(e){var o;let t=0;for(const l of e)t+=1,(o=l.children)!=null&&o.length&&(t+=S(l.children));return t}function x(e){var o;const t=[];for(const l of e)t.push({dept_id:l.dept_id,target_amount:Number(l.target_amount??0),remark:l.remark||""}),(o=l.children)!=null&&o.length&&t.push(...x(l.children));return t}function E(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}`}function L(e){return e>=1e4?(e/1e4).toFixed(1)+"w":e.toLocaleString("zh-CN",{maximumFractionDigits:0})}const d=f(E()),c=f(!1),y=f(!1),u=f([]),i=f([]),p=f(null),P=V(()=>w(u.value)),A=V(()=>S(u.value));function C(e){if(i.value.some(t=>t.dept_id===e.dept_id)){p.value=e.dept_id;return}i.value.push(e),p.value=e.dept_id}function $(e){const t=i.value.findIndex(o=>o.dept_id===e);t!==-1&&i.value.splice(t),p.value=i.value.length>0?i.value[i.value.length-1].dept_id:null}async function v(){if(d.value){c.value=!0,i.value=[],p.value=null;try{const e=await X({year_month:d.value});u.value=((e==null?void 0:e.rows)||[]).map(h)}catch{u.value=[]}finally{c.value=!1}}}async function G(){if(!d.value){N.msgWarning("请选择月份");return}await N.confirm("确认保存「"+d.value+"」各部门业绩目标?"),y.value=!0;try{const e=await Z({year_month:d.value,items:x(u.value)});e!=null&&e.rows?(u.value=e.rows.map(h),i.value=[],p.value=null):await v()}finally{y.value=!1}}return et(v),(e,t)=>{const o=K,l=O,b=Q,R=at("perms"),J=U;return n(),_("div",ot,[a("div",lt,[a("div",rt,[a("div",it,[r(o,null,{default:s(()=>[r(g(j))]),_:1})]),t[1]||(t[1]=a("div",null,[a("div",{class:"toolbar__title"},"制定业绩目标"),a("div",{class:"toolbar__desc"},"按部门设置每月销售目标,填 0 并保存将删除该记录")],-1))]),a("div",nt,[a("div",st,[t[2]||(t[2]=a("span",{class:"month-picker-wrap__label"},"目标月份",-1)),r(l,{modelValue:d.value,"onUpdate:modelValue":t[0]||(t[0]=m=>d.value=m),type:"month","value-format":"YYYY-MM",placeholder:"选择月份",clearable:!1,size:"default",class:"month-picker",onChange:v},null,8,["modelValue"])])]),a("div",dt,[a("div",ut,[a("div",mt,[a("span",pt,Y(A.value),1),t[3]||(t[3]=a("span",{class:"summary-item__label"},"部门",-1))]),t[5]||(t[5]=a("div",{class:"summary-divider"},null,-1)),a("div",ct,[a("span",_t,"¥"+Y(L(P.value)),1),t[4]||(t[4]=a("span",{class:"summary-item__label"},"目标合计",-1))])]),r(b,{circle:"",loading:c.value,onClick:v,title:"刷新"},{default:s(()=>[r(o,null,{default:s(()=>[r(g(M))]),_:1})]),_:1},8,["loading"]),I((n(),k(b,{type:"primary",loading:y.value,disabled:c.value||!d.value,onClick:G},{default:s(()=>[r(o,null,{default:s(()=>[r(g(q))]),_:1}),t[6]||(t[6]=B("保存目标 ",-1))]),_:1},8,["loading","disabled"])),[[R,["finance.dept_performance_target/batchSave"]]])])]),I((n(),_("div",ft,[!c.value&&u.value.length===0?(n(),_("div",vt,[a("div",gt,[r(o,null,{default:s(()=>[r(g(H))]),_:1})]),t[8]||(t[8]=a("p",{class:"empty-state__title"},"暂无部门数据",-1)),t[9]||(t[9]=a("p",{class:"empty-state__desc"},"请检查部门配置后重试",-1)),r(b,{size:"small",onClick:v},{default:s(()=>[r(o,null,{default:s(()=>[r(g(M))]),_:1}),t[7]||(t[7]=B("重新加载",-1))]),_:1})])):(n(),_("div",ht,[r(W,{name:"card",tag:"div",class:"board-grid__inner"},{default:s(()=>[(n(!0),_(F,null,T(u.value,m=>(n(),k(D,{key:"root-"+m.dept_id,node:m,"is-root":!0,"drilled-id":p.value,onDrillIn:C},null,8,["node","drilled-id"]))),128)),(n(!0),_(F,null,T(i.value,m=>(n(),k(D,{key:"drill-"+m.dept_id,node:m,"is-root":!1,"drilled-id":p.value,class:"card--drilled",onDrillIn:C,onClose:wt=>$(m.dept_id)},null,8,["node","drilled-id","onClose"]))),128))]),_:1})]))])),[[J,c.value]])])}}}),se=tt(bt,[["__scopeId","data-v-0d15d566"]]);export{se as default};