PageSourceSearch

https://codecaptain.cc/js/8663.4822d772.js

js codecaptain.cc collected 2026-09-24 14:37:49 UTC 56,805 bytes, 1 lines download raw bytes

1"use strict";(self["webpackChunkhicc_vue"]=self["webpackChunkhicc_vue"]||[]).push([[8663],{18663:function(t,e,r){r.r(e),r.d(e,{default:function(){return de}});var a=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("b-card",{staticClass:"p-1",attrs:{"no-body":""}},[r("b-tabs",{staticClass:"m-1",attrs:{pills:""},model:{value:t.activeTab,callback:function(e){t.activeTab=e},expression:"activeTab"}},[r("b-tab",{attrs:{title:"服务器管理",active:""}},[0===t.activeTab?r("agent-server-tab"):t._e()],1),r("b-tab",{attrs:{title:"文件仓库",lazy:""}},[r("agent-file-tab")],1),r("b-tab",{attrs:{title:"任务管理",lazy:""}},[r("agent-task-tab")],1)],1)],1)},s=[],n=r(96243),o=r(41544),i=r(63405),l=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("b-row",{staticClass:"mb-1"},[r("b-col",{attrs:{md:"6"}},[r("b-input-group",[r("b-form-input",{attrs:{placeholder:"搜索名称或 IP"},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.reload.apply(null,arguments)}},model:{value:t.keyword,callback:function(e){t.keyword=e},expression:"keyword"}}),r("b-input-group-append",[r("b-button",{attrs:{variant:"outline-primary"},on:{click:t.reload}},[t._v("搜索")])],1)],1)],1),r("b-col",{staticClass:"text-right",attrs:{md:"6"}},[r("b-button",{attrs:{variant:"primary"},on:{click:function(e){return t.openEdit(null)}}},[t._v("+ 新增服务器")]),r("b-button",{staticClass:"ml-1",attrs:{variant:"outline-secondary"},on:{click:function(e){t.settingVisible=!0}}},[t._v("⚙ 全局设置")])],1)],1),r("b-table",{attrs:{items:t.items,fields:t.fields,responsive:"","show-empty":"","empty-text":"暂无服务器"},scopedSlots:t._u([{key:"cell(host)",fn:function(e){return[t._v(t._s(e.item.host)+":"+t._s(e.item.ssh_port))]}},{key:"cell(use_global_cred)",fn:function(e){return[r("b-badge",{attrs:{variant:1===e.item.use_global_cred?"light-info":"light-secondary"}},[t._v(" "+t._s(1===e.item.use_global_cred?"全局":"本机")+" ")])]}},{key:"cell(allow_auto_restart)",fn:function(t){return[r("feather-icon",{class:1===t.item.allow_auto_restart?"text-success":"text-muted",attrs:{icon:1===t.item.allow_auto_restart?"CheckCircleIcon":"MinusCircleIcon"}})]}},{key:"cell(status)",fn:function(e){return[r("b-badge",{attrs:{variant:1===e.item.status?"light-success":"light-danger"}},[t._v(" "+t._s(1===e.item.status?"启用":"停用")+" ")])]}},{key:"cell(actions)",fn:function(e){return[r("b-button",{attrs:{size:"sm",variant:"flat-primary"},on:{click:function(r){return t.openEdit(e.item)}}},[t._v("编辑")]),r("b-button",{attrs:{size:"sm",variant:"flat-danger"},on:{click:function(r){return t.onDelete(e.item)}}},[t._v("删除")])]}}])}),t.total>t.size?r("b-pagination",{attrs:{"total-rows":t.total,"per-page":t.size,align:"right"},on:{input:t.reload},model:{value:t.current,callback:function(e){t.current=e},expression:"current"}}):t._e(),r("server-edit-dialog",{attrs:{visible:t.editVisible,"edit-data":t.editData,apps:t.apps},on:{"update:visible":function(e){t.editVisible=e},saved:t.reload}}),r("global-setting-dialog",{attrs:{visible:t.settingVisible},on:{"update:visible":function(e){t.settingVisible=e},saved:t.reload}})],1)},u=[],c=r(28028),d=r(99542),p=r(89576),f=r(16167),m=r(11442),b=r(75532),h=r(73125),v=r(90226),g=r(93210),_=r(84158);const y=t=>_.A.get("upgrade/server/page",{params:t}),k=(t,e)=>t?_.A.put(`upgrade/server/${t}`,e):_.A.post("upgrade/server",e),w=t=>_.A.delete(`upgrade/server/${t}`),O=t=>_.A.post("upgrade/server/test_ssh",t),x=t=>_.A.get("upgrade/file/page",{params:t}),$=(t,e)=>_.A.post("upgrade/file/upload",t,{headers:{"Content-Type":"multipart/form-data"},onUploadProgress:e}),P=t=>_.A.delete(`upgrade/file/${t}`),S=()=>_.A.get("upgrade/setting"),D=t=>_.A.put("upgrade/setting",t),C=t=>_.A.get("upgrade/task/page",{params:t}),j=t=>_.A.post("upgrade/task",t),B=t=>_.A.get(`upgrade/task/${t}/detail`),I=t=>_.A.post(`upgrade/task/${t}/retry_failed`),T=(t,e)=>_.A.post(`upgrade/task/${t}/rollback`,{server_ids:e}),A=()=>_.A.post("listApps",{keyword:""});var E=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("b-modal",{attrs:{visible:t.visible,title:t.editData?"编辑服务器":"新增服务器",size:"lg","no-close-on-backdrop":"","ok-title":"保存","cancel-title":"取消"},on:{ok:function(e){return e.preventDefault(),t.onSave.apply(null,arguments)},hidden:function(e){return t.$emit("update:visible",!1)},shown:t.reset}},[r("b-form",[r("b-row",[r("b-col",{attrs:{md:"6"}},[r("b-form-group",{attrs:{label:"服务器名称 *"}},[r("b-form-input",{model:{value:t.form.server_name,callback:function(e){t.$set(t.form,"server_name",e)},expression:"form.server_name"}})],1)],1),r("b-col",{attrs:{md:"4"}},[r("b-form-group",{attrs:{label:"主机 IP/域名 *"}},[r("b-form-input",{model:{value:t.form.host,callback:function(e){t.$set(t.form,"host",e)},expression:"form.host"}})],1)],1),r("b-col",{attrs:{md:"2"}},[r("b-form-group",{attrs:{label:"端口"}},[r("b-form-input",{attrs:{type:"number"},model:{value:t.form.ssh_port,callback:function(e){t.$set(t.form,"ssh_port",t._n(e))},expression:"form.ssh_port"}})],1)],1)],1),r("b-form-group",{attrs:{label:"凭证模式"}},[r("b-form-radio-group",{attrs:{options:t.credOptions},model:{value:t.form.use_global_cred,callback:function(e){t.$set(t.form,"use_global_cred",e)},expression:"form.use_global_cred"}})],1),0===t.form.use_global_cred?r("b-row",[r("b-col",{attrs:{md:"6"}},[r("b-form-group",{attrs:{label:"SSH 用户"}},[r("b-form-input",{model:{value:t.form.ssh_user,callback:function(e){t.$set(t.form,"ssh_user",e)},expression:"form.ssh_user"}})],1)],1),r("b-col",{attrs:{md:"6"}},[r("b-form-group",{attrs:{label:"SSH 密码"}},[r("b-form-input",{attrs:{type:"password",placeholder:t.editData&&t.editData.has_password?"留空表示不修改":""},model:{value:t.form.ssh_password,callback:function(e){t.$set(t.form,"ssh_password",e)},expression:"form.ssh_password"}})],1)],1)],1):t._e(),r("b-row",[r("b-col",{attrs:{md:"3"}},[r("b-form-group",{attrs:{label:"备份保留数"}},[r("b-form-input",{attrs:{type:"number",min:"0"},model:{value:t.form.backup_keep_count,callback:function(e){t.$set(t.form,"backup_keep_count",t._n(e))},expression:"form.backup_keep_count"}}
1)],1)],1),r("b-col",{attrs:{md:"3"}},[r("b-form-group",{attrs:{label:"状态"}},[r("b-form-checkbox",{attrs:{value:1,"unchecked-value":0,switch:""},model:{value:t.form.status,callback:function(e){t.$set(t.form,"status",e)},expression:"form.status"}},[t._v(" "+t._s(1===t.form.status?"启用":"停用")+" ")])],1)],1),r("b-col",{attrs:{md:"6"}},[r("b-form-group",{attrs:{label:"关联应用"}},[r("v-select",{attrs:{options:t.apps,reduce:function(t){return t.id},label:"display_name",multiple:"",dir:t.$store.state.appConfig.isRTL?"rtl":"ltr",placeholder:"可输入筛选,支持多选"},model:{value:t.form.app_ids,callback:function(e){t.$set(t.form,"app_ids",e)},expression:"form.app_ids"}})],1)],1)],1),r("b-row",[r("b-col",{attrs:{md:"4"}},[r("b-form-group",{attrs:{label:"允许自动重启"}},[r("b-form-checkbox",{attrs:{switch:""},model:{value:t.autoRestart,callback:function(e){t.autoRestart=e},expression:"autoRestart"}},[t._v(" "+t._s(t.autoRestart?"是":"否")+" ")])],1)],1),t.autoRestart?r("b-col",{attrs:{md:"8"}},[r("b-form-group",{attrs:{label:"重启命令"}},[r("b-form-input",{attrs:{placeholder:"如 systemctl restart agent"},model:{value:t.form.restart_command,callback:function(e){t.$set(t.form,"restart_command",e)},expression:"form.restart_command"}})],1)],1):t._e()],1),r("b-form-group",{attrs:{label:"备注"}},[r("b-form-input",{model:{value:t.form.memo,callback:function(e){t.$set(t.form,"memo",e)},expression:"form.memo"}})],1),r("div",{staticClass:"d-flex align-items-center"},[r("b-button",{attrs:{variant:"outline-primary",size:"sm",disabled:t.testing},on:{click:t.onTest}},[t._v(" "+t._s(t.testing?"测试中…":"测试连接")+" ")]),t.testResult?r("span",{staticClass:"ml-1",class:t.testResult.ok?"text-success":"text-danger"},[t._v(" "+t._s(t.testResult.ok?"连接成功("+t.testResult.latency_ms+"ms)":"失败:"+t.testResult.stderr)+" ")]):t._e()],1)],1)],1)},z=[],Y=r(25361),R=r(66704),F=r(77163),L=r(57252),G=r(75691),V=r(6804),N=r.n(V),q={name:"ServerEditDialog",components:{BModal:Y.i,BForm:R.Z,BRow:c.L,BCol:d.T,BFormGroup:F.a,BFormInput:m.b,BFormRadioGroup:L.j,BFormCheckbox:G.G,BButton:b.P,vSelect:N()},props:{visible:{type:Boolean,default:!1},editData:{type:Object,default:null},apps:{type:Array,default:()=>[]}},data(){return{testing:!1,testResult:null,credOptions:[{text:"使用全局凭证",value:1},{text:"使用本机凭证",value:0}],form:this.blank()}},computed:{autoRestart:{get(){return 1===this.form.allow_auto_restart},set(t){this.form.allow_auto_restart=t?1:0}}},methods:{blank(){return{server_name:"",host:"",ssh_port:22,use_global_cred:1,ssh_user:"",ssh_password:"",allow_auto_restart:0,restart_command:"",backup_keep_count:3,status:1,memo:"",app_ids:[]}},toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},reset(){if(this.testResult=null,this.editData){const t=this.editData;this.form={server_name:t.server_name||"",host:t.host||"",ssh_port:t.ssh_port||22,use_global_cred:null!=t.use_global_cred?t.use_global_cred:1,ssh_user:t.ssh_user||"",ssh_password:"",allow_auto_restart:t.allow_auto_restart||0,restart_command:t.restart_command||"",backup_keep_count:null!=t.backup_keep_count?t.backup_keep_count:3,status:null!=t.status?t.status:1,memo:t.memo||"",app_ids:t.app_ids?String(t.app_ids).split(","):[]}}else this.form=this.blank()},buildBody(){const t={...this.form};return t.ssh_password||delete t.ssh_password,t},onTest(){this.testing=!0,this.testResult=null;const t={...this.buildBody(),id:this.editData?this.editData.id:null};O(t).then(t=>{this.testing=!1,200===t.data.code?this.testResult=t.data.data:this.toast(t.data.msg,"错误","danger")}).catch(()=>{this.testing=!1,this.toast("测试连接异常","错误","danger")})},onSave(){if(!this.form.server_name||!this.form.host)return void this.toast("服务器名称与主机为必填","错误","danger");const t=this.editData?this.editData.id:null;k(t,this.buildBody()).then(t=>{const{code:e,msg:r,data:a}=t.data;200===e?(this.toast("保存成功","提示","success"),this.$emit("saved"),this.$emit("update:visible",!1)):409===e?this.toast(`该 IP 已被服务器「${a&&a.conflict_with}」占用`,"提示","warning"):this.toast(r,"错误","danger")})}}},U=q,H=r(81656),K=(0,H.A)(U,E,z,!1,null,null,null),J=K.exports,M=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("b-modal",{attrs:{visible:t.visible,title:"全局设置","ok-title":"保存","cancel-title":"取消"},on:{ok:function(e){return e.preventDefault(),t.onSave.apply(null,arguments)},hidden:function(e){return t.$emit("update:visible",!1)},shown:t.load}},[r("b-form",[r("b-form-group",{attrs:{label:"默认 SSH 用户"}},[r("b-form-input",{attrs:{placeholder:"如 agent"},model:{value:t.form.default_ssh_user,callback:function(e){t.$set(t.form,"default_ssh_user",e)},expression:"form.default_ssh_user"}})],1),r("b-form-group",{attrs:{label:"默认 SSH 密码"}},[r("b-form-input",{attrs:{type:"password",placeholder:t.hasPassword?"留空表示不修改":"未设置"},model:{value:t.form.default_ssh_password,callback:function(e){t.$set(t.form,"default_ssh_password",e)},expression:"form.default_ssh_password"}})],1),r("b-form-group",{attrs:{label:"默认目标路径",state:t.pathState,"invali
1d-feedback":"必须以 / 开头、不以 / 结尾、不含 .. 或 //"}},[r("b-form-input",{attrs:{state:t.pathState},model:{value:t.form.default_target_path,callback:function(e){t.$set(t.form,"default_target_path",e)},expression:"form.default_target_path"}})],1),r("b-form-group",{attrs:{label:"默认并发数"}},[r("b-form-input",{attrs:{type:"number",min:"1"},model:{value:t.form.default_concurrency,callback:function(e){t.$set(t.form,"default_concurrency",t._n(e))},expression:"form.default_concurrency"}})],1),r("b-form-group",{attrs:{label:"默认备份保留数"}},[r("b-form-input",{attrs:{type:"number",min:"0"},model:{value:t.form.default_backup_keep_count,callback:function(e){t.$set(t.form,"default_backup_keep_count",t._n(e))},expression:"form.default_backup_keep_count"}})],1)],1)],1)},Z=[],X=(r(74423),{name:"GlobalSettingDialog",components:{BModal:Y.i,BForm:R.Z,BFormGroup:F.a,BFormInput:m.b},props:{visible:{type:Boolean,default:!1}},data(){return{hasPassword:!1,form:{default_ssh_user:"",default_ssh_password:"",default_target_path:"/home/agent",default_concurrency:5,default_backup_keep_count:3}}},computed:{pathState(){const t=this.form.default_target_path;return!!t&&(/^\/[A-Za-z0-9._\-/]+$/.test(t)&&!t.endsWith("/")&&!t.includes("..")&&!t.includes("//"))}},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},load(){S().then(t=>{if(200===t.data.code){const e=t.data.data.setting;this.hasPassword=!!e.has_password,this.form.default_ssh_user=e.default_ssh_user||"",this.form.default_ssh_password="",this.form.default_target_path=e.default_target_path||"/home/agent",this.form.default_concurrency=e.default_concurrency||5,this.form.default_backup_keep_count=e.default_backup_keep_count||3}})},onSave(){if(!this.pathState)return void this.toast("目标路径格式不合法","错误","danger");const t={...this.form};t.default_ssh_password||delete t.default_ssh_password,D(t).then(t=>{200===t.data.code?(this.toast("保存成功","提示","success"),this.$emit("saved"),this.$emit("update:visible",!1)):this.toast(t.data.msg,"错误","danger")})}}}),Q=X,W=(0,H.A)(Q,M,Z,!1,null,null,null),tt=W.exports,et={name:"AgentServerTab",components:{BRow:c.L,BCol:d.T,BInputGroup:p.Y,BInputGroupAppend:f.G,BFormInput:m.b,BButton:b.P,BTable:h.B,BBadge:v.M,BPagination:g.H,ServerEditDialog:J,GlobalSettingDialog:tt},data(){return{keyword:"",items:[],total:0,current:1,size:20,apps:[],editVisible:!1,settingVisible:!1,editData:null,fields:[{key:"server_name",label:"名称"},{key:"host",label:"IP:端口"},{key:"app_names",label:"关联应用"},{key:"use_global_cred",label:"凭证"},{key:"allow_auto_restart",label:"自动重启"},{key:"status",label:"状态"},{key:"actions",label:"操作"}]}},created(){this.loadApps(),this.reload()},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},loadApps(){A().then(t=>{if(200===t.data.code){const e=t.data.data;this.apps=Array.isArray(e)?e:e.records||e.list||[]}}).catch(()=>{})},reload(){y({keyword:this.keyword,current:this.current,size:this.size}).then(t=>{200===t.data.code?(this.items=t.data.data.records,this.total=t.data.data.total):this.toast(t.data.msg,"错误","danger")})},openEdit(t){this.editData=t,this.editVisible=!0},onDelete(t){this.$bvModal.msgBoxConfirm(`确认删除服务器「${t.server_name}」?`,{title:"确认",okVariant:"danger",okTitle:"删除",cancelTitle:"取消"}).then(e=>{e&&w(t.id).then(t=>{200===t.data.code?(this.toast("已删除","提示","success"),this.reload()):this.toast(t.data.msg,"错误","danger")})})}}},rt=et,at=(0,H.A)(rt,l,u,!1,null,null,null),st=at.exports,nt=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("b-row",{staticClass:"mb-1"},[r("b-col",{attrs:{md:"6"}},[r("b-input-group",[r("b-form-input",{attrs:{placeholder:"搜索文件名"},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.reload.apply(null,arguments)}},model:{value:t.keyword,callback:function(e){t.keyword=e},expression:"keyword"}}),r("b-input-group-append",[r("b-button",{attrs:{variant:"outline-primary"},on:{click:t.reload}},[t._v(" 搜索 ")])],1)],1)],1),r("b-col",{staticClass:"text-right",attrs:{md:"6"}},[r("b-button",{attrs:{variant:"primary"},on:{click:t.openUpload}},[t._v(" + 上传文件 ")])],1)],1),r("b-table",{attrs:{items:t.items,fields:t.fields,responsive:"","show-empty":"","empty-text":"暂无文件"},scopedSlots:t._u([{key:"cell(file_md5)",fn:function(e){return[r("span",{attrs:{id:"md5-"+e.item.id}},[t._v(t._s((e.item.file_md5||"").slice(0,12))+"…")]),r("b-tooltip",{attrs:{target:"md5-"+e.item.id}},[t._v(" "+t._s(e.item.file_md5)+" ")])]}},{key:"cell(file_size)",fn:function(e){return[t._v(" "+t._s(t.humanSize(e.item.file_size))+" ")]}},{key:"cell(actions)",fn:function(e){return[r("b-button",{attrs:{size:"sm",variant:"flat-danger"},on:{click:function(r){return t.onDelete(e.item)}}},[t._v(" 删除 ")])]}}])}),t.total>t.size?r("b-pagination",{attrs:{"total-rows":t.total,"per-page":t.size,align:"right"},on:{input:t.reload},model:{value:t.current,callback:function(e){t.current=e},expression:"current"}}):t._e(),r("b-modal",{attrs:{visible:t.uploadVisible,title:"上传文件","ok-title":t.uploading?"上传中…":"上传","cancel-title":"取消","ok-disabled":!t.file||t.uploading,"no-close-on-backdrop":t.uploading},on:{ok:function(e){return e.preventDefault(),t.onUpload.apply(null,arguments)},hidden:t.onHidden}},[r("b-form-group",{attrs:{label:"文件 *"}},[r("b-form-file",{attrs:{placeholder:"选择文件","browse-text":"浏览","drop-placeholder":"拖拽到此"},model:{value:t.file,callback:function(e){t.file=e},expression:"file"}})],1),r("b-form-group",{attrs:{label:"版本标签"}},[r("b-form-input",{attrs:{placeholder:"可选,如 1.0"},model:{value:t.versionLabel,callback:function(e){t.versionLabel=e},expression:"versionLabel"}})],1),r("b-form-group",{attrs:{label:"备注"}},[r("b-form-input",{attrs:{placeholder:"可选"}
1,model:{value:t.memo,callback:function(e){t.memo=e},expression:"memo"}})],1),t.uploading?r("b-progress",{staticClass:"mt-1",attrs:{value:t.progress,max:100,"show-progress":"",animated:""}}):t._e()],1)],1)},ot=[],it=r(8986),lt=r(95154),ut=r(32274),ct={name:"AgentFileTab",components:{BRow:c.L,BCol:d.T,BInputGroup:p.Y,BInputGroupAppend:f.G,BFormInput:m.b,BFormFile:it.H,BButton:b.P,BTable:h.B,BTooltip:lt.u,BPagination:g.H,BModal:Y.i,BFormGroup:F.a,BProgress:ut.i},data(){return{keyword:"",file:null,versionLabel:"",memo:"",uploadVisible:!1,uploading:!1,progress:0,items:[],total:0,current:1,size:20,fields:[{key:"file_name",label:"文件名"},{key:"version_label",label:"版本"},{key:"file_size",label:"大小"},{key:"file_md5",label:"MD5"},{key:"uploader_name",label:"上传者"},{key:"upload_time",label:"上传时间"},{key:"actions",label:"操作"}]}},created(){this.reload()},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},humanSize(t){if(null==t)return"";const e=["B","KB","MB","GB"];let r=0,a=t;while(a>=1024&&r<e.length-1)a/=1024,r+=1;return`${a.toFixed(0===r?0:1)}${e[r]}`},reload(){x({keyword:this.keyword,current:this.current,size:this.size}).then(t=>{200===t.data.code?(this.items=t.data.data.records,this.total=t.data.data.total):this.toast(t.data.msg,"错误","danger")})},openUpload(){this.file=null,this.versionLabel="",this.memo="",this.progress=0,this.uploadVisible=!0},onHidden(){this.uploading||(this.uploadVisible=!1)},onUpload(){const t=new FormData;t.append("file",this.file),this.versionLabel&&t.append("version_label",this.versionLabel),this.memo&&t.append("memo",this.memo),this.uploading=!0,this.progress=0,$(t,t=>{t.total&&(this.progress=Math.round(100*t.loaded/t.total))}).then(t=>{this.uploading=!1,200===t.data.code?(this.toast("上传成功","提示","success"),this.uploadVisible=!1,this.reload()):this.toast(t.data.msg,"错误","danger")}).catch(()=>{this.uploading=!1,this.toast("上传失败","错误","danger")})},onDelete(t){this.$bvModal.msgBoxConfirm(`确认删除文件「${t.file_name}」?`,{title:"确认",okVariant:"danger",okTitle:"删除",cancelTitle:"取消"}).then(e=>{e&&P(t.id).then(t=>{200===t.data.code?(this.toast("已删除","提示","success"),this.reload()):this.toast(t.data.msg,"提示","warning")})})}}},dt=ct,pt=(0,H.A)(dt,nt,ot,!1,null,null,null),ft=pt.exports,mt=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("div",[r("b-row",{staticClass:"mb-1"},[r("b-col",{attrs:{md:"6"}},[r("b-input-group",[r("b-form-input",{attrs:{placeholder:"搜索任务名"},on:{keyup:function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.reload.apply(null,arguments)}},model:{value:t.keyword,callback:function(e){t.keyword=e},expression:"keyword"}}),r("b-input-group-append",[r("b-button",{attrs:{variant:"outline-primary"},on:{click:t.reload}},[t._v("搜索")])],1)],1)],1),r("b-col",{staticClass:"text-right",attrs:{md:"6"}},[r("b-button",{attrs:{variant:"primary"},on:{click:function(e){t.wizardVisible=!0}}},[t._v("+ 新建任务")])],1)],1),r("b-table",{attrs:{items:t.items,fields:t.fields,responsive:"","show-empty":"","empty-text":"暂无任务"},scopedSlots:t._u([{key:"cell(status)",fn:function(e){return[r("b-badge",{attrs:{variant:t.statusVariant(e.item.status)}},[t._v(t._s(t.statusText(e.item.status)))])]}},{key:"cell(progress)",fn:function(e){return[t._v(" "+t._s(e.item.success_count||0)+" / "+t._s(e.item.fail_count||0)+" "),r("small",{staticClass:"text-muted"},[t._v("(共 "+t._s(e.item.total_count||0)+")")])]}},{key:"cell(actions)",fn:function(e){return[r("b-button",{attrs:{size:"sm",variant:"flat-primary"},on:{click:function(r){return t.openDetail(e.item)}}},[t._v("详情")]),t.canRetry(e.item.status)?r("b-button",{attrs:{size:"sm",variant:"flat-warning"},on:{click:function(r){return t.onRetry(e.item)}}},[t._v("重试")]):t._e()]}}])}),t.total>t.size?r("b-pagination",{attrs:{"total-rows":t.total,"per-page":t.size,align:"right"},on:{input:t.reload},model:{value:t.current,callback:function(e){t.current=e},expression:"current"}}):t._e(),r("task-wizard",{attrs:{visible:t.wizardVisible},on:{"update:visible":function(e){t.wizardVisible=e},created:t.reload}}),r("task-detail",{attrs:{visible:t.detailVisible,"task-id":t.detailId},on:{"update:visible":function(e){t.detailVisible=e},changed:t.reload}})],1)},bt=[],ht=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("b-modal",{attrs:{visible:t.visible,title:"新建任务",size:"xl"},on:{shown:t.onShown,hidden:function(e){return t.$emit("update:visible",!1)}},scopedSlots:t._u([{key:"modal-footer",fn:function(){return[t.step>1?r("b-button",{attrs:{variant:"outline-secondary"},on:{click:function(e){t.step-=1}}},[t._v(" 上一步 ")]):t._e(),t.step<3?r("b-button",{attrs:{variant:"primary",disabled:!t.canNext},on:{click:function(e){t.step+=1}}},[t._v(" 下一步 ")]):t._e(),3===t.step?r("b-button",{attrs:{variant:"success",disabled:t.submitting},on:{click:t.submit}},[t._v(" "+t._s(t.submitting?"提交中…":"创建任务")+" ")]):t._e()]},proxy:!0}])},[1===t.step?r("div",[r("b-alert",{staticClass:"p-1",attrs:{variant:"info",show:""}},[t._v(" 已选 "+t._s(t.selectedServerIds.length)+" 台,其中 "+t._s(t.autoRestartCount)+" 台启用了自动重启 ")]),r("b-form-input",{staticClass:"mb-1",attrs:{placeholder:"筛选名称/IP"}
1,model:{value:t.serverKeyword,callback:function(e){t.serverKeyword=e},expression:"serverKeyword"}}),r("b-table",{attrs:{items:t.filteredServers,fields:t.serverFields,responsive:"",small:"","sticky-header":"300px"},scopedSlots:t._u([{key:"head(sel)",fn:function(){return[r("b-form-checkbox",{attrs:{checked:t.allSelected,indeterminate:t.someSelected},on:{change:t.toggleSelectAll}})]},proxy:!0},{key:"cell(sel)",fn:function(e){return[r("b-form-checkbox",{attrs:{checked:t.selectedServerIds.includes(e.item.id)},on:{change:function(r){return t.toggleServer(e.item.id)}}})]}},{key:"cell(host)",fn:function(e){return[t._v(" "+t._s(e.item.host)+":"+t._s(e.item.ssh_port)+" ")]}},{key:"cell(allow_auto_restart)",fn:function(t){return[r("feather-icon",{class:1===t.item.allow_auto_restart?"text-success":"text-muted",attrs:{icon:1===t.item.allow_auto_restart?"CheckCircleIcon":"MinusCircleIcon"}})]}}],null,!1,3172425087)})],1):2===t.step?r("div",[r("b-alert",{staticClass:"p-1",attrs:{variant:"info",show:""}},[t._v(" 当前全局路径前缀:"),r("b",[t._v(t._s(t.defaultTargetPath))]),t._v("(在「⚙ 全局设置」中修改) ")]),r("b-table-simple",{attrs:{small:"",responsive:""}},[r("b-thead",[r("b-tr",[r("b-th",[t._v("文件")]),r("b-th",[t._v("目标路径")]),r("b-th",{staticStyle:{width:"120px"}},[t._v(" 权限(mode) ")]),r("b-th",{staticStyle:{width:"60px"}})],1)],1),r("b-tbody",t._l(t.fileItems,function(e,a){return r("b-tr",{key:a},[r("b-td",[r("b-form-select",{attrs:{options:t.fileOptions},on:{change:function(r){return t.onFileChange(e)}},model:{value:e.file_id,callback:function(r){t.$set(e,"file_id",r)},expression:"it.file_id"}})],1),r("b-td",[r("b-form-input",{model:{value:e.target_path,callback:function(r){t.$set(e,"target_path",r)},expression:"it.target_path"}})],1),r("b-td",[r("b-form-input",{model:{value:e.file_mode,callback:function(r){t.$set(e,"file_mode",r)},expression:"it.file_mode"}})],1),r("b-td",[r("b-button",{attrs:{size:"sm",variant:"flat-danger"},on:{click:function(e){return t.fileItems.splice(a,1)}}},[t._v(" × ")])],1)],1)}),1)],1),r("b-button",{attrs:{size:"sm",variant:"outline-primary"},on:{click:t.addFileItem}},[t._v(" + 添加文件项 ")])],1):r("div",[r("b-form-group",{attrs:{label:"任务名称 *"}},[r("b-form-input",{model:{value:t.form.task_name,callback:function(e){t.$set(t.form,"task_name",e)},expression:"form.task_name"}})],1),r("b-form-group",{attrs:{label:"并发数"}},[r("b-form-input",{attrs:{type:"number",min:"1"},model:{value:t.form.concurrency,callback:function(e){t.$set(t.form,"concurrency",t._n(e))},expression:"form.concurrency"}})],1),r("b-form-group",{attrs:{label:"备注"}},[r("b-form-input",{model:{value:t.form.memo,callback:function(e){t.$set(t.form,"memo",e)},expression:"form.memo"}})],1),r("b-alert",{staticClass:"p-1",attrs:{variant:"secondary",show:""}},[t._v(" 将对 "),r("b",[t._v(t._s(t.selectedServerIds.length))]),t._v(" 台服务器推送 "),r("b",[t._v(t._s(t.fileItems.length))]),t._v(" 个文件项。 ")])],1)])},vt=[],gt=(r(44114),r(18111),r(81148),r(22489),r(20116),r(7588),r(61701),r(17642),r(58004),r(33853),r(45876),r(32475),r(15024),r(31698),r(53962)),_t=r(26282),yt=r(85471),kt=r(49800),wt=r(91671),Ot=r(1340),xt=r(64211),$t=r(54384),Pt=r(81074),St=r(48917),Dt=r(3317),Ct=r(54522);function jt(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function Bt(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?jt(Object(r),!0).forEach(function(e){It(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):jt(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function It(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Tt=(0,Ot.sC)((0,wt.di)(Bt(Bt(Bt({},Pt.x),Dt.x),Ct.x)),kt.gT),At=yt["default"].extend({name:kt.gT,mixins:[xt.C,$t.S,Pt.l,St.$,Ct.B,Dt.H],props:Tt,computed:{isTableSimple:function(){return!0}}}),Et=r(26800),zt=r(64606),Yt=r(66374),Rt=r(20596),Ft=r(83936),Lt={name:"TaskWizard",components:{BModal:Y.i,BAlert:gt.D,BFormInput:m.b,BTable:h.B,BFormCheckbox:G.G,BFormSelect:_t.J,BButton:b.P,BFormGroup:F.a,BTableSimple:At,BThead:Et.j,BTbody:zt.n,BTr:Yt.N,BTh:Rt.N,BTd:Ft.N},props:{visible:{type:Boolean,default:!1}},data(){return{step:1,submitting:!1,servers:[],serverKeyword:"",selectedServerIds:[],files:[],fileItems:[],defaultTargetPath:"/home/agent",form:{task_name:"",concurrency:5,memo:""},serverFields:[{key:"sel",label:""},{key:"server_name",label:"名称"},{key:"host",label:"IP:端口"},{key:"allow_auto_restart",label:"自动重启"}]}},computed:{filteredServers(){const t=this.serverKeyword.trim();return t?this.servers.filter(e=>(e.server_name||"").includes(t)||(e.host||"").includes(t)):this.servers},autoRestartCount(){return this.servers.filter(t=>this.selectedServerIds.includes(t.id)&&1===t.allow_auto_restart).length},allSelected(){return this.filteredServers.length>0&&this.filteredServers.every(t=>this.selectedServerIds.includes(t.id))},someSelected(){const t=this.filteredServers.filter(t=>this.selectedServerIds.includes(t.id)).length;return t>0&&t<this.filteredServers.length},fileOptions(){return this.files.map(t=>({value:t.id,text:`${t.file_name}${t.version_label?` (${t.version_label})`:""}`}))},canNext(){return 1===this.step?this.selectedServerIds.length>0:2!==this.step||this.fileItems.length>0&&this.fileItems.every(t=>t.file_id&&t.target_path&&t.file_mode)}},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},onShown(){this.step=1,this.selectedServerIds=[],this.fileItems=[],this.form={task_name:"",concurrency:5,memo:""},y({current:1,size:1e3}).then(t=>{200===t.data.code&&(this.servers=t.data.data.records.filter(t=>1===t.status))}),x({current:1,size:1e3}).then(t=>{200===t.data.code&&(this.files=t.data.data.records)}),S().then(t=>{if(200===t.data.code){const e=t.data.data.setting;this.defaultTargetPath=e.default_target_path||"/home/agent",this.form.concurrency=e.default_concurrency||5}})},toggleServer(t){const e=this.selectedServerIds.indexOf(t);e>=0?this.selectedServerIds.splice(e,1):this.selectedServerIds.push(t)},toggleSelectAll(t){const e=this.filteredServers.map(t=>
1t.id);if(t){const t=new Set(this.selectedServerIds);e.forEach(e=>t.add(e)),this.selectedServerIds=Array.from(t)}else this.selectedServerIds=this.selectedServerIds.filter(t=>!e.includes(t))},addFileItem(){this.fileItems.push({file_id:null,target_path:"",file_mode:"644"})},onFileChange(t){const e=this.files.find(e=>e.id===t.file_id);e&&!t.target_path&&(t.target_path=`${this.defaultTargetPath}/${e.file_name}`)},submit(){if(!this.form.task_name)return void this.toast("任务名称必填","错误","danger");const t={task_name:this.form.task_name,concurrency:this.form.concurrency,memo:this.form.memo,server_ids:this.selectedServerIds,file_items:this.fileItems.map(t=>({file_id:t.file_id,target_path:t.target_path,file_mode:t.file_mode}))};this.submitting=!0,j(t).then(t=>{this.submitting=!1,200===t.data.code?(this.toast("任务已创建","提示","success"),this.$emit("created"),this.$emit("update:visible",!1)):this.toast(t.data.msg,"错误","danger")}).catch(()=>{this.submitting=!1,this.toast("创建失败","错误","danger")})}}},Gt=Lt,Vt=(0,H.A)(Gt,ht,vt,!1,null,null,null),Nt=Vt.exports,qt=function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("b-modal",{attrs:{visible:t.visible,title:"任务详情",size:"xl","hide-footer":""},on:{shown:t.onShown,hidden:t.onHidden}},[t.task?r("div",[r("div",{staticClass:"d-flex justify-content-between align-items-center mb-1"},[r("h5",{staticClass:"mb-0"},[t._v(" "+t._s(t.task.task_name)+" "),r("b-badge",{attrs:{variant:"light-"+t.variant(t.task.status)}},[t._v(t._s(t.text(t.task.status)))])],1),r("div",[r("b-button",{staticClass:"mr-1",attrs:{size:"sm",variant:"outline-warning"},on:{click:t.onRetry}},[t._v("重试失败项")]),r("b-button",{attrs:{size:"sm",variant:"outline-danger"},on:{click:t.onRollback}},[t._v("回滚全部")])],1)]),r("b-progress",{staticClass:"mb-1",attrs:{max:t.total,height:"14px"}},[r("b-progress-bar",{attrs:{value:t.task.success_count||0,variant:"success"}}),r("b-progress-bar",{attrs:{value:t.task.fail_count||0,variant:"danger"}})],1),r("small",{staticClass:"text-muted"},[t._v("成功 "+t._s(t.task.success_count||0)+" · 失败 "+t._s(t.task.fail_count||0)+" · 共 "+t._s(t.total))]),r("b-table",{staticClass:"mt-1",attrs:{items:t.servers,fields:t.serverFields,responsive:"",small:""},scopedSlots:t._u([{key:"cell(toggle)",fn:function(e){return[r("feather-icon",{staticClass:"cursor-pointer",attrs:{icon:e.item._showDetail
1s?"ChevronDownIcon":"ChevronRightIcon"},on:{click:function(r){return t.$set(e.item,"_showDetails",!e.item._showDetails)}}})]}},{key:"cell(status)",fn:function(e){return[r("b-badge",{attrs:{variant:"light-"+t.variant(e.item.status)}},[t._v(t._s(t.text(e.item.status)))])]}},{key:"cell(error_message)",fn:function(e){return[r("small",{staticClass:"text-danger"},[t._v(t._s(e.item.error_message))])]}},{key:"row-details",fn:function(e){return[r("b-table",{attrs:{items:e.item.files||[],fields:t.fileFields,small:"",responsive:""},scopedSlots:t._u([{key:"cell(status)",fn:function(e){return[r("b-badge",{attrs:{variant:"light-"+t.fileVariant(e.item.status)}},[t._v(t._s(e.item.status))])]}},{key:"cell(error_message)",fn:function(e){return[r("small",{staticClass:"text-danger"},[t._v(t._s(e.item.error_message))])]}}],null,!0)})]}}],null,!1,1347414094)})],1):r("div",{staticClass:"text-center text-muted p-2"},[t._v("加载中…")])])},Ut=[],Ht=r(34826),Kt=r(82003);function Jt(t,e){const r=new Kt.K({brokerURL:`${"https:"===window.location.protocol?"wss":"ws"}://${window.location.host}/ws`,reconnectDelay:3e3});let a=null;return r.onConnect=()=>{a=r.subscribe(`/topic/upgrade/${t}`,t=>{try{e(JSON.parse(t.body))}catch(r){}})},r.activate(),()=>{try{a&&a.unsubscribe()}catch(t){}r.deactivate()}}const Mt={PENDING:"secondary",RUNNING:"primary",SUCCESS:"success",PARTIAL_FAILED:"warning",FAILED:"danger",INTERRUPTED:"dark",ROLLED_BACK:"info"},Zt={PENDING:"等待中",RUNNING:"执行中",SUCCESS:"成功",PARTIAL_FAILED:"部分失败",FAILED:"失败",INTERRUPTED:"已中断",ROLLED_BACK:"已回滚"},Xt={PENDING:"secondary",UPLOADED:"success",FAILED:"danger",SKIPPED:"warning"};var Qt={name:"TaskDetail",components:{BModal:Y.i,BBadge:v.M,BButton:b.P,BProgress:ut.i,BProgressBar:Ht.X,BTable:h.B},props:{visible:{type:Boolean,default:!1},taskId:{type:String,default:null}},data(){return{task:null,servers:[],unsub:null,serverFields:[{key:"toggle",label:""},{key:"server_name",label:"服务器"},{key:"host",label:"主机"},{key:"status",label:"状态"},{key:"error_message",label:"错误"}],fileFields:[{key:"file_name",label:"文件"},{key:"target_path",label:"目标路径"},{key:"status",label:"状态"},{key:"error_message",label:"错误"}]}},computed:{total(){return this.task&&this.task.total_count||this.servers.length||0}},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},variant(t){return Mt[t]||"secondary"},text(t){return Zt[t]||t},fileVariant(t){return Xt[t]||"secondary"},onShown(){this.load(),this.taskId&&(this.unsub=Jt(this.taskId,t=>this.applyEvent(t)))},onHidden(){this.unsub&&(this.unsub(),this.unsub=null),this.task=null,this.servers=[],this.$emit("update:visible",!1)},load(){this.taskId&&B(this.taskId).then(t=>{200===t.data.code?(this.task=t.data.data.task,this.servers=(t.data.data.servers||[]).map(t=>
1({...t,_showDetails:!1}))):this.toast(t.data.msg,"错误","danger")})},applyEvent(t){if(!t||!t.type)return;if("task"===t.type)return void(this.task&&(this.task.status=t.status,this.task.success_count=t.success,this.task.fail_count=t.fail));const e=this.servers.find(e=>e.id===t.task_server_id);if(e)if("server"===t.type)this.$set(e,"status",t.status),t.error&&this.$set(e,"error_message",t.error);else if("file"===t.type){const r=(e.files||[]).find(e=>e.id===t.task_server_file_id);r&&(this.$set(r,"status",t.status),t.error&&this.$set(r,"error_message",t.error))}},onRetry(){I(this.taskId).then(t=>{200===t.data.code?(this.toast("已触发重试","提示","success"),this.load(),this.$emit("changed")):this.toast(t.data.msg,"错误","danger")})},onRollback(){this.$bvModal.msgBoxConfirm("确认回滚该任务全部服务器到旧文件?",{title:"确认回滚",okVariant:"danger",okTitle:"回滚",cancelTitle:"取消"}).then(t=>{t&&T(this.taskId,[]).then(t=>{200===t.data.code?(this.toast("回滚完成","提示","success"),this.load(),this.$emit("changed")):this.toast(t.data.msg,"提示","warning")})})}}},Wt=Qt,te=(0,H.A)(Wt,qt,Ut,!1,null,null,null),ee=te.exports;const re={PENDING:"secondary",RUNNING:"primary",SUCCESS:"success",PARTIAL_FAILED:"warning",FAILED:"danger",INTERRUPTED:"dark",ROLLED_BACK:"info"},ae={PENDING:"等待中",RUNNING:"执行中",SUCCESS:"成功",PARTIAL_FAILED:"部分失败",FAILED:"失败",INTERRUPTED:"已中断",ROLLED_BACK:"已回滚"};var se={name:"AgentTaskTab",components:{BRow:c.L,BCol:d.T,BInputGroup:p.Y,BInputGroupAppend:f.G,BFormInput:m.b,BButton:b.P,BTable:h.B,BBadge:v.M,BPagination:g.H,TaskWizard:Nt,TaskDetail:ee},data(){return{keyword:"",items:[],total:0,current:1,size:20,wizardVisible:!1,detailVisible:!1,detailId:null,fields:[{key:"task_name",label:"任务名"},{key:"status",label:"状态"},{key:"progress",label:"成功/失败"},{key:"created_by_name",label:"创建人"},{key:"create_time",label:"创建时间"},{key:"actions",label:"操作"}]}},created(){this.reload()},methods:{toast(t,e,r){this.$bvToast.toast(t,{title:e,variant:r,solid:!0})},statusVariant(t){return`light-${re[t]||"secondary"}`},statusText(t){return ae[t]||t},canRetry(t){return["FAILED","PARTIAL_FAILED","INTERRUPTED"].includes(t)},reload(){C({keyword:this.keyword,current:this.current,size:this.size}).then(t=>{200===t.data.code?(this.items=t.data.data.records,this.total=t.data.data.total):this.toast(t.data.msg,"错误","danger")})},openDetail(t){this.detailId=t.id,this.detailVisible=!0},onRetry(t){I(t.id).then(t=>{200===t.data.code?(this.toast("已触发重试","提示","success"),this.reload()):this.toast(t.data.msg,"错误","danger")})}}},ne=se,oe=(0,H.A)(ne,mt,bt,!1,null,null,null),ie=oe.exports,le={name:"AgentManage",components:{BCard:n.v,BTabs:o.r,BTab:i.a,AgentServerTab:st,AgentFileTab:ft,AgentTaskTab:ie},data(){return{activeTab:0}}},ue=le,ce=(0,H.A)(ue,a,s,!1,null,null,null),de=ce.exports},57252:function(t,e,r){r.d(e,{j:function(){return F}});var a=r(85471),s=r(49800),n=r(1340),o=r(80072),i=r(94159),l=r(41897),u=r(60277),c=r(38199),d=r(91671),p=r(75691),f=r(42545),m=r(98606),b=r(62579),h=r(69849),v=r(81074);function g(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function _(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?g(Object(r),!0).forEach(function(e){y(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):g(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function y(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var k,w=(0,n.sC)((0,d.di)(_(_(_(_(_({},v.x),f.x),m.xk),b.x),h.x)),s.JO),O=a["default"].extend({name:s.JO,mixins:[v.l,m.Fp,f.z,b.n,h.t],inject:{bvGroup:{from:"bvRadioGroup",default:!1}},props:w,watch:{computedLocalChecked:function(t,e){(0,u.B)(t,e)||this.$emit(m.dY,t)}}}),x=r(44337),$=r(86582),P=r(48917);function S(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function D(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};
1e%2?S(Object(r),!0).forEach(function(e){C(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):S(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function C(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var j=["aria-describedby","aria-labelledby"],B=(0,c.P)("checked"),I=B.mixin,T=B.props,A=B.prop,E=B.event,z=(0,n.sC)((0,d.di)(D(D(D(D(D(D(D(D({},v.x),T),f.x),$.x),b.x),h.x),x.x),{},{ariaInvalid:(0,n.Yg)(o.iF,!1),buttonVariant:(0,n.Yg)(o.vq),buttons:(0,n.Yg)(o.Ye,!1),stacked:(0,n.Yg)(o.Ye,!1),validated:(0,n.Yg)(o.Ye,!1)})),"formRadioCheckGroups"),Y=a["default"].extend({mixins:[v.l,I,P.$,f.z,$.A,b.n,h.t,x.D],inheritAttrs:!1,props:z,data:function(){return{localChecked:this[A]}},computed:{inline:function(){return!this.stacked},groupName:function(){return this.name||this.safeId()},groupClasses:function(){var t=this.inline,e=this.size,r=this.validated,a={"was-validated":r};return this.buttons&&(a=[a,"btn-group-toggle",C({"btn-group":t,"btn-group-vertical":!t},"btn-group-".concat(e),e)]),a}},watch:(k={},C(k,A,function(t){(0,u.B)(t,this.localChecked)||(this.localChecked=t)}),C(k,"localChecked",function(t,e){(0,u.B)(t,e)||this.$emit(E,t)}),k),render:function(t){var e=this,r=this.isRadioGroup,a=(0,d.Up)(this.$attrs,j),s=r?O:p.G,n=this.formOptions.map(function(r,n){var o="BV_option_".concat(n);return t(s,{props:{disabled:r.disabled||!1,id:e.safeId(o),value:r.value},attrs:a,key:o},[t("span",{domProps:(0,l.A)(r.html,r.text)})])});return t("div",{class:[this.groupClasses,"bv-no-focus-ring"],attrs:D(D({},(0,d.cJ)(this.$attrs,j)),{},{"aria-invalid":this.computedAriaInvalid,"aria-required":this.required?"true":null,id:this.safeId(),role:r?"radiogroup":"group",tabindex:"-1"})},[this.normalizeSlot(i.Oe),n,this.normalizeSlot()])}}),R=(0,n.sC)(z,s.Rs),F=a["default"].extend({name:s.Rs,mixins:[Y],provide:function(){return{bvRadioGroup:this}},props:R,computed:{isRadioGroup:function(){return!0}}})},26282:function(t,e,r){r.d(e,{J:function(){return U}});var a=r(85471),s=r(49800),n=r(87013),o=r(80072),i=r(94159),l=r(17079),u=r(71402),c=r(41897),d=r(46710),p=r(91671),f=r(1340),m=r(42545),b=r(44337),h=r(62579),v=r(69849),g=r(81074),_=r(38199),y=(0,_.P)("value"),k=y.mixin,w=y.props,O=y.prop,x=y.event,$=r(48917),P=r(56630),S=r(86582);function D(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function C(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?D(Object(r),!0).forEach(function(e){j(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):D(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function j(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var B=(0,f.sC)((0,p.di)(C(C({},S.x),{},{labelField:(0,f.Yg)(o.vq,"label"),optionsField:(0,f.Yg)(o.vq,"options")})),"formOptions"),I=a["default"].extend({mixins:[S.A],props:B,methods:{normalizeOption:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if((0,d.Qd)(t)){var r=(0,P.J)(t,this.valueField),a=(0,P.J)(t,this.textField),s=(0,P.J)(t,this.optionsField,null);return(0,d.kZ)(s)?{value:(0,d.b0)(r)?e||a:r,text:String((0,d.b0)(a)?e:a),html:(0,P.J)(t,this.htmlField),disabled:Boolean((0,P.J)(t,this.disabledField))}:{label:String((0,P.J)(t,this.labelField)||a),options:this.normalizeOptions(s)}}return{value:e||t,text:String(t),disabled:!1}}}}),T=r(58722),A=(0,f.sC)({disabled:(0,f.Yg)(o.Ye,!1),value:(0,f.Yg)(o.Kg,void 0,!0)},s.af),E=a["default"].extend({name:s.af,functional:!0,props:A,render:function(t,e){var r=e.props,a=e.data,s=e.children,n=r.value,o=r.disabled;return t("option",(0,T.L)(a,{attrs:{disabled:o},domProps:{value:n}}),s)}});function z(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function Y(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};
1e%2?z(Object(r),!0).forEach(function(e){R(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function R(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var F=(0,f.sC)((0,p.di)(Y(Y({},S.x),{},{label:(0,f.Yg)(o.vq,void 0,!0)})),s.c4),L=a["default"].extend({name:s.c4,mixins:[$.$,S.A],props:F,render:function(t){var e=this.label,r=this.formOptions.map(function(e,r){var a=e.value,s=e.text,n=e.html,o=e.disabled;return t(E,{attrs:{value:a,disabled:o},domProps:(0,c.A)(n,s),key:"option_".concat(r)})});return t("optgroup",{attrs:{label:e}},[this.normalizeSlot(i.Oe),r,this.normalizeSlot()])}});function G(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function V(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?G(Object(r),!0).forEach(function(e){N(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):G(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function N(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var q=(0,f.sC)((0,p.di)(V(V(V(V(V(V(V({},g.x),w),m.x),b.x),h.x),v.x),{},{ariaInvalid:(0,f.Yg)(o.iF,!1),multiple:(0,f.Yg)(o.Ye,!1),selectSize:(0,f.Yg)(o.Rn,0)})),s.ml),U=a["default"].extend({name:s.ml,mixins:[g.l,k,m.z,h.n,v.t,b.D,I,$.$],props:q,data:function(){return{localValue:this[O]}},computed:{computedSelectSize:function(){return this.plain||0!==this.selectSize?this.selectSize:null},inputClass:function(){return[this.plain?"form-control":"custom-select",this.size&&this.plain?"form-control-".concat(this.size):null,this.size&&!this.plain?"custom-select-".concat(this.size):null,this.stateClass]}},watch:{value:function(t){this.localValue=t},localValue:function(){this.$emit(x,this.localValue)}},methods:{focus:function(){(0,u.Uu)(this.$refs.input)},blur:function(){(0,u.nO)(this.$refs.input)},onChange:function(t){var e=this,r=t.target,a=(0,l.HT)(r.options).filter(function(t){return t.selected}).map(function(t){return"_value"in t?t._value:t.value});this.localValue=r.multiple?a:a[0],this.$nextTick(function(){e.$emit(n.gX,e.localValue)})}},render:function(t){var e=this.name,r=this.disabled,a=this.required,s=this.computedSelectSize,n=this.localValue,o=this.formOptions.map(function(e,r){var a=e.value,s=e.label,n=e.options,o=e.disabled,i="option_".concat(r);return(0,d.cy)(n)?t(L,{props:{label:s,options:n},key:i}):t(E,{props:{value:a,disabled:o},domProps:(0,c.A)(e.html,e.text),key:i})});return t("select",{class:this.inputClass,attrs:{id:this.safeId(),name:e,form:this.form||null,multiple:this.multiple||null,size:s,disabled:r,required:a,"aria-required":a?"true":null,"aria-invalid":this.computedAriaInvalid},on:{change:this.onChange},directives:[{name:"model",value:n}],ref:"input"},[this.normalizeSlot(i.Oe),o,this.normalizeSlot()])}})},66704:function(t,e,r){r.d(e,{Z:function(){return u},x:function(){return l}});var a=r(85471),s=r(58722),n=r(49800),o=r(80072),i=r(1340),l=(0,i.sC)({id:(0,i.Yg)(o.vq),inline:(0,i.Yg)(o.Ye,!1),novalidate:(0,i.Yg)(o.Ye,!1),validated:(0,i.Yg)(o.Ye,!1)},n.PR),u=a["default"].extend({name:n.PR,functional:!0,props:l,render:function(t,e){var r=e.props,a=e.data,n=e.children;return t("form",(0,s.L)(a,{class:{"form-inline":r.inline,"was-validated":r.validated},attrs:{id:r.id,novalidate:r.novalidate}}),n)}})},537:function(t,e,r){r.d(e,{e:function(){return c},x:function(){return u}});var a=r(85471),s=r(58722),n=r(49800),o=r(80072),i=r(1340),l=r(50596),u=(0,i.sC)({append:(0,i.Yg)(o.Ye,!1),id:(0,i.Yg)(o.vq),isText:(0,i.Yg)(o.Ye,!1),tag:(0,i.Yg)(o.vq,"div")},n.am),c=a["default"].extend({name:n.am,functional:!0,props:u,render:function(t,e){var r=e.props,a=e.data,n=e.children,o=r.append;
1return t(r.tag,(0,s.L)(a,{class:{"input-group-append":o,"input-group-prepend":!o},attrs:{id:r.id}}),r.isText?[t(l.D,n)]:n)}})},16167:function(t,e,r){r.d(e,{G:function(){return f}});var a=r(85471),s=r(58722),n=r(49800),o=r(91671),i=r(1340),l=r(537);function u(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function c(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?u(Object(r),!0).forEach(function(e){d(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):u(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function d(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var p=(0,i.sC)((0,o.cJ)(l.x,["append"]),n.OX),f=a["default"].extend({name:n.OX,functional:!0,props:p,render:function(t,e){var r=e.props,a=e.data,n=e.children;return t(l.e,(0,s.L)(a,{props:c(c({},r),{},{append:!0})}),n)}})},50596:function(t,e,r){r.d(e,{D:function(){return u}});var a=r(85471),s=r(58722),n=r(49800),o=r(80072),i=r(1340),l=(0,i.sC)({tag:(0,i.Yg)(o.vq,"div")},n.z9),u=a["default"].extend({name:n.z9,functional:!0,props:l,render:function(t,e){var r=e.props,a=e.data,n=e.children;return t(r.tag,(0,s.L)(a,{staticClass:"input-group-text"}),n)}})},89576:function(t,e,r){r.d(e,{Y:function(){return w}});var a=r(85471),s=r(58722),n=r(49800),o=r(80072),i=r(94159),l=r(41897),u=r(33486),c=r(1340),d=r(16167),p=r(91671),f=r(537);function m(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function b(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?m(Object(r),!0).forEach(function(e){h(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function h(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var v=(0,c.sC)((0,p.cJ)(f.x,["append"]),n.md),g=a["default"].extend({name:n.md,functional:!0,props:v,render:function(t,e){var r=e.props,a=e.data,n=e.children;return t(f.e,(0,s.L)(a,{props:b(b({},r),{},{append:!1})}),n)}}),_=r(50596);function y(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var k=(0,c.sC)({append:(0,c.Yg)(o.vq),appendHtml:(0,c.Yg)(o.vq),id:(0,c.Yg)(o.vq),prepend:(0,c.Yg)(o.vq),prependHtml:(0,c.Yg)(o.vq),size:(0,c.Yg)(o.vq),tag:(0,c.Yg)(o.vq,"div")},n.nR),w=a["default"].extend({name:n.nR,functional:!0,props:k,render:function(t,e){var r=e.props,a=e.data,n=e.slots,o=e.scopedSlots,c=r.prepend,p=r.prependHtml,f=r.append,m=r.appendHtml,b=r.size,h=o||{},v=n(),k={},w=t(),O=(0,u.a)(i.oY,h,v);(O||c||p)&&(w=t(g,[O?(0,u.g)(i.oY,k,h,v):t(_.D,{domProps:(0,l.A)(p,c)})]));var x=t(),$=(0,u.a)(i.se,h,v);return($||f||m)&&(x=t(d.G,[$?(0,u.g)(i.se,k,h,v):t(_.D,{domProps:(0,l.A)(m,f)})])),t(r.tag,(0,s.L)(a,{staticClass:"input-group",class:y({},"input-group-".concat(b),b),attrs:{id:r.id||null,role:"group"}}),[w,(0,u.g)(i.x1,k,h,v),x])}})},95154:function(t,e,r){r.d(e,{u:function(){return x},x:function(){return O}});var a,s,n=r(85471),o=r(49800),i=r(87013),l=r(80072),u=r(48789),c=r(19673),d=r(46710),p=r(91671),f=r(1340),m=r(48917),b=r(76873);function h(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),r.push.apply(r,a)}return r}function v(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?h(Object(r),!0).forEach(function(e){g(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):h(Object(r)).forEac
1h(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function g(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var _="disabled",y=i.o8+_,k="show",w=i.o8+k,O=(0,f.sC)((a={boundary:(0,f.Yg)([u.wt,l.bD,l.vq],"scrollParent"),boundaryPadding:(0,f.Yg)(l.$$,50),container:(0,f.Yg)([u.wt,l.bD,l.vq]),customClass:(0,f.Yg)(l.vq),delay:(0,f.Yg)(l.xm,50)},g(a,_,(0,f.Yg)(l.Ye,!1)),g(a,"fallbackPlacement",(0,f.Yg)(l.vj,"flip")),g(a,"id",(0,f.Yg)(l.vq)),g(a,"noFade",(0,f.Yg)(l.Ye,!1)),g(a,"noninteractive",(0,f.Yg)(l.Ye,!1)),g(a,"offset",(0,f.Yg)(l.$$,0)),g(a,"placement",(0,f.Yg)(l.vq,"top")),g(a,k,(0,f.Yg)(l.Ye,!1)),g(a,"target",(0,f.Yg)([u.wt,u.NZ,l.KF,l.bD,l.vq],void 0,!0)),g(a,"title",(0,f.Yg)(l.vq)),g(a,"triggers",(0,f.Yg)(l.vj,"hover focus")),g(a,"variant",(0,f.Yg)(l.vq)),a),o.GT),x=n["default"].extend({name:o.GT,mixins:[m.$],inheritAttrs:!1,props:O,data:function(){return{localShow:this[k],localTitle:"",localContent:""}},computed:{templateData:function(){return v({title:this.localTitle,content:this.localContent,interactive:!this.noninteractive},(0,p.Up)(this.$props,["boundary","boundaryPadding","container","customClass","delay","fallbackPlacement","id","noFade","offset","placement","target","target","triggers","variant",_]))},templateTitleContent:function(){var t=this.title,e=this.content;return{title:t,content:e}}},watch:(s={},g(s,k,function(t,e){t!==e&&t!==this.localShow&&this.$_toolpop&&(t?this.$_toolpop.show():this.$_toolpop.forceHide())}),g(s,_,function(t){t?this.doDisable():this.doEnable()}),g(s,"localShow",function(t){this.$emit(w,t)}),g(s,"templateData",function(){var t=this;this.$nextTick(function(){t.$_toolpop&&t.$_toolpop.updateData(t.templateData)})}),g(s,"templateTitleContent",function(){this.$nextTick(this.updateContent)}),s),created:function(){this.$_toolpop=null},updated:function(){this.$nextTick(this.updateContent)},beforeDestroy:function(){this.$off(i.ac,this.doOpen),this.$off(i.uo,this.doClose),this.$off(i.KA,this.doDisable),this.$off(i.lf,this.doEnable),this.$_toolpop&&(this.$_toolpop.$destroy(),this.$_toolpop=null)},mounted:function(){var t=this;this.$nextTick(function(){var e=t.getComponent();t.updateContent();var r=(0,c.E)(t)||(0,c.E)(t.$parent),a=t.$_toolpop=new e({parent:t,_scopeId:r||void 0});a.updateData(t.templateData),a.$on(i.pu,t.onShow),a.$on(i.FY,t.onShown),a.$on(i.KC,t.onHide),a.$on(i.ms,t.onHidden),a.$on(i.mK,t.onDisabled),a.$on(i.Dt,t.onEnabled),t[_]&&t.doDisable(),t.$on(i.ac,t.doOpen),t.$on(i.uo,t.doClose),t.$on(i.KA,t.doDisable),t.$on(i.lf,t.doEnable),t.localShow&&a.show()})},methods:{getComponent:function(){return b.M},updateContent:function(){this.setTitle(this.normalizeSlot()||this.title)},setTitle:function(t){t=(0,d.z)(t)?"":t,this.localTitle!==t&&(this.localTitle=t)},setContent:function(t){t=(0,d.z)(t)?"":t,this.localContent!==t&&(this.localContent=t)},onShow:function(t){this.$emit(i.pu,t),t&&(this.localShow=!t.defaultPrevented)},onShown:function(t){this.localShow=!0,this.$emit(i.FY,t)},onHide:function(t){this.$emit(i.KC,t)},onHidden:function(t){this.$emit(i.ms,t),this.localShow=!1},onDisabled:function(t){t&&t.type===i.mK&&(this.$emit(y,!0),this.$emit(i.mK,t))},onEnabled:function(t){t&&t.type===i.Dt&&(this.$emit(y,!1),this.$emit(i.Dt,t))},doOpen:function(){!this.localShow&&this.$_toolpop&&this.$_toolpop.show()},doClose:function(){this.localShow&&this.$_toolpop&&this.$_toolpop.hide()},doDisable:function(){this.$_toolpop&&this.$_toolpop.disable()},doEnable:function(){this.$_toolpop&&this.$_toolpop.enable()}},render:function(t){return t()}})},86582:function(t,e,r){r.d(e,{A:function(){return f},x:function(){return p}});var a=r(85471),s=r(80072),n=r(56630),o=r(41897),i=r(46710),l=r(91671),u=r(1340),c=r(30855),d='Setting prop "options" to an object is deprecated. Use the array format instead.',p=(0,u.sC)({disabledField:(0,u.Yg)(s.vq,"disabled"),htmlField:(0,u.Yg)(s.vq,"html"),options:(0,u.Yg)(s.Xo,[]),textField:(0,u.Yg)(s.vq,"text"),valueField:(0,u.Yg)(s.vq,"value")},"formOptionControls"),f=a["default"].extend({props:p,computed:{formOptions:function(){return this.normalizeOptions(this.options)}},methods:{normalizeOption:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if((0,i.Qd)(t)){var r=(0,n.J)(t,this.valueField),a=(0,n.J)(t,this.textField);return{value:(0,i.b0)(r)?e||a:r,text:(0,o.K)(String((0,i.b0)(a)?e:a)),html:(0,n.J)(t,this.htmlField),disabled:Boolean((0,n.J)(t,this.disabledField))}}return{value:e||t,text:(0,o.K)(String(t)),disabled:!1}},normalizeOptions:function(t){var e=this;return(0,i.cy)(t)?t.map(function(t){return e.normalizeOption(t)}):(0,i.Qd)(t)?((0,c.R8)(d,this.$options.name),(0,l.HP)(t).map(function(r){return e.normalizeOption(t[r]||{},r)})):[]}}})},81148:function(t,e,r){var a=r(46518),s=r(69565),n=r(72652),o=r(79306),i=r(28551),l=r(1767),u=r(9539),
1c=r(84549),d=c("every",TypeError);a({target:"Iterator",proto:!0,real:!0,forced:d},{every:function(t){i(this);try{o(t)}catch(a){u(this,"throw",a)}if(d)return s(d,this,t);var e=l(this),r=0;return!n(e,function(e,a){if(!t(e,r++))return a()},{IS_RECORD:!0,INTERRUPTED:!0}).stopped}})}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.