pageview.js 2.39 KB
define(['permission', "mobilebone", "mUtil" ,"i18n"], function (Permission, Mobilebone, mUtil,i18n) {
    var aopSettings = {
        advice: "onpagefirstinto",
        namespace: Mobilebone
    };
    var showLoading = function ($el) {
        var $loading = $el.children(".page-loading");
        if (!$loading.length) {
            $el.append("<div class='page-loading wev-loading'>"+i18n.LOADING_DATA +"</div>");
        }
    };
    var hideLoading = function($el){
        $el.children(".page-loading").remove();
    };
    var judge = function (page, pageOut, options) {
    	var $page = $(page), p = $page.data("pageoptions");
    	if ($page.hasClass("page-scroller")) return true;
    	showLoading($page);
    	if(p){
			var pArr = (options.formdata || "").split("&"), params = {};
			pArr.forEach(function (pStr) {
				var pIndex = pStr.indexOf("=");
				if (pIndex != -1) {
					var pName = pStr.substring(0, pIndex);
					var pValue = pStr.substring(pIndex + 1);
					params[pName] = pValue;
				}
			});
			var $pageTip = $page.children(".page-tip")
			if(!$pageTip.length){
				$pageTip = $("<div class='page-tip'></div>");
				$page.prepend($pageTip);
			}
    		p = p.split(":");
    		var url = mUtil.getActionUrl("service.FormComponent", { action: "checkPagePermission" });
    		var requestParam = {modeid: p[0], uitype: p[1], sourceid: p[2], layoutid: p[3], billid: params.billid};
            if(params.formmode_authorize === "formmode_authorize"){
                ["formmode_authorize", "moduleid", "authorizemodeId", "authorizeformmodebillId", "authorizefieldid"].forEach(function (name) {
                    requestParam[name] = params[name] || "";
                });
            }
    		return mUtil.getJSON(url, requestParam, function(result){
    			var data = result.data;
    		    if(!data.validity){
                    $pageTip.addClass("page-tip-show page-warn").attr('data-title', data.msg);
                }else{
                    $pageTip.removeClass("page-tip-show page-warn");
                    $pageTip[ data.right > 0? "removeClass" : "addClass"]("page-tip-show page-forbidden").attr('data-title',i18n.NO_PERMISSION_ACCESS);
                }
				!data.right && hideLoading($page);
    		}).then(function(result){
    			result = $.parseJSON(result);
    			return result.data.right && result.data.right > 0;
    		});
    	}
        return true;
    };

    return new Permission(aopSettings, judge);
});