|
|
@@ -0,0 +1,84 @@
|
|
|
+<template>
|
|
|
+ <div>
|
|
|
+ <grid-layout
|
|
|
+ style="margin: 0 -10px;"
|
|
|
+ :layout="layout"
|
|
|
+ :col-num="12"
|
|
|
+ :row-height="30"
|
|
|
+ :is-draggable="editable"
|
|
|
+ :is-resizable="editable"
|
|
|
+ :is-mirrored="false"
|
|
|
+ :vertical-compact="true"
|
|
|
+ :margin="[10, 10]"
|
|
|
+ :use-css-transforms="true"
|
|
|
+ >
|
|
|
+ <grid-item
|
|
|
+ v-for="item in layout"
|
|
|
+ class="widget-wrapper"
|
|
|
+ :x="item.x"
|
|
|
+ :y="item.y"
|
|
|
+ :w="item.w"
|
|
|
+ :h="item.h"
|
|
|
+ :i="item.i"
|
|
|
+ :key="item.i"
|
|
|
+ >
|
|
|
+ <component :is="item.name"></component>
|
|
|
+ </grid-item>
|
|
|
+ </grid-layout>
|
|
|
+ <el-button v-if="editable" @click="save">保存</el-button>
|
|
|
+ <!-- <el-button v-else @click="editable = true">编辑</el-button> -->
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { GridLayout, GridItem } from 'vue-grid-layout';
|
|
|
+import DatasWidget from './DatasWidget';
|
|
|
+import ArtTypeWidget from './ArtTypeWidget';
|
|
|
+import ExamWidegt from './ExamWidegt';
|
|
|
+import PassWidget from './PassWidget';
|
|
|
+import RateWidget from './RateWidget';
|
|
|
+import PieChartWidget from '@/widgets/PieChartWidget';
|
|
|
+
|
|
|
+export default {
|
|
|
+ created() {},
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ layout: [
|
|
|
+ { x: 0, y: 0, w: 12, h: 5, i: '0', name: 'DatasWidget' },
|
|
|
+ { x: 0, y: 6, w: 6, h: 12, i: '2', name: 'PassWidget' },
|
|
|
+ { x: 6, y: 6, w: 6, h: 12, i: '3', name: 'ExamWidegt' },
|
|
|
+ { x: 0, y: 18, w: 6, h: 12, i: '4', name: 'ArtTypeWidget' },
|
|
|
+ { x: 6, y: 18, w: 6, h: 12, i: '4', name: 'PieChartWidget' },
|
|
|
+ { x: 0, y: 24, w: 12, h: 12, i: '6', name: 'RateWidget' }
|
|
|
+ ],
|
|
|
+ editable: false
|
|
|
+ };
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ save() {
|
|
|
+ console.log(JSON.stringify(this.layout));
|
|
|
+ this.editable = false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ GridLayout,
|
|
|
+ GridItem,
|
|
|
+ DatasWidget,
|
|
|
+ ArtTypeWidget,
|
|
|
+ ExamWidegt,
|
|
|
+ PassWidget,
|
|
|
+ PieChartWidget,
|
|
|
+ RateWidget
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less">
|
|
|
+.widget-wrapper {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ .el-card {
|
|
|
+ flex-grow: 1;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|