fix: 开站软件安装逐个进行避免dpkg look错误

This commit is contained in:
TsMask
2024-05-24 16:21:08 +08:00
parent 782283bba6
commit 2ae4559958

View File

@@ -70,6 +70,8 @@ type StateType = {
data: any[];
/**勾选记录 */
selectedRowKeys: (string | number)[];
/**勾选单行记录 */
selectedRowOne: any;
/**多文件上传 */
visibleByMoreFile: boolean;
/**勾选安装弹窗 */
@@ -85,6 +87,7 @@ let state: StateType = reactive({
loading: false,
data: [],
selectedRowKeys: [],
selectedRowOne: { neType: '' },
visibleByMoreFile: false,
visibleByInstall: false,
operateDataUpgrade: [],
@@ -92,8 +95,17 @@ let state: StateType = reactive({
});
/**表格多选 */
function fnTableSelectedRowKeys(keys: (string | number)[]) {
function fnTableSelectedRowKeys(
keys: (string | number)[],
selectedRows: any[]
) {
state.selectedRowKeys = keys;
// 勾选单个上传
if (selectedRows.length === 1) {
state.selectedRowOne = selectedRows[0];
} else {
state.selectedRowOne = { neType: '' };
}
}
/**对话框弹出确认执行函数*/
@@ -111,81 +123,73 @@ function fnModalCancel() {
state.operateDataUpgrade = [];
}
/**版本安装 */
function fnRecordInstall() {
/**版本安装弹出确认是否安装 */
function fnRecordInstallConfirm() {
Modal.confirm({
title: t('common.tipTitle'),
content: t('views.system.quickStart.stepInstallTip'),
onOk() {
if (state.confirmLoading) return;
state.confirmLoading = true;
const notificationKey = 'NE_Select_Install';
notification.info({
key: notificationKey,
duration: 0,
message: t('common.loading'),
});
// 操作升级的网元数据
const selectRows = state.data.filter(item =>
state.selectedRowKeys.includes(item.id)
);
for (const row of selectRows) {
if (
row.neType.toUpperCase() === 'OMC' ||
row.newVersion === '-' ||
row.newVersion === ''
) {
state.operateDataUpgrade.push({
neType: row.neType,
neId: row.neId,
status: 'fail',
});
continue;
}
let preinput = {};
if (row.neType.toUpperCase() === 'IMS') {
preinput = { pisCSCF: 'y' };
}
state.operateDataUpgrade.push({
neType: row.neType,
neId: row.neId,
action: 'install',
preinput: preinput,
});
}
// 发请求信息
state.visibleByInstall = true;
Promise.allSettled(
state.operateDataUpgrade
.filter(s => s.status !== 'fail')
.map(s => operateNeVersion(s))
)
.then(resArr => {
console.log(resArr);
resArr.forEach((s, i) => {
if (s.status === 'rejected') {
message.error(s.reason, 3);
} else {
const res = s.value;
if (res.code === RESULT_CODE_SUCCESS) {
state.operateDataUpgrade[i].status = 'done';
state.operateDataUpgrade[i].log = res.data;
} else {
state.operateDataUpgrade[i].status = 'fail';
state.operateDataUpgrade[i].log = res.msg;
}
}
});
})
.finally(() => {
notification.close(notificationKey);
state.confirmLoading = false;
});
fnRecordInstall();
},
});
}
/**版本安装进行 */
async function fnRecordInstall() {
if (state.confirmLoading) return;
state.confirmLoading = true;
state.visibleByInstall = true;
// 操作升级的网元数据
const selectRows = state.data.filter(item =>
state.selectedRowKeys.includes(item.id)
);
for (const row of selectRows) {
if (row.newVersion === '-' || row.newVersion === '') {
state.operateDataUpgrade.push({
neType: row.neType,
neId: row.neId,
status: 'fail',
log: t('views.system.quickStart.stepInstallNotNewVer'),
});
continue;
}
// 开始安装
let preinput = {};
if (row.neType.toUpperCase() === 'IMS') {
preinput = { pisCSCF: 'y' };
}
const installData = {
neType: row.neType,
neId: row.neId,
action: 'install',
preinput: preinput,
};
try {
const res = await operateNeVersion(installData);
const operateData = {
neType: row.neType,
neId: row.neId,
status: 'fail',
log: t('common.operateErr'),
};
if (res.code === RESULT_CODE_SUCCESS) {
operateData.status = 'done';
operateData.log = t('views.system.quickStart.stepInstallDone')
} else {
operateData.status = 'fail';
operateData.log = t('views.system.quickStart.stepInstallFail')
}
state.operateDataUpgrade.unshift(operateData);
} catch (error) {
console.error(error);
}
}
// 结束
state.confirmLoading = false;
}
/**获取列表 */
function fnGetList() {
state.loading = true;
@@ -200,6 +204,7 @@ function fnGetList() {
// 取消勾选
if (state.selectedRowKeys.length > 0) {
state.selectedRowKeys = [];
state.selectedRowOne = { neType: '' };
}
state.data = res.rows.filter(s => s.neType !== 'OMC');
}
@@ -270,32 +275,6 @@ onMounted(() => {
</template>
</a-table>
<!-- 新增多文件上传框 -->
<UploadMoreFile
v-model:visible="state.visibleByMoreFile"
@ok="fnModalOk"
@cancel="fnModalCancel"
></UploadMoreFile>
<!-- 勾选网元版本进行安装框 -->
<a-modal
width="800px"
:keyboard="false"
:mask-closable="false"
:visible="state.visibleByInstall"
:title="t('views.system.quickStart.stepInstallModal')"
:confirm-loading="state.confirmLoading"
:closable="false"
:cancelButtonProps="{ disabled: state.visibleByInstall }"
@ok="fnModalOk"
@cancel="fnModalCancel"
>
<p v-for="o in state.operateDataUpgrade">
{{ o.neType }} - {{ o.neId }} - {{ o.status }}
<!-- <TerminalText id="installLog" :rows="12" :value="o.log"></TerminalText> -->
</p>
</a-modal>
<div class="ne-oper">
<a-space direction="horizontal" :size="18">
<a-button @click="fnStepPrev()">
@@ -304,12 +283,14 @@ onMounted(() => {
<a-button
type="dashed"
:disabled="state.selectedRowKeys.length > 1"
@click.prevent="
() => (state.visibleByMoreFile = !state.visibleByMoreFile)
"
>
<template #icon><UploadOutlined /></template>
{{ t('views.ne.neSoftware.uploadBatch') }}
{{ state.selectedRowOne.neType }}
</a-button>
<a-button
@@ -317,7 +298,7 @@ onMounted(() => {
ghost
:disabled="state.selectedRowKeys.length <= 0"
:loading="state.confirmLoading"
@click.prevent="fnRecordInstall()"
@click.prevent="fnRecordInstallConfirm()"
>
<template #icon><ThunderboltOutlined /></template>
{{ t('views.system.quickStart.stepInstallText') }}
@@ -330,6 +311,65 @@ onMounted(() => {
</a-space>
</div>
</div>
<!-- 新增多文件上传框 -->
<UploadMoreFile
v-model:visible="state.visibleByMoreFile"
:ne-type="state.selectedRowOne.neType"
@ok="fnModalOk"
@cancel="fnModalCancel"
></UploadMoreFile>
<!-- 勾选网元版本进行安装框 -->
<a-modal
width="800px"
:body-style="{ height: '520px', overflowY: 'scroll' }"
:keyboard="false"
:mask-closable="false"
:visible="state.visibleByInstall"
:title="t('views.system.quickStart.stepInstallModal')"
:closable="false"
@ok="fnModalOk"
@cancel="fnModalCancel"
>
<template #footer>
<a-button
key="submit"
type="primary"
:loading="state.confirmLoading"
@click="fnModalOk"
>
{{ t('common.close') }}
</a-button>
</template>
<p>
<a-alert
v-if="state.confirmLoading"
:message="t('common.loading')"
type="info"
show-icon
>
<template #icon>
<LoadingOutlined />
</template>
</a-alert>
</p>
<p v-for="o in state.operateDataUpgrade" :key="o.neId">
<a-alert
:message="`${o.neType}-${o.neId}`"
:description="o.log"
:type="o.status === 'done' ? 'success' : 'error'"
show-icon
>
<template #icon>
<CheckCircleOutlined v-if="o.status === 'done'" />
<InfoCircleOutlined v-else />
</template>
</a-alert>
</p>
</a-modal>
</template>
<style lang="less" scoped>