You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

352 lines
7.8 KiB
Vue

<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>