diff --git a/src/views/modules/production-issue/directIssue.vue b/src/views/modules/production-issue/directIssue.vue
index 077eb9f..67372c9 100644
--- a/src/views/modules/production-issue/directIssue.vue
+++ b/src/views/modules/production-issue/directIssue.vue
@@ -147,6 +147,52 @@ export default {
return date ? moment(date).format("YYYY-MM-DD") : "";
},
+ // 保存页面状态到sessionStorage(仅用于从详情页返回时恢复)
+ savePageStateForDetail() {
+ const state = {
+ workOrderNo: this.workOrderNo,
+ workOrderList: this.workOrderList,
+ selectedWorkOrder: this.selectedWorkOrder,
+ materialList: this.materialList,
+ showOnlySelected: this.showOnlySelected,
+ };
+ sessionStorage.setItem('directIssue_state_fromDetail', JSON.stringify(state));
+ },
+
+ // 从sessionStorage恢复页面状态(仅当从详情页返回时)
+ restorePageStateFromDetail() {
+ try {
+ const shouldRestore = sessionStorage.getItem('directIssue_shouldRestore');
+ const savedState = sessionStorage.getItem('directIssue_state_fromDetail');
+
+ if (shouldRestore === 'true' && savedState) {
+ const state = JSON.parse(savedState);
+ this.workOrderNo = state.workOrderNo || "";
+ this.workOrderList = state.workOrderList || [];
+ this.selectedWorkOrder = state.selectedWorkOrder || null;
+ this.materialList = state.materialList || [];
+ this.showOnlySelected = state.showOnlySelected || false;
+
+ // 如果发料成功,刷新材料列表
+ const needRefresh = sessionStorage.getItem('directIssue_needRefresh');
+ if (needRefresh === 'true' && this.selectedWorkOrder) {
+ this.loadMaterialList();
+ }
+
+ // 清除标记
+ sessionStorage.removeItem('directIssue_shouldRestore');
+ sessionStorage.removeItem('directIssue_state_fromDetail');
+ sessionStorage.removeItem('directIssue_needRefresh');
+ }
+ } catch (error) {
+ console.error('恢复页面状态失败:', error);
+ // 清除可能损坏的数据
+ sessionStorage.removeItem('directIssue_shouldRestore');
+ sessionStorage.removeItem('directIssue_state_fromDetail');
+ sessionStorage.removeItem('directIssue_needRefresh');
+ }
+ },
+
// 查询工单信息
handleSearchWorkOrder() {
if (!this.workOrderNo.trim()) {
@@ -175,7 +221,7 @@ export default {
this.materialList = [];
this.showOnlySelected = false;
} else {
- this.$message.error("未找到该工单信息");
+ this.$message.error(data.msg ||"未找到该工单信息");
this.workOrderList = [];
this.selectedWorkOrder = null;
this.materialList = [];
@@ -184,8 +230,7 @@ export default {
})
.catch((error) => {
this.loading = false;
- console.error("查询工单信息失败:", error);
- this.$message.error("查询工单信息失败");
+ this.$message.error(error.msg || "查询工单信息失败");
});
},
@@ -258,6 +303,8 @@ export default {
this.$message.warning('该物料为'+material.reserveIssueMethod+',不支持直接领料,请选择其他物料!');
return;
}
+ // 跳转前保存当前页面状态(用于从详情页返回时恢复)
+ this.savePageStateForDetail();
this.$router.push({
name: "directIssueDetail",
query: {
@@ -274,6 +321,8 @@ export default {
},
},
mounted() {
+ // 检查是否从详情页返回,如果是则恢复状态
+ this.restorePageStateFromDetail();
// 聚焦工单号输入框
this.$nextTick(() => {
if (this.$refs.workOrderInput) {
diff --git a/src/views/modules/production-issue/directIssueDetail.vue b/src/views/modules/production-issue/directIssueDetail.vue
index dbbb508..b6fa7f9 100644
--- a/src/views/modules/production-issue/directIssueDetail.vue
+++ b/src/views/modules/production-issue/directIssueDetail.vue
@@ -2,7 +2,7 @@