1357 Commits

Author SHA1 Message Date
TsMask
4c315a1548 fix: 租户管理表格操作去掉按钮权限 2025-10-27 15:50:44 +08:00
TsMask
4dfe872c27 chore: 更新版本号 2.2510.4 2025-10-24 19:59:47 +08:00
TsMask
d2e6e52fd0 fix: AMF配置WhiteList Content导入index0无效问题 2025-10-24 17:57:21 +08:00
TsMask
df7dacdc39 feat: 更新背景图片固定BA的 2025-10-23 14:31:43 +08:00
TsMask
0b54c730d7 feat: 基站状态补充randId列 2025-10-23 14:16:09 +08:00
zhongzm
70ddcb56ba feat:拖拽优化 2025-10-20 17:32:16 +08:00
zhongzm
719a08d993 feat:Roaming CDR自定义导出功能 2025-10-20 17:04:16 +08:00
zhongzm
81f287e9ff feat:冗余代码优化 2025-10-18 15:23:30 +08:00
zhongzm
cf724e8693 feat:基站名称和位置信息改为非必填 2025-10-17 18:13:03 +08:00
zhongzm
869e2b23fb feat:网元信息更新响应修复 2025-10-17 18:03:18 +08:00
TsMask
5d33611ef1 feat: UDM鉴权cnFlag添加5G/4G接入选择 2025-10-17 15:41:03 +08:00
TsMask
95c3001f35 feat: 更新getAllNeConfig函数,支持传入neId参数 2025-10-17 10:18:36 +08:00
zhongzm
6597b20ff9 feat:标签修复 2025-10-15 16:52:50 +08:00
TsMask
25538b2cc4 feat: 更新根网管节点处理逻辑,支持无OMC情况 2025-10-15 10:26:20 +08:00
TsMask
14590545f5 style: 移除ID列显示 2025-10-13 19:26:11 +08:00
TsMask
f7a9258473 style: 操作日志信息json结构格式美化 2025-10-13 17:33:22 +08:00
TsMask
49b78d9933 feat: 备份网元日志文件数据查看 2025-10-13 17:32:54 +08:00
zhongzm
b7fa412733 feat:悬浮标签修改 2025-10-13 17:10:03 +08:00
TsMask
14864cbf9b chore: 更新版本号 2.2510.2 2025-10-11 19:12:42 +08:00
TsMask
c40942694e fix: MML回车undefined问题,关闭搜索匹配 2025-10-11 17:31:24 +08:00
zhongzm
c1df7e2700 feat:自定义指标折叠优化 2025-10-10 19:08:57 +08:00
zhongzm
f6c3d730af feat:关键指标折叠优化 2025-10-10 19:08:39 +08:00
zhongzm
22cab89749 feat:黄金指标折叠优化 2025-10-10 19:08:14 +08:00
zhongzm
c85b588719 feat:图表自适应布局重构优化 2025-10-10 11:34:34 +08:00
TsMask
2ac730dfe2 style: 移除ID列显示 2025-10-09 19:36:26 +08:00
TsMask
669bdf5b7d style: UDM-鉴权数据,默认只支持导出非加密 2025-10-09 17:39:39 +08:00
TsMask
744867243f style: 移除网元版本和授权ID列显示 2025-10-09 11:46:06 +08:00
TsMask
79830b752a fix: SMSC-CDR添加结果原因说明 2025-09-28 18:16:53 +08:00
TsMask
4bb5a99b37 feat: UDM-auth数据导出按钮权限定义 2025-09-28 18:16:11 +08:00
zhongzm
dfa8539b9b feat:图表生成函数重构优化 2025-09-28 10:16:12 +08:00
TsMask
226a104417 style: UPF N3 Ping测试功能移除耗时显示 2025-09-25 17:00:51 +08:00
zhongzm
539ecbc039 feat:控制台打印注释 2025-09-25 16:59:41 +08:00
zhongzm
61adb5c8ae feat:修正时间单位显示问题 2025-09-25 16:46:14 +08:00
TsMask
be2595f49d style: MML返回多结果显示undefined 2025-09-25 15:28:20 +08:00
TsMask
63d02ab19d feat: UDM数据添加创建时间列 2025-09-23 10:50:18 +08:00
zhongzm
12d2c50248 feat:修正mos和cct查询时间范围 2025-09-22 15:44:46 +08:00
zhongzm
2bdad2db47 feat:mos和cct时间轴补0数据 2025-09-22 15:26:59 +08:00
zhongzm
33055d74ba feat:语音仪表盘样式修改 2025-09-22 11:53:24 +08:00
TsMask
702eeb9caa style: 翻译MOS Average改为MOS 2025-09-19 19:04:07 +08:00
TsMask
8d01eb48e6 fix: 更新cdr/ue时间强制转换数值类型 2025-09-19 19:03:13 +08:00
zhongzm
b98f2394b8 feat:语音仪表盘mos和cct显示修复和样式调整 2025-09-19 17:44:41 +08:00
TsMask
80f72549a2 feat: 添加系统备份功能,包括导入导出OMC的API和界面支持 2025-09-19 16:12:42 +08:00
TsMask
bd729b7437 style: CCT改为Call Connection Time 2025-09-19 15:41:01 +08:00
TsMask
3aaa90746b Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2025-09-19 15:38:47 +08:00
TsMask
b55b4ad49d feat: 添加活动告警自动刷新功能 2025-09-19 15:38:45 +08:00
TsMask
ae171a2a82 fix: 根据搜索条件导出,去除最大记录限制 2025-09-19 15:29:54 +08:00
zhongzm
2828deaece feat:语音仪表盘增加指标 2025-09-19 09:14:52 +08:00
zhongzm
f8376c803f feat:折叠按钮样式修改 2025-09-18 16:27:23 +08:00
zhongzm
fe13f56aa1 feat:网元信息界面部分显示修改 2025-09-17 20:13:37 +08:00
zhongzm
1e27a414db feat:折叠图表按钮样式修改 2025-09-17 19:47:29 +08:00
TsMask
6edd445e3d feat: 新增kpi导出文件查看 2025-09-17 15:10:28 +08:00
TsMask
4a5008f1b5 style: 全局菜单搜索仅过滤菜单名称 2025-09-17 15:10:08 +08:00
TsMask
749e880aa7 feat: 补充UPF N3 Ping测试功能丢包耗时 2025-09-15 15:10:46 +08:00
TsMask
f0789acf42 style: IMS看板字母单词大写 2025-09-15 10:56:23 +08:00
TsMask
5acbec4c45 fix: UDM-redis连接配置展开key重复 2025-09-12 18:23:33 +08:00
TsMask
4f6ad8edc4 fix: 去掉未知变量Table.EXPAND_COLUMN 2025-09-12 18:22:54 +08:00
TsMask
4048d2b736 style: 仪表盘鼠标悬浮提示更新 2025-09-12 18:14:46 +08:00
TsMask
f919d31232 style: 仪表盘鼠标悬浮提示更新 2025-09-12 17:53:28 +08:00
TsMask
5e2184945c feat: UDM-redis连接多加从库地址 2025-09-12 17:49:30 +08:00
zhongzm
c3e046d9d9 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-09-12 16:32:32 +08:00
zhongzm
33dc7cb7dc feat:网元信息平滑自动更新,修复新增和删除问题 2025-09-12 16:32:23 +08:00
TsMask
5cbe885d7e feat: 添加UPF N3 Ping测试功能 2025-09-12 15:22:54 +08:00
zhongzm
6b45194c65 feat:还原User Activity 2025-09-12 14:55:14 +08:00
zhongzm
1d3ab0f6af feat:样式调整补 2025-09-12 14:50:55 +08:00
zhongzm
2d29bd4226 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-09-12 14:42:40 +08:00
zhongzm
6bbd5d723e feat:仪表盘自适应取消 2025-09-12 14:42:22 +08:00
TsMask
2a45acad33 fix: 修改图表标题,将“Busy Time”更改为“Busy Hour” 2025-09-12 14:22:48 +08:00
zhongzm
c7dd92d3b3 feat:neinfo表格结构修改,增加定时刷新 2025-09-12 13:34:02 +08:00
TsMask
905d8c3bb2 feat: 添加ims-cdr数据moc/cct 2025-09-11 20:11:55 +08:00
zhongzm
bb6cae1433 feat:语音仪表盘标签修改 2025-09-09 19:20:48 +08:00
zhongzm
d85889b376 feat:neInfo修改新增和编辑 2025-09-09 19:13:30 +08:00
zhongzm
d1a20296d9 feat:表格改为嵌套显示 2025-09-09 18:42:36 +08:00
zhongzm
2f8c80572b feat:大屏部分信息显示修改以及样式微调 2025-09-09 15:34:12 +08:00
zhongzm
7ef9d23e94 feat:黄金指标bytes改MB/GB 2025-09-09 14:29:44 +08:00
lai
0a130781d1 自适应功能 2025-09-09 12:06:49 +08:00
zhongzm
6ce5a24614 feat:关键仪表盘显示指标修改 2025-09-09 10:25:29 +08:00
lai
627f847d5e 新增搜索菜单按钮 2025-09-08 19:30:30 +08:00
zhongzm
89c2a61737 feat:kpi图表隐藏按钮添加 2025-09-08 17:04:18 +08:00
zhongzm
4403b06416 feat:语音仪表盘增加新指标显示 2025-09-08 15:30:40 +08:00
zhongzm
55f3e1c673 feat:大屏新模块改为UE Online Information 2025-09-08 15:29:46 +08:00
zhongzm
007b640209 feat:中文补充 2025-09-05 18:17:54 +08:00
zhongzm
59af80fe7f feat:仪表盘修复闪烁、跳转问题 2025-09-05 18:03:59 +08:00
TsMask
ed3b5bb5e8 feat: 添加权限控制到IMS用户数量显示 2025-09-05 17:47:42 +08:00
TsMask
58f78432f0 feat: 恢复UDM Auth创建时间列 2025-09-05 17:37:28 +08:00
TsMask
a2a5e52576 style: 去除udm导入模板#行 2025-09-05 17:37:25 +08:00
TsMask
b50c962201 fix: 更新模板文件,添加导入说明并修正数据格式 2025-09-05 15:44:06 +08:00
TsMask
2209a7206f feat: 实现PCAP文件分批下载,避免浏览器限制同时下载10个文件的问题 2025-09-05 15:43:52 +08:00
zhongzm
828c640307 feat:仪表盘增加volte、voip显示 2025-09-04 18:13:23 +08:00
zhongzm
4293c611be feat:Configuration、Performance、MML权限按钮添加 2025-09-04 14:25:26 +08:00
TsMask
f155a0dc8e fix: 修改表格行键为'imsi'以确保数据正确绑定 2025-09-03 17:12:17 +08:00
TsMask
dbf6dfbe26 fix: 修正导出按钮的权限标识,从'neUser:auth:export'改为'neUser:sub:export' 2025-09-03 11:50:35 +08:00
zhongzm
826e63a861 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-09-02 18:14:17 +08:00
zhongzm
357292d445 feat:指标尾缀neId改为neName 2025-09-02 18:14:05 +08:00
TsMask
87e5261942 feat: 优化图表显示逻辑,动态控制图表显示与关闭 2025-09-02 18:07:42 +08:00
zhongzm
5d60156456 feat:语音仪表盘部分文字信息修改补充 2025-09-02 17:50:16 +08:00
TsMask
ccd5edb76f feat: 优化图表显示逻辑,移除不必要的状态判断 2025-09-02 17:49:07 +08:00
zhongzm
99f7ddb760 feat:语音仪表盘部分文字信息修改 2025-09-02 17:43:44 +08:00
zhongzm
40137f182c feat:Data Usage Report图表显示状态判断 2025-09-02 16:43:22 +08:00
zhongzm
4666a0e9b3 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-09-02 14:37:34 +08:00
zhongzm
17650d134a feat:IMSI和布局修改 2025-09-02 14:37:25 +08:00
TsMask
f40107a50f style: kpiOverView指标名称修改 2025-09-02 14:32:30 +08:00
zhongzm
656dad2f3e feat:底部遮挡修复 2025-09-02 14:22:56 +08:00
TsMask
c2dac86db0 fix: 仪表盘点击alarm summary重定向至活动告警(非历史告警) 2025-09-02 10:50:57 +08:00
TsMask
858e3e6559 style: 性能-IMS KPI- VoNR改成 VoNR/VoLTE/VoIP 2025-09-02 10:45:59 +08:00
TsMask
86cb6e0ffe fix: 上传软件包版本号提取正则修改 2025-09-02 10:37:04 +08:00
TsMask
3c485dea48 style: 左侧展开宽度256px 2025-09-01 19:41:49 +08:00
TsMask
9b79fe8271 fix: udm-sub页面删除按钮perms标识错误 2025-09-01 19:40:06 +08:00
TsMask
4f854f77b7 style: MME attach request/success 改成 4g attach request/success 2025-09-01 15:34:00 +08:00
TsMask
2191db06d4 feat: 开站配置omc的ssh地址 2025-08-29 19:15:29 +08:00
TsMask
274353d016 feat: 基站状态页面添加租户名显示列 2025-08-29 18:45:03 +08:00
zhongzm
f0e63da1a2 feat:loaddata权限添加 2025-08-29 17:23:14 +08:00
TsMask
4b34db817e feat: 网元授权显示用户数/基站数 2025-08-29 16:25:13 +08:00
TsMask
a4aeb06d13 style: 网元当前版本显示是否有包存在 2025-08-29 16:24:34 +08:00
zhongzm
3389fbad53 feat:BA UE部分按钮权限分配 2025-08-29 16:18:26 +08:00
TsMask
3aa6822a72 fix: 已经添加的网元类型禁止修改neId 2025-08-28 20:59:02 +08:00
TsMask
bdfad20dd5 fix: cdr/ue导出操作事件重发判断 2025-08-28 16:15:26 +08:00
TsMask
d8c9bbc775 fix: cdr/ue去除导出条数限制 2025-08-28 14:59:08 +08:00
TsMask
5e014309cc fix: UPF流量统计字节数据格式化显示不一致问题 2025-08-28 14:58:20 +08:00
TsMask
390b9cf73e fix: kpi原始指标实时数据推送方向修正,重绘渲染问题修正 2025-08-28 11:21:37 +08:00
zhongzm
760beb0087 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-08-27 15:30:42 +08:00
zhongzm
5b2f883934 feat:大屏基站信息修改 2025-08-27 15:29:51 +08:00
TsMask
98521a3a89 feat:优化UPF实时流量统一10s刷新,切换显示下一个 2025-08-27 15:10:30 +08:00
zhongzm
51c9f7fca3 feat:自定义指标loading和title优化 2025-08-27 14:31:49 +08:00
zhongzm
d593abf718 feat:大屏部分信息修改 2025-08-27 14:17:38 +08:00
zhongzm
fdd390c389 feat:sortOrder参数修改 2025-08-27 14:10:38 +08:00
zhongzm
cfba4ecdb2 feat:黄金指标loading和title优化 2025-08-27 12:58:44 +08:00
zhongzm
e45c17c4c5 feat:关键指标loading和title优化 2025-08-27 12:03:02 +08:00
TsMask
f58a0151fe 修复: 注释掉位数据转换中的位数乘以8的代码 2025-08-27 11:52:08 +08:00
TsMask
ff9aca14b8 style: 隐藏掉auth数据创建时间列,等udm支持 2025-08-26 18:39:57 +08:00
TsMask
de74af4fec style: 关掉全局控制语言开关控制 2025-08-26 18:06:44 +08:00
zhongzm
393a90a0d0 feat:修改code常量 2025-08-26 17:07:20 +08:00
TsMask
3f06ab62b1 feat: 修改kpi查询数据排序方式为升序 2025-08-26 14:38:35 +08:00
TsMask
a148dc82a9 syste: 移除无效引用 2025-08-25 15:22:45 +08:00
zhongzm
a039fd7a3a feat:综合大屏悬浮信息修改 2025-08-22 18:38:25 +08:00
zhongzm
00485a5c7f feat:关键指标底部容器显示溢出问题 2025-08-22 18:13:19 +08:00
zhongzm
50cf5e70fb feat:语音仪表盘参数修改 2025-08-22 17:54:02 +08:00
zhongzm
7e5864b97b feat:关键指标统计需求修改 2025-08-22 17:12:26 +08:00
zhongzm
194ad023bd feat:语音仪表盘中英补充 2025-08-22 16:28:04 +08:00
zhongzm
f16b07a2d6 feat:关键指标添加MME网元指标(上一个是未中英的语音仪表盘) 2025-08-22 16:19:24 +08:00
zhongzm
7bf8bad9e4 feat:关键指标添加MME网元指标 2025-08-22 16:11:56 +08:00
zhongzm
ab1725e673 feat:自定义指标统计信息改天数显示 2025-08-22 15:38:55 +08:00
zhongzm
77631de0ff feat:黄金指标统计信息改天数显示 2025-08-22 15:38:30 +08:00
TsMask
f6bdecd877 feat: 支持kpi指标命名控制启用关闭 2025-08-20 17:02:18 +08:00
TsMask
e05084afdc fix: 增加多个导出操作的超时时间至180秒 2025-08-19 16:09:08 +08:00
TsMask
4c49640763 Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2025-08-15 18:59:15 +08:00
TsMask
4433990878 chore: 更新版本号 2.2508.1 2025-08-15 18:59:11 +08:00
zhongzm
6d092cb3e7 feat:重复调用修正 2025-08-15 15:30:30 +08:00
TsMask
66957520f7 fix: 给config.js加随机数避免缓存 2025-08-14 20:45:57 +08:00
TsMask
3596d7815b feat: UDM鉴权用户显示创建时间 2025-08-14 20:25:59 +08:00
TsMask
b72724649e Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2025-08-14 19:49:25 +08:00
TsMask
aed81672a2 fix: 系统用户登录主页重复刷新问题 2025-08-14 19:49:22 +08:00
zhongzm
a1c530640c Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-08-14 19:31:03 +08:00
zhongzm
bcd7599676 feat:kpi自定义仪表盘需求更改 2025-08-14 19:30:53 +08:00
TsMask
5edb5932b5 fix: 租户主页暗色模式显示不一致 2025-08-14 19:17:19 +08:00
TsMask
7bd524976a fix: 租户和系统用户的主页显示差异 2025-08-14 17:15:18 +08:00
TsMask
7b7907616f fix: 图片上传取值fileName失败 2025-08-14 15:10:24 +08:00
TsMask
e763418e38 fix: 第三方用户不可删除和修改密码 2025-08-14 10:31:40 +08:00
TsMask
36e4f2d5f1 fix: 恢复显示快速PLMN修改窗口 2025-08-14 10:30:50 +08:00
TsMask
38f0b9b560 feat: 第三方登录认证功能和管理页 2025-08-12 09:53:38 +08:00
TsMask
246bb9a7e0 rev: 回退看板,修复切换upf的流量统计显示 2025-08-07 15:46:01 +08:00
TsMask
678bfce993 chore: 更新版本号 2.250725 2025-07-25 14:12:56 +08:00
TsMask
f8bc9fc622 feat: 参数配置AMF导入Index字段存在更新,不存在默认新增 2025-07-21 17:12:19 +08:00
TsMask
d37fd4deae feat: 参数配置刷新无法正常打开,导入白名单字段格式转换 2025-07-21 15:40:13 +08:00
zhongzm
394cef66c2 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-07-18 17:23:56 +08:00
zhongzm
7432f1e237 feat:Users添加默认显示,避免样式偏移 2025-07-18 17:23:45 +08:00
TsMask
8eea52c4e5 chore: 更新版本号 2.250718 2025-07-18 16:54:00 +08:00
zhongzm
4c777245fc feat:综合仪表盘样式优化 2025-07-18 16:49:33 +08:00
TsMask
42464bc5bd feat: 参数配置imeiWhitelist批量导入xlsx文件 2025-07-16 10:29:36 +08:00
zhongzm
a436efab67 feat:增加数据点,增加初始显示 2025-07-15 11:52:07 +08:00
zhongzm
5ae056cb03 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-07-11 11:11:59 +08:00
zhongzm
e37a7fb42b feat:折线效果以及图表数据点数修改 2025-07-11 11:11:41 +08:00
TsMask
e3306bab3a feat(dashboard): add overview2 component with images and functionality
- Introduced new images for the dashboard overview (rect.png, title.png).
- Created index.vue for the overview2 component, implementing various features including:
  - User activity tracking and statistics.
  - Network element state retrieval and display.
  - Integration of multiple sub-components (Topology, NeResources, UserActivity, IMSActivity, AlarnTypeBar, UPFFlow).
  - Added dropdowns for selecting UDM and NE resources.
  - Implemented periodic data fetching for network statistics.
  - Enhanced user interface with responsive design and improved styling.
2025-07-10 14:25:33 +08:00
TsMask
2cdbcd6de8 fix: 调整安装UE_POOL改到基础项 2025-07-10 10:54:51 +08:00
TsMask
fae66a2b79 feat: 在组件挂载时获取网元列表并更新授权状态 2025-07-10 10:33:26 +08:00
zhongzm
f45ad79015 feat:默认选择全部网元 2025-07-09 10:26:00 +08:00
TsMask
f9dd0964d2 chore: 更新版本号 2.250705 2025-07-05 10:27:21 +08:00
zhongzm
30ca7ae14d Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-07-04 17:31:05 +08:00
zhongzm
82cb796a50 feat:kpi看板数据显示修复 2025-07-04 17:30:54 +08:00
lai
a98aeda96f 告警仪表盘 2025-07-04 17:08:48 +08:00
lai
1a10a5a9d1 修改综合仪表盘样式 2025-07-04 17:07:53 +08:00
TsMask
edd3865094 feat: 添加日期快捷选择功能并更新多个组件以使用新选择器 2025-07-04 15:14:13 +08:00
zhongzm
8990fa8dee feat:kpi看板 2025-07-03 19:26:01 +08:00
TsMask
2b624b3c04 fix: SMF-DATA图表日期显示不完整 2025-07-02 17:44:36 +08:00
TsMask
93b600affb fix: 跟踪任务编号的传入获取信息 2025-07-02 15:25:34 +08:00
TsMask
bea6f032ac fix: 英文翻译Filter out Alerts 2025-07-02 14:58:15 +08:00
TsMask
20b8531dc8 fix: 跟踪加载网元列表 2025-07-02 10:02:37 +08:00
TsMask
05c1638984 fix: 参数配置可见visible属性判断 2025-06-30 16:17:13 +08:00
TsMask
218dfef16b chore: 更新版本号 2.250627 2025-06-27 19:20:56 +08:00
TsMask
bcdb64777a fix: MME配置tai-tac数值类型 2025-06-27 17:39:43 +08:00
TsMask
dd9df3a08c Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2025-06-27 16:58:32 +08:00
TsMask
fa12a5d3a8 fix: AMF配置slice确保sd为6位字符串 2025-06-27 16:58:30 +08:00
zhongzm
0196b322f0 Merge remote-tracking branch 'origin/multi-tenant' into multi-tenant 2025-06-27 16:57:03 +08:00
zhongzm
87cfc2ed79 feat:黄金指标界面指标显示bug修复 2025-06-27 16:56:50 +08:00
TsMask
b9bcd4c265 fix: 网元PLMN新增修改使用最后记录信息 2025-06-27 15:46:12 +08:00
TsMask
a54de8a9bb feat: 关闭UDM鉴权导出功能 2025-06-27 11:53:29 +08:00
TsMask
c5d7026fc5 fix: 修改时间范围选择器以使用当天的开始时间 2025-06-26 20:41:42 +08:00
TsMask
93841a02ea fix: 修复导出功能中时间分组字段的日期格式化 2025-06-26 20:40:31 +08:00
TsMask
42bd112649 feat: 在工具目录下添加文件管理放备份输出的文件展示 2025-06-25 10:48:53 +08:00
TsMask
d0add206ba fix: 网元配置一键plmn修改amf-tai/slice失败 2025-06-24 17:00:42 +08:00
TsMask
b9659837c2 fix: UDM-IMS数据批量新增/批量删除命令调整 2025-06-24 16:58:35 +08:00
TsMask
04f81af6c3 style: 刷新网元授权状态更新时间局部变化 2025-06-24 16:57:47 +08:00
TsMask
8bd1ea4faa fix 网元手动发送ftp备份路径多一层ne_coifig目录 2025-06-23 11:56:56 +08:00
TsMask
fa00b6bfa8 chore: 更新版本号 2.250620 2025-06-20 19:14:51 +08:00
TsMask
6a8e08a81a style: kpi菜单时间去掉当前小时加入今天选择项 2025-06-19 20:55:02 +08:00
TsMask
25a33678f2 feat: 快速修改PLMN接入数据操作 2025-06-18 11:11:15 +08:00
TsMask
1e8081e83e feat: 快速修改PLMN 2025-06-18 10:33:51 +08:00
TsMask
88aea40885 feat: kpi菜单时间选择预设1h/1d/7d/15d 2025-06-17 20:02:42 +08:00
TsMask
a341800efc fix: 修正上传文件到网元时使用错误的文件路径参数 2025-06-17 11:25:44 +08:00
TsMask
d75a2a1651 feat: 开站参数添加ausf是否存在标志 2025-06-17 11:16:16 +08:00
TsMask
38c0e3d08d fix: 返回数据参数调整,显示文件大小 2025-06-16 18:40:34 +08:00
TsMask
951d48f470 chore: 更新版本号 2.250613 2025-06-13 20:13:16 +08:00
TsMask
5f81d73c95 fix: udm-voip批量用户名数值限制导致无法填写 2025-06-12 19:35:33 +08:00
TsMask
9ee5fef458 style: 抓包文件目录列表显示文件大小 2025-06-11 20:35:27 +08:00
TsMask
1723d314c5 fix: 更新文件路径从 /tmp/omc/tcpdump 到 /usr/local/omc/tcpdump 2025-06-11 19:20:47 +08:00
TsMask
f14316256c fix: 空格内容无法编辑,提示信息显示方向 2025-06-10 18:56:47 +08:00
TsMask
a945e4dc5f feat: 网元信令跟踪代码同步 2025-06-10 18:55:54 +08:00
TsMask
8575d5d711 chore: 更新版本号 2.250607 2025-06-07 09:58:54 +08:00
TsMask
a9cb35ba4f fix: 告警清除自定义产生的改换接口 2025-06-04 15:16:45 +08:00
TsMask
7e21e25cf3 fix: 修改认证信息标签宽度和国际化文本格式 2025-05-23 20:08:24 +08:00
TsMask
ce9b8815df chore: 更新版本号 2.250523 2025-05-23 17:17:00 +08:00
lai
f2018eca30 add allNe Tooltip 2025-05-23 17:08:04 +08:00
lai
af513ba157 拓扑图修改 2025-05-22 18:32:42 +08:00
zhongzm
1aa1b471a5 feat:关键指标、黄金指标仪表盘多网元实现 2025-05-22 15:00:27 +08:00
TsMask
f42b921a50 fix: 网元授权许可证状态统一刷新功能 2025-05-22 09:56:28 +08:00
TsMask
db26e9a054 fix: 看板禁止图形交互模式 2025-05-20 17:32:42 +08:00
TsMask
1dd2ae6a4c feat: 添加KPI标题映射 2025-05-20 17:32:23 +08:00
TsMask
2d672250fd fix: 更新英文和中文翻译中的“批量刷新”文本 2025-05-20 17:31:59 +08:00
TsMask
59f959fcc2 feat: Tools-Host Terminal支持搜索过滤 2025-05-16 15:23:22 +08:00
TsMask
d35179c8ae chore: 更新版本号 2.250516 2025-05-16 09:56:19 +08:00
TsMask
9e0f6d3946 fix: 英文修改基站名称为 RAN Node Name 2025-05-13 18:31:20 +08:00
TsMask
b627b6aa83 fix: 修正文件切片相关API的URL路径格式 2025-05-12 19:16:55 +08:00
TsMask
e98c6cda51 fix: 修正文件切片相关API的URL路径格式 2025-05-12 17:14:31 +08:00
TsMask
481b099655 fix: 更新文件列表中的路径和标签值 2025-05-12 16:47:51 +08:00
TsMask
d9534b635e fix: 仪表盘数据会话属累加 2025-05-12 15:21:04 +08:00
TsMask
d7173ff737 chore: 更新版本号 2.250509 2025-05-09 19:15:59 +08:00
TsMask
571bc840ad feat: 统一FTP配置,本地备份文件浏览 2025-05-09 19:13:02 +08:00
TsMask
8664e72189 feat: 支持下载UDM Auth, UDM sub, User PCC导入模板 2025-05-09 18:48:27 +08:00
TsMask
f1aec581c7 fix: SMFByImsi删除图缩放按钮 2025-05-09 14:53:13 +08:00
TsMask
2492c7562a fix: UDM-Auth/Sub批量数名称修改 2025-05-09 12:02:37 +08:00
TsMask
83690f95d7 fix: SMF-UEl列表数量错误 2025-05-09 12:02:06 +08:00
TsMask
02b071f4a0 fix: OAM读取结构错误 2025-05-09 12:01:39 +08:00
TsMask
beca94906c fix: 仪表盘用户数据刷新时显示0闪烁 2025-05-07 16:55:33 +08:00
TsMask
d6c10050b4 chore: 更新版本号 2.250428 2025-04-28 19:44:28 +08:00
TsMask
5fc9aa7c2f fix: 主页重定向仪表盘 2025-04-28 18:28:21 +08:00
TsMask
9214474325 fix: 修正时间格式常量,添加GMT和RFC格式 2025-04-28 14:51:40 +08:00
TsMask
55008a112c feat: 添加多语言翻译结果码和结果原因字段 2025-04-28 14:50:36 +08:00
TsMask
600ee94ed9 style: 调整时间字段宽度 2025-04-28 14:48:54 +08:00
TsMask
55f5734d7b fix: 看板用户活动乱序问题 2025-04-28 14:37:58 +08:00
TsMask
a4fa53556b fix: 看板流量图确保时间以HH:mm:ss格式显示 2025-04-28 14:20:35 +08:00
TsMask
ca8f16fb0c feat: 添加CDR SIP响应代码类别类型字典 2025-04-28 14:19:47 +08:00
TsMask
6d7cde6058 fix: 优化udm-voip/ims功能页面 2025-04-22 15:49:58 +08:00
TsMask
2b8e222f23 fix: 锁屏密码dom错误 2025-04-22 14:33:58 +08:00
TsMask
00e97feac7 chore: 依赖版本更新 2025-04-22 11:46:04 +08:00
TsMask
10dd1270fc style: 补充多语言翻译 2025-04-22 11:45:45 +08:00
TsMask
94181fa0da fix: 网元OAM下发开关控制重启 2025-04-22 11:45:31 +08:00
TsMask
9203113c09 fix: 锁屏密码base处理,无密码进入 2025-04-22 11:44:59 +08:00
TsMask
e326bd1ef8 fix: 时间改用R3399格式 2025-04-22 11:44:24 +08:00
TsMask
69bae32c80 feat: ws心跳消息 2025-04-22 11:43:44 +08:00
TsMask
00c20df133 feat: 网元信令跟踪功能 2025-04-22 11:43:17 +08:00
zhongzm
bcb94ae9e7 feat:UDMims列调整,voip初始值修改 2025-04-16 11:30:30 +08:00
zhongzm
64072af7ad feat:参数修改 2025-04-16 10:28:49 +08:00
zhongzm
b9f540f1ee feat:sub界面调整tenant name列位置 2025-04-15 21:02:11 +08:00
zhongzm
cb7e3038fa feat:voip界面显示修复以及用户名限制数字输入 2025-04-15 20:54:59 +08:00
zhongzm
460a4e1b3b feat:UDMIMS界面显示修复 2025-04-15 20:22:33 +08:00
zhongzm
14495fce2b feat:显示修复,option修复 2025-04-12 17:27:41 +08:00
zhongzm
e06b7d4fd3 feat:显示修复 2025-04-12 16:14:53 +08:00
zhongzm
72bd9004cc feat:imsUDM界面添加功能修复 2025-04-11 20:52:04 +08:00
zhongzm
84b0ab50f4 feat:VOIP auth界面 2025-04-11 20:07:06 +08:00
TsMask
aaaf5679ae fix: 看板用户数初始neId传入失败,禁止选择当前项 2025-04-11 17:58:55 +08:00
zhongzm
b1bfb7a915 feat:删除remark和smdata的校验 2025-04-11 16:42:41 +08:00
zhongzm
58919ad4d4 feat:IMSSUB界面修改显示,增加参数 2025-04-11 15:43:02 +08:00
zhongzm
49f0037145 feat:上传界面按钮列文字提示(补) 2025-04-11 11:54:30 +08:00
zhongzm
d0b5ee7e75 feat:上传界面按钮列文字提示 2025-04-11 11:53:24 +08:00
zhongzm
c37552661c feat:UE的imsSub界面 2025-04-11 11:19:11 +08:00
zhongzm
d6a7d8348e feat:UE的Export界面
(cherry picked from commit 48ddafaec9)
2025-04-09 10:28:07 +08:00
TsMask
586003c9b9 fix: 修正获取UDM子项数量 2025-03-25 18:53:31 +08:00
TsMask
163ce9b64c fix: 修正获取UDM子项数量的响应数据结构并移除无用的缓存ID 2025-03-25 18:43:04 +08:00
TsMask
1d5268d348 fix: 更新IMS的KPI ID列表以包含更多项 2025-03-25 16:35:14 +08:00
TsMask
ef098b5d02 fix: 看板用户数切换展示 2025-03-25 15:56:52 +08:00
TsMask
1eabb4445e fix: 看板用户数切换展示 2025-03-25 15:56:37 +08:00
TsMask
b10aed3d14 fix: KPI总览无数据时展示title 2025-03-25 15:56:05 +08:00
TsMask
6590a0c811 fix: 禁止admin修改菜单分配 2025-03-21 17:08:20 +08:00
TsMask
8eed156143 fix: 增加文件下载超时时间至600秒 2025-03-21 15:24:29 +08:00
TsMask
0ab9a98ba9 chore: 更新版本号 2.250321 2025-03-21 15:15:27 +08:00
TsMask
72dadaf3f2 feat: 看板UPF流量总计7or30天 2025-03-21 15:13:47 +08:00
TsMask
f0079d67fd style: 用户列表时间列宽200px 2025-03-21 15:09:10 +08:00
TsMask
bc4560b8d9 fix: 自定义指标只有UPF显示sum列其他网元隐藏 2025-03-21 15:08:38 +08:00
TsMask
466e56b90f fix: 禁止admin修改菜单分配 2025-03-21 15:06:53 +08:00
TsMask
aa0397ad1a fix: pcap分析Protocol列换行问题 2025-03-19 17:59:17 +08:00
TsMask
c91f3e7927 fix: 告警事件导出异常/告警ID列移除 2025-03-17 18:40:38 +08:00
TsMask
69cf72af22 fix: 告警时间转换导致查询修改错误 2025-03-17 18:10:35 +08:00
TsMask
f3491a1a31 Merge branch 'main' into multi-tenant 2025-03-14 11:05:35 +08:00
TsMask
71ef748af8 chore: 更新版本号 2.250314 2025-03-14 11:03:32 +08:00
TsMask
5caa285ede fix: 网元快速安装移除网元历史包选择 2025-03-12 11:25:15 +08:00
TsMask
e14c1ce771 fix: 系统设置移除自定义主页 2025-03-12 11:14:16 +08:00
TsMask
8d22ab850a style:: 网元概览详细内存CPU信息 2025-03-12 11:13:50 +08:00
TsMask
82af22b997 fix: 移除IMS CDR视图中的展开信息 2025-03-12 11:12:56 +08:00
TsMask
37a1f748e7 feat: SMF数据单位转换MB显示 2025-03-12 11:12:30 +08:00
TsMask
a24122ecd7 feat: PCAP文件目录下载目录为ZIP文件功能 2025-03-12 11:09:27 +08:00
TsMask
ccbea1fc51 style: 调整告警页面表格列对齐和宽度,去掉pvfig 2025-03-12 11:05:17 +08:00
TsMask
ac7079b91a Merge remote-tracking branch 'origin/main' into multi-tenant 2025-03-11 18:24:42 +08:00
TsMask
91c9829d77 style: 优化PacketTable组件的滚动条样式和布局 2025-03-11 16:03:36 +08:00
TsMask
5304b298f6 fix: 网元许可调整表格列宽和图标样式 2025-03-11 16:01:33 +08:00
TsMask
e09369aa5a style: 多语言翻译安装-Install 2025-03-11 15:59:05 +08:00
TsMask
3363e36669 fix: 总览数值累加/基站跳转页面修改 2025-03-11 15:50:09 +08:00
TsMask
ea2ce56e52 feat: 更新数据获取逻辑并添加数据使用情况展示 2025-03-11 15:49:45 +08:00
TsMask
dee60e0699 feat: 添加带时区的时间格式支持 2025-03-11 15:41:59 +08:00
TsMask
8af7031c92 Merge branch 'main' into multi-tenant 2025-03-08 14:24:08 +08:00
TsMask
e62fc0c039 fix: 系统菜单按钮权限状态可修改 2025-03-08 14:23:54 +08:00
TsMask
ad31a52663 Merge branch 'main' into multi-tenant 2025-03-08 11:09:27 +08:00
TsMask
de16b96971 chore: 更新版本号 2.250308 2025-03-08 11:02:23 +08:00
TsMask
ed9bff5d61 Merge branch 'main' into multi-tenant 2025-03-07 18:26:24 +08:00
TsMask
f0e34726ec feat: 添加软件包文件未发现提示信息 2025-03-05 11:11:58 +08:00
TsMask
3ca8154279 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-03-04 17:00:15 +08:00
TsMask
2cbd2e0aa7 fix: 看板UPF切换问题 2025-03-04 16:59:16 +08:00
TsMask
73d7d64225 Merge branch 'main' into multi-tenant 2025-03-04 16:11:01 +08:00
TsMask
16913aa721 feat: 看板权限控制部分显示 2025-03-04 16:05:30 +08:00
TsMask
ba426d7737 chore: 更新版本号 2.250228 2025-02-28 19:54:51 +08:00
TsMask
3d4d785f33 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-02-25 14:55:22 +08:00
TsMask
8df5e278c8 feat: 添加时间范围选择器,支持快速选择当前小时、今天和昨天 2025-02-25 14:53:18 +08:00
TsMask
ea8fb7cad2 chore: 更新版本号 2.250221 2025-02-21 21:07:35 +08:00
TsMask
b7b8b11860 fix: 兼容3G的SGWC字段 2025-02-21 15:46:55 +08:00
TsMask
1d02b17c20 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-02-21 10:41:56 +08:00
TsMask
bae61108be chore: 编译类型错误 2025-02-20 19:24:06 +08:00
TsMask
f60e530636 sytle: 多语言EN更新 2025-02-20 10:21:28 +08:00
TsMask
b3e9761305 fix: SGWC-CDR字段变更SGSN/GGSN 2025-02-20 10:20:44 +08:00
TsMask
5f75197a42 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-02-14 20:16:54 +08:00
TsMask
fbd2867ad2 chore: 更新版本号 2.250214 2025-02-14 19:42:30 +08:00
TsMask
2ca23ad99a fix: 网元SMF配置选择UPF下拉框数据获取失败 2025-02-14 19:33:09 +08:00
lai
4b032d74be 优化KPI展示 2025-02-13 19:32:04 +08:00
TsMask
8bfa73a67a fix: 导出备份配置调整 2025-02-11 18:33:47 +08:00
TsMask
f188e193f3 style: 调整UDM用户数据新增表单排版 2025-02-11 17:52:02 +08:00
TsMask
b362855a60 fix: 信令pcap解析列表颜色转换问题 2025-02-11 11:28:33 +08:00
TsMask
4c28d6b98c style: 调整UDM鉴权新增表单排版 2025-02-10 10:02:13 +08:00
TsMask
2276f2281a chore: 更新版本号 2.250208 2025-02-08 19:40:36 +08:00
TsMask
7ccb580e91 feat: 基站状态导入功能 2025-02-08 19:39:47 +08:00
TsMask
0346dfd584 chore: 更新依赖版 2025-02-08 18:08:05 +08:00
TsMask
5a64afe209 feat: 基站状态记录上报和导出功能 2025-02-08 18:07:46 +08:00
TsMask
fd82d710b6 feat: UDM用户数据导入输出失败记录,UDM2.2502.58 2025-02-07 16:00:52 +08:00
TsMask
2056d7c51b fix: 看板加载拓扑图数据 2025-02-07 10:36:56 +08:00
TsMask
91866293bc fix: 租户页面CDR多语言显示 2025-02-07 10:36:16 +08:00
TsMask
2714537140 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-24 20:51:23 +08:00
TsMask
fbc1535015 chore: 更新版本号 2.250124 2025-01-24 20:29:06 +08:00
TsMask
36de89570f fix: 网元状态切换保留List页面状态 2025-01-24 20:28:26 +08:00
TsMask
22e595131c feat: 基站状态添加MME4G状态 2025-01-24 09:38:55 +08:00
TsMask
c037660b01 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-22 19:34:28 +08:00
TsMask
208d14d65a fix: SMF-CDR时间可选查询范围,无数据loading关闭 2025-01-20 20:23:40 +08:00
TsMask
80b9cd83fb style: 修改kpi表头提示,关闭排序 2025-01-20 20:22:02 +08:00
TsMask
721ec4a5da feat: 日志备份FTP服务配置项 2025-01-20 17:24:05 +08:00
TsMask
fb9db32da7 fix: 路由免用户登录认证判断 2025-01-17 18:42:06 +08:00
TsMask
874720b68d Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-17 18:40:15 +08:00
TsMask
34f558199a chore: 更新版本号 2.250117 2025-01-17 18:24:09 +08:00
TsMask
597883fa08 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-17 16:47:34 +08:00
TsMask
07eab9378a fix: 接口加密参数控制开关 2025-01-17 15:54:01 +08:00
TsMask
806cbbd9ed style: KPI数据表格头提示信息 2025-01-17 15:30:22 +08:00
TsMask
8adf2a3dd0 fix: 基站状态条件查询时只显示当前状态数量 2025-01-17 15:29:44 +08:00
TsMask
2164ffc9b2 fix: SMF-CDR查询IMSI数据结果图优化,支持DNN条件 2025-01-17 15:28:33 +08:00
TsMask
73a1a4c51b Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-16 20:59:41 +08:00
TsMask
7091f1ffa6 fix: KPI指标表格头提示信息 2025-01-16 20:56:09 +08:00
TsMask
fa44f6abe0 fix: 基站状态列宽拖动,状态结果统计 2025-01-16 20:50:50 +08:00
TsMask
8586d7f1ce fix: 基站状态页面编辑判断错误 2025-01-16 14:27:51 +08:00
TsMask
b2d818fc30 style: 依赖库无类型声明定义 2025-01-15 21:08:22 +08:00
TsMask
a20d5ee99f fix: 网元信息修改局部更新状态判断 2025-01-15 21:07:44 +08:00
TsMask
74b55423d5 style: 移除l部分无用的log输出 2025-01-15 21:07:17 +08:00
TsMask
7962c7e7a8 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-15 18:45:52 +08:00
TsMask
96acbc0919 fix: 网元状态概览页面定时刷新异常错误 2025-01-15 18:42:42 +08:00
TsMask
6f5759b5ba Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-15 17:58:06 +08:00
TsMask
322b5f18ed fix: 基站状态显示设备名和在线用户数 2025-01-15 17:55:19 +08:00
TsMask
a7df09d56f Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-15 17:22:15 +08:00
TsMask
e36dac9b81 fix: KPI指标表格头提示信息 2025-01-15 17:13:38 +08:00
TsMask
8214175890 fix: 基站状态页面翻译和部分优化 2025-01-15 17:12:51 +08:00
TsMask
bc8207d29d Merge branch 'main' into multi-tenant 2025-01-10 19:39:58 +08:00
TsMask
9e55768312 chore: 更新版本号 2.250110 2025-01-10 19:38:58 +08:00
TsMask
6bfd0f4792 style: 网元配置多语言映射缺失 2025-01-10 19:37:29 +08:00
TsMask
98ed8adfe3 feat: 网元状态3待机显示 2025-01-10 19:33:06 +08:00
TsMask
f5938110f4 fix: 去除系统用户密码重置账号校验 2025-01-10 18:45:16 +08:00
TsMask
93e00ed436 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-03 21:53:07 +08:00
TsMask
acd8a33b4a chore: 更新版本号 2.250103 2025-01-03 21:52:54 +08:00
TsMask
33bdbd6d08 Merge remote-tracking branch 'origin/main' into multi-tenant 2025-01-03 21:34:31 +08:00
TsMask
7ab2b3b546 chore: 更新版本号 2.240103 2025-01-03 21:13:17 +08:00
TsMask
b490e4f5b9 chore: 更新依赖版 2025-01-03 21:09:51 +08:00
TsMask
fe82336937 feat: 基站状态页面及拓扑展示页面功能实现 2025-01-03 21:09:16 +08:00
TsMask
35a7ed5b35 chore: 更新版本号 2.241228 2024-12-28 10:55:43 +08:00
TsMask
56def56b58 Merge remote-tracking branch 'origin/lichang' 2024-12-28 10:55:04 +08:00
TsMask
6074078f5d fix: 网元数据接口查询超时时间改为60s 2024-12-28 10:11:24 +08:00
TsMask
428adb5186 fix: 自定义指标查询超时60s 2024-12-27 19:09:28 +08:00
TsMask
1cbce9ad03 feat: UE数据列表统一格式 2024-12-27 19:08:58 +08:00
TsMask
2138896d43 fix: 网元类型选择框警告状态修复 2024-12-27 19:07:02 +08:00
TsMask
c40ee9c8cc fix: 看板重复获取UE修复和AMF-UE数据结构变更调整 2024-12-27 19:06:12 +08:00
TsMask
d33183ca5e style: SMF-CDR流量报表页面 2024-12-26 20:11:34 +08:00
TsMask
9ff9529402 Merge remote-tracking branch 'origin/lichang' 2024-12-26 18:56:13 +08:00
TsMask
51a8d6d3a0 feat: SMF-CDR用户流量使用情况图表展示 2024-12-26 18:40:36 +08:00
TsMask
c22663505c fix: SMF-CDR去除RatingGroup区分 2024-12-26 18:39:09 +08:00
TsMask
efa30f4ee3 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-12-25 17:57:34 +08:00
TsMask
9b589a0e69 Merge remote-tracking branch 'origin/lichang' 2024-12-25 17:50:10 +08:00
TsMask
401a7d65a0 feat: 同步标准版的看板页面 2024-12-25 14:21:49 +08:00
TsMask
91242e74b0 reven: 还愿网元配置 2024-12-25 10:30:49 +08:00
TsMask
b0b9c69ad2 style: 网元信息服务区域默认Area 2024-12-24 20:37:09 +08:00
TsMask
f8f2ba1f92 style: 网元信息服务区域默认Area 2024-12-24 20:35:49 +08:00
TsMask
e3792eff57 fix: 网元配置类型切换清空下拉树 2024-12-24 19:49:51 +08:00
TsMask
5a3fa2a6ba fix: 网元配置类型切换清空下拉树 2024-12-24 19:49:39 +08:00
TsMask
081c79b85b Merge remote-tracking branch 'origin/main' into multi-tenant 2024-12-24 19:45:43 +08:00
lai
5c0909e356 修改切换条件 2024-12-24 18:38:47 +08:00
TsMask
c1fdb68d96 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-12-24 17:35:40 +08:00
TsMask
b7da976819 fix: 看板UDM签约数据获取x2问题 2024-12-23 20:05:13 +08:00
TsMask
41e37766b7 feat: SMSC短信内容显示,权限控制显示操作删除cdr:ne:remove 2024-12-23 19:39:06 +08:00
TsMask
44612081bc chore: 更新版本号 2.241220 2024-12-20 18:36:52 +08:00
TsMask
4929ed30bc Merge remote-tracking branch 'origin/lichang' 2024-12-20 18:31:28 +08:00
TsMask
8f1de1c396 chore: 更新版本号 2.241130 2024-12-20 18:28:06 +08:00
lai
9b84ff9452 样式修改 2024-12-20 17:18:16 +08:00
lai
e4222e7b03 去除修改删除按钮 2024-12-20 17:17:15 +08:00
TsMask
eea4e0069d feat: CDR页面切换网元重置查询 2024-12-20 16:36:33 +08:00
lai
2b69b8d72b 增加仪表盘累加及UPF下拉框 2024-12-20 15:47:17 +08:00
TsMask
1f130098ee style: 加载缺省空字符 2024-12-20 15:45:07 +08:00
TsMask
5a4ab62e97 fix: CDR数据检查格式,SGWC调试 2024-12-20 15:43:44 +08:00
TsMask
c86c498ab9 fix: 编译cjs和css方式导致切换主题色异常 2024-12-19 21:06:51 +08:00
TsMask
139a14fd3d feat: 网元总览点击状态显示页面调整 2024-12-19 20:24:46 +08:00
TsMask
6e7402fd63 feat: 网元配置多网元同时配置HA功能优化选择 2024-12-19 20:24:29 +08:00
TsMask
2e91ab319f style: 看板UDM-签约数量参数调整 2024-12-19 11:33:37 +08:00
TsMask
d537f56b9d feat: 网元配置多网元同时配置HA功能 2024-12-19 11:31:55 +08:00
TsMask
7c4710e2e7 style: CDR/UE展开详情布局调整 2024-12-19 11:30:43 +08:00
TsMask
ea368f9162 style: smsc时间显示列宽度200px 2024-12-19 11:23:23 +08:00
TsMask
7cab3f6556 chore: 编译依赖拆包manualChunks行为 2024-12-19 11:21:46 +08:00
TsMask
a53eaaf533 fix: 角色分配菜单勾选父子级联转出子节点关联根节点数组 2024-12-19 11:21:33 +08:00
TsMask
302ea84cde style: 看板UDM-签约数量参数调整 2024-12-19 11:17:06 +08:00
TsMask
7d470fd681 style: 网元列表加载同时清除缓存 2024-12-19 11:14:55 +08:00
TsMask
b64c4c66ab style: 网元类型列表静态可选排序 2024-12-19 11:11:54 +08:00
TsMask
15ac549532 feat: 新增SGWC-CDR页面 2024-12-19 11:11:16 +08:00
TsMask
9bff669769 fix: 多语言删除无用定义 2024-12-18 15:37:21 +08:00
TsMask
8a53ac8b9f feat: 网元配置多网元同时配置HA功能 2024-12-18 15:33:52 +08:00
TsMask
d3a18f95db style: CDR/UE展开详情布局调整 2024-12-18 15:32:36 +08:00
TsMask
11649c3fb1 fix: SMF-在线订阅用户列表信息 2024-12-18 15:31:27 +08:00
TsMask
09fd8bc4dc style: smsc时间显示列宽度200px 2024-12-16 11:25:30 +08:00
TsMask
5a704146a5 fix: 角色分配菜单勾选父子级联转出子节点关联根节点数组 2024-12-16 11:07:50 +08:00
TsMask
e25cd91df1 Merge remote-tracking branch 'origin/main' into lichang 2024-12-16 10:45:41 +08:00
TsMask
71f2e596fe chore: 编译依赖拆包manualChunks行为 2024-12-16 10:25:19 +08:00
TsMask
7e60f0dd05 chore: 编译依赖拆包manualChunks行为 2024-12-16 10:23:22 +08:00
TsMask
a0cc882a4b chore: 更新版本号 2.241213 2024-12-13 21:32:31 +08:00
TsMask
a94f9414a4 chore: 更新版本号 2.241213 2024-12-13 21:19:28 +08:00
TsMask
7f69bc69bc chore: 编译依赖拆包manualChunks行为 2024-12-13 18:25:52 +08:00
lai
4b1058cff3 完善表单赋值机制 2024-12-13 16:04:21 +08:00
lai
a6bab3fa0b 修复拆解smData异常问题 2024-12-13 15:28:15 +08:00
TsMask
d6c0f89de5 style: 在线基站列表网元类型切换时刷新 2024-12-11 15:48:13 +08:00
TsMask
f3ae3da2a5 style: UDM签约cag参数默认为空字符 2024-12-11 15:47:09 +08:00
TsMask
c44fae8d13 style: UDM签约cag参数默认为空字符 2024-12-11 15:46:03 +08:00
TsMask
bcb214448c style: 在线基站列表网元类型切换时刷新 2024-12-11 15:45:07 +08:00
TsMask
d5c91e733b fix: telnet终端输入回车值无法正确发出 2024-12-10 10:28:56 +08:00
TsMask
ea6dfa7558 fix: redis终端改为命令输入框,禁止窗口输入 2024-12-10 10:28:41 +08:00
TsMask
6129002b38 fix: SMF-Data隐藏RatingGroup显示 2024-12-10 10:26:40 +08:00
TsMask
65db17a319 fix: SMF-Data隐藏RatingGroup显示 2024-12-10 10:26:19 +08:00
TsMask
6969669027 fix: 拓扑网元状态15s一个周期 2024-12-10 10:25:39 +08:00
TsMask
38a698f07b fix: redis终端改为命令输入框,禁止窗口输入 2024-12-10 10:25:00 +08:00
TsMask
9f121505d1 fix: telnet终端输入回车值无法正确发出 2024-12-10 10:24:14 +08:00
TsMask
e11cb11ec9 fix: 修复 租户页面合并问题 2024-12-09 17:03:29 +08:00
TsMask
6add41254d chore: 更新版本号 2.241209 2024-12-09 10:52:54 +08:00
TsMask
85bc4aea53 fix: 页面解析错误 2024-12-09 10:51:54 +08:00
simonzhangsz
a95a96dfc0 update package 2024-12-07 11:55:35 +08:00
simonzhangsz
9167da1bc5 tsc check 2024-12-06 19:13:49 +08:00
lai
5be94b499d Merge remote-tracking branch 'origin/main' into multi-tenant 2024-12-06 18:37:56 +08:00
lai
69dfc2a1f5 event Type异常 2024-12-06 18:10:06 +08:00
TsMask
b1a699252b fix: 免登录认证参数默认值 2024-12-06 17:36:36 +08:00
TsMask
f66454256b fix: CDR时间转换问题 2024-12-05 14:50:46 +08:00
TsMask
a0886abd38 chore: 更新版本号 2.241130 2024-11-30 17:10:59 +08:00
lai
9383c17484 优化指标界面 2024-11-29 17:17:54 +08:00
zhongzm
512bd6d8eb fix:tooltip计算修复 2024-11-29 14:50:38 +08:00
zhongzm
b8b66fe610 fix:table排序 2024-11-28 20:09:19 +08:00
zhongzm
154569304c feat:添加多选 2024-11-28 18:57:35 +08:00
zhongzm
cc3432ca06 Merge remote-tracking branch 'origin/main' 2024-11-28 18:45:20 +08:00
zhongzm
68b9c5fa5e feat:添加累加值计算 2024-11-28 18:45:11 +08:00
TsMask
6620ac7279 fix: Para5G参数UPF新增网卡名 2024-11-28 15:49:23 +08:00
TsMask
a9a094d04a revet: 去除系统免登录加密参数data 2024-11-25 20:02:16 +08:00
TsMask
5d4a04ecf2 feat: 去除系统免登录加密参数data 2024-11-25 18:55:16 +08:00
TsMask
1b28260680 feat: 系统免登录参数路由跳转 2024-11-25 11:59:46 +08:00
zhongzm
83cb3f8728 test 2024-11-25 10:48:53 +08:00
zhongzm
7d69d3c21d fix:样式修复、明暗主题适应 2024-11-23 17:01:41 +08:00
TsMask
ebde50f58b chore: 更新版本号 2.241123 2024-11-23 16:40:10 +08:00
lai
b8924d161f 修正自定义指标 2024-11-22 18:05:17 +08:00
lai
ccb52ea94f 过滤无自定义指标的网元 2024-11-22 17:27:27 +08:00
lai
72abbe1c53 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-11-22 17:07:55 +08:00
zhongzm
f318f61b4a fix:明暗主题随机颜色方法修复 2024-11-22 16:15:25 +08:00
zhongzm
45d8314e29 fix:暗色模式样式适应 2024-11-22 15:43:00 +08:00
zhongzm
886a1c8667 fix:修改取色范围适应暗色模式 2024-11-22 15:42:38 +08:00
lai
378729720d Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-11-22 10:41:11 +08:00
zhongzm
c2a3d4b8a8 fix:修改时间粒度,修改默认时间 2024-11-22 10:14:45 +08:00
zhongzm
8444de8e98 Merge remote-tracking branch 'origin/main' 2024-11-22 09:57:04 +08:00
zhongzm
874e01996a fix:样式调整,增加栅格线,曲线平滑,平均值计算 2024-11-22 09:56:51 +08:00
TsMask
fb855fd74e fix: 获取网元状态定时轮询修复 2024-11-21 18:19:07 +08:00
TsMask
78f963fbea fix: CDR-IMS去掉MOSM MTSM 2024-11-21 12:06:32 +08:00
TsMask
cf0116b5c6 fix: CDR时间的处理 2024-11-21 10:06:07 +08:00
lai
80b07c462f 避免x轴时间数组重复 2024-11-20 18:32:14 +08:00
zhongzm
5a8ab1343f fix:日期选择器属性弃用修复 2024-11-20 17:00:22 +08:00
zhongzm
67349e24d8 fix:日期选择器属性弃用修复 2024-11-20 16:59:36 +08:00
lai
f59697a2f2 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-11-20 16:31:40 +08:00
lai
8c197bee04 回复 2024-11-20 16:31:28 +08:00
TsMask
f866fbf153 style: 网元总览显示用户容量 2024-11-20 12:01:12 +08:00
TsMask
d7b4fd3f71 fix: SMSC-CDR时间字段判断是否时间戳 2024-11-20 11:12:55 +08:00
TsMask
1c07167f1a fix: 看板活动事件默认加载20,改amf事件Group 2024-11-19 20:46:32 +08:00
lai
d5c42f761e 修改接口 2024-11-19 18:57:30 +08:00
zhongzm
29449cc597 Merge remote-tracking branch 'origin/main' 2024-11-19 17:21:03 +08:00
zhongzm
7615bccf04 fix:日期选择器添加快捷选项,tooltip显示修复 2024-11-19 17:20:49 +08:00
TsMask
831e7ee987 fix: 工具ipfer操作客户端host输入判断 2024-11-19 17:02:09 +08:00
TsMask
f5f27d78f1 Merge remote-tracking branch 'origin/lichang' 2024-11-19 16:58:41 +08:00
TsMask
ebc46ff7d4 fix: 工具ipfer操作客户端host输入判断 2024-11-19 16:58:07 +08:00
lai
2513baf48e 修改中英文提示 2024-11-19 14:38:06 +08:00
lai
ac2483d690 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-11-19 14:24:16 +08:00
lai
a85f87f3fc 居中显示tooltip 2024-11-19 14:23:16 +08:00
lai
68e002776c 完善数据处理 2024-11-19 14:09:37 +08:00
TsMask
9322f52c9a Merge remote-tracking branch 'origin/lichang' 2024-11-19 11:52:50 +08:00
TsMask
f15e52573b fix: UDM鉴权键入Tenant Name主动重新获取列表 2024-11-19 11:36:03 +08:00
lai
2c9807f9b8 默认全选 2024-11-19 11:36:03 +08:00
TsMask
fcf32800fe fix: 非管理员角色不能设置布局样式 2024-11-19 11:30:48 +08:00
lai
f8f4dc0f2e Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-11-19 11:30:13 +08:00
lai
49bd59c639 回填 2024-11-19 11:28:49 +08:00
TsMask
a96c587559 fix: 修复网元概览数据饼图状态异常 2024-11-19 10:25:16 +08:00
TsMask
6bd7a28458 fix: 看板初始用户活动各20条进行排序显示 2024-11-19 10:24:32 +08:00
TsMask
053517324d fix: 修复网元概览数据饼图状态异常 2024-11-19 10:23:43 +08:00
zhongzm
256802e698 fix:修复加载显示 2024-11-18 18:15:23 +08:00
zhongzm
851e8a461e fix:修复缩放异常 2024-11-18 10:39:55 +08:00
zhongzm
d8d49f23c4 fix:样式报错修复 2024-11-18 10:02:20 +08:00
TsMask
1511792e3b fix: 快速开站网元排序进行逐个安装 2024-11-15 19:53:45 +08:00
TsMask
0544495d70 fix: 快速开站网元排序进行逐个安装 2024-11-15 19:44:03 +08:00
lai
045a25f3ae 删除漫游引导 2024-11-15 19:23:29 +08:00
TsMask
b6d1ba6766 chore: 更新版本号 2.241115 2024-11-15 18:18:42 +08:00
zhongzm
e8e0e07189 Merge remote-tracking branch 'origin/main' 2024-11-15 16:58:38 +08:00
zhongzm
1672c6c6ba feat:自定义指标漫游引导 2024-11-15 16:58:25 +08:00
TsMask
ac251c2c00 Merge remote-tracking branch 'origin/lichang' 2024-11-15 16:51:22 +08:00
TsMask
5d7334a4de fix: 非管理员角色不能设置布局样式 2024-11-15 16:47:12 +08:00
lai
9b9c0b39fd 优化界面显示 2024-11-15 15:48:54 +08:00
TsMask
802a91a96d fix: 修复TelInput组件号码无法解析问题 2024-11-15 15:20:09 +08:00
zhongzm
31bca2b98f fix:修复图表tooltip显示被遮盖的问题 2024-11-15 14:32:53 +08:00
zhongzm
bf94591035 fix:图表生成时序调整 2024-11-15 14:31:58 +08:00
TsMask
d523b60311 fix: 登录页去除头尾栏,暗色背景修改 2024-11-15 10:30:00 +08:00
zhongzm
e0990a40df fix:实时数据文本显示 2024-11-14 20:39:23 +08:00
TsMask
20c1c455c4 fix: 修复TelInput组件号码无法解析问题 2024-11-14 20:08:40 +08:00
TsMask
dab76add73 style: 网元license操作图标调整 2024-11-14 14:18:52 +08:00
TsMask
101cb70893 style: 页面样式调整 2024-11-14 11:33:49 +08:00
TsMask
348b11e201 fix: 网元切换时命令操作信息过滤 2024-11-14 11:33:17 +08:00
zhongzm
a9fdda3f5e fix:清楚旧功能的多余代码 2024-11-13 17:12:12 +08:00
zhongzm
89d22e55c7 feat:关键指标图表界面重构(grafana标准) 2024-11-13 16:56:15 +08:00
zhongzm
40f2a78717 feat:添加表格排序功能 2024-11-13 10:26:59 +08:00
zhongzm
80ee1c05ff feat:关键指标概览界面重构(grafana标准) 2024-11-12 19:01:28 +08:00
TsMask
021f9f28f6 fix; SMSC-CDR时间格式调整 2024-11-12 10:12:32 +08:00
zhongzm
d7990a6ee5 feat:添加漫游式引导 2024-11-08 18:25:11 +08:00
TsMask
3561a5dc39 Merge remote-tracking branch 'origin/main' into lichang 2024-11-08 17:40:18 +08:00
TsMask
247a009eef chore: 更新版本号 2.241108 2024-11-08 17:39:06 +08:00
TsMask
fcd4db8217 feat: 快速安装UPF配置网卡名和驱动类型 2024-11-08 16:17:44 +08:00
TsMask
3e03d47520 style: 缓存管理边距样式 2024-11-08 16:05:21 +08:00
TsMask
414afea783 style: 调整MML执行日志表格样式 2024-11-08 16:04:51 +08:00
TsMask
df7c455881 fix: 多语言切换隐藏,导致无法切换主题色 2024-11-08 16:03:33 +08:00
lai
1644765ce2 补充 2024-11-08 15:24:07 +08:00
lai
db16cdb79b 回填信息 2024-11-08 14:55:19 +08:00
lai
800547d1ef 自定义指标优化 2024-11-08 12:00:20 +08:00
TsMask
5614be7877 fix: UDM用户数据加载速度优化并提示时间 2024-11-08 10:47:39 +08:00
TsMask
0644e49161 feat: 工具>主机终端操作服务器命令支持redis 2024-11-07 19:29:59 +08:00
lai
44cd1d354a 同步主线antd3 2024-11-07 15:17:56 +08:00
lai
15b81eef97 首页菜单选择框为树状选择框 2024-11-07 14:10:00 +08:00
lai
5ddf83d1fd 改为时间戳且加上快捷时间选择 2024-11-07 14:09:26 +08:00
zhongzm
6326f46bf2 style:样式修改,暗黑色适应 2024-11-06 19:44:52 +08:00
zhongzm
f75719ca37 fix:修改日期选择器默认时间 2024-11-06 15:25:23 +08:00
TsMask
21cf86baff style: 去除console 2024-11-05 17:42:17 +08:00
TsMask
6583bc9972 style: 日志导出文件管理选择控件样式调整 2024-11-05 17:41:51 +08:00
TsMask
886ea37702 fix: iperf支持v2和v3的命令操作 2024-11-05 17:33:57 +08:00
TsMask
23116db988 fix: 终端命令显示查看组件输出命令到首行 2024-11-05 17:33:23 +08:00
zhongzm
8283523327 fix:修复实时数据显示问题 2024-11-05 17:24:42 +08:00
zhongzm
33159befc3 fix:增加并发请求,优化性能和逻辑 2024-11-05 17:11:38 +08:00
zhongzm
c567b19fb2 fix:修复template中不影响运行的报错 2024-11-04 16:48:16 +08:00
zhongzm
d8487d7cd7 fix:修复其他指标列表无法打开,文本错乱的问题 2024-11-04 16:04:11 +08:00
TsMask
347c9f1d3b Merge remote-tracking branch 'origin/lichang' 2024-11-04 11:19:59 +08:00
TsMask
a731a6408b fix: 调整默认布局mix,修复底部宽度100% 2024-11-04 11:19:25 +08:00
TsMask
c0ac1f6ed5 Merge remote-tracking branch 'origin/lichang' 2024-11-02 17:27:21 +08:00
TsMask
544c3697bd chore: 更新版本号 2.241102 2024-11-02 15:48:04 +08:00
TsMask
33a8ce97d3 chore: 更新版本号 2.241102 2024-11-02 15:47:18 +08:00
TsMask
6ee9d464fb feat: PCF导出有取消操作 2024-11-02 15:46:26 +08:00
TsMask
df5072bae7 fix: CDR-IMS显示呼叫-挂断时间 2024-11-02 15:46:05 +08:00
TsMask
ae94e3bf2a fix: 编译错误 2024-11-01 11:42:07 +08:00
TsMask
2276445ff6 feat:网元指标添加其他指标选项 优化样式 2024-10-31 19:23:46 +08:00
zhongzm
e12dce1f0f feat:网元指标添加其他指标选项 优化样式 2024-10-31 18:35:26 +08:00
lai
612592ec2a Merge branch 'main' into multi-tenant 2024-10-31 17:34:38 +08:00
TsMask
d0457fc285 fix: UDM鉴权签约用户勾选导出 2024-10-31 16:32:14 +08:00
TsMask
e04fd4077e feat:自定义网元指标概览 2024-10-31 10:36:26 +08:00
zhongzm
63d32f0a39 feat:自定义网元指标概览 2024-10-31 10:30:16 +08:00
TsMask
99565dd652 fix: CDR-IMS显示呼叫-挂断时间 2024-10-31 10:02:38 +08:00
lai
2b9fa490d4 租户首页添加区分多个UPF情况 2024-10-29 18:52:51 +08:00
TsMask
7e03437ab6 fix: UDM鉴权签约用户勾选导出 2024-10-29 11:03:36 +08:00
TsMask
5f9d19ac65 fix: 静态资源文件路径解析 2024-10-28 17:21:52 +08:00
TsMask
f23d4117d7 fix: UDM签约数据参数类型转换字符串参数 2024-10-28 16:53:43 +08:00
TsMask
e4a56d68e0 fix: 网元总览接口变更 2024-10-28 16:53:34 +08:00
TsMask
cf5d08aaab chore: 更新版本号 2.241028 2024-10-28 16:53:21 +08:00
TsMask
7ad566d74f fix: 网元总览接口变更 2024-10-28 16:52:41 +08:00
TsMask
c312186d91 fix: UDM签约数据参数类型转换字符串参数 2024-10-28 16:52:05 +08:00
TsMask
e3f7b08c69 feat: 登录页面切换主题和语言类型 2024-10-28 14:52:22 +08:00
TsMask
6e3ef7e56a fix: 静态资源文件路径解析 2024-10-28 14:31:04 +08:00
TsMask
0a96fee6c3 chore: 更新版本号 2.241028 2024-10-28 11:04:04 +08:00
TsMask
dc7d24e2bf docs: 更新说明 2024-10-28 11:03:29 +08:00
TsMask
089ae12dd1 feat: 页面调整组件属性升级 2024-10-28 11:02:51 +08:00
TsMask
da0d49d306 feat: 页面调整组件属性升级 2024-10-28 11:02:39 +08:00
TsMask
670225a655 style: 关键指标概览页面占位 2024-10-28 11:01:02 +08:00
TsMask
fa35bfc340 fix: Event Type的label修改导致引用对象数据变更 2024-10-28 10:58:03 +08:00
TsMask
f4a5d28a29 feat: 展开详情显示Network Function IPv4 2024-10-28 10:55:36 +08:00
TsMask
c735aeba6d fix: 导出带取消操作按钮 2024-10-28 10:53:48 +08:00
TsMask
3c058ec107 feat: PCF补充增加online和offline字段,导出有取消操作 2024-10-28 10:53:03 +08:00
TsMask
327e82e057 fix: 布局组件升级调整 2024-10-28 10:51:11 +08:00
TsMask
012fc44f08 chore: 更新升级依赖库 2024-10-28 10:48:17 +08:00
lai
0ab04ab819 增加Network Function IPv4属性 2024-10-24 11:12:04 +08:00
lai
580b931610 增加关闭按钮 2024-10-24 11:11:20 +08:00
lai
dd7df775e2 修复mmeEVent修改label异常 2024-10-24 11:10:31 +08:00
lai
18c2a2e4dc 首页变动 2024-10-24 11:09:33 +08:00
lai
fbdd04b4dd 增加分页 2024-10-24 11:00:49 +08:00
lai
72fd372fe0 增加关闭按钮 2024-10-24 10:40:54 +08:00
lai
acdadcbb6f 增加Network Function IPv4地址 2024-10-24 10:40:20 +08:00
lai
7a49de71ea 修复 修改Event Type的label 2024-10-24 10:38:28 +08:00
zhongzm
56e4419e77 Revert "Revert "fix:中英提示修复""
This reverts commit 3abb4dd4bd.
2024-10-24 10:12:51 +08:00
zhongzm
3abb4dd4bd Revert "fix:中英提示修复"
This reverts commit a45243390b.
2024-10-24 10:12:09 +08:00
zhongzm
726a284ab5 Merge remote-tracking branch 'origin/main' 2024-10-24 10:11:28 +08:00
zhongzm
a45243390b fix:中英提示修复 2024-10-24 10:11:08 +08:00
TsMask
1faed9bc3d style: 关键指标概览页面占位 2024-10-23 18:48:29 +08:00
TsMask
9bd700eeb7 feat: PCF补充增加online和offline字段 2024-10-23 10:44:15 +08:00
zhongzm
5cc3b9c8cf fix:css样式报错修复 2024-10-22 18:54:35 +08:00
zhongzm
208895c7d5 feat:快速布局功能以及ws连接修复 2024-10-22 16:01:53 +08:00
TsMask
46578ce97b feat: 快速开站SMSC的IP赋值 2024-10-18 20:16:06 +08:00
TsMask
0ff5bd5e20 style: UDM用户数据根据网元类型变更刷新列表 2024-10-18 11:42:21 +08:00
TsMask
f08e637e69 fix: 版权信息文本长度128 2024-10-18 11:34:37 +08:00
TsMask
a600e056b8 chore: 更新版本号 2.241018 2024-10-18 10:36:06 +08:00
zhongzm
671c80972e fix:多选改checkbox 2024-10-18 10:32:55 +08:00
TsMask
d07230b582 Merge remote-tracking branch 'origin/main' into lichang 2024-10-18 10:20:54 +08:00
TsMask
35c24407ac Merge remote-tracking branch 'origin/lichang' 2024-10-18 10:18:48 +08:00
TsMask
cf33756548 Merge remote-tracking branch 'origin/main' into lichang 2024-10-18 10:17:53 +08:00
TsMask
1ef98298bc style: 移除port/dbinfo/capability属性信息 2024-10-17 19:55:09 +08:00
zhongzm
b1c2a95ec4 Merge remote-tracking branch 'origin/lichang' into lichang 2024-10-17 19:54:55 +08:00
zhongzm
147b2fad8d fix:网元响应式数组添加防抖 2024-10-17 19:54:40 +08:00
TsMask
b629088406 Merge remote-tracking branch 'origin/lichang' 2024-10-17 19:51:43 +08:00
lai
b508d4393c 首页添加 加载状态 2024-10-17 19:44:43 +08:00
TsMask
430a067280 Merge remote-tracking branch 'origin/main' into lichang 2024-10-17 18:27:09 +08:00
TsMask
8a71e8f773 Merge remote-tracking branch 'origin/lichang' 2024-10-17 18:26:49 +08:00
lai
ff556ce1ec 添加首页加载状态 2024-10-17 18:18:37 +08:00
zhongzm
9ed7aed4b4 feat:自定义布局保存,WS数据追加 2024-10-17 18:07:39 +08:00
lai
d257151718 首页加载顺序问题 2024-10-17 17:30:11 +08:00
TsMask
9e14297488 Merge remote-tracking branch 'origin/main' into lichang 2024-10-17 15:55:15 +08:00
TsMask
8e70706ed5 fix: 网元日志实时查看组件参数调整 2024-10-17 15:07:04 +08:00
TsMask
3e0529cf87 fix: 终端SSH视图组件调整参数配置外部地址 2024-10-17 15:06:34 +08:00
TsMask
91af2bed92 feat: 工具iperf/ping功能页面 2024-10-17 15:05:21 +08:00
lai
1ecefb91dc 增加导出时携带完整搜索条件 2024-10-17 14:51:55 +08:00
lai
7b60c30548 完善搜索时带上匹配模式后的imsi 2024-10-17 14:47:40 +08:00
lai
cf5c8906c3 根据条件导出 2024-10-17 12:02:25 +08:00
TsMask
72d9895902 fix: UDM用户数据按查询条件导出 2024-10-17 11:39:17 +08:00
lai
249c9a5a6e 调整位置 2024-10-17 11:03:57 +08:00
lai
41fa214137 完善自定义首页设置 2024-10-17 10:30:21 +08:00
TsMask
1565f25a03 del: 移除debugger标记 2024-10-17 10:29:39 +08:00
lai
c5c2926d99 修改告警导出异常 2024-10-17 10:29:22 +08:00
lai
a78b830a05 增加租户列 2024-10-17 10:27:20 +08:00
lai
879cf783b6 告警导出异常 2024-10-16 20:30:58 +08:00
lai
895a55f367 补充 2024-10-16 19:53:01 +08:00
lai
536c77ff08 与其他设置风格一致 2024-10-16 19:28:42 +08:00
lai
55456f9220 自定义主页 2024-10-16 19:28:05 +08:00
lai
37e70e7af8 更改路径方式 2024-10-16 17:06:41 +08:00
TsMask
cf1686c348 Merge branch 'lichang' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into lichang 2024-10-16 16:47:01 +08:00
TsMask
f7833bcd9f fix: UDM数据load失败无法重试 2024-10-16 16:46:57 +08:00
TsMask
5a621053a4 feat: 网元连接配置UDM支持Redis 2024-10-16 16:46:14 +08:00
lai
2a6451ef2a 更改首页代码文件路径 2024-10-16 15:11:26 +08:00
lai
87e044276c 更改首页代码文件路径 2024-10-16 15:09:53 +08:00
lai
f1b440c8dd 补充 2024-10-16 14:50:47 +08:00
lai
cd3e87c1c9 多租户自定义主页 2024-10-16 14:50:15 +08:00
lai
a67e54ca6e 补充 2024-10-16 14:23:32 +08:00
lai
53d9e63c36 新增自定义首页 2024-10-16 14:12:31 +08:00
lai
009c4cf590 修复租户基站信息网元异常情况获取 2024-10-16 11:07:56 +08:00
lai
3c45427bff 增加短信图标 2024-10-16 10:51:14 +08:00
lai
56cbe9915c 英文拼写 2024-10-16 10:45:00 +08:00
lai
cf3103db46 多租户首页添加smsc-cdr 2024-10-16 10:33:40 +08:00
zhongzm
b4623d19e5 fix:关键指标界面拖拽块设为图标,优化样式 2024-10-15 18:26:02 +08:00
zhongzm
700bff6e38 fix:关键指标界面自定义布局功能 2024-10-15 17:48:35 +08:00
TsMask
d77c4e43d4 feat: 信令跟踪保活续期 2024-10-15 15:14:38 +08:00
TsMask
6e11d2b16a feat: 网元日志文件获取查看,抓包单独查看 2024-10-15 14:55:41 +08:00
TsMask
405842bc0b fix: 看板用户事件AMF订阅编号无neId 2024-10-15 14:38:29 +08:00
lai
879499b595 新增租户SMSC-CDR 2024-10-15 14:17:58 +08:00
zhongzm
bf8d7f2124 fix:代码优化-方法封装-拖拽保存-大小自适应 2024-10-14 18:52:47 +08:00
TsMask
ba98b37306 feat: 优化PCF参数可选请求数据处理 2024-10-12 19:10:52 +08:00
TsMask
aa8ed65fd8 del: 删除旧License页面相关接口请求 2024-10-12 19:10:21 +08:00
TsMask
936a4410b3 del: 删除旧参数配置页面相关接口请求 2024-10-12 19:10:04 +08:00
TsMask
58ec76f9e5 Merge remote-tracking branch 'origin/main' into lichang 2024-10-12 15:43:09 +08:00
TsMask
c1a77c8e48 chore: 更新版本号 241012 2024-10-12 15:42:29 +08:00
TsMask
477e8e4631 feat: 工具iperf/ping页面占位 2024-10-12 15:39:53 +08:00
TsMask
4f9d65a3a7 feat: UDM签约支持MICO和RAT修改 2024-10-12 15:07:06 +08:00
e199498a8e Merge branch 'main' into multi-tenant 2024-10-12 10:34:26 +08:00
TsMask
b1799d8ccb style: 首页-网元详细信息-删除数据库以及端口字段显示 2024-10-12 09:50:57 +08:00
TsMask
86833e7d6b feat: 关键指标报表页面 2024-10-11 18:48:46 +08:00
TsMask
59cf57898b Merge branch 'lichang' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into lichang 2024-10-11 18:14:31 +08:00
zhongzm
fb9382e3a0 Merge remote-tracking branch 'origin/lichang' into lichang 2024-10-11 18:05:32 +08:00
zhongzm
dae4697cd2 feat:多图表网元指标界面实时数据连接修复和拖拽功能实现 2024-10-11 17:57:51 +08:00
TsMask
1b2e892f74 fix: 看板总流量24小时切换类型声明 2024-10-11 16:50:46 +08:00
TsMask
c66c640f75 fix: 看板总流量24小时实时累加 2024-10-11 15:47:26 +08:00
TsMask
30849416b6 fix: 工具ps/net页面定时器清除 2024-10-11 14:12:57 +08:00
TsMask
5edcee8da5 style: 隐藏跳转主机添加页面 2024-10-11 14:12:08 +08:00
TsMask
311beed2a7 fix: UPF总量数据格式化单位问题 2024-10-11 14:11:18 +08:00
TsMask
eb5fdfb635 fix: 修复工具ps/net资源列表 2024-10-11 09:53:13 +08:00
TsMask
78bcde9ef2 style: 信令跟踪根据状态隐藏操作 2024-10-10 21:06:56 +08:00
lai
630e2a16ad 限制自定义指标输入长度 2024-10-10 19:45:45 +08:00
lai
82ecee9941 管理员-smsc cdr 租户列 2024-10-10 19:40:48 +08:00
TsMask
e1fe031f25 Merge branch 'lichang' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into lichang 2024-10-09 18:56:28 +08:00
zhongzm
855ba7dc9e feat:net界面修复:F12后的报错消除 2024-10-09 12:04:16 +08:00
TsMask
3a72e73d5d style: 拓扑图smsc图标 2024-10-09 10:53:47 +08:00
TsMask
4cb13a1419 feat: 网元快速安装添加SMSC的ip填充 2024-10-09 09:50:31 +08:00
TsMask
8dd84a5255 fix: 网元抓包loading状态禁止重复开始任务 2024-10-08 16:49:14 +08:00
TsMask
c0e62f48b7 fix: wiregasm去除gz压缩文件 2024-10-01 14:10:22 +08:00
TsMask
b992225e28 fix: 网元快速安装多语言识别 2024-10-01 13:02:06 +08:00
TsMask
2f04562a34 feat: 信令跟踪功能页面 2024-09-30 21:02:01 +08:00
4ee1d87d04 fix: tenant of upf time period change to timestamp 2024-09-30 19:29:08 +08:00
lai
39268e2162 针对获取基站信息时网元异常问题 2024-09-30 11:13:34 +08:00
lai
d6b755c234 调整触发位置 2024-09-27 19:23:04 +08:00
lai
a889f97bd6 避免缓存导致 2024-09-27 19:18:28 +08:00
lai
a77b968a17 限制新增时没有租户数据时取消租户角色 2024-09-27 17:56:41 +08:00
lai
da3d712e97 实时更新租户树 2024-09-27 14:22:21 +08:00
lai
bb662aefe3 Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-09-27 11:54:14 +08:00
lai
7bbffccd21 解决tenant栏弹出问题 2024-09-27 11:54:09 +08:00
TsMask
d3a452cfd8 Merge remote-tracking branch 'origin/main' into lichang 2024-09-27 11:14:26 +08:00
TsMask
d81b8cdf38 chore: 更新版本号 240927 2024-09-27 11:13:25 +08:00
TsMask
39a417368a docs: 更新说明 2024-09-27 11:11:54 +08:00
TsMask
adfce5d2f7 style: SMSC-CDR结果带result,cause 2024-09-27 10:05:45 +08:00
TsMask
977286d6b3 fix: 驼峰和划线互转函数去除非对象转换 2024-09-26 17:31:57 +08:00
TsMask
c33000045a fix: 消息进行wg关闭销毁 2024-09-26 17:23:24 +08:00
TsMask
b995ac378a fix: 网元版本同版本号进行确认继续操作 2024-09-26 17:20:01 +08:00
TsMask
0de115ad9e fix: 多租户SMF在线用户接口 2024-09-25 16:31:27 +08:00
lai
ec67414cb6 修复多于代码 2024-09-24 17:29:38 +08:00
TsMask
6bea64f345 style: 多语言views.traceManage.task取值变更views.ne.common 2024-09-24 10:53:33 +08:00
TsMask
94886e255e feat: 网元跟踪数据支持下载pcap文件 2024-09-24 10:52:28 +08:00
TsMask
45f66afe52 fix: 网元配置更新下发配置失败时不更新状态 2024-09-23 17:44:16 +08:00
TsMask
b9105c1e77 style: 注释信息解析html请求 2024-09-23 17:25:26 +08:00
TsMask
909d306942 perf: wg优化代码封装hooks 2024-09-23 17:24:55 +08:00
TsMask
f7273457e9 feat: 跟踪任务查看pcap内容信息 2024-09-23 17:24:02 +08:00
TsMask
c30e8b4891 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-09-21 17:18:39 +08:00
TsMask
2e5ad2f65d fix: 看板MME-CDR的ECM State 2024-09-21 15:52:54 +08:00
TsMask
7d5d82e7fc Merge remote-tracking branch 'origin/main' into multi-tenant 2024-09-20 19:18:04 +08:00
TsMask
776e9c5837 chore: 更新版本号 240920 2024-09-20 18:23:12 +08:00
TsMask
0d4979d3d9 style: 注释和代码格式化 2024-09-20 18:22:22 +08:00
TsMask
686c7dd273 fix: 驼峰和划线互转函数 2024-09-20 18:21:03 +08:00
TsMask
d41b308c6d fix: 性能管理报表页面未开发 2024-09-20 18:20:34 +08:00
TsMask
84dac247d2 perf: 重构跟踪任务 2024-09-20 18:20:01 +08:00
TsMask
f8439bb40a feat: HLR跟踪任务页面免登录/trace-task-hlr 2024-09-20 12:05:16 +08:00
TsMask
d268d920e7 chore: 更新版本号 240919 2024-09-19 11:50:51 +08:00
TsMask
f730ef1e3a style: 调整勾选按钮顺序 2024-09-19 11:50:06 +08:00
TsMask
af1ce32063 feat: 调整SMF在线用户列表数据补充显示imsi备注标记 2024-09-19 11:49:30 +08:00
TsMask
678ff2d09d feat: UDM签约补充CAG参数和备注标记参数 2024-09-19 11:48:16 +08:00
TsMask
48f674b6ef Merge remote-tracking branch 'origin/main' into lichang 2024-09-13 09:59:13 +08:00
TsMask
02f0820a69 fix: telnet终端命令多‘号导致命令无效 2024-09-13 09:58:13 +08:00
TsMask
ca8605fd6e fix: 跟踪任务HLR操作 2024-09-12 17:12:41 +08:00
TsMask
6d5e96421b style: 多语言zh去除行头 2024-09-12 17:12:13 +08:00
TsMask
bcc29007bf fix: 4G的MME显示ECM 2024-09-12 17:11:10 +08:00
TsMask
bdf904078d style: 多语言zh去除行头 2024-09-12 17:10:43 +08:00
TsMask
e37cfa5066 Merge remote-tracking branch 'origin/main' into lichang 2024-09-10 09:42:40 +08:00
lai
f1bff23bbc Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-09-09 19:25:26 +08:00
lai
53106ddb5c 调换位置 2024-09-09 19:25:22 +08:00
TsMask
3a04882fe5 Merge remote-tracking branch 'origin/main' into lichang 2024-09-09 19:14:04 +08:00
TsMask
19202a5e81 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-09-09 19:11:37 +08:00
TsMask
7b311ff673 fix: SMSC添加CDR响应错误原因码 2024-09-09 19:11:34 +08:00
lai
9dba98e0ee 重新排版表单 2024-09-09 19:06:53 +08:00
lai
71338670f0 重新排版表单 2024-09-09 18:12:23 +08:00
lai
7dcdfabce2 增加单位显示的限制 2024-09-09 16:23:18 +08:00
lai
ddfe1723c9 自定义指标 2024-09-09 15:01:04 +08:00
TsMask
57b5f76db7 fix: 重构tool的ps页面 2024-09-06 19:57:10 +08:00
lai
9ac3524877 自定义指标 2024-09-06 19:22:25 +08:00
lai
ca82a0a74b 更改中英文 2024-09-06 19:21:57 +08:00
zhongzm
23007c3bf2 feat:ps界面和net界面 2024-09-06 17:27:38 +08:00
TsMask
5d69d7612a chore: 更新版本号 2.240906 2024-09-06 16:14:16 +08:00
TsMask
ddd8930af4 feat: 跟踪任务功能详情文件页面 2024-09-06 16:12:33 +08:00
lai
757f2ec20a 导出文件管理 2024-09-06 10:15:20 +08:00
lai
30caa79424 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-09-05 20:22:07 +08:00
TsMask
e3f83a0b98 feat: 跟踪任务功能页面 2024-09-05 17:30:31 +08:00
TsMask
147a3ed77b style: 跟踪任务多语言翻译 2024-09-05 17:30:11 +08:00
TsMask
5d35d950b3 feat: 网元参数配置特殊SMF-upfid选择 2024-09-05 17:29:12 +08:00
lai
6874508d3f neType空时则获取全部基站信息 2024-09-05 16:42:43 +08:00
lai
33f468209a 告警根据中英文导出 2024-09-05 16:38:06 +08:00
lai
e8ef2816df 增加IMSI,ki限制位数以及合并新增批量新增按钮 2024-09-05 16:36:05 +08:00
TsMask
e38d7bbffa fix: 网元信息新增监听neType+neId拼接rmUID 2024-09-03 16:59:06 +08:00
TsMask
2f1265c47a fix: 编译类型缺失 2024-09-03 16:57:43 +08:00
TsMask
66b6b60505 fix: 右上角气泡提示活动告警 2024-09-03 11:28:41 +08:00
TsMask
249d14320d fix: 删除右上角系统用户手册 2024-09-03 11:22:56 +08:00
TsMask
313b90ad31 fix: MME事件类型cm显示改为ECM 2024-09-03 11:19:39 +08:00
TsMask
2ebc90e974 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-09-03 11:06:50 +08:00
TsMask
640257dd55 feat: 信令抓包数据监控 2024-09-03 11:06:40 +08:00
TsMask
c1a3ce8068 feat: 信令抓包tshark解析pcap 2024-09-03 11:05:58 +08:00
TsMask
0080e9c26e feat: 公共组件-虚拟滚动列表 2024-09-03 11:00:00 +08:00
TsMask
2ccafe622d feat: 插件新增-Web Workers 2024-09-03 10:59:05 +08:00
TsMask
d7a515ed9a feat: 工具函数-格式化文件大小 2024-09-03 10:54:15 +08:00
cd82b71b77 fix: remove OMC limit from parameter config NE list 2024-09-02 16:52:49 +08:00
TsMask
9d6a7dcd9c chore: 更新版本号 2.240831 2024-08-31 10:17:36 +08:00
TsMask
46c2affcc8 fix: 网元信息资源百分比 2024-08-30 19:50:12 +08:00
TsMask
3d00a80588 fix: 手工同步超时时间180s 2024-08-30 18:02:47 +08:00
TsMask
a3c1fe154f chore: 更新版本号 2.240823 2024-08-23 19:06:32 +08:00
TsMask
07dce5a27e style: 暗黑模式下文字反色 2024-08-23 19:05:35 +08:00
60083183c5 fix: fnGetList change to fnGet45GList 2024-08-23 18:49:58 +08:00
TsMask
255cf026a6 style: 编译类型错误 2024-08-22 10:28:35 +08:00
TsMask
840ea56c42 chore: 更新版本号 2.240822 2024-08-22 10:20:45 +08:00
TsMask
09917cc9c9 feat: 补充CBC网元选择 2024-08-22 10:19:52 +08:00
TsMask
4c9fe192f2 feat: 历史抓包文件页面 2024-08-22 10:19:23 +08:00
TsMask
32ec55d44e feat: 网元文件下载支持删除临时缓存文件 2024-08-22 10:18:42 +08:00
TsMask
527cf89d1a fix: 避免get请求带body错误 2024-08-21 17:38:10 +08:00
TsMask
ac7b57c0ae fix: 内嵌地址标识菜单展开高亮 2024-08-21 17:37:06 +08:00
TsMask
8be1a8968e fix: 标签名称修改导致全局标签 2024-08-21 17:36:04 +08:00
TsMask
999ccf64ad perf: 抓包功能优化 2024-08-20 15:49:03 +08:00
8fbd4f3952 Merge branch 'main' into multi-tenant 2024-08-19 10:20:57 +08:00
TsMask
03352f3aa8 style: 网元快速安装操作Nest放后面 2024-08-17 12:22:38 +08:00
lai
61a58fc661 默认neType为空时显示45G信息 2024-08-16 17:11:39 +08:00
TsMask
4268fa3198 fix: 网元IMS参数配置plmn禁止删除index0 2024-08-15 18:05:56 +08:00
lai
2048b6f2db 删除多余代码 2024-08-15 15:31:02 +08:00
TsMask
f6b62c6c7e fix: 构建目标改为esnext,兼容pdf-js编译 2024-08-15 10:22:39 +08:00
TsMask
b4cbc1c190 chore: 更新版本号 2.240815 2024-08-15 10:11:22 +08:00
TsMask
1871f6f656 chore: 新增crypto-js依赖库 2024-08-15 10:10:50 +08:00
TsMask
409f9836a6 fix: 对登录,网元信息新增更新数据加密 2024-08-15 10:10:09 +08:00
TsMask
b3f40ee683 fix: 网元信息列表不带状态导致无法正常显示 2024-08-15 10:09:11 +08:00
TsMask
aa07b51663 feat: 请求http工具支持接口加解密 2024-08-15 10:08:12 +08:00
TsMask
19b77ed005 style: 监控资源数据超时设为60s 2024-08-15 09:49:44 +08:00
TsMask
ea6fca405b Merge remote-tracking branch 'origin/main' into multi-tenant 2024-08-12 11:42:53 +08:00
TsMask
06503fd079 fix: 拓扑图组名变更 2024-08-09 19:46:20 +08:00
TsMask
2321dacd2a chore: 更新版本号 2.240809 2024-08-09 18:48:44 +08:00
TsMask
a8b4e91b95 feat: 文本日志文件实时查看功能 2024-08-09 18:47:45 +08:00
TsMask
a5075bef43 feat: SMSC功能接口补充 2024-08-08 20:58:47 +08:00
TsMask
f4ffbc1c86 style: CDR数据页面格式优化 2024-08-08 20:58:06 +08:00
TsMask
6cafa284c7 feat: SMSC-CDR数据列表查询 2024-08-08 20:56:40 +08:00
TsMask
049c0e7a0f fix: 终端面板telnet内容行列数自适应调整 2024-08-08 10:40:19 +08:00
TsMask
377ffc6e10 fix: CDR/Event上报数据对应发网元 2024-08-06 16:56:37 +08:00
TsMask
858431e86e perf: 替换旧网元参数配置页面 2024-08-05 17:51:11 +08:00
TsMask
70fca5ca41 fix: 网元信息OAM配置支持修改omc ip,排除omc编辑OAM信息 2024-08-05 17:44:41 +08:00
lai
e972d14a9a 调整表格字段列 2024-08-05 15:28:16 +08:00
TsMask
c1187383b6 fix: 系统引导跳转不重复引导 2024-08-03 10:09:16 +08:00
lai
9bc5eba0d6 角色单选 2024-08-02 18:58:36 +08:00
lai
8d8605e0cd 调整网元配置模块 2024-08-02 18:55:53 +08:00
lai
b8c56c8868 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-08-02 10:47:33 +08:00
TsMask
8af48936e5 chore: 更新版本号 2.240801 2024-08-02 10:11:42 +08:00
9785837980 Merge branch 'main' into multi-tenant 2024-08-02 10:01:53 +08:00
TsMask
e21a8dc898 perf: 优化快速安装配置公共参数页面 2024-08-01 17:34:16 +08:00
TsMask
3c1ee63359 fix: 开站网元安装信息保存触发操作不一致 2024-07-30 18:23:51 +08:00
TsMask
bc3940016a perf: 网元公共参数合并到网元快速安装,移除相关多语言翻译 2024-07-30 18:22:32 +08:00
TsMask
6ab4fbea6f fix: UDM签约数据cnType改5GC Flag 2024-07-30 11:27:12 +08:00
TsMask
c73fcbd91c chore: 更新版本号 2.240729 2024-07-29 18:27:15 +08:00
TsMask
023e317b0d feat: 网元配置备份操作权限控制删除/编辑按钮 2024-07-29 14:36:19 +08:00
lai
543a2b7434 新增 统一配置网元 2024-07-29 10:38:14 +08:00
TsMask
4ae9051411 style: 系统设置LOGO和文档判断是否开启语言切换显示控件 2024-07-27 15:01:56 +08:00
TsMask
532546c3f5 chore: 更新版本号 2.240727 2024-07-27 10:28:23 +08:00
TsMask
ab0d26513c perf: 网元备份导入导出弹窗表单重构 2024-07-26 18:27:15 +08:00
TsMask
8e9498ec83 feat: 网元备份文件表格页面 2024-07-26 18:25:15 +08:00
TsMask
ca048f223c feat: UDM鉴权文件导入K4文件支持 2024-07-26 15:28:45 +08:00
TsMask
e9ff6493dd fix: 看板UPF流量吞吐初始查询和ws监听12_neId 2024-07-25 18:48:01 +08:00
TsMask
396fb0b124 fix: KPI接收指定对应neId,实时数据不支持搜索 2024-07-25 18:23:28 +08:00
TsMask
3a854be8fe fix: 查询IMS在线用户数接口数据格式兼容 2024-07-25 10:50:54 +08:00
lai
977a4e11ee Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-24 18:36:11 +08:00
TsMask
c1f34f56ac fix: 对使用手册,官网进行限制 2024-07-24 18:10:38 +08:00
lai
21e42709a7 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-24 18:01:08 +08:00
lai
b80bae0126 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-07-24 17:18:18 +08:00
lai
6c383b58c8 对使用手册,官网进行限制 2024-07-24 17:18:15 +08:00
lai
f8a43042db 修复 修改时并未正确渲染 2024-07-24 15:01:44 +08:00
lai
a9ee7aa925 Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-24 09:58:50 +08:00
lai
811aedaaf4 去除多余字段 2024-07-24 09:57:42 +08:00
172b4a4856 fix: remove more action of ue event 2024-07-23 21:42:20 +08:00
lai
447ee401cb 取消过滤条件 2024-07-23 19:17:45 +08:00
lai
5f8e9954fe Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-23 19:01:16 +08:00
lai
f8a234822d 重置不清数据 2024-07-23 19:01:14 +08:00
09245fdfda fix: tip for tenant of sim card asset 2024-07-23 18:32:11 +08:00
lai
3dafe8d1f6 增加自动填充 2024-07-23 18:05:25 +08:00
lai
c7606df740 修正 2024-07-23 17:38:58 +08:00
lai
e5c40d11d3 修正 2024-07-23 17:15:14 +08:00
lai
c9d8bb87de 增加ueEVENT 模块 2024-07-23 17:14:57 +08:00
lai
f7c2adf58c 去除默认值 2024-07-23 17:14:03 +08:00
TsMask
06db1344c3 fix: 日志事件cm结果多语言显示错误 2024-07-23 14:48:53 +08:00
lai
363288a141 去除默认值 2024-07-23 14:43:30 +08:00
TsMask
fac47279b5 fix: 日志IMS-CDR类型查询默认空进行全查询,表格宽度增加 2024-07-23 14:26:09 +08:00
TsMask
a36a12f783 fix: 日志事件类型查询默认空进行全查询 2024-07-23 14:25:08 +08:00
lai
b1dbacffcc 修改默认值 2024-07-23 11:27:01 +08:00
lai
3089f8911e 去除多余校验 2024-07-23 11:14:17 +08:00
lai
83ec17343a 去除打印 2024-07-23 10:27:47 +08:00
lai
ef9db9ddf6 增加MME-EVENT事件 2024-07-23 10:03:34 +08:00
lai
1e8da20c44 增加admin管理员权限 2024-07-22 19:27:47 +08:00
lai
d9b2b6b567 替换权限标识 2024-07-22 19:11:32 +08:00
TsMask
acd19ebdbd style: 看板基站数量分开展示避免分不清数 2024-07-19 14:41:40 +08:00
TsMask
d53c4c34f0 style: 新增网元信息时ssh默认密码初始 2024-07-18 15:44:35 +08:00
lai
636c7a5939 补充 2024-07-18 11:26:15 +08:00
TsMask
2d9011cf6b fix: 看板资源图无网元状体数据取值异常 2024-07-17 18:11:22 +08:00
TsMask
fcf53d0995 fix: 网元删除记录自动移除不要刷新列表 2024-07-17 18:06:59 +08:00
lai
15f6cf0b4c 新增IMSI填写方式 2024-07-17 18:05:23 +08:00
lai
c024c304d5 针对切换时异常 2024-07-17 15:44:31 +08:00
lai
a6e100b5c2 搜索框样式 2024-07-16 18:23:36 +08:00
lai
48bac47c6b 调整 2024-07-16 17:49:24 +08:00
lai
24a147afaf Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-16 17:38:03 +08:00
lai
5b17c9e497 签约用户搜索框机制 2024-07-16 17:37:57 +08:00
lai
79f143c22c 租户管理调整 2024-07-16 17:37:42 +08:00
TsMask
a2d93ddafe fix: 系统名称横向滚动衔接动画 2024-07-16 11:21:16 +08:00
TsMask
a8764fe627 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-16 10:01:47 +08:00
lai
6a0ed31cdc 添加租户自动补全 2024-07-15 17:09:49 +08:00
lai
8a2e21a794 去除默认值 2024-07-15 15:51:54 +08:00
lai
51226fbfb4 增加租户名的自动完成框 2024-07-15 15:51:46 +08:00
lai
af5ac7d29a 修改input框 2024-07-15 11:10:40 +08:00
TsMask
79920542c1 chore: 更新版本号240712 2024-07-12 21:23:12 +08:00
lai
0b98a1f697 Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-12 10:21:27 +08:00
lai
f66cd875fb 去除没必要的权限控制 2024-07-12 10:21:19 +08:00
TsMask
795a6fabee Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-11 20:44:29 +08:00
lai
1f7becef0a 全局变量销毁时还原 2024-07-11 20:24:06 +08:00
lai
aa4f11bf44 空时限制UPF图片展示 2024-07-11 20:10:46 +08:00
lai
0b6a08a977 去除租户界面选择IMS 2024-07-11 19:47:10 +08:00
lai
5089e769da Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-11 19:36:08 +08:00
lai
c36f402528 调整租户首页 2024-07-11 19:36:05 +08:00
TsMask
6efd9cb61a fix: 根据浏览器地址栏hostname加33030端口连接后端服务 2024-07-11 17:56:24 +08:00
lai
1f6a13951f ims在线用户信息 2024-07-11 17:26:43 +08:00
4b69b44df5 fix: tenant tips 2024-07-11 16:48:56 +08:00
5643c625ef fix: tenant tip 2024-07-11 16:42:54 +08:00
1607c97b82 fix: imsi tip 2024-07-11 16:40:50 +08:00
d0ac6d4e2e fix: imsi tips 2024-07-11 16:40:04 +08:00
0ad9d546cd fix: tenant tips 2024-07-11 16:37:53 +08:00
f8d54e35c9 fix: tenant management cn&en tips 2024-07-11 16:36:37 +08:00
TsMask
4dc6699974 style: UDM用户数据限制imsi长度输入 2024-07-11 15:02:53 +08:00
lai
be2a077bba 去除多余字段 2024-07-11 11:02:35 +08:00
lai
cb5dfebb59 租户cdr独立起来 2024-07-11 10:37:46 +08:00
lai
71d23cbc32 Merge branch 'multi-tenant' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 into multi-tenant 2024-07-11 10:18:35 +08:00
lai
93315776da 调整显示问题 2024-07-11 10:18:31 +08:00
lai
0d5cbe6459 租户管理增加基站id 2024-07-11 10:18:18 +08:00
lai
9a88364d8b label调整 2024-07-11 10:17:54 +08:00
lai
c0ec4893c8 smfCDR的显示问题 2024-07-11 10:17:17 +08:00
TsMask
3bdae264e1 fix: 网元信息单行更新局部信息变更失效 2024-07-10 15:47:28 +08:00
TsMask
9e0a99d160 style: 数据CDR的表头宽度调整 2024-07-09 19:02:54 +08:00
TsMask
5ac0ca41eb style: 签约用户IMSI编辑时禁止修改,cnType添加提示 2024-07-09 18:36:27 +08:00
TsMask
24cd0ff101 Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-09 16:24:50 +08:00
TsMask
a7de701d4d fix: 支持kvdb依赖包安装,db_ip默认0.0.0.0 2024-07-09 16:11:58 +08:00
lai
7e92659217 增加点击修改时选择UPF的操作 2024-07-09 14:40:44 +08:00
lai
e8fefab74e 租户SMF在线信息无需再选具体网元 2024-07-09 10:38:14 +08:00
lai
78c86be8a0 添加UPF租赁类型时选择RMUID下拉框 2024-07-09 10:34:05 +08:00
lai
8f8c9f8395 取消不必要的代码 2024-07-09 10:33:19 +08:00
lai
7d5635560d 修复全屏时下拉框显示不出来问题 2024-07-09 10:32:52 +08:00
lai
e83bf43bc8 鉴权数据修改时不能修改IMSI 2024-07-09 10:32:29 +08:00
TsMask
f0561242ca fix: fetch请求拼接地址栏参数不区分请求方法 2024-07-09 10:04:46 +08:00
TsMask
f89ba87fef Merge remote-tracking branch 'origin/main' into multi-tenant 2024-07-06 15:54:53 +08:00
lai
ca8a4128fb 取消勾选 2024-07-05 19:38:04 +08:00
lai
21621c2056 默认值修改 2024-07-05 19:18:53 +08:00
lai
22797a8ae8 修改中英文 2024-07-05 18:07:32 +08:00
lai
374b6feef3 中英文以及排版 2024-07-05 17:03:04 +08:00
lai
c1902f978a 选择角色为tenant才显示框 2024-07-05 15:39:06 +08:00
lai
b431ae70a5 租户主页基站中英文 2024-07-05 15:05:05 +08:00
lai
8e57bcfd25 根据最新菜单进行修改 2024-07-05 14:58:25 +08:00
lai
9e5a000383 前缀后缀 2024-07-05 14:51:56 +08:00
TsMask
6102972373 fix: 网元公共配置OMC的IP去除覆盖 2024-07-05 14:42:45 +08:00
lai
f4771892aa 改动变量名 2024-07-05 14:30:28 +08:00
lai
842f09cc90 增加租户目录中英文 2024-07-05 14:19:59 +08:00
lai
2cb92eaf69 中英文 2024-07-05 11:24:17 +08:00
lai
02eb368a45 调整位置 2024-07-04 18:33:03 +08:00
lai
4c7b5c8b55 租户SMF的cdr 2024-07-04 18:17:25 +08:00
lai
7aebab3734 管理员smfCDR增加租户名字段 2024-07-04 17:06:15 +08:00
TsMask
d095531952 style: 系统角色分配标题多语言翻译 2024-07-04 17:02:33 +08:00
lai
d26fb9af85 仪表盘中ws的改动 2024-07-04 16:51:22 +08:00
lai
28213cde43 同时获取45G基站信息 2024-07-04 16:50:58 +08:00
lai
c21af696fe 签约用户中英文 2024-07-04 16:50:02 +08:00
lai
ebd8821e64 增加imsi匹配搜索框 2024-07-04 16:19:04 +08:00
lai
361fdf6959 修改租户界面排版 2024-07-04 14:40:17 +08:00
TsMask
d49dc9ebfd chore: 更新版本号240704 2024-07-04 10:24:01 +08:00
TsMask
43a99e9328 fix: 系统管理员角色用system表示避免admin混用 2024-07-03 15:13:41 +08:00
TsMask
d333221620 style: 在线用户列表文字靠左对齐 2024-07-03 14:50:25 +08:00
TsMask
481734cfe1 fix: 看板MME资源内存溢出100% 2024-07-03 14:49:11 +08:00
lai
60dc02010d 改动监控页的ws文件 2024-07-01 19:22:31 +08:00
lai
7c420c7c95 自动补全 2024-07-01 19:20:23 +08:00
TsMask
1fa8601675 fix: UDM Object下拉数据显示错误 2024-07-01 16:02:12 +08:00
TsMask
c1aabdbe42 fix: 网元信息新增时刷新列表,编辑时局部更新信息 2024-06-28 14:55:40 +08:00
a78e7049cf merge main to multi-tenant 2024-06-28 14:26:06 +08:00
TsMask
953a36f142 style: 网元软件上传按钮文本多语言处理 2024-06-28 12:01:07 +08:00
TsMask
c5f62e8d76 fix: 网元信息新增OMC配置应该没有telnet 2024-06-28 11:11:41 +08:00
TsMask
946139facb fix: 用户无操作一段时间后进行锁屏 2024-06-27 20:46:58 +08:00
TsMask
95931b2b6e fix: 用户无操作一段时间后进行锁屏 2024-06-27 20:45:26 +08:00
TsMask
ef3796c34f Merge remote-tracking branch 'origin/main' into multi-tenant 2024-06-27 20:19:46 +08:00
TsMask
e31c85835d chore: 更新版本号240627 2024-06-27 18:32:02 +08:00
TsMask
847bae4c77 fix: SMF UE在线信息兼容旧数据 2024-06-27 18:31:22 +08:00
TsMask
e69f43a0c2 style: SMFCDR多语言smfSubscriptionID订阅 ID 2024-06-27 18:02:16 +08:00
TsMask
d96e1ad259 fix: SMF UE在线信息固定翻页50条 2024-06-27 17:28:23 +08:00
TsMask
3829d339e7 fix: SMF UE在线信息固定翻页50条 2024-06-27 17:10:30 +08:00
lai
c38855acf8 调整互动以及租户未激活时标红 2024-06-27 15:24:52 +08:00
TsMask
cd4073bec3 fix: 网元主机信息默认填写固定用户名 2024-06-27 14:59:45 +08:00
TsMask
e67126c57a style: 调整SMFCDR输入框lg:6 2024-06-27 14:58:41 +08:00
lai
a2672d300f 添加卸载生命周期 2024-06-26 21:24:40 +08:00
TsMask
2f651b5d1f style: 快速开站系统admin密码默认Abcd@1234.. 2024-06-26 21:09:30 +08:00
lai
bfaf0e6aaf 无边框 2024-06-26 21:04:15 +08:00
lai
7fe0f5d84d 增加下拉框 2024-06-26 21:03:03 +08:00
TsMask
525854604f fix: 网元信息新增OMC配置应该没有telnet 2024-06-26 16:48:46 +08:00
TsMask
d42a8701da style: 参数配置规则校验示例写法 2024-06-26 16:47:45 +08:00
lai
1eeddb20c5 更新用户管理的租户数据源 2024-06-26 16:10:35 +08:00
lai
52b61ec34a 误操作原始文件 2024-06-26 14:47:10 +08:00
lai
faefef7d2f 更新租户管理排版 2024-06-26 14:42:23 +08:00
lai
938679cbda 根据最新菜单进行更新 2024-06-26 14:36:01 +08:00
TsMask
2b680d6d20 fix: 参数配置可选项按id升序 2024-06-26 11:59:00 +08:00
TsMask
de79760a0e chore: 更新版本号240626 2024-06-26 10:50:19 +08:00
TsMask
a5b5269b91 chore: 更新依赖版本 2024-06-26 10:45:06 +08:00
TsMask
8a2d0ccfa1 style: 调整网元软件批量上传框标题统一为上传软件 2024-06-26 10:44:32 +08:00
TsMask
650b02dc30 style: 调整网元软件单上传框宽度650 2024-06-26 10:43:50 +08:00
TsMask
b42d8cb370 style: 多语言翻译网元版本Update Softwares改成Batch Upload 2024-06-26 10:43:12 +08:00
lai
83aefc5dde 增加刷新按钮 2024-06-25 18:02:59 +08:00
TsMask
a213be0d64 fix: 网元软件多文件上传文件删除副本记录 2024-06-25 17:54:50 +08:00
TsMask
2a2b441e09 fix: 系统重置框倒计时无变化 2024-06-25 17:53:45 +08:00
lai
0157ec50d3 悬浮按钮 2024-06-25 17:52:34 +08:00
lai
2f7c947708 租户管理 2024-06-25 16:46:47 +08:00
TsMask
84bdb44286 fix: 网元操作接口超时时间60s 2024-06-25 15:37:58 +08:00
lai
4c16c39243 调整操作日志界面 2024-06-24 19:59:11 +08:00
TsMask
06b6175a76 fix: 用户管理刷新不应重置页数1 2024-06-24 17:11:49 +08:00
lai
693ed533f9 租户界面归类 2024-06-24 10:40:08 +08:00
TsMask
11b790e140 fix: 告警帮助文档高度调整88vh 2024-06-24 10:12:32 +08:00
TsMask
296a9ba02b feat: UDM签约数据添加CN Type可选类型 2024-06-21 20:49:34 +08:00
lai
584b25d9fc 租户UPF不带neId 2024-06-21 15:27:51 +08:00
lai
1fa59d163e 更换权限标识 2024-06-21 11:41:14 +08:00
lai
c94f9c5943 解决titile 连在一起 2024-06-20 20:36:52 +08:00
lai
2480ae1c0b 调整租户管理的界面 2024-06-20 20:36:25 +08:00
lai
440dc81182 签约用户切割为两份 2024-06-20 18:34:58 +08:00
lai
0b64302b54 提示框位置下移 2024-06-20 14:53:20 +08:00
TsMask
1801a46396 style:: 操作日志多语言变更 2024-06-20 14:45:33 +08:00
TsMask
f6644a0d97 style: 全局配置消息距离顶部的位置 2024-06-20 14:41:02 +08:00
lai
0e4e8e09e6 关闭modal框时销毁元素 2024-06-20 14:37:16 +08:00
TsMask
57f575aa84 fix: 用户账号规则修改允许数字开头至少6位 2024-06-20 10:16:04 +08:00
TsMask
68cbbe7133 chore: 更新版本号240619 2024-06-19 17:58:17 +08:00
TsMask
c11d814312 fix: 模态框的footer底部按钮null会显示的处理 2024-06-19 17:29:59 +08:00
TsMask
e1548d2c98 fix: UE事件MME 看板推送显示/类型结果保持和AMF一致 2024-06-19 16:57:07 +08:00
TsMask
1ec374eb26 style: UE在线数据临时模拟数据 2024-06-19 16:55:02 +08:00
lai
0b05f40e65 转义租赁类型 2024-06-19 16:17:27 +08:00
TsMask
0955a79965 style: 移除无用console输出 2024-06-19 14:51:28 +08:00
lai
ff0b3a40cd 补充参数类型 2024-06-19 14:41:06 +08:00
TsMask
374a9bde7e fix: 用户管理不能改自己状态,权限控制分配岗位 2024-06-19 14:02:24 +08:00
TsMask
639a4f0b1f feat: 用户数据保存userId信息做判断 2024-06-19 12:03:02 +08:00
TsMask
d1b9d7b9ba style: 网元公共参数同步窗口最小高度不设置 2024-06-19 12:01:10 +08:00
lai
fe541886d5 更换接口 2024-06-19 10:50:34 +08:00
lai
6406ed0e57 补充参数 2024-06-19 10:04:39 +08:00
TsMask
3298203f60 fix: 用户部门默认选取自身拥有的 2024-06-18 19:12:44 +08:00
lai
1aa2f2382a 部门管理代码还原 2024-06-18 18:31:41 +08:00
lai
197a962c0d 更新标识 2024-06-18 18:29:23 +08:00
lai
ac923d5943 路由地址改变 2024-06-18 17:11:17 +08:00
lai
92fe93b4dc 新增基站信息 数据隔离 2024-06-18 16:58:11 +08:00
lai
a26301af1e UE在线信息数据隔离 2024-06-18 16:38:30 +08:00
lai
6aa07dc756 添加跳转功能 2024-06-18 16:14:49 +08:00
TsMask
8f3cce52c0 fix: UDM鉴权重载提示不关闭 2024-06-18 15:41:47 +08:00
lai
f5faa054b3 新增租赁类型 2024-06-18 15:15:03 +08:00
TsMask
ce06a88e89 fix: 主页饼图颜色显示问题 2024-06-18 14:30:53 +08:00
TsMask
749a04972d style: UDM签约用户编辑框top0 2024-06-18 11:01:17 +08:00
lai
5ada366f17 数值与名称换成白底 2024-06-18 11:00:18 +08:00
TsMask
a311f0a09b fix: 移除拖拽组件,全局注册ProModal替换默认AModal 2024-06-18 10:26:38 +08:00
TsMask
c74d311537 chore: 升级依赖库 2024-06-18 10:24:12 +08:00
TsMask
1492f18791 style: 字典类型数据结构体变更 2024-06-18 10:23:09 +08:00
lai
80a41dd559 界面新增租户限制 2024-06-17 19:47:38 +08:00
lai
7031d4cdd4 限制操作列的显示 2024-06-17 19:19:45 +08:00
lai
f72b79c628 退出时清空表格记忆缓存 2024-06-17 19:19:23 +08:00
TsMask
cbc81643a5 chore: 更新版本号240617 2024-06-17 17:43:37 +08:00
TsMask
c18b557c97 fix: mocn页面引用函数异常导致编译错误 2024-06-17 17:42:48 +08:00
TsMask
b6bd9bc3d5 fix: 角色编辑修改框销毁后新建避免菜单勾选失败 2024-06-17 17:03:12 +08:00
lai
490db476dd 取消携带tenantName 2024-06-17 16:55:56 +08:00
lai
1bae6e55e0 增加区分租户的列(搜索时没传递userName) 2024-06-17 14:06:51 +08:00
lai
d2503348fd 修改路径 2024-06-17 11:53:35 +08:00
TsMask
199607e322 style: 告警网元类型下拉自动提示输入 2024-06-17 11:35:11 +08:00
TsMask
ee10119d77 feat: 看板用户行为添加MME的UE事件 2024-06-17 11:21:44 +08:00
TsMask
1b1a56e49b feat: MME用户事件日志页面功能实现 2024-06-15 18:41:39 +08:00
TsMask
afdc188e17 fix: 调整tcpdump接口 2024-06-15 14:47:53 +08:00
TsMask
5de7d0a73f fix: 调整WS数据通道类型指定 2024-06-15 14:29:38 +08:00
TsMask
8f73d80a42 chore: 更新版本号240615 2024-06-15 10:41:01 +08:00
TsMask
5a85f245b0 style: 系统名称超出范围进行滚动 2024-06-15 10:37:55 +08:00
TsMask
ff600c49f6 chore: 编译类型错误提示 2024-06-14 19:00:38 +08:00
TsMask
4c7e99fdd7 fix: 引用UDM数据列表接口错误 2024-06-14 18:58:45 +08:00
TsMask
a6037a9737 del: 移除旧的UDM用户数据接口 2024-06-14 17:22:45 +08:00
lai
03710d6811 操作日志的搜索框区分 2024-06-14 17:20:38 +08:00
lai
322dccfbc1 租户的仪表盘 2024-06-14 17:20:24 +08:00
TsMask
1d55c092b1 feat: UDM用户数据接口调整,页面优化加载等待 2024-06-14 17:02:33 +08:00
TsMask
8bdfd7ea28 style: 终端telnet编辑窗口单行120个字符 2024-06-14 16:46:51 +08:00
TsMask
39ad75fbd3 style: 多语言锁屏输入提示enUs 2024-06-14 14:33:29 +08:00
lai
0d0603058c 取消打印 2024-06-13 15:35:16 +08:00
lai
acef786c56 取消默认值 2024-06-13 15:34:05 +08:00
lai
4e726913f1 租户管理界面调整 2024-06-13 15:33:53 +08:00
lai
f699f6f3ba 用户管理界面调整 2024-06-13 15:11:03 +08:00
TsMask
7ef775209d fix: 网元信息更新记录显示状态变更,不刷新列表 2024-06-13 14:36:07 +08:00
TsMask
a8e0f36562 fix: UDM签约数据Template输入长度16改为50 2024-06-12 14:42:16 +08:00
TsMask
be50fc9c5c style: 代码格式化 2024-06-12 14:36:16 +08:00
TsMask
375f236e32 feat: 重构锁屏功能 2024-06-12 14:35:07 +08:00
TsMask
c9eb0240d8 fix: 网元信息更新删除不刷新列表,进行单个更新并清除网元列表缓存 2024-06-12 10:16:35 +08:00
TsMask
b67d591d0a feat: 锁屏页面 2024-06-11 18:31:26 +08:00
TsMask
7275a87fba style: CDR页面多语言处理 2024-06-11 18:30:53 +08:00
TsMask
c103222b65 fix: 轻量化upf不需要配置pci和mac 2024-06-11 17:00:34 +08:00
TsMask
5133d09ec2 feat: SMF CDR数据列表展示和导出,未进行多语言处理 2024-06-11 16:23:57 +08:00
TsMask
d88cec34df chore: 更新版本号240611 2024-06-11 10:29:24 +08:00
TsMask
eadd4709ee fix: 开站网元信息无终端配置时不显示,没有则新建个默认的占位 2024-06-11 10:28:16 +08:00
TsMask
04cbdc6b11 fix: 网元信息多选删除id取值异常 2024-06-11 10:26:46 +08:00
TsMask
233496e184 feat: 网元数据CDR支持导出功能 2024-06-07 19:50:02 +08:00
TsMask
919f8ef2a5 Merge remote-tracking branch 'origin/main' into lichang 2024-06-07 10:35:40 +08:00
lai
8f8d056f45 smf cdr 2024-06-06 22:28:46 +08:00
lai
8fcd7974e4 与smf协商后 暂且不进行中英文翻译 2024-06-06 22:28:03 +08:00
lai
e35356a8c6 租户管理异常(数据库需要把key字段改名) 2024-06-06 17:46:52 +08:00
lai
9152f14430 新增tenant接口 2024-06-06 15:54:16 +08:00
lai
faa3fa546b 租户管理界面 2024-06-06 15:51:59 +08:00
TsMask
cb7fc418a5 fix: 网元版本OMC安装遮罩和提示多语言 2024-06-06 15:13:45 +08:00
lai
5c31093c28 首页的变更(仪表盘稍后做调整) 2024-06-06 14:39:03 +08:00
lai
eee652bd1f 添加所属租户选项 2024-06-06 14:38:28 +08:00
lai
b7b66ad28d 增加权限限制 2024-06-06 14:37:27 +08:00
TsMask
e6d4a898a8 fix: 开站系统logo类型选择回显 2024-06-06 14:34:34 +08:00
TsMask
be4fc896d7 style: 网元公共参数EMS->OMC 2024-06-06 11:51:49 +08:00
lai
29e092421c 中英文翻译 2024-06-06 11:33:21 +08:00
TsMask
0022e259ca Merge branch 'main' into multi-tenant 2024-06-06 11:06:23 +08:00
lai
0a711ee3ce test 2024-06-05 21:07:24 +08:00
TsMask
e5a5ef6f96 style: 多语言-部门状态 2024-06-05 17:00:24 +08:00
TsMask
530662bf5d fix: 开站网元授权文件变更成功提示 2024-06-03 11:57:35 +08:00
TsMask
2e7514d3ca feat: 全局布局组件升级到3.3.5 2024-06-03 11:42:42 +08:00
TsMask
1db61a5d4e chore: 更新依赖版本 2024-06-03 11:41:04 +08:00
TsMask
618499e777 style: 网元公共参数EMS_IP标记必填红 2024-06-01 16:18:50 +08:00
TsMask
71c0306587 fix: 文件切片操作超时时间统一60s 2024-06-01 15:11:46 +08:00
TsMask
a3cd8f05fb style: 编译类型声明 2024-05-31 19:17:54 +08:00
TsMask
d8ca0ca5ef feat: 网元安装IMS预输入mf包参数 2024-05-31 19:06:42 +08:00
TsMask
da08e1cc5b style: 开战公共参数保存提示成功 2024-05-31 17:36:09 +08:00
TsMask
8e4c5d0b90 feat: 网元信息配置文件导入导出 2024-05-31 15:08:55 +08:00
TsMask
467c93f710 fix: 锁屏重启检查404时重试 2024-05-31 11:05:03 +08:00
TsMask
22ced8bdb2 fix: 网元公共参数初始数据组件回填,adb绑定0.00.0 2024-05-30 21:20:10 +08:00
TsMask
2ee26a6958 Merge remote-tracking branch 'origin/main' into lichang 2024-05-30 18:07:52 +08:00
TsMask
c63e892544 style: 系统操作日志去除请求方法列 2024-05-30 18:00:50 +08:00
TsMask
cce3088f73 Merge remote-tracking branch 'origin/main' into lichang 2024-05-30 17:55:22 +08:00
TsMask
2211896768 Merge remote-tracking branch 'origin/main' into lichang 2024-05-30 17:53:51 +08:00
TsMask
5bb3cd814c fix: 网元参数配置属性监听异常 2024-05-30 17:53:26 +08:00
lai
266d816a21 修改文件默认名 2024-05-30 17:49:39 +08:00
TsMask
90c64c029a Merge remote-tracking branch 'origin/main' into lichang 2024-05-30 17:29:45 +08:00
TsMask
d06e2da72e chore: 更新版本240530 2024-05-30 17:23:49 +08:00
TsMask
7714d506c4 feat: 网元参数配置smf选择upfId 2024-05-30 17:08:55 +08:00
lai
0b7a198235 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-05-30 15:44:41 +08:00
TsMask
68362ba3e3 feat: 网元参数配置可收起左侧菜单 2024-05-30 15:41:17 +08:00
lai
a9633e652f Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2024-05-30 15:34:27 +08:00
TsMask
6592561bca style: 参数校验多语言翻译 2024-05-30 15:32:42 +08:00
lai
09e0353053 增加事件告警 2024-05-30 15:25:08 +08:00
lai
c1e95fd1e9 仪表盘去除事件告警 2024-05-30 14:49:45 +08:00
TsMask
89857e0c1b style: 开站页面样式居中 2024-05-30 11:38:36 +08:00
TsMask
7aa37ee330 chore: 更新版本号240530 2024-05-30 11:00:57 +08:00
TsMask
4c16888184 fix: 网元快速安装授权检查是否可用后在进行文件上传 2024-05-29 18:06:26 +08:00
TsMask
a61716d40d feat: 网元公共参数配置表单组件 2024-05-29 16:32:11 +08:00
TsMask
3f02cb628b feat: 网元软件包支持携带依赖进行记录 2024-05-28 15:31:41 +08:00
TsMask
22805924fb fix: 网元软件多上传同开站逻辑 2024-05-28 15:29:45 +08:00
TsMask
e00229e5ff revt: 回退网元软件包类型支持adb,mf,rtproxy 2024-05-27 18:49:41 +08:00
TsMask
939a235a87 style: 网元软件代码优化 2024-05-27 18:33:46 +08:00
TsMask
cd49162dfc fix: 网元安装去除默认agtuser输入 2024-05-27 18:31:33 +08:00
TsMask
b7f2df5d1c fix: 网元版本升级勾选逐个进行,多语言翻译 2024-05-27 18:28:15 +08:00
TsMask
8b24bc55b9 fix: 网元授权上传进行重启网元 2024-05-27 17:09:39 +08:00
TsMask
9f2b80718e fix: 网元软件包类型支持adb,mf,rtproxy 2024-05-27 17:08:56 +08:00
TsMask
38cb406687 chore: 更新版本号240524 2024-05-24 20:54:55 +08:00
TsMask
c25fe63a26 style: 开站安装关闭按钮禁用 2024-05-24 20:54:37 +08:00
TsMask
b84d6bb9fc fix: 开站网元信息删除无id触发undefined 2024-05-24 17:54:39 +08:00
TsMask
b325cde5c0 fix: 国际化切换选择控件根据配置隐藏 2024-05-24 17:53:36 +08:00
TsMask
34266da44e style: 移除无效引用 2024-05-24 17:42:28 +08:00
TsMask
d82d6b7b47 fix: 网元授权勾选重置 2024-05-24 17:41:47 +08:00
TsMask
b1c7a068cf perf: 网元授权勾选多上传更新 2024-05-24 17:41:08 +08:00
TsMask
c155160cf7 style: 开站网元安装多语言翻译 2024-05-24 16:21:44 +08:00
TsMask
2ae4559958 fix: 开站软件安装逐个进行避免dpkg look错误 2024-05-24 16:21:08 +08:00
TsMask
782283bba6 pref: 网元软件多上传选择弹窗组件 2024-05-24 16:19:53 +08:00
TsMask
1b50708786 fix: 移除无用loding和危险操作高亮红色 2024-05-24 16:18:52 +08:00
TsMask
206d3755a0 fix: 网元公共参数设置omcIP进行更新 2024-05-24 16:15:09 +08:00
TsMask
6470effbda style: 网元相关页面多语言翻译 2024-05-24 09:41:56 +08:00
TsMask
f94b1ef44a style: 快速开站多语言翻译 2024-05-24 09:41:20 +08:00
TsMask
7c78eab431 style: 快速开站多语言翻译 2024-05-21 17:10:45 +08:00
TsMask
814b7b0058 feat: 网元快速安装多语言翻译 2024-05-20 20:18:00 +08:00
TsMask
624f67ecca feat: 网元公共配置多语言翻译 2024-05-20 16:20:58 +08:00
TsMask
c1a9497b77 feat: 网元信息表单多语言翻译 2024-05-20 16:10:13 +08:00
TsMask
1ad2ed2d26 feat: 网元信息表单多语言翻译 2024-05-20 15:14:23 +08:00
TsMask
48f278997f feat: 网元信息OAM多语言翻译 2024-05-20 11:58:25 +08:00
TsMask
9b9d6222e1 feat: 网元信息多语言翻译 2024-05-20 10:56:55 +08:00
TsMask
2e8a878365 Merge remote-tracking branch 'origin/main' into lichang 2024-05-17 20:23:52 +08:00
TsMask
bc59dc67e6 style: IMS用户话单表格宽度 2024-05-17 18:15:16 +08:00
TsMask
df6022b4a8 Merge remote-tracking branch 'origin/main' into lichang 2024-05-17 18:11:53 +08:00
TsMask
f2c67d087b chore: 更新版本240517 2024-05-17 18:02:22 +08:00
TsMask
7a0298a419 feat: IMS用户话单支持号码查询 2024-05-17 18:00:56 +08:00
TsMask
b40e798090 feat: AMF用户事件支持IMSI查询 2024-05-17 18:00:28 +08:00
TsMask
d48d5d6c95 feat: 网元软件多语言翻译 2024-05-17 17:14:14 +08:00
TsMask
69f3347a4d feat: 网元版本多语言翻译 2024-05-17 16:04:44 +08:00
TsMask
85ae7dc5ea fix: 网元授权多语言翻译 2024-05-17 15:18:01 +08:00
TsMask
531cd6d03d fix: 开站网元信息telnet不显示 2024-05-17 11:32:30 +08:00
TsMask
9fd8c4597a fix: 开站网元信息telnet默认值 2024-05-17 11:06:19 +08:00
TsMask
7060a3d887 fix: 网元授权文件变更提供重启功能,排除OMC类型 2024-05-17 11:04:59 +08:00
TsMask
c12ffa583c fix: 开站时网元主机可不填备注 2024-05-16 19:21:06 +08:00
TsMask
05aabb8c61 chore: 更新版本号240516 2024-05-16 14:46:59 +08:00
TsMask
6b461ead7c fix: 网元信息编辑添加备注输入 2024-05-16 14:43:51 +08:00
TsMask
7c54e372e5 feat: 开站网元授权状态标签字典 2024-05-16 14:43:18 +08:00
TsMask
5be95a7af6 feat: 网元版本状态标签字典 2024-05-16 14:42:10 +08:00
TsMask
08515541b4 style: 网元公共参数配置初始值 2024-05-16 10:00:50 +08:00
TsMask
3948924f61 del: 删除旧系统页面 2024-05-15 19:21:49 +08:00
TsMask
ce1944881a style: 隐藏IP地址区域信息 2024-05-15 19:21:24 +08:00
lai
f6122c0758 调整为活动告警 2024-05-15 14:44:35 +08:00
lai
3d3f4c2cc6 看板微调 2024-05-15 14:43:07 +08:00
TsMask
e8e5b92a57 Merge remote-tracking branch 'origin/main' into lichang 2024-05-14 19:14:13 +08:00
TsMask
4ad704398d fix: 网元授权安装结果遍历message提示 2024-05-14 19:13:58 +08:00
TsMask
26289b7787 fix: 文件上传接口超时60s 2024-05-14 19:13:21 +08:00
TsMask
7ad8c1706e fix: 网元OAM端口输入限制5 2024-05-14 19:12:54 +08:00
TsMask
424a596613 fix: 看板定时器初始化前清除后设置 2024-05-14 19:12:16 +08:00
TsMask
6d5b9f417c fix: 网元特定排序添加SMSC 2024-05-14 17:24:50 +08:00
TsMask
7278e24dce Merge remote-tracking branch 'origin/main' into lichang 2024-05-14 15:02:11 +08:00
TsMask
76839ae18a fix: 系统重置操作等待遮罩 2024-05-14 15:01:30 +08:00
TsMask
c8a6aa3210 feat: 锁屏遮罩添加系统重置等待 2024-05-14 14:58:35 +08:00
TsMask
9b4bbcedc5 fix: 黄金指标图表项数据切换重复累积问题 2024-05-14 14:47:09 +08:00
TsMask
3b793c107c style: 角色键值输入提示变更多语言 2024-05-14 12:01:23 +08:00
lai
a076e6d079 疑似{}引发的问题 2024-05-14 10:02:43 +08:00
TsMask
fb2a7c51f9 Merge remote-tracking branch 'origin/main' into lichang 2024-05-13 09:41:19 +08:00
TsMask
1e2c2b5170 fix: 拓扑信息首个非OMC的异常显示问题 2024-05-11 18:03:49 +08:00
lai
56833b654e 更改提示语 2024-05-11 16:59:40 +08:00
lai
f50e02e6e7 为dnn,st添加星号 2024-05-11 16:58:22 +08:00
TsMask
52cc24813f Merge remote-tracking branch 'origin/main' into lichang 2024-05-11 16:42:13 +08:00
TsMask
c8a0d4c3f7 fix: 网元主机ssh私钥长度3000限制 2024-05-11 16:41:51 +08:00
TsMask
7560f21f11 style: 注释修改 2024-05-11 10:45:34 +08:00
TsMask
8a5f80fe47 feat: 网元配置OAM弹窗表单 2024-05-11 10:45:13 +08:00
TsMask
29eb1f08b1 del: 移除旧的参数配置页面 2024-05-10 14:54:36 +08:00
TsMask
9981de2271 del: 移除旧在线会话页面 2024-05-10 14:49:37 +08:00
TsMask
207acb3f3d fix: 网元信息IP地址输入校验 2024-05-10 14:43:57 +08:00
TsMask
873a76f48f fix: 开站排除omc类型选择 2024-05-10 14:42:26 +08:00
TsMask
4ca700092a fix: 登录后重定向页面 2024-05-10 14:19:30 +08:00
TsMask
ad9f8574bd del: 移除网元无用接口 2024-05-10 10:17:11 +08:00
TsMask
75faae6d7c Merge remote-tracking branch 'origin/main' into lichang 2024-05-09 19:26:20 +08:00
TsMask
c88c146a5e style: 网元版本页面多语言翻译 2024-05-09 19:25:14 +08:00
TsMask
c65cda1468 fix: 网元快速安装页面初始表单简化 2024-05-09 19:24:51 +08:00
TsMask
d8059341fe fix: 网元公共参数配置页面补充mme_ip 2024-05-09 19:22:03 +08:00
TsMask
ad86bee5f9 fix: 开站页面同步公共参数配置,优化页面样式 2024-05-09 19:18:21 +08:00
TsMask
f44cc44a1b style: 网元类型列表排序 2024-05-09 18:29:08 +08:00
TsMask
ad93588796 fix: 参数配置方法权限控制post,put,delete 2024-05-09 18:27:32 +08:00
TsMask
b5f6a5d24a feat: 网元公共参数配置数据名称调整 2024-05-09 15:54:48 +08:00
TsMask
fa4be253f7 fix: 系统配置重置操作多语言翻译 2024-05-08 16:09:39 +08:00
TsMask
2db0220c98 chore: 更新版本240508 2024-05-08 11:35:52 +08:00
TsMask
05fd678ce2 fix: SMF在线用户模拟数据变更/RAT Type文字换行 2024-05-08 11:35:33 +08:00
TsMask
165b28bab1 style: 开站页面样式调整 2024-05-08 11:05:35 +08:00
TsMask
dc67cdc262 fix: 看站系统配置新增管理员账号变更 2024-05-08 11:04:17 +08:00
TsMask
c97394a0ed fix: 看站完成确认提示 2024-05-08 11:03:03 +08:00
TsMask
6b9297d30e style: 看站开始页面样式调整 2024-05-08 11:02:30 +08:00
TsMask
ace7f26b53 style: 引导接口函数变更 2024-05-08 11:01:11 +08:00
TsMask
976f72f79a fix: 网元授权接口变更字段属性调整 2024-05-07 18:39:56 +08:00
TsMask
530e7fd43f feat: 系统引导重置操作 2024-05-07 16:28:10 +08:00
TsMask
b76fed7dcf feat: 系统引导使用接口变更 2024-05-07 16:27:45 +08:00
TsMask
60a26dd015 Merge remote-tracking branch 'origin/main' into lichang 2024-05-07 12:10:07 +08:00
TsMask
7bdfc257c1 chore: 依赖更新 2024-05-07 12:06:38 +08:00
TsMask
e3395b47cf feat: 更新xterm依赖库@xterm/xterm 2024-05-07 12:06:03 +08:00
TsMask
4c9b4de12f fix: 看板用户行为初始查询数据排序 2024-05-07 12:01:04 +08:00
lai
1cfe5e2777 主页饼图无感更新数据 2024-05-07 11:21:57 +08:00
TsMask
0cae26a1ee pref: 网元快速安装页面重构 2024-05-07 10:33:52 +08:00
TsMask
ed4d556384 pref: 网元授权页面的组件重构 2024-05-07 10:28:14 +08:00
TsMask
6d9d7362a4 fix: 网元公共配置参数文件页面 2024-05-07 09:59:42 +08:00
TsMask
5a40733f20 Merge remote-tracking branch 'origin/main' into lichang 2024-04-30 20:25:27 +08:00
TsMask
45ee884529 style: 查询网元信息接口函数命名 2024-04-30 20:08:55 +08:00
TsMask
7de3f7f05d fix: 网元软件上传窗口响应引用无效 2024-04-30 20:08:05 +08:00
TsMask
97bb4db1eb pref: 重构网元安装页面流程 2024-04-30 20:07:21 +08:00
TsMask
fc6dfe9894 style: 开站网元信息函数命名 2024-04-30 20:03:55 +08:00
TsMask
607660124a fix: 开站步骤hooks移除无用属性 2024-04-30 20:03:12 +08:00
TsMask
c50b3add95 feat: 网元安装授权页面 2024-04-30 20:02:24 +08:00
TsMask
2f7f0e9e20 feat: 网元安装配置页面 2024-04-30 20:00:56 +08:00
TsMask
6875ffd113 feat: 网元安装信息编辑页面 2024-04-30 19:59:45 +08:00
TsMask
44844bfa7f feat: 网元安装检查页面组件 2024-04-30 19:59:06 +08:00
TsMask
21ab066761 fix: 网元授权编辑弹出窗优化支持类型查询 2024-04-30 19:58:22 +08:00
TsMask
83bdf289fa feat: 网元信息免密直连授权操作 2024-04-30 19:56:17 +08:00
lai
d7aa0fc91a 更正-详情信息添加upState字段 2024-04-30 10:22:43 +08:00
lai
a6be5190ec 详情信息添加upState字段 2024-04-30 10:15:02 +08:00
TsMask
03cd06e835 style: 开站安装网元改为下一步 2024-04-29 18:18:11 +08:00
TsMask
2d7fe5a73b feat: 网元授权文件支持勾选指定网元类型替换 2024-04-29 18:17:45 +08:00
TsMask
dd5604c8b7 perf: 重构网元公共文件编辑参数 2024-04-29 18:16:39 +08:00
TsMask
7bf2672981 fix: 移除OAM编辑也慢慢 2024-04-29 18:15:26 +08:00
TsMask
6e616c63f0 fix: UDM签约数据sst-sd格式无sd也带- 2024-04-28 11:46:30 +08:00
TsMask
3ded481cce docs: 补充参数说明 2024-04-28 10:24:31 +08:00
TsMask
1baff582d8 feat: 网元授权编辑查看弹出窗口 2024-04-28 10:24:09 +08:00
TsMask
957868cc27 feat: 开站网元安装步骤进度的显示 2024-04-28 10:23:14 +08:00
TsMask
efb98ac577 feat: 补充授权文件按类型多上传 2024-04-28 10:22:14 +08:00
TsMask
ff228daae7 fix: UE SMF状态查询Up State可选 2024-04-26 19:21:44 +08:00
TsMask
c93e693517 fix: pcf新增编辑表单数据组装异常,上传超时30s 2024-04-26 17:13:07 +08:00
TsMask
55863c1c58 fix: pcf新增表单数据新增回显问题 2024-04-26 12:15:01 +08:00
lai
8a2d6c91ba 中英文翻译 2024-04-25 19:54:00 +08:00
lai
86a939f206 中英文翻译修正 2024-04-25 19:53:35 +08:00
TsMask
2b86f724b1 style: 系统菜单图标选择编号icon-001 2024-04-25 19:37:03 +08:00
TsMask
68fbc45b7c feat: 新增oam配置文件读写接口 2024-04-25 17:19:05 +08:00
TsMask
4629ef28ff fix: 接口变更 2024-04-25 17:18:46 +08:00
lai
e3a11b0ede 增加一个搜索字段 2024-04-25 17:17:02 +08:00
lai
3df9ee4f3a QOS=>Qos 2024-04-25 17:16:12 +08:00
lai
e64d558c27 批量新增 2024-04-25 17:10:22 +08:00
lai
5a2aa383fe 图标名字为icon001一直往下 2024-04-25 14:32:53 +08:00
lai
fe9f458465 pcf动态提示 2024-04-25 14:30:59 +08:00
TsMask
8e2e9aec67 style: 开站网元软件信息高度70vh 2024-04-25 14:22:09 +08:00
TsMask
ad48e8e2e1 feat: 网元软件安装页面 2024-04-25 14:21:35 +08:00
TsMask
6f8b1000ba feat: 开站网元公告参数配置表单填写 2024-04-25 14:21:08 +08:00
TsMask
f5549992c2 style: 网元公共参数表单名称修改 2024-04-25 14:19:29 +08:00
TsMask
19771ea6dc fix: 网元版本勾选升级关闭提示信息 2024-04-25 14:19:05 +08:00
TsMask
5965737384 feat: 网元软件包勾选删除记录 2024-04-25 14:17:59 +08:00
TsMask
b3cb40fd8c fix: 文件上传后关闭窗口复位上传结果 2024-04-25 14:16:41 +08:00
TsMask
0ab5141369 chore: 版本日期240425 2024-04-25 11:59:19 +08:00
TsMask
a23284da4c fix: 鉴权用户sst-sd输入限制1-3,sd补零 2024-04-25 11:56:41 +08:00
TsMask
1c8cc13436 style: PCF批量操作点击展开 2024-04-24 16:04:22 +08:00
TsMask
e6a439faea feat: 开站目录变更quick-start 2024-04-24 15:57:03 +08:00
TsMask
f8b1b1f6c3 Merge remote-tracking branch 'origin/main' into lichang 2024-04-24 15:40:48 +08:00
TsMask
3844e07258 feat: 开站目录变更quick-start 2024-04-24 15:34:07 +08:00
TsMask
1fab9b3d97 feat: 开站页面的部分修改 2024-04-24 15:30:38 +08:00
TsMask
1bfacbf2e0 feat: 开站系统信息页面逻辑对接 2024-04-24 15:29:51 +08:00
TsMask
c01f9f3830 feat: 开站网元信息页面逻辑对接 2024-04-24 15:29:29 +08:00
TsMask
28f9d365fd style: 网元新增编辑操作信息 2024-04-24 15:28:11 +08:00
TsMask
1085fa16aa feat: 初始访问时跳转开站引导页面 2024-04-24 15:27:23 +08:00
TsMask
e351960229 feat: 网元公共参数页面同步操作改弹出窗显示操作信息 2024-04-24 15:25:56 +08:00
TsMask
03caa354da feat: 开站开始页面获取接口授权 2024-04-24 15:24:45 +08:00
TsMask
34754ea0b6 feat: 开站引导开始完成接口 2024-04-24 15:24:00 +08:00
TsMask
86e1f07f08 feat: 开站结束页面标记完成 2024-04-24 15:22:27 +08:00
TsMask
2add7547d6 style: 删除console 2024-04-23 16:03:39 +08:00
TsMask
ecb89e9f26 feat: 用户管理和个人信息手机号输入改为国际电话输入 2024-04-23 14:56:35 +08:00
TsMask
7a9b38dc66 feat: 国际手机号输入框 2024-04-23 14:55:57 +08:00
TsMask
979b18092d fix: 个人信息手机号提示翻译出错 2024-04-23 14:53:37 +08:00
TsMask
ba43a647dd style: 查询年月日控件改为年月日时分秒 2024-04-22 17:17:29 +08:00
TsMask
3be14590c6 style: 告警alarmSeq改Sequence Number 2024-04-22 17:16:09 +08:00
TsMask
857f8c4313 feat: 系统首次使用引导页面 2024-04-19 19:54:07 +08:00
TsMask
c9c39d2d4a fix: 网元信息新增默认amf示例,安装默认y 2024-04-19 19:52:19 +08:00
TsMask
845084f77f feat: 系统首次使用引导标记 2024-04-19 19:51:01 +08:00
TsMask
becba4919e style: 多语言翻译 2024-04-19 17:22:37 +08:00
lai
b797055df9 KB转换成MB 2024-04-19 16:05:14 +08:00
TsMask
8101c852c8 style: 告警前传日志alarmSeq改Sequence 2024-04-19 14:07:35 +08:00
TsMask
9bbeb9fc9a fix: 锁屏reload延迟解除防止二次重启导致服务失败 2024-04-18 09:34:25 +08:00
TsMask
19a9bd3f5c fix: 锁屏reload不解除问题 2024-04-17 18:20:37 +08:00
TsMask
399bddc635 Merge remote-tracking branch 'origin/main' into lichang 2024-04-17 15:39:33 +08:00
TsMask
5a67a1a51c chore: 控制台版本号240418 2024-04-17 15:32:42 +08:00
TsMask
9a168d2ba0 fix: 登录页无网络隐藏多言选择 2024-04-17 15:32:07 +08:00
TsMask
e42a620aed feat: 快速开始建站页面 2024-04-17 15:07:02 +08:00
TsMask
eb902594b8 style: 网元菜单表格调整 2024-04-17 15:05:17 +08:00
TsMask
817fd97496 fix: 表字段列排序组件首位排序无效问题 2024-04-17 14:32:06 +08:00
TsMask
96aab47003 Merge remote-tracking branch 'origin/main' into lichang 2024-04-17 10:54:26 +08:00
TsMask
432666b1ab fix: 看板Hooks数据复位 2024-04-17 10:48:53 +08:00
TsMask
662583c73b fix: 拓扑组件监听窗口变化 2024-04-17 10:47:21 +08:00
TsMask
f73c21e6e6 fix: 页面卸载前判断是否断开ws 2024-04-17 10:45:45 +08:00
TsMask
17e72f1db1 fix: 岗位搜索标签positionCode显示不对 2024-04-17 09:47:45 +08:00
TsMask
55d4a36efb fix: 终端telnet支持调整窗口行宽 2024-04-16 19:49:44 +08:00
TsMask
d3794ba904 feat: 网元公共配置文件配置页面 2024-04-16 19:38:16 +08:00
TsMask
832f18e2ee style: 移动网元快速安装到ne目录 2024-04-16 19:37:37 +08:00
TsMask
cd2e282624 fix: 网元软件包新增去除防重复校验 2024-04-16 11:44:29 +08:00
TsMask
3db88f1d3a style: 网元授权信息去除斑马纹样式 2024-04-16 11:43:38 +08:00
TsMask
f291bb0907 feat: 软件版本勾选多升级 2024-04-16 11:42:45 +08:00
TsMask
69c32b2593 feat: 软件包多文件上传 2024-04-16 11:41:59 +08:00
TsMask
1a2939ab01 fix: 网元管理OMC禁止start stop,开启重启等待 2024-04-16 11:12:54 +08:00
TsMask
8bf4a2a9ce Merge remote-tracking branch 'origin/main' into lichang 2024-04-15 20:18:59 +08:00
TsMask
efd389f98a fix: 查询时间搜索值为时间戳 2024-04-15 20:17:39 +08:00
TsMask
f1125cc042 Merge remote-tracking branch 'origin/main' into lichang 2024-04-15 10:08:43 +08:00
TsMask
f1a0e200dc del: 移除表格斑马纹 2024-04-15 10:08:04 +08:00
TsMask
70c025f0f5 Merge remote-tracking branch 'origin/main' into lichang 2024-04-12 21:49:11 +08:00
TsMask
b9f0a3923d feat: 网元版本记录多勾选 2024-04-12 20:27:11 +08:00
TsMask
5c942c9ef7 style: 更新接口注释 2024-04-12 20:19:04 +08:00
TsMask
4294fe82c5 fix: 网元版本操作升级回退 2024-04-12 20:18:46 +08:00
TsMask
4e7fb90544 fix: 网元服务操作接口 2024-04-12 20:18:01 +08:00
TsMask
f050e500e9 fix: pcf页面添加分页支持勾选删除 2024-04-12 17:47:52 +08:00
TsMask
6bc10babba feat: 软件包上传组件 2024-04-12 17:43:26 +08:00
TsMask
4d36f9952a fix: 网元安装接口参数变更 2024-04-12 17:42:43 +08:00
lai
b03f4bb1d6 PCF策略中英文翻译 2024-04-12 10:35:53 +08:00
TsMask
4aaedf0f77 style: 网元安装授权检查接受提示 2024-04-12 10:23:48 +08:00
TsMask
c1ea851705 style: 网元信息修改弹出窗口改为异步组件 2024-04-12 10:23:12 +08:00
TsMask
47103249ef fix: 网元快速安装页面接口变更 2024-04-11 20:09:24 +08:00
TsMask
2642f18204 fix: 网元软件/版本/授权页面 2024-04-11 17:36:38 +08:00
TsMask
e2e22eabf5 style: 下拉触发改为点击显示 2024-04-11 17:36:07 +08:00
TsMask
325ecc8029 fix: 软件包表字段更新 2024-04-11 17:35:37 +08:00
TsMask
dc6f4560d5 feat: 快速安装页面 2024-04-11 17:35:19 +08:00
TsMask
3970797d5b feat: BA需要的mocn数据看板 2024-04-11 11:58:34 +08:00
TsMask
73776ed0f9 feat: kpi指标跳转指定网元类型 2024-04-11 11:54:48 +08:00
TsMask
aca842f8c2 feat: 参数配置access只读属性支持['read-only', 'read', 'ro'] 2024-04-11 11:53:17 +08:00
TsMask
612fb77861 fix: 网元管理修改网元类型属性绑定 2024-04-11 10:16:42 +08:00
TsMask
6ba695ceaf fix: 下拉展开取消悬浮,支持点击 2024-04-10 19:52:12 +08:00
TsMask
070f77d3b8 feat: 配置-网元管理添加Column settings 2024-04-10 19:38:14 +08:00
TsMask
15de63212f style: 网元管理-Province改为Region 2024-04-10 19:37:27 +08:00
lai
2202540763 更新用户策略提示信息 2024-04-10 19:00:56 +08:00
TsMask
c674b9b3f9 fix: KPI排除不可用网元类型的选择 2024-04-10 18:54:36 +08:00
TsMask
43d30e7bfa fix: 性能任务激活停止放出,编辑删除放到更多 2024-04-10 18:42:12 +08:00
TsMask
cd0633d519 fix: 性能任务激活停止放出,编辑删除放到更多 2024-04-10 18:40:56 +08:00
TsMask
b8bff2a159 style: 网元信息拓展信息显示横向排版 2024-04-10 16:50:56 +08:00
TsMask
638f890228 style: 移除多语言=暂无网元列表数据 2024-04-10 16:49:46 +08:00
TsMask
4460f7201c style: 网元配置类型可选择或输入 2024-04-10 16:47:40 +08:00
TsMask
d0bbfafedc fix: 系统日志的删除多语言提示 2024-04-09 19:41:12 +08:00
TsMask
16dc1c2e20 style: 中英文翻译父子联动->节点联动 2024-04-09 15:46:16 +08:00
TsMask
73ed5f5285 style: 网元新增初始参数 2024-04-09 15:39:04 +08:00
TsMask
50cb92a95b fix: 去除锁屏 2024-04-09 15:33:28 +08:00
TsMask
3888fd2bca fix: 软件管理下发激活回退关闭防重复提交判断 2024-04-09 15:25:34 +08:00
TsMask
4194d8cca6 fix: 用户昵称和手机号正则校验限长度 2024-04-08 15:03:53 +08:00
TsMask
ac84a0ca0a feat: 新增终端文本显示组件 2024-04-07 19:52:37 +08:00
398 changed files with 265995 additions and 25820 deletions

View File

@@ -1,17 +1,17 @@
# 历史路径-哈希带井号标识
VITE_HISTORY_HASH = false
VITE_HISTORY_HASH = true
# 历史路径-前缀URL如/h5
VITE_HISTORY_BASE_URL = "/"
# 应用名称
VITE_APP_NAME = "Core Network EMS"
VITE_APP_NAME = "Core Network OMC"
# 应用标识
VITE_APP_CODE = "CN EMS"
VITE_APP_CODE = "OMC"
# 应用版本
VITE_APP_VERSION = "2.240330.1"
VITE_APP_VERSION = "local-dev"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -5,13 +5,13 @@ VITE_HISTORY_HASH = true
VITE_HISTORY_BASE_URL = "/"
# 应用名称
VITE_APP_NAME = "Core Network EMS"
VITE_APP_NAME = "Core Network OMC"
# 应用标识
VITE_APP_CODE = "CN EMS"
VITE_APP_CODE = "OMC"
# 应用版本
VITE_APP_VERSION = "2.240330.1"
VITE_APP_VERSION = "local-prod"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"

View File

@@ -1,5 +1,43 @@
# 版本发布日志
## 2.2510.4-20251024
- 修复 AMF配置WhiteList Content导入index0无效问题
- 新增 更新背景图片固定BA的
- 新增 基站状态补充randId列
- 新增 Roaming CDR自定义导出功能
- 优化 基站名称和位置信息改为非必填
- 修复 网元信息更新响应修复
- 新增 UDM鉴权cnFlag添加5G/4G接入选择
- 新增 更新getAllNeConfig函数支持传入neId参数
- 修复 更新根网管节点处理逻辑支持无OMC情况
- 优化 移除ID列显示
- 优化 操作日志信息json结构格式美化
- 优化 备份网元日志文件数据查看
- 优化 悬浮标签修改
## 2.2510.2-20251011
- 新增 UDM-auth数据导出按钮权限定义
- 新增 SMSC-CDR添加结果原因说明
- 优化 移除CDR/UE/网元版本/授权列表显示ID列
- 修复 MML回车undefined问题关闭搜索匹配
## 2.2408.1-20250815
- 修复 给config.js加随机数避免缓存
- 优化 UDM鉴权用户显示创建时间
- 修复 系统用户登录主页重复刷新问题
- 新增 kpi自定义仪表盘需求更改
- 修复 租户主页暗色模式显示不一致
- 修复 租户和系统用户的主页显示差异
- 修复 图片上传取值fileName失败
- 优化 第三方用户不可删除和修改密码
- 修复 恢复显示快速PLMN修改窗口
- 新增 第三方登录认证功能和管理页
- 修复 回退看板修复切换upf的流量统计显示
## 2.2404.1-20240402
- 新增 网元安装流程相关页面与操作相关接口联调

View File

@@ -2,23 +2,9 @@
## 简介
- 系统布局使用 [@ant-design-vue/pro-layout](https://github.com/vueComponent/pro-components)
- 图标来源 [@ant-design/icons-vue](https://ant.design/components/icon)
- 菜单图标使用自定义 iconfont `font_8d5l8fzk5b87iudi.js`图标文件
## 测试环境
```text
Jenkins: http://192.168.2.166:3185/
Nginx: http://192.168.2.166:3188/#/index
后端暴露端口: http://192.168.2.166:3186 \ http://192.168.2.166:3187
新网管192.168.5.13
旧网管192.168.5.14
登录账户manager/manager
```
## 程序命令
项目目录下 `.env.[环境]` 文件对应环境的一些配置,启动前请检查文件内是否配置正确。
@@ -64,19 +50,27 @@ admin
admin
```
## k8s
master 192.168.5.27 agtuser/admin123
https://192.168.5.27:31325/#/workloads?namespace=default
## 多租户涉及页面
ems_frontend_vue3\src\views\dashboard\smfCDR\index.vue
ems_frontend_vue3\src\views\dashboard\imsCDR\index.vue
ems_frontend_vue3\src\views\dashboard\amfUE\index.vue
ems_frontend_vue3\src\views\dashboard\mmeUE\index.vue
ems_frontend_vue3\src\views\system\user\index.vue
ems_frontend_vue3\src\views\system\tenant\index.vue
ems_frontend_vue3\src\views\system\log\operate\index.vue
ems_frontend_vue3\src\views\neUser\sub\index.vue
ems_frontend_vue3\src\views\neUser\ims\index.vue
ems_frontend_vue3\src\views\neUser\ue\index.vue
ems_frontend_vue3\src\views\neUser\base5G\index.vue
```text
eyJhbGciOiJSUzI1NiIsImtpZCI6ImZFVUhIb1puLW04M1dfSUYyRU8zWlZueXBpNUh4T0hTRVlzU19jNlVGQ0kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLW44ZzRtIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2M2NmYjAyNS01ZmQ0LTQ0ZTgtOTdiNC0yYWRiYWIxNzc5M2MiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.R3GRygFOjngTj-mEMBAHDeBxm3lpsXZYvC6cdTxByONtLrcMXDebwNVeKtAZ1V9qh2OrjD8n9CIygjULGPdfV6S520vjMh7Oa2q68nOyW49DNWQyYD8xLo-dQ6sX07fI7X_I3H35YUWW80jJAXjJawqIGXBSMG5intlo4tLTUSXmjCfhoQvFsgeRWu0j76pDvhMAvLPcgEXfTCi9tyL3yqJBIKONcKwmMlJeaKSR3pQk3KiibqrBO0MZclRozpke6J0ulfzTemwDDyCqBZmLsRPZ2yDd5hVBIJ9bHEcK0a25NmSFFzmd8XWQPZwg3Y4IbbY-8UhByGq0p9xS-7pGCQ
```
```ssh
# https://blog.csdn.net/m0_54706625/article/details/129721121
sudo chmod 700 -/.ssh/
sudo chmod 700 /home/mask/.ssh #这个尤其容易忽视掉,我就是从这个坑里爬出来。有木有很高兴呀!
sudo chmod 600 ~/.ssh/authorized_keys
```
ems_frontend_vue3\src\views\tenant\amfUE\index.vue
ems_frontend_vue3\src\views\tenant\base5G\index.vue
ems_frontend_vue3\src\views\tenant\ims\index.vue
ems_frontend_vue3\src\views\tenant\imsCDR\index.vue
ems_frontend_vue3\src\views\tenant\mmeUE\index.vue
ems_frontend_vue3\src\views\tenant\operate\index.vue
ems_frontend_vue3\src\views\tenant\smfCDR\index.vue
ems_frontend_vue3\src\views\tenant\sub\index.vue
ems_frontend_vue3\src\views\tenant\ue\index.vue

View File

@@ -2,14 +2,18 @@
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="google" content="notranslate">
<meta name="google" content="notranslate" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>loading...</title>
<link rel="icon" href="/favicon.ico" />
<link rel="preload" href="/loading.js" as="script">
<link rel="preload" href="/loading.js" as="script"/>
<script async src="/loading.js"></script>
<link rel="preload" href="/config.js" as="script">
<script async src="/config.js"></script>
<script>
var script = document.createElement('script');
script.src = '/config.js?nocache=' + new Date().getTime();
script.async = true;
document.head.appendChild(script);
</script>
</head>
<body>
<div id="app"></div>

View File

@@ -1,56 +1,62 @@
{
"name": "ems_frontend_vue3",
"type": "module",
"description": "核心网管理平台",
"description": "Core Network EMS",
"author": "TsMask",
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"dev": "vite",
"build": "vue-tsc && vite build",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@ant-design/icons-vue": "^7.0.1",
"@antv/g6": "~4.8.24",
"@codemirror/lang-javascript": "^6.2.1",
"@codemirror/lang-yaml": "^6.0.0",
"@codemirror/merge": "^6.6.1",
"@codemirror/theme-one-dark": "^6.1.2",
"@tato30/vue-pdf": "^1.9.6",
"@vueuse/core": "~10.9.0",
"ant-design-vue": "^3.2.20",
"antdv-pro-layout": "^3.2.6",
"codemirror": "^6.0.1",
"dayjs": "^1.11.10",
"echarts": "~5.5.0",
"file-saver": "^2.0.5",
"@ant-design/icons-vue": "7.0.1",
"@antv/g6": "4.8.24",
"@codemirror/lang-javascript": "6.2.3",
"@codemirror/lang-yaml": "6.1.2",
"@codemirror/merge": "6.10.0",
"@codemirror/theme-one-dark": "6.1.2",
"@tato30/vue-pdf": "1.11.3",
"@vueuse/core": "13.0.0",
"@xterm/addon-fit": "0.10.0",
"@xterm/xterm": "5.5.0",
"ant-design-vue": "4.2.6",
"antdv-pro-layout": "4.2.0",
"antdv-pro-modal": "4.0.6",
"codemirror": "6.0.1",
"crypto-js": "4.2.0",
"dayjs": "1.11.13",
"echarts": "5.6.0",
"echarts-liquidfill": "^3.1.0",
"file-saver": "2.0.5",
"grid-layout-plus": "1.0.6",
"intl-tel-input": "25.2.0",
"js-base64": "^3.7.7",
"js-cookie": "^3.0.5",
"localforage": "^1.10.0",
"nprogress": "^0.2.0",
"p-queue": "^8.0.1",
"pinia": "^2.1.7",
"vue": "~3.3.13",
"vue-i18n": "~9.10.0",
"vue-router": "^4.2.5",
"vue3-smooth-dnd": "^0.0.6",
"xlsx": "^0.18.5",
"xterm": "^5.3.0",
"xterm-addon-fit": "^0.8.0"
"p-queue": "8.0.1",
"pinia": "2.3.0",
"vue": "3.5.13",
"vue-i18n": "11.1.2",
"vue-router": "4.5.0",
"vue3-smooth-dnd": "0.0.6",
"xlsx": "0.18.5"
},
"devDependencies": {
"@types/file-saver": "^2.0.7",
"@types/js-cookie": "^3.0.6",
"@types/crypto-js": "4.2.2",
"@types/file-saver": "2.0.7",
"@types/js-cookie": "3.0.6",
"@types/node": "^18.0.0",
"@types/nprogress": "^0.2.3",
"@vitejs/plugin-vue": "^5.0.4",
"less": "^4.2.0",
"typescript": "^5.4.3",
"unplugin-vue-components": "^0.26.0",
"vite": "^5.2.6",
"vite-plugin-compression": "^0.5.1",
"vue-tsc": "^1.8.27"
"@types/nprogress": "0.2.3",
"@vitejs/plugin-vue": "5.2.3",
"less": "4.2.2",
"typescript": "5.8.2",
"unplugin-vue-components": "0.28.0",
"vite": "6.2.2",
"vite-plugin-compression": "0.5.1",
"vue-tsc": "2.2.8"
}
}

BIN
public/background/dark.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

BIN
public/background/light.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 KiB

View File

@@ -10,11 +10,19 @@
*
*/
(function () {
// host = ip:port
const host = '192.168.8.100:33030';
// baseUrl = protocol://ip:port
// baseUrl = 'http://192.168.8.100:33030';
const protocol = window.location.protocol
let wsprotocol = "ws:"
const hostname = window.location.hostname
let host = `${hostname}:33030`;
if (protocol === 'https:') {
host = `${hostname}:33443`;
wsprotocol = "wss:"
}
// Service Address
sessionStorage.setItem('baseUrl', `http://${host}`);
sessionStorage.setItem('baseUrl', `${protocol}//${host}`);
// websocket Address
sessionStorage.setItem('wsUrl', `ws://${host}`);
sessionStorage.setItem('wsUrl', `${wsprotocol}//${host}`);
})();

BIN
public/nbStateImput/en.xlsx Normal file

Binary file not shown.

BIN
public/nbStateImput/zh.xlsx Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1 @@
001012082101039,1234,internet|ims_sig,internet|ims_sig,321321,255,321312,32131,32131

View File

@@ -0,0 +1,2 @@
001011100001157,1234567890ABCDEF1234567890ABCDEF,0,8000,11111111111111111111111111111111
001011100001158,1234567890ABCDEF1234567890ABCDEF,0,8000,11111111111111111111111111111111

View File

@@ -0,0 +1,2 @@
001011100001157,62357000583,def_ambr,def_nssai,def_arfb,def_sar,0,3,def_snssai,1-000001&internet&ims,1,64,24,65,def_eps,1,010200000000,-
001011100001158,62357000585,def_ambr,def_nssai,def_arfb,def_sar,0,3,def_snssai,1-000001&internet&ims,1,64,24,65,def_eps,1,010200000000,-

View File

@@ -0,0 +1,2 @@
62357000580,123456
62357000581,123456

View File

@@ -0,0 +1,2 @@
001012082101039,62357000580,1,ims.mnc001.mcc001.3gppnetwork.org
62357000581,62357000581,0,ims.mnc001.mcc001.3gppnetwork.org

28
public/svg/base4G.svg Normal file
View File

@@ -0,0 +1,28 @@
<svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg">
<!-- Created with Method Draw - http://github.com/duopixel/Method-Draw/ -->
<g>
<title>background</title>
<rect fill="none" id="canvas_background" height="1026" width="1026" y="-1" x="-1"/>
<g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
<rect fill="url(#gridpattern)" stroke-width="0" y="1" x="1" height="768" width="1024"/>
</g>
</g>
<g>
<title>Layer 1</title>
<g stroke="null" id="svg_15">
<path stroke="null" id="svg_4" fill="#B5D6FB" d="m512.094844,961.632039c-1.327621,0 -2.560412,-0.405439 -3.793202,-1.114958l-405.588164,-251.575028c-2.275921,-1.419037 -3.698372,-4.054392 -3.698372,-6.892467l0,-90.007504c0,-2.838074 1.422451,-5.473429 3.698372,-6.892467l405.588164,-255.426701c1.137961,-0.709519 2.465582,-1.114958 3.793202,-1.114958s2.655242,0.405439 3.793202,1.114958l405.493334,255.426701c2.275921,1.419037 3.698372,4.054392 3.698372,6.892467l0,90.007504c0,2.838074 -1.422451,5.473429 -3.698372,6.892467l-405.588164,251.575028c-1.137961,0.709519 -2.465582,1.114958 -3.698372,1.114958z"/>
<path stroke="null" id="svg_5" fill="#0276F7" d="m512.094844,356.615382l405.398504,255.426701l0,90.007504l-66.096551,40.94936l-339.301952,210.625668l-339.491613,-210.625668l-66.096551,-40.94936l0,-90.007504l405.588164,-255.426701m0,-16.014849c-2.655242,0 -5.215653,0.709519 -7.586405,2.229916l-405.588164,255.426701c-4.551843,2.838074 -7.396745,8.108784 -7.396745,13.784933l0,90.007504c0,5.676149 2.844902,10.946859 7.491575,13.886293l66.096551,41.05072l339.491613,210.625668c2.275921,1.419037 4.931163,2.128556 7.491575,2.128556s5.215653,-0.709519 7.491575,-2.128556l339.301952,-210.625668l66.096551,-40.94936c4.646673,-2.838074 7.491575,-8.108784 7.491575,-13.886293l0,-90.007504c0,-5.676149 -2.844902,-10.946859 -7.396745,-13.784933l-405.398504,-255.426701c-2.370751,-1.520397 -5.025993,-2.331275 -7.586405,-2.331275z"/>
<path stroke="null" id="svg_6" fill="#FFFFFF" d="m106.50668,612.042083l405.493334,253.298145l405.493334,-253.298145l-405.398504,-255.426701l-405.588164,255.426701z"/>
<path stroke="null" id="svg_7" fill="#D4E4FC" d="m501.473877,64.192353l-254.9032,498.487506l263.343075,161.162085l266.662127,-162.074323l-275.102002,-497.575268z"/>
<path stroke="null" id="svg_8" fill="#0276F7" d="m229.975417,602.311542c-1.232791,0 -2.465582,-0.304079 -3.698372,-1.013598c-3.603542,-2.128556 -4.931163,-6.993826 -2.844902,-10.845499l279.653845,-532.13896c1.327621,-2.533995 3.793202,-4.054392 6.543274,-4.054392c2.655242,0 5.120823,1.520397 6.543274,4.054392l284.395348,532.13896c2.086261,3.851672 0.75864,8.716943 -2.750072,10.946859c-3.603542,2.128556 -8.155385,0.810878 -10.241646,-2.939434l-277.852074,-519.874424l-273.205401,519.671704c-1.422451,2.635355 -3.982862,4.054392 -6.543274,4.054392z"/>
<path stroke="null" id="svg_9" fill="#0276F7" d="m509.913752,755.567562c-4.172523,0 -7.491575,-3.547593 -7.491575,-8.007424l0,-666.744777c0,-4.459831 3.319052,-8.007424 7.491575,-8.007424s7.491575,3.547593 7.491575,8.007424l0,666.846137c0,4.358471 -3.413882,7.906065 -7.491575,7.906065z"/>
<path stroke="null" id="svg_10" fill="#0276F7" d="m509.913752,731.849369c-1.327621,0 -2.560412,-0.405439 -3.698372,-1.013598l-263.343075,-161.162085c-3.603542,-2.229916 -4.836333,-7.095186 -2.750072,-10.946859c2.086261,-3.851672 6.638104,-5.16935 10.241646,-2.939434l259.549873,158.83081l262.963755,-159.844408c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.946859l-266.662127,162.074323c-1.137961,0.709519 -2.465582,1.013598 -3.698372,1.013598z"/>
<path stroke="null" id="svg_11" fill="#0276F7" d="m509.913752,579.708306c-1.327621,0 -2.560412,-0.405439 -3.793202,-1.114958l-201.988026,-125.686154c-3.603542,-2.229916 -4.741503,-7.095186 -2.750072,-10.946859c2.086261,-3.851672 6.638104,-5.16935 10.241646,-2.838074l198.289654,123.354879l201.798366,-122.138561c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.845499l-205.496739,124.469837c-1.137961,0.709519 -2.465582,1.013598 -3.698372,1.013598zm-2.465582,-157.513132c-1.232791,0 -2.370751,-0.304079 -3.508712,-0.912238l-140.917468,-79.668804c-3.698372,-2.128556 -5.025993,-6.892467 -3.129392,-10.845499c1.896601,-3.953032 6.448444,-5.37207 10.146816,-3.344873l137.503586,77.742968l143.00373,-79.871524c3.698372,-2.027196 8.155385,-0.506799 10.146816,3.344873c1.896601,3.953032 0.47415,8.716943 -3.129392,10.845499l-146.512442,81.79736c-1.232791,0.608159 -2.370751,0.912238 -3.603542,0.912238zm2.465582,-148.49211c-1.232791,0 -2.465582,-0.304079 -3.508712,-0.912238l-82.312492,-47.436387c-3.603542,-2.128556 -5.025993,-6.993826 -3.034562,-10.845499c1.991431,-3.953032 6.543274,-5.27071 10.146816,-3.243514l78.708949,45.409191l78.329629,-47.537747c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.946859l-81.933171,49.666303c-1.232791,0.608159 -2.560412,0.912238 -3.793202,0.912238z"/>
<path stroke="null" id="svg_12" fill="#0276F7" d="m509.913752,579.708306l-0.28449,0l-263.248245,-9.021022c-4.172523,-0.10136 -7.396745,-3.851672 -7.207085,-8.210144c0.09483,-4.459831 4.077693,-7.703345 7.681235,-7.703345l263.343075,9.021022c4.172523,0.10136 7.396745,3.851672 7.207085,8.210144c-0.18966,4.257112 -3.508712,7.703345 -7.491575,7.703345zm0,152.141063c-1.612111,0 -3.224222,-0.608159 -4.646673,-1.723117c-3.224222,-2.736715 -3.793202,-7.804705 -1.232791,-11.250938l205.496739,-276.610899c2.560412,-3.446233 7.301915,-4.054392 10.526137,-1.317677c3.224222,2.736715 3.793202,7.804705 1.232791,11.250938l-205.496739,276.610899c-1.517281,2.027196 -3.698372,3.040794 -5.879464,3.040794z"/>
<path stroke="null" id="svg_13" fill="#0276F7" d="m509.913752,579.708306c-1.422451,0 -2.750072,-0.405439 -4.077693,-1.216318c-3.508712,-2.432635 -4.457013,-7.297906 -2.275921,-11.048218l144.14169,-239.310492c2.275921,-3.750313 6.922594,-4.763911 10.336476,-2.432635c3.508712,2.432635 4.457013,7.297906 2.275921,11.048218l-144.14169,239.310492c-1.422451,2.331275 -3.793202,3.648953 -6.258784,3.648953zm-2.465582,-157.513132c-1.043131,0 -2.086261,-0.20272 -3.129392,-0.709519c-3.793202,-1.824476 -5.405313,-6.588387 -3.698372,-10.642779l84.398753,-198.158413c1.706941,-4.054392 6.069124,-5.777509 9.957156,-3.953032c3.793202,1.824476 5.405313,6.588387 3.698372,10.642779l-84.303923,198.158413c-1.327621,2.939434 -4.077693,4.662551 -6.922594,4.662551z"/>
<path stroke="null" id="svg_14" fill="#0276F7" d="m591.846924,375.062866c-2.750072,0 -5.405313,-1.621757 -6.732934,-4.459831c-1.801771,-3.953032 -0.28449,-8.716943 3.413882,-10.642779l129.253371,-67.302908l-365.759539,-178.089172l20.862613,208.091673l133.994874,-64.262114c3.698372,-1.824476 8.155385,0 9.862326,4.054392c1.706941,4.054392 0,8.716943 -3.793202,10.541419l-143.38305,68.823305c-2.181091,1.013598 -4.646673,0.912238 -6.827764,-0.405439c-2.086261,-1.317677 -3.413882,-3.547593 -3.698372,-6.081588l-23.328195,-233.026185c-0.28449,-2.838074 0.853471,-5.676149 3.034562,-7.297906c2.181091,-1.621757 5.025993,-2.027196 7.491575,-0.810878l392.217126,190.961867c2.655242,1.317677 4.362183,4.054392 4.362183,7.196546c0,3.142154 -1.612111,5.980228 -4.172523,7.297906l-143.57271,74.600814c-1.043131,0.608159 -2.181091,0.810878 -3.224222,0.810878zm-283.921198,78.959286c-3.603542,0 -6.827764,-2.838074 -7.396745,-6.791107c-0.56898,-4.358471 2.181091,-8.412864 6.258784,-9.122382l199.617275,-31.826978c4.077693,-0.608159 7.870895,2.331275 8.534705,6.689747c0.56898,4.358471 -2.181091,8.412864 -6.258784,9.122382l-199.617275,31.826978c-0.47415,0.10136 -0.853471,0.10136 -1.137961,0.10136z"/>
</g>
<text stroke="null" font-style="italic" transform="matrix(6.577099502228161,0,0,7.449448263868419,-1073.2057632249744,-908.8606073938396) " xml:space="preserve" text-anchor="start" font-family="Arvo, sans-serif" font-size="24" id="svg_16" y="177.898525" x="178.621382" stroke-width="0" fill="#B5D6FB">4G</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

28
public/svg/base5G.svg Normal file
View File

@@ -0,0 +1,28 @@
<svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg">
<!-- Created with Method Draw - http://github.com/duopixel/Method-Draw/ -->
<g>
<title>background</title>
<rect fill="none" id="canvas_background" height="1026" width="1026" y="-1" x="-1"/>
<g display="none" overflow="visible" y="0" x="0" height="100%" width="100%" id="canvasGrid">
<rect fill="url(#gridpattern)" stroke-width="0" y="1" x="1" height="768" width="1024"/>
</g>
</g>
<g>
<title>Layer 1</title>
<g stroke="null" id="svg_15">
<path stroke="null" id="svg_4" fill="#B5D6FB" d="m512.094844,961.632039c-1.327621,0 -2.560412,-0.405439 -3.793202,-1.114958l-405.588164,-251.575028c-2.275921,-1.419037 -3.698372,-4.054392 -3.698372,-6.892467l0,-90.007504c0,-2.838074 1.422451,-5.473429 3.698372,-6.892467l405.588164,-255.426701c1.137961,-0.709519 2.465582,-1.114958 3.793202,-1.114958s2.655242,0.405439 3.793202,1.114958l405.493334,255.426701c2.275921,1.419037 3.698372,4.054392 3.698372,6.892467l0,90.007504c0,2.838074 -1.422451,5.473429 -3.698372,6.892467l-405.588164,251.575028c-1.137961,0.709519 -2.465582,1.114958 -3.698372,1.114958z"/>
<path stroke="null" id="svg_5" fill="#0276F7" d="m512.094844,356.615382l405.398504,255.426701l0,90.007504l-66.096551,40.94936l-339.301952,210.625668l-339.491613,-210.625668l-66.096551,-40.94936l0,-90.007504l405.588164,-255.426701m0,-16.014849c-2.655242,0 -5.215653,0.709519 -7.586405,2.229916l-405.588164,255.426701c-4.551843,2.838074 -7.396745,8.108784 -7.396745,13.784933l0,90.007504c0,5.676149 2.844902,10.946859 7.491575,13.886293l66.096551,41.05072l339.491613,210.625668c2.275921,1.419037 4.931163,2.128556 7.491575,2.128556s5.215653,-0.709519 7.491575,-2.128556l339.301952,-210.625668l66.096551,-40.94936c4.646673,-2.838074 7.491575,-8.108784 7.491575,-13.886293l0,-90.007504c0,-5.676149 -2.844902,-10.946859 -7.396745,-13.784933l-405.398504,-255.426701c-2.370751,-1.520397 -5.025993,-2.331275 -7.586405,-2.331275z"/>
<path stroke="null" id="svg_6" fill="#FFFFFF" d="m106.50668,612.042083l405.493334,253.298145l405.493334,-253.298145l-405.398504,-255.426701l-405.588164,255.426701z"/>
<path stroke="null" id="svg_7" fill="#D4E4FC" d="m501.473877,64.192353l-254.9032,498.487506l263.343075,161.162085l266.662127,-162.074323l-275.102002,-497.575268z"/>
<path stroke="null" id="svg_8" fill="#0276F7" d="m229.975417,602.311542c-1.232791,0 -2.465582,-0.304079 -3.698372,-1.013598c-3.603542,-2.128556 -4.931163,-6.993826 -2.844902,-10.845499l279.653845,-532.13896c1.327621,-2.533995 3.793202,-4.054392 6.543274,-4.054392c2.655242,0 5.120823,1.520397 6.543274,4.054392l284.395348,532.13896c2.086261,3.851672 0.75864,8.716943 -2.750072,10.946859c-3.603542,2.128556 -8.155385,0.810878 -10.241646,-2.939434l-277.852074,-519.874424l-273.205401,519.671704c-1.422451,2.635355 -3.982862,4.054392 -6.543274,4.054392z"/>
<path stroke="null" id="svg_9" fill="#0276F7" d="m509.913752,755.567562c-4.172523,0 -7.491575,-3.547593 -7.491575,-8.007424l0,-666.744777c0,-4.459831 3.319052,-8.007424 7.491575,-8.007424s7.491575,3.547593 7.491575,8.007424l0,666.846137c0,4.358471 -3.413882,7.906065 -7.491575,7.906065z"/>
<path stroke="null" id="svg_10" fill="#0276F7" d="m509.913752,731.849369c-1.327621,0 -2.560412,-0.405439 -3.698372,-1.013598l-263.343075,-161.162085c-3.603542,-2.229916 -4.836333,-7.095186 -2.750072,-10.946859c2.086261,-3.851672 6.638104,-5.16935 10.241646,-2.939434l259.549873,158.83081l262.963755,-159.844408c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.946859l-266.662127,162.074323c-1.137961,0.709519 -2.465582,1.013598 -3.698372,1.013598z"/>
<path stroke="null" id="svg_11" fill="#0276F7" d="m509.913752,579.708306c-1.327621,0 -2.560412,-0.405439 -3.793202,-1.114958l-201.988026,-125.686154c-3.603542,-2.229916 -4.741503,-7.095186 -2.750072,-10.946859c2.086261,-3.851672 6.638104,-5.16935 10.241646,-2.838074l198.289654,123.354879l201.798366,-122.138561c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.845499l-205.496739,124.469837c-1.137961,0.709519 -2.465582,1.013598 -3.698372,1.013598zm-2.465582,-157.513132c-1.232791,0 -2.370751,-0.304079 -3.508712,-0.912238l-140.917468,-79.668804c-3.698372,-2.128556 -5.025993,-6.892467 -3.129392,-10.845499c1.896601,-3.953032 6.448444,-5.37207 10.146816,-3.344873l137.503586,77.742968l143.00373,-79.871524c3.698372,-2.027196 8.155385,-0.506799 10.146816,3.344873c1.896601,3.953032 0.47415,8.716943 -3.129392,10.845499l-146.512442,81.79736c-1.232791,0.608159 -2.370751,0.912238 -3.603542,0.912238zm2.465582,-148.49211c-1.232791,0 -2.465582,-0.304079 -3.508712,-0.912238l-82.312492,-47.436387c-3.603542,-2.128556 -5.025993,-6.993826 -3.034562,-10.845499c1.991431,-3.953032 6.543274,-5.27071 10.146816,-3.243514l78.708949,45.409191l78.329629,-47.537747c3.603542,-2.229916 8.155385,-0.810878 10.241646,3.040794c2.086261,3.851672 0.75864,8.716943 -2.844902,10.946859l-81.933171,49.666303c-1.232791,0.608159 -2.560412,0.912238 -3.793202,0.912238z"/>
<path stroke="null" id="svg_12" fill="#0276F7" d="m509.913752,579.708306l-0.28449,0l-263.248245,-9.021022c-4.172523,-0.10136 -7.396745,-3.851672 -7.207085,-8.210144c0.09483,-4.459831 4.077693,-7.703345 7.681235,-7.703345l263.343075,9.021022c4.172523,0.10136 7.396745,3.851672 7.207085,8.210144c-0.18966,4.257112 -3.508712,7.703345 -7.491575,7.703345zm0,152.141063c-1.612111,0 -3.224222,-0.608159 -4.646673,-1.723117c-3.224222,-2.736715 -3.793202,-7.804705 -1.232791,-11.250938l205.496739,-276.610899c2.560412,-3.446233 7.301915,-4.054392 10.526137,-1.317677c3.224222,2.736715 3.793202,7.804705 1.232791,11.250938l-205.496739,276.610899c-1.517281,2.027196 -3.698372,3.040794 -5.879464,3.040794z"/>
<path stroke="null" id="svg_13" fill="#0276F7" d="m509.913752,579.708306c-1.422451,0 -2.750072,-0.405439 -4.077693,-1.216318c-3.508712,-2.432635 -4.457013,-7.297906 -2.275921,-11.048218l144.14169,-239.310492c2.275921,-3.750313 6.922594,-4.763911 10.336476,-2.432635c3.508712,2.432635 4.457013,7.297906 2.275921,11.048218l-144.14169,239.310492c-1.422451,2.331275 -3.793202,3.648953 -6.258784,3.648953zm-2.465582,-157.513132c-1.043131,0 -2.086261,-0.20272 -3.129392,-0.709519c-3.793202,-1.824476 -5.405313,-6.588387 -3.698372,-10.642779l84.398753,-198.158413c1.706941,-4.054392 6.069124,-5.777509 9.957156,-3.953032c3.793202,1.824476 5.405313,6.588387 3.698372,10.642779l-84.303923,198.158413c-1.327621,2.939434 -4.077693,4.662551 -6.922594,4.662551z"/>
<path stroke="null" id="svg_14" fill="#0276F7" d="m591.846924,375.062866c-2.750072,0 -5.405313,-1.621757 -6.732934,-4.459831c-1.801771,-3.953032 -0.28449,-8.716943 3.413882,-10.642779l129.253371,-67.302908l-365.759539,-178.089172l20.862613,208.091673l133.994874,-64.262114c3.698372,-1.824476 8.155385,0 9.862326,4.054392c1.706941,4.054392 0,8.716943 -3.793202,10.541419l-143.38305,68.823305c-2.181091,1.013598 -4.646673,0.912238 -6.827764,-0.405439c-2.086261,-1.317677 -3.413882,-3.547593 -3.698372,-6.081588l-23.328195,-233.026185c-0.28449,-2.838074 0.853471,-5.676149 3.034562,-7.297906c2.181091,-1.621757 5.025993,-2.027196 7.491575,-0.810878l392.217126,190.961867c2.655242,1.317677 4.362183,4.054392 4.362183,7.196546c0,3.142154 -1.612111,5.980228 -4.172523,7.297906l-143.57271,74.600814c-1.043131,0.608159 -2.181091,0.810878 -3.224222,0.810878zm-283.921198,78.959286c-3.603542,0 -6.827764,-2.838074 -7.396745,-6.791107c-0.56898,-4.358471 2.181091,-8.412864 6.258784,-9.122382l199.617275,-31.826978c4.077693,-0.608159 7.870895,2.331275 8.534705,6.689747c0.56898,4.358471 -2.181091,8.412864 -6.258784,9.122382l-199.617275,31.826978c-0.47415,0.10136 -0.853471,0.10136 -1.137961,0.10136z"/>
</g>
<text stroke="null" font-style="italic" transform="matrix(6.577099502228161,0,0,7.449448263868419,-1073.2057632249744,-908.8606073938396) " xml:space="preserve" text-anchor="start" font-family="Arvo, sans-serif" font-size="24" id="svg_16" y="177.898525" x="178.621382" stroke-width="0" fill="#D4E4FC">5G</text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

178925
public/wiregasm/wiregasm.data Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,166 @@
/**
* Wraps the WiregasmLib lib functionality and manages a single DissectSession
*/
class Wiregasm {
constructor() {
this.initialized = false;
this.session = null;
}
/**
* Initialize the wrapper and the Wiregasm module
*
* @param loader Loader function for the Emscripten module
* @param overrides Overrides
*/
async init(loader, overrides = {}, beforeInit = null) {
if (this.initialized) {
return;
}
this.lib = await loader(overrides);
this.uploadDir = this.lib.getUploadDirectory();
this.pluginsDir = this.lib.getPluginsDirectory();
if (beforeInit !== null) {
await beforeInit(this.lib);
}
this.lib.init();
this.initialized = true;
}
list_modules() {
return this.lib.listModules();
}
list_prefs(module) {
return this.lib.listPreferences(module);
}
apply_prefs() {
this.lib.applyPreferences();
}
set_pref(module, key, value) {
const ret = this.lib.setPref(module, key, value);
if (ret.code != PrefSetResult.PREFS_SET_OK) {
const message =
ret.error != '' ? ret.error : preferenceSetCodeToError(ret.code);
throw new Error(
`Failed to set preference (${module}.${key}): ${message}`
);
}
}
get_pref(module, key) {
const response = this.lib.getPref(module, key);
if (response.code != 0) {
throw new Error(`Failed to get preference (${module}.${key})`);
}
return response.data;
}
/**
* Check the validity of a filter expression.
*
* @param filter A display filter expression
*/
test_filter(filter) {
return this.lib.checkFilter(filter);
}
complete_filter(filter) {
const out = this.lib.completeFilter(filter);
return {
err: out.err,
fields: vectorToArray(out.fields),
};
}
reload_lua_plugins() {
this.lib.reloadLuaPlugins();
}
add_plugin(name, data, opts = {}) {
const path = this.pluginsDir + '/' + name;
this.lib.FS.writeFile(path, data, opts);
}
/**
* Load a packet trace file for analysis.
*
* @returns Response containing the status and summary
*/
load(name, data, opts = {}) {
if (this.session != null) {
this.session.delete();
}
const path = this.uploadDir + '/' + name;
this.lib.FS.writeFile(path, data, opts);
this.session = new this.lib.DissectSession(path);
return this.session.load();
}
/**
* Get Packet List information for a range of packets.
*
* @param filter Output those frames that pass this filter expression
* @param skip Skip N frames
* @param limit Limit the output to N frames
*/
frames(filter, skip = 0, limit = 0) {
return this.session.getFrames(filter, skip, limit);
}
/**
* Get full information about a frame including the protocol tree.
*
* @param number Frame number
*/
frame(num) {
return this.session.getFrame(num);
}
follow(follow, filter) {
return this.session.follow(follow, filter);
}
destroy() {
if (this.initialized) {
if (this.session !== null) {
this.session.delete();
this.session = null;
}
this.lib.destroy();
this.initialized = false;
}
}
/**
* Returns the column headers
*/
columns() {
const vec = this.lib.getColumns();
// convert it from a vector to array
return vectorToArray(vec);
}
}
/**
* Converts a Vector to a JS array
*
* @param vec Vector
* @returns JS array of the Vector contents
*/
function vectorToArray(vec) {
return new Array(vec.size()).fill(0).map((_, id) => vec.get(id));
}
function preferenceSetCodeToError(code) {
switch (code) {
case PrefSetResult.PREFS_SET_SYNTAX_ERR:
return 'Syntax error in string';
case PrefSetResult.PREFS_SET_NO_SUCH_PREF:
return 'No such preference';
case PrefSetResult.PREFS_SET_OBSOLETE:
return 'Preference used to exist but no longer does';
default:
return 'Unknown error';
}
}
if (typeof exports === 'object' && typeof module === 'object') {
module.exports = Wiregasm;
module.exports = vectorToArray;
} else if (typeof define === 'function' && define['amd']) {
define([], function () {
return Wiregasm;
});
define([], function () {
return vectorToArray;
});
} else if (typeof exports === 'object') {
exports['loadWiregasm'] = Wiregasm;
exports['vectorToArray'] = vectorToArray;
}

162
public/wiregasm/worker.js Normal file
View File

@@ -0,0 +1,162 @@
// load the Wiregasm library
importScripts(
'wiregasm_new.js', // self-compilation es5
'wiregasm_load.js'
// 'https://cdn.jsdelivr.net/npm/@goodtools/wiregasm/dist/wiregasm.js'
);
const wg = new Wiregasm();
const inflateRemoteBuffer = async url => {
const res = await fetch(url);
return await res.arrayBuffer();
};
const fetchPackages = async () => {
console.log('Fetching packages');
let [wasmBuffer, dataBuffer] = await Promise.all([
await inflateRemoteBuffer(
'wiregasm.wasm'
// 'https://cdn.jsdelivr.net/npm/@goodtools/wiregasm/dist/wiregasm.wasm'
),
await inflateRemoteBuffer(
'wiregasm.data'
// 'https://cdn.jsdelivr.net/npm/@goodtools/wiregasm/dist/wiregasm.data'
),
]);
return { wasmBuffer, dataBuffer };
};
// Load the Wiregasm Wasm data
fetchPackages()
.then(({ wasmBuffer, dataBuffer }) => {
return wg.init(loadWiregasm, {
wasmBinary: wasmBuffer,
getPreloadedPackage() {
return dataBuffer;
},
handleStatus: (type, status) => {
postMessage({ type: 'status', code: type, status: status });
},
printErr: error => {
postMessage({ type: 'error', error: error });
},
});
})
.then(() => {
postMessage({ type: 'init' });
})
.catch(e => {
postMessage({ type: 'error', error: e });
});
/**Converts a Vector to a JS array */
function replacer(key, value) {
if (value.constructor.name.startsWith('Vector')) {
return vectorToArray(value);
}
return value;
}
// Event listener to receive messages from the main script
this.onmessage = ev => {
const data = ev.data;
switch (data.type) {
case 'close':
wg.destroy();
break;
case 'columns':
const columns = wg.columns();
if (Array.isArray(columns)) {
this.postMessage({ type: 'columns', data: columns });
}
break;
case 'select': // select a frame
const number = data.number;
const frameData = wg.frame(number);
const frameDataToJSON = JSON.parse(JSON.stringify(frameData, replacer));
this.postMessage({
type: 'selected',
data: frameDataToJSON,
});
break;
case 'frames': // get frames list
const skip = data.skip;
const limit = data.limit;
const filter = data.filter;
const framesData = wg.frames(filter, skip, limit);
const framesDataToJSON = JSON.parse(JSON.stringify(framesData, replacer));
this.postMessage({
type: 'frames',
data: framesDataToJSON,
});
break;
case 'process-data':
const loadData = wg.load(data.name, new Uint8Array(data.data));
this.postMessage({ type: 'processed', data: loadData });
break;
case 'process':
const f = data.file;
const reader = new FileReader();
reader.addEventListener('load', event => {
// XXX: this blocks the worker thread
const loadData = wg.load(f.name, new Uint8Array(event.target.result));
postMessage({ type: 'processed', data: loadData });
});
reader.readAsArrayBuffer(f);
break;
case 'check-filter':
const filterStr = data.filter;
const checkFilterRes = wg.lib.checkFilter(filterStr);
this.postMessage({ type: 'filter', data: checkFilterRes });
break;
}
if (data.type === 'reload-quick') {
if (wg.session) {
// TODO: this is a hack, we should be able to reload the session
const name = data.name;
const res = wg.session.load();
postMessage({ type: 'processed', name: name, data: res });
}
} else if (data.type === 'module-tree') {
const res = wg.list_modules();
// send it to the correct port
event.ports[0].postMessage({
result: JSON.parse(JSON.stringify(res, replacer)),
});
} else if (data.type === 'module-prefs') {
const res = wg.list_prefs(data.name);
// send it to the correct port
event.ports[0].postMessage({
result: JSON.parse(JSON.stringify(res, replacer)),
});
} else if (data.type === 'upload-file') {
const f = data.file;
const reader = new FileReader();
reader.addEventListener('load', e => {
// XXX: this blocks the worker thread
const path = '/uploads/' + f.name;
wg.lib.FS.writeFile(path, Buffer.from(e.target.result));
event.ports[0].postMessage({ result: path });
});
reader.readAsArrayBuffer(f);
} else if (data.type === 'update-pref') {
try {
console.log(`set_pref(${data.module}, ${data.key}, ${data.value})`);
wg.set_pref(data.module, data.key, data.value);
event.ports[0].postMessage({ result: 'ok' });
} catch (e) {
console.error(
`set_pref(${data.module}, ${data.key}, ${data.value}) failed: ${e.message}`
);
event.ports[0].postMessage({ error: e.message });
}
} else if (data.type === 'apply-prefs') {
console.log(`apply_prefs()`);
wg.apply_prefs();
event.ports[0].postMessage({ result: 'ok' });
}
};

View File

@@ -1,20 +1,51 @@
<script setup lang="ts">
import { ConfigProvider } from 'ant-design-vue/lib';
import { usePrimaryColor } from '@/hooks/useTheme';
import zhCN from 'ant-design-vue/lib/locale/zh_CN';
import enUS from 'ant-design-vue/lib/locale/en_US';
import { onBeforeMount, ref, watch } from 'vue';
import { message } from 'ant-design-vue/es';
import zhCN from 'ant-design-vue/es/locale/zh_CN';
import enUS from 'ant-design-vue/es/locale/en_US';
import { usePrefersColorScheme, viewTransitionTheme } from 'antdv-pro-layout';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import { ref, watch } from 'vue';
import advancedFormat from 'dayjs/plugin/advancedFormat';
import useLayoutStore from '@/store/modules/layout';
import useAppStore from '@/store/modules/app';
import useI18n from '@/hooks/useI18n';
import { CACHE_LOCAL_PROCONFIG } from './constants/cache-keys-constants';
import { localRemove } from './utils/cache-local-utils';
const { t, currentLocale } = useI18n();
const appStore = useAppStore();
const { themeConfig, initPrimaryColor, changeConf } = useLayoutStore();
dayjs.extend(advancedFormat);
// dayjs.locale('zh-cn'); // 默认中文
let locale = ref(enUS); // 国际化初始中文
dayjs.locale('zh-cn'); // 默认中文
usePrimaryColor(); // 载入用户自定义主题色
// 偏好设置
const colorScheme = usePrefersColorScheme();
watch(
() => colorScheme.value,
themeMode => {
viewTransitionTheme(() => {
changeConf('theme', themeMode);
});
}
);
let locale = ref(zhCN); // 国际化初始中文
onBeforeMount(() => {
// 全局message提示
message.config({
top: '100px', // 距离顶部位置100px
duration: 3,
maxCount: 15,
});
initPrimaryColor();
localRemove(CACHE_LOCAL_PROCONFIG);
// 输出应用版本号
const appStore = useAppStore();
console.info(
`%c ${t('common.desc')} %c ${appStore.appCode} - ${appStore.appVersion} `,
'color: #fadfa3; background: #030307; padding: 4px 0;',
'color: #030307; background: #fadfa3; padding: 4px 0;'
);
});
// 国际化切换语言
function fnChangeLocale(v: string) {
@@ -35,22 +66,15 @@ fnChangeLocale(currentLocale.value);
watch(currentLocale, val => {
fnChangeLocale(val);
});
// 输出应用版本号
console.info(
`%c ${t('common.title')} %c ${appStore.appCode} - ${appStore.appVersion} `,
'color: #fadfa3; background: #030307; padding: 4px 0;',
'color: #030307; background: #fadfa3; padding: 4px 0;'
);
</script>
<template>
<ConfigProvider :locale="locale">
<a-config-provider :theme="themeConfig" :locale="locale">
<RouterView />
</ConfigProvider>
</a-config-provider>
</template>
<style>
<style lang="css">
#app {
height: 100%;
}
@@ -61,10 +85,6 @@ body .ant-pro-basicLayout {
min-height: 100vh;
}
.ant-pro-sider {
z-index: 20;
}
.slide-left-enter-active,
.slide-left-leave-active,
.slide-right-enter-active,
@@ -87,56 +107,23 @@ body .ant-pro-basicLayout {
transform: translate(-2em, 0);
}
/**强制改表格边距 */
.ant-table.ant-table-small .ant-table-tbody > tr > td,
.ant-table.ant-table-small .ant-table-thead > tr > th {
padding: 6px !important;
::view-transition-old(root),
::view-transition-new(root) {
animation: none;
mix-blend-mode: normal;
}
/** ==== 表格头按钮区域 S === **/
/* 默认 */
.button-container {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: center;
[data-theme='dark']::view-transition-old(root) {
z-index: 1;
}
[data-theme='dark']::view-transition-new(root) {
z-index: 999;
}
.button-container > button,
.button-container > span {
margin-right: 12px;
margin-bottom: 12px;
::view-transition-old(root) {
z-index: 999;
}
.button-container > button:last-child,
.button-container > span:last-child {
margin-right: 0;
::view-transition-new(root) {
z-index: 1;
}
/* 平板端 */
@media (max-width: 992px) {
.button-container {
flex-direction: row;
align-items: flex-start;
align-items: left;
}
.button-container > button,
.button-container > span {
margin-right: 12px;
margin-bottom: 12px;
}
}
/* 手机端 */
@media (max-width: 576px) {
.button-container {
flex-direction: column;
align-items: flex-start;
align-items: left;
}
.button-container > button,
.button-container > span {
margin-right: 0px;
margin-bottom: 12px;
}
}
/** ==== 表格头按钮区域 E === **/
</style>

View File

@@ -1,55 +0,0 @@
import {
RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS,
RESULT_MSG_ERROR,
} from '@/constants/result-constants';
import { language, request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询配置详细
* @param tag 配置ID
* @returns object
*/
export async function getConfigInfo(tag: string) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = '${tag}'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['config'][0]),
});
}
return result;
}
/**
* 修改配置
* @param data 配置对象
* @returns object
*/
export async function updateConfig(tag: string, data: Record<string, any>) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='${tag}'`,
method: 'put',
data: { data },
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data.data) {
let rows = result.data.data.affectedRows;
if (rows) {
delete result.data;
return result;
} else {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
}
return result;
}

View File

@@ -2,437 +2,8 @@ import {
RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS,
RESULT_MSG_ERROR,
RESULT_MSG_SUCCESS,
} from '@/constants/result-constants';
import { language, request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询配置参数标签栏
* @param neType 网元类型
* @returns object
*/
export async function getParamConfigTopTab(neType: string) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/param_config`,
method: 'get',
params: {
SQL: `SELECT top_display,top_tag,method FROM param_config WHERE ne_type = '${neType}'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
data = data['param_config'];
if (Array.isArray(data)) {
return Object.assign(result, {
data: parseObjLineToHump(data),
});
}
return Object.assign(result, {
data: [],
});
}
return result;
}
/**
* 查询配置参数标签栏对应信息
* @param neType 网元类型
* @param topTag
* @param neId
* @returns object { wrRule, dataArr }
*/
async function getParamConfigInfo(
neType: string,
topTag: string,
neId: string
) {
return await Promise.allSettled([
// 获取参数规则
request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/param_config`,
method: 'get',
params: {
SQL: `SELECT param_json FROM param_config WHERE ne_type = '${neType}' AND top_tag='${topTag}'`,
},
timeout: 1_000,
}),
// 获取对应信息
request({
url: `/api/rest/systemManagement/v1/elementType/${neType.toLowerCase()}/objectType/config/${topTag}`,
method: 'get',
params: {
ne_id: neId,
},
timeout: 1_000,
}),
]).then(resArr => {
let wrRule: Record<string, any> = {};
// 规则数据
if (resArr[0].status === 'fulfilled') {
const itemV = resArr[0].value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data?.data)
) {
let itemData = itemV.data.data;
const data = itemData[0]['param_config'];
if (Array.isArray(data)) {
const v = data[0]['param_json'];
try {
itemData = parseObjLineToHump(JSON.parse(v));
wrRule = itemData;
} catch (error) {
console.error(error);
}
}
}
}
let dataArr: Record<string, any>[] = [];
// 对应信息
if (resArr[1].status === 'fulfilled') {
const itemV = resArr[1].value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data?.data)
) {
let itemData = itemV.data.data;
dataArr = parseObjLineToHump(itemData);
}
}
return { wrRule, dataArr };
});
}
/**
* 查询配置参数标签栏对应信息-表格处理
* @param neType 网元类型
* @param topTag
* @param neId
* @returns object
*/
export async function getParamConfigInfoTable(
neType: string,
topTag: string,
neId: string
) {
const { wrRule, dataArr } = await getParamConfigInfo(neType, topTag, neId);
// UPF参数不统一
// if (neType === 'UPF') {
// if (Reflect.has(wrRule, 'list')) {
// for (const arr of wrRule['list']) {
// arr['name'] = parseFirstLower(arr['name']);
// }
// for (const item of dataArr) {
// for (const k in item) {
// item[parseFirstLower(k)] = item[k];
// Reflect.deleteProperty(item, k);
// }
// }
// }
// if (Reflect.has(wrRule, 'array')) {
// for (const arr of wrRule['array']) {
// if (Array.isArray(arr['array'])) {
// for (const child of arr['array']) {
// child['name'] = parseFirstLower(child['name']);
// }
// }
// arr['name'] = parseFirstLower(arr['name']);
// }
// for (const item of dataArr) {
// for (const k in item) {
// // 处理子列表
// if (Array.isArray(item[k])) {
// for (const child of item[k]) {
// for (const childKey in child) {
// child[parseFirstLower(childKey)] = child[childKey];
// Reflect.deleteProperty(child, childKey);
// }
// }
// }
// item[parseFirstLower(k)] = item[k];
// Reflect.deleteProperty(item, k);
// }
// }
// }
// }
// 拼装数据
const result = {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: {
type: 'list' as 'list' | 'array',
data: [] as any[],
dataRule: {},
columns: [] as any[],
},
};
// kv单列表
if (Reflect.has(wrRule, 'list')) {
result.data.type = 'list';
const ruleArr = Object.freeze(wrRule['list']);
// 列表项数据
let dataList = [];
for (const item of dataArr) {
for (const key of Object.keys(item)) {
// 规则为准
for (const rule of ruleArr) {
if (rule['name'] === key) {
const ruleItem = Object.assign({ optional: 'true' }, rule, {
value: item[key],
});
dataList.push(ruleItem);
break;
}
}
}
}
result.data.data = dataList;
// 列表字段
result.data.columns = [
{
title: 'Key',
dataIndex: 'display',
align: 'left',
width: '30%',
},
{
title: 'Value',
dataIndex: 'value',
align: 'left',
width: '70%',
},
];
}
// 多列表
if (Reflect.has(wrRule, 'array')) {
result.data.type = 'array';
const ruleArr = Object.freeze(wrRule['array']);
// 列表项数据
const dataArray = [];
for (const item of dataArr) {
let record: Record<string, any> = {};
for (const key of Object.keys(item)) {
// 规则为准
for (const rule of ruleArr) {
if (rule['name'] === key) {
const ruleItem = Object.assign({ optional: 'true' }, rule, {
value: item[key],
});
record[ruleItem.name] = ruleItem;
break;
}
}
}
dataArray.push(record);
}
result.data.data = dataArray;
// 无数据时,用于新增
let dataRule: Record<string, any> = {};
for (const rule of ruleArr) {
dataRule[rule.name] = rule;
}
result.data.dataRule = dataRule;
// 列表字段
const columns: Record<string, any>[] = [];
for (const rule of ruleArr) {
columns.push({
title: rule.display,
dataIndex: rule.name,
align: 'left',
width: 5,
});
}
result.data.columns = columns;
}
return result;
}
/**
* 查询配置参数标签栏对应信息-表单结构处理
* @param neType 网元类型
* @param topTag
* @param neId
* @returns object
*/
export async function getParamConfigInfoForm(
neType: string,
topTag: string,
neId: string
) {
const { wrRule, dataArr } = await getParamConfigInfo(neType, topTag, neId);
// 拼装数据
const result = {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: {
type: 'list' as 'list' | 'array',
data: [] as Record<string, any>[],
dataRule: {},
},
};
// kv单列表
if (Reflect.has(wrRule, 'list')) {
result.data.type = 'list';
const ruleArr = Object.freeze(wrRule['list']);
// 列表项数据
const dataList = [];
for (const item of dataArr) {
for (const key in item) {
// 规则为准
for (const rule of ruleArr) {
if (rule['name'] === key) {
const ruleItem = Object.assign({ optional: 'true' }, rule, {
value: item[key],
});
dataList.push(ruleItem);
break;
}
}
}
}
result.data.data = dataList;
}
// 多列表
if (Reflect.has(wrRule, 'array')) {
result.data.type = 'array';
const ruleArr = Object.freeze(wrRule['array']);
// 列表项数据
const dataArray = [];
for (const item of dataArr) {
const index = item['index'];
let record: Record<string, any>[] = [];
for (const key in item) {
// 规则为准
for (const rule of ruleArr) {
if (rule['name'] === key) {
const ruleItem = Object.assign({ optional: 'true' }, rule, {
value: item[key],
});
record.push(ruleItem);
break;
}
}
}
dataArray.push({ title: `Index-${index}`, key: index, record });
}
result.data.data = dataArray;
// 无数据时,用于新增
result.data.dataRule = { title: `Index-0`, key: 0, record: ruleArr };
}
return result;
}
/**
* 查询配置参数标签栏对应信息子节点
* @param neType 网元类型
* @param topTag
* @param neId
* @param loc 子节点index/字段) 1/dnnList
* @returns
*/
export async function getParamConfigInfoChild(
neType: string,
topTag: string,
neId: string,
loc: string
) {
// 发起请求
const result = await request({
url: `/api/rest/systemManagement/v1/elementType/${neType.toLowerCase()}/objectType/config/${topTag}`,
method: 'get',
params: {
ne_id: neId,
loc: loc,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
return Object.assign(result, {
data: parseObjLineToHump(result.data.data),
});
}
return result;
}
/**
* 修改配置参数标签栏对应信息
* @param args 对象 {neType,neId,topTag,loc}
* @param data 对象 {修改的数据kv}
* @returns object
*/
export function updateParamConfigInfo(
type: 'list' | 'array',
args: Record<string, any>,
data: Record<string, any>
) {
let url = `/api/rest/systemManagement/v1/elementType/${args.neType.toLowerCase()}/objectType/config/${
args.topTag
}?ne_id=${args.neId}`;
// 多列表需要loc
if (type === 'array') {
url += `&loc=${args.loc}`;
}
return request({
url,
method: 'put',
data: data,
});
}
/**
* 新增配置参数标签栏对应信息
* @param args 对象 {neType,neId,topTag,loc}
* @param data 行记录对象
* @returns object
*/
export function addParamConfigInfo(
args: Record<string, any>,
data: Record<string, any>
) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${args.neType.toLowerCase()}/objectType/config/${
args.topTag
}?ne_id=${args.neId}&loc=${args.loc}`,
method: 'post',
data: data,
});
}
/**
* 删除配置参数标签栏对应信息
* @param args 对象 {neType,neId,topTag,loc}
* loc 多层表的定位信息{index0}/{paraName1}/{index1}
* @param data 行记录对象
* @returns object
*/
export function delParamConfigInfo(args: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${args.neType.toLowerCase()}/objectType/config/${
args.topTag
}?ne_id=${args.neId}&loc=${args.loc}`,
method: 'delete',
});
}
/**
* 更新网元配置重新载入
@@ -462,3 +33,53 @@ export async function updateNeConfigReload(neType: string, neId: string) {
}
return result;
}
/**
* 从参数配置PCF中获取对应信息提供给PCC用户策略输入框
* @param neId
* @returns object {pccRules,sessionRules,qosTemplate,headerEnrichTemplate,serviceAreaRestriction}
*/
export async function getPCCRule(neId: any) {
const paramNameArr = [
'pccRules',
'sessionRules',
'qosTemplate',
'headerEnrichTemplate',
'serviceAreaRestriction',
];
const reqArr = [];
for (const paramName of paramNameArr) {
reqArr.push(
request({
url: `/ne/config/data`,
params: { neType: 'PCF', neId, paramName },
method: 'get',
})
);
}
return await Promise.allSettled(reqArr).then(resArr => {
// 规则数据
const obj: any = {};
resArr.forEach((item, i: number) => {
if (item.status === 'fulfilled') {
const res = item.value;
if (res.code === RESULT_CODE_SUCCESS && Array.isArray(res.data)) {
const key = paramNameArr[i];
obj[key] = res.data.map((item: any) => {
if ('qosTemplate' === key) {
return { value: item.qosId, label: item.qosId };
}
if ('headerEnrichTemplate' === key) {
return { value: item.templateName, label: item.templateName };
}
if ('serviceAreaRestriction' === key) {
return { value: item.name, label: item.name };
}
return { value: item.ruleId, label: item.ruleId };
});
}
}
});
return obj;
});
}

View File

@@ -1,72 +0,0 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询软件列表
* @param query 查询参数
* @returns object
*/
export async function listLicense(query: Record<string, any>) {
let totalSQL = 'select count(id) as total from ne_license ';
let rowsSQL = ' select * from ne_license ';
// 查询
let querySQL = 'where 1=1';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` order by created_at desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/ne_license`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + limtSql,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['ne_license'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
/**
* 上传文件
* @param data 表单数据对象
* @returns object
*/
export function uploadLicense(data: FormData) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.get(
'nfType'
)}/objectType/license?neId=${data.get('nfId')}`,
method: 'post',
data,
dataType: 'form-data',
timeout: 180_000,
});
}

View File

@@ -5,6 +5,7 @@ import {
} from '@/constants/result-constants';
import { language, request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { NE_TYPE_LIST } from '@/constants/ne-constants';
/**
* 查询网元列表
@@ -15,24 +16,6 @@ export async function listNeInfo(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from ne_info where 1=1 ';
let rowsSQL = 'select * from ne_info where 1=1 ';
// 系统特定顺序
const specificOrder = [
'OMC',
'MME',
'AMF',
'AUSF',
'UDM',
'SMF',
'PCF',
'UPF',
'NRF',
'NSSF',
'IMS',
'N3IWF',
'NEF',
'LMF',
];
// 查询
let querySQL = '';
if (query.neType) {
@@ -70,8 +53,8 @@ export async function listNeInfo(query: Record<string, any>) {
data.rows = itemData.map(v => parseObjLineToHump(v));
//通过sort进行冒泡排序
data.rows.sort((a: any, b: any) => {
const typeA = specificOrder.indexOf(a.neType);
const typeB = specificOrder.indexOf(b.neType);
const typeA = NE_TYPE_LIST.indexOf(a.neType);
const typeB = NE_TYPE_LIST.indexOf(b.neType);
if (typeA === -1) return 1; // 如果不在特定顺序中,排到后面
if (typeB === -1) return -1; // 如果不在特定顺序中,排到后面
return typeA - typeB;
@@ -156,7 +139,7 @@ export async function delNeInfo(data: Record<string, any>) {
/**
* 导出网元配置文件
* @param
* @param data data {neType neId}
* @returns bolb
*/
export function exportSet(data: Record<string, any>) {

View File

@@ -111,6 +111,7 @@ export async function sendNeSoftware(data: Record<string, any>) {
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'post',
timeout: 180_000,
repeatSubmit: false,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
@@ -130,6 +131,7 @@ export async function runNeSoftware(data: Record<string, any>) {
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'put',
timeout: 180_000,
repeatSubmit: false,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
@@ -149,6 +151,7 @@ export async function backNeSoftware(data: Record<string, any>) {
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'PATCH',
timeout: 180_000,
repeatSubmit: false,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {

View File

@@ -1,7 +1,7 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { parseDateToStr } from '@/utils/date-utils';
import { parseDateToStr, YYYY_MM_DD_HH_MM_SS } from '@/utils/date-utils';
import useUserStore from '@/store/modules/user';
/**
@@ -122,7 +122,7 @@ export function updateConfirm(data: Record<string, any>) {
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_time: parseDateToStr(time, YYYY_MM_DD_HH_MM_SS),
ack_user: userName,
ack_state: '1',
},
@@ -145,7 +145,7 @@ export function cancelConfirm(data: (string | number)[]) {
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_time: parseDateToStr(time, YYYY_MM_DD_HH_MM_SS),
ack_user: '',
ack_state: '0',
},
@@ -211,12 +211,12 @@ export function getPass() {
* @param data 鉴权对象
* @returns object
*/
export function clearAlarm(data: Record<string, any>) {
export function clearAlarm2(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
data: {
clear_time: parseDateToStr(time),
clear_time: parseDateToStr(time, YYYY_MM_DD_HH_MM_SS),
clear_type: '2',
alarm_status: '0',
clear_user: userName,
@@ -232,6 +232,19 @@ export function clearAlarm(data: Record<string, any>) {
});
}
/**
* 清除告警信息
* @param ids 记录ID
* @returns object
*/
export function clearAlarm(ids: string[]) {
return request({
url: `/neData/alarm/clear`,
method: 'PUT',
data: { ids },
});
}
/**
* 手工同步
* @param data 鉴权对象
@@ -241,6 +254,7 @@ export function listSync() {
return request({
url: `/api/rest/faultManagement/v1/elementType/all/objectType/alarms`,
method: 'get',
timeout: 180_000,
});
}
@@ -294,7 +308,7 @@ export async function exportAll(query: Record<string, any>) {
* @returns bolb
*/
export async function origGet() {
let totalSQL = `select count(*) as value,orig_severity as name from alarm group by orig_severity`;
let totalSQL = `select count(*) as value,orig_severity as name from alarm WHERE alarm_status='1' and orig_severity!='Event' group by orig_severity`;
// 发起请求
const result = await request({
@@ -329,10 +343,10 @@ export async function origGet() {
* @returns object
*/
export async function top3Sel(filterFlag?: string) {
let filter = ` WHERE orig_severity='${filterFlag}'`;
if (!filterFlag) filter = '';
let filter = ` WHERE alarm_status='1'and orig_severity='${filterFlag}'`;
if (!filterFlag) filter = "WHERE alarm_status='1'";
let top3SQL = `select count(*) as value,ne_type as name from alarm ${filter} group by ne_type ORDER BY value desc limit 0,3 `;
let top3SQL = `select count(*) as value,ne_type as name from alarm ${filter} and orig_severity!='Event' group by ne_type ORDER BY value desc limit 0,3 `;
// 发起请求
const result = await request({
@@ -359,3 +373,137 @@ export async function top3Sel(filterFlag?: string) {
}
return result;
}
export async function alarmDashGetAct() {
let totalSQL = `select count(*) as total from alarm where alarm_status='1' `;
let rowsSQL = `select ne_type,alarm_id,alarm_title,orig_severity,event_time from alarm WHERE alarm_status='1' and orig_severity!='Event' order by event_time desc limit 0,10 `;
// 查询
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm`,
method: 'get',
params: {
SQL: totalSQL,
rowsSQL: rowsSQL,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['alarm'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
export async function alarmDashGetHis() {
let totalSQL = `select count(*) as total from alarm where alarm_status='0' `;
let rowsSQL = `select ne_type,alarm_id,alarm_title,orig_severity,event_time from alarm WHERE alarm_status='0' and orig_severity!='Event' order by event_time desc limit 0,10 `;
// 查询
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm`,
method: 'get',
params: {
SQL: totalSQL,
rowsSQL: rowsSQL,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['alarm'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
export async function getAlarmTrend(params: any) {
const days = Number(params.days || 1);
let groupFormat = days === 1 ? '%H:00' : '%Y-%m-%d';
let timeCondition = days === 1
? `event_time >= DATE_SUB(NOW(), INTERVAL 1 DAY)`
: `event_time >= DATE_SUB(CURDATE(), INTERVAL ${days} DAY)`;
let totalSQL = `select count(*) as total from alarm where alarm_status='0' `;
let rowsSQL = ` SELECT
DATE_FORMAT(event_time, '${groupFormat}') AS time,
SUM(CASE WHEN orig_severity='Critical' THEN 1 ELSE 0 END) AS Critical,
SUM(CASE WHEN orig_severity='Major' THEN 1 ELSE 0 END) AS Major,
SUM(CASE WHEN orig_severity='Minor' THEN 1 ELSE 0 END) AS Minor,
SUM(CASE WHEN orig_severity='Warning' THEN 1 ELSE 0 END) AS Warning
FROM alarm
WHERE alarm_status='0'
AND ${timeCondition}
GROUP BY time
ORDER BY time ASC `;
// 查询
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm`,
method: 'get',
params: {
SQL: totalSQL,
rowsSQL: rowsSQL,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['alarm'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}

View File

@@ -0,0 +1,122 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询列表
* @param query 查询参数
* @returns object
*/
export async function listAct(query: Record<string, any>) {
let totalSQL = `select count(*) as total from alarm_event where 1=1 `;
let rowsSQL = `select * from alarm_event where 1=1 `;
// 查询
let querySQL = '';
if (query.alarmCode) {
querySQL += ` and alarm_code = '${query.alarmCode}' `;
}
if (query.alarmType) {
querySQL += ` and alarm_type = '${query.alarmType}' `;
}
if (query.pvFlag) {
querySQL += ` and pv_flag = '${query.pvFlag}' `;
}
if (query.neId) {
querySQL += ` and ne_id like '%${query.neId}%' `;
}
if (query.neName) {
querySQL += ` and ne_name like '%${query.neName}%' `;
}
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
if (query.beginTime && query.endTime) {
querySQL += ` and event_time BETWEEN '${query.beginTime}' and ' ${query.endTime}'`;
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` order by event_time desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm_event`,
method: 'get',
params: {
SQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + limtSql,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['alarm_event'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
/**
* 事件告警导出
* @param query 查询参数
* @returns bolb
*/
export async function exportAll(query: Record<string, any>) {
let rowsSQL = `select * from alarm_event where 1=1`;
// 查询
let querySQL = '';
querySQL += query.alarm_code
? ` and alarm_code = '${query.alarm_code}' `
: '';
querySQL += query.alarm_type
? ` and alarm_type = '${query.alarm_type}' `
: '';
querySQL += query.pv_flag ? ` and pv_flag = '${query.pv_flag}' ` : '';
querySQL += query.orig_severity
? ` and orig_severity in('${query.orig_severity}' )`
: '';
querySQL += query.ne_id ? ` and ne_id like '%${query.ne_id}%' ` : '';
querySQL += query.ne_name ? ` and ne_name like '%${query.ne_name}%' ` : '';
querySQL += query.ne_type ? ` and ne_type like '%${query.ne_type}%' ` : '';
querySQL +=
query.beginTime && query.endTime
? ` and event_time BETWEEN '${query.beginTime}' and ' ${query.endTime}'`
: '';
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm_event`,
method: 'get',
params: {
rowsSQL: rowsSQL + querySQL,
},
});
if (result.code === RESULT_CODE_SUCCESS) {
let v = result.data.data[0];
const vArr = parseObjLineToHump(v['alarm_event']);
result.data = vArr == null ? [] : vArr;
}
return result;
}

View File

@@ -63,7 +63,11 @@ export async function getAlarmSet() {
}
}
if (Object.keys(resultData).length === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: {} };
return {
code: RESULT_CODE_ERROR,
msg: RESULT_MSG_ERROR[language],
data: {},
};
}
return {
code: RESULT_CODE_SUCCESS,
@@ -117,7 +121,11 @@ export async function updateAlarmSet(data: Record<string, any>) {
}
// 无变更时
if (resultNum === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
return {
code: RESULT_CODE_ERROR,
msg: RESULT_MSG_ERROR[language],
data: 0,
};
}
return {
code: RESULT_CODE_SUCCESS,
@@ -166,11 +174,10 @@ export async function getForwardSet() {
*/
export async function updateForwardSet(data: Record<string, any>) {
// return false;
console.log(data)
let obj:any=[
{interface:"Email",to_user:data.emailObj},
{interface:"SMS",to_user:data.smsObj}
]
let obj: any = [
{ interface: 'Email', to_user: data.emailObj },
{ interface: 'SMS', to_user: data.smsObj },
];
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='forwardAlarm'`,
method: 'put',

View File

@@ -1,7 +1,7 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { parseDateToStr } from '@/utils/date-utils';
import { parseDateToStr, YYYY_MM_DD_HH_MM_SS } from '@/utils/date-utils';
import useUserStore from '@/store/modules/user';
/**
@@ -79,7 +79,7 @@ export function updateConfirm(data: Record<string, any>) {
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_time: parseDateToStr(time, YYYY_MM_DD_HH_MM_SS),
ack_user: userName,
ack_state: '1',
},
@@ -101,7 +101,7 @@ export function cancelConfirm(data: (string | number)[]) {
var time = new Date();
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_time: parseDateToStr(time, YYYY_MM_DD_HH_MM_SS),
ack_user: '',
ack_state: '0',
},

View File

@@ -1,29 +1,14 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseDateToStr } from '@/utils/date-utils';
import { NE_TYPE_LIST } from '@/constants/ne-constants';
/**
* 查询公告列表
* @param query 查询参数
* @returns object
*/
export async function listMain() {
// 系统特定顺序
const specificOrder = [
'OMC',
'MME',
'AMF',
'AUSF',
'UDM',
'SMF',
'PCF',
'UPF',
'NRF',
'NSSF',
'IMS',
'N3IWF',
'NEF',
'LMF',
];
const result = await request({
url: '/api/rest/systemManagement/v1/elementType/all/objectType/systemState',
method: 'get',
@@ -39,7 +24,6 @@ export async function listMain() {
const serialNum = (value as any).serialNum;
const version = (value as any).version;
const errCode = systemState && systemState['errorCode'];
var time = new Date();
// console.log(key, value);
@@ -59,7 +43,7 @@ export async function listMain() {
ipAddress,
serialNum,
name: key.split('/').join('_'),
expiryDate:'-',
expiryDate: '-',
status: 'Abnormal',
};
}
@@ -67,8 +51,8 @@ export async function listMain() {
});
//通过sort进行冒泡排序
mergedData.sort((a: any, b: any) => {
const typeA = specificOrder.indexOf(a.name.split('_')[0]);
const typeB = specificOrder.indexOf(b.name.split('_')[0]);
const typeA = NE_TYPE_LIST.indexOf(a.name.split('_')[0]);
const typeB = NE_TYPE_LIST.indexOf(b.name.split('_')[0]);
if (typeA === -1) return 1; // 如果不在特定顺序中,排到后面
if (typeB === -1) return -1; // 如果不在特定顺序中,排到后面
return typeA - typeB;
@@ -104,5 +88,6 @@ export function getSysConf() {
return request({
url: `/sys-conf`,
method: 'get',
whithToken: false,
});
}

View File

@@ -0,0 +1,95 @@
import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';
/**
* 获取下拉框数据
* @returns object
*/
export function getBakFile() {
return request({
url: '/lm/table/list',
method: 'get',
});
}
/**
* 获取对应类型的文件列表
* @param query 查询参数
* @returns object
*/
export function getBakFileList(query: Record<string, any>) {
return request({
url: '/lm/file/list',
method: 'get',
params: query,
});
}
/**
* 下载远端文件
* @param query 查询参数
* @returns object
*/
export function downFile(query: Record<string, any>) {
return request({
url: `/lm/file/${query.fileName}`,
method: 'get',
params: query,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 删除远端获取文件
* @param query 查询参数
* @returns object
*/
export function delFile(query: Record<string, any>) {
return request({
url: `/lm/file/${query.fileName}`,
method: 'delete',
params: query,
});
}
/**
* 更新FTP信息
* @param data 数据
* @returns object
*/
export function updateFTPInfo(data: Record<string, any>) {
return request({
url: `/lm/table/ftp`,
method: 'post',
data: data,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
});
}
/**
* 获取FTP信息
* @param data 数据
* @returns object
*/
export function getFTPInfo() {
return request({
url: `/lm/table/ftp`,
method: 'get',
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
});
}
/**
* 发送FTP文件
* @param data 数据
* @returns object
*/
export function putFTPInfo(filePath: string, fileName: string) {
return request({
url: `/lm/table/ftp`,
method: 'put',
data: { filePath, fileName },
});
}

View File

@@ -1,3 +1,5 @@
import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';
// 登录方法
@@ -7,6 +9,7 @@ export function login(data: Record<string, string>) {
method: 'post',
data: data,
whithToken: false,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
});
}
@@ -21,6 +24,7 @@ export function register(data: Record<string, any>) {
method: 'post',
data: data,
whithToken: false,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
});
}
@@ -57,3 +61,69 @@ export function getCaptchaImage() {
whithToken: false,
});
}
/**
* 登录认证源
* @returns object
*/
export function getLoginSource() {
return request({
url: '/auth/login/source',
method: 'GET',
whithToken: false,
});
}
/**
* LDAP登录
* @returns object
*/
export function loginLDAP(data: Record<string, string>) {
return request({
url: '/auth/login/ldap',
method: 'POST',
data: data,
whithToken: false,
});
}
/**
* SMTP登录
* @returns object
*/
export function loginSMTP(data: Record<string, string>) {
return request({
url: '/auth/login/smtp',
method: 'POST',
data: data,
whithToken: false,
});
}
/**
* 登录认证源OAuth2跳转登录URL
* @returns object
*/
export function loginOAuth2URL(state: string): string {
// 兼容旧前端可改配置文件
const baseUrl = import.meta.env.PROD
? sessionGet('baseUrl') || import.meta.env.VITE_API_BASE_URL
: import.meta.env.VITE_API_BASE_URL;
return `${baseUrl}/auth/login/oauth2/authorize?state=${state}`;
}
/**
* 登录认证源OAuth2认证登录
* @returns object
*/
export function loginOAuth2Token(code: string, state: string) {
return request({
url: '/auth/login/oauth2/token',
method: 'POST',
data: {
code,
state,
},
whithToken: false,
});
}

View File

@@ -6,5 +6,6 @@ export function getLoad(query: Record<string, any>) {
url: '/monitor/load',
method: 'get',
params: query,
timeout: 60_000,
});
}

View File

@@ -1,93 +0,0 @@
import {
RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS,
RESULT_MSG_ERROR,
} from '@/constants/result-constants';
import { language, request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询用户会话列表
* @param query 查询参数
* @returns object
*/
export async function listSession(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from session where 1=1 ';
let rowsSQL = 'select * from session where 1=1 ';
// 查询
let querySQL = '';
if (query.accountId) {
querySQL += ` and account_id like '%${query.accountId}%' `;
}
if (query.ip) {
querySQL += ` and host like '%${query.ip}%' `;
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` limit ${pageNum},${query.pageSize} `;
// 排序
let sortSql = ' order by login_time ';
if (query.sortOrder === 'desc') {
sortSql += ' desc ';
} else {
sortSql += ' asc ';
}
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/session`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + sortSql + limtSql,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['session'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
/**
* 强退用户会话
* @param tokenId 授权标识
* @returns object
*/
export async function logoutSession(id: string) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/session?WHERE=id='${id}'`,
method: 'delete',
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data.data) {
let rows = result.data.data.affectedRows;
if (rows) {
delete result.data;
return result;
} else {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
}
return result;
}

View File

@@ -5,5 +5,6 @@ export function getSystemInfo() {
return request({
url: '/monitor/system-info',
method: 'get',
timeout: 60_000,
});
}

67
src/api/ne/neConfig.ts Normal file
View File

@@ -0,0 +1,67 @@
import { request } from '@/plugins/http-fetch';
/**
* 网元参数配置可用属性值列表指定网元类型全部无分页
* @param query 查询参数
* @returns object
*/
export function getAllNeConfig(neType: string, neId: string) {
return request({
url: `/ne/config/list/${neType}`,
method: 'get',
params: { neId },
timeout: 60_000,
});
}
/**
* 网元参数配置数据信息
* @param params 数据 {neType,neId,paramName}
* @returns object
*/
export function getNeConfigData(params: Record<string, any>) {
return request({
url: `/ne/config/data`,
params,
method: 'get',
});
}
/**
* 网元参数配置数据更新
* @param data 数据 {neType,neId,paramName:"参数名",paramData:{参数},loc:"层级index仅array"}
* @returns object
*/
export function editNeConfigData(data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'put',
data: data,
});
}
/**
* 网元参数配置数据新增array
* @param data 数据 {neType,neId,paramName:"参数名",paramData:{参数},loc:"层级index"}
* @returns object
*/
export function addNeConfigData(data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'post',
data: data,
});
}
/**
* 网元参数配置数据删除array
* @param params 数据 {neType,neId,paramName:"参数名",loc:"层级index"}
* @returns object
*/
export function delNeConfigData(params: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'delete',
params,
});
}

View File

@@ -0,0 +1,83 @@
import { request } from '@/plugins/http-fetch';
/**
* 网元配置文件备份记录列表
* @param query 查询参数
* @returns object
*/
export function listNeConfigBackup(query: Record<string, any>) {
return request({
url: '/ne/config/backup/list',
method: 'get',
params: query,
});
}
/**
* 网元配置文件备份记录修改
* @param data 数据 { id, name, remark }
* @returns object
*/
export function updateNeConfigBackup(data: Record<string, any>) {
return request({
url: '/ne/config/backup',
method: 'put',
data: data,
});
}
/**
* 网元配置文件备份记录下载
* @param id 记录ID
* @returns object
*/
export async function downNeConfigBackup(id: string) {
return await request({
url: '/ne/config/backup/download',
method: 'get',
params: { id },
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 网元配置文件备份记录删除
* @param id 记录ID
* @returns object
*/
export async function delNeConfigBackup(id: string) {
return request({
url: '/ne/config/backup',
method: 'delete',
params: { id },
});
}
/**
* 网元配置文件备份导出
* @param data 数据 { neType, neId }
* @returns object
*/
export function exportNeConfigBackup(data: Record<string, any>) {
return request({
url: '/ne/config/backup/export',
method: 'post',
data: data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 网元配置文件备份导入
* @param data 数据 { neType, neId, type, path }
* @returns object
*/
export function importNeConfigBackup(data: Record<string, any>) {
return request({
url: '/ne/config/backup/import',
method: 'post',
data: data,
});
}

View File

@@ -1,3 +1,5 @@
import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';
/**
@@ -36,6 +38,8 @@ export function addNeInfo(data: Record<string, any>) {
url: `/ne/info`,
method: 'post',
data: data,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
timeout: 30_000,
});
}
@@ -49,6 +53,8 @@ export function updateNeInfo(data: Record<string, any>) {
url: `/ne/info`,
method: 'put',
data: data,
crypto: sessionGet(CACHE_SESSION_CRYPTO_API) !== 'false',
timeout: 30_000,
});
}
@@ -67,7 +73,7 @@ export function delNeInfo(infoIds: string | number) {
/**
* 查询网元列表全部无分页
* @param query 查询参数 neType neId bandStatus
* @param query 查询参数 neType neId bandStatus bandHost
* @returns object
*/
export function listAllNeInfo(query: Record<string, any>) {
@@ -99,7 +105,7 @@ export function stateNeInfo(neType: string, neId: string) {
* @param neId 网元ID
* @returns object
*/
export function getTypeAndIDNeInfo(neType: string, neId: string) {
export function getNeInfoByTypeAndID(neType: string, neId: string) {
return request({
url: '/ne/info/byTypeAndID',
method: 'get',
@@ -108,29 +114,72 @@ export function getTypeAndIDNeInfo(neType: string, neId: string) {
}
/**
* 网元端配置文件读取
* 网元端OAM配置文件读取
* @param neType 网元类型
* @param neId 网元ID
* @param filePath 不带文件时重新覆盖返回目录列表
* @returns object
*/
export function getConfigFile(neType: string, neId: string, filePath: string) {
export function getOAMFile(neType: string, neId: string) {
return request({
url: '/ne/info/configFile',
url: '/ne/info/oamFile',
method: 'get',
params: { neType, neId, filePath },
params: { neType, neId },
});
}
/**
* 网元端配置文件写入
* @param data neType网元类型 neId网元ID filePath文件 content内容 sync同步到网元
* @param neType 网元类型
* @param neId 网元ID
* @param content 用json对象
* @param sync 同步到网元
* @returns object
*/
export function saveConfigFile(data: Record<string, any>) {
export function saveOAMFile(data: Record<string, any>) {
return request({
url: `/ne/info/configFile`,
url: `/ne/info/oamFile`,
method: 'put',
data: data,
timeout: 60_000,
});
}
/**
* 网元端公共配置文件读取
* @returns object
*/
export function getPara5GFilee() {
return request({
url: '/ne/info/para5GFile',
method: 'get',
});
}
/**
* 网元端公共配置文件写入
* @param content txt内容为字符串 其他文件格式都用json对象
* @param syncNe 同步到网元端 NeType@ NeId
* @returns object
*/
export function savePara5GFile(data: Record<string, any>) {
return request({
url: `/ne/info/para5GFile`,
method: 'put',
data: data,
timeout: 60_000,
});
}
/**
* 网元服务操作
* @param data 对象 {neType,neId,action}
* @returns object
*/
export function serviceNeAction(data: Record<string, any>) {
return request({
url: `/ne/action/service`,
method: 'put',
data: data,
timeout: 60_000,
});
}

View File

@@ -27,41 +27,16 @@ export function getNeLicense(licenseId: string | number) {
}
/**
* 网元授权新增
* @param data 网元对象
* 网元neType和neID查询
* @param neType 网元类型
* @param neId 网元ID
* @returns object
*/
export function addNeLicense(data: Record<string, any>) {
export function getNeLicenseByTypeAndID(neType: string, neId: string) {
return request({
url: `/ne/license`,
method: 'post',
data: data,
});
}
/**
* 网元授权修改
* @param data 网元对象
* @returns object
*/
export function updateNeLicense(data: Record<string, any>) {
return request({
url: `/ne/license`,
method: 'put',
data: data,
});
}
/**
* 网元授权删除
* @param id 信息ID
* @returns object
*/
export function delNeLicense(licenseIds: string | number) {
return request({
url: `/ne/license/${licenseIds}`,
method: 'delete',
timeout: 60_000,
url: `/ne/license/byTypeAndID`,
method: 'get',
params: { neType, neId },
});
}
@@ -81,7 +56,7 @@ export function codeNeLicense(neType: string, neId: string) {
/**
* 网元授权激活授权文件替换
* @param data 网元对象
* @param data 网元对象 {"neType": "", "neId": "", "licensePath": "", "reload": true}
* @returns object
*/
export function changeNeLicense(data: Record<string, any>) {

View File

@@ -36,6 +36,7 @@ export function addNeSoftware(data: Record<string, any>) {
url: `/ne/software`,
method: 'post',
data: data,
repeatSubmit: false,
});
}
@@ -66,15 +67,14 @@ export function delNeSoftware(softwareIds: string | number) {
}
/**
* 网元软件包安装检查
* @param data 网元对象
* 网元软件包设为网元新版本
* @param data data { "version": "2.2404.18", "neType": "SMF", "name": "smf-r2.2404.18-ub22.deb"}
* @returns object
*/
export function checkInstallNeSoftware(data: Record<string, any>) {
export function newNeVersion(data: Record<string, any>) {
return request({
url: `/ne/software/checkInstall`,
url: `/ne/software/newNeVersion`,
method: 'post',
data: data,
timeout: 180_000,
});
}
}

View File

@@ -27,40 +27,15 @@ export function getNeVersion(versionId: string | number) {
}
/**
* 网元版本新增
* @param data 网元对象
* 网元版本操作
* @param data {neType,neId,preinput:{参数},action:"upgrade"}
* @returns object
*/
export function addNeVersion(data: Record<string, any>) {
export function operateNeVersion(data: Record<string, any>) {
return request({
url: `/ne/version`,
url: `/ne/version/operate`,
method: 'post',
data: data,
});
}
/**
* 网元版本修改
* @param data 网元对象
* @returns object
*/
export function updateNeVersion(data: Record<string, any>) {
return request({
url: `/ne/version`,
method: 'put',
data: data,
});
}
/**
* 网元版本删除
* @param id 信息ID
* @returns object
*/
export function delNeVersion(versionIds: string | number) {
return request({
url: `/ne/version/${versionIds}`,
method: 'delete',
timeout: 60_000,
timeout: 180_000,
});
}

View File

@@ -10,6 +10,7 @@ export function listAMFDataUE(query: Record<string, any>) {
url: '/neData/amf/ue/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
@@ -19,10 +20,111 @@ export function listAMFDataUE(query: Record<string, any>) {
* @returns object
*/
export function delAMFDataUE(ueIds: string | number) {
return request({
url: `/neData/amf/ue/${ueIds}`,
method: 'delete',
timeout: 60_000,
});
}
return request({
url: `/neData/amf/ue/${ueIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* AMF-UE会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportAMFDataUE(data: Record<string, any>) {
return request({
url: '/neData/amf/ue/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* AMF-接入基站信息列表
* @param query 查询参数 neId=001&id=1
* @returns object
*/
export function listAMFNblist(query: Record<string, any>) {
return request({
url: '/neData/amf/nb/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* AMF-接入基站状态信息列表
* @param query 查询参数 neId=001&state=1
* @returns object
*/
export function listAMFNbStatelist(query: Record<string, any>) {
return request({
url: '/neData/amf/nb/list-cfg',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* AMF-接入基站状态信息新增
* @param neId 网元ID
* @param data 数据 { "index": 1, "name": "Gnb", "address": "192.168.8.1", "position": "Area-B" }
* @returns object
*/
export function addAMFNbState(neId: string, data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'post',
data: {
neType: 'AMF',
neId: neId,
paramName: 'gnbList',
paramData: data,
loc: `${data.index}`,
},
});
}
/**
* AMF-接入基站状态信息修改
* @param neId 网元ID
* @param data 数据 { "index": 1, "name": "Gnb", "address": "192.168.8.1", "position": "Area-B" }
* @returns object
*/
export function editAMFNbState(neId: string, data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'put',
data: {
neType: 'AMF',
neId: neId,
paramName: 'gnbList',
paramData: data,
loc: `${data.index}`,
},
});
}
/**
* AMF-接入基站状态信息删除
* @param neId 网元ID
* @param index 数据index
* @returns object
*/
export function delAMFNbState(neId: string, index: string | number) {
return request({
url: `/ne/config/data`,
method: 'delete',
params: {
neType: 'AMF',
neId: neId,
paramName: 'gnbList',
loc: `${index}`,
},
});
}

68
src/api/neData/backup.ts Normal file
View File

@@ -0,0 +1,68 @@
import { request } from '@/plugins/http-fetch';
/**
* 备份文件-获取FTP配置
* @returns object
*/
export function getBackupFTP() {
return request({
url: '/neData/backup/ftp',
method: 'GET',
});
}
/**
* 备份文件-文件FTP发送
* @param data 对象
* @returns object
*/
export function pushBackupFTP(data: Record<string, any>) {
return request({
url: '/neData/backup/ftp',
method: 'POST',
data,
});
}
/**
* 备份文件-更新FTP配置
* @param data 对象
* @returns object
*/
export function updateBackupFTP(data: Record<string, any>) {
return request({
url: '/neData/backup/ftp',
method: 'PUT',
data,
});
}
/**
* 备份文件-导出OMC
* @returns object
*/
export function exportBackupOMC() {
return request({
url: '/neData/backup/export-omc',
method: 'POST',
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 备份文件-导入OMC
* @param filePath 备份文件上传返回的/upload 路径
* @returns object
*/
export function importBackupOMC(filePath: string) {
return request({
url: '/neData/backup/import-omc',
method: 'POST',
data: {
neType: 'OMC',
path: filePath,
},
timeout: 180_000,
});
}

View File

@@ -10,6 +10,7 @@ export function listIMSDataCDR(query: Record<string, any>) {
url: '/neData/ims/cdr/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
@@ -19,10 +20,24 @@ export function listIMSDataCDR(query: Record<string, any>) {
* @returns object
*/
export function delIMSDataCDR(cdrIds: string | number) {
return request({
url: `/neData/ims/cdr/${cdrIds}`,
method: 'delete',
timeout: 60_000,
});
}
return request({
url: `/neData/ims/cdr/${cdrIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* IMS-CDR会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportIMSDataCDR(data: Record<string, any>) {
return request({
url: '/neData/ims/cdr/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}

148
src/api/neData/ims_sub.ts Normal file
View File

@@ -0,0 +1,148 @@
import { request } from '@/plugins/http-fetch';
/**
* UDM签约用户重载数据
* @param neId 网元ID
* @returns object
*/
export function resetIMSSub(neId: string) {
return request({
url: `/ue/udm/imsuser/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* UDM签约用户列表
* @param query 查询参数
* @returns object
*/
export function listIMSSub(query: Record<string, any>) {
return request({
url: '/ue/udm/imsuser/list',
method: 'get',
params: query,
timeout: 30_000,
});
}
/**
* UDM签约用户信息
* @param neId 网元ID
* @param imsi IMSI
* @returns object
*/
export function getIMSSub(neId: string, imsi: string) {
return request({
url: `/ue/udm/imsuser/${neId}/${imsi}`,
method: 'get',
});
}
/**
* UDM签约用户新增
* @param data 签约对象
* @returns object
*/
export function addIMSSub(data: Record<string, any>) {
return request({
url: `/ue/udm/imsuser/${data.neId}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM签约用户批量新增
* @param data 签约对象
* @param num 数量
* @returns object
*/
export function batchAddIMSSub(data: Record<string, any>, num: number) {
return request({
url: `/ue/udm/imsuser/${data.neId}/${num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM签约用户修改
* @param data 签约对象
* @returns object
*/
// export function updateIMSSub(data: Record<string, any>) {
// return request({
// url: `/ue/udm/imsuser/${data.neId}`,
// method: 'put',
// data: data,
// timeout: 180_000,
// });
// }
/**
* UDM签约用户删除
* @param data 签约对象
* @returns object
*/
export function delIMSSub(neId: string, imsi_msisdn: string, tag: string) {
return request({
url: `/ue/udm/imsuser/${neId}/${imsi_msisdn}`,
method: 'delete',
params: { volte: tag },
timeout: 180_000,
});
}
/**
* UDM签约用户批量删除
* @param neId 网元ID
* @param imsi IMSI
* @param num 数量
* @returns object
*/
export function batchDelIMSSub(
neId: string,
imsi: string,
num: number,
tag: string
) {
return request({
url: `/ue/udm/imsuser/${neId}/${imsi}/${num}`,
method: 'delete',
params: { volte: tag },
timeout: 180_000,
});
}
/**
* UDM签约用户导出
* @param data 数据参数
* @returns bolb
*/
export function exportIMSSub(data: Record<string, any>) {
return request({
url: '/ue/udm/imsuser/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* UDM签约用户导入
* @param data 表单数据对象
* @returns object
*/
export function importIMSSub(data: Record<string, any>) {
return request({
url: `/ue/udm/imsuser/import`,
method: 'post',
data,
timeout: 180_000,
});
}

130
src/api/neData/mme.ts Normal file
View File

@@ -0,0 +1,130 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询MME-UE会话事件列表
* @param query 查询参数
* @returns object
*/
export function listMMEDataUE(query: Record<string, any>) {
return request({
url: '/neData/mme/ue/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* MME-UE会话删除
* @param id 信息ID
* @returns object
*/
export function delMMEDataUE(ueIds: string | number) {
return request({
url: `/neData/mme/ue/${ueIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* MME-UE会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportMMEDataUE(data: Record<string, any>) {
return request({
url: '/neData/mme/ue/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* MME-接入基站信息列表
* @param query 查询参数 neId=001&id=1
* @returns object
*/
export function listMMENblist(query: Record<string, any>) {
return request({
url: '/neData/mme/nb/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* MME-接入基站状态信息列表
* @param query 查询参数 neId=001&state=1
* @returns object
*/
export function listMMENbStatelist(query: Record<string, any>) {
return request({
url: '/neData/mme/nb/list-cfg',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* MME-接入基站状态信息新增
* @param neId 网元ID
* @param data 数据 { "index": 1, "name": "Enb", "address": "192.168.8.1", "position": "Area-B" }
* @returns object
*/
export function addMMENbState(neId: string, data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'post',
data: {
neType: 'MME',
neId: neId,
paramName: 'enbList',
paramData: data,
loc: `${data.index}`,
},
});
}
/**
* MME-接入基站状态信息修改
* @param neId 网元ID
* @param data 数据 { "index": 1, "name": "Enb", "address": "192.168.8.1", "position": "Area-B" }
* @returns object
*/
export function editMMENbState(neId: string, data: Record<string, any>) {
return request({
url: `/ne/config/data`,
method: 'put',
data: {
neType: 'MME',
neId: neId,
paramName: 'enbList',
paramData: data,
loc: `${data.index}`,
},
});
}
/**
* MME-接入基站状态信息删除
* @param neId 网元ID
* @param index 数据index
* @returns object
*/
export function delMMENbState(neId: string, index: string | number) {
return request({
url: `/ne/config/data`,
method: 'delete',
params: {
neType: 'MME',
neId: neId,
paramName: 'enbList',
loc: `${index}`,
},
});
}

View File

@@ -0,0 +1,30 @@
import { request } from '@/plugins/http-fetch';
/**
* 历史记录列表
* @param query 查询参数
* @returns object
*/
export function listNBState(query: Record<string, any>) {
return request({
url: '/neData/nb-state/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* 历史记录列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportNBState(data: Record<string, any>) {
return request({
url: '/neData/nb-state/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}

43
src/api/neData/sgwc.ts Normal file
View File

@@ -0,0 +1,43 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询SGWC-CDR会话事件
* @param query 查询参数
* @returns object
*/
export function listSGWCDataCDR(query: Record<string, any>) {
return request({
url: '/neData/sgwc/cdr/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* SGWC-CDR会话删除
* @param id 信息ID
* @returns object
*/
export function delSGWCDataCDR(cdrIds: string | number) {
return request({
url: `/neData/sgwc/cdr/${cdrIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* SGWC-CDR会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportSGWCDataCDR(data: Record<string, any>) {
return request({
url: '/neData/sgwc/cdr/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}

69
src/api/neData/smf.ts Normal file
View File

@@ -0,0 +1,69 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询SMF-CDR会话事件
* @param query 查询参数
* @returns object
*/
export function listSMFDataCDR(query: Record<string, any>) {
return request({
url: '/neData/smf/cdr/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* SMF-CDR会话删除
* @param id 信息ID
* @returns object
*/
export function delSMFDataCDR(cdrIds: string | number) {
return request({
url: `/neData/smf/cdr/${cdrIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* SMF-CDR会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportSMFDataCDR(data: Record<string, any>) {
return request({
url: '/neData/smf/cdr/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* SMF-在线订阅用户数量
* @param query 查询参数
* @returns object
*/
export function listSMFSubNum(neId: string) {
return request({
url: '/neData/smf/sub/num',
method: 'get',
params: { neId },
});
}
/**
* SMF-在线订阅用户列表信息
* @param query 查询参数
* @returns object
*/
export function listSMFSubList(query: Record<string, any>) {
return request({
url: '/neData/smf/sub/list',
method: 'get',
params: query,
});
}

43
src/api/neData/smsc.ts Normal file
View File

@@ -0,0 +1,43 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询SMSC-CDR会话事件
* @param query 查询参数
* @returns object
*/
export function listSMSCDataCDR(query: Record<string, any>) {
return request({
url: '/neData/smsc/cdr/list',
method: 'get',
params: query,
timeout: 60_000,
});
}
/**
* SMSC-CDR会话删除
* @param id 信息ID
* @returns object
*/
export function delSMSCDataCDR(cdrIds: string | number) {
return request({
url: `/neData/smsc/cdr/${cdrIds}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* SMSC-CDR会话列表导出
* @param data 查询列表条件
* @returns object
*/
export function exportSMSCDataCDR(data: Record<string, any>) {
return request({
url: '/neData/smsc/cdr/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}

156
src/api/neData/udm_auth.ts Normal file
View File

@@ -0,0 +1,156 @@
import { request } from '@/plugins/http-fetch';
/**
* UDM鉴权用户重载数据
* @param neId 网元ID
* @returns object
*/
export function resetUDMAuth(neId: string) {
return request({
url: `/neData/udm/auth/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* UDM鉴权用户列表
* @param query 查询参数
* @returns object
*/
export function listUDMAuth(query: Record<string, any>) {
return request({
url: '/neData/udm/auth/list',
method: 'get',
params: query,
timeout: 30_000,
});
}
/**
* UDM鉴权用户信息
* @param neId 网元ID
* @param imsi IMSI
* @returns object
*/
export function getUDMAuth(neId: string, imsi: string) {
return request({
url: `/neData/udm/auth/${neId}/${imsi}`,
method: 'get',
});
}
/**
* UDM鉴权用户新增
* @param data 鉴权对象
* @returns object
*/
export function addUDMAuth(data: Record<string, any>) {
return request({
url: `/neData/udm/auth/${data.neId}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户批量新增
* @param data 鉴权对象
* @param num 数量
* @returns object
*/
export function batchAddUDMAuth(data: Record<string, any>, num: number) {
return request({
url: `/neData/udm/auth/${data.neId}/${num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户修改
* @param data 鉴权对象
* @returns object
*/
export function updateUDMAuth(data: Record<string, any>) {
return request({
url: `/neData/udm/auth/${data.neId}`,
method: 'put',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户删除
* @param neId 网元ID
* @param imsi IMSI
* @returns object
*/
export function delUDMAuth(neId: string, imsi: string) {
return request({
url: `/neData/udm/auth/${neId}/${imsi}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM鉴权用户批量删除
* @param neId 网元ID
* @param imsi IMSI
* @param num 数量
* @returns object
*/
export function batchDelUDMAuth(neId: string, imsi: string, num: number) {
return request({
url: `/neData/udm/auth/${neId}/${imsi}/${num}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM鉴权用户导入
* @param data 表单数据对象
* @returns object
*/
export function importUDMAuth(data: Record<string, any>) {
return request({
url: `/neData/udm/auth/import`,
method: 'post',
data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户导出
* @param data 数据参数
* @returns bolb
*/
export function exportUDMAuth(data: Record<string, any>) {
return request({
url: '/neData/udm/auth/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* UDM鉴权用户导出DecAuth
* @param neId 网元ID
* @returns bolb
*/
export function exportUDMDecAuth(neId: string) {
return request({
url: `/neData/udm/auth/export-dec?neId=${neId}`,
method: 'get',
responseType: 'blob',
timeout: 180_000,
});
}

141
src/api/neData/udm_sub.ts Normal file
View File

@@ -0,0 +1,141 @@
import { request } from '@/plugins/http-fetch';
/**
* UDM签约用户重载数据
* @param neId 网元ID
* @returns object
*/
export function resetUDMSub(neId: string) {
return request({
url: `/neData/udm/sub/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* UDM签约用户列表
* @param query 查询参数
* @returns object
*/
export function listUDMSub(query: Record<string, any>) {
return request({
url: '/neData/udm/sub/list',
method: 'get',
params: query,
timeout: 30_000,
});
}
/**
* UDM签约用户信息
* @param neId 网元ID
* @param imsi IMSI
* @returns object
*/
export function getUDMSub(neId: string, imsi: string) {
return request({
url: `/neData/udm/sub/${neId}/${imsi}`,
method: 'get',
});
}
/**
* UDM签约用户新增
* @param data 签约对象
* @returns object
*/
export function addUDMSub(data: Record<string, any>) {
return request({
url: `/neData/udm/sub/${data.neId}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM签约用户批量新增
* @param data 签约对象
* @param num 数量
* @returns object
*/
export function batchAddUDMSub(data: Record<string, any>, num: number) {
return request({
url: `/neData/udm/sub/${data.neId}/${num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM签约用户修改
* @param data 签约对象
* @returns object
*/
export function updateUDMSub(data: Record<string, any>) {
return request({
url: `/neData/udm/sub/${data.neId}`,
method: 'put',
data: data,
timeout: 180_000,
});
}
/**
* UDM签约用户删除
* @param data 签约对象
* @returns object
*/
export function delUDMSub(neId: string, imsi: string) {
return request({
url: `/neData/udm/sub/${neId}/${imsi}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM签约用户批量删除
* @param neId 网元ID
* @param imsi IMSI
* @param num 数量
* @returns object
*/
export function batchDelUDMSub(neId: string, imsi: string, num: number) {
return request({
url: `/neData/udm/sub/${neId}/${imsi}/${num}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM签约用户导出
* @param data 数据参数
* @returns bolb
*/
export function exportUDMSub(data: Record<string, any>) {
return request({
url: '/neData/udm/sub/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* UDM签约用户导入
* @param data 表单数据对象
* @returns object
*/
export function importUDMSub(data: Record<string, any>) {
return request({
url: `/neData/udm/sub/import`,
method: 'post',
data,
timeout: 180_000,
});
}

142
src/api/neData/voip_auth.ts Normal file
View File

@@ -0,0 +1,142 @@
import { request } from '@/plugins/http-fetch';
/**
* UDM鉴权用户重载数据
* @param neId 网元ID
* @returns object
*/
export function resetUDMAuth(neId: string) {
return request({
url: `/ue/udm/voipauth/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* UDM鉴权用户列表
* @param query 查询参数
* @returns object
*/
export function listUDMAuth(query: Record<string, any>) {
return request({
url: '/ue/udm/voipauth/list',
method: 'get',
params: query,
timeout: 30_000,
});
}
/**
* UDM鉴权用户信息
* @param neId 网元ID
* @param userName 用户名
* @returns object
*/
export function getUDMAuth(neId: string, userName: string) {
return request({
url: `/ue/udm/voipauth/${neId}/${userName}`,
method: 'get',
});
}
/**
* UDM鉴权用户新增
* @param data 鉴权对象
* @returns object
*/
export function addUDMAuth(data: Record<string, any>) {
return request({
url: `/ue/udm/voipauth/${data.neId}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户批量新增
* @param data 鉴权对象
* @param num 数量
* @returns object
*/
export function batchAddUDMAuth(data: Record<string, any>, num: number) {
return request({
url: `/ue/udm/voipauth/${data.neId}/${num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户修改
* @param data 鉴权对象
* @returns object
*/
export function updateUDMAuth(data: Record<string, any>) {
return request({
url: `/ue/udm/voipauth/${data.neId}`,
method: 'put',
data: data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户删除
* @param neId 网元ID
* @param imsi IMSI
* @returns object
*/
export function delUDMAuth(neId: string, imsi: string) {
return request({
url: `/ue/udm/voipauth/${neId}/${imsi}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM鉴权用户批量删除
* @param neId 网元ID
* @param imsi IMSI
* @param num 数量
* @returns object
*/
export function batchDelUDMAuth(neId: string, imsi: string, num: number) {
return request({
url: `/ue/udm/voipauth/${neId}/${imsi}/${num}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* UDM鉴权用户导入
* @param data 表单数据对象
* @returns object
*/
export function importUDMAuth(data: Record<string, any>) {
return request({
url: `/ue/udm/voipauth/import`,
method: 'post',
data,
timeout: 180_000,
});
}
/**
* UDM鉴权用户导出
* @param data 数据参数
* @returns bolb
*/
export function exportUDMAuth(data: Record<string, any>) {
return request({
url: '/ue/udm/voipauth/export',
method: 'post',
data,
responseType: 'blob',
timeout: 180_000,
});
}

View File

@@ -1,138 +0,0 @@
import { request } from '@/plugins/http-fetch';
/**
* 签约鉴权导出
* @param query 查询参数
* @returns bolb
*/
export function exportAuth(query: Record<string, any>) {
return request({
url: '/ne/udm/auth/export',
method: 'post',
data: query,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 导入鉴权数据
* @param neId 网元ID
* @param data 表单数据对象
* @returns object
*/
export function importAuthData(data: FormData) {
return request({
url: `/ne/udm/auth/import`,
method: 'post',
data,
dataType: 'form-data',
timeout: 180_000,
});
}
/**
* 查询鉴权列表
* @param query 查询参数
* @returns object
*/
export function listAuth(query: Record<string, any>) {
return request({
url: '/ne/udm/auth/list',
method: 'get',
params: query,
});
}
/**
* 查询重新更新加载全部
* @param neId 网元ID
* @returns object
*/
export function loadAuth(neId: string) {
return request({
url: `/ne/udm/auth/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* 查询鉴权详细
* @param neId 网元ID
* @returns object
*/
export function getAuth(neId: string, imsi: string) {
return request({
url: `/ne/udm/auth/${neId}/${imsi}`,
method: 'get',
});
}
/**
* 修改鉴权
* @param data 鉴权对象
* @returns object
*/
export function updateAuth(data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${data.neId}`,
method: 'put',
data: data,
timeout: 180_000,
});
}
/**
* 新增鉴权
* @param data 鉴权对象
* @returns object
*/
export function addAuth(data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${data.neId}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* 批量新增鉴权
* @param data 鉴权对象
* @returns object
*/
export function batchAuth(data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${data.neID}/${data.num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* 删除鉴权
* @param data 鉴权对象
* @returns object
*/
export function delAuth(neId: string, imsi: string) {
return request({
url: `/ne/udm/auth/${neId}/${imsi}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* 批量删除鉴权
* @param data 鉴权对象
* @returns object
*/
export function batchDelAuth(data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${data.neID}/${data.imsi}/${data.num}`,
method: 'delete',
timeout: 180_000,
});
}

View File

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

View File

@@ -0,0 +1,51 @@
import { CACHE_SESSION_CRYPTO_API } from '@/constants/cache-keys-constants';
import { sessionGet } from '@/utils/cache-session-utils';
import { request } from '@/plugins/http-fetch';
/**
* 获取下拉框数据
* @returns object
*/
export function getBakFile() {
return request({
url: '/ue/table/list',
method: 'get',
});
}
/**
* 获取对应类型的文件列表
* @param query 查询参数
* @returns object
*/
export function getBakFileList(query: Record<string, any>) {
return request({
url: '/ue/file/list',
method: 'get',
params: query,
});
}
/**
* 下载远端文件
* @param query 查询参数
* @returns object
*/
export function downFile(query: Record<string, any>) {
return request({
url: `/ue/file/${query.fileName}`,
method: 'get',
params: query,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 删除远端获取文件
* @param query 查询参数
* @returns object
*/
export function delFile(query: Record<string, any>) {
return request({
url: `/ue/file/${query.fileName}`,
method: 'delete',
params: query,
});
}

View File

@@ -52,9 +52,11 @@ export async function listUENumByIMS(neId: String) {
method: 'get',
});
if (result.code === RESULT_CODE_SUCCESS) {
return Object.assign(result, {
data: result.data['ueNum'],
});
let num = result.data['ueNum'] || 0;
if (num === 0) {
num = result.data.data['ueNum'] || 0;
}
return Object.assign(result, { data: num });
}
// 模拟数据

View File

@@ -136,6 +136,7 @@ export async function batchUpdateRule(data: Record<string, any>) {
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
method: 'put',
data: data,
timeout: 60_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
@@ -164,6 +165,7 @@ export async function addRule(data: Record<string, any>) {
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
method: 'post',
data: data,
timeout: 60_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
@@ -186,6 +188,7 @@ export async function batchAddRule(data: Record<string, any>) {
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}`,
method: 'post',
data: data,
timeout: 60_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
@@ -209,10 +212,11 @@ export async function batchAddRule(data: Record<string, any>) {
* @param data 规则对象
* @returns object
*/
export function delRule(neId: string, data: Record<string, any>) {
export function delRule(neId: string, imsi: string) {
return request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${data.imsi}`,
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${imsi}`,
method: 'delete',
timeout: 60_000,
});
}
@@ -225,5 +229,6 @@ export async function batchDelRule(data: Record<string, any>) {
return request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/batch/${data.num}?neId=${data.neId}&imsi=${data.imsi}`,
method: 'delete',
timeout: 60_000,
});
}

View File

@@ -1,6 +1,5 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询列表
@@ -21,39 +20,68 @@ export async function listUEInfoBySMF(query: Record<string, any>) {
msg: result.msg,
};
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
const rows = parseObjLineToHump(result.data.data);
data.total = rows.length;
data.rows = rows;
if (result.code === RESULT_CODE_SUCCESS && result.data) {
if (result.data.total && result.data.data) {
data.total = result.data.total;
data.rows = result.data.data;
} else {
Object.assign(data, {
total: result.data.length,
rows: result.data,
});
}
}
// 模拟数据
// data.code = RESULT_CODE_SUCCESS;
// data.total = 2;
// data.rows = [
// {
// imsi: 'imsi-460029004200044',
// msisdn: 'msisdn-12346002044',
// imsi: 'imsi-460000100000090',
// msisdn: 'msisdn-12307550090',
// pduSessionInfo: [
// {
// activeTime: '2023-11-29 18:39:06',
// activeTime: '2024-06-19 14:35:26',
// dnn: 'ims',
// ipv4: '10.10.48.97',
// ipv4: '10.10.48.8',
// ipv6: '',
// pduSessionID: 6,
// ranN3IP: '192.168.8.223',
// ranN3IP: '192.168.1.137',
// sstSD: '1-000001',
// tai: '46000-0001',
// tai: '46000-001124',
// upState: 'Active',
// upfN3IP: '192.168.1.161',
// },
// {
// activeTime: '2023-11-29 18:39:05',
// activeTime: '2024-06-19 14:35:26',
// dnn: 'cmnet',
// ipv4: '10.10.48.62',
// ipv4: '10.10.48.9',
// ipv6: '2001:4860:4860::/64',
// pduSessionID: 7,
// ranN3IP: '192.168.1.137',
// sstSD: '1-000001',
// tai: '46000-001124',
// upState: 'Active',
// upfN3IP: '192.168.1.161',
// },
// ],
// ratType: 'NR',
// },
// {
// imsi: 'imsi-460602072701180',
// msisdn: 'msisdn-123460600080',
// pduSessionInfo: [
// {
// activeTime: '2024-06-19 14:31:09',
// dnn: 'cmnet',
// ipv4: '10.10.48.4',
// ipv6: '',
// pduSessionID: 5,
// ranN3IP: '192.168.8.223',
// sstSD: '1-000001',
// tai: '46000-0001',
// upfN3IP: '192.168.1.163',
// tai: '46060-0001',
// upState: 'Active',
// upfN3IP: '192.168.1.161',
// },
// ],
// ratType: 'EUTRAN',

View File

@@ -1,139 +0,0 @@
import { request } from '@/plugins/http-fetch';
/**
* 签约列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportSub(query: Record<string, any>) {
return request({
url: '/ne/udm/sub/export',
method: 'post',
data: query,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 导入签约数据
* @param neId 网元ID
* @param data 表单数据对象
* @returns object
*/
export function importSubData(data: FormData) {
return request({
url: `/ne/udm/sub/import`,
method: 'post',
data,
dataType: 'form-data',
timeout: 180_000,
});
}
/**
* 查询重新更新加载全部
* @param neId 网元ID
* @returns object
*/
export function loadSub(neId: string) {
return request({
url: `/ne/udm/sub/resetData/${neId}`,
method: 'put',
timeout: 180_000,
});
}
/**
* 查询签约列表
* @param query 查询参数
* @returns object
*/
export function listSub(query: Record<string, any>) {
return request({
url: '/ne/udm/sub/list',
method: 'get',
params: query,
});
}
/**
* 查询签约详细
* @param neId 网元ID
* @returns object
*/
export function getSub(neId: string, imsi: string) {
return request({
url: `/ne/udm/sub/${neId}/${imsi}`,
method: 'get',
});
}
/**
* 修改签约
* @param data 签约对象
* @param neId 网元ID
* @returns object
*/
export function updateSub(neId: string, data: Record<string, any>) {
return request({
url: `/ne/udm/sub/${neId}`,
method: 'put',
data: data,
timeout: 180_000,
});
}
/**
* 新增签约
* @param data 签约对象
* @returns object
*/
export function addSub(neID: string, data: Record<string, any>) {
return request({
url: `/ne/udm/sub/${neID}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* 批量新增新增签约
* @param data 签约对象
* @returns object
*/
export function batchAddSub(data: Record<string, any>) {
return request({
url: `/ne/udm/sub/${data.neID}/${data.num}`,
method: 'post',
data: data,
timeout: 180_000,
});
}
/**
* 删除签约
* @param data 签约对象
* @returns object
*/
export function delSub(neId: string, imsi: string) {
return request({
url: `/ne/udm/sub/${neId}/${imsi}`,
method: 'delete',
timeout: 180_000,
});
}
/**
* 批量删除签约
* @param data 签约对象
* @returns object
*/
export function batchDelSub(data: Record<string, any>) {
return request({
url: `/ne/udm/sub/${data.neID}/${data.imsi}/${data.num}`,
method: 'delete',
timeout: 180_000,
});
}

View File

@@ -0,0 +1,17 @@
import { request } from '@/plugins/http-fetch';
/**
* 新 查询自定义指标数据
* @param query 查询参数
* @returns object
*/
export async function listCustomData(query: Record<string, any>) {
// 发起请求
const result = await request({
url: `/pm/kpiC/report`,
method: 'get',
params: query,
timeout: 60_000,
});
return result;
}

View File

@@ -1,64 +1,76 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { parseDateToStr } from '@/utils/date-utils';
/**
* 查询自定义指标
* @param query 查询参数
* @returns object
*/
export async function listCustom(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from pm_custom_title where 1=1 ';
let rowsSQL = 'select * from pm_custom_title where 1=1 ';
// export async function listCustom(query: Record<string, any>) {
// let totalSQL = 'select count(*) as total from pm_custom_title where 1=1 ';
// let rowsSQL = 'select * from pm_custom_title where 1=1 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// // 查询
// let querySQL = '';
// if (query.neType) {
// querySQL += ` and ne_type like '%${query.neType}%' `;
// }
// 排序
let sortSql = ' order by update_time ';
if (query.sortOrder === 'asc') {
sortSql += ' asc ';
} else {
sortSql += ' desc ';
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` limit ${pageNum},${query.pageSize} `;
// // 排序
// let sortSql = ' order by update_time ';
// if (query.sortOrder === 'asc') {
// sortSql += ' asc ';
// } else {
// sortSql += ' desc ';
// }
// // 分页
// const pageNum = (query.pageNum - 1) * query.pageSize;
// const limtSql = ` limit ${pageNum},${query.pageSize} `;
// // 发起请求
// const result = await request({
// url: `/api/rest/databaseManagement/v1/select/omc_db/pm_custom_title`,
// method: 'get',
// params: {
// totalSQL: totalSQL + querySQL,
// rowsSQL: rowsSQL + querySQL + sortSql + limtSql,
// },
// });
// // 解析数据
// if (result.code === RESULT_CODE_SUCCESS) {
// const data: DataList = {
// total: 0,
// rows: [],
// code: result.code,
// msg: result.msg,
// };
// result.data.data.forEach((item: any) => {
// const itemData = item['pm_custom_title'];
// if (Array.isArray(itemData)) {
// if (itemData.length === 1 && itemData[0]['total'] >= 0) {
// data.total = itemData[0]['total'];
// } else {
// data.rows = itemData.map(v => parseObjLineToHump(v));
// }
// }
// });
// return data;
// }
// return result;
// }
/**
* 新 查询自定义指标
* @param query 查询参数
* @returns object
*/
export async function listCustom(query?: Record<string, any>) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/pm_custom_title`,
url: `/pm/kpiC/title/totalList`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + sortSql + limtSql,
},
params: query,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['pm_custom_title'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
@@ -68,22 +80,10 @@ export async function listCustom(query: Record<string, any>) {
* @returns object
*/
export async function getCustom(id: string | number) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/pm_custom_title`,
return request({
url: `/pm/kpiC/title/${id}`,
method: 'get',
params: {
SQL: `select * from pm_custom_title where id = ${id}`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['pm_custom_title'][0]),
});
}
return result;
}
/**
@@ -92,21 +92,10 @@ export async function getCustom(id: string | number) {
* @returns object
*/
export function addCustom(data: Record<string, any>) {
let obj: any = {
title: data.title,
ne_type: data.neType,
kpi_id: data.kpiId,
object_type: data.objectType,
expression: data.expression,
period: data.period,
description: data.description,
kpi_set: data.kpiSet,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/pm_custom_title`,
url: `/pm/kpiC/title`,
method: 'post',
data: { 'data': [obj] },
data: data,
});
}
@@ -116,20 +105,10 @@ export function addCustom(data: Record<string, any>) {
* @returns object
*/
export function updateCustom(data: Record<string, any>) {
let obj: any = {
title: data.title,
ne_type: data.neType,
kpi_id: data.kpiId,
object_type: data.objectType,
expression: data.expression,
period: data.period,
description: data.description,
kpi_set: data.kpiSet,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/pm_custom_title?WHERE=id=${data.id}`,
url: `/pm/kpiC/title/${data.id}`,
method: 'put',
data: { data: obj },
data: data,
});
}
@@ -139,8 +118,7 @@ export function updateCustom(data: Record<string, any>) {
*/
export async function delCustom(data: Record<string, any>) {
return request({
url: `/api/rest/databaseManagement/v1/omc_db/pm_custom_title?WHERE=id=${data.id}`,
url: `/pm/kpiC/title/${data.id}`,
method: 'delete',
});
}

View File

@@ -110,78 +110,52 @@ export async function getKPITitle(neType: string) {
}
/**
* Todo 废弃
* 查询UPF上下行速率数据
* @param query 查询参数
* 查询黄金指标数据kpi.id转换title
* @param neType 网元类型
* @returns object
*/
export async function listUPFData(timeArr: any) {
const initTime: Date = new Date();
const twentyFourHoursAgo: Date = new Date(
initTime.getTime() - 10 * 60 * 1000
);
return await Promise.allSettled([
// 获取参数规则
request({
url: `/api/rest/databaseManagement/v1/select/omc_db/gold_kpi`,
method: 'get',
params: {
SQL: `SELECT gold_kpi.*,kpi_title.en_title FROM gold_kpi LEFT JOIN kpi_title on gold_kpi.kpi_id=kpi_title.kpi_id where 1=1 and gold_kpi.kpi_id ='UPF.03' AND timestamp BETWEEN DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND NOW()`,
},
timeout: 60_000,
}),
// 获取对应信息
request({
url: `/api/rest/databaseManagement/v1/select/omc_db/gold_kpi`,
method: 'get',
params: {
SQL: `SELECT gold_kpi.*,kpi_title.en_title FROM gold_kpi LEFT JOIN kpi_title on gold_kpi.kpi_id=kpi_title.kpi_id where 1=1 and gold_kpi.kpi_id ='UPF.06' AND timestamp BETWEEN DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND NOW()`,
},
timeout: 60_000,
}),
]).then(resArr => {
let upData: any = [];
let downData: any = [];
// 规则数据
if (resArr[0].status === 'fulfilled') {
const itemV: any = resArr[0].value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data?.data)
) {
let itemData = itemV.data.data;
let data = itemData[0]['gold_kpi'];
if (Array.isArray(data)) {
try {
upData = data.map(v => parseObjLineToHump(v));
} catch (error) {
console.error(error);
}
}
}
}
if (resArr[1].status === 'fulfilled') {
const itemV = resArr[1].value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data?.data)
) {
let itemData = itemV.data.data;
const data = itemData[0]['gold_kpi'];
if (Array.isArray(data)) {
try {
downData = data.map(v => parseObjLineToHump(v));
} catch (error) {
console.error(error);
}
}
}
}
return { upData, downData };
export async function getKPITitleList(query: Record<string, any>) {
return request({
url: '/neData/kpi/title/list',
method: 'get',
params: query,
});
}
/**
* 修改指标标题
* @param data 指标标题对象
* @returns object
*/
export function updateKPITitle(data: Record<string, any>) {
return request({
url: '/neData/kpi/title',
method: 'put',
data: data,
});
}
//忙时呼叫
export async function getbusyhour(query: Record<string, any>) {
return request({
url: '/neData/ims/kpi/busy-hour',
method: 'get',
params: query,
});
}
//MOS指标
export async function getMosHour(query: Record<string, any>) {
return request({
url: '/neData/ims/cdr/mos-hour',
method: 'get',
params: query,
});
}
//CCT指标
export async function getCctHour(query: Record<string, any>) {
return request({
url: '/neData/ims/cdr/cct-hour',
method: 'get',
params: query,
});
}

View File

@@ -1,7 +1,6 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
import { parseDateToStr } from '@/utils/date-utils';
/**
* 查询任务列表

View File

@@ -0,0 +1,64 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询登录源列表
* @param query 查询参数
* @returns object
*/
export function listLoginSource(query: Record<string, any>) {
return request({
url: '/system/login-source/list',
method: 'GET',
params: query,
});
}
/**
* 查询登录源详细
* @param id 登录源ID
* @returns object
*/
export function getLoginSource(id: string | number) {
return request({
url: `/system/login-source/${id}`,
method: 'GET',
});
}
/**
* 新增登录源
* @param data 登录源对象
* @returns object
*/
export function addLoginSource(data: Record<string, any>) {
return request({
url: '/system/login-source',
method: 'POST',
data: data,
});
}
/**
* 修改登录源
* @param data 登录源对象
* @returns object
*/
export function updateLoginSource(data: Record<string, any>) {
return request({
url: '/system/login-source',
method: 'PUT',
data: data,
});
}
/**
* 认证源删除
* @param id 登录源ID
* @returns object
*/
export function delLoginSource(id: string | number) {
return request({
url: `/system/login-source/${id}`,
method: 'DELETE',
});
}

View File

@@ -0,0 +1,52 @@
import { request } from '@/plugins/http-fetch';
/**
* 首次引导开始
* @returns object
*/
export function bootloaderStart() {
return request({
url: `/bootloader`,
method: 'post',
whithToken: false,
repeatSubmit: false,
});
}
/**
* 首次引导完成
* @returns object
*/
export function bootloaderDone() {
return request({
url: `/bootloader`,
method: 'put',
});
}
/**
* 引导系统数据重置
* @returns object
*/
export function bootloaderReset() {
return request({
url: `/bootloader`,
method: 'delete',
timeout: 180_000
});
}
/**
* 管理员账号变更
* @returns object
*/
export function bootloaderAccount(username: string, password: string) {
return request({
url: `/bootloader/account`,
method: 'put',
data: {
username,
password,
},
});
}

99
src/api/system/tenant.ts Normal file
View File

@@ -0,0 +1,99 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询部门列表
* @param query 查询参数
* @returns object
*/
export function listTenant(query: Record<string, any>) {
return request({
url: '/system/tenant/list',
method: 'get',
params: query,
});
}
/**
* 查询部门列表(排除节点)
* @param tenantId 部门ID
* @returns object
*/
export function listTenantExcludeChild(tenantId: string | number) {
return request({
url: `/system/tenant/list/exclude/${tenantId}`,
method: 'get',
});
}
/**
* 查询部门详细
* @param tenantId 部门ID
* @returns object
*/
export function getTenant(tenantId: string | number) {
return request({
url: `/system/tenant/${tenantId}`,
method: 'get',
});
}
/**
* 新增部门
* @param data 部门对象
* @returns object
*/
export function addTenant(data: Record<string, any>) {
return request({
url: '/system/tenant',
method: 'post',
data: data,
});
}
/**
* 修改部门
* @param data 部门对象
* @returns object
*/
export function updateTenant(data: Record<string, any>) {
return request({
url: '/system/tenant',
method: 'put',
data: data,
});
}
/**
* 删除部门
* @param TenantId 部门ID
* @returns object
*/
export function delTenant(TenantId: string | number) {
return request({
url: `/system/tenant/${TenantId}`,
method: 'delete',
});
}
/**
* 查询部门下拉树结构
* @returns object
*/
export function tenantTreeSelect() {
return request({
url: '/system/tenant/treeSelect',
method: 'get',
});
}
/**
* 部门树结构列表(指定角色)
* @param roleId 角色ID
* @returns object
*/
export function roleTenantTreeSelect(roleId: string | number) {
return request({
url: `/system/tenant/roleDeptTreeSelect/${roleId}`,
method: 'get',
});
}

View File

@@ -15,9 +15,10 @@ import { encode } from 'js-base64';
export async function downloadFile(filePath: string, range?: string) {
return request({
url: `/file/download/${encode(filePath)}`,
method: 'get',
method: 'GET',
headers: range ? { range } : {},
responseType: 'blob',
timeout: 60_000,
});
}
@@ -75,10 +76,11 @@ export async function downloadFileChunk(
*/
export function uploadFile(data: FormData) {
return request({
url: '/file/upload',
method: 'post',
url: '/file/upload2',
method: 'POST',
data,
dataType: 'form-data',
timeout: 180_000,
});
}
@@ -167,8 +169,9 @@ export async function uploadFileChunk(
export function chunkCheck(identifier: string, fileName: string) {
return request({
url: '/file/chunkCheck',
method: 'post',
method: 'POST',
data: { identifier, fileName },
timeout: 60_000,
});
}
@@ -186,8 +189,9 @@ export function chunkMerge(
) {
return request({
url: '/file/chunkMerge',
method: 'post',
method: 'POST',
data: { identifier, fileName, subPath },
timeout: 60_000,
});
}
@@ -199,9 +203,54 @@ export function chunkMerge(
export function chunkUpload(data: FormData) {
return request({
url: '/file/chunkUpload',
method: 'post',
method: 'POST',
data,
dataType: 'form-data',
timeout: 60_000,
});
}
/**
* 本地文件列表
* @param path 文件路径
* @param search search prefix
* @returns object
*/
export async function listFile(query: Record<string, any>) {
return request({
url: `/file/list`,
method: 'GET',
params: query,
});
}
/**
* 本地文件获取下载
* @param path 文件路径
* @param fileName 文件名
* @returns object
*/
export async function getFile(path: string, fileName: string) {
return request({
url: `/file`,
method: 'GET',
params: { path, fileName },
responseType: 'blob',
timeout: 60_000,
});
}
/**
* 本地文件删除
* @param path 文件路径
* @param fileName 文件名
* @returns object
*/
export async function delFile(path: string, fileName: string) {
return request({
url: `/file`,
method: 'DELETE',
params: { path, fileName },
});
}
@@ -212,8 +261,9 @@ export function chunkUpload(data: FormData) {
export function transferStaticFile(data: Record<string, any>) {
return request({
url: `/file/transferStaticFile`,
method: 'post',
method: 'POST',
data,
timeout: 60_000,
});
}
@@ -235,12 +285,14 @@ export async function uploadFileToNE(
if (uploadChunkRes.code === RESULT_CODE_SUCCESS) {
const transferToNeFileRes = await request({
url: `/ne/action/pushFile`,
method: 'post',
method: 'POST',
data: {
uploadPath: uploadChunkRes.data.fileName,
neType,
neId,
delTemp: true,
},
timeout: 60_000,
});
return transferToNeFileRes;
}

20
src/api/tool/iperf.ts Normal file
View File

@@ -0,0 +1,20 @@
import { request } from '@/plugins/http-fetch';
// iperf 版本信息
export function iperfV(data: Record<string, string>) {
return request({
url: '/tool/iperf/v',
method: 'get',
params: data,
});
}
// iperf 软件安装
export function iperfI(data: Record<string, string>) {
return request({
url: '/tool/iperf/i',
method: 'post',
data: data,
timeout: 60_000,
});
}

View File

@@ -1,7 +1,7 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询文件列表列表
* 查询网元端文件列表
* @param query 查询参数
* @returns object
*/
@@ -14,7 +14,7 @@ export function listNeFiles(query: Record<string, any>) {
}
/**
* 从网元获取文件
* 从网元到本地获取文件
* @param query 查询参数
* @returns object
*/
@@ -24,6 +24,27 @@ export function getNeFile(query: Record<string, any>) {
method: 'get',
params: query,
responseType: 'blob',
timeout: 180_000,
timeout: 600_000,
});
}
// 从网元到本地获取目录压缩为ZIP
export function getNeDirZip(data: Record<string, any>) {
return request({
url: '/ne/action/pullDirZip',
method: 'get',
params: data,
responseType: 'blob',
timeout: 600_000,
});
}
// 查看网元端文件内容
export function getNeViewFile(data: Record<string, any>) {
return request({
url: '/ne/action/viewFile',
method: 'get',
params: data,
timeout: 600_000,
});
}

19
src/api/tool/ping.ts Normal file
View File

@@ -0,0 +1,19 @@
import { request } from '@/plugins/http-fetch';
// ping 网元端版本信息
export function pingV(data: Record<string, string>) {
return request({
url: '/tool/ping/v',
method: 'get',
params: data,
});
}
// ping RTT 时延抖动
export function pingRTT(data: Record<string, string>) {
return request({
url: '/tool/ping/rtt',
method: 'POST',
data: data,
});
}

79
src/api/trace/packet.ts Normal file
View File

@@ -0,0 +1,79 @@
import { request } from '@/plugins/http-fetch';
/**
* 信令跟踪网卡设备列表
* @returns
*/
export function packetDevices() {
return request({
url: '/trace/packet/devices',
method: 'get',
});
}
/**
* 信令跟踪开始
* @param data 对象
* @returns
*/
export function packetStart(data: Record<string, any>) {
return request({
url: '/trace/packet/start',
method: 'post',
data: data,
});
}
/**
* 信令跟踪结束
* @param data 对象
* @returns
*/
export function packetStop(taskNo: string) {
return request({
url: '/trace/packet/stop',
method: 'post',
data: { taskNo },
});
}
/**
* 信令跟踪过滤
* @param data 对象
* @returns
*/
export function packetFilter(taskNo: string, expr: string) {
return request({
url: '/trace/packet/filter',
method: 'put',
data: { taskNo, expr },
});
}
/**
* 信令跟踪续期保活
* @param data 对象
* @returns
*/
export function packetKeep(taskNo: string, duration: number = 120) {
return request({
url: '/trace/packet/keep-alive',
method: 'put',
data: { taskNo, duration },
});
}
/**
* 信令跟踪文件
* @param taskNo 对象
* @returns object
*/
export function packetPCAPFile(taskNo: string) {
return request({
url: '/trace/packet/filePull',
method: 'get',
params: { taskNo },
responseType: 'blob',
timeout: 680_000,
});
}

View File

@@ -3,26 +3,29 @@ import { request } from '@/plugins/http-fetch';
// 网元抓包PACP 开始
export function dumpStart(data: Record<string, string>) {
return request({
url: '/tcpdump/start',
url: '/trace/tcpdump/start',
method: 'post',
data: data,
timeout: 60_000,
});
}
// 网元抓包PACP 结束
export function dumpStop(data: Record<string, string>) {
return request({
url: '/tcpdump/stop',
url: '/trace/tcpdump/stop',
method: 'post',
data: data,
timeout: 60_000,
});
}
// UPF标准版内部抓包
export function traceUPF(data: Record<string, string>) {
return request({
url: '/tcpdump/traceUPF',
url: '/trace/tcpdump/upf',
method: 'post',
data: data,
timeout: 60_000,
});
}

104
src/api/trace/task.ts Normal file
View File

@@ -0,0 +1,104 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询跟踪任务列表
* @param query 查询参数
* @returns object
*/
export async function listTraceTask(query: Record<string, any>) {
return request({
url: '/trace/task/list',
method: 'get',
params: query,
});
}
/**
* 查询跟踪任务信息
* @param id 网元ID
* @returns object
*/
export async function getTraceTask(id: string | number) {
return request({
url: `/trace/task/${id}`,
method: 'get',
});
}
/**
* 新增任务
* @param data 网元对象
* @returns object
*/
export function addTraceTask(data: Record<string, any>) {
return request({
url: `/trace/task`,
method: 'post',
data: data,
});
}
/**
* 修改任务
* @param data 网元对象
* @returns object
*/
export function updateTraceTask(data: Record<string, any>) {
return request({
url: `/trace/task`,
method: 'put',
data: data,
});
}
/**
* 跟踪任务删除
* @param ids ID多个逗号分隔
* @returns object
*/
export async function delTraceTask(ids: string) {
return request({
url: `/trace/task/${ids}`,
method: 'delete',
});
}
/**
* 跟踪任务文件
* @param query 对象
* @returns object
*/
export function filePullTask(traceId: string) {
return request({
url: '/trace/task/filePull',
method: 'get',
params: { traceId },
responseType: 'blob',
timeout: 600_000,
});
}
/**
* 跟踪任务数据列表
* @param query 查询参数
* @returns object
*/
export async function listTraceData(query: Record<string, any>) {
return request({
url: '/trace/data/list',
method: 'get',
params: query,
});
}
/**
* 查询跟踪任务数据信息
* @param id ID
* @returns object
*/
export async function getTraceData(id: string | number) {
return request({
url: `/trace/data/${id}`,
method: 'get',
});
}

83
src/api/trace/taskHLR.ts Normal file
View File

@@ -0,0 +1,83 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询跟踪任务列表
* @param query 查询参数
* @returns object
*/
export function listTaskHLR(query: Record<string, any>) {
return request({
url: '/trace/task/hlr/list',
method: 'get',
params: query,
});
}
/**
* 跟踪任务删除
* @param ids 任务ID
* @returns object
*/
export function delTaskHLR(ids: string | number) {
return request({
url: `/trace/task/hlr/${ids}`,
method: 'delete',
timeout: 60_000,
});
}
/**
* 跟踪任务创建
* @param data 对象
* @returns object
*/
export function startTaskHLR(data: Record<string, any>) {
return request({
url: '/trace/task/hlr/start',
method: 'post',
data: data,
timeout: 60_000,
});
}
/**
* 跟踪任务停止
* @param data 对象
* @returns object
*/
export function stopTaskHLR(data: Record<string, any>) {
return request({
url: '/trace/task/hlr/stop',
method: 'post',
data: data,
timeout: 60_000,
});
}
/**
* 跟踪任务文件
* @param data 对象
* @returns object
*/
export function fileTaskHLR(data: Record<string, any>) {
return request({
url: '/trace/task/hlr/file',
method: 'post',
data: data,
});
}
/**
* 跟踪任务文件从网元到本地
* @param query 对象
* @returns object
*/
export function filePullTaskHLR(query: Record<string, any>) {
return request({
url: '/trace/task/hlr/filePull',
method: 'get',
params: query,
responseType: 'blob',
timeout: 600_000,
});
}

View File

@@ -1,71 +0,0 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询信令列表
* @param query 查询参数
* @returns object
*/
export async function listTraceData(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from trace_data where 1=1 ';
let rowsSQL = 'select * from trace_data where 1=1 ';
// 查询
let querySQL = '';
if (query.imsi) {
querySQL += ` and imsi like '%${query.imsi}%' `;
}
if (query.msisdn) {
querySQL += ` and msisdn like '%${query.msisdn}%' `;
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/trace_data`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + limtSql,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['trace_data'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
/**
* 信令数据解析HTML
* @param id 任务ID
* @returns
*/
export function getTraceRawInfo(id: Record<string, string>) {
return request({
url: `/api/rest/traceManagement/v1/decMessage/${id}`,
method: 'get',
responseType: 'text',
});
}

View File

@@ -1,154 +0,0 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询任务列表
* @param query 查询参数
* @returns object
*/
export async function listTraceTask(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from trace_task where 1=1 ';
let rowsSQL = 'select * from trace_task where 1=1 ';
// 查询
let querySQL = '';
if (query.imsi) {
querySQL += ` and imsi like '%${query.imsi}%' `;
}
if (query.beginTime) {
querySQL += ` and start_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and end_time <= '${query.endTime}' `;
}
// 分页
const pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` limit ${pageNum},${query.pageSize} `;
// 排序
let sortSql = ' order by start_time ';
if (query.sortOrder === 'asc') {
sortSql += ' asc ';
} else {
sortSql += ' desc ';
}
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/trace_task`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + sortSql + limtSql,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const data: DataList = {
total: 0,
rows: [],
code: result.code,
msg: result.msg,
};
result.data.data.forEach((item: any) => {
const itemData = item['trace_task'];
if (Array.isArray(itemData)) {
if (itemData.length === 1 && itemData[0]['total'] >= 0) {
data.total = itemData[0]['total'];
} else {
data.rows = itemData.map(v => parseObjLineToHump(v));
}
}
});
return data;
}
return result;
}
/**
* 查询任务详细
* @param id 网元ID
* @returns object
*/
export async function getTraceTask(id: string | number) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/trace_task`,
method: 'get',
params: {
SQL: `select * from trace_task where id = ${id}`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['trace_task'][0]),
});
}
return result;
}
/**
* 新增任务
* @param data 网元对象
* @returns object
*/
export function addTraceTask(data: Record<string, any>) {
return request({
url: `/api/rest/traceManagement/v1/subscriptions`,
method: 'post',
data: data,
});
}
/**
* 修改任务
* @param data 网元对象
* @returns object
*/
export function updateTraceTask(data: Record<string, any>) {
return request({
url: `/api/rest/traceManagement/v1/subscriptions`,
method: 'put',
data: data,
});
}
/**
* 删除任务
* @param noticeId 网元ID
* @returns object
*/
export async function delTraceTask(id: string) {
return request({
url: `/api/rest/traceManagement/v1/subscriptions?id=${id}`,
method: 'delete',
});
}
/**
* 获取网元跟踪接口列表
* @returns object
*/
export async function getNeTraceInterfaceAll() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/ne_info`,
method: 'get',
params: {
SQL: `SELECT ne_type,interface FROM trace_info GROUP BY ne_type,interface`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['trace_info']),
});
}
return result;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

View File

@@ -0,0 +1,11 @@
/**
* worker文件-静态资源文件路径
*/
const baseUrl = import.meta.env.VITE_HISTORY_BASE_URL;
export const scriptUrl = `${
baseUrl.length === 1 && baseUrl.indexOf('/') === 0
? ''
: baseUrl.indexOf('/') === -1
? '/' + baseUrl
: baseUrl
}/wiregasm/worker.js`;

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1721721606045" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7339" width="200" height="200"><path d="M610.6 234.24L627 294.6c90.88-24.73 184.58 28.77 209.45 119.65l60.36-16.4C862.92 273.5 734.67 200.37 610.6 234.24z m-34.42-126.22l16.4 60.36c160.51-43.83 326.13 50.81 369.96 211.33l60.36-16.4C969.94 169.45 770.03 55.18 576.18 108.02zM179.47 922.27V827.5H0v-84.83l179.47-261.74h92.22v274.24h62.38v72.33h-62.38v94.77h-92.22z m0-167.09V598.02L72.33 755.18h107.14z m0 0" p-id="7340" fill="#ffffff"></path><path d="M695.69 752.62h-89.8v-77.29h186.99v231.9c-33.34 9.95-67.35 14.92-102.17 14.92-26.62 3.37-61.57 4.97-104.72 4.97-141.29-8.33-213.62-86.44-216.97-234.31 3.36-151.24 75.69-231.9 216.97-241.85 144.65 0 216.03 49.88 214.42 149.63H695.69c0-51.49-30.79-77.3-92.23-77.3-84.83 1.62-127.98 58.21-129.59 169.52 1.61 109.7 44.9 165.49 129.59 167.1 24.87 0 54.05-3.36 87.25-9.95-1.61 1.61 0 1.61 4.98 0v-97.34z m0 0" p-id="7341" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1721721630123" class="icon" viewBox="0 0 1216 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="54141" width="200" height="200"><path d="M747.264 190.912l18.368 67.328a190.272 190.272 0 0 1 233.728 133.44l67.264-18.368a260.032 260.032 0 0 0-319.36-182.4z m-38.4-140.736l18.368 67.328a336.192 336.192 0 0 1 412.8 235.776l67.328-18.368A405.952 405.952 0 0 0 708.864 50.176z m133.376 719.232h-100.16v-86.272h208.64v258.752c-37.12 11.136-75.072 16.704-114.048 16.704a984.96 984.96 0 0 1-116.864 5.568c-157.632-9.28-238.336-96.448-242.048-261.504 3.712-168.768 84.416-258.752 242.048-269.888 161.344 0 241.088 55.68 239.296 166.912H842.24c0-57.472-34.368-86.208-102.912-86.208-94.592 1.856-142.848 64.896-144.64 189.184 1.792 122.368 50.048 184.576 144.64 186.368 27.776 0 60.16-3.712 97.344-11.136-1.92 1.92 0 1.92 5.568 0v-108.48zM234.24 969.216c-86.016 0-148.992-30.72-201.216-80.64l71.424-85.248c40.704 36.864 80.64 58.368 128.256 58.368 55.296 0 89.856-26.88 89.856-74.496v-1.536c0-46.08-39.168-72.96-95.232-72.96-33.792 0-64.512 9.216-89.856 19.968L69.12 687.36l15.36-264.96h330.24v103.68H185.856l-6.144 92.928a262.976 262.976 0 0 1 70.656-9.216c104.448 0 188.16 50.688 188.16 172.032v1.536c0 113.664-80.64 185.856-204.288 185.856z" p-id="54142" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -0,0 +1,3 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1720074329868" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4280" width="64" height="64"><path d="M616.5 151.3l-28.3 28.3c19.7 19.6 31.8 46.6 31.8 76.5 0 29.8-12.2 56.9-31.8 76.5l28.3 28.3c26.8-27 43.5-64 43.5-104.9s-16.7-77.9-43.5-104.7zM435.8 179.5l-28.3-28.3C380.7 178.1 364 215.1 364 256s16.7 77.9 43.5 104.7l28.3-28.3C416.2 312.9 404 285.8 404 256c0-29.9 12.2-56.9 31.8-76.5zM346.6 134.3L318.3 106c-38.5 38.4-62.3 91.5-62.3 150s23.8 111.6 62.3 150l28.3-28.3C315.3 346.6 296 303.5 296 256s19.3-90.6 50.6-121.7zM705.7 106l-28.3 28.3C708.7 165.4 728 208.5 728 256s-19.3 90.6-50.6 121.7l28.3 28.3c38.5-38.4 62.3-91.5 62.3-150s-23.8-111.6-62.3-150zM815.2 60.8l-0.1-0.1L786.7 89c0.1 0 0.1 0.1 0.2 0.1C831.5 133.7 856 193 856 256s-24.5 122.3-69.1 166.9c0 0-0.1 0.1-0.2 0.1l28.3 28.3 0.1-0.1C867.3 399 896 329.7 896 256s-28.7-143-80.8-195.2zM237.3 89L209 60.7l-0.1 0.1C156.7 113 128 182.3 128 256s28.7 143 80.8 195.2l0.1 0.1 28.3-28.3c-0.1 0-0.1-0.1-0.2-0.1-44.5-44.6-69-103.9-69-166.9s24.5-122.3 69.1-166.9c0.1 0 0.1-0.1 0.2-0.1zM511.712 256.002l0.283-0.283 0.283 0.283-0.283 0.283z" p-id="4281" fill="#ffffff"></path><path d="M511.719 256.021l0.282-0.282 0.283 0.282-0.283 0.283z" p-id="4282" fill="#ffffff"></path><path d="M708.4 616l-14.2-26.1-7.6-13.9-11.6-21.2L512 256 337.5 576l-21.8 40L128 960h74l33.8-64 28.9-53h494.6l28.9 53 33.8 64h74L708.4 616zM512 389.6L613.7 576H410.3L512 389.6zM388.5 616H569L305.6 768.1 388.5 616z m-63.4 187l313.6-181.1L737.5 803H325.1z" p-id="4283" fill="#ffffff"></path></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

1
src/assets/svg/dark.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="1em" height="1em" class="icon-dark" viewBox="0 0 17 17" xmlns="http://www.w3.org/2000/svg" style="vertical-align: -0.125em;color: rgba(255, 255, 255, 0.65);"><g id="Dark-\u9875\u9762-1" stroke="none" stroke-width="1px" fill="none" fill-rule="evenodd"><g id="Dark-\u9ED8\u8BA4" transform="translate(-9.000000, -49.500000)" fill="currentColor" fill-rule="nonzero"><g id="Dark-\u7F16\u7EC4-17" transform="translate(0.000000, 42.500000)"><g id="Dark-moon" transform="translate(9.268811, 7.500000)"><rect id="Dark-\u77E9\u5F62" opacity="0" x="0" y="0" width="16" height="16"></rect><path d="M8,1.33333333 C8.14933333,1.33333333 8.29688889,1.33844444 8.44266667,1.34866666 C8.14755556,1.98422221 8,2.64577777 8,3.33333333 C8,3.96533333 8.12333333,4.56955555 8.37,5.146 C8.61666667,5.72244445 8.94822222,6.21888889 9.36466667,6.63533333 C9.78111112,7.05177777 10.2775556,7.38333332 10.854,7.63 C11.4304444,7.87666668 12.0346667,8.00000001 12.6666667,8 C13.3542222,8 14.0157778,7.85244444 14.6513333,7.55733333 C14.6615556,7.70311111 14.6666667,7.85066667 14.6666667,8 C14.6666667,8.604 14.5868889,9.19422222 14.4273333,9.77066667 C14.2677778,10.3471111 14.0446667,10.8793333 13.758,11.3673333 C13.4713333,11.8553333 13.1233333,12.3042222 12.714,12.714 C12.3046667,13.1237778 11.8557778,13.4717778 11.3673333,13.758 C10.8788889,14.0442222 10.3466667,14.2673333 9.77066667,14.4273333 C9.19466667,14.5873333 8.60444445,14.6671111 8,14.6666685 C7.39555555,14.6662222 6.80533333,14.5864444 6.22933333,14.4273333 C5.65333333,14.2682222 5.1211111,14.0451111 4.63266666,13.758 C4.14422221,13.4708889 3.69533332,13.1228889 3.28599998,12.714 C2.87666665,12.3051111 2.52866665,11.8562222 2.24199998,11.3673333 C1.95533332,10.8784444 1.73222221,10.3462222 1.57266666,9.77066667 C1.4131111,9.19511112 1.33333333,8.6048889 1.33333333,8 C1.33333333,7.3951111 1.4131111,6.80488888 1.57266666,6.22933333 C1.73222221,5.65377778 1.95533332,5.12155555 2.24199998,4.63266666 C2.52866665,4.14377776 2.87666665,3.69488887 3.28599998,3.28599998 C3.69533332,2.8771111 4.14422221,2.5291111 4.63266666,2.24199998 C5.1211111,1.95488887 5.65333333,1.73177776 6.22933333,1.57266666 C6.80533333,1.41355555 7.39555555,1.33377778 8,1.33333333 Z M6.68733333,2.828 C6.11444444,2.97377778 5.58066667,3.20977778 5.086,3.536 C4.59133333,3.86222222 4.166,4.24933333 3.81,4.69733333 C3.454,5.14533333 3.17444444,5.65488889 2.97133333,6.226 C2.76822221,6.79711111 2.66666666,7.38822222 2.66666666,7.99933333 C2.66666666,8.72155555 2.80733332,9.41155555 3.08866666,10.0693333 C3.36999999,10.7271111 3.74933332,11.2948889 4.22666666,11.7726667 C4.70399999,12.2504444 5.27177777,12.6297778 5.92999998,12.9106667 C6.5882222,13.1915556 7.2782222,13.3322222 7.99999998,13.3326667 C8.6111111,13.3326667 9.20222221,13.2311111 9.77333331,13.028 C10.3444444,12.8248889 10.854,12.5453333 11.302,12.1893333 C11.75,11.8333333 12.1371111,11.408 12.4633333,10.9133333 C12.7895555,10.4186666 13.0255555,9.88488887 13.1713333,9.31199998 C13.022,9.32577777 12.8535555,9.33266666 12.666,9.33266666 C11.8535555,9.33266666 11.0775555,9.17377777 10.338,8.85599998 C9.59844443,8.5382222 8.96044443,8.11111109 8.42399998,7.57466666 C7.88755554,7.03822222 7.46044443,6.40022222 7.14266666,5.66066666 C6.82488889,4.92111109 6.66599999,4.14511109 6.66599998,3.33266666 C6.66599998,3.1451111 6.67288888,2.97666666 6.68666666,2.82733333 L6.68733333,2.828 Z" id="Dark-\u5F62\u72B6"></path></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

1
src/assets/svg/light.svg Normal file
View File

@@ -0,0 +1 @@
<svg width="1em" height="1em" class="icon-light" viewBox="0 0 13 13" xmlns="http://www.w3.org/2000/svg" style="vertical-align: -0.125em;color: rgba(0, 0, 0, 0.88);"><g id="Light-\u9875\u9762-1" stroke="none" stroke-width="1px" fill="none" fill-rule="evenodd"><g id="Light-\u4E3B\u9898\u5305" transform="translate(-2943.000000, -292.000000)" fill="currentColor" fill-rule="nonzero"><g id="Light-\u7F16\u7EC4-12" transform="translate(2415.000000, 222.000000)"><g id="Light-\u89C6\u56FE\u5207\u6362-\u7F16\u8F91\u6001" transform="translate(518.000000, 60.000000)"><g id="Light-eye" transform="translate(8.000000, 8.000000)"><g id="Light-sun" transform="translate(2.000000, 2.000000)"><rect id="Light-\u77E9\u5F62" opacity="0" x="0" y="0" width="13" height="13"></rect><path d="M6.5,9.75 C4.7051875,9.75 3.25,8.2948125 3.25,6.5 C3.25,4.7051875 4.7051875,3.25 6.5,3.25 C8.2948125,3.25 9.75,4.7051875 9.75,6.5 C9.75,8.2948125 8.2948125,9.75 6.5,9.75 Z M6.5,8.66666667 C7.69661696,8.66666667 8.66666667,7.69661696 8.66666667,6.5 C8.66666667,5.30338304 7.69661696,4.33333333 6.5,4.33333333 C5.30338305,4.33333333 4.33333336,5.30338305 4.33333336,6.5 C4.33333336,7.69661695 5.30338305,8.66666667 6.5,8.66666667 Z M5.95833333,1.08333333 C5.95833333,0.784179087 6.20084576,0.541666658 6.5,0.541666658 C6.79915424,0.541666658 7.04166667,0.784179087 7.04166667,1.08333333 L7.04166667,2.16666667 C7.04166667,2.46582091 6.79915424,2.70833334 6.5,2.70833334 C6.20084576,2.70833334 5.95833333,2.46582091 5.95833333,2.16666667 L5.95833333,1.08333333 L5.95833333,1.08333333 Z M5.95833333,10.8333333 C5.95833333,10.5341791 6.20084576,10.2916667 6.5,10.2916667 C6.79915424,10.2916667 7.04166667,10.5341791 7.04166667,10.8333333 L7.04166667,11.9166667 C7.04166667,12.2158209 6.79915424,12.4583333 6.5,12.4583333 C6.20084576,12.4583333 5.95833333,12.2158209 5.95833333,11.9166667 L5.95833333,10.8333333 L5.95833333,10.8333333 Z M1.08333333,7.04166667 C0.784179087,7.04166667 0.541666658,6.79915424 0.541666658,6.5 C0.541666658,6.20084576 0.784179087,5.95833333 1.08333333,5.95833333 L2.16666667,5.95833333 C2.46582091,5.95833333 2.70833334,6.20084576 2.70833334,6.5 C2.70833334,6.79915424 2.46582091,7.04166667 2.16666667,7.04166667 L1.08333333,7.04166667 L1.08333333,7.04166667 Z M10.8333333,7.04166667 C10.5341791,7.04166667 10.2916667,6.79915424 10.2916667,6.5 C10.2916667,6.20084576 10.5341791,5.95833333 10.8333333,5.95833333 L11.9166667,5.95833333 C12.2158209,5.95833333 12.4583333,6.20084576 12.4583333,6.5 C12.4583333,6.79915424 12.2158209,7.04166667 11.9166667,7.04166667 L10.8333333,7.04166667 L10.8333333,7.04166667 Z M2.05454167,2.82045833 C1.84926545,2.60791971 1.85220137,2.27007933 2.06114035,2.06114035 C2.27007933,1.85220137 2.60791971,1.84926545 2.82045833,2.05454167 L3.63295833,2.86704167 C3.83823455,3.07958029 3.83529863,3.41742067 3.62635965,3.62635965 C3.41742067,3.83529863 3.07958029,3.83823455 2.86704167,3.63295833 L2.05454167,2.82045833 L2.05454167,2.82045833 Z M9.36704167,10.1329583 C9.16176545,9.92041971 9.16470137,9.58257933 9.37364035,9.37364035 C9.58257933,9.16470137 9.92041971,9.16176545 10.1329583,9.36704167 L10.9454583,10.1795417 C11.1507346,10.3920803 11.1477986,10.7299207 10.9388596,10.9388596 C10.7299207,11.1477986 10.3920803,11.1507346 10.1795417,10.9454583 L9.36704167,10.1329583 L9.36704167,10.1329583 Z M2.82045833,10.9454583 C2.60791971,11.1507346 2.27007933,11.1477986 2.06114035,10.9388596 C1.85220137,10.7299207 1.84926545,10.3920803 2.05454167,10.1795417 L2.86704167,9.36704167 C3.07958029,9.16176545 3.41742067,9.16470137 3.62635965,9.37364035 C3.83529863,9.58257933 3.83823455,9.92041971 3.63295833,10.1329583 L2.82045833,10.9454583 L2.82045833,10.9454583 Z M10.1329583,3.63295833 C9.92041971,3.83823455 9.58257933,3.83529863 9.37364035,3.62635965 C9.16470137,3.41742067 9.16176545,3.07958029 9.36704167,2.86704167 L10.1795417,2.05454167 C10.3920803,1.84926545 10.7299207,1.85220137 10.9388596,2.06114035 C11.1477986,2.27007933 11.1507346,2.60791971 10.9454583,2.82045833 L10.1329583,3.63295833 L10.1329583,3.63295833 Z" id="Light-\u5F62\u72B6"></path></g></g></g></g></g></g></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1729046804258" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1511" width="200" height="200"><path d="M958.359001 286.941198c0-64.308655-52.132334-116.440989-116.440989-116.440989L181.453678 170.500209c-64.308655 0-116.440989 52.132334-116.440989 116.440989l0 448.63995c0 64.308655 52.132334 116.440989 116.440989 116.440989l660.464333 0c64.308655 0 116.440989-52.132334 116.440989-116.440989L958.359001 286.941198zM843.814198 212.455763c12.059664 0 23.444968 3.465938 33.519418 8.598842L530.749016 549.347606c-1.227967 1.161453-1.156336 0.916882-1.752924 1.868557-1.426489 1.067308-6.055926 3.922333-15.449877 3.922333-9.397021 0-14.025435-2.75474-15.4509-3.818979-0.676405-1.077541-0.662079-0.716314-1.995447-1.940189l-353.122503-324.412624c11.609409-7.557116 25.445532-12.509918 40.300868-12.509918L843.814198 212.456786zM916.403446 736.484727c0 40.857547-31.730679 73.582879-72.589248 73.582879L183.27721 810.067606c-40.85857 0-75.28566-32.725332-75.28566-73.582879L107.99155 287.657512c0-10.630105 2.860141-20.735253 6.909363-29.882588l351.486236 322.096882c4.91187 5.302773 19.479657 17.676591 47.009663 17.676591 27.799136 0 42.303478-12.618389 47.076178-17.830087l346.800517-328.899822c6.251378 10.860349 9.129938 23.433712 9.129938 36.838L916.403446 736.484727z" fill="#ffffff" p-id="1512"></path></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -1,9 +1,10 @@
<template>
<a-modal
<ProModal
:drag="true"
:destroyOnClose="true"
:title="t('components.CronModal.title')"
:visible="props.visible"
:open="props.open"
:body-style="{ padding: '0 24px' }"
:destroy-on-close="true"
@cancel="fnCronModal(false)"
@ok="fnCronModal(true)"
>
@@ -31,9 +32,10 @@
v-model:value="cronStr"
disabled
/>
</a-modal>
</ProModal>
</template>
<script lang="ts" setup>
import { ProModal } from 'antdv-pro-modal';
import CronSecond from './components/Second.vue';
import CronMinute from './components/Minute.vue';
import CronHour from './components/Hour.vue';
@@ -43,9 +45,9 @@ import { reactive, computed, watch } from 'vue';
import useI18n from '@/hooks/useI18n';
const { t } = useI18n();
const emit = defineEmits(['cancel', 'ok', 'update:visible']);
const emit = defineEmits(['cancel', 'ok', 'update:open']);
const props = defineProps({
visible: {
open: {
type: Boolean,
required: true,
},
@@ -74,7 +76,7 @@ const cronStr = computed(() => {
/**监听是否显示初始cron属性 */
watch(
() => props.visible,
() => props.open,
val => {
if (!val) return;
const arr = props.cron.split(' ');
@@ -97,7 +99,7 @@ watch(
* @param val modal触发事件
*/
function fnCronModal(val: boolean) {
emit('update:visible', false);
emit('update:open', false);
if (val) {
emit('ok', cronStr.value);
} else {

View File

@@ -1,13 +1,13 @@
<script setup lang="ts">
import { computed } from 'vue';
import { computed, PropType } from 'vue';
const props = defineProps({
/**数据 */
options: {
type: Array,
type: Array as PropType<DictType[]>,
},
/**当前的值对应数据中的项字段 */
valueField: {
type: String,
type: String as PropType<keyof DictType>,
default: 'value',
},
/**当前的值 */
@@ -16,7 +16,7 @@ const props = defineProps({
default: '',
},
/**数据默认值,当前值不存在时 */
valueOption: {
valueDefault: {
type: [Number, String],
},
});
@@ -24,13 +24,13 @@ const props = defineProps({
/**遍历找到对应值数据项 */
const item = computed(() => {
if (Array.isArray(props.options) && props.options.length > 0) {
let option = (props.options as any[]).find(
let option = props.options.find(
item => `${item[props.valueField]}` === `${props.value}`
);
// 数据默认值
if (props.valueOption != undefined && !option) {
option = (props.options as any[]).find(
item => `${item[props.valueField]}` === `${props.valueOption }`
if (!option && props.valueDefault != undefined) {
option = props.options.find(
item => `${item[props.valueField]}` === `${props.valueDefault}`
);
}
return option;
@@ -41,14 +41,10 @@ const item = computed(() => {
<template>
<template v-if="item">
<a-tag
v-if="item.elTagType"
:class="item.elTagClass"
:color="item.elTagType"
>
<a-tag v-if="item.tagType" :class="item.tagClass" :color="item.tagType">
{{ item.label }}
</a-tag>
<span v-else :class="item.elTagClass">
<span v-else :class="item.tagClass">
{{ item.label }}
</span>
</template>

View File

@@ -1,168 +0,0 @@
<script setup lang="ts">
import { ref, watch, watchEffect, CSSProperties, computed } from 'vue';
import { useDraggable } from '@vueuse/core';
const emit = defineEmits(['update:visible', 'ok', 'cancel']);
/**于a-modal保持一致 */
const props = defineProps({
/**是否弹出显示,必传 */
visible: {
type: Boolean,
required: true,
},
/**窗口标题 */
title: {
type: String,
default: '',
},
/**窗口宽度 */
width: {
type: [String, Number],
default: '520px',
},
bodyStyle: {
type: Object,
default: {},
},
keyboard: {
type: Boolean,
default: true,
},
mask: {
type: Boolean,
default: true,
},
maskClosable: {
type: Boolean,
default: true,
},
maskStyle: {
type: Object,
default: {},
},
destroyOnClose: {
type: Boolean,
default: false,
},
confirmLoading: {
type: Boolean,
default: false,
},
footer: {
type: Object as any,
},
});
// 对标题进行监听
const modalTitleRef = ref<HTMLElement | null>(null);
const { x, y, isDragging } = useDraggable(modalTitleRef);
const startX = ref<number>(0);
const startY = ref<number>(0);
const startedDrag = ref(false);
const transformX = ref(0);
const transformY = ref(0);
const preTransformX = ref(0);
const preTransformY = ref(0);
const dragRect = ref({ left: 0, right: 0, top: 0, bottom: 0 });
watch([x, y], () => {
if (!startedDrag.value) {
startX.value = x.value;
startY.value = y.value;
const bodyRect = document.body.getBoundingClientRect();
const titleRectEl = modalTitleRef.value;
if (titleRectEl) {
const titleRect = titleRectEl.getBoundingClientRect();
dragRect.value.right = bodyRect.width - (titleRect.width + 24);
dragRect.value.bottom = bodyRect.height - (titleRect.height + 16);
}
preTransformX.value = transformX.value;
preTransformY.value = transformY.value;
}
startedDrag.value = true;
});
watchEffect(() => {
if (!isDragging.value) {
startedDrag.value = false;
}
if (startedDrag.value) {
const dragRectX = Math.min(
Math.max(dragRect.value.left + 24, x.value),
dragRect.value.right
);
transformX.value = preTransformX.value + dragRectX - startX.value;
const dragRectY = Math.min(
Math.max(dragRect.value.top + 16, y.value),
dragRect.value.bottom
);
transformY.value = preTransformY.value + dragRectY - startY.value;
}
});
// 位移
const transformStyle = computed<CSSProperties>(() => {
return {
transform: `translate(${transformX.value}px, ${transformY.value}px)`,
};
});
/**监听是否显示,位置还原 */
watch(
() => props.visible,
val => {
if (val) {
transformX.value = 0;
transformY.value = 0;
}
}
);
</script>
<template>
<a-modal
wrapClassName="draggable-modal"
:width="props.width"
:keyboard="props.keyboard"
:mask="props.mask"
:mask-closable="props.maskClosable"
:visible="props.visible"
:confirm-loading="props.confirmLoading"
:body-style="props.bodyStyle"
:mask-style="props.maskStyle"
:destroy-on-close="props.destroyOnClose"
:footer="props.footer"
@ok="(e:any) => emit('ok', e)"
@cancel="(e:any) => emit('cancel', e)"
>
<template #title>
<div
ref="modalTitleRef"
class="draggable-modal-title"
v-text="title"
></div>
</template>
<template #modalRender="{ originVNode }">
<div :style="transformStyle">
<component :is="originVNode" />
</div>
</template>
<slot></slot>
</a-modal>
</template>
<style lang="less">
.draggable-modal {
// 穿透选择文字
// 给a-modal设置 get-container=".ant-pro-page-container"
// 防止跳转显示
// &.ant-modal-wrap {
// pointer-events: none;
// }
&-title {
width: 100%;
cursor: move;
}
}
</style>

View File

@@ -0,0 +1,479 @@
<template>
<a-modal
v-model:open="visible"
:title="t('common.exportCustom')"
width="750px"
:confirm-loading="confirmLoading"
@ok="handleOk"
@cancel="handleCancel"
>
<div class="export-custom-container">
<!-- 列配置区域 -->
<div class="columns-config">
<div class="config-header">
<h4>{{ t('common.exportColumns') }}</h4>
<a-button type="link" @click="resetToDefault">
{{ t('common.resetToDefault') }}
</a-button>
</div>
<div class="columns-list">
<Container
@drop="onDrop"
:get-child-payload="getChildPayload"
drag-class="drag-ghost"
drop-class="drop-ghost"
drag-handle-selector=".drag-handle"
:non-drag-area-selector="'.column-name, .ant-checkbox-wrapper'"
>
<Draggable
v-for="(column, index) in customColumns"
:key="column.key"
class="column-item"
>
<div class="column-controls">
<a-checkbox
v-model:checked="column.visible"
@change="updateColumnVisibility(column)"
/>
<div class="drag-handle">
<HolderOutlined />
</div>
</div>
<div class="column-info">
<div class="column-name">
<a-input
v-model:value="column.title"
:placeholder="t('common.columnName')"
size="small"
/>
</div>
<!-- 隐藏col_数字标签不影响用户使用 -->
<!-- <div class="column-key">
<a-tag size="small" color="blue">{{ column.key }}</a-tag>
</div> -->
</div>
</Draggable>
</Container>
</div>
</div>
<!-- 预览区域 -->
<div class="preview-section">
<h4>{{ t('common.preview') }}</h4>
<div class="preview-table">
<a-table
:columns="previewColumns"
:data-source="previewData"
:pagination="false"
size="small"
:scroll="{ x: 400 }"
/>
</div>
</div>
</div>
</a-modal>
</template>
<script setup lang="ts">
import { ref, computed, watch, onMounted } from 'vue';
import { Modal, message } from 'ant-design-vue/es';
import { Container, Draggable } from 'vue3-smooth-dnd';
import useI18n from '@/hooks/useI18n';
import { ColumnsType } from 'ant-design-vue/es/table';
interface CustomColumn {
key: string;
title: string;
visible: boolean;
originalTitle: string;
dataIndex?: string;
customRender?: any;
columnIndex?: number; // Excel列索引
}
interface Props {
open: boolean;
originalColumns: ColumnsType;
sampleData: any[];
}
interface Emits {
(e: 'update:open', value: boolean): void;
(e: 'confirm', config: CustomColumn[]): void;
}
const props = defineProps<Props>();
const emit = defineEmits<Emits>();
const { t } = useI18n();
const visible = ref(false);
const confirmLoading = ref(false);
const customColumns = ref<CustomColumn[]>([]);
// 监听props变化
watch(() => props.open, (newVal) => {
visible.value = newVal;
if (newVal) {
initCustomColumns();
}
});
watch(visible, (newVal) => {
emit('update:open', newVal);
});
// 初始化自定义列配置
function initCustomColumns() {
// 如果传入的是完整的列配置包含columnIndex直接使用
if (props.originalColumns.length > 0 && (props.originalColumns[0] as any).columnIndex !== undefined) {
const columns: CustomColumn[] = props.originalColumns.map(col => ({
key: (col as any).key,
title: (col as any).title,
visible: true,
originalTitle: (col as any).originalTitle || (col as any).title,
dataIndex: (col as any).dataIndex,
columnIndex: (col as any).columnIndex
}));
// 尝试从本地存储加载配置
const savedConfig = localStorage.getItem('sgwc-cdr-export-config');
if (savedConfig) {
try {
const saved = JSON.parse(savedConfig);
console.log('Loaded saved config:', saved);
// 基于originalTitle匹配保存的配置
const mergedColumns = columns.map(col => {
const savedCol = saved.find((s: any) => s.originalTitle === col.originalTitle);
if (savedCol) {
console.log(`Matched column: ${col.originalTitle}, visible: ${savedCol.visible}, title: ${savedCol.title}`);
return {
...col,
visible: savedCol.visible !== undefined ? savedCol.visible : true,
title: savedCol.title || col.title
};
}
return col;
});
// 按照保存的顺序排列(如果存在)
const sortedColumns = sortColumnsByConfig(mergedColumns, saved);
console.log('Final columns after merge and sort:', sortedColumns);
customColumns.value = sortedColumns;
} catch (error) {
console.error('Failed to load saved export config:', error);
customColumns.value = columns;
}
} else {
console.log('No saved config found, using default columns');
customColumns.value = columns;
}
return;
}
// 兼容旧的表格列配置
const columns: CustomColumn[] = props.originalColumns
.filter(col => col.key !== 'id' && (col as any).dataIndex) // 过滤掉操作列
.map(col => ({
key: col.key as string,
title: col.title as string,
visible: true,
originalTitle: col.title as string,
dataIndex: (col as any).dataIndex as string,
customRender: (col as any).customRender
}));
// 尝试从本地存储加载配置
const savedConfig = localStorage.getItem('sgwc-cdr-export-config');
if (savedConfig) {
try {
const saved = JSON.parse(savedConfig);
// 合并保存的配置和当前列,只合并特定字段
const mergedColumns = columns.map(col => {
const savedCol = saved.find((s: CustomColumn) => s.key === col.key);
if (savedCol) {
return {
...col,
visible: savedCol.visible, // 只合并可见性
title: savedCol.title !== savedCol.originalTitle ? savedCol.title : col.title // 只合并自定义的标题
};
}
return col;
});
customColumns.value = mergedColumns;
} catch (error) {
console.error('Failed to load saved export config:', error);
customColumns.value = columns;
}
} else {
customColumns.value = columns;
}
}
// 按照保存的配置排序列
function sortColumnsByConfig(columns: CustomColumn[], savedConfig: CustomColumn[]): CustomColumn[] {
if (!savedConfig || savedConfig.length === 0) {
return columns;
}
// 创建一个映射originalTitle -> savedOrder
const orderMap = new Map<string, number>();
savedConfig.forEach((col, index) => {
orderMap.set(col.originalTitle, index);
});
// 排序:已保存的列按保存顺序,新列放在最后
return [...columns].sort((a, b) => {
const orderA = orderMap.has(a.originalTitle) ? orderMap.get(a.originalTitle)! : 9999;
const orderB = orderMap.has(b.originalTitle) ? orderMap.get(b.originalTitle)! : 9999;
return orderA - orderB;
});
}
// 预览列配置
const previewColumns = computed(() => {
return customColumns.value
.filter(col => col.visible)
.map(col => ({
title: col.title,
dataIndex: col.dataIndex || col.key,
key: col.key,
customRender: col.customRender
}));
});
// 预览数据只显示前2条降低预览高度
const previewData = computed(() => {
return props.sampleData.slice(0, 1);
});
// 更新列可见性
function updateColumnVisibility(column: CustomColumn) {
// 确保至少有一列可见
const visibleCount = customColumns.value.filter(col => col.visible).length;
if (visibleCount === 0) {
column.visible = true;
message.warning(t('common.atLeastOneColumn'));
}
}
// 拖拽相关函数
function getChildPayload(index: number) {
return customColumns.value[index];
}
function onDrop(dropResult: any) {
const { removedIndex, addedIndex } = dropResult;
if (removedIndex !== null && addedIndex !== null) {
const item = customColumns.value[removedIndex];
customColumns.value.splice(removedIndex, 1);
customColumns.value.splice(addedIndex, 0, item);
}
}
// 重置为默认配置
function resetToDefault() {
Modal.confirm({
title: t('common.confirm'),
content: t('common.resetConfirm'),
onOk() {
// 清除本地存储的配置
localStorage.removeItem('sgwc-cdr-export-config');
// 重新初始化
initCustomColumns();
message.success(t('common.resetSuccess'));
}
});
}
// 确认导出
function handleOk() {
const visibleColumns = customColumns.value.filter(col => col.visible);
if (visibleColumns.length === 0) {
message.error(t('common.selectAtLeastOneColumn'));
return;
}
confirmLoading.value = true;
// 保存配置到本地存储
try {
// 保存时只保存必要的字段,用于下次加载时恢复配置
const configToSave = customColumns.value.map((col, index) => ({
originalTitle: col.originalTitle || col.title, // 用于匹配列
title: col.title, // 自定义标题
visible: col.visible, // 可见性
order: index // 顺序
}));
localStorage.setItem('sgwc-cdr-export-config', JSON.stringify(configToSave));
console.log('Export config saved:', configToSave);
} catch (error) {
console.error('Failed to save export config:', error);
}
// 延迟一下让用户看到loading状态
setTimeout(() => {
emit('confirm', customColumns.value);
confirmLoading.value = false;
visible.value = false;
}, 500);
}
// 取消
function handleCancel() {
visible.value = false;
}
onMounted(() => {
if (props.open) {
initCustomColumns();
}
});
// 调试功能:清除有问题的缓存
function clearProblematicCache() {
localStorage.removeItem('sgwc-cdr-export-config');
console.log('Cleared problematic cache');
}
</script>
<style lang="less" scoped>
.export-custom-container {
.columns-config {
margin-bottom: 12px;
.config-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
h4 {
margin: 0;
font-size: 14px;
font-weight: 600;
}
}
.columns-list {
border: 1px solid #d9d9d9;
border-radius: 6px;
max-height: 200px;
overflow-y: auto;
.column-item {
display: flex;
align-items: center;
padding: 6px 10px;
border-bottom: 1px solid #f0f0f0;
transition: background-color 0.2s;
&:hover {
background-color: #fafafa;
}
&:last-child {
border-bottom: none;
}
.column-controls {
display: flex;
align-items: center;
margin-right: 12px;
.drag-handle {
margin-left: 8px;
cursor: grab;
color: #999;
padding: 4px;
border-radius: 4px;
transition: all 0.2s;
user-select: none;
&:hover {
color: #1890ff;
background-color: #f0f0f0;
}
&:active {
cursor: grabbing;
color: #0050b3;
background-color: #e6f7ff;
}
}
}
.column-info {
flex: 1;
display: flex;
align-items: center;
pointer-events: auto;
cursor: default;
.column-name {
flex: 1;
}
.column-key {
display: none; // 隐藏标签
}
}
// 禁止复选框触发拖拽
:deep(.ant-checkbox-wrapper) {
pointer-events: auto;
cursor: pointer;
}
}
}
}
.preview-section {
h4 {
margin: 0 0 10px 0;
font-size: 14px;
font-weight: 600;
}
.preview-table {
border: 1px solid #d9d9d9;
border-radius: 6px;
overflow: hidden;
max-height: 180px;
:deep(.ant-table-wrapper) {
.ant-table {
font-size: 12px;
}
.ant-table-thead > tr > th {
padding: 8px 8px;
font-size: 12px;
}
.ant-table-tbody > tr > td {
padding: 6px 8px;
font-size: 12px;
}
.ant-table-body {
max-height: 120px;
overflow-y: auto;
}
}
}
}
}
// 拖拽样式
.drag-ghost {
opacity: 0.5;
background: #f0f0f0;
}
.drop-ghost {
background: #e6f7ff;
}
</style>

View File

@@ -0,0 +1,141 @@
<script setup lang="ts">
import { onMounted, onUnmounted, computed } from 'vue';
import useI18n from '@/hooks/useI18n';
import useMaskStore from '@/store/modules/mask';
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { useRoute, useRouter } from 'vue-router';
import { useThrottleFn } from '@vueuse/core';
import { getConfigKey } from '@/api/system/config';
const maskStore = useMaskStore();
const route = useRoute();
const router = useRouter();
const { t } = useI18n();
/**显示遮罩 */
const isOpen = computed(() => !['none', 'lock'].includes(maskStore.type));
// 用户无操作一段时间后进行锁屏
function idleTimeout(time: number, callback: Function) {
if (time === 0) return;
let timeoutId: any;
let idleTime = 0;
function resetIdleTime() {
idleTime = 0;
}
// 监听用户活动事件
document.addEventListener('mousemove', useThrottleFn(resetIdleTime, 1000));
document.addEventListener('keydown', useThrottleFn(resetIdleTime, 1000));
document.addEventListener('click', useThrottleFn(resetIdleTime, 1000));
// 定时检查用户是否长时间无操作
timeoutId = setInterval(() => {
idleTime += 1000;
if (idleTime >= time) {
clearTimeout(timeoutId);
callback();
}
}, 1000);
}
/**组件实例挂载之后调用 */
onMounted(() => {
// 本地锁定类型设置;
maskStore.handleMaskType(maskStore.type);
getConfigKey('sys.lockTime')
.then(res => {
if (res.code === RESULT_CODE_SUCCESS && res.data) {
maskStore.lockTimeout = +res.data;
}
maskStore.handleMaskType(maskStore.type);
// 是锁屏的调整到页面
if (maskStore.type === 'lock') {
maskStore.handleMaskType('lock');
router.push({ name: 'LockScreen', query: { redirect: route.path } });
}
})
.finally(() => {
// 无操作x秒后跳转锁屏
idleTimeout(maskStore.lockTimeout * 1000, () => {
if (route.name === 'LockScreen') return;
maskStore.handleMaskType('lock');
router.push({ name: 'LockScreen', query: { redirect: route.path } });
});
});
});
/**组件实例被卸载之后调用 */
onUnmounted(() => {});
</script>
<template>
<a-modal
v-model:open="isOpen"
get-container="#app"
:footer="null"
:zIndex="1008"
:closable="false"
:keyboard="false"
:centered="true"
:maskClosable="false"
:maskStyle="{
backdropFilter: 'blur(10px)',
WebkitBackdropFilter: 'blur(10px)',
}"
wrapClassName="lock-screen"
:wrap-style="{
background: 'rgba(0, 0, 0, 0.85)',
}"
>
<!-- 锁屏-OMC重启升级 -->
<div class="lock-screen_reload" v-if="maskStore.type === 'reload'">
<LoadingOutlined style="font-size: 56px" />
<div class="text">
{{ t('components.LockScreen.backReload') }}
</div>
<div class="desc">
{{ t('components.LockScreen.backReload2') }}
</div>
</div>
<!-- 锁屏-OMC系统重置 -->
<div class="lock-screen_reload" v-if="maskStore.type === 'reset'">
<LoadingOutlined style="font-size: 56px" />
<div class="text">
{{ t('components.LockScreen.systemReset') }}
</div>
<div class="desc">
{{ t('components.LockScreen.systemReset2') }}
</div>
</div>
</a-modal>
</template>
<style lang="less" scoped>
.lock-screen_reload {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
background-color: transparent;
color: #fff;
& .text {
font-size: 24px;
font-weight: bold;
letter-spacing: 4px;
margin-top: 24px;
}
& .desc {
margin-top: 8px;
font-size: 16px;
}
}
</style>
<style lang="less">
.lock-screen {
.ant-modal-content {
background-color: transparent;
box-shadow: none;
}
}
</style>

View File

@@ -0,0 +1,252 @@
//* THIS FILE IS AUTO-GENERATED. DO NOT EDIT.
export default {
af: "Afghanistan",
ax: "Åland Islands",
al: "Albania",
dz: "Algeria",
as: "American Samoa",
ad: "Andorra",
ao: "Angola",
ai: "Anguilla",
aq: "Antarctica",
ag: "Antigua & Barbuda",
ar: "Argentina",
am: "Armenia",
aw: "Aruba",
au: "Australia",
at: "Austria",
az: "Azerbaijan",
bs: "Bahamas",
bh: "Bahrain",
bd: "Bangladesh",
bb: "Barbados",
by: "Belarus",
be: "Belgium",
bz: "Belize",
bj: "Benin",
bm: "Bermuda",
bt: "Bhutan",
bo: "Bolivia",
ba: "Bosnia & Herzegovina",
bw: "Botswana",
bv: "Bouvet Island",
br: "Brazil",
io: "British Indian Ocean Territory",
vg: "British Virgin Islands",
bn: "Brunei",
bg: "Bulgaria",
bf: "Burkina Faso",
bi: "Burundi",
kh: "Cambodia",
cm: "Cameroon",
ca: "Canada",
cv: "Cape Verde",
bq: "Caribbean Netherlands",
ky: "Cayman Islands",
cf: "Central African Republic",
td: "Chad",
cl: "Chile",
cn: "China",
cx: "Christmas Island",
cc: "Cocos (Keeling) Islands",
co: "Colombia",
km: "Comoros",
cg: "Congo - Brazzaville",
cd: "Congo - Kinshasa",
ck: "Cook Islands",
cr: "Costa Rica",
ci: "Côte dIvoire",
hr: "Croatia",
cu: "Cuba",
cw: "Curaçao",
cy: "Cyprus",
cz: "Czechia",
dk: "Denmark",
dj: "Djibouti",
dm: "Dominica",
do: "Dominican Republic",
ec: "Ecuador",
eg: "Egypt",
sv: "El Salvador",
gq: "Equatorial Guinea",
er: "Eritrea",
ee: "Estonia",
sz: "Eswatini",
et: "Ethiopia",
fk: "Falkland Islands",
fo: "Faroe Islands",
fj: "Fiji",
fi: "Finland",
fr: "France",
gf: "French Guiana",
pf: "French Polynesia",
tf: "French Southern Territories",
ga: "Gabon",
gm: "Gambia",
ge: "Georgia",
de: "Germany",
gh: "Ghana",
gi: "Gibraltar",
gr: "Greece",
gl: "Greenland",
gd: "Grenada",
gp: "Guadeloupe",
gu: "Guam",
gt: "Guatemala",
gg: "Guernsey",
gn: "Guinea",
gw: "Guinea-Bissau",
gy: "Guyana",
ht: "Haiti",
hm: "Heard & McDonald Islands",
hn: "Honduras",
hk: "Hong Kong SAR China",
hu: "Hungary",
is: "Iceland",
in: "India",
id: "Indonesia",
ir: "Iran",
iq: "Iraq",
ie: "Ireland",
im: "Isle of Man",
il: "Israel",
it: "Italy",
jm: "Jamaica",
jp: "Japan",
je: "Jersey",
jo: "Jordan",
kz: "Kazakhstan",
ke: "Kenya",
ki: "Kiribati",
kw: "Kuwait",
kg: "Kyrgyzstan",
la: "Laos",
lv: "Latvia",
lb: "Lebanon",
ls: "Lesotho",
lr: "Liberia",
ly: "Libya",
li: "Liechtenstein",
lt: "Lithuania",
lu: "Luxembourg",
mo: "Macao SAR China",
mg: "Madagascar",
mw: "Malawi",
my: "Malaysia",
mv: "Maldives",
ml: "Mali",
mt: "Malta",
mh: "Marshall Islands",
mq: "Martinique",
mr: "Mauritania",
mu: "Mauritius",
yt: "Mayotte",
mx: "Mexico",
fm: "Micronesia",
md: "Moldova",
mc: "Monaco",
mn: "Mongolia",
me: "Montenegro",
ms: "Montserrat",
ma: "Morocco",
mz: "Mozambique",
mm: "Myanmar (Burma)",
na: "Namibia",
nr: "Nauru",
np: "Nepal",
nl: "Netherlands",
nc: "New Caledonia",
nz: "New Zealand",
ni: "Nicaragua",
ne: "Niger",
ng: "Nigeria",
nu: "Niue",
nf: "Norfolk Island",
kp: "North Korea",
mk: "North Macedonia",
mp: "Northern Mariana Islands",
no: "Norway",
om: "Oman",
pk: "Pakistan",
pw: "Palau",
ps: "Palestinian Territories",
pa: "Panama",
pg: "Papua New Guinea",
py: "Paraguay",
pe: "Peru",
ph: "Philippines",
pn: "Pitcairn Islands",
pl: "Poland",
pt: "Portugal",
pr: "Puerto Rico",
qa: "Qatar",
re: "Réunion",
ro: "Romania",
ru: "Russia",
rw: "Rwanda",
ws: "Samoa",
sm: "San Marino",
st: "São Tomé & Príncipe",
sa: "Saudi Arabia",
sn: "Senegal",
rs: "Serbia",
sc: "Seychelles",
sl: "Sierra Leone",
sg: "Singapore",
sx: "Sint Maarten",
sk: "Slovakia",
si: "Slovenia",
sb: "Solomon Islands",
so: "Somalia",
za: "South Africa",
gs: "South Georgia & South Sandwich Islands",
kr: "South Korea",
ss: "South Sudan",
es: "Spain",
lk: "Sri Lanka",
bl: "St. Barthélemy",
sh: "St. Helena",
kn: "St. Kitts & Nevis",
lc: "St. Lucia",
mf: "St. Martin",
pm: "St. Pierre & Miquelon",
vc: "St. Vincent & Grenadines",
sd: "Sudan",
sr: "Suriname",
sj: "Svalbard & Jan Mayen",
se: "Sweden",
ch: "Switzerland",
sy: "Syria",
tw: "Taiwan",
tj: "Tajikistan",
tz: "Tanzania",
th: "Thailand",
tl: "Timor-Leste",
tg: "Togo",
tk: "Tokelau",
to: "Tonga",
tt: "Trinidad & Tobago",
tn: "Tunisia",
tr: "Turkey",
tm: "Turkmenistan",
tc: "Turks & Caicos Islands",
tv: "Tuvalu",
um: "U.S. Outlying Islands",
vi: "U.S. Virgin Islands",
ug: "Uganda",
ua: "Ukraine",
ae: "United Arab Emirates",
gb: "United Kingdom",
us: "United States",
uy: "Uruguay",
uz: "Uzbekistan",
vu: "Vanuatu",
va: "Vatican City",
ve: "Venezuela",
vn: "Vietnam",
wf: "Wallis & Futuna",
eh: "Western Sahara",
ye: "Yemen",
zm: "Zambia",
zw: "Zimbabwe",
};

Some files were not shown because too many files have changed in this diff Show More