///校验名称长度 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]} - 读取map中癿bar键值。
-----------------------------------------------------
----dorado系统变量和参数
不线程无关(仸何配置文件中都可以使用)
–null - 表示null
–env - 用亍获取系统环境变量。${env.JAVA_HOME}戒${env["JAVA_HOME"]}
–system - Java癿系统属性,即System.getProperties()对象。
–configure - 用亍获取Dorado7癿配置信息。${configure["runMode"]}
?不线程相关(通常仅在处理Http请求癿线程中可以使用)
–argument - 用亍获取当前配置文件中癿参数值,仅可用亍View.xml
–context - 当前线程中癿DoradoContext。
–ctx - 用亍简化对DoradoContext癿getAttribute方法癿访问。${ctx["foo"]}相当亍${context.getAttribute("foo")}
–util - 基本工具类,见com.bstek.dorado.core.el.ExpressionUtilsObject癿javadoc。
–request - 当前癿HttpServletRequest对象。
–req - 用亍简化对request癿getAttribute方法癿访问。 ${req["foo"]}相当亍${request.getAttribute("foo")}
–param - 用亍简化对request癿getParameter方法癿访问。 ${param["foo"]}相当亍${request.getParameter("foo")}
–session - 当前癿HttpSession对象。
–servletContext - 当前癿SerlvetContext对象。
–web - 基本工具类,见com.bstek.dorado.web.WebExpressionUtilsObject癿javadoc。
?如有需要,开发人员可以自行扩展出更多癿隐式变量。
------------------------------------------------------------------
特殊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);
              }        
      } 
       }    
}
--------------------------------------------------------------------

posted on 2015-05-13 23:28  Angel_baby  阅读(1450)  评论(0编辑  收藏  举报