mirror of https://github.com/halo-dev/halo-admin
feat: add work dir backup options (#362)
* feat: add work dir backup options * feat: add layout to backup options * refactor: modify variable naming * refactor: rename variablespull/364/head
parent
ba5adcf5cd
commit
03f5939096
|
@ -15,14 +15,22 @@ backupApi.importMarkdown = (formData, uploadProgress, cancelToken) => {
|
|||
})
|
||||
}
|
||||
|
||||
backupApi.backupWorkDir = () => {
|
||||
backupApi.backupWorkDir = options => {
|
||||
return service({
|
||||
url: `${baseUrl}/work-dir`,
|
||||
method: 'post',
|
||||
data: options,
|
||||
timeout: 8640000 // 24 hours
|
||||
})
|
||||
}
|
||||
|
||||
backupApi.listWorkDirOptions = () => {
|
||||
return service({
|
||||
url: `${baseUrl}/work-dir/options`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
backupApi.listWorkDirBackups = () => {
|
||||
return service({
|
||||
url: `${baseUrl}/work-dir`,
|
||||
|
|
|
@ -41,20 +41,34 @@
|
|||
<a-divider class="divider-transparent" />
|
||||
<div class="bottom-control">
|
||||
<a-space>
|
||||
<ReactiveButton
|
||||
type="primary"
|
||||
icon="download"
|
||||
@click="handleBackupClick"
|
||||
@callback="handleBackupedCallback"
|
||||
:loading="backuping"
|
||||
:errored="backupErrored"
|
||||
text="备份"
|
||||
loadedText="备份成功"
|
||||
erroredText="备份失败"
|
||||
></ReactiveButton>
|
||||
<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"
|
||||
@click="handleBackupConfirmed"
|
||||
@callback="handleBackupedCallback"
|
||||
:loading="backuping"
|
||||
:errored="backupErrored"
|
||||
text="确认"
|
||||
loadedText="备份成功"
|
||||
erroredText="备份失败"
|
||||
></ReactiveButton>
|
||||
</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()
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue