heshaofeng
2025-12-29 266e4bf654c55ce2f7e9271048e4625f1b8b49f6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
// 自定义扩展业务代码
import gridBody from "./extend/OrderStockTake.vue";
 
let extension = {
  components: {
    // 查询界面扩展组件:将自定义弹窗注册为 gridBody 组件
    gridHeader: '',
    gridBody: gridBody, // 对应你的盘点弹窗组件
    gridFooter: '',
    // 新建/编辑弹出框扩展组件(此处不用,留空)
    modelHeader: '',
    modelBody: '',
    modelFooter: ''
  },
  tableAction: '', // 无需指定表名(默认适用当前页面表格)
  buttons: { view: [], box: [], detail: [] }, // 扩展按钮(如需额外添加可在此配置)
  methods: {
    onInit() {
      // 找到 value 为 "OrderStockTake" 的按钮(需在框架中提前配置该按钮)
      let OrderStockTakeBtn = this.buttons.find(x => x.value === 'OrderStockTake');
      if (OrderStockTakeBtn) {
        // 重写按钮点击事件
        OrderStockTakeBtn.onClick = function () {
          // 1. 获取表格选中行数据
          let rows = this.$refs.table.getSelected();
          if (rows.length === 0) return this.$error("请选择一条盘点单据数据!");
          if (rows.length > 1) return this.$error("只能选择一条盘点单据数据!");
          
          const selectedReceiptNo = rows[0].orderNo;
          if (!selectedReceiptNo) return this.$error("选中的单据缺少有效的单据号!");
 
          // 3. 调用自定义弹窗的 open 方法,并传递单据号(核心:给弹窗传参)
          this.$refs.gridBody.open(selectedReceiptNo);
        };
      }
 
      // 4. 监听自定义弹窗的事件(同步主页面数据)
      this.$nextTick(() => {
        const stockTakeComp = this.$refs.gridBody;
        if (stockTakeComp) {
          // 监听弹窗的 "refresh" 事件(盘点完成后刷新主页面)
          stockTakeComp.$on('refresh', () => {
            this.$refs.table.reload(); // 刷新表格数据
          });
 
          // 监听弹窗的 "box-returned" 事件(料箱回库后可按需处理)
          stockTakeComp.$on('box-returned', (boxNo) => {
            this.$success(`料箱【${boxNo}】回库成功,表格将刷新!`);
            this.$refs.table.reload(); // 回库后也刷新表格(可选,根据业务需求)
          });
        }
      });
    },
    onInited() {
      // 框架初始化完成后执行(如需配置明细表可在此操作)
    },
    searchBefore(param) {
      // 查询前拦截:可添加额外查询条件(如权限过滤)
      return true;
    },
    searchAfter(result) {
      // 查询后数据处理(如格式化日期、状态显示)
      return true;
    },
    addBefore(formData) {
      // 新建保存前处理(此处不用)
      return true;
    },
    updateBefore(formData) {
      // 编辑保存前处理(此处不用)
      return true;
    },
    rowClick({ row, column, event }) {
      // 单击行选中当前行(优化用户体验)
      this.$refs.table.$refs.table.toggleRowSelection(row);
    },
    modelOpenAfter(row) {
      // 新建/编辑弹窗打开后处理(此处不用)
    }
  }
};
 
export default extension;