Files
wecom_it_smart_desk/frontend-admin/dist_bak3/assets/RuleVersion-BQc9JuOF.js
T

2 lines
4.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import{d as L,o as M,b as _,c as k,e as w,f as t,w as o,j as x,n as h,q as j,r as d,i as n,V as A,W as F,g as c,t as S,E as C}from"./index-DY_T097o.js";import{u as I}from"./automation-QjUS0sik.js";import{_ as Q}from"./_plugin-vue_export-helper-DlAUqK2U.js";import"./index-DAqMmgYa.js";const W={class:"rule-version"},$={class:"toolbar"},G={key:0,class:"loading-state"},H=L({__name:"RuleVersion",setup(X){const s=I(),P=j(),r=d(""),p=d(!1),y=d(!1),f=d(10),m=d(""),v=d("");M(async()=>{var u;await s.loadScenarios();const a=P.query.scenario||"",e=((u=s.scenarios[0])==null?void 0:u.scenario_key)||"";r.value=a&&s.scenarios.some(b=>b.scenario_key===a)?a:e,r.value&&await s.loadVersions(r.value)});async function U(a){a&&await s.loadVersions(a)}function B(a){switch(a){case"active":case"full":return"success";case"canary":return"warning";case"rollback":return"danger";default:return"info"}}function T(){r.value&&(f.value=10,m.value="",v.value="",p.value=!0)}async function E(){if(!r.value)return;const a=s.scenarios.find(u=>u.scenario_key===r.value);if(!a)return;let e;if(m.value.trim())try{e=JSON.parse(m.value)}catch{C.error("规则内容 JSON 格式有误");return}y.value=!0;try{await s.publishVersion(a.id,{content:e,canary_percent:f.value,remark:v.value}),C.success("新版本已发布"),p.value=!1}catch{C.error("发布失败")}finally{y.value=!1}}function J(a){if(!a)return"-";try{return new Date(a).toLocaleString("zh-CN",{hour12:!1})}catch{return a}}return(a,e)=>{const u=n("el-option"),b=n("el-select"),V=n("el-button"),O=n("el-skeleton"),i=n("el-table-column"),R=n("el-tag"),q=n("el-table"),z=n("el-slider"),g=n("el-form-item"),N=n("el-input"),D=n("el-form"),K=n("el-dialog");return _(),k("div",W,[e[9]||(e[9]=w("div",{class:"page-title"},"规则版本管理 / 灰度",-1)),e[10]||(e[10]=w("div",{class:"page-desc"},"管理各场景自动化规则的版本与灰度放量,新版本先小流量验证再全量。",-1)),w("div",$,[t(b,{modelValue:r.value,"onUpdate:modelValue":e[0]||(e[0]=l=>r.value=l),placeholder:"选择场景",filterable:"",style:{width:"260px"},onChange:U},{default:o(()=>[(_(!0),k(A,null,F(x(s).scenarios,l=>(_(),h(u,{key:l.scenario_key,label:l.name,value:l.scenario_key},null,8,["label","value"]))),128))]),_:1},8,["modelValue"]),t(V,{type:"primary",disabled:!r.value,onClick:T},{default:o(()=>[...e[6]||(e[6]=[c(" 发布新版本 ",-1)])]),_:1},8,["disabled"])]),x(s).loading?(_(),k("div",G,[t(O,{rows:6,animated:""})])):(_(),h(q,{key:1,data:x(s).versions,class:"ver-table",stripe:""},{default:o(()=>[t(i,{prop:"version",label:"版本",width:"90"}),t(i,{label:"状态",width:"110"},{default:o(({row:l})=>[t(R,{type:B(l.status),size:"small"},{default:o(()=>[c(S(l.status),1)]),_:2},1032,["type"])]),_:1}),t(i,{label:"灰度比例",width:"120"},{default:o(({row:l})=>[c(S(l.canary_percent)+"%",1)]),_:1}),t(i,{prop:"remark",label:"备注"}),t(i,{prop:"created_by",label:"发布人",width:"120"}),t(i,{label:"发布时间",width:"180"},{default:o(({row:l})=>[c(S(J(l.created_at)),1)]),_:1})]),_:1},8,["data"])),t(K,{modelValue:p.value,"onUpdate:modelValue":e[5]||(e[5]=l=>p.value=l),title:"发布新版本(灰度)",width:"520px","destroy-on-close":""},{footer:o(()=>[t(V,{onClick:e[4]||(e[4]=l=>p.value=!1)},{default:o(()=>[...e[7]||(e[7]=[c("取消",-1)])]),_:1}),t(V,{type:"primary",loading:y.value,onClick:E},{default:o(()=>[...e[8]||(e[8]=[c("发布",-1)])]),_:1},8,["loading"])]),default:o(()=>[t(D,{"label-position":"top"},{default:o(()=>[t(g,{label:"灰度放量比例:{{ canaryPercent }}%"},{default:o(()=>[t(z,{modelValue:f.value,"onUpdate:modelValue":e[1]||(e[1]=l=>f.value=l),min:0,max:100,step:5,"show-input":""},null,8,["modelValue"])]),_:1}),t(g,{label:"规则内容(JSON"},{default:o(()=>[t(N,{modelValue:m.value,"onUpdate:modelValue":e[2]||(e[2]=l=>m.value=l),type:"textarea",rows:6,placeholder:"可选,留空沿用上一版本"},null,8,["modelValue"])]),_:1}),t(g,{label:"备注"},{default:o(()=>[t(N,{modelValue:v.value,"onUpdate:modelValue":e[3]||(e[3]=l=>v.value=l),placeholder:"如:修复 VPN 重置流程"},null,8,["modelValue"])]),_:1})]),_:1})]),_:1},8,["modelValue"])])}}}),te=Q(H,[["__scopeId","data-v-bcc0e9e8"]]);export{te as default};