提交 ff1f6ba1 编写于 作者: U unknown

jsdoc

上级 fc06c27a
......@@ -6,13 +6,14 @@
* O2OA 前端脚本基于您使用的浏览器的Javascript引擎,使用Javascript语法。
* 您可以通过脚本访问和操作允许的DOM对象;也可以通过平台定义的API操作表单、业务数据、组织、视图等各种对象。
* 本API是O2OA前台脚本的编写说明,您可以通过脚本访问和操作平台内的各种对象。
## API总览
### Modules
* 为脚本封装的对象、方法和类
<table>
<tr>
<td><a href="module-data.html">业务数据 - data</a></td>
......@@ -20,9 +21,9 @@
<td><a href="module-documentContext.html">内容管理实例 - documentContext</a></td>
</tr>
<tr>
<td><a href="module-org.html">组织 - org</a></td>
<td><a href="module-form.html">流程表单 - form</a></td>
<td><a href="module-page.html">页面 - page</a></td>
<td><a href="module-org.html">组织查询 - org</a></td>
<td><a href="module-form.html">流程及内容管理表单 - form</a></td>
<td><a href="module-page.html">门户页面 - page</a></td>
</tr>
<tr>
<td><a href="module-queryView.html">视图 - queryView</a></td>
......@@ -31,13 +32,18 @@
</tr>
<tr>
<td><a href="module-queryStatement.html">查询视图 - queryStatement</a></td>
<td><a href="module-statement.html">查询执行 - statement</a></td>
<td><a href="module-Actions.html">Actions - Actions</a></td>
<td><a href="module-statement.html">查询视图执行 - statement</a></td>
<td><a href="module-Actions.html">服务调用 - Actions</a></td>
</tr>
<tr>
<td><a href="module-include.html">引用 - include</a></td>
<td><a href="module-include.html">脚本引用 - include</a></td>
<td><a href="module-define.html">方法定义 - define</a></td>
<td><a href="module-session.html">session - session</a></td>
<td><a href="module-session.html">当前用户 - session</a></td>
</tr>
<tr>
<td><a href="module-wait.html">表单等待 - wait</a></td>
<td></td>
<td></td>
</tr>
</table>
......@@ -119,7 +125,7 @@
#### CMS 内容管理表单组件
<table>
<tr>
<td><a href="MWF.xApplication.process.Xform.Form.html">表单 - Form</a></td>
<td><a href="CMSForm.html">内容管理表单 - CMSForm</a></td>
<td><a href="MWF.xApplication.process.Xform.Label.html">文本 - Label</a></td>
<td><a href="MWF.xApplication.process.Xform.Textfield.html">文本字段 - Textfield</a></td>
</tr>
......@@ -188,7 +194,7 @@
#### Portal 门户页面组件
<table>
<tr>
<td><a href="MWF.xApplication.process.Xform.Form.html">表单 - Form</a></td>
<td><a href="PortalPage.html">页面 - PortalPage</a></td>
<td><a href="MWF.xApplication.process.Xform.Div.html">容器 - Div</a></td>
<td><a href="MWF.xApplication.process.Xform.Label.html">文本 - Label</a></td>
</tr>
......
......@@ -1542,11 +1542,12 @@ MWF.xScript.CMSEnvironment = function(ev){
/**发布当前文档。<b>(仅内容管理表单中可用)</b>
* @method publish
* @memberOf module:form
* @param {Function} callback - 发布后的回调方法
* @o2syntax
this.form.publish();
this.form.publish( callback );
*/
"publish": function(option){
_form.publishDocument()
"publish": function(callback){
_form.publishDocument(callback)
},
//"archive": function(option){
// _form.archiveDocument()
......
......@@ -2022,6 +2022,82 @@ MWF.xScript.Environment = function(ev){
//可在调用前执行 var resolve = this.wait();
//在异步调用结束后 执行 resolve.cb();
//目前只有表单的queryload事件支持此方法。
/**
* this.wait是一个方法,可以用来处理异步调用后的页面加载。<br/>
* 该方法使用的具体场景:为了加快速度,需要一次性加载全部外部资源(如:数据字典、外部JS、内容管理文档)后,再进行表单的加载。<br/>
* this.wait需和this.goon配合使用。<br/>
* <b>目前只有流程表单的queryload事件支持此方法。</b>
* @module wait
* @o2range {Process}
* @o2syntax
* var resolve = this.wait(); //让表单停止加载页面
*
* if (resolve && resolve.cb){
* resolve.cb(); //通过 resolve.cb() 方法继续执行表单加载
* }else{
* //如果没有发生异步,则resolve.cb方法不存在,
* //所以在回调中中使用this.goon();使表单继续加载
* this.goon();
* }
* @example
* <caption>需要在加载数据字典,内容管理文档数据,按照条件获取的脚本后,再进行加载表单。</caption>
*
* var resolve = this.wait(); //this.wait()让表单加载等待回调
* var scriptLoaded = false; //脚本是否加载完成标识,按条件判断的脚本才建议用this.include();,否则使用预加载脚本更快。
* var documentLoaded = false; //内容管理文档是否加载完成标识
* var dictLoaded = true; //数据字典是否加载完成标识
*
* //检查是否全部资源已加载,如果是继续加载表单
* var checkLoad = function(){
* if (scriptLoaded && documentLoaded && dictLoaded){ //各种资源以及加载完成
* if (resolve && resolve.cb){
* resolve.cb(); //通过 resolve.cb() 方法继续执行表单加载
* }else{
* //如果没有发生异步,则resolve.cb方法不存在,
* //所以在回调中中使用this.goon();使表单继续加载
* this.goon();
* }
* }
* }.bind(this);
*
* //判断内容管理文档加载
* if( this.data.documentId ){
* //异步载入内容管理文档
* o2.Actions.get("x_cms_assemble_control").getDocument(this.data.documentId, function (json) {
* this.form.documentJson = json; //将数据存在this.form上,以便其他地方使用
* documentLoaded = true; //标记内容管理加载完成
* checkLoad(); //检查全部资源是否完成加载
* }.bind(this));
* }else{
* documentLoaded = true; ////标记内容管理加载完成
* checkLoad(); //检查全部资源是否完成加载
* }
*
* //判断脚本加载
* if( this.data.scriptName ){ //假设scriptName为判断条件
* //加载脚本
* this.include( this.data.scriptName, function(){ //第二个参数为异步加载后的回调
* scriptLoaded = true; //标记脚本加载完成
* checkLoad(); //检查全部资源是否完成加载
* }, true ); //第三个参数表示异步
* }else{
* scriptLoaded = true; ////标记脚本加载完成
* checkLoad(); //检查全部资源是否完成加载
* }
*
* //加载数据字典bulletinDictionary的category数据
* var dict = new Dict("bulletinDictionary");
* dict.get("category", function(data){ //成功的回调
* this.form.bulletinCategory = data; //将数据存在this.form上,以便其他地方使用
* dictLoaded = true; //标记数据字典加载完成
* checkLoad(); //检查全部资源是否完成加载
* }.bind(this), function(xhr){ //错误的回调
* dictLoaded = true; ////标记数据字典加载完成
* checkLoad(); //检查全部资源是否完成加载
* }, true //异步执行
* )
*/
this.wait = function(){
var _self = this;
resolve = {"cb": _self.goon.bind(_self)};
......
......@@ -8,7 +8,22 @@ MWF.xDesktop.requireApp("process.Xform", "Form", null, false);
MWF.require("MWF.widget.O2Identity", null, false);
MWF.xDesktop.requireApp("cms.Xform", "Package", null, false);
MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
/** @class CMSForm 内容管理表单。
* @o2category FormComponents
* @o2range {CMS}
* @alias CMSForm
* @example
* //可以在脚本中获取表单
* //方法1:
* var form = this.form.getApp().appForm; //获取表单
* //方法2
* var form = this.target; //在表单本身的事件脚本中获取
* @hideconstructor
*/
MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class(
/** @lends CMSForm# */
{
Implements: [Options, Events],
Extends: MWF.APPForm,
options: {
......@@ -18,29 +33,131 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
"autoSave": false,
"saveOnClose": false,
"showAttachment": true,
"moduleEvents": ["queryLoad",
"moduleEvents": [
/**
* 表单加载前触发。表单html已经就位。
* @event CMSForm#queryLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"queryLoad",
/**
* 表单加载前触发。数据(businessData)已经就绪。
* @event CMSForm#beforeLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeLoad",
/**
* 表单的所有组件加载前触发,此时表单的样式和js head已经加载。
* @event CMSForm#beforeModulesLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeModulesLoad",
/**
* 表单加载后触发。
* @event CMSForm#postLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"postLoad",
/**
* 表单的所有组件加载后触发。
* @event CMSForm#afterModulesLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"afterModulesLoad",
/**
* 表单加载后触发。
* @event CMSForm#afterLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"afterLoad",
/**
* 保存前触发。
* @event CMSForm#beforeSave
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeSave",
/**
* 数据已经整理完成,但还未保存到后台时触发。this.event指向整理完成的数据
* @event CMSForm#afterSave
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"postSave",
/**
* 数据保存到后台后触发。
* @event CMSForm#afterSave
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"afterSave",
/**
* 关闭前触发。
* @event CMSForm#beforeClose
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeClose",
/**
* 发布前触发。
* @event CMSForm#beforePublish
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforePublish",
/**
* 数据已经整理完成,但还未调用服务发布触发。this.event指向整理完成的数据
* @event CMSForm#postPublish
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"postPublish",
/**
* 执行后台服务发布后触发。
* @event CMSForm#afterPublish
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"afterPublish",
/**
* 删除前触发。
* @event CMSForm#beforeDelete
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeDelete",
/**
* 删除后触发。
* @event CMSForm#afterDelete
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"afterDelete",
"beforeModulesLoad",
"resize",
"afterModulesLoad"]
"resize"
]
},
/**
* @summary 获取表单的所有数据.
* @method getData
* @memberof CMSForm
* @example
* var data = this.form.getApp().appForm.getData();
* @return {Object}
*/
initialize: function (node, data, options) {
this.setOptions(options);
/**
* @summary 表单容器
* @see https://mootools.net/core/docs/1.6.0/Element/Element
* @member {Element}
* @example
* //可以在脚本中获取表单容器
* var formContainer = this.form.getApp().appForm.container;
*/
this.container = $(node);
this.container.setStyle("-webkit-user-select", "text");
this.data = data;
/**
* @summary 表单的配置信息,比如表单名称等等.
* @member {Object}
* @example
* //可以在脚本中获取表单配置信息
* var json = this.form.getApp().appForm.json; //表单配置信息
* var name = json.name; //表单名称
*/
this.json = data.json;
this.html = data.html;
......@@ -48,7 +165,35 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
this.cssPath = this.options.cssPath || "../x_component_cms_Xform/$Form/" + this.options.style + "/css.wcss";
this._loadCss();
/**
* @summary 表单中的所有组件数组.
* @member {Array}
* @example
* //下面的样例对表单组件进行循环,并且判断是输入类型的组件
* var modules = this.form.getApp().appForm.modules; //获取所有表单组件
* for( var i=0; i<modules.length; i++ ){ //循环处理组件
* //获取组件的类型
var moduleName = module.json.moduleName;
if( !moduleName ){
moduleName = typeOf(module.json.type) === "string" ? module.json.type.toLowerCase() : "";
}
if( ["calendar","combox","number","textfield"].contains( moduleName )){ //输入类型框
//do something
}
* }
*/
this.modules = [];
/**
* 该对象的key是组件标识,value是组件对象,可以使用该对象根据组件标识获取组件。<br/>
* 需要注意的是,在子表单中嵌入不绑定数据的组件(比如div,common,button等等),系统允许重名。<br/>
* 在打开表单的时候,系统会根据重名情况,自动在组件的标识后跟上 "_1", "_2"。
* @summary 表单中的所有组件对象.
* @member {Object}
* @example
* var moduleAll = this.form.getApp().appForm.all; //获取组件对象
* var subjectField = moduleAll["subject"] //获取名称为subject的组件
*/
this.all = {};
this.forms = {};
......@@ -555,6 +700,14 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
}.bind(this));
}
},
/**
* @summary 弹出删除文档确认框.
* @method deleteDocument
* @memberof CMSForm
* @example
* this.form.getApp().appForm.deleteDocument();
*/
deleteDocument: function () {
var _self = this;
var p = MWF.getCenterPosition(this.app.content, 380, 150);
......@@ -593,6 +746,13 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
});
},
/**
* @summary 编辑文档.
* @method editDocument
* @memberof CMSForm
* @example
* this.form.getApp().appForm.editDocument();
*/
editDocument: function () {
if (this.app.inBrowser) {
this.modules.each(function (module) {
......@@ -613,6 +773,13 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
},
//2019-11-29 移动端 开启编辑模式
/**
* @summary 移动端开启编辑模式.
* @method editDocumentForMobile
* @memberof CMSForm
* @example
* this.form.getApp().appForm.editDocumentForMobile();
*/
editDocumentForMobile: function () {
if (this.app.mobile) {
this.app.options.readonly = false;
......@@ -620,6 +787,13 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
}
},
/**
* @summary 弹出设置热点的界面.
* @method setPopularDocument
* @memberof CMSForm
* @example
* this.form.getApp().appForm.setPopularDocument();
*/
setPopularDocument: function () {
this.app.setPopularDocument();
},
......@@ -644,6 +818,15 @@ MWF.xApplication.cms.Xform.Form = MWF.CMSForm = new Class({
}
},
/**
* @summary 将新上传的附件在指定的附件组件中展现.
* @method uploadedAttachment
* @memberof CMSForm
* @param {String} site - 附件组件的标识
* @param {String} id - 新上传的附件id
* @example
* this.form.getApp().appForm.uploadedAttachment(site, id);
*/
uploadedAttachment: function (site, id) {
this.documentAction.getAttachment(id, this.businessData.document.id, function (json) {
var att = this.all[site];
......
......@@ -14,7 +14,7 @@ MWF.xDesktop.requireApp("cms.Xform", "widget.Log", null, false);
* @hideconstructor
*/
MWF.xApplication.cms.Xform.Log = MWF.CMSLog = new Class(
/** @lends MWF.xApplication.cms.Xform.Log# */
/** @lends CMSLog# */
{
Extends: MWF.APP$Module,
_loadUserInterface: function(){
......
......@@ -35,7 +35,7 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
*/
"queryLoad",
/**
* 表单加载前触发。已提示抢办锁定。
* 表单加载前触发。如果是流程表单,已提示抢办锁定。
* @event MWF.xApplication.process.Xform.Form#beforeLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
......@@ -53,7 +53,7 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
*/
"postLoad",
/**
* 表单的所有组件后触发。表单包含有子表单、子页面、部件时,此事件会在这些组件加载后触发。
* 表单的所有组件加载后触发。表单包含有子表单、子页面、部件时,此事件会在这些组件加载后触发。
* @event MWF.xApplication.process.Xform.Form#afterModulesLoad
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
......@@ -65,13 +65,13 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
*/
"afterLoad",
/**
* 保存前触发。流转前也会触发本事件。
* 保存前触发。如果是流程表单,流转前也会触发本事件。
* @event MWF.xApplication.process.Xform.Form#beforeSave
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
"beforeSave",
/**
* 保存后触发。流转后也会触发本事件。
* 保存后触发。如果是流程表单,流转后也会触发本事件。
* @event MWF.xApplication.process.Xform.Form#afterSave
* @see {@link https://www.yuque.com/o2oa/ixsnyt/hm5uft#i0zTS|组件事件说明}
*/
......@@ -180,7 +180,7 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
/**
* @summary 表单的配置信息,比如表单名称,提交方式等等.
* @member {JsonObject}
* @member {Object}
* @example
* //可以在脚本中获取表单配置信息
* var json = this.form.getApp().appForm.json; //表单配置信息
......@@ -3126,11 +3126,6 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
}
});
},
/**
* @summary 一键下载.
* @example
* this.form.getApp().appForm.downloadAll();
*/
downloadAll: function () {
var htmlFormId = "";
o2.Actions.load("x_processplatform_assemble_surface").AttachmentAction.uploadWorkInfo(this.businessData.work.id, "pdf", {
......@@ -4263,3 +4258,94 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class(
}
});
/**
* @class PortalPage 门户页面。
* @alias PortalPage
* @o2category FormComponents
* @o2range {Portal}
* @extends MWF.xApplication.process.Xform.Form
* @example
* //可以在脚本中获取页面
* //方法1:
* var page = this.form.getApp().appForm; //获取页面
* //方法2
* var page = this.target; //在页面本身的事件脚本中获取
* @hideconstructor
*/
var PortalPage="";
/**
* @event PortalPage#beforeProcessWork
* @ignore
*/
/**
* @event PortalPage#beforeProcess
* @ignore
*/
/**
* @event PortalPage#afterProcess
* @ignore
*/
/**
* @event PortalPage#beforeReset
* @ignore
*/
/**
* @event PortalPage#afterReset
* @ignore
*/
/**
* @event PortalPage#beforeRetract
* @ignore
*/
/**
* @event PortalPage#afterRetract
* @ignore
*/
/**
* @event PortalPage#beforeReroute
* @ignore
*/
/**
* @event PortalPage#afterReroute
* @ignore
*/
/**
* @event PortalPage#beforeDelete
* @ignore
*/
/**
* @event PortalPage#afterDelete
* @ignore
*/
/**
* @event PortalPage#beforeReaded
* @ignore
*/
/**
* @event PortalPage#afterReaded
* @ignore
*/
/**
* @method PortalPage#getRouteDataList
* @ignore
*/
/**
* @method PortalPage#pressWork
* @ignore
*/
/**
* @method PortalPage#rerouteWork
* @ignore
*/
/**
* @method PortalPage#readedWork
* @ignore
*/
/**
* @method PortalPage#uploadedAttachment
* @ignore
*/
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册