Compare commits

..
504 Commits
Author SHA1 Message Date
TsMask 8a7698b58f style: 表格size=small边距6px/拖拽mask穿透导致滚动失效 2023-11-30 16:49:15 +08:00
TsMask 805785ccb7 style: UE终端表格优化 2023-11-30 16:45:55 +08:00
TsMask f2d5379506 feat: 新增PCF用户策略控制 2023-11-30 16:43:45 +08:00
simonzhangsz 134406a82c fix: alarm forwarding 2023-11-29 20:12:41 +08:00
simonzhangsz 19f4f2e1a1 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-29 19:28:38 +08:00
simonzhangsz fffc40b4a3 fix: logo 2023-11-29 19:28:33 +08:00
TsMask 95fbce6b0e fix: 根据配置隐藏多语言选择 2023-11-29 19:27:49 +08:00
lai 1784941670 --操作日志的中英文 2023-11-29 19:00:47 +08:00
TsMask 38c3964f5c feat: 新增终端加N3IWF页面 2023-11-29 15:12:45 +08:00
simonzhangsz f9ab845feb Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-29 11:52:01 +08:00
simonzhangsz 48247bbb25 fix: backup management 2023-11-29 11:51:59 +08:00
TsMask 7c66d15e58 fix: 上传切片文件并发送文件到网元端 2023-11-29 10:13:56 +08:00
TsMask 1c83d7ca46 feat: 帮助文档页面多语言 2023-11-29 09:59:36 +08:00
lai ab79f577af 黄金指标数据查询问题,添加排序 2023-11-29 09:48:42 +08:00
simonzhangsz 14a8af033c fix: en locales 2023-11-29 09:27:22 +08:00
TsMask 572551dd76 fix: 延迟加载数据 2023-11-28 21:27:35 +08:00
TsMask c8e8cca410 chore: 更换layout依赖库 2023-11-28 21:08:26 +08:00
TsMask 642fff876a fix: 系统名称长度设置20位字符 2023-11-28 20:55:05 +08:00
TsMask 8e1edc680e feat: 帮助文档PDF查看器 2023-11-28 20:53:21 +08:00
simonzhangsz 6d9322f483 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-28 19:42:50 +08:00
simonzhangsz 4cd896abfe fix: cell information to NodeB Information 2023-11-28 19:33:18 +08:00
lai ac93726a0f 新增性能数据排序功能 2023-11-28 19:21:26 +08:00
TsMask 534f261bd4 fix: 修复帮助文档跳转404 2023-11-28 16:43:51 +08:00
TsMask a22213eae3 chore: config.js说明 2023-11-28 15:22:00 +08:00
TsMask c21fbd133a fix: 参数配置编辑只读项禁用编辑 2023-11-28 15:19:20 +08:00
TsMask 55981f8936 style: 调整UDM用户数据表格靠左 2023-11-28 15:12:51 +08:00
TsMask 252ed66ff8 style: 文件导入信息输出框 2023-11-28 14:48:02 +08:00
TsMask 44c9f0879b fix: mml管理文件上传提示多语言 2023-11-28 14:40:18 +08:00
TsMask 9f16fb3df6 feat: MML操作支持多条发送/文件上传到网元 2023-11-28 14:38:12 +08:00
TsMask a41936a199 fix: UDM鉴权用户导入导出接口调整 2023-11-28 14:37:17 +08:00
TsMask dff94061e2 fix: MML命令处理发送多条 2023-11-28 14:36:49 +08:00
TsMask 37d59bf7da fix: 参数配置行记录read-only ro 2023-11-27 17:19:50 +08:00
TsMask 7be72be2f8 fix: 表格列数据响应改为 ref/重新加载表格10s 2023-11-27 16:58:55 +08:00
TsMask ec21656385 feat: 参数配置modal拖拽/表格列排序可选 2023-11-27 16:40:04 +08:00
TsMask c1d513bc82 ref: 优化表格列排序组件 2023-11-27 16:37:56 +08:00
TsMask a6542145e3 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-27 16:37:21 +08:00
lai c5c3c9be71 首页table中的网元异常正常中英文 2023-11-27 14:30:28 +08:00
TsMask ac14a207c4 fix: 超过高度才显示滚动条 2023-11-25 19:25:19 +08:00
TsMask a991cf3370 fix: 拖动Modal穿透复制文字挂载.ant-pro-page-container 2023-11-25 19:04:48 +08:00
TsMask af53fe1d89 fix: UDM用户数据表格调整 2023-11-25 19:03:51 +08:00
TsMask 8370598e17 docs: 修改配置文件说明 2023-11-25 15:41:26 +08:00
TsMask 5094b91f28 del: doc.pdf 2023-11-25 15:41:00 +08:00
TsMask 4c06ddd5f9 fix: Modal拖拽参数传递 2023-11-25 15:28:31 +08:00
TsMask 133affa551 feat: 表格字段列排序可选组件 2023-11-25 15:28:04 +08:00
TsMask 03a3899377 fix: UDM用户数据表格优化 2023-11-25 15:26:56 +08:00
lai 9f5f35c79d ---告警帮助文档中英文 2023-11-24 19:36:40 +08:00
TsMask 44ee479b32 fix: UDM用户信息编辑拖动title 2023-11-24 19:16:39 +08:00
simonzhangsz 62a15150b6 fix: RatType 2023-11-24 18:35:05 +08:00
TsMask 5accdd1b31 fix: 在线用户部门列隐藏 2023-11-24 17:16:58 +08:00
TsMask f3fc415338 feat: 新增可拖拽modal框 2023-11-24 17:06:18 +08:00
simonzhangsz 018196eb88 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-24 14:30:18 +08:00
simonzhangsz 3e29706b26 fix: en locales 2023-11-24 14:30:16 +08:00
TsMask 627e579729 feat: 帮助文档多语言文件上传 2023-11-24 14:20:59 +08:00
simonzhangsz 030254db4e fix: en locales 2023-11-24 14:13:51 +08:00
TsMask 0e7b6fa6e4 fix: 隐藏登录页账号密码 2023-11-24 10:04:33 +08:00
simonzhangsz 57f126b5f2 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-24 09:07:57 +08:00
simonzhangsz 8fa758d747 fix: operation 2023-11-24 09:07:55 +08:00
TsMask 2030509cbb fix: 参数配置表单样式排齐 2023-11-23 21:59:34 +08:00
TsMask 10a48af368 feat: UDM用户数据代码完善 2023-11-23 21:49:57 +08:00
TsMask 5101b1bae3 fix: 网络请求统一10秒超时 2023-11-23 21:49:07 +08:00
TsMask c590482fa4 fix: 导出请求时使用接受语言 2023-11-23 15:05:19 +08:00
TsMask c1c6500df2 feat: 新增系统设置帮助文档/官网设置 2023-11-23 15:04:46 +08:00
TsMask 12499e78ea fix: 请求结果msg取多语言 2023-11-22 19:33:46 +08:00
TsMask 6ada29bc9b fix: 移除mml命令页面输出字符串 2023-11-22 16:39:39 +08:00
TsMask 0f988f65e4 fix: 参数配置未知参数类型默认用文本输入框 2023-11-22 15:38:27 +08:00
TsMask c8a53c0c0f chore: 更新版本号号 2023-11-22 15:27:53 +08:00
TsMask d870f12daf feat: mml命令操作支持输入多行发送 2023-11-22 15:27:13 +08:00
simonzhangsz a960e77fc6 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-22 14:22:23 +08:00
simonzhangsz f32d5dd06e fix: en locales 2023-11-22 14:22:21 +08:00
lai f9bd9f7292 --网元管理 删除成功的错误提示 2023-11-22 10:27:54 +08:00
TsMask 6ecd98650b fix: 日志导出响应类型推到 2023-11-22 09:35:54 +08:00
simonzhangsz c49da78996 fix: ... 2023-11-22 09:35:17 +08:00
simonzhangsz c4f3eabc71 fix: alarm forwarding en locales 2023-11-22 09:32:36 +08:00
TsMask 3a6059263f fix: 调度任务状态多语言 2023-11-21 19:48:49 +08:00
TsMask a104fbf7eb feat: 帮助手册右上侧按钮 2023-11-21 18:46:19 +08:00
TsMask 407e15ca3c fix: 底部时间导致页面重绘吃字 2023-11-21 18:38:55 +08:00
TsMask 60adbce55d fix: 软件管理下发createTime 2023-11-21 18:38:22 +08:00
TsMask 5e8049c3b3 fix: 参数配置array显示枚举值 2023-11-21 15:54:36 +08:00
TsMask 129c9085d5 fix: 告警Severity字典显示 2023-11-21 15:16:09 +08:00
TsMask 3bc4fafde7 fix: 告警列表类型改字典 2023-11-21 11:28:20 +08:00
TsMask 2e165fbcff fix: 取消参数配置number输入最大值限制 2023-11-21 09:35:19 +08:00
TsMask 474502b45b feat: 帮助文档pivew 2023-11-20 19:05:01 +08:00
TsMask 081523db42 feat: 底部显示服务器时间 2023-11-20 19:04:27 +08:00
TsMask 21cd314c46 fix: UDM用户数据接口变更 2023-11-20 19:03:51 +08:00
TsMask 5c792b9ac5 chore: 更新版本号 2023-11-20 18:16:26 +08:00
TsMask 14eabfe1fe style: 岗位填入值顺序 2023-11-20 18:14:39 +08:00
TsMask 1e5874d7e7 fix: 调度任务隐藏无用选项 2023-11-20 18:13:35 +08:00
TsMask e9054e320f fix: 首次访问获取客户端默认语言/静态路由title 2023-11-20 18:12:29 +08:00
simonzhangsz 9fdd322757 fix: change to 2.2311.8 2023-11-20 16:36:00 +08:00
TsMask 4c9388ffcb fix: 岗位/角色表格字段靠左 2023-11-17 17:52:47 +08:00
simonzhangsz dc4d91eb41 fix: en locales 2023-11-17 14:28:46 +08:00
simonzhangsz 86e3795693 fix: en locales 2023-11-17 13:59:26 +08:00
simonzhangsz 03411444e4 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-17 11:33:50 +08:00
simonzhangsz f401ded041 fix: update login page title 2023-11-17 11:33:48 +08:00
TsMask 010cb6d45b fix: 系统设置LOGO菜单多语言 2023-11-17 11:16:56 +08:00
TsMask bb577bef0b fix: 处理router.多语言显示 2023-11-17 11:16:08 +08:00
TsMask 69bd3879b1 style: 菜单/配置表格文字靠左 2023-11-17 10:03:02 +08:00
TsMask ae6feb15a2 fix: 参数配置嵌套展开加图标按钮类型 2023-11-17 10:02:27 +08:00
TsMask b8feb6fa35 style: 网元新增输入端口提示-多语言 2023-11-17 10:01:12 +08:00
simonzhangsz bb92be64fd Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-16 16:46:35 +08:00
simonzhangsz ce556f8a57 fix: en locales 2023-11-16 16:46:32 +08:00
TsMask 6f246c5800 style: 多语言中文zebra命名错误 2023-11-16 16:43:25 +08:00
TsMask 6ceee6498f fix: mml数据过滤不激活使用的记录 2023-11-16 16:42:45 +08:00
TsMask 261806ccda style: 菜单管理新增多语言{}变量异常 2023-11-16 14:21:22 +08:00
TsMask bfc0afdb14 feat: 参数配置四个版本排版-_-|| 2023-11-16 11:40:18 +08:00
TsMask 1238dc3a35 feat: 参数配置TreeTable组合 2023-11-15 20:42:15 +08:00
TsMask 7d5ee27bee style: 任务和字典列表字段靠左 2023-11-15 19:53:55 +08:00
TsMask b9f8426b3f fix: 参数配置list回显 2023-11-15 19:53:21 +08:00
simonzhangsz a5d380209e Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-15 17:48:11 +08:00
simonzhangsz 65c6571c79 fix: en locales 2023-11-15 17:48:10 +08:00
lai 2ef4261e1b ---完善国际化 2023-11-15 17:45:28 +08:00
simonzhangsz 84e7e2ef9f fix: update english locale 2023-11-15 15:28:27 +08:00
TsMask 5980c7d881 fix: en treeSelectTip 2023-11-15 15:10:03 +08:00
TsMask de6271df00 feat: 新增参数配置Tree/调整参数配置Form 2023-11-15 14:59:43 +08:00
TsMask 4f18fe2552 fix: 默认选择AMF找不到选首个 2023-11-15 14:58:36 +08:00
TsMask b569fa57b6 fix: 参数配置Form标签top横向 2023-11-15 10:23:19 +08:00
lai c1a0c6f208 --完善国际化 2023-11-14 19:28:33 +08:00
TsMask e2b4a54943 fix: 中英CE/测试服务2.166 2023-11-14 18:53:45 +08:00
TsMask a8854b4e71 feat: 参数配置表单竖向形式/多语言 2023-11-14 17:14:52 +08:00
TsMask 28483a7a8b fix: 参数配置Tree树状展开 2023-11-14 17:11:53 +08:00
simonzhangsz b928d9a05c fix:en 2023-11-14 10:36:59 +08:00
simonzhangsz e5a41b550e fix: english update 2023-11-14 09:59:09 +08:00
lai 07779ebd37 --遗漏的中文信息以及英文拼写 2023-11-13 17:00:17 +08:00
TsMask 38c2c6bdc3 fix: 签约名称修改 4G EPS ODB 2023-11-13 16:03:22 +08:00
lai 0aca52e556 --告警界面的xy轴 2023-11-13 11:41:00 +08:00
TsMask fc7b4e7223 fix: 中英CE/测试服务2.166 2023-11-13 11:21:29 +08:00
TsMask 3389146569 style: 字典数据管理多语言 2023-11-11 17:25:23 +08:00
lai 7a93768fd0 ---新增参数配置,字典配置国家化 2023-11-11 16:31:42 +08:00
TsMask cca9973b28 style: 缓存信息多语言 2023-11-11 16:27:19 +08:00
TsMask 66322caf23 style: MML接口设置多语言 2023-11-11 15:15:22 +08:00
TsMask b7340ff101 style: 个人中心多语言 2023-11-11 14:51:52 +08:00
TsMask 3ae8a7c237 fix: 静态路由菜单国际化/切换刷新 2023-11-11 11:44:21 +08:00
lai 1c82719af0 ---完善性能板块国际化 2023-11-11 11:20:54 +08:00
TsMask 9c28e19413 style: 调度任务日志多语言 2023-11-11 10:54:48 +08:00
lai 447a8a5e0d ---新增系统信息国际化 2023-11-10 19:24:53 +08:00
TsMask 7ffcc2f881 style: 调度任务多语言 2023-11-10 19:12:43 +08:00
lai d72ba4622e 新增性能板块国际化 2023-11-10 18:47:46 +08:00
lai 753c73dbd1 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-10 18:27:19 +08:00
lai ca4493aaa6 --日志板块 2023-11-10 18:25:56 +08:00
TsMask 6a683f8754 style: MML页面多语言 2023-11-10 16:52:08 +08:00
lai b8190bd640 分配用户国际化 2023-11-10 16:37:51 +08:00
lai 1d4db90b1e --新增岗位管理国际化 2023-11-10 15:57:49 +08:00
TsMask 0bc4db4a52 style: 用户管理多语言 2023-11-10 15:54:22 +08:00
TsMask e5481638f5 style: 参数配置管理多语言 2023-11-10 15:48:41 +08:00
lai 973534a6ab --部门管理的国际化 2023-11-10 15:35:37 +08:00
lai 9778244167 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-10 15:02:53 +08:00
lai d02339c1ea --在线用户,角色管理国际化 2023-11-10 14:44:44 +08:00
TsMask 7d361f5c31 style: 用户管理多语言 2023-11-10 14:38:36 +08:00
TsMask 04a7b3887f style: error页面多语言 2023-11-10 14:15:14 +08:00
TsMask be4e1b1d09 style: 系统设置多语言 2023-11-10 11:43:03 +08:00
TsMask 946db8848c style: 系统资源多语言 2023-11-10 10:18:49 +08:00
TsMask e4b504825d style: 布局多语言 2023-11-10 10:03:37 +08:00
TsMask b41d3c3882 style: 补充跟踪栏目页面多语言 2023-11-10 09:50:10 +08:00
lai 22f2cd9a2e --中英文国际化 2023-11-09 20:22:57 +08:00
simonzhangsz c71e56a937 fix: reload 2023-11-09 20:20:03 +08:00
lai a43b5b8ab3 ---PCF,IMS,OMC取消重载功能 2023-11-09 20:15:30 +08:00
lai ffb9ac6090 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-09 20:06:19 +08:00
lai 178a08cccc --配置模块,在线用户的国际化 2023-11-09 20:06:16 +08:00
TsMask 4eb8341340 style: 将filter提示placeholder去除 2023-11-09 16:19:03 +08:00
lai f458c18dbd --新增历史告警,故障通用设置国际化 2023-11-09 16:17:02 +08:00
TsMask 74eb29d64d style: mml日志横向滚动 2023-11-09 15:41:32 +08:00
lai 760e7663f2 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-09 15:31:40 +08:00
lai 27bac11d3c --修改context默认值 2023-11-09 15:31:21 +08:00
TsMask abec41af58 style: 默认显示中文zh_CN 2023-11-09 14:37:46 +08:00
simonzhangsz a91d0e7736 fix: ... 2023-11-09 14:10:38 +08:00
TsMask c3b46d0f0c fix: UDM用户隐藏csv文件导入导出/保持回显 2023-11-09 12:04:28 +08:00
simonzhangsz b983d77aeb Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-09 11:52:55 +08:00
simonzhangsz 5ed9c4a775 fix: alarm page en ... 2023-11-09 11:52:54 +08:00
lai 5630f73cca --签约用户odb回显问题 2023-11-09 11:43:11 +08:00
simonzhangsz 7fbac3b32e fix: alarm page en 2023-11-09 11:43:00 +08:00
lai c5eb853a21 增加活动告警国际化 2023-11-09 10:55:38 +08:00
lai bca6170f0a 调整顺序 2023-11-09 10:37:13 +08:00
TsMask f8b036b462 chore: 更新copyright 2023-11-09 10:26:22 +08:00
lai 4631fb2061 修正批量添加表单 2023-11-09 10:17:31 +08:00
TsMask 12eeac3c11 fix: 重复dayjs导入问题 2023-11-09 09:38:58 +08:00
lai 72a6c78230 --引入i18包 2023-11-08 19:38:30 +08:00
TsMask 7eccfd6877 feat: 从客户端获取首选语言 2023-11-08 18:17:30 +08:00
lai d27577b799 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-08 18:16:03 +08:00
lai 3c39afd4eb --调换表单顺序 2023-11-08 18:15:59 +08:00
TsMask 0915fe6821 feat: 从客户端获取首选语言 2023-11-08 17:56:54 +08:00
lai 7f5fef0c8b UDM签约用户国际化 2023-11-08 17:53:58 +08:00
TsMask 4688634205 style: 控制台输出版本号 2023-11-08 16:50:39 +08:00
TsMask de48ffa10c feat: 从客户端获取首选语言 2023-11-08 16:47:07 +08:00
lai d9940c7c0d --UDM鉴权用户国际化 2023-11-08 16:17:29 +08:00
TsMask d19d2c868c style: 提示top悬浮靠左 2023-11-08 16:05:18 +08:00
TsMask dff8f0dd61 fix: 按钮loading不关闭问题 2023-11-08 16:00:03 +08:00
TsMask 1b57794b76 style: 修复页面隐藏占位 2023-11-08 15:59:32 +08:00
TsMask 98a445daae fix: 判断405状态异常 2023-11-08 11:45:52 +08:00
lai 1bc9358d30 ---用户管理,网元管理等中英文 2023-11-08 11:21:39 +08:00
TsMask 8e467b95a2 style: 优化UDM用户数据操作排版布局 2023-11-07 19:49:38 +08:00
TsMask 21c702ce9b fix: 有效账号格式不少于5位 2023-11-07 16:43:57 +08:00
TsMask 50cef777d5 fix: 有效密码格式 2023-11-07 14:50:21 +08:00
TsMask 3297d1f00b fix: 终端>UE在线信息 2023-11-07 11:04:35 +08:00
TsMask b69c0a7526 fix: 终端>IMS在线用户 2023-11-07 10:59:34 +08:00
TsMask 4acdbbb1f6 fix: 终端>5G基站信息 2023-11-07 10:55:50 +08:00
simonzhangsz 8c8e28d894 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-11-06 18:47:50 +08:00
simonzhangsz 14dcdc7fb4 fix: logo icon 2023-11-06 18:47:45 +08:00
TsMask e4e24a6d76 fix: 配置参数刷新关闭嵌套编辑 2023-11-06 18:23:28 +08:00
TsMask 4083a9bf1c fix: 背景图片上传必须小于10MB 2023-11-06 18:05:31 +08:00
TsMask 0580fdf941 fix: 配置参数输入框充满 2023-11-06 17:28:57 +08:00
TsMask 33f16f6173 fix: 配置参数tooltop提示靠左 2023-11-06 16:58:18 +08:00
lai 8165bacace ---新增备份管理中新增备份说明 2023-11-06 16:49:23 +08:00
TsMask 4e3e07f603 fix: 配置参数下拉选择宽度固定 2023-11-06 16:38:25 +08:00
TsMask 5db5c50f73 fix: 隐藏参数配置placeholder 2023-11-06 15:47:28 +08:00
lai 2a999a81fa ---针对UDM签约用户静态ip 2023-11-06 14:58:46 +08:00
TsMask a931d7006f fix: 跟踪任务不清除上次提交值 2023-11-06 14:53:13 +08:00
TsMask d09a0c9743 fix: 参数配置隐藏重新载入并移动网元管理 2023-11-06 14:42:13 +08:00
TsMask ca0913a8cf fix: 列表查询pageNum设为1 2023-11-06 14:33:40 +08:00
TsMask de16c3d1f5 fix: 兼容旧前端可改配置文件 2023-11-06 10:46:08 +08:00
TsMask 0b58c00566 del: 删除swragger页面 2023-11-06 10:44:50 +08:00
TsMask 81d1b3f9cd style: MML树根节点点击展开 2023-11-03 20:17:07 +08:00
lai f9fd5fec8f --版本号 2023-11-03 18:56:47 +08:00
lai 76b15319ab --告警前转SMS选填 2023-11-03 18:55:31 +08:00
TsMask 9d1782f806 style: 网管历史告警中的告警产生时间和告警消除时间需支持升降序排序 2023-11-03 12:09:58 +08:00
TsMask 0979a8f391 fix: 参数都是可选的,不填值不校验 2023-11-03 10:31:26 +08:00
TsMask a7b128b53a fix: 参数都是可选的,不填值不校验 2023-11-03 10:13:05 +08:00
TsMask fa7645bd5d style: 调整表格头挤压 2023-11-02 20:36:59 +08:00
TsMask 17826f916a fix: 去除ki/opc列显示 2023-11-02 20:27:33 +08:00
TsMask 7b794574cb fix: 超级管理员和自己不能改自己用户状态 2023-11-02 18:33:17 +08:00
TsMask 9a37522231 fix: 正则有效IPv6格式 2023-11-02 18:32:27 +08:00
TsMask fdad06d327 style: 显示用户权限列 2023-11-02 17:11:27 +08:00
TsMask ba1f38c07d fix: logo宽度固定 2023-11-02 17:11:01 +08:00
TsMask 8f5f6e1d7e style: 时间范围预设可选值 2023-11-02 17:09:47 +08:00
TsMask ac27336985 fix: 打开200HTML内容解析异常 2023-11-02 17:09:18 +08:00
TsMask 0eb2744a25 fix: 系统资源数据 2023-11-02 10:00:03 +08:00
TsMask 9adc5f402d style: 数据列表列宽固定操作 2023-11-01 19:44:29 +08:00
TsMask 13e2008a17 style: 数据列表列宽固定操作 2023-11-01 19:38:56 +08:00
TsMask e97943bf10 style: 数据列表列宽固定操作 2023-11-01 19:16:32 +08:00
TsMask 6cfe080a94 chore: 更新版本号1101 2023-11-01 18:09:59 +08:00
TsMask 940c0d2134 style: 登录页面标题 2023-11-01 18:09:28 +08:00
TsMask ba0ab5bad3 fix: 默认超时时间30_000 2023-11-01 17:54:20 +08:00
TsMask 0835afa374 fix: 接口超时 180_1000 2023-11-01 17:53:59 +08:00
TsMask 25f7b105eb feat: 资源监控信息多语言 2023-11-01 17:47:04 +08:00
TsMask 97329fa3c9 style: 登录底部版权声明变量 2023-11-01 17:46:49 +08:00
TsMask 45ddbd3bc2 feat: echart折线图 2023-11-01 17:45:43 +08:00
TsMask dcbd75b8c9 feat: 资源监控信息 2023-11-01 17:45:21 +08:00
TsMask a824e64063 fix: 默认超时时间30秒 2023-11-01 17:44:00 +08:00
TsMask 150f547e50 fix: 个别接口超时时间60秒 2023-11-01 17:43:31 +08:00
TsMask d16d044a7e style: UDM鉴权签约页面样式优化 2023-11-01 15:19:45 +08:00
TsMask a2a4e49692 fix: MML网元操作/参数配置默认首个选AMF 2023-10-31 20:14:32 +08:00
TsMask 3da932a05e fix: MML网元操作默认首个选AMF 2023-10-31 20:08:30 +08:00
TsMask 0c5cf00927 fix: 参数配置默认首个选AMF 2023-10-31 20:06:14 +08:00
TsMask c68cd17c8a fix: 参数配置隐藏OMC/PCF/IMS 2023-10-31 19:57:42 +08:00
lai 27a00a08ca --增加性能数据排序,修改查询黄金指标时长 2023-10-31 17:50:33 +08:00
TsMask 11ccc10a01 fix: 故障告警前转设置 2023-10-31 17:38:38 +08:00
TsMask 49b4feac56 fix: 隐藏故障通用设置 2023-10-31 17:31:22 +08:00
TsMask 21160b9500 fix: 重复获取系统配置信息 2023-10-30 18:35:24 +08:00
TsMask 44ca068b1e fix: 重复获取系统配置信息 2023-10-30 18:34:54 +08:00
TsMask bb7618905e style: 小图当作favicon.ico 2023-10-30 14:16:14 +08:00
TsMask e26e73b6fe fix: 背景图支持还原默认 2023-10-30 11:43:05 +08:00
TsMask 94a075e8bb fix: 登录平铺元素背景图 2023-10-30 11:21:55 +08:00
TsMask 1d6ea3c345 chore: 1028 2023-10-28 19:45:09 +08:00
TsMask 72bcb47505 fix: 参数配置值输入250个字符 2023-10-28 19:44:23 +08:00
TsMask 0faeeec2d9 style: 登录页面样式修改 2023-10-28 19:43:54 +08:00
TsMask b6f685e389 style: 移除抓包loading提示 2023-10-28 19:43:07 +08:00
TsMask 898224b5b1 fix: 左侧菜单时logo显示小图 2023-10-28 15:27:08 +08:00
TsMask 2012837024 style: 调整LOGO样式 2023-10-27 15:58:04 +08:00
TsMask 5d30d738ca style: 登录页面描述文字去除登录 2023-10-27 14:55:46 +08:00
lai 6b7e69cc12 Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-10-27 11:05:47 +08:00
lai 5d039db772 修正SMS,Email的前转设置 2023-10-27 11:05:44 +08:00
TsMask 7d0d062e45 fix: 系统可暴露的配置信息接口 2023-10-27 09:59:24 +08:00
TsMask dd51475c58 fix: 移除UDM签约/鉴权数据-导入文件大小限制 2023-10-26 20:41:39 +08:00
TsMask abdf52e32f fix: MML控制台输出移除$> 前缀 2023-10-26 20:34:38 +08:00
lai c305777183 修复接口问题 2023-10-26 19:33:40 +08:00
lai 459fc0f2b3 ---固定表格表头 2023-10-26 19:33:13 +08:00
TsMask f17e998e05 fix: 跟踪信令抓包upf修复 2023-10-26 18:05:38 +08:00
TsMask 5a72287fca style: 更多下拉按钮放出 2023-10-26 16:59:04 +08:00
lai d3399e5b4f ---接口未加/api/rest 2023-10-26 11:37:16 +08:00
lai 859a0389cd ---新增活动告警手工同步成功后刷新 2023-10-26 10:25:09 +08:00
TsMask 855bdcdf81 fix: 备份管理删除文件提示态码不匹配 2023-10-26 09:53:58 +08:00
TsMask 3950ec3159 fix: 默认LOGO 2023-10-26 09:29:53 +08:00
TsMask b56530d44c fix: 跟踪任务排序开始时间和时间查询 2023-10-25 19:37:01 +08:00
TsMask 749d83e00f fix: 发送mml命令超时时间30秒 2023-10-25 19:21:49 +08:00
TsMask 566020baa2 fix: 跟踪任务选择信令接口数据分组 2023-10-25 18:02:31 +08:00
lai cdb8057736 ---修改表格列展示 2023-10-25 17:59:30 +08:00
TsMask daa74f148c style: 备份文件下载名 2023-10-25 17:37:29 +08:00
TsMask 77d648edba style: 移除列表记录编号列 2023-10-25 17:32:58 +08:00
lai e1cc984837 取消license文件的大小限制 2023-10-25 17:24:49 +08:00
lai ee63e8add1 增加 不显示已经删除状态的任务 2023-10-25 17:24:34 +08:00
lai a7ad5208b9 新增首页10s刷新 2023-10-25 17:23:24 +08:00
lai 31687125f8 修复网元重启,启动停止功能,以及提示 2023-10-25 17:23:08 +08:00
lai e3238194ce ---修复黄金指标titile显示问题 2023-10-25 17:22:31 +08:00
TsMask 9b00ec91b9 feat: 系统设置主要LOGO版权背景修改 2023-10-25 17:03:56 +08:00
TsMask c3597b929e fix: 内嵌菜单移动导致跳转失败 2023-10-25 16:53:31 +08:00
TsMask 869c09ac3c fix: 软件管理>记录编号移除 2023-10-25 16:23:46 +08:00
TsMask d47a87df64 fix: 软件管理文件上传大小限制和下载名称 2023-10-25 11:06:19 +08:00
TsMask 891e3c458d fix: 备份管理文件下载文件名zip 2023-10-25 10:34:23 +08:00
TsMask 48ff1b57f7 fix: 告警说明文档读取问题 2023-10-24 18:06:07 +08:00
TsMask 78e6ceff63 style: 移除页面Redis显示 2023-10-24 11:29:10 +08:00
TsMask 0d43d8f0fc fix: 主机运行时长格式化天时分秒 2023-10-23 19:19:20 +08:00
TsMask 28f487aff6 fix: 主机运行时长格式化天时分秒 2023-10-23 19:16:34 +08:00
simonzhangsz 92c71958ae fix: default host port 2023-10-23 18:43:51 +08:00
TsMask a5a2d68e0f feat: 调度任务支持是否进行日志记录 2023-10-23 18:17:46 +08:00
lai 49c12f1723 --新增性能门限 2023-10-23 16:27:53 +08:00
TsMask da6ae18028 fix: 固定底部行条 2023-10-23 11:08:05 +08:00
TsMask 8cafa39539 update: 升级依赖版本号 2023-10-23 10:54:58 +08:00
TsMask 5100642c97 fix: 网元默认选择第一个 2023-10-23 10:54:21 +08:00
TsMask 8bcf6f9c45 fix: 系统信息显示 2023-10-21 19:25:03 +08:00
TsMask 1dd30dbd08 style: 注释console输出 2023-10-21 14:08:47 +08:00
TsMask af5d3c0c98 fix: 用户新增即时获取用户角色数据 2023-10-21 12:01:33 +08:00
lai 2e59573fbf Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-10-20 19:28:17 +08:00
lai 0fe562e934 更改版本号 2023-10-20 19:28:14 +08:00
TsMask e744e0da0c style: 底脚顶部外边距48px 2023-10-20 19:27:54 +08:00
lai 5839698cf9 --规范代码 2023-10-20 19:26:29 +08:00
lai 9092d1d051 新增黄金指标,性能任务管理,修正历史活动告警 2023-10-20 19:21:34 +08:00
TsMask b9d0bed03f Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-10-20 17:54:54 +08:00
TsMask cf527f1d76 fix: 回显时清除定时器在获取时间 2023-10-20 17:54:37 +08:00
TsMask 6752c9c6e9 style: 登录界面不填账号密码的 2023-10-20 17:54:07 +08:00
simonzhangsz ee05ebd73e fix: default config.js 2023-10-20 17:53:57 +08:00
simonzhangsz 422ff4674a Merge branch 'main' of http://192.168.2.166:3180/OMC/ems_frontend_vue3 2023-10-20 17:50:33 +08:00
simonzhangsz 2be2cf8289 fix:default config.js for vue3 2023-10-20 17:50:32 +08:00
TsMask 3a7d127033 feat: 删除页眉下方的标题和说明内容 2023-10-20 10:44:43 +08:00
TsMask 08167b3d0a del: 删除无用固定的路由 2023-10-20 10:42:51 +08:00
TsMask 149fac7448 fix: 底脚版权声明样式 2023-10-20 10:07:34 +08:00
TsMask 50caa4f178 fix: 许可证管理删除无用函数 2023-10-19 21:19:30 +08:00
TsMask a7fa5c8127 fix: 请求发送patch访问要大写匹配 2023-10-19 21:19:10 +08:00
TsMask 917777c25a style: 小图标图片变更 2023-10-19 18:17:23 +08:00
TsMask 456d2a9613 fix: 右上角告警数按钮提示跳转 2023-10-19 17:47:04 +08:00
TsMask bb8bde9977 style: 已处理-UPF参数不统一 2023-10-19 17:41:28 +08:00
TsMask 154cd976c0 fix: 移除无用代码 2023-10-19 17:39:24 +08:00
TsMask 4b1c2c4024 fix: 网元更新删除,刷新缓存的网元信息 2023-10-19 17:38:54 +08:00
TsMask cdae43d46a fix: 隐藏项目信息栏目 2023-10-19 17:37:57 +08:00
TsMask d282ac2fca fix: 软件管理下发/重启/回退超时60秒 2023-10-19 17:37:24 +08:00
TsMask 7149588b35 fix: 不显示水印字符串置空值 2023-10-19 16:11:11 +08:00
TsMask 820eca7bbe feat: 右上角活动告警数 2023-10-19 16:10:37 +08:00
TsMask a746d14c48 fix: 软件包大小大于60M 2023-10-19 15:41:05 +08:00
TsMask 9c8d008528 fix: 部署配置 2023-10-18 19:50:26 +08:00
TsMask 8c154115e1 fix: 对语言通用提示tipTitle变量 2023-10-18 10:39:40 +08:00
TsMask a4c5972fbe Merge branch 'main' into lichang 2023-10-18 10:31:56 +08:00
lai a13e65b39b 新增性能测量集的存储 2023-10-18 10:23:57 +08:00
lai f6c4c5ed4b 新增任务管理(尚未完成) 2023-10-18 10:23:22 +08:00
lai 54578da895 新增性能测量数据展示 2023-10-18 10:22:34 +08:00
lai 0845751a76 --修正活动历史告警的代码规范 2023-10-18 10:21:58 +08:00
lai caa0016626 --新增网元管理 导出导入重启启动停止 2023-10-18 10:21:17 +08:00
lai febf86c5c7 ---设置首页心跳列表超时时间 2023-10-18 10:20:31 +08:00
TsMask 1bb86ef997 docs: 开发配置 2023-10-18 09:42:22 +08:00
TsMask b92e225fd4 fix: UPF抓包走脚本执行方式 2023-10-17 19:21:14 +08:00
TsMask f57b2bccfb fix: 网元管理更多操作提示 2023-10-17 16:38:55 +08:00
TsMask bf91430786 fix: 用户信息字段替换 2023-10-17 16:06:39 +08:00
TsMask bd81a077d9 fix: 3s内视为重复提交 2023-10-17 16:06:19 +08:00
TsMask 6f10d49384 feat: 服务器时间显示 2023-10-17 16:05:39 +08:00
TsMask a1a93d290f feat: 外部配置请求连接 2023-10-17 14:24:30 +08:00
TsMask 2d98d257cc feat: 在线用户 2023-10-17 14:23:46 +08:00
TsMask 226be89e31 fix: 过滤旧前端菜单 2023-10-17 14:23:40 +08:00
TsMask 743568861d feat: 合并Gin_Vue 2023-10-16 17:12:24 +08:00
TsMask 771320a839 fix: 延迟刷新获取更新的数据 2023-10-12 16:55:39 +08:00
lai 168d2cd590 ---license管理完善 2023-10-12 10:14:03 +08:00
TsMask 70ebae02ca fix: license管理类型初始 2023-10-12 10:04:24 +08:00
lai eef693b716 ---license管理 缺少声明 2023-10-12 09:58:52 +08:00
lai b2724f3279 --新增网元的导出 重启 停止 启动按钮 2023-10-11 19:27:43 +08:00
TsMask 366538ef0d style: 移除非error级别console 2023-10-11 17:44:53 +08:00
TsMask eaba814cd2 style: 移除非error级别console 2023-10-11 17:31:38 +08:00
TsMask 9cf276a7f9 style: 默认布局mix 2023-10-11 17:24:02 +08:00
TsMask a245e74ff6 fix: 开发环境地址229:3186 2023-10-11 17:20:43 +08:00
TsMask 0853e29a04 feat: MML管理功能 2023-10-11 17:20:20 +08:00
lai b2f7e1d69b ---新增license管理 2023-10-11 16:35:56 +08:00
lai bbf3c20057 Merge branch 'main' of http://192.168.0.229:3180/OMC/ems_frontend_vue3 2023-10-11 16:35:20 +08:00
TsMask ff8bffc247 style: 提示选择命令导航 2023-10-11 14:27:08 +08:00
TsMask d0cfe66a7c fix: 重复提交时间2秒内 2023-10-11 14:19:54 +08:00
TsMask 5b220260b6 feat: mml管理>UDM操作 2023-10-11 14:17:37 +08:00
lai 6541683bd8 2023 10 11 license管理的中英文 2023-10-11 11:12:12 +08:00
lai a5397c4d37 ---文件乱码问题 2023-10-11 10:22:57 +08:00
TsMask ed399331ae feat: mml用户数据 2023-10-10 18:23:19 +08:00
TsMask 8eb21e722c style: mml管理设置移除不需要的引用 2023-10-10 16:51:46 +08:00
TsMask e381a0bcf7 feat: mml管理设置 2023-10-10 16:47:17 +08:00
TsMask 451c10b896 style: 修改日志管理>r日志设置路由 2023-10-10 16:25:15 +08:00
TsMask b6632b1d68 feat: MML管理模块初始 2023-10-10 16:20:28 +08:00
TsMask 52883f7051 feat: 性能管理模块初始 2023-10-10 16:20:19 +08:00
TsMask de680e467b feat: 部署环境配置 2023-10-10 14:49:29 +08:00
TsMask 1472991c83 fix: 打包类型验证 2023-10-10 09:54:37 +08:00
TsMask 5002ba3297 fix: 参数配置移除编辑器输入 2023-10-09 20:01:23 +08:00
TsMask 3ef38f12c5 feat: 有效IPv6格式地址 2023-10-09 19:59:47 +08:00
TsMask 7ef429c511 feat: 首字母转小写 2023-10-09 19:59:35 +08:00
TsMask f7a1a78679 fix: 空数据时给空表格 2023-10-09 19:59:05 +08:00
TsMask 62410620ed feat: 参数配置 2023-10-09 19:58:16 +08:00
lai 7e723d0440 ---活动告警,历史告警,故障通用设置 2023-10-08 11:52:24 +08:00
TsMask fd37866dd4 style: 网元管理 2023-10-07 15:47:58 +08:00
TsMask aab98b016f feat: 软件管理 2023-10-07 15:35:40 +08:00
TsMask ee2a5290b1 feat: 支持发送patch方法 2023-10-07 15:34:13 +08:00
lai 16f7ea4f51 Merge branch 'main' of http://192.168.0.229:3180/OMC/ems_frontend_vue3 2023-09-28 18:10:32 +08:00
TsMask 5b0f801e9c style: 改个名称223 2023-09-28 18:10:19 +08:00
lai 11e4159368 ---完善活动告警 -80% 2023-09-28 18:02:31 +08:00
TsMask 4cdf40b3b1 style: 改个名称2 2023-09-28 17:14:13 +08:00
TsMask f8d06b0573 style: 改个名称 2023-09-28 17:13:21 +08:00
TsMask 297cd870fa style: 改个名称 2023-09-28 17:06:10 +08:00
TsMask 5ee3b168fa style: 改个名称 2023-09-28 14:30:21 +08:00
TsMask 6d164cfdf2 style: GBK编码问题 2023-09-28 11:22:53 +08:00
TsMask 0dee0fecc0 fix: 查询记录数1问题 2023-09-28 11:11:24 +08:00
TsMask 09bcf2dc25 fix: 信令分析-html格式 2023-09-28 11:05:09 +08:00
lai 72313018cb ---完善活动告警 2023-09-27 20:48:38 +08:00
TsMask 35ca8e2fe7 feat: 日志设置 2023-09-27 19:59:49 +08:00
TsMask 209eb4377e fix: 安全日志查询类型 2023-09-27 19:59:18 +08:00
TsMask 1807cb9214 fix: 操作日志查询类型 2023-09-27 19:58:51 +08:00
TsMask 70ebb76bc1 feat: 导出表格工具 2023-09-27 19:58:19 +08:00
lai ccf2eeef4d --添加解析execl插件,活动告警部分功能 2023-09-27 09:57:01 +08:00
TsMask 3b9b56fec9 fix: 日期选择清空异常和移除console 2023-09-26 18:52:35 +08:00
TsMask 34c43c5af1 feat: 告警前转日志 2023-09-26 18:51:41 +08:00
TsMask e0b408148e feat: 安全日志 2023-09-26 18:51:24 +08:00
TsMask 0dcb5e86a6 fix: 跟踪管理支持模糊查询 2023-09-26 17:34:53 +08:00
TsMask f40e9136fc feat: 操作日志 2023-09-26 17:33:56 +08:00
TsMask 8e4f22b533 feat: 操作MML日志 2023-09-26 17:33:40 +08:00
TsMask 806e1ca301 feat: 告警日志 2023-09-26 17:33:18 +08:00
TsMask c22ad4e8a3 style: 跟踪管理多语言 2023-09-26 15:05:58 +08:00
TsMask 61eea0ec90 feat: 用户会话旧在线用户 2023-09-26 14:34:02 +08:00
TsMask e77614a86c fix: 查询分页*条数 2023-09-26 14:18:19 +08:00
TsMask 550a19e777 feat: 日志管理 2023-09-26 14:17:45 +08:00
TsMask 5f5cae28d1 fix: 更正跟踪管理路径traceManage 2023-09-26 10:53:15 +08:00
lai b38444a201 ---增加活动告警界面的中英文 2023-09-26 10:36:02 +08:00
TsMask ac3a4f2d0e style: 信令分析多语言 2023-09-26 10:14:34 +08:00
lai 1d1ec7e1e9 --更改文件夹 2023-09-26 09:44:30 +08:00
TsMask 5903bb49ed style: 网元接口/补充注释 2023-09-25 19:51:49 +08:00
TsMask 67d77b1ae9 feat: 跟踪任务 2023-09-25 19:50:56 +08:00
lai f37abd2f62 --ims在线用户的选择器 2023-09-25 18:25:01 +08:00
lai 98a13ca691 --新增UDM鉴权 签约用户 2023-09-25 17:45:05 +08:00
TsMask 21a4ad986d feat: 信令分析 2023-09-25 15:04:45 +08:00
TsMask 3525d7567e perf: 优化上传组件 2023-09-25 10:39:28 +08:00
TsMask 0bc2be52ef feat: 信令分析 2023-09-23 19:14:39 +08:00
TsMask 15bd6f5856 fix: 对象的key值驼峰null异常 2023-09-23 19:14:03 +08:00
lai 619920c104 --新增签约用户 2023-09-23 18:05:25 +08:00
TsMask 6593419fb7 feat: 信令抓包 2023-09-23 17:20:50 +08:00
TsMask 08fdeb89f1 fix: UDM用户加载全部优化和补充多语言 2023-09-23 10:55:26 +08:00
lai 92434e0cd3 新增批量删除接口 2023-09-23 10:37:37 +08:00
TsMask c627d9f768 feat: 跟踪管理 2023-09-23 10:01:23 +08:00
TsMask 24df767f3f style: UE在线网元选择多语言 2023-09-22 19:28:59 +08:00
TsMask b59c906423 feat: UDM用户导入导出 2023-09-22 17:52:36 +08:00
TsMask 56e409bec3 Merge branch 'main' of http://192.168.0.229:3180/OMC/ems_frontend_vue3 2023-09-22 17:48:45 +08:00
TsMask d0058f7e17 feat: 导入文件组件 2023-09-22 17:47:14 +08:00
lai c1541976ff --修复修改鉴权用户 2023-09-22 17:34:58 +08:00
lai f10bc91bed ---完善UDM鉴权 2023-09-22 17:24:55 +08:00
lai fb9f465e12 --批量新增鉴权用户 2023-09-22 15:26:45 +08:00
TsMask 0118e5d1b8 fix: 表格勾选翻页取消 2023-09-22 14:48:27 +08:00
TsMask cbe769f26b feat: IMS在线用户 2023-09-22 14:48:02 +08:00
TsMask f660663331 fix: 查看信息 2023-09-22 14:47:33 +08:00
TsMask 1bc06e0608 style: 新增关闭 2023-09-22 14:47:15 +08:00
TsMask 7b5c38ab48 feat: UE在线信息 2023-09-22 12:02:30 +08:00
TsMask 021446b04b fix: 请求超时时间配置 2023-09-22 11:14:40 +08:00
TsMask 2b5aecc570 style: 配置地址 2023-09-22 10:46:37 +08:00
lai 4bb44dc7ee Merge branch 'main' of http://192.168.0.229:3180/OMC/ems_frontend_vue3 2023-09-22 10:38:37 +08:00
TsMask 4ec1035dc8 feat: 5g基站列表 2023-09-22 10:36:33 +08:00
TsMask 3789f0db02 fix: 导航栏标题 2023-09-22 10:36:33 +08:00
TsMask 0e95866854 feat: UDM鉴权用户多语言 2023-09-22 10:36:33 +08:00
lai 4e4d7ad61a --新增删除鉴权用户,更新中英文库 2023-09-22 10:36:33 +08:00
TsMask ead5dbcc76 feat: 5g基站列表 2023-09-22 10:32:43 +08:00
TsMask e98020a17b fix: 导航栏标题 2023-09-21 21:03:13 +08:00
TsMask 1a3d1e0d49 feat: UDM鉴权用户多语言 2023-09-21 20:29:44 +08:00
lai 43f4451269 --新增删除签约用户,更新中英文库 2023-09-21 19:48:04 +08:00
TsMask 5cb99ff153 feat: UDM鉴权用户 2023-09-21 11:13:29 +08:00
TsMask 262160c23b style: 字段调整 2023-09-20 17:44:12 +08:00
TsMask 8e73979bd1 feat: 配置编辑器,参数比较差异 2023-09-20 17:43:42 +08:00
TsMask 2aa1720dcf feat: 网元用户信息菜单 2023-09-19 10:28:22 +08:00
TsMask 307ab8bcf6 fix 网元输入框自动完成下拉选择 2023-09-18 21:06:13 +08:00
TsMask 429f30c322 fix: 字典数据排序值number 2023-09-18 21:05:06 +08:00
TsMask c0a5eba8f3 fix: 文件上传204无内容 2023-09-18 21:04:35 +08:00
TsMask b245a78777 feat: 配置管理>软件管理 2023-09-18 20:59:43 +08:00
TsMask 81d70cefdc feat: 设置自动备份时间 2023-09-18 15:56:22 +08:00
TsMask 60978d5261 feat: 配置管理>备份管理 2023-09-18 15:09:14 +08:00
TsMask a2980686c0 style: 补充备份管理多语言 2023-09-18 15:07:38 +08:00
TsMask 289fc57441 feat: 配置管理>参数配置 2023-09-18 12:03:48 +08:00
TsMask 041ff78a19 feat: 网元类型记录数据 2023-09-18 12:03:20 +08:00
TsMask c0daed6e3e fix: 主页点击异常 2023-09-18 10:33:20 +08:00
lai 32e64de018 ---新增首页 2023-09-14 15:44:08 +08:00
lai 479e397e4f --新增首页 2023-09-14 15:43:49 +08:00
TsMask 03e1b4b8bd fix: 状态码使用常量避免后续变更 2023-09-14 15:19:37 +08:00
TsMask 9a88d9b8de feat: 配置管理>配置参数 2023-09-14 14:52:49 +08:00
TsMask 1348cb94ec fix 请求信息封装常量 2023-09-14 14:52:19 +08:00
TsMask 3125b112f7 移动home接口 2023-09-14 14:51:50 +08:00
TsMask d0b0d34862 指定tsc版本打包 2023-09-14 14:51:30 +08:00
TsMask 2188c2e0a6 style 改logo 2023-09-14 14:50:40 +08:00
TsMask 545fa5f301 fix: 多语言补充 2023-09-14 09:36:16 +08:00
TsMask 39504233c0 feat: 解析工具下划线转驼峰 2023-09-14 09:35:52 +08:00
TsMask fc1c590cc4 feat 网元管理页面 2023-09-14 09:35:18 +08:00
TsMask 7773fca9c8 格式化代码 2023-09-13 17:58:35 +08:00
TsMask 7f132edb72 新增全屏操作按钮 2023-09-13 17:57:51 +08:00
TsMask 020c3b259c 更新依赖版本 2023-09-13 17:57:27 +08:00
TsMask ac45e9ef13 feat: 通用多语言 2023-09-07 15:30:45 +08:00
TsMask b1763092c6 fix: 网元管理的接口调整 2023-09-07 15:30:24 +08:00
TsMask 0194d7f9b7 style: 忽略 components.d.ts 2023-09-07 09:40:28 +08:00
lai 24c35d3e01 ---首页 2023-09-06 20:06:14 +08:00
lai 59992a63e7 --首页 2023-09-06 20:05:05 +08:00
TsMask 51aa994a9e add: 网元列表 2023-09-06 19:36:39 +08:00
TsMask 7207e0812e feat: 故障管理页面 2023-09-06 16:01:50 +08:00
TsMask 259ef50c0c feat: 登录接口和验证码登录 2023-09-06 15:25:42 +08:00
TsMask 90f55f4103 style: 部分页面调整 2023-09-06 11:37:15 +08:00
TsMask cd76015533 add: 系统状态目录 2023-09-06 11:36:51 +08:00
TsMask 06a10144c2 fix: 固定展示首页栏目 2023-09-06 11:35:30 +08:00
TsMask db2466d639 fix: 默认端口改3131 2023-09-06 11:34:59 +08:00
TsMask def90a8aa0 fix: 状态码拦截处理 2023-09-06 11:34:20 +08:00
TsMask 421a8cdcb0 fix: 全局页脚展示 2023-09-06 11:33:43 +08:00
TsMask e30d7757c4 fix: 替换字典数据接口 2023-09-06 11:33:13 +08:00
TsMask a07ad1ade2 fix: 替换参数配置接口 2023-09-06 11:32:42 +08:00
TsMask ed72ca11be fix: 左侧菜单宽度250px 2023-09-05 17:12:35 +08:00
TsMask 8343ccfe4e fix: 菜单管理调整 2023-09-05 17:12:12 +08:00
TsMask 520d1ffcf9 fix: 角色管理调整 2023-09-05 17:11:45 +08:00
TsMask 1ab5c4f3c6 fix: 用户管理页面 2023-09-05 17:11:22 +08:00
TsMask 0beb0c278e fix: 登录和路由获取接口 2023-09-05 17:10:47 +08:00
TsMask 9b443b0a2a style: 隐藏部分控件 2023-09-05 17:10:24 +08:00
TsMask 2d6f358ec8 fix: 登录注册首页调整 2023-09-05 17:09:36 +08:00
TsMask c89ba642b5 fix: 请求过滤拦截处理 2023-09-05 17:09:01 +08:00
TsMask 8e72ad7f2f style: 登录页国际化标题 2023-09-05 17:08:08 +08:00
TsMask 0c9d28fdf1 chore: 更新接口地址和默认图标 2023-09-05 17:06:14 +08:00
TsMask dd6bcb8d02 style: 修改系统名称 2023-09-05 14:49:04 +08:00
TsMask fc3b0a69d6 style: 系统名称 2023-09-05 14:41:05 +08:00
TsMask 1075c8ae4f init: 初始系统模板 2023-09-05 14:38:23 +08:00
lichang a5bc16ae4f 添加 init.md 2023-09-05 14:37:15 +08:00
249 changed files with 63048 additions and 2 deletions

