Files
prop-data-guard/frontend/dist/assets/Project-Dufl50hC.js
T
2026-04-22 17:07:33 +08:00

3 lines
6.2 KiB
JavaScript

import{d as te,n as ae,o as r,c as y,a as s,b as a,w as l,e as se,k as i,r as d,g as N,H as le,j as p,I as oe,F as k,s as j,m as ne,E as _,q as x,x as u,J as ie,_ as de}from"./index-DIl-pxgT.js";import{g as re,c as ue,a as ce,d as me}from"./project-DH-EQEsQ.js";import{c as pe}from"./classification-CUKwOuh8.js";import{g as _e}from"./datasource-idO2fJD3.js";const fe={class:"page-container"},ve={class:"page-header"},ge={class:"search-bar card-shadow"},ye={class:"project-list"},we={class:"project-card card-shadow"},be={class:"project-header"},Ve={class:"project-name"},he={class:"project-desc"},ke={class:"project-stats"},je={class:"stat-item"},xe={class:"stat-num"},Ce={class:"stat-item"},Pe={class:"stat-num"},Se={class:"stat-item"},Ue={class:"stat-num"},ze={class:"stat-item"},Be={class:"stat-num"},De={class:"project-actions"},Ee=te({__name:"Project",setup(Me){const C=i(!1),P=i([]),S=i(1),$=i(20),A=i(0),w=i(""),f=i(!1),b=i(!1),U=i(),n=ne({name:"",template_id:void 0,target_source_ids:[],description:""}),F={name:[{required:!0,message:"请输入项目名称",trigger:"blur"}],template_id:[{required:!0,message:"请选择模板",trigger:"change"}]},V=i([]),z=i([]);function I(o){return{created:"info",scanning:"warning",assigning:"",labeling:"primary",reviewing:"success",accepting:"success",published:"success"}[o]||"info"}function K(o){return{created:"已创建",scanning:"扫描中",assigning:"分配中",labeling:"打标中",reviewing:"审核中",accepting:"验收中",published:"已发布"}[o]||o}async function v(){C.value=!0;try{const o=await re({page:S.value,page_size:$.value,keyword:w.value||void 0});P.value=o.data||[],A.value=o.total||0}finally{C.value=!1}}function B(){S.value=1,v()}function R(){var o;n.name="",n.template_id=(o=V.value[0])==null?void 0:o.id,n.target_source_ids=[],n.description="",f.value=!0}async function H(){var e;if(await((e=U.value)==null?void 0:e.validate().catch(()=>!1))){b.value=!0;try{await ue({name:n.name,template_id:n.template_id,target_source_ids:n.target_source_ids.join(","),description:n.description}),_.success("创建成功"),f.value=!1,v()}catch(c){_.error((c==null?void 0:c.message)||"创建失败")}finally{b.value=!1}}}async function J(o){try{const e=await ce(o.id);_.success(e.message||"自动分类完成"),v()}catch(e){_.error((e==null?void 0:e.message)||"自动分类失败")}}async function G(o){try{await ie.confirm("确认删除该项目?","提示",{type:"warning"}),await me(o.id),_.success("删除成功"),v()}catch(e){e!=="cancel"&&_.error((e==null?void 0:e.message)||"删除失败")}}async function O(){try{const[o,e]=await Promise.all([pe(),_e()]);V.value=o||[],z.value=(e==null?void 0:e.data)||[]}catch{}}return ae(()=>{v(),O()}),(o,e)=>{const c=d("el-icon"),m=d("el-button"),h=d("el-input"),Q=d("el-tag"),W=d("el-col"),X=d("el-row"),g=d("el-form-item"),D=d("el-option"),E=d("el-select"),Y=d("el-form"),Z=d("el-dialog");return r(),y("div",fe,[s("div",ve,[e[8]||(e[8]=s("h2",{class:"page-title"},"项目管理",-1)),a(m,{type:"primary",onClick:R},{default:l(()=>[a(c,null,{default:l(()=>[a(N(le))]),_:1}),e[7]||(e[7]=p("新建项目 ",-1))]),_:1})]),s("div",ge,[a(h,{modelValue:w.value,"onUpdate:modelValue":e[0]||(e[0]=t=>w.value=t),placeholder:"搜索项目名称",clearable:"",style:{width:"260px"},onKeyup:se(B,["enter"])},{append:l(()=>[a(m,{onClick:B},{default:l(()=>[a(c,null,{default:l(()=>[a(N(oe))]),_:1})]),_:1})]),_:1},8,["modelValue"])]),s("div",ye,[a(X,{gutter:16},{default:l(()=>[(r(!0),y(k,null,j(P.value,t=>(r(),x(W,{key:t.id,xs:24,sm:12,lg:8},{default:l(()=>{var M,T,q,L;return[s("div",we,[s("div",be,[s("div",Ve,u(t.name),1),a(Q,{type:I(t.status),size:"small"},{default:l(()=>[p(u(K(t.status)),1)]),_:2},1032,["type"])]),s("div",he,u(t.description||"暂无描述"),1),s("div",ke,[s("div",je,[s("div",xe,u(((M=t.stats)==null?void 0:M.total)||0),1),e[9]||(e[9]=s("div",{class:"stat-label"},"总字段",-1))]),s("div",Ce,[s("div",Pe,u(((T=t.stats)==null?void 0:T.auto)||0),1),e[10]||(e[10]=s("div",{class:"stat-label"},"自动",-1))]),s("div",Se,[s("div",Ue,u(((q=t.stats)==null?void 0:q.manual)||0),1),e[11]||(e[11]=s("div",{class:"stat-label"},"人工",-1))]),s("div",ze,[s("div",Be,u(((L=t.stats)==null?void 0:L.reviewed)||0),1),e[12]||(e[12]=s("div",{class:"stat-label"},"已审",-1))])]),s("div",De,[a(m,{type:"primary",size:"small",onClick:ee=>J(t)},{default:l(()=>[...e[13]||(e[13]=[p("自动分类",-1)])]),_:1},8,["onClick"]),a(m,{type:"danger",link:"",size:"small",onClick:ee=>G(t)},{default:l(()=>[...e[14]||(e[14]=[p("删除",-1)])]),_:1},8,["onClick"])])])]}),_:2},1024))),128))]),_:1})]),a(Z,{modelValue:f.value,"onUpdate:modelValue":e[6]||(e[6]=t=>f.value=t),title:"新建项目",width:"520px","destroy-on-close":""},{footer:l(()=>[a(m,{onClick:e[5]||(e[5]=t=>f.value=!1)},{default:l(()=>[...e[15]||(e[15]=[p("取消",-1)])]),_:1}),a(m,{type:"primary",loading:b.value,onClick:H},{default:l(()=>[...e[16]||(e[16]=[p("确定",-1)])]),_:1},8,["loading"])]),default:l(()=>[a(Y,{ref_key:"formRef",ref:U,model:n,rules:F,"label-width":"100px"},{default:l(()=>[a(g,{label:"项目名称",prop:"name"},{default:l(()=>[a(h,{modelValue:n.name,"onUpdate:modelValue":e[1]||(e[1]=t=>n.name=t),placeholder:"请输入项目名称"},null,8,["modelValue"])]),_:1}),a(g,{label:"模板",prop:"template_id"},{default:l(()=>[a(E,{modelValue:n.template_id,"onUpdate:modelValue":e[2]||(e[2]=t=>n.template_id=t),placeholder:"选择分类分级模板",style:{width:"100%"}},{default:l(()=>[(r(!0),y(k,null,j(V.value,t=>(r(),x(D,{key:t.id,label:t.name,value:t.id},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(g,{label:"数据源范围"},{default:l(()=>[a(E,{modelValue:n.target_source_ids,"onUpdate:modelValue":e[3]||(e[3]=t=>n.target_source_ids=t),multiple:"",placeholder:"选择数据源(不选则为全部)",style:{width:"100%"}},{default:l(()=>[(r(!0),y(k,null,j(z.value,t=>(r(),x(D,{key:t.id,label:t.name,value:String(t.id)},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(g,{label:"描述"},{default:l(()=>[a(h,{modelValue:n.description,"onUpdate:modelValue":e[4]||(e[4]=t=>n.description=t),type:"textarea",rows:2},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])]),_:1},8,["modelValue"])])}}}),$e=de(Ee,[["__scopeId","data-v-5fcafe59"]]);export{$e as default};
//# sourceMappingURL=Project-Dufl50hC.js.map