Files
zyt/server/public/admin/assets/mubiao-ByxZFxzH.js
T
2026-06-05 17:22:29 +08:00

2 lines
6.6 KiB
JavaScript

import{d as Q,R as U,i as W,L as j}from"./element-plus-Ds3qCU_G.js";import{a as q}from"./@vue/runtime-dom-DDAG46FW.js";import{a6 as H,M as B,f as K,a7 as X}from"./@element-plus/icons-vue-D49jsFPW.js";import I from"./mubiao-dept-card-D18urb8B.js";import{d as Z,i as tt}from"./finance-Cyx4Wrz4.js";import{i as F,_ as et}from"./index-CYLw0J2V.js";import{f as z,b as at,as as ot,ak as r,I as f,J as a,a as i,aN as s,O as g,aP as T,G as M,F as V,ap as L,A as Y}from"./@vue/runtime-core-C6bnekPw.js";import{n as _,y}from"./@vue/reactivity-DiY1c2vO.js";import{Q as b}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-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.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-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const lt={class:"mubiao-page"},it={class:"toolbar"},nt={class:"toolbar__left"},rt={class:"toolbar__icon"},st={class:"toolbar__center"},dt={class:"month-picker-wrap"},ut={class:"toolbar__right"},mt={class:"summary-strip"},ct={class:"summary-item"},_t={class:"summary-item__val"},pt={class:"summary-item"},ft={class:"summary-item__val primary"},vt={"element-loading-text":"数据加载中…",class:"board-wrap"},ht={key:0,class:"empty-state"},gt={class:"empty-state__icon"},yt={class:"empty-state__title"},bt={class:"empty-state__desc"},kt={key:1,class:"board-grid"},wt=z({name:"financeMubiao"}),St=z({...wt,setup(Mt){function k(t){const e={dept_id:Number(t.dept_id??0),dept_name:String(t.dept_name??""),dept_path:String(t.dept_path??""),target_id:Number(t.target_id??0),target_amount:Number(t.target_amount??0),remark:String(t.remark??"")},o=t.children;return Array.isArray(o)&&o.length>0&&(e.children=o.map(k)),e}function x(t){var o;let e=0;for(const l of t)e+=Number(l.target_amount??0),(o=l.children)!=null&&o.length&&(e+=x(l.children));return Math.round(e*100)/100}function C(t){var o;let e=0;for(const l of t)e+=1,(o=l.children)!=null&&o.length&&(e+=C(l.children));return e}function D(t){var o;const e=[];for(const l of t)e.push({dept_id:l.dept_id,target_amount:Number(l.target_amount??0),remark:l.remark||""}),(o=l.children)!=null&&o.length&&e.push(...D(l.children));return e}function E(){const t=new Date;return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}`}function P(t){return t>=1e4?(t/1e4).toFixed(1)+"w":t.toLocaleString("zh-CN",{maximumFractionDigits:0})}const d=_(E()),p=_(!1),w=_(!1),u=_([]),v=_(!1),n=_([]),c=_(null),A=Y(()=>x(u.value)),R=Y(()=>C(u.value));function N(t){if(n.value.some(e=>e.dept_id===t.dept_id)){c.value=t.dept_id;return}n.value.push(t),c.value=t.dept_id}function $(t){const e=n.value.findIndex(o=>o.dept_id===t);e!==-1&&n.value.splice(e),c.value=n.value.length>0?n.value[n.value.length-1].dept_id:null}async function h(){if(d.value){p.value=!0,n.value=[],c.value=null;try{const t=await Z({year_month:d.value});u.value=((t==null?void 0:t.rows)||[]).map(k),v.value=!!(t!=null&&t.data_scope_limited)}catch{u.value=[],v.value=!1}finally{p.value=!1}}}async function G(){if(!d.value){F.msgWarning("请选择月份");return}await F.confirm("确认保存「"+d.value+"」各部门业绩目标?"),w.value=!0;try{const t=await tt({year_month:d.value,items:D(u.value)});t!=null&&t.rows?(u.value=t.rows.map(k),v.value=!!(t!=null&&t.data_scope_limited),n.value=[],c.value=null):await h()}finally{w.value=!1}}return at(h),(t,e)=>{const o=Q,l=U,S=W,J=ot("perms"),O=j;return r(),f("div",lt,[a("div",it,[a("div",nt,[a("div",rt,[i(o,null,{default:s(()=>[i(y(H))]),_:1})]),e[1]||(e[1]=a("div",null,[a("div",{class:"toolbar__title"},"制定业绩目标"),a("div",{class:"toolbar__desc"},[g(" 按部门设置每月销售目标,填 0 并保存将删除该记录。列表按当前账号 "),a("strong",null,"角色数据权限"),g(" 仅展示"),a("strong",null,"本部门及下级"),g("(不展示权限外的上级组织;口径与业绩看板数据范围一致)。 ")])],-1))]),a("div",st,[a("div",dt,[e[2]||(e[2]=a("span",{class:"month-picker-wrap__label"},"目标月份",-1)),i(l,{modelValue:d.value,"onUpdate:modelValue":e[0]||(e[0]=m=>d.value=m),type:"month","value-format":"YYYY-MM",placeholder:"选择月份",clearable:!1,size:"default",class:"month-picker",onChange:h},null,8,["modelValue"])])]),a("div",ut,[a("div",mt,[a("div",ct,[a("span",_t,b(R.value),1),e[3]||(e[3]=a("span",{class:"summary-item__label"},"部门",-1))]),e[5]||(e[5]=a("div",{class:"summary-divider"},null,-1)),a("div",pt,[a("span",ft,"¥"+b(P(A.value)),1),e[4]||(e[4]=a("span",{class:"summary-item__label"},"目标合计",-1))])]),i(S,{circle:"",loading:p.value,onClick:h,title:"刷新"},{default:s(()=>[i(o,null,{default:s(()=>[i(y(B))]),_:1})]),_:1},8,["loading"]),T((r(),M(S,{type:"primary",loading:w.value,disabled:p.value||!d.value,onClick:G},{default:s(()=>[i(o,null,{default:s(()=>[i(y(K))]),_:1}),e[6]||(e[6]=g("保存目标 ",-1))]),_:1},8,["loading","disabled"])),[[J,["finance.dept_performance_target/batchSave"]]])])]),T((r(),f("div",vt,[!p.value&&u.value.length===0?(r(),f("div",ht,[a("div",gt,[i(o,null,{default:s(()=>[i(y(X))]),_:1})]),a("p",yt,b(v.value?"数据权限内无可选部门":"暂无部门数据"),1),a("p",bt,b(v.value?"当前角色数据范围未包含任何部门,或需在权限中绑定部门后再试。":"请检查部门配置后重试"),1),i(S,{size:"small",onClick:h},{default:s(()=>[i(o,null,{default:s(()=>[i(y(B))]),_:1}),e[7]||(e[7]=g("重新加载",-1))]),_:1})])):(r(),f("div",kt,[i(q,{name:"card",tag:"div",class:"board-grid__inner"},{default:s(()=>[(r(!0),f(V,null,L(u.value,m=>(r(),M(I,{key:"root-"+m.dept_id,node:m,"is-root":!0,"drilled-id":c.value,onDrillIn:N},null,8,["node","drilled-id"]))),128)),(r(!0),f(V,null,L(n.value,m=>(r(),M(I,{key:"drill-"+m.dept_id,node:m,"is-root":!1,"drilled-id":c.value,class:"card--drilled",onDrillIn:N,onClose:xt=>$(m.dept_id)},null,8,["node","drilled-id","onClose"]))),128))]),_:1})]))])),[[O,p.value]])])}}}),me=et(St,[["__scopeId","data-v-9d32b132"]]);export{me as default};