diff --git a/frontend/src/views/setting/snapshot/create/index.vue b/frontend/src/views/setting/snapshot/create/index.vue
index 001ffc4de..d8f84144d 100644
--- a/frontend/src/views/setting/snapshot/create/index.vue
+++ b/frontend/src/views/setting/snapshot/create/index.vue
@@ -69,6 +69,7 @@
:default-expand-all="true"
:data="form.appData"
:props="defaultProps"
+ @check-change="onChangeAppData"
show-checkbox
>
@@ -401,6 +402,39 @@ const search = async () => {
form.appData = res.data.appData || [];
};
+function onChangeAppData(data: any, isCheck: boolean) {
+ if (data.label !== 'appData' || !data.relationItemID) {
+ return;
+ }
+ data.isCheck = isCheck;
+ let isDisable = false;
+ for (const item of form.appData) {
+ if (!item.children) {
+ return;
+ }
+ for (const itemData of item.children) {
+ if (itemData.label === 'appData' && itemData.relationItemID === data.relationItemID && itemData.isCheck) {
+ isDisable = true;
+ break;
+ }
+ }
+ }
+ for (const item of form.appData) {
+ if (!item.children) {
+ return;
+ }
+ for (const relationItem of item.children) {
+ if (relationItem.id !== data.relationItemID) {
+ continue;
+ }
+ relationItem.isDisable = isDisable;
+ if (isDisable) {
+ appRef.value.setChecked(relationItem.id, isDisable, isDisable);
+ }
+ break;
+ }
+ }
+}
const setAppDefaultCheck = async (list: any) => {
for (const item of list) {
if (item.isCheck) {
diff --git a/frontend/src/views/setting/snapshot/snap_status/index.vue b/frontend/src/views/setting/snapshot/snap_status/index.vue
index 9c8313be8..9e50a2f6c 100644
--- a/frontend/src/views/setting/snapshot/snap_status/index.vue
+++ b/frontend/src/views/setting/snapshot/snap_status/index.vue
@@ -12,35 +12,19 @@
-
+
- {{ $t('setting.panelInfo') }}
-
-
{{ status.panelInfo }}
+
{{ $t('setting.panelInfo') }}
+
+ {{ status.baseData }}
-
+
- {{ $t('setting.panelBin') }}
-
- {{ status.panel }}
-
-
-
-
-
- {{ $t('setting.daemonJson') }}
-
- {{ status.daemonJson }}
-
-
-
-
-
- {{ $t('setting.appData') }}
-
-
{{ status.appData }}
+
{{ $t('setting.appData') }}
+
+ {{ status.appImage }}
@@ -100,10 +84,8 @@ import { loadSnapStatus, snapshotCreate } from '@/api/modules/setting';
import { nextTick, onBeforeUnmount, reactive, ref } from 'vue';
const status = reactive
({
- panel: '',
- panelInfo: '',
- daemonJson: '',
- appData: '',
+ baseData: '',
+ appImage: '',
panelData: '',
backupData: '',
@@ -147,10 +129,8 @@ const loadCurrentStatus = async () => {
await loadSnapStatus(snapID.value)
.then((res) => {
loading.value = false;
- status.panel = res.data.panel;
- status.panelInfo = res.data.panelInfo;
- status.daemonJson = res.data.daemonJson;
- status.appData = res.data.appData;
+ status.baseData = res.data.baseData;
+ status.appImage = res.data.appImage;
status.panelData = res.data.panelData;
status.backupData = res.data.backupData;
@@ -172,10 +152,19 @@ const onRetry = async () => {
loading.value = true;
await snapshotCreate({
id: snapID.value,
- fromAccounts: [],
- from: snapFrom.value,
- defaultDownload: snapDefaultDownload.value,
description: snapDescription.value,
+
+ downloadAccountID: '',
+ sourceAccountIDs: '',
+ secret: '',
+
+ withLoginLog: false,
+ withOperationLog: false,
+ withMonitorData: false,
+
+ panelData: [],
+ backupData: [],
+ appData: [],
})
.then(() => {
loading.value = false;
@@ -190,10 +179,8 @@ const onWatch = () => {
timer = setInterval(async () => {
if (keepLoadStatus()) {
const res = await loadSnapStatus(snapID.value);
- status.panel = res.data.panel;
- status.panelInfo = res.data.panelInfo;
- status.daemonJson = res.data.daemonJson;
- status.appData = res.data.appData;
+ status.baseData = res.data.baseData;
+ status.appImage = res.data.appImage;
status.panelData = res.data.panelData;
status.backupData = res.data.backupData;
@@ -205,16 +192,10 @@ const onWatch = () => {
};
const keepLoadStatus = () => {
- if (status.panel === 'Running') {
+ if (status.baseData === 'Running') {
return true;
}
- if (status.panelInfo === 'Running') {
- return true;
- }
- if (status.daemonJson === 'Running') {
- return true;
- }
- if (status.appData === 'Running') {
+ if (status.appImage === 'Running') {
return true;
}
if (status.panelData === 'Running') {
@@ -240,16 +221,10 @@ const showRetry = () => {
if (keepLoadStatus()) {
return false;
}
- if (status.panel !== 'Running' && status.panel !== 'Done') {
+ if (status.baseData !== 'Running' && status.baseData !== 'Done') {
return true;
}
- if (status.panelInfo !== 'Running' && status.panelInfo !== 'Done') {
- return true;
- }
- if (status.daemonJson !== 'Running' && status.daemonJson !== 'Done') {
- return true;
- }
- if (status.appData !== 'Running' && status.appData !== 'Done') {
+ if (status.appImage !== 'Running' && status.appImage !== 'Done') {
return true;
}
if (status.panelData !== 'Running' && status.panelData !== 'Done') {
diff --git a/frontend/src/views/setting/snapshot/status/index.vue b/frontend/src/views/setting/snapshot/status/index.vue
index b49ba8f57..4816fe4aa 100644
--- a/frontend/src/views/setting/snapshot/status/index.vue
+++ b/frontend/src/views/setting/snapshot/status/index.vue
@@ -1,295 +1,220 @@
-
-
-