No files matched your search

+11
View File
@@ -0,0 +1,11 @@
# 🎨 editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true
+17
View File
@@ -0,0 +1,17 @@
# 历史路径-哈希带井号标识
VITE_HISTORY_HASH = false
# 历史路径-前缀URL如:/h5
VITE_HISTORY_BASE_URL = "/"
# 应用名称
VITE_APP_NAME = "Core Network EMS"
# 应用标识
VITE_APP_CODE = "CN EMS"
# 应用版本
VITE_APP_VERSION = "2.231128.8"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"
+18
View File
@@ -0,0 +1,18 @@
# 历史路径-哈希带井号标识
VITE_HISTORY_HASH = true
# 历史路径-前缀URL如:/h5
VITE_HISTORY_BASE_URL = "/"
# 应用名称
VITE_APP_NAME = "Core Network EMS"
# 应用标识
VITE_APP_CODE = "CN EMS"
# 应用版本
VITE_APP_VERSION = "2.2311.8"
# 接口基础URL地址-不带/后缀
VITE_API_BASE_URL = "/omc-api"
+34
View File
@@ -0,0 +1,34 @@
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
*.code-workspace
# Local History for Visual Studio Code
.history/
.DS_Store
node_modules/
dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
**/*.log
tests/**/coverage/
tests/e2e/reports
selenium-debug.log
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.local
package-lock.json
yarn.lock
components.d.ts
+11
View File
@@ -0,0 +1,11 @@
{
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"singleQuote": true,
"semi": true,
"trailingComma": "es5",
"bracketSpacing": true,
"jsxBracketSameLine": false,
"arrowParens": "avoid"
}
+56 -2
View File
@@ -1,3 +1,57 @@
# fe.ems.vue3
# 核心网管理系统
OMC 前端
## 简介
- 系统布局使用 [@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
```
## 程序命令
项目目录下 `.env.[环境]` 文件对应环境的一些配置,启动前请检查文件内是否配置正确。
```bash
# 使用阿里源可以加速下载依赖库
npm install --registry https://registry.npmmirror.com
```
### 开发 development
```bash
# 检查配置参数 .env.development 和 vite.config.ts
npm install # 安装项目所需依赖
npm run dev # 开发模式启动项目
Local http://localhost:6269 # 启动成功后得到服务访问地址
```
### 部署 production
```bash
# 检查配置参数 .env.development
npm install # 安装项目所需依赖
npm run build # 构建生产项目代码
```
## k8s
master 192.168.5.27 agtuser/admin123
https://192.168.5.27:31325/#/workloads?namespace=default
```text
eyJhbGciOiJSUzI1NiIsImtpZCI6ImZFVUhIb1puLW04M1dfSUYyRU8zWlZueXBpNUh4T0hTRVlzU19jNlVGQ0kifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLW44ZzRtIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiI2M2NmYjAyNS01ZmQ0LTQ0ZTgtOTdiNC0yYWRiYWIxNzc5M2MiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.R3GRygFOjngTj-mEMBAHDeBxm3lpsXZYvC6cdTxByONtLrcMXDebwNVeKtAZ1V9qh2OrjD8n9CIygjULGPdfV6S520vjMh7Oa2q68nOyW49DNWQyYD8xLo-dQ6sX07fI7X_I3H35YUWW80jJAXjJawqIGXBSMG5intlo4tLTUSXmjCfhoQvFsgeRWu0j76pDvhMAvLPcgEXfTCi9tyL3yqJBIKONcKwmMlJeaKSR3pQk3KiibqrBO0MZclRozpke6J0ulfzTemwDDyCqBZmLsRPZ2yDd5hVBIJ9bHEcK0a25NmSFFzmd8XWQPZwg3Y4IbbY-8UhByGq0p9xS-7pGCQ
```
```ssh
sudo chmod 700 -/.ssh/
sudochmod 700 /home/ubuntu #这个尤其容易忽视掉,我就是从这个坑里爬出来。有木有很高兴呀!
3sudochmod 600 -/ssh/authorized keys
```
+17
View File
@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>loading...</title>
<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>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
+52
View File
@@ -0,0 +1,52 @@
{
"name": "ems_frontend_vue3",
"type": "module",
"description": "核心网管理平台",
"author": "TsMask",
"engines": {
"node": ">=18.0.0"
},
"scripts": {
"dev": "vite",
"build": "vue-tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"antdv-pro-layout": "^3.2.6",
"@ant-design/icons-vue": "^7.0.1",
"@codemirror/lang-javascript": "^6.2.1",
"@codemirror/merge": "^6.1.2",
"@codemirror/theme-one-dark": "^6.1.2",
"@tato30/vue-pdf": "^1.8.1",
"@vueuse/components": "^10.6.1",
"@vueuse/core": "^10.6.1",
"ant-design-vue": "^3.2.20",
"codemirror": "^6.0.1",
"dayjs": "^1.11.10",
"echarts": "^5.4.2",
"file-saver": "^2.0.5",
"js-base64": "^3.7.5",
"js-cookie": "^3.0.5",
"nprogress": "^0.2.0",
"pinia": "^2.1.7",
"vue": "^3.3.6",
"vue-codemirror": "^6.1.1",
"vue-i18n": "^9.5.0",
"vue-router": "^4.2.5",
"vue3-smooth-dnd": "^0.0.6",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@types/file-saver": "^2.0.5",
"@types/js-cookie": "^3.0.3",
"@types/node": "^18.0.0",
"@types/nprogress": "^0.2.0",
"@vitejs/plugin-vue": "^4.3.4",
"less": "^4.2.0",
"typescript": "^5.2.2",
"unplugin-vue-components": "^0.25.2",
"vite": "^4.5.0",
"vite-plugin-compression": "^0.5.1",
"vue-tsc": "^1.8.19"
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+41
View File
@@ -0,0 +1,41 @@
/**
* =============== Zh ===============
* - Nginx部署
* 删除loading.js同级下同名文件,Nginx代理地址: /omc-api
*
* - 非Nginx部署
* 请将当前文件与loading.js同级,将host变量值修改为数据服务访问地址
* !!!注意: 修改当前文件后,建议关闭浏览器后重新访问
*
* =============== En ===============
* - Nginx Deployment
* Delete the file with the same name under the same level of loading.js, Nginx proxy address: /omc-api
*
* - Non-Nginx Deployment
* Please make the current file the same level as the loading.js, change the host variable value to the data service access address
* !!! Note: After modifying the current file, it is recommended to revisit it after closing the browser.
*
*/
(function () {
// host = ip:prot
const host = '192.168.2.166:3030';
const configs = {
// internationalization 国际化禁用,默认语言选择
i18nDisable: false,
i18nDisableDefault: 'en_US',
// Service Address 服务地址
baseUrl: `http://${host}`,
// websocket Address
wsUrl: `ws://${host}`,
};
if(!configs.i18nDisable){
localStorage.setItem('cache:local:i18n', configs.i18nDisableDefault);
}
for (const key in configs) {
console.log(key, `${configs[key]}`);
sessionStorage.setItem(key, `${configs[key]}`);
}
})();
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

