1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-01-19 16:29:17 +08:00

fix: 解决升级应用之后 状态没有刷新的BUG

This commit is contained in:
zhengkunwang223 2023-02-21 11:27:32 +08:00 committed by zhengkunwang223
parent b1cc7c0c1d
commit 3456ab7509
5 changed files with 58 additions and 8 deletions

View File

@ -8,7 +8,7 @@
size="large"
:key="index"
>
<el-badge :value="button.count" class="item" v-if="button.count > 0">
<el-badge :value="button.count" class="item" v-if="button.count > 0" is-dot>
<span>{{ button.label }}</span>
</el-badge>
</el-radio-button>

26
frontend/src/utils/bus.ts Normal file
View File

@ -0,0 +1,26 @@
class Bus {
list: { [key: string]: Array<Function> };
constructor() {
this.list = {};
}
on(name: string, fn: Function) {
this.list[name] = this.list[name] || [];
this.list[name].push(fn);
}
emit(name: string, data?: any) {
if (this.list[name]) {
this.list[name].forEach((fn: Function) => {
fn(data);
});
}
}
off(name: string) {
if (this.list[name]) {
delete this.list[name];
}
}
}
export default Bus;

View File

@ -0,0 +1,3 @@
import Bus from '@/utils/bus';
export default new Bus();

View File

@ -15,6 +15,7 @@ import RouterButton from '@/components/router-button/index.vue';
import i18n from '@/lang';
import { onMounted, ref } from 'vue';
import { SearchAppInstalled } from '@/api/modules/app';
import bus from './bus';
let showButton = ref(false);
const buttons = [
{
@ -31,12 +32,26 @@ const buttons = [
count: 0,
},
];
const search = () => {
SearchAppInstalled({ update: true, page: 1, pageSize: 100 })
.then((res) => {
if (res.data.items) {
buttons[2].count = res.data.items.length;
} else {
buttons[2].count = 0;
}
})
.finally(() => {
showButton.value = true;
});
};
onMounted(() => {
SearchAppInstalled({ update: true, page: 1, pageSize: 100 }).then((res) => {
if (res.data.items) {
buttons[2].count = res.data.items.length;
}
showButton.value = true;
search();
bus.on('update', () => {
showButton.value = false;
search();
});
});
</script>

View File

@ -34,10 +34,11 @@ import { App } from '@/api/interface/app';
import { GetAppUpdateVersions, InstalledOp } from '@/api/modules/app';
import i18n from '@/lang';
import { ElMessageBox, FormInstance } from 'element-plus';
import { reactive, ref } from 'vue';
import { reactive, ref, onBeforeUnmount } from 'vue';
import Header from '@/components/drawer-header/index.vue';
import { MsgSuccess } from '@/utils/message';
import { Rules } from '@/global/form-rules';
import bus from '../../bus';
const updateRef = ref<FormInstance>();
let open = ref(false);
@ -75,8 +76,9 @@ const operate = async () => {
loading.value = true;
await InstalledOp(operateReq)
.then(() => {
open.value = false;
MsgSuccess(i18n.global.t('commons.msg.operationSuccess'));
bus.emit('update', true);
handleClose();
})
.finally(() => {
loading.value = false;
@ -97,6 +99,10 @@ const onOperate = async () => {
});
};
onBeforeUnmount(() => {
bus.off('update');
});
defineExpose({
acceptParams,
});