mobileoa-common-modules
Version:
移动办公平台前端公共功能模块
279 lines (248 loc) • 7.99 kB
JavaScript
var angular = require('angular');
require('../modules');
require('../../info/services/ModelService');
require('../../info/services/ModelLocalStorageService');
require('jsUtil');
'use strict';
var module = angular.module('infoRelease');
module.controller('InfoReleaseGroupCtrl', function($stateParams, $scope, $state, AppConfig,
ModelService, $q, Timer, $toast, $ionicScrollDelegate, $timeout, $ionicViewSwitcher, ModelLocalStorageService) {
$scope.title = '信息发布';
$scope.showCard = ModelService.getShowCard();
$scope.refreshx = false;
var left = 0;
var scrollView = $ionicScrollDelegate.$getByHandle('infosListScrollView');
$scope.region = [];//区块信息
var ctrl = this;
ctrl.loadingState = 2;
var pathMap = {};
$scope.$on('$ionicView.loaded', function() {
$scope.init('loaded');
});
var loaded = false;
$scope.$on('$ionicView.beforeEnter', function() {
if(loaded) {
$scope.init('beforeEnter');
}
loaded = true;
});
$scope.init = function(source) {
ctrl.loadingState = ModelService.alreadyStorage() ? 2 : 1;
return initData(source, true).then(function(data) {
setCardScrollPosition();
ctrl.loadingState = !_.isEmpty(data) ? 2 : 4;
}, function() {
ctrl.loadingState = 3;
});
}
/**
* 将每次标签滑动的位置保存下来
*/
$scope.onScroll = function() {
$timeout(function() {
if (scrollView && scrollView.getScrollPosition()) {
left = scrollView.getScrollPosition().left;
localStorage.setItem('left', left);
}
});
}
/**
* 在数据加载完之后,将标签移动到之前滑动的位置
*/
function setCardScrollPosition() {
if (!_.isEmpty($scope.showCard)) {
$timeout(function() {
scrollView.scrollTo(localStorage.getItem('left'), 0);
});
}
}
/**
* 初始数据
*/
function initData(source, initing) {
var _infos = [],//某区块的信息列表
modelMap = {};
var dataPromise = initing ? ModelService.getModel() : ModelService.refreshStorageModel();
return dataPromise.then(function(data) {
var modelRegion = {};
var regionArray = [];
_.each(data, function(model) {
var region = modelRegion[model.region];//划分区块
region = region || [];
region.push(model);
modelRegion[model.region] = region;
modelMap[model.id] = model;//根据不同的区块将model放进去
model.subject = null;
});
_.each(modelRegion, function(models, region) {
_infos.push(models);
regionArray.push(region);//初始化获得有多少个区块
});
$scope.region = regionArray;
$scope.showCard = _.isEmpty($scope.showCard) ? $scope.region[0] : $scope.showCard;
if(source == 'loaded') {//初始化时
var index = _.isEmpty($scope.showCard) ? 0 : $scope.region.indexOf($scope.showCard);
$scope.items = _.isEmpty(_infos) || _.isEmpty(_infos[index]) ? [] : _infos[index];
}
if(source != 'loaded' && ModelService.getModelsChange()) {//判断模块有没有更新
var index = _.isEmpty($scope.showCard) ? 0 : $scope.region.indexOf($scope.showCard);
$scope.items = _.isEmpty(_infos) || _.isEmpty(_infos[index]) ? [] : _infos[index];
}
}).then(function(data) {
ModelService.getLatestInfos().then(function(data) {
_.each(data, function(item) {
if(!_.isEmpty(item)) {
var model = modelMap[item.modelId];
if (model) {
model.subject = item.title;
model.infoId = item.infoId;
}
}
});
$scope.infos = _infos;
});
return _infos;
}, function() {
$q.when(false);
}).then(function(_infos) {
refreshBackPic();
return _infos;
});
}
$scope.getItemsStyle = function() {
var _width = _.isEmpty($scope.region) ? window.screen.availWidth : window.screen.availWidth / 2 * $scope.region.length;
var style = {
'width': _width + 'px'
};
return style;
};
$scope.getItemStyle = function() {
var style = {
'width': window.screen.availWidth / 2 + 'px'
};
return style;
};
/**
* 根据不同的showCard返回该标签下的内容
*/
function changeCardRefresh() {
var index = $scope.region.indexOf($scope.showCard);
$scope.items = $scope.infos[index] || [];
refreshBackPic();
}
/**
* [onClickTab 刚刚标签之间的切换]
* @param {[string]} showCard [标签类型字符串,从页面直接传入 标签名称]
* @return
*/
$scope.onClickTab = function(showCard) {
$scope.showCard = showCard;
changeCardRefresh();
};
/**
* 点击进入列表页
*/
$scope.toMoreList = function(item) {
$ionicViewSwitcher.nextDirection('forward');
if(item.mode == 'yzap') {
$state.go('infoRelease-infoReleaseYzap');
} else if (item.mode == 'archivein' || item.mode == 'archiveout'){
$state.go('infoRelease-infoReleaseMoreOffice', {
modelId: item.id,
pageNo: 0,
enterSign: 'group'
});
} else if(item.mode == 'cggs') {
$state.go('infoRelease-infoReleaseMoreCggs', {
modelId: item.id,
pageNo: 0,
enterSign: 'group'
});
} else if(item.mode == 'ccdt') {
$state.go('infoRelease-infoReleaseMoreCcdt');
}else {
$state.go('infoRelease-infoReleaseMore', {
modelId: item.id,
pageNo: 0,
enterSign: 'group'
});
}
ModelService.refreshShowCard($scope.showCard);//放进缓存中去
};
/**
* 返回随机的背景颜色
*/
function backgroundcolor(index) {
var color = ['#b3e5fc', '#81d4fa', '#4fc3f7', '#29b6f6', '#03a9f4', '#039be5', '#0288e1', '#0277bd', '#01579b', '#00acc1', '#0097a7', '#00838f', '#006064'];
if(index > 26) {//模块数 > 颜色数 * 2
index = index -26;
}
return color[Math.floor(index / 2)];
}
/**
* 返回有图片的背景图
*/
$scope.backPic = function(modlId, mode, infoId) {
var _image_url = window.localStorage.getItem('info_image_url_' + modlId);
if(!_.isEmpty(_image_url)) {
var image_url = _image_url.substring(1,_image_url.length - 1);
var width = parseInt((document.body.getBoundingClientRect().width / 2) * (window.devicePixelRatio || 1));
var url = AppConfig.serverUrl + image_url +'&minWidth=' + width +
'&minHeight=' + width + '&cut=true' ;
return url;
}
};
/**
* 获取背景图
*/
$scope.getStyle = function(modlId, mode, infoId, index) {
var styles = {
'background': backgroundcolor(index) + ' no-repeat',
'background-size': 'cover'
};
if(!_.isEmpty(backPic(modlId, mode, infoId))) {
styles['background-image'] = 'url(' + backPic(modlId, mode, infoId) + ')';
}
return styles;
};
/**
* 更新背景图链接
* 如果有变化,会更新图片链接缓存
*/
function refreshBackPic() {
if(!_.isEmpty($scope.items)) {
$scope.items.forEach(function(item) {
item.imgUrl = ModelLocalStorageService.getImgPath(item.id);
ModelService.getImgPath(item.id).then(function(imgUrl) {
item.imgUrl = ModelLocalStorageService.getImgPath(item.id);
});
});
}
}
/**
* 刷新(按钮)
*/
$scope.onRefresh = function () {
$scope.refreshx = true;
initData().then(function(data) {
$scope.refreshx = false;
changeCardRefresh();
if(!_.isEmpty(data)) {
$toast.showLongCenter('更新到最新信息!');
}else {
$toast.showLongCenter('获取最新信息失败!');
}
});
};
/**
* 下滑刷新
*/
$scope.refresher = function () {
Timer.delay(function() {
initData().finally(function() {
$scope.$broadcast('scroll.refreshComplete');
changeCardRefresh();
});
}, 800);
};
});