| 1 |
- import{kpiApi as w}from"./index-fQv2WpIJ.js";import{_ as Z,k as ee,o as r,c as m,a as i,d as t,w as a,h as z,f as x,r as s,y as F,i as d,t as c,F as V,q as k,g as I,E as le,z as C,j as te}from"./index-BNtoQzpv.js";const ae={class:"page"},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 _=x([]),v=x(!1),y=x(null),b=x(""),n=te({name:"",category:"",items:[{name:"",maxScore:20}]}),U=["技术开发","产品设计","人力资源","财务管理","运营市场","高管"],B=F(()=>{const o=new Set(U.filter(e=>_.value.some(u=>u.category===e)));for(const e of _.value)e.category&&o.add(e.category);return[...o].sort()}),J=F(()=>b.value?_.value.filter(o=>(o.category||"通用")===b.value):_.value);function A(o){return _.value.filter(e=>(e.category||"通用")===o).length}function K(){}ee(()=>S());async function S(){_.value=await w.listTemplates()}function N(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=N(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"),f=s("el-button"),h=s("el-radio-button"),q=s("el-radio-group"),$=s("el-tag"),L=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(f,{type:"primary",onClick:M},{default:a(()=>[t(j,null,{default:a(()=>[t(u)]),_:1}),e[6]||(e[6]=d(" 添加模板",-1))]),_:1})]),B.value.length>1?(r(),m("div",oe,[e[8]||(e[8]=i("span",{class:"filter-label"},"岗位筛选:",-1)),t(q,{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=l=>b.value=l),size:"small",onChange:K},{default:a(()=>[t(h,{value:""},{default:a(()=>[d("全部("+c(_.value.length)+")",1)]),_:1}),(r(!0),m(V,null,k(B.value,l=>(r(),I(h,{key:l,value:l},{default:a(()=>[d(c(l)+"("+c(A(l))+") ",1)]),_:2},1032,["value"]))),128))]),_:1},8,["modelValue"])])):z("",!0),J.value.length===0?(r(),m("div",se,"暂无 KPI 模板")):z("",!0),t(H,{gutter:16},{default:a(()=>[(r(!0),m(V,null,k(J.value,l=>(r(),I(G,{key:l.id,span:8},{default:a(()=>[t(L,{shadow:"hover",class:"tpl-card"},{header:a(()=>[i("div",re,[i("span",null,c(l.name),1),i("div",null,[t(f,{link:"",size:"small",onClick:p=>O(l)},{default:a(()=>[...e[9]||(e[9]=[d("编辑",-1)])]),_:1},8,["onClick"]),t(f,{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(V,null,k(N(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))])):z("",!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(f,{onClick:e[4]||(e[4]=l=>v.value=!1)},{default:a(()=>[...e[15]||(e[15]=[d("取消",-1)])]),_:1}),t(f,{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(V,null,k(U,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(V,null,k(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(f,{onClick:g=>n.items.splice(p,1),icon:"Delete",circle:"",size:"small",disabled:n.items.length<=1},null,8,["onClick","disabled"])]))),128))]),t(f,{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-0a0b9a59"]]);export{ve as default};
|