帖子
帖子
用户
博客
课程
显示全部楼层
142
帖子
2
勋章
4万+
Y币

案例-如何控制参照中的字段权限

[复制链接]
发表于 2024-3-29 17:53:20
本帖最后由 yonyouhmm 于 2024-4-16 11:55 编辑

一、场景

    物料中增加了特征字段,通过“参照配置”菜单将特征字段添加到物料参照中,采购订单中打开物料参照能看到此字段,生产订单中打开物料参照不能看到此字段。
    我们支持中遇到上述控制参照中字段权限的场景,目前产品不支持配置实现,只能通过前端脚本控制。前端脚本中需要控制详情页和列表页查询区:隐藏参照弹框中查询区的字段,表格中的字段,表格右上角列设置中的字段。
二、前端脚本

详情页:
viewModel
  .getGridModel('materOuts')
  .getEditRowModel()
  .get('product_cCode')
  .on('afterInitVm', function (arg) {
    const referViewModel = arg.vm;


    referViewModel.on('afterGetRefMeta', (data) => {
      debugger;
      let columns = data.gridMeta.viewApplication.view.containers[2].controls;
      columns.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          columns.splice(index, 1);
        }
      });
    });


    let gridModel = referViewModel.get('table');
    gridModel.on('beforeSetTitle', function (titleList) {
      titleList.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          titleList.splice(index, 1);
        }
      });
    });


    gridModel.on('beforeSetColumns', (columns) => {
      delete columns.name;
    });


    referViewModel.on('afterInitCommonViewModel', function () {
      const filterViewModel = referViewModel.getCache('FilterViewModel');
      filterViewModel.on('afterInit', function () {
        filterViewModel.get('name').getFromModel().setVisible(false);
      });
    });
  });



列表页:
viewModel.on('afterMount', function (data) {
  let filterViewModelInfo = viewModel.getCache('FilterViewModel');
  filterViewModelInfo.on('afterInit', function (data) {
    //product_cName 是查询区的物料的字段编码
    filterViewModelInfo.get('product_cName').getFromModel().on('afterInitVm', function (arg) {
    const referViewModel = arg.vm;

    referViewModel.on('afterGetRefMeta', (data) => {
      debugger;
      let columns = data.gridMeta.viewApplication.view.containers[2].controls;
      columns.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          columns.splice(index, 1);
        }
      });
    });

    let gridModel = referViewModel.get('table');
    gridModel.on('beforeSetTitle', function (titleList) {
      titleList.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          titleList.splice(index, 1);
        }
      });
    });

    gridModel.on('beforeSetColumns', (columns) => {
      delete columns.name;
    });

    referViewModel.on('afterInitCommonViewModel', function () {
      const filterViewModel = referViewModel.getCache('FilterViewModel');
      filterViewModel.on('afterInit', function () {
        filterViewModel.get('name').getFromModel().setVisible(false);
      });
    });
  });
  });
});


材料出库单子表有个小房间标识的参照和批次号

viewModel
  .get('materOuts')
  .getEditRowModel()
  .get('stockproductsku_cCode')
  .on('afterInitVm', function (arg) {
    const referViewModel = arg.vm;
    debugger;
    referViewModel.on('afterGetRefMeta', (data) => {
      debugger;
      let columns = data.gridMeta.viewApplication.view.containers[3].controls;
      columns.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          columns.splice(index, 1);
        }
      });
    });

    let gridModel = referViewModel.get('table');
    gridModel.on('beforeSetTitle', function (titleList) {
      titleList.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          titleList.splice(index, 1);
        }
      });
    });

    gridModel.on('beforeSetColumns', (columns) => {
      delete columns.product_cName;
    });
  });
  
  viewModel
  .get('materOuts')
  .getEditRowModel()
  .get('batchno')
  .on('afterInitVm', function (arg) {
    const referViewModel = arg.vm;
    debugger;
    referViewModel.on('afterGetRefMeta', (data) => {
      debugger;
      let columns = data.gridMeta.viewApplication.view.containers[0].controls;
      columns.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          columns.splice(index, 1);
        }
      });
    });

    let gridModel = referViewModel.get('table');
    gridModel.on('beforeSetTitle', function (titleList) {
      titleList.forEach((item, index) => {
        if (item.cShowCaption == '物料名称') {
          titleList.splice(index, 1);
        }
      });
    });

    gridModel.on('beforeSetColumns', (columns) => {
      delete columns.cName;
    });
  });




您需要登录后才可以回帖 登录

本版积分规则