40.adf43822.js 6.6 KB

1
  1. (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[40],{1170:function(e,s,a){},a8a4:function(e,s,a){"use strict";a.r(s);var t=function(){var e=this,s=e._self._c;return s("q-page",{staticClass:"q-pa-md"},[s("q-card",{staticClass:"recovery-card"},[s("q-card-section",[s("div",{staticClass:"text-h6"},[e._v("数据库恢复")])]),s("q-tabs",{staticClass:"bg-primary text-white",attrs:{align:"justify"},model:{value:e.tab,callback:function(s){e.tab=s},expression:"tab"}},[s("q-tab",{attrs:{name:"time",icon:"schedule",label:"时间点恢复"}})],1),s("q-tab-panels",{attrs:{animated:""},model:{value:e.tab,callback:function(s){e.tab=s},expression:"tab"}},[s("q-tab-panel",{attrs:{name:"time"}},[s("div",{staticClass:"q-mb-md"},[s("div",{staticClass:"text-subtitle1 q-mb-sm"},[e._v("选择基础备份")]),s("q-list",{staticClass:"rounded-borders",attrs:{bordered:"",separator:""}},[e._l(e.baseBackups,(function(a){return s("q-item",{key:a.path,staticClass:"q-mb-sm",attrs:{clickable:"",active:e.selectedBaseBackup===a.path},on:{click:function(s){return e.selectBaseBackup(a.path)}}},[s("q-item-section",[s("q-item-label",[e._v(e._s(a.name))]),s("q-item-label",{attrs:{caption:""}},[e._v(e._s(a.date))])],1),s("q-item-section",{attrs:{side:""}},[e.selectedBaseBackup===a.path?s("q-icon",{attrs:{name:"check_circle",color:"primary"}}):e._e()],1)],1)})),0===e.baseBackups.length?s("q-item",[s("q-item-section",{staticClass:"text-grey text-center"},[e._v("\n 没有可用的基础备份\n ")])],1):e._e()],2),s("div",{staticClass:"row justify-center q-mt-md"},[s("q-pagination",{attrs:{max:e.baseTotalPages,"max-pages":5,"direction-links":"","boundary-links":""},model:{value:e.basePage,callback:function(s){e.basePage=s},expression:"basePage"}}),s("div",{staticClass:"q-ml-md text-caption"},[e._v("\n 共 "+e._s(e.baseTotalItems)+" 项,每页 "+e._s(e.basePageSize)+" 项\n ")])],1)],1),s("div",{staticClass:"q-mb-md"},[s("q-input",{attrs:{type:"datetime-local",label:"选择恢复时间点",max:e.maxDateTime,filled:"",hint:"格式: YYYY-MM-DD HH:MM:SS"},model:{value:e.recoveryTime,callback:function(s){e.recoveryTime=s},expression:"recoveryTime"}})],1),s("div",{staticClass:"q-mb-md"},[s("q-toggle",{attrs:{label:"我确认时间点恢复操作将覆盖当前数据库"},model:{value:e.confirmPITR,callback:function(s){e.confirmPITR=s},expression:"confirmPITR"}})],1),s("div",{staticClass:"flex justify-end"},[s("q-btn",{attrs:{color:"primary",icon:"restore",label:"执行时间点恢复",disable:!e.selectedBaseBackup||!e.recoveryTime||!e.confirmPITR},on:{click:e.restoreToPointInTime}})],1)])],1),s("q-dialog",{attrs:{persistent:""},model:{value:e.showProgress,callback:function(s){e.showProgress=s},expression:"showProgress"}},[s("q-card",{staticStyle:{"min-width":"350px"}},[s("q-card-section",[s("div",{staticClass:"text-h6"},[e._v("恢复进度")])]),s("q-card-section",[null!==e.progressValue?s("q-linear-progress",{staticClass:"q-mb-sm",attrs:{value:e.progressValue,color:"primary"}}):s("q-linear-progress",{staticClass:"q-mb-sm",attrs:{indeterminate:"",color:"primary"}}),s("div",{staticClass:"text-center"},[e._v(e._s(e.progressMessage))])],1)],1)],1),s("q-dialog",{attrs:{persistent:""},model:{value:e.showResult,callback:function(s){e.showResult=s},expression:"showResult"}},[s("q-card",{staticStyle:{"min-width":"350px"}},[s("q-card-section",[s("div",{staticClass:"text-h6"},[e._v(e._s(e.resultTitle))])]),s("q-card-section",[s("div",{staticClass:"text-body1"},[e._v(e._s(e.resultMessage))])]),s("q-card-actions",{attrs:{align:"right"}},[s("q-btn",{directives:[{name:"close-popup",rawName:"v-close-popup"}],attrs:{flat:"",label:"确定",color:"primary"},on:{click:e.handleResultClose}})],1)],1)],1)],1)],1)},i=[],r=(a("5319"),a("3004")),l={name:"RecoveryPage",data(){return{tab:"time",selectedBaseBackup:null,confirmPITR:!1,showProgress:!1,showResult:!1,progressMessage:"正在恢复数据库...",progressValue:null,resultTitle:"",resultMessage:"",baseBackups:[],recoveryTime:"",maxDateTime:(new Date).toISOString().slice(0,16),loadingBaseBackups:!1,basePage:1,basePageSize:5,baseTotalPages:1,baseTotalItems:0}},watch:{basePage(e,s){e!==s&&this.fetchBaseBackups()}},mounted(){this.fetchBaseBackups()},methods:{selectBaseBackup(e){this.selectedBaseBackup=e},async fetchBaseBackups(){this.loadingBaseBackups=!0;try{var e;const s=await Object(r["h"])("backup/list/",{type:"base",page:this.basePage,page_size:this.basePageSize}),a=(null===(e=s.data)||void 0===e?void 0:e.data)||s.data||{};this.baseBackups=a.backups||[],this.basePage=a.page||1,this.basePageSize=a.page_size||5,this.baseTotalPages=a.total_pages||1,this.baseTotalItems=a.total_items||0}catch(t){var s,a;console.error("获取基础备份失败:",t),this.$q.notify({type:"negative",message:"获取基础备份失败: "+((null===(s=t.response)||void 0===s||null===(a=s.data)||void 0===a?void 0:a.message)||t.message)})}finally{this.loadingBaseBackups=!1}},async restoreToPointInTime(){this.showProgress=!0,this.progressMessage="正在准备恢复操作...",this.progressValue=0;try{const e=this.recoveryTime.replace("T"," ")+":00",s=setInterval((()=>{this.progressValue<90&&(this.progressValue+=10,this.progressMessage=`恢复中... ${this.progressValue}%`)}),500);await Object(r["h"])("backup/point/",{base_backup:this.selectedBaseBackup,recovery_time:e}),clearInterval(s),this.progressValue=100,this.progressMessage="恢复完成!",setTimeout((()=>{this.showProgress=!1,this.resultTitle="恢复成功",this.resultMessage=`数据库已成功恢复到 ${new Date(this.recoveryTime).toLocaleString()}`,this.showResult=!0}),1e3)}catch(a){var e,s;this.showProgress=!1,this.resultTitle="恢复失败",this.resultMessage="时间点恢复失败: "+((null===(e=a.response)||void 0===e||null===(s=e.data)||void 0===s?void 0:s.message)||a.message),this.showResult=!0}},handleResultClose(){window.location.reload()}}},o=l,c=(a("fcf7"),a("42e1")),n=a("9989"),u=a("f09f"),d=a("a370"),p=a("429b"),m=a("7460"),b=a("adad"),g=a("823b"),h=a("1c1c"),v=a("66e5"),q=a("4074"),f=a("0170"),k=a("0016"),P=a("3b16"),T=a("27f9"),y=a("9564"),B=a("9c40"),w=a("24e8"),_=a("6b1d"),x=a("4b7e"),C=a("7f67"),Q=a("eebe"),I=a.n(Q),R=Object(c["a"])(o,t,i,!1,null,"7f836ba5",null);s["default"]=R.exports;I()(R,"components",{QPage:n["a"],QCard:u["a"],QCardSection:d["a"],QTabs:p["a"],QTab:m["a"],QTabPanels:b["a"],QTabPanel:g["a"],QList:h["a"],QItem:v["a"],QItemSection:q["a"],QItemLabel:f["a"],QIcon:k["a"],QPagination:P["a"],QInput:T["a"],QToggle:y["a"],QBtn:B["a"],QDialog:w["a"],QLinearProgress:_["a"],QCardActions:x["a"]}),I()(R,"directives",{ClosePopup:C["a"]})},fcf7:function(e,s,a){"use strict";a("1170")}}]);