case-b470851a.js 6.6 KB

12
  1. import{bf as at,bg as R,d as q,Z as r,a1 as w,n,a0 as e,a5 as a,a6 as c,a2 as I,a3 as D,$ as k,a7 as y,bi as J,dU as lt,at as F,bm as rt,c as V,r as j,e as ct,o as it,j as ut,T as M,a8 as T,a9 as _t,bb as m,aP as dt,dV as pt,c8 as gt,cg as mt,cj as ft,aJ as yt,c5 as vt,bj as xt}from"./index-8a67e3df.js";/* empty css *//* empty css */import"./dayjs-919e6097.js";import{D as kt,_ as Ct}from"./index-a5661619.js";import{_ as P}from"./index-66456a53.js";import{_ as ht}from"./FormItem-52c83ce9.js";import"./toInteger-9a80771f.js";const A=at({requestOptions:{apiUrl:()=>R("test")}}),Q={post(u,_){return A.post({url:u,data:_})},get(u,_){return A.get({url:u,params:_})}},O=u=>Q.post("/cases/execute",{names:u}),bt=()=>Q.post("/stop/all",{});const wt={class:"test-logs-modal"},St={class:"logs-content"},$t=q({__name:"LogsModal",props:{record:{}},setup(u){const _=o=>({idle:"default",running:"processing",success:"success",failed:"error",stopped:"warning"})[o]||"default",C=o=>({idle:"空闲",running:"运行中",success:"成功",failed:"失败",stopped:"已停止"})[o]||o;return(o,d)=>{const v=kt,S=J,$=P,i=Ct,h=lt;return r(),w("div",wt,[n(i,{column:2,bordered:"",style:{"margin-bottom":"16px"}},{default:e(()=>[n(v,{label:"用例名称"},{default:e(()=>[a(c(o.record.name),1)]),_:1}),n(v,{label:"状态"},{default:e(()=>[n(S,{color:_(o.record.status)},{default:e(()=>[a(c(C(o.record.status)),1)]),_:1},8,["color"])]),_:1}),n(v,{label:"描述"},{default:e(()=>[a(c(o.record.description),1)]),_:1}),n(v,{label:"任务"},{default:e(()=>[n($,null,{default:e(()=>[(r(!0),w(I,null,D(o.record.tasks,x=>(r(),k(S,{key:x.action,color:"blue"},{default:e(()=>[a(c(x.action)+" "+c(x.format)+" "+c(x.delay/1e9)+"s ",1)]),_:2},1024))),128))]),_:1})]),_:1})]),_:1}),y("div",St,[d[0]||(d[0]=y("h4",null,"执行日志",-1)),n(h,{value:o.record.logs||"暂无日志信息",rows:15,readonly:"",style:{"font-family":"'Courier New', monospace","font-size":"12px","background-color":"#f5f5f5"}},null,8,["value"])])])}}});const Mt=F($t,[["__scopeId","data-v-66e282f1"]]),Tt=(u,_)=>{rt({content:n(Mt,{record:u},null),modalConfig:{appContext:_,title:"执行日志",width:800,footer:null,destroyOnClose:!0}})},It={class:"test-case-container"},Et={class:"header"},Ut={class:"actions"},zt={class:"filters"},Bt={class:"content"},Lt=q({__name:"case",setup(u){const _=V(!1),C=V([]),o=j({status:"",tags:[]}),d=j({current:1,pageSize:50,total:0,showSizeChanger:!0,showQuickJumper:!0,showTotal:s=>`共 ${s} 条记录`}),v=[{title:"用例名称",dataIndex:"name",key:"name",width:200},{title:"描述",dataIndex:"description",key:"description",ellipsis:!0},{title:"状态",dataIndex:"status",key:"status",width:100},{title:"标签",dataIndex:"tags",key:"tags",width:150},{title:"操作",key:"action",width:200,fixed:"right"}],S=s=>({init:"default",starting:"processing",running:"processing",success:"success",failed:"error"})[s]||"default",$=s=>({init:"待执行",starting:"启动中",running:"运行中",success:"成功",failed:"失败"})[s]||s;let i=null;const h=()=>{i&&i.close();const s=new URLSearchParams;o.status&&s.append("status",o.status),o.tags&&o.tags.length>0&&s.append("tags",o.tags.join(","));const t=`${R("test","/sse")}/cases?${s.toString()}`;i=new EventSource(t),i.onmessage=f=>{try{const p=JSON.parse(f.data);C.value=p||[]}catch(p){console.error("解析SSE数据失败:",p)}},i.onerror=f=>{console.error("SSE连接错误:",f)}},x=()=>{i&&(i.close(),i=null)},E=()=>{d.current=1,h()},Z=s=>{d.current=s.current,d.pageSize=s.pageSize},G=ct()?.appContext,H=s=>{Tt(s,G)},K=async s=>{try{await O([s.name]),m.success("执行成功")}catch{m.error("执行失败")}},W=async(s,t)=>{s?await K(t):m.info("停止功能待实现")},X=()=>{h(),m.success("刷新成功")},Y=async()=>{try{const s=C.value.filter(t=>t.status!=="running");if(s.length===0){m.warning("没有待执行的测试用例");return}await O(s.map(t=>t.name)),m.success("执行全部成功")}catch{m.error("执行全部失败")}},tt=async()=>{try{await bt(),m.success("停止全部成功")}catch{m.error("停止全部失败")}};return it(()=>{h()}),ut(()=>{x()}),(s,t)=>{const f=dt,p=pt,U=gt,z=ht,B=mt,et=ft,nt=yt,L=J,N=P,st=vt,ot=xt;return r(),w("div",It,[y("div",Et,[t[5]||(t[5]=y("div",{class:"title"},"测试用例管理",-1)),y("div",Ut,[n(f,{onClick:X},{icon:e(()=>[n(M(T),{icon:"mdi:refresh",class:"v-text-bottom"})]),default:e(()=>[t[2]||(t[2]=a(" 刷新 "))]),_:1}),n(f,{type:"primary",onClick:Y},{icon:e(()=>[n(M(T),{icon:"mdi:play",class:"v-text-bottom"})]),default:e(()=>[t[3]||(t[3]=a(" 执行全部 "))]),_:1}),n(f,{danger:"",onClick:tt},{icon:e(()=>[n(M(T),{icon:"mdi:stop",class:"v-text-bottom"})]),default:e(()=>[t[4]||(t[4]=a(" 停止全部 "))]),_:1})])]),y("div",zt,[n(et,{gutter:16},{default:e(()=>[n(B,{span:6},{default:e(()=>[n(z,{label:"状态"},{default:e(()=>[n(U,{value:o.status,"onUpdate:value":t[0]||(t[0]=g=>o.status=g),placeholder:"选择状态","allow-clear":"",onChange:E},{default:e(()=>[n(p,{value:"init"},{default:e(()=>t[6]||(t[6]=[a("待执行")])),_:1}),n(p,{value:"starting"},{default:e(()=>t[7]||(t[7]=[a("启动中")])),_:1}),n(p,{value:"running"},{default:e(()=>t[8]||(t[8]=[a("运行中")])),_:1}),n(p,{value:"success"},{default:e(()=>t[9]||(t[9]=[a("成功")])),_:1}),n(p,{value:"failed"},{default:e(()=>t[10]||(t[10]=[a("失败")])),_:1})]),_:1},8,["value"])]),_:1})]),_:1}),n(B,{span:6},{default:e(()=>[n(z,{label:"标签"},{default:e(()=>[n(U,{value:o.tags,"onUpdate:value":t[1]||(t[1]=g=>o.tags=g),mode:"tags",placeholder:"输入标签","allow-clear":"",onChange:E},null,8,["value"])]),_:1})]),_:1})]),_:1})]),y("div",Bt,[n(ot,{columns:v,"data-source":C.value,loading:_.value,pagination:d,onChange:Z,"row-key":"id"},{bodyCell:e(({column:g,record:l})=>[g.key==="name"?(r(),k(nt,{key:0,title:l.description},{default:e(()=>[y("span",null,c(l.name),1)]),_:2},1032,["title"])):g.key==="status"?(r(),k(L,{key:1,color:S(l.status)},{default:e(()=>[a(c($(l.status)),1)]),_:2},1032,["color"])):g.key==="categoryType"?(r(),w(I,{key:2},[a(c(l.category)+"_"+c(l.testType),1)],64)):g.key==="tags"?(r(),k(N,{key:3},{default:e(()=>[(r(!0),w(I,null,D(l.tags,b=>(r(),k(L,{key:b,color:"blue"},{default:e(()=>[a(c(b),1)]),_:2},1024))),128))]),_:2},1024)):g.key==="action"?(r(),k(N,{key:4},{default:e(()=>[n(f,{type:"link",size:"small",onClick:b=>H(l)},{default:e(()=>t[11]||(t[11]=[a(" 查看 ")])),_:2},1032,["onClick"]),n(st,{checked:l.status==="running",loading:l.status==="running",onChange:b=>W(b,l)},null,8,["checked","loading","onChange"])]),_:2},1024)):_t("",!0)]),_:1},8,["data-source","loading","pagination"])])])}}});const Jt=F(Lt,[["__scopeId","data-v-775e7756"]]);export{Jt as default};
  2. //# sourceMappingURL=case-b470851a.js.map