pnkx-admin-mongo/pnkx-uniapp/pages/function/index.vue

99 lines
2.2 KiB
Vue
Raw Normal View History

2024-01-13 13:29:20 +08:00
<template>
<view class="function-container">
<uni-card :title="group.name" v-for="group in manageList" :key="group.id">
<uni-grid :column="4" :showBorder="false" @change="e => changeGrid(e, group)">
<uni-grid-item v-for="menu in group.children" :key="menu.menuId" :index="menu.menuId">
<view class="grid-item-box">
<uni-icons type="vip-filled" size="30"></uni-icons>
<text class="text">{{menu.menuName}}</text>
</view>
</uni-grid-item>
</uni-grid>
</uni-card>
</view>
</template>
<script>
import {
listByParams
} from "@/api/system/menu";
export default {
data() {
return {
// 管理列表
manageList: uni.getStorageSync('bolgMenu') || [],
}
},
onLoad() {
this.getMenuList();
},
methods: {
changeGrid(e, group) {
const path = group.children.find(item => item.menuId === e.detail.index).path;
this.$tab.navigateTo('/pages_life/' + path + '/index');
},
/**
* 获取路由
*/
getMenuList() {
listByParams({
isApp: '1'
}).then(res => {
this.manageList = [];
res.data.forEach(item => {
if (this.manageList.some(parent => parent.id === item.parentId)) {
if (!this.manageList.find(parent => parent.id === item.parentId).children) {
this.manageList.find(parent => parent.id === item.parentId).children = [];
}
this.manageList.find(parent => parent.id === item.parentId).children.push(item)
} else {
this.manageList.push({
id: item.parentId,
name: item.parentName
})
this.manageList.find(parent => parent.id === item.parentId).children = [item]
}
})
uni.setStorageSync('bolgMenu', this.manageList);
})
},
}
}
</script>
<style lang="scss" scoped>
/* #ifndef APP-NVUE */
page {
display: flex;
flex-direction: column;
height: 100%;
}
view {
font-size: 14px;
line-height: inherit;
}
/* #endif */
.text {
text-align: center;
font-size: 26rpx;
margin-top: 10rpx;
}
.grid-item-box {
flex: 1;
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
align-items: center;
justify-content: center;
background-color: $uni-bg-color-menu;
border-radius: 0.5rem;
margin: 0.25rem;
color: $uni-text-color-dark-grey;
}
</style>