///校验名称长度 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);
}
}
}
}
--------------------------------------------------------------------