KpiTemplateView-CVvpMkK-.js 5.9 KB

1
  1. import{kpiApi as w}from"./index-Dhl0yoWK.js";import{_ as Z,j as ee,o as r,c as m,a as i,b as t,w as a,g as U,r as x,e as s,x as F,h as d,t as c,F as b,p as V,f as I,E as le,y as C,i as te}from"./index-BwYZ2HSO.js";const ae={class:"app-page template-workbench"},ne={class:"page-header"},oe={key:0,class:"filter-bar"},se={key:1,class:"empty"},re={class:"tpl-header"},ie={key:0,class:"tpl-items"},ue={class:"tpl-item-name"},me={class:"item-list"},de={class:"item-num"},pe={__name:"KpiTemplateView",setup(ce){const f=x([]),v=x(!1),y=x(null),k=x(""),n=te({name:"",category:"",items:[{name:"",maxScore:20}]}),z=["技术开发","产品设计","人力资源","财务管理","运营市场","高管"],h=F(()=>{const o=new Set(z.filter(e=>f.value.some(u=>u.category===e)));for(const e of f.value)e.category&&o.add(e.category);return[...o].sort()}),B=F(()=>k.value?f.value.filter(o=>(o.category||"通用")===k.value):f.value);function A(o){return f.value.filter(e=>(e.category||"通用")===o).length}function K(){}ee(()=>S());async function S(){f.value=await w.listTemplates()}function J(o){try{const e=JSON.parse(o);return Array.isArray(e)?e:[]}catch{return[]}}function M(){y.value=null,n.name="",n.category="",n.items=[{name:"",maxScore:20}],v.value=!0}function O(o){y.value=o,n.name=o.name,n.category=o.category||"";const e=J(o.itemsJson);n.items=e.length?e.map(u=>({name:u.name||"",maxScore:u.maxScore||0})):[{name:"",maxScore:20}],v.value=!0}async function P(){const o=n.items.filter(u=>u.name.trim());if(!n.name.trim()){C.warning("请填写模板名称");return}if(o.length===0){C.warning("请至少添加一个指标项");return}const e={name:n.name.trim(),category:n.category||"通用",itemsJson:JSON.stringify(o.map(u=>({name:u.name.trim(),maxScore:u.maxScore||0})))};y.value?await w.updateTemplate(y.value.id,e):await w.createTemplate(e),C.success("保存成功"),v.value=!1,S()}async function D(o){await le.confirm("确定删除吗?","提示",{type:"warning"}),await w.deleteTemplate(o),C.success("已删除"),S()}return(o,e)=>{const u=s("Plus"),j=s("el-icon"),_=s("el-button"),N=s("el-radio-button"),L=s("el-radio-group"),$=s("el-tag"),q=s("el-card"),G=s("el-col"),H=s("el-row"),E=s("el-input"),T=s("el-form-item"),Q=s("el-option"),R=s("el-select"),W=s("el-input-number"),X=s("el-form"),Y=s("el-dialog");return r(),m("div",ae,[i("div",ne,[e[7]||(e[7]=i("h3",null,"绩效模板",-1)),t(_,{type:"primary",onClick:M},{default:a(()=>[t(j,null,{default:a(()=>[t(u)]),_:1}),e[6]||(e[6]=d(" 添加模板",-1))]),_:1})]),h.value.length>1?(r(),m("div",oe,[e[8]||(e[8]=i("span",{class:"filter-label"},"岗位筛选:",-1)),t(L,{modelValue:k.value,"onUpdate:modelValue":e[0]||(e[0]=l=>k.value=l),size:"small",onChange:K},{default:a(()=>[t(N,{value:""},{default:a(()=>[d("全部("+c(f.value.length)+")",1)]),_:1}),(r(!0),m(b,null,V(h.value,l=>(r(),I(N,{key:l,value:l},{default:a(()=>[d(c(l)+"("+c(A(l))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])):U("",!0),B.value.length===0?(r(),m("div",se,"暂无 KPI 模板")):U("",!0),t(H,{gutter:16},{default:a(()=>[(r(!0),m(b,null,V(B.value,l=>(r(),I(G,{key:l.id,span:8},{default:a(()=>[t(q,{shadow:"hover",class:"tpl-card"},{header:a(()=>[i("div",re,[i("span",null,c(l.name),1),i("div",null,[t(_,{link:"",size:"small",onClick:p=>O(l)},{default:a(()=>[...e[9]||(e[9]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(_,{link:"",size:"small",type:"danger",onClick:p=>D(l.id)},{default:a(()=>[...e[10]||(e[10]=[d("删除",-1)])]),_:1},8,["onClick"])])])]),default:a(()=>[t($,{size:"small",effect:"plain"},{default:a(()=>[d(c(l.category||"通用"),1)]),_:2},1024),l.itemsJson?(r(),m("div",ie,[(r(!0),m(b,null,V(J(l.itemsJson),(p,g)=>(r(),m("div",{key:g,class:"tpl-item"},[i("span",ue,c(p.name||p),1),t($,{size:"small",type:"info",effect:"plain",round:""},{default:a(()=>[d(c(p.maxScore||0)+"分",1)]),_:2},1024)]))),128))])):U("",!0)]),_:2},1024)]),_:2},1024))),128))]),_:1}),t(Y,{modelValue:v.value,"onUpdate:modelValue":e[5]||(e[5]=l=>v.value=l),title:y.value?"编辑模板":"添加模板",width:"520px"},{footer:a(()=>[t(_,{onClick:e[4]||(e[4]=l=>v.value=!1)},{default:a(()=>[...e[15]||(e[15]=[d("取消",-1)])]),_:1}),t(_,{type:"primary",onClick:P},{default:a(()=>[...e[16]||(e[16]=[d("保存",-1)])]),_:1})]),default:a(()=>[t(X,{"label-width":"80px"},{default:a(()=>[t(T,{label:"名称"},{default:a(()=>[t(E,{modelValue:n.name,"onUpdate:modelValue":e[1]||(e[1]=l=>n.name=l),placeholder:"如:前端开发工程师"},null,8,["modelValue"])]),_:1}),t(T,{label:"岗位分类"},{default:a(()=>[t(R,{modelValue:n.category,"onUpdate:modelValue":e[2]||(e[2]=l=>n.category=l),filterable:"","allow-create":"",clearable:"",placeholder:"选择或输入岗位分类",style:{width:"100%"}},{default:a(()=>[(r(),m(b,null,V(z,l=>t(Q,{key:l,label:l,value:l},null,8,["label","value"])),64))]),_:1},8,["modelValue"])]),_:1}),t(T,{label:"指标项"},{default:a(()=>[i("div",me,[(r(!0),m(b,null,V(n.items,(l,p)=>(r(),m("div",{key:p,class:"item-row"},[i("span",de,c(p+1),1),t(E,{modelValue:l.name,"onUpdate:modelValue":g=>l.name=g,placeholder:"指标名称",style:{flex:"1"}},null,8,["modelValue","onUpdate:modelValue"]),e[11]||(e[11]=i("span",{class:"item-label"},"权重",-1)),t(W,{modelValue:l.maxScore,"onUpdate:modelValue":g=>l.maxScore=g,min:1,max:60,step:5,style:{width:"100px"}},null,8,["modelValue","onUpdate:modelValue"]),e[12]||(e[12]=i("span",{class:"item-label"},"分",-1)),t(_,{onClick:g=>n.items.splice(p,1),icon:"Delete",circle:"",size:"small",disabled:n.items.length<=1},null,8,["onClick","disabled"])]))),128))]),t(_,{size:"small",onClick:e[3]||(e[3]=l=>n.items.push({name:"",maxScore:20})),disabled:n.items.length>=10},{default:a(()=>[...e[13]||(e[13]=[d("+ 添加指标",-1)])]),_:1},8,["disabled"]),e[14]||(e[14]=i("div",{class:"item-hint"},"权重之和建议控制在100分以内,各项按重要性分配",-1))]),_:1})]),_:1})]),_:1},8,["modelValue","title"])])}}},ve=Z(pe,[["__scopeId","data-v-7bf7a9b2"]]);export{ve as default};