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

查询视图中增加全选功能

unknown пре 5 година
родитељ
комит
415bb148f1

+ 3 - 1
o2web/source/x_component_process_FormDesigner/Module/Statement/statement.html

@@ -64,7 +64,7 @@
 			<tr>
 			<tr>
 				<td class="editTableTitle">选择文件</td>
 				<td class="editTableTitle">选择文件</td>
 				<td class="editTableValue">
 				<td class="editTableValue">
-					<select name="select">
+					<select name="select" onchange="$('text{$.pid}selectedAbleScript').setStyle('display', this.options[this.selectedIndex].value === 'no' ? 'none' : 'block');">
 						<option text{($.select!='single' && $.select!='multi')?'selected':''} value="no">不允许</option>
 						<option text{($.select!='single' && $.select!='multi')?'selected':''} value="no">不允许</option>
 						<option text{($.select=='single')?'selected':''} value="single">单选</option>
 						<option text{($.select=='single')?'selected':''} value="single">单选</option>
 						<option text{($.select=='multi')?'selected':''} value="multi">多选</option>
 						<option text{($.select=='multi')?'selected':''} value="multi">多选</option>
@@ -166,6 +166,8 @@
 			<div class="fieldListAreaNode_vf" style="display:none; min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
 			<div class="fieldListAreaNode_vf" style="display:none; min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
 		</div>
 		</div>
 		<div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
 		<div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
+		<div class="MWFScriptArea" name="selectedAbleScript" title="允许选择行脚本" id="text{$.pid}selectedAbleScript"
+			 style="display: text{($.select=='single' || $.select=='multi')?'':'none'}"></div>
 	</div>
 	</div>
 
 
 	<div title="事件"  class="MWFTab">
 	<div title="事件"  class="MWFTab">

+ 1 - 1
o2web/source/x_component_process_FormDesigner/Module/StatementSelector/StatementSelector.html

@@ -108,6 +108,7 @@
             <div class="MWFScriptArea" name="selectedScript" title="选择结果 (S)"></div>
             <div class="MWFScriptArea" name="selectedScript" title="选择结果 (S)"></div>
         </div>
         </div>
         <div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
         <div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
+        <div class="MWFScriptArea" name="selectedAbleScript" title="允许选择行脚本"></div>
 	</div>
 	</div>
     <div title="过滤"  class="MWFTab">
     <div title="过滤"  class="MWFTab">
         <div class="MWFStatementFilter">
         <div class="MWFStatementFilter">
@@ -194,7 +195,6 @@
             <div style="display:none; height: 20px; line-height: 20px; text-align:center; background-color: #eeeeee">自定义过滤数据</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 class="fieldListAreaNode_vf" style="display:none; min-height: 56px; border-bottom:1px solid #CCCCCC; overflow: hidden;"></div>
         </div>
         </div>
-		<div class="MWFScriptArea" name="defaultSelectedScript" title="默认选中行脚本"></div>
     </div>
     </div>
 
 
 	<div title="事件"  class="MWFTab">
 	<div title="事件"  class="MWFTab">

+ 2 - 1
o2web/source/x_component_process_Xform/Statement.js

@@ -56,7 +56,8 @@ MWF.xApplication.process.Xform.Statement = MWF.APPStatement =  new Class({
             "isExpand": this.json.isExpand || "no",
             "isExpand": this.json.isExpand || "no",
             "showActionbar" : this.json.actionbar === "show",
             "showActionbar" : this.json.actionbar === "show",
             "filter": filter,
             "filter": filter,
-            "defaultSelectedScript" : this.json.defaultSelectedScript ? this.json.defaultSelectedScript.code : null
+            "defaultSelectedScript" : this.json.defaultSelectedScript ? this.json.defaultSelectedScript.code : null,
+            "selectedAbleScript" : this.json.selectedAbleScript ? this.json.selectedAbleScript.code : null
         };
         };
 
 
         //MWF.xDesktop.requireApp("query.Query", "Viewer", function(){
         //MWF.xDesktop.requireApp("query.Query", "Viewer", function(){

