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

Merge branch 'fix/bug_5.2' into 'release'

草稿模式下,启动流程错误修复、保存、继续流转优化

See merge request o2oa/o2oa!1710
胡起 5 лет назад
Родитель
Сommit
9725cf7880

+ 24 - 8
o2web/source/o2_core/o2/xScript/CMSEnvironment.js

@@ -1224,15 +1224,31 @@ MWF.xScript.CMSEnvironment = function(ev){
                             "identity": identity,
                             "latest": latest,
                             "onStarted": function(data, title, processName){
-                                var currentTask = [];
-                                data.each(function(work){
-                                    if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
-                                }.bind(this));
-
-                                if (currentTask.length==1){
-                                    var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                if (data.work){
+                                    var work = data.work;
+                                    var options = {"draft": work, "appId": "process.Work"+(new o2.widget.UUID).toString(), "desktopReload": false};
                                     layout.desktop.openApplication(null, "process.Work", options);
-                                }else{}
+                                }else{
+                                    var currentTask = [];
+                                    data.each(function(work){
+                                        if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                    }.bind(this));
+
+                                    if (currentTask.length==1){
+                                        var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                        layout.desktop.openApplication(null, "process.Work", options);
+                                    }else{}
+                                }
+
+                                // var currentTask = [];
+                                // data.each(function(work){
+                                //     if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                // }.bind(this));
+                                //
+                                // if (currentTask.length==1){
+                                //     var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                //     layout.desktop.openApplication(null, "process.Work", options);
+                                // }else{}
 
                                 if (callback) callback(data);
                             }.bind(this)

+ 14 - 8
o2web/source/o2_core/o2/xScript/Environment.js

@@ -1350,15 +1350,21 @@ debugger;
                             "identity": identity,
                             "latest": latest,
                             "onStarted": function(data, title, processName){
-                                var currentTask = [];
-                                data.each(function(work){
-                                    if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
-                                }.bind(this));
-
-                                if (currentTask.length==1){
-                                    var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                if (data.work){
+                                    var work = data.work;
+                                    var options = {"draft": work, "appId": "process.Work"+(new o2.widget.UUID).toString(), "desktopReload": false};
                                     layout.desktop.openApplication(null, "process.Work", options);
-                                }else{}
+                                }else{
+                                    var currentTask = [];
+                                    data.each(function(work){
+                                        if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                    }.bind(this));
+
+                                    if (currentTask.length==1){
+                                        var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                        layout.desktop.openApplication(null, "process.Work", options);
+                                    }else{}
+                                }
 
                                 if (callback) callback(data);
                             }.bind(this)

+ 24 - 8
o2web/source/o2_core/o2/xScript/PageEnvironment.js

@@ -1178,15 +1178,31 @@ MWF.xScript.PageEnvironment = function (ev) {
                             "identity": identity,
                             "latest": latest,
                             "onStarted": function (data, title, processName) {
-                                var currentTask = [];
-                                data.each(function (work) {
-                                    if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
-                                }.bind(this));
-
-                                if (currentTask.length == 1) {
-                                    var options = { "workId": currentTask[0], "appId": currentTask[0] };
+                                if (data.work){
+                                    var work = data.work;
+                                    var options = {"draft": work, "appId": "process.Work"+(new o2.widget.UUID).toString(), "desktopReload": false};
                                     layout.desktop.openApplication(null, "process.Work", options);
-                                } else { }
+                                }else{
+                                    var currentTask = [];
+                                    data.each(function(work){
+                                        if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                    }.bind(this));
+
+                                    if (currentTask.length==1){
+                                        var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                        layout.desktop.openApplication(null, "process.Work", options);
+                                    }else{}
+                                }
+
+                                // var currentTask = [];
+                                // data.each(function (work) {
+                                //     if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                // }.bind(this));
+                                //
+                                // if (currentTask.length == 1) {
+                                //     var options = { "workId": currentTask[0], "appId": currentTask[0] };
+                                //     layout.desktop.openApplication(null, "process.Work", options);
+                                // } else { }
 
                                 if (callback) callback(data);
                             }.bind(this)

+ 24 - 8
o2web/source/o2_core/o2/xScript/ViewEnvironment.js

@@ -1066,15 +1066,31 @@ MWF.xScript.ViewEnvironment = function (ev) {
                             "identity": identity,
                             "latest": latest,
                             "onStarted": function (data, title, processName) {
-                                var currentTask = [];
-                                data.each(function (work) {
-                                    if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
-                                }.bind(this));
-
-                                if (currentTask.length == 1) {
-                                    var options = { "workId": currentTask[0], "appId": currentTask[0] };
+                                if (data.work){
+                                    var work = data.work;
+                                    var options = {"draft": work, "appId": "process.Work"+(new o2.widget.UUID).toString(), "desktopReload": false};
                                     layout.desktop.openApplication(null, "process.Work", options);
-                                } else { }
+                                }else{
+                                    var currentTask = [];
+                                    data.each(function(work){
+                                        if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                    }.bind(this));
+
+                                    if (currentTask.length==1){
+                                        var options = {"workId": currentTask[0], "appId": currentTask[0]};
+                                        layout.desktop.openApplication(null, "process.Work", options);
+                                    }else{}
+                                }
+
+                                // var currentTask = [];
+                                // data.each(function (work) {
+                                //     if (work.currentTaskIndex != -1) currentTask.push(work.taskList[work.currentTaskIndex].work);
+                                // }.bind(this));
+                                //
+                                // if (currentTask.length == 1) {
+                                //     var options = { "workId": currentTask[0], "appId": currentTask[0] };
+                                //     layout.desktop.openApplication(null, "process.Work", options);
+                                // } else { }
 
                                 if (callback) callback(data);
                             }.bind(this)

+ 0 - 2
o2web/source/x_component_process_TaskCenter/Main.js

@@ -1063,8 +1063,6 @@ MWF.xApplication.process.TaskCenter.Process = new Class({
     afterStartProcess: function(data, title, processName){
         this.recordProcessData();
 
-        //if (data[0].startMode==="draft"){
-        debugger;
         if (data.work){
             this.startProcessDraft(data, title, processName);
         }else{

+ 6 - 0
o2web/source/x_component_process_Work/Main.js

@@ -606,6 +606,12 @@ MWF.xApplication.process.Work.Main = new Class({
                         layout.appForm = this.appForm;
                         window.webkit.messageHandlers.appFormLoaded.postMessage(JSON.stringify(this.appForm.mobileTools));
                     }
+debugger;
+
+                    if (this.options.action=="processTask"){
+                        this.appForm.processWork();
+                        this.options.action = "";
+                    }
 
                     this.fireEvent("postLoadForm");
 

+ 3 - 3
o2web/source/x_component_process_Xform/Documenteditor.js

@@ -1519,7 +1519,7 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor =  new Cla
             }
         }
 
-        if (this.json.canDoublePage!=="n" && !layout.mobile){
+        //if (this.json.canDoublePage!=="n" && !layout.mobile){
             this.doublePageAction = new Element("div", {"styles": this.css.doc_toolbar_doublePage, "text": MWF.xApplication.process.Xform.LP.doublePage}).inject(this.toolbarNode);
             this.doublePageAction.addEvent("click", function(){
                 if (this.options.pageShow!=="double"){
@@ -1530,8 +1530,8 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor =  new Cla
                     //this._singlePage();
                 }
             }.bind(this));
-            //if (layout.mobile) this.doublePageAction.hide();
-        }
+            if (this.json.canDoublePage!=="n" && !layout.mobile) this.doublePageAction.hide();
+        //}
 
 
 

+ 37 - 21
o2web/source/x_component_process_Xform/Form.js

@@ -1235,11 +1235,11 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
         }
     },
 
-    saveFormData: function (callback, failure, history, data, issubmit) {
+    saveFormData: function (callback, failure, history, data, issubmit, isstart) {
         if (this.businessData.work.startTime) {
             this.saveFormDataInstance(callback, failure, history, data, issubmit);
         } else {
-            this.saveFormDataDraft(callback, failure, history, data, issubmit);
+            this.saveFormDataDraft(callback, failure, history, data, issubmit, isstart);
         }
     },
     saveFormDataInstance: function (callback, failure, history, data, issubmit) {
@@ -1258,7 +1258,7 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
         this.businessData.originalData = null;
         this.businessData.originalData = Object.clone(data);
     },
-    saveFormDataDraft: function (callback, failure, history, data, issubmit) {
+    saveFormDataDraft: function (callback, failure, history, data, issubmit, isstart) {
         if (this.officeList) {
             this.officeList.each(function (module) {
                 module.save(history);
@@ -1274,17 +1274,27 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
             this.workAction.getDraft(json.data.id, function (json) {
                 this.businessData.work = json.data.work;
                 this.app.options.draftId = json.data.work.id;
-                this.app.options.desktopReload = true;
 
-                this.app.appId = "process.Work" + json.data.work.id;
-                if (layout.desktop.apps) {
-                    delete layout.desktop.apps[this.app.options.appId];
-                } else {
-                    layout.desktop.apps = {};
+                if (layout.app && layout.app.inBrowser){
+                    if (layout.app) layout.app.$openWithSelf = true;
+                    if (callback) callback();
+                    if (!isstart) layout.desktop.openApplication(null, "process.Work", {"draftId": this.app.options.draftId});
+                }else{
+                    this.app.options.desktopReload = true;
+
+                    this.app.appId = "process.Work" + json.data.work.id;
+                    if (layout.desktop.apps) {
+                        delete layout.desktop.apps[this.app.options.appId];
+                    } else {
+                        layout.desktop.apps = {};
+                    }
+                    layout.desktop.apps[this.app.appId] = this.app;
+
+                    if (callback) callback();
+
+                    if (!isstart) this.app.reload();
                 }
-                layout.desktop.apps[this.app.appId] = this.app;
 
-                if (callback) callback();
             }.bind(this));
         }.bind(this), failure);
         this.businessData.originalData = null;
@@ -1840,20 +1850,26 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
         this.saveFormData(function () {
             this.workAction.startDraft(this.businessData.work.id, function (json) {
                 this.app.options.workId = json.data[0].work;
-                if (layout.mobile) {
+                if (layout.mobile || !layout.desktop.message) {
                     if (layout.notice) {
                         layout.notice(MWF.xApplication.process.Xform.LP.processStartedMessage + "“[" + json.data[0].processName + "]" + (this.businessData.data.title || this.businessData.data.subject));
                     }
                 } else {
-                    var msg = {
-                        "subject": MWF.xApplication.process.Xform.LP.processStarted,
-                        "content": "<div>" + MWF.xApplication.process.Xform.LP.processStartedMessage + "“[" + json.data[0].processName + "]" + (this.businessData.data.title || this.businessData.data.subject) + "”</div>"
-                    };
-                    var tooltip = layout.desktop.message.addTooltip(msg);
-                    var item = layout.desktop.message.addMessage(msg);
+                    if (layout.desktop.message){
+                        var msg = {
+                            "subject": MWF.xApplication.process.Xform.LP.processStarted,
+                            "content": "<div>" + MWF.xApplication.process.Xform.LP.processStartedMessage + "“[" + json.data[0].processName + "]" + (this.businessData.data.title || this.businessData.data.subject) + "”</div>"
+                        };
+
+                        var tooltip = layout.desktop.message.addTooltip(msg);
+                        var item = layout.desktop.message.addMessage(msg);
+                    }
                 }
-
-
+                if (layout.app && layout.app.inBrowser){
+                    if (layout.app) layout.app.$openWithSelf = true;
+                    layout.desktop.openApplication(null, "process.Work", {"workId": this.app.options.workId, "action": "processTask"});
+                }
+                this.app.options.action = "processTask";
                 this.app.reload();
 
                 //this.app.notice(MWF.xApplication.process.Xform.LP.dataSaved, "success");
@@ -1892,7 +1908,7 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
                 // }.bind(this), "failure": function(){}}, json.data[0].work);
 
             }.bind(this));
-        }.bind(this), null, false, null, false)
+        }.bind(this), null, false, null, false, true)
     },
     getCurrentTaskData: function (data) {
         if ((data.currentTaskIndex || data.currentTaskIndex === 0) && data.currentTaskIndex != -1) {

+ 17 - 7
o2web/source/x_desktop/js/base.js

@@ -225,14 +225,24 @@ o2.xDesktop.requireApp = function (module, clazz, callback, async) {
         var par = "app=" + encodeURIComponent(appNames) + "&status=" + encodeURIComponent((statusObj) ? JSON.encode(statusObj) : "") + "&option=" + encodeURIComponent((options) ? JSON.encode(options) : "");
         switch (appNames) {
             case "process.Work":
-                var url = "../x_desktop/work.html";
-                if (options.workId) {
-                    url += "?workid=" + options.workId;
-                    //window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workid=" + options.workId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
-                } else if (options.workCompletedId) {
-                    url += "?workcompletedid=" + options.workCompletedId;
-                    //window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workcompletedid=" + options.workCompletedId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
+                var url = "../x_desktop/work.html".toURI();
+                if (options.draft){
+                    url = "../x_desktop/app.html?" + par;
+                }else{
+                    url = url.setData(options).toString();
                 }
+
+                // if (options.workId) {
+                //     url += "?workid=" + options.workId+"&"+par;
+                //     //window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workid=" + options.workId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
+                // } else if (options.workCompletedId) {
+                //     url += "?workcompletedid=" + options.workCompletedId+"&"+par;;
+                //     //window.location = o2.filterUrl("../x_desktop/workmobilewithaction.html?workcompletedid=" + options.workCompletedId + ((layout.debugger) ? "&debugger" : "") + "&redirectlink=" + redirectlink);
+                // } else if (options.draftId){
+                //     url += "?draftId=" + options.draftId+"&"+par;;
+                // } else if (options.draft) {
+                //     url = "../x_desktop/app.html?" + par;
+                // }
                 var job = (options.jobid || options.jobId || options.job);
                 if (job) url += ((url.indexOf("?")!=-1) ? "&" : "?") + "jobid="+job;
                 url +=((layout.debugger) ? "&debugger" : "");