Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
RuoYi Vue
Commits
4eea8cdb
Commit
4eea8cdb
authored
Mar 18, 2023
by
刘元博
Browse files
优化选择图标组件
parent
cfce89be
Changes
2
Hide whitespace changes
Inline
Side-by-side
ruoyi-ui/src/components/IconSelect/index.vue
View file @
4eea8cdb
<!-- @author zhengjie -->
<
template
>
<div
class=
"icon-body"
>
<el-input
v-model=
"name"
style=
"position: relative;"
clearable
placeholder=
"请输入图标名称"
@
clear=
"filterIcons"
@
input
.native
=
"filterIcons"
>
<i
slot=
"suffix"
class=
"el-icon-search el-input__icon"
/>
</el-input>
<div
class=
"icon-list"
>
<div
v-for=
"(item, index) in iconList"
:key=
"index"
@
click=
"selectedIcon(item)"
>
<svg-icon
:icon-class=
"item"
style=
"height: 30px;width: 16px;"
/>
<span>
{{
item
}}
</span>
</div>
</div>
</div>
</
template
>
<
script
>
import
icons
from
'
./requireIcons
'
export
default
{
name
:
'
IconSelect
'
,
data
()
{
return
{
name
:
''
,
iconList
:
icons
}
},
methods
:
{
filterIcons
()
{
this
.
iconList
=
icons
if
(
this
.
name
)
{
this
.
iconList
=
this
.
iconList
.
filter
(
item
=>
item
.
includes
(
this
.
name
))
}
},
selectedIcon
(
name
)
{
this
.
$emit
(
'
selected
'
,
name
)
document
.
body
.
click
()
},
reset
()
{
this
.
name
=
''
this
.
iconList
=
icons
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.icon-body
{
width
:
100%
;
padding
:
10px
;
.icon-list
{
height
:
200px
;
overflow-y
:
scroll
;
div
{
height
:
30px
;
line-height
:
30px
;
margin-bottom
:
-5px
;
cursor
:
pointer
;
width
:
33%
;
float
:
left
;
}
span
{
display
:
inline-block
;
vertical-align
:
-0
.15em
;
fill
:
currentColor
;
overflow
:
hidden
;
}
}
}
</
style
>
<!-- @author zhengjie -->
<
template
>
<div
class=
"icon-body"
>
<el-input
v-model=
"name"
style=
"position: relative;"
clearable
placeholder=
"请输入图标名称"
@
clear=
"filterIcons"
@
input=
"filterIcons"
>
<i
slot=
"suffix"
class=
"el-icon-search el-input__icon"
/>
</el-input>
<div
class=
"icon-list"
>
<div
v-for=
"(item, index) in iconList"
:key=
"index"
@
click=
"selectedIcon(item)"
>
<svg-icon
:icon-class=
"item"
style=
"height: 30px;width: 16px;"
/>
<span>
{{
item
}}
</span>
</div>
</div>
</div>
</
template
>
<
script
>
import
icons
from
'
./requireIcons
'
export
default
{
name
:
'
IconSelect
'
,
data
()
{
return
{
name
:
''
,
iconList
:
icons
}
},
methods
:
{
filterIcons
()
{
this
.
iconList
=
icons
if
(
this
.
name
)
{
this
.
iconList
=
this
.
iconList
.
filter
(
item
=>
item
.
includes
(
this
.
name
))
}
},
selectedIcon
(
name
)
{
this
.
$emit
(
'
selected
'
,
name
)
document
.
body
.
click
()
},
reset
()
{
this
.
name
=
''
this
.
iconList
=
icons
}
}
}
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
scoped
>
.icon-body
{
width
:
100%
;
padding
:
10px
;
.icon-list
{
height
:
200px
;
overflow-y
:
scroll
;
div
{
height
:
30px
;
line-height
:
30px
;
margin-bottom
:
-5px
;
cursor
:
pointer
;
width
:
33%
;
float
:
left
;
}
span
{
display
:
inline-block
;
vertical-align
:
-0
.15em
;
fill
:
currentColor
;
overflow
:
hidden
;
}
}
}
</
style
>
ruoyi-ui/src/views/system/menu/index.vue
View file @
4eea8cdb
...
...
@@ -77,7 +77,7 @@
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
<el-button
size=
"mini"
type=
"text"
icon=
"el-icon-edit"
...
...
@@ -140,8 +140,7 @@
v-if=
"form.icon"
slot=
"prefix"
:icon-class=
"form.icon"
class=
"el-input__icon"
style=
"height: 32px;width: 16px;"
style=
"width: 25px;"
/>
<i
v-else
slot=
"prefix"
class=
"el-icon-search el-input__icon"
/>
</el-input>
...
...
Write
Preview
Supports
Markdown
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