Преглед изворни кода

查询中允许使用视图

unknown пре 5 година
родитељ
комит
0ae6ab07e4
47 измењених фајлова са 1187 додато и 40 уклоњено
  1. 28 0
      o2web/source/o2_core/o2/widget/O2Identity.js
  2. 162 0
      o2web/source/x_component_Selector/QueryStatement.js
  3. 1 0
      o2web/source/x_component_Selector/lp/en.js
  4. 1 0
      o2web/source/x_component_Selector/lp/zh-cn.js
  5. BIN
      o2web/source/x_component_cms_FormDesigner/$Main/bottom/icon/statement.png
  6. 10 0
      o2web/source/x_component_cms_FormDesigner/$Main/bottom/tools.json
  7. BIN
      o2web/source/x_component_cms_FormDesigner/$Main/default/icon/statement.png
  8. 10 0
      o2web/source/x_component_cms_FormDesigner/$Main/default/tools.json
  9. 3 1
      o2web/source/x_component_cms_FormDesigner/Module/Package.js
  10. 39 0
      o2web/source/x_component_cms_FormDesigner/Module/Statement.js
  11. 6 0
      o2web/source/x_component_cms_FormDesigner/Module/StatementSelector.js
  12. 4 0
      o2web/source/x_component_cms_FormDesigner/Script.js
  13. 12 0
      o2web/source/x_component_portal_PageDesigner/Script.js
  14. BIN
      o2web/source/x_component_process_FormDesigner/$Main/bottom/icon/statement.png
  15. 10 0
      o2web/source/x_component_process_FormDesigner/$Main/bottom/tools.json
  16. BIN
      o2web/source/x_component_process_FormDesigner/$Main/default/icon/statement.png
  17. 10 0
      o2web/source/x_component_process_FormDesigner/$Main/default/tools.json
  18. 2 0
      o2web/source/x_component_process_FormDesigner/Module/Package.js
  19. 124 0
      o2web/source/x_component_process_FormDesigner/Module/Statement.js
  20. 91 0
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/css.wcss
  21. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/copy.png
  22. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/copy1.png
  23. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/delete.png
  24. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/delete1.png
  25. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/move.png
  26. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/move1.png
  27. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/multi.png
  28. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/single.png
  29. BIN
      o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/statement.png
  30. 168 0
      o2web/source/x_component_process_FormDesigner/Module/Statement/statement.html
  31. 90 0
      o2web/source/x_component_process_FormDesigner/Module/Statement/template.json
  32. 25 0
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector.js
  33. 198 0
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/StatementSelector.html
  34. 55 0
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/css.wcss
  35. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/buttonIcon.png
  36. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/copy.png
  37. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/copy1.png
  38. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/delete.png
  39. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/delete1.png
  40. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/hand2.png
  41. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/hand3.png
  42. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/inputtext.png
  43. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/move.png
  44. BIN
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/move1.png
  45. 85 0
      o2web/source/x_component_process_FormDesigner/Module/StatementSelector/template.json
  46. 10 0
      o2web/source/x_component_process_FormDesigner/Property.js
  47. 43 39
      o2web/source/x_component_process_ProcessDesigner/widget/PersonSelector.js

+ 28 - 0
o2web/source/o2_core/o2/widget/O2Identity.js

@@ -468,6 +468,34 @@ o2.widget.O2QueryView = new Class({
         }
     }
 });
