diff --git a/src/pages/demo/chart/index/index.vue b/src/pages/demo/chart/index/index.vue
index 5ef64d1f..83bbe7f8 100644
--- a/src/pages/demo/chart/index/index.vue
+++ b/src/pages/demo/chart/index/index.vue
@@ -9,82 +9,17 @@
diff --git a/src/pages/demo/chart/index/mixins/chart.js b/src/pages/demo/chart/index/mixins/chart.js
new file mode 100644
index 00000000..7de2e172
--- /dev/null
+++ b/src/pages/demo/chart/index/mixins/chart.js
@@ -0,0 +1,24 @@
+export default {
+ data () {
+ return {
+ // 数据
+ G2Line1: []
+ }
+ },
+ mounted () {
+ // 请求图表数据
+ this.syncData()
+ },
+ methods: {
+ // 请求图表数据
+ syncData () {
+ const api = [
+ {url: '/api/chart/G2Line', data: {code: 1}}
+ ]
+ this.$axios.all(api.map(e => this.$axios.post(e.url, e.data)))
+ .then(this.$axios.spread((G2Line1) => {
+ this.G2Line1 = G2Line1
+ }))
+ }
+ }
+}
diff --git a/src/pages/demo/chart/index/mixins/layout.js b/src/pages/demo/chart/index/mixins/layout.js
new file mode 100644
index 00000000..66028cd8
--- /dev/null
+++ b/src/pages/demo/chart/index/mixins/layout.js
@@ -0,0 +1,37 @@
+export default {
+ data () {
+ return {
+ layout: {
+ layout: [
+ {'x': 0, 'y': 0, 'w': 8, 'h': 9, 'i': '0'},
+ {'x': 8, 'y': 9, 'w': 4, 'h': 7, 'i': '1'},
+ {'x': 0, 'y': 9, 'w': 4, 'h': 7, 'i': '2'},
+ {'x': 8, 'y': 0, 'w': 4, 'h': 9, 'i': '3'},
+ {'x': 4, 'y': 9, 'w': 4, 'h': 7, 'i': '4'}
+ ],
+ colNum: 12,
+ rowHeight: 30,
+ isDraggable: true,
+ isResizable: true,
+ isMirrored: false,
+ verticalCompact: true,
+ margin: [10, 10],
+ useCssTransforms: true
+ }
+ }
+ },
+ methods: {
+ // 改变尺寸
+ resizeHandler (name) {
+ this.$nextTick(() => {
+ this.$refs[name].resize()
+ })
+ },
+ // 改变尺寸完成
+ resizedHandler (name) {
+ this.$nextTick(() => {
+ this.$refs[name].resize()
+ })
+ }
+ }
+}
diff --git a/src/pages/demo/chart/index/style.scss b/src/pages/demo/chart/index/style.scss
new file mode 100644
index 00000000..3651a2bf
--- /dev/null
+++ b/src/pages/demo/chart/index/style.scss
@@ -0,0 +1,22 @@
+@import '~@/assets/style/public.scss';
+.demo-chart-index {
+ .vue-grid-layout {
+ margin: -10px;
+ .el-card {
+ @extend %unable-select;
+ height: 100%;
+ .el-card__body {
+ height: 100%;
+ padding: 0px;
+ }
+ }
+ .vue-resizable-handle {
+ bottom: 6px;
+ right: 6px;
+ opacity: .3;
+ &:hover{
+ opacity: 1;
+ }
+ }
+ }
+}
\ No newline at end of file