dorado7通用代码

来源:互联网 发布:一亿玉碎 知乎 编辑:程序博客网 时间:2024/05/17 13:38

通用代码
lookupCode  
lookupName
性别     

{dorado.getDataProvider("sysLookupTypeAction#getValueByCode").getResult('PLATFORM_SEX')} 
有效标识
{dorado.getDataProvider("sysLookupTypeAction#getValueByCode").getResult('PLATFORM_VALID_FLAG')}
储值卡标识  
{dorado.getDataProvider("sysLookupTypeAction#getValueByCode").getResult('IF_TRANSACT')} 
储值卡类型
{dorado.getDataProvider("sysLookupTypeAction#getValueByCode").getResult('CARD_TYPE')}
认识本店途径   $${dorado.getDataProvider("sysLookupTypeAction#getValueByCode").getResult('KNOW_APPROACH')}

1、弹出页面的嵌入路径
${web.contextPath}/avicit/platform6/modules/train/examshopmember/view/ExamShopMemberAdd.d7
${web.contextPath}/avicit/platform6/modules/train/examshopmemberexercise/view/ExamShopMemberExerciseEdit.d7


memberDataUpdateAction    memberDataDeleteAction  dialogAddOrEdit

2、添加页插入空数据:self.get("#dataSetExamShopMemberExercise").insert();

3、添加页保存方法:view.get("#memberDataUpdateAction").execute();   
执行成功后关闭弹出页,刷新父页面数据:
var ds =view.get("dataSetExamShopMember");
ds.clear();
ds.insert();
parent.refreshAdd();
4、添加页取消方法:
var ds =view.id("dataSetExamShopMember");
ds.clear();
ds.insert();
parent.refreshAdd();
5、编辑按钮的方法:
var dataGrid = view.get("#MainData");
var selections = dataGrid.get("selection"); 
if (selections.length == 0) {
 dorado.MessageBox.alert("请选择记录");
 return "false";
}
if (selections.length > 1) {
 dorado.MessageBox.alert("只允许选择一条数据记录!");
 return "false";
}

var id =selections[0].get("ID");
view.get("#editIframe").set("path","${web.contextPath}/avicit/platform6/modules/train/examshopmember/view/ExamShopMemberEdit.d7?id="+id);
view.get("#dialogEdit").show();

