消毒机设备
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

131 lines
3.4 KiB

<script lang="ts" setup>
import SettingFormulaConfig from 'components/formula/SettingFormulaConfig.vue'
import { useSystemStore } from 'stores/systemStore'
import { ref } from 'vue'
import Device from '@/components/setting/Device.vue'
import SystemDate from '@/components/setting/SystemDate.vue'
import User from '@/components/setting/User.vue'
import { useSettingStore } from '@/stores/settingStore'
const systemStore = useSystemStore()
const settingStore = useSettingStore()
const currentUserRoleType = JSON.parse(localStorage.getItem('user') || '{}')?.roleType
const settingMenus = settingStore.settingMenus.filter((item): boolean => item.roleType.includes(currentUserRoleType))
const selectedMenuCode = ref('defaultFormula')
// 选择菜单项的方法
const selectItem = (menuCode: string) => {
selectedMenuCode.value = menuCode
}
</script>
<template>
<div class="dashboard-container">
<main class="main-content">
<div class="setting-left">
<div class="menu-container">
<ul class="menu-container">
<li
v-for="item in settingMenus"
:key="item.code"
:class="{ active: selectedMenuCode === item.code }"
class="setting-menu-li menu-item"
@click="selectItem(item.code)"
>
{{ item.name }}
</li>
</ul>
</div>
</div>
<div class="setting-right">
<SettingFormulaConfig
v-if="selectedMenuCode === 'defaultFormula'"
:editable="systemStore.systemUser?.roleType === 'admin'"
/>
<template v-if="selectedMenuCode === 'user'">
<User />
</template>
<div v-if="selectedMenuCode === 'date'">
<SystemDate />
</div>
<div v-if="selectedMenuCode === 'deviceInfo'">
<Device />
</div>
</div>
</main>
</div>
</template>
<style lang="scss" scoped>
.main-content {
display: grid;
grid-template-columns: repeat(3, 1fr);
height: 100%;
gap: 10px;
overflow: hidden;
.setting-left {
background: linear-gradient(180deg, rgba(147, 203, 255, 0.01) 50%, #ffffff 24%);
box-shadow: 0 0 4px #0000001f;
border-radius: 10px;
border: 1px solid #e1e1e1;
overflow: hidden;
}
.setting-right {
grid-column: 2 / 4;
box-shadow: 0 1px 5px 0 rgba(9, 39, 62, 0.15);
background: #ffffff;
border: 1px solid #e1e1e1;
background: linear-gradient(180deg, rgba(147, 203, 255, 0.01) 50%, #ffffff 24%);
border-radius: 10px;
overflow: hidden;
padding: 10px;
}
}
.menu-container {
padding: 5px 0;
width: 100%;
height: 100%;
overflow: auto;
.setting-menu-li {
font-size: 18px;
}
}
ul {
list-style-type: none;
margin: 0;
padding: 0;
}
li {
padding: 15px 15px;
font-size: 15px;
display: flex;
align-items: center;
//border-radius: 10px;
height: 60px;
border-left: 5px solid #fff;
transition: border-left-color 0.3s ease;
}
li.active {
border-left: 5px solid #2892f3;
// color: #e6f7ff;
background: #e8f3ff;
//border-radius: 10px;
color: #2892f3;
}
.menu-container {
width: 100%; /* 占满父容器 */
background: #fff;
// border: 1px solid #eee;
overflow: hidden; /* 配合圆角,避免阴影/边框溢出 */
}
.menu-item {
padding: 14px 20px; /* 更大触摸区域 */
font-size: 15px; /* 适配手机阅读 */
border-bottom: 1px solid #f5f5f5;
}
/* 最后一项去掉分隔线 */
.menu-item:last-child {
border-bottom: none;
}
</style>