+
+o2.widget.O2QueryStatement = new Class({
+    Extends: o2.widget.O2View,
+    getPersonData: function(){
+        if (!this.data.query){
+            var data = null;
+            o2.Actions.load("x_query_assemble_designer").StatementAction.get(this.data.id, function(json){
+                data = json.data
+            }, null, false);
+            this.data = data;
+            return data;
+        }else{
+            return this.data;
+        }
+    },
+    open : function (e) {
+        if( this.data.id && this.data.query ){
+            var appId = "query.StatementDesigner" + this.data.id;
+            if (layout.desktop.apps[appId]){
+                layout.desktop.apps[appId].setCurrent();
+            }else {
+                var options = {"id": this.data.id, "application": this.data.query, "appId": appId};
+                layout.desktop.openApplication(e, "query.StatementDesigner", options);
+            }
+        }
+    }
+});
+
 o2.widget.O2QueryStat = new Class({
     Extends: o2.widget.O2View,
     getPersonData: function(){

+ 162 - 0
o2web/source/x_component_Selector/QueryStatement.js

@@ -0,0 +1,162 @@
+MWF.xApplication.Selector = MWF.xApplication.Selector || {};
+MWF.xDesktop.requireApp("Selector", "Person", null, false);
+MWF.xApplication.Selector.QueryStatement = new Class({
+	Extends: MWF.xApplication.Selector.Person,
+    options: {
+        "style": "default",
+        "count": 0,
+        "title": MWF.xApplication.Selector.LP.selectStatement,
+        "values": [],
+        "names": [],
+        "expand": false,
+        "forceSearchInItem" : true
+    },
+    _init : function(){
+        this.selectType = "querystatement";
+        this.className = "QueryStatement";
+    },
+    loadSelectItems: function(addToNext){
+        this.queryAction.listApplication(function(json){
+            if (json.data.length){
+                json.data.each(function(data){
+                    if (!data.statementList){
+                        this.queryAction.listStatement(data.id, function(statementsJson){
+                            data.statementList = statementsJson.data;
+                        }.bind(this), null, false);
+                    }
+                    if (data.statementList && data.statementList.length){
+                        var category = this._newItemCategory(data, this, this.itemAreaNode);
+                        data.statementList.each(function(d){
+                            d.applicationName = data.name;
+                            var item = this._newItem(d, this, category.children);
+                            this.items.push(item);
+                        }.bind(this));
+                    }
+                }.bind(this));
+            }
+        }.bind(this));
+    },
+
+    _scrollEvent: function(y){
+        return true;
+    },
+    _getChildrenItemIds: function(data){
+        return data.statementList || [];
+    },
+    _newItemCategory: function(data, selector, item, level){
+        return new MWF.xApplication.Selector.QueryStatement.ItemCategory(data, selector, item, level)
+    },
+
+    _listItemByKey: function(callback, failure, key){
+        return false;
+    },
+    _getItem: function(callback, failure, id, async){
+        this.queryAction.getStatement(function(json){
+            if (callback) callback.apply(this, [json]);
+        }.bind(this), failure, ((typeOf(id)==="string") ? id : id.id), async);
+    },
+    _newItemSelected: function(data, selector, item){
+        return new MWF.xApplication.Selector.QueryStatement.ItemSelected(data, selector, item)
+    },
+    _listItemByPinyin: function(callback, failure, key){
+        return false;
+    },
+    _newItem: function(data, selector, container, level){
+        return new MWF.xApplication.Selector.QueryStatement.Item(data, selector, container, level);
+    }
+});
+MWF.xApplication.Selector.QueryStatement.Item = new Class({
+	Extends: MWF.xApplication.Selector.Person.Item,
+    _getShowName: function(){
+        return this.data.name;
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/view.png)");
+    },
+    loadSubItem: function(){
+        return false;
+    },
+    checkSelectedSingle: function(){
+        var selectedItem = this.selector.options.values.filter(function(item, index){
+            if (typeOf(item)==="object"){
+                if( this.data.id && item.id ){
+                    return this.data.id === item.id;
+                }else{
+                    return this.data.name === item.name;
+                }
+                //return (this.data.id === item.id) || (this.data.name === item.name) ;
+            }
+            //if (typeOf(item)==="object") return (this.data.id === item.id) || (this.data.name === item.name) ;
+            if (typeOf(item)==="string") return (this.data.id === item) || (this.data.name === item);
+            return false;
+        }.bind(this));
+        if (selectedItem.length){
+            this.selectedSingle();
+        }
+    },
+    checkSelected: function(){
+
+        var selectedItem = this.selector.selectedItems.filter(function(item, index){
+            if( item.data.id && this.data.id){
+                return item.data.id === this.data.id;
+            }else{
+                return item.data.name === this.data.name;
+            }
+            //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
+        }.bind(this));
+        if (selectedItem.length){
+            //selectedItem[0].item = this;
+            selectedItem[0].addItem(this);
+            this.selectedItem = selectedItem[0];
+            this.setSelected();
+        }
+    }
+});
+
+MWF.xApplication.Selector.QueryStatement.ItemSelected = new Class({
+	Extends: MWF.xApplication.Selector.Person.ItemSelected,
+    _getShowName: function(){
+        return this.data.name;
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/view.png)");
+    },
+    check: function(){
+        if (this.selector.items.length){
+            var items = this.selector.items.filter(function(item, index){
+                //return (item.data.id === this.data.id) || (item.data.name === this.data.name);
+                if( item.data.id && this.data.id){
+                    return item.data.id === this.data.id;
+                }else{
+                    return item.data.name === this.data.name;
+                }
+            }.bind(this));
+            this.items = items;
+            if (items.length){
+                items.each(function(item){
+                    item.selectedItem = this;
+                    item.setSelected();
+                }.bind(this));
+            }
+        }
+    }
+});
+
+MWF.xApplication.Selector.QueryStatement.ItemCategory = new Class({
+    Extends: MWF.xApplication.Selector.Person.ItemCategory,
+    _getShowName: function(){
+        return this.data.name;
+    },
+    createNode: function(){
+        this.node = new Element("div", {
+            "styles": this.selector.css.selectorItemCategory_department
+        }).inject(this.container);
+    },
+    _setIcon: function(){
+        this.iconNode.setStyle("background-image", "url("+"../x_component_Selector/$Selector/default/icon/applicationicon.png)");
+    },
+    _hasChild: function(){
+        return (this.data.statementList && this.data.statementList.length);
+    },
+    check: function(){}
+});

+ 1 - 0
o2web/source/x_component_Selector/lp/en.js

@@ -10,6 +10,7 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = {
     "selectAppliction": "Select Process Appliction",
     "selectProcess": "Select Process",
     "selectView": "Select View",
+    "selectStatement": "Select Statement",
     "selectCMSApplication": "Select CMS Application",
     "selectCMSCategory": "Select CMS Category",
     "searchDescription" : "search",

+ 1 - 0
o2web/source/x_component_Selector/lp/zh-cn.js

@@ -12,6 +12,7 @@ MWF.xApplication.Selector.LP = MWF.SelectorLP = {
     "selectAppliction": "选择流程应用",
     "selectProcess": "选择流程",
     "selectView": "选择视图",
+    "selectStatement" : "选择查询",
     "selectTable": "选择数据表",
     "selectFormStyle" : "选择表单样式",
     "selectCMSApplication": "选择内容管理应用",

BIN
o2web/source/x_component_cms_FormDesigner/$Main/bottom/icon/statement.png


+ 10 - 0
o2web/source/x_component_cms_FormDesigner/$Main/bottom/tools.json

@@ -194,5 +194,15 @@
     "icon": "comment.png",
     "text": "评论",
     "className": "Comment"
+  },
+  "statementSelector": {
+    "icon": "statement.png",
+    "text": "选择查询",
+    "className": "StatementSelector"
+  },
+  "statement": {
+    "icon": "statement.png",
+    "text": "嵌入查询",
+    "className": "Statement"
   }
 }

BIN
o2web/source/x_component_cms_FormDesigner/$Main/default/icon/statement.png


+ 10 - 0
o2web/source/x_component_cms_FormDesigner/$Main/default/tools.json

@@ -195,5 +195,15 @@
     "icon": "comment.png",
     "text": "评论",
     "className": "Comment"
+  },
+  "statementSelector": {
+    "icon": "statement.png",
+    "text": "选择查询",
+    "className": "StatementSelector"
+  },
+  "statement": {
+    "icon": "statement.png",
+    "text": "嵌入查询",
+    "className": "Statement"
   }
 }

+ 3 - 1
o2web/source/x_component_cms_FormDesigner/Module/Package.js

@@ -41,4 +41,6 @@ MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Office", null, false);
 MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Attachment", null, false);
 MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Log", null, false);
 MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Office", null, false);
-MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Comment", null, false);
+MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Comment", null, false);
+MWF.xDesktop.requireApp("cms.FormDesigner", "Module.Statement", null, false);
+MWF.xDesktop.requireApp("cms.FormDesigner", "Module.StatementSelector", null, false);

+ 39 - 0
o2web/source/x_component_cms_FormDesigner/Module/Statement.js

@@ -0,0 +1,39 @@
+MWF.xApplication.cms.FormDesigner.Module = MWF.xApplication.cms.FormDesigner.Module || {};
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.Statement", null, false);
+MWF.xApplication.cms.FormDesigner.Module.Statement = MWF.CMSFCStatement = new Class({
+	Extends: MWF.FCStatement,
+	Implements : [MWF.CMSFCMI]//,
+	//_createViewNode: function(callback){
+	//	if (!this.viewNode) this.viewNode = new Element("div", {"styles": this.css.viewNode}).inject(this.node);
+	//	this.node.setStyle("background", "transparent");
+    //
+	//	this.viewTable = new Element("table", {
+	//		"styles": this.css.viewTitleTableNode,
+	//		"border": "0px",
+	//		"cellPadding": "0",
+	//		"cellSpacing": "0"
+	//	}).inject(this.viewNode);
+	//	this.viewLine = new Element("tr", {"styles": this.css.viewTitleLineNode}).inject(this.viewTable);
+    //
+	//	if (this.json.select!="no"){
+	//		this.viewSelectCell = new Element("td", {
+	//			"styles": this.css.viewTitleCellNode
+	//		}).inject(this.viewLine);
+	//		this.viewSelectCell.setStyle("width", "10px");
+	//	}
+	//	this.form.designer.actions.getQueryView(this.json["view"], function(json){
+	//		var viewData = JSON.decode(json.data.data);
+	//		viewData.selectEntryList.each(function(column){
+	//			//    if (column.export){
+	//			var viewCell = new Element("td", {
+	//				"styles": this.css.viewTitleCellNode,
+	//				"text": column.displayName
+	//			}).inject(this.viewLine);
+	//			//    }
+	//		}.bind(this));
+    //
+	//		if (callback) callback();
+	//	}.bind(this));
+	//	this._setViewNodeTitle();
+	//}
+});

+ 6 - 0
o2web/source/x_component_cms_FormDesigner/Module/StatementSelector.js

@@ -0,0 +1,6 @@
+MWF.xApplication.cms.FormDesigner.Module = MWF.xApplication.cms.FormDesigner.Module || {};
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.StatementSelector", null, false);
+MWF.xApplication.cms.FormDesigner.Module.StatementSelector = MWF.CMSFCStatementSelector = new Class({
+	Extends: MWF.FCStatementSelector,
+	Implements : [MWF.CMSFCMI]
+});

+ 4 - 0
o2web/source/x_component_cms_FormDesigner/Script.js

@@ -102,6 +102,10 @@ MWF.xApplication.cms.FormDesigner.Script = new Class({
                 this.loadAuthorScript(v); break;
             case "Reader":
                 this.loadReaderScript(v); break;
+            case "Statement":
+                this.loadStatementScript(v); break;
+            case "StatementSelector":
+                this.loadStatementSelectorScript(v); break;
         }
         this.bindDataId(v);
     },