6、编辑页保存的方法:view.get("#memberDataUpdateAction").execute();
执行成功后关闭弹出页,刷新父页面数据:
parent.refreshEdit();
7、编辑页的取消方法:parent.refreshEdit();
8、隐藏显示某个字段
var value = view.get("#CONSUME_CARD_FLAG.value");
dorado.MessageBox.alert(value);
if(value == '1'){
 view.get("#CONSUME_CARD_TYPE").set("visible",true);
 view.get("#CONSUME_CARD_MONEY").set("visible",true);
} else {
 view.get("#CONSUME_CARD_TYPE").set("visible",true);
 view.get("#CONSUME_CARD_MONEY").set("visible",true);

 var panelCompany = this.id("PanelMain");
     panelCompany.set("visible",true);
  //隐藏表格 列
  view.id("MainData").getColumn("SearchActionSubject").set("visible",false);
  //显示按钮
  var kpi = this.id("editActionChangeButton");//变更行动方案
          kpi.set("visible",true);//显示编制积分卡按钮
9、获取树的当前节点数据
var currentEitity = view.get("#classDataTree").get("currentEntity");
currentEitity.get("id");
10、刷新数据
buyRecordDataSet.flushAsync();
11、调用ajaxAction,动态传参数
var dataSetSql = view.get("#dataSetSql");
var code = view.get("#sqlQueryCondition.entity.code");
var name = view.get("#sqlQueryCondition.entity.name");
var parentId = view.get("#dataSetTypeSysProfile").getData("#").get("id");
var judgeSqlValueAction = view.get("#judgeSqlValueAction");
judgeSqlValueAction.set("parameter",{parentId:parentId});
judgeSqlValueAction.execute(function(sqlValue){
 if(sqlValue==""){
 }else{
  dataSetSql.set("parameter",{sqlValue:sqlValue,code:code,name:name});
  dataSetSql.flushAsync();
 }
});
12、ajax校验的动态传参数,beforeExecute方法,例子参考sysLookupType.view.xml中的dataSysLookupTlLanguage的sysLanguageCode
 var ds = view.get("#dataSetSysLookupTl");
 var dsParent = view.get("#dataSetSysLookupType");
 var id = view.get("#dataSetSysLookupType").getData("#.#sysLookup.id");
 var sysLanguageCode = ds.getData("#.sysLanguageCode");
 arg.parameter = {sysLanguageCode:sysLanguageCode,pId:id};
 后台action获取的方法的参数为(Map<String,String> params)
 if (null != params) { 
 sysLanguageCode = (String)params.get("sysLanguageCode"); 
 pId = (String)params.get("pId"); 
}
13、主页面的方法
refreshAdd = function(){
 if (view.get("#dialogAdd")) {
  view.get("#dialogAdd").hide();
  refresh();
 }
}
refreshEdit = function(){
 if (view.get("#dialogEdit")) {
  view.get("#dialogEdit").hide();
  refresh();
 }
}
refresh = function(){
 var ds = view.id("dataSetExamShopMember");
 var entityList =ds.getData(); 
 entityList.clear();
 entityList.gotoPage(entityList.pageNo);
 var grid =view.id("MainData");
 grid.set("selection", null);
}
---------------
读取properties文件的值
按钮名称:
\#buttonAddRow.caption=添加
caption属性:
dataTypeSysWordTemplet.readTemplet=查看模板
取值:${res['dataTypeSysWordTemplet.readTemplet']}
值:查看模板
-------------------------
树datatree
取值
view.get("datatree").get('data').get("ID");
--------------------
--重置form
var ds=this.id('dataSetQuery');
var cur=ds.getData('#');
cur.clearData();
var form=this.id('queryForm');
form.set('entity',{});
---------------
/////校验 begin DingRui 2013-06-14///
var data = view.get("#dataSetOcmActPlan.data:#");
var actCode = data.get("ACT_CODE");
var actName = data.get("ACT_NAME");
var hrDeptId = data.get("HR_DEPT_ID");
var startDate = data.get("ACT_START_DATE");
var endDate = data.get("ACT_END_DATE");

 

 

log4j.logger.com.bstek.dorado.jdbc=DEBUG 
Inltex easy meeting classic 会议软件风也轻狂,梦也嚣张,看夜雨潇潇洒洒.;
缓存
-Xmx512m -XX:MaxPermSize=512m
-Xmx256m -XX:MaxPermSize=256m
以前项目的D:\Program Files\apache-tomcat-6.0.20
代码我已配置好,你们只需改一下cinfigure-debug文件里的view.root=file:F:\\workSpace v6\\182OCm\\src\;

Dorado7 Tomcat路径:D:\Dorado7\ProgramProject\apache-tomcat-6.0.35
E:\Workspaces\Workspace_Platform_V6\182OCM\webapp\WEB-INF\dorado-home
RD
import avicit.platform6.core.api.system.syslog.service.SysLogUtil;d
系统部门
create table sys_dept_mac as (select *  from sys_dept)
${res['process.Catalog.Change']}
改数据源登陆用户的话得改两个地方:configure*.properties;  jdbc.properties
----接收参数
var flag="${param.flag}";//1公司级;2专业级
var proid = top.$.cookie('proid');

蓝色圆点图片
>images/tblue.gif
绿色圆点
>images/tgreen.gif
红色圆点
>images/tred.gif
黄色圆点
>images/tyellow.gif

查询图片
 url(>skin>common/icons.gif) -40px -100px
添加图片
 url(>skin>common/icons.gif) -120px -0px
删除图片
 url(>skin>common/icons.gif) -140px -0px
取消图片
 url(>skin>common/icons.gif) -140px -0px
保存图片
 url(>skin>common/icons.gif) -140px -20px
-----返回上一步
window.history.back();
var id="${request.getParameter('id')}";
------通过重定向返回某个页面
parent.window.location="${web.contextPath}/avicit/platform6/modules/system/sysdashboard/index.jsp";

另存为[方形框框]
 url(>skin>common/icons.gif) -140px -20px
 ---发布按钮
 url(>skin>common/icons.gif) -20px 0px
 ---
 编辑按钮
 url(>skin>common/icons.gif) -200px -0px
var dataset = view.id("dataSetSingleChensAgain");
dataset.getData("#").cancel();
重置按钮
 url(>skin>common/icons.gif) -100px -20px
 var ds=this.id('dataSetQuery');
var cur=ds.getData('#');
cur.clearData();
var form=this.id('queryForm');
form.set('entity',{});
SYS_APPLICATION_ID
---------
var parameter = view.get("#queryForm.entity");
view.get("#dataSetIbscSummarizeV").set("parameter",parameter).flushAsync();
---------
var flag="${param.flag}";
--------
--
-----遇到编辑,详细页面加载数据不正确
需要手动加载
var id="${param.id}";
view.get("#dataSetOcmGraphCard").set("parameter",{ID:id}).flushAsync();
return true;
------------------
---

点击查询弹出页面
this.get("#dialogQuery").show();
能够获取到数据

singleChensAgainAction#saveSingleChensAgain

singleChensAgainAction#saveTAddSingleChensAgain
var view = this;
var dataGrid = view.get("#MainData");
var selections = dataGrid.get("selection"); //获得当前选中的项
if (selections.length == 0) {
 dorado.MessageBox.alert("请选择记录");
 return;
}else {
 dorado.MessageBox.confirm('您真的要删除吗?',function(){
  var dataArray = new Array();
  var i = 0;
  selections.each(function(selection){
   dataArray[i] = {id:selection.get('ID')};
   i++;
  });
  view.get("#deleteAction").set("parameter",eval(dataArray));
  view.get("#deleteAction").execute(function(){
   // 刷新不回首页,只在当前页的方法。 
   var ds = view.id("dataSetSingleChensAgain");
   var entityList =ds.getData(); 
   entityList.clear();
   entityList.gotoPage(entityList.pageNo);
  });
 });
}
------弹出添加页面
在view的onReady()事件中
this.createSubMenu = function(){
 var dataset = view.id("dataSetTestSingle");
 dataset.insert();
    var dialog = view.id("dialogAdd");
    dialog.set("caption", "添加");
    dialog.show();
}

dataSetSingleChensAgain
DialogAddNew

this.get("#DialogAdd").show();

 

---------------返回DialogAddNew
var dialog = this.id("dialogAdd");
dialog.hide();
//var ds = view.id("CompositeTestSingle");
//var entityList =ds.getData(); 
//entityList.clear();
//entityList.gotoPage(entityList.pageNo);
//ds.flushAsync();
-------------------
---弹出编辑页面
var dataGrid = view.get("#MainData");
 var selection = dataGrid.get("selection"); //获得当前选中的项
 if(selection==null){
  dorado.MessageBox.alert("请选择一条要编辑的记录!");
 }

 if (selection.length == 1) {
  var currentData = selection[0];
  var id =currentData.get("ID");
   var ds = view.id("dataSetmac");
   ds.set("parameter",{ID:id});
   ds.flushAsync();
   var dialog = this.id("dialogAdd");
   dialog.set("caption", "編輯");
   dialog.show();
 }else if(selection.length > 1){
     dorado.MessageBox.alert("只能选择一条要编辑的记录!");
  return;
 } else{
  dorado.MessageBox.alert("请选择一条要编辑的记录!");
 }
---------------设置查询条件
var parameter = view.get("#queryForm.entity");
view.get("#dataSetSingleChensAgain").set("parameter",parameter).flushAsync();
------------------
var ds=this.id('dataSetQuery');
var cur=ds.getData('#');
cur.clearData();&#xD
var form=this.id('queryForm');
form.set('entity',{});
--------------------
if(arg.keyCode==13){
var parameter = view.get("#queryForm.entity");
view.get("#dataSetSingleChensAgain"").set("parameter"",parameter).flushAsync();
}
------
var dataset = view.id("dataSetSingleChensAgain");
dataset.getData("").cancel();

 <Button id="buttonSave">
          <ClientEvent name="onClick">
var action = this.id("saveAction");
var dialog = this.id("dialogAdd");
action.execute(function(){dialog.hide();});   


</ClientEvent>
          <Property name="caption">保存</Property>
          <Property name="icon">url(>skin>common/icons.gif) -280px -220px</Property>
        </Button>
  
  
  //this.get("#DialogAdd").show();


var dataGrid = view.get("#MainData");
 var selection = dataGrid.get("selection"); //获得当前选中的项
 if(selection==null){
  dorado.MessageBox.alert("请选择一条要编辑的记录!");
 }

 if (selection.length == 1) {
  var currentData = selection[0];
  var id =currentData.get("ID");
  alert(id);
  var ds = view.id("dataSetSingleChensAgain");
  ds.set("parameter",{ID:id});
  ds.flushAsync();
  var dialog = this.id("DialogAdd");
  dialog.set("caption", "編輯");
  dialog.show();
 }else if(selection.length > 1){
     dorado.MessageBox.alert("只能选择一条要编辑的记录!");
  return;
 } else{
  dorado.MessageBox.alert("请选择一条要编辑的记录!");
 }
 
 [CompositeSingleChensAgain]
 jdbcProvider
 
 ------在dataPolit的事件 onSubControlAction(self,arg)
 中点击添加按钮,添加数据
 switch(arg.code){
    case "+":
    var entityList = this.id("dataSet").getData();
    entityList.insert();
    var dialog =this.id("dialog");
    dialog.show();
    arg.processDefault = false;
    break;
 }
 -----
 点击添加,把主界面遮罩。添加页显示
 var entity=this.id("dataSet").getData("#");
 entity.cancel();
 var dialog=this.id("dialog");
 dialog.hide();
 
 ---------------
 查询按钮
 var parameter = view.get("#queryForm.entity");
var dataset = view.get("#dataSetTestChens514").set("parameter",parameter);
dataset.flushAsync();
alert(parameter.get("LOOKUP_TYPE"));
 -----=---通用代码
 $${dorado.getDataProvider ("sysLookupTypeAction#getValueByCode").getResult('PLATFORM_SYS_USER_FLAG')}
lookupCode
lookupName
 ---------------
 
 testChens514Action#saveTestChens514
正在执行
保存成功

CompositeTestChens514
CompositeTestChens514
argument type dismatch  是dataType 字段的类型不匹配..Number(16) 对应的是bigdecenum.有时候生成为Double了,报错了就。


var parameter = view.get("#queryForm.entity");
view.get("#dataSetTestSingle").set("parameter",parameter).flushAsync();
Inltex easy meeting classic 会议软件
-----------------------------
CompositeTestChens514  dataType
dataSetOcmGoalsManager

metaData
     jdbc.model  CompositeTestChens514
  
  取消
  var dataset = view.id("dataSetTestChens514");
dataset.getData("#").cancel();
//getData返回数据集封装的数据
查询
this.get("#dialogQuery").show();
------系统语言
languageCode

{dorado.getDataProvider("sysLookupTypeAction#getSysLanguageByCode").getResult('')} 
languageName 
-----状态 
lookupCode
{dorado.getDataProvider ("sysLookupTypeAction#getValueByCode").getResult('OCM_MISSION_MANAGER_STAT')}
lookupName
-----------执行action后关闭窗体------
var action = this.id("AddAction");
var dialog = this.id("dialogAdd");
action.execute(function(){dialog.hide();});

-------------
var dataset = view.id("dataSetTrainTestZhangkp");
dataset.getData("#").cancel();
this.id("dialogAdd").hide();
-------------------------
var ds = view.id("dataSetOcmGoalsManager");
var cur=ds.getData('#');
var id = cur.get("ID")
ds.set("parameter",{
    ID: id
});
ds.flushAsync();
var dialog = this.id("dialogGoalsAdd");
dialog.set("caption","編輯");
dialog.show();
view.id("dataSetAddForm").flushAsync();
--------------------------------
提示确认,取消不操作;这样取Action执行execute()
dorado.MessageBox.confirm('您确定发布本信息么?',function(){
   // view.get("#publishAction").set("parameter",{ID:id});
    view.get("#publishAction").execute();
})
------------提示操作,确认关闭窗体----------
dorado.MessageBox.confirm('您尚未保存数据,【确认】将不保存数据?',function(){
    var dataset = view.get("#dataSetAddForm");
    var data = dataset.getData("#");
    data.cancel();
    var dialog = view.get("#dialogGoalsAdd");
    dialog.hide();
})
-----------
var ds = view.id("dataSetOcmGoalsManager");
var cur=ds.getData('#');
var status = cur.get("DATA_STAT")
ds.set("parameter",{
    DATA_STAT: status
});
ds.flushAsync();
------------table---onRenderCell
var a=arg.data.get("NAME");
if(a=='chens0002'){
 arg.dom.innerHTML='lizhigang';
}

--------------------
ajaxAction
用注解@Expose
普通action
用注解@DataResolver
------


dorado7增删改
view视图-------------------------------------------------
oncreate()
/**
 * 用于table列显示不全内容加tip提示
 * @param {Object} arg table列中参数arg
 * @param {Object} canShu 对于字段名称
 * @param {Object} Split 列中显示的字节数
 */
$showTip = function(arg,canShu,Split){
 //根据传入字段名称获取值
    var ziDuan = arg.data.get(canShu);
    var countLength = 0;
 //获取字符串所占字节数
    String.prototype.getBytes = function(){
        var cArr = this.match(/[^\x00-\xff]/ig);
        return this.length + (cArr == null ? 0 : cArr.length);
    }    
 countLength = ziDuan.getBytes();
    var allLength = 0;//定义一个分割线
    var weiZhi = 0;//定义截取位置
    for (i = 0; i < ziDuan.length; i++) {
        if (allLength > Split) {
            weiZhi = i;
            break;
        } else {
            allLength += ziDuan.substring(i,i + 1).getBytes();
        }   
  
  }  
    if (weiZhi == 0) {
        weiZhi = ziDuan.length;
    }    
 var show = "";//定义table中显示内容
    if (weiZhi < ziDuan.length) {
        show = ziDuan.substring(0,weiZhi) + "...";
    }    else {
        show = ziDuan;
    }   
  arg.dom.innerHTML = "<a title='" + ziDuan + "'>" + show + "</a>";
}
------------------------------------------
--beforeRefreshDom()--首页默认加载条件数据
//只加载状态为已发布的记录
view.get("#dataSetOcmMissionManager").set("parameter",{P_DATA_STAT:5}).flushAsync();
return true;
------------------------------
dialogQuery属性
查询按钮事件onClick()
var parameter = view.get("#queryForm.entity");
view.get("#dataSetOcmMissionManager").set("parameter",parameter).flushAsync();
-------------------------------------
重置按钮事件
var ds=this.id('dataSetQuery');
var cur=ds.getData('#');
cur.clearData();
var form=this.id('queryForm');
form.set('entity',{});
-----------------------------------------------
设置几列属性
cols:*,*,*
模式窗口:modal:true
--------------------------------
界面布局
Panel
所有使用到的控件的id或者name,或者caption某一项必须起名称,要设置,不要留空
--
首页面添加按钮事件
 var dataset = view.id("dataSetAddForm");
 dataset.insert();
    var dialog = view.id("dialogMissionAdd");
    dialog.show();
-------------------------------------------
-----------------------------------
首页面编辑onclick
var record = view.get("#dataSetOcmGoalsManager").getData().getFirst();
var id= record.get("ID");
if(record != null)
{
 //只能修改已发布
  var ds = view.id("dataSetAddForm");
        ds.set("parameter",{P_ID: id}).flushAsync();
  var dialog = this.id("dialogGoalsEdit");
  dialog.show();
}else{
  dorado.MessageBox.alert("没有可修改的数据!");
  return;
}
-------------------------------------------
选择我们所要编辑的页面
//获取当前用户选中的一行数据
var ds = this.get("#dataSetOcmGraphCard").getData("#");
//没有数据
if (typeof(ds) == "undefined") {
    dorado.MessageBox.alert("没有可修改的数据!");
    return;
}else {
    var id = ds.get("id");
    if (id != null) {
        //只能修改已发布
        var ds = view.id("dataSetEditForm");
        ds.set("parameter",{
            Card_Id: id
        }).flushAsync();
        var dialog = this.id("dialogEditCard");
        dialog.show();
    }
}   

--------------------------------------------
---首页弹出页面过滤状态为0 的数据展示出来
var ds = view.id("dataSetPubData");
ds.set("parameter",{P_DATA_STAT:0}).flushAsync();
var dialog = view.id("dialogMissionPub");
dialog.show();
----------------------
Action
删除的action子集属性
updateAction控件设置属性dataPath是:[#current];
保存和修改是同一个Action,子集是属性dataPath是:!DIRTY_TREE
dataResolver:ocmMissionManagerAction#deleteBatch
类里边注解用@DataResolver
executingMessage:正在保存
successMessage:
控件的子集updateItem:
子集属性:dataPath:[#current]
dataSet:dataSetPubData
--------------------------------------
添加页面的保存按钮onclick事件:
---这里没有像后台传入多余的参数直接绑定action后台执行保存
var data = view.get("#dataSetAddForm.data:#");
var mission = data.get("MISSION");
var hope = data.get("HOPE");
if(typeof(mission)== "undefined" || typeof(hope)== "undefined"){
 dorado.MessageBox.alert("请确保【企业使命】和【企业愿景】字段值不为空");
 return;
}else{
 mission = mission.replace(/(^\s*)|(\s*$)/g, "");
    hope = hope.replace(/(^\s*)|(\s*$)/g, "");
}
if((mission == null || mission == "" || typeof(mission)== "undefined") || (hope == null || hope == "" || typeof(hope)== "undefined")){
 dorado.MessageBox.alert("请确保【企业使命】和【企业愿景】字段值不为空");
 return;
}

var action = view.id("addAction");
var dialog = view.id("dialogMissionAdd");
action.execute(function(){dialog.hide();});    
-------------------------------------------
添加页面发布事件,向后台传入了参数值,处理后返回关闭窗体
var data = view.get("#dataSetAddForm.data:#");
var mission = data.get("MISSION");
var hope = data.get("HOPE");
if(typeof(mission)== "undefined" || typeof(hope)== "undefined"){
 dorado.MessageBox.alert("请确保【企业使命】和【企业愿景】字段值不为空");
 return;
}else{
 mission = mission.replace(/(^\s*)|(\s*$)/g, "");
    hope = hope.replace(/(^\s*)|(\s*$)/g, "");
}
if((mission == null || mission == "" || typeof(mission)== "undefined") || (hope == null || hope == "" || typeof(hope)== "undefined")){
 dorado.MessageBox.alert("请确保【企业使命】和【企业愿景】字段值不为空");
 return;
}
//传入后台json数据
var dataValues={
 mission:data.get("MISSION"),
 hope:data.get("HOPE"),
 dataStat:"5"
};
dorado.MessageBox.confirm('您确定发布本信息么?',function(){
 var action = view.id("pubAction");
 var dialog = view.id("dialogMissionAdd");
 action.set("parameter",dataValues).execute(function(result){
     //主界面修改后刷新主数据
     view.id("dataSetOcmMissionManager").flushAsync();
  dialog.hide();
       });
 
 }
)
-----------------------------------------------------
添加页面取消按钮
dorado.MessageBox.confirm('您尚未保存数据,【确认】将不保存数据?',function(){
 var dataset = view.id("dataSetAddForm");
 dataset.getData("#").cancel();
 view.id("dialogMissionAdd").hide();
 }
)
----------------------------------------
编辑页面保存按钮事件:
var data = view.get("#dataSetAddForm.data:#");
var mission = data.get("MISSION").replace(/(^\s*)|(\s*$)/g, "");
var hope = data.get("HOPE").replace(/(^\s*)|(\s*$)/g, "");
if((mission == null || mission == "") || (hope == null || hope == "")){
 dorado.MessageBox.alert("请确保【企业使命】和【企业愿景】字段值不为空");
 return;
}

var action = this.id("addAction");
var dialog = this.id("dialogMissionEdit");
action.execute(function(){
 dialog.hide();
 //主界面修改后刷新主数据
 view.id("dataSetOcmMissionManager").flushAsync();
 //发布页面编辑完成后刷新发布页面数据
 view.id("dataSetPubData").flushAsync();
 });    
------------------------------------------------
dorado.MessageBox.confirm('您尚未保存数据,【确认】将不保存数据?',function(){
 var dataset = view.id("dataSetAddForm");
 dataset.getData("#").cancel();
 view.id("dialogMissionEdit").hide();
 }

----------------------------
发布页面的发布按钮事件
封装了一个json,向后台传了数据id,mession,hope三个字段的值后台处理后返回刷新数据
var data = view.get("#dataSetPubData.data:#");
var dataValues={
 id:data.get("ID"),
 mission:data.get("MISSION"),
 hope:data.get("HOPE"),
 dataStat:"5"
};
dorado.MessageBox.confirm('您确定发布本信息么?',function(){
 var action = view.id("pubAction");
 var dialog = view.id("dialogMissionAdd");
 action.set("parameter",dataValues).execute(function(result){
     dialog.hide();
   //主界面修改后刷新主数据
   view.id("dataSetOcmMissionManager").flushAsync();
   //发布页面编辑完成后刷新发布页面数据
   view.id("dataSetPubData").flushAsync();
  
       });
 
 }
)
-----------------------------
发布页面上的编辑事件

//当前行数据ID
var currentId = view.get("#dataSetPubData.data:#").get("ID")
//用于判断发布页面时候存在数据
var record = view.get("#dataSetPubData").getData().getFirst();
//实际也可以通过record.get("ID");取到当前选中数据的ID
if(record != null)
{
 //只能修改已发布
  var ds = view.id("dataSetAddForm");
        ds.set("parameter",{P_ID:currentId}).flushAsync();
  var dialog = view.id("dialogMissionEdit");
  dialog.show();
}else{
  dorado.MessageBox.alert("没有可修改的数据!");
  return;
}
------------------------------------------

发布页面的删除事件
//当前行数据ID
var currentId = view.get("#dataSetPubData.data:#").get("ID")
//用于判断发布页面时候存在数据
var record = view.get("#dataSetPubData").getData().getFirst();
var dataArray = new Array();
if(record != null){
 dorado.MessageBox.confirm('您真的要删除吗?',function(){
  dataArray[0] = {id:currentId};
  view.get("#deleteAction").set("parameter",eval(dataArray));
  view.get("#deleteAction").execute(function(){
   // 刷新不回首页,只在当前页的方法。 
   var ds = view.id("dataSetPubData");
   ds.flushAsync();
  });
 });
 
 
}else{
 dorado.MessageBox.alert("没有可删除的记录");
 return;
}

view.id("dialogMissionPub").hide();

-----------------------------
编辑选中当前选中的进行编辑

//当前行数据ID
var currentId = view.get("#dataSetPubData.data:#").get("ID")
//用于判断发布页面时候存在数据
var record = view.get("#dataSetPubData").getData().getFirst();
if(record != null)
{
 //只能修改已发布
  var ds = view.id("dataSetAddForm");
        ds.set("parameter",{P_ID:currentId}).flushAsync();
  var dialog = view.id("dialogGoalsEdit");
  dialog.show();
}else{
  dorado.MessageBox.alert("没有可修改的数据!");
  return;
}
------------------------------------------------------------
dataTreeGrid

==
 dataTreeGrid 
 处理子部门级的数据,
 dataType的字段中有一个字段用于存储展开的子节点的ID
 例如:oldProcessDefinitions;字段的属性dataType:为集合[dataTypePlatformProcessDefinition]
 对应的dataSet的属性中
 dataProvider:avicit.bpm.processDefinitionManagerAction#findProcessDefinition2  找该节点下的子节点。
 dataType属性是一个集合:[dataTypePlatformProcessDefinition]
 loadMode:preload
 ===控件dataTreeGrid
 currentNodeDataPath:CURRENT_MENU
 dataSet:dataSetPlatformProcessDefinition
 dataType:dataTypePlatformProcessDefinition
 defaulticon: url(>skin>common/icons.gif) -260px -260px
 dynaRowHeight:true
 selectionMode:multiRows
 treeColumn:id  作为树型列的列名
 --------------------------
 绑定字段:BindingConfigs
 childrenProperty:oldProcessDefinitions
 expandLevel:2
 hasChild:true
 labelProperty:id----显示字段
 recursive;true
 -----------------
 currentNode : dorado.widget.tree.Node from TreeGrid当前节点。
 currentEntity : Object|dorado.Entity from TreeGrid当前数据实体。
 showFilterBar : boolean from TreeGrid[ReadOnly] 是否表格过滤栏。
highlightCurrentRow : boolean ( = true )from AbstractGrid高亮显示当前行。
highlightHoverRow : boolean ( = true )from AbstractGrid高亮显示鼠标悬停的行。
rowHeight : int ( = 18 )from AbstractGrid默认的行高。
headerRowHeight : int ( = 22 )from AbstractGrid默认的标题栏行高。
scrollMode : String ( = "lazyRender" )from AbstractGrid滚动模式。
fixedColumnCount : int from AbstractGrid最左边锁定的列数。
currentColumn : dorado.widget.grid.Column|String|int from AbstractGrid当前列。
dataColumns : dorado.widget.grid.DataColumn[] from AbstractGrid[ReadOnly] 
表格中所有数据列的数组。
selectionMode : String ( = "none" )from AbstractGrid选择模式。
selection : Object|Object[] from AbstractGrid表格中的当前选中项。
itemModel : dorado.widget.list.ItemModel from AbstractList[ReadOnly] 
 dragMode : String ( = "item" )from AbstractList[WriteBeforeReady] 
拖拽模式。
 dropMode : String ( = "insertItems" )from AbstractList[WriteBeforeReady] 
拖放模式。
nodes : dorado.util.KeyedList|[Object]|[dorado.widget.tree.Node] from AbstractTree子节点集合。
showLines : boolean from AbstractTree[WriteBeforeReady] 
是否显示连接树节点的线。
firstNode : dorado.widget.tree.Node from AbstractTree[ReadOnly] 
返回树中的第一个有效节点。
getCurrentItem (  ) : Object|dorado.Entityfrom AbstractGrid返回当前行所对应的数据。
 selectAll (  ) : voidfrom AbstractGrid全选。
 unselectAll (  ) : voidfrom AbstractGrid全部不选。
 selectInvert (  ) : voidfrom AbstractGrid反向选择。
 refreshSummary (  ) : voidfrom AbstractGrid刷新(即重新计算)表格中的汇总数据。
refresh ( boolean delay ) : voidfrom RenderableElement刷新此对象的显示。
 clearNodes (  ) : voidfrom AbstractTree清除树中的所有树节点。
refreshNode ( dorado.widget.tree.Node node ) : voidfrom AbstractTree刷新某树节点的显示。
 ---------------------------------------------------------------
exceptionHandlers
properties
key
id
version int
packageName
deploymentTime
deploymentDbid
isSuspended

imageResourceName
name
description
deploymentId
oldProcessDefinitions
designer
deployer

 insert ( dorado.Entity|Object [data] ) : dorado.Entityfrom DataSet向数据集中添加一条顶层记录。
 MESSAGE_REFRESH : int from DataSet通知监听器       需要进行数据刷新的消息。
 MESSAGE_DATA_CHANGED : int from DataSet表示        数据实体中的属性值发生变化的消息。
 MESSAGE_ENTITY_STATE_CHANGED : int from DataSet表示数据实体的状态变化的消息。
 MESSAGE_DELETED : int from DataSet表示         实体集合中 有数据实体   被删除的消息。
 MESSAGE_INSERTED : int from DataSet表示        实体集合中 添加了新数据实体的消息。
 MESSAGE_CURRENT_CHANGED : int from DataSet表示实体集合中  当前数据实体发生改变的消息。
 MESSAGE_REFRESH_ENTITY : int from DataSet通知监听器需要针对某个数据实体进行数据刷新的消息。

---
arg.dom.innerHTML= "<input id='operateKpibtn' name='operateKpibtn' type='button' value='编制积分卡' class='pbutton4' onclick='operateKPI()'>";

-------------------------------
编辑超链接
arg.dom.innerHTML="<a href =\"javascript:window.showDetilInfo('"+arg.data.get("ID")+"')\">查看</a>"
show = ziDuan.substring(0,weiZhi) + "...";
---------------------------------
onReady:第一次加载页面时起作用,以后都不加载。
edit_overall_goals
alert(document.getElementById("edit_overall_goals"));
onRenderCell : b当表格控件渲染其中的某个数据单元格时触发的事件。
onDataChange :EntityDataType当某个此类型的dorado.Entity中的属性值被改变后触发的事件。


var dialog = view.id("dialogGoalsEdit");
dialog.hide();
return false;
--------------------------------
删除成功后执行成功
var ds= this.id("datasetTest");
var entityList=dataSet.getData();
entityList.clear();
entityList.gotoPage(entityList.pageNo);
-----------------------------
设置弹出页的路径。。加两参数
view.get("#editSysUserIframe").set("path","${web.contextPath}/avicit/platform6/modules/system/sysuser/view/sysuser_edit.d7?sysUserId=" + currentData.get("id") + "&flag=read");
-------------------流程启动按钮事件--只需要更改dataSet和formCode
packages:bpmclientjs,bpmclientcss
//获取当前用户选中的一行数据
var ds = this.get("#dataSetStudyBusinessTrip").getData("#");
//将数据转换为JSON格式的字符串,该字符串传递给流程启动函数
var json = ds.toJSON();
//表单代码定义,这个表单代码必须在表单管理中已经定义
var formCode = "StudyBusinessTrip";
//打开流程选择对话框
var processDef = new StartProcessByFormCode();
processDef.SetFormCode(formCode);
StartProcessByFormCode.prototype.doStart = function(pdId){
 /* 将表单代码、业务数据、流程定义ID提交到Java端 */
 var data = "processDefId="+pdId+"&formCode="+formCode+"&jsonString="+JSON.stringify(json);
 jQuery.ajax({
  type : "POST",
  data : data,
  url : getPath() + "/platform/bpm/clientbpmoperateaction/dostart",
  dataType : "json",
  success : function(msg) {
   if(msg!=null&&msg.error!=null){
    window.alert(msg.error);
    return;
   }else{
    var processInstanceId = msg.processInstanceId; //流程实例ID
    var taskUrl = msg.taskUrl; //待办URL
    //打开待办审批页面
    parent.window.location.replace(getPath()+"/"+taskUrl);
   }
  }
 });
};
processDef.start();
--------------------------------------------------------------------------
---详细viewonCreate事件
详细toolbar---HtmlContainer[dock]设置属性:id为toolbar_content
content:<div id="bpmToolBar"></div>
contentOverFlow:hidden
流程意见
HtmlContainer:id为bpmidea_content
<div id="idea"></div>
--------------------------------------
create = function(){
 view.get("#updateAction").execute();
}

window.getFormDataJson = function(){
 var ds = view.get("#dataSetStudyBusinessTrip").getData("#");
 var jsonString = dorado.JSON.stringify(ds.toJSON());
 framework.variable = jsonString;
};
---还有onReady事件
self.get("#dataSetStudyBusinessTrip").insert();
//画流程按钮部分
var entryId = "${param.entryId}";
var executionId = "${param.executionId}";
var taskId = "${param.taskId}";
var formId = "${param.id}";
var toolbar = new ToolBar(entryId,executionId, taskId,'bpmToolBar', formId);
//画流审批意见
new IdeaManage.getIdea(entryId);
-----------------------------------------------------------------
@Override
public StudyBusinessTrip getStudyBusinessTripById(String id) {
StudyBusinessTrip h = (StudyBusinessTrip)hibernateDao.getSession().get(
 StudyBusinessTrip.class, id);
return h;
}

------------------------------
首页面跳转详细页---标题链接跳转
jQuery(arg.dom).empty();
jQuery(arg.dom).xCreate({
    tagName: "A",
    href:"#",
    content:arg.data.get("USERID"),
 style:"font-size:13px",
    onclick: function() {
  var id =arg.data.get("ID");
  view.get("#detailIframe").set("path","${web.contextPath}/avicit/platform6study/bpm/studybusinesstrip/view/StudyBusinessTripDetail.d7?id="+id);
  view.get("#dialogDetail").show();
    }
});
 --------------------
 ------------配工作流-------首页dataSet上要配属性:studyBusinessTripAction#getDataWithBpmEntryV
导入四个包[CompositeStudyBusinessTrip]

import org.springframework.beans.factory.annotation.Autowired;
import com.bstek.dorado.jdbc.iapi.IJdbcDao;
import com.bstek.dorado.jdbc.iapi.annotation.JdbcDaor;
import com.bstek.dorado.data.provider.Criteria;
 @Autowired
 @JdbcDaor
 private IJdbcDao jdbcDao;
 @DataProvider
 public void getDataWithBpmEntryV(Criteria criteria, Object parameter, Page page) {
  jdbcDao.page("CompositeStudyBusinessTrip", criteria, parameter, page);
  Collection<Record> records = page.getEntities();
  for (Record r: records){
   String activityNames = "测试A";
     //bpmToolService.getActivityNamesByFormId(r.getString("ID").toString()) ;
   String state = "已经完成";
     //bpmToolService.getProcessStateByFormId(r.getString("ID").toString()) ;
   r.put("ACTIVITY_NAMES", activityNames);
   r.put("ACTIVITY_STATE", state);
  }
 }
 -----------------获取控件现在只让用view.get("#dataset")------------
 接收后台return id;的值拿到放入dataSet中
var dataset= view.get("#dataSetOcmGraphCard");
var data =dataset.getData("#");
data.set("ID",arg.result);
view.get("#dataSetOcmGraphCard").getData("#").set("ID",arg.result);
-----------------
主子表加载第一条:给子表一个主表的ID
var id = view.get("#dataSetOcmGraphCard").getData().getFirst().get("ID");
var ds = view.id("dataSetProfession");
        ds.set("parameter",{ID:id}).flushAsync();
-----------END--------------------
---
---获得当前dataGrid行的数据
var table=view.get("#MainData");
var currentId=table.getCurrentItem().get("ID");
----
dataGrid 对指定的列进行排序
public sort (column ,desc)
对指定的列中的数据进行排序。
--
table.highlightItem();默认高亮显示当前行
------------------------view中通过joson封装数据对象,必须有ID,否则后台映射不到(Map2Pojo)
@Expose
 public void operateOcmCardPub(Map<String, Object> values)throws Exception {
  OcmGraphCard ocmGraphCards = new OcmGraphCard();
  PojoUtil.Map2Pojo(values, ocmGraphCards);
  ocmGraphCardService.publishUpdateOcmCardPub(ocmGraphCards);
 }
------------------- MainData
 var table=view.get("#MainDataprofession");
var id=table.getCurrentItem().get("ID");
var sign=table.getCurrentItem().get("IS_SIGN");
var entryId=table.getCurrentItem().get("entryId");
var executionId=table.getCurrentItem().get("executionId");
var taskId =entryId;
var act =1;//操作 =1;查看详情= 2
if((entryId == null || entryId == "" || typeof(entryId)== "undefined")){entryId="";}
if((executionId == null || executionId == "" || typeof(executionId)== "undefined")){executionId="";}
if((taskId == null || taskId == "" || typeof(taskId)== "undefined")){taskId="";}
view.get("#operateKpiIframe").set("path","${web.contextPath}/avicit/ocm/kpimanager/ocmkpiwrite/view/OcmKpiWrite.d7?id="+id+"&sign="+sign+"&act=1&entryId="+entryId+"&executionId="+executionId+"&taskId="+taskId);
view.get("#dialogOperateKpi").show();
--------------------------
表字段的拼接显示数据
var YEAR_FROM =arg.data.get("YEAR_FROM");
var YEAR_TO = arg.data.get("YEAR_TO");
arg.dom.innerHTML = YEAR_FROM +"-"+ YEAR_TO;
----
页面参数接收
$isSign = "${request.getParameter('sign')}";

var flag="${param.flag}";//1公司级;2专业级

---去空格
overall_goals =overall_goals.replace(/(^\s*)|(\s*$)/g,"");
--
typeof(overall_goals) == "undefined"

--------全局js方法调用
$SendWarnMessage('dataSetOcmGraphCard',data_State);
 dorado.MessageBox.alert("状态为【"+$WarnMessage+"】的数据不允许变更!");
 return;

-
var dsMain = this.get("#dataSetOcmGraphCard").getData("#");
var MainCard_state=dsMain.get("DATA_STAT");
if(MainCard_state>=5&&MainCard_state!=16){//首先满足公司级state>=5且不等于16
 if(data_State==0){//在满足公司级前提下,只允许编辑专业级的草稿
 
   }else{
 $SendWarnMessage('dataSetProfession',data_State);
 dorado.MessageBox.alert("状态为【"+$WarnMessage+"】的数据不允许变更!");
 return;
    }
}else{
 $SendWarnMessage('dataSetOcmGraphCard',MainCard_state);
 dorado.MessageBox.alert("状态为【"+$WarnMessage+"】的数据不允许变更!");
 return;
}

----------------------文字链接--------------------
arg.dom.innerHTML="<a href =\"javascript:window.showMainFileUpload('"+arg.data.get("ID")+"')\">浏览</a>"

----------

readWordTemplet
readAttachTemplet

editWordTemplet
editAttachTemplet

updateWordTemplet
updateAttachTemplet

wordTempletDetailManage
attachTempletDetailManage


attachTempletIFrame
dialogAttachTemplet

dataGridSysAttachTemplet


dialogEditForm
dataSetMainSubEditForm

dataSetOcmStrategicPlanAddForm
dataSetOcmStrategicPlan

dataTypeSysAttachTemplet

dataTypeSysAttachTempletDetail
----------------------------
dataSetSysAttachTemplet
dataSetSysAttachTempletDetail

dataSetSysAttachTempletQuery
dataSetSysAttachTempletDetailQuery

dialogFileUpload
dialogSysAttachTempletAdd

avicit.ocm.ocmstraplanmain.domain.SysAttachment
avicit.ocm.ocmstraplanmain.domain.SysAttachTempletDetail
sys_att什么表


sysWordTempletAction#getSysWordTempletListByPage

sysAttachTempletAction#getSysAttachTempletListByPage
sysAttachTempletDetailAction#getSysAttachTempletDetailListByPage

SysAttachTempletServiceImpl

buttonAddSysAttachTemplet
updateActionSaveSysAttachTemplet


dataSetSysAttachment

ATTACH_NAME VARCHAR2(200) N   
PARENT_TABLE_ID VARCHAR2(30) Y   
PARENT_REGISTER_ID VARCHAR2(32) N   
ATTACH_BLOB BLOB Y   
ATTACH_TYPE VARCHAR2(20) Y   
ATTACH_SIZE NUMBER(20) Y 


${web.contextPath}/avicit/platform6/modules/system/sysfileupload/view/sysfileupload.d7  
uploadDialog
uploadFileIFrame


http://localhost:8080/1/avicit/ocm/ocmstraplanmain/view/SysAttachment.d7?
id=8a58bca33f756dd9013f756f4aee000a
&BusinessTableName=OCM_STRA_PLAN_MAIN


fileuploadBusinessId
fileuploadBusinessTableName


dataSetSysAttachment
:P_PARENT_REGISTER_ID

 var ds = view.get("#dataSetSysAttachment");
        ds.set("parameter",{
            P_PARENT_REGISTER_ID: '${param.id}'
        }).flushAsync();

-------设置默认值
view.get("#dataSetOcmGraphCard").getData("#").set("YEAR_FROM",2013);
view.get("#dataset").getData("#").set("字段",值);
------------处理日期格式-----
var  data=new Date();
var year=data.getFullYear();
view.get("#dataSetOcmGraphCard").getData("#").set("YEAR_FROM",year-5);
view.get("#dataSetOcmGraphCard").getData("#").set("YEAR_TO",year);
var month=data.getMonth()+1;
var day=data.getDay();
view.get("#dataSetOcmGraphCard").getData("#").set("REVIEW_DATE",data.getFullYear()+"-"+month+"-"+day);
---URL
${request.getContextPath()}/dorado/uploader/fileupload
---
return (SysFileUpload)getSession().get(SysFileUpload.class,id);

/*
 * 清空
 */
$clearUploadQueue = function(){
 var uploadAction = view.get('#batchUpload');
 view.get("#dataSetFiles").get("data").each(function(entity){
  uploadAction.removeFile(entity.get('id'));
 });
 view.get("#dataSetFiles").clear();
}
----------------------------
平台上传组件的路径
${web.contextPath}/avicit/platform6/modules/system/sysfileupload/view/sysfileupload.d7
----------判断WORD
var ds= view.get("#dataSetSysAttachment").getData("#");
 var docType=ds.get("attachName");
 docIndex=docType.indexOf(".");
    docType=docType.substring(docIndex+1);
 if(docType=="doc"||docType=="docx"){
  return docType
 }else{
     return;
 }
--------------dataSetFiles------------


/**
 var dataset = view.id("dataSetOcmStrategicPlanAddForm");
 dataset.insert();
 //每次进入添加页面情况dataset值
    view.get("#dataSetMainSubAddForm").clear();
    var dialog = view.id("dialogAddForm");
    dialog.show();
   **/ 

view.get("#addOcmStrategicframe").set("path","${web.contextPath}/avicit/ocm/ocmstraplanmain/view/OcmStraPlanMainAdd.d7");
    view.get("#dialogAddStrategic").set('caption','添加战略规划').show();
  
  -----------------------------------------
-
//修改dataset中数据的状态&#xD;
var ds = view.get("#dataSetTrainProjectDingr").getData("#");
ds.setState(dorado.Entity.STATE_NEW);
--------------------------------
var id =  view.id("dataSetOcmStrategicPlanEditForm").getData("#.ID");
var name =  view.id("dataSetOcmStrategicPlanEditForm").getData("#.STRATEGIC_PLAN_NAME");
--------------------------------------

/************显示浏览附件的表格列********************/
window.showAttachColumn = function(){
 var addMainData= view.get("#AddMainData").getColumn("attachFileMain");
   if(typeof(AddMainData)!="undefined"){
    obj.set("visible",true);
   }
   var addSubData view.get("#AddSubData").getColumn("attachFileSub");
    if(typeof(addSubData)!="undefined"){
    addSubData.set("visible",true);
   }
}
/********************************/
  
  //update chens 
 String findSqlmain = "select id from OCM_STRA_PLAN_MAIN where ocm_strategic_plan_id= '"+id;
 List  listmain = hibernateDao.findBySQL(findSqlmain);
 if(listmain != null && listmain.size()>0){
  for (int i =0; i<listmain.size();i++){
   String updateId = listmain.get(i).toString();
  }
 }
  -----------------流程详细页关闭按钮-----
  if(parent.refreshDetail==null){
 parent.window.location="${web.contextPath}/avicit/platform6/modules/system/sysdashboard/index.jsp";
    return;
}
parent.refreshDetail()
---------------dropdown的items属性--property属性id-

${dorado.getDataProvider("sysRoleAction#getSysRoleList").getResult()}

onclose()事件中
var value = arg.selectedValue;
self._items.each(function(obj){
 if(value == obj.id){
  //arg.selectedValue = obj.roleName;
 }
});
------------------------
eMail 效验
// E-mail值检测
$isMailAddress = function (name){ 
 if(name=='' || typeof(name) == 'undefined' || name == null)return true;
 i = name.indexOf("@");
 j = name.lastIndexOf("@");
 if(i == -1)
  return false;
 if(i != j)
  return false;
 if(i == name.length)
  return false;
 return true;
}
=-----form表单重新赋值
view.get("#dataFormAddKPI").get("entity").set("WEIGHT", weight);;
 view.set("#dataFormAddKPI.entity");
--------Tab标签的显影
var formcodepara="${param.formcodepara}";
if(formcodepara=='A'){
view.get("#tabControl2").getTab("actProShow").set("visible",true);
}else{
 view.get("#tabControl2").getTab("actProShow").set("visible",false);

---------------------------------------------------------
--------网络摘抄,待验证---在一个view中通过js代码使得另一个view的tabControl动态创建tab
其中---两个view
其中一个view的tabControl里面包含一个IFrameTab,IFrameTab内包含另一个view;子view中的
dataGrid的一个dataColumn渲染了一个超链接,要实现点击链接,在父页面的TabControl中动态的创建
一个新的IFrameTab
------实现过程
在OnCellRender()里写如下代码:
   $(arg.dom).empty.xCreate({
     tagName:'A',
  href:'#',
  content:'Click Me'
   })
   
   $(arg.dom).off('click','A','**').on('click','A',function(){
             anotherView.get("tabcontrolId").addTab(new dorado.widget.tab.IFrameTab({name:'',caption:'',path:''}))
   })
---------------------------------------------------------------------------
   ///获得中文字符长度begin //////////
String.prototype.getBytes = function(){
    var cArr = this.match(/[^\x00-\xff]/ig);
    return this.length + (cArr == null ? 0 : cArr.length);
}
///获得中文字符长度 end//////////

 

///校验字段的长度 begin//////////
lengthValidate = function(fields, describe, length){
 var flag = true;
 var data = view.get("#dataSetOcmKpiWrite.data:#");
 var field = data.get(fields);
 if(field != null){
  if(field.getBytes() > length){
   dorado.MessageBox.alert("【" + describe + "】文本内容过多,长度应小于" + length + "个字符!");
   flag = false;
  }
 }
 return flag;
}
///校验字段的长度 end//////////
///校验名称长度 begin 2013-10-18 chens/////////
//在dataType里边这样写
var name = arg.entity.get("PLAN_NAME");
if(name != null){
 if(name.getBytes() > 180){
  dorado.MessageBox.alert("【总规划名称】文本内容过多,长度应小于180个字符!");
  return;
 }
}
///校验名称长度 end/////////
---------------------------------------------------------------------------------------

var type = arg.data.get("TYPE");
var change =  arg.data.get("CHANGE_STATE");
if(type != 3){
 if(change == "A"){//绿色
  arg.dom.style.background = "#37FF37" //"#37B44A" 
 }else if(change == "U"){//蓝色
  arg.dom.style.background = "#C1EFEF"//"#00BFF3" 
 }else if(change == "D"){//红色
  arg.dom.style.background = "#FDDFED"//"#EE1D24" 
 }else{
  arg.dom.style.background = "" 
 }
}else{
 arg.dom.style.background = "" 
}
arg.processDefault = true;
-----------------------------------------------------
遍历树结构的表
SELECT *
  FROM ocm_kpi_write_act_v
 WHERE ocm_graph_card_id = '8a58bc943f9d7e35013f9d7fb2dc0003'
CONNECT BY PRIOR ID = parent_id
 START WITH parent_id = '-1';

select *
  from ocm_kpi_write_act_vs m
 where m.OCM_GRAPH_CARD_ID = '8a58bc943f9d7e35013f9d7fb2dc0003';
------------------------------------------------------------------
SELECT * 
  FROM OCM_KPI_WRITE_V 
  WHERE ocm_graph_card_id='8a58bc883f884a4d013f88666ad90006' 
 CONNECT BY PRIOR ID = parent_id 
 START WITH parent_id ='-1'
  --8a58bc943f9d7e35013f9d7fb2dc0003
  
select * 
  from ocm_kpi_write_vs t 
  where t.OCM_GRAPH_CARD_ID ='8a58bc943f9d7e35013f9d7fb2dc0003';

  OCM_KPI_WRITE_V
  
  OCM_KPI_WRITE_VS
  ----------------------------------------------
-----------dataType属性beforeDataChange------判断开始日期小于结束日期
switch(arg.property){
 case "ACT_START_DATE" :
  var endDate = arg.entity.get("ACT_END_DATE")
  var startDate = arg.newValue;
  var ds = view.id("dataSetOcmActPlan").getData("#");
  if(startDate>endDate){
   dorado.MessageBox.alert("字段【开始时间】不能大于字段【结束时间】");
  arg.entity.set("ACT_END_DATE",arg.newValue)
  }
 break;
 case "ACT_END_DATE" :
  var startDate = arg.entity.get("ACT_END_DATE")
   var endDate = arg.newValue;
   var ds = view.id("dataSetOcmActPlan").getData("#");
   if(startDate>endDate){
    dorado.MessageBox.alert("字段【结束时间】不能小于字段【开始时间】");
   arg.entity.set("ACT_START_DATE",arg.newValue)
   }
 break;
}
------------------------------------------------------------------------------------
dataTree的宽窄属性:position:200;
--------------从session中获取当前登录人的部门ID-------------------------------------------------------------------
public String getSessionDeptId(){
  return SessionHelper.getCurrentDeptId();
 }
String userId = SessionHelper.getLoginSysUserId();
  String ip = SessionHelper.getClientIp();

----------------------------------------
部门ID转NAME---:要注意名字的统一
@Transient
 public String getHrDeptName() {
  SysDeptLoader sdLoader = SpringFactory.getBean("SysDeptLoader");
  String hrDeptName = sdLoader.getSysDeptNameBySysDeptId(this.getHrDeptId(), "zh_CN");
  return hrDeptName;
 }
--------------------------------
POJO首页返回流程状态
---
@Autowired
 @JdbcDaor
 private IJdbcDao jdbcDao;
 
 @Autowired
 CommonHibernateDao commonHibernateDao;
 
 @DataProvider
 public void getDataWithBpmEntryV(Criteria criteria, Object parameter, Page page) {
  jdbcDao.page("CompositeOcmGraphCard", criteria, parameter, page);
  Collection<Record> records = page.getEntities();
  for (Record r: records){
   String activityNames=new BpmEntity().getEntityActivityNamesByFormId(commonHibernateDao,r.getString("ID").toString());
   /*//String activityNames = "测试综合图卡";
   bpmToolService.getActivityNamesByFormId(r.getString("ID").toString()) ;
   //String state = "已经完成";
   bpmToolService.getProcessStateByFormId(r.getString("ID").toString()) ;*/
   String state = new BpmEntity().getEntityStateByFromId(commonHibernateDao,r.getString("ID").toString());
   //流程实例ID
   String entryId =  new BpmEntity().getEntityIdByFromId(commonHibernateDao, r.getString("ID").toString());
   String executionId =  new BpmEntity().getExecutionId(commonHibernateDao, r.getString("ID").toString());
   String taskId =  new BpmEntity().getTaskId(commonHibernateDao, r.getString("ID").toString());
   
   r.put("ATTRIBUTE_10", entryId);
   r.put("ACTIVITY_NAMES", activityNames);
   r.put("ACTIVITY_STATE", state);
   r.put("ATTRIBUTE_09", executionId);
   r.put("ATTRIBUTE_08", taskId);
  }
 }
--------------------------------------------------------------------- 
var data = view.get("#dataSetAddForm.data:#");
--------------------------------

dataTree树上高亮显示
---------------
var ocmKpiWriteId =view.get('#dataSetOcmActPlan').getData('#').get('ocmKpiWriteId');
var firstNode =view.get("#dataTree").get('firstNode');
queryNode(firstNode,true);
return true;
------------------树节点上取值-----
   var currentEntity = this.id("treeGrid").get("currentEntity");
if (currentEntity) {
 //根节点和战略角度节点不能被删除
        if (currentEntity.get("PARENT_ID") !=-1 && currentEntity.get("TYPE") !="3" ) {
---
//递归查找树上对应节点  mac2013-7-10
function queryNode(node,sign){
 if(sign){
  var nodes=node.get('nodes');
  nodes.each(function(obj){  
       var OCM_KPI_WRITE_ID=obj.get('data').get('OCM_KPI_WRITE_ID');
   //alert(obj.get('data').get('NAME')+"OCM_KPI_WRITE_ID---"+OCM_KPI_WRITE_ID+"---"+ocmKpiWriteId);
          if(obj.get('data').get('OCM_KPI_WRITE_ID')==ocmKpiWriteId){
     //alert(obj.get('data').get('NAME')+'!!!!!');
    obj.highlight(); 
    return false;
    }else{
     var sd=queryNode(obj,true);
    }
  });
 }else{
  //alert(1);
  return false;
 }
}
----------------------------------------------------------
table行高亮显示
--
var change = arg.data.get("CHANGE_STATE");
if (change == "A") {//绿色
    arg.dom.style.background = "#fff100" //"#37B44A" 
}else if (change == "U") {//蓝色
        arg.dom.style.background = "#00FF00"//"#00BFF3" 
}else if (change == "D") {//红色
            arg.dom.style.background = "#EE1D24" 
}else {
  arg.dom.style.background = ""
}
arg.processDefault = true;
----------------操作,详细链接--------------------------------------
var id = arg.data.get("id");

jQuery(arg.dom).empty();
jQuery(arg.dom).xCreate({
    tagName: "A",
    href: "#",
    content: "详细",
    style: "font-size:13px",
    onclick: function(){
  view.get("#detailIframe").set("path","${web.contextPath}/avicit/ocm/kpimanager/ocmactplan/view/actsubproject/OcmActSubProjectDetail.d7?isFlow=true&id=" + id);
  view.get("#dialogDetail").show();
 }});
------------------------------------------------
var button1 = $DomUtils.xCreate({
 tagName: "button",
 id:"button1",
 content: "Click Me",// 定义按钮的标题 
 onclick: function(){
  // 定义onclick事件    
  alert("Button clicked.");
 }},{
 tagName: "button",
 content: "Click You",// 定义按钮的标题 
 onclick: function(){
  // 定义onclick事件   
 }}  
);
-------------------------------------------
//找到dataTreeGrid的property列绑定onGetCellEditor监听事件
view.get("#dataTreeGrid1").findColumns(property)[0].set({
    trigger: view.get("#recommendDropdown"),   //绑定下拉框
    onGetCellEditor :function(self, arg){
        //获取ajax对象
        var ajaxGetListAction = view.get("#ajaxGetDropDownItem");
       
        //设置ajax请求参数
        ajaxGetListAction.set("parameter",param);

        //执行ajaxAction请求获取下拉框值
        ajaxGetListAction.execute(function(result){
        view.get("#recommendDropdown").set("items",result);
        });
    }
});
----------------------------
onGetCellEditor :function(self, arg){
    arg.editor.set("trigger",view.get("#recommendDropdown"))
 }
-----------------
---------------------------table设置某一列的只读---------
 view.get("#MainData").findColumns("YEAR_FROM")[0].set({
   // trigger: ,   //绑定下拉框
    onRenderCell :function(self, arg){
 var v= arg.data.get("YEAR_FROM");
       if(v=='2012'){     
    arg.cellEditor.createEditorControl();//获取对应的Editor对象
  // arg.editor.set("readOnly",true);
    }else{
    // arg.editor.set("readOnly",false);
    }
    }
});
--------------------------------------------
jQuery(arg.dom).empty();
jQuery(arg.dom).xCreate({
    tagName: "A",
    href:"#",
    content:arg.data.get("YEAR_FROM"),
 style:"font-size:12px;color:red"
});
----------------------------------
---js替换访问路径------------------
$ReportRoot="rqreport/reportJsp/showReport.jsp?raq=/subjectOcmCardReport.raq&cardId=";
var rootPath='${web.contextPath}';
var ServerNAME=rootPath.substring(1);
localPath=rootPath.replace(ServerNAME,$ReportRoot);
-------------------------------------------

----------------------------------------
dynaRowHeight : boolean from AbstractGrid[WriteBeforeReady] 
是否支持动态行高的功能。
----------------------------------------------
stretchcolumnsmode
表格列的宽度调整模式
---------------

--dataTreeGrid的Column的属性onRenderCell事件
var context = {};
var status = arg.data.get("planType");
var png="";
if(status == '晴天'){
 png = "qing";
}else if(status == '阴天'){
 png = "yin";
} else if(status == '大雨'){
 png = "yu";

} else if(status == '多云'){
 png = "duoyun";
} else{
 arg.dom.innerHtml ="<a href=#>"+status+"</a>";
}
arg.dom.innerHTML="<img src ='../../../../images/"+png+".png' height = '20px' alt ="+status+">"+status;
dorado.TipManager.initTip(arg.dom.parentNode, {
  content : {
   tagName : "IMG",
   src : $url("../../../../images/"+png+".png"),
   style : "width: 128px; height: 128px; margin: 8px"
  },
  arrowDirection : "top",
  arrowAlign : "left"
 });
------------------------------------
table判断当前数据是否存在
var table = view.get("#MainDataprofession");
if(null!=table.getCurrentItem()){ 
-------------------------------------
view.get("#menuOrg").show({
 position:{
  left:arg.event.pageX,
  top:arg.event.pageY
 }
});
-------------------------------
平台选人页
[{loginName:CREATED_BY},{name:CREATED_BY_NAME}]


selectUser_Trigger
---------------------、
树节点onRenderNode()事件
var selected = arg.node.get("data.searchSelectedFlag");
arg.dom.style.fontWeight = selected ? "bold" : "";
arg.dom.style.background = selected ? "#3399ff" : "";
arg.dom.style.padding = selected ? "0 4px" : "";
arg.dom.style.color = selected ? "white" : "";
arg.processDefault = true;
-------------------------------------------------
El表达式
两种EL表达式
–静态EL表达式:${expression} ,在创建目标对象癿过程中一次性癿求值。
–劢态EL表达式:

expression?$3x2=6$3>2=true$empty(foo)empty()null$foo>0?"enabled":"disabled"$foo["bar"]$foo.bar]mapbardorado线使nullnullenv$env.JAVAHOME$env["JAVAHOME"]systemJavaSystem.getProperties()configureDorado7$configure["runMode"]?线Http线使argumentView.xmlcontext线DoradoContextctxDoradoContextgetAttribute访$ctx["foo"]$context.getAttribute("foo")utilcom.bstek.dorado.core.el.ExpressionUtilsObjectjavadocrequestHttpServletRequestreqrequestgetAttribute访$req["foo"]$request.getAttribute("foo")paramrequestgetParameter访$param["foo"]$request.getParameter("foo")sessionHttpSessionservletContextSerlvetContextwebcom.bstek.dorado.web.WebExpressionUtilsObjectjavadoc?EL
{this}或$${this.foo}
–此种隐式变量通常只用在DataType癿Reference属性中。
this表示当前正在处理癿数据实体对象,即系统正在尝试获取该数据实体对象癿Reference属性癿值。
–此种EL表达式癿实际求值范围是在Client端癿JavaScript环境中
------------------------------------------------------------------
------------布局
Dorado7目前提供癿布局管理器:
–DockLayout 停靠式布局
–AnchorLayout 锚定式布局
–FormLayout 表单时布局
–HBoxLayout 水平箱式布局
–VBoxLayout 垂直箱式布局
–NativeLayout (其实什么都丌做癿布局)
-----------------------------------------------
----添加事件
一个事件下可添加多个监听函数,可使用下面癿两种方法。
button1.set("onClick", function(self) {
// 此方法只能定义一个监听函数
});

button1.addListener("onClick", function(self) {
//此方法可以为一个事件添加多个监听函数
});
?Dorado7中所有癿事件都只支持self和arg返两个事件参数。
–self总是激发事件癿对象自身。
–arg癿类型不具体癿事件类型有关,很多情况下是一个JSON对象,其中可能包含有非常丰富癿传入信息。

-----------------------------------------
---processDefault----
很多beforeXXX事件癿arg参数中都支持一个名为processDefault癿可写属性,用亍通知系统是否要执行该事件所代表癿后续操作。
employeeDataType.addListener("beforeRemove", function(self, arg) {
if (arg.entity.get("married")) {
dorado.MessageBox.alert("已婚癿员工丌能被初除!");
arg.processDefault = false;
}
});
?抛出一个异常,同样可以达刡类似癿目癿。
employeeDataType.addListener("beforeRemove", function(self, arg) {
if (arg.entity.get("married")) {
throw new dorado.Exception("已婚癿员工丌能被初除!");
}
});
-------------------------------------
---手动创建一个button按钮拥戴了特殊的$type类型
例如下面癿代码也可以用来创建一个Button。
{
$type: "Button",
caption: "Say Hello",
onClick: function(self, arg) {
dorado.MessageBox.alert("Hello!");
}
}
------------------------------
获取控件推荐的方法
–this.get("#buttonOK") 今后推荐癿方法,原因是当你需要迕一步操作buttonOK时会非常方便。
例如this.get("#buttonOK.caption")可以直接获得Button癿caption属性。
-------------------------------
根据标签获得一批对象癿方法包括:
this.get("^foo") 今后推荐癿方法。例如:this.set("^foo.disabled", true)
this.tag("foo") 今后丌再推荐。
------------------------------
View癿get和set中更多使用技巧
–this.get("title") - 读取View自身癿属性
–this.get("#buttonOK")
–this.get("^foo")
–this.get("@DataTypeProduct") - 根据名称获得某个DataType
----------------------------------------
?$url() - 用亍转换URL
–">images/icon.gif"将转换为"/appContextPath/images/icon.gif"
–"skin>widget.css"将转换为Dorado当前当前皮肤路徂下癿widget.css癿URL。
因为skin是预设癿URL前缀代表当前皮肤癿根路径
--------------------------------------
?$DomUtils.xCreate() - 根据以JSON形式定义癿组件癿模板信息快速癿创建DOM元素
$DomUtils.xCreate({
tagName: "button",
content: "Click Me",// 定义按钮癿标题
style: {// 定义按钮癿style
border: "1px black solid",
backgroundColor: "white"
},
onclick: function() {// 定义onclick事件
alert("Button clicked.");
}
});
-----------------------------------
dorado遍历循环数组list
数组.each() - Dorado7扩展了标准癿Array使乊可支持each迭代,
除Array之外Dorado7还提供EntityList、KeyedList等集合特性癿对象也支持each迭代。
var s = '';
['A', 'B', 'C'].each(function(item) {
s += item;
});
// 最终绌果为s == "ABC"
--------------------
刜步接触一系列对象
–DataSet - 数据集
–DataType - 数据类型(通常用亍描述以数据实体及其中各个属性)
–DataProvider - 用亍为Dorado提供数据(即将业务逡辑层中癿数据寻入刡Dorado中)
–DataResolver - 不DataProvider癿作用相反,用亍将Dorado中癿数据交迓给业务逡辑层。
--------------------------------------------
DataPath癿一些示例(1)
null(即空) - 相当亍直接迒回被查询癿数据。
 - 同上。
[#current] -表示顶层集合中癿当前Department。
# - 同上。
[#dirty] - 表示顶层集合中所有在客户端被改变过癿(包含被初除癿)Department。
#.employees - 表示顶层集合中当前Department中所有癿Employee。
#.#employees - 表示顶层集合中当前Department中癿当前Employee。
.departments(R) - 表示除顶层Department外所有其它Department癿集合。
#departments(R) - 表示各层当前Department癿集合。
#departments(leaf) - 表示最末端癿当前Department。即通过丌断癿尝试获取当前Department中癿当前Department,直刡最末端那个Department。
departments(R).employees[@.get("salary")>5000 && @.get("sex")=="male"] - 表示所有Department中癿薪水高亍5000癿男性Employee。
departments(R).employees.id - 表示迒回所有Employee对象癿id属性值癿集合。
----------取值--------------------------------------
DataSet.getData和DataSet.queryData
–getData默认只迒回DataPath命中癿第一笔数据,可能是Entity,也可能是EntityList。
–queryData返回DataPath完整的执行结果,且默认只返回Entity(只在使用#等确定只可能有最多一个命中数据实体癿DataPath时)或Entity癿数组。

-----------------------------------------------
Trigger表示文本编辑框右侧癿快捷按钮
DropDown是Trigger癿一种特例,特指各种下拉框
TabControl比较常用的属性包括:
? AwaysShowButtons 显示导航按钮
? CurrentTab 当前默认的标签页
? ShowMenuButton 显示菜单按钮
? TabMinWidth 标签页签的最小宽度
? TabPlacment 标签页签的显示位置
其它属性可以通过Client API查询。
------------------------

----
在树节点的OnDataRowClick中编写代码打开tab标签页
我们用IframeTab打开tabControl;

// 定义Tab变量
var tab = {};
// self 代表事件所属的控件,此处指 Tree对象
// self.get("currentNode")表示获取当前被点击的节点。
with (self.get("currentNode")) {
// 制定当前的tab为IFrameTab
tab.$type = "IFrame";
// 定义新Tab的标签
tab.caption = get("label");
// 定义Tab的Path
// get("userData")表示获取当前节点的UserData属性,
// 也就是刚才设定的 sample.chapter01.HelloWorld.d
tab.path = get("userData");
tab.name = get("label");
tab.closeable = true;
}
// 如果当前节点有指定的Path则打开新的tab
if (tab.path) {
with (this.get("#tabControl")) {
// 根据name查找是否已经打开过当前的Tab。
// 如果没有打开过,则需要添加一个新的Tab
var currentTab = getTab(tab.name);
if(currentTab){
tab = currentTab;
}else{
// 获取ID为tabControl的对象,并添加一个新的Tab
// 设定ID为tabControl的对象的当前Tab为新创建的Tab
tab = addTab(tab);
}
// 设定当前的Tab为制定的tab
set("currentTab", tab);
}
}
------------------------------------
在action的onSuccess事件中
self.get("returnValue")的含义就是获得ajax调用返回的结果;
例子:
// 获取用户在editor中的输入值
var value = this.get("#editor1.value");
// 把输入的值作为参数传递给action2并触发Ajax2的执行
// 当ajax2执行成功后会触发回调函数方法,在这里就是function(result){..}
// 执行结果作为参数传递给方法。这里的执行结果为result对象
this.get("#action2").set("parameter",value).execute(function(result){
dorado.MessageBox.alert(result);
})

----------------
在button1的onclick事件中编写的代码:
// 获取AjaxAction对象
var action = this.get("#aciton1");
// 调用Dorado提供的prompt方法
dorado.MessageBox.prompt("Please input two numbers here", {
// 默认的值
defaultText: "3,5",
// 当用户提交输入的数值时触发的回调方法,参数为输入的值
callback: function(text){
var nums = text.split(",");
// 将参数拼装成JSON形式
var parameter = {
num1: nums[0],
num2: nums[1]
};
// 调用AjaxAction
action.set("parameter", parameter).execute(function(result){
dorado.MessageBox.alert(nums[0] + " * " + nums[1] + " = " + result);
});
}
});
--------------------=======================================================
ajax返回多个参数例子
后台方法:
@Expose
public Properties getSystemInfo() {
Properties info = new Properties();
info.setProperty("product", DoradoAbout.getProductTitle());
info.setProperty("vendor", DoradoAbout.getVendor());
info.setProperty("version", DoradoAbout.getVersion());
return info;
}
--
在action的onSuccess事件中编写代码:
var info = self.get("returnValue");
dorado.MessageBox.alert("product :" + info.product + "\n" +
"vendor :" +
info.vendor +
"\n" +
"version : " +
info.version);
------------------------------------------------------------------
Listener:这样配置
listener :spring:dynaView1#beforeButton2Init(类#方法名)类注解@Component
Caption :测试按钮
id :button2
-------
 if(str.substr(0,4)!="010-" || str.substr(4).length!=8 || 
             isNaN(parseFloat(str.substr(4)))) 
   alert("无效的电话号码!");

ocm_commom_if_p.Get_DeptName_ByIds(ISSUE_RANGE) AS ISSUE_RANGE_NAME,

 pt6.get_session_info.Get_User_Id  NAME,
-----------------
jsp获取根路径
<%@page import="avicit.platform6.commons.utils.ViewUtil"%>
<%
/* String path = request.getContextPath();
out.println(path); */
out.print(ViewUtil.getRequestPath(request)+"platform/ocm/OcmKpiWriteChangeAction/updateZlMapXml.action");
%>
---
路由设条件
流程expr脚本写法
#{流程变量=="1"}
-------------------
数据库里边更改流程按钮的顺序
bpm_button流程按钮
由字段button_order控制

getProcessTaskParameter(formId);
---
||||||||||||||||||||||||||||||||||||||||||||||
流程引擎入口
processEngine
---
组织机构适配器
OrganAdapter比如取所有的用户,或者通过用户id取对象;
|||||||||||||||||||||||||||||||||||||||||||
流程发布主表 bpm_deployment
流程发布子表 bpm_deployprop
流程大字段 表:bpm_lob

流程表单权限配置表: bpm_ext_form_securior

bpm_ext_task_attribute t where t.pd_id='';流程定义id可以把废的流程从表里删掉
bpm_form 流程表单

bpm_hist_procinst t 流程实例表
bpm_hist_task  流程代办表

---
bpm_track  流程跟踪表   流程实例id:hprocl_  select * from bpm_track t where t.hprocl_='20143233';


---------------------
如果只是单线流程
只有一个流程实例id一个executeId;
--------------------
如果有分支的话,有一个流程实例id,多个executeId;
------------------------
保存表单
固定js写法
window.saveFormData = function(processInstanceId,executionId){}
------------------------------------
dataType的onDataChange事件里边
switch(arg.property){
 case "ISSUE_RANGE":
 var id = arg.newValue;
 if($dialogFlag =="PubEdit"){
  //通过手写回传值
 view.id($subDataName).getCurrentItem().set("issueRange",id)
 }else{
 //通过手写回传值
 view.id($subDataName).getCurrentItem().set("ISSUE_RANGE",id)
 }
 break;
 case "ISSUE_RANGE_NAME":
 var deptName = arg.newValue;
  if($dialogFlag =="PubEdit"){
   //通过手写回传值
  view.id($subDataName).getCurrentItem().set("issueRangeName",deptName)
  }else{
  //通过手写回传值
  view.id($subDataName).getCurrentItem().set("ISSUE_RANGE_NAME",deptName) 
  }
 break;
}
-----------------
js处理日期
var date = new Date();

2 date.formatDate("Y-m-d");   // 返回类似"2000-09-25"的字符串

3 date.formatDate("H:i:s");   // 返回类似"23:10:30"的字符串

4 date.formatDate("Y年m月d日 H点i分s秒");   // 返回类似"2000年09月25日 23点10分30秒"的字符串

var dateFrom =review_Date.formatDate("Y-m-d 00:00:00");
var dateTo =review_Date.formatDate("Y-m-d 23:59:59");
dbm文件的日期格式必须是TIMESTAMP-DateTime否则查不出来

parameter.set("P_REVIEW_DATE_From",dateFrom);
parameter.set("P_REVIEW_DATE_To",dateTo);
-----------------------
流程详细页,启动按钮打开详细页方法
top.addTab("人生若只如初见",encodeURI("${web.contextPath}/"+taskUrl+""),"dorado/client/skins/~current/common/icons.gif","taskTodo"," -0px -120px");
替换//parent.window.location.replace(getPath()+"/"+taskUrl);
----------------------------------------------
现在生产的模块实现类里边会报红
1SysLogUtil
import avicit.platform6.modules.system.syslog.service.SysLogUtil;
把上面的替换成下面的这个
import avicit.platform6.core.api.system.syslog.service.SysLogUtil;
-------------------------
/**
 * Date转String
 * @param {Object} date
 */
date2Str =  function(date){
 if (date != null) {
  var newDate = new Date();
  newDate.setTime(date);
  var year = newDate.getFullYear();
  var month = newDate.getMonth() < 9 ? "0" + (newDate.getMonth() + 1) : (newDate.getMonth() + 1);
  var day = newDate.getDate() < 9 ? "0" + newDate.getDate() : newDate.getDate();
  var dateStr = year + "-" + month + "-" + day;
  return dateStr;
 }else{
  return "";
 }
}
---------------------------------------
/**
  * 获取当前登录用户所在部门id以及用户id
  */
 @Expose
 public String getCurrentDeptId(){
  String name = SessionHelper.getLoginSysUser().getName();
  String id = SessionHelper.getLoginSysUser().getId();
  return SessionHelper.getCurrentDeptId()+","+SessionHelper.getCurrentDeptTl().getDeptName();
 }
-----dorodo获取当前登陆用户id当前登录人id
 var currentUser = '${session.getAttribute('userId')}';
----=dorado获取部门id 
 var currentDeptId = '${session.getAttribute('CURRENT_DEPT').getId()}';
 --------------------------getSecretLevel
 var currentUser = '${session.getAttribute('CURRENT_LOGINUSER').getId()}';
 var currentUser = '${session.getAttribute('CURRENT_LOGINUSER').getSecretLevel()}';
 //$deptId='${session.getAttribute('CURRENT_DEPT').getId()}';
//$secretLevel='${session.getAttribute('CURRENT_LOGINUSER').getSecretLevel()}';
---------------------------------------------------------------------------
 
 一:在数据的添加时一般注意的方法
在主从表中的添加方法中,在datapilot中的onSubControlAction(self.arg)中的代码是:
 var code = arg.code;
   
   switch(code){
     case "+":
     //得到主表的数据集对象
     var dataset = this.get("#dataSetMainSubAddForm");
     
     //得到主表的数据集
     var ds = dataset.getData("#");
     
     //根据主表的数据集得到其中的那个reference对应的数据集
     var subdataset = ds.get("ocmStraPlanMainChild");
     
     //根据得到的数据集向其中插入一条对象,注意的是:这里的deptId不是数据库中的字段,而是实体类的属性
     subdataset.insert({deptId:currentDept.get("id")});
     
     //防止系统自动的添加一行
     arg.processDefault = false;
     break;
   }
-------------------------------------------------
http://blog.csdn.net/q326527970/article/details/6966317
http://blog.csdn.net/q326527970/article/category/928276
http://wiki.bsdn.org/pages/viewpage.action?pageId=9176117
http://wiki.bsdn.org/pages/viewpage.action?pageId=3670442
var dsBranch = this.id("dsBranch");var branch = dsBranch.getData("#");//获取当前的分公司实体对象var dept = dsBranch.getData("#.#.dept");//获取当前分公司的当前部门实体对象var employee = dsBranch.getData("#.#dept.#employee");//获取当前分公司的当前部门的当前员工实体对象 
------------------------------
var parameter = view.get("#queryForm.entity");
var actCode = parameter.get("actCode");
---------------table 列上的onGetCellEditor事件置空列值
arg.data.set("ISSUE_RANGE_NAME",'')
arg.data.set("ISSUE_RANGE",'')
--------------table列上onRenderCell 上语法dom对象
arg.dom.innerHTML="";
------------查询处理日期
var dateFrom = view.get("#dataSetQuery").getData("#").get("P_CHECK_DATE_FROM");
var dateTo = view.get("#dataSetQuery").getData("#").get("P_CHECK_DATE_TO");
//将查询区审核开始时间设置为当天最小时间--审核结束时间设置为最大时间
if(typeof(dateFrom)!='undefined'){
dateFrom = dateFrom.formatDate("Y-m-d 00:00:00")
view.get("#dataSetQuery").getData("#").set("P_CHECK_DATE_FROM",dateFrom)
}
if(typeof(dateTo)!='undefined'){
dateTo = dateTo.formatDate("Y-m-d 23:59:59")
view.get("#dataSetQuery").getData("#").set("P_CHECK_DATE_TO",dateTo)
}
var parameter = view.get("#queryForm.entity");
view.get("#dataSetMcjBusinessInfo").set("parameter",parameter).flushAsync();

--------------------------------
form中的Link
href:javascript:window.showMainFileUpload("QUALITY_MANAGE_FILE")
------------------------------

///控制列表只能单选 begin 2013-07-07 DingRui/
var dataGrid = view.get("#MainData");
var selections = dataGrid.get("selection"); 
if (selections.length == 0) {
 dorado.MessageBox.alert("请选择记录");
 return "false";
}
if (selections.length > 1) {
 dorado.MessageBox.alert("只允许选择一条数据记录!");
 return "false";
}
///控制列表只能单选 end/
parseInt($secretLevel);
planDate.substring(0,4)

var date = new Date();
var Y=date.getFullYear();
var M=(date.getMonth())+1;
var D=date.getDate();
----------------table 行背景颜色-----------------
//反馈时间
var factFinishDate =  arg.data.get("FACT_FINISH_DATE");
//里程碑时间
var planDate =  arg.data.get("PLAN_DATE");
//当前系统时间
var date = new Date();
var Y=date.getFullYear();
var M=(date.getMonth())+1;
var D=date.getDate();
//里程碑年\月\日
planDateY = planDate.formatDate("Y-m-d").substring(0,4);//2012-12-09
planDateM = planDate.formatDate("Y-m-d").substring(5,7);
planDateD = planDate.formatDate("Y-m-d").substring(8,10);

//反馈时间
var factFinishDate =  arg.data.get("FACT_FINISH_DATE");
//里程碑时间
var planDate =  arg.data.get("PLAN_DATE");
//当前系统时间
var date = new Date();
var date1=     date.formatDate("Y-m-d");
var date2 =  date1.replace(/-/g,"/");
var toDate = new Date(date2);
var planDate1= planDate.formatDate("Y-m-d");
var planDate2=  planDate1.replace(/-/g,"/");
var toPlan = new Date(planDate2);
if(factFinishDate != null && factFinishDate !=""){ 
var factFinishDate1= factFinishDate.formatDate("Y-m-d");
var finishDate2=  factFinishDate1.replace(/-/g,"/");
var toFinish= new Date(finishDate2);
       if(toFinish.getTime()>toPlan.getTime()){
     arg.dom.style.background = "#FFFF00";//黄色
    }else{
     arg.dom.style.background = "#00B050";//绿色
    }
}else{
 if(toDate.getTime()>toPlan.getTime()){
  arg.dom.style.background = "#FF0000";//红色
 }else{
  arg.dom.style.background = "#000798";//蓝色
 }
}
//alert(toFinish.getTime());
--------------------------------------------------------------------------
/**
 * 随机生成32位字符串
 */
$getRandomString = function(){
   len = 32;
    var $chars = '0123456789abcdefhijkmnprstwxyz'; // 默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
    var maxPos = $chars.length;
    var pwd = '';
    for (i = 0; i < len; i++) {
        pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}
----------------------------------
//在保存按钮的事件里边调用检验中文长度的校验
///获得中文字符长度 begin 2013-07-01 DingRui//////////
String.prototype.getBytes = function(){
    var cArr = this.match(/[^\x00-\xff]/ig);
    return this.length + (cArr == null ? 0 : cArr.length);
}
///获得中文字符长度 end//////////

///校验字段的长度 begin 2013-07-01 DingRui//////////
//在dataType的字段上,添加自定义效验,
lengthValidate = function(fields, describe, length){
 var flag = true;
 var data = view.get("#dataSetOcmKpiWrite.data:#");
 var field = data.get(fields);
 if(field != null){
  if(field.getBytes() > length){
   dorado.MessageBox.alert("【" + describe + "】文本内容过多,长度应小于" + length + "个字符!");
   flag = false;
  }
 }
 return flag;
}
///校验字段的长度 end//////
例子:if(describe != null){
 if(describe.getBytes() > 1000){
  dorado.MessageBox.alert("【描述】文本内容过多,长度应小于1000个字符!");
  return;
 }
}
////金额格式 displayFormat:#,##0.00
///////////////////////////
 var adata = arg.data;
 var id = adata.get("ID");
 var data = view.get("#dataSetFeedBack.data").first(); 
 var count = 0;
 while(data!=null){
  var fid = data.get("MCJ_PRODUCT_INFO_ID");
  if(fid==id){
   count++;
  }
  data = view.get("#dataSetFeedBack.data").next();
 }
 if(count>0){
  var javaScript ="javascript:showFeedInfo('"+arg.data.get("ID")+"','"+arg.data.get("PRODUCT_NAME")+"')" ;
  arg.dom.innerHTML="<a href = # onclick ="+javaScript+">编辑</a>"
 }else{
  var javaScript ="javascript:showFeedInfo('"+arg.data.get("ID")+"','"+arg.data.get("PRODUCT_NAME")+"')" ;
  arg.dom.innerHTML="<a href = # onclick ="+javaScript+">填写</a>"
 }
-----------------------------------------------------------------
view 的onCreate事件中调用后台
$importDocByArmyDemand= function(){
 //获取查询区数据
  var data =  view.get("#dataSetQuery").getData("#");
  var unitName = typeof(data.get("P_UNIT_NAME")) == 'undefined' ? "" : data.get("P_UNIT_NAME") ;
  var manageDept = typeof(data.get("P_MANAGE_DEPT")) == 'undefined'? "" : data.get("P_MANAGE_DEPT") ;
  var hrDeptName = typeof(data.get("P_HR_DEPT_NAME")) == 'undefined' ? "" : data.get("P_HR_DEPT_NAME") ;
  var unitType = typeof(data.get("P_UNIT_TYPE")) == 'undefined'? "" : data.get("P_UNIT_TYPE") ;
  var provinceCode = typeof(data.get("P_PROVINCE_CODE")) == 'undefined'? "" : data.get("P_PROVINCE_CODE") ;
  var dataParas = "unitName="+unitName+"&manageDept="+manageDept+"&hrDeptName="+hrDeptName+ "&unitType="+unitType+"&provinceCode="+provinceCode;
  dorado.MessageBox.confirm('确认生成军用单位名录编制?',function(){
   var urls = '${web.contextPath}/platform/mcj/mcjarmyinfoword/mcjArmyInfoExpWord?'+ encodeURI(dataParas);
      window.open(urls,"_self");
  });
}

------------------------------------------------------------------------------
---view全选然后将对象放入数组中
!function(){
 var uploadAction = view.get('#uaUpload2');
 var selections = view.get('#dgFiles.selection');

 if(!selections || selections.length == 0){
  return;
 }
 if(!selections.length){
  selections = [selections];
 }

 var selectionCopy = [];
 for (var i = 0; i < selections.length; i++) {
  selectionCopy.push(selections[i]);
 }
    
 for(var i=0;i<selectionCopy.length;i++){
  var entity = selectionCopy[i];
  if(entity){
   uploadAction.removeFile(entity.get('id'));
   entity.remove();
  }
 }
};
----------------------------------------------
获取dataset对应的查询form表单的值
var entityList = this.id("dataSetOmsMonthReportGrid").queryData ();
--------------------------------------------
dataTyp中只有id的时候,还有一种方式显示name页不用写视图
引入一个虚拟字段.reference,设置属性:dataProvider:类#方法
parameter:$${this.BUSINESS_TYPE}
-0-------------------------
给文本框赋值
this.get("#TextEditor_Id").doSetText("我的全部");
取值
this.get("#TextEditor_Id.value")
---------------------
------------------------===
文本框的Map属性加通用代码,trigger属性设置属性
给文本框加一个下拉列表,在属性上绑定trigger/然后在TextEditor的属性onAttributeChange中写入下面代码
实现树动态扩展层次。(dataTreeGrid控件的层次扩展)
var treeGird = this.id("weaveOmsPlanOperateTreeGrid");

switch (this.get("#treeExpendText.value")) {
    case "1":
        treeGird.get("bindingConfigs")[0].expandLevel = 1;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "2":
        treeGird.get("bindingConfigs")[0].expandLevel = 2;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "3":
        treeGird.get("bindingConfigs")[0].expandLevel = 3;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "4":
        treeGird.get("bindingConfigs")[0].expandLevel = 4;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
    case "5":
        treeGird.get("bindingConfigs")[0].expandLevel = 5;
        this.id("dataSetOmsPlanOperateGridV").flush();
        break;
}
------------------------------------------------------------
给树节点添加图表
在dataTreeGrid的属性onRenderNode事件里边写下面代码
var node = arg.node,data = node.get("data");

if (data.get("planType") == '1') {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/wbs.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}
if (data.get("planType") == '2') {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/task.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}

if (data.get("planType") == 'PRO') {
    $(arg.dom).empty().xCreate([{
        tagName: "IMG",
        src: $url(">images/pro.gif"),
        style: "left: 4px;top: 4px"
    },{
        tagName: "SPAN",
        contentText: node.get("label")
    }]);
}
-----------------------------------------------
当前树,判断满足逻辑条件后的节点显示显影
///////////
var treeGrid = this.id("weaveOmsPlanOperateTreeGrid");
//获去项目信息节点实例
var firstNode = treeGrid.get("firstNode");
var firstEntity = firstNode.get("data");

var fbUserId = firstEntity.get("puid");//项目信息节点发布范围人员userIds
var projPrincipal = firstEntity.get("projPrincipal"); //项目信息节点项目主管
var hrDeptId = arg.data.get("hrDeptId");//当前树节点部门id

if(arg.data.get("planName")!=undefined){
 //当前节点不为根节点时
if(arg.data.get("id")!=firstEntity.get("id")){
 //当前用户 不为 项目信息项目主管 
if(projPrincipal!=$currentUserId){
 //当前登录人部门与经营计划节点责任部门不一致时
 if($currentDeptId!=hrDeptId){
  //当前登录人不在项目信息节点的发布范围内
  fbUserId=","+fbUserId+",";
  var curUserId = ","+$currentUserId+",";
  if(fbUserId.indexOf(curUserId)==-1){
   var currentNodes = 0;
   var currentParents = 0; 
   var childCommand = view.get("#selectActionChildIsYz");
   childCommand.set("parameter",{nodeId:arg.data.get("id")}).execute(function(result){
    currentNodes = result;
   });
   var selectParentNodesMatchHrDeptId = view.get("#selectParentNodesMatchHrDeptId");
   selectParentNodesMatchHrDeptId.set("parameter",{id:arg.data.get("id"),hrDeptId:hrDeptId}).execute(function(result){
    currentParents = result ;
   });
   //alert("currentNodes="+currentNodes+"currentParents="+currentParents);
   if(currentNodes !=1 && (currentParents==0 || currentParents==null)){
     //删除当前节点
     arg.node.remove(); 
   }
   
  }
 }
 }
}
}

-----------------------------------------------------------------------------------------------
根据条件动态的给树节点显示复选框,树的onDataNodeCreate事件中
if (arg.data.get("planStatus")=="1" && arg.data.get("planStatus")!="9"){
   arg.node.set("checkable",true);
 }

if (arg.data.get("planStatus")=="9" && arg.data.get("parentId")=='ROOT' && arg.data.get("planType")=='PRO'){
 var action = view.get("#issueCountAction");
 var id = arg.data.get("id");
     action.set('parameter',{'id':id}).execute(function(result){
  if (result !=1 ){
   arg.node.set("checkable",true);
  }
 })
}
----------------------------------------
在dataTreeGrid的事件onNodeCheckedChange

var treeGrid = view.get("#omsPlanOperateTreeGridSendAuditing");
 var currentNode = treeGrid.get("currentNode");
//当前数据的父节点
 var checkable = currentNode.get("checkable");
 if (checkable==true){
  if  (currentNode.get("checked")==true){
               $checkchild(currentNode);
        }else{
      $uncheckchild(currentNode);
  }
 }

/**
 * 选中所有的子节点
 * @param {Object} treeGrid
 */
$checkchild = function(currentNode){
 // 判断是否存在复选框
  currentNode.set("checked",true);
  var hasChildIs = currentNode.get("hasChild")
      if (hasChildIs==true) {
          currentNode.expand();
          var nodes = currentNode.get("nodes");
          var curNode;
          if (nodes != null) {
              var iter = nodes.iterator();
              while (iter.hasNext()) {
                  curNode = iter.next();
       var checkable = curNode.get("checkable");
        if (checkable==true){
            curNode.set("checked",true);
        }
                  $checkchild(curNode);
              }        
      } 
       }    
}
---
/**
 * 不选中所有的子节点
 * @param {Object} treeGrid
 */
$uncheckchild = function(currentNode){
 // 判断是否存在复选框
  currentNode.set("checked",false);
  var hasChildIs = currentNode.get("hasChild")
      if (hasChildIs==true) {
          currentNode.expand();
          var nodes = currentNode.get("nodes");
          var curNode;
          if (nodes != null) {
              var iter = nodes.iterator();
              while (iter.hasNext()) {
                  curNode = iter.next();
      var checkable = curNode.get("checkable");
       if (checkable==true){
         curNode.set("checked",false);
       }
                  $uncheckchild(curNode);
              }        
      } 
       }    
}
--------------------------------------------------------------------