Commit 52fbb4b0 by pangchong

feat: 菜单数据调整

parent c944567e
......@@ -21,7 +21,7 @@
<view :style="{ height: safeAreaInsets?.top + 'px' }" v-if="custom"></view>
<!-- 自定义导航栏 -->
<global-navbar :title="title" v-if="showNavbar">
<template #left>
<template #left v-if="pages.length > 1">
<view v-if="isEdit" class="cancel" @tap="handleCancel">取消</view>
<uni-icons type="left" size="16" @tap="goBack" v-else></uni-icons>
</template>
......@@ -137,6 +137,8 @@ const handleSave = () => {
const handleChangeEdit = (value) => {
isEdit.value = value
}
// 获取页面栈
const pages = getCurrentPages()
defineExpose({
handleChangeEdit
})
......
<template>沟通</template>
<template>
<global-page title="沟通"></global-page>
</template>
<script setup></script>
......
......@@ -68,6 +68,7 @@ const handleLogin = async () => {
}
}
onLoad(() => {
loginForm.verifyCode = ''
getGifCaptcha()
})
</script>
......
<template>个人中心</template>
<template>
<global-page title="个人中心">
<template #bottom>
<global-button size="large" type="primary" @tap="handleLogOut">退出登录</global-button>
</template>
</global-page>
</template>
<script setup></script>
<script setup>
import useUserStore from '@/store/user'
//退出登录
const userStore = useUserStore()
const handleLogOut = () => {
userStore.handleLogOut()
}
</script>
<style lang="scss"></style>
......@@ -52,13 +52,13 @@ const pageRef = ref()
const handleCancel = () => {
isEdit.value = false
pageRef.value?.handleChangeEdit(false)
homeMenuList.value = cloneDeep(userStore.homeMenuList)
homeMenuList.value = cloneDeep(userStore.getHomeMenuList)
}
//保存
const handleSave = () => {
isEdit.value = false
pageRef.value?.handleChangeEdit(false)
userStore.homeMenuList = cloneDeep(homeMenuList.value)
userStore.changeHomeMenuList(cloneDeep(homeMenuList.value))
uni.$message.showToast('保存菜单成功')
}
//编辑
......@@ -69,7 +69,7 @@ const handleEdit = () => {
//操作菜单
const homeMenuList = ref([])
onLoad(() => {
homeMenuList.value = cloneDeep(userStore.homeMenuList)
homeMenuList.value = cloneDeep(userStore.getHomeMenuList)
})
const handleHomeMenu = (menu, type) => {
if (isEdit.value) {
......
......@@ -8,7 +8,7 @@
<scroll-view class="tab-content" scroll-y="true">
<view class="tab-content-item" v-if="activeIndex == 0">
<view class="menu-list">
<menu-item class="menu-item" v-for="item in userStore.homeMenuList" :data="item" :key="item.id" @tap="goTo(item.url)"></menu-item>
<menu-item class="menu-item" v-for="item in userStore.getHomeMenuList" :data="item" :key="item.id" @tap="goTo(item.url)"></menu-item>
<menu-item class="menu-item" :data="userStore.allMenuItem" @tap="goAppCenter"></menu-item>
</view>
</view>
......
......@@ -21,10 +21,10 @@ const useUserStore = defineStore('user', {
state: () => {
return {
token: '',
userInfo: undefined,
menuList: cloneDeep(menuList),
homeMenuList: cloneDeep(menuList),
allMenuItem: { id: 999, name: '全部菜单', icon: 'all', group: '', count: 0 }
userInfo: undefined, //用户信息
menuList: cloneDeep(menuList), //全部菜单
allMenuItem: { id: 999, name: '全部菜单', icon: 'all', group: '', count: 0 },
allHomeMenuList: [] //所有登录用户的首页菜单信息
}
},
getters: {
......@@ -39,6 +39,10 @@ const useUserStore = defineStore('user', {
groups[item.group].push(item)
return groups
}, {})
},
//获取当前登录用户的首页菜单
getHomeMenuList(state) {
return state.allHomeMenuList.find((item) => item.userId == state.userInfo?.id)?.homeMenuList || state.menuList
}
},
actions: {
......@@ -46,6 +50,13 @@ const useUserStore = defineStore('user', {
setUserInfo(data) {
this.token = data.token
this.userInfo = data
//加入用户首页菜单信息
if (!this.allHomeMenuList.find((item) => item.userId == this.userInfo.id)) {
this.allHomeMenuList.push({
userId: this.userInfo.id,
homeMenuList: this.menuList
})
}
//跳转工作台
uni.switchTab({ url: '/pages/panel/index' })
},
......@@ -55,6 +66,11 @@ const useUserStore = defineStore('user', {
this.userInfo = undefined
//返回登录页面
uni.redirectTo({ url: '/pages/login/index' })
},
//修改用户首页菜单
changeHomeMenuList(menuList) {
const index = this.allHomeMenuList.findIndex((item) => item.userId == this.userInfo.id)
this.allHomeMenuList[index].homeMenuList = menuList
}
},
// 配置持久化
......
......@@ -123,11 +123,23 @@ export const http = (options) => {
const statusCode = parseInt(res.statusCode)
if (statusCode >= 200 && statusCode < 300) {
// 2.1 提取核心数据 res.data
if (res.data.code == 403) {
const userStore = useUserStore()
uni.$message.showToast(res.data.message)
setTimeout(() => {
userStore.handleLogOut()
}, 500)
reject(res)
} else {
resolve(res.data)
} else if (statusCode === 401) {
}
} else if (statusCode == 401) {
// 401错误 -> 清理用户信息,跳转到登录页
const userStore = useUserStore()
uni.$message.showToast(res.data.message)
setTimeout(() => {
userStore.handleLogOut()
}, 500)
reject(res)
} else {
// 其他错误 -> 根据后端错误信息轻提示
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment