Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
ferry_web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jianan
ferry_web
Commits
81de7c85
Commit
81de7c85
authored
Jun 09, 2025
by
yuzhenWang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature-0530wyz-完成工单需求' into 'dev'
解决嵌入iframe问题 See merge request
!1
parents
64956f8c
9ca75b12
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
107 additions
and
79 deletions
+107
-79
.env.development
+1
-1
.env.staging
+1
-2
package.json
+1
-0
src/layout/components/Navbar.vue
+33
-29
src/layout/components/Sidebar/SidebarItem.vue
+1
-1
src/layout/index.vue
+61
-44
src/utils/auth.js
+9
-2
No files found.
.env.development
View file @
81de7c85
...
...
@@ -2,7 +2,7 @@
ENV = 'development'
# base api
VUE_APP_BASE_API = 'http
://139.224.145.34:8002
'
VUE_APP_BASE_API = 'http
s://mdev.zuihuibi.cn/ferry
'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.
...
...
.env.staging
View file @
81de7c85
...
...
@@ -4,5 +4,4 @@ NODE_ENV = production
ENV = 'staging'
# base api
VUE_APP_BASE_API = ''
VUE_APP_BASE_API = 'https://mdev.zuihuibi.cn/ferry'
package.json
View file @
81de7c85
...
...
@@ -8,6 +8,7 @@
"dev"
:
"vue-cli-service serve"
,
"build:prod"
:
"vue-cli-service build"
,
"build:stage"
:
"vue-cli-service build --mode staging"
,
"build:dev"
:
"vue-cli-service build --mode development"
,
"preview"
:
"node build/index.js --preview"
,
"lint"
:
"eslint --ext .js,.vue src"
,
"test:unit"
:
"jest --clearCache && vue-cli-service test:unit"
,
...
...
src/layout/components/Navbar.vue
View file @
81de7c85
<
template
>
<!-- v-if="!hiddenSidler" -->
<div
v-if=
"!hiddenSidler"
class=
"navbar"
>
<hamburger
id=
"hamburger-container"
:is-active=
"sidebar.opened"
class=
"hamburger-container"
@
toggleClick=
"toggleSideBar"
/>
<div
class=
"navbar"
>
<hamburger
id=
"hamburger-container"
:is-active=
"sidebar.opened"
class=
"hamburger-container"
@
toggleClick=
"toggleSideBar"
/>
<breadcrumb
id=
"breadcrumb-container"
class=
"breadcrumb-container"
/>
<div
class=
"right-menu"
>
<template
v-if=
"device
!==
'mobile'"
>
<template
v-if=
"device
!==
'mobile'"
>
<search
id=
"header-search"
class=
"right-menu-item"
/>
<screenfull
id=
"screenfull"
class=
"right-menu-item hover-effect"
/>
</
template
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<el-dropdown
class=
"avatar-container right-menu-item hover-effect"
trigger=
"click"
>
<div
class=
"avatar-wrapper"
>
<img
:src=
"avatar+'?imageView2/1/w/80/h/80'"
class=
"user-avatar"
alt=
""
>
<span
style=
"font-size: 14px; position: relative; bottom: 15px"
>
{{ name }}
</span>
<i
class=
"el-icon-caret-bottom"
style=
"position: absolute; top: 13px"
/>
<img
:src=
"avatar + '?imageView2/1/w/80/h/80'"
class=
"user-avatar"
alt=
""
>
<span
style=
"font-size: 14px; position: relative; bottom: 15px"
>
{{
name
}}
</span>
<i
class=
"el-icon-caret-bottom"
style=
"position: absolute; top: 13px"
/>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<router-link
to=
"/profile/index"
>
<el-dropdown-item>
个人中心
</el-dropdown-item>
</router-link>
<el-dropdown-item
divided
>
<span
style=
"display:
block;
"
@
click=
"logout"
>
退出登录
</span>
<span
style=
"display:
block
"
@
click=
"logout"
>
退出登录
</span>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
...
...
@@ -47,19 +62,9 @@ export default {
Search
},
computed
:
{
...
mapGetters
([
'sidebar'
,
'avatar'
,
'device'
,
'name'
]),
hiddenSidler
()
{
return
this
.
$store
.
state
.
user
.
hiddenSidler
}
},
mounted
()
{
console
.
log
(
this
.
hiddenSidler
)
// 获取 hiddenSidler 的值
...
mapGetters
([
'sidebar'
,
'avatar'
,
'device'
,
'name'
])
},
mounted
()
{},
methods
:
{
toggleSideBar
()
{
this
.
$store
.
dispatch
(
'app/toggleSideBar'
)
...
...
@@ -76,7 +81,6 @@ export default {
})
}
}
}
</
script
>
...
...
@@ -86,18 +90,18 @@ export default {
overflow
:
hidden
;
position
:
relative
;
background
:
#fff
;
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,
.08
);
box-shadow
:
0
1px
4px
rgba
(
0
,
21
,
41
,
0
.08
);
.hamburger-container
{
line-height
:
46px
;
height
:
100%
;
float
:
left
;
cursor
:
pointer
;
transition
:
background
.3s
;
-webkit-tap-highlight-color
:
transparent
;
transition
:
background
0
.3s
;
-webkit-tap-highlight-color
:
transparent
;
&:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
background
:
rgba
(
0
,
0
,
0
,
0.025
);
}
}
...
...
@@ -129,10 +133,10 @@ export default {
&.hover-effect
{
cursor
:
pointer
;
transition
:
background
.3s
;
transition
:
background
0
.3s
;
&:hover
{
background
:
rgba
(
0
,
0
,
0
,
.025
)
background
:
rgba
(
0
,
0
,
0
,
0.025
);
}
}
}
...
...
src/layout/components/Sidebar/SidebarItem.vue
View file @
81de7c85
<
template
>
<div
v-if=
"!item.hidden"
class=
"menu-wrapper"
>
<div
class=
"menu-wrapper"
>
<template
v-if=
"hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"
>
<app-link
v-if=
"onlyOneChild.meta"
:to=
"resolvePath(onlyOneChild.path)"
>
<el-menu-item
:index=
"resolvePath(onlyOneChild.path)"
:class=
"
{'submenu-title-noDropdown':!isNest}">
...
...
src/layout/index.vue
View file @
81de7c85
<
template
>
<div
:class=
"classObj"
class=
"app-wrapper"
>
<div
v-if=
"device==='mobile'&&sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
/>
<sidebar
class=
"sidebar-container"
/>
<div
:class=
"
{hasTagsView:needTagsView}" class="main-container">
<div
:class=
"
{'fixed-header':fixedHeader}">
<div
v-if=
"device === 'mobile' && sidebar.opened"
class=
"drawer-bg"
@
click=
"handleClickOutside"
/>
<sidebar
v-if=
"!hiddenSidler"
class=
"sidebar-container"
/>
<!--
<div
:class=
"
{ hasTagsView: needTagsView }" class="main-container"> -->
<div
:class=
"mainContainerClass"
>
<div
v-if=
"!hiddenSidler"
:class=
"
{ 'fixed-header': fixedHeader }">
<navbar
/>
<tags-view
v-if=
"needTagsView"
/>
</div>
...
...
@@ -34,11 +40,11 @@ export default {
mixins
:
[
ResizeMixin
],
computed
:
{
...
mapState
({
sidebar
:
state
=>
state
.
app
.
sidebar
,
device
:
state
=>
state
.
app
.
device
,
showSettings
:
state
=>
state
.
settings
.
showSettings
,
needTagsView
:
state
=>
state
.
settings
.
tagsView
,
fixedHeader
:
state
=>
state
.
settings
.
fixedHeader
sidebar
:
(
state
)
=>
state
.
app
.
sidebar
,
device
:
(
state
)
=>
state
.
app
.
device
,
showSettings
:
(
state
)
=>
state
.
settings
.
showSettings
,
needTagsView
:
(
state
)
=>
state
.
settings
.
tagsView
,
fixedHeader
:
(
state
)
=>
state
.
settings
.
fixedHeader
}),
classObj
()
{
return
{
...
...
@@ -47,10 +53,21 @@ export default {
withoutAnimation
:
this
.
sidebar
.
withoutAnimation
,
mobile
:
this
.
device
===
'mobile'
}
},
hiddenSidler
()
{
return
this
.
$store
.
state
.
user
.
hiddenSidler
},
mainContainerClass
()
{
return
{
'main-container'
:
!
this
.
hiddenSidler
,
hasTagsView
:
this
.
needTagsView
}
}
},
created
()
{
console
.
log
(
'
\
u611f
\
u8c22
\
u60a8
\
u4f7f
\
u7528
\
u672c
\
u7cfb
\
u7edf
\
uff0c
\
u5982
\
u679c
\
u53ef
\
u4ee5
\
u8bf7
\
u60a8
\
u5728github
\
u4e0a
\
u70b9
\
u4e0a
\
u4e00
\
u4e2a
\
u5c0f
\
u5c0f
\
u7684star
\
uff0c
\
u60a8
\
u7684
\
u652f
\
u6301
\
uff0c
\
u6211
\
u7684
\
u52a8
\
u529b
\
u3002
\
nhttps://github.com/lanyulei/ferry
\
n
\
u6709
\
u4efb
\
u4f55
\
u95ee
\
u9898
\
u6b22
\
u8fce
\
u52a0
\
u7fa4
\
u8be2
\
u95ee
\
uff1a1127401830'
)
console
.
log
(
'
\
u611f
\
u8c22
\
u60a8
\
u4f7f
\
u7528
\
u672c
\
u7cfb
\
u7edf
\
uff0c
\
u5982
\
u679c
\
u53ef
\
u4ee5
\
u8bf7
\
u60a8
\
u5728github
\
u4e0a
\
u70b9
\
u4e0a
\
u4e00
\
u4e2a
\
u5c0f
\
u5c0f
\
u7684star
\
uff0c
\
u60a8
\
u7684
\
u652f
\
u6301
\
uff0c
\
u6211
\
u7684
\
u52a8
\
u529b
\
u3002
\
nhttps://github.com/lanyulei/ferry
\
n
\
u6709
\
u4efb
\
u4f55
\
u95ee
\
u9898
\
u6b22
\
u8fce
\
u52a0
\
u7fa4
\
u8be2
\
u95ee
\
uff1a1127401830'
)
},
methods
:
{
handleClickOutside
()
{
...
...
@@ -61,45 +78,45 @@ export default {
</
script
>
<
style
lang=
"scss"
scoped
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.app-wrapper
{
@include
clearfix;
position
:
relative
;
height
:
100%
;
width
:
100%
;
&.mobile.openSidebar
{
position
:
fixed
;
top
:
0
;
}
}
.drawer-bg
{
background
:
#000
;
opacity
:
0.3
;
width
:
100%
;
top
:
0
;
height
:
100%
;
position
:
absolute
;
z-index
:
999
;
}
.app-wrapper
{
@include
clearfix;
position
:
relative
;
height
:
100%
;
width
:
100%
;
.fixed-heade
r
{
&.mobile.openSideba
r
{
position
:
fixed
;
top
:
0
;
right
:
0
;
z-index
:
9
;
width
:
calc
(
100%
-
#{$
sideBarWidth
}
);
transition
:
width
0
.28s
;
}
}
.hideSidebar
.fixed-header
{
width
:
calc
(
100%
-
54px
)
}
.drawer-bg
{
background
:
#000
;
opacity
:
0.3
;
width
:
100%
;
top
:
0
;
height
:
100%
;
position
:
absolute
;
z-index
:
999
;
}
.mobile
.fixed-header
{
width
:
100%
;
}
.fixed-header
{
position
:
fixed
;
top
:
0
;
right
:
0
;
z-index
:
9
;
width
:
calc
(
100%
-
#{$
sideBarWidth
}
);
transition
:
width
0
.28s
;
}
.hideSidebar
.fixed-header
{
width
:
calc
(
100%
-
54px
);
}
.mobile
.fixed-header
{
width
:
100%
;
}
</
style
>
src/utils/auth.js
View file @
81de7c85
...
...
@@ -6,10 +6,17 @@ export function getToken() {
return
Cookies
.
get
(
TokenKey
)
}
// export function setToken(token) {
// return Cookies.set(TokenKey, token)
// }
export
function
setToken
(
token
)
{
return
Cookies
.
set
(
TokenKey
,
token
)
// 修改这里,添加 SameSite 和 Secure 属性
return
Cookies
.
set
(
TokenKey
,
token
,
{
sameSite
:
'None'
,
secure
:
true
,
expires
:
7
// 7天过期,根据你的需求调整
})
}
export
function
removeToken
()
{
return
Cookies
.
remove
(
TokenKey
)
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment