chore: 批量完成项目多模块迭代优化

1. 废弃半成品库存表并统一库存主表
2. 修复列表排序与搜索大小写不敏感问题
3. 新增用户最近登录时间、工单BOM名称字段
4. 完善角色管理、工位选择器功能
5. 增加拧紧数据补录、成品自动回流WMS能力
6. 统一导出时间范围校验规则
7. 丰富物料/备料单筛选条件
8. 调整菜单与权限命名适配产品型号业务
This commit is contained in:
SunYF
2026-09-08 11:44:04 +08:00
parent 06689970e2
commit e852c7cd37
96 changed files with 4528 additions and 542 deletions
@@ -32,17 +32,6 @@
<el-tag :type="row.status === 'ACTIVE' ? 'success' : 'info'">{{ statusText(row.status) }}</el-tag>
</template>
</el-table-column>
<el-table-column label="绑定工位" min-width="150">
<template #default="{ row }">
<el-popover v-if="(row.stations || []).length" placement="top" :width="220" trigger="hover">
<template #reference>
<el-tag size="small" type="success">{{ (row.stations || []).length }} 个工位</el-tag>
</template>
<div style="line-height:1.9">{{ (row.stations || []).map(s => `工位${s}`).join('、') }}</div>
</el-popover>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="步骤" min-width="120">
<template #default="{ row }">
<el-tooltip
@@ -71,6 +60,7 @@
</template>
</el-table-column>
</el-table>
<el-pagination style="margin-top:12px;justify-content:flex-end" background layout="total, prev, pager, next" :total="flowTotal" :page-size="flowPageSize" v-model:current-page="flowPage" @current-change="loadFlows" />
</el-tab-pane>
<!-- ============ 流程配置(新增/编辑共用,替代原弹窗套弹窗) ============ -->
@@ -89,14 +79,7 @@
<el-col :span="12">
<el-form-item label="工序编号" required>
<el-input-number v-model="flowDlg.stationNo" :min="1" :max="12" style="width:100%" />
<div style="color:#909399;font-size:12px;line-height:1.4">该流程承载的工序编号(1~12)</div>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="绑定工位" required>
<el-select v-model="flowDlg.stations" multiple collapse-tags placeholder="可多选工位:一个工位同一时刻只能绑一个启用流程,一个流程可绑多个工位" style="width:100%">
<el-option v-for="i in 12" :key="i" :label="`工位${i}`" :value="i" />
</el-select>
<div style="color:#909399;font-size:12px;line-height:1.4">该流程承载的工序编号(1~999,流程内唯一即可;与物理工位的对应关系在「关联工位」页维护)</div>
</el-form-item>
</el-col>
</el-row>
@@ -277,9 +260,11 @@ function blankStep(seq) {
}
async function loadFlows() {
const params = {}
const params = { page: flowPage.value, pageSize: flowPageSize.value }
if (query.stationNo) params.stationNo = query.stationNo
flows.value = (await request.get('/process-flows', { params })) || []
const data = await request.get('/process-flows', { params })
flows.value = (data && data.list) ? data.list : (data || [])
flowTotal.value = (data && data.total) ? data.total : flows.value.length
}
function fmt(v) { return v ? String(v).replace('T', ' ').slice(0, 19) : '-' }
@@ -387,7 +372,7 @@ function saveCriteria() {
async function saveFlow() {
if (!flowDlg.name) return ElMessage.warning('请填写流程名')
if (!flowDlg.stationNo) return ElMessage.warning('请选择工序编号(1~12)')
if (!flowDlg.stations || !flowDlg.stations.length) return ElMessage.warning('请至少选择一个绑定工位')
// 绑定关系由「关联工位」页维护:此处不再收集绑定工位,保存流程本身
const body = {
id: flowDlg.id || undefined,
name: flowDlg.name,