提交 defd2535 编写于 作者: U unknown

修复提交以后弹出的信息重复人员没有去重

上级 a63284f4
......@@ -48,7 +48,7 @@
"display": "inline-block",
"height": "18px"
},
"personfieldIcon": {
"textfieldIcon": {
"background": "url("+"../x_component_process_FormDesigner/Module/Calendar/default/icon/calendar.png) center center no-repeat",
"width": "18px",
"height": "18px",
......
......@@ -263,7 +263,15 @@ MWF.xApplication.process.Xform.$Input = MWF.APP$Input = new Class(
this.loadDescription();
}
},
/**
* @summary 判断组件是否只读.
* @example
* var readonly = this.form.get('subject').isReadonly();
* @return {Boolean} 是否只读.
*/
isReadonly : function(){
return !!(this.readonly || this.json.isReadonly);
},
getTextData: function(){
//var value = this.node.get("value");
//var text = this.node.get("text");
......@@ -284,13 +292,24 @@ MWF.xApplication.process.Xform.$Input = MWF.APP$Input = new Class(
return !data || !data.trim();
},
/**
* 该方法和 this.data.{fieldName} 在绝大部分的时候效果一样。区别如下:<br/>
* 当使用异步函数生成器(Promise)为组件赋值的时候,getData立即获取数据,可能返回修改前的值,当Promise执行完成以后,会返回修改后的值。<br/>
* this.data.{fieldName} 立即获取数据,可能获取到异步函数生成器,当Promise执行完成以后,会返回修改后的值。<br/>
* {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0#EggIl|具体差异请查看链接}
* 在脚本中使用 this.data[fieldName] 也可以获取组件值。
* 区别如下:<br/>
* 1、当使用Promise的时候<br/>
* 使用异步函数生成器(Promise)为组件赋值的时候,用getData方法立即获取数据,可能返回修改前的值,当Promise执行完成以后,会返回修改后的值。<br/>
* this.data[fieldName] 立即获取数据,可能获取到异步函数生成器,当Promise执行完成以后,会返回修改后的值。<br/>
* {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0#EggIl|具体差异请查看链接}<br/>
* 2、当表单上没有对应组件的时候,可以使用this.data[fieldName]获取值,但是this.form.get('fieldName')无法获取到组件。
* @summary 获取组件值。
* @example
* var data = this.form.get('subject').getData(); //没有使用promise的情况
* @example
* var data = this.form.get('fieldName').getData(); //没有使用promise的情况、
* @example
* //如果无法确定表单上是否有组件,需要判断
* var data;
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* data = this.form.get('fieldName').getData();
* }else{
* data = this.data['fieldName']; //直接从数据中获取字段值
* }
* @example
* //使用Promise的情况
* var field = this.form.get("fieldName");
......@@ -321,12 +340,20 @@ MWF.xApplication.process.Xform.$Input = MWF.APP$Input = new Class(
resetData: function(){
this.setData(this.getValue());
},
/**当参数为Promise的时候,请查看文档: {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0|使用Promise处理表单异步}
/**当参数为Promise的时候,请参考文档: {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0|使用Promise处理表单异步}<br/>
* 当表单上没有对应组件的时候,可以使用this.data[fieldName] = data赋值。
* @summary 为组件赋值。
* @param data{String|Promise} .
* @example
* @param data{String|Promise} .
* @example
* this.form.get("fieldName").setData("test"); //赋文本值
* @example
* @example
* //如果无法确定表单上是否有组件,需要判断
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* this.form.get('fieldName').setData( data );
* }else{
* this.data['fieldName'] = data;
* }
* @example
* //使用Promise
* var field = this.form.get("fieldName");
* var dict = new this.Dict("test"); //test为数据字典名称
......
......@@ -301,9 +301,17 @@ MWF.xApplication.process.Xform.Checkbox = MWF.APPCheckbox = new Class(
resetData: function(){
this.setData(this.getValue());
},
/**
/**当参数为Promise的时候,请查看文档: {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0|使用Promise处理表单异步}
* @summary 为字段赋值,并且使值对应的选项选中。
* @param data{String} .
* @param data{String|Promise} .
* @example
* this.form.get("fieldName").setData("test"); //赋文本值
* @example
* //使用Promise
* var field = this.form.get("fieldName");
* var dict = new this.Dict("test"); //test为数据字典名称
* var promise = dict.get("tools", true); //异步使用数据字典的get方法时返回Promise,参数true表示异步
* field.setData( promise );
*/
setData: function(data){
return this._setValue(data, "__setData");
......
MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
MWF.xApplication.process.Xform.DatagridMobile = new Class({
/** @class process.DatagridMobile 数据网格组件(移动端)。
* @example
* //可以在脚本中获取该组件
* //方法1:
* var attachment = this.form.get("name"); //获取组件
* //方法2
* var attachment = this.target; //在组件事件脚本中获取
* @extends MWF.xApplication.process.Xform.$Module
* @hideconstructor
*/
MWF.xApplication.process.Xform.DatagridMobile = new Class(
/** @lends MWF.xApplication.process.Xform.DatagridMobile# */
{
Implements: [Events],
Extends: MWF.APP$Module,
isEdit: false,
......@@ -25,6 +37,7 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
this.createMobileTable();
this.editable = (!this.readonly);
if (this.editable) this.editable = this.form.Macro.exec(((this.json.editableScript) ? this.json.editableScript.code : ""), this);
//this.editable = false;
......@@ -1331,9 +1344,43 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
if (this.table) this.table.setStyle("display", "none");
}
},
/**
* @summary 重置数据网格的值为默认值或置空。
* @example
* this.form.get('fieldName').resetData();
*/
resetData: function(){
this.setData(this._getValue());
},
/**当参数为Promise的时候,请查看文档: {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0|使用Promise处理表单异步}<br/>
* 当表单上没有对应组件的时候,可以使用this.data[fieldName] = data赋值。
* @summary 为数据网格赋值。
* @param data{DatagridData|Promise|Array} 必选,数组或Promise.
* @example
* this.form.get("fieldName").setData([]); //赋空值
* @example
* //如果无法确定表单上是否有组件,需要判断
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* this.form.get('fieldName').setData( data );
* }else{
* this.data['fieldName'] = data;
* }
*@example
* //使用Promise
* var field = this.form.get("fieldName");
* var promise = new Promise(function(resolve, reject){ //发起异步请求
* var oReq = new XMLHttpRequest();
* oReq.addEventListener("load", function(){ //绑定load事件
* resolve(oReq.responseText);
* });
* oReq.open("GET", "/data.json"); //假设数据存放在data.json
* oReq.send();
* });
* promise.then( function(){
* var data = field.getData(); //此时由于异步请求已经执行完毕,getData方法获得data.json的值
* })
* field.setData( promise );
*/
setData: function(data){
if (!data){
data = this._getValue();
......@@ -1459,10 +1506,24 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
},
/**
* @summary 获取总计数据.
* @example
* var totalObject = this.form.get('fieldName').getTotal();
* @return {Object} 总计数据
*/
getTotal: function(){
this._loadTotal();
return this.totalResaults;
},
/**
* @summary 判断数据网格是否为空.
* @example
* if( this.form.get('fieldName').isEmpty() ){
* this.form.notice('至少需要添加一条数据', 'warn');
* }
* @return {Boolean} 是否为空
*/
isEmpty: function(){
var data = this.getData();
if( !data )return true;
......@@ -1472,6 +1533,42 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
}
return false;
},
/**
* 在脚本中使用 this.data[fieldName] 也可以获取组件值。
* 区别如下:<br/>
* 1、当使用Promise的时候<br/>
* 使用异步函数生成器(Promise)为组件赋值的时候,用getData方法立即获取数据,可能返回修改前的值,当Promise执行完成以后,会返回修改后的值。<br/>
* this.data[fieldName] 立即获取数据,可能获取到异步函数生成器,当Promise执行完成以后,会返回修改后的值。<br/>
* {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0#EggIl|具体差异请查看链接}<br/>
* 2、当表单上没有对应组件的时候,可以使用this.data[fieldName]获取值,但是this.form.get('fieldName')无法获取到组件。
* @summary 获取数据网格数据.
* @example
* var data = this.form.get('fieldName').getData();
*@example
* //如果无法确定表单上是否有组件,需要判断
* var data;
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* data = this.form.get('fieldName').getData();
* }else{
* data = this.data['fieldName']; //直接从数据中获取字段值
* }
* @example
* //使用Promise
* var field = this.form.get("fieldName");
* var promise = new Promise(function(resolve, reject){ //发起异步请求
* var oReq = new XMLHttpRequest();
* oReq.addEventListener("load", function(){ //绑定load事件
* resolve(oReq.responseText);
* });
* oReq.open("GET", "/data.json"); //假设数据存放在data.json
* oReq.send();
* });
* promise.then( function(){
* var data = field.getData(); //此时由于异步请求已经执行完毕,getData方法获得data.json的值
* })
* field.setData( promise );
* @return {DatagridData}
*/
getData: function(){
if (this.editable!=false){
if (this.isEdit) this._completeLineEdit();
......@@ -1629,7 +1726,15 @@ MWF.xApplication.process.Xform.DatagridMobile = new Class({
}
return true;
},
/**
* @summary 根据组件的校验设置进行校验。
* @param {String} routeName - 可选,路由名称.
* @example
* if( !this.form.get('fieldName').validation() ){
* return false;
* }
* @return {Boolean} 是否通过校验
*/
validation: function(routeName, opinion){
if (this.isEdit){
if (!this.editValidation()){
......
/**
* 数据网格数据结构.
* @typedef {Object} DatagridData
* @property {Array} data - 数据网格列表数据
* @property {Object} total - 统计数据
* @example
* {
"data": [ //数据网格条目
{
"datagrid_datagrid$Title": { //数据网格第1列title标识
"org_20": { //数据网格第1列字段标识
"distinguishedName": "张三@bf007525-99a3-4178-a474-32865bdddec8@I",
"id": "bf007525-99a3-4178-a474-32865bdddec8",
"name": "张三",
"person": "0c828550-d8ab-479e-9880-09a59332f1ed",
"unit": "9e6ce205-86f6-4d84-96e1-83147567aa8d",
"unitLevelName": "兰德纵横/市场营销部",
"unitName": "市场营销部"
}
},
"datagrid_datagrid$Title_1": { //数据网格第2列title标识
"number": "111" //数据网格第2列字段标识和值
},
"datagrid_datagrid$Title_2": { //数据网格第3列title标识
"textfield_2": "杭州" //数据网格第3列字段标识和值
},
"datagrid_datagrid$Title_3": { //数据网格第4列title标识
"attachment_1": [ //数据网格第4列字段标识
{
"activityName": "拟稿",
"extension": "jpg",
"id": "9514758e-9e28-4bfe-87d7-824f2811f173",
"lastUpdateTime": "2020-12-09 21:48:03",
"length": 452863.0,
"name": "111.jpg",
"person": "李四@lisi@P"
}
]
}
},
...
],
"total": { //统计数据,列title设置了总计
"datagrid_datagrid$Title_1": "333", //总计列1
"datagrid_datagrid$Title_2": "2" //总计列2
}
}
*/
MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
/** @class process.Button 数据网格组件(PC端)。
/** @class process.DatagridPC 数据网格组件(PC端)。
* @example
* //可以在脚本中获取该组件
* //方法1:
......@@ -1121,9 +1169,34 @@ MWF.xApplication.process.Xform.DatagridPC = new Class(
resetData: function(){
this.setData(this._getValue());
},
/**
/**当参数为Promise的时候,请查看文档: {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0|使用Promise处理表单异步}<br/>
* 当表单上没有对应组件的时候,可以使用this.data[fieldName] = data赋值。
* @summary 为数据网格赋值。
* @param data{Array} - 必选,数组.
* @param data{DatagridData|Promise|Array} 必选,数组或Promise.
* @example
* this.form.get("fieldName").setData([]); //赋空值
* @example
* //如果无法确定表单上是否有组件,需要判断
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* this.form.get('fieldName').setData( data );
* }else{
* this.data['fieldName'] = data;
* }
*@example
* //使用Promise
* var field = this.form.get("fieldName");
* var promise = new Promise(function(resolve, reject){ //发起异步请求
* var oReq = new XMLHttpRequest();
* oReq.addEventListener("load", function(){ //绑定load事件
* resolve(oReq.responseText);
* });
* oReq.open("GET", "/data.json"); //假设数据存放在data.json
* oReq.send();
* });
* promise.then( function(){
* var data = field.getData(); //此时由于异步请求已经执行完毕,getData方法获得data.json的值
* })
* field.setData( promise );
*/
setData: function(data){
if (!data){
......@@ -1233,11 +1306,42 @@ MWF.xApplication.process.Xform.DatagridPC = new Class(
}
return false;
},
/**
* 在脚本中使用 this.data[fieldName] 也可以获取组件值。
* 区别如下:<br/>
* 1、当使用Promise的时候<br/>
* 使用异步函数生成器(Promise)为组件赋值的时候,用getData方法立即获取数据,可能返回修改前的值,当Promise执行完成以后,会返回修改后的值。<br/>
* this.data[fieldName] 立即获取数据,可能获取到异步函数生成器,当Promise执行完成以后,会返回修改后的值。<br/>
* {@link https://www.yuque.com/o2oa/ixsnyt/ws07m0#EggIl|具体差异请查看链接}<br/>
* 2、当表单上没有对应组件的时候,可以使用this.data[fieldName]获取值,但是this.form.get('fieldName')无法获取到组件。
* @summary 获取数据网格数据.
* @example
* @example
* var data = this.form.get('fieldName').getData();
* @return {Object} - 格式如下{ data : [] }.
*@example
* //如果无法确定表单上是否有组件,需要判断
* var data;
* if( this.form.get('fieldName') ){ //判断表单是否有无对应组件
* data = this.form.get('fieldName').getData();
* }else{
* data = this.data['fieldName']; //直接从数据中获取字段值
* }
* @example
* //使用Promise
* var field = this.form.get("fieldName");
* var promise = new Promise(function(resolve, reject){ //发起异步请求
* var oReq = new XMLHttpRequest();
* oReq.addEventListener("load", function(){ //绑定load事件
* resolve(oReq.responseText);
* });
* oReq.open("GET", "/data.json"); //假设数据存放在data.json
* oReq.send();
* });
* promise.then( function(){
* var data = field.getData(); //此时由于异步请求已经执行完毕,getData方法获得data.json的值
* })
* field.setData( promise );
* @return {DatagridData}
*/
getData: function(){
if (this.editable!=false){
......
MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
/** @class process.Button 容器组件。
/** @class process.Div 容器组件。
* @example
* //可以在脚本中获取该组件
* //方法1:
......
MWF.xDesktop.requireApp("process.Xform", "$Module", null, false);
MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Class({
/** @class process.Documenteditor 公文编辑器。
* @example
* //可以在脚本中获取该组件
* //方法1:
* var attachment = this.form.get("name"); //获取组件
* //方法2
* var attachment = this.target; //在组件事件脚本中获取
* @extends MWF.xApplication.process.Xform.$Module
* @hideconstructor
*/
MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Class(
/** @lends MWF.xApplication.process.Xform.Documenteditor# */
{
Extends: MWF.APP$Module,
options: {
"moduleEvents": ["load", "queryLoad", "beforeLoad", "postLoad", "afterLoad", "loadPage"],
......@@ -42,6 +54,9 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
this.active();
}
},
/**激活板式文件编辑
* 设置了延迟加载的时候,可以通过这个方法来激活
*/
active: function(){
this._loadModuleEvents();
if (this.fireEvent("queryLoad")){
......@@ -2482,6 +2497,9 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
_loadValue: function(){
var data = this._getBusinessData();
},
/**重新计算板式文件的所有字段,当字段是脚本时可以使用该方法立即更新
*/
reload: function(){
this.resetData();
},
......@@ -2509,6 +2527,8 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
if( typeOf(data) !== "object" )return true;
return !data.filetext || data.filetext===this.json.defaultValue.filetext;
},
/*获取板式文件数据,返回Object
*/
getData: function(){
//if (this.editMode){
......@@ -2592,6 +2612,8 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
tmpdiv.destroy();
}
},
/**设置
*/
setData: function(data, diffFiletext){
if (data){
this.data = data;
......@@ -2898,6 +2920,8 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
}
return node;
},
/*将板式文件内容以html形式输出
*/
getDocumentHtml: function(){
var tmpNode = this.contentNode.getFirst().getFirst().clone(true);
var htmlNode = tmpNode.getLast();
......@@ -2922,6 +2946,8 @@ MWF.xApplication.process.Xform.Documenteditor = MWF.APPDocumenteditor = new Cla
tmpNode.destroy();
return "<html xmlns:v=\"urn:schemas-microsoft-com:vml\"><head><meta charset=\"UTF-8\" /></head><body>"+htmlStr+"</body></html>";
},
/*将板式文件转换成附件,转换的文件名和格式等信息与配置有关
* */
toWord: function(callback, name){
var docNmae = name || "";
......
......@@ -1422,14 +1422,21 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
if (data.signalStack && data.signalStack.length) {
var activityUsers = [];
data.signalStack.each(function (stack) {
var ids = [];
var idList = [];
if (stack.splitExecute) {
ids = stack.splitExecute.splitValueList || [];
idList = stack.splitExecute.splitValueList || [];
}
if (stack.manualExecute) {
ids = stack.manualExecute.identities || [];
idList = stack.manualExecute.identities || [];
}
var count = 0;
var ids = [];
idList.each( function(i){
var cn = o2.name.cn(i);
if( !ids.contains( cn ) ){
ids.push(cn)
}
});
if (ids.length > 8) {
count = ids.length;
ids = ids.slice(0, 8);
......@@ -1449,7 +1456,10 @@ MWF.xApplication.process.Xform.Form = MWF.APPForm = new Class({
data.properties.nextManualList.each(function (a) {
var ids = [];
a.taskIdentityList.each(function (i) {
ids.push(o2.name.cn(i))
var cn = o2.name.cn(i);
if( !ids.contains( cn ) ){
ids.push(cn)
}
});
var t = "<b>" + MWF.xApplication.process.Xform.LP.nextActivity + "</b><span style='color: #ea621f'>" + a.activityName + "</span>;<b>" + MWF.xApplication.process.Xform.LP.nextUser + "</b><span style='color: #ea621f'>" + ids.join(",") + "</span>";
activityUsers.push(t);
......
......@@ -16,11 +16,11 @@ print("----发送待办开始---------");
//var Read_Service_URL ='http://10.11.198.224:9083/UnifiedWorkbench/ProcessReadService';
//WSDL http://10.11.198.224:9083/UnifiedWorkbench/ProcessReadService/ProcessReadService.wsdl
var Todo_Service_URL = 'http://10.11.198.209:9083/UnifiedWorkbench/ProcessTaskService';
var Read_Service_URL ='http://10.11.198.209:9083/UnifiedWorkbench/ProcessReadService';
var Todo_Service_URL = 'http://hostname/UnifiedWorkbench/ProcessTaskService';
var Read_Service_URL ='http://hostname/UnifiedWorkbench/ProcessReadService';
var Project_Name = '安徽智和';
var Project_Password = 'ahzh';
var Project_Name = '测试';
var Project_Password = 'password';
function getServerHost(){
return "http://zhtest.ah.unicom.local";
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册