2 lines
6.1 KiB
JavaScript
2 lines
6.1 KiB
JavaScript
import{_ as W,q as X,c as g,a as m,t as b,b as a,w as s,y as Y,k as v,h as u,r as d,x as Z,f as w,o as i,e as r,F as B,i as D,d as ee,E as z,A as le,v as te}from"./index-Dn51426I.js";import{b as _}from"./index-BRvS5RTm.js";const ae={class:"content-card"},se={class:"card-title"},ne={key:1,style:{color:"var(--text-muted)","font-size":"12px"}},ie={class:"tag-editor"},oe={__name:"ClientManage",setup(ue){const S=u([]),R=u([]),h=u(!1),y=u(!1),T=u(!1),k=u(null),M=u(null),C=u(!1),f=u(""),E=u(null),n=w({name:"",description:"",sales_id:"",service_types:[]}),A={name:[{required:!0,message:"请输入名称",trigger:"blur"}],sales_id:[{required:!0,message:"请选择所属销售",trigger:"change"}]};async function V(){h.value=!0;try{const[e,l]=await Promise.all([_.getClients(),_.getSalesUsers()]);S.value=e.data,R.value=l.data}finally{h.value=!1}}function I(e){k.value=(e==null?void 0:e.id)||null,n.name=(e==null?void 0:e.name)||"",n.description=(e==null?void 0:e.description)||"",n.sales_id=(e==null?void 0:e.sales_id)||"",n.service_types=e!=null&&e.service_types?[...e.service_types]:[],C.value=!1,f.value="",y.value=!0}async function N(){var e;C.value=!0,f.value="",await te(),(e=E.value)==null||e.focus()}function q(){const e=f.value.trim();e&&!n.service_types.includes(e)&&n.service_types.push(e),C.value=!1,f.value=""}function F(e){n.service_types.splice(e,1)}async function K(){var l;if(await((l=M.value)==null?void 0:l.validate().catch(()=>!1))){T.value=!0;try{const o={name:n.name,description:n.description,sales_id:n.sales_id,service_types:n.service_types};k.value?(await _.updateClient(k.value,o),z.success("更新成功")):(await _.createClient(o),z.success("创建成功")),y.value=!1,V()}finally{T.value=!1}}}async function L(e){await _.updateClient(e.id,{status:e.status===1?0:1}),z.success("状态已更新"),V()}async function P(e){await le.confirm(`确定删除项目「${e.name}」吗?如已有工时记录则无法删除,建议使用“结算”操作。`,"确认删除",{type:"warning"}),await _.deleteClient(e.id),z.success("删除成功"),V()}return X(V),(e,l)=>{const o=d("el-button"),p=d("el-table-column"),U=d("el-tag"),j=d("el-table"),$=d("el-input"),x=d("el-form-item"),G=d("el-option"),H=d("el-select"),J=d("el-form"),O=d("el-dialog"),Q=Z("loading");return i(),g("div",null,[l[14]||(l[14]=m("div",{class:"page-header"},[m("h1",null,"客户/项目管理"),m("p",null,"管理系统中的客户与项目,并指定所属销售")],-1)),m("div",ae,[m("div",se,[m("span",null,"全部客户/项目 ("+b(S.value.length)+")",1),a(o,{type:"primary",onClick:l[0]||(l[0]=t=>I())},{default:s(()=>[...l[7]||(l[7]=[r("+ 新增客户/项目",-1)])]),_:1})]),Y((i(),v(j,{data:S.value,stripe:""},{default:s(()=>[a(p,{prop:"name",label:"客户/项目名称","min-width":"160"}),a(p,{prop:"sales_name",label:"所属销售","min-width":"100"}),a(p,{label:"子项目预设","min-width":"200"},{default:s(({row:t})=>[t.service_types&&t.service_types.length?(i(!0),g(B,{key:0},D(t.service_types,c=>(i(),v(U,{key:c,size:"small",style:{margin:"2px"}},{default:s(()=>[r(b(c),1)]),_:2},1024))),128)):(i(),g("span",ne,"未设置"))]),_:1}),a(p,{prop:"description",label:"描述","min-width":"120","show-overflow-tooltip":""}),a(p,{prop:"status",label:"状态",width:"90"},{default:s(({row:t})=>[a(U,{type:t.status===1?"success":"info",effect:"dark",round:""},{default:s(()=>[r(b(t.status===1?"进行中":"已结算"),1)]),_:2},1032,["type"])]),_:1}),a(p,{prop:"total_hours",label:"总工时(h)",width:"100"}),a(p,{prop:"rd_count",label:"参与研发",width:"90"}),a(p,{label:"操作",width:"200"},{default:s(({row:t})=>[a(o,{size:"small",onClick:c=>I(t)},{default:s(()=>[...l[8]||(l[8]=[r("编辑",-1)])]),_:1},8,["onClick"]),a(o,{size:"small",type:t.status===1?"warning":"success",onClick:c=>L(t)},{default:s(()=>[r(b(t.status===1?"结算":"激活"),1)]),_:2},1032,["type","onClick"]),a(o,{size:"small",type:"danger",onClick:c=>P(t)},{default:s(()=>[...l[9]||(l[9]=[r("删除",-1)])]),_:1},8,["onClick"])]),_:1})]),_:1},8,["data"])),[[Q,h.value]])]),a(O,{modelValue:y.value,"onUpdate:modelValue":l[6]||(l[6]=t=>y.value=t),title:k.value?"编辑客户/项目":"新增客户/项目",width:"500px","destroy-on-close":""},{footer:s(()=>[a(o,{onClick:l[5]||(l[5]=t=>y.value=!1)},{default:s(()=>[...l[12]||(l[12]=[r("取消",-1)])]),_:1}),a(o,{type:"primary",loading:T.value,onClick:K},{default:s(()=>[...l[13]||(l[13]=[r("保存",-1)])]),_:1},8,["loading"])]),default:s(()=>[a(J,{model:n,rules:A,ref_key:"formRef",ref:M,"label-width":"100px"},{default:s(()=>[a(x,{label:"名称",prop:"name"},{default:s(()=>[a($,{modelValue:n.name,"onUpdate:modelValue":l[1]||(l[1]=t=>n.name=t),placeholder:"客户/项目名称"},null,8,["modelValue"])]),_:1}),a(x,{label:"所属销售",prop:"sales_id"},{default:s(()=>[a(H,{modelValue:n.sales_id,"onUpdate:modelValue":l[2]||(l[2]=t=>n.sales_id=t),placeholder:"请选择销售人员",style:{width:"100%"},filterable:""},{default:s(()=>[(i(!0),g(B,null,D(R.value,t=>(i(),v(G,{key:t.id,label:t.realname,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(x,{label:"子项目"},{default:s(()=>[m("div",ie,[(i(!0),g(B,null,D(n.service_types,(t,c)=>(i(),v(U,{key:c,closable:"",effect:"dark",size:"default",class:"st-tag",onClose:de=>F(c)},{default:s(()=>[r(b(t),1)]),_:2},1032,["onClose"]))),128)),C.value?(i(),v($,{key:1,ref_key:"stInputRef",ref:E,modelValue:f.value,"onUpdate:modelValue":l[3]||(l[3]=t=>f.value=t),size:"small",class:"st-input",placeholder:"类型名,回车确认",onKeyup:ee(q,["enter"]),onBlur:q,maxlength:"20"},null,8,["modelValue"])):(i(),v(o,{key:0,size:"small",class:"add-st-btn",onClick:N},{default:s(()=>[...l[10]||(l[10]=[r("+ 添加",-1)])]),_:1}))]),l[11]||(l[11]=m("div",{style:{"font-size":"12px",color:"var(--text-muted)","margin-top":"6px"}}," 研发填报该项目工时时,可从这里选择子项目 ",-1))]),_:1}),a(x,{label:"描述"},{default:s(()=>[a($,{modelValue:n.description,"onUpdate:modelValue":l[4]||(l[4]=t=>n.description=t),type:"textarea",rows:2,placeholder:"项目描述(选填)"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue","title"])])}}},ce=W(oe,[["__scopeId","data-v-c29a7c19"]]);export{ce as default};
|