+ 47 - 46
o2web/source/x_component_process_Xform/StatementSelector.js

@@ -3,6 +3,50 @@ MWF.xDesktop.requireApp("process.Xform", "ViewSelector", null, false);
 MWF.xApplication.process.Xform.StatementSelector = MWF.APPStatementSelector =  new Class({
 MWF.xApplication.process.Xform.StatementSelector = MWF.APPStatementSelector =  new Class({
 	Implements: [Events],
 	Implements: [Events],
 	Extends: MWF.xApplication.process.Xform.ViewSelector,
 	Extends: MWF.xApplication.process.Xform.ViewSelector,
+    doResult: function(data){
+        if (this.json.result === "script"){
+            this.selectedData = data;
+            return (this.json.selectedScript.code) ? this.form.Macro.exec(this.json.selectedScript.code, this) : "";
+        }else{
+            Object.each(this.json.selectedSetValues, function(v, k){
+                var value = "";
+                data.each(function(d, idx){
+                    // Object.each(d, function(dv, dk){
+                    //     if (dk===v) value = (value) ? (value+", "+dv) : dv;
+                    // }.bind(this));
+
+                    var pathList = v.split(".");
+                    for( var i=0; i<pathList.length; i++ ){
+                        var p = pathList[i];
+                        if( (/(^[1-9]\d*$)/.test(p)) )p = p.toInt();
+                        if( d[ p ] ){
+                            d = d[ p ];
+                        }else{
+                            d = "";
+                            break;
+                        }
+                    }
+
+                    if( typeOf(d) === "array" || typeOf(d) === "object" ) {
+                        d = JSON.stringify(d);
+                    }
+
+                    value = (value) ? (value+", "+d) : d;
+
+                }.bind(this));
+
+                var field = this.form.all[k];
+                if (field){
+                    field.setData(value);
+                    if (value){
+                        if (field.descriptionNode) field.descriptionNode.setStyle("display", "none");
+                    }else{
+                        if (field.descriptionNode) field.descriptionNode.setStyle("display", "block");
+                    }
+                }
+            }.bind(this));
+        }
+    },
     selectView: function(callback){
     selectView: function(callback){
         var viewData = this.json.queryStatement;
         var viewData = this.json.queryStatement;
 
 
@@ -28,7 +72,8 @@ MWF.xApplication.process.Xform.StatementSelector = MWF.APPStatementSelector =  n
                 "isExpand": this.json.isExpand || "no",
                 "isExpand": this.json.isExpand || "no",
                 "showActionbar" : this.json.actionbar === "show",
                 "showActionbar" : this.json.actionbar === "show",
                 "filter": filter,
                 "filter": filter,
-                "defaultSelectedScript" : this.json.defaultSelectedScript ? this.json.defaultSelectedScript.code : null
+                "defaultSelectedScript" : this.json.defaultSelectedScript ? this.json.defaultSelectedScript.code : null,
+                "selectedAbleScript" : this.json.selectedAbleScript ? this.json.selectedAbleScript.code : null
             };
             };
             var options = {};
             var options = {};
             var width = options.width || "850";
             var width = options.width || "850";
@@ -114,50 +159,6 @@ MWF.xApplication.process.Xform.StatementSelector = MWF.APPStatementSelector =  n
                 // }.bind(this));
                 // }.bind(this));
             }.bind(this));
             }.bind(this));
         }
         }
