1
1
<template >
2
- <div >
2
+ <div class = " icon-flex " >
3
3
<el-popover
4
4
v-if =" inputType || disabledSelected"
5
5
placement =" bottom-start"
27
27
<!-- 页面显示内容区 -->
28
28
<template slot="reference">
29
29
<div :class =" {
30
- 'mod -select-icon': 1,
30
+ 'icon -select-icon': 1,
31
31
'is-opened': popoverVisible,
32
32
'is-active': value,
33
33
'is-disabled': disabledSelected
38
38
</div >
39
39
<!-- 清空按钮 -->
40
40
<div v-show =" value" class =" btn-clear" >
41
- <i class =" el-icon-close" @click.stop =" onClickClear() " ></i >
41
+ <i class =" el-icon-close" @click.stop =" onClickClear" ></i >
42
42
</div >
43
43
</div >
44
44
</template >
45
45
</el-popover >
46
- <el-input v-else class = " mod-input " v-model.trim =" value " ></el-input >
47
- <el-button :disabled =" disabledSelected" @click =" inputType = !inputType" :type =" inputType?'primary':'ghost'" icon =" el-icon-edit" circle ></el-button >
46
+ <el-input v-else v-model.trim =" nowValue " ></el-input >
47
+ <el-button class = " icon-button " :disabled =" disabledSelected" @click =" inputType = !inputType" :type =" inputType?'primary':'ghost'" icon =" el-icon-edit" circle ></el-button >
48
48
</div >
49
49
</template >
50
50
@@ -54,12 +54,9 @@ export default {
54
54
// 设置绑定参数
55
55
model: {
56
56
prop: ' value' ,
57
- event : ' selected ' ,
57
+ event : ' change ' ,
58
58
},
59
59
props: {
60
- value: {
61
- default: null
62
- },
63
60
disabled: Boolean ,
64
61
// 接收绑定参数 - 图标类名
65
62
value: {
@@ -69,7 +66,7 @@ export default {
69
66
// 选项数据,图标类名数组
70
67
options: {
71
68
type: Array ,
72
- default: () => (['mofont mo-icon-dashboard mo-menu','mofont mo-icon-admin mo-menu','el-icon-ice-cream-round','el-icon-ice-cream-square','el-icon-lollipop','el-icon-potato-strips','el-icon-milk-tea','el-icon-ice-drink','el-icon-ice-tea','el-icon-coffee','el-icon-orange','el-icon-pear','el-icon-apple','el-icon-cherry','el-icon-watermelon','el-icon-grape','el-icon-refrigerator','el-icon-goblet-square-full','el-icon-goblet-square','el-icon-goblet-full','el-icon-goblet','el-icon-cold-drink','el-icon-coffee-cup','el-icon-water-cup','el-icon-hot-water','el-icon-ice-cream','el-icon-dessert','el-icon-sugar','el-icon-tableware','el-icon-burger','el-icon-knife-fork','el-icon-fork-spoon','el-icon-chicken','el-icon-food','el-icon-dish-1','el-icon-dish','el-icon-moon-night','el-icon-moon','el-icon-cloudy-and-sunny','el-icon-partly-cloudy','el-icon-cloudy','el-icon-sunny','el-icon-sunset','el-icon-sunrise-1','el-icon-sunrise','el-icon-heavy-rain','el-icon-lightning','el-icon-light-rain','el-icon-wind-power','el-icon-baseball','el-icon-soccer','el-icon-football','el-icon-basketball','el-icon-ship','el-icon-truck','el-icon-bicycle','el-icon-mobile-phone','el-icon-service','el-icon-key','el-icon-unlock','el-icon-lock','el-icon-watch','el-icon-watch-1','el-icon-timer','el-icon-alarm-clock','el-icon-map-location','el-icon-delete-location','el-icon-add-location','el-icon-location-information','el-icon-location-outline','el-icon-location','el-icon-place','el-icon-discover','el-icon-first-aid-kit','el-icon-trophy-1','el-icon-trophy','el-icon-medal','el-icon-medal-1','el-icon-stopwatch','el-icon-mic','el-icon-copy-document','el-icon-full-screen','el-icon-switch-button','el-icon-aim','el-icon-crop','el-icon-odometer','el-icon-time','el-icon-bangzhu','el-icon-close-notification','el-icon-microphone','el-icon-turn-off-microphone','el-icon-position','el-icon-postcard','el-icon-message','el-icon-chat-line-square','el-icon-chat-dot-square','el-icon-chat-dot-round','el-icon-chat-square','el-icon-chat-line-round','el-icon-chat-round','el-icon-set-up','el-icon-turn-off','el-icon-open','el-icon-connection','el-icon-link','el-icon-cpu','el-icon-thumb','el-icon-female','el-icon-male','el-icon-guide','el-icon-news','el-icon-price-tag','el-icon-discount','el-icon-wallet','el-icon-coin','el-icon-money','el-icon-bank-card','el-icon-box','el-icon-present','el-icon-sell','el-icon-sold-out','el-icon-shopping-bag-2','el-icon-shopping-bag-1','el-icon-shopping-cart-2','el-icon-shopping-cart-1','el-icon-shopping-cart-full','el-icon-smoking','el-icon-no-smoking','el-icon-house','el-icon-table-lamp','el-icon-school','el-icon-office-building','el-icon-toilet-paper','el-icon-notebook-2','el-icon-notebook-1','el-icon-files','el-icon-collection','el-icon-receiving','el-icon-suitcase-1','el-icon-suitcase','el-icon-film','el-icon-collection-tag','el-icon-data-analysis','el-icon-pie-chart','el-icon-data-board','el-icon-data-line','el-icon-reading','el-icon-magic-stick','el-icon-coordinate','el-icon-mouse','el-icon-brush','el-icon-headset','el-icon-umbrella','el-icon-scissors','el-icon-mobile','el-icon-attract','el-icon-monitor','el-icon-search','el-icon-takeaway-box','el-icon-paperclip','el-icon-printer','el-icon-document-add','el-icon-document','el-icon-document-checked','el-icon-document-copy','el-icon-document-delete','el-icon-document-remove','el-icon-tickets','el-icon-folder-checked','el-icon-folder-delete','el-icon-folder-remove','el-icon-folder-add','el-icon-folder-opened','el-icon-folder','el-icon-edit-outline','el-icon-edit','el-icon-date','el-icon-c-scale-to-original','el-icon-view','el-icon-loading','el-icon-rank','el-icon-sort-down','el-icon-sort-up','el-icon-sort','el-icon-finished','el-icon-refresh-left','el-icon-refresh-right','el-icon-refresh','el-icon-video-play','el-icon-video-pause','el-icon-d-arrow-right','el-icon-d-arrow-left','el-icon-arrow-up','el-icon-arrow-down','el-icon-arrow-right','el-icon-arrow-left','el-icon-top-right','el-icon-top-left','el-icon-top','el-icon-bottom','el-icon-right','el-icon-back','el-icon-bottom-right','el-icon-bottom-left','el-icon-caret-top','el-icon-caret-bottom','el-icon-caret-right','el-icon-caret-left','el-icon-d-caret','el-icon-share','el-icon-menu','el-icon-s-grid','el-icon-s-check','el-icon-s-data','el-icon-s-opportunity','el-icon-s-custom','el-icon-s-claim','el-icon-s-finance','el-icon-s-comment','el-icon-s-flag','el-icon-s-marketing','el-icon-s-shop','el-icon-s-open','el-icon-s-management','el-icon-s-ticket','el-icon-s-release','el-icon-s-home','el-icon-s-promotion','el-icon-s-operation','el-icon-s-unfold','el-icon-s-fold','el-icon-s-platform','el-icon-s-order','el-icon-s-cooperation','el-icon-bell','el-icon-message-solid','el-icon-video-camera','el-icon-video-camera-solid','el-icon-camera','el-icon-camera-solid','el-icon-download','el-icon-upload2','el-icon-upload','el-icon-picture-outline-round','el-icon-picture-outline','el-icon-picture','el-icon-close','el-icon-check','el-icon-plus','el-icon-minus','el-icon-help','el-icon-s-help','el-icon-circle-close','el-icon-circle-check','el-icon-circle-plus-outline','el-icon-remove-outline','el-icon-zoom-out','el-icon-zoom-in','el-icon-error','el-icon-success','el-icon-circle-plus','el-icon-remove','el-icon-info','el-icon-question','el-icon-warning-outline','el-icon-warning','el-icon-goods','el-icon-s-goods','el-icon-star-off','el-icon-star-on','el-icon-more-outline','el-icon-more','el-icon-phone-outline','el-icon-phone','el-icon-user','el-icon-user-solid','el-icon-setting','el-icon-s-tools','el-icon-delete','el-icon-delete-solid','el-icon-eleme']),
69
+ default: () => (['el-icon-ice-cream-round','el-icon-ice-cream-square','el-icon-lollipop','el-icon-potato-strips','el-icon-milk-tea','el-icon-ice-drink','el-icon-ice-tea','el-icon-coffee','el-icon-orange','el-icon-pear','el-icon-apple','el-icon-cherry','el-icon-watermelon','el-icon-grape','el-icon-refrigerator','el-icon-goblet-square-full','el-icon-goblet-square','el-icon-goblet-full','el-icon-goblet','el-icon-cold-drink','el-icon-coffee-cup','el-icon-water-cup','el-icon-hot-water','el-icon-ice-cream','el-icon-dessert','el-icon-sugar','el-icon-tableware','el-icon-burger','el-icon-knife-fork','el-icon-fork-spoon','el-icon-chicken','el-icon-food','el-icon-dish-1','el-icon-dish','el-icon-moon-night','el-icon-moon','el-icon-cloudy-and-sunny','el-icon-partly-cloudy','el-icon-cloudy','el-icon-sunny','el-icon-sunset','el-icon-sunrise-1','el-icon-sunrise','el-icon-heavy-rain','el-icon-lightning','el-icon-light-rain','el-icon-wind-power','el-icon-baseball','el-icon-soccer','el-icon-football','el-icon-basketball','el-icon-ship','el-icon-truck','el-icon-bicycle','el-icon-mobile-phone','el-icon-service','el-icon-key','el-icon-unlock','el-icon-lock','el-icon-watch','el-icon-watch-1','el-icon-timer','el-icon-alarm-clock','el-icon-map-location','el-icon-delete-location','el-icon-add-location','el-icon-location-information','el-icon-location-outline','el-icon-location','el-icon-place','el-icon-discover','el-icon-first-aid-kit','el-icon-trophy-1','el-icon-trophy','el-icon-medal','el-icon-medal-1','el-icon-stopwatch','el-icon-mic','el-icon-copy-document','el-icon-full-screen','el-icon-switch-button','el-icon-aim','el-icon-crop','el-icon-odometer','el-icon-time','el-icon-bangzhu','el-icon-close-notification','el-icon-microphone','el-icon-turn-off-microphone','el-icon-position','el-icon-postcard','el-icon-message','el-icon-chat-line-square','el-icon-chat-dot-square','el-icon-chat-dot-round','el-icon-chat-square','el-icon-chat-line-round','el-icon-chat-round','el-icon-set-up','el-icon-turn-off','el-icon-open','el-icon-connection','el-icon-link','el-icon-cpu','el-icon-thumb','el-icon-female','el-icon-male','el-icon-guide','el-icon-news','el-icon-price-tag','el-icon-discount','el-icon-wallet','el-icon-coin','el-icon-money','el-icon-bank-card','el-icon-box','el-icon-present','el-icon-sell','el-icon-sold-out','el-icon-shopping-bag-2','el-icon-shopping-bag-1','el-icon-shopping-cart-2','el-icon-shopping-cart-1','el-icon-shopping-cart-full','el-icon-smoking','el-icon-no-smoking','el-icon-house','el-icon-table-lamp','el-icon-school','el-icon-office-building','el-icon-toilet-paper','el-icon-notebook-2','el-icon-notebook-1','el-icon-files','el-icon-collection','el-icon-receiving','el-icon-suitcase-1','el-icon-suitcase','el-icon-film','el-icon-collection-tag','el-icon-data-analysis','el-icon-pie-chart','el-icon-data-board','el-icon-data-line','el-icon-reading','el-icon-magic-stick','el-icon-coordinate','el-icon-mouse','el-icon-brush','el-icon-headset','el-icon-umbrella','el-icon-scissors','el-icon-mobile','el-icon-attract','el-icon-monitor','el-icon-search','el-icon-takeaway-box','el-icon-paperclip','el-icon-printer','el-icon-document-add','el-icon-document','el-icon-document-checked','el-icon-document-copy','el-icon-document-delete','el-icon-document-remove','el-icon-tickets','el-icon-folder-checked','el-icon-folder-delete','el-icon-folder-remove','el-icon-folder-add','el-icon-folder-opened','el-icon-folder','el-icon-edit-outline','el-icon-edit','el-icon-date','el-icon-c-scale-to-original','el-icon-view','el-icon-loading','el-icon-rank','el-icon-sort-down','el-icon-sort-up','el-icon-sort','el-icon-finished','el-icon-refresh-left','el-icon-refresh-right','el-icon-refresh','el-icon-video-play','el-icon-video-pause','el-icon-d-arrow-right','el-icon-d-arrow-left','el-icon-arrow-up','el-icon-arrow-down','el-icon-arrow-right','el-icon-arrow-left','el-icon-top-right','el-icon-top-left','el-icon-top','el-icon-bottom','el-icon-right','el-icon-back','el-icon-bottom-right','el-icon-bottom-left','el-icon-caret-top','el-icon-caret-bottom','el-icon-caret-right','el-icon-caret-left','el-icon-d-caret','el-icon-share','el-icon-menu','el-icon-s-grid','el-icon-s-check','el-icon-s-data','el-icon-s-opportunity','el-icon-s-custom','el-icon-s-claim','el-icon-s-finance','el-icon-s-comment','el-icon-s-flag','el-icon-s-marketing','el-icon-s-shop','el-icon-s-open','el-icon-s-management','el-icon-s-ticket','el-icon-s-release','el-icon-s-home','el-icon-s-promotion','el-icon-s-operation','el-icon-s-unfold','el-icon-s-fold','el-icon-s-platform','el-icon-s-order','el-icon-s-cooperation','el-icon-bell','el-icon-message-solid','el-icon-video-camera','el-icon-video-camera-solid','el-icon-camera','el-icon-camera-solid','el-icon-download','el-icon-upload2','el-icon-upload','el-icon-picture-outline-round','el-icon-picture-outline','el-icon-picture','el-icon-close','el-icon-check','el-icon-plus','el-icon-minus','el-icon-help','el-icon-s-help','el-icon-circle-close','el-icon-circle-check','el-icon-circle-plus-outline','el-icon-remove-outline','el-icon-zoom-out','el-icon-zoom-in','el-icon-error','el-icon-success','el-icon-circle-plus','el-icon-remove','el-icon-info','el-icon-question','el-icon-warning-outline','el-icon-warning','el-icon-goods','el-icon-s-goods','el-icon-star-off','el-icon-star-on','el-icon-more-outline','el-icon-more','el-icon-phone-outline','el-icon-phone','el-icon-user','el-icon-user-solid','el-icon-setting','el-icon-s-tools','el-icon-delete','el-icon-delete-solid','el-icon-eleme']),
73
70
}
74
71
},
75
72
computed: {
@@ -82,35 +79,45 @@ export default {
82
79
return {
83
80
// 弹出框显示状态
84
81
popoverVisible: false ,
85
- inputType: true
82
+ inputType: true ,
83
+ nowValue: this .value ,
86
84
};
87
85
},
86
+ watch: {
87
+ value (newV ) {
88
+ this .nowValue = newV
89
+ },
90
+ nowValue (newV ) {
91
+ this .$emit (' change' , newV);
92
+ }
93
+ },
88
94
methods: {
89
95
// 是否为当前已选项
90
96
isActive (item ) {
91
97
return this .value === item;
92
98
},
93
99
// 选中图标
94
100
onClickSelected (item ) {
95
- this .$emit ( ' selected ' , item);
101
+ this .nowValue = item
96
102
this .popoverVisible = false ;
97
103
},
98
104
// 清空选项
99
105
onClickClear () {
100
- this .$emit ( ' selected ' , ' ' );
106
+ this .nowValue = ' '
101
107
},
102
108
},
103
109
};
104
110
</script >
105
111
106
112
<style lang="scss">
107
113
@import " ~element-ui/packages/theme-chalk/src/common/var.scss" ;
108
- .mod-input {
109
- width : 80% ;
114
+ .icon-flex {
115
+ display : flex ;
116
+ align-items : center ;
110
117
}
111
- .mod -select-icon
118
+ .icon -select-icon
112
119
{
113
- $size : 40 px ;
120
+ $size : 32 px ;
114
121
$col-count : 8 ;
115
122
$row-count : 4 ;
116
123
$scope : 5px ;
@@ -152,7 +159,9 @@ export default {
152
159
}
153
160
}
154
161
}
155
- > .icon-item > i { font-size : 16px ; }
162
+ > .icon-item > i {
163
+ font-size : ($size / 2 );
164
+ }
156
165
> .icon-item > iel-icon-plus {
157
166
width : 100% ;
158
167
line-height : $size ;
@@ -206,18 +215,20 @@ export default {
206
215
& :hover { background-color : $--color-info-light ; }
207
216
& .is-active {
208
217
background-color : $--color-success-light ;
209
- border : 1px solid $--color-success ;
210
218
}
211
219
> i {
212
220
display : block ;
213
221
width : 100% ;
214
222
height : 100% ;
215
- font-size : 16 px ;
216
- line-height : $size - ( $scope * 2 ) ;
223
+ font-size : ( $size / 2 ) ;
224
+ line-height : $size ;
217
225
color : $--color-white ;
218
226
background-color : $--color-primary ;
219
227
}
220
228
}
221
229
}
222
230
}
231
+ .icon-button {
232
+ padding : 7px !important ;
233
+ }
223
234
</style >
0 commit comments