unknown 5 лет назад
Родитель
Сommit
5cb92ab430

+ 25 - 0
o2web/source/o2_core/o2/xScript/Environment.js

@@ -368,6 +368,7 @@ MWF.xScript.Environment = function(ev){
 
         /**保存data对象。
          * @method save
+         * @static
          * @memberOf module:data
          * @param {Function} [callback] - 保存成功后的回调函数。
          * @example
@@ -2236,6 +2237,7 @@ MWF.xScript.Environment = function(ev){
 
         /**获取业务数据
          * @method getData
+         * @static
          * @see module:data
          * @example
          *  var data = this.form.getData();
@@ -2246,6 +2248,7 @@ MWF.xScript.Environment = function(ev){
         /**保存当前表单所绑定的业务数据。<br/>
          * this.form.save()会触发 beforeSave和afterSave事件,因此在beforeSave和afterSave中不允许使用本方法。
          * @method save
+         * @static
          * @param {Function} [callback] - 保存后的回调
          * @param {Boolean} [silent] - 是否静默,否提示保存成功,默认为false
          * @example
@@ -2258,6 +2261,7 @@ MWF.xScript.Environment = function(ev){
         /**
          *关闭当前表单
          * @method close
+         * @static
          * @example
          * this.form.close();
          */
@@ -2266,6 +2270,7 @@ MWF.xScript.Environment = function(ev){
         /**本校验不包括校验意见,校验路由;通常用在弹出提交界面时候的校验
          * @summary 根据表单中所有组件的校验设置和“流转校验”脚本进行校验。
          * @method verify
+         * @static
          *  @example
          *  if( !this.form.verify() ){
          *      return false;
@@ -2282,6 +2287,7 @@ MWF.xScript.Environment = function(ev){
      * 可以通过this.workContext.getControl().allowProcessing来判断当前用户是否有权限进行流转。<br/>
      * this.form.process()会触发 beforeSave、afterSave、beforeProcess、afterProcess事件,因此在上述事件中不允许使用本方法。
      * @method process
+     * @static
      * @param {Object} [option] - 流程的相关数据,如果不带此参数,则弹出路由选择和意见填写框<br/>
      * 格式如下:
      <pre><code class="language-js">
@@ -2319,6 +2325,7 @@ MWF.xScript.Environment = function(ev){
          * 可以通过this.workContext.getControl().allowReset来判断当前用户是否有权限重置处理人。<br/>
          * this.form.reset()会触发 beforeReset、afterReset事件,因此在上述事件中不允许使用本方法。
          * @method reset
+         * @static
          * @param {Object} [option] - 进行重置处理人的相关参数,如果不带此参数,弹出重置处理人对话框<br/>
          * 格式如下:
          <pre><code class="language-js">
@@ -2361,6 +2368,7 @@ MWF.xScript.Environment = function(ev){
          * 可以通过this.workContext.getControl().allowRetract来判断当前用户是否有权限撤回。<br/>
          * this.form.retract()会触发 beforeRetract、afterRetract事件,因此在上述事件中不允许使用本方法。
          * @method retract
+         * @static
          * @param {Object} [option] - 进行撤回的相关参数,如果不提供option参数,则弹出撤回对话框。<br/>
          * 格式如下:
          <pre><code class="language-js">
@@ -2397,6 +2405,7 @@ MWF.xScript.Environment = function(ev){
         /**在已拆分的工作上添加分支。<b>(仅流程表单中可用)</b><br/>
          * 可以通过this.workContext.getControl().allowAddSplit来判断当前用户是否有权限。<br/>
          * @method addSplit
+         * @static
          * @param {Object} [option] - 添加分支的相关参数,如果不提供option参数,则弹出添加分支对话框。<br/>
          * 格式如下:
          <pre><code class="language-js">
@@ -2446,6 +2455,7 @@ MWF.xScript.Environment = function(ev){
         /**删除当前工作文档。<b>(仅流程表单中可用)</b><br/>
          * 可以通过this.workContext.getControl().allowDeleteWork来判断当前用户是否有权限删除文档。<br/>
          * @method deleteWork
+         * @static
          * @param {Object} [option] - 删除相关参数,如果不提供option参数,则弹出删除对话框。<br/>
          * 格式如下:
          <pre><code class="language-js">
@@ -2481,6 +2491,7 @@ MWF.xScript.Environment = function(ev){
 
         /**弹出一个确认框,带确认和关闭按钮
          * @method confirm
+         * @static
          * @param {String} type - 要显示的信息类型。可选值:success 成功,info :信息,error :错误, wran : 警告
          * @param {String} title - 确认框标题栏显示文本。
          * @param {String} text - 确认框的内容显示文本。
@@ -2521,6 +2532,7 @@ MWF.xScript.Environment = function(ev){
 
         /**弹出一个带关闭按钮的信息框
          * @method alert
+         * @static
          * @param {String} type - 要显示的信息类型。可选值:success 成功,info :信息,error :错误, wran : 警告
          * @param {String} title - 信息框标题栏显示文本。
          * @param {String} text - 信息框的内容显示文本。
@@ -2535,6 +2547,7 @@ MWF.xScript.Environment = function(ev){
 
         /**弹出一个提示框
          * @method notice
+         * @static
          * @param {String} content - 要显示的信息文本
          * @param {String} [type] - 要显示的信息类型。可选值:success 成功,info :信息,error :错误, wran : 警告
          * @param {Element} [target] - 信息框显示位置的参考DOM对象。
@@ -2555,6 +2568,7 @@ MWF.xScript.Environment = function(ev){
 
         /**给表单添加事件。
          * @method addEvent
+         * @static
          * @param {String} type - 事件名称,参考本API Classer->FormComponents->Form的事件
          * @param {Function} event - 事件方法。
          * @example
@@ -2567,6 +2581,7 @@ MWF.xScript.Environment = function(ev){
         /**用一个新的浏览器窗口来打开当前文档,用于打印。<b>(仅流程表单中可用)</b><br/>
          * 如不指定表单,则使用表单设计中指定的打印表单。<br/>
          * @method print
+         * @static
          * @param {String} [application] - 指定表单所在的流程应用ID或名称。省略此参数表示当前应用。
          * @param {String} [form] - 指定表单ID或名称。
          * @example
@@ -2591,6 +2606,7 @@ MWF.xScript.Environment = function(ev){
 
         /**同print方法。<b>(仅流程表单中可用)</b><br/>
          * @method openWindow
+         * @static
          * @see this.form.print()
          * @param {String} [application] - 指定表单所在的流程应用ID或名称。省略此参数表示当前应用。
          * @param {String} [form] - 指定表单ID或名称。
@@ -2609,6 +2625,7 @@ MWF.xScript.Environment = function(ev){
 
         /** 打开一个在流转或已完成的流程实例。<br/>
          * @method openWork
+         * @static
          * @param {String} [workId] - 在流转的流程实例ID。workId和workCompletedId两个参数必须提供其中一个
          * @param {String} [workCompletedId] - 已完成的流程实例ID。
          * @param {String} [title] - 手机端打开时的窗口标题。
@@ -2626,6 +2643,7 @@ MWF.xScript.Environment = function(ev){
 
         /** 使用流程的jobId打开工作。<br/>
          * @method openJob
+         * @static
          * @param {String} id - 流程的jobId,如果流程拆分后,有多个流程实例(workId会有多个),但jobId是唯一的。
          * @param {Boolean} [choice] - 如果有多个流程实例,是否弹出界面选择。如果传入false,则直接打开第一个工作。
          * @example
@@ -2732,6 +2750,7 @@ MWF.xScript.Environment = function(ev){
 
         /** 打开一个内容管理文档。<br/>
          * @method openDocument
+         * @static
          * @param {String} id - 内容管理文档实例的ID。
          * @param {Boolean} [title] - 手机APP端打开时的窗口标题。
          * @param {Object} [options] - 其他参数,内容如下<br>
@@ -2761,6 +2780,7 @@ MWF.xScript.Environment = function(ev){
 
         /**打开一个门户页面。<br/>
          * @method openPortal
+         * @static
          * @param {String} portal - 要打开的门户应用名称、别名或ID。
          * @param {String} [page] - 要打开的页面名称、别名或ID。如果忽略,则打开门户的默认首页
          * @param {Object} [par] - 打开页面可以传入参数。<br>在被打开的页面中,可以通过脚本this.page.parameters访问到此参数。
@@ -2796,6 +2816,7 @@ MWF.xScript.Environment = function(ev){
 
         /**打开一个内容管理栏目(应用)。<br/>
          * @method openCMS
+         * @static
          * @param {String} name - 内容管理栏目的名称、别名或ID。
          * @example
          this.form.openCMS("通知公告");
@@ -2814,6 +2835,7 @@ MWF.xScript.Environment = function(ev){
 
         /**打开一个流程应用。<br/>
          * @method openProcess
+         * @static
          * @param {String} name - 流程应用的名称、别名或ID。
          * @example
          this.form.openProcess("财务审批");
@@ -2832,6 +2854,7 @@ MWF.xScript.Environment = function(ev){
 
         /**打开任意一个component应用。<br/>
          * @method openApplication
+         * @static
          * @param {String} name - 要打开的component的名称。component对应的名称可以在“控制面板-系统设置-界面设置-模块部署”中找到(即“组件路径”)。
          * @param {Object} options - 打开的component的相关参数
          * @example
@@ -2853,6 +2876,7 @@ MWF.xScript.Environment = function(ev){
 
         /**创建一条内容管理文档。
          * @method createDocument
+         * @static
          * @param {(String|Object)} [columnOrOptions]
          * 如果不传参数,则弹出范围为平台所有栏目的选中界面。<br/>
          * 当使用String时为内容管理应用(栏目)的名称、别名或ID。<br/>
@@ -2947,6 +2971,7 @@ MWF.xScript.Environment = function(ev){
 
         /**启动一个流程实例。<br/>
          * @method startProcess
+         * @static
          * @param {String} app  - 流程应用的名称、别名或ID。
          * @param {String} process  - 要启动的流程的名称、别名或ID。
          * @param {Object} [data]   - 流程启动时默认的业务数据。

+ 133 - 0
o2web/source/o2_core/o2/xScript/PageEnvironment.js

@@ -1424,30 +1424,83 @@ MWF.xScript.PageEnvironment = function (ev) {
 
     //仅前台对象-----------------------------------------
     //form
+    /**
+     * page对象可在门户页面中可用。它的很多方法与form类似。<b>(仅前端脚本可用)</b><br/>
+     * @module page
+     * @example
+     * //您可以在门户表单中,通过this来获取page对象,如下:
+     * var page = this.page;
+     */
     this.page = this.form = {
+        /**获取当前页面的基本信息
+         * @method getInfor
+         * @see module:form.getInfor
+         */
         "getInfor": function () { return ev.pageInfor; },
         "infor": ev.pageInfor,
+        /**获取打开当前页面的component对象。
+         * @method getApp
+         * @see module:form.getApp
+         */
         "getApp": function () { return _form.app; },
         "app": _form.app,
+        /**获取page对应的DOM对象。
+         * @method node
+         * @see module:form.node
+         */
         "node": function () { return _form.node; },
         //"readonly": _form.options.readonly,
+        /**获取页面元素对象。
+         * @method get
+         * @see module:form.get
+         */
         "get": function (name) { return (_form.all) ? _form.all[name] : null; },
+
+        /**获取指定部件元素对象。<br/>
+         * @method getWidgetModule
+         * @static
+         * @param {String} widget  - 在主页面嵌入部件时用的标识。
+         * @param {String} moduleName  - 部件元素标识。
+         * @return {FormComponent} 请查看本文档的Classes导航下的FormComponents。
+         * @see module:form.get
+         * @example
+         * <caption>
+         * 1、设计了一个部件,包含一个设计元素subject。<br/>
+         * 2、在主页面里两次嵌入1步骤创建的部件,一个标识是widget_1, widget_2。
+         * </caption>
+         * var module = this.page.getWidgetModule( "widget_1", "subject"); //部件widget_1的subject组件
+         * var data2 = this.page.getWidgetModule( "widget_2", "subject").getData(); //部件widget_2的subject组件的值
+         */
         "getWidgetModule": function (widget, moduleName) {
             if (!_form.widgetModules || !_form.widgetModules[widget]) return null;
             var module = _form.widgetModules[widget][moduleName];
             return module || null;
         },
+        /**获取页面中可输入的字段元素对象
+         * @method getField
+         * @see module:form.getField
+         */
         "getField": function (name) { return _forms[name]; },
         "getAction": function () { return _form.workAction },
         "getDesktop": function () { return _form.app.desktop },
+
         "getData": function () { return new MWF.xScript.JSONData(_form.getData()); },
         //"save": function(callback){_form.saveWork(callback);},
+
+        /**关闭当前页面
+         * @method close
+         * @see module:form.close
+         */
         "close": function () { _form.closeWork(); },
 
         "print": function (application, form) {
             _form.printWork(application, form);
         },
 
+        /**弹出一个确认框
+         * @method confirm
+         * @see module:form.confirm
+         */
         "confirm": function (type, title, text, width, height, ok, cancel, callback, mask, style) {
             // var p = MWF.getCenter({"x": width, "y": height});
             // e = {"event": {"clientX": p.x,"x": p.x,"clientY": p.y,"y": p.y}};
@@ -1470,13 +1523,27 @@ MWF.xScript.PageEnvironment = function (ev) {
                 _form.confirm(type, e, title, text, width, height, ok, cancel, callback, mask, style);
             }
         },
+        /**显示一个带关闭按钮的信息框
+         * @method alert
+         * @see module:form.alert
+         */
         "alert": function(type, title, text, width, height){
             _form.alert(type, title, text, width, height);
         },
+
+        /**显示一个信息框
+         * @method notice
+         * @see module:form.notice
+         */
         "notice": function (content, type, target, where, offset, option) {
             _form.notice(content, type, target, where, offset, option);
         },
+        /**给页面添加事件。
+         * @method addEvent
+         * @see module:form.addEvent
+         */
         "addEvent": function (e, f) { _form.addEvent(e, f); },
+
         "openWindow": function (form, app) {
             _form.openWindow(form, app);
         },
@@ -1486,6 +1553,10 @@ MWF.xScript.PageEnvironment = function (ev) {
         "toPortal": function (portal, page, par) {
             _form.app.toPortal(portal, page, par);
         },
+        /**打开一个在流转或已完成的流程实例
+         * @method openWork
+         * @see module:form.openWork
+         */
         "openWork": function (id, completedId, title, options) {
             var op = options || {};
             op.workId = id;
@@ -1494,6 +1565,10 @@ MWF.xScript.PageEnvironment = function (ev) {
             op.appId = "process.Work" + (op.workId || op.workCompletedId);
             return layout.desktop.openApplication(this.event, "process.Work", op);
         },
+        /**使用流程的jobId打开工作
+         * @method openJob
+         * @see module:form.openJob
+         */
         "openJob": function (id, choice, options) {
             var workData = null;
             o2.Actions.get("x_processplatform_assemble_surface").listWorkByJob(id, function (json) {
@@ -1586,12 +1661,20 @@ MWF.xScript.PageEnvironment = function (ev) {
                 }
             }
         },
+        /**打开一个内容管理文档
+         * @method openDocument
+         * @see module:form.openDocument
+         */
         "openDocument": function (id, title, options) {
             var op = options || {};
             op.documentId = id;
             op.docTitle = title || "";
             layout.desktop.openApplication(this.event, "cms.Document", op);
         },
+        /**打开一个门户页面
+         * @method openPortal
+         * @see module:form.openPortal
+         */
         "openPortal": function (name, page, par) {
             var action = MWF.Actions.get("x_portal_assemble_surface");
             action.getApplication(name, function (json) {
@@ -1617,6 +1700,10 @@ MWF.xScript.PageEnvironment = function (ev) {
 
             });
         },
+        /**打开一个内容管理栏目(应用)
+         * @method openCMS
+         * @see module:form.openCMS
+         */
         "openCMS": function (name) {
             var action = MWF.Actions.get("x_cms_assemble_control");
             action.getColumn(name, function (json) {
@@ -1628,6 +1715,10 @@ MWF.xScript.PageEnvironment = function (ev) {
                 }
             });
         },
+        /**打开一个流程应用
+         * @method openProcess
+         * @see module:form.openProcess
+         */
         "openProcess": function (name) {
             var action = MWF.Actions.get("x_processplatform_assemble_surface");
             action.getApplication(name, function (json) {
@@ -1639,9 +1730,17 @@ MWF.xScript.PageEnvironment = function (ev) {
                 }
             });
         },
+        /**打开一个任意一个component应用
+         * @method openApplication
+         * @see module:form.openApplication
+         */
         "openApplication": function (name, options) {
             layout.desktop.openApplication(null, name, options);
         },
+        /**创建一个内容管理文档
+         * @method createDocument
+         * @see module:form.createDocument
+         */
         "createDocument": function (columnOrOptions, category, data, identity, callback, target, latest, selectColumnEnable, ignoreTitle) {
             var column = columnOrOptions;
             var onAfterPublish, onPostPublish;
@@ -1690,6 +1789,10 @@ MWF.xScript.PageEnvironment = function (ev) {
                 starter.load();
             })
         },
+        /**启动一个流程实例
+         * @method startProcess
+         * @see module:form.startProcess
+         */
         "startProcess": function (app, process, data, identity, callback, target, latest) {
             if (arguments.length > 2) {
                 for (var i = 2; i < arguments.length; i++) {
@@ -1748,7 +1851,37 @@ MWF.xScript.PageEnvironment = function (ev) {
                 }
             });
         },
+
+        /**
+         * 在打开的页面的任意脚本中,获取传入的参数。
+         * @member parameters
+         * @static
+         * @return {Boolean} 任意数据类型,根据传入的参数决定。
+         * @example
+         * //打开页面时传入参数:
+         * this.form.openPortal(id, "", {"type": "my type"});
+         *
+         * //在打开的页面的任意脚本中,可以获取parameters:
+         * var par = this.page.parameters;
+         * //par的内容:{"type": "my type"}
+         */
         "parameters": _form.options.parameters,
+
+        /**
+         * 在嵌入部件的时候,可以在主页面上传入参数。通过本方法,可以在对应部件或者部件元素的脚本中获取传入的参数。
+         * @method getWidgetPrameters
+         * @static
+         * @return {Object} 任意数据类型,根据传入的参数决定。
+         * @example
+         * var par = this.page.getWidgetPrameters();
+         * @example
+         * //在主页面嵌入部件的地方传入参数:
+         * return {"type": "my type"};
+         *
+         * //在对应部件脚本中,可以获取parameters:
+         * var par = this.page.getWidgetPrameters();
+         * //par的内容:{"type": "my type"}
+         */
         "getWidgetPrameters": function () {
             if (!this.target) return null;
             if (!this.target.widget) return null;

+ 284 - 0
o2web/source/o2_core/o2/xScript/ViewEnvironment.js

@@ -1,3 +1,48 @@
+/**
+ * StatementInfor 查询配置信息
+ * @typedef {Object} StatementInfor
+ * @example
+ * {
+    "query": "26d21c71-5114-4496-8ca1-a69e56324841", //所属应用id
+    "id": "ee334220-66d3-4f78-afce-8ccf6b995c8c", //查询id
+    "name": "测试查询", //名称
+    "alias": "", //别名
+    "description": "", //描述
+    "table": "", //自建表的id
+    "entityClassName": "com.x.processplatform.core.entity.content.Task", //系统表表名
+    "entityCategory": "official", //表类型 official(系统表) 或 dynamic(自建表)
+    "format": "jpql", //语句类型,jpql 或者 script(脚本)
+    "type": "select", //select/update/delete
+    "data": "SELECT o FROM Task o where o.person = :person", //查询语句
+    "countData": "SELECT count(o.id) FROM Task o where o.person = :person", //总数语句
+    "countScriptText" : "", //总数语句脚本
+    "scriptText" : "", //查询语句脚本
+    "viewJson": { ... } //视图相关信息
+}
+ */
+
+/**
+ * ViewInfor 视图配置信息
+ * @typedef {Object} ViewInfor
+ * @example
+ * {
+      "application": "db9fc893-7dbc-4e0f-a617-99089d2c6323", //视图所在应用
+      "query": "db9fc893-7dbc-4e0f-a617-99089d2c6323",  //视图所在应用,同application
+      "name": "视图自定义测试", //视图名称
+      "viewName": "视图自定义测试",  //视图名称,同name
+      "isExpand": "no",  //如果有分类,默认是否展开开
+      "id": "705ce967-2f9c-425c-8873-3bd729249e1d", //视图id
+      "alias": "", //视图别名
+      "description": "",  //视图描述
+      "display": true, //视图是否显示
+      "type": "cms", //视图嵌入的数据类型, cms 或 process
+      "count": 2000, //最多返回2000条
+      "pageSize": 20, //每页的条数
+      "createTime": "2019-09-02 10:18:27",
+      "updateTime": "2020-03-26 15:53:03"
+    }
+ */
+
 MWF.xScript = MWF.xScript || {};
 MWF.xScript.ViewEnvironment = function (ev) {
     var _form = ev.view;
@@ -1308,15 +1353,254 @@ MWF.xScript.ViewEnvironment = function (ev) {
 
     //仅前台对象-----------------------------------------
     //form
+
+    /**
+     * 当查询设计中使用了select语句,并且配置了视图,可以在查询视图中使用本章API。<br/>
+     * queryStatement对象在查询视图中可用。它的很多方法与queryView类似。<b>(仅前端脚本可用)</b><br/>
+     * @module queryStatement
+     * @example
+     * //您可以在查询视图中,通过this来获取queryStatement对象,如下:
+     * var queryStatement = this.queryStatement;
+     */
+
+    /**
+     * 当查询视图被嵌入到门户页面、流程表单或内容管理表单的时候,可以通过这个方法来获取页面或表单的上下文。
+     * @method getParentEnvironment
+     * @static
+     * @return {MWF.xScript.Environment|MWF.xScript.CMSEnvironment} 页面或表单的上下文.
+     * @example
+     * this.queryStatement.getParentEnvironment();
+     * @example
+     * var env = this.queryStatement.getParentEnvironment(); //当视图被嵌入到页面的时候,可以在视图里获取页面的上下文
+     * env.page.toPortal( "公文门户" ); //调用page的toPage() 跳转到其他门户
+     */
+
+    /**
+     * 获取查询视图当前页的基本信息。
+     * @method getPageInfor
+     * @memberOf module:queryStatement
+     * @static
+     * @return {Object} 当前页的信息,格式如下:
+     *<pre><code class='language-js'>{
+     *     "pages": 3, //总页数
+     *     "perPageCount": 50, //每页的条数
+     *     "currentPageNumber": 1 // 当前页数
+     * }
+     * </pre></code>
+     * @example
+     * this.queryStatement.getPageInfor();
+     */
+
+    /**
+     * 获取当前页的数据。
+     * @method getPageData
+     * @memberOf module:queryStatement
+     * @static
+     * @return {Object} 当前页数据。
+     * <div>数据格式和 jpql 语句的写法有关</div>
+     * 如:  "select o from table o" 返回 json数组
+     *<pre><code class='language-js'>[
+     {
+        "id" : "id1",
+        "title" : "title1"
+    },
+     {
+        "id" : "id2",
+        "title" : "title2"
+    },
+     ...
+     *]
+     * </pre></code>
+     * 如:"select id, title from table o" 返回 二维数组:
+     *<pre><code class='language-js'>[
+     ["id1", "title1"],
+     ["id2", "title2"],
+     ...
+     *]
+     *</pre></code>
+     * @example
+     * var data = this.queryStatement.getPageData();
+     */
+
+    /**
+     * 跳转到指定的页面。
+     * @method toPage
+     * @memberOf module:queryStatement
+     * @static
+     * @param {Number} pageNumber - 需要跳转的页码。
+     * @param {Function} [callback ] - 跳转的页面数据加载完成以后的回调方法。
+     * @example
+     * var data = this.queryStatement.toPage( pageNumber, callback );
+     * @example
+     * // 跳转到第2页并且获取该页的数据。
+     * this.queryStatement.toPage( 2, function(){
+     *      var data = this.queryStatement.getPageData();
+     * }.bind(this) )
+     */
+
+    /**
+     * 当查询视图设置了允许多选的时候,可以通过这个方法全部选中当前页面的条目。
+     * @method selectAll
+     * @memberOf module:queryStatement
+     * @static
+     * @example
+     * this.queryStatement.selectAll();
+     */
+
+    /**
+     * 当查询视图设置了允许多选的时候,可以通过这个方法取消选中的条目。
+     * @method unSelectAll
+     * @memberOf module:queryStatement
+     * @static
+     * @example
+     * this.queryStatement.unSelectAll();
+     */
+
+
+
+    /**
+     * queryView对象可在视图中可用。它的很多方法与form类似。<b>(仅前端脚本可用)</b><br/>
+     * @module queryView
+     * @example
+     * //您可以在视图中,通过this来获取queryView对象,如下:
+     * var queryView = this.queryView;
+     */
     this.page = this.form = this.queryView = this.queryStatement = {
+        /**
+         * 当视图被嵌入到门户页面、流程表单或内容管理表单的时候,可以通过这个方法来获取页面或表单的上下文。
+         * @method getParentEnvironment
+         * @static
+         * @return {MWF.xScript.Environment|MWF.xScript.CMSEnvironment} 页面或表单的上下文.
+         * @example
+         * this.queryView.getParentEnvironment();
+         * @example
+         * var env = this.queryView.getParentEnvironment(); //当视图被嵌入到页面的时候,可以在视图里获取页面的上下文
+         * env.page.toPortal( "公文门户" ); //调用page的toPage() 跳转到其他门户
+         */
         "getParentEnvironment" : function () { return _form.getParentEnvironment(); }, //视图嵌入的表单或页面的上下文
+
+        /**
+         * 获取查询的配置信息。
+         * @method getStatementInfor
+         * @memberOf module:queryStatement
+         * @static
+         * @return {StatementInfor} 查询的配置信息.
+         * @example
+         * this.queryStatement.getStatementInfor();
+         */
         "getStatementInfor" : function () { return _form.getStatementInfor ? _form.getStatementInfor() : null; },
+
+        /**
+         * 获取查询的配置信息。
+         * @method getViewInfor
+         * @memberOf module:queryView
+         * @static
+         * @return {ViewInfor} 视图的配置信息.
+         * @example
+         * this.queryView.getViewInfor();
+         */
         "getViewInfor" : function () { return _form.getViewInfor(); },
+
+        /**
+         * 获取视图或查询视图当前页的基本信息。
+         * @method getPageInfor
+         * @memberOf module:queryView
+         * @static
+         * @return {Object} 当前页的信息,格式如下:
+         *<pre><code class='language-js'>{
+         *     "pages": 3, //总页数
+         *     "perPageCount": 50, //每页的条数
+         *     "currentPageNumber": 1 // 当前页数
+         * }
+         * </pre></code>
+         * @example
+         * //视图中的用法
+         * this.queryView.getPageInfor();
+         *
+         * //查询视图中的用法
+         * this.queryStatement.getPageInfor();
+         */
         "getPageInfor" : function () { return _form.getPageInfor(); },
+
+        /**
+         * 获取当前页的数据。
+         * @method getPageData
+         * @memberOf module:queryView
+         * @static
+         * @return {Object} 当前页数据。
+         * <div>没有分类时候,数据格式如下:</div>
+         *<pre><code class='language-js'>[
+         *   {
+         *       "bundle": "099ed3c9-dfbc-4094-a8b7-5bfd6c5f7070", //cms 的 documentId, process 的 jobId
+         *      "data": {  //视图中配置的数据
+         *        "title": "考勤管理-配置-统计周期设置", //列名称及列值
+         *        "time": "2018-08-25 11:29:45"
+         *      }
+         *    },
+         *   ...
+         *]
+         * </pre></code>
+         * 有分类的时候,数据格式如下:
+         *<pre><code class='language-js'>[
+         *  {
+         *   "group": "工作日志",  //分类1
+         *   "list": [  //分类下的数据
+         *     {
+         *       "bundle": "001257be-725a-43cf-9679-3892bbab696a", //cms 的 documentId, process 的 jobId
+         *       "data": { //视图中配置的数据
+         *         "title": "标题",  //列名称及列值
+         *         "time": "2018-07-31 15:39:13",
+         *         "category": "工作日志"
+         *       }
+         *     },
+         *     ...
+         *   ]
+         *  },
+         *  ...
+         *]
+         *</pre></code>
+         * @example
+         * var data = this.queryView.getPageData();
+         */
         "getPageData" : function () { return _form.getPageData(); },
+
+        /**
+         * 跳转到指定的页面。
+         * @method toPage
+         * @memberOf module:queryView
+         * @static
+         * @param {Number} pageNumber - 需要跳转的页码。
+         * @param {Function} [callback ] - 跳转的页面数据加载完成以后的回调方法。
+         * @example
+         * var data = this.queryView.toPage( pageNumber, callback );
+         * @example
+         * // 跳转到第2页并且获取该页的数据。
+         * this.queryView.toPage( 2, function(){
+         *      var data = this.queryView.getPageData();
+         * }.bind(this) )
+         */
         "toPage" : function ( pageNumber, callback ) { return _form.toPage(pageNumber, callback); },
+
+        /**
+         * 当视图设置了允许多选的时候,可以通过这个方法全部选中当前页面的条目。
+         * @method selectAll
+         * @memberOf module:queryView
+         * @static
+         * @example
+         * this.queryView.selectAll();
+         */
         "selectAll" : function () { return _form.selectAll(); },
+
+        /**
+         * 当视图设置了允许多选的时候,可以通过这个方法取消选中的条目。
+         * @method unSelectAll
+         * @memberOf module:queryView
+         * @static
+         * @example
+         * this.queryView.unSelectAll();
+         */
         "unSelectAll" : function () { return _form.unSelectAll(); },
+
         "getSelectedData" : function () { return _form.getSelectedData(); },
         "setFilter" : function ( filter, callback ) { return _form.setFilter(filter, callback); },
         "setStatementFilter" : function ( filter , parameter, callback) { return _form.setFilter(filter, parameter, callback); },

+ 1 - 3
o2web/source/x_component_Selector/Identity.js

@@ -932,17 +932,15 @@ MWF.xApplication.Selector.Identity.ItemCategory = new Class({
                 }else{
                     var display = this.children.getStyle("display");
                     if (display === "none"){
-                        this.selector.fireEvent("expand", [this] );
                         this.children.setStyles({"display": "block", "height": "auto"});
                         this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_expand);
                         this.isExpand = true;
                         this.selector.fireEvent("expand", [this] );
                     }else{
-                        this.selector.fireEvent("collapse", [this] );
                         this.children.setStyles({"display": "none", "height": "0px"});
                         this.actionNode.setStyles(this.selector.css.selectorItemCategoryActionNode_collapse);
                         this.isExpand = false;
-                        this.selector.fireEvent("expand", [this] );
+                        this.selector.fireEvent("collapse", [this] );
                     }
                 }
                 if(callback)callback();