-    },
-    doResult: function(data){
-        if (this.json.result === "script"){
-            this.selectedData = data;
-            return (this.json.selectedScript.code) ? this.form.Macro.exec(this.json.selectedScript.code, this) : "";
-        }else{
-            Object.each(this.json.selectedSetValues, function(v, k){
-                var value = "";
-                data.each(function(d, idx){
-                    // Object.each(d, function(dv, dk){
-                    //     if (dk===v) value = (value) ? (value+", "+dv) : dv;
-                    // }.bind(this));
-
-                    var pathList = v.split(".");
-                    for( var i=0; i<pathList.length; i++ ){
-                        var p = pathList[i];
-                        if( (/(^[1-9]\d*$)/.test(p)) )p = p.toInt();
-                        if( d[ p ] ){
-                            d = d[ p ];
-                        }else{
-                            d = "";
-                            break;
-                        }
-                    }
-
-                    if( typeOf(d) === "array" || typeOf(d) === "object" ) {
-                        d = JSON.stringify(d);
-                    }
-
-                    value = (value) ? (value+", "+d) : d;
-
-                }.bind(this));
-
-                var field = this.form.all[k];
-                if (field){
-                    field.setData(value);
-                    if (value){
-                        if (field.descriptionNode) field.descriptionNode.setStyle("display", "none");
-                    }else{
-                        if (field.descriptionNode) field.descriptionNode.setStyle("display", "block");
-                    }
-                }
-            }.bind(this));
-        }
-    },
+    }
 	
 	
 }); 
 }); 

+ 49 - 15
o2web/source/x_component_query_Query/Statement.js

