提交 577985b3 编写于 作者: 蔡祥熠

Merge branch 'feature/JSDoc' into 'wrdp'

Merge of feature/JSDoc to wrdp

See merge request o2oa/o2oa!2659
......@@ -44,7 +44,7 @@
"title": "O2OA前台API" //最终生成的文档中标题
},
"o2" : {
"actionDir" : "./o2web/jsdoc/"
"actionOutPath" : "./o2web/jsdoc/{actionRoot}/{actionName}.json"
}
}
//执行命令: jsdoc -c ./o2web/jsdoc.conf.json
\ No newline at end of file
......@@ -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>
......
......@@ -32,35 +32,6 @@ MWF.xScript.CMSEnvironment = function(ev){
//this.inquiredRouteList = null;
//workContext
/**
* DocumentControl  内容管理的权限对象。
* @typedef {Object} DocumentControl
* @example
{
"allowRead": true, //是否允许阅读文档
"allowPublishDocument": true, //是否允许发布文档
"allowSave": true, //是否允许保存文档
"allowPopularDocument": true, //是否允许设置为热点
"allowEditDocument": true, //是否允许编辑文档
"allowDeleteDocument": true //是否允许删除文档
}
*/
/**
* DocumentAttachmentData  内容管理的权限对象。
* @typedef {Object} DocumentAttachmentData
* @example
{
"id": "a5cc5858-cac5-445a-a0a5-888d224eb2f6", //附件ID
"site": "attachment", //附件存储位置(一般用于区分附件在哪个表单元素中显示)
"name": "13145352_115454884000_2.jpg", //附件名称
"appId": "c295f34c-9ce1-4122-b795-820267e32b68", //栏目ID
"categoryId": "33fb19f0-0670-464d-875c-32fb86148f7a", //分类ID
"documentId": "ca74cbef-2a7f-401a-80e3-577ac9839348", //文档ID
"creatorUid": "XX@huqi@P", //附件上传人
"extension": "jpg",
"length": 364507, //附件大小
}
*/
/**
* 你可以通过documentContext获取内容管理实例相关的对象数据。
* @module documentContext
......@@ -75,25 +46,35 @@ MWF.xScript.CMSEnvironment = function(ev){
* 获取当前内容管理实例的文档对象:document对象。
* @method getDocument
* @static
* @return {Document} 内容管理实例对象.
* @return {Document} 文档对象.
* @o2ActionOut x_cms_assemble_control.WoDocument|true
* @o2syntax
* var doc = this.documentContext.getDocument();
*/
"getDocument": function(){return ev.document },
/**
* 获取当前人对内容管理实例的权限。
* 获取当前人对文档的权限。
* @method getControl
* @static
* @return {DocumentControl} 当前人对内容管理实例的所拥有的权限.
* @return {DocumentControl} 当前人对文档所拥有的权限.
* <pre><code class='language-js'>{
* "allowRead": true, //是否允许阅读文档
* "allowPublishDocument": true, //是否允许发布文档
* "allowSave": true, //是否允许保存文档
* "allowPopularDocument": true, //是否允许设置为热点
* "allowEditDocument": true, //是否允许编辑文档
* "allowDeleteDocument": true //是否允许删除文档
* }</code></pre>
* @o2syntax
* var control = this.documentContext.getControl();
*/
"getControl": function(){return ev.control;},
/**
* 获取当前流程实例的附件对象列表。
* 获取当前文档的附件对象列表。
* @method getAttachmentList
* @static
* @return {DocumentAttachment[]} 当前人对内容管理实例的所拥有的权限.
* @return {DocumentFileInfo[]} 当前文档的附件对象列表.
* @o2ActionOut x_cms_assemble_control.FileInfoAction.get
* @o2syntax
* var attachmentList = this.documentContext.getAttachmentList();
*/
......@@ -1561,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()
......
......@@ -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(){
......
......@@ -1035,38 +1035,7 @@ MWF.xApplication.process.Xform.AttachmentController = new Class({
}
});
/**
* 流程实例的附件数据结构.
* @typedef {Object} WorkAttachmentData
* @property {String} id - 附件id.
* @property {String} name - 附件标题.
* @property {String} person - 上传人.
* @property {Number} orderNumber - 排序号.
* @property {String} activityName - 上传的节点.
* @property {Object} control - 当前登录人员对附件拥有的权限.
* @property {Boolean} control.allowRead - 是否允许阅读.
* @property {Boolean} control.allowEdit - 是否允许编辑.
* @property {Boolean} control.allowControl - 是否允许设置.
* @property {Number} length - 附件大小.
* @property {String} createTime - 创建时间.
* @property {String} updateTime - 修改时间.
* @property {String} extension - 附件扩展名.
* @example
* {
"id": "56c4e86f-a4c8-4cc2-a150-1a0d2c5febcb", //附件ID
"name": "133203a2-92e6-4653-9954-161b72ddb7f9.png", //附件名称
"extension": "png", //附件扩展名
"length": 43864, //附件大小
"person": "xx@huqi@P", //附件上传人
"lastUpdateTime": "2018-09-27 15:50:34", //最后的修改时间
"lastUpdatePerson": "xx@huqi@P", //最后的修改人
"activity": "e31ad938-c495-45a6-8d77-b8a9b61a165b", //附件上传的活动ID
"activityName": "申请人", //附件上传的活动名称
"activityType": "manual", //附件上传的活动类型
"site": "$mediaOpinion", //附件存储位置(一般用于区分附件在哪个表单元素中显示)
"type": "image/png" //附件类型(contentType)
}
*/
/** @class Attachment 附件组件。
* @example
......@@ -1723,7 +1692,21 @@ MWF.xApplication.process.Xform.Attachment = MWF.APPAttachment = new Class(
},
/**
* @summary 为组件重新设置附件,该附件必须已经上传。
* @param data{WorkAttachmentData} .
* @param {Object} data.
* <pre><code class='language-js'>{
* "id": "56c4e86f-a4c8-4cc2-a150-1a0d2c5febcb", //附件ID
* "name": "133203a2-92e6-4653-9954-161b72ddb7f9.png", //附件名称
* "extension": "png", //附件扩展名
* "length": 43864, //附件大小
* "person": "xx@huqi@P", //附件上传人
* "lastUpdateTime": "2018-09-27 15:50:34", //最后的修改时间
* "lastUpdatePerson": "xx@huqi@P", //最后的修改人
* "activity": "e31ad938-c495-45a6-8d77-b8a9b61a165b", //附件上传的活动ID
* "activityName": "申请人", //附件上传的活动名称
* "activityType": "manual", //附件上传的活动类型
* "site": "$mediaOpinion", //附件存储位置(一般用于区分附件在哪个表单元素中显示)
* "type": "image/png" //附件类型(contentType)
* }</code></pre>
*/
setData: function(data){
this.attachmentController.clear();
......
......@@ -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.
先完成此消息的编辑!
想要评论请 注册