|
|
|
@ -41,20 +41,34 @@
|
|
|
|
|
<a-divider class="divider-transparent" />
|
|
|
|
|
<div class="bottom-control">
|
|
|
|
|
<a-space>
|
|
|
|
|
<a-button type="primary" icon="download" @click="handleBackupClick">备份</a-button>
|
|
|
|
|
<a-button type="dashed" icon="reload" :loading="loading" @click="handleListBackups">刷新</a-button>
|
|
|
|
|
</a-space>
|
|
|
|
|
</div>
|
|
|
|
|
<a-modal v-model="optionsModal.visible" title="备份选项">
|
|
|
|
|
<template slot="footer">
|
|
|
|
|
<a-button @click="() => (optionsModal.visible = false)">取消</a-button>
|
|
|
|
|
<ReactiveButton
|
|
|
|
|
type="primary"
|
|
|
|
|
icon="download"
|
|
|
|
|
@click="handleBackupClick"
|
|
|
|
|
@click="handleBackupConfirmed"
|
|
|
|
|
@callback="handleBackupedCallback"
|
|
|
|
|
:loading="backuping"
|
|
|
|
|
:errored="backupErrored"
|
|
|
|
|
text="备份"
|
|
|
|
|
text="确认"
|
|
|
|
|
loadedText="备份成功"
|
|
|
|
|
erroredText="备份失败"
|
|
|
|
|
></ReactiveButton>
|
|
|
|
|
<a-button type="dashed" icon="reload" :loading="loading" @click="handleListBackups">刷新</a-button>
|
|
|
|
|
</a-space>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
<a-checkbox-group v-model="optionsModal.selected" style="width: 100%">
|
|
|
|
|
<a-row>
|
|
|
|
|
<a-col :span="8" v-for="item in optionsModal.options" :key="item">
|
|
|
|
|
<a-checkbox :value="item">
|
|
|
|
|
{{ item }}
|
|
|
|
|
</a-checkbox>
|
|
|
|
|
</a-col>
|
|
|
|
|
</a-row>
|
|
|
|
|
</a-checkbox-group>
|
|
|
|
|
</a-modal>
|
|
|
|
|
</a-drawer>
|
|
|
|
|
</template>
|
|
|
|
|
<script>
|
|
|
|
@ -68,7 +82,12 @@ export default {
|
|
|
|
|
backuping: false,
|
|
|
|
|
loading: false,
|
|
|
|
|
backupErrored: false,
|
|
|
|
|
backups: []
|
|
|
|
|
backups: [],
|
|
|
|
|
optionsModal: {
|
|
|
|
|
options: [],
|
|
|
|
|
visible: false,
|
|
|
|
|
selected: []
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
model: {
|
|
|
|
@ -102,9 +121,18 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
handleBackupClick() {
|
|
|
|
|
backupApi.listWorkDirOptions().then(response => {
|
|
|
|
|
this.optionsModal = {
|
|
|
|
|
visible: true,
|
|
|
|
|
options: response.data.data,
|
|
|
|
|
selected: response.data.data
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
handleBackupConfirmed() {
|
|
|
|
|
this.backuping = true
|
|
|
|
|
backupApi
|
|
|
|
|
.backupWorkDir()
|
|
|
|
|
.backupWorkDir(this.optionsModal.selected)
|
|
|
|
|
.catch(() => {
|
|
|
|
|
this.backupErrored = true
|
|
|
|
|
})
|
|
|
|
@ -118,6 +146,7 @@ export default {
|
|
|
|
|
if (this.backupErrored) {
|
|
|
|
|
this.backupErrored = false
|
|
|
|
|
} else {
|
|
|
|
|
this.optionsModal.visible = false
|
|
|
|
|
this.handleListBackups()
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|