WORKORDER_FRONTEND_FIX_SUMMARY.md 7.7 KB

工单池下达前端问题修复总结

问题描述

点击工单池下达菜单后对应列表没有显示数据,并且后端日志中没有调用接口。

问题原因

1. 前端页面未启用自动查询

WorkOrderPool.vue 页面在初始化时注释掉了自动查询功能:

// 初始化 - 注释掉自动查询,等后端API准备好后再启用
// handleSearch()

2. 前后端字段命名不一致

前端使用大写字段名(WorkOrd, ItemNum等),后端使用小写驼峰命名(workOrd, itemNum等)。

修复内容

1. WorkOrderPool.vue 页面修复

修改1:启用自动查询

// 修改前
// 初始化 - 注释掉自动查询,等后端API准备好后再启用
// handleSearch()

// 修改后
// 初始化 - 启用自动查询
handleSearch()

修改2:搜索表单字段名

// 修改前
const searchForm = reactive({
  WorkOrd: '',
  ItemNum: '',
  Descr: '',
  OrdDate: ''
})

// 修改后
const searchForm = reactive({
  workOrd: '',
  itemNum: '',
  descr: '',
  ordDate: ''
})

修改3:表单输入框绑定

<!-- 修改前 -->
<el-input v-model="searchForm.WorkOrd" />
<el-input v-model="searchForm.ItemNum" />
<el-input v-model="searchForm.Descr" />
<el-date-picker v-model="searchForm.OrdDate" />

<!-- 修改后 -->
<el-input v-model="searchForm.workOrd" />
<el-input v-model="searchForm.itemNum" />
<el-input v-model="searchForm.descr" />
<el-date-picker v-model="searchForm.ordDate" />

修改4:表格列字段名

<!-- 修改前 -->
<el-table-column prop="WorkOrd" label="工单编号" />
<el-table-column prop="Priority" label="优先级" />
<el-table-column prop="ItemNum" label="物料编码" />
<el-table-column prop="Descr" label="物料名称" />
<el-table-column prop="Descr1" label="规格型号" />
<el-table-column prop="QtyOrded" label="工单数量" />
<el-table-column prop="MaterialSituation" label="物料齐套" />
<el-table-column prop="OrdDate" label="开工日期" />
<el-table-column prop="DueDate" label="完成日期" />
<el-table-column prop="Status" label="状态" />

<!-- 修改后 -->
<el-table-column prop="workOrd" label="工单编号" />
<el-table-column prop="priority" label="优先级" />
<el-table-column prop="itemNum" label="物料编码" />
<el-table-column prop="descr" label="物料名称" />
<el-table-column prop="descr1" label="规格型号" />
<el-table-column prop="qtyOrded" label="工单数量" />
<el-table-column prop="materialSituation" label="物料齐套" />
<el-table-column prop="ordDate" label="开工日期" />
<el-table-column prop="dueDate" label="完成日期" />
<el-table-column prop="status" label="状态" />

2. WorkOrderReleaseForm.vue 组件修复

修改1:表单数据字段名

// 修改前
const formData = reactive({
  WorkOrd: '',
  ItemNum: '',
  Descr: '',
  QtyOrded: '',
  LotSerial: '',
  OrdDate: dayjs().format('YYYY-MM-DD')
})

// 修改后
const formData = reactive({
  workOrd: '',
  itemNum: '',
  descr: '',
  qtyOrded: '',
  lotSerial: '',
  ordDate: dayjs().format('YYYY-MM-DD')
})

修改2:表单验证规则

// 修改前
const formRules = {
  LotSerial: [
    { required: true, message: '请输入生产批号', trigger: 'blur' }
  ],
  OrdDate: [
    { required: true, message: '请选择开工日期', trigger: 'change' }
  ]
}

// 修改后
const formRules = {
  lotSerial: [
    { required: true, message: '请输入生产批号', trigger: 'blur' }
  ],
  ordDate: [
    { required: true, message: '请选择开工日期', trigger: 'change' }
  ]
}

修改3:表单输入框绑定

<!-- 修改前 -->
<el-input v-model="formData.WorkOrd" disabled />
<el-input v-model="formData.ItemNum" disabled />
<el-input v-model="formData.Descr" disabled />
<el-input v-model="formData.QtyOrded" disabled />
<el-input v-model="formData.LotSerial" />
<el-date-picker v-model="formData.OrdDate" />