+1
View File
@@ -0,0 +1 @@
(function(window){var svgSprite="<svg>"+""+'<symbol id="icon-tuichu" viewBox="0 0 1024 1024">'+""+'<path d="M891.215448 714.840276c-24.275862 0-35.133793 19.667862-35.133793 43.926069l-0.088276 58.579862c-6.779586 33.227034-25.811862 46.362483-66.59531 49.716966l-568.125793 0.300138c-35.098483-4.272552-49.558069-17.831724-54.501517-49.469793l0.653241-604.318897c3.742897-32.114759 15.642483-46.962759 46.238897-52.524138l593.672828-0.317793c30.296276 6.249931 44.314483 21.910069 48.904828 54.377931l-0.141241 49.257931c0 24.275862 10.857931 43.926069 35.133793 43.926069 24.240552 0 34.868966-19.667862 34.868966-43.926069l0.300138-93.854897c-2.807172-45.868138-40.448-82.290759-86.987034-82.449655l-658.696828 0.353103C134.144 90.465103 96.926897 128.441379 96.697379 175.457103l0.370759 676.652138c2.065655 45.267862 38.170483 81.37269 83.42069 83.456l649.057103 0.406069 9.533793 0c47.298207 0 85.556966-37.428966 87.463724-84.250483l0.123586-92.936828C926.649379 734.525793 915.456 714.840276 891.215448 714.840276zM706.56 715.105103c11.723034 11.723034 35.169103 15.536552 47.280552 3.425103l165.005241-165.393655c6.426483-6.426483 8.492138-16.384 7.362207-26.07669-0.158897-6.232276-1.959724-12.111448-5.66731-16.807724-1.253517-2.048-2.665931-3.937103-4.272552-5.543724-1.112276-1.094621-2.401103-2.030345-3.707586-2.966069l-158.631724-159.002483c-12.111448-12.111448-36.422621-9.445517-48.145655 2.277517-11.687724 11.723034-14.689103 36.334345-2.577655 48.428138l100.175448 100.404966L542.455172 493.638621c-17.143172 0-39.000276 15.607172-39.000276 35.998897 0 21.53931 21.857103 35.716414 39.000276 35.716414l262.69131 0.211862-102.029241 102.258759C691.005793 679.936 694.81931 703.382069 706.56 715.105103z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-fanhui" viewBox="0 0 1024 1024">'+""+'<path d="M461.141333 254.532267l0 106.24 0 33.792 33.792 0.341333c234.8032 2.269867 367.069867 106.7008 401.5104 318.327467-128.989867-149.1968-277.7088-149.265067-401.169067-149.2992L461.141333 563.933867l0 34.133333 0 104.704L144.708267 478.634667 461.141333 254.532267M495.274667 188.501333l-409.6 290.133333 409.6 290.133333L495.274667 598.0672c163.925333 0.068267 315.921067 8.328533 444.450133 237.533867 0-145.5616-24.046933-470.766933-444.450133-474.8288L495.274667 188.501333 495.274667 188.501333z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-facebook" viewBox="0 0 1024 1024">'+""+'<path d="M535.9 1023.9c68.2 0 132.6 0 159.6 0l0 0.1C668.4 1024 604.1 1024 535.9 1023.9L535.9 1023.9zM253.5 0.6c-23 0.4-46.2 1.9-67 5.8-22.6 4.3-43.2 10-63.8 20.5-20.9 10.6-38.9 25.1-55 40.8-15.7 16.1-30.2 34.2-40.8 55-10.4 20.6-16.2 41.1-20.5 63.8-3.9 20.8-5.4 44-5.8 67-0.1 5.2-0.1 10-0.2 17.5l-0.3 450c0 5.7 0.1 11.9 0.1 18.7 0.2 16.3 0.3 23 0.4 30.7 0.4 23 1.9 46.2 5.8 67 1.9 9.9 4 19.4 6.7 28.6 3.5 11.9 7.9 23.5 13.8 35.1 10.6 20.9 25.1 38.9 40.8 55 16.1 15.7 34.2 30.2 55 40.8 20.6 10.4 41.1 16.2 63.8 20.5 20.8 3.9 44 5.4 67 5.8 7.7 0.1 14.4 0.2 30.7 0.4 15.5 0.1 28.2 0.2 37.6 0.2 26.1 0 123.5 0 214 0l0-397L407.1 626.8 407.1 478.3l127.8 0L534.9 340.1C534.9 234 616.9 158 722.9 158l137.2 3 0 142.6L755.3 303.6c-30.3 0-54.9 33.5-54.9 63.9l0 110.8 154.6 0-22 148.6L695.5 626.9l0 397c2.5 0 4.8 0 6.6 0 9.4 0 22.1-0.1 37.6-0.2 12.9-0.1 19.8-0.2 25.9-0.2 1.6 0 3.2 0 4.9-0.1 23-0.4 46.2-1.9 67-5.8 22.6-4.3 43.2-10 63.8-20.5 20.9-10.6 38.9-25.1 55-40.8 15.7-16.1 30.2-34.2 40.8-55 10.4-20.6 16.2-41.1 20.5-63.8 3.9-20.8 5.4-44 5.8-67 0.1-7.7 0.2-14.4 0.4-30.7 0.1-15.5 0.2-28.2 0.2-37.6L1024 321.9c0-3.2 0-6.9 0-10.9 0-7.6-0.1-16.6-0.2-26.8-0.2-16.3-0.3-23-0.4-30.7-0.4-23-1.9-46.2-5.8-67-4.3-22.6-10-43.2-20.5-63.8-10.6-20.9-25.1-38.9-40.8-55-16.1-15.7-34.2-30.2-55-40.8-20.6-10.4-41.1-16.2-63.8-20.5-20.8-3.9-44-5.4-67-5.8-7.7-0.1-14.4-0.2-30.7-0.4C724.2 0.1 711.5 0 702.1 0L321.8 0c-9.4 0-22.1 0.1-37.6 0.2C267.9 0.4 261.2 0.5 253.5 0.6z" ></path>'+""+"</symbol>"+""+'<symbol id="icon-twitter" viewBox="0 0 1024 1024">'+""+'<path d="M1023.8 284.2c-0.2-16.3-0.3-23-0.4-30.7-0.4-23-1.9-46.2-5.8-67-4.3-22.6-10-43.2-20.5-63.8-10.6-20.9-25.1-38.9-40.8-55-16.1-15.7-34.2-30.2-55-40.8-20.6-10.4-41.1-16.2-63.8-20.5-20.8-3.9-44-5.4-67-5.8-7.7-0.1-14.4-0.2-30.7-0.4C724.2 0.1 711.5 0 702.1 0c-47.6 0-332.6 0-380.3 0-9.4 0-22.1 0.1-37.6 0.2-16.3 0.2-23 0.3-30.7 0.4-23 0.4-46.2 1.9-67 5.8-22.6 4.3-43.2 10-63.8 20.5-20.9 10.6-38.9 25.1-55 40.8-15.7 16.1-30.2 34.2-40.8 55-10.4 20.6-16.2 41.1-20.5 63.8-3.9 20.8-5.4 44-5.8 67-0.1 7.7-0.2 14.4-0.4 30.7C0.1 299.8 0 312.5 0 321.9l0 380.3c0 9.4 0.1 22.1 0.2 37.6 0.2 16.3 0.3 23 0.4 30.7 0.4 23 1.9 46.2 5.8 67 4.3 22.6 10 43.2 20.5 63.8 10.6 20.9 25.1 38.9 40.8 55 16.1 15.7 34.2 30.2 55 40.8 20.6 10.4 41.1 16.2 63.8 20.5 20.8 3.9 44 5.4 67 5.8 7.7 0.1 14.4 0.2 30.7 0.4 15.5 0.1 28.2 0.2 37.6 0.2 47.6 0 332.6 0 380.3 0 9.4 0 22.1-0.1 37.6-0.2 16.3-0.2 23-0.3 30.7-0.4 23-0.4 46.2-1.9 67-5.8 22.6-4.3 43.2-10 63.8-20.5 20.9-10.6 38.9-25.1 55-40.8 15.7-16.1 30.2-34.2 40.8-55 10.4-20.6 16.2-41.1 20.5-63.8 3.9-20.8 5.4-44 5.8-67 0.1-7.7 0.2-14.4 0Line truncated
+213
View File
@@ -0,0 +1,213 @@
/**
* loading 占位
* 解决首次加载时白屏的问题
*/
(function () {
const _app = document.querySelector('#app');
if (_app && _app.innerHTML === '') {
const styleStr = `
<style>
html,
body,
#app {
height: 100%;
margin: 0;
padding: 0;
}
#app {
background-repeat: no-repeat;
background-size: 100% auto;
}
.loading-title {
font-size: 1.1rem;
}
.loading-sub-title {
text-align: center;
margin-top: 20px;
font-size: 1rem;
color: #888;
}
.page-loading-warp {
display: flex;
align-items: center;
justify-content: center;
padding: 26px;
}
.ant-spin {
position: absolute;
display: none;
-webkit-box-sizing: border-box;
box-sizing: border-box;
margin: 0;
padding: 0;
color: rgba(0, 0, 0, 0.65);
color: #1890ff;
font-size: 14px;
font-variant: tabular-nums;
line-height: 1.5;
text-align: center;
list-style: none;
opacity: 0;
-webkit-transition: -webkit-transform 0.3s
cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: -webkit-transform 0.3s
cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
transition: transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86),
-webkit-transform 0.3s cubic-bezier(0.78, 0.14, 0.15, 0.86);
-webkit-font-feature-settings: "tnum";
font-feature-settings: "tnum";
}
.ant-spin-spinning {
position: static;
display: inline-block;
opacity: 1;
}
.ant-spin-dot {
position: relative;
display: inline-block;
width: 20px;
height: 20px;
font-size: 20px;
}
.ant-spin-dot-item {
position: absolute;
display: block;
width: 9px;
height: 9px;
background-color: #1890ff;
border-radius: 100%;
-webkit-transform: scale(0.75);
-ms-transform: scale(0.75);
transform: scale(0.75);
-webkit-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
opacity: 0.3;
-webkit-animation: antspinmove 1s infinite linear alternate;
animation: antSpinMove 1s infinite linear alternate;
}
.ant-spin-dot-item:nth-child(1) {
top: 0;
left: 0;
}
.ant-spin-dot-item:nth-child(2) {
top: 0;
right: 0;
-webkit-animation-delay: 0.4s;
animation-delay: 0.4s;
}
.ant-spin-dot-item:nth-child(3) {
right: 0;
bottom: 0;
-webkit-animation-delay: 0.8s;
animation-delay: 0.8s;
}
.ant-spin-dot-item:nth-child(4) {
bottom: 0;
left: 0;
-webkit-animation-delay: 1.2s;
animation-delay: 1.2s;
}
.ant-spin-dot-spin {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
-webkit-animation: antrotate 1.2s infinite linear;
animation: antRotate 1.2s infinite linear;
}
.ant-spin-lg .ant-spin-dot {
width: 32px;
height: 32px;
font-size: 32px;
}
.ant-spin-lg .ant-spin-dot i {
width: 14px;
height: 14px;
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
.ant-spin-blur {
background: #fff;
opacity: 0.5;
}
}
@-webkit-keyframes antSpinMove {
to {
opacity: 1;
}
}
@keyframes antSpinMove {
to {
opacity: 1;
}
}
@-webkit-keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
@keyframes antRotate {
to {
-webkit-transform: rotate(405deg);
transform: rotate(405deg);
}
}
</style>`;
// 根据浏览器选择语言
const lang = localStorage.getItem('cache:local:i18n');
if (!lang) {
let preferredLanguage = navigator.language;
if (preferredLanguage.indexOf('-')) {
preferredLanguage = preferredLanguage.replace('-', '_');
}
localStorage.setItem('cache:local:i18n', preferredLanguage);
}
let loadInfo = {
title: '正在加载资源',
titleSub: '初次加载资源可能需要较多时间',
msg: '请耐心等待',
};
// document.title = "AGrandEMS";
if (lang === 'en_US') {
loadInfo = {
title: 'Loading Resources',
titleSub: 'Loading resources for the first time may take a lot of time',
msg: 'Please be patient',
};
// document.title = "AGrandEMS";
}
const divStr = `
<div style="
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
min-height: 362px;
">
<div class="page-loading-warp">
<div class="ant-spin ant-spin-lg ant-spin-spinning">
<span class="ant-spin-dot ant-spin-dot-spin">
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
<i class="ant-spin-dot-item"></i>
</span>
</div>
</div>
<div class="loading-title">
${loadInfo.title}
</div>
<div class="loading-sub-title">
${loadInfo.titleSub} </br> ${loadInfo.msg}
</div>
</div>`;
_app.innerHTML = styleStr + divStr;
}
})();
+95
View File
@@ -0,0 +1,95 @@
<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 dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
import { ref, watch } from 'vue';
import useAppStore from '@/store/modules/app';
import useI18n from '@/hooks/useI18n';
const { t, currentLocale } = useI18n();
const appStore = useAppStore();
dayjs.locale('zh-cn'); // 默认中文
usePrimaryColor(); // 载入用户自定义主题色
let locale = ref(zhCN); // 国际化初始中文
// 国际化切换语言
function fnChangeLocale(v: string) {
switch (v) {
case 'zh_CN':
locale.value = zhCN;
dayjs.locale(zhCN.locale);
break;
case 'en_US':
locale.value = enUS;
dayjs.locale(enUS.locale);
break;
}
}
// 加载多语言并进行监听
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">
<RouterView />
</ConfigProvider>
</template>
<style>
#app {
height: 100%;
}
body .ant-pro-basicLayout {
display: flex;
flex-direction: column;
width: 100%;
min-height: 100vh;
}
.ant-pro-sider {
z-index: 20;
}
.slide-left-enter-active,
.slide-left-leave-active,
.slide-right-enter-active,
.slide-right-leave-active {
transition-duration: 0.5s;
transition-property: height, opacity, transform;
transition-timing-function: cubic-bezier(0.55, 0, 0.1, 1);
overflow: hidden;
}
.slide-left-enter,
.slide-right-leave-active {
opacity: 0;
transform: translate(2em, 0);
}
.slide-left-leave-active,
.slide-right-enter {
opacity: 0;
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;
}
</style>
+95
View File
@@ -0,0 +1,95 @@
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 listNeBackup(query: Record<string, any>) {
let totalSQL = 'select count(id) as total from ne_backup ';
let rowsSQL = ' select * from ne_backup ';
// 查询
let querySQL = 'where 1=1';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// 分页
const pageNum = query.pageNum - 1;
const limtSql = ` order by create_time desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/ne_backup`,
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_backup'];
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 noticeId 网元ID
* @returns object
*/
export async function delNeBackup(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/${data.neType}/neBackup/${data.fileName}`,
method: 'delete',
});
}
/**
* 获取备份信息文件
* @param menuId 网元ID
* @returns object
*/
export async function downloadNeBackup(data: Record<string, any>) {
return await request({
url: `/api/rest/systemManagement/v1/${data.neType}/neBackup/${data.fileName}`,
method: 'get',
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 修改备份说明
* @param menuId 网元ID
* @returns object
*/
export async function updateBackInfo(data:Record<string,any>){
return request({
url: `/api/rest/databaseManagement/v1/omc_db/ne_backup?WHERE=id=${data.id}`,
method: 'put',
data: { data: { comment: data.backupInfo } },
});
}
+55
View File
@@ -0,0 +1,55 @@
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;
}
+464
View File
@@ -0,0 +1,464 @@
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',
});
}
/**
* 更新网元配置重新载入
* @param neType 网元类型
* @param neId 网元ID
* @returns
*/
export async function updateNeConfigReload(neType: string, neId: string) {
// 发起请求
const result = await request({
url: `/api/rest/operationManagement/v1/elementType/${neType}/objectType/mml?ne_id=${neId}`,
method: 'post',
data: { mml: ['reload'] },
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
const v = result.data.data[0];
const str = v.toLowerCase();
if (str.indexOf('ok') !== -1) {
delete result.data;
} else if (str.indexOf('success') !== -1) {
delete result.data;
} else {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
}
return result;
}
+72
View File
@@ -0,0 +1,72 @@
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;
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,
});
}
+246
View File
@@ -0,0 +1,246 @@
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 listNeInfo(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from ne_info where status=0 ';
let rowsSQL = 'select * from ne_info where status=0 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type = '${query.neType}' `;
}
// 分页
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/ne_info`,
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_info'];
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 menuId 网元ID
* @returns object
*/
export async function getNeInfo(id: string | number) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/ne_info`,
method: 'get',
params: {
SQL: `select * from ne_info where status=0 and 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['ne_info'][0]),
});
}
return result;
}
/**
* 新增网元
* @param data 网元对象
* @returns object
*/
export function addNeInfo(data: Record<string, any>) {
data.port = `${data.port}`;
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/neInfo`,
method: 'post',
data: data,
});
}
/**
* 修改网元
* @param data 网元对象
* @returns object
*/
export function updateNeInfo(data: Record<string, any>) {
data.port = `${data.port}`;
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/neInfo`,
method: 'put',
data: data,
});
}
/**
* 删除网元
* @param noticeId 网元ID
* @returns object
*/
export async function delNeInfo(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/neInfo?ne_id=${data.neId}`,
method: 'delete',
});
}
/**
* 获取网元网元列表
* @returns object
*/
export async function getNelistAll() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/ne_info`,
method: 'get',
params: {
SQL: `SELECT ne_type,ne_name,ne_id,ip FROM ne_info WHERE status = 0`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['ne_info']),
});
}
return result;
}
/**
* 导出网元配置文件
* @param
* @returns bolb
*/
export function exportSet(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/cm?ne_id=${data.neId}`,
method: 'get',
responseType: 'blob',
headers: {
'Content-Type': 'application/octet-stream',
},
timeout: 180_000,
});
}
/**
* 导入网元配置文件
* @param data 网元对象
* @returns object
*/
export function importFile(data: Record<string, any>) {
let dataType: 'json' | 'form-data' = 'json';
let url = `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/cm?ne_id=${data.neId}`;
let obj: any = { fileName: data.fileName };
if (data.importType === 'local') {
let formData = new FormData();
formData.append('nfType', data.neType);
formData.append('nfId', data.neId);
formData.append('file', data.file);
obj = formData;
dataType = 'form-data';
}
// 处理FormData类型的data
return request({
url,
method: 'post',
data: obj,
dataType,
timeout: 180_000,
});
}
/**
* 查询远程服务器上网元配置文件
* @param data 网元对象
* @returns object
*/
export async function listServerFile(data: Record<string, any>) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/ne_backup?SQL= select * from ne_backup where ne_type ='${data.neType}'`,
method: 'get',
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['ne_backup']),
});
}
return result;
}
/**
* 启动网元
* @param
* @returns bolb
*/
export function startNf(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/service/start?neId=${data.neId}`,
method: 'post',
timeout: 180_000,
});
}
/**
* 重启网元
* @param
* @returns bolb
*/
export function restartNf(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/service/restart?neId=${data.neId}`,
method: 'post',
timeout: 180_000,
});
}
/**
* 停止网元
* @param
* @returns bolb
*/
export function stopNf(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/elementType/${data.neType}/objectType/service/stop?neId=${data.neId}`,
method: 'post',
timeout: 180_000,
});
}
+217
View File
@@ -0,0 +1,217 @@
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 listNeSoftware(query: Record<string, any>) {
let totalSQL = 'select count(id) as total from ne_software ';
let rowsSQL = ' select * from ne_software ';
// 查询
let querySQL = 'where 1=1';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// 分页
const pageNum = query.pageNum - 1;
const limtSql = ` order by update_time desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/ne_software`,
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_software'];
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 noticeId 网元ID
* @returns object
*/
export async function delNeSoftware(data: Record<string, any>) {
return request({
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}`,
method: 'delete',
});
}
/**
* 获取软件信息文件
* @param menuId 网元ID
* @returns object
*/
export async function downloadNeSoftware(data: Record<string, any>) {
return await request({
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}`,
method: 'get',
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 上传文件
* @param data 表单数据对象
* @returns object
*/
export function uploadNeSoftware(data: FormData) {
return request({
url: `/api/rest/systemManagement/v1/${data.get('nf')}/software/${data.get(
'version'
)}`,
method: 'post',
data,
dataType: 'form-data',
timeout: 180_000,
});
}
/**
* 下发文件
* @param data 数据对象
* @returns object
*/
export async function sendNeSoftware(data: Record<string, any>) {
const result = await request({
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'post',
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
delete result.data;
return result;
}
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
/**
* 激活文件
* @param data 数据对象
* @returns object
*/
export async function runNeSoftware(data: Record<string, any>) {
const result = await request({
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'put',
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
delete result.data;
return result;
}
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
/**
* 回退文件
* @param data 数据对象
* @returns object
*/
export async function backNeSoftware(data: Record<string, any>) {
const result = await request({
url: `/api/rest/systemManagement/v1/${data.neType}/software/${data.version}/${data.neId}`,
method: 'PATCH',
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
delete result.data;
return result;
}
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
/**
* 查询版本列表
* @param query 查询参数
* @returns object
*/
export async function listNeVersion(query: Record<string, any>) {
let totalSQL = 'select count(id) as total from ne_version ';
let rowsSQL = 'select * from ne_version ';
// 查询
let querySQL = 'where 1=1';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
if (query.status) {
querySQL += ` and status = '${query.status}' `;
}
if (query.beginTime && query.endTime) {
querySQL += ` and update_time BETWEEN '${query.beginTime}' AND '${query.endTime}' `;
}
// 分页
const pageNum = query.pageNum - 1;
const limtSql = ` order by update_time desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/ne_version`,
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_version'];
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;
}
+289
View File
@@ -0,0 +1,289 @@
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 useUserStore from '@/store/modules/user';
/**
* 获取活动告警数
* @returns object
*/
export async function getActiveAlarmTotal() {
let totalSQL = `select count(*) as total from alarm where alarm_status='1'`;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm`,
method: 'get',
params: {
SQL: totalSQL,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
const itemData = result.data.data;
if (Array.isArray(itemData)) {
const v = itemData[0]['alarm'];
if (Array.isArray(v)) {
result.data = v[0]['total'];
}
}
}
return result;
}
/**
* 查询列表
* @param query 查询参数
* @returns object
*/
export async function listAct(query: Record<string, any>, filterSQl: string) {
let totalSQL = `select count(*) as total from alarm where alarm_status='1' ${filterSQl} `;
let rowsSQL = `select * from alarm where alarm_status='1' ${filterSQl}`;
// 查询
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.origSeverity) {
querySQL += ` and orig_severity in('${query.origSeverity}' )`;
}
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`,
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'];
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 updateConfirm(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: userName,
ack_state: '1',
},
};
return request({
url: `/api/rest/databaseManagement/v1/update/omc_db/alarm?WHERE=id='${data.id}'`,
method: 'put',
data: finalData,
});
}
/**
* 取消确认告警
* @param data 鉴权对象
* @returns object
*/
export function cancelConfirm(data: (string | number)[]) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: '',
ack_state: '0',
},
};
return request({
url: `/api/rest/databaseManagement/v1/update/omc_db/alarm?WHERE=id in(${data.join(
','
)})`,
method: 'put',
data: finalData,
});
}
/**
* 设置告警显示过滤
* @param data 鉴权对象
* @returns object
*/
export function showPass(data: Record<string, any>) {
let querySQL = '';
querySQL += data.alarm_code ? ` and alarm_code != ${data.alarm_code} ` : '';
querySQL += data.alarm_type
? ` and alarm_type !=\\' ${data.alarm_type} \\'`
: '';
querySQL += data.pv_flag ? ` and pv_flag !=\\'${data.pv_flag} \\'` : '';
querySQL += data.orig_severity
? ` and orig_severity !=\\'${data.orig_severity}\\'`
: '';
querySQL += data.ne_id ? ` and ne_id !=\\'${data.ne_id}\\' ` : '';
querySQL += data.ne_type ? ` and ne_type !=\\'${data.ne_type}\\' ` : '';
let toBackJson = {
data: {
value: querySQL,
value_json: JSON.stringify(data),
},
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='displayFilter'`,
method: 'put',
data: toBackJson,
});
}
/**
* 获取告警显示过滤条件
* @param data 鉴权对象
* @returns object
*/
export function getPass() {
return request({
url: `/api/rest/databaseManagement/v1/select/omc_db/config`,
method: 'get',
params: {
SQL: "SELECT value_json,value FROM config WHERE config_tag ='displayFilter'",
},
});
}
/**
* 清除告警信息
* @param data 鉴权对象
* @returns object
*/
export function clearAlarm(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
data: {
clear_time: parseDateToStr(time),
clear_type: '2',
alarm_status: '0',
clear_user: userName,
},
};
return request({
url: `/api/rest/databaseManagement/v1/update/omc_db/alarm?WHERE=id in(${data.join(
','
)})`,
method: 'put',
data: finalData,
});
}
/**
* 手工同步
* @param data 鉴权对象
* @returns object
*/
export function listSync() {
return request({
url: `/api/rest/faultManagement/v1/elementType/all/objectType/alarms`,
method: 'get',
});
}
/**
* 活动告警导出
* @param query 查询参数
* @returns bolb
*/
export async function exportAll(query: Record<string, any>) {
let rowsSQL = `select * from alarm where alarm_status='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`,
method: 'get',
params: {
rowsSQL: rowsSQL + querySQL,
},
});
if (result.code === RESULT_CODE_SUCCESS) {
let v = result.data.data[0];
const vArr = parseObjLineToHump(v['alarm']);
result.data = vArr == null ? [] : vArr;
}
return result;
}
+190
View File
@@ -0,0 +1,190 @@
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 tag 配置ID
* @returns object
*/
export async function getAlarmSet() {
let arr = [];
// 历史告警保存时间
const logDurationResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'historyDuration'`,
},
});
arr.push(logDurationResult);
// 同步设置
const logCapacityResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'syncTaskPeriod'`,
},
});
arr.push(logCapacityResult);
// 发起请求
const result = await Promise.allSettled(arr).then(resArr => {
let resultData: any = {};
for (const item of resArr) {
if (item.status === 'rejected') {
continue;
}
const itemV = item.value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data.data)
) {
let itemData = itemV.data.data[0];
const v = parseObjLineToHump(itemData['config'][0]);
let vJSON: any = {};
if (v.configTag == 'syncTaskPeriod') {
try {
vJSON = JSON.parse(v.valueJson);
} catch (error) {
console.error(error);
}
resultData = { ...resultData, ...vJSON };
} else {
resultData[v.configTag] = parseInt(v.value);
}
}
}
if (Object.keys(resultData).length === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: {} };
}
return {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: resultData,
};
});
return result;
}
/**
* 修改告警设置
* @param data 配置对象
* @returns object
*/
export async function updateAlarmSet(data: Record<string, any>) {
let { historyDuration, ...syncTaskPeriodJson } = data;
let arr = [];
// 历史告警保存时间
const historyDurationResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='historyDuration'`,
method: 'put',
data: { data: { value: data.historyDuration.toString() } },
});
arr.push(historyDurationResult);
// 同步设置
const syncTaskPeriodResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='syncTaskPeriod'`,
method: 'put',
data: { data: { value_json: JSON.stringify(syncTaskPeriodJson) } },
});
arr.push(syncTaskPeriodResult);
// 发起请求
const result = await Promise.allSettled(arr).then(resArr => {
let resultNum = 0;
for (const item of resArr) {
if (item.status === 'rejected') {
continue;
}
const itemV = item.value;
// 解析数据
let itemData = itemV.data.data;
if (itemV.code === RESULT_CODE_SUCCESS && itemData) {
let rows = itemData.affectedRows;
if (rows) {
resultNum += rows;
}
}
}
// 无变更时
if (resultNum === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
}
return {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: resultNum,
};
});
return result;
}
/**
* 查询告警前转接口设置
* @param tag 配置ID
* @returns object
*/
export async function getForwardSet() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'forwardAlarm'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
const v = parseObjLineToHump(data['config'][0]);
let vJSON: any = {};
try {
vJSON = JSON.parse(v.valueJson);
} catch (error) {
console.error(error);
}
return Object.assign(result, {
data: vJSON,
});
}
return result;
}
/**
* 修改告警前转接口配置
* @param data 配置对象
* @returns object
*/
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}
]
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='forwardAlarm'`,
method: 'put',
data: { data: { value_json: JSON.stringify(obj) } },
});
// 解析数据
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;
}
+161
View File
@@ -0,0 +1,161 @@
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 useUserStore from '@/store/modules/user';
/**
* 查询列表
* @param query 查询参数
* @returns object
*/
export async function listAct(query: Record<string, any>) {
let totalSQL = `select count(*) as total from alarm where alarm_status='0'`;
let rowsSQL = `select * from alarm where alarm_status='0'`;
// 查询
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 pageNum = (query.pageNum - 1) * query.pageSize;
const limtSql = ` order by clear_time desc limit ${pageNum},${query.pageSize} `;
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/alarm`,
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'];
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 updateConfirm(data: Record<string, any>) {
var time = new Date();
const userName = useUserStore().userName;
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: userName,
ack_state: '1',
},
};
return request({
url: `/api/rest/databaseManagement/v1/update/omc_db/alarm?WHERE=id='${data.id}'`,
method: 'put',
data: finalData,
});
}
/**
* 取消确认告警
* @param data 鉴权对象
* @returns object
*/
export function cancelConfirm(data: (string | number)[]) {
var time = new Date();
let finalData = {
alarm: {
ack_time: parseDateToStr(time),
ack_user: '',
ack_state: '0',
},
};
return request({
url: `/api/rest/databaseManagement/v1/update/omc_db/alarm?WHERE=id in(${data.join(
','
)})`,
method: 'put',
data: finalData,
});
}
/**
* 历史告警导出
* @param query 查询参数
* @returns bolb
*/
export async function exportAll(query: Record<string, any>) {
let rowsSQL = `select * from alarm where alarm_status='0'`;
// 查询
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`,
method: 'get',
params: {
rowsSQL: rowsSQL + querySQL,
},
});
if (result.code === RESULT_CODE_SUCCESS) {
let v = result.data.data[0];
const vArr = parseObjLineToHump(v['alarm']);
result.data = vArr == null ? [] : vArr;
}
return result;
}
+91
View File
@@ -0,0 +1,91 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseDateToStr } from '@/utils/date-utils';
/**
* 查询公告列表
* @param query 查询参数
* @returns object
*/
export async function listMain() {
const result = await request({
url: '/api/rest/systemManagement/v1/elementType/all/objectType/systemState',
method: 'get',
timeout: 60_000,
});
// console.log(result);
let realData = result.data.data;
const mergedData = realData.map((obj: any) => {
// console.log(obj);
const [key, value] = Object.entries(obj)[0];
const ipAddress = (value as any).ipAddress;
const systemState = (value as any).systemState;
const errCode = systemState && systemState['errorCode'];
var time = new Date();
// console.log(key, value);
let mergedObj;
if (errCode === undefined && systemState) {
mergedObj = {
...systemState,
refresh: parseDateToStr(time),
ipAddress: ipAddress,
name: key.split('/').join('_'),
status: 'Normal',
};
} else {
mergedObj = {
version: '-',
refresh: parseDateToStr(time),
ipAddress: ipAddress,
name: key.split('/').join('_'),
status: 'Abnormal',
};
}
return mergedObj;
});
// console.log(mergedData);
// console.log(rowArr)
return mergedData;
}
/**
* 获取服务器时间
* @returns object
*/
export async function getServerTime() {
// 发起请求
const result = await request({
url: `/api/rest/systemManagement/v1/elementType/OMC/objectType/time`,
method: 'get',
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data) {
return Object.assign(result, {
data: result.data.data,
});
}
return result;
}
/**
* 获取系统暴露的配置信息
* @returns object
*/
export function getSysConf() {
return request({
url: `/sys-conf`,
method: 'get',
});
}
/**
* 转存帮助文档
* @returns object
*/
export function transferHelpDoc(data: Record<string, any>) {
return request({
url: `/helpDoc`,
method: 'post',
data,
});
}
+72
View File
@@ -0,0 +1,72 @@
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 listAlarm(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from alarm_log where 1=1 ';
let rowsSQL = 'select * from alarm_log where 1=1 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
if (query.status) {
querySQL += ` and alarm_status = '${query.status}' `;
}
if (query.beginTime) {
querySQL += ` and log_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and log_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by log_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/alarm_log`,
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['alarm_log'];
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;
}
+69
View File
@@ -0,0 +1,69 @@
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 listForwarding(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from alarm_forward_log where 1=1 ';
let rowsSQL = 'select * from alarm_forward_log where 1=1 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
if (query.beginTime) {
querySQL += ` and log_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and log_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by log_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/alarm_forward_log`,
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['alarm_forward_log'];
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;
}
+328
View File
@@ -0,0 +1,328 @@
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 tag 配置ID
* @returns object
*/
export async function getLogSet() {
let arr = [];
// 日志保存时间
const logDurationResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'logDuration'`,
},
});
arr.push(logDurationResult);
// 日志最大容量
const logCapacityResult = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'logCapacity'`,
},
});
arr.push(logCapacityResult);
// 发起请求
const result = await Promise.allSettled(arr).then(resArr => {
let resultData: any = {};
for (const item of resArr) {
if (item.status === 'rejected') {
continue;
}
const itemV = item.value;
// 解析数据
if (
itemV.code === RESULT_CODE_SUCCESS &&
Array.isArray(itemV.data.data)
) {
let itemData = itemV.data.data[0];
const v = parseObjLineToHump(itemData['config'][0]);
resultData[v.configTag] = parseInt(v.value);
}
}
if (Object.keys(resultData).length === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: {} };
}
return {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: resultData,
};
});
return result;
}
/**
* 修改日志设置
* @param data 配置对象
* @returns object
*/
export async function updateLogSet(data: Record<string, any>) {
let arr = [];
for (const key in data) {
const value = `${data[key]}`;
const result = request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='${key}'`,
method: 'put',
data: { data: { value } },
});
arr.push(result);
}
const result = await Promise.allSettled(arr).then(resArr => {
let resultNum = 0;
for (const item of resArr) {
if (item.status === 'rejected') {
continue;
}
const itemV = item.value;
// 解析数据
let itemData = itemV.data.data;
if (itemV.code === RESULT_CODE_SUCCESS && itemData) {
let rows = itemData.affectedRows;
if (rows) {
resultNum += rows;
}
}
}
// 无变更时
if (resultNum === 0) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
}
return {
code: RESULT_CODE_SUCCESS,
msg: RESULT_MSG_SUCCESS,
data: resultNum,
};
});
return result;
}
/**
* 查询FTP日志设置
* @param tag 配置ID
* @returns object
*/
export async function getFtpLogSet() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'ftpLogSet'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
const v = parseObjLineToHump(data['config'][0]);
let vJSON: any = {};
try {
vJSON = JSON.parse(v.valueJson);
vJSON['ftpLog'] = parseInt(vJSON['ftpLog']) || 12;
} catch (error) {
console.error(error);
}
return Object.assign(result, {
data: vJSON,
});
}
return result;
}
/**
* 修改FTP日志配置
* @param data 配置对象
* @returns object
*/
export async function updateFtpLogSet(data: Record<string, any>) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='ftpLogSet'`,
method: 'put',
data: { data: { value_json: JSON.stringify(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;
}
/**
* 查询日志远程输出设置
* @param tag 配置ID
* @returns object
*/
export async function getRemoteOut() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'remoteLogSet'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
const v = parseObjLineToHump(data['config'][0]);
let vJSON = {};
try {
vJSON = JSON.parse(v.valueJson);
} catch (error) {
console.error(error);
}
return Object.assign(result, {
data: vJSON,
});
}
return result;
}
/**
* 修改日志远程输出配置
* @param data 配置对象
* @returns object
*/
export async function updateRemoteOut(data: Record<string, any>) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='remoteLogSet'`,
method: 'put',
data: { data: { value_json: JSON.stringify(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;
}
/**
* 日志查询导出
* @param query 查询参数
* @returns bolb
*/
export async function exportLog(query: Record<string, any>) {
// 查询
let querySQL = '';
if (query.logType === 'security_log') {
querySQL = `SELECT account_name,account_type,op_ip,op_type,op_content,op_result,op_time
FROM security_log
WHERE op_time >= '${query.beginTime}' AND op_time <= '${query.endTime}'
order by op_time`;
}
if (query.logType === 'alarm_log') {
querySQL = `SELECT ne_type,ne_id,alarm_id,alarm_seq,alarm_code,alarm_status,event_time,log_time
FROM security_log
WHERE log_time >= '${query.beginTime}' AND log_time <= '${query.endTime}'
order event_time,log_time`;
}
if (query.logType === 'operation_log') {
querySQL = `SELECT account_name,account_type,op_ip,subsys_tag,op_type,op_content,op_result,begin_time,end_time,vnf_flag
FROM operation_log
WHERE begin_time >= '${query.beginTime}' AND end_time <= '${query.endTime}' AND op_type ='${query.opType}'
order begin_time,end_time`;
}
if (!querySQL) {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: [] };
}
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/${query.logType}`,
method: 'get',
params: {
SQL: querySQL,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS) {
let v = result.data.data[0];
const vArr = parseObjLineToHump(v[query.logType]);
result.data = vArr == null ? [] : vArr;
}
return result;
}
/**
* 日志手动备份
* @param data 配置对象
* @returns object
*/
export async function backupLog(logType: string) {
const result = await request({
url: `/api/rest/dataManagement/v1/omc_db/${logType}/backup`,
method: 'post',
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data.data) {
let v = result.data.data[logType].affectedRows || 0;
if (v) {
result.data = v;
return result;
} else {
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language], data: 0 };
}
}
return result;
}
/**
* 日志手动备份文件下载
* @param data 配置对象
* @returns object
*/
export async function backupDownload(path: string) {
return request({
url: `/api/rest/fileManagement/v1/path/file?path=${path}`,
method: 'get',
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 日志手动备份文件列表
* @param data 配置对象
* @returns object
*/
export function backupFileList() {
return request({
url: `/api/rest/fileManagement/v1/files/listFiles`,
method: 'post',
data: {
path: '/usr/local/omc/database',
expand: true,
showHidden: false,
page: 1,
pageSize: 100,
search: '',
containSub: false,
},
});
}
+69
View File
@@ -0,0 +1,69 @@
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 listMML(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from mml_log where 1=1 ';
let rowsSQL = 'select * from mml_log where 1=1 ';
// 查询
let querySQL = '';
if (query.accountName) {
querySQL += ` and user like '%${query.accountName}%' `;
}
if (query.beginTime) {
querySQL += ` and log_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and log_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by log_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/mml_log`,
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['mml_log'];
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;
}
+72
View File
@@ -0,0 +1,72 @@
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 listOperationLog(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from operation_log where 1=1 ';
let rowsSQL = 'select * from operation_log where 1=1 ';
// 查询
let querySQL = '';
if (query.accountName) {
querySQL += ` and account_name like '%${query.accountName}%' `;
}
if (query.opType) {
querySQL += ` and op_type = '${query.opType}' `;
}
if (query.beginTime) {
querySQL += ` and begin_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and end_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by begin_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/operation_log`,
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['operation_log'];
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;
}
+72
View File
@@ -0,0 +1,72 @@
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 listSecurityLog(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from security_log where 1=1 ';
let rowsSQL = 'select * from security_log where 1=1 ';
// 查询
let querySQL = '';
if (query.accountName) {
querySQL += ` and account_name like '%${query.accountName}%' `;
}
if (query.opType) {
querySQL += ` and op_type = '${query.opType}' `;
}
if (query.beginTime) {
querySQL += ` and op_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and op_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by op_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/security_log`,
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['security_log'];
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;
}
+59
View File
@@ -0,0 +1,59 @@
import { request } from '@/plugins/http-fetch';
// 登录方法
export function login(data: Record<string, string>) {
return request({
url: '/login',
method: 'post',
data: data,
whithToken: false,
});
}
/**
* 注册方法
* @param data 注册对象
* @returns object
*/
export function register(data: Record<string, any>) {
return request({
url: '/register',
method: 'post',
data: data,
whithToken: false,
});
}
/**
* 获取用户详细信息
* @returns object
*/
export function getInfo() {
return request({
url: '/getInfo',
method: 'get',
});
}
/**
* 退出方法
* @returns object
*/
export function logout() {
return request({
url: '/logout',
method: 'post',
});
}
/**
* 获取验证码
* @returns object
*/
export function getCaptchaImage() {
return request({
url: '/captchaImage',
method: 'get',
whithToken: false,
});
}
+62
View File
@@ -0,0 +1,62 @@
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 getOperationSet() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config`,
method: 'get',
params: {
SQL: `SELECT * FROM config WHERE config_tag = 'operationSet'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
const v = parseObjLineToHump(data['config'][0]);
let vJSON = {};
try {
vJSON = JSON.parse(v.valueJson);
} catch (error) {
console.error(error);
}
return Object.assign(result, {
data: vJSON,
});
}
return result;
}
/**
* 修改操作维护接口设置
* @param data 配置对象
* @returns object
*/
export async function updateOperationSet(data: Record<string, any>) {
const result = await request({
url: `/api/rest/databaseManagement/v1/omc_db/config?WHERE=config_tag='operationSet'`,
method: 'put',
data: { data: { value_json: JSON.stringify(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;
}
+53
View File
@@ -0,0 +1,53 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询网元可用cmd命令
* @param neType 网元类型
* @returns object
*/
export async function getMMLByNE(neType: string) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_system`,
method: 'get',
params: {
SQL: `select * from mml_system where ne_type = '${neType}' and status = 'Active'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['mml_system']),
});
}
return result;
}
/**
* 发送网元的mml命令
* @param neType 网元类型
* @param neId 网元ID
* @param cmdStr 命令串
* @returns
*/
export async function sendMMlByNE(
neType: string,
neId: string,
cmdArr: string[]
) {
// 发起请求
const result = await request({
url: `/api/rest/operationManagement/v1/elementType/${neType}/objectType/mml?ne_id=${neId}`,
method: 'post',
data: { mml: cmdArr },
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
result.data = result.data.data;
}
return result;
}
+47
View File
@@ -0,0 +1,47 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询OMC可用cmd命令
* @returns object
*/
export async function getMMLByOMC() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_command`,
method: 'get',
params: {
SQL: `select * from mml_command where ne_type = 'OMC' and status = 'Active'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['mml_command']),
});
}
return result;
}
/**
* 发送OMC的mml命令
* @param neId 网元ID
* @param cmdStr 命令串
* @returns
*/
export async function sendMMlByOMC(neId: string, cmdArr: string[]) {
// 发起请求
const result = await request({
url: `/api/rest/operationManagement/v1/elementType/OMC/objectType/mml?ne_id=${neId}`,
method: 'post',
data: { mml: cmdArr },
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
result.data = result.data.data;
}
return result;
}
+47
View File
@@ -0,0 +1,47 @@
import { RESULT_CODE_SUCCESS } from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 查询UDM可用cmd命令
* @returns object
*/
export async function getMMLByUDM() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/mml_subscriber`,
method: 'get',
params: {
SQL: `select * from mml_subscriber where ne_type = 'UDM' and status = 'Active'`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['mml_subscriber']),
});
}
return result;
}
/**
* 发送UDM的mml命令
* @param neId 网元ID
* @param cmdStr 命令串
* @returns
*/
export async function sendMMlByUDM(neId: string, cmdArr: string[]) {
// 发起请求
const result = await request({
url: `/api/rest/operationManagement/v1/elementType/UDM/objectType/mml?ne_id=${neId}`,
method: 'post',
data: { mml: cmdArr },
timeout: 180_000,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
result.data = result.data.data;
}
return result;
}
+86
View File
@@ -0,0 +1,86 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询缓存详细
* @returns object
*/
export function getCache() {
return request({
url: '/monitor/cache',
method: 'get',
});
}
/**
* 查询缓存名称列表
* @returns object
*/
export function listCacheName() {
return request({
url: '/monitor/cache/getNames',
method: 'get',
});
}
/**
* 查询缓存名称下键名列表
* @param cacheName 缓存名称列表中得到的缓存名称
* @returns object
*/
export function listCacheKey(cacheName: string) {
return request({
url: `/monitor/cache/getKeys/${cacheName}`,
method: 'get',
});
}
/**
* 查询缓存内容
* @param cacheName 键名列表中得到的缓存名称
* @param cacheKey 键名列表中得到的缓存键名
* @returns object
*/
export function getCacheValue(cacheName: string, cacheKey: string) {
return request({
url: `/monitor/cache/getValue/${cacheName}/${cacheKey}`,
method: 'get',
});
}
/**
* 删除缓存名称下键名列表
* @param cacheName 缓存名称列表中得到的缓存名称
* @returns object
*/
export function clearCacheName(cacheName: string) {
return request({
url: `/monitor/cache/clearCacheName/${cacheName}`,
method: 'delete',
});
}
/**
* 删除缓存键名
* @param cacheName 键名列表中得到的缓存名称
* @param cacheKey 键名列表中得到的缓存键名
* @returns object
*/
export function clearCacheKey(cacheName: string, cacheKey: string) {
return request({
url: `/monitor/cache/clearCacheKey/${cacheName}/${cacheKey}`,
method: 'delete',
});
}
/**
* 安全清理缓存名称
*
* 指定可清理的缓存key
* @returns object
*/
export function clearCacheSafe() {
return request({
url: '/monitor/cache/clearCacheSafe',
method: 'delete',
});
}
+121
View File
@@ -0,0 +1,121 @@
import { request } from '@/plugins/http-fetch';
/**
* 定时任务调度列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportJob(query: Record<string, any>) {
return request({
url: '/monitor/job/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询定时任务调度列表
* @param query 查询参数
* @returns object
*/
export function listJob(query: Record<string, any>) {
return request({
url: '/monitor/job/list',
method: 'get',
params: query,
});
}
/**
* 查询定时任务调度详细
* @param jobId 任务ID
* @returns object
*/
export function getJob(jobId: string | number) {
return request({
url: `/monitor/job/${jobId}`,
method: 'get',
});
}
/**
* 新增定时任务调度
* @param data 任务对象
* @returns object
*/
export function addJob(data: Record<string, any>) {
return request({
url: '/monitor/job',
method: 'post',
data: data,
});
}
/**
* 修改定时任务调度
* @param data 任务对象
* @returns object
*/
export function updateJob(data: Record<string, any>) {
return request({
url: '/monitor/job',
method: 'put',
data: data,
});
}
/**
* 删除定时任务调度
* @param jobId 任务ID
* @returns object
*/
export function delJob(jobId: string | number) {
return request({
url: `/monitor/job/${jobId}`,
method: 'delete',
});
}
/**
* 任务状态修改
* @param jobId 任务ID
* @param status 变更状态值
* @returns
*/
export function changeJobStatus(
jobId: string | number,
status: string | number
) {
return request({
url: '/monitor/job/changeStatus',
method: 'put',
data: {
jobId,
status,
},
});
}
/**
* 定时任务立即执行一次
* @param jobId 任务ID
* @returns object
*/
export function runJob(jobId: string) {
return request({
url: `/monitor/job/run/${jobId}`,
method: 'put',
});
}
/**
* 重置刷新队列
* @returns object
*/
export function resetQueueJob() {
return request({
url: '/monitor/job/resetQueueJob',
method: 'put',
});
}
+53
View File
@@ -0,0 +1,53 @@
import { request } from '@/plugins/http-fetch';
/**
* 定时任务调度日志列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportJobLog(
query: Record<string, any>
) {
return request({
url: '/monitor/jobLog/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询调度日志列表
* @param query 查询参数
* @returns object
*/
export function listJobLog(query: Record<string, any>) {
return request({
url: '/monitor/jobLog/list',
method: 'get',
params: query,
});
}
/**
* 删除调度日志
* @param jobLogId 任务日志Id
* @returns object
*/
export function delJobLog(jobLogId: string) {
return request({
url: `/monitor/jobLog/${jobLogId}`,
method: 'delete',
});
}
/**
* 清空调度日志
* @returns object
*/
export function cleanJobLog() {
return request({
url: '/monitor/jobLog/clean',
method: 'delete',
});
}
+10
View File
@@ -0,0 +1,10 @@
import { request } from '@/plugins/http-fetch';
/**资源监控信息加载 */
export function getLoad(query: Record<string, any>) {
return request({
url: '/monitor/load',
method: 'get',
params: query,
});
}
+26
View File
@@ -0,0 +1,26 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询在线用户列表
* @param query 查询参数
* @returns object
*/
export function listOnline(query: Record<string, any>) {
return request({
url: '/monitor/online/list',
method: 'get',
params: query,
});
}
/**
* 强退用户
* @param tokenId 授权标识
* @returns object
*/
export function forceLogout(tokenId: string) {
return request({
url: `/monitor/online/${tokenId}`,
method: 'delete',
});
}
+93
View File
@@ -0,0 +1,93 @@
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;
}
+9
View File
@@ -0,0 +1,9 @@
import { request } from '@/plugins/http-fetch';
/**服务器服务信息 */
export function getSystemInfo() {
return request({
url: '/monitor/system-info',
method: 'get',
});
}
+131
View File
@@ -0,0 +1,131 @@
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',
});
}
/**
* 导入鉴权数据
* @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',
});
}
/**
* 查询鉴权列表
* @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,
});
}
/**
* 新增鉴权
* @param data 鉴权对象
* @returns object
*/
export function addAuth(data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${data.neId}`,
method: 'post',
data: data,
});
}
/**
* 批量新增鉴权
* @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,
});
}
/**
* 删除鉴权
* @param data 鉴权对象
* @returns object
*/
export function delAuth(neId: string, data: Record<string, any>) {
return request({
url: `/ne/udm/auth/${neId}/${data.imsi}`,
method: 'delete',
});
}
/**
* 批量删除鉴权
* @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',
});
}
+33
View File
@@ -0,0 +1,33 @@
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 listBase5G(query: Record<string, any>) {
query.nbId = query.id;
const result = await request({
url: '/api/rest/ueManagement/v1/elementType/amf/objectType/nbInfo',
method: 'get',
params: query,
});
let data: DataList = {
total: 0,
rows: [],
code: result.code,
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;
}
// 模拟数据
// data.rows =[{"address":"192.168.1.137:38412","id":"217","name":"","ueNum":0}]
return data;
}
+42
View File
@@ -0,0 +1,42 @@
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 listIMS(query: Record<string, any>) {
query.nbId = query.id;
const result = await request({
url: '/api/rest/ueManagement/v1/elementType/ims/objectType/ueInfo',
method: 'get',
params: query,
});
let data: DataList = {
total: 0,
rows: [],
code: result.code,
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;
}
// 测试数据
// data.rows = [
// {
// activeTime: '2023-11-29 17:04:54',
// barring: 0,
// impu: 'sip:12307551232@ims.mnc000.mcc460.3gppnetwork.org',
// imsi: '460001230000002',
// msisdn: '12307551232',
// regState: 1,
// },
// ];
return data;
}
+39
View File
@@ -0,0 +1,39 @@
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 listN3iwf(query: Record<string, any>) {
const result = await request({
url: '/api/rest/ueManagement/v1/elementType/n3iwf/objectType/ueInfo',
method: 'get',
params: query,
});
let data: DataList = {
total: 0,
rows: [],
code: result.code,
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;
}
// 模拟数据
// data.rows = [
// {
// "activeTime": "2023-11-29 06:35:43",
// "imsi": "460302072701181",
// "nai": "0460302072701181@nai.epc.mnc030.mcc460.3gppnetwork.org",
// "regState": 1
// }
// ]
return data;
}
+208
View File
@@ -0,0 +1,208 @@
import {
RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS,
} from '@/constants/result-constants';
import { request } from '@/plugins/http-fetch';
import { parseObjLineToHump } from '@/utils/parse-utils';
/**
* 签约规则导出
* @param data 表单数据对象
* @returns bolb
*/
export function exportRule(data: Record<string, any>) {
return request({
url: '/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/export',
method: 'post',
data: data,
responseType: 'blob',
timeout: 180_000,
});
}
/**
* 导入规则数据
* @param neId 网元ID
* @param data 表单数据对象
* @returns object
*/
export function importRuleData(data: Record<string, any>) {
return request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/file/import`,
method: 'post',
data,
timeout: 60_000,
});
}
/**
* 查询规则列表
* @param query 查询参数
* @returns object
*/
export async function listRules(query: Record<string, any>) {
const result = await request({
url: '/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo',
method: 'get',
params: query,
});
let data: DataList = {
total: 0,
rows: [],
code: result.code,
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;
}
// 模拟数据
// data.rows = [
// {
// msisdn: '12307550237',
// pccRules: 'internet',
// rfsp: 0,
// sessRules: 'internet',
// },
// {
// msisdn: '12307550238',
// pccRules: 'internet|ims_sig',
// rfsp: 0,
// sessRules: 'internet|ims_sig',
// },
// ];
return data;
}
/**
* 查询规则详细
* @param neId 网元ID
* @returns object
*/
export async function getRule(neId: string, imsi: string) {
const result = await request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${imsi}`,
method: 'get',
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
result.data = result.data.data[0];
}
return result;
}
/**
* 修改规则
* @param data 规则对象
* @returns object
*/
export async function updateRule(data: Record<string, any>) {
const result = await request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
method: 'put',
data: data,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
return {
code: RESULT_CODE_ERROR,
msg: result.data?.cause,
data: result.data,
};
}
return result;
}
/**
* 批量修改规则
* @param data 规则对象
* @returns object
*/
export async function batchUpdateRule(data: Record<string, any>) {
const result = await request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/${data.num}?neId=${data.neId}`,
method: 'put',
data: data,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
return {
code: RESULT_CODE_ERROR,
msg: result.data?.cause,
data: result.data,
};
}
return result;
}
/**
* 新增规则
* @param data 规则对象
* @returns object
*/
export async function addRule(data: Record<string, any>) {
const result = await request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${data.neId}`,
method: 'post',
data: data,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
return {
code: RESULT_CODE_ERROR,
msg: result.data?.cause,
data: result.data,
};
}
return result;
}
/**
* 批量新增规则
* @param data 规则对象
* @returns object
*/
export async function batchAddRule(data: Record<string, any>) {
const result = await request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/${data.num}?neId=${data.neId}`,
method: 'post',
data: data,
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && result.data?.status) {
return {
code: RESULT_CODE_ERROR,
msg: result.data?.cause,
data: result.data,
};
}
return result;
}
/**
* 删除规则
* @param data 规则对象
* @returns object
*/
export function delRule(neId: string, data: Record<string, any>) {
return request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo?neId=${neId}&imsi=${data.imsi}`,
method: 'delete',
});
}
/**
* 批量删除规则
* @param data 规则对象
* @returns object
*/
export async function batchDelRule(data: Record<string, any>) {
return request({
url: `/api/rest/ueManagement/v1/elementType/pcf/objectType/ueInfo/${data.num}?neId=${data.neId}&imsi=${data.imsi}`,
method: 'delete',
});
}
+134
View File
@@ -0,0 +1,134 @@
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,
});
}
/**
* 新增签约
* @param data 签约对象
* @returns object
*/
export function addSub(neID: string, data: Record<string, any>) {
return request({
url: `/ne/udm/sub/${neID}`,
method: 'post',
data: data,
});
}
/**
* 批量新增新增签约
* @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,
});
}
/**
* 删除签约
* @param data 签约对象
* @returns object
*/
export function delSub(neId: string, imsi: string) {
return request({
url: `/ne/udm/sub/${neId}/${imsi}`,
method: 'delete',
});
}
/**
* 批量删除签约
* @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',
});
}
+63
View File
@@ -0,0 +1,63 @@
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 listUE(query: Record<string, any>) {
query.nbId = query.id;
const result = await request({
url: '/api/rest/ueManagement/v1/elementType/smf/objectType/ueInfo',
method: 'get',
params: query,
});
let data: DataList = {
total: 0,
rows: [],
code: result.code,
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;
}
// 模拟数据
// data.rows = [
// {
// imsi: 'imsi-460029004200044',
// msisdn: 'msisdn-12346002044',
// pduSessionInfo: [
// {
// activeTime: '2023-11-29 18:39:06',
// dnn: 'ims',
// ipv4: '10.10.48.97',
// ipv6: '',
// pduSessionID: 6,
// ranN3IP: '192.168.8.223',
// sstSD: '1-000001',
// tai: '46000-0001',
// upfN3IP: '192.168.1.161',
// },
// {
// activeTime: '2023-11-29 18:39:05',
// dnn: 'cmnet',
// ipv4: '10.10.48.62',
// ipv6: '',
// pduSessionID: 5,
// ranN3IP: '192.168.8.223',
// sstSD: '1-000001',
// tai: '46000-0001',
// upfN3IP: '192.168.1.163',
// },
// ],
// ratType: 'EUTRAN',
// },
// ];
return data;
}
+78
View File
@@ -0,0 +1,78 @@
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 listgoldData(query: Record<string, any>) {
console.log(query);
let totalSQL = 'select count(*) as total from gold_kpi where 1=1 ';
let rowsSQL =
'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 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and gold_kpi.ne_type like '%${query.neType}%' `;
}
if (query.beginTime) {
querySQL += ` and start_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and end_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by ';
if (query.sortField) {
sortSql += ` ${query.sortField} `;
}else{
sortSql += ` start_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/gold_kpi`,
method: 'get',
params: {
totalSQL: totalSQL + querySQL,
rowsSQL: rowsSQL + querySQL + sortSql + limtSql,
},
timeout: 60_000,
});
// 解析数据
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['gold_kpi'];
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;
}
+78
View File
@@ -0,0 +1,78 @@
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 listperfData(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from measure_data where 1=1 ';
let rowsSQL = 'select * from measure_data where 1=1 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
if (query.taskId) {
querySQL += ` and task_id like '%${query.taskId}%' `;
}
if (query.beginTime) {
querySQL += ` and start_time >= '${query.beginTime}' `;
}
if (query.endTime) {
querySQL += ` and end_time <= '${query.endTime}' `;
}
// 排序
let sortSql = ' order by ';
if (query.sortField) {
sortSql += ` ${query.sortField} `;
}else{
sortSql += ` start_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/measure_data`,
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['measure_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;
}
+189
View File
@@ -0,0 +1,189 @@
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 listPerfThreshold(query: Record<string, any>) {
let totalSQL = 'select count(*) as total from measure_threshold where 1=1 ';
let rowsSQL = 'select * from measure_threshold where 1=1 ';
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// 排序
let sortSql = ' order by create_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/measure_threshold`,
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['measure_threshold'];
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 getPerfThre(id: string | number) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/measure_threshold`,
method: 'get',
params: {
SQL: `select * from measure_threshold 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['measure_threshold'][0]),
});
}
return result;
}
/**
* 新增性能门限
* @param data 网元对象
* @returns object
*/
export function addPerfThre(data: Record<string, any>) {
let obj: any = {
ne_type: data.neType,
kpi_set: data.kpiSet,
status: 'Inactive',
orig_severity: data.origSeverity,
threshold: data.threshold,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold`,
method: 'post',
data: { measure_task: [obj] },
});
}
/**
* 修改性能测量任务
* @param data 网元对象
* @returns object
*/
export function updatePerfThre(data: Record<string, any>) {
let obj: any = {
ne_type: data.neType,
kpi_set: data.performanceArr,
status: 'Inactive',
orig_severity: data.origSeverity,
threshold: data.threshold,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_task?WHERE=id=${data.id}`,
method: 'put',
data: { data: obj },
});
}
/**
* 删除性能门限
* @param noticeId 网元ID
* @returns object
*/
export async function delPerfThre(data: Record<string, any>) {
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`,
method: 'delete',
});
}
/**
* 获取网元跟踪接口列表
* @returns object
*/
export async function getNePerformanceList() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/measure_title`,
method: 'get',
params: {
SQL: `SELECT * FROM measure_title`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['measure_title']),
});
}
return result;
}
/**
* 激活任务
* @param
* @returns bolb
*/
export function threRun(data: Record<string, any>) {
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`,
method: 'put',
data: { data: { status: 'Active' } },
});
}
/**
* 挂起任务
* @param
* @returns bolb
*/
export function threStop(data: Record<string, any>) {
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_threshold?WHERE=id=${data.id}`,
method: 'put',
data: { data: { status: 'Inactive' } },
});
}
+226
View File
@@ -0,0 +1,226 @@
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 listPerfTask(query: Record<string, any>) {
let totalSQL = "select count(*) as total from measure_task where status!='DELETED' ";
let rowsSQL = "select * from measure_task where status!='DELETED' ";
// 查询
let querySQL = '';
if (query.neType) {
querySQL += ` and ne_type like '%${query.neType}%' `;
}
// 排序
let sortSql = ' order by create_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/measure_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['measure_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 getPerfTask(id: string | number) {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/select/omc_db/measure_task`,
method: 'get',
params: {
SQL: `select * from measure_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['measure_task'][0]),
});
}
return result;
}
/**
* 新增性能测量任务
* @param data 网元对象
* @returns object
*/
export function addPerfTask(data: Record<string, any>) {
var time = new Date();
var periods: any = [];
var scheduule: any = [];
//如果没选测量计划 则选择了测量时段也要置为空。因为二者是绑定关系
if (data.smPlan.length && data.bigPlan.length) {
data.periods.forEach((item: any) => {
periods.push({ Start: item.split(',')[0], End: item.split(',')[1] });
});
scheduule.push({ Type: data.bigPlan, Days: data.smPlan });
}
let obj: any = {
ne_type: data.neType,
ne_ids: JSON.stringify([data.neId]),
kpi_set: data.kpiSet,
schedule: JSON.stringify(scheduule),
start_time: data.startTime,
end_time: data.endTime,
granul_option: data.granulOption,
status: 'Inactive',
account_id: data.accountId,
create_time: parseDateToStr(time),
periods: JSON.stringify(periods),
comment: data.comment,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_task`,
method: 'post',
data: { measure_task: [obj] },
});
}
/**
* 修改性能测量任务
* @param data 网元对象
* @returns object
*/
export function updatePerfTask(data: Record<string, any>) {
var time = new Date();
var periods: any = [];
var scheduule: any = [];
//如果没选测量计划 则选择了测量时段也要置为空。因为二者是绑定关系
if (data.smPlan.length && data.bigPlan.length) {
data.periods.forEach((item: any) => {
periods.push({ Start: item.split(',')[0], End: item.split(',')[1] });
});
scheduule.push({ Type: data.bigPlan, Days: data.smPlan });
}
let obj: any = {
ne_type: data.neType,
ne_ids: JSON.stringify([data.neId]),
kpi_set: data.kpiSet,
schedule: JSON.stringify(scheduule),
start_time: data.startTime,
end_time: data.endTime,
granul_option: data.granulOption,
status: 'Inactive',
account_id: data.accountId,
create_time: parseDateToStr(time),
periods: JSON.stringify(periods),
comment: data.comment,
};
return request({
url: `/api/rest/databaseManagement/v1/omc_db/measure_task?WHERE=id=${data.id}`,
method: 'put',
data: { measure_task: obj },
});
}
/**
* 删除任务
* @param noticeId 网元ID
* @returns object
*/
export async function delPerfTask(data: Record<string, any>) {
return request({
url: `/api/rest/performanceManagement/v1/elementType/${data.neType.toLowerCase()}/objectType/measureTask?id=${
data.id
}`,
method: 'delete',
});
}
/**
* 获取性能测量指标列表
* @returns object
*/
export async function getNePerformanceList() {
// 发起请求
const result = await request({
url: `/api/rest/databaseManagement/v1/elementType/omc_db/objectType/measure_title`,
method: 'get',
params: {
SQL: `SELECT * FROM measure_title`,
},
});
// 解析数据
if (result.code === RESULT_CODE_SUCCESS && Array.isArray(result.data.data)) {
let data = result.data.data[0];
return Object.assign(result, {
data: parseObjLineToHump(data['measure_title']),
});
}
return result;
}
/**
* 激活任务
* @param
* @returns bolb
*/
export function taskRun(data: Record<string, any>) {
return request({
url: `/api/rest/performanceManagement/v1/elementType/${data.neType.toLowerCase()}/objectType/measureTask?id=${data.id}`,
method: 'post',
});
}
/**
* 挂起任务
* @param
* @returns bolb
*/
export function taskStop(data: Record<string, any>) {
return request({
url: `/api/rest/performanceManagement/v1/elementType/${data.neType.toLowerCase()}/objectType/measureTask?id=${data.id}`,
method: 'PATCH',
});
}
+56
View File
@@ -0,0 +1,56 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询用户个人信息
* @returns object
*/
export function getUserProfile() {
return request({
url: '/system/user/profile',
method: 'get',
});
}
/**
* 修改用户个人信息
* @param data 用户对象
* @returns object
*/
export function updateUserProfile(data: Record<string, any>) {
return request({
url: '/system/user/profile',
method: 'put',
data: data,
});
}
/**
* 用户密码重置
* @param userId 用户ID
* @param status 变更状态值
* @returns object
*/
export function updateUserPwd(oldPassword: string, newPassword: string) {
return request({
url: '/system/user/profile/updatePwd',
method: 'put',
data: {
oldPassword,
newPassword,
},
});
}
/**
* 用户头像上传
* @param data 表单数据对象
* @returns object
*/
export function uploadAvatar(data: FormData) {
return request({
url: '/system/user/profile/avatar',
method: 'post',
data,
dataType: 'form-data',
});
}
+12
View File
@@ -0,0 +1,12 @@
import { request } from '@/plugins/http-fetch';
/**
* 获取路由
* @returns object
*/
export const getRouters = () => {
return request({
url: '/getRouters',
method: 'get',
});
};
+114
View File
@@ -0,0 +1,114 @@
import { request } from '@/plugins/http-fetch';
/**
* 参数配置列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportConfig(query: Record<string, any>) {
return request({
url: '/system/config/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询参数配置列表
* @param query 查询参数
* @returns object
*/
export function listConfig(query: Record<string, any>) {
return request({
url: '/system/config/list',
method: 'get',
params: query,
});
}
/**
* 查询参数详细
* @param configId 参数配置ID
* @returns object
*/
export function getConfig(configId: string | number) {
return request({
url: `/system/config/${configId}`,
method: 'get',
});
}
/**
* 根据参数键名查询参数值
* @param configKey 参数键名
* @returns object
*/
export function getConfigKey(configKey: string) {
return request({
url: `/system/config/configKey/${configKey}`,
method: 'get',
});
}
/**
* 新增参数配置
* @param data 参数配置对象
* @returns object
*/
export function addConfig(data: Record<string, any>) {
return request({
url: '/system/config',
method: 'post',
data: data,
});
}
/**
* 修改参数配置
* @param data 参数配置对象
* @returns object
*/
export function updateConfig(data: Record<string, any>) {
return request({
url: '/system/config',
method: 'put',
data: data,
});
}
/**
* 删除参数配置
* @param configId 参数配置ID
* @returns object
*/
export function delConfig(configId: string | number) {
return request({
url: `/system/config/${configId}`,
method: 'delete',
});
}
/**
* 刷新参数缓存
* @returns object
*/
export function refreshCache() {
return request({
url: '/system/config/refreshCache',
method: 'put',
});
}
/**
* 根据参数键名改值
* @param data 参数配置对象 { "key": "sys", "value": "核心网" }
* @returns object
*/
export function changeValue(data: Record<string, string>) {
return request({
url: '/system/config/changeValue',
method: 'put',
data: data,
});
}
+99
View File
@@ -0,0 +1,99 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询部门列表
* @param query 查询参数
* @returns object
*/
export function listDept(query: Record<string, any>) {
return request({
url: '/system/dept/list',
method: 'get',
params: query,
});
}
/**
* 查询部门列表(排除节点)
* @param deptId 部门ID
* @returns object
*/
export function listDeptExcludeChild(deptId: string | number) {
return request({
url: `/system/dept/list/exclude/${deptId}`,
method: 'get',
});
}
/**
* 查询部门详细
* @param deptId 部门ID
* @returns object
*/
export function getDept(deptId: string | number) {
return request({
url: `/system/dept/${deptId}`,
method: 'get',
});
}
/**
* 新增部门
* @param data 部门对象
* @returns object
*/
export function addDept(data: Record<string, any>) {
return request({
url: '/system/dept',
method: 'post',
data: data,
});
}
/**
* 修改部门
* @param data 部门对象
* @returns object
*/
export function updateDept(data: Record<string, any>) {
return request({
url: '/system/dept',
method: 'put',
data: data,
});
}
/**
* 删除部门
* @param deptId 部门ID
* @returns object
*/
export function delDept(deptId: string | number) {
return request({
url: `/system/dept/${deptId}`,
method: 'delete',
});
}
/**
* 查询部门下拉树结构
* @returns object
*/
export function deptTreeSelect() {
return request({
url: '/system/dept/treeSelect',
method: 'get',
});
}
/**
* 部门树结构列表(指定角色)
* @param roleId 角色ID
* @returns object
*/
export function roleDeptTreeSelect(roleId: string | number) {
return request({
url: `/system/dept/roleDeptTreeSelect/${roleId}`,
method: 'get',
});
}
+90
View File
@@ -0,0 +1,90 @@
import { request } from '@/plugins/http-fetch';
/**
* 字典数据列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportData(query: Record<string, any>) {
return request({
url: '/system/dict/data/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询字典数据列表
* @param query 查询值
* @returns
*/
export function listData(query: Record<string, any>) {
return request({
url: '/system/dict/data/list',
method: 'get',
params: query,
});
}
/**
* 查询字典数据详细
* @param dictCode 字典代码值
* @returns object
*/
export function getData(dictCode: string | number) {
return request({
url: `/system/dict/data/${dictCode}`,
method: 'get',
});
}
/**
* 新增字典数据
* @param data 字典数据对象
* @returns object
*/
export function addData(data: Record<string, any>) {
return request({
url: '/system/dict/data',
method: 'post',
data: data,
});
}
/**
* 修改字典数据
* @param data 字典数据对象
* @returns object
*/
export function updateData(data: Record<string, any>) {
return request({
url: '/system/dict/data',
method: 'put',
data: data,
});
}
/**
* 删除字典数据
* @param dictCode 字典代码值
* @returns object
*/
export function delData(dictCode: string | number) {
return request({
url: `/system/dict/data/${dictCode}`,
method: 'delete',
});
}
/**
* 字典数据列表(指定字典类型)
* @param dictType 字典类型
* @returns object
*/
export function getDictDataType(dictType: string) {
return request({
url: `/system/dict/data/type/${dictType}`,
method: 'get',
});
}
+102
View File
@@ -0,0 +1,102 @@
import { request } from '@/plugins/http-fetch';
/**
* 字典类型列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportType(query: Record<string, any>) {
return request({
url: '/system/dict/type/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询字典类型列表
* @param query 查询值
* @returns
*/
export function listType(query: Record<string, any>) {
return request({
url: '/system/dict/type/list',
method: 'get',
params: query,
});
}
/**
* 查询字典类型详细
* @param dictId 字典编号
* @returns object
*/
export function getType(dictId: string | number) {
return request({
url: `/system/dict/type/${dictId}`,
method: 'get',
});
}
/**
* 新增字典类型
* @param data 字典数据对象
* @returns object
*/
export function addType(data: Record<string, any>) {
return request({
url: '/system/dict/type',
method: 'post',
data: data,
});
}
/**
* 修改字典类型
* @param data 字典数据对象
* @returns object
*/
export function updateType(data: Record<string, any>) {
return request({
url: '/system/dict/type',
method: 'put',
data: data,
});
}
/**
* 删除字典类型
* @param dictCode 字典代码值
* @returns object
*/
export function delType(dictId: string | number) {
return request({
url: `/system/dict/type/${dictId}`,
method: 'delete',
});
}
/**
* 刷新字典缓存
* @param data 字典数据对象
* @returns object
*/
export function refreshCache() {
return request({
url: '/system/dict/type/refreshCache',
method: 'put',
});
}
/**
* 获取字典选择框列表
* @param data 字典数据对象
* @returns object
*/
export function getDictOptionselect() {
return request({
url: '/system/dict/type/getDictOptionselect',
method: 'get',
});
}
+67
View File
@@ -0,0 +1,67 @@
import { request } from '@/plugins/http-fetch';
/**
* 登录日志列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportSysLogLogin(
query: Record<string, any>
) {
return request({
url: '/system/log/login/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询登录日志列表
* @param query 查询参数
* @returns object
*/
export function listSysLogLogin(
query: Record<string, any>
) {
return request({
url: '/system/log/login/list',
method: 'get',
params: query,
});
}
/**
* 删除登录日志
* @param loginIds 登录Id
* @returns object
*/
export function delSysLogLogin(loginIds: string) {
return request({
url: `/system/log/login/${loginIds}`,
method: 'delete',
});
}
/**
* 清空登录日志
* @returns object
*/
export function cleanSysLogLogin() {
return request({
url: '/system/log/login/clean',
method: 'delete',
});
}
/**
* 解锁用户登录状态
* @param userName 登录账号
* @returns object
*/
export function unlock(userName: string) {
return request({
url: `/system/log/login/unlock/${userName}`,
method: 'put',
});
}
+55
View File
@@ -0,0 +1,55 @@
import { request } from '@/plugins/http-fetch';
/**
* 操作日志列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportSysLogOperate(
query: Record<string, any>
) {
return request({
url: '/system/log/operate/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询操作日志列表
* @param query 查询参数
* @returns object
*/
export function listSysLogOperate(
query: Record<string, any>
) {
return request({
url: '/system/log/operate/list',
method: 'get',
params: query,
});
}
/**
* 删除操作日志
* @param operId 操作日志ID
* @returns object
*/
export function delSysLogOperate(operId: string) {
return request({
url: `/system/log/operate/${operId}`,
method: 'delete',
});
}
/**
* 清空操作日志
* @returns object
*/
export function cleanSysLogOperate() {
return request({
url: '/system/log/operate/clean',
method: 'delete',
});
}
+87
View File
@@ -0,0 +1,87 @@
import { request } from '@/plugins/http-fetch';
/**
* 查询菜单列表
* @param query 查询参数
* @returns object
*/
export function listMenu(query?: Record<string, any>) {
return request({
url: '/system/menu/list',
method: 'get',
params: query,
});
}
/**
* 查询菜单详细
* @param menuId 菜单ID
* @returns object
*/
export function getMenu(menuId: string | number) {
return request({
url: `/system/menu/${menuId}`,
method: 'get',
});
}
/**
* 查询菜单下拉树结构
* @returns object
*/
export function menuTreeSelect() {
return request({
url: '/system/menu/treeSelect',
method: 'get',
});
}
/**
* 根据角色ID查询菜单下拉树结构
* @param roleId 角色ID
* @returns object
*/
export function roleMenuTreeSelect(roleId: string | number) {
return request({
url: `/system/menu/roleMenuTreeSelect/${roleId}`,
method: 'get',
});
}
/**
* 新增菜单
* @param data 菜单对象
* @returns object
*/
export function addMenu(data: Record<string, any>) {
return request({
url: '/system/menu',
method: 'post',
data: data,
});
}
/**
* 修改菜单
* @param data 菜单对象
* @returns object
*/
export function updateMenu(data: Record<string, any>) {
return request({
url: '/system/menu',
method: 'put',
data: data,
});
}
/**
* 删除菜单
* @param menuId 菜单ID
* @returns object
*/
export function delMenu(menuId: string | number) {
return request({
url: `/system/menu/${menuId}`,
method: 'delete',
});
}
+78
View File
@@ -0,0 +1,78 @@
import { request } from '@/plugins/http-fetch';
/**
* 岗位列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportPost(query: Record<string, any>) {
return request({
url: '/system/post/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询岗位列表
* @param query 查询参数
* @returns object
*/
export function listPost(query: Record<string, any>) {
return request({
url: '/system/post/list',
method: 'get',
params: query,
});
}
/**
* 查询岗位详细
* @param postId 岗位ID
* @returns object
*/
export function getPost(postId: string | number) {
return request({
url: `/system/post/${postId}`,
method: 'get',
});
}
/**
* 新增岗位
* @param data 岗位对象
* @returns object
*/
export function addPost(data: Record<string, any>) {
return request({
url: '/system/post',
method: 'post',
data: data,
});
}
/**
* 修改岗位
* @param data 岗位对象
* @returns object
*/
export function updatePost(data: Record<string, any>) {
return request({
url: '/system/post',
method: 'put',
data: data,
});
}
/**
* 删除岗位
* @param postId 岗位ID
* @returns object
*/
export function delPost(postId: string | number) {
return request({
url: `/system/post/${postId}`,
method: 'delete',
});
}
+134
View File
@@ -0,0 +1,134 @@
import { request } from '@/plugins/http-fetch';
/**
* 角色列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportRole(query: Record<string, any>) {
return request({
url: '/system/role/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询角色列表
* @param query 查询参数
* @returns object
*/
export function listRole(query: Record<string, any>) {
return request({
url: '/system/role/list',
method: 'get',
params: query,
});
}
/**
* 查询角色详细
* @param roleId 角色ID
* @returns object
*/
export function getRole(roleId: string | number) {
return request({
url: `/system/role/${roleId}`,
method: 'get',
});
}
/**
* 新增角色
* @param data 角色对象
* @returns object
*/
export function addRole(data: Record<string, any>) {
return request({
url: '/system/role',
method: 'post',
data: data,
});
}
/**
* 修改角色
* @param data 角色对象
* @returns object
*/
export function updateRole(data: Record<string, any>) {
return request({
url: '/system/role',
method: 'put',
data: data,
});
}
/**
* 删除角色
* @param roleId 角色ID
* @returns object
*/
export function delRole(roleId: string | number) {
return request({
url: `/system/role/${roleId}`,
method: 'delete',
});
}
/**
* 角色状态修改
* @param roleId 角色ID
* @param status 角色状态
* @returns object
*/
export function changeRoleStatus(roleId: string, status: string | number) {
return request({
url: '/system/role/changeStatus',
method: 'put',
data: {
roleId,
status,
},
});
}
/**
* 修改角色数据权限
* @param data 角色对象
* @returns object
*/
export function dataScope(data: Record<string, any>) {
return request({
url: '/system/role/dataScope',
method: 'put',
data: data,
});
}
/**
* 角色分配用户列表
* @param query 查询参数
* @returns object
*/
export function authUserAllocatedList(query: Record<string, any>) {
return request({
url: '/system/role/authUser/allocatedList',
method: 'get',
params: query,
});
}
/**
* 角色分配选择授权
* @param data 角色对象
* @returns object
*/
export function authUserChecked(data: Record<string, any>) {
return request({
url: '/system/role/authUser/checked',
method: 'put',
data: data,
});
}
+142
View File
@@ -0,0 +1,142 @@
import { request } from '@/plugins/http-fetch';
/**
* 导入用户模板数据
* @param data 表单数据对象
* @returns object
*/
export function importData(data: FormData) {
return request({
url: '/system/user/importData',
method: 'post',
data,
dataType: 'form-data',
timeout: 180_000,
});
}
/**
* 导入用户模板下载
* @returns bolb
*/
export function importTemplate() {
return request({
url: '/system/user/importTemplate',
method: 'get',
responseType: 'blob',
});
}
/**
* 用户列表导出
* @param query 查询参数
* @returns bolb
*/
export function exportUser(query: Record<string, any>) {
return request({
url: '/system/user/export',
method: 'post',
data: query,
responseType: 'blob',
});
}
/**
* 查询用户列表
* @param query 查询参数
* @returns object
*/
export function listUser(query: Record<string, any>) {
return request({
url: '/system/user/list',
method: 'get',
params: query,
});
}
/**
* 查询用户详细
* @param userId 用户ID,新增0
* @returns object
*/
export function getUser(userId: string | number = '0') {
return request({
url: `/system/user/${userId}`,
method: 'get',
});
}
/**
* 新增用户
* @param data 用户对象
* @returns object
*/
export function addUser(data: Record<string, any>) {
return request({
url: '/system/user',
method: 'post',
data: data,
});
}
/**
* 修改用户
* @param data 用户对象
* @returns object
*/
export function updateUser(data: Record<string, any>) {
return request({
url: '/system/user',
method: 'put',
data: data,
});
}
/**
* 删除用户
* @param userId 用户ID
* @returns object
*/
export function delUser(userId: string | number) {
return request({
url: `/system/user/${userId}`,
method: 'delete',
});
}
/**
* 用户密码重置
* @param userId 用户ID
* @param password 密码
* @returns object
*/
export function resetUserPwd(userId: string | number, password: string) {
return request({
url: '/system/user/resetPwd',
method: 'put',
data: {
userId,
password,
},
});
}
/**
* 用户状态修改
* @param userId 用户ID
* @param status 变更状态值
* @returns object
*/
export function changeUserStatus(
userId: string | number,
status: string | number
) {
return request({
url: '/system/user/changeStatus',
method: 'put',
data: {
userId,
status,
},
});
}
+230
View File
@@ -0,0 +1,230 @@
import {
RESULT_CODE_ERROR,
RESULT_CODE_SUCCESS,
RESULT_MSG_ERROR,
} from '@/constants/result-constants';
import { request, language } from '@/plugins/http-fetch';
import { encode } from 'js-base64';
/**
* 下载文件
* @param filePath 文件路径带/,如:/upload/default/2023/06/xx.png
* @param range 断点续传标识,填入字符串 `bytes=${startByte}-${endByte}`
* @returns object
*/
export async function downloadFile(filePath: string, range?: string) {
return request({
url: `/file/download/${encode(filePath)}`,
method: 'get',
headers: range ? { range } : {},
responseType: 'blob',
});
}
/**
* 下载文件切片
* @param filePath 文件路径带/,如:/upload/default/2023/06/xx.png
* @param chunkSize 数据块大小MB,默认1MB
* @returns bolb
*/
export async function downloadFileChunk(
filePath: string,
chunkSize: number = 1
): Promise<Blob> {
chunkSize = chunkSize * 1024 * 1024;
let start = 0; // 文件块的起始字节
let end = chunkSize - 1; // 文件块的结束字节
let totalSize = 0; // 文件总大小
let downloadedSize = 0; // 已下载的文件大小
let filePart: Blob[] = []; // 文件数据块内容
// 发送带有 Range 请求头的 HTTP 请求
async function sendRequest() {
const range = `bytes=${start}-${end}`;
const res = await downloadFile(filePath, range);
if (res.code === RESULT_CODE_SUCCESS && res.status === 206) {
// 总大小
const contentRange = res.headers.get('content-range') || '0/0';
totalSize = parseInt(contentRange.split('/')[1]);
// 已下载大小
const contentLength = res.headers.get('content-length') || '0';
const chunkSize = parseInt(contentLength);
// 下一段数据块区间
start += chunkSize;
end = Math.min(start + chunkSize - 1, totalSize - 1);
// 记录下载结果
filePart.push(res.data);
downloadedSize += chunkSize;
// 小于总大小继续下载后续数据
if (downloadedSize < totalSize) {
await sendRequest();
}
} else {
return res;
}
}
await sendRequest();
return new Blob(filePart, { type: 'application/octet-stream' });
}
/**
* 上传文件
* @param data 表单数据对象
* @returns object
*/
export function uploadFile(data: FormData) {
return request({
url: '/file/upload',
method: 'post',
data,
dataType: 'form-data',
});
}
/**
* 上传切片文件
* @param file 文件对象
* @param chunkSize 数据块大小MB,默认1MB
* @param subPath 归属子路径, 默认default
* @returns
*/
export async function uploadFileChunk(
fileData: File,
chunkSize: number = 1,
subPath: string = 'default'
) {
const { name, size } = fileData;
const chunkSizeInBytes = chunkSize * 1024 * 1024;
// 文件标识使用唯一编码 MD5(文件名+文件大小)
const fileIdentifier = `${name}-${size}`;
// 文件切分为多少份进行上传
const chunksCount = Math.ceil(size / chunkSizeInBytes);
// 切块的数据数据用于上传
const fileChunks: { index: number; chunk: Blob }[] = [];
for (let i = 0; i < chunksCount; i++) {
const start = i * chunkSizeInBytes;
const end = Math.min(start + chunkSizeInBytes, size);
fileChunks.push({
index: i,
chunk: fileData.slice(start, end),
});
}
// 检查是否已上传部分数据块
const resCheck = await chunkCheck(fileIdentifier, name);
if (resCheck.code !== RESULT_CODE_SUCCESS) {
return resCheck;
}
let uploadedSize = 0;
let uploadProgress = 0;
for (const { index, chunk } of fileChunks) {
const chunksIndex = `${index}`;
// 跳过已上传块
if (resCheck.data.includes(chunksIndex)) {
continue;
}
// 上传数据块
const formData = new FormData();
formData.append('file', chunk, name);
formData.append('index', chunksIndex);
formData.append('identifier', fileIdentifier);
const resUpload = await chunkUpload(formData);
if (resUpload.code === RESULT_CODE_SUCCESS) {
uploadedSize += chunk.size;
uploadProgress = (uploadedSize / size) * 100;
console.log(`上传进度:${uploadProgress}%`);
} else {
// 上传失败处理
break;
}
}
// 上传数据完整后合并数据块
if (uploadedSize === size) {
return await chunkMerge(fileIdentifier, name, subPath);
}
return { code: RESULT_CODE_ERROR, msg: RESULT_MSG_ERROR[language] };
}
/**
* 切片文件检查
* @param identifier 文件标识
* @param fileName 原文件名称
* @returns object
*/
export function chunkCheck(identifier: string, fileName: string) {
return request({
url: '/file/chunkCheck',
method: 'post',
data: { identifier, fileName },
});
}
/**
* 切片文件合并
* @param identifier 文件标识
* @param fileName 原文件名称
* @param subPath 文件归属
* @returns object
*/
export function chunkMerge(
identifier: string,
fileName: string,
subPath: string = 'default'
) {
return request({
url: '/file/chunkMerge',
method: 'post',
data: { identifier, fileName, subPath },
});
}
/**
* 切片文件上传
* @param data 表单数据对象
* @returns object
*/
export function chunkUpload(data: FormData) {
return request({
url: '/file/chunkUpload',
method: 'post',
data,
dataType: 'form-data',
});
}
/**
* 上传切片文件并发送文件到网元端
* @param neType 网元类型, UPF
* @param neId 网元标识, 001
* @param fileData 文件对象
* @param chunkSize 数据块大小MB,默认1MB
* @returns
*/
export async function uploadFileToNE(
neType: string,
neId: string,
fileData: File,
chunkSize: number = 1
) {
const uploadChunkRes = await uploadFileChunk(fileData, chunkSize, 'import');
if (uploadChunkRes.code === RESULT_CODE_SUCCESS) {
const transferToNeFileRes = await request({
url: `/ne/action/pushFile`,
method: 'post',
data: {
uploadPath: uploadChunkRes.data.fileName,
neType,
neId,
},
});
return transferToNeFileRes;
}
return uploadChunkRes;
}
+71
View File
@@ -0,0 +1,71 @@
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',
});
}
+34
View File
@@ -0,0 +1,34 @@
import { request } from '@/plugins/http-fetch';
// 网元抓包生成pcap
export function tcpdumpNeTask(
signal: AbortSignal,
data: Record<string, string>
) {
return request({
url: '/tcpdump/ne',
method: 'post',
data: data,
signal: signal,
});
}
// 网元抓包pcap文件下载
export function tcpdumpPcapDownload(data: Record<string, string>) {
return request({
url: '/tcpdump/download',
method: 'post',
data: data,
responseType: 'blob',
timeout: 180_000,
});
}
// 网元抓包生成pcap
export function tcpdumpNeUPFTask(data: Record<string, string>) {
return request({
url: '/tcpdump/neUPF',
method: 'post',
data: data,
});
}
+154
View File
@@ -0,0 +1,154 @@
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;
}
Loaded 100 of 249 files, more files were not shown because too many files have changed in this diff. Show more