Browse Source

菜单栏优化

lbj
sd 2 months ago
parent
commit
716e23df59
  1. 60
      ruoyi-ui/src/views/childRoom/LeftMenu.vue
  2. 16
      ruoyi-ui/src/views/dialogs/PageLayoutDialog.vue

60
ruoyi-ui/src/views/childRoom/LeftMenu.vue

@ -2,7 +2,7 @@
<div> <div>
<div <div
class="floating-left-menu" class="floating-left-menu"
:class="{ 'hidden': isHidden, 'edit-mode': isEditMode, 'position-top': position === 'top', 'position-bottom': position === 'bottom', 'position-left': position === 'left', 'position-right': position === 'right' }" :class="{ 'hidden': isHidden, 'edit-mode': isEditMode, 'position-top': position === 'top', 'position-bottom': position === 'bottom', 'position-left': position === 'left' }"
@mouseenter="showTooltip = true" @mouseenter="showTooltip = true"
@mouseleave="showTooltip = false" @mouseleave="showTooltip = false"
> >
@ -18,6 +18,7 @@
:options="dragOptions" :options="dragOptions"
:disabled="!isEditMode" :disabled="!isEditMode"
@end="onDragEnd" @end="onDragEnd"
@wheel.native="handleWheel"
> >
<div <div
v-for="item in localMenuItems" v-for="item in localMenuItems"
@ -185,6 +186,14 @@ export default {
this.showDeleteDialog = true this.showDeleteDialog = true
}, },
handleWheel(event) {
if (this.position === 'top' || this.position === 'bottom') {
event.preventDefault()
const container = event.currentTarget
container.scrollLeft += event.deltaY
}
},
confirmDelete() { confirmDelete() {
if (this.itemToDelete) { if (this.itemToDelete) {
const index = this.localMenuItems.findIndex(item => item.id === this.itemToDelete.id) const index = this.localMenuItems.findIndex(item => item.id === this.itemToDelete.id)
@ -235,7 +244,7 @@ export default {
max-width: 800px; max-width: 800px;
height: 40px; height: 40px;
flex-direction: row; flex-direction: row;
padding: 5px 15px; padding: 5px 4px 5px 4px;
display: flex; display: flex;
align-items: center; align-items: center;
} }
@ -247,10 +256,10 @@ export default {
transform: translateX(-50%); transform: translateX(-50%);
width: auto; width: auto;
min-width: 200px; min-width: 200px;
max-width: 800px; max-width: 1100px;
height: 40px; height: 40px;
flex-direction: row; flex-direction: row;
padding: 5px 18px 5px 18px; padding: 5px 5px 5px 5px;
display: flex; display: flex;
align-items: center; align-items: center;
} }
@ -261,13 +270,6 @@ export default {
width: 42px; width: 42px;
} }
.floating-left-menu.position-right {
top: 70px;
right: 20px;
left: auto;
width: 42px;
}
.floating-left-menu.hidden { .floating-left-menu.hidden {
opacity: 0; opacity: 0;
transform: translateX(-100%); transform: translateX(-100%);
@ -279,10 +281,6 @@ export default {
transform: translateX(-50%) translateY(-100%); transform: translateX(-50%) translateY(-100%);
} }
.floating-left-menu.position-right.hidden {
transform: translateX(100%);
}
.hide-btn { .hide-btn {
position: absolute; position: absolute;
top: 15px; top: 15px;
@ -318,10 +316,6 @@ export default {
transform: rotate(0deg); transform: rotate(0deg);
} }
.position-right .hide-btn i {
transform: rotate(180deg);
}
.menu-icons { .menu-icons {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -337,17 +331,17 @@ export default {
.position-top .menu-icons, .position-top .menu-icons,
.position-bottom .menu-icons { .position-bottom .menu-icons {
flex-direction: row; flex-direction: row;
margin: 0 0 0 30px; margin: 0 0 0 40px;
max-height: 40px; max-height: 40px;
max-width: calc(100% - 40px); max-width: calc(100% - 50px);
overflow-x: auto; overflow-x: auto;
overflow-y: hidden; overflow-y: hidden;
flex: 1; flex: 1;
padding-right: 10px; padding-right: 10px;
scrollbar-width: none;
} }
.position-left .menu-icons, .position-left .menu-icons {
.position-right .menu-icons {
flex-direction: column; flex-direction: column;
margin-top: 30px; margin-top: 30px;
max-height: calc(100vh - 280px); max-height: calc(100vh - 280px);
@ -367,6 +361,21 @@ export default {
display: none; display: none;
} }
.position-top .menu-icons::-webkit-scrollbar,
.position-bottom .menu-icons::-webkit-scrollbar {
display: none;
}
.position-top .menu-icons::-webkit-scrollbar-thumb,
.position-bottom .menu-icons::-webkit-scrollbar-thumb {
background: transparent;
}
.position-top .menu-icons::-webkit-scrollbar-track,
.position-bottom .menu-icons::-webkit-scrollbar-track {
background: transparent;
}
.menu-item { .menu-item {
display: flex; display: flex;
justify-content: center; justify-content: center;
@ -489,12 +498,11 @@ export default {
.position-top .add-btn, .position-top .add-btn,
.position-bottom .add-btn { .position-bottom .add-btn {
margin-left: 10px; margin-left: 0px;
margin-top: 0; margin-top: 0;
} }
.position-left .add-btn, .position-left .add-btn {
.position-right .add-btn {
margin-top: 10px; margin-top: 10px;
margin-left: 0; margin-left: 0;
} }

16
ruoyi-ui/src/views/dialogs/PageLayoutDialog.vue

@ -44,8 +44,7 @@ export default {
positionOptions: [ positionOptions: [
{ value: 'top', label: '顶部', icon: 'el-icon-top' }, { value: 'top', label: '顶部', icon: 'el-icon-top' },
{ value: 'bottom', label: '底部', icon: 'el-icon-bottom' }, { value: 'bottom', label: '底部', icon: 'el-icon-bottom' },
{ value: 'left', label: '左侧', icon: 'el-icon-back' }, { value: 'left', label: '左侧', icon: 'el-icon-back' }
{ value: 'right', label: '右侧', icon: 'el-icon-right' }
] ]
}; };
}, },
@ -139,9 +138,10 @@ export default {
} }
.position-options { .position-options {
display: grid; display: flex;
grid-template-columns: repeat(2, 1fr); flex-direction: row;
gap: 10px; gap: 15px;
justify-content: space-between;
} }
.position-option { .position-option {
@ -149,12 +149,14 @@ export default {
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
padding: 15px 10px; padding: 20px;
border: 1px solid #e8e8e8; border: 1px solid #e8e8e8;
border-radius: 6px; border-radius: 8px;
cursor: pointer; cursor: pointer;
transition: all 0.3s; transition: all 0.3s;
background: white; background: white;
flex: 1;
min-height: 80px;
} }
.position-option:hover { .position-option:hover {

Loading…
Cancel
Save