yylib-quick-mobile
Version:
yylib-quick-mobile
549 lines (547 loc) • 15.3 kB
JavaScript
/**
* Created by ludl3 on 2018/6/14.
*
* 列表模版列表默认事件处理Handler
*/
const COMP_DATA_LIST = 'YYList';
const COMP_DATA_REPEATER = 'YYRepeater';
const COMP_QUERY_PLAN = 'YYQueryPlan';
var PubConstants = {
DEFAULT_PK_FIELD_VALUE: "id", // 默认的主键字段值
};
const COMP_APPROVE_HISTORY_MODAL = 'YYApproveHistoryModal';
const COMP_APPROVE_HISTORY = 'YYApproveHistory';
var ajax=window.YYUtils.Ajax;
var AuthToken =window.YYUtils.AuthToken;//单点登录工具类
var ListEventHandler = {};
import {Modal} from 'antd-mobile';
var _ = require('lodash');
var {YYToast,YYApproveHistory} = require('yylib-antd-mobile');
var getDefaultTemplateUrl = window.EnvConfig.ADDR + '/icop-support-web/searchTemplate/getDefaultTemplate';
ListEventHandler.assign=function(obj1,obj2){
return _.merge(obj1,obj2)
}
/**
* 列表界面初始化
* @param page
* @param urls 列表页面操作的urls
* @param
*/
ListEventHandler.init = function (page, urls) {
if (!urls) {
console.error("初始化列表界面失败:urls未定义");
return;
}
this.urls = urls;
var listData = [];
var list = this.getDataList(page);
this.offline = list&&list.api&&list.api.props&&list.api.props.offline;
var queryPlan = this.getQueryPlan(page);
let _self = this;
if (queryPlan){//查询方案
var billType = queryPlan.billType&&queryPlan.billType.code;
if (!billType) {
YYToast.fail('查询方案未设置billType',1);
}
else {
var params = {
userId: AuthToken.getUserId(),
billType: billType,
orgId: AuthToken.getOrgaId(),
roleId: AuthToken.getCurrentRoleId()
};
this.getDefaultTemplate(page,getDefaultTemplateUrl,params,function(data) {
let condition = data&&data.filter&&JSON.parse(data.filter);
let tplId = data&&data.id;
let select = data&&data.id;
_self.condition = condition;
_self.tplId = tplId;
_self.billType = billType;
queryPlan.select = select;
if (list) {
var postParam = {
billType: billType,
entityName:list.dataprops && list.dataprops.entity ? list.dataprops.entity.entityFullName : null,
pageNumber:0,
condition:condition,
pageSize:10,
tplId:tplId,
pagination:true,
};
_self.getListData(_self.urls.QUERY_LIST,postParam,list,function(listData,last){
if (list&&list.api) {
list.api.setData(listData);
if (!last) {
_self.pageNumber = 1;
_self.noPagination = false;
}
else {
_self.noPagination = true;
}
page.refresh();
}
},_self.offline);
}
},_self.offline);
}
}
else {
if (list) {
var postParam = {
entityName:list.dataprops && list.dataprops.entity ? list.dataprops.entity.entityFullName : null,
pageNumber:0,
pageSize:10,
pagination:true,
};
this.getListData(this.urls.QUERY_LIST,postParam,list,function(listData,last){
if (list&&list.api) {
list.api.setData(listData);
if (!last) {
_self.pageNumber = 1;
_self.noPagination = false;
}
else {
_self.noPagination = true;
}
page.refresh();
}
},_self.offline);
}
}
}
/**
* 查询默认查询方案
* @param url 查询地址
* @param params 查询条件
* @param callback 回调函数
* @param offline 离线标识
*/
ListEventHandler.getDefaultTemplate = function(page,url,params,callback,offline) {
let backData = null;
var getJSON = offline?ajax.getJSONOffLine:ajax.getJSON;
getJSON.call(ajax,url, params, (msg) => {
if (msg["success"]) {
backData = msg["backData"];
callback(backData);
}
else {
YYToast.fail('查询默认查询方案失败',1);
ListEventHandler.onListRefresh(page);
}
});
}
/**
* 查询list
* @param url 查询地址
* @param postParam 查询条件
* @param list list
* @param callback 回调函数
* @param offline 离线标识
*/
ListEventHandler.getListData = function(url,param,list,callback,offline) {
var postJSON = offline?ajax.postJSONOffLine:ajax.postJSON;
var listData = [];
var templistData = [];//缓存单据列表数据
if (offline) {
ListEventHandler.queryTempBillListData({billTypeCode:param.billType},function(data){
templistData = data;
});
}
postJSON.call(ajax, url, param, (msg) => {
let backData = msg["backData"];
if (msg["success"]) {
listData=backData["content"];
if (templistData.length) {//离线方案-离线数据和线上数据合并,并去重
templistData.map((item,index)=>{
item.id = item.billId;
item.isOffline = true;
});
listData = templistData.concat(listData);
//去重
var result = [];
var obj = {};
for(var i =0; i<listData.length; i++){
if(!obj[listData[i].id]){
result.push(listData[i]);
obj[listData[i].id] = true;
}
}
listData = result;
listData.map((item,index)=>{
if (item.billId) {
delete item.id;
}
});
}
callback(listData,backData['last']);
}
else {
YYToast.fail('查询列表数据失败',1);
callback(templistData);
}
},function(error){
YYToast.fail('查询列表数据失败', 1);
callback(templistData);
});
}
/**
* 离线方案
* 查询缓存单据列表数据
* @param params 查询条件
*/
ListEventHandler.queryTempBillListData = function(params,callback) {
ajax.offLineQueryData(params,(res)=>{
callback(res);
},(error)=>{
YYToast.fail(error['msg']);
});
}
/**
* 获取数据列表
* @param page
*/
ListEventHandler.getDataList = function (page) {
var dataListKey = this.getDataListKey(page);
return page.findUI(dataListKey);
};
/**
* 获取数据列表的键值
* @param page
*/
ListEventHandler.getDataListKey = function (page) {
var comp = page.findUIByType(COMP_DATA_LIST);
if (!comp || comp.length === 0) {
comp = page.findUIByType(COMP_DATA_REPEATER);
if (!comp || comp.length === 0) {
console.error("未定义数据列表组件");
return null;
}
}
return comp[0].uikey;
};
/**
* 获取查询方案
* @param page
*/
ListEventHandler.getQueryPlan = function(page) {
var queryPlanKey = this.getQueryPlanKey(page);
return page.findUI(queryPlanKey);
}
/**
* 获取查询方案的键值
* @param page
*/
ListEventHandler.getQueryPlanKey = function (page) {
var comp = page.findUIByType(COMP_QUERY_PLAN);
if (!comp || comp.length === 0) {
console.error("未定义查询方案组件");
return null;
}
return comp[0].uikey;
};
/**
* 列表的下拉刷新事件
* @param page
*/
ListEventHandler.onListRefresh = function(page,value) {
var list = this.getDataList(page);
var _self = this;
_self.value = value;
if (list) {
var postParam = {
entityName:list.dataprops && list.dataprops.entity ? list.dataprops.entity.entityFullName : null,
pageNumber:0,
pageSize:10,
pagination:true,
condition:this.condition,
tplId:this.tplId,
billType: this.billType,
searchText:this.value
};
this.getListData(this.urls.QUERY_LIST,postParam,list,function(listData,last){
if (list&&list.api) {
list.api.setData(listData);
if (!last) {
_self.pageNumber = 1;
_self.noPagination = false;
}
else {
_self.noPagination = true;
}
}
},_self.offline);
}
};
/**
* 列表的上拉加载事件
* @param page
* @param event
*/
ListEventHandler.onListEndReached = function(page,event) {
var list = this.getDataList(page);
var _self = this;
if (list) {
var postParam = {
entityName:list.dataprops && list.dataprops.entity ? list.dataprops.entity.entityFullName : null,
pageNumber:this.pageNumber,
pageSize:10,
pagination:true,
condition:this.condition,
tplId:this.tplId,
billType: this.billType,
searchText:this.value
};
if (!this.noPagination) {
this.getListData(this.urls.QUERY_LIST,postParam,list,function(listData,last){
if (list&&list.api) {
list.api.setAppendData(listData);
if (last) {//最后一页
_self.noPagination = true;
}
else {
_self.noPagination = false;
_self.pageNumber = _self.pageNumber+1;
}
}
},_self.offline);
}
else {
if (list&&list.api) {
list.api.setIsLoading(false);
}
return;
}
}
};
/**
* 列表的行点击事件
* @param page
* @param row
*/
ListEventHandler.queryData = function(page,row) {
var primaryField = this.getPrimaryField(page);
var pk = row[primaryField];
var cardRoute = this.urls.CARD_ROUTE;
if (cardRoute) {
var params = {};
params['' + primaryField] = pk;
if (this.offline) {
params['billId'] = row['billId'];
}
page.routeTo(cardRoute, params, params);
}
};
/**
* 获取数据列表的主键字段
* @param page
*/
ListEventHandler.getPrimaryField = function (page) {
return this.getDataList(page).rowKey || PubConstants.DEFAULT_PK_FIELD_VALUE;
};
/**
* 删除
* @param page
* @param row
*/
ListEventHandler.deleteData = function(page,row){
Modal.alert(
"确认",
"是否确定删除单据?",
[
{
text:'确认',
onPress: function onOk() {
ListEventHandler.delete(page,row);
}
},
{ text: '取消' }
]);
}
/**
* 列表的行删除事件
* @param page
* @param row
*/
ListEventHandler.delete = function(page,row) {
var param = [{id:row.id,ts:row.ts}];
var postJSON = this.offline?ajax.postJSONOffLine:ajax.postJSON;
if (!row.billState||row.billState===0) {
if (this.offline) {
if (row.billId) {
var delParam = {
billId:row.billId,
delSubmit:'1',
};
ajax.delBillData(delParam,(msg)=>{
YYToast.info('缓存数据删除成功',1);
ListEventHandler.onListRefresh(page);
}, function(error){
YYToast.fail(error, 1);
});
}
else {
ajax.postJSON(this.urls.DELETE, param, (msg) => {
let backData = msg["backData"];
if (msg["success"]) {
YYToast.info(msg["backMsg"],1);
ListEventHandler.onListRefresh(page);
}
else {
YYToast.info(msg["backMsg"],1);
}
});
}
}
else {
ajax.postJSON(this.urls.DELETE, param, (msg) => {
let backData = msg["backData"];
if (msg["success"]) {
YYToast.info(msg["backMsg"],1);
ListEventHandler.onListRefresh(page);
}
else {
YYToast.info(msg["backMsg"],1);
}
});
}
}
else {
YYToast.fail('不能删除非自由态的单据',1);
}
};
/**
* 查询方案的点击事件
* @param page
* @param id
*/
ListEventHandler.onYYQueryPlanClick = function(page,item) {
var list = this.getDataList(page);
var _self = this;
var condition = item&&item.filter&&JSON.parse(item.filter);
var tplId = item&&item.tplId;
this.condition= condition;
this.tplId = tplId;
if (list) {
var postParam = {
entityName:list.dataprops && list.dataprops.entity ? list.dataprops.entity.entityFullName : null,
pageNumber:0,
condition:condition,
pageSize:10,
tplId:tplId,
pagination:true,
billType:this.billType,
searchText:this.value
};
this.getListData(this.urls.QUERY_LIST,postParam,list,function(listData,last){
if (list&&list.api) {
list.api.setData(listData);
if (!last) {
_self.pageNumber = 1;
_self.noPagination = false;
}
else {
_self.noPagination = true;
}
}
},_self.offline);
}
};
/**
* 新增按钮的点击事件
* @param page
*/
ListEventHandler.addData = function(page) {
page.routeTo(ListEventHandler.urls.CARD_ROUTE);
}
/**
* 查看审批流
* @param page
* @param item 行数据
*/
ListEventHandler.openApproveHistory = function(page,item) {
if (!page.findUI(COMP_APPROVE_HISTORY_MODAL)) {
YYToast.info('请添加审批历史弹层',1);
return;
}
page.findUI(COMP_APPROVE_HISTORY_MODAL).visible = true;
if (AuthToken.getUserId()&&item&&item.id) {
page.findUI(COMP_APPROVE_HISTORY).userId = AuthToken.getUserId();
page.findUI(COMP_APPROVE_HISTORY).billId = item.id;
}
page.refresh();
}
/**
* 审批流弹层关闭事件
* @param page
*/
ListEventHandler.yyApproveHistoryModalClose = function(page) {
page.findUI(COMP_APPROVE_HISTORY_MODAL).visible = false;
page.refresh();
}
/**
* 返回事件
* @param page
*/
ListEventHandler.goBack = function(page) {
page.goBack();
}
/**
* 列表默认uiEvent
*/
ListEventHandler.API = {
"addBtn": {// 底部新增按钮
onClick: function onClick() {
ListEventHandler.addData(this);
}
},
"YYApproveHistoryModal": {//查看审批流弹层关闭
onClose:function(options) {
ListEventHandler.yyApproveHistoryModalClose(this)
}
},
"YYRepeater": {//自定义列表
onEndReached: function(event) {//上拉加载
ListEventHandler.onListEndReached(this,event);
},
onRefresh: function() {//下拉刷新
ListEventHandler.onListRefresh(this);
},
onClick: function(row) {//点击列表
ListEventHandler.queryData(this,row);
}
},
"YYList": {//列表
onEndReached: function(event) {//上拉加载
ListEventHandler.onListEndReached(this,event);
},
onRefresh: function() {//下拉刷新
ListEventHandler.onListRefresh(this);
},
onClick: function(row) {//点击列表
ListEventHandler.queryData(this,row);
},
firstPress: function(options) {//查看审批流
ListEventHandler.openApproveHistory(this,options);
},
secondPress: function(options) {//列表删除
ListEventHandler.deleteData(this,options);
}
},
"YYQueryPlan": {//查询方案
onLeftClick: function(options) {//左侧按钮事件
ListEventHandler.goBack(this);
},
onSelect:function(options) {
ListEventHandler.onYYQueryPlanClick(this,options);
}
},
"YYSearchBar": {//搜索栏
onSubmit: function(options) {
ListEventHandler.onListRefresh(this,options);
},
onCancel: function(options) {
ListEventHandler.onListRefresh(this,"");
}
}
};
module.exports = ListEventHandler;