mirror of
https://github.com/dataease/dataease.git
synced 2026-05-21 12:45:37 +08:00
158 lines
3.6 KiB
Vue
158 lines
3.6 KiB
Vue
<template>
|
|
<div style="width: 100%;padding: 10px;">
|
|
<el-col>
|
|
<el-form
|
|
label-width="40px"
|
|
size="mini"
|
|
>
|
|
<el-form-item
|
|
:label="$t('panel.space_top')"
|
|
class="form-item"
|
|
prop="marginTop"
|
|
>
|
|
<el-input
|
|
v-model="styleInfo.top"
|
|
type="number"
|
|
:min="0"
|
|
:max="maxTop"
|
|
class="hide-icon-number"
|
|
>
|
|
<template slot="append">px</template>
|
|
</el-input>
|
|
</el-form-item>
|
|
<el-form-item
|
|
:label="$t('panel.space_left')"
|
|
:min="0"
|
|
class="form-item"
|
|
prop="marginTop"
|
|
>
|
|
<el-input
|
|
v-model="styleInfo.left"
|
|
type="number"
|
|
:min="0"
|
|
:max="maxLeft"
|
|
class="hide-icon-number"
|
|
>
|
|
<template slot="append">px</template>
|
|
</el-input>
|
|
</el-form-item>
|
|
<el-form-item
|
|
:label="$t('panel.space_width')"
|
|
:min="0"
|
|
class="form-item"
|
|
prop="marginTop"
|
|
>
|
|
<el-input
|
|
v-model="styleInfo.width"
|
|
:min="0"
|
|
:max="maxWidth"
|
|
type="number"
|
|
class="hide-icon-number"
|
|
>
|
|
<template slot="append">px</template>
|
|
</el-input>
|
|
</el-form-item>
|
|
<el-form-item
|
|
:label="$t('panel.space_height')"
|
|
:min="0"
|
|
class="form-item"
|
|
>
|
|
<el-input
|
|
v-model="styleInfo.height"
|
|
type="number"
|
|
:min="0"
|
|
:max="maxHeight"
|
|
class="hide-icon-number"
|
|
>
|
|
<template slot="append">px</template>
|
|
</el-input>
|
|
</el-form-item>
|
|
</el-form>
|
|
</el-col>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import { mapState } from 'vuex'
|
|
|
|
export default {
|
|
name: 'PositionAdjust',
|
|
props: {},
|
|
data() {
|
|
return {
|
|
maxHeight: 2000,
|
|
maxTop: 20000
|
|
}
|
|
},
|
|
computed: {
|
|
maxLeft() {
|
|
return 1600 - this.styleInfo.width - this.componentGap
|
|
},
|
|
maxWidth() {
|
|
return 1600 - this.styleInfo.left - this.componentGap
|
|
},
|
|
styleInfo() {
|
|
return this.$store.state.curComponent.style
|
|
},
|
|
...mapState([
|
|
'componentGap'
|
|
])
|
|
},
|
|
watch: {
|
|
'styleInfo.top': function() {
|
|
this.topOnChange()
|
|
},
|
|
'styleInfo.left': function() {
|
|
this.leftOnChange()
|
|
},
|
|
'styleInfo.width': function() {
|
|
this.widthOnChange()
|
|
},
|
|
'styleInfo.height': function() {
|
|
this.heightOnChange()
|
|
}
|
|
},
|
|
mounted() {
|
|
},
|
|
methods: {
|
|
leftOnChange() {
|
|
if (this.styleInfo.left > this.maxLeft) {
|
|
this.styleInfo.left = this.maxLeft
|
|
} else if (this.styleInfo.left < 0) {
|
|
this.styleInfo.left = 0
|
|
}
|
|
this.$store.commit('canvasChange')
|
|
},
|
|
widthOnChange() {
|
|
if (this.styleInfo.width > this.maxWidth) {
|
|
this.styleInfo.width = this.maxWidth
|
|
} else if (this.styleInfo.width < 0) {
|
|
this.styleInfo.left = 0
|
|
}
|
|
this.$store.commit('canvasChange')
|
|
},
|
|
heightOnChange() {
|
|
if (this.styleInfo.height > this.maxHeight) {
|
|
this.styleInfo.height = this.maxHeight
|
|
} else if (this.styleInfo.height < 0) {
|
|
this.styleInfo.height = 0
|
|
}
|
|
this.$store.commit('canvasChange')
|
|
},
|
|
topOnChange() {
|
|
if (this.styleInfo.top > this.maxTop) {
|
|
this.styleInfo.top = this.maxTop
|
|
} else if (this.styleInfo.top < 0) {
|
|
this.styleInfo.top = 0
|
|
}
|
|
this.$store.commit('canvasChange')
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped>
|
|
|
|
</style>
|