视图模块开发
菜单名可以在 eam\client\launchpad\resource\CalemMsg.js.gz编辑,以下中文意思不代表所有版本菜单名,具体查找需要点开对应列表,查看用户化根据table名所对应的ID
- 工单 CalemWo
- 计划 CalemSchedUser
- 资产 CalemAsset
- 保养 CalemPm
- 库存 CalemIn
- 请求 CalemReq
- 采购 CalemPoMine
- 合同 CalemContract
- 供应商 CalemVendor
- 模板 CalemRcmFailure
- 管理 CalemUser
- 项目 CalemProject
- 文件 CalemDoc
- 联系 CalemContact
- 预算 CalemBudgetTitle
- 检测 CalemInspection
- 培训 CalemTraining
文件目录
eam\client\launchpad\resource\Calem.js.gz
逻辑层 Form
1. 分类:
List列表 ,Read详情,Edit编辑,Search查询,New新建,lookup
2. 命名定义:
菜单名+Form + 分类名 ,例: CalemAssetFormList
3. 单视图逻辑层
// 单视图逻辑层
CalemItemDef['CalemAssetFormList']={
CalemFormInfo: {
id: 'CalemAssetFormList',
title: 'asset_list',//头部的名字
icon: 'CalemAsset',//icon
controller: 'CalemAssetFormList',
model: 'asset',//模块
view: {CalemViewRefInfo: {id: 'CalemAssetViewList'}},//视图的ID
replaceType: CalemItemDef.REPLACE_BY_ID,
searchFormId: 'CalemAssetFormSearch' //查询所跳转的逻辑层
}
}
4. 多视图逻辑层
//多视图逻辑层
// (列表逻辑层名.prototype._onOpen) 列表逻辑层打开时获取对应数据表信息
CalemAssetContractFormList.prototype._onOpen =
function(evt) {
//Get the selection event
var item=CalemEvent.getItem(evt);
//Prepare data for master detail view.
var data = {modelItem: this._modelItem, item: item};
//pass-through current data model and selection
this._openForm('CalemAssetContractFormMdTab', data);
}
//new 视图逻辑层 替换CalemAssetContractFormMdTab为你定义的多视图逻辑层名
function CalemAssetContractFormMdTab(parent, formId, data) {
if (arguments.length==0) return;
CalemFormMdTab.call(this, parent, formId, data);
}
CalemAssetContractFormMdTab.prototype = new CalemFormMdTab;
CalemAssetContractFormMdTab.prototype.constructor = CalemAssetContractFormMdTab;
CalemAssetContractFormMdTab.prototype.toString = function() { return "CalemAssetContractFormMdTab";}
// end new 视图逻辑层
// 定义编辑多试图逻辑层 替换CalemAssetContractFormMdTab为你定义的多视图逻辑层名
CalemItemDef['CalemAssetContractFormMdTab']={
CalemFormMdTabInfo: {
id: 'CalemAssetContractFormMdTab',
title: 'new_asset_contract',//title,会根据对应CalemMsg.js.gz转义
icon: 'CalemAsset',
replaceType: CalemItemDef.REPLACE_BY_ID,
//一定要有layout 、 model 、itemMap
layout: {
CalemMdTabLayoutInfo: {
tabList: ['tab_main'],//tabList定义当前整体页面头部Tab菜单
tabMap: { //编写tabList定义的tab菜单所含有的逻辑层,一对多,或者一对一
'tab_main': {CalemTabLayoutInfo: ['CalemAssetContractFormRead','CalemContractDocFormList']},
}
} },
model: {
CalemFormModelInfo: {
//以定义的逻辑层所获得的数据作为参照
master: 'CalemAssetContractFormRead',
//item 编写对应逻辑层ID参照,fld这个逻辑层的字段名,parentFld,master逻辑层的字段名
items:
[
{CalemFormLinkInfo: {id: 'CalemContractDocFormList', link: {CalemFieldMdInfo: {fld: 'contract_id', parentFld: 'contract_id'}}} }
]
}
},
itemMap : { //映射层复制粘贴就可以了
CalemItemMap :{
'CalemAssetContractFormRead' : {
CalemFormLayoutInfo: {
id: 'CalemAssetContractFormRead',
fixed: true, //Move not allowed.
layout: {CalemBlockLayoutInfo: {width: '100%', height: '-2'}}
}
},
'CalemContractContactFormList' : {
CalemFormLayoutInfo: {
id: 'CalemContractContactFormList',
layout: {CalemBlockLayoutInfo: {width: '100%', rows: 8}}
}
},
'CalemContractDocFormList' : {
CalemFormLayoutInfo: {
id: 'CalemContractDocFormList',
layout: {CalemBlockLayoutInfo: {width: '100%', rows: 8}}
}
},
'tab_main': {
CalemTabInfo: {id: 'tab_contract_main', fixed: 1}
},
}
} //itemMap
} //MdTabInfo
}
视图层 View
1. 分类 :
List列表 ,Read详情,Edit编辑,Search查询,New新建,lookup
2. 命名定义:
菜单名+View + 分类名 ,例: CalemAssetViewList
3. 视图定义:
rows:表格列表名,具体看英文都能懂得了
CalemViewDef['CalemAssetViewRead']={
CalemViewInfo: {
id: 'CalemAssetViewRead',
type: 'CalemView',
layout: {
CalemLayoutInfo: {
tableLayout: {CalemTableLayoutInfo: {}},
colLayout: {CalemColLayoutInfo: {colCount: 4}}, //Potentially col width definition.
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {cols: ['toolbar']}},
{CalemTrInfo: {cols: ['err']}},
{CalemTrInfo: {cols: ['lb_warranty']}},
{CalemTrInfo: {cols: ['lb_depreciation']}},
//Codes
{CalemTrInfo: {cols: ['lb_codes']}},
//Cost
{CalemTrInfo: {cols: ['lb_cost']}},
//Last changes
{CalemTrInfo: {cols: ['lb_last_changes']}}
]
}
},
itemMap : {
CalemItemMap: {
toolbar: {
CalemToolBarInfo: {
type: 'CalemToolBar',
layout: ['CalemTbNew', 'CalemTbEdit', 'CalemTbDelete', 'CalemTbPrev', 'CalemTbNext', 'sep', 'CalemTbCancel', 'sep2', 'CalemTbCustomize'],
list: [
{ CalemButtonInfo: { id: 'CalemTbNew' } },
{CalemButtonInfo: {id: 'CalemTbDataRefresh'}},
{CalemButtonInfo: {id: 'CalemTbAssetServiceLog'}},
{CalemButtonInfo: {id: 'CalemTbAssetActivityLog'}},
{CalemButtonInfo: {id: 'CalemTbAssetChild'}},
{CalemButtonInfo: {id: 'CalemTbAssetLocChild'}},
{ CalemButtonInfo: {
id: 'CalemTbEdit',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbDelete',
customInfo: {
CalemMenuCustomInfo: {
enabled: false,
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_VALID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: {
id: 'CalemTbPrev',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_LAST, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_MID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{ CalemButtonInfo: {
id: 'CalemTbNext',
customInfo: {
CalemMenuCustomInfo: {
events: [
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_MID, func: '_enableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_FIRST_LAST, func: '_disableIt'}},
{CalemEventInfo: {id: CalemEvent.RECORD_POS_INVALID, func: '_disableIt'}}
]
}
}
}
},
{CalemSeparator: {id: 'sep2', className: 'CalemToolBarSeparator'}},
{ CalemButtonInfo: {
id: 'CalemTbCancel'
}
},
{ CalemButtonInfo: {id: 'CalemTbCustomize'}}
]
} },
'lb_caption': {
CalemLabelInfo: {id: 'asset', className: 'CalemEditCaption'}
},
'err': {
CalemFormErrorInfo: {id: 'form_error'}
},
'lb_warranty': {
CalemLabelInfo: {id: 'sec_asset_warranty', className: 'CalemEditSection'}
},
'lb_depreciation': {
CalemLabelInfo: {id: 'sec_asset_depreciation', className: 'CalemEditSectionDisplay'}
},
'lb_codes': {
CalemLabelInfo: {id: 'sec_asset_codes', className: 'CalemEditSectionDisplay'}
},
'lb_cost': {
CalemLabelInfo: {id: 'sec_asset_cost', className: 'CalemEditSectionDisplay'}
},
'lb_last_changes': {
CalemLabelInfo: {id: 'last_changes', className: 'CalemEditSection'}
},
'upload_id' : {CalemReadFileAttachmentInfo: {field: 'upload_id'}}
}
} //ItemMap
}
};
本地调试优化
项目资源文件默认为引用.gz文件,修改为.min
打开eam\client\launchpad\CalemIncludeJsPkg.php,找到以下函数,找到$zip=true; ,然后注释掉
public function downloadBulk($bulkList, $jsList=null) {
//language
global $_CALEM_conf;
$lang=isset($_REQUEST['lang'])?$_REQUEST['lang']:null;
$ext=false;
if ($lang) {
$ext='_' . $lang;
}
//download mode
$mode=isset($_REQUEST['loadmode'])?$_REQUEST['loadmode']:$_CALEM_conf['client_js_load_mode'];
$zip=false;
$zipIt=(count($bulkList)>1); //zipping more than 1 files using min.
if ($mode == "gzip") {
if ($encoding=CalemGzip::canGzip()) {
// $zip=true;
}
...此处省略代码
增减视图(页面显示)字段
1.打开页面用户化,找到对应字段id
2.修改配置
CALEM_OOB.view.js.min 系统配置
CUSTOM_SYSTEM.view.js.min 用户自定义配置 (优先读取)
1. 打开 CALEM_OOB.view.js.min
eam\custom\group\CALEM_OOB.view.js.min
2. 编辑json
根据上面视图函数规则,找到对应函数配置(默认json压缩),编辑增减字段
//已经格式化
CalemViewCustomDef['CalemContractViewList_CALEM_OOB'] = {
CalemViewCustomInfo: {
id: 'CalemContractViewList',
acl: {
CalemViewAclInfo: {
tbAcl: {},
viewAcl: {}
}
},
layout: {
CalemViewLayoutInfo: {
tbLayout: ['CalemTbNew', 'CalemTbOpen', 'CalemTbDelete', 'sep', 'CalemTbDataRefresh', 'sep2', 'CalemTbSearch', 'CalemTbSearchClear', 'sep3', 'CalemTbCustomize'],
viewLayout: [{
CalemTrInfo: {
height: -2,
cols: ['lb_caption']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['toolbar']
}
}, {
CalemTrInfo: {
height: -2,
cols: ['grid']
}
}],
gridLayout: {
CalemListInfo: {
noMaximize: true,
colList: [{
CalemCol: {
id: 'contract',
width: 191
}
}, {
CalemCol: {
id: 'type_id',
width: 151
}
}, {
CalemCol: {
id: 'status_id',
width: 146
}
}, {
CalemCol: {
id: 'note',
width: 358
}
}]
}
}
}
}
}
};
3. 粘贴到CUSTOM_SYSTEM.view.js.min
a.复制已经修改并且压缩了的json,
b.打开 eam\custom\group\CUSTOM_SYSTEM.view.js.min ,
c.如果数组已经存在就覆盖,不存在就添加
d.修改数组key名 XXX_CALEM_OOB 为 XXX_CUSTOM_SYSTEM
4. 编辑视图函数
对应删除/增加配置中的列表名/字段名
CalemViewDef['CalemContractViewList']={
...省略代码
rows: [
{CalemTrInfo: {cols: ['lb_caption']}},
{CalemTrInfo: {height: -2, cols: ['toolbar']}},
{CalemTrInfo: {height: -1, cols: ['grid']}}
]
...省略代码