Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
7347cbae
提交
7347cbae
authored
8月 23, 2022
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化页面内嵌iframe切换tab不刷新数据
上级
99d1760b
显示空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
110 行增加
和
35 行删除
+110
-35
transition.scss
ruoyi-ui/src/assets/styles/transition.scss
+5
-0
AppMain.vue
ruoyi-ui/src/layout/components/AppMain.vue
+7
-3
index.vue
ruoyi-ui/src/layout/components/IframeToggle/index.vue
+24
-0
index.vue
ruoyi-ui/src/layout/components/InnerLink/index.vue
+40
-20
index.vue
ruoyi-ui/src/layout/components/TagsView/index.vue
+6
-0
tagsView.js
ruoyi-ui/src/store/modules/tagsView.js
+28
-12
没有找到文件。
ruoyi-ui/src/assets/styles/transition.scss
浏览文件 @
7347cbae
...
...
@@ -12,11 +12,16 @@
}
/* fade-transform */
.fade-transform--move
,
.fade-transform-leave-active
,
.fade-transform-enter-active
{
transition
:
all
.5s
;
}
.fade-transform-leave-active
{
position
:
absolute
;
}
.fade-transform-enter
{
opacity
:
0
;
transform
:
translateX
(
-30px
);
...
...
ruoyi-ui/src/layout/components/AppMain.vue
浏览文件 @
7347cbae
...
...
@@ -2,15 +2,19 @@
<section
class=
"app-main"
>
<transition
name=
"fade-transform"
mode=
"out-in"
>
<keep-alive
:include=
"cachedViews"
>
<router-view
:key=
"key"
/>
<router-view
v-if=
"!$route.meta.link"
:key=
"key"
/>
</keep-alive>
</transition>
<iframe-toggle
/>
</section>
</
template
>
<
script
>
import
iframeToggle
from
"./IframeToggle/index"
export
default
{
name
:
'AppMain'
,
components
:
{
iframeToggle
},
computed
:
{
cachedViews
()
{
return
this
.
$store
.
state
.
tagsView
.
cachedViews
...
...
@@ -31,7 +35,7 @@ export default {
overflow
:
hidden
;
}
.fixed-header
+
.app-main
{
.fixed-header
+
.app-main
{
padding-top
:
50px
;
}
...
...
@@ -41,7 +45,7 @@ export default {
min-height
:
calc
(
100vh
-
84px
);
}
.fixed-header
+
.app-main
{
.fixed-header
+
.app-main
{
padding-top
:
84px
;
}
}
...
...
ruoyi-ui/src/layout/components/IframeToggle/index.vue
0 → 100644
浏览文件 @
7347cbae
<
template
>
<transition-group
name=
"fade-transform"
mode=
"out-in"
>
<inner-link
v-for=
"(item, index) in iframeViews"
:key=
"item.path"
:iframeId=
"'iframe' + index"
v-show=
"$route.path === item.path"
:src=
"item.meta.link"
></inner-link>
</transition-group>
</
template
>
<
script
>
import
InnerLink
from
"../InnerLink/index"
export
default
{
components
:
{
InnerLink
},
computed
:
{
iframeViews
()
{
return
this
.
$store
.
state
.
tagsView
.
iframeViews
}
}
}
</
script
>
ruoyi-ui/src/layout/components/InnerLink/index.vue
浏览文件 @
7347cbae
<
script
>
export
default
{
data
()
{
return
{};
},
render
()
{
const
{
$route
:
{
meta
:
{
link
}
},
}
=
this
;
if
({
link
}.
link
===
""
)
{
return
"404"
;
}
let
url
=
{
link
}.
link
;
const
height
=
document
.
documentElement
.
clientHeight
-
94.5
+
"px"
;
const
style
=
{
height
:
height
};
return
(
<
div
style
=
{
style
}
>
<
template
>
<div
:style=
"'height:' + height"
v-loading=
"loading"
element-loading-text=
"正在加载页面,请稍候!"
>
<iframe
src
=
{
url
}
frameborder
=
"no"
:id=
"iframeId"
style=
"width: 100%; height: 100%"
scrolling
=
"auto"
:src=
"src"
frameborder=
"no"
></iframe>
</div>
);
</
template
>
<
script
>
export
default
{
props
:
{
src
:
{
type
:
String
,
default
:
"/"
},
iframeId
:
{
type
:
String
}
},
data
()
{
return
{
loading
:
false
,
height
:
document
.
documentElement
.
clientHeight
-
94.5
+
"px;"
};
},
mounted
()
{
var
_this
=
this
;
const
iframeId
=
(
"#"
+
this
.
iframeId
).
replace
(
/
\/
/g
,
"
\\
/"
);
const
iframe
=
document
.
querySelector
(
iframeId
);
// iframe页面loading控制
if
(
iframe
.
attachEvent
)
{
this
.
loading
=
true
;
iframe
.
attachEvent
(
"onload"
,
function
()
{
_this
.
loading
=
false
;
});
}
else
{
this
.
loading
=
true
;
iframe
.
onload
=
function
()
{
_this
.
loading
=
false
;
};
}
}
};
</
script
>
ruoyi-ui/src/layout/components/TagsView/index.vue
浏览文件 @
7347cbae
...
...
@@ -133,6 +133,9 @@ export default {
const
{
name
}
=
this
.
$route
if
(
name
)
{
this
.
$store
.
dispatch
(
'tagsView/addView'
,
this
.
$route
)
if
(
this
.
$route
.
meta
.
link
)
{
this
.
$store
.
dispatch
(
'tagsView/addIframeView'
,
this
.
$route
)
}
}
return
false
},
...
...
@@ -153,6 +156,9 @@ export default {
},
refreshSelectedTag
(
view
)
{
this
.
$tab
.
refreshPage
(
view
);
if
(
this
.
$route
.
meta
.
link
)
{
this
.
$store
.
dispatch
(
'tagsView/delIframeView'
,
this
.
$route
)
}
},
closeSelectedTag
(
view
)
{
this
.
$tab
.
closePage
(
view
).
then
(({
visitedViews
})
=>
{
...
...
ruoyi-ui/src/store/modules/tagsView.js
浏览文件 @
7347cbae
const
state
=
{
visitedViews
:
[],
cachedViews
:
[]
cachedViews
:
[],
iframeViews
:
[]
}
const
mutations
=
{
ADD_IFRAME_VIEW
:
(
state
,
view
)
=>
{
if
(
state
.
iframeViews
.
some
(
v
=>
v
.
path
===
view
.
path
))
{
return
}
else
{
state
.
iframeViews
.
push
(
view
)
}
},
ADD_VISITED_VIEW
:
(
state
,
view
)
=>
{
if
(
state
.
visitedViews
.
some
(
v
=>
v
.
path
===
view
.
path
))
return
state
.
visitedViews
.
push
(
...
...
@@ -18,7 +26,6 @@ const mutations = {
state
.
cachedViews
.
push
(
view
.
name
)
}
},
DEL_VISITED_VIEW
:
(
state
,
view
)
=>
{
for
(
const
[
i
,
v
]
of
state
.
visitedViews
.
entries
())
{
if
(
v
.
path
===
view
.
path
)
{
...
...
@@ -26,6 +33,10 @@ const mutations = {
break
}
}
state
.
iframeViews
=
state
.
iframeViews
.
filter
(
item
=>
item
.
path
!==
view
.
path
)
},
DEL_IFRAME_VIEW
:
(
state
,
view
)
=>
{
state
.
iframeViews
=
state
.
iframeViews
.
filter
(
item
=>
item
.
path
!==
view
.
path
)
},
DEL_CACHED_VIEW
:
(
state
,
view
)
=>
{
const
index
=
state
.
cachedViews
.
indexOf
(
view
.
name
)
...
...
@@ -36,6 +47,7 @@ const mutations = {
state
.
visitedViews
=
state
.
visitedViews
.
filter
(
v
=>
{
return
v
.
meta
.
affix
||
v
.
path
===
view
.
path
})
state
.
iframeViews
=
state
.
iframeViews
.
filter
(
item
=>
item
.
path
===
view
.
path
)
},
DEL_OTHERS_CACHED_VIEWS
:
(
state
,
view
)
=>
{
const
index
=
state
.
cachedViews
.
indexOf
(
view
.
name
)
...
...
@@ -45,16 +57,15 @@ const mutations = {
state
.
cachedViews
=
[]
}
},
DEL_ALL_VISITED_VIEWS
:
state
=>
{
// keep affix tags
const
affixTags
=
state
.
visitedViews
.
filter
(
tag
=>
tag
.
meta
.
affix
)
state
.
visitedViews
=
affixTags
state
.
iframeViews
=
[]
},
DEL_ALL_CACHED_VIEWS
:
state
=>
{
state
.
cachedViews
=
[]
},
UPDATE_VISITED_VIEW
:
(
state
,
view
)
=>
{
for
(
let
v
of
state
.
visitedViews
)
{
if
(
v
.
path
===
view
.
path
)
{
...
...
@@ -63,7 +74,6 @@ const mutations = {
}
}
},
DEL_RIGHT_VIEWS
:
(
state
,
view
)
=>
{
const
index
=
state
.
visitedViews
.
findIndex
(
v
=>
v
.
path
===
view
.
path
)
if
(
index
===
-
1
)
{
...
...
@@ -79,8 +89,9 @@ const mutations = {
}
return
false
})
const
iframeIndex
=
state
.
iframeViews
.
findIndex
(
v
=>
v
.
path
===
view
.
path
)
state
.
iframeViews
=
state
.
iframeViews
.
filter
((
item
,
idx
)
=>
idx
<=
iframeIndex
)
},
DEL_LEFT_VIEWS
:
(
state
,
view
)
=>
{
const
index
=
state
.
visitedViews
.
findIndex
(
v
=>
v
.
path
===
view
.
path
)
if
(
index
===
-
1
)
{
...
...
@@ -96,6 +107,8 @@ const mutations = {
}
return
false
})
const
iframeIndex
=
state
.
iframeViews
.
findIndex
(
v
=>
v
.
path
===
view
.
path
)
state
.
iframeViews
=
state
.
iframeViews
.
filter
((
item
,
idx
)
=>
idx
>=
iframeIndex
)
}
}
...
...
@@ -104,13 +117,15 @@ const actions = {
dispatch
(
'addVisitedView'
,
view
)
dispatch
(
'addCachedView'
,
view
)
},
addIframeView
({
commit
},
view
)
{
commit
(
'ADD_IFRAME_VIEW'
,
view
)
},
addVisitedView
({
commit
},
view
)
{
commit
(
'ADD_VISITED_VIEW'
,
view
)
},
addCachedView
({
commit
},
view
)
{
commit
(
'ADD_CACHED_VIEW'
,
view
)
},
delView
({
dispatch
,
state
},
view
)
{
return
new
Promise
(
resolve
=>
{
dispatch
(
'delVisitedView'
,
view
)
...
...
@@ -127,13 +142,18 @@ const actions = {
resolve
([...
state
.
visitedViews
])
})
},
delIframeView
({
commit
,
state
},
view
)
{
return
new
Promise
(
resolve
=>
{
commit
(
'DEL_IFRAME_VIEW'
,
view
)
resolve
([...
state
.
iframeViews
])
})
},
delCachedView
({
commit
,
state
},
view
)
{
return
new
Promise
(
resolve
=>
{
commit
(
'DEL_CACHED_VIEW'
,
view
)
resolve
([...
state
.
cachedViews
])
})
},
delOthersViews
({
dispatch
,
state
},
view
)
{
return
new
Promise
(
resolve
=>
{
dispatch
(
'delOthersVisitedViews'
,
view
)
...
...
@@ -156,7 +176,6 @@ const actions = {
resolve
([...
state
.
cachedViews
])
})
},
delAllViews
({
dispatch
,
state
},
view
)
{
return
new
Promise
(
resolve
=>
{
dispatch
(
'delAllVisitedViews'
,
view
)
...
...
@@ -179,18 +198,15 @@ const actions = {
resolve
([...
state
.
cachedViews
])
})
},
updateVisitedView
({
commit
},
view
)
{
commit
(
'UPDATE_VISITED_VIEW'
,
view
)
},
delRightTags
({
commit
},
view
)
{
return
new
Promise
(
resolve
=>
{
commit
(
'DEL_RIGHT_VIEWS'
,
view
)
resolve
([...
state
.
visitedViews
])
})
},
delLeftTags
({
commit
},
view
)
{
return
new
Promise
(
resolve
=>
{
commit
(
'DEL_LEFT_VIEWS'
,
view
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论