Compare commits

...

511 Commits

Author SHA1 Message Date
陈劲松
80130e046b Merge branch 'cherry-pick-3f450020' into 'dev-23.07'
fix: 修复实体下拉预览跳转url参数不对的问题

See merge request cyber-narrator/cn-ui!33
2023-07-17 12:08:09 +00:00
chenjinsong
bddc366f05 fix: 修复实体下拉预览跳转url参数不对的问题
(cherry picked from commit 3f45002047)
2023-07-17 20:08:03 +08:00
chenjinsong
4b04433194 fix: 修复关系图有时节点label不对的问题 2023-07-17 11:09:03 +08:00
chenjinsong
f46ec514f0 Merge remote-tracking branch 'origin/dev' into dev 2023-07-17 10:48:22 +08:00
chenjinsong
f915c51254 fix: 修复关系图有时无法拓展的问题 2023-07-17 10:48:13 +08:00
刘洪洪
4290ef2ceb fix: 实体详情tabs入参去除时间参数 2023-07-17 09:50:21 +08:00
刘洪洪
766b777bc6 fix: 修复实体详情底部tab的’相关实体‘active的数值与实际不符的问题 2023-07-16 22:04:23 +08:00
hyx
14125d549d 1.实体详情tab(相关实体、开放端口)没超过100条的话,more按钮隐藏;2.i18n的新增,后端校验失败时没弹提示。用户、角色新增的name重复校验失败时没弹提示;3.下拉框背景色调为白色;4.修改密码增加at least five的校验; 2023-07-15 12:50:03 +08:00
chenjinsong
ee338b247d CN-1066 feat: 增加知识库格式提示 2023-07-14 20:32:18 +08:00
chenjinsong
d640c656fa CN-1160 fix: 调整样式细节 2023-07-14 19:38:30 +08:00
刘洪洪
5edd569148 fix: 实体列表信誉等级图标更换 2023-07-14 18:56:03 +08:00
刘洪洪
f486c53945 fix: 实体详情底部tab的数值添加接口报错时置0处理 2023-07-14 18:43:52 +08:00
chenjinsong
95dc133dac fix: 更新实体列表下拉中地图下钻url 2023-07-14 18:38:47 +08:00
刘洪洪
01c393fee2 fix: 实体关系首页布局调整 2023-07-14 17:43:39 +08:00
chenjinsong
f334746a70 CN-1087 feat: 实体关系图完善 2023-07-14 16:50:30 +08:00
hyx
19ca35b738 CN-1149 一开始就没超过100条的话,把more按钮隐藏掉 2023-07-14 15:56:28 +08:00
hyx
96e7a935ee fix : 详情页"相关实体"展示交互优化(去掉界面多余显示的内容);知识库内新建Tag页,下拉框可用时,背景色为白色; 2023-07-14 15:05:42 +08:00
刘洪洪
dce3921beb fix: 实体关系右侧弹窗列表宽度调整,以及修改实体类型字段取值 2023-07-14 11:08:41 +08:00
刘洪洪
ae7f72a72b fix: 修改实体搜索框的操作符列表范围 2023-07-13 18:06:21 +08:00
刘洪洪
3823ea3dc4 fix: 实体列表吞吐量和展开吞吐量保持保持一致 2023-07-13 17:40:54 +08:00
hyx
4b7a559af7 CN-1149 详情页"相关实体"展示交互优化 2023-07-13 17:16:22 +08:00
hyx
ba8dfaf0d4 CN-1149 详情页"相关实体"展示交互优化 2023-07-13 17:11:00 +08:00
刘洪洪
e489e568e9 fix: 修复实体列表吞吐量字段取错问题 2023-07-13 16:41:31 +08:00
刘洪洪
c0f6a47da4 fix: 实体列表的吞吐量数值为0展示以及展开详情为'-'时去除单位 2023-07-12 18:05:47 +08:00
chenjinsong
7b4070f06a CN-1087 feat: 实体关系图完善 2023-07-12 17:23:42 +08:00
hyx
97ae64943b CN-1128 fix:知识库内新建Tag页,类型一栏背景颜色和其他栏不一致 2023-07-12 15:51:53 +08:00
刘洪洪
4855944e44 fix: 实体基数统计字段名称更改 2023-07-12 15:47:22 +08:00
刘洪洪
22b805791a fix: 实体列表展开详情的关系模块无数据时添加-提示 2023-07-12 14:32:08 +08:00
hyx
80992f0b30 Merge remote-tracking branch 'origin/dev' into dev 2023-07-12 11:52:35 +08:00
hyx
1405d6b3fe CN-1159 fix:userbox、rolebox表单校验提示内容不合理 2023-07-12 11:51:23 +08:00
刘洪洪
607ab78fc1 fix: 修复实体列表搜索框在清除内容后,切换模式内容还存在的问题 2023-07-12 11:46:37 +08:00
刘洪洪
5fcfdc4244 fix: 调整实体列表文字和图表距离 2023-07-12 11:18:25 +08:00
刘洪洪
86c14ae560 fix: 1、删除获取实体列表多余入参;2、左侧filter隐藏空数据项以及添加nodata 2023-07-11 16:37:53 +08:00
刘洪洪
c558bdb952 fix: 实体列表搜索将name更改为label 2023-07-11 15:54:42 +08:00
刘洪洪
d7b6a4f735 fix: 实体列表以及展开详情的loading调整 2023-07-10 18:54:43 +08:00
刘洪洪
4114c3fa36 fix: 实体搜索为advanced模式时,调整关联下拉列表的值 2023-07-10 17:47:38 +08:00
刘洪洪
049622fd4b CN-1111 fix: 鼠标悬浮在搜索框中的模式按钮上时增加提示信息 2023-07-10 16:59:09 +08:00
刘洪洪
d0c4565eef CN-1111: 鼠标悬浮在搜索框中的模式按钮上时增加提示信息 2023-07-10 16:57:20 +08:00
chenjinsong
446bd4431e CN-1087 feat: 实体关系 2023-07-09 21:51:05 +08:00
刘洪洪
9c46e1af47 CN-1150: 实体列表接口对接 2023-07-07 17:22:51 +08:00
hyx
87cd43dde2 CN-1114 fix:手动输入时间范围当开始时间和结束时间的时间点一样时,日期无法输入为同一个月的不同日期 2023-07-05 14:31:34 +08:00
chenjinsong
53b4085111 CN-1156 fix: 修复s3=0时无法下载和预览的问题 2023-07-05 11:28:06 +08:00
hyx
697cc1da2d CN-1118 fix:修改密码时输入错误的当前密码,更新时没有提示 2023-07-03 16:14:09 +08:00
hyx
d841118ad9 CN-1134 fix:知识库切换展示记录数由20/页切换为50/页时,展示No Date 2023-07-03 15:54:32 +08:00
刘洪洪
07156f9e03 fix: 实体关系右侧详情的行间距调整 2023-07-03 14:51:59 +08:00
刘洪洪
35004f419a CN-1143: Network & APP Performance和DNS service insights页面均无法在趋势图中框选时间范围 2023-07-03 14:07:28 +08:00
刘洪洪
5da5f55b80 CN-1144: Dashboard下钻后顶部的模糊查询时间条件错误 2023-07-03 11:21:21 +08:00
hyx
dff5135d88 fix:1、CN-1133 增加IP段格式验证;2、情报分析无数据时样式错误 2023-07-03 08:42:33 +08:00
chenjinsong
f724477934 CN-1087 feat: 关系图部分实现 2023-07-02 22:38:59 +08:00
chenjinsong
24864ca1be Merge remote-tracking branch 'origin/dev' into dev 2023-06-30 18:43:11 +08:00
chenjinsong
0789dbcbfb CN-1087 feat: 关系图部分实现 2023-06-30 18:43:02 +08:00
刘洪洪
17f0701c27 Merge remote-tracking branch 'origin/dev' into dev 2023-06-30 18:08:06 +08:00
刘洪洪
617ee131ec CN-1135: 统一各页面环形图样式 2023-06-30 18:07:46 +08:00
chenjinsong
6d6f863ae7 CN-1130 fix: save增加报错信息提示 2023-06-30 17:24:28 +08:00
chenjinsong
bdee548bc1 CN-1112 fix: 隐藏explore按钮 2023-06-30 16:55:36 +08:00
刘洪洪
5eed8baac1 fix: 调整实体关系的标签文字距离 2023-06-30 15:51:10 +08:00
刘洪洪
e474003376 fix: 修复实体关系ip列表的按钮宽度异常的问题 2023-06-30 15:33:00 +08:00
刘洪洪
76b409d95d fix: 修改实体列表跳转到实体关系的参数名 2023-06-30 14:29:44 +08:00
刘洪洪
09c83e215c fix: 修复实体列表选择时间后刷新界面,时间选择器被重置为1hour的问题 2023-06-30 14:17:52 +08:00
刘洪洪
e8e8bd3462 fix: 修复自动引入element-plus版本导致的提交报错 2023-06-30 11:04:48 +08:00
刘洪洪
0e752cb3a3 fix: 实体关系模块右侧列表详情样式调整 2023-06-30 10:41:29 +08:00
chenjinsong
30883802cb CN-1087 feat: 关系图基本实现 2023-06-29 14:40:50 +08:00
刘洪洪
4c38f1c913 CN-1136: 实体左侧筛选弹框时间参数错误 2023-06-29 14:25:05 +08:00
刘洪洪
a0fe66089f fix: 更新icon图标 2023-06-29 11:56:30 +08:00
刘洪洪
57609406be CN-1093 fix: 添加实体类型初始化 2023-06-29 11:15:15 +08:00
刘洪洪
f38b5c7947 CN-1093 fix: 修改axios自动引入时的问题 2023-06-29 10:59:56 +08:00
刘洪洪
09b37512c9 1093: 实体关系探索--右侧详情信息静态页面开发 2023-06-29 10:46:00 +08:00
刘洪洪
7f15139a38 fix: 修复实体列表左侧filter弹窗因时间戳转换导致偶现noData的问题 2023-06-29 10:31:18 +08:00
刘洪洪
5ee3351ba7 CN-1119: 网络&APP性能页面查看具体ip对应的网络性能时,鼠标悬浮在趋势图上后与鼠标未悬浮时的趋势图不一致 2023-06-28 16:31:29 +08:00
hyx
df89c61a65 CN-1075 table自定义列缓存功能有时会因字段变化导致缓存数据使用报错 2023-06-28 11:23:29 +08:00
hyx
ab1b551642 CN-1075 table自定义列缓存功能有时会因字段变化导致缓存数据使用报错 2023-06-27 10:54:36 +08:00
刘洪洪
38bc1ec729 CN-1115: 实体首页使用全量搜索时报错 2023-06-27 10:41:00 +08:00
刘洪洪
dee401c9f2 CN-1113: 实体详情--tabs增加数字提示 2023-06-26 15:01:53 +08:00
刘洪洪
eb611bdac9 fix: 1、修复customize只保留最后一项点击空白处,再打开customize新增选项,上次禁用的项还存在的问题;2、表格某一列数据为空时,添加-避免界面展示空白 2023-06-25 15:49:54 +08:00
chenjinsong
468026b3fa fix: 修复link monitor有些图没数据时没显示nodata的问题 2023-06-25 15:07:24 +08:00
hyx
ec4dbaf07d Merge remote-tracking branch 'origin/dev' into dev 2023-06-25 13:54:29 +08:00
hyx
a391bd24b9 fix: 知识库、报告点击页数,当选选中页码未变更 2023-06-25 13:54:06 +08:00
刘洪洪
22fa0856fd feat: 千位制处理时,去除逗号后的空格 2023-06-25 11:18:37 +08:00
刘洪洪
fcca6142df feat: 实体首页数字过大进行逗号分隔处理 2023-06-25 10:33:57 +08:00
刘洪洪
a5690b82e7 Merge remote-tracking branch 'origin/dev' into dev 2023-06-19 17:34:30 +08:00
刘洪洪
a0609faaac fix: 更新iconfont图标 2023-06-19 17:34:20 +08:00
hyx
bf4d273567 fix: 调整实体详情底部Related entity界面的样式 2023-06-19 14:31:51 +08:00
hyx
5e682f81d9 CN-1089 统一各列表页的loading、nodata交互 2023-06-16 17:51:08 +08:00
chenjinsong
c86a7cfeae CN-1087 fix: 实体关系探索架子 2023-06-16 17:18:58 +08:00
刘洪洪
f8456e57a3 CN-1071: entity explorer在列表页点击后退时,没有返回首页 2023-06-16 16:33:58 +08:00
刘洪洪
cfa742a95c Merge remote-tracking branch 'origin/dev' into dev 2023-06-16 10:14:54 +08:00
刘洪洪
e9357465c1 fix: 还原实体列表界面和样式 2023-06-16 10:14:44 +08:00
chenjinsong
4ffb0cb42d fix: 修改相关实体的国际化 2023-06-16 09:49:51 +08:00
chenjinsong
871461cf4e fix: 修复npm map地图点不正确显示的问题 2023-06-15 18:50:51 +08:00
刘洪洪
71b0d5e053 CN-1086: 实体列表静态页面开发 2023-06-15 18:48:47 +08:00
chenjinsong
eb493edc02 fix: 更改实体详情tab名称 2023-06-15 16:57:01 +08:00
chenjinsong
be2e2d7de7 fix: 调整实体详情基础信息图表样式 2023-06-14 18:17:44 +08:00
刘洪洪
1deef48b21 fix: 更新iconfont图标 2023-06-14 16:53:05 +08:00
hyx
ace183c86a fix: 知识库,builtIn=1的也支持切换status,依然不支持编辑 2023-06-14 10:36:36 +08:00
hyx
63132e682e CN-1088 实体详情情报聚合tab的nodata提示不友好 2023-06-14 10:35:47 +08:00
hyx
6c7a5ec9be CN-1076 下钻table,若url未指定维度,则默认高亮第一个维度(如IP的下钻tab里有IP,则默认应为IP,而不是country) 2023-06-14 10:16:33 +08:00
chenjinsong
032be847b1 fix: 调整tabs样式 2023-06-13 17:52:01 +08:00
刘洪洪
a1ca356610 fix: 修复实体详情tabs性能事件和安全事件在之前有数据,之后无数据时,tabs标识蓝条宽度不变的问题 2023-06-12 18:22:47 +08:00
刘洪洪
06ef07ac0b fix: 修复实体详情tabs性能事件和安全事件warn图标显示异常的问题 2023-06-12 17:40:33 +08:00
hyx
b43473c505 CN-1082 列表的edit、delete交互问题 2023-06-12 11:13:26 +08:00
刘洪洪
08437a81f2 CN-1080: 实体详情--域名解析和开放端口tab接口对接 2023-06-12 10:51:56 +08:00
chenjinsong
0cab29925f fix: 修复实体详情基础信息字段名取值错误问题 2023-06-12 10:35:41 +08:00
hyx
e62573391a CN-1062 fix:右侧列表进行条件查询后,左侧filter应保持之前的选中 2023-06-11 10:52:28 +08:00
刘洪洪
e8483e8e91 fix: 修复实体详情的安全事件、性能事件tab的warn图标只初始化一次的问题 2023-06-09 19:56:50 +08:00
chenjinsong
26f573f60c fix: 修复新增知识库时source有时候不能更改的问题 2023-06-09 16:59:11 +08:00
hyx
a02e613923 CN-1062 fix:问题:编辑一条正确的记录,修改为错误数据后,点击其它记录的编辑按钮,原来的数据显示错误 2023-06-09 11:51:24 +08:00
chenjinsong
593db921df CN-1062 fix: 修复卡片模式下点select,builtIn=1虽然勾选图标不可点,但是点卡片空白处依然可以选中; 2023-06-09 10:57:00 +08:00
刘洪洪
ffec88289e fix: 去除部分todo,和完善报告初始化操作的判断 2023-06-09 10:35:13 +08:00
hyx
0a13e99c43 Merge remote-tracking branch 'origin/dev' into dev 2023-06-09 09:46:08 +08:00
hyx
a1267daa72 CN-1062 fix:列表页切换模式后,status切换没有请求接口;卡片模式下点select,选中某个卡片后边框改变了,然后切换到table模式,再切回卡片模式,之前选中的卡片边框仍然是选中状态;删除提示框中,name列挪到第一列,category和source列数据需要映射,不显示原始数据;新增修改页:import列名改为tip;itemList中tip的交互;itemList中编辑按钮盖住了tip列的文字;itemList中edit交互问题; 2023-06-09 09:45:08 +08:00
chenjinsong
5b0e82a06b fix: 去掉upload组件的onRemove事件 2023-06-08 19:59:23 +08:00
刘洪洪
cd1edb1431 fix: user禁止勾选项添加禁止编辑状态 2023-06-08 17:59:30 +08:00
chenjinsong
634caee9b3 fix: 暂时隐藏detections的配置策略按钮 2023-06-08 17:40:06 +08:00
chenjinsong
e2fd1ffc5e Merge remote-tracking branch 'origin/dev' into dev 2023-06-08 17:35:38 +08:00
chenjinsong
e7f5cc20e9 fix: 修复detection页接口数据取值错误问题 2023-06-08 17:35:29 +08:00
hyx
0d10a06522 CN-1062 fix:左侧filter,type有半选的category,点击disable 报错;内置数据选择框需要禁用;左侧去掉一些勾选的,右侧删除一个,勾选又自动勾上了,但是右侧列表没变化; 2023-06-08 17:17:41 +08:00
chenjinsong
6b0bb332db CN-984 fix: 增加赛风tag 2023-06-08 17:10:58 +08:00
hyx
aef7387f43 CN-1062 BUG:列表模式下,到第二页点编辑,再cancel,会直接跳回第一页 2023-06-08 14:47:38 +08:00
hyx
95dc00acec CN-1062 知识库列表的两个模式,将builtIn=1的数据的选择禁用;修改问题:切换列表模式时,编辑、删除按钮的可用状态异常; 2023-06-08 14:35:30 +08:00
chenjinsong
70c4ea44e6 fix: 更换知识库模板 2023-06-08 14:18:28 +08:00
hyx
fe0ffa0eae CN-1062 新增时增加item编辑;修改时显示import列; 2023-06-08 11:22:12 +08:00
刘洪洪
99e6a05a7e fix: 修复networkOverLine折线图的参考线选择器初始化移动问题 2023-06-08 10:58:13 +08:00
刘洪洪
8584c94d1b fix: 简化安全事件、性能事件添加warn图标代码 2023-06-08 09:35:42 +08:00
刘洪洪
3e4c4ae7a1 fix: 暂时注释域名解析、开放端口tabs 2023-06-07 18:12:01 +08:00
chenjinsong
88777c12a2 fix: dns dashboard的qtype和rcode类型下钻后顶部四级面包屑切换后显示数字的问题 2023-06-07 17:44:49 +08:00
chenjinsong
70af2a10ba fix: 实体浏览器增加错误提示 2023-06-07 15:58:59 +08:00
刘洪洪
d7bd6e71fb fix: 修复entity实体详情tabs的axios导入错误问题 2023-06-07 15:08:45 +08:00
刘洪洪
878cbd066c fix: Administration模块添加禁止勾选操作admin等账号,去除日志模块中勾选操作 2023-06-07 14:52:24 +08:00
刘洪洪
2907f4485b CN-988 fix: 实体详情--安全事件和性能事件tab添加warn图标 2023-06-07 14:21:02 +08:00
刘洪洪
d2a3ee8cf9 CN-1063 fix: 单元测试--实体详情流量折线图和底下3个tab 2023-06-07 10:34:01 +08:00
hyx
73f72b3116 CN-1062 人工测试修正:知识库Filter选中所有项,折叠 '类别 / 来源',再次打开,所有项都未选中 2023-06-06 16:21:07 +08:00
chenjinsong
58edf3f006 CN-1066 feat: 知识库新增修改页面增加模板下载 2023-06-06 15:12:58 +08:00
刘洪洪
538c74ab19 CN-1065: 时间选择器文本描述错误、不一致 2023-06-06 10:49:43 +08:00
刘洪洪
03e30851c6 Merge remote-tracking branch 'origin/dev' into dev 2023-06-06 10:39:54 +08:00
刘洪洪
95d907cae7 CN-1063: 人工测试--实体详情流量折线图和底下3个tab 2023-06-06 10:39:42 +08:00
chenjinsong
2da2ac58fd fix: 实体详情代码适配接口微调 2023-06-06 10:39:22 +08:00
hyx
cea7998fd9 CN-1016 知识库列表状态切换失败后要恢复到原状态 2023-06-05 19:42:44 +08:00
chenjinsong
757f1ef696 Merge remote-tracking branch 'origin/dev' into dev 2023-06-05 17:52:11 +08:00
chenjinsong
d8c72373e7 fix: 处理user列表状态开关的问题 2023-06-05 17:52:00 +08:00
hyx
f5cb5c94a9 CN-1016 Filter更好统计接口并增加filter字典数据 2023-06-05 16:40:25 +08:00
chenjinsong
2c227c7685 CN-984 fix: 暂时隐藏证书tab 2023-06-05 15:20:08 +08:00
hyx
795277a3dd CN-1016 Filter与查找条件组合操作调试及问题修改 2023-06-05 11:48:02 +08:00
hyx
109dfa14eb CN-1016 Filter点击报错修复 2023-06-05 11:23:35 +08:00
hyx
6a2764ade4 CN-1016 Filter与查找条件组合操作调试及问题修改 2023-06-04 21:18:41 +08:00
chenjinsong
65487f47f6 CN-990 fix: 情报聚合接口对接 2023-06-02 17:47:54 +08:00
chenjinsong
dd154e6d85 CN-983 fix: 接口对接 2023-06-02 14:30:57 +08:00
刘洪洪
97e895d5be Merge remote-tracking branch 'origin/dev' into dev 2023-06-02 14:26:37 +08:00
刘洪洪
c5104b3697 CN-1060: 实体详情--安全事件和性能事件tab接口对接 2023-06-02 14:26:22 +08:00
hyx
adf0b831fe CN-1016 根据接口修改,进行相应调整 2023-06-02 14:15:00 +08:00
刘洪洪
1d12060e0e fix: 修复实体详情流量趋势图单测缺少参数的问题 2023-06-01 15:45:00 +08:00
刘洪洪
a9e73792e3 fix: 更新实体详情折线图接口 2023-06-01 15:26:36 +08:00
刘洪洪
7037085ba1 fix: 去除api里的临时模拟接口 2023-06-01 14:05:25 +08:00
刘洪洪
72ed204f3a fix: 将基础配置信息移出window 2023-06-01 11:30:21 +08:00
刘洪洪
ef9b32d2b4 fix: 将基础配置信息放入window 2023-06-01 11:05:30 +08:00
刘洪洪
28e23111a5 CN-1049 fix: 修复不点击condition,选择左侧filter条件时搜索框参数没有单引号包裹的问题 2023-05-31 17:33:45 +08:00
刘洪洪
df7cd7e289 CN-1049: Entity实体搜索框参数拼接错误 2023-05-31 15:28:27 +08:00
chenjinsong
9675a54455 fix: 修复实体详情analysis跳转错误问题 2023-05-30 18:27:08 +08:00
刘洪洪
bdfde8694b Merge remote-tracking branch 'origin/dev' into dev 2023-05-30 17:28:59 +08:00
刘洪洪
bb7b54e940 fix: 更新icon名称 2023-05-30 17:28:49 +08:00
chenjinsong
0f85a81af6 fix: network-overview点击dashboard按钮时携带当前时间参数 2023-05-30 17:28:31 +08:00
刘洪洪
1e6692a992 CN-1047: Administration下Role模块编辑时接口报500 2023-05-30 10:18:59 +08:00
chenjinsong
0a4c2a5310 fix: 临时修复锁账户问题 2023-05-29 18:28:35 +08:00
刘洪洪
7a3ca077f0 fix: 修复jest单测不识别BASE_CONFIG报错的问题 2023-05-29 15:43:45 +08:00
刘洪洪
ad1554c502 fix: 修复代码里BASE_CONFIG报红线的问题 2023-05-29 14:36:54 +08:00
刘洪洪
c664a301f8 fix: 修复代码里BASE_CONFIG报红线的问题 2023-05-29 14:32:42 +08:00
hyx
b2c76aa2c7 CN-1016 知识库支持卡片和table切换 2023-05-29 13:00:28 +08:00
刘洪洪
8ea82d0e34 fix: 去除代码中部分todo标识 2023-05-29 10:20:39 +08:00
刘洪洪
c41a247449 fix: 修复detection模块搜索框添加搜索条件时报错的问题 2023-05-29 10:15:18 +08:00
刘洪洪
2c810e95c2 fix: 删除无用注释 2023-05-26 16:50:42 +08:00
刘洪洪
4ffd5b3f84 fix: 修复时间选择器下拉框图标设置样式不生效而隐藏的问题 2023-05-26 16:43:57 +08:00
刘洪洪
cd44a2722f CN-1040 fix: 修复customization只剩最后一项被禁用时,拖拽后其他项再点击checkbox,原来那一项仍是禁用状态的问题 2023-05-26 10:27:39 +08:00
刘洪洪
70cc69be2c fix: 删除无用代码 2023-05-25 18:34:51 +08:00
刘洪洪
0b0501db4a CN-1040: adminiastration底下各table的customization功能更新 2023-05-25 18:31:26 +08:00
chenjinsong
f8db51ea6a fix: network overview apps抽屉里的tab增加图标,更改样式 2023-05-25 17:30:45 +08:00
刘洪洪
c50e41e649 CN-1035: 多页签图表loading和error交互开发 2023-05-22 16:39:20 +08:00
刘洪洪
8c74be31bb fix: entity详情的tabs添加loading 2023-05-22 11:53:04 +08:00
chenjinsong
b753e262fe fix: 修复Xi'an传参问题 2023-05-22 11:20:25 +08:00
刘洪洪
1b64f3c544 fix: 更新iconfont图标 2023-05-19 15:04:52 +08:00
刘洪洪
0c6e3b5ad4 fix: 修改detection模块的'严重程度'国际化引用 2023-05-19 11:26:53 +08:00
刘洪洪
b08d4bc312 fix: detection模块的策略配置按钮添加国际化 2023-05-18 15:51:47 +08:00
刘洪洪
00f7e5ec61 fix: 调整时间选择器的间距样式 2023-05-18 15:49:46 +08:00
刘洪洪
5d5fe6cca6 fix: 添加Administration模块下role模块的新建、编辑角色信息校验 2023-05-18 14:15:41 +08:00
刘洪洪
77f3bd94d2 fix: 添加Administration模块下user模块的新建、编辑用户信息校验 2023-05-18 11:46:50 +08:00
hyx
761cb528af fix: CN-1016:表格样式调整(去掉竖线) 2023-05-17 17:04:23 +08:00
刘洪洪
ba2a5fe6d3 fix: 修复detection列表的饼图高度随左侧filter筛选条件的点击而变大的问题 2023-05-17 16:37:34 +08:00
hyx
d64fd595c7 CN-1016 知识库支持卡片和table切换 2023-05-17 11:29:06 +08:00
hyx
80713ff578 CN-1016 知识库支持卡片和table切换 2023-05-17 10:51:52 +08:00
刘洪洪
66a20edf6a fix: 设置knowledgeBase知识库的描述框不可拖动 2023-05-16 17:03:42 +08:00
刘洪洪
c4fe2271e8 fix: 修复detection列表展开时接口入参不全的问题 2023-05-16 15:59:59 +08:00
刘洪洪
9848941464 fix: 修复时间刷新组件切换刷新时间只生效一个的问题,以及地址栏刷新时间与下拉列表内间隔不符时报错的问题 2023-05-16 15:13:27 +08:00
chenjinsong
891010c8b9 Merge remote-tracking branch 'origin/dev' into dev 2023-05-15 15:31:32 +08:00
chenjinsong
21b65344e0 CN-980 fix: 实体详情增加顶部菜单和面包屑 2023-05-15 15:31:22 +08:00
hyx
5ba4c612b2 fix:CN-971 1.卡片中标题、id和描述的布局跟设计图不符,设计图中描述跟id之间有较大的间隔,用来区分head和描述。
2.翻页到非第一页,编辑知识库,点cancel或save后,返回到编辑前页数
2023-05-15 11:42:21 +08:00
刘洪洪
3ba67d4826 fix: 修改组件参数命名,避免class关键字报错 2023-05-15 10:46:12 +08:00
刘洪洪
eeb03c5550 Merge remote-tracking branch 'origin/dev' into dev 2023-05-11 11:45:49 +08:00
刘洪洪
8b375f9169 CN-1017: 报告table的排序不生效 2023-05-11 11:45:39 +08:00
chenjinsong
a1a924b691 Merge remote-tracking branch 'origin/dev' into dev 2023-05-11 10:21:50 +08:00
chenjinsong
b6209fc71e fix: 知识库接口路径更改 2023-05-11 10:21:40 +08:00
刘洪洪
93f7868292 fix: 实体详情--数字证书、安全事件、性能事件tab添加errorMsg报错提示 2023-05-11 10:07:00 +08:00
hyx
a6511508ad CN-990 实体详情--情报聚合tab开发 2023-05-10 16:50:15 +08:00
刘洪洪
a7beafe6c8 fix: 更正icon图标名称 2023-05-10 15:06:02 +08:00
刘洪洪
f20a968fc6 fix: 实体详情--添加tabs刷新保留状态 2023-05-10 14:12:05 +08:00
chenjinsong
a8dd8bcd89 CN-983 fix: analysis css修改 2023-05-10 11:44:43 +08:00
chenjinsong
d8bcdf1f4f Merge remote-tracking branch 'origin/dev' into dev 2023-05-10 11:20:46 +08:00
chenjinsong
5a6b464aa9 CN-971 fix: 调整卡片布局为grid 2023-05-10 11:20:31 +08:00
刘洪洪
4338961234 CN-997 fix: 实体详情--数字证书tab出现滚动条时宽度调整 2023-05-10 10:01:55 +08:00
刘洪洪
9242c3d3f0 CN-988 fix: 样式调整 2023-05-09 17:55:02 +08:00
chenjinsong
e08a59d6cf CN-983 fix: 样式抽出到scss文件中 2023-05-09 17:46:31 +08:00
chenjinsong
47c0e65485 CN-983 fix: 样式调整 2023-05-09 15:14:57 +08:00
chenjinsong
d9187f71d1 CN-983 fix: tag样式调整 2023-05-09 14:37:54 +08:00
刘洪洪
1d36b08517 CN-997: 实体详情--数字证书tab开发 2023-05-09 09:41:43 +08:00
chenjinsong
b65fd919dc CN-983 feat: 基本信息图 2023-05-08 18:46:13 +08:00
hyx
439e6751f4 CN-990 实体详情--情报聚合tab开发 2023-05-08 17:08:49 +08:00
刘洪洪
3b6fd3fb54 feat: 实体详情--安全事件、性能事件tab添加error处理 2023-05-08 14:39:53 +08:00
chenjinsong
a3c2fcb1d8 CN-983 feat: 基本信息图的基本样式 2023-05-06 19:39:28 +08:00
hyx
76e8fe9734 CN-989 实体详情--域名解析和开放端口tab开发 2023-05-06 11:37:03 +08:00
刘洪洪
eadfd66556 feat: 添加tabs标签卡label禁止鼠标框选文字 2023-05-06 09:49:21 +08:00
刘洪洪
940530cde4 fix: 删除空文件引入 2023-05-05 17:58:42 +08:00
刘洪洪
7c93a47b7c fix: 1、调整实体详情--安全事件和性能事件样式;2、删除无用代码;3、修复axios错误导入方式 2023-05-05 17:54:30 +08:00
刘洪洪
67b67dd5c1 CN-988 fix: 修复实体详情--安全事件和性能事件tab的事件多条时界面不滚动的问题 2023-05-05 15:23:17 +08:00
刘洪洪
fe0ac008fa CN-988: 实体详情--安全事件和性能事件tab开发 2023-05-05 14:49:59 +08:00
刘洪洪
492a18dbac fix: 修复实体详情tabs点击时active蓝条异常的问题 2023-05-05 14:41:15 +08:00
刘洪洪
30eae2a24a fix: 更新iconfont图标 2023-05-05 10:11:34 +08:00
chenjinsong
600800340f Merge remote-tracking branch 'origin/dev' into dev 2023-05-04 17:58:12 +08:00
chenjinsong
78ee802446 CN-984 fix: props中的entity对象增加entityName属性 2023-05-04 17:57:58 +08:00
chenjinsong
2712614202 CN-984 fix: 删掉subdomain tab 2023-05-04 15:26:51 +08:00
刘洪洪
efd7ec3320 fix: 调整实体详情tabs选项卡的样式 2023-05-04 11:56:38 +08:00
hyx
7a5a03bc58 fix:CN-971 1.调整...颜色;2.调整选中卡片边框颜色 2023-04-28 17:04:17 +08:00
chenjinsong
601c0111eb CN-984 feat: 图表基本样式和结构 2023-04-28 15:30:54 +08:00
hyx
66760a2a57 fix:CN-971 1.卡片标题限定一行,超长做处理;描述内容长度限定到不遮住type和enabled按钮,留10px以上间隙;
2.取消select状态时,应清空已选数组;
3.设计图上,鼠标滑过卡片时,卡片边框应有阴影;
4.select状态下,整个卡片任意区域点击都可以选中,选中后边框色改变,且鼠标移开后边框阴影不消失;
5.All筛选框与下方的间隙太小,将间隙和其他统一;
6.只有2行时,卡片行距被拉开过大,应该不拉开;
7.删除弹框应竖向居中;
8.多选之后,点击搜索,卡片上的选择状态被取消,但点击删除按钮依旧在待删除列表里;
2023-04-28 14:49:50 +08:00
刘洪洪
879256725b fix: 调整实体详情的流量折线图右侧的选项卡样式 2023-04-27 17:56:58 +08:00
刘洪洪
70ae7e9287 fix: 调整实体列表代码样式 2023-04-27 16:53:12 +08:00
刘洪洪
f6c2864573 Revert "fix: 调整实体列表代码样式"
This reverts commit 5a1c20f84a.
2023-04-27 16:51:22 +08:00
刘洪洪
5a1c20f84a fix: 调整实体列表代码样式 2023-04-27 16:50:37 +08:00
刘洪洪
95b2a089fb fix: 提高时间选择器的显示层级 2023-04-27 15:47:07 +08:00
刘洪洪
e18c07455c fix: 添加entity详情页折线图的模拟数据对时间范围的处理 2023-04-27 15:30:49 +08:00
刘洪洪
a1360076b9 fix: 简化知识库编辑时点击add操作时的代码 2023-04-27 14:47:55 +08:00
chenjinsong
a53cb310ae fix: 更改图标类名 2023-04-27 10:47:06 +08:00
hyx
1faf418cc8 CN-971知识库列表改版 2023-04-26 23:46:23 +08:00
刘洪洪
bc81631be3 CN-982: 实体详情--流量折线图开发 2023-04-26 18:06:57 +08:00
chenjinsong
d3f4cf8700 CN-980 fix: 修复vue表达式undefined问题 2023-04-25 16:13:06 +08:00
chenjinsong
21b3cea26a CN-980 feat: 实体详情开发准备 2023-04-25 16:04:20 +08:00
刘洪洪
c7214d3b89 fix: 修复知识库新增编辑页的代码报警问题 2023-04-21 16:22:29 +08:00
刘洪洪
0e0d6b1ed0 fix: 将知识库新增编辑页的部分css样式移入css文件内 2023-04-21 14:57:18 +08:00
刘洪洪
0d43e2141f CN-956: 管理下的操作日志模块,自定义列功能异常 2023-04-19 16:25:55 +08:00
hyx
a7b8b82479 CN-965 知识库Preview:1.一条一条删除数据,直到删除完毕,列表未显示nodata;2.列表没有数据时,不弹出对话框;3.删除最后一条记录时报错;4.导入数据中,此时点击报错按钮,报错; 2023-04-19 16:03:37 +08:00
hyx
1dd9152eff CN-965 知识库增加两个弹框交互 2023-04-19 14:01:37 +08:00
hyx
f01af02dd1 CN-952 知识库对导入数据的增删改:导入数据的校验,问题的修改等 2023-04-11 15:38:47 +08:00
chenjinsong
4dea59edfc fix: 删除events by type图表不必要的请求参数 2023-04-10 17:10:43 +08:00
刘洪洪
10faa3aa7f CN-952 fix: 知识库对导入数据的增删改 2023-03-31 17:50:38 +08:00
刘洪洪
37bd4d31fb fix: 更新iconfont 2023-03-31 17:45:36 +08:00
刘洪洪
fe2308405a fix: 修复表格列宽初始化赋值较小的问题 2023-03-29 09:45:05 +08:00
刘洪洪
6405b06907 fix: 修复分辨率过小时,单词被拆开的问题 2023-03-28 18:13:20 +08:00
刘洪洪
4af4dc4260 fix: 修复折线图切换不同选项后,图形初始化偶现错误 2023-03-28 16:19:54 +08:00
chenjinsong
d4ab1d19e6 CN-919 fix: 解除remark校验、增加保存时的错误交互 2023-03-28 15:37:30 +08:00
刘洪洪
e4549d3670 CN-949 fix: 修复折线图切换时间后图形初始化偶现错误 2023-03-28 11:10:17 +08:00
刘洪洪
7523fee78b fix: 修复分辨率过小时,单词被拆开的问题 2023-03-28 10:46:41 +08:00
刘洪洪
01d10de71e CN-950: NetworkOverview页,下钻后顶部无metric下拉列表 2023-03-28 10:21:49 +08:00
刘洪洪
2ef441b605 fix: 修复分辨率过小时,表头文字换行导致单词被拆开的问题 2023-03-27 18:46:00 +08:00
刘洪洪
1c39ea66ad CN-949: 折线图切换时间后图形可能出错 2023-03-27 17:21:57 +08:00
hyx
43102c94c4 CN:936 fix:报告、知识库、管理模块点击删除或编辑时,点击右上角X及cancel,报错 2023-03-27 11:11:00 +08:00
hyx
5433006ebd CN-936 开发appearance页面:保存逻辑调整,及timezoneOffset设置方式修改 2023-03-24 18:44:02 +08:00
刘洪洪
102f99e4f5 fix: 优化精简代码 2023-03-24 16:37:12 +08:00
chenjinsong
50296a6291 CN-938 fix: 增加数据不存在的提示 2023-03-23 18:08:37 +08:00
chenjinsong
45d6475243 CN-938 feat: 知识库编辑功能 2023-03-23 16:13:55 +08:00
刘洪洪
8da7dc5e58 fix: 去除导致单测报错的无用代码 2023-03-22 10:34:55 +08:00
刘洪洪
8dd50b9c99 CN-749 fix: 统一error交互 2023-03-22 10:20:22 +08:00
hyx
a8c8a8b6dc CN-936 开发appearance页面:调整保存按钮位置;修改时区列表获取接口; 2023-03-21 17:10:37 +08:00
刘洪洪
ef70c1ac23 CN-932 fix: 折线图类的组件代码优化 2023-03-21 11:21:29 +08:00
hyx
9d210a0d07 CN-936 开发appearance页面:日期格式属性名称统一date_format 2023-03-21 10:40:43 +08:00
chenjinsong
ac045f26d4 fix: 登录时时间格式字段名更改 2023-03-21 10:02:36 +08:00
刘洪洪
61b1e8cd73 CN-932: 折线图类的组件代码优化 2023-03-20 18:52:42 +08:00
hyx
509b10e214 CN-936 开发appearance页面 2023-03-20 17:48:41 +08:00
chenjinsong
5f1e3fdfaa fix: 修复npm流量图不渲染的问题 2023-03-17 15:52:41 +08:00
chenjinsong
07c7889998 fix: 修复首页饼图少一个的问题 2023-03-17 15:25:06 +08:00
chenjinsong
de024de843 CN-749 fix: axios.all还原为Promise.all 2023-03-16 19:14:53 +08:00
chenjinsong
3aa2c19dbd CN-749 fix: 统一error交互 2023-03-16 19:07:37 +08:00
chenjinsong
831b00fc78 fix: 写死知识库表单cancel路由 2023-03-16 18:02:44 +08:00
chenjinsong
5116d4f6d6 CN-749 fix: 增加列表错误提示 2023-03-14 19:39:57 +08:00
陈劲松
a9504cc6f1 Merge branch 'cherry-pick-502d0984' into 'dev'
fix: 修复npm折线图bug

