Files
fad-dashboard/frontend/packages/BigScreenDesign/RightSetting/MoveDialog/index.vue
2025-11-08 10:38:36 +08:00

352 lines
7.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-dialog
title="点九图"
:visible.sync="dialogVisible"
:modal="true"
width="75%"
:modal-append-to-body="false"
:appen-to-body="false"
class="bs-dialog-wrap bs-el-dialog"
@closed="close"
@opened="getDom"
>
<div class="contentTable">
<table
border="1"
cellspacing="0"
>
<tr>
<th>方向</th>
<th>描述</th>
</tr>
<tr>
<td>左上角</td>
<td>不能拉伸</td>
</tr>
<tr>
<td>右上角</td>
<td>不能拉伸</td>
</tr>
<tr>
<td>左下角</td>
<td>不能拉伸</td>
</tr>
<tr>
<td>右下角</td>
<td>不能拉伸</td>
</tr>
<tr>
<td>左侧</td>
<td>宽度不变高度自动拉伸</td>
</tr>
<tr>
<td>右侧</td>
<td>宽度不变高度自动拉伸</td>
</tr>
<tr>
<td>顶部</td>
<td>高度不变宽度自动拉伸</td>
</tr>
<tr>
<td>底部</td>
<td>高度不变宽度自动拉伸</td>
</tr>
<tr>
<td>中部</td>
<td>宽度高度自动拉伸</td>
</tr>
</table>
</div>
<div
class="imgContent"
>
<div class="imgContainer">
<span class="toptitle">
<!-- <InputCom @changeStyle='changeTop' :Fx="['上','下']" :number="top" /> -->
<el-input-number
v-model="top"
class="bs-el-input-number"
:step=" 1"
:min="0"
:max="49"
@change="changeTop"
/>
</span>
<span class="righttitle">
<el-input-number
v-model="right"
class="bs-el-input-number"
:step=" 1"
:min="0"
:max="49"
@change="changeRight"
/>
</span>
<span class="bottomtitle">
<el-input-number
v-model="bottom"
class="bs-el-input-number"
:step=" 1"
:min="0"
:max="49"
@change="changeBottom"
/>
</span>
<span class="lefttitle">
<el-input-number
v-model="left"
class="bs-el-input-number"
:step=" 1"
:min="0"
:max="49"
@change="changeLeft"
/>
</span>
<el-image
style="max-width:550px;object-fit: cover;"
:src="imgUrl||url"
fit="cover"
/>
<div
id="top"
class="top"
@mousedown="onMouseDown"
@mouseup="onMouseUp"
@mousemove="onMousemove"
@click="changeSymbol('top')"
/>
<div
id="right"
class="right"
@click="changeSymbol('right')"
/>
<div
id="bottom"
class="bottom"
@click="changeSymbol('bottom')"
/>
<div
id="left"
class="left"
@click="changeSymbol('left')"
/>
</div>
</div>
<div
slot="footer"
class="dialog-footer"
>
<el-button
class="bs-el-button-default"
@click="dialogVisible = false"
>
取消
</el-button>
<el-button
type="primary"
@click="confirm"
>
确定
</el-button>
</div>
</el-dialog>
</template>
<script>
import { getFileUrl } from 'data-room-ui/js/utils/file'
export default {
name: 'SourceDialog',
data () {
return {
contentHeight: 300,
dialogVisible: false,
imgUrl: '',
top: 0,
right: 0,
bottom: 0,
left: 0,
symbol: '',
isDown: false,
x: 0,
y: 0,
l: 0,
t: 0
}
},
computed: {
url () {
return require('data-room-ui/BorderComponents/GcBorder16/component.png')
}
},
methods: {
confirm () {
this.$emit('getArray', [this.top, this.right, this.bottom, this.left])
this.dialogVisible = false
},
init (val, array) {
if (!val.startsWith('http')) {
this.imgUrl = getFileUrl(val)
} else {
this.imgUrl = val
}
if (array) {
[this.top, this.right, this.bottom, this.left] = array
this.$nextTick(() => {
this.changeTop(this.top)
this.changeRight(this.right)
this.changeBottom(this.bottom)
this.changeLeft(this.left)
})
}
this.dialogVisible = true
},
getDom () {
// const a=document.getElementById('top')
// const b=document.getElementById('right')
// const c=document.getElementById('bottom')
// const d=document.getElementById('left')
// this.top=getComputedStyle(a).top.slice(0,-2)
// this.right=getComputedStyle(b).right.slice(0,-2)
// this.bottom=getComputedStyle(c).bottom.slice(0,-2)
// this.left=getComputedStyle(d).left.slice(0,-2)
},
close () {
},
changeTop (val) {
const a = document.getElementById('top')
a.style.top = val + '%'
},
changeRight (val) {
const a = document.getElementById('right')
a.style.right = val + '%'
},
changeBottom (val) {
const a = document.getElementById('bottom')
a.style.bottom = val + '%'
},
changeLeft (val) {
const a = document.getElementById('left')
a.style.left = val + '%'
},
onMouseUp () {
// this.isDown=false;
},
onMousemove (e) {
// const a=document.getElementById('top')
// if(this.isDown==false){
// return
// }
// let ny=e.clientY-194;
// let nt=ny-(this.y-this.t);
// a.style.top=nt+"px"
// this.top=a.style.top
},
onMouseDown (e) {
// this.y=e.layerY
// this.t=this.top;
// this.isDown=true
},
changeSymbol (val) {
this.symbol = val
}
}
}
</script>
<style lang="scss" scoped>
::v-deep .el-dialog__body{
position: relative;
background-color: #232832;
min-height: 450px;
padding: 16px 16px 16px 16px !important;
overflow: auto;
}
.contentTable{
position: absolute;
top: 0;
left: 0;
width: 400px;
margin-top: 50px;
margin-left: 80px;
margin-right: 200px;
table{
color: #fff;
border: 1px solid #fff;
}
td,th{
padding: 8px 20px;
text-align: center;
vertical-align: middle;
}
}
.imgContent{
width: 400px;
position: absolute;
left: 600px;
top: 50%;
transform: translateY(-50%);
margin-top: 0px;
.imgContainer{
width: 100%;
height: 100%;
position: relative;
.toptitle{
position: absolute;
top: -43px;
left: 50%;
transform: translateX(-50%);
}
.righttitle{
position: absolute;
top: 50%;
transform: translateY(-50%);
right: -150px;
}
.bottomtitle{
position: absolute;
bottom: -43px;
left: 50%;
transform: translateX(-50%);
}
.lefttitle{
position: absolute;
top: 50%;
transform: translateY(-50%);
left: -150px;
}
// height: 100%;
.top{
position: absolute;
top: 0;
height: 1px;
background-color: #fff;
width: 100%;
}
.right{
position: absolute;
right: 0;
top: 0;
height: 100%;
background-color: #fff;
width: 1px;
}
.bottom{
position: absolute;
bottom: 0;
height: 1px;
background-color: #fff;
width: 100%;
}
.left{
position: absolute;
left: 0;
top: 0;
height: 100%;
background-color: #fff;
width: 1px;
}
}
}
</style>