Former-commit-id: 4c6a0a1f72e1f512b919b934d8483ed430b54766 [formerly f1a4641c19751caddc88308bd8e29fb337f88982] [formerly 4c6a0a1f72e1f512b919b934d8483ed430b54766 [formerly f1a4641c19751caddc88308bd8e29fb337f88982] [formerly 4c6a0a1f72e1f512b919b934d8483ed430b54766 [formerly f1a4641c19751caddc88308bd8e29fb337f88982] [formerly f1a4641c19751caddc88308bd8e29fb337f88982 [formerly 065fde485c713b3ae79131d9da1234dfcbc73cc4 [formerly 470fef55bcb2073a14b6fcc998caabcb83a1097c]]]]] Former-commit-id: c239db922bd8bd06fb68041118a2d25a9c7b475d Former-commit-id: ac5808e62e6ac021da35462b59a04004d62db2dc Former-commit-id: 7890270a60f4db69526403a56cb2dd4feb662e27 [formerly 7b8dd27f1eb72f5e3748d8174fa69c801a73ce1a] Former-commit-id: 027ba79fa86ad1be42f14ef03afebde0cc6ed924 Former-commit-id: 0425a72d2e2b3536fb2ac74199ede23a1e4bea96 Former-commit-id: 96bdce03185ba3befec93d08016d63c7c3c2030a Former-commit-id: e988828be9b03917a9579651a2912d2ed840fb7d Former-commit-id: 07646c36ed91ea4e1efac1bdf1b16b84d8d32eaa
119 lines
3.3 KiB
Vue
119 lines
3.3 KiB
Vue
<template>
|
|
<d2-container type="full" class="page">
|
|
<d2-grid-layout
|
|
v-bind="layout"
|
|
@layout-updated="layoutUpdatedHandler">
|
|
<d2-grid-item
|
|
v-for="(item, index) in layout.layout"
|
|
:key="index"
|
|
v-bind="item"
|
|
@resize="resizeHandler"
|
|
@move="moveHandler"
|
|
@resized="resizedHandler"
|
|
@moved="movedHandler">
|
|
<el-card shadow="never" class="page_card">
|
|
<el-tag size="mini" type="info" slot="header">Card {{item.i}}</el-tag>
|
|
<template v-if="item.i === '0'">
|
|
<div class="d2-mb">拖拽卡片调整位置</div>
|
|
<div class="d2-mb">拖拽卡片右下角的手柄调整卡片大小</div>
|
|
<div class="d2-mb">在控制台打印出数据变化</div>
|
|
</template>
|
|
</el-card>
|
|
</d2-grid-item>
|
|
</d2-grid-layout>
|
|
</d2-container>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data () {
|
|
return {
|
|
layout: {
|
|
layout: [
|
|
{ 'x': 0, 'y': 0, 'w': 4, 'h': 10, 'i': '0' },
|
|
{ 'x': 4, 'y': 0, 'w': 2, 'h': 5, 'i': '1' },
|
|
{ 'x': 6, 'y': 0, 'w': 4, 'h': 5, 'i': '2' },
|
|
{ 'x': 10, 'y': 0, 'w': 2, 'h': 10, 'i': '3' },
|
|
{ 'x': 4, 'y': 5, 'w': 4, 'h': 5, 'i': '4' },
|
|
{ 'x': 8, 'y': 5, 'w': 2, 'h': 5, 'i': '5' },
|
|
{ 'x': 0, 'y': 10, 'w': 8, 'h': 5, 'i': '6' },
|
|
{ 'x': 8, 'y': 10, 'w': 4, 'h': 5, 'i': '7' }
|
|
],
|
|
colNum: 12,
|
|
rowHeight: 30,
|
|
isDraggable: true,
|
|
isResizable: true,
|
|
isMirrored: false,
|
|
verticalCompact: true,
|
|
margin: [10, 10],
|
|
useCssTransforms: true
|
|
}
|
|
}
|
|
},
|
|
mounted () {
|
|
// 加载完成后显示提示
|
|
this.showInfo()
|
|
},
|
|
methods: {
|
|
log (arg1 = 'log', ...logs) {
|
|
if (logs.length === 0) {
|
|
console.log(arg1)
|
|
} else {
|
|
console.group(arg1)
|
|
logs.forEach(e => {
|
|
console.log(e)
|
|
})
|
|
console.groupEnd()
|
|
}
|
|
},
|
|
// 显示提示
|
|
showInfo () {
|
|
this.$notify({
|
|
title: '提示',
|
|
message: '你可以按住卡片拖拽改变位置;或者在每个卡片的右下角拖动,调整卡片大小'
|
|
})
|
|
},
|
|
// 测试代码
|
|
layoutUpdatedHandler (newLayout) {
|
|
console.group('layoutUpdatedHandler')
|
|
newLayout.forEach(e => {
|
|
console.log(`{'x': ${e.x}, 'y': ${e.y}, 'w': ${e.w}, 'h': ${e.h}, 'i': '${e.i}'},`)
|
|
})
|
|
console.groupEnd()
|
|
},
|
|
resizeHandler (i, newH, newW) {
|
|
this.log('resizeHandler', `i: ${i}, newH: ${newH}, newW: ${newW}`)
|
|
},
|
|
moveHandler (i, newX, newY) {
|
|
this.log('moveHandler', `i: ${i}, newX: ${newX}, newY: ${newY}`)
|
|
},
|
|
resizedHandler (i, newH, newW, newHPx, newWPx) {
|
|
this.log('resizedHandler', `i: ${i}, newH: ${newH}, newW: ${newW}, newHPx: ${newHPx}, newWPx: ${newWPx}`)
|
|
},
|
|
movedHandler (i, newX, newY) {
|
|
this.log('movedHandler', `i: ${i}, newX: ${newX}, newY: ${newY}`)
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.page {
|
|
.vue-grid-layout {
|
|
background-color: $color-bg;
|
|
border-radius: 4px;
|
|
margin: -10px;
|
|
.page_card {
|
|
height: 100%;
|
|
@extend %unable-select;
|
|
}
|
|
.vue-resizable-handle {
|
|
opacity: .3;
|
|
&:hover{
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|