Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
dataease
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
zhu
dataease
Commits
5ca005b3
提交
5ca005b3
authored
9月 03, 2021
作者:
fit2cloud-chenyw
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: 切换主题基本功能
上级
ad2e93c6
隐藏空白字符变更
内嵌
并排
正在显示
23 个修改的文件
包含
210 行增加
和
139 行删除
+210
-139
index.vue
frontend/src/components/LangSelect/index.vue
+9
-1
index.vue
frontend/src/components/Notification/index.vue
+1
-1
index.vue
frontend/src/components/ThemePicker/index.vue
+8
-5
index.vue
frontend/src/components/back-button/index.vue
+0
-2
LayoutContent.vue
frontend/src/components/business/LayoutContent.vue
+0
-2
index.vue
frontend/src/components/business/complex-table/index.vue
+2
-3
index.vue
frontend/src/components/business/tree-table/index.vue
+0
-1
docs.svg
frontend/src/icons/svg/docs.svg
+2
-2
language.svg
frontend/src/icons/svg/language.svg
+2
-2
zh.js
frontend/src/lang/zh.js
+5
-4
AppMain.vue
frontend/src/layout/components/AppMain.vue
+0
-1
index.vue
frontend/src/layout/components/Sidebar/index.vue
+35
-1
Topbar.vue
frontend/src/layout/components/Topbar.vue
+60
-6
index.js
frontend/src/layout/components/index.js
+1
-1
permission.js
frontend/src/permission.js
+2
-39
sidebar.scss
frontend/src/styles/sidebar.scss
+4
-4
topbar.scss
frontend/src/styles/topbar.scss
+4
-9
style.js
frontend/src/utils/style.js
+44
-0
all.vue
frontend/src/views/msg/all.vue
+2
-2
readed.vue
frontend/src/views/msg/readed.vue
+2
-2
unread.vue
frontend/src/views/msg/unread.vue
+2
-2
form.vue
frontend/src/views/system/datasource/form.vue
+22
-25
index.vue
frontend/src/views/system/user/index.vue
+3
-24
没有找到文件。
frontend/src/components/LangSelect/index.vue
浏览文件 @
5ca005b3
<
template
>
<
template
>
<el-dropdown
style=
"display: flex;align-items: center;"
trigger=
"click"
class=
"international"
@
command=
"handleSetLanguage"
>
<el-dropdown
style=
"display: flex;align-items: center;"
trigger=
"click"
class=
"international"
@
command=
"handleSetLanguage"
>
<div>
<div>
<svg-icon
class-name=
"international-icon"
icon-class=
"language"
/>
<svg-icon
:style=
"
{color: topMenuTextColor}"
class-name="international-icon" icon-class="language" />
</div>
</div>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:disabled=
"language==='zh_CN'"
command=
"zh_CN"
>
<el-dropdown-item
:disabled=
"language==='zh_CN'"
command=
"zh_CN"
>
...
@@ -24,10 +24,18 @@
...
@@ -24,10 +24,18 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
variables
from
'@/styles/variables.scss'
export
default
{
export
default
{
computed
:
{
computed
:
{
language
()
{
language
()
{
return
this
.
$store
.
getters
.
language
return
this
.
$store
.
getters
.
language
},
variables
()
{
return
variables
},
topMenuTextColor
()
{
if
(
this
.
$store
.
getters
.
uiInfo
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
]
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
].
paramValue
)
{
return
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
].
paramValue
}
return
this
.
variables
.
topBarMenuText
}
}
},
},
methods
:
{
methods
:
{
...
...
frontend/src/components/Notification/index.vue
浏览文件 @
5ca005b3
...
@@ -232,7 +232,7 @@ export default {
...
@@ -232,7 +232,7 @@ export default {
right
:
178px
;
right
:
178px
;
top
:
8px
;
top
:
8px
;
background
:
red
;
background
:
red
;
color
:
#fff
;
//
color: #fff;
border-radius
:
17px
;
border-radius
:
17px
;
padding
:
4px
7px
;
padding
:
4px
7px
;
font-size
:
16px
;
font-size
:
16px
;
...
...
frontend/src/components/ThemePicker/index.vue
浏览文件 @
5ca005b3
...
@@ -8,6 +8,7 @@
...
@@ -8,6 +8,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getThemeCluster
}
from
'@/utils/style'
const
version
=
require
(
'element-ui/package.json'
).
version
// element-ui version from node_modules
const
version
=
require
(
'element-ui/package.json'
).
version
// element-ui version from node_modules
const
ORIGINAL_THEME
=
'#409EFF'
// default color
const
ORIGINAL_THEME
=
'#409EFF'
// default color
export
default
{
export
default
{
...
@@ -38,12 +39,12 @@ export default {
...
@@ -38,12 +39,12 @@ export default {
async
switch
(
val
)
{
async
switch
(
val
)
{
const
oldVal
=
this
.
chalk
?
this
.
theme
:
ORIGINAL_THEME
const
oldVal
=
this
.
chalk
?
this
.
theme
:
ORIGINAL_THEME
if
(
typeof
val
!==
'string'
)
return
if
(
typeof
val
!==
'string'
)
return
const
themeCluster
=
this
.
getThemeCluster
(
val
.
replace
(
'#'
,
''
))
const
themeCluster
=
getThemeCluster
(
val
.
replace
(
'#'
,
''
))
const
originalCluster
=
this
.
getThemeCluster
(
oldVal
.
replace
(
'#'
,
''
))
const
originalCluster
=
getThemeCluster
(
oldVal
.
replace
(
'#'
,
''
))
const
getHandler
=
(
variable
,
id
)
=>
{
const
getHandler
=
(
variable
,
id
)
=>
{
return
()
=>
{
return
()
=>
{
const
originalCluster
=
this
.
getThemeCluster
(
ORIGINAL_THEME
.
replace
(
'#'
,
''
))
const
originalCluster
=
getThemeCluster
(
ORIGINAL_THEME
.
replace
(
'#'
,
''
))
const
newStyle
=
this
.
updateStyle
(
this
[
variable
],
originalCluster
,
themeCluster
)
const
newStyle
=
this
.
updateStyle
(
this
[
variable
],
originalCluster
,
themeCluster
)
let
styleTag
=
document
.
getElementById
(
id
)
let
styleTag
=
document
.
getElementById
(
id
)
...
@@ -98,8 +99,8 @@ export default {
...
@@ -98,8 +99,8 @@ export default {
xhr
.
open
(
'GET'
,
url
)
xhr
.
open
(
'GET'
,
url
)
xhr
.
send
()
xhr
.
send
()
})
})
}
,
}
/*
getThemeCluster(theme) {
getThemeCluster(theme) {
const tintColor = (color, tint) => {
const tintColor = (color, tint) => {
let red = parseInt(color.slice(0, 2), 16)
let red = parseInt(color.slice(0, 2), 16)
...
@@ -144,6 +145,8 @@ export default {
...
@@ -144,6 +145,8 @@ export default {
clusters.push(shadeColor(theme, 0.1))
clusters.push(shadeColor(theme, 0.1))
return clusters
return clusters
}
}
*/
}
}
}
}
</
script
>
</
script
>
...
...
frontend/src/components/back-button/index.vue
浏览文件 @
5ca005b3
...
@@ -31,8 +31,6 @@ export default {
...
@@ -31,8 +31,6 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.back-button
{
.back-button
{
cursor
:
pointer
;
cursor
:
pointer
;
...
...
frontend/src/components/business/LayoutContent.vue
浏览文件 @
5ca005b3
...
@@ -39,11 +39,9 @@ export default {
...
@@ -39,11 +39,9 @@ export default {
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.content-container
{
.content-container
{
transition
:
0
.3s
;
transition
:
0
.3s
;
color
:
$--color-text-primary
;
background-color
:
#FFFFFF
;
background-color
:
#FFFFFF
;
overflow
:
auto
;
overflow
:
auto
;
height
:
100%
;
height
:
100%
;
...
...
frontend/src/components/business/complex-table/index.vue
浏览文件 @
5ca005b3
...
@@ -9,7 +9,7 @@
...
@@ -9,7 +9,7 @@
<div>
<div>
<slot
name=
"toolbar"
/>
<slot
name=
"toolbar"
/>
</div>
</div>
<fu-search-bar
v-bind=
"searchConfig"
@
exec=
"search"
ref
=
"search"
>
<fu-search-bar
ref=
"search"
v-bind=
"searchConfig"
@
exec
=
"search"
>
<template
#
complex
>
<template
#
complex
>
<slot
name=
"complex"
/>
<slot
name=
"complex"
/>
</
template
>
</
template
>
...
@@ -65,7 +65,7 @@ export default {
...
@@ -65,7 +65,7 @@ export default {
},
},
data
()
{
data
()
{
return
{
return
{
condition
:
{}
,
condition
:
{}
}
}
},
},
mounted
()
{
mounted
()
{
...
@@ -86,7 +86,6 @@ export default {
...
@@ -86,7 +86,6 @@ export default {
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.complex-table
{
.complex-table
{
.complex-table__header
{
.complex-table__header
{
@include
flex-row
(
flex-start
,
center
);
@include
flex-row
(
flex-start
,
center
);
...
...
frontend/src/components/business/tree-table/index.vue
浏览文件 @
5ca005b3
...
@@ -79,7 +79,6 @@ export default {
...
@@ -79,7 +79,6 @@ export default {
<
style
lang=
"scss"
>
<
style
lang=
"scss"
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.complex-table
{
.complex-table
{
.complex-table__header
{
.complex-table__header
{
@include
flex-row
(
flex-start
,
center
);
@include
flex-row
(
flex-start
,
center
);
...
...
frontend/src/icons/svg/docs.svg
浏览文件 @
5ca005b3
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1623897748319"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"23219"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"200"
height=
"200"
><defs><style
type=
"text/css"
></style></defs><path
d=
"M512 1024C227.556 1024 0 796.444 0 512S227.556 0 512 0s512 227.556 512 512-227.556 512-512 512z m0-68.267c244.622 0 443.733-199.11 443.733-443.733S756.623 68.267 512 68.267 68.267 267.377 68.267 512 267.377 955.733 512 955.733z m11.378-694.044c45.51 0 85.333 11.378 113.778 39.822 28.444 22.756 45.51 62.578 45.51 102.4 0 34.133-11.377 68.267-28.444 91.022-5.689 5.69-28.444 28.445-62.578 56.89-11.377 11.377-22.755 22.755-28.444 39.821-5.689 17.067-11.378 34.134-11.378 45.512v11.377h-79.644v-11.377c0-28.445 5.689-51.2 17.066-68.267 11.378-22.756 39.823-51.2 79.645-91.022l11.378-11.378c11.377-17.067 22.755-34.133 22.755-51.2 0-22.756-5.689-45.511-22.755-56.889-17.067-17.067-34.134-22.756-62.578-22.756-34.133 0-56.889 11.378-73.956 28.445-11.377 17.067-17.066 39.822-17.066 73.955H352.71c0-51.2 17.067-96.71 45.511-125.155 28.445-34.133 73.956-51.2 125.156-51.2zM512 688.356c17.067 0 28.444 5.688 39.822 17.066 11.378 11.378 17.067 22.756 17.067 39.822 0 17.067-5.689 28.445-17.067 39.823-11.378 11.377-22.755 17.066-39.822 17.066-28.444 0-51.2-22.755-51.2-51.2 0-17.066 5.689-28.444 17.067-39.822 5.689-17.067 22.755-22.755 34.133-22.755z"
p-id=
"23220"
fill=
"#707070"
></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1623897748319"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"23219"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"200"
height=
"200"
><defs><style
type=
"text/css"
></style></defs><path
d=
"M512 1024C227.556 1024 0 796.444 0 512S227.556 0 512 0s512 227.556 512 512-227.556 512-512 512z m0-68.267c244.622 0 443.733-199.11 443.733-443.733S756.623 68.267 512 68.267 68.267 267.377 68.267 512 267.377 955.733 512 955.733z m11.378-694.044c45.51 0 85.333 11.378 113.778 39.822 28.444 22.756 45.51 62.578 45.51 102.4 0 34.133-11.377 68.267-28.444 91.022-5.689 5.69-28.444 28.445-62.578 56.89-11.377 11.377-22.755 22.755-28.444 39.821-5.689 17.067-11.378 34.134-11.378 45.512v11.377h-79.644v-11.377c0-28.445 5.689-51.2 17.066-68.267 11.378-22.756 39.823-51.2 79.645-91.022l11.378-11.378c11.377-17.067 22.755-34.133 22.755-51.2 0-22.756-5.689-45.511-22.755-56.889-17.067-17.067-34.134-22.756-62.578-22.756-34.133 0-56.889 11.378-73.956 28.445-11.377 17.067-17.066 39.822-17.066 73.955H352.71c0-51.2 17.067-96.71 45.511-125.155 28.445-34.133 73.956-51.2 125.156-51.2zM512 688.356c17.067 0 28.444 5.688 39.822 17.066 11.378 11.378 17.067 22.756 17.067 39.822 0 17.067-5.689 28.445-17.067 39.823-11.378 11.377-22.755 17.066-39.822 17.066-28.444 0-51.2-22.755-51.2-51.2 0-17.066 5.689-28.444 17.067-39.822 5.689-17.067 22.755-22.755 34.133-22.755z"
p-id=
"23220"
></path></svg>
\ No newline at end of file
\ No newline at end of file
frontend/src/icons/svg/language.svg
浏览文件 @
5ca005b3
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1623896817205"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"12052"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"200"
height=
"200"
><defs><style
type=
"text/css"
></style></defs><path
d=
"M616.521143 407.478857h313.417143a69.485714 69.485714 0 0 1 69.705143 69.705143v452.754286a69.485714 69.485714 0 0 1-69.705143 69.705143h-452.754286a69.485714 69.485714 0 0 1-69.705143-69.705143V616.594286H94.061714a69.485714 69.485714 0 0 1-69.705143-69.705143v-452.754286a69.485714 69.485714 0 0 1 69.705143-69.705143h452.754286a69.485714 69.485714 0 0 1 69.705143 69.705143V407.405714z m0 69.705143v69.632a69.485714 69.485714 0 0 1-69.705143 69.705143h-69.632v278.674286c0 19.163429 15.579429 34.742857 34.816 34.742857h383.122286a34.816 34.816 0 0 0 34.816-34.742857V512a34.816 34.816 0 0 0-34.816-34.816h-278.674286zM94.061714 128.731429V512c0 19.236571 15.579429 34.816 34.742857 34.816H512A34.816 34.816 0 0 0 546.816 512V128.877714A34.816 34.816 0 0 0 512 94.061714H128.877714a34.816 34.816 0 0 0-34.816 34.742857z m69.632 265.947428V219.574857h122.733715V146.285714h50.834285c7.021714 1.024 10.532571 1.974857 10.532572 2.998857a11.483429 11.483429 0 0 1-1.462857 4.461715c-3.072 8.045714-4.534857 17.481143-4.534858 28.452571v37.376h130.194286v170.642286h-55.369143v-22.454857H341.796571v128.731428h-53.906285v-128.731428H214.601143v26.989714h-50.907429z m50.834286-133.193143v65.828572h73.362286v-65.828572H214.601143z m202.093714 65.828572v-65.828572H341.796571v65.828572h74.825143z m221.915429 531.163428h-56.905143l100.278857-276.918857h70.363429l97.28 276.918857h-59.830857l-20.992-58.368H659.456l-20.918857 58.368z m35.84-104.813714h79.36L716.361143 635.611429h-1.462857l-40.448 118.198857z m255.561143-450.706286h-69.632a139.337143 139.337143 0 0 0-139.337143-139.337143v-69.632a208.969143 208.969143 0 0 1 208.969143 208.969143zM94.061714 720.969143h69.632c0 76.946286 62.390857 139.337143 139.337143 139.337143v69.632a208.969143 208.969143 0 0 1-208.969143-208.969143z"
p-id=
"12053"
fill=
"#8a8a8a"
></path></svg>
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg
t=
"1623896817205"
class=
"icon"
viewBox=
"0 0 1024 1024"
version=
"1.1"
xmlns=
"http://www.w3.org/2000/svg"
p-id=
"12052"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
width=
"200"
height=
"200"
><defs><style
type=
"text/css"
></style></defs><path
d=
"M616.521143 407.478857h313.417143a69.485714 69.485714 0 0 1 69.705143 69.705143v452.754286a69.485714 69.485714 0 0 1-69.705143 69.705143h-452.754286a69.485714 69.485714 0 0 1-69.705143-69.705143V616.594286H94.061714a69.485714 69.485714 0 0 1-69.705143-69.705143v-452.754286a69.485714 69.485714 0 0 1 69.705143-69.705143h452.754286a69.485714 69.485714 0 0 1 69.705143 69.705143V407.405714z m0 69.705143v69.632a69.485714 69.485714 0 0 1-69.705143 69.705143h-69.632v278.674286c0 19.163429 15.579429 34.742857 34.816 34.742857h383.122286a34.816 34.816 0 0 0 34.816-34.742857V512a34.816 34.816 0 0 0-34.816-34.816h-278.674286zM94.061714 128.731429V512c0 19.236571 15.579429 34.816 34.742857 34.816H512A34.816 34.816 0 0 0 546.816 512V128.877714A34.816 34.816 0 0 0 512 94.061714H128.877714a34.816 34.816 0 0 0-34.816 34.742857z m69.632 265.947428V219.574857h122.733715V146.285714h50.834285c7.021714 1.024 10.532571 1.974857 10.532572 2.998857a11.483429 11.483429 0 0 1-1.462857 4.461715c-3.072 8.045714-4.534857 17.481143-4.534858 28.452571v37.376h130.194286v170.642286h-55.369143v-22.454857H341.796571v128.731428h-53.906285v-128.731428H214.601143v26.989714h-50.907429z m50.834286-133.193143v65.828572h73.362286v-65.828572H214.601143z m202.093714 65.828572v-65.828572H341.796571v65.828572h74.825143z m221.915429 531.163428h-56.905143l100.278857-276.918857h70.363429l97.28 276.918857h-59.830857l-20.992-58.368H659.456l-20.918857 58.368z m35.84-104.813714h79.36L716.361143 635.611429h-1.462857l-40.448 118.198857z m255.561143-450.706286h-69.632a139.337143 139.337143 0 0 0-139.337143-139.337143v-69.632a208.969143 208.969143 0 0 1 208.969143 208.969143zM94.061714 720.969143h69.632c0 76.946286 62.390857 139.337143 139.337143 139.337143v69.632a208.969143 208.969143 0 0 1-208.969143-208.969143z"
p-id=
"12053"
></path></svg>
\ No newline at end of file
\ No newline at end of file
frontend/src/lang/zh.js
浏览文件 @
5ca005b3
...
@@ -1246,13 +1246,14 @@ export default {
...
@@ -1246,13 +1246,14 @@ export default {
loginTitle
:
'登录页面标题'
,
loginTitle
:
'登录页面标题'
,
title
:
'系统名称'
,
title
:
'系统名称'
,
advice_size
:
'建议图片大小'
,
advice_size
:
'建议图片大小'
,
theme
:
'
头部背景
'
,
theme
:
'
主题颜色
'
,
topMenuActiveColor
:
'主题颜色'
,
topMenuColor
:
'头部背景'
,
topMenuActiveColor
:
'头部选中背景'
,
topMenuTextColor
:
'字体颜色'
,
topMenuTextColor
:
'
头部
字体颜色'
,
topMenuTextActiveColor
:
'字体选中颜色'
topMenuTextActiveColor
:
'
头部
字体选中颜色'
},
},
auth
:
{
auth
:
{
...
...
frontend/src/layout/components/AppMain.vue
浏览文件 @
5ca005b3
...
@@ -20,7 +20,6 @@ export default {
...
@@ -20,7 +20,6 @@ export default {
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
"~@/styles/variables.scss"
;
.app-main
{
.app-main
{
height
:
100%
;
height
:
100%
;
...
...
frontend/src/layout/components/Sidebar/index.vue
浏览文件 @
5ca005b3
<
template
>
<
template
>
<div
:class=
"
{'has-logo':showLogo}">
<div
:class=
"
{'has-logo':showLogo}"
:style="{'--active-bg': activeBg, '--theme':$store.state.settings.theme , '--left-menu-hovor': variables.leftMenuHovor}"
>
<logo
v-if=
"showLogo"
:collapse=
"isCollapse"
/>
<logo
v-if=
"showLogo"
:collapse=
"isCollapse"
/>
<el-menu
<el-menu
:default-active=
"activeMenu"
:default-active=
"activeMenu"
...
@@ -18,9 +18,12 @@ import { mapGetters } from 'vuex'
...
@@ -18,9 +18,12 @@ import { mapGetters } from 'vuex'
import
Logo
from
'./Logo'
import
Logo
from
'./Logo'
import
SidebarItem
from
'./SidebarItem'
import
SidebarItem
from
'./SidebarItem'
import
variables
from
'@/styles/variables.scss'
import
variables
from
'@/styles/variables.scss'
import
{
getThemeCluster
}
from
'@/utils/style'
export
default
{
export
default
{
components
:
{
SidebarItem
,
Logo
},
components
:
{
SidebarItem
,
Logo
},
computed
:
{
computed
:
{
...
mapGetters
([
...
mapGetters
([
'sidebar'
'sidebar'
]),
]),
...
@@ -45,7 +48,38 @@ export default {
...
@@ -45,7 +48,38 @@ export default {
},
},
isCollapse
()
{
isCollapse
()
{
return
false
return
false
},
activeBg
()
{
const
theme
=
this
.
$store
.
state
.
settings
.
theme
const
styleCluster
=
getThemeCluster
(
theme
.
replace
(
'#'
,
''
))
if
(
styleCluster
.
length
>
2
)
{
const
len
=
styleCluster
.
length
const
val
=
styleCluster
[
len
-
2
]
return
val
}
return
''
}
}
}
}
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
.sidebar-container
{
>>>
li
.el-menu-item.is-active
{
background-color
:
var
(
--
active-bg
)
!
important
;
}
>>>
li
.el-submenu.is-active
:not
(
&
:hover
)
{
background-color
:
var
(
--
active-bg
)
;
}
>>>
li
.el-submenu__title
{
&
:hover
{
background-color
:
var
(
--
left-menu-hovor
)
!
important
;
}
}
/* .is-active > .el-submenu__title {
color: var(--theme) !important;
} */
}
</
style
>
frontend/src/layout/components/Topbar.vue
浏览文件 @
5ca005b3
<
template
>
<
template
>
<div
class=
"top-nav"
>
<div
class=
"top-nav"
:style=
"
{backgroundColor: topMenuColor, '--active-bg-color': topMenuActiveColor}"
>
<div
v-loading=
"!axiosFinished"
class=
"log"
>
<div
v-loading=
"!axiosFinished"
class=
"log"
>
<svg-icon
v-if=
"!logoUrl && axiosFinished"
icon-class=
"DataEase"
custom-class=
"top-nav-logo-icon"
/>
<svg-icon
v-if=
"!logoUrl && axiosFinished"
icon-class=
"DataEase"
custom-class=
"top-nav-logo-icon"
/>
<img
v-if=
"logoUrl && axiosFinished"
:src=
"logoUrl"
width=
"140"
alt=
""
style=
"padding-top: 10px;"
>
<img
v-if=
"logoUrl && axiosFinished"
:src=
"logoUrl"
width=
"140"
alt=
""
style=
"padding-top: 10px;"
>
</div>
</div>
<el-menu
<el-menu
class=
"de-top-menu"
:background-color=
"topMenuColor"
:text-color=
"topMenuTextColor"
:active-text-color=
"topMenuTextActiveColor"
:default-active=
"activeMenu"
:default-active=
"activeMenu"
mode=
"horizontal"
mode=
"horizontal"
:style=
"
{'margin-left': '260px', 'position': 'absolute'}"
:style=
"
{'margin-left': '260px', 'position': 'absolute'}"
...
@@ -20,7 +24,7 @@
...
@@ -20,7 +24,7 @@
</div>
</div>
</el-menu>
</el-menu>
<div
class=
"right-menu"
>
<div
class=
"right-menu"
:style=
"
{color: topMenuTextColor}"
>
<template>
<template>
<notification
class=
"right-menu-item hover-effect"
/>
<notification
class=
"right-menu-item hover-effect"
/>
...
@@ -33,7 +37,7 @@
...
@@ -33,7 +37,7 @@
</
template
>
</
template
>
<el-dropdown
class=
"top-dropdown"
style=
"display: flex;align-items: center; width:100px;"
>
<el-dropdown
class=
"top-dropdown"
style=
"display: flex;align-items: center; width:100px;"
>
<span
class=
"el-dropdown-link"
style=
"font-size: 14px;max-width: 80px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"
>
<span
:style=
" {color: topMenuTextColor}"
class=
"el-dropdown-link"
style=
"font-size: 14px;max-width: 80px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;"
>
{{ name }}
{{ name }}
<i
class=
"el-icon-arrow-down el-icon--right"
/>
<i
class=
"el-icon-arrow-down el-icon--right"
/>
</span>
</span>
...
@@ -59,6 +63,7 @@
...
@@ -59,6 +63,7 @@
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
</div>
</div>
<theme-picker
v-show=
"false"
ref=
"de-theme"
/>
</div>
</div>
</template>
</template>
...
@@ -69,16 +74,17 @@ import AppLink from './Sidebar/Link'
...
@@ -69,16 +74,17 @@ import AppLink from './Sidebar/Link'
import
variables
from
'@/styles/variables.scss'
import
variables
from
'@/styles/variables.scss'
import
{
isExternal
}
from
'@/utils/validate'
import
{
isExternal
}
from
'@/utils/validate'
import
Notification
from
'@/components/Notification'
import
Notification
from
'@/components/Notification'
//
import bus from '@/utils/bus'
import
bus
from
'@/utils/bus'
import
LangSelect
from
'@/components/LangSelect'
import
LangSelect
from
'@/components/LangSelect'
import
{
getSysUI
}
from
'@/utils/auth'
import
{
getSysUI
}
from
'@/utils/auth'
import
ThemePicker
from
'@/components/ThemePicker'
export
default
{
export
default
{
name
:
'Topbar'
,
name
:
'Topbar'
,
components
:
{
components
:
{
AppLink
,
AppLink
,
Notification
,
Notification
,
LangSelect
LangSelect
,
ThemePicker
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -92,6 +98,26 @@ export default {
...
@@ -92,6 +98,26 @@ export default {
theme
()
{
theme
()
{
return
this
.
$store
.
state
.
settings
.
theme
return
this
.
$store
.
state
.
settings
.
theme
},
},
topMenuColor
()
{
if
(
this
.
$store
.
getters
.
uiInfo
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuColor'
]
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuColor'
].
paramValue
)
{
return
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuColor'
].
paramValue
}
return
this
.
variables
.
topBarBg
},
topMenuActiveColor
()
{
if
(
this
.
$store
.
getters
.
uiInfo
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuActiveColor'
]
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuActiveColor'
].
paramValue
)
{
return
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuActiveColor'
].
paramValue
}
return
this
.
variables
.
topBarMenuActive
},
topMenuTextColor
()
{
if
(
this
.
$store
.
getters
.
uiInfo
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
]
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
].
paramValue
)
{
return
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextColor'
].
paramValue
}
return
this
.
variables
.
topBarMenuText
},
topMenuTextActiveColor
()
{
if
(
this
.
$store
.
getters
.
uiInfo
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextActiveColor'
]
&&
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextActiveColor'
].
paramValue
)
{
return
this
.
$store
.
getters
.
uiInfo
[
'ui.topMenuTextActiveColor'
].
paramValue
}
return
this
.
variables
.
topBarMenuTextActive
},
/* topMenuColor() {
return this.$store.getters.uiInfo.topMenuColor
}, */
activeMenu
()
{
activeMenu
()
{
const
route
=
this
.
$route
const
route
=
this
.
$route
const
{
meta
,
path
}
=
route
const
{
meta
,
path
}
=
route
...
@@ -122,6 +148,11 @@ export default {
...
@@ -122,6 +148,11 @@ export default {
mounted
()
{
mounted
()
{
this
.
initCurrentRoutes
()
this
.
initCurrentRoutes
()
bus
.
$on
(
'set-theme-info'
,
this
.
setThemeInfo
)
bus
.
$on
(
'set-top-menu-info'
,
this
.
setTopMenuInfo
)
bus
.
$on
(
'set-top-menu-active-info'
,
this
.
setTopMenuActiveInfo
)
bus
.
$on
(
'set-top-text-info'
,
this
.
setTopTextInfo
)
bus
.
$on
(
'set-top-text-active-info'
,
this
.
setTopTextActiveInfo
)
},
},
created
()
{
created
()
{
this
.
loadUiInfo
()
this
.
loadUiInfo
()
...
@@ -230,6 +261,22 @@ export default {
...
@@ -230,6 +261,22 @@ export default {
}
}
this
.
axiosFinished
=
true
this
.
axiosFinished
=
true
})
})
},
setThemeInfo
(
val
)
{
// console.log('切换的主题颜色是:' + val)
this
.
$refs
[
'de-theme'
]
&&
this
.
$refs
[
'de-theme'
].
switch
&&
this
.
$refs
[
'de-theme'
].
switch
(
val
)
},
setTopMenuInfo
(
val
)
{
this
.
loadUiInfo
()
},
setTopMenuActiveInfo
(
val
)
{
this
.
loadUiInfo
()
},
setTopTextInfo
(
val
)
{
this
.
loadUiInfo
()
},
setTopTextActiveInfo
(
val
)
{
this
.
loadUiInfo
()
}
}
}
}
...
@@ -253,4 +300,11 @@ export default {
...
@@ -253,4 +300,11 @@ export default {
vertical-align
:
text-bottom
;
vertical-align
:
text-bottom
;
margin-right
:
10px
;
margin-right
:
10px
;
}
}
.de-top-menu
{
>>>
li
.is-active
{
// background-color: #0a7be0 !important;
background-color
:
var
(
--
active-bg-color
)
!
important
;
}
}
</
style
>
</
style
>
frontend/src/layout/components/index.js
浏览文件 @
5ca005b3
// export { default as Navbar } from './Navbar'
// export { default as Navbar } from './Navbar'
export
{
default
as
Sidebar
}
from
'./Sidebar'
export
{
default
as
Sidebar
}
from
'./Sidebar'
export
{
default
as
Settings
}
from
'./Settings'
//
export { default as Settings } from './Settings'
export
{
default
as
AppMain
}
from
'./AppMain'
export
{
default
as
AppMain
}
from
'./AppMain'
export
{
default
as
Topbar
}
from
'./Topbar'
export
{
default
as
Topbar
}
from
'./Topbar'
export
{
default
as
Licbar
}
from
'./Licbar'
export
{
default
as
Licbar
}
from
'./Licbar'
frontend/src/permission.js
浏览文件 @
5ca005b3
...
@@ -7,6 +7,7 @@ import { getToken } from '@/utils/auth' // get token from cookie
...
@@ -7,6 +7,7 @@ import { getToken } from '@/utils/auth' // get token from cookie
import
getPageTitle
from
'@/utils/get-page-title'
import
getPageTitle
from
'@/utils/get-page-title'
import
{
buildMenus
}
from
'@/api/system/menu'
import
{
buildMenus
}
from
'@/api/system/menu'
import
{
filterAsyncRouter
}
from
'@/store/modules/permission'
import
{
filterAsyncRouter
}
from
'@/store/modules/permission'
// import bus from './utils/bus'
NProgress
.
configure
({
showSpinner
:
false
})
// NProgress Configuration
NProgress
.
configure
({
showSpinner
:
false
})
// NProgress Configuration
...
@@ -21,7 +22,7 @@ router.beforeEach(async(to, from, next) => {
...
@@ -21,7 +22,7 @@ router.beforeEach(async(to, from, next) => {
// determine whether the user has logged in
// determine whether the user has logged in
const
hasToken
=
getToken
()
const
hasToken
=
getToken
()
// bus.$emit('set-theme-info', store.state.settings.theme)
if
(
hasToken
)
{
if
(
hasToken
)
{
if
(
to
.
path
===
'/login'
)
{
if
(
to
.
path
===
'/login'
)
{
// if is logged in, redirect to the home page
// if is logged in, redirect to the home page
...
@@ -76,7 +77,6 @@ export const loadMenus = (next, to) => {
...
@@ -76,7 +77,6 @@ export const loadMenus = (next, to) => {
buildMenus
().
then
(
res
=>
{
buildMenus
().
then
(
res
=>
{
const
filterDatas
=
filterRouter
(
res
.
data
)
const
filterDatas
=
filterRouter
(
res
.
data
)
const
asyncRouter
=
filterAsyncRouter
(
filterDatas
)
const
asyncRouter
=
filterAsyncRouter
(
filterDatas
)
// addMsgMenu(asyncRouter)
asyncRouter
.
push
({
path
:
'*'
,
redirect
:
'/404'
,
hidden
:
true
})
asyncRouter
.
push
({
path
:
'*'
,
redirect
:
'/404'
,
hidden
:
true
})
store
.
dispatch
(
'permission/GenerateRoutes'
,
asyncRouter
).
then
(()
=>
{
// 存储路由
store
.
dispatch
(
'permission/GenerateRoutes'
,
asyncRouter
).
then
(()
=>
{
// 存储路由
router
.
addRoutes
(
asyncRouter
)
router
.
addRoutes
(
asyncRouter
)
...
@@ -89,43 +89,6 @@ export const loadMenus = (next, to) => {
...
@@ -89,43 +89,6 @@ export const loadMenus = (next, to) => {
})
})
}
}
export
const
addMsgMenu
=
asyncRouter
=>
{
const
menu
=
{
path
:
'system-msg-web'
,
component
:
()
=>
import
(
'@/views/msg/index'
),
name
:
'sys-msg-web'
,
meta
:
{
title
:
'站内消息'
,
icon
:
'all-msg'
},
children
:
[
{
path
:
'all'
,
component
:
()
=>
import
(
'@/views/msg/all'
),
name
:
'sys-msg-web-all'
,
meta
:
{
title
:
'所有消息'
,
icon
:
'web-msg'
}
},
{
path
:
'unread'
,
component
:
()
=>
import
(
'@/views/msg/unread'
),
name
:
'sys-msg-web-unread'
,
meta
:
{
title
:
'未读消息'
,
icon
:
'unread-msg'
}
},
{
path
:
'readed'
,
component
:
()
=>
import
(
'@/views/msg/readed'
),
name
:
'sys-msg-web-readed'
,
meta
:
{
title
:
'已读消息'
,
icon
:
'readed-msg'
}
}
]
}
asyncRouter
.
forEach
(
element
=>
{
if
(
element
.
name
===
'system'
)
{
if
(
element
.
children
)
{
element
.
children
.
splice
(
0
,
0
,
menu
)
}
// element.children.push(menu)
}
})
}
/**
/**
* 验证path是否有效
* 验证path是否有效
* @param {*} path
* @param {*} path
...
...
frontend/src/styles/sidebar.scss
浏览文件 @
5ca005b3
...
@@ -71,9 +71,9 @@
...
@@ -71,9 +71,9 @@
height
:
100%
;
height
:
100%
;
width
:
100%
!
important
;
width
:
100%
!
important
;
.is-active
{
/*
.is-active {
background-color: $leftMenuActive;
background-color: $leftMenuActive;
}
}
*/
}
}
// menu hover
// menu hover
...
@@ -84,9 +84,9 @@
...
@@ -84,9 +84,9 @@
}
}
}
}
.is-active
>
.el-submenu__title
{
/*
.is-active > .el-submenu__title {
color: $leftMenuTextActive !important;
color: $leftMenuTextActive !important;
}
}
*/
&
.nest-menu
.el-submenu
>
.el-submenu__title
,
&
.nest-menu
.el-submenu
>
.el-submenu__title
,
&
.el-submenu
.el-menu-item
{
&
.el-submenu
.el-menu-item
{
...
...
frontend/src/styles/topbar.scss
浏览文件 @
5ca005b3
...
@@ -18,7 +18,7 @@
...
@@ -18,7 +18,7 @@
font-weight
:
bold
;
font-weight
:
bold
;
// color: rgb(191, 203, 217);
// color: rgb(191, 203, 217);
// color: rgba(255, 255, 255, 0.87);
// color: rgba(255, 255, 255, 0.87);
color
:
$topBarBg
;
//
color: $topBarBg;
float
:
left
;
float
:
left
;
img
{
img
{
...
@@ -30,32 +30,27 @@
...
@@ -30,32 +30,27 @@
.el-menu
{
.el-menu
{
float
:
left
;
float
:
left
;
border
:
none
!
important
;
border
:
none
!
important
;
// background-color: #304156;
background-color
:
$topBarBg
;
background-color
:
$topBarBg
;
.nav-item
{
.nav-item
{
display
:
inline-block
;
display
:
inline-block
;
.el-menu-item
:not
(
.is-active
)
{
.el-menu-item
:not
(
.is-active
)
{
// color: rgb(191, 203, 217);
color
:
$topBarMenuText
;
color
:
$topBarMenuText
;
&
:hover
{
&
:hover
{
background-color
:
$topBarMenuHovor
!
important
;
background-color
:
$topBarMenuHovor
!
important
;
// color: $subMenuActiveText !important;
}
}
&
:focus
{
&
:focus
{
background-color
:
$topBarMenuHovor
!
important
;
background-color
:
$topBarMenuHovor
!
important
;
color
:
$topBarMenuText
!
important
;
}
}
}
}
.is-active
{
/*
.is-active {
background-color: $topBarMenuActive !important;
background-color: $topBarMenuActive !important;
color
:
$topBarMenuTextActive
!
important
;
} */
}
}
}
}
}
...
@@ -77,7 +72,7 @@
...
@@ -77,7 +72,7 @@
height
:
100%
;
height
:
100%
;
font-size
:
18px
;
font-size
:
18px
;
// color: #5a5e66;
// color: #5a5e66;
color
:
#606266
;
//
color: #606266;
vertical-align
:
text-bottom
;
vertical-align
:
text-bottom
;
&
.hover-effect
{
&
.hover-effect
{
...
...
frontend/src/utils/style.js
0 → 100644
浏览文件 @
5ca005b3
export
function
getThemeCluster
(
theme
)
{
const
tintColor
=
(
color
,
tint
)
=>
{
let
red
=
parseInt
(
color
.
slice
(
0
,
2
),
16
)
let
green
=
parseInt
(
color
.
slice
(
2
,
4
),
16
)
let
blue
=
parseInt
(
color
.
slice
(
4
,
6
),
16
)
if
(
tint
===
0
)
{
// when primary color is in its rgb space
return
[
red
,
green
,
blue
].
join
(
','
)
}
else
{
red
+=
Math
.
round
(
tint
*
(
255
-
red
))
green
+=
Math
.
round
(
tint
*
(
255
-
green
))
blue
+=
Math
.
round
(
tint
*
(
255
-
blue
))
red
=
red
.
toString
(
16
)
green
=
green
.
toString
(
16
)
blue
=
blue
.
toString
(
16
)
return
`#
${
red
}${
green
}${
blue
}
`
}
}
const
shadeColor
=
(
color
,
shade
)
=>
{
let
red
=
parseInt
(
color
.
slice
(
0
,
2
),
16
)
let
green
=
parseInt
(
color
.
slice
(
2
,
4
),
16
)
let
blue
=
parseInt
(
color
.
slice
(
4
,
6
),
16
)
red
=
Math
.
round
((
1
-
shade
)
*
red
)
green
=
Math
.
round
((
1
-
shade
)
*
green
)
blue
=
Math
.
round
((
1
-
shade
)
*
blue
)
red
=
red
.
toString
(
16
)
green
=
green
.
toString
(
16
)
blue
=
blue
.
toString
(
16
)
return
`#
${
red
}${
green
}${
blue
}
`
}
const
clusters
=
[
theme
]
for
(
let
i
=
0
;
i
<=
9
;
i
++
)
{
clusters
.
push
(
tintColor
(
theme
,
Number
((
i
/
10
).
toFixed
(
2
))))
}
clusters
.
push
(
shadeColor
(
theme
,
0.1
))
return
clusters
}
frontend/src/views/msg/all.vue
浏览文件 @
5ca005b3
...
@@ -180,8 +180,8 @@ export default {
...
@@ -180,8 +180,8 @@ export default {
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
color
:
#fff
;
color
:
#fff
;
background-color
:
#0a7be0
;
//
background-color: #0a7be0;
border-color
:
#0a7be0
;
//
border-color: #0a7be0;
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
}
}
...
...
frontend/src/views/msg/readed.vue
浏览文件 @
5ca005b3
...
@@ -210,8 +210,8 @@ export default {
...
@@ -210,8 +210,8 @@ export default {
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
color
:
#fff
;
color
:
#fff
;
background-color
:
#0a7be0
;
/*
background-color: #0a7be0;
border-color
:
#0a7be0
;
border-color: #0a7be0;
*/
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
}
}
...
...
frontend/src/views/msg/unread.vue
浏览文件 @
5ca005b3
...
@@ -218,8 +218,8 @@ export default {
...
@@ -218,8 +218,8 @@ export default {
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
>>>
.el-radio-button__orig-radio
:checked
+
.el-radio-button__inner
{
color
:
#fff
;
color
:
#fff
;
background-color
:
#0a7be0
;
/*
background-color: #0a7be0;
border-color
:
#0a7be0
;
border-color: #0a7be0;
*/
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
-webkit-box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
box-shadow
:
0px
0
0
0
#0a7be0
;
}
}
...
...
frontend/src/views/system/datasource/form.vue
浏览文件 @
5ca005b3
...
@@ -25,10 +25,10 @@
...
@@ -25,10 +25,10 @@
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.host')"
prop=
"configuration.host"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.host')"
prop=
"configuration.host"
>
<el-input
v-model=
"form.configuration.host"
autocomplete=
"off"
/>
<el-input
v-model=
"form.configuration.host"
autocomplete=
"off"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.data_base')"
prop=
"configuration.dataBase"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.data_base')"
prop=
"configuration.dataBase"
>
<el-input
v-model=
"form.configuration.dataBase"
autocomplete=
"off"
/>
<el-input
v-model=
"form.configuration.dataBase"
autocomplete=
"off"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.type=='oracle'"
:label=
"$t('datasource.oracle_connection_type')"
prop=
"configuration.connectionType"
>
<el-form-item
v-if=
"form.type=='oracle'"
:label=
"$t('datasource.oracle_connection_type')"
prop=
"configuration.connectionType"
>
...
@@ -37,7 +37,7 @@
...
@@ -37,7 +37,7 @@
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.user_name')"
prop=
"configuration.username"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.user_name')"
prop=
"configuration.username"
>
<el-input
v-model=
"form.configuration.username"
autocomplete=
"off"
/>
<el-input
v-model=
"form.configuration.username"
autocomplete=
"off"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.password')"
prop=
"configuration.password"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.password')"
prop=
"configuration.password"
>
<el-input
v-model=
"form.configuration.password"
autocomplete=
"off"
show-password
/>
<el-input
v-model=
"form.configuration.password"
autocomplete=
"off"
show-password
/>
...
@@ -52,7 +52,7 @@
...
@@ -52,7 +52,7 @@
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.type=='oracle' || form.type=='sqlServer' || form.type=='pg'"
:label=
"$t('datasource.schema')"
>
<el-form-item
v-if=
"form.type=='oracle' || form.type=='sqlServer' || form.type=='pg'"
:label=
"$t('datasource.schema')"
>
<el-select
filterable
v-model=
"form.configuration.schema"
:placeholder=
"$t('datasource.please_choose_schema')"
class=
"select-width"
>
<el-select
v-model=
"form.configuration.schema"
filterable
:placeholder=
"$t('datasource.please_choose_schema')"
class=
"select-width"
>
<el-option
<el-option
v-for=
"item in schemas"
v-for=
"item in schemas"
:key=
"item"
:key=
"item"
...
@@ -68,19 +68,19 @@
...
@@ -68,19 +68,19 @@
<el-input
v-model=
"form.configuration.initialPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
size=
"small"
/>
<el-input
v-model=
"form.configuration.initialPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
size=
"small"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.min_pool_size')"
prop=
"configuration.minPoolSize"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.min_pool_size')"
prop=
"configuration.minPoolSize"
>
<el-input
v-model=
"form.configuration.minPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
<el-input
v-model=
"form.configuration.minPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.max_pool_size')"
prop=
"configuration.maxPoolSize"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.max_pool_size')"
prop=
"configuration.maxPoolSize"
>
<el-input
v-model=
"form.configuration.maxPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
<el-input
v-model=
"form.configuration.maxPoolSize"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.max_idle_time')"
prop=
"configuration.maxIdleTime"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.max_idle_time')"
prop=
"configuration.maxIdleTime"
>
<el-input
v-model=
"form.configuration.maxIdleTime"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
<el-input
v-model=
"form.configuration.maxIdleTime"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.acquire_increment')"
prop=
"configuration.acquireIncrement"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.acquire_increment')"
prop=
"configuration.acquireIncrement"
>
<el-input
v-model=
"form.configuration.acquireIncrement"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
<el-input
v-model=
"form.configuration.acquireIncrement"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
</el-form-item>
</el-form-item>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.connect_timeout')"
prop=
"configuration.connectTimeout"
>
<el-form-item
v-if=
"form.configuration.dataSourceType=='jdbc'"
:label=
"$t('datasource.connect_timeout')"
prop=
"configuration.connectTimeout"
>
<el-input
v-model=
"form.configuration.connectTimeout"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
<el-input
v-model=
"form.configuration.connectTimeout"
autocomplete=
"off"
type=
"number"
min=
"0"
/>
</el-form-item>
</el-form-item>
</el-collapse-item>
</el-collapse-item>
...
@@ -144,9 +144,9 @@ export default {
...
@@ -144,9 +144,9 @@ export default {
'configuration.connectTimeout'
:
[{
required
:
true
,
message
:
this
.
$t
(
'datasource.please_input_connect_timeout'
),
trigger
:
'change'
}]
'configuration.connectTimeout'
:
[{
required
:
true
,
message
:
this
.
$t
(
'datasource.please_input_connect_timeout'
),
trigger
:
'change'
}]
},
},
allTypes
:
[{
name
:
'mysql'
,
label
:
'MySQL'
,
type
:
'jdbc'
},
allTypes
:
[{
name
:
'mysql'
,
label
:
'MySQL'
,
type
:
'jdbc'
},
{
name
:
'oracle'
,
label
:
'Oracle'
,
type
:
'jdbc'
},
{
name
:
'oracle'
,
label
:
'Oracle'
,
type
:
'jdbc'
},
{
name
:
'sqlServer'
,
label
:
'SQL Server'
,
type
:
'jdbc'
},
{
name
:
'sqlServer'
,
label
:
'SQL Server'
,
type
:
'jdbc'
},
{
name
:
'pg'
,
label
:
'PostgreSQL'
,
type
:
'jdbc'
}],
{
name
:
'pg'
,
label
:
'PostgreSQL'
,
type
:
'jdbc'
}],
schemas
:
[],
schemas
:
[],
canEdit
:
false
,
canEdit
:
false
,
originConfiguration
:
{}
originConfiguration
:
{}
...
@@ -202,8 +202,8 @@ export default {
...
@@ -202,8 +202,8 @@ export default {
this
.
$message
.
error
(
this
.
$t
(
'datasource.please_choose_schema'
))
this
.
$message
.
error
(
this
.
$t
(
'datasource.please_choose_schema'
))
return
return
}
}
if
(
this
.
form
.
configuration
.
initialPoolSize
<
0
||
this
.
form
.
configuration
.
minPoolSize
<
0
||
this
.
form
.
configuration
.
maxPoolSize
<
0
||
this
.
form
.
configuration
.
maxIdleTime
<
0
if
(
this
.
form
.
configuration
.
initialPoolSize
<
0
||
this
.
form
.
configuration
.
minPoolSize
<
0
||
this
.
form
.
configuration
.
maxPoolSize
<
0
||
this
.
form
.
configuration
.
maxIdleTime
<
0
||
||
this
.
form
.
configuration
.
acquireIncrement
<
0
||
this
.
form
.
configuration
.
idleConnectionTestPeriod
<
0
||
this
.
form
.
configuration
.
connectTimeout
<
0
)
{
this
.
form
.
configuration
.
acquireIncrement
<
0
||
this
.
form
.
configuration
.
idleConnectionTestPeriod
<
0
||
this
.
form
.
configuration
.
connectTimeout
<
0
)
{
this
.
$message
.
error
(
this
.
$t
(
'datasource.no_less_then_0'
))
this
.
$message
.
error
(
this
.
$t
(
'datasource.no_less_then_0'
))
return
return
}
}
...
@@ -212,7 +212,7 @@ export default {
...
@@ -212,7 +212,7 @@ export default {
const
method
=
this
.
formType
===
'add'
?
addDs
:
editDs
const
method
=
this
.
formType
===
'add'
?
addDs
:
editDs
const
form
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
const
form
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
form
.
configuration
=
JSON
.
stringify
(
form
.
configuration
)
form
.
configuration
=
JSON
.
stringify
(
form
.
configuration
)
if
(
this
.
formType
!==
'add'
&&
this
.
originConfiguration
!==
form
.
configuration
)
{
if
(
this
.
formType
!==
'add'
&&
this
.
originConfiguration
!==
form
.
configuration
)
{
$confirm
(
this
.
$t
(
'datasource.edit_datasource_msg'
),
()
=>
{
$confirm
(
this
.
$t
(
'datasource.edit_datasource_msg'
),
()
=>
{
method
(
form
).
then
(
res
=>
{
method
(
form
).
then
(
res
=>
{
this
.
$success
(
this
.
$t
(
'commons.save_success'
))
this
.
$success
(
this
.
$t
(
'commons.save_success'
))
...
@@ -220,7 +220,7 @@ export default {
...
@@ -220,7 +220,7 @@ export default {
this
.
backToList
()
this
.
backToList
()
})
})
})
})
}
else
{
}
else
{
method
(
form
).
then
(
res
=>
{
method
(
form
).
then
(
res
=>
{
this
.
$success
(
this
.
$t
(
'commons.save_success'
))
this
.
$success
(
this
.
$t
(
'commons.save_success'
))
this
.
refreshTree
()
this
.
refreshTree
()
...
@@ -255,23 +255,22 @@ export default {
...
@@ -255,23 +255,22 @@ export default {
if
(
valid
)
{
if
(
valid
)
{
const
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
const
data
=
JSON
.
parse
(
JSON
.
stringify
(
this
.
form
))
data
.
configuration
=
JSON
.
stringify
(
data
.
configuration
)
data
.
configuration
=
JSON
.
stringify
(
data
.
configuration
)
if
(
data
.
showModel
===
'show'
&&
!
this
.
canEdit
)
{
if
(
data
.
showModel
===
'show'
&&
!
this
.
canEdit
)
{
validateDsById
(
data
.
id
).
then
(
res
=>
{
validateDsById
(
data
.
id
).
then
(
res
=>
{
if
(
res
.
success
)
{
if
(
res
.
success
)
{
this
.
$success
(
this
.
$t
(
'datasource.validate_success'
))
this
.
$success
(
this
.
$t
(
'datasource.validate_success'
))
}
else
{
}
else
{
this
.
$error
(
this
.
$t
(
res
.
message
))
this
.
$error
(
this
.
$t
(
res
.
message
))
}
}
this
.
refreshTree
()
this
.
refreshTree
()
}).
catch
(
res
=>
{
}).
catch
(
res
=>
{
this
.
$error
(
res
.
message
)
this
.
$error
(
res
.
message
)
})
})
}
else
{
}
else
{
validateDs
(
data
).
then
(
res
=>
{
validateDs
(
data
).
then
(
res
=>
{
if
(
res
.
success
)
{
if
(
res
.
success
)
{
this
.
$success
(
this
.
$t
(
'datasource.validate_success'
))
this
.
$success
(
this
.
$t
(
'datasource.validate_success'
))
}
else
{
}
else
{
this
.
$error
(
this
.
$t
(
res
.
message
))
this
.
$error
(
this
.
$t
(
res
.
message
))
}
}
}).
catch
(
res
=>
{
}).
catch
(
res
=>
{
...
@@ -301,8 +300,6 @@ export default {
...
@@ -301,8 +300,6 @@ export default {
}
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
@import
"~@/styles/mixin.scss"
;
@import
"~@/styles/variables.scss"
;
.back-button
{
.back-button
{
cursor
:
pointer
;
cursor
:
pointer
;
...
...
frontend/src/views/system/user/index.vue
浏览文件 @
5ca005b3
...
@@ -18,7 +18,6 @@
...
@@ -18,7 +18,6 @@
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"nickName"
sortable=
"custom"
:label=
"$t('commons.nick_name')"
/>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"nickName"
sortable=
"custom"
:label=
"$t('commons.nick_name')"
/>
<el-table-column
prop=
"gender"
:label=
"$t('commons.gender')"
width=
"60"
/>
<el-table-column
prop=
"gender"
:label=
"$t('commons.gender')"
width=
"60"
/>
<!-- <el-table-column :show-overflow-tooltip="true" prop="phone" :label="$t('commons.phone')" /> -->
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"email"
:label=
"$t('commons.email')"
/>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"email"
:label=
"$t('commons.email')"
/>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"dept"
sortable=
"custom"
:label=
"$t('commons.organization')"
>
<el-table-column
:show-overflow-tooltip=
"true"
prop=
"dept"
sortable=
"custom"
:label=
"$t('commons.organization')"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
...
@@ -162,7 +161,6 @@
...
@@ -162,7 +161,6 @@
<
script
>
<
script
>
import
LayoutContent
from
'@/components/business/LayoutContent'
import
LayoutContent
from
'@/components/business/LayoutContent'
import
ComplexTable
from
'@/components/business/complex-table'
import
ComplexTable
from
'@/components/business/complex-table'
// import { checkPermission } from '@/utils/permission'
import
{
formatCondition
,
formatQuickCondition
,
addOrder
,
formatOrders
}
from
'@/utils/index'
import
{
formatCondition
,
formatQuickCondition
,
addOrder
,
formatOrders
}
from
'@/utils/index'
import
{
PHONE_REGEX
}
from
'@/utils/validate'
import
{
PHONE_REGEX
}
from
'@/utils/validate'
import
{
LOAD_CHILDREN_OPTIONS
,
LOAD_ROOT_OPTIONS
}
from
'@riophae/vue-treeselect'
import
{
LOAD_CHILDREN_OPTIONS
,
LOAD_ROOT_OPTIONS
}
from
'@riophae/vue-treeselect'
...
@@ -170,7 +168,6 @@ import Treeselect from '@riophae/vue-treeselect'
...
@@ -170,7 +168,6 @@ import Treeselect from '@riophae/vue-treeselect'
import
'@riophae/vue-treeselect/dist/vue-treeselect.css'
import
'@riophae/vue-treeselect/dist/vue-treeselect.css'
import
{
userLists
,
addUser
,
editUser
,
delUser
,
editPassword
,
editStatus
,
allRoles
}
from
'@/api/system/user'
import
{
userLists
,
addUser
,
editUser
,
delUser
,
editPassword
,
editStatus
,
allRoles
}
from
'@/api/system/user'
// import { allRoles } from '@/api/system/role'
import
{
getDeptTree
,
treeByDeptId
}
from
'@/api/system/dept'
import
{
getDeptTree
,
treeByDeptId
}
from
'@/api/system/dept'
export
default
{
export
default
{
...
@@ -192,10 +189,7 @@ export default {
...
@@ -192,10 +189,7 @@ export default {
label
:
this
.
$t
(
'member.edit_password'
),
icon
:
'el-icon-s-tools'
,
type
:
'success'
,
click
:
this
.
editPassword
,
label
:
this
.
$t
(
'member.edit_password'
),
icon
:
'el-icon-s-tools'
,
type
:
'success'
,
click
:
this
.
editPassword
,
show
:
this
.
checkPermission
([
'user:editPwd'
])
show
:
this
.
checkPermission
([
'user:editPwd'
])
}
}
// , {
// label: '权限查看', icon: 'el-icon-lock', type: 'warning', click: this.showAuth,
// show: this.checkPermission(['user:editPwd'])
// }
],
],
searchConfig
:
{
searchConfig
:
{
useQuickSearch
:
true
,
useQuickSearch
:
true
,
...
@@ -307,7 +301,6 @@ export default {
...
@@ -307,7 +301,6 @@ export default {
}
}
},
},
mounted
()
{
mounted
()
{
// this.form = Object.assign({}, this.defaultForm);
this
.
allRoles
()
this
.
allRoles
()
this
.
search
()
this
.
search
()
},
},
...
@@ -347,28 +340,14 @@ export default {
...
@@ -347,28 +340,14 @@ export default {
create
()
{
create
()
{
this
.
$router
.
push
({
name
:
'system-user-form'
})
this
.
$router
.
push
({
name
:
'system-user-form'
})
},
},
// create() {
// this.depts = null
// this.formType = 'add'
// this.form = Object.assign({}, this.defaultForm)
// this.dialogVisible = true
// },
edit
(
row
)
{
edit
(
row
)
{
this
.
$router
.
push
({
name
:
'system-user-form'
,
params
:
row
})
this
.
$router
.
push
({
name
:
'system-user-form'
,
params
:
row
})
},
},
showAuth
(
row
)
{
showAuth
(
row
)
{
this
.
$router
.
push
({
name
:
'system-user-form'
,
params
:
row
})
this
.
$router
.
push
({
name
:
'system-user-form'
,
params
:
row
})
},
},
// edit(row) {
// this.depts = null
// this.formType = 'modify'
// this.dialogVisible = true
// this.form = Object.assign({}, row)
// if (this.form.deptId === 0) {
// this.form.deptId = null
// }
// this.initDeptTree()
// },
editPassword
(
row
)
{
editPassword
(
row
)
{
this
.
editPasswordVisible
=
true
this
.
editPasswordVisible
=
true
const
tempForm
=
Object
.
assign
({},
row
)
const
tempForm
=
Object
.
assign
({},
row
)
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论