feat(工单管理): 添加工单状态更新功能并优化界面显示

- 新增UpdateWorkOrderStatus API用于更新工单状态
- 在工单表格中添加状态列显示已完成标签
- 简化状态更新逻辑,仅传递必要参数
- 优化表格布局和样式
This commit is contained in:
2025-09-16 09:45:29 +08:00
parent 7ca0c2721c
commit 6f5cf9c333
2 changed files with 38 additions and 56 deletions

View File

@@ -75,6 +75,14 @@ export function updateSort2(query) {
params: query, params: query,
}) })
} }
// 更新工单状态 -id -status
export function UpdateWorkOrderStatus(query) {
return request({
url: '/mes/pro/workorder_v2/UpdateWorkOrderStatus',
method: 'get',
params: query,
})
}
// 生成工作工单 // 生成工作工单

View File

@@ -23,17 +23,9 @@
<el-button type="primary" icon="el-icon-search" @click="handleClick">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="handleClick">搜索</el-button>
</el-form> </el-form>
</div> </div>
<vxe-table <vxe-table border show-overflow ref="xTable" v-loading="loading_1" :cell-style="rowClassName" height="800"
border :row-config="{ isHover: true, useKey: true }" :column-config="{ useKey: true, resizable: true }"
show-overflow :data="workorder_table_data">
ref="xTable"
v-loading="loading_1"
:cell-style="rowClassName"
height="800"
:row-config="{ isHover: true, useKey: true }"
:column-config="{ useKey: true, resizable: true }"
:data="workorder_table_data"
>
<vxe-column type="seq" width="60"></vxe-column> <vxe-column type="seq" width="60"></vxe-column>
<vxe-column field="clientWorkorder" title="工单号" width="130" type="html"></vxe-column> <vxe-column field="clientWorkorder" title="工单号" width="130" type="html"></vxe-column>
<vxe-column field="blankNumber" title="毛坯号" type="html"></vxe-column> <vxe-column field="blankNumber" title="毛坯号" type="html"></vxe-column>
@@ -48,6 +40,11 @@
<vxe-column field="cylinderNumber" title="双组号缸号" type="html"></vxe-column> <vxe-column field="cylinderNumber" title="双组号缸号" type="html"></vxe-column>
<vxe-column field="remark1" title="备注1" type="html"></vxe-column> <vxe-column field="remark1" title="备注1" type="html"></vxe-column>
<vxe-column field="remark2" title="备注2" type="html"></vxe-column> <vxe-column field="remark2" title="备注2" type="html"></vxe-column>
<vxe-column field="remark3" title="状态" type="html">
<template #default="{ row }">
<el-tag size="mini" v-if="row.status === 2" type="success">已完成</el-tag>
</template>
</vxe-column>
<vxe-column title="操作" width="150" show-overflow> <vxe-column title="操作" width="150" show-overflow>
<template #default="{ row }"> <template #default="{ row }">
<div v-show="row.remark3 == '是'"> <div v-show="row.remark3 == '是'">
@@ -55,25 +52,22 @@
<vxe-button size="mini" mode="text" status="danger" content="取消上线" @click="cancelitem(row)"></vxe-button> <vxe-button size="mini" mode="text" status="danger" content="取消上线" @click="cancelitem(row)"></vxe-button>
</div> </div>
<div v-if="row.remark2 && row.remark2.includes('调试')"> <div v-if="row.remark2 && row.remark2.includes('调试')">
<vxe-button v-if="row.status != 2" size="mini" mode="text" status="primary" content="完成调试" @click="doCompletion(row)"></vxe-button> <vxe-button v-if="row.status != 2" size="mini" mode="text" status="primary" content="完成调试"
<vxe-button v-if="row.status === 2" size="mini" mode="text" status="danger" content="重新调试" @click="resetCompletion(row)"></vxe-button> @click="doCompletion(row)"></vxe-button>
<vxe-button v-if="row.status === 2" size="mini" mode="text" status="danger" content="重新调试"
@click="resetCompletion(row)"></vxe-button>
</div> </div>
</template> </template>
</vxe-column> </vxe-column>
</vxe-table> </vxe-table>
<pagination <pagination v-show="pagination.total > 0" :total="pagination.total" :page.sync="pagination.pageNum"
v-show="pagination.total > 0" :limit.sync="pagination.pageSize" @pagination="getList" />
:total="pagination.total"
:page.sync="pagination.pageNum"
:limit.sync="pagination.pageSize"
@pagination="getList"
/>
</div> </div>
</template> </template>
<script> <script>
import { getWorkoderList, startOnline, cancelOnline } from '@/api/productManagement/workorder_online.js' import { getWorkoderList, startOnline, cancelOnline } from '@/api/productManagement/workorder_online.js'
import { updateworkorder } from '@/api/productManagement/workoder_v2.js' import { UpdateWorkOrderStatus } from '@/api/productManagement/workoder_v2.js'
export default { export default {
name: 'workorder_online', name: 'workorder_online',
@@ -151,26 +145,15 @@ export default {
this.$message.info('动作取消') this.$message.info('动作取消')
}) })
}, },
// 完成调试设置status为2 // 完成调试设置status为2
doCompletion(row) { doCompletion(row) {
this.$modal this.$modal
.confirm('是否确认完成调试工单名称为"' + row.productDescription + '"的数据项?') .confirm('是否确认完成调试工单名称为"' + row.productDescription + '"的数据项?')
.then(() => { .then(() => {
// 深拷贝行数据并设置状态为2 const updateData = { id: row.id, status: 2 };
const updateData = { ...row, status: 2 };
// 转换数值类型
updateData.vehicleNumber = Number(updateData.vehicleNumber) || 0;
updateData.hangNumber = Number(updateData.hangNumber) || 0;
updateData.previousNumber = Number(updateData.previousNumber) || 0;
updateData.year = Number(updateData.year) || 0;
updateData.week = Number(updateData.week) || 0;
updateData.date = Number(updateData.date) || 0;
updateData.sort = Number(updateData.sort) || 0;
// 调用updateworkorder方法更新工单状态 // 调用updateworkorder方法更新工单状态
updateworkorder(updateData).then((res) => { UpdateWorkOrderStatus(updateData).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.$message.success('调试完成'); this.$message.success('调试完成');
this.getList(); // 重新获取列表数据 this.getList(); // 重新获取列表数据
@@ -186,28 +169,17 @@ export default {
this.$message.info('动作取消') this.$message.info('动作取消')
}) })
}, },
// 重新调试设置status为0 // 重新调试设置status为0
resetCompletion(row) { resetCompletion(row) {
this.$modal this.$modal
.confirm('是否确认重新调试工单名称为"' + row.productDescription + '"的数据项?') .confirm('是否确认重新调试工单名称为"' + row.productDescription + '"的数据项?')
.then(() => { .then(() => {
// 深拷贝行数据并设置状态为1 const updateData = { id: row.id, status: 0 };
const updateData = { ...row, status: 0 };
// 转换数值类型
updateData.vehicleNumber = Number(updateData.vehicleNumber) || 0;
updateData.hangNumber = Number(updateData.hangNumber) || 0;
updateData.previousNumber = Number(updateData.previousNumber) || 0;
updateData.year = Number(updateData.year) || 0;
updateData.week = Number(updateData.week) || 0;
updateData.date = Number(updateData.date) || 0;
updateData.sort = Number(updateData.sort) || 0;
// 调用updateworkorder方法更新工单状态 // 调用updateworkorder方法更新工单状态
updateworkorder(updateData).then((res) => { UpdateWorkOrderStatus(updateData).then((res) => {
if (res.code === 200) { if (res.code === 200) {
this.$message.success('重新调试设置成功'); this.$message.success('重新调试成功');
this.getList(); // 重新获取列表数据 this.getList(); // 重新获取列表数据
} else { } else {
this.$message.error(res.msg || '操作失败,请重试'); this.$message.error(res.msg || '操作失败,请重试');
@@ -221,7 +193,7 @@ export default {
this.$message.info('动作取消') this.$message.info('动作取消')
}) })
}, },
//todo 更改单元格格式 //todo 更改单元格格式
rowClassName(item) { rowClassName(item) {
if (item.row.status === 1) { if (item.row.status === 1) {
@@ -229,11 +201,11 @@ export default {
backgroundColor: '#FFFF00', backgroundColor: '#FFFF00',
} }
} }
if (item.row.status === 2) { if (item.row.status === 2) {
return { return {
backgroundColor: '#55ff00', backgroundColor: '#55ff00',
} }
} }
return null return null
}, },
}, },
@@ -245,9 +217,11 @@ export default {
cursor: pointer; cursor: pointer;
color: #93ff40; color: #93ff40;
} }
.el-icon-arrow-down { .el-icon-arrow-down {
font-size: 0.5rem; font-size: 0.5rem;
} }
.sortable-ghost { .sortable-ghost {
opacity: 0.4; opacity: 0.4;
background-color: #409eff; background-color: #409eff;