See merge request cyber-narrator/cn-ui!24
2023-03-14 09:19:42 +00:00
chenjinsong
14e3d6522a fix: 修复npm折线图bug
(cherry picked from commit 502d098413)
2023-03-14 17:19:36 +08:00
hyx
26b54baa33 下钻表格问题修改:对特殊字符单引号做处理,以正确显示列表信息 2023-03-14 15:26:12 +08:00
chenjinsong
5536ac9490 CN-906 fix: 调整步骤条样式 2023-03-14 10:10:30 +08:00
唐浩
aae79853ab Update .gitlab-ci.yml file 2023-03-13 10:32:40 +00:00
hyx
165fa71e8c CN-926 列表页样式改版 2023-03-13 18:14:20 +08:00
唐浩
b21b1d5815 Update .gitlab-ci.yml file 2023-03-13 10:06:32 +00:00
唐浩
835abdde10 Update .gitlab-ci.yml file 2023-03-13 09:25:59 +00:00
chenjinsong
f4a8ef68c0 CN-928 fix: 调整时区方案 2023-03-13 16:49:06 +08:00
刘洪洪
b1e67452a5 CN-930: detection顶部柱状图改为x轴时间轴模式 2023-03-13 15:16:59 +08:00
刘洪洪
c26b05259d fix: 修复knowledgeBase-create在有滚动条时时间轴图标不滚动的情况 2023-03-13 14:29:42 +08:00
chenjinsong
1dee23435d CN-926 fix: 样式细节优化 2023-03-10 21:15:09 +08:00
hyx
64a6eac4a7 CN-926 列表页样式改版 2023-03-10 20:50:54 +08:00
刘洪洪
8f1adef30d fix: 修复steps展开收起点击范围过大的问题 2023-03-10 16:30:35 +08:00
chenjinsong
2b66aecf44 fix: 修复校验错误提示逻辑 2023-03-10 13:32:46 +08:00
chenjinsong
1311e53b65 fix: 修复知识库增加重复校验后无法保存的问题 2023-03-10 13:13:27 +08:00
chenjinsong
d9677e89f5 feat: 增加步骤条交互 2023-03-09 15:20:59 +08:00
刘洪洪
d89c20a75c fix: 修复knowledge模块因初始化格式不符等导致的warning提示 2023-03-09 10:39:26 +08:00
chenjinsong
476c49b08f fix: 统一命名 2023-03-09 10:14:05 +08:00
chenjinsong
32a04eec4c fix: 修复删除导入数据后页码可能不对的问题 2023-03-08 18:10:55 +08:00
chenjinsong
fb9034229e feat: 报告参数增加input类型 2023-03-08 17:57:01 +08:00
chenjinsong
43c79b94f1 CN-906 fix: 修复一系列问题 2023-03-08 17:35:22 +08:00
chenjinsong
801858c07d CN-906 fix: 上传loading、保存loading 2023-03-07 18:48:15 +08:00
chenjinsong
85d9b3d738 CN-906 fix: 上传loading、保存loading 2023-03-06 20:16:31 +08:00
chenjinsong
ac28e52ca7 CN-906 fix: 知识库列表排序字段名更正 2023-03-06 14:19:29 +08:00
chenj
e2f9eb7f59 CN-906 feat: 优化上传交互 2023-03-05 13:50:22 +08:00
chenjinsong
a9e5915113 CN-906 feat: 知识库列表、新增功能(细节体验待完善) 2023-03-02 20:37:21 +08:00
刘洪洪
fdb4ec5cf5 fix: 修复NetworkOverviewLine的eslint报警提示 2023-03-02 18:36:02 +08:00
刘洪洪
04062195e2 fix: 修复因使用弃用的方法'>>>',导致的eslint报警提示 2023-03-02 18:16:38 +08:00
刘洪洪
e29fc1244c Merge remote-tracking branch 'origin/dev' into dev 2023-03-02 17:56:05 +08:00
刘洪洪
3fc6a42d99 fix: 修复项目运行时eslint报错的提示 2023-03-02 17:55:47 +08:00
hanyuxia
1c776f4119 CN-903 人工测试--NetworkOverviewLine,修改问题:(1) 刷新未保留选中Tab的状态 2023-03-01 17:13:01 +08:00
hanyuxia
e87deec34c CN-903 人工测试--NetworkOverviewLine:(1) 登录系统后,点击其中一个Tab标签,再点击二级菜单(网络概况)或者右侧刷新按钮或者F5刷新,折线图不显示;(2)切换参考线:报错,界面数据不更新;(3)点击高亮 tab 后未取消高亮,未恢复到全不高亮的状态; 2023-03-01 16:52:33 +08:00
hanyuxia
5685e6b2c0 CN-893 单测用例--下钻table 2023-03-01 09:33:43 +08:00
hyx
9fddf7914d CN-893 单测用例--下钻table 2023-02-28 11:49:13 +08:00
刘洪洪
a55ab9fb15 fix: 修复linkMonitor下一跳网格图排序错乱问题 2023-02-27 16:14:59 +08:00
刘洪洪
35b1f31601 fix: 去除无效代码 2023-02-27 16:08:33 +08:00
刘洪洪
8627cec919 Merge remote-tracking branch 'origin/dev' into dev 2023-02-27 16:01:43 +08:00
刘洪洪
ee14b471a8 CN-894: 单测用例--用例更新 2023-02-27 16:01:25 +08:00
chenjinsong
5896931487 CN-906 fix: 面包屑功能调整 2023-02-26 23:06:57 +08:00
chenjinsong
f87714fae2 CN-906 fix: 面包屑功能调整(部分) 2023-02-24 18:51:17 +08:00
刘洪洪
def8851da0 Merge remote-tracking branch 'origin/dev' into dev 2023-02-23 18:21:13 +08:00
刘洪洪
8b3f43eb98 fix: 完善npm-event环形图单测 2023-02-23 18:20:56 +08:00
chenjinsong
3d2623f8cf CN-906 fix: 知识库列表简版;调整一些目录名 2023-02-23 18:12:20 +08:00
刘洪洪
a9fe48933c fix: 修复npm-event环形图event计数错误的问题 2023-02-23 16:29:13 +08:00
李金洋
1c2782e8e3 Update .gitlab-ci.yml 2023-02-23 03:32:58 +00:00
lijinyang
4462b5eaa3 fix: ci构建增加测试阶段 2023-02-23 11:17:08 +08:00
刘洪洪
46a0985f55 fix: 修复npm-event单测id根据时间命名可能会导致报错的问题 2023-02-23 10:54:18 +08:00
刘洪洪
4d6c444b25 fix: 修复linkMonitor下一跳网格图排序错乱问题 2023-02-23 10:53:12 +08:00
chenjinsong
e009142e7d fix: 完善NetworkOverviewLine组件测试用例;更改变量名; 2023-02-17 20:50:29 +08:00
刘洪洪
14a24b268a fix: 去除无效代码 2023-02-17 16:14:38 +08:00
刘洪洪
06de8e2bc9 feat: 优化Link monitor网格图单测的模拟数据 2023-02-17 15:43:03 +08:00
刘洪洪
d788657048 feat: 优化单测模拟数据格式,避免eslint报错提示造成卡顿 2023-02-17 15:28:43 +08:00
lijinyang
524be68781 Update .gitlab-ci.yml 2023-02-14 15:11:42 +08:00
唐浩
0139a542da Update .gitlab-ci.yml file 2023-02-09 08:05:47 +00:00
@changcode
da607274d8 CN-878 feat: 单测用例--network overview 供应商与应用 2023-02-07 18:10:56 +08:00
唐浩
48426a3955 Update .gitlab-ci.yml file 2023-02-07 09:26:20 +00:00
hyx
e95ca314a6 CN-879 单测用例--npm events 最底下的表格 2023-02-07 17:20:26 +08:00
唐浩
3d18a4b285 Update .gitlab-ci.yml file 2023-02-07 07:04:32 +00:00
刘洪洪
2b67cb4a0b fix: detection-performanceEvent去除对eventId的格式转换 2023-02-07 10:29:27 +08:00
chenjinsong
eadb1e350d CN-858 fix: 报告任务时间设置可编辑 2023-02-06 16:19:32 +08:00
陈劲松
46a23d9464 Merge branch 'cherry-pick-84ca05dc' into 'dev'
fix: 修复dns仪表盘切换时间不生效的问题

See merge request cyber-narrator/cn-ui!19
2023-02-03 10:00:35 +00:00
chenjinsong
a7e06c6ffa fix: 修复dns仪表盘切换时间不生效的问题
(cherry picked from commit 84ca05dccc)
2023-02-03 18:00:30 +08:00
刘洪洪
822e7bd9aa fix: 去除测试代码 2023-02-03 17:47:55 +08:00
刘洪洪
73952e6811 fix: 完善link流量流向网格图单测用例 2023-02-03 17:41:50 +08:00
@changcode
251e0a2018 CN-877 feat: 单测用例--link下钻折线图 2023-02-03 16:09:32 +08:00
刘洪洪
d04bb5a87e fix: 去除多余代码 2023-02-03 16:01:18 +08:00
刘洪洪
f6a6ac82bd CN-876: 单测用例--link流量流向网格图 2023-02-03 16:00:29 +08:00
刘洪洪
bca147a7db CN-876: 单测用例--link流量流向网格图 2023-02-03 15:57:43 +08:00
陈劲松
afab449f3a Merge branch 'cherry-pick-ec486fe9' into 'dev'
fix: 修复地图资源路径拼写错误的问题

See merge request cyber-narrator/cn-ui!18
2023-02-03 03:09:18 +00:00
chenjinsong
8bf7b85c2e fix: 修复地图资源路径拼写错误的问题
(cherry picked from commit ec486fe930)
2023-02-03 11:09:04 +08:00
@changcode
ab146b5b15 feat: 单测 npm events 类型分类事件 2023-02-03 10:46:06 +08:00
刘洪洪
230e897146 CN-875: 单测用例--link蜂窝图 2023-02-02 18:14:20 +08:00
chenjinsong
949a8e9d86 CN-873 feat: 域名实体下拉预览增加备案信息相关字段 2023-02-02 17:15:17 +08:00
@changcode
3604783570 CN-869 feat: 单测用例--npm events 近期事件表格 2023-02-02 09:51:11 +08:00
刘洪洪
f60a6bd778 CN-870: 时间选择器组件时间交互优化 2023-02-01 16:51:45 +08:00
chenjinsong
5ece1b6c8e CN-868 fix: 修复report customize类别下endTime选取逻辑不对的问题 2023-02-01 15:41:20 +08:00
刘洪洪
86c2c8364d fix: 修改npm app类别评分图单测用例时间 2023-02-01 11:52:05 +08:00
@changcode
1f130a6ac8 feat: 单测 Npm - Overview 概况信息统计 2023-02-01 11:32:47 +08:00
刘洪洪
c8af5fd5a1 CN-865: 单测用例--npm app类别评分图 2023-01-31 18:52:07 +08:00
@changcode
48b7493b2e fix: 修复network overview部分维度二级菜单判断逻辑调整 2023-01-31 17:38:14 +08:00
chenjinsong
98ba09b586 CN-868 fix: 修复network overview部分维度三级菜单图表错误问题 2023-01-31 15:41:04 +08:00
刘洪洪
7d85d332df fix: 完善单测demo(同一url不同入参的axios请求内包含多个不同url的axios请求) 2023-01-31 15:06:30 +08:00
chenjinsong
6ee5ea6f6e fix: 完善单测demo(第三方库) 2023-01-30 17:54:24 +08:00
chenjinsong
6756812c34 fix: 完善单测demo(多个同url不同参数的axios请求) 2023-01-30 17:07:58 +08:00
@changcode
d2aa5c9b7a fix: 完善单测,去除无用代码 2023-01-30 16:24:44 +08:00
@changcode
049d5f92b4 CN-866 fix: 单测用例--network overview ddos检测图 2023-01-30 14:02:28 +08:00
chenjinsong
7ce190f3c7 fix: 完善单测demo(第三方ui库) 2023-01-30 11:50:22 +08:00
@changcode
e9edd9cf05 CN-866 feat: 单测用例--network overview ddos检测图 编写单测用例 2023-01-29 16:04:01 +08:00
@changcode
4655eed55f CN-866 fix: 单测用例--network overview ddos检测图 数值使用单位转换 2023-01-29 09:52:02 +08:00
刘洪洪
cf625c196e fix: 修改linkMonitor网格图名称 2023-01-28 15:40:35 +08:00
hyx
55fdd3f0e4 CN-863 单测用例--npm服务质量图(5个单值) 2023-01-20 11:13:07 +08:00
刘洪洪
8aa96da577 fix: 修复从npm-events点击跳转至detections-performance events展开tab位置不正确的问题 2023-01-18 14:42:12 +08:00
@changcode
22bf16a01d fix: 去除无效代码 2023-01-18 11:53:21 +08:00
chenjinsong
04e186e7d8 fix: 完善单测demo(indexedDB相关) 2023-01-17 17:56:44 +08:00
@changcode
38006bd964 fix: 部分接口请求 noData 判断调整 2023-01-17 14:00:41 +08:00
@changcode
05677d5fb6 style: Administration tab列表更多Select下拉样式调整 2023-01-16 17:19:30 +08:00
chenjinsong
156979e79e fix: 完善单测demo;升级单测版本 2023-01-13 17:42:25 +08:00
刘洪洪
0f2fcbe9e6 feat: chartTabs组件的状态存储由window改为store 2023-01-13 15:03:45 +08:00
@changcode
089887f05b fix: 修复npm overview 折线图数据为空时 No data 占位错误问题 2023-01-13 14:34:52 +08:00
@changcode
c83f64706f Merge branch 'dev' of https://git.mesalab.cn/cyber-narrator/cn-ui into dev 2023-01-13 14:09:28 +08:00
@changcode
c82d33fa39 fix: npm overview折线图代码优化 2023-01-13 14:09:10 +08:00
刘洪洪
eed1d398d8 fix: 修复chartTabs初始化时有滑动痕迹的问题 2023-01-13 13:59:42 +08:00
@changcode
a8643b8543 fix: 优化部分折线图表代码和逻辑 2023-01-12 18:00:19 +08:00
刘洪洪
bd1eeec770 fix: 优化页面销毁时对echarts实例的销毁 2023-01-11 18:11:43 +08:00
@changcode
8cb3f00aa4 fix: 优化linkTraffic请求判断逻辑 2023-01-11 17:54:14 +08:00
chenjinsong
4fed5a9b8c fix: 完善单测demo 2023-01-11 15:50:04 +08:00
刘洪洪
d54054510b fix: 修复id改成ref导致echarts获取不到dom报错的问题 2023-01-11 15:33:59 +08:00
@changcode
27bd8260d2 fix: 修复detections - Security events 下拉内容不足5条时中括号未能去除问题 2023-01-11 14:13:33 +08:00
刘洪洪
29916f8517 fix: 修复从npm-events点击跳转至detections-performance events回退不保留状态的问题 2023-01-10 15:14:46 +08:00
刘洪洪
2bac72eb5d fix: 修复chartTabs组件由其他界面进入时还保留上次状态 2023-01-10 15:01:55 +08:00
chenjinsong
dfcc03f11a fix: 单测的一些注释和配置顺序更改 2023-01-10 14:08:00 +08:00
@changcode
a608ac72f6 Merge branch 'dev' of https://git.mesalab.cn/cyber-narrator/cn-ui into dev
# Conflicts:
#	src/views/charts2/charts/networkOverview/NetworkOverviewLine.vue
2023-01-10 12:27:15 +08:00
@changcode
b5d897608c fix: tab折线图逻辑优化 2023-01-10 12:25:49 +08:00
chenjinsong
431821154e feat: 解决vue组件单元测试复杂的环境依赖,以及提交NetworkOverviewLine单元测试用例 2023-01-10 10:09:32 +08:00
@changcode
9f488adcb9 fix: 折线图初始化逻辑优化 2023-01-10 09:20:26 +08:00
@changcode
a31c408327 CN-856 fix: 修复Dashboard - network overview Metric下拉默认不是第一个时,折线图无法加载 2023-01-09 18:40:43 +08:00
刘洪洪
d84483c0dc fix: 修复detection下拉内容中domain和app的展示调整 2023-01-09 16:36:44 +08:00
刘洪洪
4804748564 CN-855: Dashboard自定义时间后,刷新按钮点击无反应 2023-01-09 15:49:03 +08:00
刘洪洪
d02a95290b fix: npm-events添加鼠标移动小手 2023-01-09 14:42:51 +08:00
唐浩
8c8e3b6af9 Update .gitlab-ci.yml file 2023-01-09 06:39:58 +00:00
唐浩
1ae748fd20 Update .gitlab-ci.yml file 2023-01-09 06:27:01 +00:00
刘洪洪
212c4b3eca CN-854: 支持从npm-events点击跳转至detections-performance events 2023-01-06 18:03:45 +08:00
唐浩
dcb5ff97af Update .gitlab-ci.yml file 2023-01-06 08:34:11 +00:00
chenjinsong
bb2960897f fix: 编译后detection-pevents app下拉异常的问题 2023-01-06 14:15:22 +08:00
chenjinsong
71809f71c3 fix: 编译后detection-pevents app下拉异常的问题 2023-01-06 13:53:44 +08:00
hyx
3ef34ff262 CN-831 npm下钻页,切换时间后的tab禁用状态异常 2023-01-06 09:48:19 +08:00
chenjinsong
01e2591248 fix: 暂时去掉npm events的metric下拉框 2023-01-05 18:44:53 +08:00
changcode
707f5f32e1 CN-851 fix: 检测-安全事件 下拉内容去除首尾中括号 2023-01-05 15:29:42 +08:00
刘洪洪
bca7a9f19b fix: detection隐藏tab项 2023-01-05 15:23:31 +08:00
chenjinsong
013f15fc4a fix: detections 性能事件下拉内容risk level映射 2023-01-05 15:00:00 +08:00
changcode
ee67cd1005 fix: 解决冲突 2023-01-05 14:27:41 +08:00
changcode
94eaf2f36f CN-851 fix: 修复检测-安全事件 下拉内容占位错误问题 2023-01-05 14:22:39 +08:00
chenjinsong
93bc75f25a fix: 修复报告99.99%时即可预览的问题 2023-01-05 13:59:15 +08:00
changcode
aadfcb7fb3 feat: 检测-安全事件 下拉内容缩减 2023-01-05 13:56:32 +08:00
刘洪洪
49fcb32c80 CN-850: 修复Detection事件预览实体属性信息缺失 2023-01-05 11:12:47 +08:00
刘洪洪
e08dbe5a21 fix: 修复linkMonitor模块在刷新界面时接口报404的问题 2023-01-05 10:52:20 +08:00
刘洪洪
2afc34e207 fix: 修复NpmTrafficLine内代码warning提示 2023-01-05 10:25:11 +08:00
刘洪洪
65179c1383 fix: error提示的位置调整 2023-01-05 10:16:48 +08:00
刘洪洪
f4c01a474e fix: 展开内容添加条件 2023-01-04 15:50:49 +08:00
刘洪洪
5ab1dd2f51 CN-848: 检测下拉内容调整 2023-01-04 15:41:06 +08:00
刘洪洪
5d03bcf9aa fix: 修复npm模块下无分数的展示问题 2023-01-03 16:22:57 +08:00
chenjinsong
fe520cfbc3 feat: 删除日志 2022-12-30 16:24:03 +08:00
chenjinsong
8744e0d66e CN-847 feat: 链路字段改动 2022-12-30 16:21:50 +08:00
chenjinsong
43f6fd1964 CN-840 feat: 左上角logo点击跳转overview 2022-12-29 21:50:22 +08:00
chenjinsong
5714e3b97a CN-834 fix: 修复npm下钻ip过滤未生效的问题 2022-12-29 21:43:13 +08:00
刘洪洪
823da09f69 fix: 修复时间刷新器选择off后,选择其他时间切换界面仍为off的问题 2022-12-29 16:17:26 +08:00
刘洪洪
72dfe261db fix: 修复时间刷新器选择后切换页面报错的问题 2022-12-29 14:43:12 +08:00
刘洪洪
12efa61b9b fix: APP.vue去除多余变量 2022-12-27 15:12:31 +08:00
刘洪洪
22827e5752 fix: 优化已登录情况下,新标签页打开网页提示登录的问题 2022-12-27 15:08:10 +08:00
chenjinsong
d2db6f6f24 fix: 反转评分柱图A~F 2022-12-27 10:32:14 +08:00
刘洪洪
d6d2ea50e3 fix: 优化时间组件的样式层级 2022-12-27 10:20:36 +08:00
刘洪洪
5b442cba77 CN-830: 修复npm-ip下钻,as a server下地图点显示不正确的问题 2022-12-26 16:40:41 +08:00
刘洪洪
6ea84d3d98 CN-830: 修复npm-ip下钻,as a server下地图点显示不正确的问题 2022-12-26 16:32:25 +08:00
刘洪洪
59635530a6 fix: 修复获取report时没有loading加载效果的问题 2022-12-26 14:16:22 +08:00
刘洪洪
2272b60e94 fix: 优化table组件的层级 2022-12-26 11:08:54 +08:00
刘洪洪
9a9a589c5c fix: 修复error组件在npm模块下异位的问题 2022-12-23 18:18:34 +08:00
刘洪洪
0e63df3b74 fix: 修复error组件某些情况下异位的问题 2022-12-23 18:09:46 +08:00
@changcode
a24d874cd6 fix: npm tab切换时重复idecharts图表渲染错误问题 2022-12-23 14:31:59 +08:00
刘洪洪
2232409db2 fix: 修复Link monitor模块下钻后的导航点击问题 2022-12-22 17:20:42 +08:00
@changcode
e5bbef7034 fix: 优化Network Overview和DNS echarts折线图标记线 2022-12-22 09:48:10 +08:00
@changcode
63eaa3c2d9 fix: 调整Network Overview 参考线切换重新加载问题 2022-12-21 14:02:59 +08:00
chenjinsong
9c88eb5cbf fix: 纠正拼写错误、逻辑调整等 2022-12-21 11:40:49 +08:00
@changcode
eca783fb71 fix:优化 npm 部分国际化警告 2022-12-21 10:55:35 +08:00
hyx
1b4a760238 CN-827 解决修改配置后报错的问题 2022-12-20 16:10:28 +08:00
刘洪洪
220e8a602e fix: 修复overwriteUrl方法入参类型不规范导致的报警问题 2022-12-20 10:54:38 +08:00
@changcode
33af252411 fix: 修复部分echarts图表国际化报警问题 2022-12-20 10:22:54 +08:00
@changcode
b9328c2eca fix: 优化npm location 折线图判断条件 2022-12-19 15:57:04 +08:00
@changcode
4577684fe2 fix: 优化图标组件消毁时清除 2022-12-16 10:12:37 +08:00
hyx
de8d11fd12 CN-827 下钻table 维度和列的顺序支持用户缓存 2022-12-15 17:42:01 +08:00
@changcode
fe72d25834 fix: 修复dns 下钻折线图 tab选择样式问题 2022-12-15 14:12:09 +08:00
@changcode
df820295fe fix: npm 折线图 接口参数side 逻辑调整 2022-12-15 10:37:06 +08:00
@changcode
fadfe1612e fix: 修复因tabIndex数据类型改变导致的 npm下钻网络质量概览图展示错误 2022-12-15 10:29:04 +08:00
@changcode
7f79ec5727 fix: 实体列表 通一 no Data 国际化 2022-12-15 10:21:49 +08:00
刘洪洪
195404cd50 fix: 修复table组件id、ref命名未声明index导致的报警问题 2022-12-14 18:07:48 +08:00
刘洪洪
fce1c27cf8 fix: 修复组件无法自动继承emit的报警问题 2022-12-14 15:01:48 +08:00
刘洪洪
9862bf52a8 fix: 修复Detection模块下的echarts报警问题 2022-12-14 14:43:38 +08:00
刘洪洪
3e387162a5 fix: 修复NpmTabs从其他页面跳转后初始化不显示tab的问题 2022-12-14 14:14:32 +08:00
刘洪洪
156d472f10 fix: 修复tabs组件因v-model绑定值类型不符导致的报警问题 2022-12-14 11:26:28 +08:00
@changcode
b0e3b95be7 CN-828 feat: 登录页改版 2022-12-13 17:53:55 +08:00
刘洪洪
18ba81090b fix: 修复组件无法自动继承toggleLoading的报警问题 2022-12-13 16:06:29 +08:00
刘洪洪
06fcdbaa35 fix: 修复未按新版本echarts的emphasis写法导致的报警问题 2022-12-13 15:17:37 +08:00
@changcode
abe65b85ba fix: 优化 npm 地理位置 吞吐量折线图逻辑代码,减少重复操作 2022-12-12 10:34:21 +08:00
刘洪洪
ed79a71af4 fix: 修复i18n引用地址不全,以及logo字段未声明导致的warning提示问题 2022-12-09 18:15:04 +08:00
刘洪洪
ad8b3de019 fix: 添加注释,以及代码格式处理 2022-12-09 15:45:16 +08:00
刘洪洪
b57dc5b055 fix: NpmMap再次请求时error未被重置 2022-12-09 14:50:10 +08:00
hyx
fc79feed00 fix:下钻表格切换顶部的Metric下拉列表时,后台报错 2022-12-09 14:46:08 +08:00
@changcode
be10a20dd6 fix: 修复npm 堆叠折线图、dns堆叠折线图、npm events 饼图 ,选中数据为空的时间范围,tab选项切换后,切换为有数据的时间范围时图表渲染错误问题 2022-12-09 10:38:02 +08:00
@changcode
c57f04589a fix: 检测页面统一 数据为空时的国际化 2022-12-09 10:24:40 +08:00
刘洪洪
b73d8083b0 fix: 优化ChartTabs非路由模式的切换问题 2022-12-08 18:30:16 +08:00
@changcode
86e23f0fe8 fix: 修复因时间切换导致的npm events 饼图无法正常渲染问题 2022-12-08 17:24:40 +08:00
chenjinsong
25dec6ac69 fix: 尝试修复54编译失败的问题 2022-12-08 16:42:19 +08:00
chenjinsong
ddedb4194b fix: 优化administration切换tab的效果 2022-12-08 16:36:27 +08:00
hyx
1f941376ee fix:去掉多余重复的方法 2022-12-08 16:26:01 +08:00
@changcode
5520772a91 fix:修复 Administration 列表重复请求 2022-12-08 16:18:54 +08:00
chenjinsong
4bba03d41d fix: 执行lint 2022-12-08 16:09:46 +08:00
刘洪洪
136d98649d fix: 去除老版本时间选择器组件 2022-12-08 16:01:33 +08:00
刘洪洪
8b096bb648 fix: DateTimeRange组件弃用/deep/样式穿透 2022-12-08 15:59:55 +08:00
刘洪洪
b10b8aee93 fix: 修复ChartTabs组件初始化activeBar点击抖动问题 2022-12-08 15:46:20 +08:00
刘洪洪
89d3cad005 fix: 修复ChartTabs组件初始化activeBar点击抖动问题 2022-12-08 15:39:12 +08:00
刘洪洪
1035a815d1 fix: 修复ChartTabs组件初始化activeBar底部有线条 2022-12-08 14:48:42 +08:00
@changcode
5c06ae6836 fix: 列表搜索框错位,监测统一数据为空时的国际化 2022-12-08 10:17:13 +08:00
@changcode
f5aeef0a1a fix: 去除无用代码及组件 2022-12-08 10:13:45 +08:00
刘洪洪
c6a9adfc4f fix: 修复ChartTabs组件切换界面时,tab未被重置的问题 2022-12-07 18:28:00 +08:00
刘洪洪
ddff5a25f5 fix: 修复ChartTabs组件初始化时activeBar异位问题 2022-12-07 16:24:17 +08:00
刘洪洪
2a1921fdbc fix: 修复ChartTabs组件初始化时activeBar异位问题 2022-12-07 09:40:21 +08:00
@changcode
4b70065abe style: 修复因类名更改导致的样式错误问题 2022-12-07 09:33:03 +08:00
刘洪洪
4cfe651434 CN-818:Administration开发之tab组件封装 2022-12-06 20:15:02 +08:00
chenj
0ffe414725 feat: 增加单元测试功能 2022-12-06 17:01:46 +08:00
changcode
1154ec3099 fix: 报告列表统一数据为空时的国际化 2022-12-06 16:09:21 +08:00
刘洪洪
ed6e1f26fb fix:优化LinkBlock右侧蜂窝图数据去重 2022-12-05 17:16:03 +08:00
刘洪洪
aa1c16aba3 fix:修复LinkBlock右侧蜂窝图不显示的问题 2022-12-05 16:59:12 +08:00
刘洪洪
31187404f2 fix:修复NetworkOverviewTabs报错时message字段使用 2022-12-05 16:57:44 +08:00
changcode
e026fb3cfd style: el-tab组件table列表首列标题向左顶格 2022-12-05 16:33:56 +08:00
chenj
0f854556e5 fix: 图表重复点击tab坍缩问题 2022-12-05 15:28:28 +08:00
changcode
3aaa0b9d99 style: Network Overview 的 DDos Detection字体颜色错误 2022-12-05 14:39:46 +08:00
changcode
abdcdeda08 style: 报告下拉列表用户图标名称样式调整 2022-12-05 14:22:33 +08:00
@changcode
ba22886a09 CN-818 fea: Administration开发 2022-12-02 16:02:18 +08:00
hyx
7ec4ab62ff fix: CN-817 下钻table的error交互实施:错误图标显示后消失问题修正 2022-12-02 15:50:21 +08:00
刘洪洪
a934fd2635 fix:修复echarts切换tab时图形塌缩的问题 2022-12-02 15:46:58 +08:00
hyx
5818485f3f CN-820 npm 下钻ip维度:直接进入as a client时没数据 2022-12-02 13:44:49 +08:00
chenj
e3422757a2 CN-820 fix: 修复地图报错问题 2022-12-01 16:56:30 +08:00
@changcode
0f600b44ac fix: npm ip下钻补充默认值 2022-12-01 16:33:53 +08:00
hyx
9b53efdaed Merge remote-tracking branch 'origin/dev' into dev 2022-12-01 16:11:42 +08:00
hyx
49e08f723a CN-817 下钻table的error交互实施 2022-12-01 16:11:21 +08:00
@changcode
9ce2d75797 style: 修复字体冲突 2022-12-01 16:11:08 +08:00
@changcode
7b811e3eb6 feat: icon 图标 2022-12-01 11:05:33 +08:00
chenjinsong
ad0c9850dc fix: 修改地图分数逻辑 2022-11-30 14:34:32 +08:00
刘洪洪
e89fc78aca CN-815: 前端内存占用分析 2022-11-29 17:21:01 +08:00
hyx
2cf206de5a CN-816 下钻table分数列排序功能无法使用 2022-11-29 16:36:58 +08:00
刘洪洪
82bd184bdd fix: 解决链路图切换时间后接口无数据,界面仍保留之前数据的问题 2022-11-29 14:54:37 +08:00
刘洪洪
4cc7891008 fix: 将之前报错提示的msg改为message 2022-11-28 18:29:46 +08:00
303 changed files with 28976 additions and 11795 deletions

View File

