Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
bdc
/
bdcdj-web
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
919f3698
authored
2022-10-09 17:46:03 +0800
by
liangyifan
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
弹窗封装
1 parent
1e1a4498
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
132 additions
and
0 deletions
src/components/tanchuang/index.js
src/components/tanchuang/index.vue
src/main.js
src/components/tanchuang/index.js
0 → 100644
View file @
919f369
import
Vue
from
'vue'
import
Popup
from
'./index.vue'
const
PopupBox
=
Vue
.
extend
(
Popup
)
Popup
.
install
=
function
(
data
)
{
console
.
log
(
data
)
let
instance
=
new
PopupBox
({
data
}).
$mount
()
document
.
body
.
appendChild
(
instance
.
$el
)
Vue
.
nextTick
(()
=>
{
instance
.
isShow
=
true
})
}
export
default
Popup
\ No newline at end of file
src/components/tanchuang/index.vue
0 → 100644
View file @
919f369
<
template
>
<transition
name=
"fade"
mode=
"out-in"
v-if=
"isShow"
>
<div
class=
"ls-mask"
v-loading=
"loading"
>
<div
class=
"ls-mask-window"
:style=
"
{'width':width,'height':height}">
<div
:style=
"
{'text-align':titleStyle}">
<b
>
{{
title
}}
</b></div>
<i
class=
"el-icon-close"
@
click=
"onCancel"
></i>
<div
class=
"ls-mask-content"
>
<component
:is=
"editItem"
ref=
'childRef'
@
loading=
'loadingFn'
/>
</div>
<div
class=
"ls-mask-footer"
>
<el-button
type=
"primary"
@
click=
"onConfirm"
>
{{
confirmText
}}
</el-button>
<el-button
@
click=
"onCancel"
>
{{
cancelText
}}
</el-button>
</div>
</div>
</div>
</transition>
</
template
>
<
script
>
export
default
{
name
:
'index'
,
data
()
{
return
{
title
:
'提示'
,
cancelText
:
'取消'
,
confirmText
:
'确认'
,
isSync
:
false
,
isShow
:
false
,
editItem
:
""
,
titleStyle
:
''
,
width
:
"75%"
,
height
:
"500px"
,
}
},
props
:{
loading
:
{
type
:
Boolean
,
default
:
false
},
},
watch
:{
isShow
(
a
,
b
){
this
.
editItem
=
this
.
loadViewFn
(
this
.
editItem
)
},
},
methods
:
{
onCancel
()
{
this
.
isShow
=
false
},
onConfirm
()
{
this
.
loading
=
true
this
.
$refs
.
childRef
.
childFn
()
},
loadingFn
(
e
){
//加载状态
this
.
loading
=
e
},
loadViewFn
(
view
)
{
return
(
r
)
=>
require
.
ensure
([],
()
=>
r
(
require
(
`@/views/
${
view
}
.vue`
))
);
},
}
}
</
script
>
<
style
scoped
>
#app
{
overflow
:
hidden
;
}
.ls-mask
{
width
:
100%
;
height
:
100%
;
z-index
:
2001
;
position
:
fixed
;
left
:
0
;
top
:
0
;
background
:
rgba
(
0
,
0
,
0
,
0.3
);
}
.ls-mask-window
{
padding-top
:
20px
;
background
:
white
;
position
:
absolute
;
left
:
50%
;
top
:
50%
;
transform
:
translate
(
-50%
,
-50%
);
}
.ls-mask-window
b
{
padding-left
:
12px
;
}
.ls-mask-content
{
padding
:
20px
;
text-align
:
center
;
}
.ls-mask-footer
{
height
:
45px
;
border-top
:
1px
solid
#f0f0f0
;
display
:
flex
;
justify-content
:
end
;
padding
:
2px
;
position
:
absolute
;
width
:
98%
;
bottom
:
10px
;
right
:
12px
;
}
/
deep
/
.el-icon-close
{
position
:
absolute
;
top
:
20px
;
right
:
12px
;
font-size
:
20px
;
cursor
:
pointer
;
}
/
deep
/
.el-loading-mask
{
background
:
none
;
}
</
style
>
\ No newline at end of file
src/main.js
View file @
919f369
...
...
@@ -14,6 +14,8 @@ import rules from './utils/rule.js'
// 全局方法挂载
Vue
.
prototype
.
$rules
=
rules
import
Popup
from
'./components/tanchuang/index'
Vue
.
prototype
.
$popup
=
Popup
.
install
import
{
theme
}
from
"@/directive/theme.js"
Vue
.
directive
(
"theme"
,
theme
)
...
...
Please
register
or
sign in
to post a comment