+ 12 - 0
o2web/source/x_component_portal_PageDesigner/Script.js

@@ -158,6 +158,10 @@ MWF.xApplication.portal.PageDesigner.Script = new Class({
                 this.loadSubformScript(v); break;
             case "ViewSelector":
                 this.loadViewSelectorScript(v); break;
+            case "Statement":
+                this.loadStatementScript(v); break;
+            case "StatementSelector":
+                this.loadStatementSelectorScript(v); break;
         }
         this.bindDataId(v);
     },
@@ -421,6 +425,14 @@ MWF.xApplication.portal.PageDesigner.Script = new Class({
         this.loadEventsScript(data);
     },
 
+    loadStatementScript: function(data){
+        this.loadEventsScript(data);
+    },
+    loadStatementSelectorScript: function(data){
+        this.addScriptItem(data.selectedScript, "code", data, "selectedScript");
+        this.loadEventsScript(data);
+    },
+
 
     loadEventsScript: function(data){
         Object.each(data.events, function(event, key){

BIN
o2web/source/x_component_process_FormDesigner/$Main/bottom/icon/statement.png


+ 10 - 0
o2web/source/x_component_process_FormDesigner/$Main/bottom/tools.json

@@ -174,5 +174,15 @@
     "icon": "office.png",
     "text": "Office控件",
     "className": "Office"
+  },
+  "statementSelector": {
+    "icon": "statement.png",
+    "text": "选择查询",
+    "className": "StatementSelector"
+  },
+  "statement": {
+    "icon": "statement.png",
+    "text": "嵌入查询",
+    "className": "Statement"
   }
 }

BIN
o2web/source/x_component_process_FormDesigner/$Main/default/icon/statement.png


+ 10 - 0
o2web/source/x_component_process_FormDesigner/$Main/default/tools.json

@@ -191,5 +191,15 @@
     "icon": "office.png",
     "text": "Office控件",
     "className": "Office"
+  },
+  "statementSelector": {
+    "icon": "statement.png",
+    "text": "选择查询",
+    "className": "StatementSelector"
+  },
+  "statement": {
+    "icon": "statement.png",
+    "text": "嵌入查询",
+    "className": "Statement"
   }
 }

+ 2 - 0
o2web/source/x_component_process_FormDesigner/Module/Package.js