@@ -1,7 +1,8 @@
module.exports = { module.exports = {
env: { env: {
browser: true, browser: true,
es2021: true es2021: true,
jest: true
}, },
extends: [ extends: [
'plugin:vue/vue3-essential', 'plugin:vue/vue3-essential',

View File

@@ -2,6 +2,7 @@
stages: stages:
- gen_git-log - gen_git-log
- build_project - build_project
- test
- build_image - build_image
cache: cache:
@@ -10,7 +11,7 @@ cache:
- package.json - package.json
paths: paths:
- node_modules - node_modules
- dist/ # - dist/
before_script: before_script:
- export CNUI_TAG=$(date +%Y%m%d%H%M%S) - export CNUI_TAG=$(date +%Y%m%d%H%M%S)
@@ -41,21 +42,38 @@ build_project:
- cnpm install --save-dev --unsafe-perm - cnpm install --save-dev --unsafe-perm
- echo "npm run build" - echo "npm run build"
- cnpm run build - cnpm run build
artifacts:
name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME"
when: on_success
paths:
- dist/
only: only:
- dev - dev
- tags - tags
tags: tags:
- galaxy - galaxy
test:
stage: test
script:
- cnpm run test
when: on_success
only:
- dev
tags:
- galaxy
build_image: build_image:
dependencies:
- build_project
stage: build_image stage: build_image
script: script:
- echo "docker build" - echo "docker build"
- sudo docker build -t cn-ui:$CNUI_TAG . - sudo docker build --no-cache -t cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG .
- echo "docker tag" - echo "docker tag"
- sudo docker tag cn-ui:$CNUI_TAG 192.168.40.153:9080/cyber-narrator/cn-ui:$CNUI_TAG - sudo docker tag cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG
- echo "docker push" - echo "docker push"
- sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui:$CNUI_TAG - sudo docker push 192.168.40.153:9080/cyber-narrator/cn-ui-$CI_COMMIT_REF_NAME:$CNUI_TAG
when: on_success when: on_success
only: only:
- dev - dev
@@ -64,6 +82,8 @@ build_image:
build_release_image: build_release_image:
dependencies:
- build_project
stage: build_image stage: build_image
script: script:
- echo 'tag名称是' - echo 'tag名称是'
@@ -71,7 +91,7 @@ build_release_image:
- echo '提交的版本是' - echo '提交的版本是'
- echo $CI_COMMIT_REF_NAME - echo $CI_COMMIT_REF_NAME
- echo "docker build" - echo "docker build"
- sudo docker build -t cn-ui:$CI_COMMIT_TAG . - sudo docker build --no-cache -t cn-ui:$CI_COMMIT_TAG .
- echo "docker tag" - echo "docker tag"
- sudo docker tag cn-ui:$CI_COMMIT_TAG 192.168.40.153:9080/cyber-narrator/cn-ui:$CI_COMMIT_TAG - sudo docker tag cn-ui:$CI_COMMIT_TAG 192.168.40.153:9080/cyber-narrator/cn-ui:$CI_COMMIT_TAG
- echo "docker push" - echo "docker push"

View File

@@ -12,8 +12,9 @@ module.exports = {
], ],
plugins: [ plugins: [
'@vue/babel-plugin-jsx', '@vue/babel-plugin-jsx',
['@babel/proposal-class-properties', { loose: true }], ['@babel/plugin-proposal-class-properties', { loose: true }],
['@babel/plugin-proposal-private-methods', { loose: true }], ['@babel/plugin-proposal-private-methods', { loose: true }],
['@babel/plugin-proposal-private-property-in-object', { loose: true }],
'@babel/transform-runtime', '@babel/transform-runtime',
'lodash' 'lodash'
], ],

34
jest.config.js Normal file
View File

@@ -0,0 +1,34 @@
module.exports = {
roots: [
'<rootDir>/test'
],
testMatch: [
'<rootDir>/test/**/__tests__/**/*.{vue,js,jsx,ts,tsx}',
'<rootDir>/test/**/*.{spec,test}.{vue,js,jsx,ts,tsx}'
],
setupFilesAfterEnv: ['<rootDir>/test/init.js'],
verbose: true,
testEnvironment: 'jsdom',
transform: {
'^.+\\.(vue)$': '<rootDir>/node_modules/vue-jest',
'^.+\\.(js|jsx|mjs|cjs|ts|tsx)$': '<rootDir>/node_modules/babel-jest'
},
transformIgnorePatterns: [
'<rootDir>/node_modules/',
'[/\\\\]node_modules[/\\\\].+\\.(js|jsx|mjs|cjs|ts|tsx)$',
'^.+\\.module\\.(css|sass|scss|less)$'
],
moduleFileExtensions: [
'vue',
'js',
'jsx',
'ts',
'tsx',
'json',
'node'
],
moduleNameMapper: {
'@/(.*)$': '<rootDir>/src/$1'
},
resetMocks: true
}

0
npm
View File

View File

@@ -6,11 +6,13 @@
"serve": "vue-cli-service serve", "serve": "vue-cli-service serve",
"build": "cross-env NODE_ENV=production vue-cli-service build", "build": "cross-env NODE_ENV=production vue-cli-service build",
"lint": "vue-cli-service lint", "lint": "vue-cli-service lint",
"test": "jest",
"analyz": "cross-env NODE_ENV=production npm_config_report=true npm run build" "analyz": "cross-env NODE_ENV=production npm_config_report=true npm run build"
}, },
"dependencies": { "dependencies": {
"@amcharts/amcharts4": "^4.10.24", "@amcharts/amcharts4": "^4.10.24",
"@amcharts/amcharts4-geodata": "^4.1.20", "@amcharts/amcharts4-geodata": "^4.1.20",
"@antv/g6": "^4.8.17",
"axios": "^0.21.1", "axios": "^0.21.1",
"babel-plugin-lodash": "^3.3.4", "babel-plugin-lodash": "^3.3.4",
"codemirror": "^5.65.1", "codemirror": "^5.65.1",
@@ -39,7 +41,9 @@
"@babel/cli": "^7.12.1", "@babel/cli": "^7.12.1",
"@babel/core": "^7.11.4", "@babel/core": "^7.11.4",
"@babel/plugin-proposal-class-properties": "^7.12.1", "@babel/plugin-proposal-class-properties": "^7.12.1",
"@babel/plugin-proposal-private-methods": "^7.12.1",
"@babel/plugin-transform-runtime": "^7.12.1", "@babel/plugin-transform-runtime": "^7.12.1",
"@babel/plugin-proposal-private-property-in-object": "^7.12.1",
"@babel/preset-env": "^7.11.5", "@babel/preset-env": "^7.11.5",
"@babel/preset-typescript": "^7.10.4", "@babel/preset-typescript": "^7.10.4",
"@commitlint/cli": "^9.1.2", "@commitlint/cli": "^9.1.2",
@@ -48,17 +52,23 @@
"@rollup/plugin-commonjs": "^15.1.0", "@rollup/plugin-commonjs": "^15.1.0",
"@rollup/plugin-node-resolve": "^9.0.0", "@rollup/plugin-node-resolve": "^9.0.0",
"@rollup/plugin-typescript": "^6.0.0", "@rollup/plugin-typescript": "^6.0.0",
"@types/jest": "^26.0.10", "@testing-library/jest-dom": "^5.16.5",
"@testing-library/user-event": "^14.4.3",
"@testing-library/vue": "^6.4.2",
"@types/jest": "^26.0.24",
"@types/lodash": "^4.14.161", "@types/lodash": "^4.14.161",
"@typescript-eslint/eslint-plugin": "^3.10.1", "@typescript-eslint/eslint-plugin": "^3.10.1",
"@typescript-eslint/parser": "^3.10.1", "@typescript-eslint/parser": "^3.10.1",
"@vue/babel-plugin-jsx": "^1.0.0", "@vue/babel-plugin-jsx": "^1.0.0",
"@vue/babel-preset-app": "^5.0.8",
"@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-service": "~4.5.0", "@vue/cli-service": "~4.5.0",
"@vue/compiler-sfc": "^3.0.0", "@vue/compiler-sfc": "^3.0.0",
"@vue/component-compiler-utils": "^3.2.0", "@vue/component-compiler-utils": "^3.2.0",
"@vue/test-utils": "^2.2.7",
"babel-eslint": "^10.1.0", "babel-eslint": "^10.1.0",
"babel-jest": "^26.0.0",
"compression-webpack-plugin": "^8.0.1", "compression-webpack-plugin": "^8.0.1",
"cross-env": "^7.0.3", "cross-env": "^7.0.3",
"eslint": "^7.22.0", "eslint": "^7.22.0",
@@ -67,7 +77,10 @@
"eslint-plugin-node": "^11.1.0", "eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^4.3.1", "eslint-plugin-promise": "^4.3.1",
"eslint-plugin-vue": "^7.7.0", "eslint-plugin-vue": "^7.7.0",
"jest": "^26.0.0",
"ts-jest": "^26.4.4",
"uglifyjs-webpack-plugin": "^2.2.0", "uglifyjs-webpack-plugin": "^2.2.0",
"vue-jest": "^5.0.0-alpha.10",
"vue3-ace-editor": "^2.0.2" "vue3-ace-editor": "^2.0.2"
}, },
"browserslist": [ "browserslist": [

Binary file not shown.

View File

@@ -1,4 +1,5 @@
var BASE_CONFIG = { const BASE_CONFIG = {
baseUrl: 'http://192.168.44.54:8090/', baseUrl: 'http://192.168.44.54:8091/',
version: '2.0.2021.05.11.19.43' version: '23.06',
apiVersion: 'v1'
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect y="85.331" style="fill:#D80027;" width="512" height="341.337"/>
<g>
<polygon style="fill:#FFDA44;" points="178.923,189.567 193.579,234.674 241.008,234.674 202.637,262.552 217.294,307.661
178.923,279.782 140.552,307.661 155.208,262.552 116.837,234.674 164.266,234.674 "/>
<polygon style="fill:#FFDA44;" points="271.3,339.593 256.91,329.138 242.522,339.592 248.017,322.678 233.628,312.223
251.414,312.223 256.91,295.307 262.408,312.223 280.193,312.223 265.804,322.677 "/>
<polygon style="fill:#FFDA44;" points="308.837,287.927 291.052,287.927 285.556,304.841 280.06,287.928 262.273,287.927
276.664,277.472 271.166,260.557 285.556,271.01 299.945,260.557 294.449,277.472 "/>
<polygon style="fill:#FFDA44;" points="308.837,224.063 294.449,234.518 299.944,251.432 285.556,240.979 271.166,251.434
276.664,234.517 262.273,224.065 280.061,224.063 285.556,207.147 291.052,224.063 "/>
<polygon style="fill:#FFDA44;" points="271.3,172.397 265.805,189.313 280.193,199.766 262.408,199.767 256.91,216.684
251.414,199.766 233.629,199.768 248.018,189.312 242.522,172.396 256.91,182.851 "/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect y="85.333" style="fill:#0052B4;" width="512" height="341.337"/>
<g>
<path style="fill:#F0F0F0;" d="M223.397,255.996c0.273-0.304,0.543-0.609,0.813-0.916c-0.27,0.308-0.546,0.61-0.82,0.916H223.397z"
/>
<polygon style="fill:#F0F0F0;" points="189.217,297.923 200.175,320.836 224.922,315.118 213.839,337.971 233.739,353.752
208.963,359.337 209.032,384.735 189.217,368.845 169.403,384.735 169.472,359.337 144.696,353.752 164.596,337.971
153.513,315.118 178.259,320.836 "/>
<polygon style="fill:#F0F0F0;" points="387.076,326.387 392.303,337.316 404.106,334.588 398.82,345.488 408.312,353.016
396.494,355.679 396.526,367.793 387.076,360.215 377.626,367.793 377.658,355.679 365.841,353.016 375.332,345.488
370.047,334.588 381.85,337.316 "/>
<polygon style="fill:#F0F0F0;" points="338.453,210.448 343.68,221.378 355.483,218.649 350.197,229.55 359.688,237.078
347.871,239.741 347.903,251.856 338.453,244.276 329.002,251.856 329.035,239.741 317.217,237.078 326.708,229.55
321.424,218.649 333.226,221.378 "/>
<polygon style="fill:#F0F0F0;" points="387.076,144.198 392.303,155.128 404.106,152.398 398.82,163.3 408.311,170.827
396.494,173.491 396.526,185.605 387.076,178.025 377.626,185.605 377.658,173.491 365.841,170.827 375.332,163.3 370.047,152.398
381.85,155.128 "/>
<polygon style="fill:#F0F0F0;" points="429.547,193.886 434.774,204.815 446.576,202.087 441.292,212.987 450.783,220.514
438.965,223.178 438.998,235.292 429.547,227.714 420.097,235.292 420.129,223.178 408.312,220.514 417.803,212.987
412.517,202.087 424.32,204.815 "/>
<polygon style="fill:#F0F0F0;" points="399.179,251.856 403.289,264.508 416.593,264.508 405.83,272.328 409.942,284.98
399.179,277.161 388.414,284.98 392.526,272.328 381.763,264.508 395.067,264.508 "/>
<polygon style="fill:#F0F0F0;" points="256,85.333 256,115.886 210.833,140.985 256,140.985 256,200.344 196.897,200.344
256,233.179 256,255.996 229.32,255.996 155.826,215.17 155.826,255.996 100.174,255.996 100.174,207.423 12.744,255.996
0,255.996 0,225.443 45.167,200.344 0,200.344 0,140.985 59.103,140.985 0,108.139 0,85.333 26.68,85.333 100.174,126.16
100.174,85.333 155.826,85.333 155.826,133.906 243.256,85.333 "/>
</g>
<polygon style="fill:#D80027;" points="144,85.33 112,85.33 112,154.662 0,154.662 0,186.662 112,186.662 112,255.996 144,255.996
144,186.662 256,186.662 256,154.662 144,154.662 "/>
<polygon style="fill:#0052B4;" points="155.826,200.344 256,255.996 256,240.259 184.153,200.344 "/>
<polygon style="fill:#F0F0F0;" points="155.826,200.344 256,255.996 256,240.259 184.153,200.344 "/>
<g>
<polygon style="fill:#D80027;" points="155.826,200.344 256,255.996 256,240.259 184.153,200.344 "/>
<polygon style="fill:#D80027;" points="71.846,200.344 0,240.259 0,255.996 0,255.996 100.174,200.344 "/>
</g>
<polygon style="fill:#0052B4;" points="100.174,140.982 0,85.33 0,101.067 71.847,140.982 "/>
<polygon style="fill:#F0F0F0;" points="100.174,140.982 0,85.33 0,101.067 71.847,140.982 "/>
<g>
<polygon style="fill:#D80027;" points="100.174,140.982 0,85.33 0,101.067 71.847,140.982 "/>
<polygon style="fill:#D80027;" points="184.154,140.982 256,101.067 256,85.33 256,85.33 155.826,140.982 "/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect y="85.331" style="fill:#F0F0F0;" width="512" height="341.337"/>
<g>
<rect y="127.994" style="fill:#D80027;" width="512" height="42.663"/>
<rect y="213.331" style="fill:#D80027;" width="512" height="42.663"/>
<rect y="298.657" style="fill:#D80027;" width="512" height="42.663"/>
<rect y="383.994" style="fill:#D80027;" width="512" height="42.663"/>
</g>
<rect y="85.331" style="fill:#2E52B2;" width="256" height="183.797"/>
<g>
<polygon style="fill:#F0F0F0;" points="99.822,160.624 95.699,173.308 82.363,173.308 93.154,181.143 89.031,193.826
99.822,185.991 110.606,193.826 106.484,181.143 117.275,173.308 103.938,173.308 "/>
<polygon style="fill:#F0F0F0;" points="103.938,219.08 99.822,206.397 95.699,219.08 82.363,219.08 93.154,226.916 89.031,239.599
99.822,231.763 110.606,239.599 106.484,226.916 117.275,219.08 "/>
<polygon style="fill:#F0F0F0;" points="47.577,219.08 43.46,206.397 39.337,219.08 26.001,219.08 36.792,226.916 32.669,239.599
43.46,231.763 54.245,239.599 50.123,226.916 60.912,219.08 "/>
<polygon style="fill:#F0F0F0;" points="43.46,160.624 39.337,173.308 26.001,173.308 36.792,181.143 32.669,193.826 43.46,185.991
54.245,193.826 50.123,181.143 60.912,173.308 47.577,173.308 "/>
<polygon style="fill:#F0F0F0;" points="99.822,114.85 95.699,127.535 82.363,127.535 93.154,135.371 89.031,148.054
99.822,140.218 110.606,148.054 106.484,135.371 117.275,127.535 103.938,127.535 "/>
<polygon style="fill:#F0F0F0;" points="43.46,114.85 39.337,127.535 26.001,127.535 36.792,135.371 32.669,148.054 43.46,140.218
54.245,148.054 50.123,135.371 60.912,127.535 47.577,127.535 "/>
<polygon style="fill:#F0F0F0;" points="156.183,160.624 152.061,173.308 138.725,173.308 149.515,181.143 145.394,193.826
156.183,185.991 166.969,193.826 162.846,181.143 173.637,173.308 160.301,173.308 "/>
<polygon style="fill:#F0F0F0;" points="160.301,219.08 156.183,206.397 152.061,219.08 138.725,219.08 149.515,226.916
145.394,239.599 156.183,231.763 166.969,239.599 162.846,226.916 173.637,219.08 "/>
<polygon style="fill:#F0F0F0;" points="216.663,219.08 212.546,206.397 208.423,219.08 195.088,219.08 205.877,226.916
201.755,239.599 212.546,231.763 223.331,239.599 219.208,226.916 229.999,219.08 "/>
<polygon style="fill:#F0F0F0;" points="212.546,160.624 208.423,173.308 195.088,173.308 205.877,181.143 201.755,193.826
212.546,185.991 223.331,193.826 219.208,181.143 229.999,173.308 216.663,173.308 "/>
<polygon style="fill:#F0F0F0;" points="156.183,114.85 152.061,127.535 138.725,127.535 149.515,135.371 145.394,148.054
156.183,140.218 166.969,148.054 162.846,135.371 173.637,127.535 160.301,127.535 "/>
<polygon style="fill:#F0F0F0;" points="212.546,114.85 208.423,127.535 195.088,127.535 205.877,135.371 201.755,148.054
212.546,140.218 223.331,148.054 219.208,135.371 229.999,127.535 216.663,127.535 "/>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect y="85.331" style="fill:#D80027;" width="512" height="341.337"/>
<rect y="85.331" width="512" height="113.775"/>
<rect y="312.882" style="fill:#FFDA44;" width="512" height="113.775"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 684 B

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
<rect y="85.331" style="fill:#FFFFFF;" width="512" height="341.337"/>
<path style="fill:#D80027;" d="M318.33,255.994c0,15.583-27.906,54.539-62.33,54.539s-62.33-38.957-62.33-54.539
c0-34.424,27.906-62.33,62.33-62.33S318.33,221.57,318.33,255.994z"/>
<path style="fill:#0052B4;" d="M318.33,255.994c0,34.424-27.906,62.33-62.33,62.33s-62.33-27.906-62.33-62.33"/>
<rect x="324.205" y="300.55" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -119.6501 327.8224)" width="23.374" height="15.582"/>
<rect x="296.657" y="328.085" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -147.1889 316.408)" width="23.374" height="15.582"/>
<rect x="357.26" y="333.586" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -133.3277 360.8719)" width="23.374" height="15.582"/>
<rect x="329.712" y="361.143" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -160.8823 349.464)" width="23.374" height="15.582"/>
<rect x="340.732" y="317.068" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -126.4889 344.3472)" width="23.374" height="15.582"/>
<rect x="313.185" y="344.614" transform="matrix(0.7071 -0.7071 0.7071 0.7071 -154.0356 332.936)" width="23.374" height="15.582"/>
<rect x="307.483" y="165.555" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 455.5344 535.3814)" width="62.33" height="15.582"/>
<rect x="296.656" y="168.315" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 401.8486 518.6624)" width="23.374" height="15.581"/>
<rect x="324.193" y="195.864" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 429.3763 585.1636)" width="23.374" height="15.581"/>
<rect x="329.693" y="135.257" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 481.6206 485.591)" width="23.374" height="15.582"/>
<rect x="357.252" y="162.807" transform="matrix(-0.7071 -0.7071 0.7071 -0.7071 509.1863 552.108)" width="23.374" height="15.582"/>
<rect x="125.671" y="347.369" transform="matrix(0.7071 0.7071 -0.7071 0.7071 297.0721 -6.8758)" width="62.33" height="15.582"/>
<rect x="175.435" y="344.62" transform="matrix(0.7071 0.7071 -0.7071 0.7071 303.9983 -29.0962)" width="23.374" height="15.581"/>
<rect x="147.898" y="317.072" transform="matrix(0.7071 0.7071 -0.7071 0.7071 276.4547 -17.6934)" width="23.374" height="15.582"/>
<rect x="158.724" y="314.322" transform="matrix(0.7071 0.7071 -0.7071 0.7071 283.386 -39.9269)" width="62.33" height="15.582"/>
<rect x="125.672" y="149.023" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 378.6212 156.7987)" width="62.33" height="15.582"/>
<rect x="142.182" y="165.56" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 418.4998 173.3536)" width="62.33" height="15.582"/>
<rect x="158.712" y="182.089" transform="matrix(-0.7071 0.7071 -0.7071 -0.7071 458.4043 189.8812)" width="62.33" height="15.581"/>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
<g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="278px" height="134px" viewBox="0 0 278 134" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组</title>
<defs>
<filter x="-17.8%" y="-24.0%" width="135.5%" height="147.9%" filterUnits="objectBoundingBox" id="filter-1">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
<filter x="-4.6%" y="-33.1%" width="109.2%" height="166.2%" filterUnits="objectBoundingBox" id="filter-2">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
<feMerge>
<feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="🪁login" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录定" transform="translate(-821.000000, -321.000000)">
<g id="编组-29备份-2" transform="translate(-92.000000, 0.483548)">
<g id="编组-3" transform="translate(845.000000, 261.000000)">
<g id="编组" transform="translate(77.000000, 70.000000)">
<g id="编组-2" filter="url(#filter-1)" transform="translate(92.000000, 0.000000)">
<g id="编组-6" transform="translate(35.050168, 0.000000)" fill="#07C8EA">
<path d="M27.0984325,0.0122014594 L31.8461546,0.0441807494 C33.4287159,0.0529564615 35.0111814,0.057058831 36.5933025,0.0481199837 C39.7135537,0.0288820298 40.9989786,1.482222 40.9483988,4.6197574 C40.8553785,10.3255597 40.893168,16.0325764 40.9093577,21.7387835 L40.9152603,25.1623944 L40.9214617,37.9840697 L40.9100279,44.3951016 C40.8908425,49.6015915 40.4443448,50.033571 35.0933494,50.052809 C30.3405147,50.0699729 25.5830136,50.1620025 20.8322952,50.0868551 L20.7215855,50.0942095 L20.7215855,50.0942095 L20.5477593,50.0992315 C18.9139006,50.0992315 17.5893964,48.7747273 17.5893964,47.1408687 C17.5893964,45.50701 18.9139006,44.1825058 20.5477593,44.1825058 L20.474,44.184 L20.4742959,44.1750333 C21.1471703,44.1739628 21.8199738,44.181749 22.4925791,44.1939776 L23.5363069,44.2159125 C27.0892892,44.2985782 30.6348941,44.4415229 34.1543247,43.9933811 L34.9660278,43.8791747 L34.9660278,6.26547692 C33.1063476,6.26547692 31.2448143,6.23793166 29.3832537,6.20623276 L26.5911206,6.15849312 C21.9382921,6.0834815 17.2909993,6.05560833 12.6777715,6.44036741 C8.6401071,6.77790605 5.98379485,10.2529801 5.89658827,14.448603 C5.6888441,24.353954 5.80079615,34.2622872 5.81918245,44.6967563 L0.447293679,44.6970037 L0.446704038,54.9559323 C0.117345075,53.9801448 0.113539117,52.6941057 0.104327596,51.8104584 C-0.0299705283,39.8654379 -0.0177616079,27.9186685 0.0467712572,15.9718991 C0.0973510704,7.02275274 6.25064696,0.487095115 15.2364124,0.139063039 C19.1868702,-0.0134803334 23.1421729,-0.0121848483 27.0984325,0.0122014594 Z" id="形状结合"></path>
</g>
<g id="编组-6" fill="#427497">
<path d="M25.7134192,0.139063039 C34.6991847,0.487095115 40.8524806,7.02275274 40.9030604,15.9718991 L40.904,16.078 L40.902,16.078 L40.9025818,16.0941369 C40.9025818,17.6439559 39.6910759,18.9108125 38.1634453,18.9993255 L37.9924532,19.0042656 C36.3852335,19.0042656 35.0823245,17.7013566 35.0823245,16.0941369 C35.0823245,16.0780245 35.0824554,16.0619426 35.0827163,16.0458923 L35.0846058,16.0783793 C35.0750677,15.535054 35.0646363,14.991824 35.0532433,14.448603 C34.9660368,10.2529801 32.3097245,6.77790605 28.2720601,6.44036741 C23.6588323,6.05560833 19.0115395,6.0834815 14.358711,6.15849312 L11.566578,6.20623276 C9.70501736,6.23793166 7.84348402,6.26547692 5.98380382,6.26547692 L5.98380382,43.8791747 C9.76950351,44.4638711 13.587236,44.3049371 17.4135248,44.2159125 L18.4572525,44.1939776 C24.024744,44.0927552 29.6058224,44.2959137 35.128241,47.3070283 C35.128241,46.4331109 35.1291226,45.5631201 35.1306492,44.6967563 C35.1675419,43.1280395 36.4488408,41.8672653 38.0246093,41.8672653 C39.6211734,41.8672653 40.9154443,43.1615363 40.9154443,44.7581003 C40.9154443,44.8307331 40.9127656,44.9027403 40.9075017,44.9740284 L40.9088955,44.6972456 C40.8930463,47.0683764 40.8721613,49.4394518 40.845504,51.8104584 C40.8298068,53.3162655 40.8298068,55.990576 39.2077646,56.3068929 C37.5857223,56.6232099 35.9043795,55.3887179 34.756741,54.3638596 C31.4359146,51.4029636 27.806377,49.8569316 23.2908206,50.0090864 C17.486351,50.2067126 11.6679283,50.0737959 5.85648222,50.052809 C0.505486811,50.033571 0.0589891496,49.6015915 0.0398037033,44.3951016 C0.0171299939,37.9836163 0.0345713088,31.5738798 0.0345713088,25.1623944 C0.0363154403,18.3154317 0.113057226,11.4667201 0.00143281049,4.6197574 C-0.0491470027,1.482222 1.2362779,0.0288820298 4.35652914,0.0481199837 C5.93865019,0.057058831 7.52111576,0.0529564615 9.10367704,0.0441807494 L13.8513991,0.0122014594 C17.8076588,-0.0121848483 21.7629614,-0.0134803334 25.7134192,0.139063039 Z" id="形状结合"></path>
</g>
</g>
<g id="编组备份-3" filter="url(#filter-2)" transform="translate(0.000000, 78.000000)" fill="#FFFFFF">
<path d="M115.414634,3.4395964 C118.349928,2.7814294 120.475231,3.29905032 122.160731,5.90343768 C124.483413,9.49250456 127.148437,12.8399007 129.656213,16.2987054 C130.134509,16.9585864 130.56694,17.6544608 131.390854,18.88681 L131.390854,3.34275672 L136.97561,3.34275672 L136.97561,29.405484 C133.211489,30.4201581 132.565299,30.0088038 130.615261,26.8070956 C127.699624,22.0182451 124.570227,17.3716547 121.53174,12.6650751 C121.328628,12.749917 121.124697,12.8347588 120.921585,12.9196007 L120.921585,29.5546 L115.414634,29.5546 L115.414634,3.4395964 Z" id="Fill-3"></path>
<path d="M52.5622826,19.5533129 C52.5622826,20.896183 52.5088273,22.2433081 52.5906808,23.5802213 C52.6199142,24.0550766 52.8596279,24.7231077 53.2146047,24.9324524 C54.4716401,25.6745201 57.2421295,24.9758532 58.2268768,23.7963741 C59.7353193,21.9905626 60.0802732,17.5781534 58.8733522,15.5408713 C57.9153325,13.9248317 56.2523707,13.4984832 53.9153706,13.9903583 C51.9625807,14.4022399 52.6833924,15.8736103 52.5756465,17.0105397 C52.4954635,17.8504718 52.5597769,18.7048708 52.5622826,19.5533129 M52.5330493,0 L52.5330493,9.65368764 C53.208758,9.5405053 53.6698102,9.49284958 54.1166633,9.38477321 C59.6952278,8.0333931 63.9023291,10.7650872 65.0299024,16.4812208 C66.1015147,21.9071651 64.1203266,26.9127179 59.9833855,28.7985229 C55.9491788,30.6358212 51.8139081,29.8256739 47.7396098,28.8470296 C47.3829626,28.7610791 46.9837181,27.8930642 46.9812124,27.3867221 C46.934439,19.0265469 46.9645076,10.6663717 46.9268751,2.30619654 C46.9219104,1.14373732 47.3194844,0.630587319 48.4453872,0.535275875 C49.7375027,0.424646521 51.0204305,0.203387813 52.5330493,0" id="Fill-5"></path>
<path d="M19.5137739,23.4304503 C19.9932034,24.8985873 20.4620513,26.3353612 20.9268293,27.7602679 C14.4720316,31.407724 6.23789114,30.2659338 2.48710831,25.2529068 C-1.22541783,20.2898914 -0.709359604,11.0682613 3.55178365,6.23408942 C7.21547147,2.07888852 15.6189181,1.27107406 20.5540301,4.64219483 C20.064019,6.07049216 19.569938,7.51150431 19.047368,9.03558657 C14.6893621,7.55219171 10.4103114,6.14678104 7.12023675,10.7351332 C5.254613,13.3374317 5.32949842,19.2684681 7.28465909,21.8139737 C10.743226,26.3184081 15.1354187,24.6230997 19.5137739,23.4304503" id="Fill-7"></path>
<path d="M80.9573503,17.4186957 C80.6994597,14.8122308 79.7157449,13.6997668 77.8026508,13.6278585 C75.6024709,13.5441065 74.4971096,14.6464187 74.0851334,17.4186957 L80.9573503,17.4186957 Z M85.2271429,28.6702323 C81.6093756,29.9578141 78.1497488,30.3511949 74.691744,29.2725702 C70.8371715,28.0704323 68.9305652,25.1475708 68.5664366,21.0217254 C68.1731129,16.5684856 69.1925106,12.666825 73.0543819,10.2946966 C76.3404597,8.27534184 79.851989,8.46568738 82.955597,10.8132824 C86.3227725,13.3596828 86.3714311,17.194511 86.1832845,21.2679056 L74.1800176,21.2679056 C74.761488,24.9149262 77.0054606,25.5857885 84.4437394,24.4377934 C84.6910873,25.7719041 84.9400571,27.1178586 85.2271429,28.6702323 L85.2271429,28.6702323 Z" id="Fill-9"></path>
<path d="M25.3874943,30.8228052 C27.273054,31.3110201 28.457617,31.5073987 28.9411833,31.4119412 C30.9031674,31.0255922 31.8121184,29.009122 31.0620691,27.1434634 C28.7485252,21.3855088 26.4909674,15.603831 24.097561,9.54171142 L30.054319,9.54171142 C31.3765794,13.67717 34.2426251,22.3985378 34.3454245,22.3888832 C34.4546317,22.3786269 37.0270604,13.7593538 38.2422885,9.54425319 L43.7560976,9.54425319 C42.7483475,12.6968943 41.8846793,15.858008 40.7279074,18.901353 C39.1117199,23.1562747 37.3588605,27.3612083 35.512142,31.5153065 C33.6983565,35.5956933 30.1210084,37.5842041 24.3206821,35.2889865 C24.4266166,34.7659469 24.7822207,33.2772198 25.3874943,30.8228052 Z" id="Fill-11"></path>
<path d="M234.415104,8.91275606 C240.021771,8.71254074 243.950192,12.7288259 244.138705,18.8507945 C244.331212,25.1524435 240.866885,29.6752563 235.685171,29.8865947 C229.702277,30.1295911 225.972753,26.2467828 225.762672,19.5583931 C225.578153,13.6708647 229.297293,9.09500335 234.415104,8.91275606 Z M234.692852,13.9760256 C237.392359,13.8724659 239.283821,15.9498548 239.374586,19.1163903 C239.467275,22.3758639 237.799265,24.7152498 235.304366,24.8245628 C232.423713,24.9502506 230.628017,22.9419015 230.526867,19.4823895 C230.438024,16.4371162 232.228721,14.0702914 234.692852,13.9760256 Z" id="Fill-13"></path>
<path d="M200.239759,20.786111 C197.664552,20.8988821 196.292264,21.6284773 196.296349,23.2098363 C196.300526,24.7732545 197.562105,25.5643612 200.031561,25.6164751 C201.586435,25.6497938 202.385352,25.9804068 202.385352,23.3029579 C202.385352,21.2268237 202.1218,20.7040956 200.239759,20.786111 Z M195.974185,29.5438157 C192.681025,28.9030706 190.853512,26.6655885 190.878298,23.384119 C190.903083,20.2008971 192.687635,18.0659342 195.933702,17.440567 C197.008564,17.2338199 198.11069,17.1509501 199.203728,17.0885843 C200.211669,17.0304901 201.224567,17.0757694 202.23664,17.0757694 C201.947476,13.5226239 201.356756,13.3218571 193.403934,14.1138181 C193.270093,13.4534235 193.099073,12.7810682 193.005715,12.0967524 C192.91153,11.4090193 192.89418,10.7101799 192.829738,9.82851455 C196.569035,8.87423144 200.225714,8.3291709 203.912962,9.87806551 C205.883404,10.7050539 207.160681,12.3351096 207.250734,14.3684075 C207.461411,19.1663072 207.318481,23.9804391 207.318481,28.9141768 C203.589098,29.7411652 199.816754,30.2930604 195.974185,29.5438157 Z" id="Fill-17"></path>
<path d="M149.508052,20.786111 C146.932844,20.8988821 145.560557,21.6284773 145.564642,23.2098363 C145.568819,24.7732545 146.830398,25.5643612 149.299854,25.6164751 C150.854727,25.6497938 151.653645,25.9804068 151.653645,23.3029579 C151.653645,21.2268237 151.390093,20.7040956 149.508052,20.786111 Z M145.242477,29.5438157 C141.949318,28.9030706 140.121805,26.6655885 140.14659,23.384119 C140.171376,20.2008971 141.955928,18.0659342 145.201994,17.440567 C146.276856,17.2338199 147.378982,17.1509501 148.47202,17.0885843 C149.479962,17.0304901 150.49286,17.0757694 151.504932,17.0757694 C151.215769,13.5226239 150.625049,13.3218571 142.672227,14.1138181 C142.538385,13.4534235 142.367366,12.7810682 142.274007,12.0967524 C142.179823,11.4090193 142.162473,10.7101799 142.098031,9.82851455 C145.837328,8.87423144 149.494007,8.3291709 153.181254,9.87806551 C155.151697,10.7050539 156.428973,12.3351096 156.519027,14.3684075 C156.729703,19.1663072 156.586774,23.9804391 156.586774,28.9141768 C152.857391,29.7411652 149.085047,30.2930604 145.242477,29.5438157 Z" id="Fill-17备份"></path>
<path d="M214.368819,9.69369425 L221.009306,9.69369425 L221.009306,14.1842677 L214.659803,14.1842677 C214.659803,17.2278693 214.46217,20.0881822 214.726242,22.9064564 C214.912101,24.8906828 216.670619,25.2673495 218.414,25.1378703 C219.297043,25.07229 220.169154,24.8646188 221.178346,24.6998271 C221.447464,26.0938303 221.682942,27.3104301 221.95122,28.6918217 C218.65957,30.1530867 215.340167,30.4170898 212.263812,28.7515166 C210.96784,28.0503112 209.500306,26.2636666 209.442277,24.9133837 C209.153817,18.2393203 209.311082,11.5459192 209.311082,4.69193022 C210.769366,4.43885727 212.402576,4.157198 214.368819,3.81668457 L214.368819,9.69369425 Z" id="Fill-19"></path>
<path d="M247.317073,29.2612484 L247.317073,19.8647936 L247.317073,13.6517012 C247.317073,10.1104359 247.31206,10.0838292 250.648221,9.42209492 C253.724541,8.8118575 256.802532,8.55179851 260,9.73279246 C259.7176,11.2193343 259.458594,12.5882916 259.207944,13.908327 L252.803818,13.908327 L252.803818,29.2612484 L247.317073,29.2612484 Z" id="Fill-25"></path>
<path d="M175.02439,29.2612484 L175.02439,19.8647936 L175.02439,13.6517012 C175.02439,10.1104359 175.019377,10.0838292 178.355538,9.42209492 C181.431858,8.8118575 184.509849,8.55179851 187.707317,9.73279246 C187.424917,11.2193343 187.165912,12.5882916 186.915261,13.908327 L180.511135,13.908327 L180.511135,29.2612484 L175.02439,29.2612484 Z" id="Fill-25备份"></path>
<path d="M159.804878,29.2612484 L159.804878,19.8647936 L159.804878,13.6517012 C159.804878,10.1104359 159.799865,10.0838292 163.136026,9.42209492 C166.212346,8.8118575 169.290337,8.55179851 172.487805,9.73279246 C172.205405,11.2193343 171.946399,12.5882916 171.695749,13.908327 L165.291623,13.908327 L165.291623,29.2612484 L159.804878,29.2612484 Z" id="Fill-25备份-2"></path>
<path d="M89.4146341,29.2612484 L89.4146341,19.8647936 L89.4146341,13.6517012 C89.4146341,10.1104359 89.4096212,10.0838292 92.7457824,9.42209492 C95.8221023,8.8118575 98.9000932,8.55179851 102.097561,9.73279246 C101.815161,11.2193343 101.556155,12.5882916 101.305505,13.908327 L94.9013786,13.908327 L94.9013786,29.2612484 L89.4146341,29.2612484 Z" id="Fill-25备份-3"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -1,16 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<svg width="36px" height="27px" viewBox="0 0 36 27" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <svg width="96px" height="77px" viewBox="0 0 96 77" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组 8</title> <title>编组 2</title>
<g id="Dashboards-重构" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> <defs>
<g id="Network-Analytics_Network-Overview" transform="translate(-62.000000, -17.000000)"> <filter x="-17.8%" y="-24.0%" width="135.5%" height="147.9%" filterUnits="objectBoundingBox" id="filter-1">
<g id="编组-8" transform="translate(62.000000, 17.000000)"> <feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<g id="编组-6" transform="translate(16.714286, 0.000000)" fill="#38ACD2"> <feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<path d="M17.2339653,0.0225148942 C18.7034774,0.013513634 19.3088605,0.693517934 19.2850395,2.16154166 C19.2324689,5.36517202 19.2686112,8.56962068 19.2694326,11.773251 C19.2694326,14.7731256 19.2776468,17.7721819 19.2669684,20.7720564 C19.2579328,23.2081248 19.0476504,23.410244 16.5275481,23.4192453 C14.3379832,23.4271009 12.1463155,23.468474 9.95759183,23.4373656 L9.81338222,23.4344346 C9.76856364,23.4387551 9.72312343,23.4409659 9.67716346,23.4409659 C8.90768211,23.4409659 8.28389423,22.8212427 8.28389423,22.0567754 C8.28389423,21.2923081 8.90768211,20.6725848 9.67716346,20.6725848 L9.642,20.674 L9.64253362,20.6690886 C11.7876709,20.6656961 13.9312779,20.8521924 16.054746,20.5879296 L16.4675847,20.530659 L16.4675847,2.93155856 C12.9642481,2.93155856 9.44694746,2.72534787 5.97071757,3.0133882 C4.06914096,3.1713194 2.81812533,4.79727433 2.77705456,6.76036737 C2.6828656,11.222083 2.72821584,15.6850917 2.7394565,20.3677855 L2.74,20.913 L0.21065723,20.9133136 L0.209644072,25.711202 C0.0552591026,25.2549048 0.0534654644,24.654429 0.0491340779,24.2416331 C-0.0141149065,18.6526688 -0.00836499885,13.0628862 0.0220273703,7.47310352 C0.0458484163,3.2858809 2.94380188,0.227907288 7.17573393,0.0650663065 C10.5246444,-0.0634062267 13.8809477,0.0413357112 17.2339653,0.0225148942 Z" id="形状结合"></path> <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.5 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix>
</g> <feMerge>
<g id="编组-6" fill="#427497"> <feMergeNode in="shadowMatrixOuter1"></feMergeNode>
<path d="M19.2796515,7.71047301 C19.2796515,8.48046919 18.6655184,9.10467443 17.9079467,9.10467443 C17.1503751,9.10467443 16.536242,8.48046919 16.536242,7.71047301 C16.536242,7.70438876 16.5362803,7.69831361 16.5363568,7.6922478 L16.5373057,7.70225534 C16.532813,7.44217878 16.5278999,7.18214774 16.5225344,6.92212099 C16.4814291,4.91205752 15.2293621,3.24719877 13.3261873,3.08548879 C11.2386964,2.90852947 9.13640761,2.91375781 7.03121842,2.94625398 L4.92550309,2.98210165 C4.22356947,2.99325545 3.52175425,3.00170123 2.82049805,3.00170123 L2.82049805,21.021891 C4.19690236,21.2379613 5.58229019,21.2420622 6.97158301,21.2130673 L7.80558667,21.1931298 L8.53591703,21.1759185 C11.2145687,21.1207428 13.9006337,21.191491 16.557885,22.6641271 L16.559,21.413 C16.5761661,20.6622764 17.180207,20.0580137 17.9231037,20.0580137 C18.6756527,20.0580137 19.2857143,20.6780806 19.2857143,21.4429718 C19.2857143,21.4721841 19.2848245,21.5011851 19.2830709,21.5299484 L19.2826266,21.4139472 C19.2751561,22.549879 19.2653122,23.6857843 19.2527476,24.8216567 C19.2453486,25.5430675 19.2453486,26.8242918 18.4807903,26.9758347 C17.716232,27.1273777 16.923722,26.5359501 16.3827764,26.044955 C14.8174871,24.6264316 13.1066851,23.8857497 10.9782533,23.9586448 C8.24228541,24.0533248 5.49974066,23.9896462 2.76048433,23.9795917 C0.238263922,23.9703751 0.0278048523,23.7634198 0.0187616892,21.2690643 C0.00807431458,18.1974125 0.016295372,15.1265985 0.016295372,12.0549467 C0.0171174777,8.77466386 0.0532901303,5.49354316 0.000675362917,2.21326033 C-0.0231657035,0.710111565 0.582726227,0.0138369713 2.0534734,0.0230536025 C5.40930903,0.0423247405 8.76843308,-0.0649233317 12.1201582,0.0666231318 C16.355647,0.233360369 19.256036,3.36450135 19.2798771,7.65191061 Z" id="形状结合"></path> <feMergeNode in="SourceGraphic"></feMergeNode>
</feMerge>
</filter>
</defs>
<g id="🪁login" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="登录定" transform="translate(-912.000000, -321.000000)">
<g id="编组-29备份-2" transform="translate(-92.000000, 0.483548)">
<g id="编组-3" transform="translate(845.000000, 261.000000)">
<g id="logo" transform="translate(77.000000, 70.000000)">
<g id="编组-2" filter="url(#filter-1)" transform="translate(92.000000, 0.000000)">
<g id="编组-6" transform="translate(35.050168, 0.000000)" fill="#07C8EA">
<path d="M27.0984325,0.0122014594 L31.8461546,0.0441807494 C33.4287159,0.0529564615 35.0111814,0.057058831 36.5933025,0.0481199837 C39.7135537,0.0288820298 40.9989786,1.482222 40.9483988,4.6197574 C40.8553785,10.3255597 40.893168,16.0325764 40.9093577,21.7387835 L40.9152603,25.1623944 L40.9214617,37.9840697 L40.9100279,44.3951016 C40.8908425,49.6015915 40.4443448,50.033571 35.0933494,50.052809 C30.3405147,50.0699729 25.5830136,50.1620025 20.8322952,50.0868551 L20.7215855,50.0942095 L20.7215855,50.0942095 L20.5477593,50.0992315 C18.9139006,50.0992315 17.5893964,48.7747273 17.5893964,47.1408687 C17.5893964,45.50701 18.9139006,44.1825058 20.5477593,44.1825058 L20.474,44.184 L20.4742959,44.1750333 C21.1471703,44.1739628 21.8199738,44.181749 22.4925791,44.1939776 L23.5363069,44.2159125 C27.0892892,44.2985782 30.6348941,44.4415229 34.1543247,43.9933811 L34.9660278,43.8791747 L34.9660278,6.26547692 C33.1063476,6.26547692 31.2448143,6.23793166 29.3832537,6.20623276 L26.5911206,6.15849312 C21.9382921,6.0834815 17.2909993,6.05560833 12.6777715,6.44036741 C8.6401071,6.77790605 5.98379485,10.2529801 5.89658827,14.448603 C5.6888441,24.353954 5.80079615,34.2622872 5.81918245,44.6967563 L0.447293679,44.6970037 L0.446704038,54.9559323 C0.117345075,53.9801448 0.113539117,52.6941057 0.104327596,51.8104584 C-0.0299705283,39.8654379 -0.0177616079,27.9186685 0.0467712572,15.9718991 C0.0973510704,7.02275274 6.25064696,0.487095115 15.2364124,0.139063039 C19.1868702,-0.0134803334 23.1421729,-0.0121848483 27.0984325,0.0122014594 Z" id="形状结合"></path>
</g>
<g id="编组-6" fill="#427497">
<path d="M25.7134192,0.139063039 C34.6991847,0.487095115 40.8524806,7.02275274 40.9030604,15.9718991 L40.904,16.078 L40.902,16.078 L40.9025818,16.0941369 C40.9025818,17.6439559 39.6910759,18.9108125 38.1634453,18.9993255 L37.9924532,19.0042656 C36.3852335,19.0042656 35.0823245,17.7013566 35.0823245,16.0941369 C35.0823245,16.0780245 35.0824554,16.0619426 35.0827163,16.0458923 L35.0846058,16.0783793 C35.0750677,15.535054 35.0646363,14.991824 35.0532433,14.448603 C34.9660368,10.2529801 32.3097245,6.77790605 28.2720601,6.44036741 C23.6588323,6.05560833 19.0115395,6.0834815 14.358711,6.15849312 L11.566578,6.20623276 C9.70501736,6.23793166 7.84348402,6.26547692 5.98380382,6.26547692 L5.98380382,43.8791747 C9.76950351,44.4638711 13.587236,44.3049371 17.4135248,44.2159125 L18.4572525,44.1939776 C24.024744,44.0927552 29.6058224,44.2959137 35.128241,47.3070283 C35.128241,46.4331109 35.1291226,45.5631201 35.1306492,44.6967563 C35.1675419,43.1280395 36.4488408,41.8672653 38.0246093,41.8672653 C39.6211734,41.8672653 40.9154443,43.1615363 40.9154443,44.7581003 C40.9154443,44.8307331 40.9127656,44.9027403 40.9075017,44.9740284 L40.9088955,44.6972456 C40.8930463,47.0683764 40.8721613,49.4394518 40.845504,51.8104584 C40.8298068,53.3162655 40.8298068,55.990576 39.2077646,56.3068929 C37.5857223,56.6232099 35.9043795,55.3887179 34.756741,54.3638596 C31.4359146,51.4029636 27.806377,49.8569316 23.2908206,50.0090864 C17.486351,50.2067126 11.6679283,50.0737959 5.85648222,50.052809 C0.505486811,50.033571 0.0589891496,49.6015915 0.0398037033,44.3951016 C0.0171299939,37.9836163 0.0345713088,31.5738798 0.0345713088,25.1623944 C0.0363154403,18.3154317 0.113057226,11.4667201 0.00143281049,4.6197574 C-0.0491470027,1.482222 1.2362779,0.0288820298 4.35652914,0.0481199837 C5.93865019,0.057058831 7.52111576,0.0529564615 9.10367704,0.0441807494 L13.8513991,0.0122014594 C17.8076588,-0.0121848483 21.7629614,-0.0134803334 25.7134192,0.139063039 Z" id="形状结合"></path>
</g>
</g>
</g>
</g> </g>
</g> </g>
</g> </g>
</g> </g>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

