fix: 网元授权许可证状态统一刷新功能
This commit is contained in:
@@ -617,8 +617,8 @@ export default {
|
|||||||
change: "Change License",
|
change: "Change License",
|
||||||
reload: "Refresh Info",
|
reload: "Refresh Info",
|
||||||
reloadTip: "Confirmed to refresh license information?",
|
reloadTip: "Confirmed to refresh license information?",
|
||||||
reloadBatch: "Batch Refresh Info",
|
reloadBatch: "Refresh License Status",
|
||||||
reloadBatchTip: "Do you do an information refresh on checked records?",
|
reloadBatchTip: "Do you perform a license status information refresh for the current list of NE?",
|
||||||
updateTtile: "Update License",
|
updateTtile: "Update License",
|
||||||
downCodeTop: "Confirmed to save the license activation code to a file?",
|
downCodeTop: "Confirmed to save the license activation code to a file?",
|
||||||
activationRequestCode: "License Activation Code",
|
activationRequestCode: "License Activation Code",
|
||||||
|
|||||||
@@ -617,8 +617,8 @@ export default {
|
|||||||
change: "变更许可证",
|
change: "变更许可证",
|
||||||
reload: "刷新信息",
|
reload: "刷新信息",
|
||||||
reloadTip: "确认要刷新许可证信息吗?",
|
reloadTip: "确认要刷新许可证信息吗?",
|
||||||
reloadBatch: "批量刷新信息",
|
reloadBatch: "刷新许可证状态",
|
||||||
reloadBatchTip: "对勾选的记录进行信息刷新吗?",
|
reloadBatchTip: "对当前列表网元进行许可证状态信息刷新吗?",
|
||||||
updateTtile: "更新许可证",
|
updateTtile: "更新许可证",
|
||||||
downCodeTop: "确认要将许可激活码保存到文件吗?",
|
downCodeTop: "确认要将许可激活码保存到文件吗?",
|
||||||
activationRequestCode: "许可激活码",
|
activationRequestCode: "许可激活码",
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
|
|||||||
import useNeInfoStore from '@/store/modules/neinfo';
|
import useNeInfoStore from '@/store/modules/neinfo';
|
||||||
import useI18n from '@/hooks/useI18n';
|
import useI18n from '@/hooks/useI18n';
|
||||||
import useDictStore from '@/store/modules/dict';
|
import useDictStore from '@/store/modules/dict';
|
||||||
import { NE_TYPE_LIST } from '@/constants/ne-constants';
|
|
||||||
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
|
||||||
import { listNeLicense, stateNeLicense } from '@/api/ne/neLicense';
|
import { listNeLicense, stateNeLicense } from '@/api/ne/neLicense';
|
||||||
import { parseDateToStr } from '@/utils/date-utils';
|
import { parseDateToStr } from '@/utils/date-utils';
|
||||||
@@ -20,9 +19,6 @@ const EditModal = defineAsyncComponent(
|
|||||||
/**字典数据-状态 */
|
/**字典数据-状态 */
|
||||||
let dictStatus = ref<DictType[]>([]);
|
let dictStatus = ref<DictType[]>([]);
|
||||||
|
|
||||||
/**网元参数 */
|
|
||||||
let neOtions = ref<Record<string, any>[]>([]);
|
|
||||||
|
|
||||||
/**查询参数 */
|
/**查询参数 */
|
||||||
let queryParams = reactive({
|
let queryParams = reactive({
|
||||||
/**网元类型 */
|
/**网元类型 */
|
||||||
@@ -57,21 +53,15 @@ type TabeStateType = {
|
|||||||
loading: boolean;
|
loading: boolean;
|
||||||
/**紧凑型 */
|
/**紧凑型 */
|
||||||
size: SizeType;
|
size: SizeType;
|
||||||
/**搜索栏 */
|
|
||||||
seached: boolean;
|
|
||||||
/**记录数据 */
|
/**记录数据 */
|
||||||
data: any[];
|
data: any[];
|
||||||
/**勾选记录 */
|
|
||||||
selectedRowKeys: (string | number)[];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**表格状态 */
|
/**表格状态 */
|
||||||
let tableState: TabeStateType = reactive({
|
let tableState: TabeStateType = reactive({
|
||||||
loading: false,
|
loading: false,
|
||||||
size: 'middle',
|
size: 'middle',
|
||||||
seached: false,
|
|
||||||
data: [],
|
data: [],
|
||||||
selectedRowKeys: [],
|
|
||||||
});
|
});
|
||||||
|
|
||||||
/**表格字段列 */
|
/**表格字段列 */
|
||||||
@@ -113,6 +103,18 @@ let tableColumns = ref<TableColumnsType>([
|
|||||||
align: 'left',
|
align: 'left',
|
||||||
width: 120,
|
width: 120,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: t('views.ne.common.capability'),
|
||||||
|
dataIndex: 'capability',
|
||||||
|
align: 'left',
|
||||||
|
customRender(opt) {
|
||||||
|
if (['UDM', 'AMF', 'MME'].includes(opt.record.neType)) {
|
||||||
|
return opt.value;
|
||||||
|
}
|
||||||
|
return '-';
|
||||||
|
},
|
||||||
|
width: 100,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: t('common.remark'),
|
title: t('common.remark'),
|
||||||
dataIndex: 'remark',
|
dataIndex: 'remark',
|
||||||
@@ -173,11 +175,6 @@ function fnTableSize({ key }: MenuInfo) {
|
|||||||
tableState.size = key as SizeType;
|
tableState.size = key as SizeType;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**表格多选 */
|
|
||||||
function fnTableSelectedRowKeys(keys: (string | number)[]) {
|
|
||||||
tableState.selectedRowKeys = keys;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**查询列表, pageNum初始页数 */
|
/**查询列表, pageNum初始页数 */
|
||||||
function fnGetList(pageNum?: number) {
|
function fnGetList(pageNum?: number) {
|
||||||
if (tableState.loading) return;
|
if (tableState.loading) return;
|
||||||
@@ -186,9 +183,18 @@ function fnGetList(pageNum?: number) {
|
|||||||
queryParams.pageNum = pageNum;
|
queryParams.pageNum = pageNum;
|
||||||
}
|
}
|
||||||
listNeLicense(toRaw(queryParams)).then(res => {
|
listNeLicense(toRaw(queryParams)).then(res => {
|
||||||
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) {
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
tablePagination.total = res.total;
|
const { total, rows } = res;
|
||||||
tableState.data = res.rows.filter(s => s.neType !== 'OMC');
|
let totalV = total;
|
||||||
|
let rowsV = rows.filter((s: any) => {
|
||||||
|
if (s.neType !== 'OMC') {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
totalV -= 1;
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
tableState.data = rowsV;
|
||||||
|
tablePagination.total = totalV;
|
||||||
if (
|
if (
|
||||||
tablePagination.total <=
|
tablePagination.total <=
|
||||||
(queryParams.pageNum - 1) * tablePagination.pageSize &&
|
(queryParams.pageNum - 1) * tablePagination.pageSize &&
|
||||||
@@ -235,9 +241,25 @@ function fnModalVisibleByEdit(licenseId: string) {
|
|||||||
* 对话框弹出确认执行函数
|
* 对话框弹出确认执行函数
|
||||||
* 进行表达规则校验
|
* 进行表达规则校验
|
||||||
*/
|
*/
|
||||||
function fnModalOk() {
|
function fnModalOk(e: any) {
|
||||||
// 获取列表数据
|
const next = () => {
|
||||||
fnGetList();
|
// 刷新授权状态
|
||||||
|
stateNeLicense(e.neType, e.neId).then(res => {
|
||||||
|
const row = tableState.data.find(
|
||||||
|
(item: any) => e.neType === item.neType && e.neId === item.neId
|
||||||
|
);
|
||||||
|
if (res.code === RESULT_CODE_SUCCESS) {
|
||||||
|
row.status = '1';
|
||||||
|
row.serialNum = res.data.sn;
|
||||||
|
row.expiryDate = res.data.expire;
|
||||||
|
} else {
|
||||||
|
row.status = '0';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// 获取列表数据
|
||||||
|
fnGetList();
|
||||||
|
};
|
||||||
|
setTimeout(() => next(), 2_000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -284,8 +306,8 @@ function fnRecordState(row: Record<string, any>) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**刷新网元授权状态 勾选 */
|
/**刷新网元授权状态 重载 */
|
||||||
function fnRecordStateBatch() {
|
function fnRecordStateReload() {
|
||||||
if (modalState.confirmLoading) return;
|
if (modalState.confirmLoading) return;
|
||||||
Modal.confirm({
|
Modal.confirm({
|
||||||
title: t('common.tipTitle'),
|
title: t('common.tipTitle'),
|
||||||
@@ -293,12 +315,7 @@ function fnRecordStateBatch() {
|
|||||||
onOk: async () => {
|
onOk: async () => {
|
||||||
modalState.confirmLoading = true;
|
modalState.confirmLoading = true;
|
||||||
const hide = message.loading(t('common.loading'), 0);
|
const hide = message.loading(t('common.loading'), 0);
|
||||||
// 勾选的网元数据
|
for (const row of tableState.data) {
|
||||||
const selectRows = tableState.data.filter(item =>
|
|
||||||
tableState.selectedRowKeys.includes(item.id)
|
|
||||||
);
|
|
||||||
|
|
||||||
for (const row of selectRows) {
|
|
||||||
if (row.neType.toUpperCase() === 'OMC') {
|
if (row.neType.toUpperCase() === 'OMC') {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -310,7 +327,6 @@ function fnRecordStateBatch() {
|
|||||||
} else {
|
} else {
|
||||||
row.status = '0';
|
row.status = '0';
|
||||||
}
|
}
|
||||||
tableState.selectedRowKeys = [];
|
|
||||||
}
|
}
|
||||||
message.success(t('common.operateOk'), 3);
|
message.success(t('common.operateOk'), 3);
|
||||||
hide();
|
hide();
|
||||||
@@ -321,21 +337,9 @@ function fnRecordStateBatch() {
|
|||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
// 初始字典数据
|
// 初始字典数据
|
||||||
getDict('ne_license_status').then(res => {
|
getDict('ne_license_status')
|
||||||
dictStatus.value = res;
|
|
||||||
});
|
|
||||||
// 获取网元网元列表
|
|
||||||
useNeInfoStore()
|
|
||||||
.fnNelist()
|
|
||||||
.then(res => {
|
.then(res => {
|
||||||
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
|
dictStatus.value = res;
|
||||||
neOtions.value = useNeInfoStore().getNeSelectOtions;
|
|
||||||
} else {
|
|
||||||
message.warning({
|
|
||||||
content: t('common.noData'),
|
|
||||||
duration: 2,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
// 获取列表数据
|
// 获取列表数据
|
||||||
@@ -347,7 +351,6 @@ onMounted(() => {
|
|||||||
<template>
|
<template>
|
||||||
<PageContainer>
|
<PageContainer>
|
||||||
<a-card
|
<a-card
|
||||||
v-show="tableState.seached"
|
|
||||||
:bordered="false"
|
:bordered="false"
|
||||||
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
|
:body-style="{ marginBottom: '24px', paddingBottom: 0 }"
|
||||||
>
|
>
|
||||||
@@ -358,7 +361,7 @@ onMounted(() => {
|
|||||||
<a-form-item :label="t('views.ne.common.neType')" name="neType ">
|
<a-form-item :label="t('views.ne.common.neType')" name="neType ">
|
||||||
<a-auto-complete
|
<a-auto-complete
|
||||||
v-model:value="queryParams.neType"
|
v-model:value="queryParams.neType"
|
||||||
:options="NE_TYPE_LIST.map(v => ({ value: v }))"
|
:options="useNeInfoStore().getNeSelectOtions"
|
||||||
:allow-clear="true"
|
:allow-clear="true"
|
||||||
:placeholder="t('common.inputPlease')"
|
:placeholder="t('common.inputPlease')"
|
||||||
/>
|
/>
|
||||||
@@ -409,9 +412,8 @@ onMounted(() => {
|
|||||||
<a-space :size="8" align="center">
|
<a-space :size="8" align="center">
|
||||||
<a-button
|
<a-button
|
||||||
type="default"
|
type="default"
|
||||||
:disabled="tableState.selectedRowKeys.length <= 0"
|
|
||||||
:loading="modalState.confirmLoading"
|
:loading="modalState.confirmLoading"
|
||||||
@click.prevent="fnRecordStateBatch()"
|
@click.prevent="fnRecordStateReload()"
|
||||||
>
|
>
|
||||||
<template #icon><SyncOutlined /></template>
|
<template #icon><SyncOutlined /></template>
|
||||||
{{ t('views.ne.neLicense.reloadBatch') }}
|
{{ t('views.ne.neLicense.reloadBatch') }}
|
||||||
@@ -422,21 +424,6 @@ onMounted(() => {
|
|||||||
<!-- 插槽-卡片右侧 -->
|
<!-- 插槽-卡片右侧 -->
|
||||||
<template #extra>
|
<template #extra>
|
||||||
<a-space :size="8" align="center">
|
<a-space :size="8" align="center">
|
||||||
<a-tooltip>
|
|
||||||
<template #title>{{ t('common.searchBarText') }}</template>
|
|
||||||
<a-switch
|
|
||||||
v-model:checked="tableState.seached"
|
|
||||||
:checked-children="t('common.switch.show')"
|
|
||||||
:un-checked-children="t('common.switch.hide')"
|
|
||||||
size="small"
|
|
||||||
/>
|
|
||||||
</a-tooltip>
|
|
||||||
<a-tooltip>
|
|
||||||
<template #title>{{ t('common.reloadText') }}</template>
|
|
||||||
<a-button type="text" @click.prevent="fnGetList()">
|
|
||||||
<template #icon><ReloadOutlined /></template>
|
|
||||||
</a-button>
|
|
||||||
</a-tooltip>
|
|
||||||
<a-tooltip placement="topRight">
|
<a-tooltip placement="topRight">
|
||||||
<template #title>{{ t('common.sizeText') }}</template>
|
<template #title>{{ t('common.sizeText') }}</template>
|
||||||
<a-dropdown placement="bottomRight" trigger="click">
|
<a-dropdown placement="bottomRight" trigger="click">
|
||||||
@@ -473,14 +460,8 @@ onMounted(() => {
|
|||||||
:data-source="tableState.data"
|
:data-source="tableState.data"
|
||||||
:size="tableState.size"
|
:size="tableState.size"
|
||||||
:pagination="tablePagination"
|
:pagination="tablePagination"
|
||||||
:scroll="{ x: tableColumns.length * 120 }"
|
:scroll="{ x: tableColumns.length * 140 }"
|
||||||
@resizeColumn="(w:number, col:any) => (col.width = w)"
|
@resizeColumn="(w:number, col:any) => (col.width = w)"
|
||||||
:row-selection="{
|
|
||||||
type: 'checkbox',
|
|
||||||
columnWidth: '48px',
|
|
||||||
selectedRowKeys: tableState.selectedRowKeys,
|
|
||||||
onChange: fnTableSelectedRowKeys,
|
|
||||||
}"
|
|
||||||
>
|
>
|
||||||
<template #bodyCell="{ column, record }">
|
<template #bodyCell="{ column, record }">
|
||||||
<template v-if="column.key === 'status'">
|
<template v-if="column.key === 'status'">
|
||||||
|
|||||||
Reference in New Issue
Block a user