angular js 写的部门树 有选中和 取消操作

自己写的angular js的代码

写吐了

是一个树状结构

大神有没有办法精简一下

 .controller('studyPlanCreatCtrl', function ($scope, $rootScope, $stateParams, studyplanService, $filter, $timeout, $state, $location) {

        //页面title设置
        $rootScope.pagetitle = "创建学习计划";
        window.y_bridge_bar.set_navbar({param: {title: $rootScope.pagetitle}});
        $scope.initPageContext = function () {
            $scope.pageIndex = 1;
            $scope.pageSize = 10;
            $scope.totalPages = 0;
        }
        $scope.isAllChecked = false;
        $scope.initPageContext();
        $scope.creat = {};
        $scope.blur = {};
        $scope.blur.studyplanName = false;
        $scope.blur.studyplanDescription = false;
        $scope.creat.studyplanName = "";
        $scope.creat.studyplanday = 1;
        $scope.creat.userkeyword = "";//搜索人员关键字
        $scope.creat.studyPlanDescription = "";//学习计划描述
        // 单数时间前加0
        $scope.nodeshowstatus = false;
        $scope.nodeshowstatus2 = false;
        $scope.nodeshowstatus3 = false;
        $scope.userSearchSates = false;
        $scope.UngroupedCount = 0;//未分组的数量
        $scope.clickdepid = 0;
        $scope.isOnlyDepAdmin = false;
        $scope.waitcomplete = false;
        var myDateNow = new Date();
        var iYear = myDateNow.getFullYear();
        var iMonth = myDateNow.getMonth();
        var iDay = myDateNow.getDate();

        $scope.creat.studyplanTime = $filter('dateToString')(myDateNow, "yyyy-MM-dd");
        $scope.datedayshow = function (data, index) {
            $timeout(function () {

                dateTemp = $filter('stringToDate')(data) - myDateNow;
                $scope.creat.studyplanday = Math.ceil(dateTemp / (24 * 3600 * 1000)) + 1;
            }, 0);
        };
        $scope.clearUserKeyWord = function () {
            $scope.isSearch = false;
            $scope.creat.userkeyword = "";
            $scope.departmentslistshow();
        };

        $scope.opt = {};
        $scope.opt.date = {
            preset: 'date',
            minDate: new Date(iYear, iMonth, iDay)
        };
        $scope.opt.default = {
            preset: 'date', //日期
            theme: 'android-ics light', //皮肤样式
            display: 'bottom', //显示方式
            mode: 'mixed', //日期选择模式
            dateFormat: 'yy-mm-dd', // 日期格式
            setText: '确定', //确认按钮名称
            cancelText: '取消',//取消按钮名称
            dateOrder: 'yymmdd', //面板中日期排列格式
            dayText: '日', monthText: '月', yearText: '年', //面板中年月日文字
            startYear: iYear, //开始年份
            endYear: iYear + 10, //结束年份
            width: 90,
            onSelect: $scope.datedayshow
        };


        $scope.showDatecontroll = function () {
            $('input[data-role="datebox"]').mobiscroll($.extend($scope.opt['date'], $scope.opt['default']));
            $('input[data-role="datebox"]').mobiscroll('show');
        }
        $scope.creat.studyplanUser = "";
        $scope.creat.addUserStatus = 0;
        //开始计算计划需要多少天

        var completeDate = new Date($scope.creat.studyplanTime);


        $scope.addUserShow = function () {
            $scope.creat.isdeluser = false;
            $scope.creat.addUserStatus = 1;
            $scope.departmentslistshow();
        }
        $scope.addUserHid = function () {
            $scope.creat.addUserStatus = 0;
        }
        $scope.directnodeshowstatus = false;
        $scope.directnodeshowstatus2 = false;
        $scope.openDeleteUser = function (d) {
            $scope.creat.isdeluser = true;//是否可以删除
            d.stopPropagation();
        }
        $scope.bodyclick = function () {
            $scope.creat.isdeluser = false;
        }
        $scope.deleChooseUser = function (id, obj) {
            obj.stopPropagation();
            if ($scope.creat.isdeluser) {
                angular.forEach($scope.userchoosedlist, function (d, index) {
                    if (d.userid == id) {
                        $scope.userchoosedlist.splice(index, 1);
                    }
                });

            }
        }
        //一级选择节点事件
        $scope.selectNode = function (item, flag, ischecked) {
            if (item == 0) {//是未分组的情况处理
                if ($scope.selectpid != 0) {
                    $scope.nodeshowstatus = true;
                    $scope.selectpid = 0;
                } else {
                    $scope.nodeshowstatus = !$scope.nodeshowstatus;
                }
                if (flag && $scope.nodeshowstatus) {
                    $scope.initPageContext();
                    $scope.creat.userlist = "";
                    $scope.showUserlist(0, ischecked);
                }
            }
            else {
                if ($scope.selectpid != item.detail.pid) {
                    $scope.nodeshowstatus = true;
                    $scope.selectpid = item.detail.pid;
                } else {
                    $scope.nodeshowstatus = !$scope.nodeshowstatus;
                }
                if (flag && $scope.nodeshowstatus) {
                    $scope.initPageContext();
                    $scope.creat.userlist = new Array();
                    $scope.showUserlist(item.detail.isdirect == 1 ? item.detail.dpid : item.detail.pid, ischecked);
                }
            }


        }
        //二级选择节点事件
        $scope.selectNode2 = function (item2, flag, ischecked) {
            if ($scope.selectpid2 != item2.detail.pid) {
                $scope.nodeshowstatus2 = true;
                $scope.selectpid2 = item2.detail.pid;
            } else {
                $scope.nodeshowstatus2 = !$scope.nodeshowstatus2;
            }
            if (flag && $scope.nodeshowstatus2) {
                $scope.initPageContext();
                $scope.creat.userlist = "";
                $scope.showUserlist(item2.detail.isdirect == 1 ? item2.detail.dpid : item2.detail.pid, ischecked);
            }

        }
        //三级选择节点事件
        $scope.selectNode3 = function (item3, flag, ischecked) {
            if ($scope.selectpid3 != item3.detail.pid) {
                $scope.nodeshowstatus3 = true;
                $scope.selectpid3 = item3.detail.pid;
            } else {
                $scope.nodeshowstatus3 = !$scope.nodeshowstatus3;
            }
            if (flag && $scope.nodeshowstatus3) {
                $scope.initPageContext();
                $scope.creat.userlist = "";
                $scope.showUserlist(item3.detail.isdirect == 1 ? item3.detail.dpid : item3.detail.pid, ischecked);
            }
        }


        //部门展示显示

        $scope.departmentslistshow = function () {
            if ($scope.nodeshowstatus == false && $scope.nodeshowstatus2 == false && $scope.nodeshowstatus3 == false) {
                $scope.showUserlist(0);//先获得未分组数量
            } else {
                $scope.showUserlist($scope.clickdepid, false);//先获得展现组数量
            }
            var searchData = new Array();
            if ($rootScope)
                if ($rootScope.userContent != undefined && ($rootScope.userContent.roleID != "100004" || $rootScope.userContent.roleID == "100002")) {
                    // $scope.isAdmin = true;
                    searchData.managerid = $rootScope.userContent.userId;
                    $scope.isOnlyDepAdmin = true;
                }
            //?managerid={1}
            studyplanService.getOrgDepartments(searchData, function (data) {
                $scope.departmentslist = data.datas;
                $scope.userTotalNumber = data.headCount;
                var tempArray = new Array();
                //增加直属部门
                angular.forEach(data.datas, function (d) {
                    d.checked = false;//增加是否选中
                    d.disabled = false;
                    if ($filter("filter")($scope.userchoosedlist, {userid: d.detail.pid})[0]) {
                        d.checked = true;
                        d.disabled = true;
                    }


                    if (d.subDepartments != null && d.subDepartments.length > 0) {
                        angular.forEach(d.subDepartments, function (item) {
                            item.checked = false;
                            item.disabled = false;
                            //显示时是否为选中状态
                            if (d.checked == true || $filter("filter")($scope.userchoosedlist, {userid: item.detail.pid})[0]) {
                                item.checked = true;
                                item.disabled = true;
                            }
                            item.isdirect = 0;
                            if (item.subDepartments != null && item.subDepartments.length > 0) {
                                angular.forEach(item.subDepartments, function (item2) {
                                    item2.isdirect = 0;
                                    item2.checked = false;
                                    item2.disabled = false;
                                    if (item2.subDepartments != null && item2.subDepartments.length > 0) {
                                        angular.forEach(item2.subDepartments, function (item3) {
                                            item3.isdirect = 0;
                                            item3.checked = false;
                                            item3.disabled = false;
                                            if (item2.checked == true || $filter("filter")($scope.userchoosedlist, {userid: item3.detail.pid})[0]) {
                                                item3.checked = true;
                                                item3.disabled = true;
                                            }
                                        });
                                    }
                                    if (item2.detail.directCount > 0 && item2.subDepartments != null && item2.subDepartments.length > 0) {
                                        item2.subDepartments.splice(0, 0, {
                                            'checked': item2.checked,
                                            'disabled': item2.checked,
                                            'detail': {
                                                'pid': item.detail.pid + '01',
                                                'departmentName': '直属',
                                                'userCount': item.detail.directCount,
                                                'isdirect': 1,
                                                'dpid': item.detail.pid
                                            }, 'subDepartments': []
                                        });
                                    }

                                });
                            }

                            if (item.detail.directCount > 0 && item.subDepartments != null && item.subDepartments.length > 0) {
                                item.subDepartments.splice(0, 0, {
                                    'checked': item.checked,
                                    'disabled': item.checked,
                                    'detail': {
                                        'pid': item.detail.pid + '01',
                                        'departmentName': '直属',
                                        'userCount': item.detail.directCount,
                                        'isdirect': 1,
                                        'dpid': item.detail.pid
                                    }, 'subDepartments': []
                                });
                            }
                        });
                    }
                    if (d.detail.directCount > 0 && d.subDepartments != null && d.subDepartments.length > 0) {

                        d.subDepartments.splice(0, 0, {
                            'checked': d.checked,
                            'disabled': d.checked,
                            'detail': {
                                'pid': d.detail.pid + '01',
                                'departmentName': '直属',
                                'userCount': d.detail.directCount,
                                'isdirect': 1,
                                'dpid': d.detail.pid
                            }, 'subDepartments': []
                        });
                    }


                });
            });


        }
        //选择单个人员

        $scope.userchoosedlist = new Array();
        $scope.choosesigleuser = function (user, itemcheckbox) {
            if ($(itemcheckbox.target).prop('checked')) {
                if (!$filter("filter")($scope.userchoosedlist, {userid: user.pid})[0]) {
                    $scope.userchoosedlist.push({
                        'userid': user.pid,
                        'username': user.fullName,
                        'userimg': user.imageUrl,
                        'cate': 2
                    });
                }
            } else {
                angular.forEach($scope.userchoosedlist, function (d, index) {
                    if (d.userid == user.pid) {
                        $scope.userchoosedlist.splice(index, 1);
                    }
                });

            }

        }
        //选择部门
        $scope.choosedep = function (depitem, obj) {
            if ($(obj.target).prop('checked')) {
                if (depitem == 0) {
                    $scope.isAllChecked = true;
                    $scope.userchoosedlist = new Array();

                    $scope.userchoosedlist.push({
                        'userid': 0,
                        'username': '全部',
                        'userimg': '',
                        'cate': 1
                    });
                } else {
                    //对下级部门也选中
                    $scope.checkedDep(depitem);
                    //对部门内部人员也选中
                    if ($scope.clickdepid == depitem.detail.pid||$scope.isInDep(depitem)) {
                        angular.forEach($scope.creat.userlist, function (d) {
                            d.checked = true;
                            d.disabled = true;
                        });
                    }
                    if (depitem.detail.userCount <= 0) {
                        $(obj.target).prop('checked', false);
                    } else {
                        if (!$filter("filter")($scope.userchoosedlist, {userid: depitem.detail.pid})[0]) {
                            $scope.userchoosedlist.push({
                                'userid': depitem.detail.pid,
                                'username': depitem.detail.departmentName,
                                'userimg': '',
                                'cate': 1
                            });
                        }
                    }


                }

                //取消选中
            } else {
                if (depitem == 0) {
                    $scope.isAllChecked = false;
                }
                if ($scope.userchoosedlist != null && $scope.userchoosedlist.length > 0) {
                    angular.forEach($scope.userchoosedlist, function (d, index) {
                        if (depitem == 0) {
                            if (d.userid == 0) {
                                $scope.userchoosedlist.splice(index, 1);
                            }
                        } else {
                            if (d.userid == depitem.detail.pid) {
                                $scope.userchoosedlist.splice(index, 1);
                            }
                        }

                    });

                }
                var isclickid = false;
                //对下级部门取消选中
                if (depitem != null && depitem.subDepartments != null) {
                    angular.forEach(depitem.subDepartments, function (d) {
                        d.checked = false;
                        d.disabled = false;
                        //回归上一个选中状态
                        angular.forEach($scope.userchoosedlist, function (depitem) {
                            if (depitem.userid == d.detail.pid) {
                                d.checked = true;
                                if ($scope.clickdepid == d.detail.pid) {
                                    isclickid = true;
                                }
                            }
                        });
                        if (d != null && d.subDepartments != null) {
                            angular.forEach(d.subDepartments, function (d2) {

                                d2.checked = false;
                                d2.disabled = false;
                                //回归上一个选中状态
                                angular.forEach($scope.userchoosedlist, function (depitem2) {
                                    if (depitem2.userid == d2.detail.pid) {
                                        d2.checked = true;
                                        if ($scope.clickdepid == d2.detail.pid) {
                                            isclickid = true;
                                        }
                                    }
                                });
                                //回归上一个状态
                                if (d.checked == true) {
                                    d2.disabled = true;
                                }
                            });

                        }
                    });

                }
                //对部门内部人员取消选中
                if ($scope.clickdepid == depitem.detail.pid||$scope.isInDep(depitem)) {
                    angular.forEach($scope.creat.userlist, function (d) {
                        //人员列表的部门是选中状态
                        if (isclickid) {
                            d.checked = true;
                            d.disabled = true;
                        } else {
                            d.checked = false;
                            d.disabled = false;
                            //回归上一个选中状态
                            angular.forEach($scope.userchoosedlist, function (useritem) {
                                if (useritem.userid == d.pid) {
                                    d.checked = true;
                                }
                            });
                        }


                    });
                }

            }
        }
        //对子部门选中
        $scope.checkedDep=function(depitem){
            if (depitem != null && depitem.subDepartments != null) {
                angular.forEach(depitem.subDepartments, function (d) {
                    d.checked = true;
                    d.disabled = true;
                    if (d != null && d.subDepartments != null) {
                        angular.forEach(d.subDepartments, function (d2) {
                            d2.checked = true;
                            d2.disabled = true;
                        });

                    }
                });

            }
        }
        //判断$scope.clickdepid在部门或者子部门里
        $scope.isInDep = function (depobj) {
            if (depobj != null && depobj != undefined) {
                if (depobj.detail != null && depobj.detail != undefined) {
                    if (depobj.detail.pid == $scope.clickdepid) {
                        return true;
                    }
                    if(depobj.subDepartments!=null&&depobj.subDepartments!=undefined){
                        var substatus=false;
                        angular.forEach(depobj.subDepartments,function(item){
                            substatus= $scope.isInDep(item);
                        });
                        return substatus;
                    }else{
                        return false;
                    }
                }
            }
        }
        $scope.excWhere = function () {
            var searchData = PagingCriteria($scope.pageIndex, $scope.pageSize);
            if (!angular.isNullOrEmpty($scope.searchKey)) {
                searchData.searchKey = $scope.searchKey;
            }
            var searchData = PagingCriteria($scope.pageIndex, $scope.pageSize);
            searchData.includesubdepartment = false;
            searchData.searchkey = $scope.creat.userkeyword;
            if (searchData.searchkey != '') {
                searchData.includesubdepartment = true;
            }
            // searchData.filterOutStudyPlanId = "";
            // searchData.managerid = "";
            searchData.showDisableUser = 0;
            return searchData;
        };

        //获得人员列表
        $scope.showUserlist = function (depid, ischecked) {

            var searchData = $scope.excWhere();
            if (!$scope.isSearch) {
                $scope.clickdepid = depid;
            }
            if (ischecked == undefined) {
                ischecked == false;
            }
            if (depid == undefined) {
                depid = 0;
            }
            $scope.isLoadMore = true;
            studyplanService.getdepartmentUsers(depid, searchData, function (data) {
                //如果已经在选中的部门里有则为选中状态
                //if ($filter("filter")($scope.userchoosedlist, {userid: depid})[0]) {
                //    ischecked = true;
                //}
                angular.forEach($scope.userchoosedlist, function (item, index) {
                    if (item != null && item != undefined && item.userid == depid) {
                        ischecked = true;
                    }
                });
                $scope.isLoadMore = true;
                $scope.creat.userlist = data.datas;
                angular.forEach($scope.creat.userlist, function (d) {
                    d.checked = ischecked;
                    d.disabled = ischecked;
                    if ($filter("filter")($scope.userchoosedlist, {userid: d.pid})[0]) {
                        d.checked = true;
                        //d.disabled=true;
                    }
                });
                $scope.totalPages = data.paging.pages;
                if (depid == 0 && angular.isNullOrEmpty($scope.creat.userkeyword)) {
                    $scope.UngroupedCount = data.paging.count;
                }
                $scope.isLoadMore = false;
            }, function () {
                $scope.isLoadMore = false;
            });
        }

        $scope.usermorelist = function (callBack) {
            if (!$scope.isLoadMore && $scope.totalPages > $scope.pageIndex) {
                $scope.isLoadMore = true;
                $scope.pageIndex++;
                var searchData = $scope.excWhere();
                studyplanService.getdepartmentUsers(($scope.isSearch ? "0" : $scope.clickdepid), searchData, function (data) {

                    angular.forEach(data.datas, function (d) {
                        $scope.creat.userlist.push(d);
                    });

                    $scope.totalPages = data.paging.pages;
                    $scope.isLoadMore = false;

                }, function () {
                    $scope.isLoadMore = false;
                });

            }
        };

        $scope.searchUser = function () {
            $scope.pageIndex = 1;
            $scope.totalPages = 1;
            $scope.creat.userlist = [];
            $scope.isSearch = true;
            $scope.showUserlist();
        };

        //选知识相关
        $scope.selectKng = false;
        $scope.toSelectKng = function () {
            $scope.selectKng = true;
        };
        $scope.toSelectUser = function () {
            $scope.selectKng = false;
        }
        $scope.selectKngs = []; //选择的知识
        $scope.$on('updateSelectKngs', function (d, data) {
            $scope.selectKngs = data;
        });
        $scope.completeStudyPlan = function () {
            $scope.waitcomplete = true;
            var userdeplist = "";
            var studyPlanContents = new Array();
            var studyPlanEndTime = $scope.creat.studyplanTime + " 23:59:59";
            var domain = "http://www.yxt.com";
            //domain=domain.substring(0,domain.lastIndexOf('#'));
            var emailUrl = domain + '/study/userplandetail';
            angular.forEach($scope.userchoosedlist, function (item) {
                if (item.userid == 0) {
                    userdeplist += "all|" + localStorage.orgId + ";";
                } else {
                    if (item.cate == 1) {
                        userdeplist += "department|" + item.userid + ";";
                    }
                    if (item.cate == 2) {
                        userdeplist += "person|" + item.userid + ";";
                    }
                }
            });
            angular.forEach($scope.selectKngs, function (item) {
                studyPlanContents.push(item.id);
            });

            studyplanService.createStudyPlan({
                "planName": $scope.creat.studyplanName,
                "description": $scope.creat.studyPlanDescription,
                "endDate": studyPlanEndTime,
                "executorIDs": userdeplist,
                "status": 0,
                "studyPlanContents": studyPlanContents,
                "webUrl": domain,
                "studyPlanUrl": emailUrl
            }, function (data) {
                Notify.success('学习计划发布成功!', window.location.href = $state.href('org.studyplan'));
                $scope.waitcomplete = false;
            }, function (data) {
                Notify.warning('学习计划发布失败!');
                $scope.waitcomplete = false;
            })
            //学习计划查询
            logService.sendBehaviorLog("add_studyplan", {"id": localStorage.userId});//
        }
        //搜索时去掉确定框显示隐藏
        $scope.isUserSearchStates = function () {
            $scope.userSearchSates = true;
        }
        $scope.noUserSearchStates = function () {
            $scope.userSearchSates = false;
        }
    })


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用AngularJS实现增删改查的示例代码: HTML模板: ```html <div ng-app="myApp" ng-controller="myCtrl"> <h2>用户列表</h2> <table> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> </thead> <tbody> <tr ng-repeat="user in users"> <td>{{user.name}}</td> <td>{{user.age}}</td> <td> <button ng-click="editUser(user)">编辑</button> <button ng-click="deleteUser(user)">删除</button> </td> </tr> </tbody> </table> <h2>添加/编辑用户</h2> <form ng-submit="saveUser()"> <label>姓名:</label> <input type="text" ng-model="currentUser.name" required /> <br /> <label>年龄:</label> <input type="number" ng-model="currentUser.age" required /> <br /> <button type="submit">保存</button> </form> </div> ``` AngularJS控制器: ```javascript var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { $scope.users = [ { name: '张三', age: 20 }, { name: '李四', age: 25 }, { name: '王五', age: 30 } ]; $scope.currentUser = {}; $scope.editUser = function(user) { $scope.currentUser = angular.copy(user); }; $scope.saveUser = function() { if ($scope.currentUser.name && $scope.currentUser.age) { if ($scope.currentUser.hasOwnProperty('$index')) { $scope.users[$scope.currentUser.$index] = angular.copy($scope.currentUser); } else { $scope.users.push(angular.copy($scope.currentUser)); } $scope.currentUser = {}; } }; $scope.deleteUser = function(user) { var index = $scope.users.indexOf(user); if (index > -1) { $scope.users.splice(index, 1); } }; }); ``` 上述代码实现了一个简单的用户列表,包含姓名和年龄字段。用户可以添加、编辑和删除用户信息。使用ng-repeat指令在表格中显示用户列表,通过ng-click指令调用相应的方法进行编辑和删除操作,ng-model指令绑定用户输入的数据。保存时,根据当前用户是否包含索引属性来判断是新增还是编辑操作

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值