The use of app.js in the angularjs project (according to the company's project in terms of current functions) -----angular routing

1. Angular project in the company, app.js is a self-loading function that contains the routing information of Angular and the code loaded first when the angular program starts (app.run(), which is executed first when the angular program starts The code in the run method)
2. For now, it contains the routing information of Angular and the code loaded first when the Angular program starts; the following code reflects

(function () {
    'use strict';   // 严格模式

    //Configuration for Angular UI routing.
    app.config([
        '$stateProvider', // 基于ui-router的服务
        '$urlRouterProvider',  // 路由操作
        '$locationProvider', //   路由跳转
        '$qProvider', 
        '$httpProvider',   $http配置
        function ($stateProvider, $urlRouterProvider, $locationProvider, $qProvider, $httpProvider) {
            $locationProvider.hashPrefix('');
            $urlRouterProvider.otherwise('/');//路径没有匹配的路由的时候,跳转到一个默认的路径
            $qProvider.errorOnUnhandledRejections(false);
            //注入拦截器
            $httpProvider.interceptors.push('authInterceptor');

            $stateProvider
                .state("error", {
                    url: "/error",
                    templateUrl: "/App/views/error.html",
                    controller: "errorCtr"
                })
                .state('home', {
                    url: '/',
                    templateUrl: '/App/views/index.html',
                    controller: 'indexCtr'
                }).state("index", {
                    url: "/index",
                    templateUrl: '/App/views/index.html',
                    controller: "indexCtr"
                })
                .state('userManager', {
                    url: '/userManager',
                    templateUrl: '/App/views/system/userManager.html',
                    controller: 'app.views.system.user'
                })
                .state('roleManager', {
                    url: '/roleManager',
                    templateUrl: '/App/views/system/roleManager.html',
                    controller: 'app.views.system.role'
                })
                .state('logManager', {
                    url: '/logManager',
                    templateUrl: '/App/views/system/logManager.html',
                    controller: 'app.views.system.log'
                })
                .state('dataDic', {
                    url: '/dataDic',
                    templateUrl: '/App/views/system/dataDic.html',
                    controller: 'app.views.system.data'
                }).state('menuManager', {
                    url: '/menuManager',
                    templateUrl: '/App/views/system/menuManager.html',
                    controller: 'app.views.system.menu'
                }).state('deptAreaManager', {
                    url: '/deptAreaManager',
                    templateUrl: '/App/views/system/deptAreaManager.html',
                    controller: 'app.views.system.deptArea'
                }).state('workPlanManager', {
                    url: '/workPlanManager',
                    templateUrl: '/App/views/setTemplate/workPlanTemplate.html',
                    controller: 'app.views.setTemplate.workPlan'
                }).state('serviceProductManage', {
                    url: '/serviceProductManage',
                    templateUrl: '/App/views/setServiceManage/serviceProductManage.html',
                    controller: 'app.views.setServiceManage.serviceProductManage'
                }).state('serviceItemManage', {
                    url: '/serviceItemManage',
                    templateUrl: '/App/views/setServiceManage/serviceItemManage.html',
                    controller: 'app.views.setServiceManage.serviceItemManage'
                }).state('workProjectMnage', {
                    url: '/workProjectMnage',
                    templateUrl: '/App/views/setServiceManage/workProjectMnage.html',
                    controller: 'app.views.setServiceManage.workProjectMnage'
                }).state('servicePackManage', {
                    url: '/servicePackManage',
                    templateUrl: '/App/views/setServiceManage/servicePackManage.html',
                    controller: 'app.views.setServiceManage.servicePackManage'
                }).state('demandTemplate', {
                    url: '/demandTemplate',
                    templateUrl: '/App/views/setTemplate/demandTemplate.html',
                    controller: 'app.views.setTemplate.demandTemplate'
                }).state('createInnerProject', {
                    url: '/createInnerProject',
                    templateUrl: '/App/views/platProjectManage/createInnerProject.html',
                    controller: 'app.views.platProjectManage.createInnerProject'
                }).state('lookRequisitionForm', {
                    url: '/lookRequisitionForm',
                    templateUrl: '/App/views/platServiceRequestForm/lookRequisitionForm.html',
                    controller: 'app.views.platServiceRequestForm.lookRequisitionForm'
                }).state('createRequestForm', {
                    url: '/createRequestForm/:source',
                    templateUrl: '/App/views/platServiceRequestForm/createRequestForm.html',
                    controller: 'app.views.platServiceRequestForm.createRequestForm'
                }).state('icon', {
                    url: '/icon',
                    templateUrl: '/App/views/system/icon.html',
                    controller: ''
                }).state('projectList', {
                    url: '/projectList',
                    templateUrl: '/App/views/platProjectManage/projectList.html',
                    controller: 'app.views.platProjectManage.projectList'
                }).state('projectDocumentManage', {
                    url: '/projectDocumentManage',
                    templateUrl: '/App/views/platProjectManage/projectDocumentManage.html',
                    controller: 'app.views.platProjectManage.projectDocumentManage'
                }).state('deliverablesAudit', {
                    url: '/deliverablesAudit',
                    templateUrl: '/App/views/platProjectManage/deliverablesAudit.html',
                    controller: 'app.views.platProjectManage.deliverablesAudit'
                })
                .state('assignRequirement', {
                    url: '/assignRequirement',
                    templateUrl: '/App/views/dispatchManagement/assignRequirement.html',
                    controller: 'app.views.dispatchManagement.assignRequirement'
                })
                .state('planOrderSearch', {
                    url: '/planOrderSearch',
                    templateUrl: '/App/views/dispatchManagement/planOrderSearch.html',
                    controller: 'app.views.dispatchManagement.planOrderSearch'
                })
                .state('task', {
                    url: '/task/:typeid',
                    templateUrl: '/App/views/platMyProject/taskToDo.html',
                    controller: 'app.views.platMyProject.taskToDo'
                }).state('transSupport', {
                    url: '/transSupport',
                    templateUrl: '/App/views/dispatchManagement/transSupport.html',
                    controller: 'app.views.dispatchManagement.transSupport'
                }).state('myWorkOrder', {
                    url: '/myWorkOrder',
                    templateUrl: '/App/views/platMyWorkOrder/myWorkOrder.html',
                    controller: 'app.views.platMyWorkOrder.myWorkOrder'
                }).state('workOrderInquire', {
                    url: '/workOrderInquire',
                    templateUrl: '/App/views/dispatchManagement/workOrderInquire.html',
                    controller: 'app.views.dispatchManagement.workOrderInquire'
                }).state('staffSchedule', {
                    url: '/staffSchedule',
                    templateUrl: '/App/views/dispatchManagement/staffSchedule.html',
                    controller: 'app.views.dispatchManagement.staffSchedule'
                }).state('synthesizeInquire', {
                    url: '/synthesizeInquire',
                    templateUrl: '/App/views/platComprehensiveInquiry/synthesizeInquire.html',
                    controller: 'app.views.platComprehensiveInquiry.synthesizeInquire'
                }).state('resourceApplication', {
                    url: '/resourceApplication',
                    templateUrl: '/App/views/platMyProject/resourceApplication.html',
                    controller: 'app.views.platMyProject.resourceApplication'
                }).state('assignWorkOrder', {
                    url: '/assignWorkOrder',
                    templateUrl: '/App/views/dispatchManagement/assignWorkOrder.html',
                    controller: 'app.views.dispatchManagement.assignWorkOrder'
                }).state('specWhAccount', {
                    url: '/specWhAccount',
                    templateUrl: '/App/views/setServiceManage/specWorkHoursAccount.html',
                    controller: 'app.views.setServiceManage.specWorkHoursAccount'
                }).state('importErpData', {
                    url: '/importErpData',
                    templateUrl: '/App/views/system/importErpData.html',
                    controller: 'app.views.system.importErpData'
                }).state('workHourRate', {
                    url: '/workHourRate',
                    templateUrl: '/App/views/setServiceManage/workHourRateManage.html',
                    controller: 'app.views.setServiceManage.workHourRate'
                });
        }
    ]);
    //程序启动时,获取用户信息
    app.run(["$rootScope", "$cookies", "serverDomain", "httpService", "$location", function ($rootScope, $cookies, serverDomain, httpService, $location) {
        //首先判断sessionStorage中是否已经有user,有的话则不再请求
        if (sessionStorage.getItem("user") && sessionStorage.getItem("pId")) {
            API.log("已登陆系统");
            if (!$rootScope.user) {
                API.log("重新写入rootScope");
                $rootScope.user = JSON.parse(sessionStorage.getItem("user"));
            }

            //获取数据字典
            getDicData();

            //获得工程线下所有组织架构
            getOrgTreeProjectLine();
            return;
        }

        var user = {
            employeeNumber: "",//员工工号
            name: "",//用户姓名
            passportId: "",//84380281-EA1D-4774-BA80-472349367725
            passportName: "",//用户It编码
            organizationId: 0,//所在部门id
            organizationName: "",//所在部门名称
            organizationIdPath: ""//所在部门,部门ID全路径
        }

        var cookieName = 'XSRF-PASSPORTNAME';
        var passport_Name = '';
        //检查cookie是否存在
        if ($cookies.get(cookieName) == undefined || $cookies.get(cookieName) == '') {
            $location.path('/index');
        }
        else {
            passport_Name = $cookies.get(cookieName);
        }
        var paramData = { passportName: passport_Name };
        var url = serverDomain + "api/services/app/SbpUser/GetUserInfoByPassportName";
        httpService.Get(url, paramData, function (data) {
            if (data.success) {
                user.employeeNumber = data.result.employeeNumber;
                user.name = data.result.name;
                user.passportId = data.result.passportId;
                user.passportName = data.result.passportName;
                user.organizationId = data.result.organizationId;
                user.organizationName = data.result.organizationName;
                user.organizationIdPath = data.result.organizationIdPath;
                user.organizationIdPathArray = data.result.organizationIdPath.split("/");
                user.roles = data.result.roles;
                user.position = data.result.position;

                //写sessionStorage
                sessionStorage.setItem("user", JSON.stringify(user));
                sessionStorage.setItem("pId", user.passportId);

                //写$rootScope
                $rootScope.user = user;

                //获取数据字典
                getDicData();

                //获得工程线下所有组织架构
                getOrgTreeProjectLine();

            }
        }, function (data) {
            console.error(data);
        });

        //获取数据字典
        function getDicData() {
            var dics = localStorage.getItem("dictionary");
            if (dics && dics !== "undefined") {
                dics = JSON.parse(dics);
                if (!$rootScope.dictionary) {
                    $rootScope.dictionary = dics;
                }
                return;
            }

            var getDicUrl = serverDomain + "api/services/app/DictionaryType/GetDictionaryTypeList";
            httpService.Get(getDicUrl, {}, function (rst) {
                if (rst.success) {
                    var dicArr = rst.result || [];
                    var dicJson = {};
                    dicArr.forEach(function (item, index) {
                        //字典项列表统一按照sort的值升序排序
                        item.dictionaries = item.dictionaries.sort(function (first, two) {
                            if (first.sort < two.sort) {
                                return -1;
                            }
                            if (first.sort > two.sort) {
                                return 1;
                            }
                            return 0;
                        });
                        dicJson[item.typeCode] = { id: item.id, typeName: item.typeName, remark: item.remark, dictionaries: item.dictionaries };

                    });

                    localStorage.setItem("dictionary", JSON.stringify(dicJson));
                    $rootScope.dictionary = dicJson;
                }
            })

        }

        //获得工程线下所有组织架构
        function getOrgTreeProjectLine() {
            var orgs = localStorage.getItem("organization");
            if (orgs && orgs !== "undefined") {
                orgs = JSON.parse(orgs);
                if (!$rootScope.organization) {
                    $rootScope.organization = orgs;
                }
                return;
            }
            //获取工程线下(oaOrgId为5)组织树的数据
            var url = serverDomain + "api/services/app/SbpOrg/GetOrgTree";
            var data = { oaOrgId: 5 };
            httpService.Get(url, data, function (data) {
                if (data.success) {
                    localStorage.setItem("organization", JSON.stringify(data.result.children));
                    //不显示root节点
                    $rootScope.organization = data.result.children;
                }
            }, function (err) { });
        }

        //统一配置math.js
        math.config({
            number: 'BigNumber',
            // 'number' (default), 
            precision: 20
        });

        //路由监听事件  
        $rootScope.$on('$stateChangeStart',
            function (event, toState, toParams, fromState, fromParams) {
                API.log("Router change");
                //API.log("fromParams:", fromParams);
                //API.log($stateParams.type);
            })
        //当模板解析完成后触发  
        $rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState, fromParams) {
            API.log("Router changed");
            window.scrollTo(0,0);
            abp.ui.clearBusy($('#mianBody'));//清除loading
        })

        // $stateChangeError  当模板解析过程中发生错误时触发  
        $rootScope.$on('$stateChangeError', function (event, toState, toParams, fromState, fromParams, error) {

        })

    }])
})();

Guess you like

Origin blog.csdn.net/weixin_43996999/article/details/96177408