Files
fe.ems.vue3/src/views/system/quick-start/components/Done.vue
2025-04-29 16:15:41 +08:00

121 lines
2.9 KiB
Vue

<script setup lang="ts">
import { stepState, fnToStepName } from '../hooks/useStep';
import { Modal } from 'ant-design-vue/es';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { delAccessToken, delRefreshToken } from '@/plugins/auth-token';
import { useRouter } from 'vue-router';
import useI18n from '@/hooks/useI18n';
import { onMounted, ref } from 'vue';
import { bootloaderDone } from '@/api/system/quick-start/bootloader';
const { t } = useI18n();
const router = useRouter();
// 信息列表
const infoList = ref<Record<string, any>[]>([]);
/**获取列表 */
function fnGetList() {
if (!stepState.setupNE) {
infoList.value.push({
type: 'error',
title: t('views.system.quickStart.doneSkipTitle'),
description: t('views.system.quickStart.doneSkipDesc'),
});
return;
}
infoList.value.push({
type: 'warning',
title: t('views.system.quickStart.doneNETitle'),
description: t('views.system.quickStart.doneNEDesc'),
});
}
/**返回上一步 */
function fnStepPrev() {
Modal.confirm({
title: t('common.tipTitle'),
content: t('views.system.quickStart.donePrevTip'),
onOk() {
let stepName = 'NeInfoSoftwareLicense';
if (!stepState.setupNE) {
stepName = 'SystemConfig';
}
fnToStepName(stepName);
},
});
}
/**引导完成 */
function fnGuideDone() {
Modal.confirm({
title: t('common.tipTitle'),
content: t('views.system.quickStart.doneOkTip'),
onOk() {
bootloaderDone()
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
// useAppStore().bootloader = false;
delAccessToken();
delRefreshToken();
}
})
.finally(() => {
router.push({ name: 'Login' });
});
},
});
}
onMounted(() => {
fnGetList();
});
</script>
<template>
<a-result
status="success"
:title="t('views.system.quickStart.doneTitle')"
:sub-title="t('views.system.quickStart.doneTip')"
>
<template #extra>
<a-space direction="vertical" style="width: 40%">
<a-button block type="primary" @click="fnGuideDone()">
{{ t('views.system.quickStart.finish') }}
</a-button>
<a-button block type="default" @click="fnStepPrev()">
{{ t('views.system.quickStart.stepPrev') }}
</a-button>
</a-space>
</template>
<div class="result-content">
<a-spin
tip="Loading..."
style="width: 100%"
:spinning="infoList.length == 0"
>
<a-alert
v-for="s in infoList"
:key="s.title"
:message="s.title"
:description="s.description"
:type="s.type"
show-icon
/>
</a-spin>
</div>
</a-result>
</template>
<style lang="less" scoped>
.result-content {
max-height: 42vh;
overflow-y: auto;
overflow-x: hidden;
}
.ant-alert {
margin-bottom: 16px;
}
</style>