问题
针对在页面模板配置阶段有些字段(参照类型)没有参照引用的问题,尝试填了一点坑。
解决过程
1、数据库refpath关联
因为该字段关联的是“流程胜场订单明细”参照,首先在bd_refinfo参照表中添加refpath:mmpac/refer/pmo/PMOItemGridRef/index
这个步骤之后,点击默认取值的放大镜可弹出参照框,但是框暂时没有内容
2、前端参照组件编写
2.1、在业务模块下创建参照组件,路径为mmpac/refer/pmo/PMOItemGridRef/index.js
import { high } from ‘nc-lightapp-front’; const { Refer } = high;
export default function (props = {}) { var conf = { multiLang: { domainName: ‘mmpac’, currentLocale: ‘zh-CN’, moduleId: ‘refer_mmpac’, },
refType: 'grid',refName: 'refer-50080115-000001',/* 国际化处理: 流程生产订单明细*/placeholder: 'refer-50080115-000001',/* 国际化处理: 流程生产订单明细*/refCode: 'mmpac.refer.pmo.PMOItemGridRef',queryGridUrl: '/nccloud/mmpac/pmo/PMOItemGridRef.do',isMultiSelectedEnabled: false,columnConfig: [{name: ['refer-50080115-000005', 'refer-50080115-000006','refer-50080115-000007','refer-50080115-000008'],code: ['refcode', 'vrowno','bd_material.code','bd_material.name']}],//unitProps: unitConf,isShowUnit: false};return <Refer {...conf} {...props} />}
注意:其中columnConfig中code属性需要与后台代码中的参照字段保持一致
2.2、同时创建多语文件 src\mmpac\public\lang\standard\simpchn\refer_mmpac.json
{
"refer-50080115-000001": "流程生产订单明细", "refer-50080115-000005": "生产订单号", "refer-50080115-000006": "生产订单行号", "refer-50080115-000007": "主产品编码", "refer-50080115-000008": "主产品名称"}
2.3、将mmpac/refer/pmo/PMOItemGridRef/index.js加入到config.json文件,进行编译

3、后端参照动作编写
3.1、创建参照后台动作逻辑文件nccloud.web.mmpac.refer.pmo.PMOItemGridRef.java
```java package nccloud.web.mmpac.refer.pmo;
import nc.vo.bd.material.MaterialVO; import nc.vo.bd.material.measdoc.MeasdocVO; import nc.vo.bd.wk.wk0104.entity.BDWkVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOHeadVO; import nc.vo.mmpac.pmo.pac0002.entity.PMOItemVO; import nc.vo.org.DeptVO; import nccloud.framework.web.processor.refgrid.RefQueryInfo; import nccloud.framework.web.ui.meta.RefMeta; import nccloud.framework.web.ui.meta.TreeRefMeta; import nccloud.web.refer.DefaultGridRefAction;
public class PMOItemGridRef extends DefaultGridRefAction { public PMOItemGridRef() { setShowDisabledData(Boolean.valueOf(false)); setUnitPkKey(“pk_org”); }
public RefMeta getRefMeta(RefQueryInfo refQueryInfo) {
setResourceCode("mm_mo");
TreeRefMeta refMeta = new TreeRefMeta();
String[] extraFields = new String[] {"cmoid","vrowno","bd_material.code","bd_material.name"};
refMeta.setCodeField("mm_pmo.vbillcode");
refMeta.setExtraFields(extraFields);;
refMeta.setPkField("mm_mo.cmoid");
// refMeta.setMutilLangNameRef(true);
//构建联表逻辑
StringBuilder tableNameBuf = new StringBuilder();
// 关联物料
tableNameBuf
.append("mm_mo left join " + MaterialVO.getDefaultTableName() + " on ")
.append(" mm_mo." + PMOItemVO.CMATERIALVID + "=" + MaterialVO.getDefaultTableName() + "."
+ MaterialVO.PK_MATERIAL)
// 关联工作中心
.append(" left join " + BDWkVO.TABLE_NAME + " on ")
.append(" mm_mo." + PMOItemVO.CWKID + "=" + BDWkVO.TABLE_NAME + "." + BDWkVO.CWKID)
// 关联生产部门
.append(" left join " + DeptVO.getDefaultTableName() + " on ")
.append(" mm_mo." + PMOItemVO.CDEPTID + "=" + DeptVO.getDefaultTableName() + "." + DeptVO.PK_DEPT)
// 关联单位
.append(" left join " + MeasdocVO.getDefaultTableName() + " meas on ")
.append(" mm_mo." + PMOItemVO.CUNITID + "=" + "meas." + MeasdocVO.PK_MEASDOC)
// 关联辅单位
.append(" left join " + MeasdocVO.getDefaultTableName() + " assmeas on ")
.append(" mm_mo." + PMOItemVO.CASTUNITID + "=" + "assmeas." + MeasdocVO.PK_MEASDOC)
.append(" left join mm_pmo on mm_pmo." + PMOHeadVO.CPMOHID + "=" + "mm_mo." + PMOItemVO.CPMOHID);
refMeta.setTableName(tableNameBuf.toString());
return refMeta;
}
public String getOrderSql(RefQueryInfo refQueryInfo, RefMeta refMeta) { return “ order by mm_pmo.vbillcode”; } }
> 注意:
> 1、该refAction中需要复写:
> public RefMeta getRefMeta(RefQueryInfo refQueryInfo)
> 和
> public String getOrderSql(RefQueryInfo refQueryInfo, RefMeta refMeta)。
> 逻辑一般参照对应的refModel进行改造,本例流程生产订单明细的参照文件为PMOItemRefModel.java。
> 2、extraFields中字段要包含前台索要显示的字段
<a name="Orjj9"></a>
#### 3.2、创建url的config分派路由,文件结构:
<br />其中action.xnl:
```xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<actions>
<action>
<name>mmpac.pmo.PMOItemGridRef</name>
<lable>流程生产订单明细(表型参照)</lable>
<clazz>nccloud.web.mmpac.refer.pmo.PMOItemGridRef</clazz>
</action>
</actions>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<authorizes>
<authorize>
<appcode>*</appcode>
<actions>
<action>mmpac.pmo.PMOItemGridRef</action>
</actions>
</authorize>
</authorizes>
appcode为*,可供任意节点调用,没有权限约束
4、调用与赋值
4.1、编辑后事件调用
4.2、编辑后事件逻辑编写

