UNPKG

yylib-quick-mobile

Version:

yylib-quick-mobile

549 lines (547 loc) 15.3 kB
/** * 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;