View File

@@ -5,6 +5,9 @@
</template> </template>
<script> <script>
import { storageKey } from '@/utils/constants' import { storageKey } from '@/utils/constants'
import router from '@/router'
import { post } from '@/utils/http'
import { api } from '@/utils/api'
const dayjs = require('dayjs') const dayjs = require('dayjs')
const utc = require('dayjs/plugin/utc') const utc = require('dayjs/plugin/utc')
const timezone = require('dayjs/plugin/timezone') const timezone = require('dayjs/plugin/timezone')
@@ -26,7 +29,37 @@ export default {
} else { } else {
window.$dayJs.tz.setDefault() window.$dayJs.tz.setDefault()
} }
} },
mounted () {
this.loginAlready()
},
methods: {
/**
* 已经登录判断
* 如果已经登录新打开页面按url打开否则进入首页
*/
loginAlready () {
// 登录判断在router/index.js下操作更合适但该文件内引入post等方法会导致路由报错
// 目前不知道其原因后续解决该问题后将登录操作移入router
const url = window.location.href
const currentPath = url.match(/#(\S*)/)[1]
if (currentPath === '/' || currentPath === '/login') {
if (localStorage.getItem(storageKey.token) !== null) {
// 刚进入会请求失败,故采用延时,请求成功清除延时器,避免内存泄漏
const timer = setTimeout(() => {
post(api.permissions, { token: localStorage.getItem(storageKey.token) }).then(res => {
if (res.code === 200) {
router.push({
path: '/panel/networkOverview'
})
clearTimeout(timer)
}
})
}, 10)
}
}
}
}
} }
</script> </script>

View File

@@ -2,12 +2,12 @@
<div class="logins"> <div class="logins">
<div class="inside"> <div class="inside">
<div class="title"> <div class="title">
<img src="../public/images/cion.png" /> <img src="../public/images/logo-title.svg" />
</div> </div>
<el-form class="login__box"> <el-form class="login__box">
<el-form-item> <el-form-item>
<el-input <el-input
prefix-icon="el-icon-user" prefix-icon="cn-icon cn-icon-user2"
class="login--input login__input" class="login--input login__input"
v-model="username" v-model="username"
></el-input> ></el-input>
@@ -40,6 +40,7 @@
<script> <script>
import { mapActions } from 'vuex' import { mapActions } from 'vuex'
import { post, get } from '@/utils/http' import { post, get } from '@/utils/http'
import axios from 'axios'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
import { storageKey } from '@/utils/constants' import { storageKey } from '@/utils/constants'
import { api } from '@/utils/api' import { api } from '@/utils/api'
@@ -69,21 +70,21 @@ export default {
return return
} }
this.loading = true this.loading = true
post(api.login, { username: this.username, pin: this.pin }).then( axios.post(api.login, { username: this.username, pin: this.pin }).then(
res => { res => {
if (res.code === 200) { if (res.data.code === 200) {
if (!_.isEmpty(res.data.lang)) { if (!_.isEmpty(res.data.data.lang)) {
localStorage.setItem(storageKey.language, res.data.lang) localStorage.setItem(storageKey.language, res.data.data.lang)
} }
if (!_.isEmpty(res.data.theme)) { if (!_.isEmpty(res.data.data.theme)) {
localStorage.setItem(storageKey.theme, res.data.theme) localStorage.setItem(storageKey.theme, res.data.data.theme)
} }
res.loginSuccessPath = this.$route.query.redirect res.loginSuccessPath = this.$route.query.redirect
this.loginSuccess(res) this.loginSuccess(res)
localStorage.setItem(storageKey.username, this.username) localStorage.setItem(storageKey.username, this.username)
localStorage.setItem(storageKey.userId, res.data.userId) localStorage.setItem(storageKey.userId, res.data.data.userId)
localStorage.setItem(storageKey.token, res.data.token) localStorage.setItem(storageKey.token, res.data.data.token)
} else if (res.code === 518005) { } else if (res.data.code === 518005) {
this.$message.error(this.$t('Incorrect username or password')) this.$message.error(this.$t('Incorrect username or password'))
this.loading = false this.loading = false
this.blockOperation.query = false this.blockOperation.query = false
@@ -97,7 +98,7 @@ export default {
console.error(e) console.error(e)
this.loading = false this.loading = false
this.blockOperation.query = false this.blockOperation.query = false
this.$message.error(this.$t('tip.unknownError')) this.$message.error(this.errorMsgHandler(e))
}) })
}, },
queryAppearance () { queryAppearance () {
@@ -119,7 +120,7 @@ export default {
window.$dayJs.tz.setDefault(data.timezone) window.$dayJs.tz.setDefault(data.timezone)
localStorage.setItem(storageKey.timezoneOffset, window.$dayJs.tz().utcOffset() / 60) localStorage.setItem(storageKey.timezoneOffset, window.$dayJs.tz().utcOffset() / 60)
localStorage.setItem(storageKey.timezoneLocalOffset, dayjs().utcOffset() / 60) localStorage.setItem(storageKey.timezoneLocalOffset, dayjs().utcOffset() / 60)
localStorage.setItem(storageKey.dateFormat, data.dateFormat) localStorage.setItem(storageKey.dateFormat, data.date_format)
localStorage.setItem(storageKey.sysName, data.system_name) localStorage.setItem(storageKey.sysName, data.system_name)
localStorage.setItem(storageKey.sysLogo, data.system_logo) localStorage.setItem(storageKey.sysLogo, data.system_logo)
} }
@@ -136,58 +137,99 @@ export default {
} }
</script> </script>
<style> <style scoped>
.logins{ .logins {
background-color: #000C18; background-color: #000C18;
background-size: auto; background-size: auto;
background-repeat: round; background-repeat: round;
background-image: url('../public/images/bg.png'); background-image: url('../public/images/bg.png');
display: flex; display: flex;
height: 100%; height: 100%;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
margin: auto;
} }
:deep .el-input__inner {
background-color: #0B325C !important;
border: none;
border-radius: 0px;
border-bottom: 1px solid #295688;
font-size: 14px;
line-height: 14px;
}
:deep .el-input__inner:hover {
border-color: #295688;
}
:deep .el-input__inner:focus {
border-color: #295688;
}
.el-button--primary:hover, .el-button--primary:focus, .el-button--primary:active {
background: #21B4ED;
border-color: #21B4ED;
color: #FFFFFF;
}
:deep .el-loading-mask {
background-color: transparent;
}
:deep input {
-webkit-text-fill-color: rgba(231,234,237, .8) !important;
transition: background-color 500000000000000000s ease-in-out 0s !important;
caret-color: #fff ;
}
.inside { .inside {
opacity: 0.78; width: 414px;
background: #051a37; height: 524px;
border-radius: 6px; background: #0B325C;
width: 368px; border: 1px solid rgba(103,179,245,0.65);
height: 400px; box-shadow: 0 2px 4px 0 rgba(0,0,0,0.38);
/* margin-top:340px; */ border-radius: 4px;
}
.inside {
display: flex;
flex-direction: column;
justify-content: space-between;
} }
.inside > div { .inside > div {
display: block; display: block;
} }
.title { .title {
margin-top: 70px; margin-top: 65px;
text-align: center; text-align: center;
} }
.title > img { .title > img {
height: 43px; height: 135px;
width: 248px;
} }
.login--input{ .login__box {
width: 300px; display: flex;
height: 40px; justify-content: center;
flex-direction: column;
align-items: center;
}
:deep .el-form-item {
width: 334px;
margin-bottom: 25px;
}
:deep .el-input__prefix {
color: #6DBBFF;
}
:deep .el-input__prefix i {
width: 17px;
font-size: 17px;
}
.login__box .el-form-item:nth-of-type(3) {
margin-top: 25px;
margin-bottom: 65px;
} }
.login__input:first-of-type{
margin-top: 45.57px;
}
.login__box{
width: 300px;
height: 250px;
margin: auto;
}
.login--button { .login--button {
background: #0091ff; background: #21B4ED;
color: #fff;
border-radius: 4px; border-radius: 4px;
border: 0; border: 0;
font-weight: 400; font-weight: 400;
text-align: center; font-size: 16px;
color: #FFFFFF;
line-height: 22px;
width: 334px;
height: 52px;
} }
</style> </style>

121
src/Test.vue Normal file
View File

@@ -0,0 +1,121 @@
<template>
<span test-id="count">{{count}}</span>
<span test-id="id">{{obj.id}}</span>
<span test-id="title">{{obj.title}}</span>
<button test-id="button" @click="click">click</button>
<span test-id="tab">{{lineTab}}</span>
<el-table
:data="tableData"
class="test-table"
height="100%"
empty-text=" "
>
<template v-for="(item, index) in tableTitles" :key="index">
<el-table-column>
<template #default="scope" :column="item">
<span :test-id="`${item.prop}${scope.$index}`">{{scope.row[item.prop]}}</span>
</template>
</el-table-column>
</template>
</el-table>
</template>
<script>
/* vue-jest的测试示例 */
import { useRoute, useRouter } from 'vue-router'
import axios from 'axios'
import { ref } from 'vue'
import indexedDBUtils from '@/indexedDB'
export default {
name: 'Test',
data () {
return {
count: 0,
obj: { id: 1, title: 'title' },
differentParamData0: null,
differentParamData1: null,
indexedDBValue: null,
tableData: [
{
name: 'a',
age: 10
},
{
name: 'b',
age: 11
}
],
tableTitles: [
{ label: 'Name', prop: 'name' },
{ label: 'Age', prop: 'age' }
],
mergeRequestData0: null,
mergeRequestData1: null,
mergeRequestChildData0: null,
mergeRequestChildData1: null
}
},
methods: {
click () {
this.count++
},
async getObj () {
axios.get('/api/getObjId').then(response => {
this.obj.id = response.data
})
axios.get('/api/getObjTitle').then(response => {
this.obj.title = response.data
})
},
async getCount () {
axios.get('/api/getCount').then(response => {
this.count = response.data
})
},
async differentRequestParam () {
axios.get('/api/differentParam', { params: { name: 0 } }).then(response => {
this.differentParamData0 = response.data
})
axios.get('/api/differentParam', { params: { name: 1 } }).then(response => {
this.differentParamData1 = response.data
})
},
/**
* 同一url不同入参的axios请求内包含多个不同url请求的demo
* @returns {Promise<void>}
*/
async mergeRequest () {
axios.get('/api/differentParam', { params: { name: 0 } }).then(response => {
this.mergeRequestData0 = response.data
})
axios.get('/api/differentParam', { params: { name: 1 } }).then(response => {
this.mergeRequestData1 = response.data
axios.get('/api/getChildId').then(response1 => {
this.mergeRequestChildData0 = response1.data
})
axios.get('/api/getChildTitle').then(response2 => {
this.mergeRequestChildData1 = response2.data
})
})
},
async setIndexedDBValue () {
await indexedDBUtils.selectTable('test').put({ id: 1, name: 'test' })
},
async getIndexedDBValue () {
this.indexedDBValue = await indexedDBUtils.selectTable('test').get(1)
}
},
setup () {
const { query } = useRoute()
const { currentRoute } = useRouter()
const localstorageValue = localStorage.getItem('key')
const lineTab = ref(query.lineTab || '')
const path = currentRoute.value.path
return {
lineTab,
path,
localstorageValue
}
}
}
</script>

View File

@@ -60,3 +60,12 @@ body {
display: none !important; display: none !important;
} }
} }
// 表头单词换行不被拆开
.el-table th > .cell {
word-break: keep-all !important;
}
// 表格内容换行,不对中文生效,避免中文出现省略号
.el-table .cell {
word-break: break-word !important;
}

View File