@@ -41,3 +41,5 @@ MWF.xDesktop.requireApp("process.FormDesigner", "Module.Attachment", null, false
 MWF.xDesktop.requireApp("process.FormDesigner", "Module.Orgfield", null, false);
 MWF.xDesktop.requireApp("process.FormDesigner", "Module.Org", null, false);
 MWF.xDesktop.requireApp("process.FormDesigner", "Module.Opinion", null, false);
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.Statement", null, false);
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.StatementSelector", null, false);

+ 124 - 0
o2web/source/x_component_process_FormDesigner/Module/Statement.js

@@ -0,0 +1,124 @@
+MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.View", null, false);
+MWF.xApplication.process.FormDesigner.Module.Statement = MWF.FCStatement = new Class({
+	Extends: MWF.FCView,
+	options: {
+		"style": "default",
+		"propertyPath": "../x_component_process_FormDesigner/Module/Statement/statement.html"
+	},
+	
+	initialize: function(form, options){
+		this.setOptions(options);
+		
+		this.path = "../x_component_process_FormDesigner/Module/Statement/";
+		this.cssPath = "../x_component_process_FormDesigner/Module/Statement/"+this.options.style+"/css.wcss";
+
+        this.imagePath_default = "../x_component_query_ViewDesigner/$Statement/";
+        this.imagePath_custom = "../x_component_process_FormDesigner/Module/Actionbar/";
+
+		this._loadCss();
+		this.moduleType = "element";
+		this.moduleName = "statement";
+
+		this.form = form;
+		this.container = null;
+		this.containerNode = null;
+	},
+	_createMoveNode: function(){
+		this.moveNode = new Element("div", {
+			"MWFType": "statement",
+			"id": this.json.id,
+			"styles": this.css.moduleNodeMove,
+			"events": {
+				"selectstart": function(){
+					return false;
+				}
+			}
+		}).inject(this.form.container);
+	},
+
+	_createNode: function(){
+		this.node = this.moveNode.clone(true, true);
+		this.node.setStyles(this.css.moduleNode);
+		this.node.set("id", this.json.id);
+		this.node.addEvent("selectstart", function(){
+			return false;
+		});
+		
+		this.iconNode = new Element("div", {
+			"styles": this.css.iconNode
+		}).inject(this.node);
+		new Element("div", {
+			"styles": this.css.iconNodeIcon
+		}).inject(this.iconNode);
+		new Element("div", {
+			"styles": this.css.iconNodeText,
+			"text": "Statement"
+		}).inject(this.iconNode);
+
+		this.iconNode.addEvent("click", function(){
+            this._checkView();
+        }.bind(this));
+	},
+    _createViewNode: function(callback){
+
+        if (!this.viewNode) this.viewNode = new Element("div", {"styles": this.css.viewNode}).inject(this.node);
+        if( !this.actionbarNode)this.actionbarNode = new Element("div.actionbarNode",{}).inject( this.viewNode, "top" );
+
+        this.node.setStyle("background", "transparent");
+
+
+        this.viewTable = new Element("table", {
+            "styles": this.css.viewTitleTableNode,
+            "border": "0px",
+            "cellPadding": "0",
+            "cellSpacing": "0"
+        }).inject(this.viewNode);
+        this.viewLine = new Element("tr", {"styles": this.css.viewTitleLineNode}).inject(this.viewTable);
+
+        if (this.json.select!="no"){
+            this.viewSelectCell = new Element("td", {
+                "styles": this.css.viewTitleCellNode
+            }).inject(this.viewLine);
+            this.viewSelectCell.setStyle("width", "10px");
+        }
+
+        MWF.Actions.get("x_query_assemble_designer").getView(this.json["queryView"].id, function(json){
+            var viewData = JSON.decode(json.data.data);
+
+            this.viewData = viewData;
+            if( this.json.actionbar === "show" ){
+                this.actionbarList = [];
+                this._showActionbar();
+            }
+
+            var columnList = viewData.selectEntryList || viewData.selectList;
+            columnList.each(function(column){
+                if (!column.hideColumn){
+                    var viewCell = new Element("td", {
+                        "styles": this.css.viewTitleCellNode,
+                        "text": column.displayName
+                    }).inject(this.viewLine);
+                }
+            }.bind(this));
+
+            if (callback) callback();
+        }.bind(this));
+        this._setViewNodeTitle();
+    },
+    _checkView: function(callback){
+        if (this.json["queryView"] && this.json["queryView"]!="none"){
+            this.iconNode.setStyle("display", "none");
+            if (this.viewNode) this.viewNode.destroy();
+            this.viewNode = null;
+            this._createViewNode(function(){
+                if (callback) callback();
+            }.bind(this));
+        }else{
+            this.iconNode.setStyle("display", "block");
+            if (this.viewNode) this.viewNode.destroy();
+            this.node.setStyles(this.css.moduleNode);
+            if (callback) callback();
+        }
+    }
+});

+ 91 - 0
o2web/source/x_component_process_FormDesigner/Module/Statement/default/css.wcss

@@ -0,0 +1,91 @@
+{
+	"moduleNodeMove": {
+		"border": "2px dashed #ffa200",
+		"height": "22px",
+		"line-height": "22px",
+		"overflow": "hidden",
+		"margin": "3px",
+		"display": "block",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "absolute",
+		"z-index": 10002,
+		"opacity": 0.7,
+		"width": "100px",
+		"cursor": "move",
+		"background-color": "#EEE"
+	},
+	"moduleNodeShow": {
+		"border": "1px dashed #333",
+		"height": "2px",
+		"cursor": "pointer",
+		"line-height": "22px",
+		"overflow": "hidden",
+		"margin": "3px",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "static",
+		"display": "block",
+		"top": "auto",
+		"left": "auto",
+		"width": "auto",
+		"opacity": 0.5,
+		"background": "#ffa200"
+	},
+	"moduleNode": {
+		"border": "1px dashed #333",
+		"height": "100px",
+		"cursor": "pointer",
+		"line-height": "22px",
+		"overflow": "hidden",
+		"margin": "3px",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "static",
+		"display": "block",
+		"top": "auto",
+		"left": "auto",
+		"width": "auto",
+		"opacity": 1,
+		"background": "transparent"
+	},
+	"iconNode": {
+		"width": "70px",
+		"height": "24px",
+		"color": "#999",
+		"font-size": "12px",
+		"position": "static",
+		"margin": "10px auto"
+	},
+	"iconNodeIcon":{
+		"width": "24px",
+		"height": "24px",
+		"background": "url("+"../x_component_process_FormDesigner/Module/Statement/default/icon/statement.png) 5px center no-repeat",
+		"float": "left"
+	},
+	"iconNodeText":{
+		"line-height": "24px",
+		"height": "24px",
+		"width": "44px",
+		"float": "right"
+	},
+	"viewNode": {
+	    "overflow": "hidden",
+        "height": "100%"
+	},
+	"viewTitleTableNode": {
+	    "width": "100%",
+	    "height": "30px",
+	    "background-color": "#EEE",
+	    "border": "1px solid #999"
+	},
+	"viewTitleLineNode": {
+	    "line-height": "30px"
+	},
+	"viewTitleCellNode": {
+	    "border-left": "1px solid #FFF",
+	    "border-right": "1px solid #999",
+	    "padding": "0px 10px"
+	}
+	
+}

BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/copy.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/copy1.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/delete.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/delete1.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/move.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/move1.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/multi.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/single.png


BIN
o2web/source/x_component_process_FormDesigner/Module/Statement/default/icon/statement.png


+ 168 - 0
o2web/source/x_component_process_FormDesigner/Module/Statement/statement.html

@@ -0,0 +1,168 @@
+<div style="background-color: #FFF; overflow: hidden">
+	<div title="基本" class="MWFTab">
+		<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+		  <tr>
+		    <td class="editTableTitle">标识:</td>
+		    <td class="editTableValue"><input type="text" name="id" value="text{$.id}" class="editTableInput"/></td>
+		  </tr>
+		  <tr>
+		    <td class="editTableTitle">名称:</td>
+		    <td class="editTableValue"><input type="text" name="name" value="text{$.name}" class="editTableInput"/></td>
+		  </tr>
+		  <tr>
+		    <td class="editTableTitle">描述:</td>
+		    <td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
+		  </tr>
+		  <tr>
+		    <td class="editTableTitle">Class:</td>
+		    <td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
+		  </tr>
+		</table>
+		
+		<div class="MWFMaplist" name="styles" title="样式"></div>
+		<div class="MWFMaplist" name="properties" title="属性"></div>
+
+        <div class="MWFMaplist" name="titleStyles" title="标题样式"></div>
+        <div class="MWFMaplist" name="itemStyles" title="数据样式"></div>
+
+	<div title="查询"  class="MWFTab">
+		<div>
+			<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+				<tr>
+					<td class="editTableTitle">查询:</td>
+					<td class="editTableValue"><div class="MWFQueryStatementSelect" name="queryStatement"></div></td>
+				</tr>
+			</table>
+			<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+				<tr>
+					<td class="editTableTitle">立即载入:</td>
+					<td class="editTableValue">
+						<input type="radio" name="loadView" value="yes" text{($.loadView!='no')?'checked':''}/>是
+						<input type="radio" name="loadView" value="no" text{($.loadView=='no')?'checked':''}/>否
+					</td>
+				</tr>
+			</table>
+		</div>
+
+
+		<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+			<!--<tr>-->
+			<!--<td class="editTableTitle">视图:</td>-->
+			<!--<td class="editTableValue">-->
+			<!--<div class="MWFViewSelect" name="view"></div>-->
+			<!--</td>-->
+			<!--</tr>-->
+			<tr>
+				<td class="editTableTitle">显示标题</td>
+				<td class="editTableValue">
+					<input class="editTableRadio" name="isTitle" text{($.isTitle!='no')?'checked':''} type="radio" value="yes"/>显示
+					<input class="editTableRadio" name="isTitle" text{($.isTitle=='no')?'checked':''} type="radio" value="no"/>不显示
+				</td>
+			</tr>
+			<tr>
+				<td class="editTableTitle">选择文件</td>
+				<td class="editTableValue">
+					<select name="select">
+						<option text{($.select!='single' && $.select!='multi')?'selected':''} value="no">不允许</option>
+						<option text{($.select=='single')?'selected':''} value="single">单选</option>
+						<option text{($.select=='multi')?'selected':''} value="multi">多选</option>
+					</select>
+				</td>
+			</tr>
+			<tr>
+				<td class="editTableTitle">操作条</td>
+				<td class="editTableValue">
+					<input class="editTableRadio" name="actionbar" text{($.actionbar=='show')?'checked':''} type="radio" value="show"/>显示
+					<input class="editTableRadio" name="actionbar" text{($.actionbar!='show')?'checked':''} type="radio" value="hidden"/>不显示
+				</td>
+			</tr>
+		</table>
+
+		<div style="background-color: #eeeeee; border-top:1px solid #999999; height: 24px; line-height: 24px; text-align: center; cursor:pointer">过滤</div>
+		<div class="MWFViewFilter">
+			<div class="inputAreaNode_vf">
+				<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable restrictViewFilterTable_vf">
+					<tr style="display:none">
+						<td class="editTableTitle">标题:</td>
+						<td class="editTableValue"><input type="text" class="editTableInput titleInput_vf"/></td>
+					</tr>
+					<tr>
+						<td class="editTableTitle">路径:</td>
+						<td class="editTableValue"><input type="text" class="editTableInput pathInput_vf"/></td>
+					</tr>
+					<tr>
+						<td class="editTableTitle">数据类型:</td>
+						<td class="editTableValue"><select class="datatypeInput_vf">
+							<option value="textValue" selected>文本</option>
+							<option value="numberValue">数字</option>
+							<option value="dateTimeValue">日期</option>
+							<option value="booleanValue">布尔</option>
+						</select></td>
+					</tr>
+					<tr style="display:none">
+						<td class="editTableTitle"></td>
+						<td class="editTableValue">
+							<input type="radio" class="restrictFilterInput_vf" value="restrict" name="text{$.id}viewFilterType" checked/>作为默认过滤条件<br>
+							<input type="radio" class="customFilterInput_vf" value="custom" name="text{$.id}viewFilterType"/>作为自定义过滤数据
+						</td>
+					</tr>
+				</table>
+				<table id="text{$.pid}viewFilterRestrict" width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+					<tr>
+						<td class="editTableTitle">逻辑:</td>
+						<td class="editTableValue"><select class="logicInput_vf">
+							<option selected value="and">并且(and)</option>
+							<option value="or">或者(or)</option>
+						</select></td>
+					</tr>
+
+					<tr>
+						<td class="editTableTitle">比较:</td>
+						<td class="editTableValue"><select class="comparisonInput_vf">
+							<option value="equals" selected>等于(==)</option>
+							<option value="notEquals">不等于(!=)</option>
+							<option value="greaterThan">大于(>)</option>
+							<option value="greaterThanOrEqualTo">大于等于(>=)</option>
+							<option value="lessThan">小于(<)</option>
+							<option value="lessThanOrEqualTo">小于等于(<=)</option>
+							<option value="like">匹配(like)</option>
+							<option value="notLike">不匹配(not-like)</option>
+							<option value="range">范围(range)</option>
+						</select></td>
+					</tr>
+					<tr style="display:none">
+						<td class="editTableTitle">值:</td>
+						<td class="editTableValue">
+							<input type="text" class="editTableInput valueTextInput_vf" style="display: block"/>
+							<input type="number" class="editTableInput valueNumberInput_vf" style="display: none"/>
+							<input type="text" class="editTableInput valueDatetimeInput_vf" style="display: none" readonly/>
+							<input type="text" class="editTableInput valueDateInput_vf" style="display: none" readonly/>
+							<input type="text" class="editTableInput valueTimeInput_vf" style="display: none" readonly/>
+							<select class="valueBooleanInput_vf" style="display: none">
+								<option value="true" selected>是(True)</option>
+								<option value="false">否(False)</option>
+							</select>
+						</td>
+					</tr>
+				</table>
+				<div title="值" class="MWFFilterFormulaArea"></div>
+			</div>
+			<div class="actionAreaNode_vf"></div>
+			<div style="height: 20px; line-height: 20px; text-align:center; background-color: #eeeeee">默认过滤条件</div>
+			<div class="listAreaNode_vf" style="min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
+			<div style="display:none; height: 20px; line-height: 20px; text-align:center; background-color: #eeeeee">自定义过滤数据</div>
+			<div class="fieldListAreaNode_vf" style="display:none; min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
+		</div>
+		<div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
+	</div>
+
+	<div title="事件"  class="MWFTab">
+		<div class="MWFEventsArea" name="events"></div>
+	</div>
+	<div title="HTML"  class="MWFTab">
+		<div class="MWFHTMLArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
+	</div>
+	<div title="JSON"  class="MWFTab">
+		<div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
+	</div>
+</div>

+ 90 - 0
o2web/source/x_component_process_FormDesigner/Module/Statement/template.json

@@ -0,0 +1,90 @@
+{
+	"id": "",
+	"name": "",
+	"type": "Statement",
+	"description": "",
+    "view": "",
+    "isTitle": "yes",
+    "select": "no",  //single, multi
+    "isOpen": "yes",
+	"events": {
+		"queryLoad": {
+		  "code": "",
+		  "html": ""
+		},
+		"postLoad": {
+		  "code": "",
+		  "html": ""
+		},
+		"load": {
+		  "code": "",
+		  "html": ""
+		},
+	  	"loadView" : {
+		  "code": "",
+		  "html": ""
+		},
+		"select": {
+		  "code": "",
+		  "html": ""
+		},
+		"openDocument": {
+		  "code": "",
+		  "html": ""
+		},
+		"click": {
+			"code": "",
+			"html": ""
+		},
+		"dblclick": {
+			"code": "",
+			"html": ""
+		},
+		"keydown": {
+			"code": "",
+			"html": ""
+		},
+		"keypress": {
+			"code": "",
+			"html": ""
+		},
+		"keyup": {
+			"code": "",
+			"html": ""
+		},
+		"mousedown": {
+			"code": "",
+			"html": ""
+		},
+		"mousemove": {
+			"code": "",
+			"html": ""
+		},
+		"mouseout": {
+			"code": "",
+			"html": ""
+		},
+		"mouseover": {
+			"code": "",
+			"html": ""
+		},
+		"mouseup": {
+			"code": "",
+			"html": ""
+		},
+		"focus": {
+			"code": "",
+			"html": ""
+		},
+		"blur": {
+			"code": "",
+			"html": ""
+		}
+	},
+	"properties": {},
+	"class": "",
+	"styles": {},
+    "titleStyles":{},
+    "itemStyles": {},
+	"container": ""
+}

+ 25 - 0
o2web/source/x_component_process_FormDesigner/Module/StatementSelector.js

@@ -0,0 +1,25 @@
+MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
+MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Element", null, false);
+MWF.xApplication.process.FormDesigner.Module.StatementSelector = MWF.FCStatementSelector = new Class({
+	Extends: MWF.xApplication.process.FormDesigner.Module.Button,
+	Implements: [Options, Events],
+	options: {
+		"style": "default",
+		"propertyPath": "../x_component_process_FormDesigner/Module/StatementSelector/StatementSelector.html"
+	},
+	
+	initialize: function(form, options){
+		this.setOptions(options);
+		
+		this.path = "../x_component_process_FormDesigner/Module/StatementSelector/";
+		this.cssPath = "../x_component_process_FormDesigner/Module/StatementSelector/"+this.options.style+"/css.wcss";
+
+		this._loadCss();
+		this.moduleType = "element";
+		this.moduleName = "statementSelector";
+
+		this.form = form;
+		this.container = null;
+		this.containerNode = null;
+	}
+});

+ 198 - 0
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/StatementSelector.html

@@ -0,0 +1,198 @@
+<div style="background-color: #FFF; overflow: hidden">
+	<div title="基本" class="MWFTab">
+		<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+		  <tr>
+		    <td class="editTableTitle">标识:</td>
+		    <td class="editTableValue"><input type="text" name="id" value="text{$.id}" class="editTableInput"/></td>
+		  </tr>
+		  <tr>
+		    <td class="editTableTitle">名称:</td>
+		    <td class="editTableValue"><input type="text" name="name" value="text{$.name}" class="editTableInput"/></td>
+		  </tr>
+		  <tr>
+		    <td class="editTableTitle">描述:</td>
+		    <td class="editTableValue"><input type="text" name="description" value="text{$.description}" class="editTableInput"/></td>
+		  </tr>
+		</table>
+		
+		<div class="MWFMaplist" name="styles" title="样式"></div>
+		<div class="MWFMaplist" name="properties" title="属性"></div>
+
+        <div style="background-color: #eeeeee; height: 24px; line-height: 24px; text-align: center;">视图选择框</div>
+        <div>
+            <table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+                <tr>
+                    <td class="editTableTitle">选择框标题:</td>
+                    <td class="editTableValue"><input type="text" name="title" value="text{$.title}" class="editTableInput"/></td>
+                </tr>
+                <tr>
+                    <td class="editTableTitle">列标题:</td>
+                    <td class="editTableValue">
+                        <input type="radio" name="isTitle" value="true" text{($.isTitle)?'checked':''}/>显示
+                        <input type="radio" name="isTitle" value="false" text{(!$.isTitle)?'checked':''}/>隐藏
+                    </td>
+                </tr>
+                <tr>
+                    <td class="editTableTitle">默认展开</td>
+                    <td class="editTableValue">
+                        <input class="editTableRadio" name="isExpand" text{($.isExpand=='yes')?'checked':''} type="radio" value="yes"/>展开
+                        <input class="editTableRadio" name="isExpand" text{($.isExpand!='yes')?'checked':''} type="radio" value="no"/>不展开
+                    </td>
+                </tr>
+                <tr>
+                    <td class="editTableTitle">选择:</td>
+                    <td class="editTableValue">
+                        <input type="radio" name="select" value="single" text{($.select!='multi')?'checked':''}/>单选
+                        <input type="radio" name="select" value="multi" text{($.select=='multi')?'checked':''}/>多选
+                    </td>
+                </tr>
+                <tr>
+                    <td class="editTableTitle">操作条</td>
+                    <td class="editTableValue">
+                        <input class="editTableRadio" name="actionbar" text{($.actionbar=='show')?'checked':''} type="radio" value="show"/>显示
+                        <input class="editTableRadio" name="actionbar" text{($.actionbar!='show')?'checked':''} type="radio" value="hidden"/>不显示
+                    </td>
+                </tr>
+                <!--<tr>-->
+                    <!--<td class="editTableTitle"></td>-->
+                    <!--<td class="editTableValue">-->
+                        <!--<input type="radio" onclick="if (this.checked) {$('text{$.id}processViewArea').setStyle('display', 'block'); $('text{$.id}cmsViewArea').setStyle('display', 'none');}" name="selectViewType" value="process" text{($.selectViewType!='cms')?'checked':''}/>流程视图-->
+                        <!--<input type="radio" onclick="if (this.checked) {$('text{$.id}processViewArea').setStyle('display', 'none'); $('text{$.id}cmsViewArea').setStyle('display', 'block');}" name="selectViewType" value="cms" text{($.selectViewType=='cms')?'checked':''}/>内容管理视图-->
+                    <!--</td>-->
+                <!--</tr>-->
+            </table>
+        </div>
+        <!--<div id="text{$.id}processViewArea" style="display: text{($.selectViewType!='cms')?'block':'none'};">-->
+            <!--<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">-->
+                <!--<tr>-->
+                    <!--<td class="editTableTitle">视图:</td>-->
+                    <!--<td class="editTableValue"><div class="MWFViewSelect" name="processViewName"></div></td>-->
+                <!--</tr>-->
+            <!--</table>-->
+        <!--</div>-->
+        <!--<div id="text{$.id}cmsViewArea" style="display: text{($.selectViewType=='cms')?'block':'none'};">-->
+            <!--<table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">-->
+                <!--<tr>-->
+                    <!--<td class="editTableTitle">视图:</td>-->
+                    <!--<td class="editTableValue"><div class="MWFCMSViewSelect" name="cmsViewName"></div></td>-->
+                <!--</tr>-->
+            <!--</table>-->
+        <!--</div>-->
+        <div>
+            <table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+                <tr>
+                    <td class="editTableTitle">查询:</td>
+                    <td class="editTableValue"><div class="MWFQueryStatementSelect" name="queryStatement"></div></td>
+                </tr>
+            </table>
+        </div>
+
+        <div class="MWFMaplist" name="titleStyles" title="选择框标题样式"></div>
+        <div class="MWFMaplist" name="itemStyles" title="选择框条目样式"></div>
+
+        <div style="background-color: #eeeeee; height: 24px; line-height: 24px; text-align: center;">选择结果处理</div>
+        <table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+            <tr>
+                <td class="editTableTitle">处理方式:</td>
+                <td class="editTableValue">
+                    <input type="radio" onclick="if (this.checked){ $('text{$.pid}selectedSetValueArea').setStyle('display', 'block'); $('text{$.pid}selectedScriptArea').setStyle('display', 'none')}" name="result" value="setValue" text{($.result!='script')?'checked':''}/>赋值
+                    <input type="radio" onclick="if (this.checked){ $('text{$.pid}selectedSetValueArea').setStyle('display', 'none'); $('text{$.pid}selectedScriptArea').setStyle('display', 'block')}" name="result" value="script" text{($.result=='script')?'checked':''}/>脚本
+                </td>
+            </tr>
+        </table>
+
+        <div id="text{$.pid}selectedSetValueArea" style="display: text{($.result!='script')?'block':'none'};">
+            <div class="MWFMaplist" name="selectedSetValues" title="选择结果赋值"></div>
+        </div>
+        <div id="text{$.pid}selectedScriptArea" style="display: text{($.result=='script')?'block':'none'};">
+            <div class="MWFScriptArea" name="selectedScript" title="选择结果 (S)"></div>
+        </div>
+        <div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
+	</div>
+    <div title="过滤"  class="MWFTab">
+        <div class="MWFViewFilter">
+            <div class="inputAreaNode_vf">
+                <table width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable restrictViewFilterTable_vf">
+                    <tr style="display:none">
+                        <td class="editTableTitle">标题:</td>
+                        <td class="editTableValue"><input type="text" class="editTableInput titleInput_vf"/></td>
+                    </tr>
+                    <tr>
+                        <td class="editTableTitle">路径:</td>
+                        <td class="editTableValue"><input type="text" class="editTableInput pathInput_vf"/></td>
+                    </tr>
+                    <tr>
+                        <td class="editTableTitle">数据类型:</td>
+                        <td class="editTableValue"><select class="datatypeInput_vf">
+                            <option value="textValue" selected>文本</option>
+                            <option value="numberValue">数字</option>
+                            <option value="dateTimeValue">日期</option>
+                            <option value="booleanValue">布尔</option>
+                        </select></td>
+                    </tr>
+                    <tr style="display:none">
+                        <td class="editTableTitle"></td>
+                        <td class="editTableValue">
+                            <input type="radio" class="restrictFilterInput_vf" value="restrict" name="text{$.id}viewFilterType" checked/>作为默认过滤条件<br>
+                            <input type="radio" class="customFilterInput_vf" value="custom" name="text{$.id}viewFilterType"/>作为自定义过滤数据
+                        </td>
+                    </tr>
+                </table>
+                <table id="text{$.pid}viewFilterRestrict" width="100%" border="0" cellpadding="5" cellspacing="0" class="editTable">
+                    <tr>
+                        <td class="editTableTitle">逻辑:</td>
+                        <td class="editTableValue"><select class="logicInput_vf">
+                            <option selected value="and">并且(and)</option>
+                            <option value="or">或者(or)</option>
+                        </select></td>
+                    </tr>
+
+                    <tr>
+                        <td class="editTableTitle">比较:</td>
+                        <td class="editTableValue"><select class="comparisonInput_vf">
+                            <option value="equals" selected>等于(==)</option>
+                            <option value="notEquals">不等于(!=)</option>
+                            <option value="greaterThan">大于(>)</option>
+                            <option value="greaterThanOrEqualTo">大于等于(>=)</option>
+                            <option value="lessThan">小于(<)</option>
+                            <option value="lessThanOrEqualTo">小于等于(<=)</option>
+                            <option value="like">匹配(like)</option>
+                            <option value="notLike">不匹配(not-like)</option>
+                            <option value="range">范围(range)</option>
+                        </select></td>
+                    </tr>
+                    <tr style="display:none">
+                        <td class="editTableTitle">值:</td>
+                        <td class="editTableValue">
+                            <input type="text" class="editTableInput valueTextInput_vf" style="display: block"/>
+                            <input type="number" class="editTableInput valueNumberInput_vf" style="display: none"/>
+                            <input type="text" class="editTableInput valueDatetimeInput_vf" style="display: none" readonly/>
+							<input type="text" class="editTableInput valueDateInput_vf" style="display: none" readonly/>
+							<input type="text" class="editTableInput valueTimeInput_vf" style="display: none" readonly/>
+                            <select class="valueBooleanInput_vf" style="display: none">
+                                <option value="true" selected>是(True)</option>
+                                <option value="false">否(False)</option>
+                            </select>
+                        </td>
+                    </tr>
+                </table>
+                <div title="值" class="MWFFilterFormulaArea"></div>
+            </div>
+            <div class="actionAreaNode_vf"></div>
+            <div style="height: 20px; line-height: 20px; text-align:center; background-color: #eeeeee">默认过滤条件</div>
+            <div class="listAreaNode_vf" style="min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
+            <div style="display:none; height: 20px; line-height: 20px; text-align:center; background-color: #eeeeee">自定义过滤数据</div>
+            <div class="fieldListAreaNode_vf" style="display:none; min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
+        </div>
+    </div>
+
+	<div title="事件"  class="MWFTab">
+		<div class="MWFEventsArea" name="events"></div>
+	</div>
+	<div title="HTML"  class="MWFTab">
+        <div class="MWFHTMLArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
+	</div>
+    <div title="JSON"  class="MWFTab">
+        <div class="MWFJSONArea" style="font-family: Verdana, Geneva, sans-serif; font-size:14px"></div>
+    </div>
+</div>

+ 55 - 0
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/css.wcss

@@ -0,0 +1,55 @@
+{
+	"moduleNodeMove": {
+		"border-radius": "5px",
+		"border": "1px solid #ffa200",
+		"overflow": "hidden",
+		"margin": "3px",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "absolute",
+		"z-index": 10002,
+		"opacity": 0.7,
+		"cursor": "move",
+		"height": "26px",
+		"display": "inline-block"
+	},
+	"moduleNodeShow": {
+		"border": "1px solid #333",
+		"margin": "3px",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "static",
+		"top": "auto",
+		"left": "auto",
+		"width": "18px",
+		"height": "2px",
+		"opacity": 0.5,
+		"display": "inline-block",
+		"background": "#ffa200"
+	},
+	"moduleNode": {
+		"border-radius": "5px",
+		"border-top": "1px solid #999",
+		"border-left": "1px solid #999",
+		"border-right": "1px solid #333",
+		"border-bottom": "1px solid #333",
+		"overflow": "hidden",
+		"cursor": "pointer",
+		"margin": "3px",
+		"-webkit-user-select": "none",
+		"-moz-user-select": "none",
+		"position": "static",
+		"top": "auto",
+		"left": "auto",
+		"opacity": 1,
+		"height": "26px",
+		"display": "inline-block"
+	},
+	"buttonIcon": {
+		"height": "26px",
+		"cursor": "pointer",
+		"border": "0px",
+		"margin": "0px"
+	}
+	
+}

BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/buttonIcon.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/copy.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/copy1.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/delete.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/delete1.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/hand2.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/hand3.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/inputtext.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/move.png


BIN
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/default/icon/move1.png


+ 85 - 0
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/template.json

@@ -0,0 +1,85 @@
+{
+	"id": "",
+	"name": "",
+	"type": "statementSelector",
+	"description": "",
+    "titleStyles": {},
+    "itemStyles": {},
+    "title": "选择",
+    "isTitle": true,
+    "select": "single", //"single", "multi"
+    "application": "",
+    "statementName": "",
+    "result": "setValue", //setValue., script
+    "selectedSetValues": {},
+    "selectedScript": {
+      "code": "",
+      "html": ""
+    },
+	"events": {
+		"queryLoad": {
+		  "code": "",
+		  "html": ""
+		},
+		"postLoad": {
+		  "code": "",
+		  "html": ""
+		},
+		"load": {
+		  "code": "",
+		  "html": ""
+		},
+		"click": {
+			"code": "",
+			"html": ""
+		},
+		"dblclick": {
+			"code": "",
+			"html": ""
+		},
+		"keydown": {
+			"code": "",
+			"html": ""
+		},
+		"keypress": {
+			"code": "",
+			"html": ""
+		},
+		"keyup": {
+			"code": "",
+			"html": ""
+		},
+		"mousedown": {
+			"code": "",
+			"html": ""
+		},
+		"mousemove": {
+			"code": "",
+			"html": ""
+		},
+		"mouseout": {
+			"code": "",
+			"html": ""
+		},
+		"mouseover": {
+			"code": "",
+			"html": ""
+		},
+		"mouseup": {
+			"code": "",
+			"html": ""
+		},
+		"focus": {
+			"code": "",
+			"html": ""
+		},
+		"blur": {
+			"code": "",
+			"html": ""
+		}
+	},
+	"properties": {},
+	"class": "",
+	"styles": {},
+	"container": ""
+}

+ 10 - 0
o2web/source/x_component_process_FormDesigner/Property.js

@@ -1241,6 +1241,7 @@ debugger;
         var viewNodes = this.propertyContent.getElements(".MWFViewSelect");
         var cmsviewNodes = this.propertyContent.getElements(".MWFCMSViewSelect");
         var queryviewNodes = this.propertyContent.getElements(".MWFQueryViewSelect");
+        var queryStatementNodes = this.propertyContent.getElements(".MWFQueryStatementSelect");
         var querystatNodes = this.propertyContent.getElements(".MWFQueryStatSelect");
         var fileNodes = this.propertyContent.getElements(".MWFImageFileSelect");
         var processFileNodes = this.propertyContent.getElements(".MWFProcessImageFileSelect");
@@ -1307,6 +1308,15 @@ debugger;
                 });
             }.bind(this));
 
