feat&refactor: 完成多模块功能迭代与配置优化

本次提交覆盖多个业务模块的功能完善与体验优化:
1.  **鉴权与配置调整**:
    - 统一JWT滑动续签逻辑,简化Token存储,移除RefreshToken相关冗余代码
    - 调整多项目配置文件中JWT过期时间为3600秒,统一会话闲置窗口
    - 工位配置放开1~12限制,改为仅校验大于0
2.  **术语统一替换**:全链路将"精密件"替换为"电气件",修正物料管理描述
3.  **功能新增**:
    - 新增工位类型、工艺路线与产线点位台账模块
    - 添加工艺PDF预览面板、工位终端代理转发接口
    - 新增操作日志按操作人列表筛选、工位登出日志记录
    - 新增PLC移料指令与产线点位状态管理
4.  **业务流程优化**:
    - 调整BOM物料删除校验逻辑,优化工单备料计算
    - 补充物料图号、检测单号等追溯字段
    - 完善工艺流程图与工位绑定关系说明
    - 优化前端页面文案与交互细节
5.  **代码规范与维护**:
    - 新增通用工具函数与前端静态资源
    - 整理路由权限与中间件逻辑
    - 修复部分接口与配置的不兼容问题
This commit is contained in:
SunYF
2026-09-10 16:59:15 +08:00
parent 6d8bb75696
commit 0ab21b1234
202 changed files with 21397 additions and 3172 deletions
+18 -10
View File
@@ -115,7 +115,7 @@ const matDialog = ref(false)
const mEditingId = ref(0)
const mForm = reactive({
code: '', name: '', shortName: '', spec: '', unit: '',
manageMode: 1, templateCode: '', description: ''
manageMode: 1, templateCode: '', description: '', drawingNo: ''
})
const mSaving = ref(false)
@@ -151,7 +151,7 @@ function resetMForm() {
mEditingId.value = 0
Object.assign(mForm, {
code: '', name: '', shortName: '', spec: '', unit: '',
manageMode: 1, templateCode: '', description: ''
manageMode: 1, templateCode: '', description: '', drawingNo: ''
})
}
@@ -166,6 +166,7 @@ function openMatEdit(row) {
code: row.code, name: row.name, shortName: row.shortName || '',
spec: row.spec || '', unit: row.unit || '', manageMode: row.manageMode,
templateCode: row.templateCode || '',
drawingNo: row.drawingNo || '',
description: row.description || ''
})
matDialog.value = true
@@ -182,6 +183,7 @@ async function saveMaterial() {
await request.post('/material/update', {
id: mEditingId.value, name: mForm.name, shortName: mForm.shortName,
spec: mForm.spec, unit: mForm.unit, description: mForm.description,
drawingNo: mForm.drawingNo,
manageMode: mForm.manageMode
})
ElMessage.success('物料修改成功')
@@ -361,7 +363,7 @@ async function onMaterialFile(e) {
<el-form-item label="类型">
<el-select v-model="matFilter.manageMode" placeholder="全部" clearable style="width:120px" @change="searchMaterials">
<el-option label="结构件(批次)" :value="1" />
<el-option label="精密(SN)" :value="2" />
<el-option label="电气(SN)" :value="2" />
</el-select>
</el-form-item>
<el-form-item label="创建时间">
@@ -376,7 +378,7 @@ async function onMaterialFile(e) {
<el-button type="success" @click="openMatCreate">新增物料</el-button>
<el-button v-if="can('material:import')" type="warning" :loading="matImporting" @click="pickMaterialFile">导入</el-button>
<el-button v-if="can('material:export')" :loading="matExporting" @click="exportMaterials">导出</el-button>
<el-tooltip v-if="can('material:import')" content="Excel 模板首行表头物料编码 | 名称 | 简称 | 规格 | 单位 | 类型(结构件/精密) | 说明">
<el-tooltip v-if="can('material:import')" content="Excel 模板首行表头物料编码 | 名称 | 简称 | 规格 | 单位 | 类型(结构件/电气) | 说明 | 图号(可选)">
<el-link type="info" :underline="false" style="margin-left:4px">导入说明</el-link>
</el-tooltip>
<input ref="matFileRef" type="file" accept=".xlsx,.xls" style="display:none" @change="onMaterialFile" />
@@ -391,8 +393,11 @@ async function onMaterialFile(e) {
<template #default="{ row }">{{ row.spec || '-' }}</template>
</el-table-column>
<el-table-column prop="unit" label="单位" width="70" align="center">
<template #default="{ row }">{{ row.unit || '-' }}</template>
</el-table-column>
<template #default="{ row }">{{ row.unit || '-' }}</template>
</el-table-column>
<el-table-column prop="drawingNo" label="图号" min-width="90" align="center">
<template #default="{ row }">{{ row.drawingNo || '-' }}</template>
</el-table-column>
<el-table-column label="品类" width="90" align="center">
<template #default="{ row }">
<el-tag :type="row.itemType === 3 ? 'success' : (row.itemType === 2 ? 'warning' : 'info')" size="small">
@@ -403,7 +408,7 @@ async function onMaterialFile(e) {
<el-table-column label="类型" width="140" align="center">
<template #default="{ row }">
<el-tag :type="row.manageMode === 2 ? 'warning' : 'info'" size="small">
{{ row.manageMode === 2 ? '精密件(SN)' : '结构件(批次)' }}
{{ row.manageMode === 2 ? '电气件(SN)' : '结构件(批次)' }}
</el-tag>
</template>
</el-table-column>
@@ -439,12 +444,15 @@ async function onMaterialFile(e) {
<el-input v-model="mForm.spec" placeholder="规格可空" clearable />
</el-form-item>
<el-form-item label="单位">
<el-input v-model="mForm.unit" placeholder=" /" clearable />
</el-form-item>
<el-input v-model="mForm.unit" placeholder=" /" clearable />
</el-form-item>
<el-form-item label="图号">
<el-input v-model="mForm.drawingNo" placeholder="图纸编号可空" clearable />
</el-form-item>
<el-form-item label="类型">
<el-select v-model="mForm.manageMode" placeholder="请选择" style="width:100%">
<el-option :value="1" label="结构件批次管理" />
<el-option :value="2" label="精密SN 管理" />
<el-option :value="2" label="电气SN 管理" />
</el-select>
</el-form-item>
<el-form-item label="说明">