diff --git a/src/assets/css/components/index.scss b/src/assets/css/components/index.scss
index baeb75c2..82fa535f 100644
--- a/src/assets/css/components/index.scss
+++ b/src/assets/css/components/index.scss
@@ -27,6 +27,9 @@
@import './views/charts/chartAppBasicInfo';
@import './views/charts/chartDomainDnsRecord';
@import './views/charts/chartDomainWhois';
+@import './views/charts/chartEchartWithTable';
@import './views/charts/ipBasicInfo';
+@import './views/charts/chartEchartIpHostedDomain';
+@import './views/charts/chartEchartAppRelateDomain';
//@import '../chart';
diff --git a/src/assets/css/components/views/charts/chartEchartAppRelateDomain.scss b/src/assets/css/components/views/charts/chartEchartAppRelateDomain.scss
new file mode 100644
index 00000000..f1cc55aa
--- /dev/null
+++ b/src/assets/css/components/views/charts/chartEchartAppRelateDomain.scss
@@ -0,0 +1,70 @@
+.cn-panel2 {
+ position: relative;
+ .chart-list {
+ .vue-grid-layout > .vue-grid-item {
+ .cn-chart {
+ .app-detail__related-domain {
+ display: flex;
+ flex-direction: row;
+ height: 100%;
+ width: 100%;
+ .related-domain__list {
+ display: flex;
+ flex-direction: column;
+ flex: 0 0 25%;
+ overflow: auto;
+ padding-bottom: 20px;
+ border-bottom: 1px solid $--right-box-border-color;
+
+ .related-domain__list-title {
+ padding: 13px 30px 0;
+ height: 40px;
+ color: #6B717B;
+ }
+
+ .related-domain__list-body {
+ display: flex;
+ flex-direction: column;
+ height: calc(100% - 40px);
+ overflow: hidden auto;
+ }
+
+ .related-domain__list-row {
+ padding: 5px 30px;
+ color: #3976CB;
+
+ i {
+ color: #B8C1D1;
+ }
+ }
+ }
+
+ .related-domain__chart {
+ display: flex;
+ flex-direction: row;
+ flex: 1;
+
+ & > div {
+ flex: 0 0 50%;
+ display: flex;
+ flex-direction: column;
+
+ .related-domain__chart-title {
+ padding-left: 20px;
+ line-height: 50px;
+ flex: 0 0 50px;
+ }
+
+ .chart-drawing {
+ flex: 1;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+.cn-panel2 .chart-list > .vue-grid-layout > .vue-grid-item > .panel-chart .chart-header {
+ border-bottom: 1px solid $--right-box-border-color;
+}
\ No newline at end of file
diff --git a/src/assets/css/components/views/charts/chartEchartIpHostedDomain.scss b/src/assets/css/components/views/charts/chartEchartIpHostedDomain.scss
new file mode 100644
index 00000000..cb8de62e
--- /dev/null
+++ b/src/assets/css/components/views/charts/chartEchartIpHostedDomain.scss
@@ -0,0 +1,67 @@
+.cn-panel2 {
+ position: relative;
+ .chart-list {
+ .vue-grid-layout > .vue-grid-item {
+ .cn-chart {
+ .ip-detail__hosted-domain {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ width: 100%;
+ .hosted-domain__list {
+ display: flex;
+ flex-direction: column;
+ flex: 0 0 25%;
+ overflow: auto;
+ padding-bottom: 20px;
+ border-bottom: 1px solid $--right-box-border-color;
+
+ .hosted-domain__list-title {
+ padding: 13px 30px 0;
+ height: 40px;
+ color: #6B717B;
+ }
+
+ .hosted-domain__list-body {
+ display: flex;
+ flex-direction: column;
+ height: calc(100% - 40px);
+ overflow: hidden auto;
+ }
+
+ .hosted-domain__list-row {
+ padding: 5px 30px;
+ color: #3976CB;
+
+ i {
+ color: #B8C1D1;
+ }
+ }
+ }
+
+ .hosted-domain__chart {
+ display: flex;
+ flex-direction: column;
+ flex: 1;
+
+ & > div {
+ flex: 0 0 50%;
+ display: flex;
+ flex-direction: column;
+
+ .hosted-domain__chart-title {
+ padding-left: 20px;
+ line-height: 50px;
+ flex: 0 0 50px;
+ }
+
+ .chart-drawing {
+ flex: 1;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/assets/css/components/views/charts/chartEchartWithTable.scss b/src/assets/css/components/views/charts/chartEchartWithTable.scss
new file mode 100644
index 00000000..88bcb1d1
--- /dev/null
+++ b/src/assets/css/components/views/charts/chartEchartWithTable.scss
@@ -0,0 +1,78 @@
+.cn-panel2 {
+ position: relative;
+ .chart-list {
+ .vue-grid-layout>.vue-grid-item {
+ .cn-chart {
+ height: 100% !important;
+ .cn-chart__echarts {
+ display: flex;
+ flex-direction: column;
+ height:100%;
+ .cn-chart__body {
+ flex: auto;
+ display: flex;
+ overflow: hidden auto;
+
+ .el-table {
+ padding: 0 10px;
+
+ &:before {
+ height: 0;
+ }
+ thead {
+ color: #333;
+ }
+ th.is-leaf, td {
+ border-bottom: none;
+ }
+ th {
+ padding-bottom: 5px;
+ }
+ td {
+ padding: 4px 0;
+ color: #333;
+ }
+ }
+
+ .chart-drawing{
+ height: calc(100% - 36px) !important;
+ }
+ }
+ .cn-chart__body.pie-with-table {
+ flex-basis: 40%;
+ }
+ .cn-chart__footer.pie-with-table {
+ flex-basis: 60%;
+ padding: 10px 30px 30px;
+ }
+ }
+ .pie-table {
+ font-size: 14px;
+ color: #333333;
+ font-weight: 500;
+
+ .el-table__header-wrapper {
+ .cell {
+ color: #333;
+ }
+ }
+ .el-table__expanded-cell[class*=cell] {
+ padding: 0;
+ }
+
+ .expand-table .el-table__body .el-table__row:last-of-type td {
+ border: none;
+ }
+ .expand-table {
+ font-weight: 400;
+ color: #606266;
+
+ .el-table__body-wrapper {
+ height: auto !important;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/views/charts/Chart2.vue b/src/views/charts/Chart2.vue
index 4b46e397..79acb4f1 100644
--- a/src/views/charts/Chart2.vue
+++ b/src/views/charts/Chart2.vue
@@ -153,6 +153,42 @@
@showLoading="showLoading"
>
+