@@ -1,302 +1,304 @@
.el-drawer.rtl { .common-right-box {
width: 700px !important;
}
.el-drawer__body {
height: 100%; height: 100%;
}
.right-box, .right-sub-box {
display: flex;
flex-direction: column;
padding: 0;
height: 100%;
width: 100%;
.el-date-editor { .el-drawer__body {
.el-input__inner { height: 100%;
padding-left: 32px;
}
} }
}
.right-box__header { .right-box, .right-sub-box {
display: flex; display: flex;
justify-content: space-between; flex-direction: column;
align-items: center; padding: 0;
height: 60px; height: 100%;
padding: 0 20px; width: 100%;
border-bottom: 1px solid $--right-box-border-color;
.header__title { .el-date-editor {
font-size: 16px; .el-input__inner {
font-weight: bold; padding-left: 32px;
color: #333;
}
.header__operation {
i {
color: #999;
font-size: 14px;
}
}
}
.right-box__container {
height: calc(100% - 130px);
padding: 0 30px;
overflow-x: hidden;
overflow-y: auto;
.el-textarea__inner {
padding: 5px 70px 4px 15px;
}
.container__form-width.container__form{
.input-box {
.el-textarea {
.el-textarea__inner {
width: 530px;
height: 32px;
padding: 5px 70px 4px 10px;
}
.el-input__count {
right: -40px;
line-height: 29px;
height: 25px;
}
} }
} }
} }
.el-form-item__content {
.input-box { .right-box__header {
.el-textarea { display: flex;
.el-textarea__inner { justify-content: space-between;
width: 517px; align-items: center;
height: 32px; height: 60px;
padding: 5px 70px 4px 10px; padding: 0 20px;
} border-bottom: 1px solid $--right-box-border-color;
.el-input__count {
right: -40px; .header__title {
line-height: 29px; font-size: 16px;
height: 25px; font-weight: bold;
} color: #333;
}
.header__operation {
i {
color: #999;
font-size: 14px;
} }
} }
} }
.form-row-item {
.input-box { .right-box__container {
.el-textarea { height: calc(100% - 130px);
.el-textarea__inner { padding: 0 30px;
width: 466px; overflow-x: hidden;
height: 32px; overflow-y: auto;
padding: 5px 70px 4px 10px;
} .el-textarea__inner {
.el-input__count { padding: 5px 70px 4px 15px;
right: 0; }
.container__form-width.container__form{
.input-box {
.el-textarea {
.el-textarea__inner {
width: 530px;
height: 32px;
padding: 5px 70px 4px 10px;
}
.el-input__count {
right: -40px;
line-height: 29px;
height: 25px;
}
} }
} }
} }
} .el-form-item__content {
.el-form-item { .input-box {
.el-input__count { .el-textarea {
line-height: 29px; .el-textarea__inner {
height: 25px; width: 517px;
height: 32px;
padding: 5px 70px 4px 10px;
}
.el-input__count {
right: -40px;
line-height: 29px;
height: 25px;
}
}
}
} }
} .form-row-item {
.el-form-item { .input-box {
.el-input--small.not-fixed-height { .el-textarea {
height: 32px; .el-textarea__inner {
width: 466px;
height: 32px;
padding: 5px 70px 4px 10px;
}
.el-input__count {
right: 0;
}
}
}
}
.el-form-item {
.el-input__count { .el-input__count {
line-height: 29px; line-height: 29px;
height: 25px; height: 25px;
} }
} }
}
.el-input__inner, .el-textarea__inner {
padding: 0 10px;
border-radius: $--border-radius-primary;
border: 1px solid $--right-box-border-color;
}
.el-textarea__inner {
padding: 5px 70px 4px 15px;
}
.el-form {
padding-top: 20px;
.el-form-item { .el-form-item {
margin-bottom: 16px; .el-input--small.not-fixed-height {
.el-form-item__label{ height: 32px;
padding-bottom: 6px; .el-input__count {
font-size: 14px; line-height: 29px;
line-height: 16px; height: 25px;
color: #666; }
}
.el-input__inner:hover {
border-color: darken($--right-box-border-color, 10%);
}
.el-input__inner:focus {
border-color: darken($--right-box-border-color, 20%);
} }
} }
.el-form-item.is-error .el-input__inner, .el-form-item.is-error .el-input__inner:focus, .el-form-item.is-error .el-textarea__inner, .el-form-item.is-error .el-textarea__inner:focus, .el-message-box__input input.invalid, .el-message-box__input input.invalid:focus { .el-input__inner, .el-textarea__inner {
border-color: #F56C6C
}
.form__sub-title {
display: flex;
justify-content: space-between;
padding: 0 10px; padding: 0 10px;
margin-bottom: 20px;
line-height: 32px;
font-size: 14px;
font-weight: bold;
color: #555;
background-color: #F6F6F6;
}
/* 虚线框类型的form-item */
.form__dotted-item {
padding: 10px 10px 6px 10px;
margin-bottom: 10px;
border: 1px dashed $--border-color-primary;
border-radius: $--border-radius-primary; border-radius: $--border-radius-primary;
border: 1px solid $--right-box-border-color;
}
.el-textarea__inner {
padding: 5px 70px 4px 15px;
}
.el-form {
padding-top: 20px;
.el-form-item { .el-form-item {
margin-bottom: 0; margin-bottom: 16px;
.el-form-item__label{
.el-form-item__label { padding-bottom: 6px;
width: 100%; font-size: 14px;
line-height: 16px;
color: #666;
} }
.form__labels-label {
display: flex; .el-input__inner:hover {
justify-content: space-between; border-color: darken($--right-box-border-color, 10%);
}
.el-input__inner:focus {
border-color: darken($--right-box-border-color, 20%);
} }
} }
.el-form-item.is-error .el-input__inner, .el-form-item.is-error .el-input__inner:focus, .el-form-item.is-error .el-textarea__inner, .el-form-item.is-error .el-textarea__inner:focus, .el-message-box__input input.invalid, .el-message-box__input input.invalid:focus {
border-color: #F56C6C
}
.form__sub-title {
display: flex;
justify-content: space-between;
padding: 0 10px;
margin-bottom: 20px;
line-height: 32px;
font-size: 14px;
font-weight: bold;
color: #555;
background-color: #F6F6F6;
}
/* 虚线框类型的form-item */
.form__dotted-item {
padding: 10px 10px 6px 10px;
margin-bottom: 10px;
border: 1px dashed $--border-color-primary;
border-radius: $--border-radius-primary;
.el-form-item {
margin-bottom: 0;
.el-form-item__label {
width: 100%;
}
.form__labels-label {
display: flex;
justify-content: space-between;
}
}
}
.form__create-btn {
margin-bottom: 20px;
width: 300px;
height: 28px;
border: 1px solid lighten($--color-primary, 60%);
border-radius: $--border-radius-primary;
background-color: lighten($--color-primary, 95%);
i {
color: $--color-primary;
}
}
.form__flex-container {
display: flex;
justify-content: center;
align-items: center;
}
.one-third-form-item-left{
display: inline-block;
width: calc(50% - 5px);
}
.one-third-form-item-right{
display: inline-block;
width: calc(50% - 5px);
}
.form-item--half-width-other-two{
display: inline-block;
width: calc(50% - 10px);
}
.form-item--half-width-other{
display: inline-block;
width: calc(50% - 10px);
}
} }
.form__create-btn { }
margin-bottom: 20px;
.right-box__footer {
display: flex;
align-items: center;
justify-content: center;
height: 70px;
box-shadow: -3px 0 8px -3px rgba(205,205,205,0.77);
.footer__btn {
margin: 0 15px;
height: 30px;
min-width: 74px;
padding: 0 15px;
color: white;
background-color: $--color-primary;
border: none;
border-radius: 4px;
outline: none;
font-size: 14px;
cursor: pointer;
transition: background-color linear .2s, color linear .1s;
}
.footer__btn:hover:not(.footer__btn--disabled) {
background-color: lighten($--color-primary, 10%);
}
.footer__btn--light {
background-color: white;
border: 1px solid $--border-color-primary;
color: #333;
}
.footer__btn.footer__btn--light:hover:not(.footer__btn--disabled) {
background-color: white;
border-color: lighten($--color-primary, 40%);
color: $--color-primary;
}
.footer__btn--disabled {
opacity: .6;
cursor: default;
}
}
/* 隐藏label新增按钮处级联选择器的input */
.hide-casc-input {
position: relative;
.hide-input {
position: absolute;
top: 0;
width: 300px; width: 300px;
height: 28px; opacity: 0;
border: 1px solid lighten($--color-primary, 60%); }
border-radius: $--border-radius-primary; }
background-color: lighten($--color-primary, 95%); .label__multi-text {
display: flex;
justify-content: space-between;
}
.right-box__select {
width: 100%;
}
.el-select-last.right-box-select-dropdown {
left: 1698px;
}
.limit-height .el-cascader-menu {
max-height: 200px;
overflow: auto;
}
i { .form-items--half-width-group {
color: $--color-primary; display: flex;
justify-content: space-between;
flex-wrap: wrap;
.form-item--half-width {
width: calc(50% - 10px);
.el-select {
width: 100%;
} }
} }
.form__flex-container {
display: flex;
justify-content: center;
align-items: center;
}
.one-third-form-item-left{
display: inline-block;
width: calc(50% - 5px);
}
.one-third-form-item-right{
display: inline-block;
width: calc(50% - 5px);
}
.form-item--half-width-other-two{
display: inline-block;
width: calc(50% - 10px);
}
.form-item--half-width-other{
display: inline-block;
width: calc(50% - 10px);
}
} }
} .cn-icon-minus-position {
display: inline-flex;
.right-box__footer { flex-direction: column;
display: flex;
align-items: center;
justify-content: center;
height: 70px;
box-shadow: -3px 0 8px -3px rgba(205,205,205,0.77);
.footer__btn {
margin: 0 15px;
height: 30px;
min-width: 74px;
padding: 0 15px;
color: white;
background-color: $--color-primary;
border: none;
border-radius: 4px;
outline: none;
font-size: 14px;
cursor: pointer;
transition: background-color linear .2s, color linear .1s;
}
.footer__btn:hover:not(.footer__btn--disabled) {
background-color: lighten($--color-primary, 10%);
}
.footer__btn--light {
background-color: white;
border: 1px solid $--border-color-primary;
color: #333;
}
.footer__btn.footer__btn--light:hover:not(.footer__btn--disabled) {
background-color: white;
border-color: lighten($--color-primary, 40%);
color: $--color-primary;
}
.footer__btn--disabled {
opacity: .6;
cursor: default;
}
}
/* 隐藏label新增按钮处级联选择器的input */
.hide-casc-input {
position: relative;
.hide-input {
position: absolute; position: absolute;
top: 0; right: 0;
width: 300px; top: 50%;
opacity: 0; height: 100%;
transform: translateY(-50%);
justify-content: space-between;
}
.form-item--end-with-btn { // 末尾留出btn宽度空间的form item
}
.el-form-item__content .el-autocomplete .el-input-group {
vertical-align: unset;
} }
} }
.label__multi-text {
display: flex;
justify-content: space-between;
}
.right-box__select {
width: 100%;
}
.el-select-last.right-box-select-dropdown {
left: 1698px;
}
.limit-height .el-cascader-menu {
max-height: 200px;
overflow: auto;
}
.form-items--half-width-group {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
.form-item--half-width {
width: calc(50% - 10px);
.el-select {
width: 100%;
}
}
}
.cn-icon-minus-position {
display: inline-flex;
flex-direction: column;
position: absolute;
right: 0;
top: 50%;
height: 100%;
transform: translateY(-50%);
justify-content: space-between;
}
.form-item--end-with-btn { // 末尾留出btn宽度空间的form item
}
.el-form-item__content .el-autocomplete .el-input-group {
vertical-align: unset;
}

View File

@@ -14,9 +14,8 @@
z-index: 0; z-index: 0;
} }
.main-container { .main-container {
padding: 10px; padding: 0;
height: 100%; height: 100%;
background-color: #f6f6f6;
&>div { &>div {
background-color: white; background-color: white;
} }
@@ -36,7 +35,7 @@
align-items : center; align-items : center;
position: relative; position: relative;
justify-content: space-between; justify-content: space-between;
padding: 14px 20px; padding: 12px 20px;
&.top-tools--sub { &.top-tools--sub {
align-items: center; align-items: center;
@@ -50,6 +49,12 @@
.top-tool-btn { .top-tool-btn {
border-left: none; border-left: none;
} }
.top-tool-btn--search:hover {
border-left: none !important;
}
.top-tool-btn--search:focus {
border-left: none !important;
}
} }
.top-tool-right { .top-tool-right {
@@ -74,17 +79,28 @@
} }
.top-tool-btn { .top-tool-btn {
cursor: pointer; cursor: pointer;
height: 33px; height: 28px;
width: 36px; width: 72px;
border: 1px solid $--border-color-primary; border: 1px solid $--border-color-primary;
outline: none; outline: none;
border-radius: $--button-border-radius; border-radius: $--button-border-radius;
background-color: $--button-gray-background-color; background-color: $--button-gray-background-color;
transition: background-color linear .1s; transition: background-color linear .1s;
font-size:12px;
font-weight: 500;
font-family: NotoSansHans-Medium !important;
i { i {
font-size: 14px; font-size: 14px;
color: $--button-gray-color; color: #575757;
margin-right:4px;
}
}
.top-tool-btn:disabled {
cursor: not-allowed;
opacity: 0.66;
i {
} }
} }
@@ -94,13 +110,14 @@
color: #666; color: #666;
} }
.top-tool-btn:hover:not(.cn-btn-disabled) { .top-tool-btn:hover:not(.cn-btn-disabled) {
border: 1px solid $--border-color-primary;
background-color: $--button-gray-hover-background-color; background-color: $--button-gray-hover-background-color;
} }
.top-tool-btn:focus:not(.cn-btn-disabled), .top-tool-btn.is-focus { .top-tool-btn:focus:not(.cn-btn-disabled), .top-tool-btn.is-focus {
background-color: $--button-gray-hover-background-color; background-color: $--button-gray-active-background-color;
border: 1px solid $--color-primary !important; border: 1px solid $--border-color-primary;
i { i {
color: $--button-gray-active-color; color: #575757;
} }
} }
.top-tool-btn--delete.top-tool-btn:focus:not(.cn-btn-disabled) { .top-tool-btn--delete.top-tool-btn:focus:not(.cn-btn-disabled) {
@@ -111,6 +128,56 @@
color: #F0745A; color: #F0745A;
} }
} }
.top-tool-btn--create {
background-color: #38ACD2 !important;
border-color: #2E88A6 !important;
color:#FFFFFF;
i {
color: #FFFFFF;
}
}
.top-tool-btn--create:hover {
background-color: #57B8D9 !important;
border-color: #2E88A6 !important;
color:#FFFFFF;
i {
color: #FFFFFF;
}
}
.top-tool-btn--create:focus {
background-color: #31A5CD !important;
border-color: #2E88A6 !important;
color:#FFFFFF !important;
i {
color: #FFFFFF !important;
}
}
.top-tool-btn--create:disabled {
opacity: 0.66;
background-color: #38ACD2 !important;
border-color: #2E88A6 !important;
color:#FFFFFF;
i {
color: #FFFFFF;
}
}
.btn-customize {
color:$blue;
font-size: 12px;
.icon-gear{
color:#2C72C6;
width:12px;
height:12px;
margin-right:2px;
font-size:12px;
}
}
.btn-customize:hover {
cursor:pointer;
}
.top-tool-btn--dropdown { .top-tool-btn--dropdown {
position: relative; position: relative;
width: auto; width: auto;
@@ -130,6 +197,7 @@
width: calc(100% - 40px); width: calc(100% - 40px);
border: 1px solid $--right-box-border-color; border: 1px solid $--right-box-border-color;
border-bottom: none; border-bottom: none;
border-radius:4px;
.caret-wrapper { .caret-wrapper {
height: 23px; height: 23px;
@@ -152,7 +220,8 @@
th { th {
border-color: $--right-box-border-color; border-color: $--right-box-border-color;
padding: 8px 0; padding: 8px 0;
background: #F9F9F9; background: #FFF;
border-right:0px;
} }
.el-table__header th:first-of-type { .el-table__header th:first-of-type {
border-left: none; border-left: none;
@@ -244,7 +313,7 @@
border-right: none !important; border-right: none !important;
} }
/* 最后一列用box-shadow模拟边框 */ /* 最后一列用box-shadow模拟边框 */
.el-table:not(.no-operation):not(.chart-table).el-table--border .el-table__body-wrapper td:nth-last-child(2) { /*.el-table:not(.no-operation):not(.chart-table).el-table--border .el-table__body-wrapper td:nth-last-child(2) {
box-shadow: 1px 0 $--right-box-border-color; box-shadow: 1px 0 $--right-box-border-color;
} }
.el-table:not(.no-operation):not(.chart-table).el-table--border .el-table__header-wrapper th:nth-last-child(3) { .el-table:not(.no-operation):not(.chart-table).el-table--border .el-table__header-wrapper th:nth-last-child(3) {
@@ -263,7 +332,7 @@
th:last-of-type { th:last-of-type {
border-right: none !important; border-right: none !important;
} }
} }*/
.el-table--border:not(.chart-table)::after, .el-table--group:not(.chart-table)::after { .el-table--border:not(.chart-table)::after, .el-table--group:not(.chart-table)::after {
width: 0; width: 0;
} }

View File

@@ -42,6 +42,10 @@
color: #A6AAAE; color: #A6AAAE;
font-size: 20px; font-size: 20px;
} }
.cn-icon-filter {
color: #A6AAAE;
font-size: 20px;
}
.el-icon-search { .el-icon-search {
color: #3976CB; color: #3976CB;
font-size: 32px; font-size: 32px;
@@ -64,6 +68,10 @@
color: #A6AAAE; color: #A6AAAE;
font-size: 14px; font-size: 14px;
} }
.cn-icon-filter {
color: #A6AAAE;
font-size: 14px;
}
.el-icon-search { .el-icon-search {
color: white; color: white;
font-size: 16px; font-size: 16px;

View File

@@ -10,9 +10,9 @@
right: 10px; right: 10px;
.search__suffix { .search__suffix {
margin-left: 8px; // margin-left: 8px;
.cn-icon-search-advance, .cn-icon-search-normal { .cn-icon-search-advance, .cn-icon-search-normal, .cn-icon-filter {
color: #A6AAAE; color: #A6AAAE;
font-size: 18px; font-size: 18px;
} }

View File

@@ -2,7 +2,6 @@
.CodeMirror { .CodeMirror {
/* Set height, width, borders, and global font properties here */ /* Set height, width, borders, and global font properties here */
font-family: monospace;
height: 40px; height: 40px;
color: black; color: black;
direction: ltr; direction: ltr;

View File

@@ -1,7 +1,7 @@
.date-range-box { .date-range-box {
font-size: 14px; font-size: 14px;
border-radius: 2px; border-radius: 2px;
margin-right: 10px; //margin-right: 10px;
display: flex; display: flex;
cursor: pointer; cursor: pointer;
@@ -199,4 +199,16 @@
text-align: right; text-align: right;
} }
} }
.el-input__inner {
visibility: hidden !important;
}
}
.my-date-picker {
.el-popper__arrow {
position: absolute;
top: 20px !important;
left: 642px !important; // element上样式设定是left添加right不生效
}
} }

View File

@@ -0,0 +1,64 @@
.chart-tabs {
position: relative;
.chart-tabs__active-bar {
position: absolute;
height: 3px;
top: 0;
background-color: #046EC9;
border-radius: 5px 5px 0 0;
transition: all linear .2s;
}
.el-tabs.el-tabs--border-card {
position: absolute;
top: 3px;
width: 100%;
border: none;
box-shadow: none;
&>.el-tabs__header {
background-color: white;
border-color: #E2E5EC;
.el-tabs__nav-wrap {
padding-left: 27px;
}
.el-tabs__item:first-child {
margin-left: 0;
}
}
.el-tabs__content {
display: none;
}
}
.el-tabs__nav {
z-index: 1;
}
.el-tabs__item.is-top {
height: 35px;
line-height: 35px;
.chart-tabs__label {
color: #353636;
font-size: 14px;
font-weight: bold;
box-sizing: border-box;
i {
padding-right: 7px;
font-size: 16px;
font-weight: normal;
}
}
&.is-active {
.chart-tabs__label {
color: #353636;
i {
color: #046EC9;
}
}
}
}
}

View File

@@ -144,7 +144,6 @@
text-align: -webkit-match-parent; text-align: -webkit-match-parent;
box-sizing: border-box; box-sizing: border-box;
cursor: pointer; cursor: pointer;
font-family: Helvetica;
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
} }

View File

@@ -1,5 +1,5 @@
.pop-custom { .pop-custom {
padding: 0 12px 12px 12px; padding: 12px;
border: 1px solid #EBEEF5; border: 1px solid #EBEEF5;
position: absolute; position: absolute;
top: 55px; top: 55px;
@@ -11,7 +11,9 @@
z-index: 999999; z-index: 999999;
box-shadow: 0 0 10px #CCC; box-shadow: 0 0 10px #CCC;
box-sizing: border-box; box-sizing: border-box;
.pop-title {
margin: 10px 0;
}
.el-button--mini{ .el-button--mini{
padding: 5px 7px; padding: 5px 7px;
} }
@@ -23,7 +25,6 @@
top: 33px; top: 33px;
} }
.custom-labels { .custom-labels {
margin-top: 12px;
width: 100%; width: 100%;
height: 300px; height: 300px;
} }
@@ -41,8 +42,7 @@
font-size: 14px; font-size: 14px;
} }
.custom-label:hover{ .custom-label:hover{
color: #cccccc; background-color: rgba(220, 223, 230, .5)
background-color: #DCDFE6;
} }
.custom-title{ .custom-title{
padding: 2px 0 2px 2px; padding: 2px 0 2px 2px;
@@ -57,6 +57,14 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
.custom-bottom-btns-right {
.el-button:nth-of-type(1) {
margin-right: 3px;
}
.el-button .top-tool-btn-save {
color: #fff;
}
}
} }
.unshow { .unshow {
display: none; display: none;
@@ -70,12 +78,79 @@
border-radius: 2px; border-radius: 2px;
background-color: #F9F9F9; background-color: #F9F9F9;
transition: background-color linear .1s; transition: background-color linear .1s;
padding-left:10px;
}
.list-page .top-tools .top-tool-btn--search{
width:28px !important;
height:28px !important;
padding:unset !important;
i {
font-size: 14px;
color: #575757;
margin-right:unset !important;
}
} }
.list-page { .list-page {
.el-input--small{
width: 214px !important;
line-height: 27px;
}
.el-input--small .el-input__inner { .el-input--small .el-input__inner {
height: 32.4px; height: 28px;
line-height: 32px; border-radius: 2px 0px 0px 2px;
border-radius: 0px; }
}
.list {
list-style: none;
padding-inline-start: 0 !important;
max-height: 358px !important;
overflow: auto;
margin: 0 0;
.drag-move {
transition: transform 0.3s;
}
.list-item:last-child {
margin-bottom: 6px;
}
.list-item {
width: 100%;
color: #575757;
margin-bottom: 0;
height: 24px;
line-height: 24px;
text-align: left;
font-weight: 400;
font-size: 12px;
.icon-drag {
cursor: move;
margin-left: 6px;
margin-right: 3px;
}
.el-checkbox__input.is-checked .el-checkbox__inner {
background-color: #38ACD2;
border-color: #38ACD2;
border-radius: 2px;
}
.el-checkbox__input .el-checkbox__inner {
background-color: #F2F7F9;
border: 1px solid rgba(0, 0, 0, 0.15);
border-radius: 2px;
}
.el-checkbox__input.is-checked + .el-checkbox__label, .el-checkbox__input + .el-checkbox__label {
font-size: 12px;
color: #575757;
font-weight: 400;
}
} }
} }

View File

@@ -6,9 +6,9 @@
@import './components/common/pagination'; @import './components/common/pagination';
// @import './components/entities/entities'; // @import './components/entities/entities';
@import './components/layout/layout'; @import './components/layout/layout';
@import 'components/rightBox/settings/chart-box'; @import 'components/rightBox/administration/chart-box';
@import 'components/setting/galaxy-proxy-debug'; @import 'components/setting/galaxy-proxy-debug';
@import 'components/table/settings/galaxy-proxy-table'; @import 'components/table/administration/galaxy-proxy-table';
@import './components/table/common'; @import './components/table/common';
@import './views/charts/chart'; @import './views/charts/chart';
@import 'views/entityExplorer/entity-explorer'; @import 'views/entityExplorer/entity-explorer';
@@ -42,8 +42,8 @@
@import './views/chartHeader'; @import './views/chartHeader';
@import './views/charts/chartMap'; @import './views/charts/chartMap';
@import 'views/charts/chartRelationShipList'; @import 'views/charts/chartRelationShipList';
@import './views/report/builtinReport'; @import 'views/report/report';
@import './components/rightBox/report/builtinReportBox'; @import 'components/rightBox/report/reportBox';
@import './views/charts2/panel'; @import './views/charts2/panel';
@import './views/charts2/networkOverviewLine'; @import './views/charts2/networkOverviewLine';
@@ -65,6 +65,8 @@
@import './views/charts2/linkBlock'; @import './views/charts2/linkBlock';
@import './views/charts2/linkTrafficSankey'; @import './views/charts2/linkTrafficSankey';
@import './views/charts2/linkDirectionGrid'; @import './views/charts2/linkDirectionGrid';
@import './views/charts2/domainNameResolution.scss';
@import './views/charts2/informationAggregation.scss';
@import 'views/charts2/linkTrafficLine'; @import 'views/charts2/linkTrafficLine';
@import 'views/charts2/dnsTrafficLine'; @import 'views/charts2/dnsTrafficLine';
@import 'views/charts2/dnsRecentEvents'; @import 'views/charts2/dnsRecentEvents';
@@ -73,3 +75,16 @@
@import './views/charts2/dnsEventChartByPie'; @import './views/charts2/dnsEventChartByPie';
//@import '../chart'; //@import '../chart';
@import './components/common/chart-error'; @import './components/common/chart-error';
@import './components/common/chart-tab';
@import 'views/administration/AdministrationTabs';
@import 'views/administration/Appearance.scss';
@import 'views/setting/knowledgeBase';
@import 'views/charts2/entityDetailLine';
@import 'views/charts2/entityDetailTabs';
@import 'views/charts2/digitalCertificate';
@import 'views/charts2/entityDetailBasicInfo';
@import "views/charts2/graphRightListBlock";
@import "views/charts2/graphRightDetailBlock";

View File

@@ -0,0 +1,17 @@
.administration {
.administration-tabs {
height: 18px;
}
.administration-container {
height: calc(100% - 26px);
flex-direction: column;
.list-page {
.main-container {
padding: 0px;
.cn-pagination {
height: 34px;
}
}
}
}
}

View File

@@ -0,0 +1,62 @@
.appearance{
height: 100%;
display:flex;
flex-direction:column;
.appearance-form {
padding-top:40px;
padding-left:100px;
background-color: white;
position: relative;
display: flex;
flex-direction: column;
height: 100%;
.el-input {
width:600px;
}
.el-form .el-form-item .el-form-item__label {
padding-bottom: 6px;
font-size: 14px;
line-height: 16px;
}
}
.edit-appearance-base__footer {
display: flex;
align-items: center;
justify-content: flex-start;
height: 100px;
margin-top: 3px;
padding-left:200px;
.footer__btn {
margin: 0 10px;
height: 30px;
min-width: 74px;
padding: 0 15px;
color: white;
background-color: #38ACD2;
border: none;
border-radius: 4px;
outline: none;
font-size: 14px;
cursor: pointer;
transition: background-color linear .2s, color linear .1s;
}
.footer__btn:hover:not(.footer__btn--disabled) {
background-color: lighten(#38ACD2, 10%);
}
.footer__btn--light {
background-color: #F5F6F7;
border: 1px solid $--border-color-primary;
color: #333;
}
.footer__btn.footer__btn--light:hover:not(.footer__btn--disabled) {
background-color: white;
border-color: lighten(#38ACD2, 40%);
color: #38ACD2;
}
.footer__btn--disabled {
opacity: .6;
cursor: default;
}
}
}

View File

@@ -68,7 +68,6 @@
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
align-items: center; align-items: center;
font-family: Roboto-Regular;
font-size: 12px; font-size: 12px;
font-weight: 400; font-weight: 400;
} }

View File

@@ -50,7 +50,6 @@
.text-box__title { .text-box__title {
font-size: 16px; font-size: 16px;
line-height: 19px; line-height: 19px;
font-family: Roboto-Regular;
color: #333333; color: #333333;
font-weight: 400; font-weight: 400;
div { div {
@@ -86,7 +85,6 @@
} }
.time-box__start-time { .time-box__start-time {
font-family: PingFangSC-Regular;
font-size: 12px; font-size: 12px;
color: #999999; color: #999999;
line-height: 14px; line-height: 14px;
@@ -109,7 +107,6 @@
} }
.time-box__start-time { .time-box__start-time {
font-family: PingFangSC-Regular;
font-size: 12px; font-size: 12px;
color: #999999; color: #999999;
font-weight: 400; font-weight: 400;
@@ -118,7 +115,6 @@
.text__type { .text__type {
width: auto; width: auto;
font-family: Roboto-Regular;
line-height: 16px; line-height: 16px;
font-size: 12px; font-size: 12px;
border: 1px solid; border: 1px solid;
@@ -138,7 +134,6 @@
width: 5px; width: 5px;
height: 5px; height: 5px;
border-radius: 50%; border-radius: 50%;
font-family: Roboto-Black;
font-size: 12px; font-size: 12px;
color: #666666; color: #666666;
line-height: 17px; line-height: 17px;

View File

@@ -306,7 +306,6 @@
display: flex; display: flex;
align-items: center; align-items: center;
margin: 16px 0 27px 0; margin: 16px 0 27px 0;
font-family: PingFangSC-Medium;
font-size: 16px; font-size: 16px;
color: #333333; color: #333333;
line-height: 22px; line-height: 22px;
@@ -324,7 +323,6 @@
.content__data__doh { .content__data__doh {
.content__data__doh__count { .content__data__doh__count {
font-family: Roboto-Medium;
font-size: 30px; font-size: 30px;
color: #333333; color: #333333;
font-weight: 500; font-weight: 500;
@@ -332,13 +330,11 @@
.content__data__doh__percent { .content__data__doh__percent {
margin-top: 10px; margin-top: 10px;
font-family: Roboto-Black;
font-size: 14px; font-size: 14px;
color: #666666; color: #666666;
font-weight: 400; font-weight: 400;
span { span {
font-family: Roboto-Medium;
font-size: 14px; font-size: 14px;
color: #FC8157; color: #FC8157;
font-weight: 500; font-weight: 500;

View File

@@ -0,0 +1,70 @@
.digital-certificate {
$font-family: NotoSansSChineseRegular;
.digital-certificate-header {
display: flex;
align-items: center;
.digital-certificate-header__icon {
width: 4px;
height: 16px;
background: #38ACD2;
border-radius: 1px;
margin-right: 6px;
}
.digital-certificate-header-name {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #575757;
font-weight: 600;
}
}
.digital-certificate-body {
height: auto;
min-height: 262px;
padding: 20px;
background: rgba(113, 113, 113, 0.04);
border: 1px solid #E2E5ECFF;
border-radius: 4px;
.digital-certificate-body-tags {
display: flex;
margin-bottom: 20px;
}
.certificate-list-list {
display: flex;
flex-wrap: wrap;
}
.certificate-list-item {
width: 50%;
display: flex;
margin-bottom: 10px;
.certificate-list-item__label {
width: 176px;
font-family: $font-family;
font-size: 14px;
color: #717171;
font-weight: 400;
}
.certificate-list-item__value, .certificate-list-item__value1 {
width: calc(100% - 176px - 75px);
font-family: $font-family;
font-size: 14px;
color: #353636;
font-weight: 400;
}
.certificate-list-item__value1 {
padding-bottom: 2px;
border-bottom: 1px #353636 solid;
word-break: break-word;
}
}
}
}

View File

@@ -7,7 +7,6 @@
flex-direction: column; flex-direction: column;
.dns-mailcious-domain-title { .dns-mailcious-domain-title {
font-family: NotoSansHans-Medium;
font-size: 14px; font-size: 14px;
color: #353636; color: #353636;
margin-bottom: 12px; margin-bottom: 12px;

View File

@@ -0,0 +1,78 @@
.type-data__column {
display:flex;
flex-direction: column;
margin-left:5px;
margin-right:0px;
margin-top:0px;
.type-data {
display:flex;
flex-flow:row wrap;
margin-top:0px;
.type-title {
display:flex;
flex-direction: row;
justify-content: center;
align-items: center;
margin-bottom:15px;
margin-right:10px;
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #575757;
line-height: 20px;
font-weight: 600;
.title-mark {
width: 4px;
height: 16px;
margin-left:0px;
margin-right: 6px;
background: #38ACD2;
border-radius: 1px;
}
.type-title-word {
margin-right: 6px;
}
}
.more{
margin-bottom:20px;
.button {
color:#909399;
cursor: pointer;
}
}
.type-content {
margin-bottom:0px;
display:flex;
flex-flow: row wrap;
width:100%;
.data-item {
display: flex;
justify-content: center;
align-items: center;
background: rgba(119,131,145,0.06);
border: 1px solid rgba(119,131,145,0.36);
border-radius: 2px;
height:28px;
padding:8px 15px;
margin-right:10px;
margin-bottom:15px;
font-size: 12px;
color: #353636;
font-weight: 400;
}
}
.type-error-content {
width:100%;
height: 40px;
margin-bottom: 12px;
position: relative;
.type-error-content__block {
position: absolute;
left: -12px;
top: -12px;
}
}
}
}

View File

@@ -0,0 +1,186 @@
.el-popper.analysis-popper {
top: -5px !important;
padding: 0;
border: 1px solid #C5C5C5;
border-radius: 4px;
box-shadow: -1px 1px 10px -1px rgba(205,205,205,0.85);
.el-popper__arrow {
display: none;
}
.analysis-entry {
display: flex;
flex-direction: column;
.analysis-entry__header {
height: 42px;
line-height: 42px;
background-color: #F7F7F7;
padding-left: 20px;
color: #353636;
border-radius: 4px 4px 0 0;
}
.analysis-entry__body {
display: flex;
height: 134px;
align-items: center;
justify-content: space-evenly;
.analysis-entry-item {
display: flex;
flex-direction: column;
min-width: 70px;
align-items: center;
cursor: pointer;
&:hover {
div i, span {
color: #046ECA;
}
}
div {
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 9px;
height: 46px;
width: 46px;
border-radius: 50%;
background-color: #F5F6F8;
i {
color: #353636;
font-size: 22px;
}
}
span {
font-size: 12px;
color: #353636;
}
}
}
}
}
.entity-detail-basic-info {
position: relative;
padding: 35px 30px 0 30px;
height: 100%;
border: 1px solid #E2E5EC;
border-radius: 4px;
.dividing-line {
height: 1px;
width: 100%;
margin-top: 21px;
background-color: #EFF2F5;
}
.entity-type {
color: #717171;
}
.entity-basic-info {
display: flex;
align-items: center;
justify-content: space-between;
.entity-basic-info__name {
display: flex;
align-items: center;
span {
padding-right: 12px;
font-family: Helvetica-Bold;
font-size: 32px;
color: #353636;
font-weight: bold;
}
div {
display: flex;
justify-content: center;
align-items: center;
height: 28px;
width: 28px;
border-radius: 50%;
background-color: #EFF1F4;
cursor: pointer;
i {
color: #717171;
font-size: 12px;
}
}
}
.analysis-btn {
display: flex;
align-items: center;
justify-content: center;
height: 24px;
padding: 0 10px;
font-size: 12px;
color: #046ECA;
cursor: pointer;
background-color: #FFF;
transition: background-color linear .2s;
&.analysis-btn--active {
background-color: #EBF7FA;
border-radius: 2px;
}
i {
padding-right: 4px;
font-size: 14px;
}
}
}
.entity-tags {
display: flex;
flex-wrap: wrap;
align-items: center;
margin-top: 16px;
margin-bottom: -10px;
.entity-tag {
margin-bottom: 10px;
margin-right: 10px;
&:last-of-type {
margin-right: 0;
}
}
}
.entity-detail-info {
display: flex;
flex-flow: row wrap;
align-content: space-around;
padding: 10px 0;
.detail-card {
display: flex;
padding: 0 12px;
width: 298px;
height: 83px;
align-items: center;
i {
font-size: 22px;
color: #353636;
margin-right: 14px;
}
.detail-card__text {
.detail-card__label {
margin-bottom: 6px;
font-size: 12px;
color: #717171;
}
.detail-card__value {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
color: #222;
line-height: 18px;
font-size: 14px;
}
}
}
}
}

View File

@@ -0,0 +1,68 @@
.entity-detail-line {
height: 100%;
border-radius: 4px;
.line-header-right {
.panel__tools {
display: flex;
align-items: center;
& > .el-select {
width: 162px;
margin-right: 10px;
.select-prefix {
font-size: 14px;
color: #999;
padding: 0 6px 0 3px;
}
.el-input__inner {
font-size: 14px;
color: #353636;
}
.common-select {
top: 32px !important;
}
}
.panel__time {
display: flex;
}
}
.line-select-metric {
margin-right: 20px;
.el-input__inner {
width: 127px;
height: 24px;
line-height: 24px;
padding-left: 4px;
font-size: 12px;
color: #2C72C6;
font-weight: 400;
border-radius: 2px;
}
}
.line-select-reference-line {
margin-left: 0 !important;
line-height: 1;
}
.line-margin-right {
margin-right: 10px;
}
.line-date-right {
margin-right: 20px;
}
.entity-detail-date-time-range {
height: 24px;
line-height: 24px;
border: 1px solid #DCDFE6;
}
}
}

View File

@@ -0,0 +1,102 @@
.entity-detail-tabs {
position: relative;
$tab-border-color: #E2E5EC;
$tab-border-radius: 4px;
height: 100%;
.entity-detail-tabs__active-bar {
position: absolute;
height: 3px;
top: 1px;
background-color: #046EC9;
border-radius: 4px 4px 0 0;
transition: all linear .2s;
z-index: 3;
}
.cn-chart__tabs--border-card {
height: 100%;
border: none;
box-shadow: none;
& > .el-tabs__header {
background-color: #fff;
border-bottom: 1px solid $tab-border-color;
.el-tabs__item {
color: #353636;
user-select: none; // 避免鼠标框选文字
i {
margin-right: 8px;
}
}
.el-tabs__item:not(.is-disabled):not(.is-active):hover {
color: #353636;
}
.el-tabs__item.is-active {
color: #046ECA;
background-color: #FFFFFF;
border-right-color: $tab-border-color;
border-left-color: $tab-border-color;
border-radius: 4px 4px 0 0;
box-shadow: 0 1px $tab-border-color inset;
&:hover {
color: #046ECA;
}
}
.el-tabs__item:first-of-type.is-active {
box-shadow: 1px 1px $tab-border-color inset;
}
}
.el-tabs__content {
height: calc(100% - 39px);
border: 1px solid $tab-border-color;
border-top: none;
padding: 30px 20px 20px 20px; // 根据原型调整上边距为30px但20px更协调
}
.tab-pane--border-card {
position: relative;
height: 100%;
overflow: auto;
}
.tab-pane-warn--icon {
width: 16px;
color: #E48F3E;
margin-left: 10px;
margin-right: 0 !important;
}
}
.entity-detail-event-border {
border: 1px solid #E2E5EC;
border-radius: $tab-border-radius;
margin-bottom: 10px;
}
.entity-detail-event-block {
width: calc(100% - 2px);
}
.entity-detail-event-error {
margin-top: 18px;
margin-left: 8px;
}
.entity-detail-performance {
height: 46px;
border-radius: $tab-border-radius;
}
.entity-detail-security {
height: 70px;
border-radius: $tab-border-radius;
}
}

View File

@@ -0,0 +1,205 @@
$font-size: 12px;
.graph-detail-basic-info {
position: relative;
padding-bottom: 12px;
display: flex;
justify-content: space-between;
//height: 100%;
.graph-detail-header {
display: flex;
flex-direction: column;
.entity-graph-type {
font-size: 12px;
color: #717171;
font-weight: 400;
}
}
.entity-type {
color: #717171;
}
.graph-basic-info {
display: flex;
align-items: center;
justify-content: space-between;
.graph-basic-info-name__block {
display: flex;
align-items: center;
.graph-basic-info-name {
padding-right: 10px;
max-width: 260px;
font-size: 20px;
color: #353636;
font-weight: 700;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.graph-basic-info-icon {
display: flex;
justify-content: center;
align-items: center;
height: 18px;
width: 18px;
border-radius: 50%;
background-color: #EFF1F4;
cursor: pointer;
flex-shrink: 0;
i {
color: #717171;
font-size: 10px;
-webkit-transform: scale(0.8); // 强制给文字进行缩放达到12px以下小字体的效果
}
}
}
}
.graph-detail__icon {
width: 50px;
height: 50px;
overflow: hidden;
display: flex;
justify-content: center;
justify-items: center;
align-items: center;
margin-right: 10px;
border-radius: 50%;
background-color: #F3F7FA;
i {
font-size: 26px;
color: #4E84B4;
}
}
}
.graph-close {
color: #575757;
font-size: 8px;
cursor: pointer;
}
.graph-basic-info__block {
margin-top: 12px;
margin-bottom: 18px;
.graph-header__icon {
width: 3px !important;
height: 14px !important;
}
.graph-basic-info__block-content {
.graph-content-item, .graph-content-relationship-item {
display: flex;
line-height: 24px;
}
.graph-content-item {
.graph-content-item-label, .graph-content-item-value {
width: 130px;
font-family: NotoSansSChineseRegular;
font-size: $font-size;
color: #717171;
font-weight: 400;
padding-right: 10px;
flex-shrink: 0;
}
.graph-content-item-value {
width: 230px;
color: #353636;
font-weight: 400;
overflow-wrap: break-word;
line-height: normal;
margin-top: 0.15rem;
}
}
.graph-content-relationship-item {
justify-content: space-between;
line-height: 24px;
.graph-relationship-item-label, .graph-relationship-item-value {
font-size: $font-size;
color: #353636;
font-weight: 400;
//height: 40px;
display: flex;
align-items: center !important;
padding-top: 1px;
.graph-relationship-item-label-icon {
font-size: 14px;
}
}
.graph-relationship-item-value {
color: #717171;
i {
cursor: pointer;
}
}
}
}
.graph-tag-list {
display: flex;
align-items: flex-start;
flex-wrap: wrap;
margin: 6px 0;
.graph-tag-item {
margin-bottom: 10px;
margin-right: 9px;
padding: 0 8px;
height: 24px;
line-height: 24px;
font-size: 12px;
span {
margin-top: -1px;
}
}
}
}
.padding-b-10 {
padding-bottom: 10px;
}
.padding-b-4 {
padding-bottom: 4px;
}
//修改popover样式
.graph-popover {
width: auto !important;
background: #303133 !important;
color: #fff !important;
font-size: 12px !important;
padding: 10px !important;
}
.graph-popover .el-popper__arrow::before {
background: #303133 !important;
}
.graph-expand-relationship__icon {
font-size: 13px;
}
.graph-basic-info__block-title {
font-size: 13px;
color: #353636;
font-weight: 600;
}

View File

@@ -0,0 +1,154 @@
$font-size: 12px;
.graph-list-header {
display: flex;
justify-content: space-between;
.graph-list-header-title {
display: flex;
align-items: center;
margin-bottom: 10px;
span {
font-size: 16px;
color: #353636;
line-height: 21px;
font-weight: 600;
}
.graph-list-header-icon {
font-size: 21px;
color: #717171;
margin-right: 9px;
}
}
.graph-list-header-number {
font-size: 12px;
color: #717171;
font-weight: 400;
span {
font-weight: bold;
}
}
}
.graph-list-expand-btn-block {
margin-top: 16px;
margin-bottom: 24px;
.graph-list-expand-btn {
height: 28px;
line-height: 28px;
background: #38ACD2;
border-radius: 3px;
font-size: 12px;
color: #FFFFFF;
display: flex;
align-items: center;
justify-content: center;
font-weight: 500;
padding: 14px 10px;
cursor: pointer;
border: 1px solid rgba(46,136,166,0.85);
i {
font-size: 16px;
margin-right: 7px;
}
&.graph-list-expand-btn--disabled {
opacity: .4;
cursor: default;
}
}
}
.graph-list-content-header {
font-size: 14px;
color: #353636;
font-weight: 500;
}
.graph-list-content {
padding: 0 10px;
.graph-list-item-ip {
margin-bottom: 10px;
font-size: $font-size;
color: #353636;
font-weight: 400;
}
.graph-list-item-block {
width: 100%;
background: rgba(247, 247, 247, 1);
border: 1px solid rgba(226, 229, 236, 1);
border-radius: 2px;
padding: 10px 15px;
.graph-list-item, .graph-list-item__app {
display: flex;
.graph-list-item-label, .graph-list-item-label__app {
width: 72px;
//margin-right: 15px;
font-size: $font-size;
color: #717171;
font-weight: 400;
flex-shrink: 0;
}
.graph-list-item-label__app {
width: 83px;
display: flex;
align-items: flex-start;
line-height: 22px;
}
.graph-list-country-flag {
width: 16px;
height: 14px;
margin-right: 5px;
}
.graph-list-item-value {
font-size: $font-size;
color: #353636;
font-weight: 400;
line-height: 18px;
display: flex;
align-items: center;
margin-top: 0.15rem;
}
.graph-list-item-value1 {
display: flex;
align-content: center;
}
}
.graph-list-item {
align-items: center;
}
}
}
.padding-b-20 {
padding-bottom: 20px;
}
.padding-b-16 {
padding-bottom: 16px;
}
.padding-b-12 {
padding-bottom: 12px;
}
.graph-list-dividing-line {
width: 300px;
height: 1px;
background: #ECECEC;
margin: 11px 0;
}

View File

@@ -0,0 +1,70 @@
.information-aggregation__table {
.information-aggregation-tags {
display: flex;
flex-direction: row;
justify-content: left;
align-items: flex-start;
margin-bottom:6px;
padding-top:10px !important;
padding-bottom:4px !important;
}
.information-aggregation__valid {
background: #eff3e9;
border-radius: 10px;
font-size: 12px;
color: #7E9F54;
font-weight: 500;
width:fit-content;
padding-left:10px;
padding-right:10px;
height: 20px;
line-height: 20px;
}
.information-aggregation__invalid {
background: #ededed;
border-radius: 10px;
font-size: 12px;
color: #717171;
font-weight: 500;
width:fit-content;
padding-left:10px;
padding-right:10px;
height: 20px;
line-height: 20px;
}
.el-table {
font-size: 12px;
color: #353636;
font-weight: 400;
}
.el-table thead {
font-size: 12px;
line-height: 12px;
color: #353636;
font-weight: 500;
height:32px;
}
.el-table th {
padding: 4px 0;
}
.el-table--border th, .el-table--border td {
border-right: 0px !important;
}
.el-table--border {
//border: 1px solid #E2E5EC;
border-radius: 4px;
}
}
.margin-r-6{
margin-right: 6px;
}
.margin-b-6{
margin-bottom: 6px;
}
.padding-0{
padding:0px !important;
}

View File

@@ -17,8 +17,7 @@
position: absolute; position: absolute;
width: calc(100% - 20px); width: calc(100% - 20px);
height: calc(100% - 60px); height: calc(100% - 60px);
margin-left: -12px; margin-top: 50px;
margin-top: 10px;
} }
.data-grid { .data-grid {
height: 100px; height: 100px;

View File

@@ -256,7 +256,15 @@
position: relative; position: relative;
} }
.el-tabs__item.is-top { .el-tabs__item.is-top {
height: 32px; height: 50px;
line-height: 60px;
&.is-active {
color: #046eca;
}
}
.el-tabs__active-bar {
background-color: #306DC2;
} }
.el-tabs__item.is-top:nth-child(2) { .el-tabs__item.is-top:nth-child(2) {
padding: 0; padding: 0;
@@ -264,7 +272,7 @@
.body__searcher { .body__searcher {
position: absolute; position: absolute;
right: 28px; right: 28px;
top: 9px; top: 11px;
width: 280px; width: 280px;
.el-input.el-input--mini { .el-input.el-input--mini {
.el-input__inner { .el-input__inner {
@@ -282,9 +290,9 @@
} }
} }
} }
.el-tabs__nav-wrap::after { /*.el-tabs__nav-wrap::after {
height: 0; height: 0;
} }*/
.el-tabs__header { .el-tabs__header {
padding-left: 20px; padding-left: 20px;
} }

View File

@@ -39,6 +39,9 @@
font-weight: 400; font-weight: 400;
margin-bottom: 12px; margin-bottom: 12px;
} }
.ddos-detection-type-value-number.ddos-event {
color: #E48F3E;
}
.ddos-detection-type-value-number { .ddos-detection-type-value-number {
font-size: 18px; font-size: 18px;
color: #E26154; color: #E26154;

View File

@@ -30,6 +30,7 @@
.line-header { .line-header {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
height: 73px;
.line-select.line-header-right { .line-select.line-header-right {
display: flex; display: flex;
//flex: 1; //flex: 1;
@@ -98,11 +99,11 @@
//top: 0; //top: 0;
//left: 0; //left: 0;
display: flex; display: flex;
.line-value-mpackets.mousemove-cursor { .line-value-tabs.mousemove-cursor {
border-top: 4px solid #D3D0D8; border-top: 4px solid #D3D0D8;
z-index: 0; z-index: 0;
} }
.line-value-mpackets { .line-value-tabs {
cursor: pointer; cursor: pointer;
padding: 16px 0 0 20px; padding: 16px 0 0 20px;
border-top: 4px solid transparent; border-top: 4px solid transparent;
@@ -122,10 +123,10 @@
} }
} }
} }
.line-value-mpackets-name { .line-value-tabs-name {
position: relative; position: relative;
display: flex; display: flex;
.mpackets-name { .tabs-name {
flex: 1; flex: 1;
padding-left: 19px; padding-left: 19px;
} }

View File

@@ -113,6 +113,18 @@
.el-table thead { .el-table thead {
color: $grey; color: $grey;
} }
.el-table__empty-text{
line-height:20px !important;
}
.el-table__header th .cell {
display:flex;
flex-direction:row;
justify-content: center;
align-items: center;
}
.el-table__header tr th:nth-of-type(1) .cell {
justify-content: flex-start;
}
.score-cell { .score-cell {
display: flex !important; display: flex !important;
justify-content: center; justify-content: center;

View File

@@ -130,6 +130,10 @@
.data-score.data-score-green { .data-score.data-score-green {
background: #749F4D; background: #749F4D;
} }
.data-score-no-data {
width: 34px;
text-align: center;
}
} }
.data-total-value { .data-total-value {
display: flex; display: flex;

View File

@@ -114,6 +114,6 @@
position: absolute; position: absolute;
width: 100%; width: 100%;
left: 0; left: 0;
top: 68px; top: 32px;
} }
} }

View File

@@ -86,6 +86,9 @@
color: #046ECA; color: #046ECA;
font-weight: 400 font-weight: 400
} }
.click-active {
cursor: pointer;
}
.data-recent-table-eventType { .data-recent-table-eventType {
font-size: 12px; font-size: 12px;
color: #046ECA; color: #046ECA;

View File

@@ -1,3 +1,14 @@
.panel-box2.panel-box2--entity-detail {
height: 100%;
.chart-list {
height: 100%;
&>.vue-grid-layout {
margin-top: 0;
}
}
}
.panel-box2 { .panel-box2 {
height: calc(100% - 20px); height: calc(100% - 20px);
.panel__header { .panel__header {
@@ -60,7 +71,7 @@
.el-input__inner { .el-input__inner {
font-size: 14px; font-size: 14px;
color: #353636; color: #353636;
background-color: #F5F8FA; background-color: #FFFFFF;
} }
.common-select { .common-select {
top: 32px !important; top: 32px !important;

View File

@@ -107,6 +107,9 @@
letter-spacing: 0; letter-spacing: 0;
line-height: 14px; line-height: 14px;
margin-left: 5px; margin-left: 5px;
font-style: italic;
padding: 0 2px;
font-weight: 500;
} }
.detection-event-severity-color-block { .detection-event-severity-color-block {
width: 5px; width: 5px;
@@ -116,7 +119,6 @@
margin-right: 12px; margin-right: 12px;
} }
.detection-event-severity-block { .detection-event-severity-block {
font-family: NotoSansHans-Medium;
font-size: 12px; font-size: 12px;
color: #046EC9; color: #046EC9;
font-weight: 500; font-weight: 500;
@@ -144,12 +146,12 @@
flex-wrap: wrap; flex-wrap: wrap;
.basic-info__item { .basic-info__item {
padding-right: 40px; padding-right: 30px;
display: flex; display: flex;
align-items: center; align-items: center;
i { i {
padding-right: 6px; padding-right: 5px;
color: #8FA1BE; color: #8FA1BE;
font-size: 14px; font-size: 14px;
} }

View File

@@ -220,5 +220,12 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
padding: 0 4px; padding: 0 4px;
color: white; //color: white;
}
.performance-event-remark {
font-family: NotoSansSChineseRegular;
font-size: 12px;
color: #353636;
font-weight: 400;
} }

View File

@@ -20,7 +20,7 @@
display: flex; display: flex;
justify-content:space-between; justify-content:space-between;
align-items:center; align-items:center;
padding: 10px 20px 10px 0px; padding: 10px 20px 10px 0;
flex: 0 0 40px; flex: 0 0 40px;
font-size: 14px; font-size: 14px;
@@ -37,7 +37,7 @@
} }
.chart-content { .chart-content {
height:calc(100% - 40px); height: 147px;
} }
.statistics__severity { .statistics__severity {
width: 33%; width: 33%;

View File

@@ -1,3 +1,67 @@
.entity-detail {
.entity-tag {
display: flex;
height: 28px;
padding: 0 12px;
justify-content: center;
line-height: 28px;
font-size: 14px;
border: 1px solid;
border-radius: 2px;
&.entity-tag--small {
height: 20px;
line-height: 20px;
padding: 0 6px;
font-size: 12px;
}
$normal-color: #778391;
$normal-light-color: #F7F8F9;
$negative-color: #E26154;
$negative-light-color: #FEF6F5;
$positive-color: #749F4D;
$positive-light-color: #F7FAF5;
&.entity-tag--level-one-normal {
border-color: $normal-color;
color: white;
background-color: $normal-color;
}
&.entity-tag--level-one-negative {
border-color: $negative-color;
color: white;
background-color: $negative-color;
}
&.entity-tag--level-one-positive {
border-color: $positive-color;
color: white;
background-color: $positive-color;
}
&.entity-tag--level-two-normal {
border-color: $normal-color;
color: $normal-color;
background-color: $normal-light-color;
}
&.entity-tag--level-two-negative {
border-color: $negative-color;
color: $negative-color;
background-color: $negative-light-color;
}
&.entity-tag--level-two-positive {
border-color: $positive-color;
color: $positive-color;
background-color: $positive-light-color;
}
&.entity-tag--level-two-negative-no-background {
border-color: $negative-color;
color: $negative-color;
}
&.entity-tag--level-two-positive-no-background {
border-color: $positive-color;
color: $positive-color;
}
}
}
/*
.entity-detail.cn-home { .entity-detail.cn-home {
.panel-chart { .panel-chart {
width: 100%; width: 100%;
@@ -105,3 +169,4 @@
} }
} }
} }
*/

View File

@@ -37,7 +37,7 @@
} }
.el-button--mini{ .el-button--mini{
padding: 4px 6px !important; padding: 4px 6px !important;
min-height: 26px !important; min-height: 28px !important;
&.active i { &.active i {
color: $--color-primary; color: $--color-primary;
} }
@@ -50,6 +50,10 @@
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
} }
.explorer-top-tools-new {
display: flex;
justify-content: space-between;
}
.explorer-top-tools-title { .explorer-top-tools-title {
font-size: 24px; font-size: 24px;
line-height: 24px; line-height: 24px;
@@ -57,7 +61,6 @@
color: #353636; color: #353636;
} }
.explorer-top-tools-block { .explorer-top-tools-block {
font-family: NotoSansHans-Medium;
height: 28px; height: 28px;
line-height: 28px; line-height: 28px;
background: #F5F8FA; background: #F5F8FA;
@@ -65,7 +68,7 @@
color: #353636; color: #353636;
font-weight: 500; font-weight: 500;
padding: 0 10px; padding: 0 10px;
margin-right: 10px; margin-right: 20px;
border: 1px solid #E2E5EC; border: 1px solid #E2E5EC;
border-radius: 2px; border-radius: 2px;
cursor: pointer; cursor: pointer;
@@ -78,6 +81,13 @@
border: 1px solid #E2E5EC; border: 1px solid #E2E5EC;
border-radius: 4px; border-radius: 4px;
} }
.explorer-result {
margin-top: 10px;
margin-bottom: 18px;
font-size: 14px;
color: #353636;
font-weight: 400;
}
.explorer-container { .explorer-container {
display: flex; display: flex;
overflow: visible; /*overflow: hidden;*/ overflow: visible; /*overflow: hidden;*/
@@ -107,9 +117,9 @@
.overview-left { .overview-left {
display: flex; display: flex;
flex-direction: column; //flex-direction: column;
align-items: center; align-items: center;
padding: 0 30px; padding: 0 0 0 30px;
.overview-left-span { .overview-left-span {
font-size: 16px; font-size: 16px;
@@ -131,12 +141,14 @@
.overview-right { .overview-right {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
padding: 0 30px; justify-content: center;
padding: 0 15px;
.right-row { .right-row {
display: flex; display: flex;
height: 30px; height: 18px;
align-items: center; align-items: center;
color: #666666;
.right-label-loading { .right-label-loading {
position: relative; position: relative;
@@ -158,7 +170,7 @@
font-weight: bold; font-weight: bold;
} }
i { i {
padding-right: 10px; padding-right: 4px;
font-size: 18px; font-size: 18px;
} }
.cn-icon-increase { .cn-icon-increase {

View File

@@ -1,104 +1,100 @@
.entity-filter-case { .entity-filter-case {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
width: 280px; width: 320px;
margin-right: 10px; margin-right: 20px;
overflow: auto; overflow: auto;
z-index: 1; z-index: 1;
border: 1px solid rgba(226, 229, 236, 1) !important;
border-radius: 4px !important;
.filter-case__header { .filter-case__header {
background-color: #E1E6ED; padding-left: 8px;
margin-bottom: 10px; height: 36px;
padding-left: 8px; line-height: 36px;
height: 36px; color: #666;
line-height: 36px;
color: #666;
font-size: 14px;
}
.entity-filter {
display: flex;
flex-direction: column;
border: 1px solid #E7EAED;
margin-bottom: 10px;
background-color: white;
.filter__header {
height: 46px;
margin: 0 15px;
line-height: 46px;
border-bottom: 1px solid #EFF2F5;
font-size: 14px; font-size: 14px;
color: #333; background: #F7F7F7;
box-shadow: 0 1px 0 0 rgba(226,229,236,1);
border-radius: 4px 4px 0 0;
} }
.filter__body {
padding: 11px 0 21px 0; .filter__header {
.filter__row { height: 46px;
padding: 0 15px; line-height: 46px;
margin: 0 20px;
font-size: 14px;
color: #353636;
font-weight: 500;
}
.filter__body {
width: calc(100% - 40px);
margin: 0 20px;
.filter-hr {
width: calc(100% + 20px);
margin-left: -10px;
margin-top: 10px;
height: 1px;
background: #EFF2F5;
//background: #000;
}
.filter__body-item {
height: 26px;
line-height: 26px;
display: flex;
align-items: center;
justify-content: space-between;
cursor: pointer;
.filter__body-item-left {
display: flex;
align-items: center; align-items: center;
cursor: pointer; font-size: 14px;
transition: all linear .2s; color: #353636;
.filter__row-popover { font-weight: 400;
display: flex;
line-height: 26px; .filter-country-flag {
width: 18px;
height: 12px;
} }
&:hover, &.filter__row--active { .filter__body-item-left-index {
background-color: #F3F7FA; width: 16px;
} height: 16px;
.row__label {
font-size: 14px;
flex: 8;
display: flex;
i {
color: #8FA1BE;
}
span {
padding-left: 6px;
color: #333;
}
}
.row__value {
color: #666;
position: relative;
display: inline-block;
text-align: center; text-align: center;
flex: 1; background: #EFF2F5;
.chart__loading img { border-radius: 2px;
left: unset; margin-right: 6px;
right: 0; font-family: NotoSansHans-Black;
} font-size: 9px;
} color: #96A2B0;
} font-weight: 900;
} display: flex;
} align-items: center;
} justify-content: center;
.filter__row-popover {
.pop-title {
i {
margin-right: 6px;
}
}
.entity-pop-custom {
.filter-top-box {
.chart__loading {
height: calc(100% - 65px);
top: 64px;
}
.top-table-percent{
display:grid;
grid-template-columns: 50% auto;
grid-template-rows: 100%;
grid-row-gap: 0px;
grid-column-gap: 0px;
.top-table-progress{
align-content: center;
padding-top: 8px;
}
}
.customer-no-border-table {
.el-table__body-wrapper {
height: calc(100% - 36px);
} }
.filter__body-item-left-label {
max-width: 180px;
font-family: NotoSansSChineseRegular;
font-size: 14px;
color: #353636;
font-weight: 400;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
}
.filter__body-item-right {
flex-shrink: 0;
font-family: NotoSansSChineseRegular;
font-size: 12px;
color: #717171;
font-weight: 400;
} }
} }
} }

View File

@@ -5,6 +5,7 @@
background: #FFFFFF; background: #FFFFFF;
border-radius: 2px; border-radius: 2px;
transition: all .2s; transition: all .2s;
border: 1px solid #E2E5EC;
&:hover .cn-entity__header .header__content { &:hover .cn-entity__header .header__content {

View File

@@ -34,6 +34,7 @@
.overview__title { .overview__title {
color: #333; color: #333;
font-size: 14px; font-size: 14px;
font-weight: 600;
} }
.overview__content-loading.overview__content { .overview__content-loading.overview__content {
position: relative; position: relative;
@@ -87,7 +88,7 @@
padding-right: 20px; padding-right: 20px;
&.row__label--width130 { &.row__label--width130 {
flex-basis: 130px; flex-basis: 140px;
padding-right: unset; padding-right: unset;
} }
&.row__label--width160 { &.row__label--width160 {
@@ -130,6 +131,9 @@
background-color: #F6C738; background-color: #F6C738;
} }
} }
&.row__content--width90 {
width: 90px;
}
&.row__content--width200 { &.row__content--width200 {
width: 200px; width: 200px;
} }
@@ -144,7 +148,7 @@
} }
.row__contents { .row__contents {
display: flex; display: flex;
flex-direction: column; //flex-direction: column;
.row__content { .row__content {
padding: 2px 0; padding: 2px 0;
@@ -156,15 +160,26 @@
&:last-of-type { &:last-of-type {
padding-bottom: 0; padding-bottom: 0;
} }
.el-popper {
min-width: 90px !important;
}
}
.row__content-accept {
margin-left: 39px;
} }
.row__charts-msg { .row__charts-msg {
width: auto; width: auto;
padding-right: 20px; padding-right: 10px;
}
.new-row__charts-msg {
width: auto;
padding-right: 10px;
} }
.row__charts { .row__charts {
height: 20px; height: 20px;
width: 60px; width: 60px;
padding-left: 5px; //padding-left: 5px;
} }
} }
.row__charts { .row__charts {
@@ -176,6 +191,12 @@
color: #666666; color: #666666;
} }
} }
.overview__row-related {
display: flex;
align-items: center;
margin-bottom: 8px;
}
} }
.overview__content.domain__content { .overview__content.domain__content {
@@ -292,3 +313,11 @@
} }
} }
} }
.margin-l-140 {
margin-left: 140px;
}
.line-center {
display: flex;
align-items: center;
}

View File

@@ -1,5 +1,5 @@
.entity-list { .entity-list {
width: calc(100% - 290px); width: 100%;
height: calc(100% - 42px); height: calc(100% - 42px);
flex: 1; flex: 1;
position: relative; position: relative;

View File

@@ -1,5 +1,8 @@
.cn-entity--list { .cn-entity--list {
display: flex; display: flex;
border: 1px #E2E5EC solid;
margin-bottom: 10px;
border-radius: 4px;
.cn-entity__collapse { .cn-entity__collapse {
margin-bottom: 1px; margin-bottom: 1px;
@@ -9,6 +12,7 @@
justify-content: center; justify-content: center;
align-items: flex-start; align-items: flex-start;
background-color: #F3F7FA; background-color: #F3F7FA;
border-radius: 4px 0 0 4px;
span { span {
transform: rotate(0); transform: rotate(0);
@@ -36,9 +40,11 @@
overflow: hidden; overflow: hidden;
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
align-content: center;
padding: 16px 0; padding: 16px 0;
margin-bottom: 1px; margin-bottom: 1px;
background-color: white; background-color: white;
border-radius: 0 4px 4px 0;
.cn-entity__icon { .cn-entity__icon {
margin-left: 26px; margin-left: 26px;
@@ -70,6 +76,12 @@
font-size: 16px; font-size: 16px;
padding-bottom: 3px; padding-bottom: 3px;
color: #333333; color: #333333;
.cn-entity__header-title {
margin-right: 10px;
}
.cn-entity__header-tag {
}
} }
.cn-entity__body { .cn-entity__body {
@@ -87,7 +99,7 @@
flex-wrap: wrap; flex-wrap: wrap;
.basic-info__item { .basic-info__item {
padding-right: 40px; padding-right: 30px;
.item__box { .item__box {
display: flex; display: flex;
@@ -105,7 +117,7 @@
} }
i { i {
padding-right: 6px; padding-right: 5px;
color: #8FA1BE; color: #8FA1BE;
font-size: 12px; font-size: 12px;
height: 13px; height: 13px;
@@ -126,7 +138,7 @@
.row__charts { .row__charts {
height: 19px; height: 19px;
width: 60px; width: 60px;
padding-left: 5px; margin-left: 4px;
} }
} }
@@ -147,25 +159,47 @@
span:last-of-type { span:last-of-type {
color: #666; color: #666;
} }
} }
}
.show-detail { .row-item-label {
flex-shrink: 0; font-family: NotoSansSChineseRegular;
padding: 0 30px; font-size: 14px;
font-size: 12px; color: #717171;
color: #3976CB; font-weight: 400;
}
&:hover { .row-item-value {
cursor: pointer; font-family: NotoSansSChineseRegular;
font-size: 14px;
color: #353636;
font-weight: 400;
} }
} }
} }
} }
} }
.new-show-detail {
flex-shrink: 0;
padding: 0 30px;
font-size: 12px;
color: #2C72C6;
font-weight: 400;
display: flex;
flex-direction: column;
justify-content: space-around;
align-items: center;
&:hover {
cursor: pointer;
}
i {
font-size: 12px;
margin-right: 5px;
}
}
.cn-entity__detail-overview { .cn-entity__detail-overview {
flex-basis: 100%; flex-basis: 100%;
padding: 0 10px; padding: 0 10px;

View File

@@ -1,21 +1,22 @@
.cn-builtin { .cn-report {
background: #fff; background: #fff;
margin: 10px; margin: 10px;
height: calc(100% - 20px) !important; height: calc(100% - 20px) !important;
display: flex; display: flex;
flex-direction: row; flex-direction: row;
.cn-builtin-left { .cn-report-left {
width: 288px; width: 288px;
height: 100%; height: 100%;
border-right: 1px solid #E7EAED; border-right: 1px solid #E7EAED;
position: relative; position: relative;
.cn-builtin-left-title { overflow: auto;
.cn-report-left-title {
padding: 28px 0 26px 13px; padding: 28px 0 26px 13px;
font-size: 16px; font-size: 16px;
color: #333333; color: #333333;
letter-spacing: 0; letter-spacing: 0;
} }
.cn-builtin-left-menu { .cn-report-left-menu {
width: 250px; width: 250px;
word-break: normal; word-break: normal;
margin: auto; margin: auto;
@@ -25,13 +26,13 @@
padding: 14px; padding: 14px;
cursor: pointer; cursor: pointer;
} }
.cn-builtin-left-menu.cn-active { .cn-report-left-menu.cn-active {
background: #F4FAFF; background: #F4FAFF;
border-radius: 2px; border-radius: 2px;
color: #0091FF; color: #0091FF;
} }
} }
.cn-builtin-right { .cn-report-right {
flex: 1; flex: 1;
.list-page .main-container { .list-page .main-container {
padding: 0; padding: 0;
@@ -73,7 +74,7 @@
height: 100%; height: 100%;
width: calc(100% - 32px); width: calc(100% - 32px);
background: #fff; //盖住fixed产生的阴影 background: #fff; //盖住fixed产生的阴影
::v-deep .is-leaf { :deep .is-leaf {
color: #1b2e3b; color: #1b2e3b;
background: #ebeef5; background: #ebeef5;
} }
@@ -139,6 +140,12 @@
color: #666666; color: #666666;
font-weight: 400; font-weight: 400;
margin-bottom: 4px; margin-bottom: 4px;
display: flex;
align-items: center;
justify-content: center;
i {
padding: 2px 3px 0 0;
}
} }
.expand-time { .expand-time {
font-size: 12px; font-size: 12px;

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
@font-face { @font-face {
font-family: "cn-icon"; /* Project id 2614877 */ font-family: "cn-icon"; /* Project id 2614877 */
src: url('iconfont.woff2?t=1668593055875') format('woff2'), src: url('iconfont.woff2?t=1689317280458') format('woff2'),
url('iconfont.woff?t=1668593055875') format('woff'), url('iconfont.woff?t=1689317280458') format('woff'),
url('iconfont.ttf?t=1668593055875') format('truetype'); url('iconfont.ttf?t=1689317280458') format('truetype');
} }
.cn-icon { .cn-icon {
@@ -13,6 +13,242 @@
-moz-osx-font-smoothing: grayscale; -moz-osx-font-smoothing: grayscale;
} }
.cn-icon-add-knowledge-base:before {
content: "\e802";
}
.cn-icon-update-knowledge-base:before {
content: "\e803";
}
.cn-icon-zoom-out:before {
content: "\e7fd";
}
.cn-icon-to-default:before {
content: "\e7fe";
}
.cn-icon-reset:before {
content: "\e7ff";
}
.cn-icon-next-step:before {
content: "\e800";
}
.cn-icon-pre-step:before {
content: "\e801";
}
.cn-icon-zoom-in:before {
content: "\e7f";
}
.cn-icon-expand-continue:before {
content: "\e7fc";
}
.cn-icon-domain1:before {
content: "\e7fb";
}
.cn-icon-expand-relationship:before {
content: "\e7f8";
}
.cn-icon-resolve-ip:before {
content: "\e7f9";
}
.cn-icon-subdomain:before {
content: "\e7fa";
}
.cn-icon-graph:before {
content: "\e7f5";
}
.cn-icon-detail:before {
content: "\e7f6";
}
.cn-icon-tag:before {
content: "\e7f7";
}
.cn-icon-upload2:before {
content: "\e7f4";
}
.cn-icon-warn:before {
content: "\e7f3";
}
.cn-icon-providers:before {
content: "\e7f2";
}
.cn-icon-configure-policies:before {
content: "\e7f1";
}
.cn-icon-dns-insight:before {
content: "\e7ef";
}
.cn-icon-network-performance:before {
content: "\e7f0";
}
.cn-icon-copy:before {
content: "\e7ee";
}
.cn-icon-analysis:before {
content: "\e7ed";
}
.cn-icon-duration:before {
content: "\e7ec";
}
.cn-icon-select:before {
content: "\e7eb";
}
.cn-icon-expire-date:before {
content: "\e7d4";
}
.cn-icon-registry-email:before {
content: "\e7d5";
}
.cn-icon-geo-location:before {
content: "\e7d6";
}
.cn-icon-credit-rating:before {
content: "\e7d7";
}
.cn-icon-registration-date:before {
content: "\e7d8";
}
.cn-icon-app-full-name:before {
content: "\e7d9";
}
.cn-icon-description:before {
content: "\e7da";
}
.cn-icon-technology:before {
content: "\e7db";
}
.cn-icon-registrar:before {
content: "\e7dc";
}
.cn-icon-registry:before {
content: "\e7dd";
}
.cn-icon-operator:before {
content: "\e7de";
}
.cn-icon-sub-type:before {
content: "\e7df";
}
.cn-icon-app-name:before {
content: "\e7e0";
}
.cn-icon-registration-country:before {
content: "\e7e1";
}
.cn-icon-as:before {
content: "\e7e2";
}
.cn-icon-as-subnet:before {
content: "\e7e3";
}
.cn-icon-category2:before {
content: "\e7e4";
}
.cn-icon-domain-name-resolution:before {
content: "\e7e5";
}
.cn-icon-open-port:before {
content: "\e7e6";
}
.cn-icon-security-event:before {
content: "\e7e7";
}
.cn-icon-dns-ptr:before {
content: "\e7e8";
}
.cn-icon-information-aggregation:before {
content: "\e7e9";
}
.cn-icon-digital-certificate:before {
content: "\e7ea";
}
.cn-icon-save:before {
content: "\e7d1";
}
.cn-icon-edit1:before {
content: "\e7d2";
}
.cn-icon-revoke:before {
content: "\e7d3";
}
.cn-icon-administrations:before {
content: "\e7be";
}
.cn-icon-chart:before {
content: "\e7b8";
}
.cn-icon-user2:before {
content: "\e7b9";
}
.cn-icon-operation-log:before {
content: "\e7ba";
}
.cn-icon-role2:before {
content: "\e7bb";
}
.cn-icon-proxy:before {
content: "\e7bc";
}
.cn-icon-i18n:before {
content: "\e7bd";
}
.cn-icon-baocuo:before { .cn-icon-baocuo:before {
content: "\e7b7"; content: "\e7b7";
} }

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -31,12 +31,12 @@ $--button-primary-background-color: $--color-primary; // 普通按钮背景色
$--button-hover-tint-percent: 20%; // 非灰色按钮在鼠标hover时背景色变浅的幅度 $--button-hover-tint-percent: 20%; // 非灰色按钮在鼠标hover时背景色变浅的幅度
$--button-active-shade-percent: 0; // 非灰色按钮在focus时背景色变深的幅度 $--button-active-shade-percent: 0; // 非灰色按钮在focus时背景色变深的幅度
$--button-gray-color: #666; // 灰色按钮字色 $--button-gray-color: #353636; // 灰色按钮字色
$--button-gray-hover-color: $--button-gray-color; // 灰色按钮hover字色 $--button-gray-hover-color: $--button-gray-color; // 灰色按钮hover字色
$--button-gray-active-color: $--color-primary; // 灰色按钮focus字色 $--button-gray-active-color: $--color-primary; // 灰色按钮focus字色
$--button-gray-background-color: #F9F9F9; // 灰色按钮背景色 $--button-gray-background-color: #F9F9F9; // 灰色按钮背景色
$--button-gray-hover-background-color: #FFF; // 灰色按钮hover背景色 $--button-gray-hover-background-color: #EBF1F4; // 灰色按钮hover背景色
$--button-gray-active-background-color: $--button-gray-hover-background-color; // 灰色按钮focus背景色 $--button-gray-active-background-color: #E0E7EA; // 灰色按钮focus背景色
$--button-gray-border-color: $--border-color-primary; // 灰色按钮边框色 $--button-gray-border-color: $--border-color-primary; // 灰色按钮边框色
$--button-gray-hover-border-color: $--button-gray-border-color; // 灰色按钮hover边框色 $--button-gray-hover-border-color: $--button-gray-border-color; // 灰色按钮hover边框色
$--button-gray-active-border-color-tint-percent: 30%; // 灰色按钮在focus时边框色相对于主题色变浅的幅度 $--button-gray-active-border-color-tint-percent: 30%; // 灰色按钮在focus时边框色相对于主题色变浅的幅度

View File

@@ -2,10 +2,10 @@
/** 重写element-ui变量 **/ /** 重写element-ui变量 **/
$--color-primary: #0091ff; // 主题色 $--color-primary: #699DC9; // 主题色
$--color-primary-dark-10: darken(#0091ff, 10%); // 默认主题色 深10% $--color-primary-dark-10: darken(#699DC9, 10%); // 默认主题色 深10%
$--color-primary-light-10: lighten(#0091ff, 10%); // 默认主题色 浅10% $--color-primary-light-10: lighten(#699DC9, 10%); // 默认主题色 浅10%
$--color-primary-light-20: lighten(#0091ff, 20%); // 默认主题色 浅20% $--color-primary-light-20: lighten(#699DC9, 20%); // 默认主题色 浅20%
/* menu相关 */ /* menu相关 */
$--menu-background-color: #00162B; // menu背景色 $--menu-background-color: #00162B; // menu背景色
@@ -31,12 +31,12 @@ $--button-primary-background-color: $--color-primary; // 普通按钮背景色
$--button-hover-tint-percent: 20%; // 非灰色按钮在鼠标hover时背景色变浅的幅度 $--button-hover-tint-percent: 20%; // 非灰色按钮在鼠标hover时背景色变浅的幅度
$--button-active-shade-percent: 0; // 非灰色按钮在focus时背景色变深的幅度 $--button-active-shade-percent: 0; // 非灰色按钮在focus时背景色变深的幅度
$--button-gray-color: #666; // 灰色按钮字色 $--button-gray-color: #353636; // 灰色按钮字色
$--button-gray-hover-color: $--button-gray-color; // 灰色按钮hover字色 $--button-gray-hover-color: $--button-gray-color; // 灰色按钮hover字色
$--button-gray-active-color: $--color-primary; // 灰色按钮focus字色 $--button-gray-active-color: $--color-primary; // 灰色按钮focus字色
$--button-gray-background-color: #F9F9F9; // 灰色按钮背景色 $--button-gray-background-color: #F9F9F9; // 灰色按钮背景色
$--button-gray-hover-background-color: #FFF; // 灰色按钮hover背景色 $--button-gray-hover-background-color: #EBF1F4; // 灰色按钮hover背景色
$--button-gray-active-background-color: $--button-gray-hover-background-color; // 灰色按钮focus背景色 $--button-gray-active-background-color: #E0E7EA; // 灰色按钮focus背景色
$--button-gray-border-color: $--border-color-primary; // 灰色按钮边框色 $--button-gray-border-color: $--border-color-primary; // 灰色按钮边框色
$--button-gray-hover-border-color: $--button-gray-border-color; // 灰色按钮hover边框色 $--button-gray-hover-border-color: $--button-gray-border-color; // 灰色按钮hover边框色
$--button-gray-active-border-color-tint-percent: 30%; // 灰色按钮在focus时边框色相对于主题色变浅的幅度 $--button-gray-active-border-color-tint-percent: 30%; // 灰色按钮在focus时边框色相对于主题色变浅的幅度

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1687771200531" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7765" width="36" height="36" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M723.84487531 71.54166698c60.46291698 0 110.11458302 49.45145802 110.11458302 110.11458302v12.21270802h10.05045802c27.58870802 0 49.77179198 22.30320802 49.77179198 49.73175v256.78720896c0 27.42854198-22.34325 49.73175-49.77179198 49.73175h-10.05045802v292.22408302c0 60.50295802-49.4915 110.11458302-110.11458302 110.11458302H310.89516635a110.394875 110.394875 0 0 1-110.11458302-110.11458302v-292.22408302h-10.0905A49.81183302 49.81183302 0 0 1 140.95833333 500.38791698V243.60070802c0-27.42854198 22.30320802-49.73175 49.73175-49.73175h10.0905V181.65625C200.78058333 121.15329198 250.23204135 71.54166698 310.89516635 71.54166698z m54.97720802 688.31625H255.75779135v82.48583302a55.2575 55.2575 0 0 0 55.137375 55.137375h412.94970896a55.2575 55.2575 0 0 0 55.09733302-55.137375l-0.120125-82.48583302z m-261.47208302 27.508625c22.02291698 0 41.24291698 19.22 41.24291604 41.28295802 0 22.02291698-19.22 41.24291698-41.24291604 41.24291698-21.90279198 0-41.24291698-19.22-41.24291698-41.24291698s19.22-41.24291698 41.24291698-41.24291698z m261.59220802-237.246875H255.87791635v154.56083302h523.06429198v-154.56083302z m61.06354198-302.47475H194.73429135v248.65875h645.27145896v-248.65875z m-518.53958396 23.78475c12.41291698 0 23.5445 7.52783302 28.10925 18.97975l60.903375 150.55666604a24.865875 24.865875 0 0 1-23.10404104 34.27566698 25.106125 25.106125 0 0 1-23.26420896-15.8565l-6.56683302-16.697375H284.78800031l-6.32658396 16.53720802a25.14616698 25.14616698 0 1 1-46.76866604-18.41916604l61.70420802-150.55666698a30.43166698 30.43166698 0 0 1 28.10925-18.81958302z m217.82666698 0c40.722375 0 71.63454198 31.47275 71.63454198 69.6725 0 38.15970802-31.19245802 69.071875-74.4775 69.071875h-20.70154198v40.32195802a24.66566698 24.66566698 0 0 1-24.74575 24.74575 24.82583302 24.82583302 0 0 1-24.74575-24.74575V296.17541698a24.66566698 24.66566698 0 0 1 24.74575-24.74575z m190.878625 0c40.722375 0 71.67458302 31.47275 71.67458302 69.6725 0 38.15970802-31.2325 69.071875-74.4775 69.071875h-20.74158302v40.32195802a24.66566698 24.66566698 0 0 1-24.74575 24.74575 24.66566698 24.66566698 0 0 1-24.70570802-24.74575V296.17541698a24.66566698 24.66566698 0 0 1 24.70570802-24.74575zM321.10579135 348.30966698l-20.181 52.05416604H341.16666635l-20.02083302-52.05416604z m215.46420896-27.3885h-20.70154198v47.16908302h18.17891698c18.65941698 0 27.3885-11.57204198 27.3885-25.14616698 0-11.01145802-6.68695802-22.02291698-24.82583396-22.02291604z m190.7585 0h-20.70154198v47.16908302h18.138875c18.69945802 0 27.42854198-11.57204198 27.42854198-25.14616698 0-11.01145802-6.727-22.02291698-24.82583396-22.02291604z m-3.3635-194.40229198H311.01529135A55.2575 55.2575 0 0 0 255.87791635 181.65625v12.21270802h523.22445896V181.65625a55.2575 55.2575 0 0 0-55.137375-55.137375z" p-id="7766" fill="#E5A219"></path></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1688290120782" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7911" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="36"><path d="M723.84487531 71.54166698c60.46291698 0 110.11458302 49.45145802 110.11458302 110.11458302v12.21270802h10.05045802c27.58870802 0 49.77179198 22.30320802 49.77179198 49.73175v256.78720896c0 27.42854198-22.34325 49.73175-49.77179198 49.73175h-10.05045802v292.22408302c0 60.50295802-49.4915 110.11458302-110.11458302 110.11458302H310.89516635a110.394875 110.394875 0 0 1-110.11458302-110.11458302v-292.22408302h-10.0905A49.81183302 49.81183302 0 0 1 140.95833333 500.38791698V243.60070802c0-27.42854198 22.30320802-49.73175 49.73175-49.73175h10.0905V181.65625C200.78058333 121.15329198 250.23204135 71.54166698 310.89516635 71.54166698z m54.97720802 688.31625H255.75779135v82.48583302a55.2575 55.2575 0 0 0 55.137375 55.137375h412.94970896a55.2575 55.2575 0 0 0 55.09733302-55.137375l-0.120125-82.48583302z m-261.47208302 27.508625c22.02291698 0 41.24291698 19.22 41.24291604 41.28295802 0 22.02291698-19.22 41.24291698-41.24291604 41.24291698-21.90279198 0-41.24291698-19.22-41.24291698-41.24291698s19.22-41.24291698 41.24291698-41.24291698z m261.59220802-237.246875H255.87791635v154.56083302h523.06429198v-154.56083302z m61.06354198-302.47475H194.73429135v248.65875h645.27145896v-248.65875z m-518.53958396 23.78475c12.41291698 0 23.5445 7.52783302 28.10925 18.97975l60.903375 150.55666604a24.865875 24.865875 0 0 1-23.10404104 34.27566698 25.106125 25.106125 0 0 1-23.26420896-15.8565l-6.56683302-16.697375H284.78800031l-6.32658396 16.53720802a25.14616698 25.14616698 0 1 1-46.76866604-18.41916604l61.70420802-150.55666698a30.43166698 30.43166698 0 0 1 28.10925-18.81958302z m217.82666698 0c40.722375 0 71.63454198 31.47275 71.63454198 69.6725 0 38.15970802-31.19245802 69.071875-74.4775 69.071875h-20.70154198v40.32195802a24.66566698 24.66566698 0 0 1-24.74575 24.74575 24.82583302 24.82583302 0 0 1-24.74575-24.74575V296.17541698a24.66566698 24.66566698 0 0 1 24.74575-24.74575z m190.878625 0c40.722375 0 71.67458302 31.47275 71.67458302 69.6725 0 38.15970802-31.2325 69.071875-74.4775 69.071875h-20.74158302v40.32195802a24.66566698 24.66566698 0 0 1-24.74575 24.74575 24.66566698 24.66566698 0 0 1-24.70570802-24.74575V296.17541698a24.66566698 24.66566698 0 0 1 24.70570802-24.74575zM321.10579135 348.30966698l-20.181 52.05416604H341.16666635l-20.02083302-52.05416604z m215.46420896-27.3885h-20.70154198v47.16908302h18.17891698c18.65941698 0 27.3885-11.57204198 27.3885-25.14616698 0-11.01145802-6.68695802-22.02291698-24.82583396-22.02291604z m190.7585 0h-20.70154198v47.16908302h18.138875c18.69945802 0 27.42854198-11.57204198 27.42854198-25.14616698 0-11.01145802-6.727-22.02291698-24.82583396-22.02291604z m-3.3635-194.40229198H311.01529135A55.2575 55.2575 0 0 0 255.87791635 181.65625v12.21270802h523.22445896V181.65625a55.2575 55.2575 0 0 0-55.137375-55.137375z" p-id="7912" fill="#778391"></path></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1688298522321" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7364" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="36"><path d="M512 61.06201172a450.93798828 450.93798828 0 1 1 0 901.87597656 450.93798828 450.93798828 0 0 1 0-901.87597656z m0 45.09379883a405.84418945 405.84418945 0 1 0 0 811.6883789 405.84418945 405.84418945 0 0 0 0-811.6883789z" p-id="7365" fill="#38ACD2"></path><path d="M229.64344446 586.23133044l15.95626722-52.586307c4.64812962-15.19314186 8.18625866-30.6637832 10.54501134-46.41192491h0.69375048c3.1912538 18.3150199 6.17438209 31.77378466 10.12876124 46.48129978l15.05439124 52.51693213h46.82817591l49.11755284-149.36453686h-48.77067761l-13.73626514 59.24631408c-3.60750391 17.06626868-6.93750745 33.855037-9.22688438 50.99068056h-0.69375136a864.41343565 864.41343565 0 0 0-11.79376257-50.64380531l-15.95626721-59.59318933h-39.33566772l-17.06626869 61.39694129c-3.88500427 14.63814112-8.46375903 31.70440892-11.79376256 48.84005335h-0.69375049A890.56783897 890.56783897 0 0 0 199.81216237 497.84748474l-12.7650143-61.05006603h-50.78255506l46.55067554 149.36453685h46.82817591zM570.27506324 496.04373279c-3.53812904 17.20501843-6.86813258 33.99378674-9.1575104 51.06005543h-0.69375047c-3.1912538-17.13564355-7.49250818-33.855037-11.79376257-50.64380531l-15.95626721-59.59318933H493.26872999l-17.06626869 61.39694129c-3.88500427 14.63814112-8.46375903 31.77378466-11.79376256 48.84005335h-0.69375137a904.30410413 904.30410413 0 0 0-9.08813463-49.18692861l-12.83438917-61.05006603h-50.78255417l46.48129978 149.29516199h46.89755078l16.09501783-52.51693213c4.57875475-15.26251673 8.11688379-30.73315807 10.40626074-46.48130068h0.69375136c3.33000354 18.38439477 6.24375697 31.84315955 10.19813611 46.48130068l15.05439124 52.51693212h46.82817502l49.11755373-149.29516198H584.15007813l-13.73626514 59.24631408zM825.22846423 496.04373279c-3.60750391 17.20501843-6.93750745 33.99378674-9.15751039 51.06005543h-0.69375048c-3.26062867-17.13564355-7.56188305-33.855037-11.79376256-50.64380531l-16.02564208-59.59318933h-39.33566773l-16.99689381 61.39694129a710.40076917 710.40076917 0 0 0-11.79376257 48.84005335h-0.69375049a893.96721827 893.96721827 0 0 0-9.15751038-49.18692861l-12.76501342-61.05006603H645.89389464l46.55067554 149.29516199h46.82817591l16.09501784-52.51693213a328.14410573 328.14410573 0 0 0 10.47563559-46.48130068h0.69375136c3.26062867 18.38439477 6.24375697 31.84315955 10.12876036 46.48130068l15.05439124 52.51693212h46.82817591l49.1869286-149.29516198h-48.84005337l-13.73626426 59.24631408z" p-id="7366" fill="#38ACD2"></path><path d="M320.17791736 643.11889184c28.65190576 164.34955323 107.87824195 274.72529762 191.82208264 274.72529761 81.30758763 0 158.24454601-103.7157373 189.04707984-259.80965612l2.42812756-12.83438916 44.40004835 7.90875828C715.4077206 835.28784972 623.34699522 962.93798828 512 962.93798828c-109.26574291 0-200.07771705-123.00200805-233.93275317-299.56157396l-2.28937782-12.48751393 44.40004835-7.70063368zM512 61.06201172c109.40449353 0 200.14709193 123.14075868 234.00212804 299.83907432l2.28937782 12.48751393-44.40004834 7.70063369C675.10080202 216.67030556 595.94384069 106.15581055 512 106.15581055c-82.07071387 0-159.56267298 105.58886413-189.81020519 263.62528552l-2.28937782 12.69563854-44.40004834-7.63125792C307.06602784 190.65465198 399.7511288 61.06201172 512 61.06201172z" p-id="7367" fill="#38ACD2"></path><path d="M549.60129065 647.28139648V962.93798828h-60.14819006V647.28139648h60.14819006z m0-586.21938476v315.6565918h-60.14819006V61.06201172h60.14819006z" p-id="7368" fill="#38ACD2"></path><path d="M151.24960938 241.43720703h721.50078124v45.09379883H151.24960938V241.43720703z m0 496.03178711h721.50078124v45.09379883H151.24960938v-45.09379883z" p-id="7369" fill="#38ACD2"></path></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1687771150463" class="icon" viewBox="0 0 1228 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7479" width="35.9765625" height="30" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M1099.86729167 250.4559668V115.17457031H125.84123698v135.28139649h974.02605469z m0 54.11255859H125.84123698v595.23814453h974.02605469V304.56852539zM71.72867839 61.06201172h1082.25117187v892.8572168H71.72867839V61.06201172z m324.31460117 504.74992185v44.34223492c0.1803752 10.31144837 2.1344401 18.12770712 5.89225608 23.50890074 3.72775374 5.38119362 11.15319987 8.05675843 22.27633663 8.05675844h99.65729541v44.34223581h-119.73906657c-20.14189651 0-34.15103728-4.65969284-41.99735827-13.9490154-7.81625876-9.28932256-11.7243877-23.32852556-11.72438769-42.14767035v-82.61183945c0-18.81914567 3.90812893-32.85834779 11.72438769-42.14767034 7.81625876-9.31938479 21.82539863-13.9490154 41.99735827-13.9490154h119.73906657v44.34223581h-99.65729541c-11.12313675 0-18.54858288 2.70562793-22.27633663 8.05675842-3.75781686 5.38119362-5.71188089 12.7465135-5.89225608 22.1560868z m327.98223044 64.15344416c0 18.12770712-3.72775374 32.01659717-11.21332523 41.66667012-7.4855706 9.62001071-21.40452288 14.43001562-41.7267946 14.43001563h-66.76888539c-20.17195963 0-34.18109951-4.65969284-41.99735738-13.9490154-7.81625876-9.28932256-11.7243877-23.32852556-11.7243877-42.14767035v-82.61183945c0-18.81914567 3.90812893-32.85834779 11.7243877-42.14767034 7.81625876-9.31938479 21.82539863-13.9490154 41.99735738-13.9490154h66.73882227c20.35233483 0 34.27128711 4.81000491 41.75685772 14.43001562 7.4855706 9.62001071 11.21332435 23.53896299 11.21332523 41.66667012v82.61183945zM678.39058559 611.20635742v-44.67292307c0-10.76238636-1.74362659-18.60870736-5.23088067-23.50890076-3.48725407-4.93025564-11.21332435-7.39538301-23.20827572-7.395383h-25.55315237c-11.12313675 0-18.57864512 2.70562793-22.30639886 8.05675842-3.72775374 5.38119362-5.6216933 12.98701406-5.62169418 22.84752534v44.31217268c0 9.86051038 1.89393956 17.4663317 5.62169418 22.84752444 3.72775374 5.38119362 11.18326211 8.05675843 22.30639886 8.05675932h25.55315237c11.99495049 0 19.63083405-2.46512737 22.93771293-7.39538301 3.30687888-4.90019251 5.14069306-12.62626367 5.50144346-23.14815036z m241.37207356-119.91944264c20.32227171 0 34.27128711 4.81000491 41.72679548 14.43001562 7.4855706 9.62001071 11.21332435 23.53896299 11.21332434 41.66667012v138.7085252h-45.63492441v-119.55869137c0-10.76238636-1.74362659-18.60870736-5.23088066-23.50890076-3.48725407-4.93025564-11.21332435-7.39538301-23.20827484-7.395383h-14.61039082v150.46297513h-46.17605l-0.24050055-150.46297513h-13.04713943c-11.12313675 0-18.54858288 2.70562793-22.30639886 8.05675842-3.72775374 5.38119362-5.59163105 12.98701406-5.59163105 22.84752534v119.55869137h-45.90548721v-138.7085252c0-18.81914567 3.90812893-32.85834779 11.72438769-42.14767035 7.81625876-9.31938479 21.82539863-13.9490154 41.99735828-13.94901539h115.28981204zM244.88886589 637.36076074h48.70130273v48.70130274H244.88886589v-48.70130274z" p-id="7480" fill="#38ACD2"></path></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1688290376101" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8107" xmlns:xlink="http://www.w3.org/1999/xlink" width="36" height="36"><path d="M512 61.06201172a450.93798828 450.93798828 0 1 1 0 901.87597656 450.93798828 450.93798828 0 0 1 0-901.87597656z m0 45.09379883a405.84418945 405.84418945 0 1 0 0 811.6883789 405.84418945 405.84418945 0 0 0 0-811.6883789z" p-id="8108" fill="#778391"></path><path d="M229.64344446 586.23133044l15.95626722-52.586307c4.64812962-15.19314186 8.18625866-30.6637832 10.54501134-46.41192491h0.69375048c3.1912538 18.3150199 6.17438209 31.77378466 10.12876124 46.48129978l15.05439124 52.51693213h46.82817591l49.11755284-149.36453686h-48.77067761l-13.73626514 59.24631408c-3.60750391 17.06626868-6.93750745 33.855037-9.22688438 50.99068056h-0.69375136a864.41343565 864.41343565 0 0 0-11.79376257-50.64380531l-15.95626721-59.59318933h-39.33566772l-17.06626869 61.39694129c-3.88500427 14.63814112-8.46375903 31.70440892-11.79376256 48.84005335h-0.69375049A890.56783897 890.56783897 0 0 0 199.81216237 497.84748474l-12.7650143-61.05006603h-50.78255506l46.55067554 149.36453685h46.82817591zM570.27506324 496.04373279c-3.53812904 17.20501843-6.86813258 33.99378674-9.1575104 51.06005543h-0.69375047c-3.1912538-17.13564355-7.49250818-33.855037-11.79376257-50.64380531l-15.95626721-59.59318933H493.26872999l-17.06626869 61.39694129c-3.88500427 14.63814112-8.46375903 31.77378466-11.79376256 48.84005335h-0.69375137a904.30410413 904.30410413 0 0 0-9.08813463-49.18692861l-12.83438917-61.05006603h-50.78255417l46.48129978 149.29516199h46.89755078l16.09501783-52.51693213c4.57875475-15.26251673 8.11688379-30.73315807 10.40626074-46.48130068h0.69375136c3.33000354 18.38439477 6.24375697 31.84315955 10.19813611 46.48130068l15.05439124 52.51693212h46.82817502l49.11755373-149.29516198H584.15007813l-13.73626514 59.24631408zM825.22846423 496.04373279c-3.60750391 17.20501843-6.93750745 33.99378674-9.15751039 51.06005543h-0.69375048c-3.26062867-17.13564355-7.56188305-33.855037-11.79376256-50.64380531l-16.02564208-59.59318933h-39.33566773l-16.99689381 61.39694129a710.40076917 710.40076917 0 0 0-11.79376257 48.84005335h-0.69375049a893.96721827 893.96721827 0 0 0-9.15751038-49.18692861l-12.76501342-61.05006603H645.89389464l46.55067554 149.29516199h46.82817591l16.09501784-52.51693213a328.14410573 328.14410573 0 0 0 10.47563559-46.48130068h0.69375136c3.26062867 18.38439477 6.24375697 31.84315955 10.12876036 46.48130068l15.05439124 52.51693212h46.82817591l49.1869286-149.29516198h-48.84005337l-13.73626426 59.24631408z" p-id="8109" fill="#778391"></path><path d="M320.17791736 643.11889184c28.65190576 164.34955323 107.87824195 274.72529762 191.82208264 274.72529761 81.30758763 0 158.24454601-103.7157373 189.04707984-259.80965612l2.42812756-12.83438916 44.40004835 7.90875828C715.4077206 835.28784972 623.34699522 962.93798828 512 962.93798828c-109.26574291 0-200.07771705-123.00200805-233.93275317-299.56157396l-2.28937782-12.48751393 44.40004835-7.70063368zM512 61.06201172c109.40449353 0 200.14709193 123.14075868 234.00212804 299.83907432l2.28937782 12.48751393-44.40004834 7.70063369C675.10080202 216.67030556 595.94384069 106.15581055 512 106.15581055c-82.07071387 0-159.56267298 105.58886413-189.81020519 263.62528552l-2.28937782 12.69563854-44.40004834-7.63125792C307.06602784 190.65465198 399.7511288 61.06201172 512 61.06201172z" p-id="8110" fill="#778391"></path><path d="M549.60129065 647.28139648V962.93798828h-60.14819006V647.28139648h60.14819006z m0-586.21938476v315.6565918h-60.14819006V61.06201172h60.14819006z" p-id="8111" fill="#778391"></path><path d="M151.24960938 241.43720703h721.50078124v45.09379883H151.24960938V241.43720703z m0 496.03178711h721.50078124v45.09379883H151.24960938v-45.09379883z" p-id="8112" fill="#778391"></path></svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1687770782238" class="icon" viewBox="0 0 1109 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7446" width="35.7392578125" height="33" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M306.07165232 286.53100586h88.45900173v402.31184159H306.07165232V286.53100586z m254.70480646 258.08684225h92.9683825c25.1773713 0 46.59692575-3.68265995 64.25866333-10.97282467 17.66173758-7.36532077 32.01659717-16.9853306 43.06457788-29.01034421 11.12313675-12.02501272 19.1648645-25.85377829 24.27549445-41.48629492a152.94313406 152.94313406 0 0 0 0-95.44854056 111.6071521 111.6071521 0 0 0-24.27549445-41.18566989 120.25012991 120.25012991 0 0 0-43.06457788-29.01034333A167.59861869 167.59861869 0 0 0 653.74484128 286.53100586H472.31745703v402.31184159h88.45900175v-144.30015625z m0-189.39395508h68.7680432c10.14610474 0 19.84127148 0.75156302 29.31096924 2.25468995a68.39226126 68.39226126 0 0 1 24.80158936 8.79329077 47.72427072 47.72427072 0 0 1 17.13564355 18.33814456 64.48413233 64.48413233 0 0 1 6.46344479 30.96440824c0 12.77657663-2.1795339 23.07299344-6.46344479 30.96440911a47.6491138 47.6491138 0 0 1-17.21079959 18.33814456 68.09163623 68.09163623 0 0 1-24.80158936 8.71813474c-9.39454172 1.50312692-19.08970846 2.25468994-29.31096923 2.25468994H560.85161569V355.29904907z" p-id="7447" fill="#7E9F54"></path><path d="M997.43474439 61.06201172H101.72158671C79.2498442 61.06201172 61.06201172 80.60265817 61.06201172 104.65268362v814.69463276c0 24.05002634 18.18783249 43.5906719 40.65957499 43.5906719h895.71315768c22.47174337 0 40.65957499-19.54064646 40.65957497-43.5906719V104.65268362c0-24.05002634-18.18783249-43.5906719-40.65957497-43.5906719z m-20.36736551 835.73840524H122.0889531V126.44802001h854.97842578v770.35239695z" p-id="7448" fill="#7E9F54"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1688290403407" class="icon" viewBox="0 0 1109 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8307" xmlns:xlink="http://www.w3.org/1999/xlink" width="38.98828125" height="36"><path d="M306.07165232 286.53100586h88.45900173v402.31184159H306.07165232V286.53100586z m254.70480646 258.08684225h92.9683825c25.1773713 0 46.59692575-3.68265995 64.25866333-10.97282467 17.66173758-7.36532077 32.01659717-16.9853306 43.06457788-29.01034421 11.12313675-12.02501272 19.1648645-25.85377829 24.27549445-41.48629492a152.94313406 152.94313406 0 0 0 0-95.44854056 111.6071521 111.6071521 0 0 0-24.27549445-41.18566989 120.25012991 120.25012991 0 0 0-43.06457788-29.01034333A167.59861869 167.59861869 0 0 0 653.74484128 286.53100586H472.31745703v402.31184159h88.45900175v-144.30015625z m0-189.39395508h68.7680432c10.14610474 0 19.84127148 0.75156302 29.31096924 2.25468995a68.39226126 68.39226126 0 0 1 24.80158936 8.79329077 47.72427072 47.72427072 0 0 1 17.13564355 18.33814456 64.48413233 64.48413233 0 0 1 6.46344479 30.96440824c0 12.77657663-2.1795339 23.07299344-6.46344479 30.96440911a47.6491138 47.6491138 0 0 1-17.21079959 18.33814456 68.09163623 68.09163623 0 0 1-24.80158936 8.71813474c-9.39454172 1.50312692-19.08970846 2.25468994-29.31096923 2.25468994H560.85161569V355.29904907z" p-id="8308" fill="#778391"></path><path d="M997.43474439 61.06201172H101.72158671C79.2498442 61.06201172 61.06201172 80.60265817 61.06201172 104.65268362v814.69463276c0 24.05002634 18.18783249 43.5906719 40.65957499 43.5906719h895.71315768c22.47174337 0 40.65957499-19.54064646 40.65957497-43.5906719V104.65268362c0-24.05002634-18.18783249-43.5906719-40.65957497-43.5906719z m-20.36736551 835.73840524H122.0889531V126.44802001h854.97842578v770.35239695z" p-id="8309" fill="#778391"></path></svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -60,6 +60,7 @@ export default {
// 连接符列表 // 连接符列表
connectionList: Array connectionList: Array
}, },
emits: ['search'],
methods: { methods: {
search (parseData) { search (parseData) {
this.$emit('search', parseData) this.$emit('search', parseData)
@@ -114,11 +115,11 @@ export default {
}, },
setup (props) { setup (props) {
// 默认为文本模式 // 默认为文本模式
let searchMode = ref('text') const searchMode = ref('text')
if (props.defaultMode) { if (props.defaultMode) {
switch (props.defaultMode) { switch (props.defaultMode) {
case 'tag': { case 'tag': {
searchMode = 'tag' searchMode.value = 'tag'
break break
} }
} }

View File

@@ -15,9 +15,9 @@
allow-create allow-create
filterable filterable
size="mini" size="mini"
v-model="meta.column.name" v-model="meta.column.label"
ref="columnSelect" ref="columnSelect"
:placeholder="meta.column.name || ''" :placeholder="meta.column.label || ''"
@blur="columnBlur(meta, index)" @blur="columnBlur(meta, index)"
@change="(value) => selectColumn(value, meta)" @change="(value) => selectColumn(value, meta)"
> >
@@ -25,7 +25,7 @@
v-for="(column, index) in columnList" v-for="(column, index) in columnList"
:key="index" :key="index"
:label="column.label" :label="column.label"
:value="column.name" :value="column.label"
></el-option> ></el-option>
</el-select> </el-select>
</div> </div>
@@ -36,6 +36,7 @@
<!-- --> <!-- -->
<div class="condition__value"> <div class="condition__value">
<div v-if="meta.value.isEditing"> <div v-if="meta.value.isEditing">
<!--避免blur事件和keyup.enter重复执行-->
<el-input v-model="meta.value.value" size="mini" @blur="valueBlur(meta)" ref="valueInput" @keyup.enter="valueBlur(meta)"></el-input> <el-input v-model="meta.value.value" size="mini" @blur="valueBlur(meta)" ref="valueInput" @keyup.enter="valueBlur(meta)"></el-input>
</div> </div>
<span v-else @click="valueClick(meta)">{{meta.value.label}}</span> <span v-else @click="valueClick(meta)">{{meta.value.label}}</span>
@@ -74,10 +75,20 @@
</div> </div>
<div class="tag-search__add" @click="addCondition">{{$t('entities.advancedSearch.add')}}</div> <div class="tag-search__add" @click="addCondition">{{$t('entities.advancedSearch.add')}}</div>
<div class="search__suffixes search__suffixes--tag-mode"> <div class="search__suffixes search__suffixes--tag-mode">
<div class="search__suffix" @click="changeMode"> <div class="search__suffix" style="margin-right: 12px">
<i class="cn-icon cn-icon-search-normal"></i> <el-popover
popper-class="my-popper-class"
placement="top"
:popper-style="{border: '1px red solid'}"
trigger="hover"
:content="$t('entity.switchToBasicSearch')"
>
<template #reference>
<i class="cn-icon cn-icon-search-normal" @click="changeMode"></i>
</template>
</el-popover>
</div> </div>
<div class="search__suffix" @click="search"> <div class="search__suffix new-search__suffix" @click="search">
<i class="el-icon-search"></i> <i class="el-icon-search"></i>
</div> </div>
</div> </div>
@@ -89,6 +100,7 @@ import Meta, { connection, condition, columnType } from './meta/meta'
import _ from 'lodash' import _ from 'lodash'
import { handleErrorTip } from '@/components/advancedSearch/meta/error' import { handleErrorTip } from '@/components/advancedSearch/meta/error'
import Parser, { stringInQuot } from '@/components/advancedSearch/meta/parser' import Parser, { stringInQuot } from '@/components/advancedSearch/meta/parser'
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
export default { export default {
name: 'TagMode', name: 'TagMode',
props: { props: {
@@ -104,6 +116,7 @@ export default {
metaList: [] metaList: []
} }
}, },
emits: ['changeMode', 'search'],
methods: { methods: {
// 新增条件 // 新增条件
addCondition (meta) { addCondition (meta) {
@@ -130,7 +143,10 @@ export default {
this.metaList.push(newCondition) this.metaList.push(newCondition)
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.columnSelect.focus() const selectList = this.$refs.columnSelect
if (selectList && selectList.length > 0) {
this.$refs.columnSelect[selectList.length - 1].focus() // 在for循环里生成的dom所以是数组
}
}) })
} }
}, },
@@ -148,6 +164,18 @@ export default {
} else { } else {
this.metaList.splice(index - 1, 2) this.metaList.splice(index - 1, 2)
} }
if (this.metaList.length > 0) {
const parser = new Parser(this.columnList)
const errorList = parser.validateMeta(this.metaList)
if (_.isEmpty(errorList)) {
this.reloadUrl({ q: parser.parseMeta(this.metaList).q })
}
} else {
const routeQuery = this.$route.query
delete routeQuery.q
this.reloadUrl(routeQuery, 'cleanOldParams')
}
}, },
// 选择搜索条件的事件 // 选择搜索条件的事件
selectColumn (value, meta) { selectColumn (value, meta) {
@@ -159,7 +187,7 @@ export default {
meta.resetValue() meta.resetValue()
} else { } else {
const selectedColumn = this.columnList.find(column => { const selectedColumn = this.columnList.find(column => {
return column.name === value return column.label === value
}) })
meta.column.label = selectedColumn.label meta.column.label = selectedColumn.label
meta.column.type = selectedColumn.type meta.column.type = selectedColumn.type
@@ -180,12 +208,12 @@ export default {
columnClick (meta) { columnClick (meta) {
meta.column.isEditing = true meta.column.isEditing = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.columnSelect.focus() this.$refs.columnSelect[this.$refs.columnSelect.length - 1].focus()
}) })
}, },
columnBlur (meta, index) { columnBlur (meta, index) {
setTimeout(() => { setTimeout(() => {
meta.column.name = meta.column.name.replace(/"/g, '') meta.column.label = meta.column.label.replace(/"/g, '')
meta.column.isEditing = false meta.column.isEditing = false
if (meta.isEmpty()) { if (meta.isEmpty()) {
if (this.metaList.length > 1) { if (this.metaList.length > 1) {
@@ -219,7 +247,10 @@ export default {
} }
} }
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.valueInput.focus() const selectList = this.$refs.valueInput
if (selectList && selectList.length > 0) {
this.$refs.valueInput[selectList.length - 1].focus() // 在for循环里生成的dom所以是数组
}
}) })
}, },
operatorClick (meta) { operatorClick (meta) {
@@ -244,7 +275,8 @@ export default {
str = str.substring(1, str.length) str = str.substring(1, str.length)
str = str.substring(0, str.length - 1) str = str.substring(0, str.length - 1)
} }
if (str.indexOf("'") > -1) { // 如果此时参数为xi'an处理为xi''an后一个条件避免若参数为xi''an,则不处理
if (str.indexOf("'") > -1 && str.indexOf("''") === -1) {
str = str.replace(/'/g, "''") str = str.replace(/'/g, "''")
} }
return str return str
@@ -263,7 +295,8 @@ export default {
str = str.substring(1, str.length) str = str.substring(1, str.length)
str = str.substring(0, str.length - 1) str = str.substring(0, str.length - 1)
} }
if (str.indexOf("'") > -1) { // 如果此时参数为xi'an处理为xi''an后一个条件避免若参数为xi''an,则不处理
if (str.indexOf("'") > -1 && str.indexOf("''") === -1) {
str = str.replace(/'/g, "''") str = str.replace(/'/g, "''")
} }
meta.value.value = str meta.value.value = str
@@ -275,13 +308,13 @@ export default {
valueClick (meta) { valueClick (meta) {
meta.value.isEditing = true meta.value.isEditing = true
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.valueInput.focus() this.$refs.valueInput[0].focus()
}) })
}, },
// 判断是否是用户自己添加的内容,用于判断是否是全局搜索 // 判断是否是用户自己添加的内容,用于判断是否是全局搜索
isCustomized (value) { isCustomized (value) {
return !this.columnList.some(meta => { return !this.columnList.some(meta => {
return meta.name === value return meta.label === value
}) })
}, },
enterSearch () { enterSearch () {
@@ -307,13 +340,15 @@ export default {
const parser = new Parser(this.columnList) const parser = new Parser(this.columnList)
const errorList = parser.validateMeta(this.metaList) const errorList = parser.validateMeta(this.metaList)
if (_.isEmpty(errorList)) { if (_.isEmpty(errorList)) {
this.reloadUrl({ mode: 'text' })
this.$emit('changeMode', 'text', parser.parseMeta(this.metaList)) this.$emit('changeMode', 'text', parser.parseMeta(this.metaList))
} else { } else {
this.reloadUrl({ mode: 'text' })
this.$emit('changeMode', 'text', { metaList: [], str: '' }) this.$emit('changeMode', 'text', { metaList: [], str: '' })
} }
}, },
// 处理value例如转换IN的值 // 处理value例如转换IN的值
handleValue (value, column, operator) { handleValue (value, column, operator, flag) {
const isArray = ['IN', 'NOT IN'].indexOf(operator) > -1 const isArray = ['IN', 'NOT IN'].indexOf(operator) > -1
if (isArray) { if (isArray) {
if (_.isArray(value)) { if (_.isArray(value)) {
@@ -323,21 +358,28 @@ export default {
return value return value
} }
} else { } else {
return column.type === columnType.string ? stringInQuot(value) : value let newValue = column.type === columnType.string ? stringInQuot(value) : value
if (flag) {
newValue = newValue.slice(1)
newValue = newValue.slice(0, newValue.length - 1)
return newValue
} else {
return newValue
}
} }
}, },
addParams (params) { addParams (params) {
params.forEach(param => { params.forEach(param => {
const column = this.columnList.find(column => { const column = this.columnList.find(column => {
return column.name === param.column return column.label === param.column
}) })
const meta = new Meta() const meta = new Meta()
meta.column.name = param.column meta.column.label = param.column
meta.column.type = column ? column.type : columnType.string meta.column.type = column ? column.type : columnType.string
meta.column.label = column ? column.label : param.column meta.column.label = column ? column.label : param.column
meta.operator.value = '=' meta.operator.value = '='
meta.operator.show = true meta.operator.show = true
meta.value.value = this.handleValue(param.value, column, column.operator) meta.value.value = this.handleValue(param.value, column, column.operator, 'noQuotes')
meta.value.show = true meta.value.show = true
meta.value.label = meta.value.value meta.value.label = meta.value.value
this.addCondition(meta) this.addCondition(meta)
@@ -346,16 +388,16 @@ export default {
changeParams (params) { changeParams (params) {
params.forEach(param => { params.forEach(param => {
const oldColumn = this.columnList.find(column => { const oldColumn = this.columnList.find(column => {
return column.name === param.oldParam.column return column.label === param.oldParam.column
}) })
const newColumn = this.columnList.find(column => { const newColumn = this.columnList.find(column => {
return column.name === param.newParam.column return column.label === param.newParam.column
}) })
const meta = this.metaList.find(m => m.column && m.column.name === oldColumn.name && m.operator.value === param.oldParam.operator && m.value.value === this.handleValue(param.oldParam.value, oldColumn, param.oldParam.operator)) const meta = this.metaList.find(m => m.column && m.column.label === oldColumn.label && m.operator.value === param.oldParam.operator && m.value.value === this.handleValue(param.oldParam.value, oldColumn, param.oldParam.operator))
if (meta) { if (meta) {
meta.column.name = newColumn.name meta.column.label = newColumn.label
meta.column.type = newColumn.type meta.column.type = newColumn.type
meta.column.label = newColumn.label ? newColumn.label : newColumn.name meta.column.label = newColumn.label ? newColumn.label : newColumn.label
meta.operator.value = param.newParam.operator meta.operator.value = param.newParam.operator
meta.value.value = this.handleValue(param.newParam.value, newColumn, param.newParam.operator) meta.value.value = this.handleValue(param.newParam.value, newColumn, param.newParam.operator)
meta.value.label = meta.value.value meta.value.label = meta.value.value
@@ -365,9 +407,9 @@ export default {
removeParams (params) { removeParams (params) {
params.forEach(param => { params.forEach(param => {
const column = this.columnList.find(c => { const column = this.columnList.find(c => {
return c.name === param.column return c.label === param.column
}) })
const metaIndex = this.metaList.findIndex(m => m.column && m.column.name === param.column && m.operator.value === param.operator && m.value.value === this.handleValue(param.value, column, param.operator)) const metaIndex = this.metaList.findIndex(m => m.column && m.column.label === param.column && m.operator.value === param.operator && m.value.value === this.handleValue(param.value, column, param.operator))
// 不是在首位则删除时顺带删除前一个indexand或or否则顺带删除后一个index // 不是在首位则删除时顺带删除前一个indexand或or否则顺带删除后一个index
if (metaIndex > 0) { if (metaIndex > 0) {
this.metaList.splice(metaIndex - 1, 2) this.metaList.splice(metaIndex - 1, 2)
@@ -377,10 +419,28 @@ export default {
this.metaList.splice(metaIndex, 2) this.metaList.splice(metaIndex, 2)
} }
}) })
},
/**
* 向地址栏添加/删除参数
*/
reloadUrl (newParam, clean) {
const { query } = this.$route
let newUrl = urlParamsHandler(window.location.href, query, newParam)
if (clean) {
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
}
overwriteUrl(newUrl)
} }
}, },
mounted () { mounted () {
const vm = this const vm = this
// 如果地址栏包含参数q则匹配出metaList到搜索栏回显使用
const { q } = this.$route.query
if (q) {
const parser = new Parser(this.columnList)
this.metaList = parser.parseStr(q).metaList
}
this.emitter.on('advanced-search', function () { this.emitter.on('advanced-search', function () {
vm.search() vm.search()
}) })
@@ -398,3 +458,23 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.new-search__suffix {
width: 41px;
height: 41px;
line-height: 41px;
background: #38ACD2;
text-align: center;
margin-top: -10px;
margin-right: -10px;
.el-icon-search {
color: #fff !important;
margin-top: 9px !important;
}
}
.my-popper-class .el-popper__arrow {
display: none;
}
</style>

View File

@@ -3,10 +3,22 @@
ref="textSearch" ref="textSearch"
></textarea> ></textarea>
<div class="search__suffixes search__suffixes--text-mode"> <div class="search__suffixes search__suffixes--text-mode">
<div class="search__suffix" @click="changeMode"> <div class="search__suffix">
<i class="cn-icon cn-icon-search-advance"></i> <el-popover
popper-class="my-popper-class"
placement="top"
trigger="hover"
:content="$t('entity.switchToAdvancedSearch')"
>
<template #reference>
<i class="cn-icon cn-icon-filter" @click="changeMode"></i>
</template>
</el-popover>
</div> </div>
<div class="search__suffix" @click="search"> <div class="search__suffix-close" @click="cleanParams">
<i class="el-icon-error"></i>
</div>
<div class="search__suffix new-search__suffix" @click="search">
<i class="el-icon-search"></i> <i class="el-icon-search"></i>
</div> </div>
</div> </div>
@@ -23,7 +35,8 @@ import CodeMirror from 'codemirror'
import { toRaw } from 'vue' import { toRaw } from 'vue'
import _ from 'lodash' import _ from 'lodash'
import { columnType } from '@/components/advancedSearch/meta/meta' import { columnType } from '@/components/advancedSearch/meta/meta'
import {handleErrorTip} from "@/components/advancedSearch/meta/error"; import { handleErrorTip } from '@/components/advancedSearch/meta/error'
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
export default { export default {
name: 'TextMode', name: 'TextMode',
@@ -36,7 +49,14 @@ export default {
codeMirror: null codeMirror: null
} }
}, },
emits: ['changeMode', 'search'],
methods: { methods: {
cleanParams () {
toRaw(this.codeMirror).setValue('')
const routeQuery = this.$route.query
delete routeQuery.q
this.reloadUrl(routeQuery, 'cleanOldParams')
},
initCodeMirror () { initCodeMirror () {
this.codeMirror = CodeMirror.fromTextArea(this.$refs.textSearch, { this.codeMirror = CodeMirror.fromTextArea(this.$refs.textSearch, {
mode: { mode: {
@@ -73,11 +93,14 @@ export default {
const errorList = parser.validateStr(str) const errorList = parser.validateStr(str)
if (_.isEmpty(errorList)) { if (_.isEmpty(errorList)) {
const metaList = parser.parseStr(str) const metaList = parser.parseStr(str)
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', metaList) this.$emit('changeMode', 'tag', metaList)
} else { } else {
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', { metaList: [], str: '' }) this.$emit('changeMode', 'tag', { metaList: [], str: '' })
} }
} else { } else {
this.reloadUrl({ mode: 'tag' })
this.$emit('changeMode', 'tag', { str: '', metaList: [] }) this.$emit('changeMode', 'tag', { str: '', metaList: [] })
} }
}, },
@@ -98,7 +121,7 @@ export default {
addParams (params) { addParams (params) {
let current = this.codeMirror.getValue() let current = this.codeMirror.getValue()
params.forEach(param => { params.forEach(param => {
const column = this.columnList.find(c => c.name === param.column) const column = this.columnList.find(c => c.label === param.column)
current = `${current ? current + ' AND ' : ''}${param.column}${handleOperatorSpace(param.operator)}${this.handleValue(param.value, column, param.operator)}` current = `${current ? current + ' AND ' : ''}${param.column}${handleOperatorSpace(param.operator)}${this.handleValue(param.value, column, param.operator)}`
}) })
toRaw(this.codeMirror).setValue(current.trim()) toRaw(this.codeMirror).setValue(current.trim())
@@ -106,7 +129,7 @@ export default {
removeParams (params) { removeParams (params) {
let current = this.codeMirror.getValue() let current = this.codeMirror.getValue()
params.forEach(param => { params.forEach(param => {
const column = this.columnList.find(c => c.name === param.column) const column = this.columnList.find(c => c.label === param.column)
// 将对应内容替换为空串 // 将对应内容替换为空串
const sqlPiece = `${param.column}${handleOperatorSpace(param.operator)}${this.handleValue(param.value, column, param.operator)}`.trim() const sqlPiece = `${param.column}${handleOperatorSpace(param.operator)}${this.handleValue(param.value, column, param.operator)}`.trim()
const sqlPieceWithConnection = [` AND ${sqlPiece}`, ` OR ${sqlPiece}`, `${sqlPiece} AND `, `${sqlPiece} OR `, sqlPiece] const sqlPieceWithConnection = [` AND ${sqlPiece}`, ` OR ${sqlPiece}`, `${sqlPiece} AND `, `${sqlPiece} OR `, sqlPiece]
@@ -119,14 +142,25 @@ export default {
changeParams (params) { changeParams (params) {
let current = this.codeMirror.getValue() let current = this.codeMirror.getValue()
params.forEach(param => { params.forEach(param => {
const oldColumn = this.columnList.find(c => c.name === param.oldParam.column) const oldColumn = this.columnList.find(c => c.label === param.oldParam.column)
const newColumn = this.columnList.find(c => c.name === param.newParam.column) const newColumn = this.columnList.find(c => c.label === param.newParam.column)
// 将oldParam内容替换为newParam // 将oldParam内容替换为newParam
const oldSqlPiece = `${param.oldParam.column}${handleOperatorSpace(param.oldParam.operator)}${this.handleValue(param.oldParam.value, oldColumn, param.oldParam.operator)}`.trim() const oldSqlPiece = `${param.oldParam.column}${handleOperatorSpace(param.oldParam.operator)}${this.handleValue(param.oldParam.value, oldColumn, param.oldParam.operator)}`.trim()
const newSqlPiece = `${param.newParam.column}${handleOperatorSpace(param.newParam.operator)}${this.handleValue(param.newParam.value, newColumn, param.newParam.operator)}`.trim() const newSqlPiece = `${param.newParam.column}${handleOperatorSpace(param.newParam.operator)}${this.handleValue(param.newParam.value, newColumn, param.newParam.operator)}`.trim()
current = current.replace(oldSqlPiece, newSqlPiece) current = current.replace(oldSqlPiece, newSqlPiece)
}) })
toRaw(this.codeMirror).setValue(current.trim()) toRaw(this.codeMirror).setValue(current.trim())
},
/**
* 向地址栏添加/删除参数
*/
reloadUrl (newParam, clean) {
const { query } = this.$route
let newUrl = urlParamsHandler(window.location.href, query, newParam)
if (clean) {
newUrl = urlParamsHandler(window.location.href, query, newParam, clean)
}
overwriteUrl(newUrl)
} }
}, },
watch: { watch: {
@@ -142,7 +176,22 @@ export default {
} }
}, },
mounted () { mounted () {
// 如果地址栏包含参数q则将参数q回显到搜索栏内
let { q } = this.$route.query
this.initCodeMirror() this.initCodeMirror()
if (q) {
// 为避免地址栏任意输入导致全查询的q带QUERY解析时不识别导致的语法错误
// 如地址栏输入116.178.222.171此时的q很长刷新界面时需要把q里的116.178.222.171拿出来进行搜索
if (q.indexOf('QUERY') > -1) {
const strList = q.split(' ')
if (strList.length > 0) {
// 此时strList[1]为ip_addr:116.178.222.171获取116.178.222.171
q = strList[1].slice(8)
}
}
toRaw(this.codeMirror).setValue(q)
}
const vm = this const vm = this
this.emitter.on('advanced-search', function () { this.emitter.on('advanced-search', function () {
vm.search() vm.search()
@@ -150,3 +199,29 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.search__suffix-close {
.el-icon-error {
font-size: 17px;
color: #C4C4C4;
margin: 0 12px;
cursor: pointer;
}
}
.new-search__suffix {
width: 41px;
height: 41px;
line-height: 41px;
background: #38ACD2;
text-align: center;
margin-top: -10px;
margin-right: -10px;
.el-icon-search {
color: #fff !important;
margin-top: 9px !important;
}
}
</style>

View File

@@ -63,7 +63,7 @@ export default class Meta {
isEmpty () { isEmpty () {
if (this.meta === condition) { if (this.meta === condition) {
return _.isEmpty(this.column.name) return _.isEmpty(this.column.label)
} else { } else {
return true return true
} }
@@ -73,8 +73,8 @@ export default class Meta {
isCompleteCondition () { isCompleteCondition () {
if (this.meta === condition) { if (this.meta === condition) {
return (this.column.type === columnType.fullText) return (this.column.type === columnType.fullText)
? !_.isEmpty(this.column.name) ? !_.isEmpty(this.column.label)
: !_.isEmpty(this.column.name) && !_.isEmpty(this.operator.value) && (!_.isEmpty(this.value.value) || (_.isNumber(this.value.value) && !_.isNaN(this.value.value))) : !_.isEmpty(this.column.label) && !_.isEmpty(this.operator.value) && (!_.isEmpty(this.value.value) || (_.isNumber(this.value.value) && !_.isNaN(this.value.value)))
} else if (this.meta === connection) { } else if (this.meta === connection) {
return !!this.value return !!this.value
} }

View File

@@ -80,9 +80,9 @@ export default class Parser {
str += `${meta.value.toUpperCase()} ` str += `${meta.value.toUpperCase()} `
} else if (meta.meta === condition) { } else if (meta.meta === condition) {
if (meta.column.type === columnType.fullText) { if (meta.column.type === columnType.fullText) {
str += `'${meta.column.name}' ` str += `'${meta.column.label}' `
} else if (meta.column.type === columnType.array) { } else if (meta.column.type === columnType.array) {
str += `${meta.column.name} ${meta.operator.value} (` str += `${meta.column.label} ${meta.operator.value} (`
meta.value.value.forEach((s, j) => { meta.value.value.forEach((s, j) => {
str += `'${s}'` str += `'${s}'`
if (j < meta.value.value.length) { if (j < meta.value.value.length) {
@@ -93,13 +93,13 @@ export default class Parser {
str += ') ' str += ') '
} else if (meta.column.type === columnType.string) { } else if (meta.column.type === columnType.string) {
if (meta.operator.value.toLowerCase().indexOf('like') > -1 || meta.operator.value.toLowerCase().indexOf('in') > -1) { if (meta.operator.value.toLowerCase().indexOf('like') > -1 || meta.operator.value.toLowerCase().indexOf('in') > -1) {
str += `${meta.column.name} ${meta.operator.value} '${meta.value.value}' ` str += `${meta.column.label} ${meta.operator.value} '${meta.value.value}' `
} else { } else {
str += `${meta.column.name}${meta.operator.value}'${meta.value.value}' ` str += `${meta.column.label}${meta.operator.value}'${meta.value.value}' `
} }
} else if (meta.column.type === columnType.number) { } else if (meta.column.type === columnType.number) {
if (_.isNumber(Number(meta.value.value))) { if (_.isNumber(Number(meta.value.value))) {
str += `${meta.column.name}${meta.operator.value}${meta.value.value} ` str += `${meta.column.label}${meta.operator.value}${meta.value.value} `
} else { } else {
this.errorList.push(new ParserError(i, errorTypes.typeError, errorDesc.typeError.number)) this.errorList.push(new ParserError(i, errorTypes.typeError, errorDesc.typeError.number))
return return
@@ -125,11 +125,11 @@ export default class Parser {
if (meta.column.type === columnType.fullText) { if (meta.column.type === columnType.fullText) {
str += "QUERY('" str += "QUERY('"
this.columnList.forEach(column => { this.columnList.forEach(column => {
str += `${column.name}:${meta.column.name} ` str += `${column.label}:${meta.column.label} `
}) })
str += "') " str += "') "
} else if (meta.column.type === columnType.array) { } else if (meta.column.type === columnType.array) {
str += `${meta.column.name} ${meta.operator.value} (` str += `${meta.column.label} ${meta.operator.value} (`
meta.value.value.forEach((s, j) => { meta.value.value.forEach((s, j) => {
str += `'${s}'` str += `'${s}'`
if (j < meta.value.value.length) { if (j < meta.value.value.length) {
@@ -140,13 +140,13 @@ export default class Parser {
str += ') ' str += ') '
} else if (meta.column.type === columnType.string) { } else if (meta.column.type === columnType.string) {
if (meta.operator.value.toLowerCase().indexOf('like') > -1 || meta.operator.value.toLowerCase().indexOf('in') > -1) { if (meta.operator.value.toLowerCase().indexOf('like') > -1 || meta.operator.value.toLowerCase().indexOf('in') > -1) {
str += `${meta.column.name} ${meta.operator.value} '${meta.value.value}' ` str += `${meta.column.label} ${meta.operator.value} '${meta.value.value}' `
} else { } else {
str += `${meta.column.name}${meta.operator.value}'${meta.value.value}' ` str += `${meta.column.label}${meta.operator.value}'${meta.value.value}' `
} }
} else if (meta.column.type === columnType.number) { } else if (meta.column.type === columnType.number) {
if (_.isNumber(Number(meta.value.value))) { if (_.isNumber(Number(meta.value.value))) {
str += `${meta.column.name}${meta.operator.value}${meta.value.value} ` str += `${meta.column.label}${meta.operator.value}${meta.value.value} `
} }
} }
} }
@@ -233,6 +233,7 @@ export default class Parser {
break break
} }
} else if (s === ' ') { } else if (s === ' ') {
// 预留
} else if (s === '(') { } else if (s === '(') {
token = new Token(types.leftBracket, s) token = new Token(types.leftBracket, s)
token.setStart(i) token.setStart(i)
@@ -565,12 +566,12 @@ export default class Parser {
// 前面是连接符或空后面是操作符不在单引号内则是key // 前面是连接符或空后面是操作符不在单引号内则是key
// 前面是连接符或操作符或空后面是连接符或空或在单引号内是value // 前面是连接符或操作符或空后面是连接符或空或在单引号内是value
if (isInApostrophe) { if (isInApostrophe) {
if (meta.column.name) { if (meta.column.label) {
meta.value.value = token.value meta.value.value = token.value
meta.column.type = columnType.string meta.column.type = columnType.string
} else { } else {
meta.column.type = columnType.fullText meta.column.type = columnType.fullText
meta.column.name = token.value meta.column.label = token.value
} }
} else { } else {
let isColumn = true let isColumn = true
@@ -578,14 +579,14 @@ export default class Parser {
if (prevToken) { if (prevToken) {
if (prevToken.type === types.connection && [types.commonOperator, types.letterOperator].indexOf(nextToken.type) > -1) { if (prevToken.type === types.connection && [types.commonOperator, types.letterOperator].indexOf(nextToken.type) > -1) {
meta.column.type = columnType.string meta.column.type = columnType.string
meta.column.name = token.value meta.column.label = token.value
} else { } else {
isColumn = false isColumn = false
} }
} else { } else {
if ([types.commonOperator, types.letterOperator].indexOf(nextToken.type) > -1) { if ([types.commonOperator, types.letterOperator].indexOf(nextToken.type) > -1) {
meta.column.type = columnType.string meta.column.type = columnType.string
meta.column.name = token.value meta.column.label = token.value
} else { } else {
isColumn = false isColumn = false
} }
@@ -603,7 +604,7 @@ export default class Parser {
meta.column.type = columnType.string meta.column.type = columnType.string
} else if (prevToken && (!prevToken.prevToken || prevToken.prevToken.type === types.connection)) { } else if (prevToken && (!prevToken.prevToken || prevToken.prevToken.type === types.connection)) {
meta.column.type = columnType.fullText meta.column.type = columnType.fullText
meta.column.name = token.value meta.column.label = token.value
} else { } else {
errorList.push(new ParserError(token.end, errorTypes.syntaxError, errorDesc.syntaxError.unexpectedString)) errorList.push(new ParserError(token.end, errorTypes.syntaxError, errorDesc.syntaxError.unexpectedString))
break break
@@ -630,14 +631,14 @@ export default class Parser {
meta.value.value = token.value meta.value.value = token.value
} }
} else if (prevToken.type === types.connection) { } else if (prevToken.type === types.connection) {
meta.column.name = token.value meta.column.label = token.value
meta.column.type = columnType.fullText meta.column.type = columnType.fullText
} else { } else {
errorList.push(new ParserError(token.end, errorTypes.syntaxError, errorDesc.syntaxError.unexpectedString)) errorList.push(new ParserError(token.end, errorTypes.syntaxError, errorDesc.syntaxError.unexpectedString))
break break
} }
} else { } else {
meta.column.name = token.value meta.column.label = token.value
meta.column.type = columnType.fullText meta.column.type = columnType.fullText
} }
} else { } else {
@@ -706,10 +707,10 @@ export default class Parser {
if (meta.column.type === columnType.fullText) { if (meta.column.type === columnType.fullText) {
meta.operator.show = false meta.operator.show = false
meta.value.show = false meta.value.show = false
meta.column.label = meta.column.name // meta.column.label = meta.column.name
metaList.push(meta) metaList.push(meta)
} else { } else {
const column = this.columnList.find(c => c.name === meta.column.name) const column = this.columnList.find(c => c.label === meta.column.label)
if (column) { if (column) {
meta.operator.show = true meta.operator.show = true
meta.value.show = true meta.value.show = true
@@ -750,6 +751,10 @@ export default class Parser {
// 使用单引号包裹 // 使用单引号包裹
export function stringInQuot (value) { export function stringInQuot (value) {
if (value.indexOf("'") > -1) {
value = value.split("'").join("''") // 如xi'an多添加一个单引号处理为xi''an
}
const match = `${value}`.match(/^'.+?'$/) const match = `${value}`.match(/^'.+?'$/)
return match ? value : `'${value}'` return match ? value : `'${value}'`
} }

View File

@@ -4,7 +4,7 @@ import { riskLevelMapping } from '@/utils/constants'
import _ from 'lodash' import _ from 'lodash'
// 补全语句,用于解析 // 补全语句,用于解析
const sqlPrev = 'select a from b where ' const sqlPrev = 'select a from b where '
export default class SqlParser/* extends SqlParserVisitor*/ { export default class SqlParser/* extends SqlParserVisitor */ {
constructor (init, columnList) { constructor (init, columnList) {
// super() // super()
this.tempMeta = null this.tempMeta = null
@@ -250,6 +250,10 @@ function handleType (value) {
// 使用单引号包裹 // 使用单引号包裹
export function stringInQuot (value) { export function stringInQuot (value) {
if (value.indexOf("'") > -1) {
value = value.split("'").join("''") // 如xi'an多添加一个单引号处理为xi''an
}
const match = `${value}`.match(/^'.+?'$/) const match = `${value}`.match(/^'.+?'$/)
return match ? value : `'${value}'` return match ? value : `'${value}'`
} }

View File

@@ -0,0 +1,258 @@
<template>
<div class="chart-tabs administration-tabs">
<div class="chart-tabs__active-bar" :style="{'background-color': color}"></div>
<el-tabs v-model="currentTab" ref="elTabs" type="border-card" @tab-click="handleClick">
<el-tab-pane
v-for="(tab,index) in tabsData"
:key="tab.i18n"
:name="JSON.stringify(index)"
:disabled="tab.disable">
<template #label>
<div class="chart-tabs__label">
<i :class="tab.icon"></i>
<span>{{ $t(tab.i18n || tab.name) }}</span>
</div>
</template>
</el-tab-pane>
</el-tabs>
</div>
</template>
<!-- start----------------调用方式----------------start -->
<!--
组件名<chart-tabs></chart-tabs>
目前有两种形式分别是defaultrouter
默认default非路由切换<chart-tabs :data="tabsData" />
路由模式router点击tab路由切换<chart-tabs :data="tabsData" router />
数据格式
tabsData: [
{
i18n: 'entities.securityEvents',
path: '/detection/securityEvent',
icon: 'cn-icon cn-icon-a-SecurityEvent'
}
]
需要禁用则对应对象里添加 disable: true
-->
<!--
active颜色<chart-tabs :data="tabsData" color="red" />
-->
<!--
接收回调@click
-->
<!-- end----------------调用方式----------------end -->
<script>
import { overwriteUrl, urlParamsHandler } from '@/utils/tools'
import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { useStore } from 'vuex'
export default {
name: 'ChartTabs',
props: {
data: {
type: Array
},
router: {
type: String,
default: 'noRouter'
},
color: {
type: String
}
},
data () {
return {
leftOffset: 27,
timer: null
}
},
setup (props) {
const tabsData = ref([])
const router = useRouter()
const store = useStore()
const routerPath = router.currentRoute.value.path
const tabList = store.getters.getChartTabList
let currentTab = '0'
if (props.data) {
tabsData.value = [...props.data]
tabsData.value.forEach(item => {
if (!item.disable) {
item.disable = false
}
})
// 非路由跳转获取tabIndex定位
// 路由跳转根据路由名对比传入数据获取index从而定位
// 路由模式为了切换有过渡需要设置上次tab和当前tab
if (props.router === 'noRouter') {
const { query } = useRoute()
const tabIndexParam = query.tabIndex
currentTab = ref(tabIndexParam ? JSON.stringify(tabIndexParam) : '0')
} else if (!tabList) {
// 此处为刷新界面时根据当前路由获取index
currentTab = tabsData.value.findIndex(item => {
return item.path === routerPath
})
currentTab = JSON.stringify(currentTab)
store.dispatch('dispatchChartTabList', [{ path: routerPath, index: currentTab }])
} else {
// 此处为切换界面如果window里保存的路径和tabsData里的路径一致选择window数据并使用
// 两个不一致的话则默认选择tabsData里的第一条
let obj0 = null
let obj1 = null
obj0 = tabsData.value.find(item => { return item.path === tabList[0].path })
if (tabList[1]) {
obj1 = tabsData.value.find(item => { return item.path === tabList[1].path })
}
if (obj0 && obj1) {
currentTab = tabList[1].index
// 场景从遮罩面板进入界面时重置状态默认选中第一个tab
if (routerPath === tabList[0].path) {
currentTab = tabList[0].index
store.dispatch('dispatchChartTabList', [{ path: tabsData.value[0].path, index: '0' }])
}
} else if (obj0) {
currentTab = tabList[0].index
} else {
store.dispatch('dispatchChartTabList', [{ path: tabsData.value[0].path, index: '0' }])
currentTab = '0'
}
}
}
return {
currentTab,
tabsData
}
},
mounted () {
const time = this.router === 'noRouter' ? 900 : 0
this.timer = setTimeout(() => {
this.$nextTick(() => {
this.init()
})
}, time)
},
watch: {
currentTab (n) {
if (this.router === 'noRouter') {
const { query } = this.$route
const newUrl = urlParamsHandler(window.location.href, query, {
tabIndex: n
})
overwriteUrl(newUrl)
}
this.$nextTick(() => {
this.handleActiveBar(n)
})
}
},
methods: {
init () {
// 添加禁用小手
this.tabsData.forEach((item, index) => {
if (item.disable) {
const tabEle = document.getElementById('tab-' + index)
if (tabEle) {
tabEle.style.cssText = 'cursor: not-allowed;'
}
}
})
const tabList = this.$store.getters.getChartTabList
if (tabList && this.router !== 'noRouter') {
tabList.forEach((item) => {
this.$nextTick(() => {
this.handleActiveBar(parseFloat(item.index))
})
})
} else {
this.$nextTick(() => {
this.handleActiveBar(this.currentTab)
})
this.$store.dispatch('dispatchChartTabList', null)
}
},
handleActiveBar (index) {
const activeDom = document.getElementsByClassName('el-tabs__item is-top is-active')
const tabDom = document.getElementById('tab-' + index)
if (tabDom && activeDom) {
this.$nextTick(() => {
const offsetLeft = tabDom.offsetLeft
const clientWidth = tabDom.clientWidth
const clientLeft = tabDom.clientLeft
const activeBar = document.querySelector('.chart-tabs .chart-tabs__active-bar')
if (this.router === 'noRouter') {
activeBar.style.cssText += `width: ${clientWidth + 2}px; left: ${offsetLeft + this.leftOffset + clientLeft - 1}px;`
} else {
// 数组长度为1即代表刚刷新界面获取active的dom添加样式避免原模式错位问题
// 可添加css样式也可添加class类名两个操作选一即可
if (this.$store.getters.getChartTabList.length === 1) {
// 此处操作是因为初始化时给active加border导致tab下移故需要将整体往上移动对应高度
const topDom = document.getElementsByClassName('el-tabs__header is-top')
topDom[0].style.cssText += 'top: -3px'
activeDom[0].style.cssText += 'height: calc(100% - 1px);border-top: 4px #046EC9 solid;border-radius: 5px 5px 0 0;transition: all linear .2s;'
} else {
activeBar.style.cssText += `width: ${clientWidth + 2}px; left: ${offsetLeft + this.leftOffset + clientLeft - 1}px;`
activeDom[0].style.cssText += 'height:calc(100% + 1px)'
}
}
})
}
},
handleClick (item) {
this.$emit('click', item)
const tabList = this.$store.getters.getChartTabList
if (this.router === 'noRouter') {
const { query } = this.$route
const newUrl = urlParamsHandler(window.location.href, query, {
t: +new Date(),
tabIndex: item.index
})
overwriteUrl(newUrl)
} else {
tabList.push({
path: this.tabsData[item.index].path,
index: item.index
})
if (tabList.length > 2) {
tabList.splice(0, 1)
}
this.$store.dispatch('dispatchChartTabList', tabList)
this.$router.push({
path: this.tabsData[item.index].path,
query: {
t: +new Date()
}
})
}
}
},
beforeUnmount () {
clearTimeout(this.timer)
const path = this.$router.currentRoute.value.path
const list = this.$store.getters.getChartTabList
if (list && this.router !== 'noRouter') {
if (list[1]) {
// 去其他界面,清除状态
if (path !== list[0].path && path !== list[1].path) {
this.$store.dispatch('dispatchChartTabList', null)
}
} else if (path !== list[0].path) {
// 避免刷新页面之后又点击菜单栏进入该界面,还保留上次点击状态
this.$store.dispatch('dispatchChartTabList', null)
}
}
}
}
</script>

View File

@@ -1,5 +1,5 @@
<template> <template>
<div v-if="showDefault" class="error-component"> <div v-if="showDefault" class="error-component" :style="style" :class="myClass">
<div class="error-block" :style="{'max-width': localMaxWidth, 'width': localWidth}"> <div class="error-block" :style="{'max-width': localMaxWidth, 'width': localWidth}">
<svg class="icon error-icon-default" aria-hidden="true"> <svg class="icon error-icon-default" aria-hidden="true">
<use xlink:href="#cn-icon-baocuo"></use> <use xlink:href="#cn-icon-baocuo"></use>
@@ -101,6 +101,12 @@ export default {
// 自定义svg图标 // 自定义svg图标
svg: { svg: {
type: String type: String
},
style: {
type: String
},
class: {
type: String
} }
}, },
data () { data () {
@@ -109,7 +115,8 @@ export default {
showSmall: false, // 显示错误的类型true为图表模块内显示报错false为标题后显示报错 showSmall: false, // 显示错误的类型true为图表模块内显示报错false为标题后显示报错
localWidth: '', localWidth: '',
localMaxWidth: '', localMaxWidth: '',
localPopoverWidth: '' localPopoverWidth: '',
myClass: this.class
} }
}, },
mounted () { mounted () {
@@ -141,7 +148,6 @@ export default {
hoverError (e) { hoverError (e) {
// const dom = document.getElementById('error-content') // const dom = document.getElementById('error-content')
// if (dom) { // if (dom) {
// console.log('---', dom.clientHeight)
// } // }
} }
} }

View File

@@ -1,4 +0,0 @@
import DatePicker from './src/date-picker';
import type { SFCWithInstall } from 'element-plus/lib/utils/types';
declare const _DatePicker: SFCWithInstall<typeof DatePicker>;
export default _DatePicker;

File diff suppressed because it is too large Load Diff

View File

@@ -1,61 +0,0 @@
import { PropType } from 'vue';
import dayjs from 'dayjs';
declare const _default: import("vue").DefineComponent<{
date: {
type: PropType<dayjs.Dayjs>;
};
minDate: {
type: PropType<dayjs.Dayjs>;
};
maxDate: {
type: PropType<dayjs.Dayjs>;
};
parsedValue: {
type: PropType<dayjs.Dayjs | dayjs.Dayjs[]>;
};
selectionMode: {
type: StringConstructor;
default: string;
};
showWeekNumber: {
type: BooleanConstructor;
default: boolean;
};
disabledDate: {
type: FunctionConstructor;
};
cellClassName: {
type: FunctionConstructor;
};
rangeState: {
type: ObjectConstructor;
default: () => {
endDate: any;
selecting: boolean;
};
};
}, {
handleMouseMove: (event: any) => void;
t: (...args: any[]) => string;
rows: import("vue").ComputedRef<any[][]>;
isWeekActive: (cell: any) => any;
getCellClasses: (cell: any) => string;
WEEKS: import("vue").ComputedRef<any>;
handleClick: (event: any) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("changerange" | "pick" | "select")[], "changerange" | "pick" | "select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
selectionMode: unknown;
showWeekNumber: boolean;
rangeState: Record<string, any>;
} & {
date?: unknown;
minDate?: unknown;
maxDate?: unknown;
parsedValue?: unknown;
disabledDate?: unknown;
cellClassName?: unknown;
}>, {
selectionMode: unknown;
showWeekNumber: boolean;
rangeState: Record<string, any>;
}>;
export default _default;

View File

@@ -1,50 +0,0 @@
import dayjs from 'dayjs';
import { PropType } from 'vue';
declare const _default: import("vue").DefineComponent<{
disabledDate: {
type: PropType<(_: Date) => void>;
};
selectionMode: {
type: StringConstructor;
default: string;
};
minDate: {
type: PropType<dayjs.Dayjs>;
};
maxDate: {
type: PropType<dayjs.Dayjs>;
};
date: {
type: PropType<dayjs.Dayjs>;
};
parsedValue: {
type: PropType<dayjs.Dayjs>;
};
rangeState: {
type: ObjectConstructor;
default: () => {
endDate: any;
selecting: boolean;
};
};
}, {
handleMouseMove: (event: any) => void;
handleMonthTableClick: (event: any) => void;
rows: import("vue").ComputedRef<any[][]>;
getCellStyle: (cell: any) => any;
t: (...args: any[]) => string;
months: any;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("changerange" | "pick" | "select")[], "changerange" | "pick" | "select", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
selectionMode: unknown;
rangeState: Record<string, any>;
} & {
disabledDate?: unknown;
minDate?: unknown;
maxDate?: unknown;
date?: unknown;
parsedValue?: unknown;
}>, {
selectionMode: unknown;
rangeState: Record<string, any>;
}>;
export default _default;

View File

@@ -1,22 +0,0 @@
import { PropType } from 'vue';
import dayjs from 'dayjs';
declare const _default: import("vue").DefineComponent<{
disabledDate: {
type: PropType<(_: Date) => void>;
};
parsedValue: {
type: PropType<dayjs.Dayjs>;
};
date: {
type: PropType<dayjs.Dayjs>;
};
}, {
startYear: import("vue").ComputedRef<number>;
getCellStyle: (year: any) => any;
handleYearTableClick: (event: any) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "pick"[], "pick", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{} & {
disabledDate?: unknown;
parsedValue?: unknown;
date?: unknown;
}>, {}>;
export default _default;

View File

@@ -1,136 +0,0 @@
import dayjs, { Dayjs } from 'dayjs';
import { PropType } from 'vue';
declare const _default: import("vue").DefineComponent<{
visible: {
type: BooleanConstructor;
default: boolean;
};
parsedValue: {
type: PropType<dayjs.Dayjs | dayjs.Dayjs[]>;
};
format: {
type: StringConstructor;
default: string;
};
type: {
type: StringConstructor;
required: true;
};
}, {
handleTimePick: (value: any, visible: any, first: any) => void;
handleTimePickClose: () => void;
onTimePickerInputFocus: () => void;
timePickerVisible: import("vue").Ref<boolean>;
visibleTime: import("vue").ComputedRef<any>;
visibleDate: import("vue").ComputedRef<any>;
showTime: import("vue").ComputedRef<boolean>;
changeToNow: () => void;
onConfirm: () => void;
footerVisible: import("vue").ComputedRef<boolean>;
handleYearPick: (year: any) => void;
showMonthPicker: () => void;
showYearPicker: () => void;
handleMonthPick: (month: any) => void;
hasShortcuts: import("vue").ComputedRef<boolean>;
shortcuts: any;
arrowControl: any;
disabledDate: any;
cellClassName: any;
selectionMode: import("vue").ComputedRef<unknown>;
handleShortcutClick: (shortcut: any) => void;
prevYear_: () => void;
nextYear_: () => void;
prevMonth_: () => void;
nextMonth_: () => void;
innerDate: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): number;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
subtract: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date: dayjs.ConfigType, unit?: "M" | "week" | "month" | "year" | "day" | "date" | "hour" | "minute" | "second" | "millisecond" | "d" | "y" | "h" | "m" | "s" | "ms" | "w" | "quarter" | "Q", float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: () => number;
isBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
localeData: () => any;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
weekYear: () => number;
dayOfYear: {
(): number;
(value: number): dayjs.Dayjs;
};
isSameOrAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
}>;
t: (...args: any[]) => string;
yearLabel: import("vue").ComputedRef<string>;
currentView: import("vue").Ref<string>;
month: import("vue").ComputedRef<number>;
handleDatePick: (value: Dayjs) => void;
handleVisibleTimeChange: (value: any) => void;
handleVisibleDateChange: (value: any) => void;
timeFormat: import("vue").ComputedRef<any>;
userInputTime: any;
userInputDate: any;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("pick" | "set-picker-option")[], "pick" | "set-picker-option", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
visible: boolean;
format: unknown;
type: unknown;
} & {
parsedValue?: unknown;
}>, {
visible: boolean;
format: unknown;
}>;
export default _default;

View File

@@ -1,210 +0,0 @@
import { PropType } from 'vue';
import dayjs from 'dayjs';
declare const _default: import("vue").DefineComponent<{
unlinkPanels: BooleanConstructor;
parsedValue: {
type: PropType<dayjs.Dayjs[]>;
};
type: {
type: StringConstructor;
required: true;
};
}, {
shortcuts: any;
disabledDate: any;
cellClassName: any;
minTimePickerVisible: import("vue").Ref<boolean>;
maxTimePickerVisible: import("vue").Ref<boolean>;
handleMinTimeClose: () => void;
handleMaxTimeClose: () => void;
handleShortcutClick: (shortcut: any) => void;
rangeState: import("vue").Ref<{
endDate: any;
selecting: boolean;
}>;
minDate: any;
maxDate: any;
handleRangePick: (val: any, close?: boolean) => void;
onSelect: (selecting: any) => void;
handleChangeRange: (val: any) => void;
btnDisabled: import("vue").ComputedRef<boolean>;
enableYearArrow: import("vue").ComputedRef<boolean>;
enableMonthArrow: import("vue").ComputedRef<boolean>;
rightPrevMonth: () => void;
rightPrevYear: () => void;
rightNextMonth: () => void;
rightNextYear: () => void;
leftPrevMonth: () => void;
leftPrevYear: () => void;
leftNextMonth: () => void;
leftNextYear: () => void;
hasShortcuts: import("vue").ComputedRef<boolean>;
leftLabel: import("vue").ComputedRef<string>;
rightLabel: import("vue").ComputedRef<string>;
leftDate: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): number;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
subtract: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date: dayjs.ConfigType, unit?: "M" | "millisecond" | "second" | "minute" | "hour" | "day" | "month" | "year" | "date" | "d" | "y" | "h" | "m" | "s" | "ms" | "week" | "w" | "quarter" | "Q", float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: () => number;
isBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
localeData: () => any;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
weekYear: () => number;
dayOfYear: {
(): number;
(value: number): dayjs.Dayjs;
};
isSameOrAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
}>;
rightDate: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): number;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
subtract: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date: dayjs.ConfigType, unit?: "M" | "millisecond" | "second" | "minute" | "hour" | "day" | "month" | "year" | "date" | "d" | "y" | "h" | "m" | "s" | "ms" | "week" | "w" | "quarter" | "Q", float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: () => number;
isBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
localeData: () => any;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
weekYear: () => number;
dayOfYear: {
(): number;
(value: number): dayjs.Dayjs;
};
isSameOrAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
}>;
showTime: import("vue").ComputedRef<boolean>;
t: (...args: any[]) => string;
minVisibleDate: import("vue").ComputedRef<any>;
maxVisibleDate: import("vue").ComputedRef<any>;
minVisibleTime: import("vue").ComputedRef<any>;
maxVisibleTime: import("vue").ComputedRef<any>;
arrowControl: any;
handleDateInput: (value: any, type: any) => void;
handleDateChange: (value: any, type: any) => void;
handleTimeInput: (value: any, type: any) => void;
handleTimeChange: (value: any, type: any) => void;
handleMinTimePick: (value: any, visible: any, first: any) => void;
handleMaxTimePick: (value: any, visible: any, first: any) => void;
handleClear: () => void;
handleConfirm: (visible?: boolean) => void;
timeFormat: import("vue").ComputedRef<any>;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("pick" | "set-picker-option")[], "pick" | "set-picker-option", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
unlinkPanels: boolean;
type: unknown;
} & {
parsedValue?: unknown;
}>, {
unlinkPanels: boolean;
}>;
export default _default;

View File

@@ -1,179 +0,0 @@
import dayjs from 'dayjs';
import { PropType } from 'vue';
declare const _default: import("vue").DefineComponent<{
unlinkPanels: BooleanConstructor;
parsedValue: {
type: PropType<dayjs.Dayjs[]>;
};
}, {
shortcuts: any;
disabledDate: any;
onSelect: (selecting: any) => void;
handleRangePick: (val: any, close?: boolean) => void;
rangeState: import("vue").Ref<{
endDate: any;
selecting: boolean;
}>;
handleChangeRange: (val: any) => void;
minDate: any;
maxDate: any;
enableYearArrow: import("vue").ComputedRef<boolean>;
leftLabel: import("vue").ComputedRef<string>;
rightLabel: import("vue").ComputedRef<string>;
leftNextYear: () => void;
leftPrevYear: () => void;
rightNextYear: () => void;
rightPrevYear: () => void;
t: (...args: any[]) => string;
leftDate: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): number;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
subtract: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date: dayjs.ConfigType, unit?: "M" | "millisecond" | "second" | "minute" | "hour" | "day" | "month" | "year" | "date" | "d" | "y" | "h" | "m" | "s" | "ms" | "week" | "w" | "quarter" | "Q", float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: () => number;
isBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
localeData: () => any;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
weekYear: () => number;
dayOfYear: {
(): number;
(value: number): dayjs.Dayjs;
};
isSameOrAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
}>;
rightDate: import("vue").Ref<{
clone: () => dayjs.Dayjs;
isValid: () => boolean;
year: {
(): number;
(value: number): dayjs.Dayjs;
};
month: {
(): number;
(value: number): dayjs.Dayjs;
};
date: {
(): number;
(value: number): dayjs.Dayjs;
};
day: {
(): number;
(value: number): dayjs.Dayjs;
};
hour: {
(): number;
(value: number): dayjs.Dayjs;
};
minute: {
(): number;
(value: number): dayjs.Dayjs;
};
second: {
(): number;
(value: number): dayjs.Dayjs;
};
millisecond: {
(): number;
(value: number): dayjs.Dayjs;
};
set: (unit: dayjs.UnitType, value: number) => dayjs.Dayjs;
get: (unit: dayjs.UnitType) => number;
add: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
subtract: (value: number, unit: dayjs.OpUnitType) => dayjs.Dayjs;
startOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
endOf: (unit: dayjs.OpUnitType) => dayjs.Dayjs;
format: (template?: string) => string;
diff: (date: dayjs.ConfigType, unit?: "M" | "millisecond" | "second" | "minute" | "hour" | "day" | "month" | "year" | "date" | "d" | "y" | "h" | "m" | "s" | "ms" | "week" | "w" | "quarter" | "Q", float?: boolean) => number;
valueOf: () => number;
unix: () => number;
daysInMonth: () => number;
toDate: () => Date;
toJSON: () => string;
toISOString: () => string;
toString: () => string;
utcOffset: () => number;
isBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSame: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
locale: {
(): string;
(preset: string | ILocale, object?: Partial<ILocale>): dayjs.Dayjs;
};
localeData: () => any;
week: {
(): number;
(value: number): dayjs.Dayjs;
};
weekYear: () => number;
dayOfYear: {
(): number;
(value: number): dayjs.Dayjs;
};
isSameOrAfter: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
isSameOrBefore: (date: dayjs.ConfigType, unit?: dayjs.OpUnitType) => boolean;
}>;
hasShortcuts: import("vue").ComputedRef<boolean>;
handleShortcutClick: (shortcut: any) => void;
}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("pick" | "set-picker-option")[], "pick" | "set-picker-option", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
unlinkPanels: boolean;
} & {
parsedValue?: unknown;
}>, {
unlinkPanels: boolean;
}>;
export default _default;

View File

@@ -1,154 +0,0 @@
declare const _default: import("vue").DefineComponent<{
type: {
type: StringConstructor;
default: string;
};
name: {
type: (ArrayConstructor | StringConstructor)[];
default: string;
};
popperClass: {
type: StringConstructor;
default: string;
};
format: {
type: StringConstructor;
};
clearable: {
type: BooleanConstructor;
default: boolean;
};
clearIcon: {
type: StringConstructor;
default: string;
};
editable: {
type: BooleanConstructor;
default: boolean;
};
prefixIcon: {
type: StringConstructor;
default: string;
};
size: {
type: import("vue").PropType<ComponentSize>;
validator: (val: string) => boolean;
};
readonly: {
type: BooleanConstructor;
default: boolean;
};
disabled: {
type: BooleanConstructor;
default: boolean;
};
placeholder: {
type: StringConstructor;
default: string;
};
popperOptions: {
type: import("vue").PropType<import("@popperjs/core").Options>;
default: () => {};
};
modelValue: {
type: import("vue").PropType<string | Date | Date[]>;
default: string;
};
rangeSeparator: {
type: StringConstructor;
default: string;
};
startPlaceholder: StringConstructor;
endPlaceholder: StringConstructor;
defaultValue: {
type: import("vue").PropType<Date | Date[]>;
};
defaultTime: {
type: import("vue").PropType<Date | Date[]>;
};
isRange: {
type: BooleanConstructor;
default: boolean;
};
disabledHours: {
type: FunctionConstructor;
};
disabledMinutes: {
type: FunctionConstructor;
};
disabledSeconds: {
type: FunctionConstructor;
};
disabledDate: {
type: FunctionConstructor;
};
cellClassName: {
type: FunctionConstructor;
};
shortcuts: {
type: ArrayConstructor;
default: () => any[];
};
arrowControl: {
type: BooleanConstructor;
default: boolean;
};
validateEvent: {
type: BooleanConstructor;
default: boolean;
};
unlinkPanels: BooleanConstructor;
}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
[key: string]: any;
}>, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
type: unknown;
name: unknown;
popperClass: unknown;
clearable: boolean;
clearIcon: unknown;
editable: boolean;
prefixIcon: unknown;
readonly: boolean;
disabled: boolean;
placeholder: unknown;
popperOptions: unknown;
modelValue: unknown;
rangeSeparator: unknown;
isRange: boolean;
shortcuts: unknown;
arrowControl: boolean;
validateEvent: boolean;
unlinkPanels: boolean;
} & {
format?: unknown;
size?: unknown;
startPlaceholder?: unknown;
endPlaceholder?: unknown;
defaultValue?: unknown;
defaultTime?: unknown;
disabledHours?: unknown;
disabledMinutes?: unknown;
disabledSeconds?: unknown;
disabledDate?: unknown;
cellClassName?: unknown;
}>, {
type: unknown;
name: unknown;
popperClass: unknown;
clearable: boolean;
clearIcon: unknown;
editable: boolean;
prefixIcon: unknown;
readonly: boolean;
disabled: boolean;
placeholder: unknown;
popperOptions: unknown;
modelValue: unknown;
rangeSeparator: unknown;
isRange: boolean;
shortcuts: unknown;
arrowControl: boolean;
validateEvent: boolean;
unlinkPanels: boolean;
}>;
export default _default;

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