Просмотр исходного кода

表单组件默认值等脚本,支持异步返回

huqi 5 лет назад
Родитель
Сommit
0ced5ae715

+ 2 - 0
o2web/source/o2_core/o2/xDesktop/Actions/RestActions.js

@@ -91,6 +91,8 @@ MWF.xDesktop.Actions.RestActions = new Class({
 
             var async = (option.async===false) ? false : true;
 
+            if (option.failure && option.failure.failure) option.failure = option.failure.failure;
+
             var callback = new MWF.xDesktop.Actions.RestActions.Callback(option.success, option.failure);
             if (action.enctype && (action.enctype.toLowerCase()=="formdata")){
                 res = this.invokeFormData(method, uri, option.data, option.file, callback, async, progress);

+ 51 - 12
o2web/source/o2_core/o2/xScript/Environment.js

@@ -321,12 +321,19 @@ MWF.xScript.Environment = function(ev){
             return v;
         },
         //获取人员--返回人员的对象数组
-        getPerson: function(name){
+        getPerson: function(name, callback){
             getOrgActions();
             var data = {"personList": getNameFlag(name)};
-            var v = null;
-            orgActions.listPerson(data, function(json){v = json.data;}, null, false);
-            return (v && v.length===1) ? v[0] : v;;
+            if (callback){
+                orgActions.listPerson(data, function(json){
+                    v = json.data;
+                    o2.runCallback(callback, "success", [v], this);
+                });
+            }else{
+                var v = null;
+                orgActions.listPerson(data, function(json){v = json.data;}, null, false);
+                return (v && v.length===1) ? v[0] : v;
+            }
         },
         //查询下级人员--返回人员的对象数组
         //nested  布尔  true嵌套下级;false直接下级;默认false;
@@ -479,12 +486,21 @@ MWF.xScript.Environment = function(ev){
 
         //身份**********
         //获取身份
-        getIdentity: function(name){
+        getIdentity: function(name, callback){
             getOrgActions();
             var data = {"identityList":getNameFlag(name)};
-            var v = null;
-            orgActions.listIdentity(data, function(json){v = json.data;}, null, false);
-            return (v && v.length===1) ? v[0] : v;
+
+            if (callback){
+                orgActions.listIdentity(data, function(json){
+                    v = json.data;
+                    v = (v && v.length===1) ? v[0] : v;
+                    o2.runCallback(callback, "success", [v], this);
+                });
+            }else{
+                var v = null;
+                orgActions.listIdentity(data, function(json){v = json.data;}, null, false);
+                return (v && v.length===1) ? v[0] : v;
+            }
         },
         //列出人员的身份
         listIdentityWithPerson: function(name){
@@ -532,16 +548,39 @@ MWF.xScript.Environment = function(ev){
         },
         //查询组织的上级--返回组织的对象数组
         //nested  布尔  true嵌套上级;false直接上级;默认false;
-        listSupUnit: function(name, nested){
+        listSupUnit: function(name, nested, callback){
+            debugger;
             getOrgActions();
             var data = {"unitList": getNameFlag(name)};
+            var cb = function(json){
+                v = json.data;
+                if (callback) o2.runCallback(callback, "success", [v], this);
+            };
+            var async = !!callback;
+
             var v = null;
             if (nested){
-                orgActions.listUnitSupNested(data, function(json){v = json.data;}, null, false);
+                orgActions.listUnitSupNested(data, cb, null, async);
             }else{
-                orgActions.listUnitSupDirect(data, function(json){v = json.data;}, null, false);
+                orgActions.listUnitSupDirect(data, cb, null, async);
             }
-            return v;
+            return callback||v;
+
+            // if (callback){
+            //     if (nested){
+            //         orgActions.listUnitSupNested(data, function(json){v = json.data; o2.runCallback(callback, "success", [v], this);});
+            //     }else{
+            //         orgActions.listUnitSupDirect(data, function(json){v = json.data; o2.runCallback(callback, "success", [v], this);});
+            //     }
+            // }else{
+            //     var v = null;
+            //     if (nested){
+            //         orgActions.listUnitSupNested(data, function(json){v = json.data;}, null, false);
+            //     }else{
+            //         orgActions.listUnitSupDirect(data, function(json){v = json.data;}, null, false);
+            //     }
+            //     return v;
+            // }
         },
         //根据个人身份获取组织
         //flag 数字    表示获取第几层的组织

+ 13 - 4
o2web/source/x_component_process_Xform/$Input.js

@@ -188,9 +188,18 @@ MWF.xApplication.process.Xform.$Input = MWF.APP$Input =  new Class({
 		return value || "";
 	},
     _setValue: function(value){
-        this._setBusinessData(value);
-        if (this.node.getFirst()) this.node.getFirst().set("value", value || "");
-        if (this.readonly || this.json.isReadonly) this.node.set("text", value);
+	    if (o2.typeOf(value)==="function" && value.addResolve){
+            value.addResolve(function(v){
+                this._setValue(v);
+                // this._setBusinessData(v);
+                // if (this.node.getFirst()) this.node.getFirst().set("value", v || "");
+                // if (this.readonly || this.json.isReadonly) this.node.set("text", v);
+            }.bind(this));
+        }else{
+            this._setBusinessData(value);
+            if (this.node.getFirst()) this.node.getFirst().set("value", value || "");
+            if (this.readonly || this.json.isReadonly) this.node.set("text", value);
+        }
     },
 	_loadValue: function(){
         this._setValue(this.getValue());
@@ -453,4 +462,4 @@ MWF.xApplication.process.Xform.$Input = MWF.APP$Input =  new Class({
         return true;
     }
 	
-}); 
+}); 

+ 45 - 11
o2web/source/x_component_process_Xform/Org.js

@@ -118,18 +118,29 @@ MWF.xApplication.process.Xform.Org = MWF.APPOrg =  new Class({
         }
         if (this.json.defaultValue && this.json.defaultValue.code){
             var fd = this.form.Macro.exec(this.json.defaultValue.code, this);
-            if (typeOf(fd)!=="array") fd = (fd) ? [fd] : [];
-            fd.each(function(fdd){
-                if (fdd){
-                    if (typeOf(fdd)==="string"){
-                        var data;
-                        this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = MWF.org.parseOrgData(json.data, true, simple); }.bind(this), null, fdd, false);
-                        values.push(data);
-                    }else{
-                        values.push(fdd);
+
+            if (o2.typeOf(fd)=="function"){
+                debugger;
+                // value.addResolve(function(v){
+                //     this._setBusinessData(v);
+                //     if (this.node.getFirst()) this.node.getFirst().set("value", v || "");
+                //     if (this.readonly || this.json.isReadonly) this.node.set("text", v);
+                // }.bind(this));
+                return {"values": values, "resolve": fd};
+            }else{
+                if (typeOf(fd)!=="array") fd = (fd) ? [fd] : [];
+                fd.each(function(fdd){
+                    if (fdd){
+                        if (typeOf(fdd)==="string"){
+                            var data;
+                            this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = MWF.org.parseOrgData(json.data, true, simple); }.bind(this), null, fdd, false);
+                            values.push(data);
+                        }else{
+                            values.push(fdd);
+                        }
                     }
-                }
-            }.bind(this));
+                }.bind(this));
+            }
         }
         if (this.json.count>0){
             return values.slice(0, this.json.count);
@@ -855,6 +866,29 @@ MWF.xApplication.process.Xform.Org = MWF.APPOrg =  new Class({
         return node;
     },
     _setValue: function(value){
+        debugger;
+        if (o2.typeOf(value)==="object" && value.resolve){
+            var values = value.values;
+            value.resolve.addResolve(function(fd){
+                if (typeOf(fd)!=="array") fd = (fd) ? [fd] : [];
+                fd.each(function(fdd){
+                    if (fdd){
+                        if (typeOf(fdd)==="string"){
+                            var data;
+                            this.getOrgAction()[this.getValueMethod(fdd)](function(json){ data = MWF.org.parseOrgData(json.data, true, simple); }.bind(this), null, fdd, false);
+                            values.push(data);
+                        }else{
+                            values.push(fdd);
+                        }
+                    }
+                }.bind(this));
+                this.__setValue(values);
+            }.bind(this));
+        }else{
+            this.__setValue(value);
+        }
+    },
+    __setValue: function(value){
         if (value.length==1 && !(value[0])) value=[];
         var values = [];
         var comboxValues = [];