Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
任超
/
js.CadastralSystem
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
331b0b83
authored
2020-12-22 10:36:49 +0800
by
杨威
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
全局弹框添加拖拽事件
1 parent
9927a108
Hide whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
310 additions
and
34 deletions
src/components/cxlxQueryData/cxlzQueryData.vue
src/components/dialogBox/index.vue
src/components/dzHb/dzHb.vue
src/components/dzQueryData/dzQueryData.vue
src/components/formMenu/qlr.vue
src/components/hCxlz/hCxlz.vue
src/components/lineTree/lineTree.vue
src/components/moveH/moveH.vue
src/components/plc/plC.vue
src/components/plh/plH.vue
src/components/plsh/plSh.vue
src/components/plzl/plZl.vue
src/components/queryData/queryData.vue
src/components/sxdr/sxdr.vue
src/components/zdQueryData/zdQueryData.vue
src/libs/dragDialog.js
src/main.js
src/views/Home.vue
src/views/zd/jzd/index.vue
src/views/zd/jzx/index.vue
src/views/zrz/lpb/bjlp/index.vue
src/views/zrz/lpb/bjlp/lpbContent/index.vue
src/components/cxlxQueryData/cxlzQueryData.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"选择宗地"
:visible
.
sync=
"isVisible"
width=
"50%"
...
...
src/components/dialogBox/index.vue
View file @
331b0b8
<
template
>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
:visible
.
sync=
"dialogVisible"
:width=
"width"
@
close=
"closeDialog('ruleForm')"
...
...
src/components/dzHb/dzHb.vue
View file @
331b0b8
...
...
@@ -161,7 +161,7 @@
<div
class=
"header-button"
>
<el-button
type=
"primary"
class=
"saveBtn"
@
click=
"save"
>
保存
</el-button>
</div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增多幢"
:visible
.
sync=
"dzIsVisible"
width=
"70%"
...
...
@@ -259,7 +259,7 @@
</el-pagination>
</div>
</el-dialog>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增自然幢"
:visible
.
sync=
"zrzIsVisible"
width=
"70%"
...
...
src/components/dzQueryData/dzQueryData.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增"
:visible
.
sync=
"isVisible"
width=
"70%"
...
...
src/components/formMenu/qlr.vue
View file @
331b0b8
...
...
@@ -49,7 +49,7 @@
<el-table-column
prop=
"dh"
label=
"联系电话"
align=
"center"
>
</el-table-column>
</el-table>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"权利人信息"
:visible
.
sync=
"dialogVisible"
custom-class=
"insetDialog"
...
...
src/components/hCxlz/hCxlz.vue
View file @
331b0b8
<
template
>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"户重新落宗"
:visible
.
sync=
"isVisible"
width=
"50%"
...
...
src/components/lineTree/lineTree.vue
View file @
331b0b8
...
...
@@ -103,11 +103,11 @@
</ul>
<!--@close="closeImportDialog"-->
<el-dialog
title=
"导入图形"
:modal=
"false"
:close-on-click-modal=
"false"
custom-class=
"importDialog"
:visible
.
sync=
"improtDialog"
width=
"30%"
@
close=
"closeImportDialog"
>
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"导入图形"
:modal=
"false"
custom-class=
"importDialog"
:visible
.
sync=
"improtDialog"
width=
"30%"
@
close=
"closeImportDialog"
>
<import-geo
:property-info=
"zdData"
:timeLine=
"new Date().getTime()"
:geo-info=
"currentClickZdGeo"
@
closeImportDialog=
"closeImportDialog"
></import-geo>
</el-dialog>
<!-- 添加定着物弹框 -->
<el-dialog
title=
"新建"
:visible
.
sync=
"dialogVisible"
width=
"48%"
>
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新建"
:visible
.
sync=
"dialogVisible"
width=
"48%"
>
<Create
@
closeDialog=
"closeDialog"
:auth=
"true"
></Create>
</el-dialog>
<sxdr
:sxdr-visible=
"sxdrVisible"
@
close=
"sxdrClose"
:dylx=
"zdData.type"
:bsm=
"zdData.bsm"
></sxdr>
...
...
src/components/moveH/moveH.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"移动户"
:visible
.
sync=
"isVisible"
width=
"50%"
...
...
src/components/plc/plC.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"批量层"
:visible
.
sync=
"isVisible"
width=
"50%"
...
...
src/components/plh/plH.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增"
:visible
.
sync=
"isVisible"
width=
"70%"
...
...
src/components/plsh/plSh.vue
View file @
331b0b8
<
template
>
<div
class=
""
>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"批量室号"
:visible
.
sync=
"isVisible"
width=
"50%"
...
...
src/components/plzl/plZl.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"批量坐落"
:visible
.
sync=
"isVisible"
width=
"60%"
...
...
src/components/queryData/queryData.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增"
:visible
.
sync=
"isVisible"
width=
"70%"
...
...
src/components/sxdr/sxdr.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"属性导入"
:visible
.
sync=
"isVisible"
width=
"30%"
...
...
src/components/zdQueryData/zdQueryData.vue
View file @
331b0b8
<
template
>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新增"
:visible
.
sync=
"isVisible"
width=
"70%"
@
close=
"close"
:modal-append-to-body=
"false"
:close-on-click-modal=
"false"
>
<div
class=
"search"
>
<el-row>
...
...
src/libs/dragDialog.js
0 → 100644
View file @
331b0b8
import
Vue
from
"vue"
;
/*
* 使用方法
* 将以下代码复制到一个js文件中,然后在入口文件main.js中import引入即可;
* 给elementUI的dialog上加上 v-dialogDrag 指令就可以实现弹窗的全屏和拉伸了。
* 给dialog设置 :close-on-click-modal="false" , 禁止点击遮罩层关闭弹出层
* 如果是form表单,不要将提交等按钮放置el-form-item,以免在上下拉伸时被隐藏
*/
// v-dialogDrag: 弹窗拖拽+水平方向伸缩
Vue
.
directive
(
"dialogDrag"
,
{
bind
(
el
,
binding
,
vnode
,
oldVnode
)
{
//弹框可拉伸最小宽高
let
minWidth
=
400
;
let
minHeight
=
300
;
//初始非全屏
let
isFullScreen
=
false
;
//当前宽高
let
nowWidth
=
0
;
let
nowHight
=
0
;
//当前顶部高度
let
nowMarginTop
=
0
;
//获取弹框头部(这部分可双击全屏)
const
dialogHeaderEl
=
el
.
querySelector
(
".el-dialog__header"
);
//弹窗
const
dragDom
=
el
.
querySelector
(
".el-dialog"
);
//给弹窗加上overflow auto;不然缩小时框内的标签可能超出dialog;
dragDom
.
style
.
overflow
=
"auto"
;
//清除选择头部文字效果
//dialogHeaderEl.onselectstart = new Function("return false");
//头部加上可拖动cursor
dialogHeaderEl
.
style
.
cursor
=
"move"
;
// 获取原有属性 ie dom元素.currentStyle 火狐谷歌 window.getComputedStyle(dom元素, null);
const
sty
=
dragDom
.
currentStyle
||
window
.
getComputedStyle
(
dragDom
,
null
);
let
moveDown
=
(
e
)
=>
{
// 鼠标按下,计算当前元素距离可视区的距离
const
disX
=
e
.
clientX
-
dialogHeaderEl
.
offsetLeft
;
const
disY
=
e
.
clientY
-
dialogHeaderEl
.
offsetTop
;
// 获取到的值带px 正则匹配替换
let
styL
,
styT
;
// 注意在ie中 第一次获取到的值为组件自带50% 移动之后赋值为px
if
(
sty
.
left
.
includes
(
"%"
))
{
styL
=
+
document
.
body
.
clientWidth
*
(
+
sty
.
left
.
replace
(
/
\%
/g
,
""
)
/
100
);
styT
=
+
document
.
body
.
clientHeight
*
(
+
sty
.
top
.
replace
(
/
\%
/g
,
""
)
/
100
);
}
else
{
styL
=
+
sty
.
left
.
replace
(
/
\p
x/g
,
""
);
styT
=
+
sty
.
top
.
replace
(
/
\p
x/g
,
""
);
}
document
.
onmousemove
=
function
(
e
)
{
// 通过事件委托,计算移动的距离
const
l
=
e
.
clientX
-
disX
;
const
t
=
e
.
clientY
-
disY
;
// 移动当前元素
dragDom
.
style
.
left
=
`
${
l
+
styL
}
px`
;
dragDom
.
style
.
top
=
`
${
t
+
styT
}
px`
;
//将此时的位置传出去
//binding.value({x:e.pageX,y:e.pageY})
};
document
.
onmouseup
=
function
(
e
)
{
document
.
onmousemove
=
null
;
document
.
onmouseup
=
null
;
};
};
dialogHeaderEl
.
onmousedown
=
moveDown
;
//双击头部全屏效果
dialogHeaderEl
.
ondblclick
=
(
e
)
=>
{
if
(
isFullScreen
==
false
)
{
nowHight
=
dragDom
.
clientHeight
;
nowWidth
=
dragDom
.
clientWidth
;
nowMarginTop
=
dragDom
.
style
.
marginTop
;
dragDom
.
style
.
left
=
0
;
dragDom
.
style
.
top
=
0
;
dragDom
.
style
.
height
=
"100VH"
;
dragDom
.
style
.
width
=
"100VW"
;
dragDom
.
style
.
marginTop
=
0
;
isFullScreen
=
true
;
dialogHeaderEl
.
style
.
cursor
=
"initial"
;
dialogHeaderEl
.
onmousedown
=
null
;
}
else
{
dragDom
.
style
.
height
=
"auto"
;
dragDom
.
style
.
width
=
nowWidth
+
"px"
;
dragDom
.
style
.
marginTop
=
nowMarginTop
;
isFullScreen
=
false
;
dialogHeaderEl
.
style
.
cursor
=
"move"
;
dialogHeaderEl
.
onmousedown
=
moveDown
;
}
};
dragDom
.
onmousemove
=
function
(
e
)
{
let
moveE
=
e
;
if
(
e
.
clientX
>
dragDom
.
offsetLeft
+
dragDom
.
clientWidth
-
10
||
dragDom
.
offsetLeft
+
10
>
e
.
clientX
)
{
dragDom
.
style
.
cursor
=
"w-resize"
;
}
else
if
(
el
.
scrollTop
+
e
.
clientY
>
dragDom
.
offsetTop
+
dragDom
.
clientHeight
-
10
)
{
dragDom
.
style
.
cursor
=
"s-resize"
;
}
else
{
dragDom
.
style
.
cursor
=
"default"
;
dragDom
.
onmousedown
=
null
;
}
dragDom
.
onmousedown
=
(
e
)
=>
{
const
clientX
=
e
.
clientX
;
const
clientY
=
e
.
clientY
;
let
elW
=
dragDom
.
clientWidth
;
let
elH
=
dragDom
.
clientHeight
;
let
EloffsetLeft
=
dragDom
.
offsetLeft
;
let
EloffsetTop
=
dragDom
.
offsetTop
;
dragDom
.
style
.
userSelect
=
"none"
;
let
ELscrollTop
=
el
.
scrollTop
;
//判断点击的位置是不是为头部
if
(
clientX
>
EloffsetLeft
&&
clientX
<
EloffsetLeft
+
elW
&&
clientY
>
EloffsetTop
&&
clientY
<
EloffsetTop
+
100
)
{
//如果是头部在此就不做任何动作,以上有绑定dialogHeaderEl.onmousedown = moveDown;
}
else
{
document
.
onmousemove
=
function
(
e
)
{
e
.
preventDefault
();
// 移动时禁用默认事件
//左侧鼠标拖拽位置
if
(
clientX
>
EloffsetLeft
&&
clientX
<
EloffsetLeft
+
10
)
{
//往左拖拽
if
(
clientX
>
e
.
clientX
)
{
dragDom
.
style
.
width
=
elW
+
(
clientX
-
e
.
clientX
)
*
2
+
"px"
;
}
//往右拖拽
if
(
clientX
<
e
.
clientX
)
{
if
(
dragDom
.
clientWidth
<
minWidth
)
{
}
else
{
dragDom
.
style
.
width
=
elW
-
(
e
.
clientX
-
clientX
)
*
2
+
"px"
;
}
}
}
//右侧鼠标拖拽位置
if
(
clientX
>
EloffsetLeft
+
elW
-
10
&&
clientX
<
EloffsetLeft
+
elW
)
{
//往左拖拽
if
(
clientX
>
e
.
clientX
)
{
if
(
dragDom
.
clientWidth
<
minWidth
)
{
}
else
{
dragDom
.
style
.
width
=
elW
-
(
clientX
-
e
.
clientX
)
*
2
+
"px"
;
}
}
//往右拖拽
if
(
clientX
<
e
.
clientX
)
{
dragDom
.
style
.
width
=
elW
+
(
e
.
clientX
-
clientX
)
*
2
+
"px"
;
}
}
//底部鼠标拖拽位置
if
(
ELscrollTop
+
clientY
>
EloffsetTop
+
elH
-
20
&&
ELscrollTop
+
clientY
<
EloffsetTop
+
elH
)
{
//往上拖拽
if
(
clientY
>
e
.
clientY
)
{
if
(
dragDom
.
clientHeight
<
minHeight
)
{
}
else
{
dragDom
.
style
.
height
=
elH
-
(
clientY
-
e
.
clientY
)
*
2
+
"px"
;
}
}
//往下拖拽
if
(
clientY
<
e
.
clientY
)
{
dragDom
.
style
.
height
=
elH
+
(
e
.
clientY
-
clientY
)
*
2
+
"px"
;
}
}
};
//拉伸结束
document
.
onmouseup
=
function
(
e
)
{
document
.
onmousemove
=
null
;
document
.
onmouseup
=
null
;
};
}
};
};
},
});
src/main.js
View file @
331b0b8
...
...
@@ -8,6 +8,7 @@ import '../mock/index.js'
//引入arcgis Api
import
'./libs/map/mapApi'
import
'./libs/dragDialog'
;
//引入弹框拖拽方法
import
'./assets/iconfont/iconfont.js'
...
...
src/views/Home.vue
View file @
331b0b8
...
...
@@ -40,7 +40,7 @@
<!--
<div
class=
"header-bottom"
>
<Navigation
ref=
"navigation"
></Navigation>
</div>
-->
<el-dialog
title=
"新建"
:visible
.
sync=
"dialogVisible"
width=
"48%"
>
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"新建"
:visible
.
sync=
"dialogVisible"
width=
"48%"
>
<Create
@
closeDialog=
"closeDialog"
:auth=
"false"
></Create>
</el-dialog>
</el-header>
...
...
@@ -146,11 +146,11 @@ export default {
});
if
(
newPath
==
"/zd"
)
{
//source为3时代表时分割后的宗地信息
if
(
this
.
$route
.
query
.
source
==
'3'
){
//
if(this.$route.query.source == '3'){
// this.getTreeByS(this.$store.state.zdbsms);
}
else
{
//
}else{
// this.getRightTree(this.$store.state.zdbsm);
}
//
}
}
else
if
(
newPath
==
"/zrz"
)
{
// this.getRightTreeByZrzbsm(this.$store.state.zrzbsm);
}
else
if
(
newPath
==
"/dz"
){
...
...
@@ -159,11 +159,6 @@ export default {
// this.getRightTreeByHbsm(this.$store.state.hbsm);
}
else
if
(
newPath
==
"/viewMap"
){
this
.
isMap
=
true
;
if
(
this
.
$route
.
query
.
type
==
"zd"
){
this
.
getRightTree
(
this
.
$route
.
query
.
bsm
);
}
else
if
(
this
.
$route
.
query
.
type
==
"/zrz"
){
this
.
getRightTreeByZrzbsm
(
this
.
$route
.
query
.
bsm
);
}
}
else
{
this
.
getTreeList
();
}
...
...
@@ -432,7 +427,7 @@ export default {
routerQuery
=
{
bsm
:
this
.
$route
.
query
.
bsm
,
type
:
"zd"
}
}
;
}
else
if
(
path
==
"/zrz"
){
routerQuery
=
{
bsm
:
this
.
$route
.
query
.
bsm
,
...
...
src/views/zd/jzd/index.vue
View file @
331b0b8
...
...
@@ -51,7 +51,7 @@
</table>
</div>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"批量修改"
:visible
.
sync=
"centerDialogVisible"
width=
"30%"
...
...
src/views/zd/jzx/index.vue
View file @
331b0b8
...
...
@@ -63,7 +63,7 @@
</table>
</div>
<div>
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"批量修改"
:visible
.
sync=
"centerDialogVisible"
width=
"30%"
...
...
src/views/zrz/lpb/bjlp/index.vue
View file @
331b0b8
...
...
@@ -223,7 +223,7 @@
</div>
<!-- 右键菜单弹出框 -->
<el-dialog
title=
"添加"
:visible
.
sync=
"dialogVisible"
width=
"50%"
>
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"添加"
:visible
.
sync=
"dialogVisible"
width=
"50%"
>
<!-- 根据菜单类型(menuType)和右键点击的楼盘类型(treeData.type)来区分弹框内容 -->
<div
class=
"addCh"
v-show=
"menuType == 'ljz'"
>
<addLjz
ref=
"ljz"
></addLjz>
...
...
@@ -258,7 +258,7 @@
@
close=
"hcxlzClose"
></h-cxlz>
<!-- 双击户的弹出框 -->
<el-dialog
title=
"户编辑"
class=
"hbjDialog"
:visible
.
sync=
"hbjVisible"
width=
"70%"
>
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title=
"户编辑"
class=
"hbjDialog"
:visible
.
sync=
"hbjVisible"
width=
"70%"
>
<hbj
ref=
"hbj"
:bsm=
"hbsm"
:scyclx=
"scyclx"
></hbj>
</el-dialog>
</div>
...
...
src/views/zrz/lpb/bjlp/lpbContent/index.vue
View file @
331b0b8
...
...
@@ -306,7 +306,7 @@
</ul>
<!-- 层操作弹框 -->
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
:title=
"addCData.title"
:visible
.
sync=
"addCVisible"
width=
"50%"
...
...
@@ -336,7 +336,7 @@
</div>
</el-dialog >
<!-- 户分割弹框 -->
<el-dialog
<el-dialog
v-dialogDrag
:close-on-click-modal=
"false"
title =
"户分割"
:visible
.
sync=
"hfgDialogVisible"
width=
"800px"
...
...
Please
register
or
sign in
to post a comment