1. 通用优化: - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀 - 调整内置账号密码为统一123456,优化密码校验逻辑 - 新增数据库自动创建逻辑,简化部署流程 - 修复日志时间格式配置,优化日志输出 - 新增纯数字密码安全提示 2. MES系统优化: - 新增日排产管理功能,支持增删改查与自动算料生成备料单 - 重构BOM模块,改为按产品编码维护而非工单维度 - 新增工艺参数模板配置与手动报工页面 - 新增产品类型自动编码功能 - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由 - 新增删除日排产接口与权限保护 - 修复物料清单查询逻辑,适配新BOM结构 - 新增refreshToken支持,优化登录会话管理 3. WMS系统优化: - 新增基础数据维护页面,支持区域与物料档案管理 - 新增工单列表下拉接口,对接MES获取未完成工单优先展示 - 优化入库管理提示文案,替换英文提示为中文 - 修复精密件入库校验逻辑,优化错误提示 - 优化Excel导入功能,新增备注字段支持 - 优化登录页面与菜单文案,统一备料台账名称 - 新增自动打开浏览器功能,优化客户端启动体验 - 修复备料出库页面查询提示文案 - 新增WMS与MES对接配置,完善内部API调用逻辑 4. 其他优化: - 删除冗余的旧版静态资源文件,更新资源引用路径 - 新增帮助文档,完善基础数据模块说明 - 修复多处文案不统一、英文残留问题
87 lines
2.9 KiB
Vue
87 lines
2.9 KiB
Vue
<script setup>
|
|
import { computed } from 'vue'
|
|
import { useRoute, useRouter } from 'vue-router'
|
|
import { ElMessage } from 'element-plus'
|
|
import {
|
|
HomeFilled, Download, Upload, Search, CircleCheck, List,
|
|
Box, Tickets, Monitor, EditPen
|
|
} from '@element-plus/icons-vue'
|
|
import { getUser, logout } from '../utils/auth'
|
|
|
|
const route = useRoute()
|
|
const router = useRouter()
|
|
|
|
const user = getUser()
|
|
const pageTitle = computed(() => route.meta?.title || '')
|
|
|
|
const menus = [
|
|
{ path: '/', title: '工作台', icon: HomeFilled },
|
|
{ path: '/inbound', title: '入库管理', icon: Download },
|
|
{ path: '/outbound', title: '备料出库', icon: Upload },
|
|
{ path: '/inventory', title: '库存查询', icon: Search },
|
|
{ path: '/inspection', title: '质量检验', icon: CircleCheck },
|
|
{ path: '/stocktake', title: '库存盘点', icon: List },
|
|
{ path: '/semi', title: '半成品/成品', icon: Box },
|
|
{ path: '/package', title: '包装绑定', icon: Box },
|
|
{ path: '/ledger', title: '备料台账', icon: Tickets },
|
|
{ path: '/base-data', title: '基础数据', icon: EditPen }
|
|
]
|
|
|
|
function onLogout() {
|
|
logout()
|
|
ElMessage.success('已退出登录')
|
|
router.push('/login')
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<el-container class="layout">
|
|
<el-aside width="210px" class="aside">
|
|
<div class="brand">
|
|
<el-icon :size="22"><Box /></el-icon>
|
|
<span>库房客户端</span>
|
|
</div>
|
|
<el-menu :default-active="route.path" class="menu" background-color="#001529"
|
|
text-color="#c2cad8" active-text-color="#ffffff" router>
|
|
<el-menu-item v-for="m in menus" :key="m.path" :index="m.path">
|
|
<el-icon><component :is="m.icon" /></el-icon>
|
|
<span>{{ m.title }}</span>
|
|
</el-menu-item>
|
|
</el-menu>
|
|
</el-aside>
|
|
|
|
<el-container>
|
|
<el-header height="56px" class="header">
|
|
<span class="title">{{ pageTitle }}</span>
|
|
<div class="spacer"></div>
|
|
<el-button text type="primary" @click="router.push('/display')">
|
|
<el-icon style="margin-right:4px"><Monitor /></el-icon>免登录大屏
|
|
</el-button>
|
|
<el-tag effect="plain">{{ user?.realName || user?.username || '未登录' }}</el-tag>
|
|
<el-button text type="danger" @click="onLogout">退出登录</el-button>
|
|
</el-header>
|
|
<el-main class="main">
|
|
<router-view />
|
|
</el-main>
|
|
</el-container>
|
|
</el-container>
|
|
</template>
|
|
|
|
<style scoped>
|
|
.layout { height: 100vh; }
|
|
.aside { background: #001529; }
|
|
.brand {
|
|
display: flex; align-items: center; gap: 8px;
|
|
height: 56px; padding: 0 16px;
|
|
color: #fff; font-weight: 600; font-size: 15px;
|
|
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
|
}
|
|
.menu { border-right: none; }
|
|
.header {
|
|
display: flex; align-items: center; gap: 10px;
|
|
background: #fff; border-bottom: 1px solid #ebeef5;
|
|
}
|
|
.title { font-size: 16px; font-weight: 600; }
|
|
.spacer { flex: 1; }
|
|
.main { background: #f0f2f5; padding: 14px; overflow: auto; }
|
|
</style> |