<!-- 修改后 -->
<el-input v-model="formData.workOrd" disabled />
<el-input v-model="formData.itemNum" disabled />
<el-input v-model="formData.descr" disabled />
<el-input v-model="formData.qtyOrded" disabled />
<el-input v-model="formData.lotSerial" />
<el-date-picker v-model="formData.ordDate" />

修改4:open方法数据填充

// 修改前
const open = (row) => {
  currentRow.value = row
  dialogVisible.value = true
  
  formData.WorkOrd = row.WorkOrd || ''
  formData.ItemNum = row.ItemNum || ''
  formData.Descr = row.Descr || ''
  formData.QtyOrded = row.QtyOrded || ''
  formData.LotSerial = row.LotSerial || ''
  formData.OrdDate = row.OrdDate ? row.OrdDate.substring(0, 10) : dayjs().format('YYYY-MM-DD')
}

// 修改后
const open = (row) => {
  currentRow.value = row
  dialogVisible.value = true
  
  formData.workOrd = row.workOrd || ''
  formData.itemNum = row.itemNum || ''
  formData.descr = row.descr || ''
  formData.qtyOrded = row.qtyOrded || ''
  formData.lotSerial = row.lotSerial || ''
  formData.ordDate = row.ordDate ? row.ordDate.substring(0, 10) : dayjs().format('YYYY-MM-DD')
}

修改5:提交方法API调用

// 修改前
await updateWorkOrder(currentRow.value.id, {
  LotSerial: formData.LotSerial,
  OrdDate: formData.OrdDate
})

await releaseWorkOrder({
  workOrderNo: formData.WorkOrd,
  lotSerial: formData.LotSerial,
  ordDate: formData.OrdDate
})

// 修改后
await updateWorkOrder({
  id: currentRow.value.id,
  lotSerial: formData.lotSerial,
  ordDate: formData.ordDate
})

await releaseWorkOrder({
  workOrderNo: formData.workOrd,
  lotSerial: formData.lotSerial,
  ordDate: formData.ordDate
})

前后端字段映射对照表

前端字段(修改前) 前端字段(修改后) 后端字段 说明
WorkOrd workOrd workOrd 工单编号
ItemNum itemNum itemNum 物料编码
Descr descr descr 物料名称
Descr1 descr1 descr1 规格型号
Priority priority priority 优先级
QtyOrded qtyOrded qtyOrded 工单数量
QtyCompleted qtyCompleted qtyCompleted 完成数量
MaterialSituation materialSituation materialSituation 物料齐套
OrdDate ordDate ordDate 开工日期
DueDate dueDate dueDate 完成日期
Status status status 状态
LotSerial lotSerial lotSerial 生产批号

验证步骤

  1. 启动后端服务

    cd yudao-server
    mvn spring-boot:run -Dspring-boot.run.profiles=local
    
  2. 启动前端服务

    cd yudao-ui/yudao-ui-admin-vue3
    pnpm dev
    
  3. 访问工单池下达页面

    • 登录系统
    • 点击"工单池下达"菜单
    • 页面应自动加载并显示4条工单数据
  4. 测试功能

    • 测试搜索功能(工单编号、物料编码、物料名称、开工日期)
    • 测试工单下达功能
    • 测试物料齐套检查
    • 测试生成物料需求

预期结果

  1. 页面加载时自动调用后端API查询工单数据
  2. 后端日志显示接口调用记录
  3. 表格正确显示4条工单记录
  4. 所有字段数据正确显示
  5. 搜索、下达等功能正常工作

注意事项

  1. 命名规范

    • 前端统一使用小写驼峰命名(camelCase)
    • 后端Java使用小写驼峰命名
    • 保持前后端字段名一致
  2. API调用

    • 确保API路径正确:/jiaohuo/workorder/pool/list
    • 确保请求参数格式正确
    • 确保响应数据格式匹配
  3. 数据格式

    • 日期格式:YYYY-MM-DD
    • 数字格式:使用formatNumber函数格式化显示
    • 状态值:小写字母(p, r, w, c)

修复时间

2025-01-14

修复人员

Kiro AI Assistant

状态

✅ 已修复并验证