+            queryStatementNodes.each(function(node){
+                new MWF.xApplication.process.ProcessDesigner.widget.PersonSelector(node, this.form.designer, {
+                    "type": "QueryStatement",
+                    "count": 1,
+                    "names": [this.data[node.get("name")]],
+                    "onChange": function(ids){this.saveViewItem(node, ids);}.bind(this)
+                });
+            }.bind(this));
+
             querystatNodes.each(function(node){
                 new MWF.xApplication.process.ProcessDesigner.widget.PersonSelector(node, this.form.designer, {
                     "type": "QueryStat",

+ 43 - 39
o2web/source/x_component_process_ProcessDesigner/widget/PersonSelector.js

@@ -76,28 +76,30 @@ MWF.xApplication.process.ProcessDesigner.widget.PersonSelector = new Class({
                     if (name){
                         var data = (typeOf(name)==="string") ? {"name": name, "id": name}: name;
                         MWF.require("MWF.widget.O2Identity", function(){
-                            if (this.options.type.toLowerCase()==="identity") this.identitys.push(new MWF.widget.O2Identity(data, this.node));
-                            if (this.options.type.toLowerCase()==="unit") this.identitys.push(new MWF.widget.O2Unit(data, this.node));
-                            if (this.options.type.toLowerCase()==="group") this.identitys.push(new MWF.widget.O2Group(data, this.node));
-                            if (this.options.type.toLowerCase()==="person") this.identitys.push(new MWF.widget.O2Person(data, this.node));
+                            var type = this.options.type.toLowerCase();
+                            if (type==="identity") this.identitys.push(new MWF.widget.O2Identity(data, this.node));
+                            if (type==="unit") this.identitys.push(new MWF.widget.O2Unit(data, this.node));
+                            if (type==="group") this.identitys.push(new MWF.widget.O2Group(data, this.node));
+                            if (type==="person") this.identitys.push(new MWF.widget.O2Person(data, this.node));
 
-                            if (this.options.type.toLowerCase()==="application") this.identitys.push(new MWF.widget.O2Application(data, this.node));
-                            if (this.options.type.toLowerCase()==="process") this.identitys.push(new MWF.widget.O2Process(data, this.node));
-                            if (this.options.type.toLowerCase()==="formfield") this.identitys.push(new MWF.widget.O2FormField(data, this.node));
-                            if (this.options.type.toLowerCase()==="view") this.identitys.push(new MWF.widget.O2View(data, this.node));
-                            if (this.options.type.toLowerCase()==="cmsview") this.identitys.push(new MWF.widget.O2CMSView(data, this.node));
-                            if (this.options.type.toLowerCase()==="queryview") this.identitys.push(new MWF.widget.O2QueryView(data, this.node));
-                            if (this.options.type.toLowerCase()==="querystat") this.identitys.push(new MWF.widget.O2QueryStat(data, this.node));
-                            if (this.options.type.toLowerCase()==="dutyname") this.identitys.push(new MWF.widget.O2Duty(data, this.node));
-                            if (this.options.type.toLowerCase()==="cmsapplication") this.identitys.push(new MWF.widget.O2CMSApplication(data, this.node));
-                            if (this.options.type.toLowerCase()==="cmscategory") this.identitys.push(new MWF.widget.O2CMSCategory(data, this.node));
+                            if (type==="application") this.identitys.push(new MWF.widget.O2Application(data, this.node));
+                            if (type==="process") this.identitys.push(new MWF.widget.O2Process(data, this.node));
+                            if (type==="formfield") this.identitys.push(new MWF.widget.O2FormField(data, this.node));
+                            if (type==="view") this.identitys.push(new MWF.widget.O2View(data, this.node));
+                            if (type==="cmsview") this.identitys.push(new MWF.widget.O2CMSView(data, this.node));
+                            if (type==="queryview") this.identitys.push(new MWF.widget.O2QueryView(data, this.node));
+                            if (type==="querystatement") this.identitys.push(new MWF.widget.O2QueryStatement(data, this.node));
+                            if (type==="querystat") this.identitys.push(new MWF.widget.O2QueryStat(data, this.node));
+                            if (type==="dutyname") this.identitys.push(new MWF.widget.O2Duty(data, this.node));
+                            if (type==="cmsapplication") this.identitys.push(new MWF.widget.O2CMSApplication(data, this.node));
+                            if (type==="cmscategory") this.identitys.push(new MWF.widget.O2CMSCategory(data, this.node));
 
-                            if (this.options.type.toLowerCase()==="portalfile") this.identitys.push(new MWF.widget.O2File(data, this.node));
-                            if (this.options.type.toLowerCase()==="processfile") this.identitys.push(new MWF.widget.O2File(data, this.node));
+                            if (type==="portalfile") this.identitys.push(new MWF.widget.O2File(data, this.node));
+                            if (type==="processfile") this.identitys.push(new MWF.widget.O2File(data, this.node));
 
-                            if (this.options.type.toLowerCase()==="dictionary") this.identitys.push(new MWF.widget.O2Dictionary(data, this.node));
-                            if (this.options.type.toLowerCase()==="script") this.identitys.push(new MWF.widget.O2Script(data, this.node));
-                            if (this.options.type.toLowerCase()==="formstyle") this.identitys.push(new MWF.widget.O2FormStyle(data, this.node));
+                            if (type==="dictionary") this.identitys.push(new MWF.widget.O2Dictionary(data, this.node));
+                            if (type==="script") this.identitys.push(new MWF.widget.O2Script(data, this.node));
+                            if (type==="formstyle") this.identitys.push(new MWF.widget.O2FormStyle(data, this.node));
                         }.bind(this));
                     }
                 }.bind(this));
@@ -143,30 +145,32 @@ MWF.xApplication.process.ProcessDesigner.widget.PersonSelector = new Class({
                     if (this.options.type.toLowerCase()!=="duty") this.node.empty();
                     MWF.require("MWF.widget.O2Identity", function(){
                         items.each(function(item){
-                            if (this.options.type.toLowerCase()==="identity") this.identitys.push(new MWF.widget.O2Identity(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="person") this.identitys.push(new MWF.widget.O2Person(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="unit") this.identitys.push(new MWF.widget.O2Unit(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="group") this.identitys.push(new MWF.widget.O2Group(item.data, this.node));
+                            var type = this.options.type.toLowerCase();
+                            if (type==="identity") this.identitys.push(new MWF.widget.O2Identity(item.data, this.node));
+                            if (type==="person") this.identitys.push(new MWF.widget.O2Person(item.data, this.node));
+                            if (type==="unit") this.identitys.push(new MWF.widget.O2Unit(item.data, this.node));
+                            if (type==="group") this.identitys.push(new MWF.widget.O2Group(item.data, this.node));
 
-                            if (this.options.type.toLowerCase()==="application") this.identitys.push(new MWF.widget.O2Application(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="process") this.identitys.push(new MWF.widget.O2Process(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="cmsapplication") this.identitys.push(new MWF.widget.O2CMSApplication(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="cmscategory") this.identitys.push(new MWF.widget.O2CMSCategory(item.data, this.node));
+                            if (type==="application") this.identitys.push(new MWF.widget.O2Application(item.data, this.node));
+                            if (type==="process") this.identitys.push(new MWF.widget.O2Process(item.data, this.node));
+                            if (type==="cmsapplication") this.identitys.push(new MWF.widget.O2CMSApplication(item.data, this.node));
+                            if (type==="cmscategory") this.identitys.push(new MWF.widget.O2CMSCategory(item.data, this.node));
 
-                            if (this.options.type.toLowerCase()==="formfield") this.identitys.push(new MWF.widget.O2FormField(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="view") this.identitys.push(new MWF.widget.O2View(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="cmsview") this.identitys.push(new MWF.widget.O2CMSView(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="queryview") this.identitys.push(new MWF.widget.O2QueryView(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="querystat") this.identitys.push(new MWF.widget.O2QueryStat(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="dutyname") this.identitys.push(new MWF.widget.O2Duty(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="portalfile") this.identitys.push(new MWF.widget.O2File(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="processfile") this.identitys.push(new MWF.widget.O2File(item.data, this.node));
+                            if (type==="formfield") this.identitys.push(new MWF.widget.O2FormField(item.data, this.node));
+                            if (type==="view") this.identitys.push(new MWF.widget.O2View(item.data, this.node));
+                            if (type==="cmsview") this.identitys.push(new MWF.widget.O2CMSView(item.data, this.node));
+                            if (type==="queryview") this.identitys.push(new MWF.widget.O2QueryView(item.data, this.node));
+                            if (type==="querystatement") this.identitys.push(new MWF.widget.O2QueryStatement(item.data, this.node));
+                            if (type==="querystat") this.identitys.push(new MWF.widget.O2QueryStat(item.data, this.node));
+                            if (type==="dutyname") this.identitys.push(new MWF.widget.O2Duty(item.data, this.node));
+                            if (type==="portalfile") this.identitys.push(new MWF.widget.O2File(item.data, this.node));
+                            if (type==="processfile") this.identitys.push(new MWF.widget.O2File(item.data, this.node));
 
-                            if (this.options.type.toLowerCase()==="dictionary") this.identitys.push(new MWF.widget.O2Dictionary(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="script") this.identitys.push(new MWF.widget.O2Script(item.data, this.node));
-                            if (this.options.type.toLowerCase()==="formstyle") this.identitys.push(new MWF.widget.O2FormStyle(item.data, this.node));
+                            if (type==="dictionary") this.identitys.push(new MWF.widget.O2Dictionary(item.data, this.node));
+                            if (type==="script") this.identitys.push(new MWF.widget.O2Script(item.data, this.node));
+                            if (type==="formstyle") this.identitys.push(new MWF.widget.O2FormStyle(item.data, this.node));
                         }.bind(this));
-                        if (this.options.type.toLowerCase()==="duty") {
+                        if (type==="duty") {
                             items.each(function(item){
                                 new MWF.xApplication.process.ProcessDesigner.widget.PersonSelector.DutyInput(this, item.data, this.node, 20000);
                             }.bind(this));