Files
zyt/server/public/admin/assets/mubiao-D_EAWNA5.js
T
2026-07-03 12:07:34 +08:00

2 lines
5.4 KiB
JavaScript

import{o as z,M as m,ap as O,be as U,q as i,r as v,s as a,v as o,D as r,u as g,cL as W,w as j,L as y,bp as H,T as b,by as B,K as J,ac as I,O as S,cM as Q,bi as X,cN as Z,F as T,G as F,ax as ee,p as L}from"./.pnpm-BGZW0UGg.js";import V from"./mubiao-dept-card-BZ8W_bMc.js";import{d as te,i as ae}from"./finance-eAWFK1Mm.js";import{i as Y,_ as le}from"./index-CeIwrh_6.js";const ne={class:"mubiao-page"},oe={class:"toolbar"},se={class:"toolbar__left"},ie={class:"toolbar__icon"},re={class:"toolbar__center"},de={class:"month-picker-wrap"},ue={class:"toolbar__right"},ce={class:"summary-strip"},_e={class:"summary-item"},me={class:"summary-item__val"},pe={class:"summary-item"},ve={class:"summary-item__val primary"},fe={"element-loading-text":"数据加载中…",class:"board-wrap"},he={key:0,class:"empty-state"},ge={class:"empty-state__icon"},ye={class:"empty-state__title"},be={class:"empty-state__desc"},ke={key:1,class:"board-grid"},we=z({name:"financeMubiao"}),Me=z({...we,setup(Se){function k(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??"")},l=e.children;return Array.isArray(l)&&l.length>0&&(t.children=l.map(k)),t}function x(e){var l;let t=0;for(const n of e)t+=Number(n.target_amount??0),(l=n.children)!=null&&l.length&&(t+=x(n.children));return Math.round(t*100)/100}function C(e){var l;let t=0;for(const n of e)t+=1,(l=n.children)!=null&&l.length&&(t+=C(n.children));return t}function D(e){var l;const t=[];for(const n of e)t.push({dept_id:n.dept_id,target_amount:Number(n.target_amount??0),remark:n.remark||""}),(l=n.children)!=null&&l.length&&t.push(...D(n.children));return t}function E(){const e=new Date;return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}`}function P(e){return e>=1e4?(e/1e4).toFixed(1)+"w":e.toLocaleString("zh-CN",{maximumFractionDigits:0})}const d=m(E()),p=m(!1),w=m(!1),u=m([]),f=m(!1),s=m([]),_=m(null),$=L(()=>x(u.value)),A=L(()=>C(u.value));function N(e){if(s.value.some(t=>t.dept_id===e.dept_id)){_.value=e.dept_id;return}s.value.push(e),_.value=e.dept_id}function G(e){const t=s.value.findIndex(l=>l.dept_id===e);t!==-1&&s.value.splice(t),_.value=s.value.length>0?s.value[s.value.length-1].dept_id:null}async function h(){if(d.value){p.value=!0,s.value=[],_.value=null;try{const e=await te({year_month:d.value});u.value=((e==null?void 0:e.rows)||[]).map(k),f.value=!!(e!=null&&e.data_scope_limited)}catch{u.value=[],f.value=!1}finally{p.value=!1}}}async function R(){if(!d.value){Y.msgWarning("请选择月份");return}await Y.confirm("确认保存「"+d.value+"」各部门业绩目标?"),w.value=!0;try{const e=await ae({year_month:d.value,items:D(u.value)});e!=null&&e.rows?(u.value=e.rows.map(k),f.value=!!(e!=null&&e.data_scope_limited),s.value=[],_.value=null):await h()}finally{w.value=!1}}return O(h),(e,t)=>{const l=j,n=H,M=J,q=U("perms"),K=X;return i(),v("div",ne,[a("div",oe,[a("div",se,[a("div",ie,[o(l,null,{default:r(()=>[o(g(W))]),_:1})]),t[1]||(t[1]=a("div",null,[a("div",{class:"toolbar__title"},"制定业绩目标"),a("div",{class:"toolbar__desc"},[y(" 按部门设置每月销售目标,填 0 并保存将删除该记录。列表按当前账号 "),a("strong",null,"角色数据权限"),y(" 仅展示"),a("strong",null,"本部门及下级"),y("(不展示权限外的上级组织;口径与业绩看板数据范围一致)。 ")])],-1))]),a("div",re,[a("div",de,[t[2]||(t[2]=a("span",{class:"month-picker-wrap__label"},"目标月份",-1)),o(n,{modelValue:d.value,"onUpdate:modelValue":t[0]||(t[0]=c=>d.value=c),type:"month","value-format":"YYYY-MM",placeholder:"选择月份",clearable:!1,size:"default",class:"month-picker",onChange:h},null,8,["modelValue"])])]),a("div",ue,[a("div",ce,[a("div",_e,[a("span",me,b(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",pe,[a("span",ve,"¥"+b(P($.value)),1),t[4]||(t[4]=a("span",{class:"summary-item__label"},"目标合计",-1))])]),o(M,{circle:"",loading:p.value,onClick:h,title:"刷新"},{default:r(()=>[o(l,null,{default:r(()=>[o(g(B))]),_:1})]),_:1},8,["loading"]),I((i(),S(M,{type:"primary",loading:w.value,disabled:p.value||!d.value,onClick:R},{default:r(()=>[o(l,null,{default:r(()=>[o(g(Q))]),_:1}),t[6]||(t[6]=y("保存目标 ",-1))]),_:1},8,["loading","disabled"])),[[q,["finance.dept_performance_target/batchSave"]]])])]),I((i(),v("div",fe,[!p.value&&u.value.length===0?(i(),v("div",he,[a("div",ge,[o(l,null,{default:r(()=>[o(g(Z))]),_:1})]),a("p",ye,b(f.value?"数据权限内无可选部门":"暂无部门数据"),1),a("p",be,b(f.value?"当前角色数据范围未包含任何部门,或需在权限中绑定部门后再试。":"请检查部门配置后重试"),1),o(M,{size:"small",onClick:h},{default:r(()=>[o(l,null,{default:r(()=>[o(g(B))]),_:1}),t[7]||(t[7]=y("重新加载",-1))]),_:1})])):(i(),v("div",ke,[o(ee,{name:"card",tag:"div",class:"board-grid__inner"},{default:r(()=>[(i(!0),v(T,null,F(u.value,c=>(i(),S(V,{key:"root-"+c.dept_id,node:c,"is-root":!0,"drilled-id":_.value,onDrillIn:N},null,8,["node","drilled-id"]))),128)),(i(!0),v(T,null,F(s.value,c=>(i(),S(V,{key:"drill-"+c.dept_id,node:c,"is-root":!1,"drilled-id":_.value,class:"card--drilled",onDrillIn:N,onClose:xe=>G(c.dept_id)},null,8,["node","drilled-id","onClose"]))),128))]),_:1})]))])),[[K,p.value]])])}}}),Ie=le(Me,[["__scopeId","data-v-89e98c00"]]);export{Ie as default};