|
|
|
@ -18,11 +18,12 @@ |
|
|
|
v-model="workOrderNo" |
|
|
|
placeholder="请输入工单号" |
|
|
|
prefix-icon="el-icon-search" |
|
|
|
@keyup.enter.native="handleSearchWorkOrder" |
|
|
|
@keyup.enter.native="handleSearchWorkOrderByShopOrderLine" |
|
|
|
ref="workOrderInput" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
<div class="search-container"> |
|
|
|
<!-- 原先需要精准查询,现在不用了,换成模糊查询接口 --> |
|
|
|
<!-- <div class="search-container"> |
|
|
|
<el-input |
|
|
|
clearable |
|
|
|
v-model="releaseNo" |
|
|
|
@ -37,21 +38,18 @@ |
|
|
|
@keyup.enter.native="handleSearchWorkOrder" |
|
|
|
class="narrow-input" |
|
|
|
/> |
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
|
|
|
|
<!-- 工单信息卡片列表 --> |
|
|
|
<!-- <div class="work-order-list" v-if="workOrderList.length > 0"> |
|
|
|
<div class="work-order-list" v-if="displayWorkOrderList.length > 0"> |
|
|
|
<div |
|
|
|
v-for="(workOrder, index) in workOrderList" |
|
|
|
v-for="(workOrder, index) in displayWorkOrderList" |
|
|
|
:key="index" |
|
|
|
class="work-order-card" |
|
|
|
:class="['work-order-card', { selected: selectedWorkOrder && selectedWorkOrder.orderNo === workOrder.orderNo && selectedWorkOrder.releaseNo === workOrder.releaseNo && selectedWorkOrder.sequenceNo === workOrder.sequenceNo }]" |
|
|
|
@click="selectWorkOrder(workOrder)" |
|
|
|
> |
|
|
|
<div class="card-title"> |
|
|
|
<span class="title-label">工单号:{{ workOrder.orderNo }}</span> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="part-desc-row"> |
|
|
|
<span class="title-label">工单号:{{ workOrder.orderNo }}-{{workOrder.releaseNo}}-{{workOrder.sequenceNo}}</span> |
|
|
|
<span class="title-value">{{ workOrder.partNo }}</span> |
|
|
|
</div> |
|
|
|
<div class="part-desc-row"> |
|
|
|
@ -73,7 +71,7 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</div> --> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 材料列表(新增,仿 directIssue.vue) --> |
|
|
|
<div |
|
|
|
@ -87,7 +85,7 @@ |
|
|
|
@click="openIssueList(material)" |
|
|
|
> |
|
|
|
<div class="card-title"> |
|
|
|
<span class="title-label">工单号:{{ material.orderNo }}</span> |
|
|
|
<span class="title-label">工单号:{{ material.orderNo }}-{{material.releaseNo}}-{{material.sequenceNo}}</span> |
|
|
|
|
|
|
|
</div> |
|
|
|
<div class="card-title"> |
|
|
|
@ -138,7 +136,7 @@ |
|
|
|
</template> |
|
|
|
|
|
|
|
<script> |
|
|
|
import { getWorkOrderMaterials } from '@/api/production/production-issue'; |
|
|
|
import { getWorkOrderMaterials, getShopOrderLine } from '@/api/production/production-issue'; |
|
|
|
import { getReturnWorkOrderInfo } from '@/api/production/production-return'; |
|
|
|
import moment from 'moment'; |
|
|
|
|
|
|
|
@ -154,8 +152,17 @@ export default { |
|
|
|
selectedMaterial: null, |
|
|
|
loading: false, |
|
|
|
detailLoading: false, |
|
|
|
showOnlySelected: false, |
|
|
|
}; |
|
|
|
}, |
|
|
|
computed: { |
|
|
|
displayWorkOrderList() { |
|
|
|
if (this.showOnlySelected && this.selectedWorkOrder) { |
|
|
|
return [this.selectedWorkOrder]; |
|
|
|
} |
|
|
|
return this.workOrderList; |
|
|
|
}, |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
formatDate(date) { |
|
|
|
return date ? moment(date).format('YYYY-MM-DD') : ''; |
|
|
|
@ -169,8 +176,10 @@ export default { |
|
|
|
workOrderList: this.workOrderList, |
|
|
|
selectedWorkOrder: this.selectedWorkOrder, |
|
|
|
materialList: this.materialList, |
|
|
|
showOnlySelected: this.showOnlySelected, |
|
|
|
}; |
|
|
|
sessionStorage.setItem('productionReturnPicking_state_fromIssueList', JSON.stringify(state)); |
|
|
|
sessionStorage.setItem('productionReturnPicking_shouldRestore', 'true'); |
|
|
|
}, |
|
|
|
// 从sessionStorage恢复页面状态(仅当从领料记录页返回时) |
|
|
|
restorePageStateFromIssueList() { |
|
|
|
@ -185,6 +194,7 @@ export default { |
|
|
|
this.workOrderList = state.workOrderList || []; |
|
|
|
this.selectedWorkOrder = state.selectedWorkOrder || null; |
|
|
|
this.materialList = state.materialList || []; |
|
|
|
this.showOnlySelected = state.showOnlySelected || false; |
|
|
|
// 清除标记 |
|
|
|
sessionStorage.removeItem('productionReturnPicking_shouldRestore'); |
|
|
|
sessionStorage.removeItem('productionReturnPicking_state_fromIssueList'); |
|
|
|
@ -195,7 +205,7 @@ export default { |
|
|
|
sessionStorage.removeItem('productionReturnPicking_state_fromIssueList'); |
|
|
|
} |
|
|
|
}, |
|
|
|
// 查询工单信息 |
|
|
|
// 查询工单信息(原方法,保留) |
|
|
|
handleSearchWorkOrder() { |
|
|
|
if (!this.workOrderNo.trim()) { |
|
|
|
this.$message.warning("请输入工单号"); |
|
|
|
@ -224,12 +234,14 @@ export default { |
|
|
|
this.selectedWorkOrder = firstWorkOrder; |
|
|
|
this.workOrderList = []; |
|
|
|
this.materialList = []; |
|
|
|
this.showOnlySelected = true; |
|
|
|
this.loadMaterialList(); |
|
|
|
} else { |
|
|
|
this.$message.error(data.msg); |
|
|
|
this.workOrderList = []; |
|
|
|
this.selectedWorkOrder = null; |
|
|
|
this.materialList = []; |
|
|
|
this.showOnlySelected = false; |
|
|
|
this.detailLoading = false |
|
|
|
} |
|
|
|
}) |
|
|
|
@ -241,9 +253,66 @@ export default { |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 查询工单信息(使用 getShopOrderLine 模糊查询) |
|
|
|
handleSearchWorkOrderByShopOrderLine() { |
|
|
|
if (!this.workOrderNo.trim()) { |
|
|
|
this.$message.warning("请输入工单号"); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.loading = true; |
|
|
|
const params = { |
|
|
|
workOrderNo: this.workOrderNo.trim(), |
|
|
|
site: localStorage.getItem('site'), |
|
|
|
}; |
|
|
|
|
|
|
|
getShopOrderLine(params) |
|
|
|
.then(({ data }) => { |
|
|
|
this.loading = false; |
|
|
|
console.log("工单信息", data); |
|
|
|
|
|
|
|
if ( |
|
|
|
data.workOrders && |
|
|
|
data.workOrders.length > 0 && |
|
|
|
data.code === 0 |
|
|
|
) { |
|
|
|
this.workOrderList = data.workOrders; |
|
|
|
this.selectedWorkOrder = null; |
|
|
|
this.materialList = []; |
|
|
|
this.showOnlySelected = false; |
|
|
|
} else { |
|
|
|
this.$message.error(data.msg || "未找到该工单信息"); |
|
|
|
this.workOrderList = []; |
|
|
|
this.selectedWorkOrder = null; |
|
|
|
this.materialList = []; |
|
|
|
this.showOnlySelected = false; |
|
|
|
} |
|
|
|
}) |
|
|
|
.catch((error) => { |
|
|
|
this.loading = false; |
|
|
|
this.$message.error(error.msg || "查询工单信息失败"); |
|
|
|
}); |
|
|
|
}, |
|
|
|
|
|
|
|
// 选择工单 |
|
|
|
selectWorkOrder(workOrder) { |
|
|
|
if ( |
|
|
|
this.showOnlySelected && |
|
|
|
this.selectedWorkOrder && |
|
|
|
this.selectedWorkOrder.orderNo === workOrder.orderNo && |
|
|
|
this.selectedWorkOrder.releaseNo === workOrder.releaseNo && |
|
|
|
this.selectedWorkOrder.sequenceNo === workOrder.sequenceNo |
|
|
|
) { |
|
|
|
// 再次点击同一条,恢复显示所有主数据 |
|
|
|
this.selectedWorkOrder = null; |
|
|
|
this.materialList = []; |
|
|
|
this.showOnlySelected = false; |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.selectedWorkOrder = workOrder; |
|
|
|
this.showOnlySelected = true; |
|
|
|
this.detailLoading = true; |
|
|
|
this.loadMaterialList(); |
|
|
|
}, |
|
|
|
|
|
|
|
@ -256,8 +325,8 @@ export default { |
|
|
|
|
|
|
|
const params = { |
|
|
|
workOrderNo: this.selectedWorkOrder.orderNo, |
|
|
|
releaseNo: (this.releaseNo || "*").trim() || "*", |
|
|
|
sequenceNo: (this.sequenceNo || "*").trim() || "*", |
|
|
|
releaseNo: (this.selectedWorkOrder.releaseNo || this.releaseNo || "*").trim() || "*", |
|
|
|
sequenceNo: (this.selectedWorkOrder.sequenceNo || this.sequenceNo || "*").trim() || "*", |
|
|
|
site: localStorage.getItem('site'), |
|
|
|
}; |
|
|
|
|
|
|
|
|