zhuxc 7 years ago
parent
commit
b58a392817

+ 51 - 0
www/apps/authuser/index.html

@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html>
+
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="initial-scale=1, maximum-scale=1, user-scalable=no, width=device-width">
+    <!--     <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"> -->
+    <title></title>
+
+    <!-- compiled css output -->
+    <link href="/css/ionic.app.min.css" rel="stylesheet">
+    <link href="/css/linker.min.css" rel="stylesheet">
+
+
+
+    <script src="/lib/ionic/js/ionic.bundle.min.js"></script>
+    <!-- cordova script (this will be a 404 during development) -->
+    <script src="/lib/ngCordova/dist/ng-cordova.min.js"></script>
+    <!-- cordova script (this will be a 404 during development) -->
+    <script src="/cordova.js"></script>
+    <!-- your app's js -->
+    <script src="/lib/underscore/underscore-min.js"></script>
+    <script src="/lib/angular-resource/angular-resource.min.js"></script>
+    <script src="/lib/angular-underscore-module/angular-underscore-module.js"></script>
+    <script src="/lib/angular-translate/angular-translate.min.js"></script>
+    <script src="/lib/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js"></script>
+    <script src="/js/starter.js"></script>
+    <script src="js/route.js"></script>
+    <script src="js/controllers.js"></script>
+    <script src="js/directive.js"></script>
+    <script src="js/factory.js"></script>
+</head>
+
+<body ng-app="starter" ng-cloak>
+<!--
+  The nav bar that will be updated as we navigate between views.
+-->
+<ion-nav-bar class="bar-stable" ng-cloak>
+    <ion-nav-back-button class="button ion-chevron-left button-clear button-dark">
+        {{'backTitle' | translate}}
+    </ion-nav-back-button>
+</ion-nav-bar>
+<!--
+  The views will be rendered in the <ion-nav-view> directive below
+  Templates are in the /templates folder (but you could also
+  have templates inline in this html file if you'd like).
+-->
+<ion-nav-view></ion-nav-view>
+</body>
+</html>
+

+ 19 - 0
www/apps/authuser/js/controllers.js

@@ -0,0 +1,19 @@
+starter.controller('AuthUserCtrl', function ($scope, $state, $ionicSlideBoxDelegate, $rootScope, $ionicHistory, $window, showPopup, global, User) {
+    global.fetch_user().then(function (data) {
+        $scope.authuser = {"imid": global.user.im_usrid};
+        $scope.title = global.user.compname;
+    });
+
+    $scope.commit = function () {
+        showPopup.showLoading(1, '正在提交', false);
+        User.user("PostUser").save("'" + JSON.stringify($scope.authuser) + "'", function (res) {
+            console.log(res);
+            showPopup.hideLoading();
+        }, function (err) {
+            if (err.status == 400)
+                showPopup.PopupWindow(0, err.data.ExceptionMessage, false, 4000);
+            else
+                showPopup.hideLoading();
+        })
+    }
+})

+ 0 - 0
www/apps/authuser/js/directive.js


+ 15 - 0
www/apps/authuser/js/factory.js

@@ -0,0 +1,15 @@
+starter.factory('User', function ($resource, $q, $filter, cfg, formatFilter, global) {
+    global.erp_api = "http://192.168.1.36:13210/api/";
+
+    return {
+        user: function (actionname) {
+            return $resource(formatFilter('{0}Comp/{1}/0/', global.erp_api, actionname == undefined ? "" : actionname), {},
+                {
+                    save: {
+                        method: "POST",
+                        headers: {"cid": JSON.stringify({"linkid": global.user.compno, "langid": "TW", "phone": global.user.cellphone}), "sn": ""}
+                    }
+                })
+        }
+    };
+})

+ 7 - 0
www/apps/authuser/js/route.js

@@ -0,0 +1,7 @@
+starter.config(function ($stateProvider, $translateProvider) {
+    $stateProvider.state('authuser', {
+        url: '/index',
+        templateUrl: 'templates/authuser.html',
+        controller: 'AuthUserCtrl'
+    })
+});

+ 18 - 0
www/apps/authuser/templates/authuser.html

@@ -0,0 +1,18 @@
+<ion-view view-title="{{title}}">
+    <ion-content>
+        <div class="item item-divider"></div>
+        <form name="formuser" novalidate>
+            <div class="list notice-input">
+                <label class="item item-input">
+                    <span class="input-label notice-title">用户名 :</span>
+                    <input type="text" name="username" required ng-model="authuser.user">
+                </label>
+                <label class="item item-input">
+                    <span class="input-label notice-title">密&nbsp;&nbsp;&nbsp;&nbsp;码 :</span>
+                    <input type="password" name="password" ng-minlength="1" ng-maxlength="45" required ng-model="authuser.pwd">
+                </label>
+            </div>
+            <button type="submit" class="create-comp-button button button-block calm" ng-disabled="(formuser.username.$invalid||formuser.username.$pristine)||(formuser.password.$invalid||formuser.password.$pristine)" ng-click="commit()">提交</button>
+        </form>
+    </ion-content>
+</ion-view>

+ 9 - 2
www/apps/compmanage/js/controllers.js

@@ -4,7 +4,7 @@ starter.controller('CompConnectCtrl', function ($scope, $state, $ionicSlideBoxDe
     var compmodal = showPopup.modalTemplate('templates/modal-selectcomp.html', 'slide-in-up', $scope);
     var compmodal = showPopup.modalTemplate('templates/modal-selectcomp.html', 'slide-in-up', $scope);
 
 
     global.fetch_user().then(function (res) {
     global.fetch_user().then(function (res) {
-
+        $scope.activecomp = {};
     });
     });
 
 
     $scope.lockSlide = function () {
     $scope.lockSlide = function () {
@@ -26,7 +26,6 @@ starter.controller('CompConnectCtrl', function ($scope, $state, $ionicSlideBoxDe
         }
         }
     };
     };
 
 
-
     $scope.commit = function (r) {
     $scope.commit = function (r) {
         $scope.activecomp = _.extend($scope.activecomp, {"cellphone": global.user.cellphone, "imid": global.user.im_usrid, "linkerpassword": global.user.password, "linkerusername": global.user.usrname, "region": 86});
         $scope.activecomp = _.extend($scope.activecomp, {"cellphone": global.user.cellphone, "imid": global.user.im_usrid, "linkerpassword": global.user.password, "linkerusername": global.user.usrname, "region": 86});
         showPopup.showLoading(1, '正在提交', false);
         showPopup.showLoading(1, '正在提交', false);
@@ -40,6 +39,14 @@ starter.controller('CompConnectCtrl', function ($scope, $state, $ionicSlideBoxDe
         })
         })
     };
     };
 
 
+    $scope.importDept = function () {
+
+    };
+
+    $scope.parse = function () {
+        $window.history.back();
+    };
+
     $scope.showmodal = function () {
     $scope.showmodal = function () {
         compmodal.then(function (m) {
         compmodal.then(function (m) {
             $rootScope.commons.modal = m;
             $rootScope.commons.modal = m;

+ 0 - 1
www/apps/compmanage/js/factory.js

@@ -1,6 +1,5 @@
 starter.factory('Comp', function ($resource, $q, $filter, cfg, formatFilter, global) {
 starter.factory('Comp', function ($resource, $q, $filter, cfg, formatFilter, global) {
     global.erp_api = "http://192.168.1.70:13210/api/";
     global.erp_api = "http://192.168.1.70:13210/api/";
-    var complist = [];
 
 
     return {
     return {
         comp: function (actionname) {
         comp: function (actionname) {

+ 2 - 2
www/apps/compmanage/templates/compconnect.html

@@ -55,12 +55,12 @@
                         <div class="col col-20 center">
                         <div class="col col-20 center">
                         </div>
                         </div>
                         <div class="col col-30 center">
                         <div class="col col-30 center">
-                            <button class="button button-clear button-positive">
+                            <button class="button button-clear button-positive" ng-click="parse()">
                                 跳过
                                 跳过
                             </button>
                             </button>
                         </div>
                         </div>
                         <div class="col col-30 center">
                         <div class="col col-30 center">
-                            <button class="button button-clear button-positive">
+                            <button class="button button-clear button-positive" ng-click="importDept()">
                                 导入
                                 导入
                             </button>
                             </button>
                         </div>
                         </div>

+ 1 - 2
www/js/start/config.js

@@ -66,7 +66,7 @@ starter.run(function ($ionicPlatform, $rootScope, $http, formatFilter, $q, $cord
         if (global.user && global.user.token) {
         if (global.user && global.user.token) {
             usergot(global.user, deferred)
             usergot(global.user, deferred)
         } else if (ionic.Platform.platform() == 'win32' || ionic.Platform.platform() == 'linux') {
         } else if (ionic.Platform.platform() == 'win32' || ionic.Platform.platform() == 'linux') {
-            $http.post(formatFilter('{0}authcheck/', "http://192.168.1.5:7000/api/"), "imid=zPayHMi6s&password=123456", {
+            $http.post(formatFilter('{0}authcheck/', "http://192.168.1.5:7000/api/"), "imid=mlCQkcg7j&password=31003100", {
                 headers: {
                 headers: {
                     'Content-Type': 'application/x-www-form-urlencoded'
                     'Content-Type': 'application/x-www-form-urlencoded'
                 }
                 }
@@ -294,7 +294,6 @@ starter.run(function ($ionicPlatform, $rootScope, $http, formatFilter, $q, $cord
         password: ""
         password: ""
     },
     },
     api: "",
     api: "",
-    erp_api: "",
     debug: true,
     debug: true,
     refresh: false
     refresh: false
 })
 })

+ 0 - 1988
www/js/starter.js

@@ -1,1988 +0,0 @@
-var starter = angular.module('starter', ['ionic', 'ngResource', 'underscore', 'ngCordova', 'pascalprecht.translate']);
-
-starter.run(function ($ionicPlatform, $rootScope, $http, formatFilter, $q, $cordovaPreferences, $ionicLoading, $timeout, $ionicHistory, $cordovaKeyboard, $translate, global, cfg, showPopup) {
-    // $ionicLoading.show({
-    //     template: '数据加载中...'
-    // }).then(function () {
-    //     console.log("loading starter.run");
-    // });
-
-    $rootScope.commons = {
-        refresh: false,
-        upload_maxcount: 10,
-        bigImage: undefined, //显示大图
-        modal: undefined, //模态窗口
-        goBackIsDisable: undefined, //禁用返回键
-        isShowPopup: undefined, //加载动画
-        fun: null
-    };
-
-    $ionicPlatform.ready(function () {
-        if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
-            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
-            cordova.plugins.Keyboard.disableScroll(true);
-        }
-        if (window.StatusBar) {
-            StatusBar.styleDefault();
-        }
-
-        // $ionicLoading.hide();
-        if (window.cordovaLinker)
-            window.cordovaLinker.loadFinished("", function () {
-            }, function () {
-            });
-        if (typeof navigator.globalization !== "undefined") {
-            navigator.globalization.getPreferredLanguage(function (language) {
-                console.log("globalization -> " + JSON.stringify(language));
-                // alert(JSON.stringify(language))
-                var value = (language.value).split('-')[0];
-                if ((language.value).split('-')[1] == 'TW') {
-                    value = language.value
-                }
-                switch (value) {
-                    case 'zh-TW':
-                        value = 'locate-zh_tw';
-                        break;
-                    case 'en':
-                        value = 'locate-en_us';
-                        break;
-                    case 'zh':
-                    default:
-                        value = 'locate-zh_cn';
-                        break;
-                }
-                $translate.use(value).then(function (data) {
-                    console.log("SUCCESS -> " + data);
-                }, function (error) {
-                    console.log("ERROR -> " + error);
-                });
-            });
-        }
-
-    });
-
-    global.fetch_user = function () {
-        var deferred = $q.defer();
-        if (global.user && global.user.token) {
-            usergot(global.user, deferred)
-        } else if (ionic.Platform.platform() == 'win32' || ionic.Platform.platform() == 'linux') {
-            $http.post(formatFilter('{0}authcheck/', cfg.api), "imid=zPayHMi6s&password=123456", {
-                headers: {
-                    'Content-Type': 'application/x-www-form-urlencoded'
-                }
-            }).then(function (response) {
-                usergot(response.data, deferred);
-            }, function (error) {
-                console.log('通过post方式获取用户信息authcheck失败' + error);
-                deferred.reject(error);
-            })
-        } else {
-            $ionicPlatform.ready(function () {
-                $cordovaPreferences.fetch('user')
-                .success(function (value) {
-                    usergot(ionic.Platform.isAndroid() ? JSON.parse(value) : value, deferred);
-                })
-                .error(function (error) {
-                    console.error("通过$cordovaPreferences方式获取用户信息失败: " + error);
-                    deferred.reject(error);
-                });
-            });
-        }
-        return deferred.promise;
-    };
-
-    usergot = function (data, deferred) {
-        global.user = data;
-        if (data.cfg) {
-            global.api = data.cfg.api;
-        }
-        deferred.resolve(data);
-        console.warn(JSON.stringify(global.user));
-    };
-
-    global.fetch_user();
-
-    global.goBack = function () {
-        if (window.cordovaLinker != undefined) {
-            if ($ionicHistory.backView()) {
-                $ionicHistory.goBack();
-            } else {
-                window.cordovaLinker.goBack(1, function (s) {
-                    console.log(s);
-                }, function (err) {
-                    console.error(err);
-                });
-            }
-        }
-    }
-
-    function keyboardHideHandler(e) {
-        cordova.plugins.Keyboard.isVisible = true;
-        $timeout(function () {
-            cordova.plugins.Keyboard.isVisible = false;
-        }, 100);
-    }
-
-    window.addEventListener('native.keyboardhide', keyboardHideHandler);
-
-    $ionicPlatform.registerBackButtonAction(function (e) {
-        $timeout(function () {
-            if ($rootScope.commons.isShowPopup) {
-                showPopup.hideLoading();
-            } else if ($rootScope.commons.goBackIsDisable) {
-                return false;
-            } else if ($cordovaKeyboard.isVisible()) {
-                $cordovaKeyboard.close();
-            } else if ($rootScope.commons.bigImage) {
-                if ($rootScope.commons.fun == null) $rootScope.commons.bigImage = false;
-                else {
-                    $rootScope.commons.fun();
-                    $rootScope.commons.fun = null;
-                }
-            } else if ($rootScope.commons.modal != null) {
-                if ($rootScope.commons.fun == null) {
-                    $rootScope.commons.modal.hide();
-                    $rootScope.commons.modal = null;
-                } else {
-                    $rootScope.commons.fun();
-                    $rootScope.commons.fun = null;
-                }
-            } else {
-                if ($ionicHistory.backView()) {
-                    if ($rootScope.commons.fun == null) {
-                        $ionicHistory.goBack();
-                    } else {
-                        $rootScope.commons.fun();
-                        $rootScope.commons.fun = null;
-                    }
-                } else {
-                    global.goBack();
-                }
-            }
-            return false;
-        })
-    }, 201);
-
-    var _user;
-    _user = window.localStorage.getItem("global.user");
-    if (_user != undefined) {
-        console.log("localStorage get: " + _user);
-        global.user = JSON.parse(_user);
-    }
-})
-
-.config(function ($stateProvider, $urlRouterProvider, $ionicConfigProvider, $httpProvider, $provide, $translateProvider, $resourceProvider, cfg) {
-    $ionicConfigProvider.platform.ios.tabs.style('standard');
-    $ionicConfigProvider.platform.ios.tabs.position('bottom');
-    $ionicConfigProvider.platform.android.tabs.style('standard');
-    $ionicConfigProvider.platform.android.tabs.position('bottom');
-
-    $ionicConfigProvider.platform.ios.navBar.alignTitle('center');
-    $ionicConfigProvider.platform.android.navBar.alignTitle('center');
-
-    $ionicConfigProvider.platform.ios.backButton.previousTitleText('').icon('ion-ios-arrow-thin-left');
-    $ionicConfigProvider.platform.android.backButton.previousTitleText('').icon('ion-android-arrow-back');
-
-    $ionicConfigProvider.platform.ios.views.transition('ios');
-    $ionicConfigProvider.platform.android.views.transition('android');
-
-    var regex = new RegExp('\.(html|js|css|png|jpg)$', 'i');
-    var isAsset = function (url) {
-        return regex.test(url);
-    };
-
-    $stateProvider.state('selectmember', {
-        url: '/selectmember',
-        templateUrl: '/templates/common/selectmember.html',
-        controller: 'SelectMemberCtrl'
-    })
-
-    .state('selectsinglemember', {
-        url: '/selectsinglemember',
-        templateUrl: '/templates/common/selectsinglemember.html',
-        controller: 'SelectSingleMemberCtrl'
-    })
-
-    .state('selectdept', {
-        url: '/selectdept/:id',
-        templateUrl: '/templates/common/selectdept.html',
-        controller: 'SelectDeptCtrl'
-    })
-
-    .state('fieldtype', {
-        url: '/fieldtype/:id',
-        templateUrl: '/templates/common/fieldtype.html',
-        controller: 'FormFieldTypeCtrl'
-    })
-
-    .state('transfer', {
-        url: '/transfer/:module/:id',
-        templateUrl: '/templates/common/transfer.html',
-        controller: 'TransferCtrl'
-    })
-
-    .state('selectsingledept', {
-        url: '/selectsingledept',
-        templateUrl: '/templates/common/selectsingledept.html',
-        controller: 'SelectSingleDeptCtrl'
-    })
-
-    $urlRouterProvider.otherwise('/index');
-
-    $translateProvider.useStaticFilesLoader({
-        prefix: '/i18n/',
-        suffix: '.json'
-    });
-
-    $httpProvider.interceptors.push(function ($q, cfg, global) {
-        return {
-            'request': function (config) {
-                if (!isAsset(config.url) && (global.refresh || global.debug)) { //if the call is not for an asset file
-                    config.url += (config.url.indexOf("?") === -1 ? "?" : "&") + "v=" + Date.now();
-                    if (global.refresh)
-                        global.refresh = false;
-                }
-
-                if (config.url.startsWith(cfg.api) || config.url.indexOf(global.api) == 0) {//分页时自带了请求路径
-                    if (config.url.startsWith(cfg.api)) config.url = global.api + config.url;
-                    console.log(angular.lowercase(config.method) + " url: " + config.url);
-                    if (global.user.token) {
-                        config.headers['authorization'] = 'Token ' + global.user.token;
-                        console.log(' authorization:' + config.headers['authorization']);
-                    }
-                }
-                config.timeout = 10000;
-                return config;
-            },
-            'responseError': function (rejection) {
-                console.error(JSON.stringify(rejection));
-                return $q.reject(rejection);
-            }
-        };
-    });
-    $resourceProvider.defaults.stripTrailingSlashes = false;
-    $resourceProvider.defaults.actions.update = {
-        method: 'PUT',
-        params: {
-            id: "@id"
-        }
-    };
-    $resourceProvider.defaults.actions.patch = {
-        method: 'PATCH',
-    };
-})
-
-.constant('cfg', {
-    // api: 'http://192.168.1.5:8000/api/'
-    api: '/api/'
-})
-
-.value('global', {
-    user: {
-        usrid: "",
-        token: "",
-        usrname: "",
-        compno: "",
-        compname: "",
-        deptno: "",
-        deptname: "",
-        roleid: "",
-        im_usrid: "",
-        cellphone: "",
-        password: ""
-    },
-    api: "",
-    debug: true,
-    refresh: false
-})
-
-_.mixin({
-    diff: function (_new, _old) {
-        var r = {C: [], D: [], U: []};
-        list_new = _.pluck(_new, 'id');
-        list_old = _.pluck(_old, 'id');
-        r.D = _.difference(list_old, list_new).join(',');
-        r.C = _.filter(_new, function (item) {
-            return item.id == undefined;
-        });
-        r.U = _.map(_.filter(_new, function (item) {
-            return item.isModified && item.id != undefined;
-        }), _.clone);
-        _.each(r.U, function (item) {
-            delete item.isModified;
-        });
-
-        _.each(r.C, function (item) {
-            delete item.isModified;
-        });
-        return r;
-    }
-});
-//http://stackoverflow.com/questions/33106114/cordova-javascript-error-has-no-method-startswith-android
-if (typeof String.prototype.startsWith != 'function') {
-    String.prototype.startsWith = function (str) {
-        return this.indexOf(str) === 0;
-    };
-}
-starter.controller('SelectParentCtrl', function ($scope, $state, Member) {
-    $scope.deptlst = [];
-    $scope.emplst = [];
-    $scope.index = 0;
-    $scope.isUp = false;
-    $scope.deptid = 1;
-    $scope.titlename = Member.titlename;
-    $scope.selectedemplst = Member.selectedemplst;
-    $scope.disabled = Member.disabled;
-    $scope.showall = Member.showall;
-    $scope.showgroup = Member.showgroup;
-    $scope.loading = true;
-    $scope.leftbtn = [{
-        text: '取消',
-        click: 'cancel'
-    }, {
-        text: '上一层',
-        click: 'up'
-    }];
-})
-
-.controller('SelectMemberCtrl', function ($scope, $state, $ionicHistory, $rootScope, $ionicModal, $timeout, $controller, Dept, Member) {
-    var parentctrl = $controller('SelectParentCtrl', {$scope: $scope});
-    var showgroupmodel = $ionicModal.fromTemplateUrl('/templates/common/modal-selectgroup.html', {
-        scope: $scope,
-        animation: 'slide-in-right'
-    });
-    var startdept = null;
-    $rootScope.commons.goBackIsDisable = true;
-    var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
-        if (Member.homerenderdata.length != 0) {
-            $scope.loading = false;
-            _.each(Member.homerenderdata, function (item) {
-                $scope.deptlst.push(item);
-            });
-            init_selected(Member.resourcemember);
-        } else {
-            Dept.getDep().then(function (data) {
-                startdept = _.find(data, function (itemdept) {
-                    return itemdept.parent == null; //获取公司的顶层部门
-                });
-                getemp(startdept.id);
-                data = _.filter(data, function (item) {
-                    return item.parent == startdept.id;
-                });
-                $scope.deptlst = data;
-                init_selected(Member.resourcemember);
-            }, function (err) {
-                alert(JSON.stringify(err))
-            });
-        }
-    });
-    $scope.changeindex = function (index, dtid) {
-        $scope.index = index;
-        $scope.deptid = dtid;
-    };
-
-    $scope.change = function (emp) {
-        if (emp.selected) {
-            $scope.selectedemplst.push(emp);
-            Member.selectedemplst = $scope.selectedemplst;
-        } else {
-            $scope.selectedemplst = _.filter($scope.selectedemplst, function (e) {
-                return e.user_id != parseInt(emp.user_id);
-            });
-            Member.selectedemplst = $scope.selectedemplst;
-        }
-        setselectedcount();
-    };
-
-    $scope.up = function () {
-        var dept = undefined;
-        if (Member.homerenderdata.length > 0) {
-            dept = _.find(Member.homerenderdata, function (item) {
-                return item.id == parseInt($scope.deptid);
-            })
-        }
-        if (dept != undefined) {
-            $scope.deptlst = $scope.deptlst.concat(Member.homerenderdata);
-            $scope.emplst = [];
-            $scope.index = 0;
-        } else {
-            dept = _.find(Dept.all(), function (d) {
-                return d.id == parseInt($scope.deptid);
-            });
-            getdept_emp(dept.parent);
-        }
-    };
-
-    $scope.cancel = function () {
-        Member.selectedemplst = [];
-        Member.dialogresult = 0;
-        if (Member.cancelroutename != "") {
-            $state.go(Member.cancelroutename, Member.cancelrouteparams);
-        } else {
-            $ionicHistory.goBack();
-        }
-    };
-    var dep = {};
-    $scope.changedept = function (dept) {
-        dep = dept;
-        getdept_emp(dept.id);
-    };
-
-    $scope.ok = function () {
-        Member.dialogresult = 1;
-        Member.all = 0;
-        if (Member.routename != '') {
-            $state.go(Member.routename, Member.routeparams);
-        } else {
-            $ionicHistory.goBack(); //todo:带参数跳转
-        }
-    };
-
-    $scope.selectAll = function () {
-        Member.all = 1;
-        $state.go(Member.routename, Member.routeparams);
-    };
-
-    $scope.back = function () {
-        if ($rootScope.commons.modal != null) {
-            $rootScope.commons.modal.hide();
-        }
-    };
-
-    $scope.toselectgroup = function () {
-        showgroupmodel.then(function (modal) {
-            $rootScope.commons.modal = modal;
-            $rootScope.commons.modal.show();
-        });
-    };
-
-    $scope.$on("$destroy", function () {
-        $rootScope.commons.goBackIsDisable = false;
-        Member.member = {};
-    });
-
-    function init_selected(data) {
-        setdeptrighticon($scope.deptlst);
-        Member.selectedemplst = [];
-        if (!Member.disabled) {
-            $scope.selectedemplst = $scope.selectedemplst.concat(data);
-            Member.selectedemplst = $scope.selectedemplst;
-        }
-        setselectedcount();
-    }
-
-    function getemp(id) {
-        Dept.getEmp(id).then(function (data) {
-            console.log(data);
-            Member.member[id.toString()] = angular.copy(data);
-            $scope.emplst = data;
-            setitem();
-            $scope.loading = false;
-        });
-    }
-
-    function getdept_emp(did) {
-        if (Member.member[did.toString()]) {
-            set_member(did);
-        } else {
-            $scope.loading = true;
-            Dept.getEmp(did).then(function (data) {
-                Member.member[did.toString()] = angular.copy(data);
-                set_member(did);
-                $scope.loading = false;
-            }, function (err) {
-                $scope.loading = false;
-            });
-        }
-    }
-
-    var set_member = function (did) {
-        $scope.deptlst = Dept.getChildDept(did);
-        setdeptrighticon($scope.deptlst);
-        $scope.emplst = Member.member[did.toString()];
-        setitem();
-        $scope.deptid = did;
-        $scope.index = (startdept && did == startdept.id) ? 0 : 1;
-    };
-
-    function setselectedcount() {
-        $scope.selectcount = $scope.selectedemplst.length > 0 ? "(" + $scope.selectedemplst.length + ")" : "";
-    }
-
-    function setitem() {
-        _.each($scope.emplst, function (e) {
-            e.selected = false;
-            e.disabled = false;
-            e.depname = dep.depname;
-            set_isenable(e, Member.resourcemember, true);
-            set_isenable(e, Member.unenabledata, false);
-            var e1 = _.find($scope.selectedemplst, {'user_id': e.user_id});
-            if (e1 != undefined) e.selected = true;
-        });
-    }
-
-    function set_isenable(e, data, op) {
-        var p = _.find(data, {'user_id': e.user_id});
-        if (p != undefined) {
-            e.disabled = e.selected = true;
-            if (!Member.disabled && op) e.disabled = false;
-        }
-    }
-
-    function setdeptrighticon(deptlst) {
-        _.each(deptlst, function (d) {
-            d.isShow = isShow(d);
-        })
-    }
-
-    function isShow(dept) {
-        var childdepts = Dept.getChildDept(dept.id);
-        return !(childdepts.length == 0);
-    }
-})
-
-.controller('SelectSingleMemberCtrl', function ($scope, $ionicHistory, $state, $controller, Dept, Member) {
-    var parentctrl = $controller('SelectParentCtrl', {$scope: $scope});
-    var startdept = {};
-    $scope.init = function () {
-        Dept.getDep().then(function (data) {
-            startdept = _.find(data, function (itemdept) {
-                return itemdept.parent == null; //获取公司的顶层部门
-            });
-            getemp(startdept.id);
-            data = _.filter(data, function (item) {
-                return item.parent == startdept.id;
-            });
-            $scope.deptlst = data;
-            setdeptrighticon($scope.deptlst);
-        });
-    };
-
-    $scope.changeindex = function (index, dtid) {
-        $scope.index = index;
-        $scope.deptid = dtid;
-    };
-
-    $scope.change = function (emp) {
-        Member.dialogresult = 1;
-        Member.selectedemplst = [];
-        Member.selectedemplst.push(emp);
-        if (Member.routename != '') {
-            $state.go(Member.routename, Member.routeparams);
-        } else {
-            $ionicHistory.goBack(); //todo:带参数跳转
-        }
-    };
-
-    $scope.up = function () {
-        var dept = _.find(Dept.all(), function (d) {
-            return d.id == parseInt($scope.deptid);
-        });
-        getdept_emp(dept.parent);
-    };
-
-    $scope.cancel = function () {
-        Member.dialogresult = 0;
-        Member.selectedemplst = [];
-        $ionicHistory.goBack();
-    };
-
-    var dep = {};
-    $scope.changedept = function (dept) {
-        dep = dept;
-        getdept_emp(dept.id);
-    };
-
-    $scope.deptdisplay = function () {
-        return $scope.deptlst.length > 0;
-    };
-
-    function getemp(deptid) {
-        Dept.getEmp(deptid).then(function (data) {
-            Member.member[deptid.toString()] = angular.copy(data);
-            $scope.emplst = data;
-            setitem();
-            $scope.loading = false;
-        });
-    }
-
-    function getdept_emp(did) {
-        if (Member.member[did.toString()]) {
-            set_member(did);
-        } else {
-            $scope.loading = true;
-            Dept.getEmp(did).then(function (data) {
-                Member.member[did.toString()] = angular.copy(data);
-                set_member(did);
-                $scope.loading = false;
-            });
-        }
-    }
-
-    var set_member = function (did) {
-        $scope.deptlst = Dept.getChildDept(did);
-        setdeptrighticon($scope.deptlst);
-        $scope.emplst = Member.member[did.toString()];
-        setitem();
-        $scope.deptid = did;
-        $scope.index = (startdept && did == startdept.id) ? 0 : 1;
-    };
-
-    function setitem() {
-        _.each($scope.emplst, function (e) {
-            e.selected = false;
-            e.disabled = false;
-            e.depname = dep.depname;
-            _.each(Member.resourcemember, function (p) {
-                if (p.user_id == parseInt(e.user_id)) {
-                    e.disabled = true;
-                    e.selected = true;
-                    if (!Member.disabled) e.disabled = false;
-                }
-            });
-            _.each($scope.selectedemplst, function (e1) {
-                if (e1.user_id == e.user_id) e.selected = true;
-            });
-        });
-    }
-
-    function setdeptrighticon(deptlst) {
-        _.each(deptlst, function (d) {
-            d.isShow = isShow(d);
-        })
-    }
-
-    function isShow(dept) {
-        return Dept.getChildDept(dept.id).length != 0;
-    }
-
-    $scope.$on("$destroy", function () {
-        Member.member = {};
-    });
-
-    $scope.$on('$ionicView.beforeLeave', function (e) {
-        if (Member.emit.is_have)
-            $scope.$emit(Member.emit.name);
-    });
-})
-
-.controller('SelectDeptCtrl', function ($scope, $state, $ionicHistory, $timeout, $controller, Dept, Member) {
-    var parentctrl = $controller('SelectParentCtrl', {$scope: $scope});
-    $scope.id = $state.params['id'];
-    $scope.selecteddepts = Member.selecteddepts;
-    $scope.selectdeptcount = '';
-    $scope.isallcheck = Member.isallcheck;
-    $scope.flag = 0;
-    $scope.isAll = false;
-    var deptid = 1;
-    var resourcedept = [];
-    var startdept = null;
-    $scope.isAllCheck = function () {
-        Member.dialogresult = 1;
-        $scope.isallcheck = !$scope.isallcheck;
-        Member.isallcheck = $scope.isallcheck;
-        if (Member.isallcheck) {
-            Member.selecteddepts = [];
-            if (Member.routename != '') {
-                $state.go(Member.routename, Member.routeparams);
-            } else {
-                $ionicHistory.goBack(); //todo:带参数跳转
-            }
-        }
-    };
-
-    $scope.cancel = function () {
-        Member.dialogresult = 0;
-        Member.selecteddepts = [];
-        $ionicHistory.goBack();
-    };
-
-    $scope.ok = function () {
-        console.log($scope.selecteddepts.length);
-        Member.dialogresult = 1;
-        Member.all = 0;
-        if (Member.routename != '') {
-            $state.go(Member.routename, Member.routeparams);
-        } else {
-            $ionicHistory.goBack(); //todo:带参数跳转
-        }
-    };
-
-    $scope.up = function () {
-        if ($scope.index == 0 && Member.showall) {
-            $scope.showall = true;
-        }
-        var dept = _.find(Dept.all(), function (d) {
-            return d.id == parseInt(deptid);
-        });
-        getChildDept(dept.parent);
-    };
-
-    $scope.change = function (dept) {
-        if (Member.isallcheck) {
-            $scope.isallcheck = !$scope.isallcheck;
-            Member.isallcheck = $scope.isallcheck;
-        }
-        if (dept.selected) {
-            $scope.selecteddepts.push(dept);
-            Member.selecteddepts = $scope.selecteddepts;
-        } else {
-            $scope.selecteddepts = _.filter($scope.selecteddepts, function (e) {
-                return e.id != parseInt(dept.id);
-            });
-            Member.selecteddepts = $scope.selecteddepts;
-        }
-        setselectedcount();
-    };
-
-    $scope.tochilddept = function (dept) {
-        if ($scope.index == startdept.id) {
-            $scope.showall = false;
-        }
-        getChildDept(dept.id);
-    };
-
-    function setdept(data) {
-        _.each(data, function (item) {
-            item.selected = false;
-            item.isdisabled = false;
-            item.ishide = false;
-            item.disableddesc = '';
-            item.isShow = isShow(item);
-            if (Member.datatype == 3) {
-                if (item.diarymobid != null && $state.params["id"] != item.diarymobid) {
-                    item.disableddesc = '(已设置)';
-                    item.isdisabled = true;
-                }
-            } else if (Member.datatype == 4) {
-                if (item.workatdsetid != null && $state.params["id"] != item.workatdsetid) {
-                    item.disableddesc = '(已设置)';
-                    item.isdisabled = true;
-                }
-            }
-            if (_.find(Member.resourcemember, function (rsc) {
-                    return rsc.id == item.id ? true : false
-                })) {
-                item.selected = true;
-            }
-        });
-        $scope.deptlst = data;
-    }
-
-    function getChildDept(did) {
-        var childdepts = Dept.getChildDept(did);
-        if (childdepts.length > 0) {
-            deptid = did;
-            if (did == startdept.id) {
-                $scope.index = 0;
-            } else {
-                $scope.index = 1;
-            }
-            setdept(childdepts);
-        }
-    }
-
-    function setselectedcount() {
-        if (Member.selecteddepts.length > 0) {
-            $scope.selectcount = "(" + Member.selecteddepts.length + ")";
-        } else {
-            $scope.selectcount = "";
-        }
-    }
-
-    function isShow(dept) {
-        var childdepts = Dept.getChildDept(dept.id);
-        if (childdepts.length == 0) {
-            return false;
-        } else {
-            return true;
-        }
-    }
-
-    var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
-        $scope.loading = true;
-        Dept.getDep().then(function (data) {
-            startdept = _.find(data, function (itemdept) {
-                return itemdept.parent == null; //获取公司的顶层部门
-            });
-            Member.selecteddepts = Member.resourcemember;
-            $scope.selecteddepts = Member.selecteddepts;
-
-            if (Member.datatype == 3) {
-                _.each(data, function (item) {
-                    if (item.diarymobid != null) {
-                        $scope.flag++;
-                    }
-                    if (item.id == 1 && item.diarymobid != null) {
-                        $scope.isAll = true;
-                    }
-                })
-            } else if (Member.datatype == 4) {
-                _.each(data, function (item) {
-                    if (item.workatdsetid != null) {
-                        $scope.flag++;
-                    }
-                    if (item.id == 1 && item.workatdsetid != null) {
-                        $scope.isAll = true;
-                    }
-                })
-            }
-
-            if ($scope.id == -1) {
-                if ($scope.flag == 1 && $scope.isAll) {
-                    $scope.showall = true;
-                } else if ($scope.flag >= 1 && !$scope.isAll) {
-                    $scope.showall = false;
-                }
-                if ($scope.flag >= 1 && $scope.flag + 1 == data.length && !$scope.isAll) {
-                    $scope.isAll = true;
-                }
-            } else {
-                if ($scope.flag == 1 && $scope.isAll) {
-                    $scope.showall = true;
-                } else if ($scope.flag >= 1 && !$scope.isAll && Member.resourcemember.length == 0) {
-                    $scope.showall = true;
-                } else if ($scope.flag >= 1 && !$scope.isAll && $scope.flag == Member.resourcemember.length) {
-                    $scope.showall = true;
-                } else if ($scope.flag >= 1 && !$scope.isAll && $scope.flag != Member.resourcemember.length) {
-                    $scope.showall = false;
-                }
-            }
-
-            var rst = _.filter(data, function (a) {
-                return (a.level === 1);
-            });
-            setdept(rst);
-
-            if (!Member.disabled) {
-                _.each(Member.resourcemember, function (m) {
-                    $scope.selecteddepts.push(m);
-                });
-                Member.selecteddepts = $scope.selecteddepts;
-            }
-            setselectedcount();
-        }).finally(function () {
-            $scope.loading = false;
-        });
-    });
-
-    $scope.$on("$destroy", function () {
-        beforeEnter = null;
-    })
-})
-
-.controller('SelectSingleDeptCtrl', function ($scope, $state, $ionicHistory, $timeout, Dept, Member) {
-    $scope.titlename = Member.titlename;
-    var active_dept_id = 1;
-    var startdept = null;
-    $scope.leftbtn = [{
-        text: '取消',
-        click: 'cancel'
-    }, {
-        text: '上一层',
-        click: 'up'
-    }];
-    var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
-        $scope.loading = true;
-        Dept.getDep().then(function (data) {
-            startdept = _.find(data, {'parent': null});
-            $scope.id = Member.resourcemember.length > 0 ? Member.resourcemember[0].id : null;
-            getChildDept(startdept.id);
-        }).finally(function () {
-            $scope.loading = false;
-        });
-    });
-
-    $scope.cancel = function () {
-        Member.dialogresult = 0;
-        Member.selecteddepts = [];
-        $ionicHistory.goBack();
-    };
-
-    $scope.up = function () {
-        getChildDept(_.find(Dept.all(), {'id': active_dept_id}).parent);
-    };
-
-    $scope.change = function (dept) {
-        Member.selecteddepts = [];
-        if (dept.selected) {
-            Member.selecteddepts.push(dept);
-            Member.routename == "" ? $ionicHistory.goBack() : $state.go(Member.routename, Member.routeparams);
-        }
-    };
-
-    $scope.tochilddept = function (dept) {
-        getChildDept(dept.id);
-    };
-
-    $scope.is_showright = function (dept) {
-        return Dept.getChildDept(dept.id).length > 0;
-    };
-
-    function getChildDept(did) {
-        var childdepts = Dept.getChildDept(did);
-        if (childdepts.length > 0) {
-            active_dept_id = did;
-            $scope.index = did == startdept.id ? 0 : 1;
-            var item = _.find(childdepts, {'id': $scope.id});
-            if (item != undefined) item.selected = item != undefined;
-            $scope.deptlst = childdepts;
-        }
-    }
-
-    $scope.$on("$destroy", function () {
-        beforeEnter = null;
-    })
-})
-
-.controller('TransferCtrl', function ($scope, $state, $stateParams, $ionicPopup, $ionicHistory, global, Member) {
-    $scope.selectmember = function () {
-        $scope.isremove = false;
-        Member.resourcemember = [];
-        Member.resourcemember.push({
-            id: global.user.usrid
-        });
-        Member.routename = '';
-        Member.titlename = '选择联系人';
-        $state.go('selectmember');
-    };
-
-    $scope.goback = function () {
-        $ionicHistory.goBack();
-    };
-
-    function selectMember() {
-        if (Member.selectedemplst.length > 0) {
-            $scope.memberlist.push(global.user.imusrid);
-            _.each(Member.selectedemplst, function (item) {
-                $scope.memberlist.push(item.im_usrid);
-            });
-            Member.selectedemplst = [];
-            if (window.cordovaLinker != undefined) {
-                var discussion = {
-                    name: "讨论组",
-                    ids: []
-                };
-                discussion.ids = $scope.memberlist;
-                window.cordovaLinker.discuss(discussion, function (s) {
-                    console.log(s);
-
-                    var confirmPopup = $ionicPopup.confirm({
-                        title: '<br/><div>转发至</div><br/>',
-                        subTitle: discussion.name,
-                        okText: '是',
-                        cancelText: '否'
-                    });
-                    confirmPopup.then(function (res) {
-                        if (res) {
-                            //:todo转发
-                        }
-                    });
-
-                }, function (err) {
-                    console.error(err);
-                });
-            }
-            Member.resourcemember = [];
-        }
-    }
-
-    var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
-        $scope.module = $stateParams.module;
-        $scope.id = $stateParams.id;
-        $scope.linkurl = '/tab/app/' + $scope.module + '/' + $scope.id;
-        console.log($scope.linkurl);
-        $scope.memberlist = [];
-        $scope.popup = {
-            isPopup: false
-        };
-        selectMember();
-    });
-
-    $scope.$on("$destroy", function () {
-        beforeEnter = null;
-    })
-})
-
-starter.directive('itemMember', function (Dept) {
-    return {
-        restrict: 'E',
-        replace: true,
-        template: '<div><ion-checkbox ng-model="emp.selected"  ng-disabled="emp.disabled" ng-change="change(emp)" class="ion-checkbox-class">' +
-        '<img ng-src="../../../img/panda.png" />' +
-        '<label class="labelname">{{emp.username}}</label>' +
-        '<label class="labelrole">{{emp.degree}}</label>' +
-        '</ion-checkbox>' +
-        '</div>'
-    };
-})
-
-.directive('itemDept', function (Dept) {
-    return {
-        restrict: 'E',
-        replace: true,
-        template: '<div>' +
-        '<ion-item class="item item-icon-right"  type="item-text-wrap" ng-click="changedept(dept);">' +
-        '{{dept.depname}}' +
-        '<i class="icon ion-chevron-right icon-accessory" ng-show="dept.isShow"></i>' +
-        '</ion-item>' +
-        '</div>'
-    };
-})
-
-.directive('footerMember', function (Dept) {
-    return {
-        restrict: 'E',
-        replace: true,
-        template: '<div class="bar bar-footer bar-dark footer-div" ng-class={true:"bigview",false:""}[isUp]>' +
-        '<i class="cirl-i" ng-class={true:"ion-ios-arrow-down",false:"ion-ios-arrow-up"}[isUp] ng-click="isUp = !isUp"></i>' +
-        '<ul class="ul-imgs dept-icon">' +
-        '<li ng-repeat="user in selectedemplst">{{user.username}}</li>' +
-        '</ul>' +
-        '<button ng-disabled="selectedemplst.length==0" ng-click="ok();" class="button pull-right button-calm">确定{{selectcount}}</button>' +
-        '</div>'
-    };
-})
-
-.directive('rjCloseBackDrop', [function () {
-    return {
-        scope: false,
-        restrict: 'A',
-        replace: false,
-        link: function (scope, iElm, iAttrs, controller) {
-            var htmlEl = angular.element(document.querySelector('html'));
-            htmlEl.unbind("click");
-            htmlEl.on("click", function (event) {
-                if (event.target.nodeName === "HTML" &&
-                    scope.popup.optionsPopup &&
-                    scope.popup.isPopup) {
-                    scope.popup.optionsPopup.close();
-                    scope.popup.isPopup = false;
-                } else if (event.target.nodeName === "DIV" &&
-                    scope.popup.optionsPopup &&
-                    scope.popup.isSetPopup) {
-                    scope.popup.optionsPopup.close();
-                    scope.popup.isSetPopup = false;
-                }
-            });
-        }
-    };
-}])
-
-//放大缩小图片
-.directive('ngPinchZoom', [function () {
-    var _directive = {
-        restrict: 'A',
-        scope: false,
-        link: _link
-    };
-
-    function _link(scope, element, attrs) {
-        var elWidth, elHeight;
-
-        // mode : 'pinch' or 'swipe'
-        var mode = '';
-
-        // distance between two touche points (mode : 'pinch')
-        var distance = 0;
-        var initialDistance = 0;
-
-        // image scaling
-        var scale = 1;
-        var relativeScale = 1;
-        var initialScale = 1;
-        var maxScale = parseInt(attrs.maxScale, 10);
-        if (isNaN(maxScale) || maxScale <= 1) {
-            maxScale = 3;
-        }
-
-        // position of the upper left corner of the element
-        var positionX = 0;
-        var positionY = 0;
-
-        var initialPositionX = 0;
-        var initialPositionY = 0;
-
-        // central origin (mode : 'pinch')
-        var originX = 0;
-        var originY = 0;
-
-        // start coordinate and amount of movement (mode : 'swipe')
-        var startX = 0;
-        var startY = 0;
-        var moveX = 0;
-        var moveY = 0;
-
-        var image = new Image();
-        image.onload = function () {
-            elWidth = element[0].clientWidth;
-            elHeight = element[0].clientHeight;
-
-            element.css({
-                '-webkit-transform-origin': '0 0',
-                'transform-origin': '0 0'
-            });
-
-            element.on('touchstart', touchstartHandler);
-            element.on('touchmove', touchmoveHandler);
-            element.on('touchend', touchendHandler);
-        };
-
-        if (attrs.ngSrc) {
-            image.src = attrs.ngSrc;
-        } else {
-            if (attrs.src) {
-                image.src = attrs.src;
-            }
-        }
-
-        /**
-         * @param {object} evt
-         */
-        function touchstartHandler(evt) {
-            var touches = evt.originalEvent ? evt.originalEvent.touches : evt.touches;
-
-            startX = touches[0].clientX;
-            startY = touches[0].clientY;
-            initialPositionX = positionX;
-            initialPositionY = positionY;
-            moveX = 0;
-            moveY = 0;
-        }
-
-        /**
-         * @param {object} evt
-         */
-        function touchmoveHandler(evt) {
-            var touches = evt.originalEvent ? evt.originalEvent.touches : evt.touches;
-
-            if (mode === '') {
-                if (touches.length === 1 && scale > 1) {
-
-                    mode = 'swipe';
-
-                } else if (touches.length === 2) {
-
-                    mode = 'pinch';
-
-                    initialScale = scale;
-                    initialDistance = getDistance(touches);
-                    originX = touches[0].clientX -
-                        parseInt((touches[0].clientX - touches[1].clientX) / 2, 10) -
-                        element[0].offsetLeft - initialPositionX;
-                    originY = touches[0].clientY -
-                        parseInt((touches[0].clientY - touches[1].clientY) / 2, 10) -
-                        element[0].offsetTop - initialPositionY;
-
-                }
-            }
-
-            if (mode === 'swipe') {
-                evt.preventDefault();
-
-                moveX = touches[0].clientX - startX;
-                moveY = touches[0].clientY - startY;
-
-                positionX = initialPositionX + moveX;
-                positionY = initialPositionY + moveY;
-
-                transformElement();
-
-            } else if (mode === 'pinch' && touches.length === 2) {
-                evt.preventDefault();
-
-                distance = getDistance(touches);
-                relativeScale = distance / initialDistance;
-                scale = relativeScale * initialScale;
-
-                positionX = originX * (1 - relativeScale) + initialPositionX + moveX;
-                positionY = originY * (1 - relativeScale) + initialPositionY + moveY;
-
-                transformElement();
-
-            }
-        }
-
-        /**
-         * @param {object} evt
-         */
-        function touchendHandler(evt) {
-            var touches = evt.originalEvent ? evt.originalEvent.touches : evt.touches;
-
-            if (mode === '' || touches.length > 0) {
-                return;
-            }
-
-            if (scale < 1) {
-
-                scale = 1;
-                positionX = 0;
-                positionY = 0;
-
-            } else if (scale > maxScale) {
-
-                scale = maxScale;
-                relativeScale = scale / initialScale;
-                positionX = originX * (1 - relativeScale) + initialPositionX + moveX;
-                positionY = originY * (1 - relativeScale) + initialPositionY + moveY;
-
-            } else {
-
-                if (positionX > 0) {
-                    positionX = 0;
-                } else if (positionX < elWidth * (1 - scale)) {
-                    positionX = elWidth * (1 - scale);
-                }
-                if (positionY > 0) {
-                    positionY = 0;
-                } else if (positionY < elHeight * (1 - scale)) {
-                    positionY = elHeight * (1 - scale);
-                }
-
-            }
-
-            transformElement(0.1);
-            mode = '';
-        }
-
-        /**
-         * @param {Array} touches
-         * @return {number}
-         */
-        function getDistance(touches) {
-            var d = Math.sqrt(Math.pow(touches[0].clientX - touches[1].clientX, 2) +
-                Math.pow(touches[0].clientY - touches[1].clientY, 2));
-            return parseInt(d, 10);
-        }
-
-        /**
-         * @param {number} [duration]
-         */
-        function transformElement(duration) {
-            var transition = duration ? 'all cubic-bezier(0,0,.5,1) ' + duration + 's' : '';
-            var matrixArray = [scale, 0, 0, scale, positionX, positionY];
-            var matrix = 'matrix(' + matrixArray.join(',') + ')';
-
-            element.css({
-                '-webkit-transition': transition,
-                transition: transition,
-                '-webkit-transform': matrix + ' translate3d(0,0,0)',
-                transform: matrix
-            });
-        }
-    }
-
-    return _directive;
-}])
-
-.directive('focusMe', function ($timeout) {
-    return {
-        scope: {
-            trigger: '=focusMe'
-        },
-        link: function (scope, element) {
-            scope.$watch('trigger', function (value) {
-                if (value === true) {
-                    $timeout(function () {
-                        element[0].focus();
-                    });
-                }
-            });
-        }
-    };
-})
-
-.directive('imagePopover', [function () {
-    return {
-        restrict: "E",
-        scope: {
-            allImages: '='
-        },
-        template: "<img ng-repeat='img in allImages' ng-click='showImages($index,$event)' ng-src='{{img.file_thumbnail_path}}' class='img-popver-pad'/>",
-        controller: function ($scope, $rootScope, $ionicModal) {
-            $scope.showImages = function (index, event) {
-                if (event != undefined) {
-                    event.stopPropagation();
-                }
-                $scope.activeSlide = index;
-                $scope.showModal('../../templates/modal-imagepopover.html');
-            };
-
-            $scope.bigImage = $rootScope.commons.bigImage;
-            $scope.showModal = function (templateUrl) {
-                $rootScope.commons.fun = clear_change;
-                $rootScope.commons.bigImage = true;
-                $ionicModal.fromTemplateUrl(templateUrl, {
-                    scope: $scope,
-                    animation: 'slide-in-up'
-                }).then(function (modal) {
-                    $rootScope.commons.modal = modal;
-                    $rootScope.commons.modal.show();
-                });
-            };
-
-            $scope.closeModal = function () {
-                clear_change();
-                $rootScope.commons.fun = null;
-            };
-
-            function clear_change() {
-                $rootScope.commons.bigImage = false;
-                $rootScope.commons.modal.hide();
-                $rootScope.commons.modal.remove();
-                $rootScope.commons.modal = null;
-            }
-        }
-    }
-}])
-
-.directive('removePopoverHeader', [function () {
-    return {
-        restrict: "A",
-        link: function (scope, iElm, iAttrs, controller) {
-            document.getElementsByClassName('popup')[0].removeChild(document.getElementsByClassName('popup-head')[0]);
-        }
-    }
-}])
-
-.directive('setPopoverStyle', [function () {
-    return {
-        restrict: "A",
-        scope:{
-            width:"=",
-            headerwidth:"="
-        },
-        link: function (scope, iElm, iAttrs, controller) {
-            document.getElementsByClassName('popup')[0].style.width="300px";
-            document.getElementsByClassName('popup-head')[0].className +="  popup-header-height";
-        }
-    }
-}])
-
-.directive('ionBackButton', [function () {
-    return {
-        restrict: "E",
-        replace: false,
-        template: '<button class="button ion-chevron-left button-clear button-dark" ng-click="goBack()">&nbsp;返回</button>',
-        controller: function ($scope, global) {
-            $scope.goBack = function () {
-                global.goBack();
-            }
-        }
-    }
-}])
-
-.directive('showBigImage', [function () {
-    return {
-        restrict: "E",
-        scope: {
-            url: '=',
-            files: '='
-        },
-        template: "<img ng-repeat='img in files' ng-click='showBigImage(img)' ng-src='{{img.file_thumbnail_path}}' class='img-popver-pad'/>",
-        controller: function ($scope, $rootScope) {
-            $scope.showBigImage = function (img) {
-                $scope.url = img.file_full_path;
-                $rootScope.commons.bigImage = true;
-            }
-        }
-    }
-}])
-starter.factory('Tool', function ($http, $q, $translate, $ionicHistory) {
-    var tempData = {};
-    var translates = {
-        "weekdays": ['sundayTitle', 'mondayTitle', 'tuesdayTitle', 'wednesdayTitle', 'thursdayTitle', 'fridayTitle', 'saturdayTitle']
-    };
-    return {
-        trim: function (str) {
-            if (str == null) {
-                str = "";
-            }
-            return str.replace(/(^\s*)|(\s*$)/g, "");
-        },
-        getTempData: function (key) {
-            return tempData[key]
-        },
-        setTempData: function (key) {
-            tempData[key] = []
-        },
-        get: function (url, iscache, key) {
-            var deferred = $q.defer();
-            iscache = iscache || false;
-            $http.get(url).then(function (res) {
-                    deferred.resolve(res.data);
-                    if (iscache)
-                        tempData[key] = res.data;
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        get_nextpage: function (url) {
-            var deferred = $q.defer();
-            $http.get(url).then(function (res) {
-                    deferred.resolve(res);
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        post: function (url, data, isjson) {
-            var deferred = $q.defer();
-            var header = null;
-            if (isjson == false) {
-                header = {
-                    'Content-Type': 'application/x-www-form-urlencoded'
-                };
-            }
-            $http.post(url, data, {
-                headers: header
-            }).then(function (res) {
-                    deferred.resolve(res.data);
-                },
-                function (err) {
-                    deferred.reject(err);
-                })
-            return deferred.promise;
-
-        },
-        patch: function (url, data) {
-            var deferred = $q.defer();
-            $http.patch(url, data).then(function (res) {
-                deferred.resolve(res.data);
-            }, function (err) {
-                deferred.resolve(err);
-            });
-            return deferred.promise;
-        },
-        put: function (url, data, iscache) {
-            var deferred = $q.defer();
-            iscache = iscache || false;
-            $http.put(url, data).then(function (res) {
-                    deferred.resolve(res.data);
-                    if (iscache)
-                        tempData = res.data;
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        delete: function (url) {
-            var deferred = $q.defer();
-            $http.delete(url).then(function (res) {
-                    deferred.resolve(res.data);
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        getTranslateByKey: function (type, key) {
-            if (translates[type] === undefined || translates[type][key] === undefined)
-                return null;
-            return $translate.instant(translates[type][key]);
-        },
-        removeBackView: function (routes) {
-            var view = $ionicHistory.backView();
-            if (!view)
-                return;
-            if (!(_.isArray(routes)))
-                routes = [routes];
-            _.find(routes, function (route) {
-                if (view.stateName == route) {
-                    return $ionicHistory.removeBackView();
-                }
-            });
-        }
-    }
-})
-
-.factory('showPopup', function ($timeout, $ionicLoading, $ionicPopup, $rootScope, $ionicModal) {
-    var typeArr = [
-        '<i class="icon icon-warn" style="font-size:3em;"></i><br/>',
-        '<ion-spinner icon="android"></ion-spinner><br/>'
-    ];
-
-    function showLoadingToast(type, text, isShowBackDrop) {
-        if (isShowBackDrop == undefined) {
-            isShowBackDrop = true;
-        }
-        // Setup the loader
-        $ionicLoading.show({
-            template: typeArr[type] + text,
-            animation: 'fade-in',
-            showBackdrop: isShowBackDrop,
-            maxWidth: 200,
-            Showdelay: 0
-        });
-    }
-
-    function hideLoadingToast() {
-        $ionicLoading.hide();
-    }
-
-    function popupInfo(type, text, isShowBackDrop, delay) {
-        if (delay == undefined) {
-            delay = 1500;
-        }
-        //弹出缓冲提示
-        showLoadingToast(type, text, isShowBackDrop);
-        //这里使用定时器是为了缓存一下加载过程,防止加载过快
-        $timeout(function () {
-            //停止缓冲提示
-            hideLoadingToast();
-        }, delay);
-    }
-
-    return {
-        //触发函数
-        PopupWindow: function (type, text, isShowBackDrop, delay) {
-            popupInfo(type, text, isShowBackDrop, delay);
-        },
-        hideLoading: function () {
-            hideLoadingToast();
-            $rootScope.commons.isShowPopup = false;
-        },
-        showLoading: function (type, text, isShowBackDrop, delay) {
-            showLoadingToast(type, text, isShowBackDrop);
-            $rootScope.commons.isShowPopup = true;
-            delay = delay || 10000;
-            $timeout(function () {
-                if ($rootScope.commons.isShowPopup) {
-                    $ionicLoading.hide();
-                    console.log(self);
-                    popupInfo(0, '请求超时!', false);
-                    $rootScope.commons.isShowPopup = false;
-                }
-            }, delay);
-        },
-        confirm: function (title, okText, cancelText) {
-            var confirmpopup = $ionicPopup.confirm({
-                title: '<br/><div>' + title + '</div><br/>',
-                okText: okText,
-                cancelText: cancelText
-            });
-            return confirmpopup;
-        },
-        showSelectImgPopup: function (camera, imagePicker, scope) {
-            var optionsPopup = $ionicPopup.show({
-                templateUrl: '../../templates/template-selectimg.html',
-                scope: scope
-            });
-            scope.Camera = camera;
-            scope.ImagePicker = imagePicker;
-            return optionsPopup;
-        },
-        modalTemplate: function (templateurl, animation, scope) {
-            return $ionicModal.fromTemplateUrl(templateurl, {
-                scope: scope,
-                animation: animation,
-                focusFirstInput: true
-            })
-        }
-    }
-})
-
-.factory('ImageManage', function ($q, $cordovaCamera, $cordovaImagePicker, $cordovaFileTransfer, $cordovaFile, $http, cfg, formatFilter, Tool) {
-    var Qiniu_UploadUrl = "http://up.qiniu.com";
-
-    function S4() {
-        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
-    }
-
-    function guid() {
-        return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
-    }
-
-    return {
-        ImagePicker_getPictures: function (_imagecount) {
-            if (_imagecount == undefined) {
-                _imagecount = 1;
-            }
-            var deferred = $q.defer();
-            var options = {
-                maximumImagesCount: _imagecount,
-                quality: 30
-            };
-            var promises = [];
-            $cordovaImagePicker.getPictures(options).then(function (results) {
-                _.each(results, function (res) {
-                    var deferred1 = $q.defer();
-                    window.resolveLocalFileSystemURL(res, function done(fileEntry) {
-                        fileEntry.file(function (fileObj) {
-                            var reader = new FileReader();
-                            reader.onloadend = function (e) {
-                                deferred1.resolve("data:image/jpeg;base64," + window.btoa(e.target.result))
-                            };
-                            reader.readAsBinaryString(fileObj);
-                        }, function (err) {
-                            alert(JSON.stringify(err))
-                        })
-                    });
-                    promises.push(deferred1.promise);
-                });
-                deferred.resolve(promises);
-            }, function (err) {
-                deferred.reject(err);
-            });
-            return deferred.promise;
-        },
-        Camera_getPicture: function (_allowEdit) {
-            if (_allowEdit == undefined) {
-                _allowEdit = false;
-            }
-            var deferred = $q.defer();
-            var options = {
-                quality: 30,
-                destinationType: Camera.DestinationType.DATA_URL,
-                sourceType: Camera.PictureSourceType.CAMERA,
-                allowEdit: _allowEdit,
-                encodingType: Camera.EncodingType.JPEG,
-                popoverOptions: CameraPopoverOptions,
-                saveToPhotoAlbum: true,
-                correctOrientation: true
-            };
-            $cordovaCamera.getPicture(options).then(function (imageData) {
-                deferred.resolve("data:image/jpeg;base64," + imageData);
-            }, function (err) {
-                deferred.reject(err);
-            });
-            return deferred.promise;
-        },
-        upload: function (fileurls, token, _filepath) {
-            var promises = [];
-            var files = fileurls;
-            var options = new FileUploadOptions();
-            if (!_.isArray(files)) {
-                files = [];
-                files.push(fileurls);
-            }
-            _.each(files, function (itemfile) {
-                var params = {};
-                options.params = params;
-                params.token = token;
-                params.mimeType = "image/jpg";
-                params.key = _filepath + guid() + itemfile.substr(itemfile.lastIndexOf('.'));
-                promises.push($cordovaFileTransfer.upload(Qiniu_UploadUrl, itemfile, options, true));
-            });
-            return $q.all(promises);
-        },
-        getToken: function (app, id, cls) {
-            var url = formatFilter('{0}qiniuupload/?app={1}&cls={2}&pk={3}', cfg.api, app, cls, id);
-            return $http.get(url);
-        },
-        get_upload_Token: function (_url, compid) {
-            var url = formatFilter('{0}{1}/{2}/', cfg.api, _url, compid);
-            return $http.get(url);
-        },
-        uploadImage: function (fileurls, app, id, cls) {
-            var url = formatFilter('{0}qiniuupload/?app={1}&cls={2}&pk={3}', cfg.api, app, cls, id);
-            var defer_promises = $q.defer();
-            Tool.get(url).then(function (data) {
-                var promises = [];
-                var options = new FileUploadOptions();
-                var params = {};
-                options.params = params;
-                params.token = data.token;
-                params.mimeType = "image/jpg";
-                _.each(_.isArray(fileurls) ? fileurls : [fileurls], function (itemfile) {
-                    params.key = data.filepath + guid();
-                    var defer_up = $q.defer();
-                    $cordovaFileTransfer.upload(Qiniu_UploadUrl, itemfile, options, true).then(function (res) {
-                        defer_up.resolve(res);
-                    }, function (err) {
-                        console.log(JSON.stringify(err));
-                        defer_up.reject(err);
-                    });
-                    promises.push(defer_up.promise);
-                });
-                defer_promises.resolve(promises);
-            }, function (err) {
-                defer_promises.reject(err);
-                alert('get upload token error' + JSON.stringify(err));
-            });
-            return defer_promises.promise;
-        }
-    }
-})
-
-.factory('Member', function () {
-    var member = {};
-    var defaultmember = {};
-    member.resourcemember = []; //基础数据
-    member.selectedemplst = []; //选中的员工数据
-    member.selecteddepts = []; //选中的部门数据
-    member.isallcheck = false; //是否选中全部成员(部门)
-    member.unenabledata = [];//未启用的数据(禁用的数据)
-
-    member.homerenderdata = []; //目前为展示部门数据
-
-    member.routename = ''; //点击确定后需要跳转的路由名称,默认是goBack();
-    member.routeparams = {}; //"确定" 路由参数
-    member.cancelroutename = ''; //点击取消后需要跳转的路由名称,默认是goBack();
-    member.cancelrouteparams = {}; //"取消" 路由参数
-    member.titlename = "选择成员"; //页面显示的标题名称
-    member.datatype = ''; //成员类型 0:不计考勤成员 1:可查看考勤统计成员
-    member.disabled = true; //是否需要禁用基础数据
-    member.hide = false; //是否需要隐藏基础数据
-    member.dialogresult = 1; //0:是点击了取消按钮退出,1:点击了确定按钮
-    member.showall = false; //默认不显示‘全部成员’栏位
-    member.showgroup = false; //默认不显示‘选择小组’栏位
-    member.all = 1; // 全部成员/部分成员  :  1/0
-    member.customerop = null; //自定义操作
-
-    member.emit = {is_have: false, name: ''};
-
-    member.member = {};//用来存放相对应部门的员工数据,一部门ID作为key
-    return member;
-})
-
-.factory('Dept', function ($http, $q, cfg, formatFilter, Tool, global) {
-    var deptlst = [];
-    var resultdept = new Array();
-    var resultemp = new Array();
-    return {
-        selecteddepts: [], //存放被选中的部门集合
-        titleName: {
-            name: ''
-        },
-        save: function (up_depts, del_deptids, add_depts, compid) {
-            var datas = [];
-            if (del_deptids.length > 0) {
-                datas.push({
-                    "op": "del",
-                    "values": del_deptids
-                });
-            }
-            if (add_depts.length > 0) {
-                datas.push({
-                    "op": "add",
-                    "values": add_depts
-                });
-            }
-            if (up_depts.length > 0) {
-                datas.push({
-                    "op": "up",
-                    "values": up_depts
-                });
-            }
-            var url = formatFilter('{0}depts/?compid={1}', cfg.api, compid);
-            return Tool.patch(url, datas)
-        },
-        all: function () {
-            deptlst = Tool.getTempData('deptlist') || [];
-            return deptlst;
-        },
-        setdeptlst: function (data) {
-            deptlst = data;
-            Tool.setTempData('deptlist')
-        },
-        getDep: function (compid) {
-            var url = formatFilter('{0}depts/', cfg.api);
-            if (compid) {
-                url = formatFilter('{0}depts/?compid={1}', cfg.api, compid);
-            }
-            return Tool.get(url, true, 'deptlist')
-        },
-        getEmp: function (deptid, compid) {
-            var url = formatFilter('{0}usrs/', cfg.api);
-            if (deptid != undefined) {
-                url = formatFilter('{0}usrs/?deptid={1}', cfg.api, deptid);
-            }
-            if (compid != undefined && deptid != undefined) {
-                url = formatFilter('{0}usrs/?compid={1}&deptid={2}', cfg.api, compid, deptid);
-            }
-            return Tool.get(url)
-        },
-        getChildDept: function (pid) {
-            return _.filter(this.all(), function (dept) {
-                return parseInt(dept.parent) == parseInt(pid);
-            });
-        },
-        getUsrDetail: function () {
-            return Tool.get(formatFilter('{0}usrs/{1}/?compid={2}', cfg.api, global.user.usrid, global.user.compno), true, 'userinfo');
-        },
-        putUsrInfo: function (data) {
-            data.dept = data.dept_id;
-            data = _.pick(data, 'username', 'sex', 'dept', 'degree', 'email');
-            return Tool.put(formatFilter('{0}usrs/{1}/', cfg.api, global.user.usrid), data)
-        }
-    };
-})
-
-.factory('General', function ($http, $q, cfg, global, formatFilter) {
-    var Comment = {};
-    var Read = {};
-    return {
-        getComment: function (id, module) {
-            var url = formatFilter('{0}{1}/comments/?{2}id={3}', cfg.api, module, module, id);
-            var deferred = $q.defer();
-            $http.get(url).then(function (res) {
-                    deferred.resolve(res.data);
-                    Comment = res.data;
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        getRead: function (id, module, type) {
-            var url = formatFilter('{0}{1}/readeds/?{2}id={3}', cfg.api, module, module, id);
-            if (type != undefined) {
-                url += '&type=unreads'
-            }
-            var deferred = $q.defer();
-            $http.get(url).then(function (res) {
-                    deferred.resolve(res.data);
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        postComment: function (data, module) {
-            var url = formatFilter('{0}{1}/comment/', cfg.api, module);
-            var deferred = $q.defer();
-            $http.post(url, data, {
-                headers: {
-                    'Content-Type': 'application/json'
-                }
-            }).then(function (res) {
-                    console.log(res.data)
-                    deferred.resolve(res.data);
-                    res.data.user__username = global.user.usrname;
-                    res.data.user_id = global.user.usrid;
-                    res.data.create_dd = new Date();
-                    Comment.splice(0, 0, res.data);
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        postRead: function (data, module) {
-            console.log(Read)
-            var url = formatFilter('{0}{1}/readeds/', cfg.api, module);
-            var deferred = $q.defer();
-            $http.post(url, data, {
-                headers: {
-                    'Content-Type': 'application/json'
-                }
-            }).then(function (res) {
-                    deferred.resolve(res.data);
-                },
-                function (err) {
-                    deferred.reject(err);
-                });
-            return deferred.promise;
-        },
-        deleteComment: function (id, module) {
-            var comment = _.find(Comment, function (item) {
-                if (item.id === parseInt(id)) {
-                    return item;
-                }
-            })
-            if (comment != undefined) {
-                Comment.splice(Comment.indexOf(comment), 1);
-                var url = formatFilter('{0}{1}/comment/{2}/', cfg.api, module, id);
-                return $http.delete(url);
-            }
-        }
-    }
-})
-
-starter.filter("format", function () {
-    return function (input) {
-        var args = arguments;
-        return input.replace(/\{(\d+)\}/g, function (match, capture) {
-            return args[1 * capture + 1];
-        });
-    };
-})
-
-.filter('getDateDiff', function () {
-    return function (dateTimeStamp) {
-        if (dateTimeStamp == null) {
-            return null;
-        }
-
-        var minute = 1000 * 60;
-        var hour = minute * 60;
-        var day = hour * 24;
-        var week = day * 7;
-        var month = day * 30;
-        var year = day * 365;
-        var now = new Date().getTime();
-        var datetime = new Date(dateTimeStamp).getTime()
-        var diffValue = now - datetime;
-
-        if (diffValue + 10000 < 0) {
-            //非法操作
-            return false;
-        }
-
-        var yearC = diffValue / year;
-        var monthC = diffValue / month;
-        var weekC = diffValue / week;
-        var dayC = diffValue / day;
-        var hourC = diffValue / hour;
-        var minC = diffValue / minute;
-
-        if (yearC >= 1) {
-            result = parseInt(yearC) + "年前";
-        } else if (monthC >= 1) {
-            result = parseInt(monthC) + "个月前";
-        } else if (weekC >= 1) {
-            result = parseInt(weekC) + "周前";
-        } else if (dayC >= 1) {
-            result = parseInt(dayC) + "天前";
-        } else if (hourC >= 1) {
-            result = parseInt(hourC) + "小时前";
-        } else if (minC >= 1) {
-            result = parseInt(minC) + "分钟前";
-        } else
-            result = "刚刚";
-        return result;
-    }
-})
-
-.filter('SwitchHtmlContent', function () {
-    return function (content) {
-        if (content != null) {
-            content = content.replace(/\n/g, '<br/>');
-            if (typeof ioNull != 'undefined') {
-                return ioNull.emoji.parse(content);
-            }
-        }
-        return content;
-    }
-})
-
-.filter('percentage', function ($window) {
-    return function (input, decimals, suffix) {
-        decimals = angular.isNumber(decimals) ? decimals : 2;
-        suffix = suffix || '%';
-        if ($window.isNaN(input)) {
-            return '';
-        }
-        return Math.round(input * Math.pow(10, decimals + 2)) / Math.pow(10, decimals) + suffix
-    };
-})
-
-.filter('strtimeformat', function ($filter) {
-    var dateFilter = $filter('date');
-
-    function formatter(value) {
-        return dateFilter(value, 'HH:mm'); //format
-    }
-
-    return function (str) {
-        if (str == null)
-            return null;
-        str = new Date('2016/10/1 ' + str);
-        return formatter(str);
-    };
-})

File diff suppressed because it is too large
+ 0 - 0
www/js/starter.min.js


Some files were not shown because too many files changed in this diff