Files
klp-mono/apps/hand-factory/pages/index.vue
砂糖 9fcbad1f8e fix: 修复登录跳转路径和版本号更新
refactor: 移除调试日志和冗余代码
style: 格式化代码和修复条件判断逻辑
feat: 重新启用401错误处理并优化表单重置逻辑
2025-11-04 14:27:20 +08:00

148 lines
3.1 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 模板内容保持不变注释部分可根据需求保留 -->
</template>
<script>
export default {
data() {
return {
hasJumped: false // 防止重复跳转的标记
}
},
onShow() {
// 已跳转过则不再执行逻辑
if (this.hasJumped) return;
// 显示加载状态,提升用户感知
// uni.showLoading({
// title: '验证身份中...',
// mask: true // 防止用户重复操作
// });
// 检查用户角色
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')) {
// 管理员角色跳转
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('worker')) {
// 工人角色跳转
uni.navigateTo({
url: '/pages/easycode/easycode',
success: () => {
this.hasJumped = true; // 标记已跳转
},
fail: (err) => {
console.error('工人页面跳转失败:', err);
uni.showToast({
title: '跳转扫码页面失败',
icon: 'none',
duration: 2000
});
}
});
} else {
// 处理未定义角色(默认角色)
uni.showToast({
title: '检测到未知角色,将跳转至默认页面',
icon: 'none',
duration: 2000
});
// 延迟跳转,确保提示被用户看到
setTimeout(() => {
uni.navigateTo({
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>