chore: 完成多系统功能迭代与优化
1. 通用优化: - 统一系统标题为"库房客户端"/"MES产线控制",移除北自所前缀 - 调整内置账号密码为统一123456,优化密码校验逻辑 - 新增数据库自动创建逻辑,简化部署流程 - 修复日志时间格式配置,优化日志输出 - 新增纯数字密码安全提示 2. MES系统优化: - 新增日排产管理功能,支持增删改查与自动算料生成备料单 - 重构BOM模块,改为按产品编码维护而非工单维度 - 新增工艺参数模板配置与手动报工页面 - 新增产品类型自动编码功能 - 优化菜单结构,调整工单管理、扫码报工等页面名称与路由 - 新增删除日排产接口与权限保护 - 修复物料清单查询逻辑,适配新BOM结构 - 新增refreshToken支持,优化登录会话管理 3. WMS系统优化: - 新增基础数据维护页面,支持区域与物料档案管理 - 新增工单列表下拉接口,对接MES获取未完成工单优先展示 - 优化入库管理提示文案,替换英文提示为中文 - 修复精密件入库校验逻辑,优化错误提示 - 优化Excel导入功能,新增备注字段支持 - 优化登录页面与菜单文案,统一备料台账名称 - 新增自动打开浏览器功能,优化客户端启动体验 - 修复备料出库页面查询提示文案 - 新增WMS与MES对接配置,完善内部API调用逻辑 4. 其他优化: - 删除冗余的旧版静态资源文件,更新资源引用路径 - 新增帮助文档,完善基础数据模块说明 - 修复多处文案不统一、英文残留问题
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
<template>
|
||||
<el-card>
|
||||
<el-form inline>
|
||||
<el-form-item label="工单号">
|
||||
<el-select v-model="query.orderNo" filterable allow-create clearable placeholder="请选择/输入工单号" style="width:220px" @change="load">
|
||||
<el-option v-for="w in workOrders" :key="w.workOrderNo" :label="w.workOrderNo" :value="w.workOrderNo" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排产日期">
|
||||
<el-date-picker v-model="query.planDate" type="date" value-format="YYYY-MM-DD" placeholder="请选择日期" @change="load" />
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="load">查询</el-button>
|
||||
<el-button type="success" @click="openAdd">新建排产</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<el-table :data="list" border size="small">
|
||||
<el-table-column prop="orderNo" label="工单号" min-width="180" />
|
||||
<el-table-column prop="planDate" label="排产日期" width="120" />
|
||||
<el-table-column prop="planQty" label="计划数量" width="100" />
|
||||
<el-table-column prop="completedQty" label="已完成" width="90" />
|
||||
<el-table-column label="状态" width="100">
|
||||
<template #default="{ row }">{{ statusText(row.status) }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="operator" label="操作人" min-width="90" />
|
||||
<el-table-column label="操作" width="160">
|
||||
<template #default="{ row }">
|
||||
<el-button size="small" @click="openEdit(row)">编辑</el-button>
|
||||
<el-button size="small" type="danger" @click="del(row)">删除</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
<el-dialog v-model="dialog.show" title="新建/编辑排产" width="460px">
|
||||
<el-form :model="dialog" label-width="90px">
|
||||
<el-form-item label="工单号">
|
||||
<el-select v-model="dialog.orderNo" filterable allow-create placeholder="请选择/输入工单号" style="width:100%">
|
||||
<el-option v-for="w in workOrders" :key="w.workOrderNo" :label="w.workOrderNo" :value="w.workOrderNo" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="排产日期">
|
||||
<el-date-picker v-model="dialog.planDate" type="date" value-format="YYYY-MM-DD" style="width:100%" />
|
||||
</el-form-item>
|
||||
<el-form-item label="计划数量">
|
||||
<el-input-number v-model="dialog.planQty" :min="1" style="width:100%" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="dialog.show=false">取消</el-button>
|
||||
<el-button type="primary" @click="save">保存</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</el-card>
|
||||
<PageHelp :data="helpDailyPlan" />
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { reactive, ref, onMounted } from 'vue'
|
||||
import { ElMessage, ElMessageBox } from 'element-plus'
|
||||
import request from '../utils/request'
|
||||
import PageHelp from '../components/PageHelp.vue'
|
||||
import { helpDailyPlan } from '../help'
|
||||
|
||||
const query = reactive({ orderNo: '', planDate: '' })
|
||||
const list = ref([])
|
||||
const workOrders = ref([])
|
||||
const dialog = reactive({ show: false, id: 0, orderNo: '', planDate: '', planQty: 1 })
|
||||
|
||||
const statusOptions = [
|
||||
{ v: 'PENDING', l: '待排产' }, { v: 'CONFIRMED', l: '已确认' }
|
||||
]
|
||||
const statusText = (s) => (statusOptions.find((x) => x.v === s) || {}).l || s
|
||||
|
||||
async function load() {
|
||||
list.value = (await request.get('/daily-plans', { params: query })) || []
|
||||
}
|
||||
function openAdd() {
|
||||
Object.assign(dialog, { show: true, id: 0, orderNo: '', planDate: new Date().toISOString().slice(0, 10), planQty: 1 })
|
||||
}
|
||||
function openEdit(row) {
|
||||
Object.assign(dialog, { show: true, id: row.id, orderNo: row.orderNo, planDate: row.planDate, planQty: row.planQty })
|
||||
}
|
||||
async function save() {
|
||||
if (!dialog.orderNo || !dialog.planDate) return ElMessage.warning('请选择工单号和排产日期')
|
||||
if (dialog.id) await request.put(`/daily-plans/${dialog.id}`, { ...dialog })
|
||||
else await request.post('/daily-plans', { orderNo: dialog.orderNo, planDate: dialog.planDate, planQty: dialog.planQty })
|
||||
ElMessage.success('保存成功')
|
||||
dialog.show = false
|
||||
load()
|
||||
}
|
||||
async function del(row) {
|
||||
await ElMessageBox.confirm('确认删除该排产?', '提示', { type: 'warning' })
|
||||
await request.delete(`/daily-plans/${row.id}`)
|
||||
load()
|
||||
}
|
||||
onMounted(async () => {
|
||||
workOrders.value = (await request.get('/work-orders')) || []
|
||||
load()
|
||||
})
|
||||
</script>
|
||||
Reference in New Issue
Block a user