// 自定义扩展业务代码 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;