Merge remote-tracking branch 'origin/main' into practical-training

This commit is contained in:
TsMask
2024-06-20 09:34:54 +08:00
22 changed files with 132 additions and 104 deletions

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS"
VITE_APP_CODE = "CN EMS"
# 应用版本
VITE_APP_VERSION = "2.240617.1"
VITE_APP_VERSION = "2.240619.1"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -11,7 +11,7 @@ VITE_APP_NAME = "Core Network EMS"
VITE_APP_CODE = "CN EMS"
# 应用版本
VITE_APP_VERSION = "2.240617.1"
VITE_APP_VERSION = "2.240619.1"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -25,8 +25,10 @@ export async function listBase5G(query: Record<string, any>) {
data.total = rows.length;
data.rows = rows;
}
// 模拟数据
// data.rows =[{"address":"192.168.1.137:38412","id":"217","name":"attach-enb-100000-20","ueNum":0}]
// data.rows = [{"address":"192.168.1.137:38412","id":"217","name":"attach-enb-100000-20","ueNum":0}]
// data.rows = [{address: "192.168.8.223", id: 257, name: "SmallCell", ueNum: 0}]
return data;
}

View File

@@ -31,36 +31,55 @@ export async function listUEInfoBySMF(query: Record<string, any>) {
// data.code = RESULT_CODE_SUCCESS;
// data.rows = [
// {
// imsi: 'imsi-460002082101038',
// msisdn: 'msisdn-12307550000',
// imsi: 'imsi-460000100000090',
// msisdn: 'msisdn-12307550090',
// pduSessionInfo: [
// {
// activeTime: '2024-05-08 11:08:22',
// activeTime: '2024-06-19 14:35:26',
// dnn: 'ims',
// ipv4: '10.10.86.2',
// ipv6: '',
// pduSessionID: 5,
// ranN3IP: '192.168.5.100',
// sstSD: '1-000001',
// tai: '46000-001124',
// upState: 'Active',
// upfN3IP: '192.168.14.201',
// },
// {
// activeTime: '2024-05-08 11:08:23',
// dnn: 'cmnet',
// ipv4: '10.10.86.201',
// ipv4: '10.10.48.8',
// ipv6: '',
// pduSessionID: 6,
// ranN3IP: '192.168.5.100',
// ranN3IP: '192.168.1.137',
// sstSD: '1-000001',
// tai: '46000-001124',
// upState: 'Active',
// upfN3IP: '192.168.14.201',
// upfN3IP: '192.168.1.161',
// },
// {
// activeTime: '2024-06-19 14:35:26',
// dnn: 'cmnet',
// ipv4: '10.10.48.9',
// ipv6: '2001:4860:4860::/64',
// pduSessionID: 7,
// ranN3IP: '192.168.1.137',
// sstSD: '1-000001',
// tai: '46000-001124',
// upState: 'Active',
// upfN3IP: '192.168.1.161',
// },
// ],
// ratType: 'NR',
// },
// {
// imsi: 'imsi-460602072701180',
// msisdn: 'msisdn-123460600080',
// pduSessionInfo: [
// {
// activeTime: '2024-06-19 14:31:09',
// dnn: 'cmnet',
// ipv4: '10.10.48.4',
// ipv6: '',
// pduSessionID: 5,
// ranN3IP: '192.168.8.223',
// sstSD: '1-000001',
// tai: '46060-0001',
// upState: 'Active',
// upfN3IP: '192.168.1.161',
// },
// ],
// ratType: 'EUTRAN',
// },
// ];
return data;
}

View File

@@ -84,7 +84,7 @@ function fnUpload(up: UploadRequestOption) {
:keyboard="false"
:mask-closable="false"
:confirm-loading="props.loading"
:footer="null"
:footer="false"
@cancel="fnModalClose"
>
<a-space :size="8" direction="vertical" style="width: 100%">

View File

@@ -210,7 +210,7 @@ watch(
:keyboard="false"
:mask-closable="false"
@cancel="fnModalCancel"
:footer="null"
:footer="false"
>
<!-- 表格搜索栏 -->
<a-form :model="queryParams" name="queryParams" layout="horizontal">

View File

@@ -23,13 +23,16 @@ const queue = new PQueue({ concurrency: 1, autoStart: true });
/**字典数据 */
let dict: {
/**UE 事件类型MME */
ueEventTypeMME: DictType[];
/**UE 事件结果MME */
ueEventResultMME: DictType[];
/**UE 事件认证代码类型 */
ueAauthCode: DictType[];
/**UE 事件类型 */
ueEventType: DictType[];
/**UE 事件CM状态 */
ueEventCmState: DictType[];
} = reactive({
ueEventTypeMME: [],
ueEventResultMME: [],
ueAauthCode: [],
ueEventType: [],
ueEventCmState: [],
});
/**开始结束时间 */
@@ -40,7 +43,7 @@ let queryParams = reactive({
/**网元类型 */
neType: 'MME',
neId: '001',
eventType: '',
eventType: 'auth-result',
imsi: '',
sortField: 'timestamp',
sortOrder: 'desc',
@@ -56,9 +59,9 @@ let queryParams = reactive({
/**查询参数重置 */
function fnQueryReset() {
eventTypes.value = [];
eventTypes.value = ['auth-result'];
queryParams = Object.assign(queryParams, {
eventType: '',
eventType: 'auth-result',
imsi: '',
startTime: '',
endTime: '',
@@ -72,7 +75,7 @@ function fnQueryReset() {
}
/**记录类型 */
const eventTypes = ref<string[]>([]);
const eventTypes = ref<string[]>(['auth-result']);
/**查询记录类型变更 */
function fnQueryEventTypeChange(value: any) {
@@ -397,15 +400,19 @@ function wsMessage(res: Record<string, any>) {
onMounted(() => {
// 初始字典数据
Promise.allSettled([
getDict('ue_event_mme_type'),
getDict('ue_event_mme_result'),
getDict('ue_auth_code'),
getDict('ue_event_type'),
getDict('ue_event_cm_state'),
])
.then(resArr => {
if (resArr[0].status === 'fulfilled') {
dict.ueEventTypeMME = resArr[0].value;
dict.ueAauthCode = resArr[0].value;
}
if (resArr[1].status === 'fulfilled') {
dict.ueEventResultMME = resArr[1].value;
dict.ueEventType = resArr[1].value;
}
if (resArr[2].status === 'fulfilled') {
dict.ueEventCmState = resArr[2].value;
}
})
.finally(() => {
@@ -439,7 +446,7 @@ onBeforeUnmount(() => {
<a-select
v-model:value="eventTypes"
mode="multiple"
:options="dict.ueEventTypeMME"
:options="dict.ueEventType"
:placeholder="t('common.selectPlease')"
@change="fnQueryEventTypeChange"
></a-select>
@@ -595,13 +602,24 @@ onBeforeUnmount(() => {
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'eventType'">
<DictTag :options="dict.ueEventTypeMME" :value="record.eventType" />
<DictTag :options="dict.ueEventType" :value="record.eventType" />
</template>
<template v-if="column.key === 'result'">
<span v-if="record.eventType === 'auth-result'">
<DictTag
:options="dict.ueEventResultMME"
:options="dict.ueAauthCode"
:value="record.eventJSON.result"
/>
</span>
<span v-if="record.eventType === 'detach'">
<span>{{ t('views.dashboard.ue.resultOk') }}</span>
</span>
<span v-if="record.eventType === 'cm-state'">
<DictTag
:options="dict.ueEventCmState"
:value="record.eventJSON.result"
/>
</span>
</template>
<template v-if="column.key === 'id'">
<a-space :size="8" align="center">
@@ -641,17 +659,25 @@ onBeforeUnmount(() => {
</div>
<div>
<span>{{ t('views.dashboard.ue.eventType') }}: </span>
<DictTag
:options="dict.ueEventTypeMME"
:value="record.eventType"
/>
<DictTag :options="dict.ueEventType" :value="record.eventType" />
</div>
<div>
<span>{{ t('views.dashboard.ue.result') }}: </span>
<span v-if="record.eventType === 'auth-result'">
<DictTag
:options="dict.ueEventResultMME"
:options="dict.ueAauthCode"
:value="record.eventJSON.result"
/>
</span>
<span v-if="record.eventType === 'detach'">
{{ t('views.dashboard.ue.resultOK') }}
</span>
<span v-if="record.eventType === 'cm-state'">
<DictTag
:options="dict.ueEventCmState"
:value="record.eventJSON.result"
/>
</span>
</div>
</div>
</template>

View File

@@ -19,18 +19,12 @@ let dict: {
ueEventType: DictType[];
/**UE 事件CM状态 */
ueEventCmState: DictType[];
/**UE 事件类型MME */
ueEventTypeMME: DictType[];
/**UE 事件结果MME */
ueEventResultMME: DictType[];
} = reactive({
cdrSipCode: [],
cdrCallType: [],
ueAauthCode: [],
ueEventType: [],
ueEventCmState: [],
ueEventTypeMME: [],
ueEventResultMME: [],
});
onMounted(() => {
@@ -41,8 +35,6 @@ onMounted(() => {
getDict('ue_auth_code'),
getDict('ue_event_type'),
getDict('ue_event_cm_state'),
getDict('ue_event_mme_type'),
getDict('ue_event_mme_result'),
]).then(resArr => {
if (resArr[0].status === 'fulfilled') {
dict.cdrSipCode = resArr[0].value;
@@ -59,12 +51,6 @@ onMounted(() => {
if (resArr[4].status === 'fulfilled') {
dict.ueEventCmState = resArr[4].value;
}
if (resArr[5].status === 'fulfilled') {
dict.ueEventTypeMME = resArr[5].value;
}
if (resArr[6].status === 'fulfilled') {
dict.ueEventResultMME = resArr[6].value;
}
});
});
</script>
@@ -173,6 +159,7 @@ onMounted(() => {
TAC ID: <span>{{ item.data.tacID }}</span>
</div>
</div>
<div v-if="item.type === 'auth-result'">
{{ t('views.dashboard.overview.userActivity.result') }}:&nbsp;
<span>
@@ -200,7 +187,7 @@ onMounted(() => {
<div>
{{ t('views.dashboard.overview.userActivity.type') }}:&nbsp;
<span>
<DictTag :options="dict.ueEventTypeMME" :value="item.type" />
<DictTag :options="dict.ueEventType" :value="item.type" />
</span>
</div>
<div>
@@ -216,7 +203,7 @@ onMounted(() => {
<div class="card-ue-w33" v-if="item.type === 'auth-result'">
<div>
GNB ID: <span>{{ item.data.gNBID }}</span>
ENB ID: <span>{{ item.data.eNBID }}</span>
</div>
<div>
Cell ID: <span>{{ item.data.cellID }}</span>
@@ -228,20 +215,17 @@ onMounted(() => {
<div v-if="item.type === 'auth-result'">
{{ t('views.dashboard.overview.userActivity.result') }}:&nbsp;
<span>
<DictTag :options="dict.ueAauthCode" :value="item.data.authCode" />
<DictTag :options="dict.ueAauthCode" :value="item.data.result" />
</span>
</div>
<div v-if="item.type === 'detach'">
{{ t('views.dashboard.overview.userActivity.result') }}:
<span>{{ t('views.dashboard.overview.userActivity.resultOK') }}</span>
</div>
<div class="card-ue-w33">
<div class="card-ue-w33" v-if="item.type === 'cm-state'">
{{ t('views.dashboard.overview.userActivity.result') }}:&nbsp;
<span>
<DictTag
:options="dict.ueEventResultMME"
:value="item.data.result"
/>
<DictTag :options="dict.ueEventCmState" :value="item.data.result" />
</span>
</div>
</div>

View File

@@ -199,9 +199,10 @@ export default function useWS() {
*
* 指标UPF (GroupID:12)
* AMF_UE会话事件(GroupID:1010)
* MME_UE会话事件(GroupID:1011)
* IMS_CDR会话事件(GroupID:1005)
*/
subGroupID: '12,1010,1005',
subGroupID: '12,1010,1011,1005',
},
onmessage: wsMessage,
onerror: wsError,

View File

@@ -1054,7 +1054,8 @@ onMounted(() => {
:visible="modalState.helpShowView"
:title="modalState.title"
:confirm-loading="modalState.confirmLoading"
:footer="null"
:body-style="{ padding: '0px' }"
:footer="false"
@cancel="fnModalCancel"
>
<a-table

View File

@@ -94,7 +94,7 @@ function fnFormLogSetFinish() {
/**告警前转接口对象信息状态 */
let forwardState: ModalStateType = reactive({
title:t('views.faultManage.faultSetting.forwardSet'),
title: t('views.faultManage.faultSetting.forwardSet'),
from: {
interface: 'email',
emailObj: [],
@@ -128,11 +128,15 @@ function fnFormForwardFinish() {
forwardStateFrom.validate().then(() => {
forwardState.confirmLoading = true;
const from = toRaw(forwardState.from);
console.log(from);
updateForwardSet(from)
.then(res => {
if (res.code === RESULT_CODE_SUCCESS) {
message.success( t('common.msgSuccess', { msg: t('views.faultManage.faultSetting.save')}), 3);
message.success(
t('common.msgSuccess', {
msg: t('views.faultManage.faultSetting.save'),
}),
3
);
} else {
message.warning(t('views.faultManage.faultSetting.noChange'), 3);
}
@@ -158,7 +162,6 @@ onMounted(() => {
if (resArr[1].status === 'fulfilled') {
const result = resArr[1].value;
if (result.code === RESULT_CODE_SUCCESS) {
console.log(result.data);
let finalData: any = {
emailObj: result.data[0]['to_user'],
smsObj: result.data[1]['to_user'],
@@ -273,12 +276,11 @@ onMounted(() => {
</a-button>
</a-space>
</template>
<a-form
name="forwardState"
layout="horizontal"
autocomplete="off"
<a-form name="forwardState" layout="horizontal" autocomplete="off">
<a-form-item
:label="t('views.faultManage.faultSetting.interfaceType')"
name="interface"
>
<a-form-item :label="t('views.faultManage.faultSetting.interfaceType')" name="interface">
<a-input value="Email" allow-clear disabled></a-input>
</a-form-item>
<a-form-item
@@ -292,7 +294,10 @@ onMounted(() => {
:token-separators="[',']"
></a-select>
</a-form-item>
<a-form-item :label="t('views.faultManage.faultSetting.interfaceType')" name="interface">
<a-form-item
:label="t('views.faultManage.faultSetting.interfaceType')"
name="interface"
>
<a-input value="SMS" allow-clear disabled></a-input>
</a-form-item>
<a-form-item

View File

@@ -826,6 +826,7 @@ onMounted(() => {
<!-- 详情框 -->
<ProModal
:drag="true"
:width="800"
:body-style="{ height: '520px', overflowY: 'scroll' }"
:keyboard="false"
:mask-closable="false"

View File

@@ -140,7 +140,6 @@ function fnGetList(refresh: boolean = false) {
})
.then(hasNeList => {
if (!hasNeList) return;
console.log(graphG6Data)
if (refresh) {
// graphG6.value.get('canvas').set('localRefresh', true);
graphG6.value.destroy();

View File

@@ -174,8 +174,6 @@ export default function useEdge() {
}
// 不存在fontWeight会触发异常
if(!edge.labelCfg.style.fontWeight){
console.log(edge)
debugger
edge.labelCfg.style.fontWeight = 500
}
// 存在更新新增id是#不监听变化

View File

@@ -94,7 +94,7 @@ export default function useGraph() {
</div>`;
},
handleMenuClick(target, item) {
console.log(target, item);
// console.log(target, item);
const targetId = target.id;
switch (targetId) {
case 'create-edge':
@@ -223,7 +223,7 @@ export default function useGraph() {
`;
},
handleMenuClick(target, item) {
console.log(target, item);
// console.log(target, item);
const targetId = target.id;
switch (targetId) {
case 'edit':
@@ -302,7 +302,7 @@ export default function useGraph() {
`;
},
handleMenuClick(target, item) {
console.log(target, item);
// console.log(target, item);
const targetId = target.id;
switch (targetId) {
case 'edit':

View File

@@ -64,7 +64,6 @@ function fnGetList(pageNum?: number) {
tableState.loading = true;
listNSSFAMF().then(res => {
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.rows)) {
console.log(res.rows);
// 取消勾选
if (tableState.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = [];

View File

@@ -300,7 +300,6 @@ function fnModalVisibleByEdit(row?: Record<string, any>) {
sessRules = [sessRules];
}
modalState.from.sessRules = sessRules;
console.log(modalState.from);
modalState.title = t('views.neUser.pcf.updateTitle', {
imsi: row.imsi,
@@ -327,7 +326,6 @@ function fnModalOk() {
const from = JSON.parse(JSON.stringify(modalState.from));
from.neId = queryParams.neId || '-';
from.rfsp = Number(from.rfsp) || 0;
console.log(from);
let pccRules = modalState.from.pccRules;
if (Array.isArray(pccRules)) {
pccRules = pccRules.join('|');

View File

@@ -413,7 +413,7 @@ onMounted(() => {
:visible="modalState.visibleByView"
:title="modalState.title"
@cancel="fnModalCancel"
:footer="null"
:footer="false"
>
<a-form layout="horizontal" labelAlign="left" :labelWrap="false">
<a-row :gutter="8">

View File

@@ -301,7 +301,6 @@ function fnModalVisibleByVive(row: Record<string, string>) {
* @param dictCode 数据编号id, 不传为新增
*/
function fnModalVisibleByEdit(dictCode?: string | number, record?: any) {
console.log(record);
if (!dictCode) {
modalStateFrom.resetFields();
modalState.from.dictType = queryParams.dictType;

View File

@@ -117,7 +117,6 @@ function fnSaveAcount() {
// 发送保存
state.confirmLoading = true;
bootloaderAccount(state.username, state.password).then(res => {
console.log(res);
if (res.code === RESULT_CODE_SUCCESS) {
message.success(t('common.operateOk'));
} else {
@@ -158,7 +157,6 @@ function fnSaveSystem() {
// 发送保存
state.confirmLoading = true;
Promise.all(reqArr).then(resArr => {
console.log(resArr);
message.success(t('views.system.quickStart.sysSaveOk'));
state.confirmLoading = false;
});
@@ -206,7 +204,6 @@ function fnCheckAppNameOverflow() {
if (!container) return;
const text: HTMLDivElement | null = container.querySelector('.marquee');
if (!text) return;
console.log(text.offsetWidth, container.offsetWidth);
if (text.offsetWidth > container.offsetWidth) {
text.classList.add('app-name_scrollable');
} else {

View File

@@ -28,7 +28,6 @@ let state: StateType = reactive({
/**上传前检查或转换压缩 */
function fnBeforeUpload(file: FileType) {
console.log(file.type);
if (state.loading) return false;
const isType = ['application/pdf'].includes(file.type);
if (!isType) {

View File

@@ -539,7 +539,7 @@ onMounted(() => {
:drag="true"
:width="800"
:visible="modalState.visibleByView"
:footer="null"
:footer="false"
:maskClosable="false"
:keyboard="false"
:title="t('views.traceManage.pcap.textLogMsg')"