为了体现移动应用优势,提升公司办公效率,通过移动OA建立线上工作方式,简化传统公司工作方式,结合现有EMM管理平台与MBaas数据相结合,满足高度运转的公司变化需要。 本文档供项目组全体成员及项目组领导、单元测试人员、及相关人员阅读,方便后期项目更新维护、相关人员尽快熟悉项目内容。
本文档用于企业移动协同办公的详细设计,该详细设计的范围是:系统各组成部分的构成、各个部分的相关功能描述及相关代码的详细介绍。
OA : 办公自动化(Office Automation,简称OA):是利用无线网络实现办公自动化的技术。它将原有OA系统上的公文、通讯录、日程、文件管理、通知公告等功能迁移到手机等移动设备上,让用户可以随时随地进行掌上办公,对于突发性事件和紧急性事件有极其高效和出色的支持。
接口编号:zywx-culture-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行cultureListView.load(0)函数调用接口获取企业文化列表。
接口参数:{
"ifno": "zywx-culture-0001",
"condition": {
"rowCnt": "10",
"pageNo": pageNo
},
"content": {
"cltrType":"",
"cltrTtl":""
}
}
培训活动列表(cis_train_content.html)
接口编号:zywx-cult-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:存储appcan.setLocVal('CIS-TYPEJONED',"NO")以便设置相应接口参数;执行trainListView.load(0)函数调用接口获取培训活动列表。
接口参数:{
"ifno": "zywx-cult-0001",
"condition": {
"rowCnt": "10",
"pageNo": pageNo
},
"content": {
"cltrTtl":""
}
}
接口编号:zywx-actv-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:存储appcan.setLocVal('CIS-TYPEJONED',"NO")以便设置相应接口参数;执行sportsListView.load(0)函数调用接口获取文体活动列表。
接口参数:{
"ifno": "zywx-actv-0001",
"condition": {
"rowCnt": "10",
"pageNo": pageNo
},
"content": {
"actvTtl":""
}
}
接口编号:zywx-members-0002
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:存储appcan.setLocVal('CIS-TYPEJONED',"YES")以便设置相应接口参数;执行trainListView.load(0)函数调用接口获取已报名培训活动列表。
接口参数:{
"ifno": "zywx-members-0002",
"condition": {
"rowCnt": "10",
"pageNo": pageNo
"objEntityTypeId":"06"
},
"content": {
"title":""
}
}
接口编号:zywx-members-0002
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:存储appcan.setLocVal('CIS-TYPEJONED',"YES")以便设置相应接口参数;执行sportsListView.load(0)函数根据相应参数调用接口获取文体活动列表。
接口参数:{
"ifno": "zywx-members-0002",
"condition": {
"rowCnt": "10",
"pageNo": pageNo
"objEntityTypeId":"07"
},
"content": {
"title":""
}
}
接口编号:zywx-comm-0004
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行cultureView.load()函数,根据活动ID,调用接口获取详情。
接口参数:{
"ifno" : "zywx-comm-0004",
"condition": {
},
"content": {
"entityTypeId" : "05",
"objectId" : objectId
}
}
接口编号:
1、类型不同,接口编号不同。
2、当类型为培训活动时,接口编号为:zywx-cult-0002
3、当类型为文体活动时,接口编号为:zywx-actv-0002
接口地址: 服务器地址+端口号 + "emoa/app"
代码说明:
1、活动类型不同,entityTypeId参数值不同。
2、当类型为培训活动时,entityTypeId值为:06
3、当类型为文体活动时,entityTypeId值为:07
4、进入页面执行getDetail()函数,根据活动ID,调用接口获取详情。
注:接口调用详见3.1.1.1企业文化列表(cis_culture_content.html)代码示例
接口参数:{
"ifno": (cisType=='cultivate_card'?"zywx-cult-0002": "zywx-actv-0002"),
"condition": {
},
"content": {
"entityTypeId": (cisType=='cultivate_card'?"06": "07"),
"objectId" : objectId
}
} |
接口编号:zywx-members-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、活动类型不同,objEntityTypeId参数值不同。
2、当类型为培训活动时,entityTypeId值为:0
3、当类型为文体活动时,entityTypeId值为:1
注:接口调用详见3.1.1.1企业文化列表(cis_culture_content.html)代码示例
接口参数:{
"ifno": "zywx-members-0001",
"condition": {
"cultNumber": cultNumber,
//人数限定"oprTypeId": "01"
},
"content": {
"entityTypeId": "08",
"entity": {
"objObjectId": objectId,
"objEntityTypeId": (cisType=='cultivate_card'?0: 1),
//0: 培训活动,1:文体活动"
signupType": 0 //0: 自己报名, 1: 代报名
}
}
}
接口编号:zywx-notice-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行noticeListView.load(0)函数,根据活动ID,调用接口获取详情。
接口参数:{
"ifno": "zywx-notice-0001",
"condition": {
"pageNo": pageNo,
"rowCnt": 10
},
"content": {
"noticeTtl": '',
"noticeType": ''
}
}
接口编号:zywx-comm-0004
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行noticeView.load()函数根据相应参数调用接口获取公告详情。
接口参数:{
"ifno": "zywx-comm-0004",
"condition": {
},
"content": {
"objectId": objectId,
"entityTypeId": "09"
}
}
接口编号:zywx-ryyd-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行getDetail()函数根据相应参数调用接口获取员工入职列表。注意:接口返回值data.msg.entryInfo存在即属于员工入职列表项
接口参数:{
"ifno": "zywx-ryyd-0001",
"condition": {}, ,
"content": {}
}
接口编号:zywx-ryyd-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行getDetail()函数根据相应参数调用接口获取员工异动列表。注意:接口返回值data.msg.transferInfo存在即属于员工异动列表项
接口参数:{
"ifno": "zywx-ryyd-0001",
"condition": {}, ,
"content": {}
}
接口编号:
1、获取考勤数据接口:zywx-atten-0002
2、打卡接口:zywx-atten-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、进入页面执行selData()函数,调用接口获取当前月份打卡情况。
2、点击头部右侧日历按钮,选取时间后,通知punchCrad_content.html页面执行selData()函数更新页面数据。
3、打卡调用common.js中的addDaka()函数。详见注释4.8.1addDaka()
接口参数:{
"ifno": "zywx-atten-0002",
"condition": {}, ,
"content": {
"year": curYear,
"month": curMonth
}
}
代码示例:1、右侧日历按钮,点击选取年份和月份,调用openDatePickerWithoutDay方法打开日期选择器。
uexControl.openDatePickerWithoutDay(year, months);
2、获取当前年份、月份
var curYear = curDate.getFullYear();//当前年
var curMonth = curDate.getMonth()+1;//当前月
接口编号:zywx-rule-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行RuleListViewInstance.load()函数根据相应参数调用接口获取规章制度列表。
接口参数:{
"ifno": "zywx-rule-0001",
"condition": { ,
"pageNo": pageNo,
"rowCnt": 10
},
"content": {
"keyWord": '',
"ruleTtl": ''
}
}
接口编号:zywx-comm-0004
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行ruleView.load()函数根据相应参数调用接口获取规章制度详情。
接口参数:{
"ifno": "zywx-comm-0004",
"condition": {
},
"content": {
"objectId": objectId,
"entityTypeId": "10"
}
}
接口编号:
1、获取某天日程的编号:zywx-schedule-0001
2、删除日程接口编号:zywx-comm-0003
3、获取某月有活动的日期的接口编号:zywx-schedule-0002
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、执行openCalendar()函数,使用uexCalendar插件,显示日历。
2、选中某一天时执行schedListView.load()函数,查询当天日程列表。
3、执行SchedView.swipeLeft(),实现日程单项左滑动显示删除按钮效果。
4、执行SchedView.swipeRight(),实现日程单项右滑动隐藏删除按钮效果。
5、执行SchedView.gesture(),显示弹窗询问是否删除日志。
6、执行SchedView.discard(),删除日程。
7、执行calendarView.load()获取每月有活动的日期。
接口参数:
1、获取某天日程接口参数:
{
"ifno": "zywx-schedule-0001",
"condition": {
"year": scdlY, //年
"month": scdlM,
day": scdlD//日
},
"content": {
}
}
2、删除日程接口参数
{
"ifno": "zywx-comm-0003",
"condition": {
"oprTypeId": "03"
},
"content": {
"objectId": objectId,
"entityTypeId": "25"
}
}
3、获取某月有活动的日期的接口参数:
{
"ifno": "zywx-schedule-0002",
"condition": {
"year": scdlY,
//年"month": scdlM//月
},
"content": {
}
}
4、打开日历,传递的数据
var json={
"frame":{
"y":y//日历的起始高度(距离顶部的距离)
},
"type":"0",
"needScroll":"0",
"startDate":rcxsny,
"selectedColor":"0xe5e5e5",//日历选中项的颜色
"todayColor":"0x50b9ff"//today的颜色
};
接口编号:zywx-comm-0004
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行schedView.load()调用接口获取数据
接口参数:{
"ifno": "zywx-comm-0004",
"condition": {
},
"content": {
"objectId": objectId,
"entityTypeId": "25"
}
}
接口编号:zywx-comm-0002
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、进入页面,首先判断当前操作是编辑还是新建
;appcan.locStorage.val("openRichengPage")为’1’表示打开编辑日程页。
2、执行schedView.initData()函数展示旧数据。
3、选取日期使用uexControl.openDatePicker(year, month, day)日期选择器。
4、选取时间使用uexControl.openTimePicker(hours, min)日期选择器。
5、执行schedView.submit()函数调用接口存储数据,接口调用成功后通知日程列表页面以及日程详情页面刷新。
接口参数:{
"ifno": (objectId?"zywx-comm-0002": "zywx-comm-0001"),
"condition": {
"oprTypeId": (objectId?"02": "01")
},
"content": {
"entityTypeId": "25",
"entity": {
"schedTypeId": schedTypeId, //0工作、1个人、2特殊、3重要
"schedContent": schedContent,
"startTime": startTime,
"endTime": endTime,
"remind": remind, //0否,1是
"remindTime": remindTime
}
}
}
接口编号:zywx-comm-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、进入页面,首先判断当前操作是编辑还是新建;appcan.locStorage.val("openRichengPage")为’0’表示打开编辑日程页。
2、执行schedView.submit()函数调用接口存储数据,接口调用成功后通知日程列表页面以及日程详情页面刷新。
接口参数:{
"ifno": (objectId?"zywx-comm-0002": "zywx-comm-0001"),
"condition": {
"oprTypeId": (objectId?"02": "01")
},
"content": {
"entityTypeId": "25",
"entity": {
"schedTypeId": schedTypeId, //0工作、1个人、2特殊、3重要
"schedContent": schedContent,
"startTime": startTime,
"endTime": endTime,
"remind": remind, //0否,1是
"remindTime": remindTime
}
}
}
接口编号:zywx-workFlow-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行BillTypeView.load()函数根据相应参数调用接口获取工单列表。
接口参数:{
"ifno" : "zywx-workFlow-0001",
"condition": {
"url" : "/appdo-web-flow/workFlowData/getBillTypeList"
},
"content": {
"tenantId" : tenantId,
"metaid" : "",
"billKey" : "",
"prco_inset_id" : "",
"rowCnt" : "",
"pageNo" : ""
}
}
接口编号:zywx-workFlow-0005
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行workflowView.load()调用接口获取工单详情。
接口参数:{
"ifno": "zywx-workFlow-0005",
"condition": {
"url": "/appdo-web-flow/workFlowData/getBillTypeTemplateFileds",
"objectId": this.workflowdata.businessKey,
"entityTypeId": "24"
},
"content": {
"tenantId": this.workflowdata.tenantId,
"billKey": this.workflowdata.busiid,
"metaid": this.workflowdata.metaid
}
}
接口编号:zywx-workFlow-0001
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:进入页面执行WorkFlowTrailView.load()调用接口获取办事轨迹数据。
接口参数:{
"ifno" : "zywx-workFlow-0001",
"condition": {
"url" : "/appdo-web-flow/workFlowData/getHistoryList"
},
"content": {
"tenantId" : this.WORKFLOWDATA.tenantId,
"billKey" : this.WORKFLOWDATA.busiid,
"metaid" : this.WORKFLOWDATA.metaid,
"prco_inset_id" : this.WORKFLOWDATA.instanceid,
"rowCnt" : "100",
"pageNo" : "1"
}
}
代码说明:
获取工单审批页面存储的数据即appcan.getLocVal("workFlowType"),根据数据使用FOR循环展示各种类型审批工单。
接口编号:zywx-workFlow-0008
接口地址:服务器地址+端口号 + "emoa/app"
代码说明:
1、执行add( )初始化工单信息,自动填充某些字段
2、执行FormView.save()提交工单
接口参数:{
"ifno": "zywx-workFlow-0008",
"condition": {
"url": "/appdo-web-flow/workFlowAction/saveForm/" + options.flag,
"masifno": "zywx-note-0001"
},
"content": {
"tenantId": String(workflowdata.tenantId),
"entityTypeId": "24",
"entity": this.toJSON()
}
}
接口编号:1、获取工单信息接口编号:zywx-workFlow-0005
2、工单编辑后提交接口编号:zywx-workFlow-0008
3、工单编辑后保存接口:zywx-workFlow-0004|
接口地址:服务器地址+端口号 + "emoa/app"
代码说明
:1、执行update( )初始化工单信息
2、执行FormView.save()提交工单
接口参数:
读取工单接口参数:
{
"ifno": "zywx-workFlow-0005",
"condition": {
"url": "/appdo-web-flow/workFlowData/getBillTypeTemplateFileds"
},
"content": {
"tenantId": workflowdata.tenantId,
"metaid": workflowdata.metaid
}
}
未提交工单编辑后提交接口参数:
{
"ifno": "zywx-workFlow-0008",
"condition": {
"url": "/appdo-web-flow/workFlowAction/saveForm/1",
"masifno": "zywx-note-0004"
},
"content": {
"metaid": workflowdata.metaid,
"user_info_id": workflowdata.userId,
"tenantId": String(workflowdata.tenantId),
"objectId": this.id,
"entityTypeId": "24",
"entity": this.toJSON()
}
}
工单(除未提交订单)编辑后提交接口参数:
{
"ifno": "zywx-workFlow-0008",
"condition": {
"url": "/appdo-web-flow/workFlowAction/commitTask",
"masifno": "zywx-note-0004",
"oprTypeId": "02",
"editTypeId": "02", //编辑种类 01:办理,02编辑提交
"edit": {
"objectId": this.id,
"entityTypeId": "24",
"entity": this.toJSON()
}
},
"content": {
"user_info_id": workflowdata.userId,
"tenantId": String(workflowdata.tenantId),
"taskId": workflowdata.taskId,
"approve": "true",
"approveResult": ""
}
}
工单编辑后保存接口:
{
"ifno": "zywx-workFlow-0004",
"condition": {
"url": "",
"masifno": "zywx-note-0004"
},
"content": {
"objectId": this.id,
"entityTypeId": "24",
"entity": this.toJSON()
}
}
代码说明
1、addDaka()为在common.js 中封装的函数 2、getBaiduFromGoogle接口在设备未开启定位服务时跳转到系统的定位设置页面 3、根据获取的经纬度执行addDakaDo()函数调用接口进行打卡
代码示例
1、addDaka()函数
function addDaka(cb) {
appcan.ready(function() {
uexLocation.cbGetBaiduFromGoogle = function(log, lat) {
appcan.logs("===" + log + "lat==" + lat);
addDakaDo(cb, lat, log);
}
var n = 0;
uexLocation.onChange = function(lat, log) {
n++;
uexLocation.closeLocation();
if (n == 1) {
if (isAndroid) {
addDakaDo(cb, lat, log);
} else {
uexLocation.getBaiduFromGoogle(log, lat);
}
}
}
});
uexLocation.openLocation();
}
2、接口编号:zywx-atten-0001 3、接口参数:
{
"ifno": "zywx-atten-0001",
"condition": { },
"content": {
"lat": latitude,
"lng": longitude
}
}