186 lines
4.1 KiB
Vue
186 lines
4.1 KiB
Vue
<template>
|
|
<div></div>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
data() {
|
|
return {
|
|
tabVisible: {
|
|
admin: [true, true, false, true, true],
|
|
canteen: [false, false, true, false, true],
|
|
worker: [false, true, false, true, true]
|
|
},
|
|
hasJumped: false, // 防止重复跳转的标记
|
|
}
|
|
},
|
|
onShow() {
|
|
// 已跳转过则不再执行逻辑
|
|
if (this.hasJumped) return;
|
|
|
|
// 检查用户角色
|
|
this.$store.dispatch('GetInfo')
|
|
.then(res => {
|
|
// 验证返回数据格式
|
|
if (!res || !res.data || !Array.isArray(res.data.roles)) {
|
|
throw new Error('用户角色信息格式错误');
|
|
}
|
|
|
|
console.log('用户角色信息', res.data.roles)
|
|
|
|
const roles = res.data.roles;
|
|
|
|
if (roles.includes('admin')) {
|
|
for (let i = 0; i < this.tabVisible.admin.length; i++) {
|
|
const v = this.tabVisible.admin[i]
|
|
uni.setTabBarItem({
|
|
index: i,
|
|
visible: v
|
|
});
|
|
}
|
|
// 管理员角色跳转
|
|
uni.switchTab({
|
|
url: '/pages/line/line',
|
|
success: () => {
|
|
this.hasJumped = true; // 标记已跳转
|
|
},
|
|
fail: (err) => {
|
|
console.error('管理员页面跳转失败:', err);
|
|
uni.showToast({
|
|
title: '跳转产线页面失败',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
}
|
|
});
|
|
} else if (roles.includes('canteen')) {
|
|
for (let i = 0; i < this.tabVisible.canteen.length; i++) {
|
|
const v = this.tabVisible.canteen[i]
|
|
uni.setTabBarItem({
|
|
index: i,
|
|
visible: v
|
|
});
|
|
}
|
|
// 食堂角色跳转
|
|
uni.switchTab({
|
|
url: '/pages/meal/meal',
|
|
success: () => {
|
|
this.hasJumped = true; // 标记已跳转
|
|
},
|
|
fail: (err) => {
|
|
console.error('管理员页面跳转失败:', err);
|
|
uni.showToast({
|
|
title: '跳转产线页面失败',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
}
|
|
});
|
|
} else if (roles.includes('worker')) {
|
|
// 工人角色跳转
|
|
// 设置tab内容
|
|
// 设置产线和复杂扫码不可见
|
|
for (let i = 0; i < this.tabVisible.worker.length; i++) {
|
|
const v = this.tabVisible.worker[i]
|
|
uni.setTabBarItem({
|
|
index: i,
|
|
visible: v
|
|
});
|
|
}
|
|
uni.switchTab({
|
|
url: '/pages/easycode/easycode',
|
|
success: () => {
|
|
this.hasJumped = true; // 标记已跳转
|
|
},
|
|
fail: (err) => {
|
|
console.error('工人页面跳转失败:', err);
|
|
uni.showToast({
|
|
title: '跳转扫码页面失败',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
for (let i = 0; i < this.tabVisible.worker.length; i++) {
|
|
const v = this.tabVisible.worker[i]
|
|
uni.setTabBarItem({
|
|
index: i,
|
|
visible: v
|
|
});
|
|
}
|
|
// 延迟跳转,确保提示被用户看到
|
|
setTimeout(() => {
|
|
uni.switchTab({
|
|
url: '/pages/easycode/easycode',
|
|
success: () => {
|
|
this.hasJumped = true;
|
|
},
|
|
fail: (err) => {
|
|
console.error('默认角色页面跳转失败:', err);
|
|
uni.showToast({
|
|
title: '跳转默认页面失败',
|
|
icon: 'none',
|
|
duration: 2000
|
|
});
|
|
}
|
|
});
|
|
}, 2000);
|
|
}
|
|
})
|
|
.catch(err => {
|
|
uni.reLaunch({
|
|
url: '/pages/login'
|
|
})
|
|
});
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style scoped lang="scss">
|
|
/* 样式保持不变 */
|
|
.production-page {
|
|
min-height: 100vh;
|
|
background: #f6f6f6;
|
|
}
|
|
|
|
.page-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
padding: 40rpx 30rpx 20rpx;
|
|
background: #fff;
|
|
border-bottom: 1rpx solid #e8e8e8;
|
|
|
|
.header-title {
|
|
font-size: 28rpx;
|
|
font-weight: 500;
|
|
color: #333;
|
|
letter-spacing: 2rpx;
|
|
padding: 0 30rpx;
|
|
}
|
|
|
|
.header-line {
|
|
height: 2rpx;
|
|
background: linear-gradient(90deg, transparent, #ddd, transparent);
|
|
flex: 1;
|
|
max-width: 100rpx;
|
|
|
|
&.line-left {
|
|
background: linear-gradient(90deg, transparent, #ddd);
|
|
}
|
|
|
|
&.line-right {
|
|
background: linear-gradient(90deg, #ddd, transparent);
|
|
}
|
|
}
|
|
}
|
|
|
|
.line-header {
|
|
background: #fff;
|
|
}
|
|
|
|
.content-wrapper {
|
|
padding: 0;
|
|
}
|
|
</style> |