feat: 添加服务类型适配不同的显示菜单内容

This commit is contained in:
TsMask committed 2025-08-21 19:49:56 +08:00
1 parent 7916cc5a54
commit 2319cdf36b
69 files changed
+821 -296

No files matched your search

+86
View File
@@ -0,0 +1,86 @@
import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';
/**
* 查询核心网列表
* @param query 查询参数
* @returns object
*/
export function listCoreInfo(query: Record<string, any>) {
return request({
url: '/core/info/list',
method: 'GET',
params: query,
timeout: 60_000,
});
}
/**
* 查询核心网列表全部无分页
* @param query 查询参数
* @returns object
*/
export function listAllCoreInfo(query: Record<string, any>) {
return request({
url: '/core/info/list/all',
method: 'GET',
params: query,
timeout: 60_000,
});
}
/**
* 查询核心网信息详细
* @param id 信息ID
* @returns object
*/
export function getCoreInfo(id: string | number) {
return request({
url: `/core/info/${id}`,
method: 'GET',
});
}
/**
* 核心网信息新增
* @param data 核心网对象
* @returns object
*/
export function addCoreInfo(data: Record<string, any>) {
return request({
url: `/core/info`,
method: 'POST',
data: data,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
timeout: 30_000,
});
}
/**
* 核心网信息修改
* @param data 核心网对象
* @returns object
*/
export function updateCoreInfo(data: Record<string, any>) {
return request({
url: `/core/info`,
method: 'PUT',
data: data,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
timeout: 30_000,
});
}
/**
* 核心网信息删除
* @param id 信息ID
* @returns object
*/
export function delCoreInfo(id: string | number) {
return request({
url: `/core/info/${id}`,
method: 'DELETE',
timeout: 60_000,
});
}
+2 -18
View File
@@ -1,7 +1,5 @@
import { request } from '@/plugins/http-fetch'; import { request } from '@/plugins/http-fetch';
/** /**
* CBC列表 * CBC列表
* @param query 查询参数 * @param query 查询参数
@@ -16,8 +14,6 @@ export function listCBC(query: Record<string, any>) {
}); });
} }
/** /**
* CBC签约用户新增 * CBC签约用户新增
* @param data 签约对象 * @param data 签约对象
@@ -32,10 +28,7 @@ export function addCBC(data: Record<string, any>) {
}); });
} }
export function updateCBCStatus(data: any) {
export function updateCBCStatus(data:any) {
return request({ return request({
url: `/neData/cbc/message/${data.id}/${data.status}?neId=${data.neId}`, url: `/neData/cbc/message/${data.id}/${data.status}?neId=${data.neId}`,
method: 'PUT', method: 'PUT',
@@ -43,8 +36,7 @@ export function updateCBCStatus(data:any) {
}); });
} }
export function updateCBC(data: any) {
export function updateCBC(data:any) {
return request({ return request({
url: `/neData/cbc/message/${data.id}?neId=${data.neId}`, url: `/neData/cbc/message/${data.id}?neId=${data.neId}`,
method: 'PUT', method: 'PUT',
@@ -53,8 +45,6 @@ export function updateCBC(data:any) {
}); });
} }
/** /**
* CBC删除 * CBC删除
* @param data 签约对象 * @param data 签约对象
@@ -67,9 +57,3 @@ export function delCBC(neId: string, id: string) {
timeout: 180_000, timeout: 180_000,
}); });
} }
+9
View File
@@ -6,3 +6,12 @@ export const APP_REQUEST_HEADER_VERSION = 'X-App-Version';
/**应用-请求数据-密钥 */ /**应用-请求数据-密钥 */
export const APP_DATA_API_KEY = 'T9ox2DCzpLfJIPzkH9pKhsOTMOEMJcFv'; export const APP_DATA_API_KEY = 'T9ox2DCzpLfJIPzkH9pKhsOTMOEMJcFv';
/**应用-服务类型 单核心网 */
export const APP_SERVER_TYPE_O = 'oc';
/**应用-服务类型 多核心网 */
export const APP_SERVER_TYPE_M = 'mc';
/**应用-服务类型 租户核心网 */
export const APP_SERVER_TYPE_T = 'tc';
+3
View File
@@ -4,6 +4,9 @@ export const CACHE_SESSION_CRYPTO_API = 'cache:session:cryptoApi';
/**会话缓存-网络请求 */ /**会话缓存-网络请求 */
export const CACHE_SESSION_FATCH = 'cache:session:fatch'; export const CACHE_SESSION_FATCH = 'cache:session:fatch';
/**会话缓存-当前选中核心网 */
export const CACHE_SESSION_CORE = 'cache:session:core';
/**本地缓存-布局设置 */ /**本地缓存-布局设置 */
export const CACHE_LOCAL_PROCONFIG = 'cache:local:proConfig'; export const CACHE_LOCAL_PROCONFIG = 'cache:local:proConfig';
+29 -25
View File
@@ -5,7 +5,8 @@ import {
clearMenuItem, clearMenuItem,
MenuDataItem, MenuDataItem,
} from 'antdv-pro-layout'; } from 'antdv-pro-layout';
import RightContent from './components/RightContent.vue'; import CoreSelect from './components/CoreSelect.vue';
import HeaderContentRight from './components/HeaderContentRight/HeaderContentRight.vue';
import Tabs from './components/Tabs.vue'; import Tabs from './components/Tabs.vue';
import GlobalMask from '@/components/GlobalMask/index.vue'; import GlobalMask from '@/components/GlobalMask/index.vue';
import ForcePasswdChange from '@/components/ForcePasswdChange/index.vue'; import ForcePasswdChange from '@/components/ForcePasswdChange/index.vue';
@@ -21,7 +22,7 @@ import {
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import useLayoutStore from '@/store/modules/layout'; import useLayoutStore from '@/store/modules/layout';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useRouterStore from '@/store/modules/router'; import useRouterStore from '@/store/modules/router';
import useTabsStore from '@/store/modules/tabs'; import useTabsStore from '@/store/modules/tabs';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
@@ -29,12 +30,13 @@ import useAlarmStore from '@/store/modules/alarm';
import { getServerTime } from '@/api'; import { getServerTime } from '@/api';
import { MENU_PATH_INLINE } from '@/constants/menu-constants'; import { MENU_PATH_INLINE } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { APP_SERVER_TYPE_M } from '@/constants/app-constants';
import { getTimezoneOffset, parseDateUTCToStr } from '@/utils/date-utils'; import { getTimezoneOffset, parseDateUTCToStr } from '@/utils/date-utils';
import { parseUrlPath } from '@/plugins/file-static-url'; import { parseUrlPath } from '@/plugins/file-static-url';
const { proConfig, waterMarkContent } = useLayoutStore(); const { proConfig, waterMarkContent } = useLayoutStore();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const routerStore = useRouterStore(); const routerStore = useRouterStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const tabsStore = useTabsStore(); const tabsStore = useTabsStore();
const appStore = useAppStore(); const appStore = useAppStore();
const router = useRouter(); const router = useRouter();
@@ -68,19 +70,6 @@ watch(
); );
// 动态路由添加到菜单面板 // 动态路由添加到菜单面板
// const rootRoute = router.getRoutes().find(r => r.name === 'Root');
// if (rootRoute) {
// const children = routerStore.setRootRouterData(rootRoute.children);
// const buildRouterData = routerStore.buildRouterData;
// if (buildRouterData.length > 0) {
// rootRoute.children = children.concat(buildRouterData);
// } else {
// rootRoute.children = children;
// }
// }
//
// const { menuData } = getMenuData(clearMenuItem(router.getRoutes()));
//
const menuData = computed(() => { const menuData = computed(() => {
const rootRoute = router.getRoutes().find(r => r.name === 'Root'); const rootRoute = router.getRoutes().find(r => r.name === 'Root');
if (rootRoute) { if (rootRoute) {
@@ -92,9 +81,9 @@ const menuData = computed(() => {
rootRoute.children = children; rootRoute.children = children;
} }
} }
const neTypes = neListStore.getNeSelectOtions.map(v => v.value); const neTypes = neStore.getNeSelectOtions.map(v => v.value);
let routes = clearMenuItem(router.getRoutes()); let routes = clearMenuItem(router.getRoutes());
routes = routerStore.clearMenuItemByNeList(routes, neTypes); routes = routerStore.clearMenuItemByNeList(routes, '12345678', neTypes);
const { menuData } = getMenuData(routes); const { menuData } = getMenuData(routes);
return menuData; return menuData;
}); });
@@ -151,10 +140,13 @@ tabsStore.clear();
// LOGO地址 // LOGO地址
const logoUrl = computed(() => { const logoUrl = computed(() => {
let url = let url = parseUrlPath(appStore.filePathIcon);
appStore.logoType === 'brand' if (appStore.logoType === 'brand') {
? parseUrlPath(appStore.filePathBrand) url = parseUrlPath(appStore.filePathBrand);
: parseUrlPath(appStore.filePathIcon); }
if (layoutState.collapsed) {
url = parseUrlPath(appStore.filePathIcon);
}
if (url.indexOf('{language}') === -1) { if (url.indexOf('{language}') === -1) {
return url; return url;
@@ -294,13 +286,17 @@ onUnmounted(() => {
:alt="appStore.appName" :alt="appStore.appName"
:title="appStore.appName" :title="appStore.appName"
/> />
<h1 class="app-name" :title="appStore.appName"> <h1
class="app-name"
:title="appStore.appName"
v-show="!layoutState.collapsed"
>
<span class="marquee app-name_scrollable"> <span class="marquee app-name_scrollable">
{{ appStore.appName }} {{ appStore.appName }}
</span> </span>
</h1> </h1>
</template> </template>
<template v-if="appStore.logoType === 'brand'"> <template v-else-if="appStore.logoType === 'brand'">
<img <img
class="logo-brand" class="logo-brand"
:src="logoUrl" :src="logoUrl"
@@ -316,7 +312,15 @@ onUnmounted(() => {
<!--插槽-渲染顶部内容右端区域--> <!--插槽-渲染顶部内容右端区域-->
<template #headerContentRightRender> <template #headerContentRightRender>
<RightContent /> <HeaderContentRight />
</template>
<!--插槽-渲染顶部内容区域,仅布局side有效-->
<template
#menuHeaderExtraRender
v-if="useAppStore().serverType === APP_SERVER_TYPE_M"
>
<CoreSelect></CoreSelect>
</template> </template>
<!--插槽-导航标签项--> <!--插槽-导航标签项-->
+76
View File
@@ -0,0 +1,76 @@
<script lang="ts" setup>
import useCoreStore from '@/store/modules/core';
import useI18n from '@/hooks/useI18n';
import { ref } from 'vue';
const coreStore = useCoreStore();
const { t } = useI18n();
/**当前选中 */
const coreValue = ref(coreStore.current?.value || 'Global');
/**选择列表数据 */
const coreOtions = ref(coreStore.getSelectOtions);
/**选择过滤名称 */
const coreName = ref();
/**选择 */
function handleSelect(v: any, item: any) {
if (v === 'all') {
coreValue.value = 'Global';
} else {
coreValue.value = v;
}
coreStore.setCurrent(item);
}
/**搜索过滤 */
function handleSearchFilter(e: any) {
const label = e.target.value;
coreOtions.value = coreStore.getSelectOtions.filter((item: any) => {
return item.label.indexOf(label) !== -1;
});
}
/**内容挂载DOM */
function getPopupContainer(): any {
return document.querySelector('.ant-pro-sider');
}
</script>
<template>
<a-select
v-model:value="coreValue"
:options="coreOtions"
style="width: 100%"
:getPopupContainer="getPopupContainer"
@change="handleSelect"
>
<template #option="{ label }">
<span>{{ label }}</span>
</template>
<template #dropdownRender="{ menuNode: menu }">
<strong>Core</strong>
<a-button
type="default"
:block="true"
@click="handleSelect('all', { label: 'Global', value: 'all' })"
>
<template #icon> <HomeOutlined /> </template>
Global
</a-button>
<a-input-search
placeholder="Search Core Name"
style="width: 100%; margin: 4px 0"
v-model:value="coreName"
@change="handleSearchFilter"
>
<template #enterButton>
<ReloadOutlined />
</template>
</a-input-search>
<a-divider style="margin: 4px 0" />
<component :is="menu" />
</template>
</a-select>
</template>
<style lang="css" scoped></style>
@@ -0,0 +1,120 @@
<script setup lang="ts">
import svgLight from '@/assets/svg/light.svg';
import svgDark from '@/assets/svg/dark.svg';
import { viewTransitionTheme } from 'antdv-pro-layout';
import { useRouter } from 'vue-router';
import { useFullscreen } from '@vueuse/core';
import { hasPermissions } from '@/plugins/auth-user';
import useI18n from '@/hooks/useI18n';
import useLayoutStore from '@/store/modules/layout';
import useAppStore from '@/store/modules/app';
import useAlarmStore from '@/store/modules/alarm';
import LockScreen from './components/LockScreen.vue';
import UserProfile from './components/UserProfile.vue';
const { isFullscreen, toggle } = useFullscreen();
const { t, changeLocale, optionsLocale, currentLocale } = useI18n();
const layoutStore = useLayoutStore();
const appStore = useAppStore();
const router = useRouter();
/**告警数按钮提示跳转 */
function fnClickAlarm() {
router.push({ name: 'ActiveAlarm_2088' });
}
/**改变主题色 */
function fnClickTheme(e: any) {
viewTransitionTheme(isDarkMode => {
layoutStore.changeConf('theme', isDarkMode ? 'light' : 'dark');
}, e);
}
/**改变多语言 */
function fnChangeLocale(e: any) {
changeLocale(e.key);
}
</script>
<template>
<a-space :size="12" align="center">
<!-- 告警气泡 -->
<a-tooltip placement="bottomRight">
<template #title>{{ t('loayouts.rightContent.alarm') }}</template>
<a-button type="text" style="color: inherit" @click="fnClickAlarm">
<template #icon>
<a-badge
:count="useAlarmStore().activeAlarmTotal"
:overflow-count="99"
status="warning"
style="color: inherit"
>
<BellOutlined />
</a-badge>
</template>
</a-button>
</a-tooltip>
<!-- 锁屏操作 -->
<LockScreen></LockScreen>
<!-- 全屏操作 -->
<a-tooltip placement="bottomRight">
<template #title>{{ t('loayouts.rightContent.fullscreen') }}</template>
<a-button type="text" style="color: inherit" @click="toggle">
<template #icon>
<FullscreenExitOutlined v-if="isFullscreen" />
<FullscreenOutlined v-else />
</template>
</a-button>
</a-tooltip>
<!-- 明暗主题操作 -->
<a-tooltip placement="bottomRight">
<template #title>{{ t('loayouts.rightContent.theme') }}</template>
<a-button type="text" @click="fnClickTheme">
<template #icon>
<img
v-if="layoutStore.proConfig.theme === 'dark'"
:src="svgDark"
class="theme-icon"
/>
<img v-else :src="svgLight" class="theme-icon" />
</template>
</a-button>
</a-tooltip>
<!-- 多语言操作 -->
<a-dropdown
placement="bottomRight"
trigger="click"
v-if="appStore.i18nOpen && hasPermissions(['system:setting:i18n'])"
>
<a-button type="text" style="color: inherit">
<template #icon> <TranslationOutlined /> </template>
</a-button>
<template #overlay>
<a-menu @click="fnChangeLocale">
<a-menu-item
v-for="opt in optionsLocale"
:key="opt.value"
:disabled="opt.value == currentLocale"
>
{{ opt.label }}
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
<!-- 用户信息操作 -->
<UserProfile></UserProfile>
</a-space>
</template>
<style lang="css" scoped>
.theme-icon {
width: 18px;
height: 18px;
margin-bottom: 4px;
color: inherit;
}
</style>
@@ -0,0 +1,71 @@
<script lang="ts" setup>
import { ref } from 'vue';
import { useRoute, useRouter } from 'vue-router';
import { ProModal } from 'antdv-pro-modal';
import useMaskStore from '@/store/modules/mask';
import useI18n from '@/hooks/useI18n';
const maskStore = useMaskStore();
const route = useRoute();
const router = useRouter();
const { t } = useI18n();
/**锁屏确认 */
const lockConfirm = ref<boolean>(false);
/**锁屏密码 */
const lockPasswd = ref<string>('');
/**锁屏按钮提示 */
function fnClickLock() {
lockConfirm.value = true;
lockPasswd.value = '';
maskStore.lockPasswd = '';
}
/**锁屏确认跳转锁屏页面 */
function fnClickLockToPage() {
lockConfirm.value = false;
maskStore.lockPasswd = lockPasswd.value;
maskStore.handleMaskType('lock');
router.push({ name: 'LockScreen', query: { redirect: route.path } });
}
</script>
<template>
<span v-perms:has="['system:setting:lock']">
<a-tooltip placement="bottomRight">
<template #title>{{ t('loayouts.rightContent.lock') }}</template>
<a-button type="text" style="color: inherit" @click="fnClickLock()">
<template #icon>
<LockOutlined />
</template>
</a-button>
<ProModal
:drag="true"
:center-y="true"
:width="400"
:minHeight="200"
:mask-closable="false"
v-model:open="lockConfirm"
:title="t('loayouts.rightContent.lockTip')"
@ok="fnClickLockToPage()"
>
<a-space>
{{ t('loayouts.rightContent.lockPasswd') }}:
<a-input-password
v-model:value="lockPasswd"
:placeholder="t('common.inputPlease')"
>
<template #prefix>
<a-tooltip
:title="t('loayouts.rightContent.lockPasswdTip')"
placement="topLeft"
>
<UnlockOutlined />
</a-tooltip>
</template>
</a-input-password>
</a-space>
</ProModal>
</a-tooltip>
</span>
</template>
@@ -0,0 +1,83 @@
<script lang="ts" setup>
import { useRouter } from 'vue-router';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import useUserStore from '@/store/modules/user';
import useI18n from '@/hooks/useI18n';
const userStore = useUserStore();
const router = useRouter();
const { t } = useI18n();
/**头像展开项点击 */
function fnClick({ key }: MenuInfo) {
switch (key) {
case 'settings':
router.push({ name: 'Settings' });
break;
case 'profile':
router.push({ name: 'Profile' });
break;
case 'logout':
userStore.fnLogOut().finally(() => router.push({ name: 'Login' }));
break;
}
}
</script>
<template>
<a-dropdown placement="bottomRight" trigger="click">
<div class="user">
<a-avatar
shape="circle"
size="default"
:src="userStore.getAvatar"
:alt="userStore.userName"
></a-avatar>
<span class="nick">
{{ userStore.nickName }}
</span>
</div>
<template #overlay>
<a-menu @click="fnClick">
<!-- <a-menu-item key="profile">
<template #icon>
<UserOutlined />
</template>
<span>{{ t('loayouts.rightContent.profile') }}</span>
</a-menu-item> -->
<a-menu-item key="settings">
<template #icon>
<SettingOutlined />
</template>
<span>{{ t('loayouts.rightContent.settings') }}</span>
</a-menu-item>
<a-menu-divider />
<a-menu-item key="logout">
<template #icon>
<LogoutOutlined />
</template>
<span>{{ t('loayouts.rightContent.logout') }}</span>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</template>
<style lang="less" scoped>
.user {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
cursor: pointer;
.nick {
padding-left: 8px;
padding-right: 16px;
font-size: 16px;
max-width: 164px;
white-space: nowrap;
text-align: start;
text-overflow: ellipsis;
overflow: hidden;
}
}
</style>
+6 -3
View File
@@ -10,8 +10,9 @@ import { getAccessToken } from '@/plugins/auth-token';
import { validHttp } from '@/utils/regular-utils'; import { validHttp } from '@/utils/regular-utils';
import useUserStore from '@/store/modules/user'; import useUserStore from '@/store/modules/user';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import useNeListStore from '@/store/modules/ne_list';
import useRouterStore from '@/store/modules/router'; import useRouterStore from '@/store/modules/router';
import useCoreStore from '@/store/modules/core';
import useNeStore from '@/store/modules/ne';
// NProgress Configuration // NProgress Configuration
NProgress.configure({ showSpinner: false }); NProgress.configure({ showSpinner: false });
@@ -103,8 +104,10 @@ router.beforeEach(async (to, from, next) => {
const user = useUserStore(); const user = useUserStore();
if (user.roles && user.roles.length === 0) { if (user.roles && user.roles.length === 0) {
try { try {
// 获取核心网列表
await useCoreStore().fnCorelist();
// 获取网元信息 // 获取网元信息
await useNeListStore().fnNelist(); await useNeStore().fnNelist();
// 获取用户信息 // 获取用户信息
await user.fnGetInfo(); await user.fnGetInfo();
// 获取路由信息 // 获取路由信息
@@ -128,7 +131,7 @@ router.beforeEach(async (to, from, next) => {
} else if ( } else if (
to.meta.neType && to.meta.neType &&
to.meta.neType.length > 0 && to.meta.neType.length > 0 &&
!useNeListStore().fnHasNe(to.meta.neType) !useNeStore().fnHasNe(to.meta.neType)
) { ) {
next({ name: 'NotPermission' }); next({ name: 'NotPermission' });
} else { } else {
+4 -4
View File
@@ -23,8 +23,8 @@ type AppStore = {
version: string; version: string;
/**系统引导使用 */ /**系统引导使用 */
bootloader: boolean; bootloader: boolean;
/**服务版本 */ /**服务类型 oc 单核心网 mc 多核心网 tc 租户核心网 */
serverVersion: string; serverType: string;
// 用户登录认证 // 用户登录认证
loginAuth: boolean; loginAuth: boolean;
// 用户接口加密 // 用户接口加密
@@ -60,7 +60,7 @@ const useAppStore = defineStore('app', {
version: '-', version: '-',
bootloader: false, bootloader: false,
serverVersion: '-', serverType: '-',
loginAuth: true, loginAuth: true,
cryptoApi: true, cryptoApi: true,
serialNum: '-', serialNum: '-',
@@ -90,7 +90,7 @@ const useAppStore = defineStore('app', {
const res = await getSysConf(); const res = await getSysConf();
if (res.code === RESULT_CODE_SUCCESS && res.data) { if (res.code === RESULT_CODE_SUCCESS && res.data) {
this.version = res.data.version; this.version = res.data.version;
this.serverVersion = res.data.serverVersion; this.serverType = res.data.serverType;
this.bootloader = res.data.bootloader === 'true'; this.bootloader = res.data.bootloader === 'true';
// 引导时 // 引导时
if (this.bootloader) { if (this.bootloader) {
+72
View File
@@ -0,0 +1,72 @@
import {
RESULT_CODE_SUCCESS,
RESULT_MSG_SUCCESS,
} from '@/constants/result-constants';
import { defineStore } from 'pinia';
import { listAllCoreInfo } from '@/api/core/coreInfo';
import { localGetJSON, localSetJSON } from '@/utils/cache-local-utils';
import { CACHE_SESSION_CORE } from '@/constants/cache-keys-constants';
/**核心网信息类型 */
type Core = {
/**核心网列表 */
coreList: Record<string, any>[];
/**当前选择 */
current: Record<string, any>;
/**选择器单级父类型 */
coreSelectOtions: Record<string, any>[];
};
const useCoreStore = defineStore('core', {
state: (): Core => ({
coreList: [],
current: localGetJSON(CACHE_SESSION_CORE) || {
label: 'Global',
value: 'all',
},
coreSelectOtions: [],
}),
getters: {
getSelectOtions(): Record<string, any>[] {
return this.coreSelectOtions;
},
},
actions: {
setCurrent(value: Record<string, any> = {}) {
this.current = value;
localSetJSON(CACHE_SESSION_CORE, value);
},
// 刷新核心网列表
async fnCorelistRefresh() {
this.coreList = [];
return await this.fnCorelist();
},
// 获取核心网列表
async fnCorelist() {
// 有数据不请求
if (this.coreList.length > 0) {
return {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS['en_US'],
data: this.coreList,
};
}
const res = await listAllCoreInfo({});
if (res.code === RESULT_CODE_SUCCESS) {
// 原始列表
this.coreList = JSON.parse(JSON.stringify(res.data));
// 转选择器单级父类型
this.coreSelectOtions = res.data.map((item: any) => {
return {
label: item.name,
value: item.coreUid,
};
});
}
return res;
},
},
});
export default useCoreStore;
@@ -6,19 +6,19 @@ import {
import { listAllNeInfo } from '@/api/ne/neInfo'; import { listAllNeInfo } from '@/api/ne/neInfo';
import { parseDataToOptions } from '@/utils/parse-tree-utils'; import { parseDataToOptions } from '@/utils/parse-tree-utils';
/**网元列表信息类型 */ /**网元信息类型 */
type NeList = { type Ne = {
/**网元列表 */ /**网元列表 */
neList: Record<string, any>[]; list: Record<string, any>[];
/**级联options树结构 */ /**级联options树结构 */
neCascaderOptions: Record<string, any>[]; neCascaderOptions: Record<string, any>[];
/**选择器单级父类型 */ /**选择器单级父类型 */
neSelectOtions: Record<string, any>[]; neSelectOtions: Record<string, any>[];
}; };
const useNeListStore = defineStore('ne_list', { const useNeStore = defineStore('ne', {
state: (): NeList => ({ state: (): Ne => ({
neList: [], list: [],
neCascaderOptions: [], neCascaderOptions: [],
neSelectOtions: [], neSelectOtions: [],
}), }),
@@ -29,7 +29,7 @@ const useNeListStore = defineStore('ne_list', {
* @returns 级联options * @returns 级联options
*/ */
getNeList(state) { getNeList(state) {
return state.neList; return state.list;
}, },
/** /**
* 获取级联options树结构 * 获取级联options树结构
@@ -51,17 +51,17 @@ const useNeListStore = defineStore('ne_list', {
actions: { actions: {
// 刷新网元列表 // 刷新网元列表
async fnNelistRefresh() { async fnNelistRefresh() {
this.neList = []; this.list = [];
return await this.fnNelist(); return await this.fnNelist();
}, },
// 获取网元列表 // 获取网元列表
async fnNelist() { async fnNelist() {
// 有数据不请求 // 有数据不请求
if (this.neList.length > 0) { if (this.list.length > 0) {
return { return {
code: RESULT_CODE_SUCCESS, code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS['en_US'], msg: RESULT_MSG_SUCCESS['en_US'],
data: this.neList, data: this.list,
}; };
} }
const res = await listAllNeInfo({ const res = await listAllNeInfo({
@@ -70,7 +70,7 @@ const useNeListStore = defineStore('ne_list', {
}); });
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 原始列表 // 原始列表
this.neList = JSON.parse(JSON.stringify(res.data)); this.list = JSON.parse(JSON.stringify(res.data));
// 转级联数据 // 转级联数据
const options = parseDataToOptions( const options = parseDataToOptions(
@@ -97,7 +97,7 @@ const useNeListStore = defineStore('ne_list', {
* @returns boolean * @returns boolean
*/ */
fnHasNe(metaNeType: string[]) { fnHasNe(metaNeType: string[]) {
if (this.neList.length > 0) { if (this.list.length > 0) {
const neTypes = this.neSelectOtions.map(item => item.value); const neTypes = this.neSelectOtions.map(item => item.value);
let match = false; // 匹配 let match = false; // 匹配
for (const netype of metaNeType) { for (const netype of metaNeType) {
@@ -120,4 +120,4 @@ const useNeListStore = defineStore('ne_list', {
}, },
}); });
export default useNeListStore; export default useNeStore;
+26
View File
@@ -16,6 +16,11 @@ import {
MENU_COMPONENT_LAYOUT_LINK, MENU_COMPONENT_LAYOUT_LINK,
} from '@/constants/menu-constants'; } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useAppStore from '@/store/modules/app';
import {
APP_SERVER_TYPE_M,
APP_SERVER_TYPE_O,
} from '@/constants/app-constants';
/**路由构建参数类型 */ /**路由构建参数类型 */
type RouterStore = { type RouterStore = {
@@ -58,16 +63,36 @@ const useRouterStore = defineStore('router', {
/** /**
* 根据网元类型过滤菜单 * 根据网元类型过滤菜单
* @param routes 经过clearMenuItem(router.getRoutes())处理 * @param routes 经过clearMenuItem(router.getRoutes())处理
* @param coreUid 核心网元uid
* @param neTypes 网元类型 * @param neTypes 网元类型
* @returns 过滤后的菜单 * @returns 过滤后的菜单
*/ */
clearMenuItemByNeList( clearMenuItemByNeList(
routes: RouteRecord[] | RouteRecordRaw[], routes: RouteRecord[] | RouteRecordRaw[],
coreUid: string,
neTypes: string[] neTypes: string[]
): RouteRecordRaw[] { ): RouteRecordRaw[] {
return routes return routes
.map((item: RouteRecord | RouteRecordRaw) => { .map((item: RouteRecord | RouteRecordRaw) => {
const finalItem = { ...item }; const finalItem = { ...item };
// 过滤核心网菜单
switch (useAppStore().serverType) {
case APP_SERVER_TYPE_O:
break;
case APP_SERVER_TYPE_M:
// 过滤核心网菜单
if (coreUid.length < 8 && finalItem.meta?.core == true) {
// 全局 网元菜单
return null;
}
if (coreUid.length == 8 && finalItem.meta?.core == false) {
// 核心网 非网元菜单
return null;
}
break;
}
// 过滤网元类型 // 过滤网元类型
if ( if (
Array.isArray(finalItem.meta?.neType) && Array.isArray(finalItem.meta?.neType) &&
@@ -96,6 +121,7 @@ const useRouterStore = defineStore('router', {
if (finalItem.children && finalItem.children.length > 0) { if (finalItem.children && finalItem.children.length > 0) {
const children = this.clearMenuItemByNeList( const children = this.clearMenuItemByNeList(
finalItem.children, finalItem.children,
coreUid,
neTypes neTypes
); );
// 如果子菜单都被过滤掉了,就不显示 // 如果子菜单都被过滤掉了,就不显示
+3 -3
View File
@@ -11,7 +11,7 @@ import {
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { listAMFDataUE, delAMFDataUE, exportAMFDataUE } from '@/api/neData/amf'; import { listAMFDataUE, delAMFDataUE, exportAMFDataUE } from '@/api/neData/amf';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { OptionsType, WS } from '@/plugins/ws-websocket'; import { OptionsType, WS } from '@/plugins/ws-websocket';
@@ -22,7 +22,7 @@ import { useClipboard } from '@vueuse/core';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
/**网元可选 */ /**网元可选 */
@@ -464,7 +464,7 @@ onMounted(() => {
}); });
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'AMF') { if (item.value === 'AMF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -11,7 +11,7 @@ import {
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
delIMSDataCDR, delIMSDataCDR,
exportIMSDataCDR, exportIMSDataCDR,
@@ -26,7 +26,7 @@ import dayjs, { type Dayjs } from 'dayjs';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
@@ -523,7 +523,7 @@ onMounted(() => {
}); });
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'IMS') { if (item.value === 'IMS') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -12,7 +12,7 @@ import {
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { listMMEDataUE, delMMEDataUE, exportMMEDataUE } from '@/api/neData/mme'; import { listMMEDataUE, delMMEDataUE, exportMMEDataUE } from '@/api/neData/mme';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { OptionsType, WS } from '@/plugins/ws-websocket'; import { OptionsType, WS } from '@/plugins/ws-websocket';
@@ -22,7 +22,7 @@ import { useClipboard } from '@vueuse/core';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
@@ -472,7 +472,7 @@ onMounted(() => {
}); });
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'MME') { if (item.value === 'MME') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+9 -9
View File
@@ -27,13 +27,13 @@ import useWS from './hooks/useWS';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { upfWhoId } from './hooks/useWS'; import { upfWhoId } from './hooks/useWS';
const router = useRouter(); const router = useRouter();
const appStore = useAppStore(); const appStore = useAppStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const { wsSend, userActivitySend, upfTFSend, reSendUPF } = useWS(); const { wsSend, userActivitySend, upfTFSend, reSendUPF } = useWS();
@@ -292,7 +292,7 @@ const getPopupContainer = () => {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UPF') { if (item.value === 'UPF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
@@ -307,7 +307,7 @@ onMounted(() => {
fnSelectUDM({ key: udmOtions.value[0].value }); fnSelectUDM({ key: udmOtions.value[0].value });
} }
// 过滤不可用的网元 // 过滤不可用的网元
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return ['UDM', 'SMF', 'IMS', 'AMF', 'MME'].includes(item.value); return ['UDM', 'SMF', 'IMS', 'AMF', 'MME'].includes(item.value);
} }
@@ -362,7 +362,7 @@ onBeforeUnmount(() => {
<div <div
class="item toRouter" class="item toRouter"
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
v-if="neListStore.fnHasNe(['udm'])" v-if="neStore.fnHasNe(['udm'])"
> >
<div @click="fnToRouter('UdmSub_2001')"> <div @click="fnToRouter('UdmSub_2001')">
<UserOutlined <UserOutlined
@@ -399,7 +399,7 @@ onBeforeUnmount(() => {
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
style="margin: 0 12px" style="margin: 0 12px"
v-perms:has="['dashboard:overview:imsUeNum']" v-perms:has="['dashboard:overview:imsUeNum']"
v-if="neListStore.fnHasNe(['ims'])" v-if="neStore.fnHasNe(['ims'])"
> >
<div> <div>
<img :src="svgUserIMS" style="width: 18px; margin-right: 8px" /> <img :src="svgUserIMS" style="width: 18px; margin-right: 8px" />
@@ -414,7 +414,7 @@ onBeforeUnmount(() => {
@click="fnToRouter('SmfSub_2005')" @click="fnToRouter('SmfSub_2005')"
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
v-perms:has="['dashboard:overview:smfUeNum']" v-perms:has="['dashboard:overview:smfUeNum']"
v-if="neListStore.fnHasNe(['smf'])" v-if="neStore.fnHasNe(['smf'])"
> >
<div> <div>
<img :src="svgUserSMF" style="width: 18px; margin-right: 8px" /> <img :src="svgUserSMF" style="width: 18px; margin-right: 8px" />
@@ -430,7 +430,7 @@ onBeforeUnmount(() => {
<div <div
class="skim panel base" class="skim panel base"
v-perms:has="['dashboard:overview:gnbBase']" v-perms:has="['dashboard:overview:gnbBase']"
v-if="neListStore.fnHasNe(['amf'])" v-if="neStore.fnHasNe(['amf'])"
> >
<div class="inner"> <div class="inner">
<h3> <h3>
@@ -471,7 +471,7 @@ onBeforeUnmount(() => {
<div <div
class="skim panel base" class="skim panel base"
v-perms:has="['dashboard:overview:enbBase']" v-perms:has="['dashboard:overview:enbBase']"
v-if="neListStore.fnHasNe(['mme'])" v-if="neStore.fnHasNe(['mme'])"
> >
<div class="inner"> <div class="inner">
<h3> <h3>
+10 -10
View File
@@ -29,13 +29,13 @@ import useWS from './hooks/useWS';
import useAppStore from '@/store/modules/app'; import useAppStore from '@/store/modules/app';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { useRouter } from 'vue-router'; import { useRouter } from 'vue-router';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { upfWhoId } from './hooks/useWS'; import { upfWhoId } from './hooks/useWS';
import { listAMFNbStatelist } from '@/api/neData/amf'; import { listAMFNbStatelist } from '@/api/neData/amf';
import { listMMENbStatelist } from '@/api/neData/mme'; import { listMMENbStatelist } from '@/api/neData/mme';
const neListStore = useNeListStore(); const neStore = useNeStore();
const router = useRouter(); const router = useRouter();
const appStore = useAppStore(); const appStore = useAppStore();
const { t } = useI18n(); const { t } = useI18n();
@@ -407,7 +407,7 @@ const getPopupContainer = () => {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.getNeCascaderOptions.forEach(item => {
console.log(item) console.log(item)
if (item.value === 'UPF') { if (item.value === 'UPF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
@@ -426,7 +426,7 @@ onMounted(() => {
// fnSelectNeRe({ key: onlineArr[0].value }); // fnSelectNeRe({ key: onlineArr[0].value });
// } // }
// 过滤不可用的网元 // 过滤不可用的网元
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return ['UDM', 'SMF', 'IMS', 'AMF', 'MME'].includes(item.value); return ['UDM', 'SMF', 'IMS', 'AMF', 'MME'].includes(item.value);
} }
@@ -443,7 +443,7 @@ onMounted(() => {
let onlineArr: Record<string, any>[] = []; let onlineArr: Record<string, any>[] = [];
// UDM // UDM
neListStore.neList.forEach((v: any) => { neStore.list.forEach((v: any) => {
if ( if (
v.status && v.status &&
[ [
@@ -511,7 +511,7 @@ onBeforeUnmount(() => {
<div <div
class="item toRouter" class="item toRouter"
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
v-if="neListStore.fnHasNe(['udm'])" v-if="neStore.fnHasNe(['udm'])"
> >
<div @click="fnToRouter('UdmSub_2001')"> <div @click="fnToRouter('UdmSub_2001')">
<UserOutlined <UserOutlined
@@ -548,7 +548,7 @@ onBeforeUnmount(() => {
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
style="margin: 0 12px" style="margin: 0 12px"
v-perms:has="['dashboard:overview:imsUeNum']" v-perms:has="['dashboard:overview:imsUeNum']"
v-if="neListStore.fnHasNe(['ims'])" v-if="neStore.fnHasNe(['ims'])"
> >
<div> <div>
<img :src="svgUserIMS" style="width: 18px; margin-right: 8px" /> <img :src="svgUserIMS" style="width: 18px; margin-right: 8px" />
@@ -563,7 +563,7 @@ onBeforeUnmount(() => {
@click="fnToRouter('SmfSub_2005')" @click="fnToRouter('SmfSub_2005')"
:title="t('views.dashboard.overview.toRouter')" :title="t('views.dashboard.overview.toRouter')"
v-perms:has="['dashboard:overview:smfUeNum']" v-perms:has="['dashboard:overview:smfUeNum']"
v-if="neListStore.fnHasNe(['smf'])" v-if="neStore.fnHasNe(['smf'])"
> >
<div> <div>
<img :src="svgUserSMF" style="width: 18px; margin-right: 8px" /> <img :src="svgUserSMF" style="width: 18px; margin-right: 8px" />
@@ -679,7 +679,7 @@ onBeforeUnmount(() => {
<div <div
class="skim panel base" class="skim panel base"
v-perms:has="['dashboard:overview:gnbBase']" v-perms:has="['dashboard:overview:gnbBase']"
v-if="neListStore.fnHasNe(['amf'])" v-if="neStore.fnHasNe(['amf'])"
> >
<div class="inner"> <div class="inner">
<h3 class="leftright"> <h3 class="leftright">
@@ -737,7 +737,7 @@ onBeforeUnmount(() => {
<div <div
class="skim panel base" class="skim panel base"
v-perms:has="['dashboard:overview:enbBase']" v-perms:has="['dashboard:overview:enbBase']"
v-if="neListStore.fnHasNe(['mme'])" v-if="neStore.fnHasNe(['mme'])"
> >
<div class="inner"> <div class="inner">
<h3></h3> <h3></h3>
+3 -3
View File
@@ -5,7 +5,7 @@ import { Modal, message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { import {
RESULT_CODE_ERROR, RESULT_CODE_ERROR,
@@ -23,7 +23,7 @@ import saveAs from 'file-saver';
import { useClipboard } from '@vueuse/core'; import { useClipboard } from '@vueuse/core';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
@@ -476,7 +476,7 @@ function wsMessage(res: Record<string, any>) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'SGWC') { if (item.value === 'SGWC') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -5,7 +5,7 @@ import { Modal, message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { import {
RESULT_CODE_ERROR, RESULT_CODE_ERROR,
@@ -23,7 +23,7 @@ import dayjs, { type Dayjs } from 'dayjs';
import { useClipboard } from '@vueuse/core'; import { useClipboard } from '@vueuse/core';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
@@ -503,7 +503,7 @@ function wsMessage(res: Record<string, any>) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'SMF') { if (item.value === 'SMF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -35,11 +35,11 @@ import {
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import { parseSizeFromByte } from '@/utils/parse-utils'; import { parseSizeFromByte } from '@/utils/parse-utils';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
const ws = new WS(); const ws = new WS();
/**图DOM节点实例对象 */ /**图DOM节点实例对象 */
@@ -563,7 +563,7 @@ function fnRealTime() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'SMF') { if (item.value === 'SMF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -11,7 +11,7 @@ import {
RESULT_CODE_ERROR, RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
delSMSCDataCDR, delSMSCDataCDR,
exportSMSCDataCDR, exportSMSCDataCDR,
@@ -26,7 +26,7 @@ import { hasPermissions } from '@/plugins/auth-user';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const { copy } = useClipboard({ legacy: true }); const { copy } = useClipboard({ legacy: true });
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const ws = new WS(); const ws = new WS();
const queue = new PQueue({ concurrency: 1, autoStart: true }); const queue = new PQueue({ concurrency: 1, autoStart: true });
@@ -477,7 +477,7 @@ onMounted(() => {
}); });
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'SMSC') { if (item.value === 'SMSC') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+4 -4
View File
@@ -17,7 +17,7 @@ import {
exportAlarm, exportAlarm,
} from '@/api/faultManage/actAlarm'; } from '@/api/faultManage/actAlarm';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
@@ -26,7 +26,7 @@ import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { readLoalXlsx } from '@/utils/execl-utils'; import { readLoalXlsx } from '@/utils/execl-utils';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
@@ -861,7 +861,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
/> />
@@ -1362,7 +1362,7 @@ onMounted(() => {
> >
<a-auto-complete <a-auto-complete
v-model:value="modalState.showSetFrom.ne_type" v-model:value="modalState.showSetFrom.ne_type"
:options="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
+3 -3
View File
@@ -8,14 +8,14 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import { listAct, exportAll } from '@/api/faultManage/eventAlarm'; import { listAct, exportAll } from '@/api/faultManage/eventAlarm';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
import { writeSheet } from '@/utils/execl-utils'; import { writeSheet } from '@/utils/execl-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**表格字段列排序 */ /**表格字段列排序 */
@@ -453,7 +453,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
/> />
@@ -14,13 +14,13 @@ import {
import { listAct, exportAlarm } from '@/api/faultManage/actAlarm'; import { listAct, exportAlarm } from '@/api/faultManage/actAlarm';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import { writeSheet } from '@/utils/execl-utils'; import { writeSheet } from '@/utils/execl-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
@@ -660,7 +660,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
/> />
+3 -3
View File
@@ -7,13 +7,13 @@ import { ColumnsType } from 'ant-design-vue/es/table';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listAlarm } from '@/api/logManage/alarm'; import { listAlarm } from '@/api/logManage/alarm';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore();
/**字典数据 */ /**字典数据 */
let dict: { let dict: {
/**告警状态 */ /**告警状态 */
@@ -298,7 +298,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
allow-clear allow-clear
/> />
+3 -3
View File
@@ -8,13 +8,13 @@ import BackupModal from '@/views/ne/neConfigBackup/components/BackupModal.vue';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import { delFile, getFile, listFile } from '@/api/tool/file'; import { delFile, getFile, listFile } from '@/api/tool/file';
import { parseSizeFromFile } from '@/utils/parse-utils'; import { parseSizeFromFile } from '@/utils/parse-utils';
import { pushBackupFTP } from '@/api/neData/backup'; import { pushBackupFTP } from '@/api/neData/backup';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**文件来源 */ /**文件来源 */
let sourceState = reactive({ let sourceState = reactive({
@@ -318,7 +318,7 @@ function fnSyncFileToFTP(fileName: string) {
onMounted(() => { onMounted(() => {
sourceState.list = sourceState.list.filter(item => { sourceState.list = sourceState.list.filter(item => {
if (!item.neType) return true; if (!item.neType) return true;
return neListStore.fnHasNe([item.neType]); return neStore.fnHasNe([item.neType]);
}); });
}); });
</script> </script>
+3 -3
View File
@@ -7,13 +7,13 @@ import { ColumnsType } from 'ant-design-vue/es/table';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listForwarding } from '@/api/logManage/forwarding'; import { listForwarding } from '@/api/logManage/forwarding';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import dayjs, { type Dayjs } from 'dayjs'; import dayjs, { type Dayjs } from 'dayjs';
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**字典数据 */ /**字典数据 */
let dict: { let dict: {
/**告警状态 */ /**告警状态 */
@@ -312,7 +312,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
allow-clear allow-clear
/> />
+3 -3
View File
@@ -4,13 +4,13 @@ import { PageContainer } from 'antdv-pro-layout';
import { Modal, message } from 'ant-design-vue/es'; import { Modal, message } from 'ant-design-vue/es';
import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue'; import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils'; import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { getMMLByNE, sendMMlByNE } from '@/api/mmlManage/neOperate'; import { getMMLByNE, sendMMlByNE } from '@/api/mmlManage/neOperate';
import { uploadFileToNE } from '@/api/tool/file'; import { uploadFileToNE } from '@/api/tool/file';
import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface'; import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**网元参数 */ /**网元参数 */
@@ -541,7 +541,7 @@ function fnAutoCompleteKeydown(evt: any) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return !['OMC', 'CBC', 'SGWC'].includes(item.value); // 过滤不可用的网元 return !['OMC', 'CBC', 'SGWC'].includes(item.value); // 过滤不可用的网元
} }
+3 -3
View File
@@ -4,14 +4,14 @@ import { PageContainer } from 'antdv-pro-layout';
import { Modal, message } from 'ant-design-vue/es'; import { Modal, message } from 'ant-design-vue/es';
import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue'; import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils'; import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { getMMLByOMC, sendMMlByOMC } from '@/api/mmlManage/omcOperate'; import { getMMLByOMC, sendMMlByOMC } from '@/api/mmlManage/omcOperate';
import { uploadFileToNE } from '@/api/tool/file'; import { uploadFileToNE } from '@/api/tool/file';
import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface'; import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOptions = ref<Record<string, any>[]>([]); let neOptions = ref<Record<string, any>[]>([]);
@@ -505,7 +505,7 @@ function fnAutoCompleteKeydown(evt: any) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'OMC') { if (item.value === 'OMC') {
neOptions.value = JSON.parse(JSON.stringify(item.children)); neOptions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -4,14 +4,14 @@ import { PageContainer } from 'antdv-pro-layout';
import { Modal, message } from 'ant-design-vue/es'; import { Modal, message } from 'ant-design-vue/es';
import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue'; import CodemirrorEdite from '@/components/CodemirrorEdite/index.vue';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils'; import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { getMMLByUDM, sendMMlByUDM } from '@/api/mmlManage/udmOperate'; import { getMMLByUDM, sendMMlByUDM } from '@/api/mmlManage/udmOperate';
import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface'; import { UploadRequestOption } from 'ant-design-vue/es/vc-upload/interface';
import { uploadFileToNE } from '@/api/tool/file'; import { uploadFileToNE } from '@/api/tool/file';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOptions = ref<Record<string, any>[]>([]); let neOptions = ref<Record<string, any>[]>([]);
@@ -505,7 +505,7 @@ function fnAutoCompleteKeydown(evt: any) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UDM') { if (item.value === 'UDM') {
neOptions.value = JSON.parse(JSON.stringify(item.children)); neOptions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -8,7 +8,7 @@ import { DataNode } from 'ant-design-vue/es/tree';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useOptions from './hooks/useOptions'; import useOptions from './hooks/useOptions';
import useConfigList from './hooks/useConfigList'; import useConfigList from './hooks/useConfigList';
import useConfigArray from './hooks/useConfigArray'; import useConfigArray from './hooks/useConfigArray';
@@ -16,7 +16,7 @@ import useConfigArrayChild from './hooks/useConfigArrayChild';
import useArrayImport from './hooks/useArrayImport'; import useArrayImport from './hooks/useArrayImport';
import useArrayBatchDel from './hooks/useArrayBatchDel'; import useArrayBatchDel from './hooks/useArrayBatchDel';
import { getAllNeConfig, getNeConfigData } from '@/api/ne/neConfig'; import { getAllNeConfig, getNeConfigData } from '@/api/ne/neConfig';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute(); const route = useRoute();
const { ruleVerification, smfByUPFIdLoadData, smfByUPFIdOptions } = useOptions({ const { ruleVerification, smfByUPFIdLoadData, smfByUPFIdOptions } = useOptions({
@@ -393,7 +393,7 @@ const { batchState, modalBatchOpen, modalBatchClose, modalBatchOk } =
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return !['LMF', 'NEF'].includes(item.value); // 过滤不可用的网元 return !['LMF', 'NEF'].includes(item.value); // 过滤不可用的网元
} }
+3 -3
View File
@@ -6,7 +6,7 @@ import { Form, Modal, TableColumnsType, message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import BackupModal from './components/BackupModal.vue'; import BackupModal from './components/BackupModal.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
@@ -21,7 +21,7 @@ import { pushBackupFTP } from '@/api/neData/backup';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**字典数据-状态 */ /**字典数据-状态 */
let dictStatus = ref<DictType[]>([]); let dictStatus = ref<DictType[]>([]);
@@ -404,7 +404,7 @@ function fnSyncFileToFTP(row: Record<string, any>) {
<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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
:allow-clear="true" :allow-clear="true"
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
+9 -8
View File
@@ -7,13 +7,13 @@ import { DataNode } from 'ant-design-vue/es/tree';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useOptions from './hooks/useOptions'; import useOptions from './hooks/useOptions';
import useConfigList from './hooks/useConfigList'; import useConfigList from './hooks/useConfigList';
import useConfigArray from './hooks/useConfigArray'; import useConfigArray from './hooks/useConfigArray';
import useConfigArrayChild from './hooks/useConfigArrayChild'; import useConfigArrayChild from './hooks/useConfigArrayChild';
import { getAllNeConfig, getNeConfigData } from '@/api/ne/neConfig'; import { getAllNeConfig, getNeConfigData } from '@/api/ne/neConfig';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const { ruleVerification, smfByUPFIdLoadData, smfByUPFIdOptions } = useOptions({ const { ruleVerification, smfByUPFIdLoadData, smfByUPFIdOptions } = useOptions({
t, t,
@@ -536,7 +536,7 @@ const {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neCascaderOptions.value = neListStore.getNeSelectOtions.filter( neCascaderOptions.value = neStore.getNeSelectOtions.filter(
(item: any) => { (item: any) => {
return !['LMF', 'NEF'].includes(item.value); // 过滤不可用的网元 return !['LMF', 'NEF'].includes(item.value); // 过滤不可用的网元
} }
@@ -767,9 +767,10 @@ onMounted(() => {
@dblclick="listEdit(record)" @dblclick="listEdit(record)"
> >
<template v-if="record['type'] === 'enum'"> <template v-if="record['type'] === 'enum'">
{{ JSON.parse(record['filter'])[text] || '&nbsp;' }} {{ JSON.parse(record['filter'])[text] }}
</template> </template>
<template v-else>{{ `${text}` || '&nbsp;' }}</template> <template v-else>{{ `${text}` }}</template>
&nbsp; <!-- 空格占位 -->
<EditOutlined <EditOutlined
class="editable-cell__icon" class="editable-cell__icon"
@click="listEdit(record)" @click="listEdit(record)"
@@ -890,7 +891,7 @@ onMounted(() => {
{{ JSON.parse(text['filter'])[text.value] }} {{ JSON.parse(text['filter'])[text.value] }}
</template> </template>
<template v-else> <template v-else>
{{ `${text.value}` || '&nbsp;' }} {{ `${text.value}` }}
</template> </template>
</div> </div>
</div> </div>
@@ -976,7 +977,7 @@ onMounted(() => {
{{ JSON.parse(text['filter'])[text.value] }} {{ JSON.parse(text['filter'])[text.value] }}
</template> </template>
<template v-else> <template v-else>
{{ `${text.value}` || '&nbsp;' }} {{ `${text.value}` }}
</template> </template>
</div> </div>
</div> </div>
@@ -1089,7 +1090,7 @@ onMounted(() => {
></a-input> ></a-input>
</div> </div>
<div v-else> <div v-else>
{{ `${item.value || '&nbsp;'}` }} {{ `${item.value }}
</div> </div>
</div> </div>
</a-tooltip> </a-tooltip>
+3 -3
View File
@@ -7,13 +7,13 @@ import { Modal, message } from 'ant-design-vue/es';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { getNeFile, listNeFiles } from '@/api/tool/neFile'; import { getNeFile, listNeFiles } from '@/api/tool/neFile';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import ViewDrawer from './components/ViewDrawer.vue'; import ViewDrawer from './components/ViewDrawer.vue';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { parseSizeFromFile } from '@/utils/parse-utils'; import { parseSizeFromFile } from '@/utils/parse-utils';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute(); const route = useRoute();
@@ -300,7 +300,7 @@ onMounted(() => {
<span>{{ t('views.logManage.neFile.neType') }}:</span>&nbsp; <span>{{ t('views.logManage.neFile.neType') }}:</span>&nbsp;
<a-cascader <a-cascader
v-model:value="neTypeSelect" v-model:value="neTypeSelect"
:options="neListStore.getNeCascaderOptions" :options="neStore.getNeCascaderOptions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.logManage.neFile.neTypePlease')" :placeholder="t('views.logManage.neFile.neTypePlease')"
+6 -6
View File
@@ -7,12 +7,12 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { listNeInfo, delNeInfo, stateNeInfo } from '@/api/ne/neInfo'; import { listNeInfo, delNeInfo, stateNeInfo } from '@/api/ne/neInfo';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeOptions from './hooks/useNeOptions'; import useNeOptions from './hooks/useNeOptions';
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const { const {
fnNeStart, fnNeStart,
@@ -262,7 +262,7 @@ function reloadRowInfo(row: Record<string, any>) {
} }
}) })
.finally(() => { .finally(() => {
neListStore.fnNelistRefresh(); neStore.fnNelistRefresh();
}); });
} }
@@ -308,7 +308,7 @@ function fnRecordDelete(id: string) {
} }
}); });
// 刷新缓存 // 刷新缓存
neListStore.fnNelistRefresh(); neStore.fnNelistRefresh();
} else { } else {
message.error({ message.error({
content: `${res.msg}`, content: `${res.msg}`,
@@ -404,7 +404,7 @@ function fnGetList(pageNum?: number) {
}) })
.finally(() => { .finally(() => {
// 刷新缓存的网元信息 // 刷新缓存的网元信息
neListStore.fnNelistRefresh(); neStore.fnNelistRefresh();
}); });
} }
@@ -435,7 +435,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
+3 -3
View File
@@ -4,7 +4,7 @@ import { PageContainer } from 'antdv-pro-layout';
import { Modal, TableColumnsType, message } from 'ant-design-vue/es'; import { Modal, TableColumnsType, message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
@@ -12,7 +12,7 @@ import { listNeLicense, stateNeLicense } from '@/api/ne/neLicense';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const EditModal = defineAsyncComponent( const EditModal = defineAsyncComponent(
() => import('./components/EditModal.vue') () => import('./components/EditModal.vue')
); );
@@ -348,7 +348,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
:allow-clear="true" :allow-clear="true"
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
@@ -8,9 +8,9 @@ import { regExpIPv4, regExpIPv6 } from '@/utils/regular-utils';
import { fnRestStepState, fnToStepName, stepState } from '../hooks/useStep'; import { fnRestStepState, fnToStepName, stepState } from '../hooks/useStep';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**字典数据 */ /**字典数据 */
@@ -201,7 +201,7 @@ function fnModalOk() {
duration: 3, duration: 3,
}); });
neListStore.fnNelistRefresh(); // 刷新缓存的网元信息 neStore.fnNelistRefresh(); // 刷新缓存的网元信息
stepState.neInfo = from; // 保存网元信息 stepState.neInfo = from; // 保存网元信息
modalState.stepNext = true; // 开启下一步 modalState.stepNext = true; // 开启下一步
} else { } else {
+3 -3
View File
@@ -1,8 +1,8 @@
import { reactive, toRaw } from 'vue'; import { reactive, toRaw } from 'vue';
import { getPara5GFilee, savePara5GFile, updateNeInfo } from '@/api/ne/neInfo'; import { getPara5GFilee, savePara5GFile, updateNeInfo } from '@/api/ne/neInfo';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
const neListStore = useNeListStore(); const neStore = useNeStore();
/**对象信息信息状态类型 */ /**对象信息信息状态类型 */
type StateType = { type StateType = {
@@ -38,7 +38,7 @@ export function usePara5G() {
/**载入数据*/ /**载入数据*/
function fnReloadData() { function fnReloadData() {
state.confirmLoading = true; state.confirmLoading = true;
Promise.all([getPara5GFilee(), neListStore.fnNelistRefresh()]).then( Promise.all([getPara5GFilee(), neStore.fnNelistRefresh()]).then(
resArr => { resArr => {
// 已保存的配置 // 已保存的配置
if (resArr[0].code === RESULT_CODE_SUCCESS) { if (resArr[0].code === RESULT_CODE_SUCCESS) {
+3 -3
View File
@@ -4,14 +4,14 @@ import { PageContainer } from 'antdv-pro-layout';
import { Modal, TableColumnsType, message } from 'ant-design-vue/es'; import { Modal, TableColumnsType, message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listNeSoftware, delNeSoftware } from '@/api/ne/neSoftware'; import { listNeSoftware, delNeSoftware } from '@/api/ne/neSoftware';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { downloadFile } from '@/api/tool/file'; import { downloadFile } from '@/api/tool/file';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
// 异步加载组件 // 异步加载组件
@@ -351,7 +351,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
+3 -3
View File
@@ -10,7 +10,7 @@ import {
} from 'ant-design-vue/es'; } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listNeVersion, operateNeVersion } from '@/api/ne/neVersion'; import { listNeVersion, operateNeVersion } from '@/api/ne/neVersion';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
@@ -18,7 +18,7 @@ import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useMaskStore from '@/store/modules/mask'; import useMaskStore from '@/store/modules/mask';
const maskStore = useMaskStore(); const maskStore = useMaskStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
@@ -463,7 +463,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
+3 -3
View File
@@ -8,13 +8,13 @@ import BackupModal from '@/views/ne/neConfigBackup/components/BackupModal.vue';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import { delFile, getFile, listFile } from '@/api/tool/file'; import { delFile, getFile, listFile } from '@/api/tool/file';
import { parseSizeFromFile } from '@/utils/parse-utils'; import { parseSizeFromFile } from '@/utils/parse-utils';
import { pushBackupFTP } from '@/api/neData/backup'; import { pushBackupFTP } from '@/api/neData/backup';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**文件来源 */ /**文件来源 */
let sourceState = reactive({ let sourceState = reactive({
@@ -308,7 +308,7 @@ function fnSyncFileToFTP(fileName: string) {
onMounted(() => { onMounted(() => {
sourceState.list = sourceState.list.filter(item => { sourceState.list = sourceState.list.filter(item => {
if (!item.neType) return true; if (!item.neType) return true;
return neListStore.fnHasNe([item.neType]); return neStore.fnHasNe([item.neType]);
}); });
}); });
</script> </script>
+3 -3
View File
@@ -6,11 +6,11 @@ import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
import { listAMFNblist } from '@/api/neData/amf'; import { listAMFNblist } from '@/api/neData/amf';
import { listMMENblist } from '@/api/neData/mme'; import { listMMENblist } from '@/api/neData/mme';
const neListStore = useNeListStore(); const neStore = useNeStore();
const route = useRoute(); const route = useRoute();
const { t } = useI18n(); const { t } = useI18n();
@@ -264,7 +264,7 @@ function fnGetList(pageNum?: number) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
for (const item of neListStore.getNeCascaderOptions) { for (const item of neStore.getNeCascaderOptions) {
// 过滤不可用的网元 // 过滤不可用的网元
if (!['AMF', 'MME'].includes(item.value)) continue; if (!['AMF', 'MME'].includes(item.value)) continue;
const v = JSON.parse(JSON.stringify(item)); const v = JSON.parse(JSON.stringify(item));
+3 -3
View File
@@ -12,7 +12,7 @@ import { SizeType } from 'ant-design-vue/es/config-provider';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import { ProModal } from 'antdv-pro-modal'; import { ProModal } from 'antdv-pro-modal';
import UploadModal from '@/components/UploadModal/index.vue'; import UploadModal from '@/components/UploadModal/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
import { import {
@@ -32,7 +32,7 @@ import saveAs from 'file-saver';
import { readSheet, writeSheet } from '@/utils/execl-utils'; import { readSheet, writeSheet } from '@/utils/execl-utils';
import { useRoute } from 'vue-router'; import { useRoute } from 'vue-router';
const route = useRoute(); const route = useRoute();
const neListStore = useNeListStore(); const neStore = useNeStore();
// 异步加载组件 // 异步加载组件
const HistoryModal = defineAsyncComponent( const HistoryModal = defineAsyncComponent(
@@ -657,7 +657,7 @@ async function fnModalImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (['AMF', 'MME'].includes(item.value)) { if (['AMF', 'MME'].includes(item.value)) {
neCascaderOptions.value.push(JSON.parse(JSON.stringify(item))); neCascaderOptions.value.push(JSON.parse(JSON.stringify(item)));
} }
+3 -3
View File
@@ -5,7 +5,7 @@ import { listAMFNbStatelist } from '@/api/neData/amf';
import { parseBasePath } from '@/plugins/file-static-url'; import { parseBasePath } from '@/plugins/file-static-url';
import { edgeLineAnimateState } from '@/views/monitor/topologyBuild/hooks/registerEdge'; import { edgeLineAnimateState } from '@/views/monitor/topologyBuild/hooks/registerEdge';
import { nodeImageAnimateState } from '@/views/monitor/topologyBuild/hooks/registerNode'; import { nodeImageAnimateState } from '@/views/monitor/topologyBuild/hooks/registerNode';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { stateNeInfo } from '@/api/ne/neInfo'; import { stateNeInfo } from '@/api/ne/neInfo';
@@ -13,7 +13,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import { useFullscreen } from '@vueuse/core'; import { useFullscreen } from '@vueuse/core';
import { listMMENbStatelist } from '@/api/neData/mme'; import { listMMENbStatelist } from '@/api/neData/mme';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**图DOM节点实例对象 */ /**图DOM节点实例对象 */
const graphG6Dom = useTemplateRef('graphG6Dom'); const graphG6Dom = useTemplateRef('graphG6Dom');
@@ -380,7 +380,7 @@ async function fnGraphDataBase() {
edges: [], edges: [],
}; };
// 添加基础网元 // 添加基础网元
for (const item of neListStore.getNeCascaderOptions) { for (const item of neStore.getNeCascaderOptions) {
if ('OMC' === item.value) { if ('OMC' === item.value) {
if (item.children?.length === 0) continue; if (item.children?.length === 0) continue;
// 是否存在OMC保证唯一 // 是否存在OMC保证唯一
@@ -2,12 +2,11 @@
import { reactive, ref, onMounted, toRaw } from 'vue'; import { reactive, ref, onMounted, toRaw } from 'vue';
import { PageContainer } from 'antdv-pro-layout'; import { PageContainer } from 'antdv-pro-layout';
import { ProModal } from 'antdv-pro-modal'; import { ProModal } from 'antdv-pro-modal';
import { message, Modal, Form, notification } from 'ant-design-vue/es'; import { message, Modal, Form } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import useNeStore from '@/store/modules/ne';
import useNeListStore from '@/store/modules/ne_list';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { import {
@@ -16,9 +15,9 @@ import {
listCBC, listCBC,
updateCBCStatus, updateCBCStatus,
updateCBC, updateCBC,
} from '@/api/cbc/cbe'; } from '@/api/neData/cbc';
import { parseDateToStr, parseDuration } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**网元参数 */ /**网元参数 */
@@ -832,33 +831,29 @@ function pwsTypeChange(value: any) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
useNeListStore() neStore.neCascaderOptions.forEach(item => {
.fnNelist() if (item.value === 'CBC') {
.then(res => { neOtions.value = JSON.parse(JSON.stringify(item.children));
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) { }
if (res.data.length > 0) { });
let arr: Record<string, any>[] = []; if (neOtions.value.length === 0) {
res.data.forEach(i => { message.warning({
if (i.neType === 'CBC') { content: t('common.noData'),
arr.push({ value: i.neId, label: i.neName }); duration: 2,
}
});
neOtions.value = arr;
if (arr.length > 0) {
queryParams.neId = arr[0].value;
}
}
} else {
message.warning({
content: t('common.noData'),
duration: 2,
});
}
})
.finally(() => {
// 获取列表数据
fnGetList();
}); });
return;
}
if (neOtions.value.length > 0) {
queryParams.neId = neOtions.value[0].value;
} else {
message.warning({
content: t('common.noData'),
duration: 2,
});
}
// 获取列表数据
fnGetList();
}); });
</script> </script>
+3 -3
View File
@@ -5,12 +5,12 @@ import { message } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listIMSSessionList } from '@/api/neData/ims'; import { listIMSSessionList } from '@/api/neData/ims';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -173,7 +173,7 @@ function fnGetList(pageNum?: number) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'IMS') { if (item.value === 'IMS') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -6,7 +6,7 @@ import { message, Modal, Form, TableColumnsType } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import UploadModal from '@/components/UploadModal/index.vue'; import UploadModal from '@/components/UploadModal/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { import {
addPCFRule, addPCFRule,
@@ -21,7 +21,7 @@ import { uploadFileToNE } from '@/api/tool/file';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -693,7 +693,7 @@ function fnModalDownloadImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'PCF') { if (item.value === 'PCF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -7,11 +7,11 @@ import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import { listSMFSubList } from '@/api/neData/smf'; import { listSMFSubList } from '@/api/neData/smf';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -247,7 +247,7 @@ function fnGetList(pageNum?: number) {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'SMF') { if (item.value === 'SMF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -8,7 +8,7 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import UploadModal from '@/components/UploadModal/index.vue'; import UploadModal from '@/components/UploadModal/index.vue';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
@@ -27,7 +27,7 @@ import {
import { uploadFile } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import { getNeViewFile } from '@/api/tool/neFile'; import { getNeViewFile } from '@/api/tool/neFile';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -739,7 +739,7 @@ function fnModalDownloadImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UDM') { if (item.value === 'UDM') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -8,7 +8,7 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import UploadModal from '@/components/UploadModal/index.vue'; import UploadModal from '@/components/UploadModal/index.vue';
import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue'; import TableColumnsDnd from '@/components/TableColumnsDnd/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
@@ -27,7 +27,7 @@ import {
import { uploadFile } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import { getNeViewFile } from '@/api/tool/neFile'; import { getNeViewFile } from '@/api/tool/neFile';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -1130,7 +1130,7 @@ async function fnModalDownloadImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UDM') { if (item.value === 'UDM') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -22,14 +22,14 @@ import {
listUDMVOIP, listUDMVOIP,
resetUDMVOIP, resetUDMVOIP,
} from '@/api/neData/udm_voip'; } from '@/api/neData/udm_voip';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { uploadFile } from '@/api/tool/file'; import { uploadFile } from '@/api/tool/file';
import { getNeViewFile } from '@/api/tool/neFile'; import { getNeViewFile } from '@/api/tool/neFile';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -579,7 +579,7 @@ function fnModalDownloadImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UDM') { if (item.value === 'UDM') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -12,7 +12,7 @@ import {
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import UploadModal from '@/components/UploadModal/index.vue'; import UploadModal from '@/components/UploadModal/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
@@ -29,7 +29,7 @@ import {
resetUDMVolteIMS, resetUDMVolteIMS,
} from '@/api/neData/udm_volte_ims'; } from '@/api/neData/udm_volte_ims';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**字典数据 */ /**字典数据 */
let dict: { let dict: {
/**Tag标签类型 0=VoIP, 1=VoLTE */ /**Tag标签类型 0=VoIP, 1=VoLTE */
@@ -658,7 +658,7 @@ function fnModalDownloadImportTemplate() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'UDM') { if (item.value === 'UDM') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -6,11 +6,11 @@ import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import { listN3IWFSubList } from '@/api/neUser/n3iwf'; import { listN3IWFSubList } from '@/api/neUser/n3iwf';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
const { t } = useI18n(); const { t } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**网元参数 */ /**网元参数 */
let neOtions = ref<Record<string, any>[]>([]); let neOtions = ref<Record<string, any>[]>([]);
@@ -104,7 +104,7 @@ function fnGetList() {
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
neListStore.neCascaderOptions.forEach(item => { neStore.neCascaderOptions.forEach(item => {
if (item.value === 'N3IWF') { if (item.value === 'N3IWF') {
neOtions.value = JSON.parse(JSON.stringify(item.children)); neOtions.value = JSON.parse(JSON.stringify(item.children));
} }
+3 -3
View File
@@ -8,7 +8,7 @@ import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
addCustom, addCustom,
delCustom, delCustom,
@@ -19,7 +19,7 @@ import { getKPITitle } from '@/api/perfManage/goldTarget';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
/**字典数据 */ /**字典数据 */
let dict: { let dict: {
/**状态 */ /**状态 */
@@ -461,7 +461,7 @@ function fnChangeUnit(value: any) {
let neCascaderOptions = ref<Record<string, any>[]>([]); let neCascaderOptions = ref<Record<string, any>[]>([]);
onMounted(() => { onMounted(() => {
// 过滤不可用的网元 // 过滤不可用的网元
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return !['OMC', 'NSSF', 'NEF', 'NRF', 'LMF', 'N3IWF'].includes( return !['OMC', 'NSSF', 'NEF', 'NRF', 'LMF', 'N3IWF'].includes(
item.value item.value
+3 -3
View File
@@ -35,7 +35,7 @@ import {
RESULT_CODE_ERROR, RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { getKPITitle, listKPIData } from '@/api/perfManage/goldTarget'; import { getKPITitle, listKPIData } from '@/api/perfManage/goldTarget';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
@@ -47,7 +47,7 @@ import { useRoute } from 'vue-router';
import { LineOutlined } from '@ant-design/icons-vue'; import { LineOutlined } from '@ant-design/icons-vue';
import useLayoutStore from '@/store/modules/layout'; import useLayoutStore from '@/store/modules/layout';
const layoutStore = useLayoutStore(); const layoutStore = useLayoutStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const route = useRoute(); const route = useRoute();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const ws = new WS(); const ws = new WS();
@@ -825,7 +825,7 @@ watch(
onMounted(() => { onMounted(() => {
// 目前支持的 AMF AUSF MME MOCNGW NSSF SMF UDM UPF PCF // 目前支持的 AMF AUSF MME MOCNGW NSSF SMF UDM UPF PCF
// 获取网元网元列表 // 获取网元网元列表
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
// 过滤不可用的网元 // 过滤不可用的网元
return !['OMC', 'NSSF', 'NEF', 'NRF', 'LMF', 'N3IWF'].includes( return !['OMC', 'NSSF', 'NEF', 'NRF', 'LMF', 'N3IWF'].includes(
+4 -4
View File
@@ -6,7 +6,7 @@ import { message, Form, Modal } from 'ant-design-vue/es';
import { SizeType } from 'ant-design-vue/es/config-provider'; import { SizeType } from 'ant-design-vue/es/config-provider';
import { MenuInfo } from 'ant-design-vue/es/menu/src/interface'; import { MenuInfo } from 'ant-design-vue/es/menu/src/interface';
import { ColumnsType } from 'ant-design-vue/es/table'; import { ColumnsType } from 'ant-design-vue/es/table';
import useNeInfoStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
@@ -18,7 +18,7 @@ import {
} from '@/api/perfManage/kpi-title'; } from '@/api/perfManage/kpi-title';
const { t } = useI18n(); const { t } = useI18n();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { getNeSelectOtions } = useNeInfoStore(); const neStore = useNeStore();
/**字典数据 */ /**字典数据 */
let dict: { let dict: {
@@ -390,7 +390,7 @@ onMounted(() => {
<a-form-item label="NE Type" name="neType"> <a-form-item label="NE Type" name="neType">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
/> />
@@ -577,7 +577,7 @@ onMounted(() => {
> >
<a-auto-complete <a-auto-complete
v-model:value="modalState.from.neType" v-model:value="modalState.from.neType"
:options="getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
:disabled="!!modalState.from.id" :disabled="!!modalState.from.id"
+3 -3
View File
@@ -34,7 +34,7 @@ import {
RESULT_CODE_ERROR, RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { listCustom } from '@/api/perfManage/customTarget'; import { listCustom } from '@/api/perfManage/customTarget';
import { listCustomData } from '@/api/perfManage/customData'; import { listCustomData } from '@/api/perfManage/customData';
@@ -48,7 +48,7 @@ import { useRoute } from 'vue-router';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import useLayoutStore from '@/store/modules/layout'; import useLayoutStore from '@/store/modules/layout';
const layoutStore = useLayoutStore(); const layoutStore = useLayoutStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const route = useRoute(); const route = useRoute();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const ws = new WS(); const ws = new WS();
@@ -964,7 +964,7 @@ onMounted(() => {
}); });
typeArr = Array.from(new Set(typeArr)); typeArr = Array.from(new Set(typeArr));
// 过滤不可用的网元 // 过滤不可用的网元
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return typeArr.includes(item.value); return typeArr.includes(item.value);
} }
+3 -3
View File
@@ -20,7 +20,7 @@ import { listKPIData, getKPITitle } from '@/api/perfManage/goldTarget';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { message } from 'ant-design-vue'; import { message } from 'ant-design-vue';
import { generateColorRGBA } from '@/utils/generate-utils'; import { generateColorRGBA } from '@/utils/generate-utils';
import { LineSeriesOption } from 'echarts/charts'; import { LineSeriesOption } from 'echarts/charts';
@@ -30,7 +30,7 @@ import { useDebounceFn } from '@vueuse/core';
import { LineOutlined } from '@ant-design/icons-vue'; import { LineOutlined } from '@ant-design/icons-vue';
import { TableColumnType } from 'ant-design-vue'; import { TableColumnType } from 'ant-design-vue';
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const neListStore = useNeListStore(); const neStore = useNeStore();
//日期快捷选择 //日期快捷选择
const ranges = ref([ const ranges = ref([
{ {
@@ -71,7 +71,7 @@ const ALL_NE_TYPES = [
] as const; ] as const;
type AllChartType = (typeof ALL_NE_TYPES)[number] & string; type AllChartType = (typeof ALL_NE_TYPES)[number] & string;
// 在 ALL_NE_TYPES 定义之后添加 小写转大写 // 在 ALL_NE_TYPES 定义之后添加 小写转大写
const neTypeOptions = neListStore.getNeCascaderOptions const neTypeOptions = neStore.getNeCascaderOptions
.filter(v => ALL_NE_TYPES.includes(v.value.toLowerCase())) .filter(v => ALL_NE_TYPES.includes(v.value.toLowerCase()))
.map(v => ({ .map(v => ({
label: v.label, label: v.label,
+3 -3
View File
@@ -145,11 +145,11 @@ import * as echarts from 'echarts/core'
import { LineChart } from 'echarts/charts' import { LineChart } from 'echarts/charts'
import { GridComponent } from 'echarts/components' import { GridComponent } from 'echarts/components'
import { CanvasRenderer } from 'echarts/renderers' import { CanvasRenderer } from 'echarts/renderers'
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { WS } from '@/plugins/ws-websocket' import { WS } from '@/plugins/ws-websocket'
import { listKPIData } from '@/api/perfManage/goldTarget' import { listKPIData } from '@/api/perfManage/goldTarget'
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
echarts.use([LineChart, GridComponent, CanvasRenderer]) echarts.use([LineChart, GridComponent, CanvasRenderer])
@@ -174,7 +174,7 @@ const wsStatus = ref('未连接')
onMounted(async () => { onMounted(async () => {
// console.log('组件挂载,开始获取IMS网元列表') // 调试信息 // console.log('组件挂载,开始获取IMS网元列表') // 调试信息
const res = await useNeListStore().fnNelist() const res = await neStore.fnNelist()
// console.log('获取到的网元列表响应:', res) // 调试信息 // console.log('获取到的网元列表响应:', res) // 调试信息
if (res && Array.isArray(res.data)) { if (res && Array.isArray(res.data)) {
+4 -3
View File
@@ -7,9 +7,10 @@ import { ColumnsType } from 'ant-design-vue/es/table';
import { parseDateToStr } from '@/utils/date-utils'; import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { listperfData } from '@/api/perfManage/perfData'; import { listperfData } from '@/api/perfManage/perfData';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
@@ -223,7 +224,7 @@ onMounted(() => {
} }
}); });
// 获取网元网元列表 // 获取网元网元列表
useNeListStore().fnNelist(); neStore.fnNelist();
// 获取列表数据 // 获取列表数据
fnGetList(); fnGetList();
}); });
@@ -246,7 +247,7 @@ onMounted(() => {
> >
<a-auto-complete <a-auto-complete
v-model:value="queryParams.neType" v-model:value="queryParams.neType"
:options="useNeListStore().getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
/> />
</a-form-item> </a-form-item>
+8 -17
View File
@@ -9,7 +9,7 @@ import { ColumnsType } from 'ant-design-vue/es/table';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
addPerfThre, addPerfThre,
delPerfThre, delPerfThre,
@@ -19,6 +19,7 @@ import {
threStop, threStop,
threRun, threRun,
} from '@/api/perfManage/perfThreshold'; } from '@/api/perfManage/perfThreshold';
const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
@@ -189,7 +190,7 @@ function fnGetList(pageNum?: number) {
queryParams.pageNum = pageNum; queryParams.pageNum = pageNum;
} }
listPerfThreshold(toRaw(queryParams)).then(res => { listPerfThreshold(toRaw(queryParams)).then(res => {
if (res.code === RESULT_CODE_SUCCESS) { if (res.code === RESULT_CODE_SUCCESS) {
// 取消勾选 // 取消勾选
if (tableState.selectedRowKeys.length > 0) { if (tableState.selectedRowKeys.length > 0) {
tableState.selectedRowKeys = []; tableState.selectedRowKeys = [];
@@ -490,16 +491,8 @@ onMounted(() => {
} }
}); });
Promise.allSettled([ // 获取列表数据
// 获取网元网元列表 fnGetList();
useNeListStore().fnNelist(),
// 获取性能测量集列表
// useNeListStore().fnNeTaskPerformance(),
// getNePerformanceList(),
]).finally(() => {
// 获取列表数据
fnGetList();
});
}); });
</script> </script>
@@ -517,7 +510,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="useNeListStore().getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
/> />
@@ -610,9 +603,7 @@ onMounted(() => {
<template v-if="column.key === 'id'"> <template v-if="column.key === 'id'">
<a-space :size="8" align="center"> <a-space :size="8" align="center">
<a-tooltip> <a-tooltip>
<template #title> <template #title> Run </template>
Run
</template>
<a-button <a-button
type="link" type="link"
@click.prevent="fnTaskModalVisible('run', record)" @click.prevent="fnTaskModalVisible('run', record)"
@@ -691,7 +682,7 @@ onMounted(() => {
> >
<a-select <a-select
v-model:value="modalState.from.neType" v-model:value="modalState.from.neType"
:options="useNeListStore().getNeSelectOtions" :options="neStore.getNeSelectOtions"
@change="fnSelectPerformanceInit" @change="fnSelectPerformanceInit"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
+5 -5
View File
@@ -10,7 +10,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useUserStore from '@/store/modules/user'; import useUserStore from '@/store/modules/user';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
addPerfTask, addPerfTask,
delPerfTask, delPerfTask,
@@ -20,7 +20,7 @@ import {
taskStop, taskStop,
taskRun, taskRun,
} from '@/api/perfManage/taskManage'; } from '@/api/perfManage/taskManage';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t, currentLocale } = useI18n(); const { t, currentLocale } = useI18n();
const generateOptions = (start: any, end: any) => { const generateOptions = (start: any, end: any) => {
@@ -719,7 +719,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="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
/> />
@@ -882,7 +882,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-cascader <a-cascader
:value="modalState.neType" :value="modalState.neType"
:options="neListStore.getNeCascaderOptions" :options="neStore.getNeCascaderOptions"
disabled disabled
/> />
</a-form-item> </a-form-item>
@@ -999,7 +999,7 @@ onMounted(() => {
> >
<a-cascader <a-cascader
v-model:value="modalState.neType" v-model:value="modalState.neType"
:options="neListStore.getNeCascaderOptions" :options="neStore.getNeCascaderOptions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.ne.common.neTypePlease')" :placeholder="t('views.ne.common.neTypePlease')"
+2 -2
View File
@@ -8,9 +8,9 @@ import {
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import TerminalSSHView from '@/components/TerminalSSHView/index.vue'; import TerminalSSHView from '@/components/TerminalSSHView/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { iperfI, iperfV } from '@/api/tool/iperf'; import { iperfI, iperfV } from '@/api/tool/iperf';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**网元参数 */ /**网元参数 */
+4 -4
View File
@@ -1,5 +1,5 @@
<script setup lang="ts"> <script setup lang="ts">
import { reactive, onMounted, onBeforeUnmount, ref, toRaw } from 'vue'; import { reactive, onMounted, onBeforeUnmount, ref } from 'vue';
import { PageContainer } from 'antdv-pro-layout'; import { PageContainer } from 'antdv-pro-layout';
import { message } from 'ant-design-vue/es'; import { message } from 'ant-design-vue/es';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
@@ -8,9 +8,9 @@ import {
RESULT_CODE_SUCCESS, RESULT_CODE_SUCCESS,
} from '@/constants/result-constants'; } from '@/constants/result-constants';
import TerminalSSHView from '@/components/TerminalSSHView/index.vue'; import TerminalSSHView from '@/components/TerminalSSHView/index.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { pingV } from '@/api/tool/ping'; import { pingV } from '@/api/tool/ping';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
/**网元参数 */ /**网元参数 */
@@ -187,7 +187,7 @@ function fnMessage(res: Record<string, any>) {
/**钩子函数,界面打开初始化*/ /**钩子函数,界面打开初始化*/
onMounted(() => { onMounted(() => {
// 获取网元网元列表 // 获取网元网元列表
for (const item of neListStore.getNeCascaderOptions) { for (const item of neStore.getNeCascaderOptions) {
neCascaderOptions.value.push(item); // 过滤不可用的网元 neCascaderOptions.value.push(item); // 过滤不可用的网元
} }
if (neCascaderOptions.value.length === 0) { if (neCascaderOptions.value.length === 0) {
@@ -5,10 +5,10 @@ import { ColumnsType } from 'ant-design-vue/es/table';
import { Modal, message } from 'ant-design-vue/es'; import { Modal, message } from 'ant-design-vue/es';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { delNeHost, listNeHost } from '@/api/ne/neHost'; import { delNeHost, listNeHost } from '@/api/ne/neHost';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useDictStore from '@/store/modules/dict'; import useDictStore from '@/store/modules/dict';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
const EditModal = defineAsyncComponent( const EditModal = defineAsyncComponent(
@@ -305,7 +305,7 @@ onMounted(() => {
<a-form-item :label="t('views.ne.neHost.title')" name="title"> <a-form-item :label="t('views.ne.neHost.title')" name="title">
<a-auto-complete <a-auto-complete
v-model:value="queryParams.title" v-model:value="queryParams.title"
:options="neListStore.getNeSelectOtions" :options="neStore.getNeSelectOtions"
allow-clear allow-clear
size="small" size="small"
:placeholder="t('common.inputPlease')" :placeholder="t('common.inputPlease')"
+3 -3
View File
@@ -9,13 +9,13 @@ import { parseSizeFromFile } from '@/utils/parse-utils';
import { getNeDirZip, getNeFile, listNeFiles } from '@/api/tool/neFile'; import { getNeDirZip, getNeFile, listNeFiles } from '@/api/tool/neFile';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import ViewDrawer from '@/views/ne/neFile/components/ViewDrawer.vue'; import ViewDrawer from '@/views/ne/neFile/components/ViewDrawer.vue';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import useTabsStore from '@/store/modules/tabs'; import useTabsStore from '@/store/modules/tabs';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import saveAs from 'file-saver'; import saveAs from 'file-saver';
import { useRoute, useRouter } from 'vue-router'; import { useRoute, useRouter } from 'vue-router';
const tabsStore = useTabsStore(); const tabsStore = useTabsStore();
const neListStore = useNeListStore(); const neStore = useNeStore();
const { t } = useI18n(); const { t } = useI18n();
const route = useRoute(); const route = useRoute();
const router = useRouter(); const router = useRouter();
@@ -360,7 +360,7 @@ onMounted(() => {
<span>{{ t('views.logManage.neFile.neType') }}:</span>&nbsp; <span>{{ t('views.logManage.neFile.neType') }}:</span>&nbsp;
<a-cascader <a-cascader
v-model:value="neTypeSelect" v-model:value="neTypeSelect"
:options="neListStore.getNeCascaderOptions" :options="neStore.getNeCascaderOptions"
@change="fnNeChange" @change="fnNeChange"
:allow-clear="false" :allow-clear="false"
:placeholder="t('views.logManage.neFile.neTypePlease')" :placeholder="t('views.logManage.neFile.neTypePlease')"
+3 -3
View File
@@ -11,7 +11,7 @@ import { parseDateToStr } from '@/utils/date-utils';
import { MENU_PATH_INLINE } from '@/constants/menu-constants'; import { MENU_PATH_INLINE } from '@/constants/menu-constants';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants'; import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import useI18n from '@/hooks/useI18n'; import useI18n from '@/hooks/useI18n';
import useNeListStore from '@/store/modules/ne_list'; import useNeStore from '@/store/modules/ne';
import { import {
addTraceTask, addTraceTask,
delTraceTask, delTraceTask,
@@ -23,7 +23,7 @@ import useDictStore from '@/store/modules/dict';
import { regExpIPv4 } from '@/utils/regular-utils'; import { regExpIPv4 } from '@/utils/regular-utils';
import dayjs, { Dayjs } from 'dayjs'; import dayjs, { Dayjs } from 'dayjs';
import { parseObjHumpToLine } from '@/utils/parse-utils'; import { parseObjHumpToLine } from '@/utils/parse-utils';
const neListStore = useNeListStore(); const neStore = useNeStore();
const { getDict } = useDictStore(); const { getDict } = useDictStore();
const { t } = useI18n(); const { t } = useI18n();
const router = useRouter(); const router = useRouter();
@@ -613,7 +613,7 @@ onMounted(() => {
); );
// 获取网元网元列表 // 获取网元网元列表
neCascaderOptions.value = neListStore.getNeCascaderOptions.filter( neCascaderOptions.value = neStore.getNeCascaderOptions.filter(
(item: any) => { (item: any) => {
return ['AMF', 'AUSF', 'SMF', 'UDM', 'PCF', 'UPF'].includes(item.value); // 过滤不可用的网元 return ['AMF', 'AUSF', 'SMF', 'UDM', 'PCF', 'UPF'].includes(item.value); // 过滤不可用的网元
} }