@@ -192,26 +192,30 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
             }
             }
             if( f.valueType === "script" ){
             if( f.valueType === "script" ){
                 value = this.Macro.exec( f.valueScript ? f.valueScript.code : "", this);
                 value = this.Macro.exec( f.valueScript ? f.valueScript.code : "", this);
-            }else if( f.value.indexOf( "@" ) > -1 ){
-                var user = layout.user;
+            }else{
+                //var user = layout.user;
                 switch ( f.value ) {
                 switch ( f.value ) {
                     case "@person":
                     case "@person":
-                        value = user.distinguishedName;
+                    case "person":
+                        //value = user.distinguishedName;
                         break;
                         break;
                     case "@identityList":
                     case "@identityList":
-                        value =  user.identityList.map( function (d) {
-                            return d.distinguishedName;
-                        });
+                    case "identityList":
+                        //value =  user.identityList.map( function (d) {
+                        //    return d.distinguishedName;
+                        //});
                         break;
                         break;
                     case "@unitList":
                     case "@unitList":
-                        o2.Actions.load("x_organization_assemble_express").UnitAction.listWithPerson({ "personList" : [user.distinguishedName] }, function (json) {
-                            value = json.unitList;
-                        }, null, false);
+                    case "unitList":
+                        //o2.Actions.load("x_organization_assemble_express").UnitAction.listWithPerson({ "personList" : [user.distinguishedName] }, function (json) {
+                        //    value = json.unitList;
+                        //}, null, false);
                         break;
                         break;
                     case "@unitAllList":
                     case "@unitAllList":
-                        o2.Actions.load("x_organization_assemble_express").UnitAction.listWithIdentitySupNested({ "personList" : [user.distinguishedName] }, function (json) {
-                            value = json.unitList;
-                        }, null, false);
+                    case "unitAllList":
+                        //o2.Actions.load("x_organization_assemble_express").UnitAction.listWithIdentitySupNested({ "personList" : [user.distinguishedName] }, function (json) {
+                        //    value = json.unitList;
+                        //}, null, false);
                         break;
                         break;
                     case "@year":
                     case "@year":
                         value = (new Date().getFullYear()).toString();
                         value = (new Date().getFullYear()).toString();
@@ -294,6 +298,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
                 }
                 }
 
 
                 this.gridJson = json.data;
                 this.gridJson = json.data;
+                this.setSelectedableFlag();
 
 
                 this.fireEvent("postLoadPageData");
                 this.fireEvent("postLoadPageData");
 
 
@@ -331,6 +336,16 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
     },
     },
 
 
     loadData: function(){
     loadData: function(){
+         if( this.getSelectFlag() === "multi" && this.viewJson.allowSelectAll ) {
+            if(this.selectTitleCell && this.selectTitleCell.retrieve("selectAllLoaded")){
+                this.setUnSelectAllStyle();
+            }else{
+                this.createSelectAllNode();
+            }
+        }else if(this.selectAllNode){
+            this.clearSelectAllStyle();
+        }
+
         if (this.gridJson.length){
         if (this.gridJson.length){
             // if( !this.options.paging ){
             // if( !this.options.paging ){
             this.gridJson.each(function(line, i){
             this.gridJson.each(function(line, i){
@@ -375,7 +390,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
                             "path": entry.path,
                             "path": entry.path,
                             "value": key,
                             "value": key,
                             "formatType": entry.formatType,
                             "formatType": entry.formatType,
-                            "logic": "and",
+                            "logic": "or",
                             "comparison": "like"
                             "comparison": "like"
                         };
                         };
                         filterData.push(d);
                         filterData.push(d);
@@ -387,7 +402,7 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
                                 "path": entry.path,
                                 "path": entry.path,
                                 "value": v,
                                 "value": v,
                                 "formatType": entry.formatType,
                                 "formatType": entry.formatType,
-                                "logic": "and",
+                                "logic": "or",
                                 "comparison": "like"
                                 "comparison": "like"
                             };
                             };
                             filterData.push(d);
                             filterData.push(d);
@@ -483,11 +498,12 @@ MWF.xApplication.query.Query.Statement = MWF.QStatement = new Class({
 
 
 MWF.xApplication.query.Query.Statement.Item = new Class({
 MWF.xApplication.query.Query.Statement.Item = new Class({
     Extends : MWF.xApplication.query.Query.Viewer.Item,
     Extends : MWF.xApplication.query.Query.Viewer.Item,
-    initialize: function(view, data, prev, i){
+    initialize: function(view, data, prev, i, category){
         this.view = view;
         this.view = view;
         this.data = data;
         this.data = data;
         this.css = this.view.css;
         this.css = this.view.css;
         this.isSelected = false;
         this.isSelected = false;
+        this.category = category;
         this.prev = prev;
         this.prev = prev;
         this.idx = i;
         this.idx = i;
         this.clazzType = "item";
         this.clazzType = "item";
@@ -513,6 +529,24 @@ MWF.xApplication.query.Query.Statement.Item = new Class({
         this.selectTd = new Element("td", { "styles": viewContentTdNode }).inject(this.node);
         this.selectTd = new Element("td", { "styles": viewContentTdNode }).inject(this.node);
         this.selectTd.setStyles({"cursor": "pointer"});
         this.selectTd.setStyles({"cursor": "pointer"});
         if (this.view.json.itemStyles) this.selectTd.setStyles(this.view.json.itemStyles);
         if (this.view.json.itemStyles) this.selectTd.setStyles(this.view.json.itemStyles);
+
+        //var selectFlag = this.view.json.select || this.view.viewJson.select ||  "none";
+        var selectFlag = this.view.getSelectFlag();
+        if ( this.data.$selectedEnable && ["multi","single"].contains(selectFlag) && this.view.viewJson.selectBoxShow==="always") {
+            var viewStyles = this.view.viewJson.viewStyles;
+            if (viewStyles) {
+                if (selectFlag === "single") {
+                    this.selectTd.setStyles(viewStyles["radioNode"]);
+                } else {
+                    this.selectTd.setStyles(viewStyles["checkboxNode"]);
+                }
+            } else {
+                var iconName = "checkbox";
+                if (selectFlag === "single") iconName = "radiobox";
+                this.selectTd.setStyles({"background": "url(" + "../x_component_query_Query/$Viewer/default/icon/" + iconName + ".png) center center no-repeat"});
+            }
+        }
+
         if( this.view.isSelectTdHidden() ){
         if( this.view.isSelectTdHidden() ){
             this.selectTd.hide();
             this.selectTd.hide();
         }
         }

+ 34 - 3
o2web/source/x_component_query_StatementDesigner/$Statement/view.html

@@ -60,9 +60,38 @@
             <tr>
             <tr>
                 <td class="editTableTitle">选择:</td>
                 <td class="editTableTitle">选择:</td>
                 <td class="editTableValue">
                 <td class="editTableValue">
-                    <input class="editTableRadio" name="data.select" text{($.data.select!=='single' || $.data.select!=='multi' )?'checked':''} type="radio" value="none"/>无
-                    <input class="editTableRadio" name="data.select" text{($.data.select==='single')?'checked':''} type="radio" value="single"/>单选
-                    <input class="editTableRadio" name="data.select" text{($.data.select==='multi')?'checked':''} type="radio" value="multi"/>多选
+                    <input class="editTableRadio" name="data.select" text{($.data.select!=='single' || $.data.select!=='multi' )?'checked':''} type="radio" value="none" onclick="
+                    if (this.checked){
+                        $('text{$.id}selectBoxShowTr').setStyle('display', 'none');
+                        $('text{$.id}allowSelectAllTr').setStyle('display', 'none');
+                        $('text{$.id}selectedAbleScript').setStyle('display', 'none');
+                    }"/>无
+                    <input class="editTableRadio" name="data.select" text{($.data.select==='single')?'checked':''} type="radio" value="single" onclick="
+                    if (this.checked){
+                        $('text{$.id}selectBoxShowTr').setStyle('display', 'table-row');
+                        $('text{$.id}allowSelectAllTr').setStyle('display', 'none');
+                        $('text{$.id}selectedAbleScript').setStyle('display', 'block');
+                    }"/>单选
+                    <input class="editTableRadio" name="data.select" text{($.data.select==='multi')?'checked':''} type="radio" value="multi" onclick="
+                    if (this.checked){
+                        $('text{$.id}selectBoxShowTr').setStyle('display', 'table-row');
+                        $('text{$.id}allowSelectAllTr').setStyle('display', 'table-row');
+                        $('text{$.id}selectedAbleScript').setStyle('display', 'block');
+                    }"/>多选
+                </td>
+            </tr>
+            <tr id="text{$.id}selectBoxShowTr" style="display: text{($.data.select=='single' || $.data.select=='multi')?'':'none'}">
+                <td class="editTableTitle">选择框显示:</td>
+                <td class="editTableValue">
+                    <input class="editTableRadio" name="data.selectBoxShow" text{($.data.selectBoxShow==='always')?'checked':''} type="radio" value="always"/>一直显示
+                    <input class="editTableRadio" name="data.selectBoxShow" text{($.data.selectBoxShow!=='always')?'checked':''} type="radio" value="mouseover"/>鼠标经过时
+                </td>
+            </tr>
+            <tr id="text{$.id}allowSelectAllTr" style="display: text{($.data.select=='multi')?'':'none'}">
+                <td class="editTableTitle" id="">允许全选:</td>
+                <td class="editTableValue">
+                    <input class="editTableRadio" name="data.allowSelectAll" text{($.data.allowSelectAll===true)?'checked':''} type="radio" value="true"/>是
+                    <input class="editTableRadio" name="data.allowSelectAll" text{($.data.allowSelectAll!==true)?'checked':''} type="radio" value="false"/>否
                 </td>
                 </td>
             </tr>
             </tr>
             <tr>
             <tr>
@@ -85,6 +114,8 @@
         </table>
         </table>
 
 
         <div class="MWFFormulaArea" name="data.defaultSelectedScript" title="默认选中行脚本"></div>
         <div class="MWFFormulaArea" name="data.defaultSelectedScript" title="默认选中行脚本"></div>
+        <div class="MWFFormulaArea" name="data.selectedAbleScript" title="允许选择行脚本" id="text{$.id}selectedAbleScript"
+             style="display: text{($.data.select=='single' || $.data.select=='multi')?'':'none'}"></div>