diff --git a/src/views/dashboard/imsCDR/index.vue b/src/views/dashboard/imsCDR/index.vue index 9a8b74da..2ee38625 100644 --- a/src/views/dashboard/imsCDR/index.vue +++ b/src/views/dashboard/imsCDR/index.vue @@ -462,16 +462,6 @@ onMounted(() => { }) .finally(() => { // 获取列表数据 - if (useUserStore().roles.includes('tenant')) { - const operateColumnIndex = tableColumns.findIndex( - column => column.key === 'tenantName' - ); - - if (operateColumnIndex !== -1) { - tableColumns.splice(operateColumnIndex, 1); - } - } - fnGetList(); }); }); diff --git a/src/views/neUser/ims/index.vue b/src/views/neUser/ims/index.vue index dd8a05ff..09295242 100644 --- a/src/views/neUser/ims/index.vue +++ b/src/views/neUser/ims/index.vue @@ -22,6 +22,8 @@ let queryParams = reactive({ imsi: '', /**msisdn */ msisdn: '', + /** 租户名称*/ + tenantName: '', /**当前页数 */ pageNum: 1, /**每页条数 */ @@ -33,6 +35,7 @@ function fnQueryReset() { queryParams = Object.assign(queryParams, { imsi: '', msisdn: '', + tenantName: '', pageNum: 1, pageSize: 20, }); @@ -80,7 +83,13 @@ let tableColumns: ColumnsType = [ align: 'center', width: 150, }, - + { + title: 'Tenant Name', + dataIndex: 'tenantName', + align: 'center', + key: 'tenantName', + width: 150, + }, { title: 'Barring', dataIndex: 'barring', @@ -212,7 +221,7 @@ onMounted(() => { - + { /> - + - + - + + + + + + + diff --git a/src/views/neUser/ue/index.vue b/src/views/neUser/ue/index.vue index c0bf1e91..775c6e33 100644 --- a/src/views/neUser/ue/index.vue +++ b/src/views/neUser/ue/index.vue @@ -286,14 +286,6 @@ onMounted(() => { } }) .finally(() => { - if (useUserStore().roles.includes('tenant')) { - const operateColumnIndex = tableColumns.findIndex( - column => column.key === 'tenantName' - ); - if (operateColumnIndex !== -1) { - tableColumns.splice(operateColumnIndex, 1); - } - } // 获取列表数据 fnGetList(); }); @@ -330,7 +322,7 @@ onMounted(() => { - + +import { reactive, ref, onMounted, toRaw } from 'vue'; +import { PageContainer } from 'antdv-pro-layout'; +import { message } from 'ant-design-vue/lib'; +import { SizeType } from 'ant-design-vue/lib/config-provider'; +import { MenuInfo } from 'ant-design-vue/lib/menu/src/interface'; +import { ColumnsType } from 'ant-design-vue/lib/table'; +import { listUEInfoByIMS } from '@/api/neUser/ims'; +import useNeInfoStore from '@/store/modules/neinfo'; +import useI18n from '@/hooks/useI18n'; +import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; +const { t } = useI18n(); + +/**网元参数 */ +let neOtions = ref[]>([]); + +/**查询参数 */ +let queryParams = reactive({ + /**所有IMS */ + totalType: []>[], + /**网元ID */ + neId: undefined, + /**IMSI */ + imsi: '', + /**msisdn */ + msisdn: '', + /**当前页数 */ + pageNum: 1, + /**每页条数 */ + pageSize: 20, +}); + +/**查询参数重置 */ +function fnQueryReset() { + queryParams = Object.assign(queryParams, { + totalType: [], + imsi: '', + msisdn: '', + pageNum: 1, + pageSize: 20, + }); + tablePagination.current = 1; + tablePagination.pageSize = 20; + fnGetAllList(); +} + +/**表格状态类型 */ +type TabeStateType = { + /**加载等待 */ + loading: boolean; + /**紧凑型 */ + size: SizeType; + /**搜索栏 */ + seached: boolean; + /**记录数据 */ + data: object[]; + /**勾选记录 */ + selectedRowKeys: (string | number)[]; +}; + +/**表格状态 */ +let tableState: TabeStateType = reactive({ + loading: false, + size: 'middle', + seached: true, + data: [], + selectedRowKeys: [], +}); + +/**表格字段列 */ +let tableColumns: ColumnsType = [ + { + title: 'IMSI', + dataIndex: 'imsi', + sorter: (a: any, b: any) => Number(a.imsi) - Number(b.imsi), + align: 'center', + width: 150, + }, + { + title: 'MSISDN', + dataIndex: 'msisdn', + sorter: (a: any, b: any) => Number(a.msisdn) - Number(b.msisdn), + align: 'center', + width: 150, + }, + + { + title: 'Barring', + dataIndex: 'barring', + align: 'center', + width: 80, + }, + { + title: 'Registration State', + dataIndex: 'regState', + align: 'center', + width: 150, + }, + { + title: 'Active Time', + dataIndex: 'activeTime', + align: 'center', + width: 150, + }, + { + title: 'IMPU', + dataIndex: 'impu', + align: 'left', + }, +]; + +/**表格分页器参数 */ +let tablePagination = reactive({ + /**当前页数 */ + current: 1, + /**每页条数 */ + pageSize: 20, + /**默认的每页条数 */ + defaultPageSize: 20, + /**指定每页可以显示多少条 */ + pageSizeOptions: ['10', '20', '50', '100'], + /**只有一页时是否隐藏分页器 */ + hideOnSinglePage: false, + /**是否可以快速跳转至某页 */ + showQuickJumper: true, + /**是否可以改变 pageSize */ + showSizeChanger: true, + /**数据总数 */ + total: 0, + showTotal: (total: number) => t('common.tablePaginationTotal', { total }), + onChange: (page: number, pageSize: number) => { + tablePagination.current = page; + tablePagination.pageSize = pageSize; + queryParams.pageNum = page; + queryParams.pageSize = pageSize; + fnGetAllList(); + }, +}); + +/**表格紧凑型变更操作 */ +function fnTableSize({ key }: MenuInfo) { + tableState.size = key as SizeType; +} + +//接收响应信息 +let promises = ref([]); + +/**查询列表, pageNum初始页数 */ +function fnGetAllList(pageNum?: number) { + if (tableState.loading) return; + tableState.loading = true; + if (pageNum) { + queryParams.pageNum = pageNum; + } + + tableState.data = []; + promises.value = []; + + //同时获取IMS在线用户信息 + queryParams.totalType.map((item: any) => { + promises.value.push( + listUEInfoByIMS({ + neId: item.neId, + imsi: queryParams.imsi, + msisdn: queryParams.msisdn, + pageNum: queryParams.pageNum, + pageSize: 10000, + }) + ); + }); + + Promise.allSettled(promises.value).then(results => { + results.forEach(result => { + if (result.status === 'fulfilled') { + const allIMSData = result.value; + if ( + allIMSData.code === RESULT_CODE_SUCCESS && + Array.isArray(allIMSData.rows) + ) { + // 处理成功结果 + tablePagination.total += allIMSData.total; + tableState.data = [...tableState.data, ...allIMSData.rows]; + if ( + tablePagination.total <= + (queryParams.pageNum - 1) * tablePagination.pageSize && + queryParams.pageNum !== 1 + ) { + tableState.loading = false; + fnGetAllList(queryParams.pageNum - 1); + } + } else { + tablePagination.total = 0; + tableState.data = []; + } + tableState.loading = false; + } + }); + }); +} + +onMounted(() => { + // 获取网元网元列表 + useNeInfoStore() + .fnNelist() + .then(res => { + if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) { + if (res.data.length > 0) { + let arr: Record[] = []; + res.data.forEach(i => { + if (i.neType === 'IMS') { + arr.push({ value: i.neId, label: i.neName }); + queryParams.totalType.push(i); + } + }); + + neOtions.value = arr; + if (arr.length > 0) { + queryParams.neId = arr[0].value; + } + } + } else { + message.warning({ + content: t('common.noData'), + duration: 2, + }); + } + }) + .finally(() => { + // 获取列表数据 + fnGetAllList(); + }); +}); + + + + + diff --git a/src/views/tenant/ue/index.vue b/src/views/tenant/ue/index.vue index 651ad9b5..479bca76 100644 --- a/src/views/tenant/ue/index.vue +++ b/src/views/tenant/ue/index.vue @@ -292,7 +292,6 @@ onMounted(() => { if (res.data.length > 0) { let arr: Record[] = []; res.data.forEach(i => { - console.log(i); if (i.neType === 'SMF') { arr.push({ value: i.neId, label: i.neName }); queryParams.totalType.push(i);