AugularJs 用户信息的管理

本文介绍了一个用户管理系统的设计与实现,包括用户数据的增删改查、排序筛选等功能,并使用AngularJS进行前端开发。

<!DOCTYPE html>
<html ng-app="YueKaos">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no">
    <script type="text/javascript" src="ionic/js/angular/angular.js"></script>
    <script type="text/javascript" src="jquery.1.12.4.js"></script>
    <script type="text/javascript">
        var datas = [
            {
                id: 1,
                name: "曹操",
                password: "123456",
                level: 1,
                dtCreated: "09-04 10:00",
                status: "已发货"
            },
            {
                id: 2,
                name: "孙权",
                password: "123456",
                level: 1,
                dtCreated: "08-09 10:00",
                status: "待发货"
            },
            {
                id: 3,
                name: "刘备",
                password: "123456",
                level: 1,
                dtCreated: "07-05 10:00",
                status: "待发货"
            },
            {
                id: 4,
                name: "司马懿",
                password: "123456",
                level: 1,
                dtCreated: "04-12 10:00",
                status: "已收货"
            },
            {
                id: 5,
                name: "张辽",
                password: "123456",
                level: 3,
                dtCreated: "12-09 10:00",
                status: "待发货"
            },
            {
                id: 6,
                name: "关羽",
                password: "123456",
                level: 2,
                dtCreated: "11-25 10:00",
                status: "待发货"
            },
            {
                id: 7,
                name: "张飞",
                password: "123456",
                level: 2,
                dtCreated: "10-01 10:00",
                status: "待发货"
            },
            {
                id: 8,
                name: "赵云",
                password: "123456",
                level: 3,
                dtCreated: "01-13 10:00",
                status: "待发货"
            },
            {
                id: 9,
                name: "孙尚香",
                password: "123456",
                level: 4,
                dtCreated: "02-02 10:00",
                status: "已收货"
            },
            {
                id: 10,
                name: "周瑜",
                password: "123456",
                level: 2,
                dtCreated: "05-21 10:00",
                status: "待发货"
            },
            {
                id: 11,
                name: "鲁肃",
                password: "123456",
                level: 2,
                dtCreated: "03-08 10:00",
                status: "已收货"
            },
            {
                id: 12,
                name: "黄盖",
                password: "123456",
                level: 3,
                dtCreated: "04-01 10:00",
                status: "已发货"
            },
            {
                id: 13,
                name: "大乔",
                password: "123456",
                level: 4,
                dtCreated: "05-09 10:00",
                status: "已发货"
            },
            {
                id: 14,
                name: "小乔",
                password: "123456",
                level: 4,
                dtCreated: "06-20 10:00",
                status: "已发货"
            }
        ];
    </script>
    <title>用户管理</title>
    <style type="text/css">
        * {
            font-size: 14px;
            margin: 0;
            padding: 0;
        }
        a {
            text-decoration: none;
        }
        body {
            padding: 16px 32px;
        }

        .search {
            position: relative;
            width: 640px;
            height: 40px;
            line-height: 40px;
            margin: 0 auto;
        }

        .search input {
            width: 152px;
            height: 24px;
            border: 1px solid #999;
            border-radius: 4px;
            padding-left: 8px;
        }

        .search select {
            width: 86px;
            height: 24px;
            border: 1px solid #999;
            border-radius: 4px;
        }

        .search .sort {
            position: absolute;
            right: 0;
            top: 8px;
        }

        .btns {
            width: 640px;
            height: 40px;
            line-height: 40px;
            margin: 0 auto;
        }

        .btns button {
            width: 80px;
            height: 24px;
            background-color: green;
            border: 0;
            border-radius: 4px;
            color: white;
        }

        .btns .remove_btn {
            background-color: red;
        }

        .list {
            width: 640px;
            margin: 0 auto;
        }

        .list thead tr {
            background-color: #777;
        }

        .list tbody tr:nth-child(odd) {
            background-color: #ccc;
        }

        .list tbody tr:nth-child(even) {
            background-color: #fff;
        }

        .form {
            width: 460px;
            border: 1px solid #999;
            margin: 0 auto;
        }

        .formErr {
            border: 1px solid red;
        }

        .form .label {
            display: block;
            float: left;
            width: 80px;
            height: 40px;
            line-height: 40px;
            text-align: end;
        }

        .form .txt {
            display: block;
            float: left;
            width: 340px;
            height: 40px;
            line-height: 40px;
            padding-left: 16px;
        }

        .form input {
            width: 312px;
            height: 24px;
            border: 1px solid #999;
            border-radius: 4px;
            padding-left: 8px;
        }

        .form select {
            width: 64px;
            height: 24px;
            border: 1px solid #999;
            border-radius: 4px;
        }

        .form button {
            width: 56px;
            height: 24px;
            background-color: green;
            border: 0;
            border-radius: 4px;
            color: white;
        }

        .form .errTips {
            width: 226px;
            background-color: lightpink;
            color: darkred;
            border-radius: 4px;
            margin-left: 96px;
            margin-top: 6px;
            margin-bottom: 4px;
            padding: 16px 48px;
        }
    </style>
    <script type="text/javascript">
        var app = angular.module("YueKaos", []);

        app.controller("myCtrl", function ($scope) {
            $scope.data = datas;
            $scope.tabless = true;
            $scope.updata_table = false;
            $scope.order = function() {
                if($scope.filter_sort == 1) {
                    $scope.data.sort(function(a,b) {
                        return (a.level> b.level)? 1:-1;
                    });
                }else if($scope.filter_sort == 2) {
                    $scope.data.sort(function(a,b) {
                        return (a.level < b.level)? 1:-1;
                    });
                }else if($scope.filter_sort == 3) {
                     $scope.filter_sort = "dtCreated";
                }else if($scope.filter_sort == 4) {
                    $scope.filter_sort = "-dtCreated";
                };
            };
            $scope.removeAlls = function() {
               $scope.data = [];
            };
            $scope.removeCheck = function() {
                var array = [];
                $("input[name='users']:checked").each(function() {
                    var indexs = this.value;
                    array.push(indexs);
                });
                var datas = $scope.data;
                $scope.data = [];
                for(var idx in datas) {
                    if(array.indexOf(idx) == -1) {
                        $scope.data.push(datas[idx]);
                    }
                }
            };
            $(function() {
                $("input[name='check_all']").click(function() {
                    var ches = this.checked;
                    $("input[name='users']").each(function() {
                        this.checked = ches;
                    });
                });
            });
            $scope.removes = function(idx) {
                var b = confirm("确定删除?");
                    if(b) {
                        $scope.data.splice(idx,1);
                    }
            };


            $scope.updata = function(index) {
                var item = $scope.data[index];
                $scope.e_name = item.name;
                $scope.index = index;
                $scope.jiu_pass = "";
                $scope.new_pass = "";
                $scope.re_pass = "";
                $scope.tishi = false;
                $scope.adds = false;
                $scope.tabless = false;
                $scope.updata_table = true;
            };
            $scope.updatas = function() {
                if($scope.jiu_pass =="") {
                    $scope.tishi = true;
                    $scope.up1 = true;
                    $("#jiu_pass").css({"border":"2px red solid"});
                }else {
                    $scope.tishi=false;
                    $("#jiu_pass").css({"border":"2px black solid"});
                    $scope.up1 = false;
                }

                if($scope.jiu_pass != $scope.data[$scope.index].password) {
                    $scope.tishi = true;
                    $scope.up2 = true;
                    $("#jiu_pass").css({"border":"2px red solid"});
                }else {
                    $("#jiu_pass").css({"border":"2px black solid"});
                    $scope.up2 = false;
                }

                if($scope.new_pass == "") {
                    $scope.tishi = true;
                    $scope.up3 = true;
                    $("#new_pass").css({"border":"2px red solid"});
                }else {
                    $("#new_pass").css({"border":"2px black solid"});
                    $scope.up3 = false;
                }

                if($scope.new_pass.length<6) {
                    $scope.tishi = true;
                    $scope.up4 = true;
                    $("#new_pass").css({"border":"2px red solid"});
                }else {
                    $("#new_pass").css({"border":"2px black solid"});
                    $scope.up4 = false;
                }
                if($scope.re_pass != $scope.new_pass) {
                    $scope.tishi = true;
                    $scope.up5 = true;
                    $("#re_peat").css({"border":"2px red solid"});
                }else {
                    $("#re_peat").css({"border":"2px black solid"});
                    $scope.up5 = false;
                }
                if($scope.jiu_pass!="" && $scope.jiu_pass==$scope.data[$scope.index].password && $scope.new_pass!="" && $scope.new_pass.length>=6 && $scope.re_pass==$scope.new_pass) {
                    $scope.data[$scope.index].password = $scope.new_pass;
                    $scope.tabless = true;
                    $scope.updata_table = false;
                }
            }
            //添加
            $scope.add_tian = function() {
                $scope.adds = true;
                $scope.add_name = "";
                $scope.add_pass = "";
                $scope.add_repass = "";
                $scope.add_select = "";
            }
            $scope.add_change = function() {
                var arrMg = ["操", "爸", "妈","sb","傻逼"];
                    var showCount = $scope.add_name
                    for(var i = 0; i< arrMg.length;i++) {
                        var r = new RegExp(arrMg[i],"ig");
                        showCount = showCount.replace(r,"*");
                    }
                    if(showCount.indexOf("*") != -1) {
                        alert("输入内容含有敏感字!");
                    }
            };
            $scope.add_tijiao = function() {
                var ids;
                var names;
                for(var i in $scope.data) {
                    ids = $scope.data[i].id;
                    names = $scope.data[i].name;
                }
                if($scope.add_name == "" || $scope.add_name) {
                    $scope.add_tishi = true;
                    $scope.add2 = true;
                    $("#id_name").css({"border":"2px red solid"});
                }else {
                    $("#id_name").css({"border":"2px black solid"});
                    $scope.add2 = false;
                }
                var add_name = $scope.add_name.trim();
                if(names.indexOf(add_name) != '-1') {
                    $scope.add_tishi = true;
                    $scope.add1 = true;
                    $("#id_name").css({"border":"2px red solid"});
                }else {
                    $("#id_name").css({"border":"2px black solid"});
                    $scope.add1 = false;
                }

                if($scope.add_pass == "" || $scope.add_pass == undefined) {
                    $scope.add_tishi = true;
                    $scope.add3 = true;
                    $("#id_pass").css({"border":"2px red solid"});
                }else {
                    $("#id_pass").css({"border":"2px black solid"});
                    $scope.add3 = false;
                }

                if($scope.add_pass.length<6 || $scope.add_pass.length>20) {
                    $scope.add_tishi = true;
                    $scope.add4 = true;
                    $("#id_pass").css({"border":"2px red solid"});
                }else {
                    $("#id_pass").css({"border":"2px black solid"});
                    $scope.add4 = false;
                }

                if($scope.add_repass != $scope.add_pass) {
                    $scope.add_tishi = true;
                    $scope.add5 = true;
                    $("#id_repass").css({"border":"2px red solid"});
                }else {
                    $("#id_repass").css({"border":"2px black solid"});
                    $scope.add5 = false;
                }
                if($scope.add_select == "") {
                    $scope.add_tishi = true;
                    $scope.add6 = true;
                }else {
                    $scope.add6 = false;
                }

                if($scope.add_name!="" && names.indexOf(add_name) == -1 && $scope.add_pass!="" && $scope.add_pass.length>=6&&$scope.add_pass.length<=20 && $scope.add_repass == $scope.add_pass && $scope.add_select != "") {
                    $scope.data.push({
                        id : ids+1,
                        name:$scope.add_name,
                        password:$scope.add_pass,
                        level: $scope.add_select,
                        dtCreated : "10-16 10:00",
                        status: "待发货"
                    });
                    $scope.adds = false;
                }
            };
            //发货
            $scope.deliver = function(ids) {
                for(var i in $scope.data) {
                    if ($scope.data[i].id == ids) {
                        $scope.data[i].status = "已发货";
                    }
                }
            };
            //批量发货
            $scope.batchDeliver = function () {
                $("input[name='users']:checked").each(function () {
                    $scope.deliver(this.id);
                });
            };
            $scope.filterMonth = function(user) {
                if($scope.start_month == undefined || $scope.start_month == "") {
                    return true;
                }
                if ($scope.end_month == undefined || $scope.end_month == "") {
                    return true;
                }
                var start_month = parseInt($scope.start_month);
                var end_month = parseInt($scope.end_month);
                if(start_month > end_month) {
                    return true;
                }
                var month = user.dtCreated.substr(0,user.dtCreated.indexOf("-"));
                month = parseInt(month);
                return (month >= start_month && month <= end_month);
            };
            var arrMg = ["操", "爸", "妈","sb","傻逼"];
            $scope.searchByName = function() {
                var showCount = $scope.search_name
                for(var i = 0; i< arrMg.length;i++) {
                    var r = new RegExp(arrMg[i],"ig");
                    showCount = showCount.replace(r,"*");
                }
                if(showCount.indexOf("*") != -1) {
                    alert("输入内容含有敏感字!");
                }
            };
        });
    </script>
</head>
<body ng-controller="myCtrl">
<div class="search">
    <input type="text" placeholder="用户名搜索" ng-model="search_name" ng-change="searchByName()"/>
    <select class="level" ng-model="search_level">
        <option value="">选择级别</option>
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
    </select>
    <select class="sort" ng-model="filter_sort" ng-change="order()">
        <option value="">排序</option>
        <option value="1">级别正序</option>
        <option value="2">级别倒序</option>
        <option value="3">时间正序</option>
        <option value="4">时间倒序</option>
    </select>
    <select class="choose_status" ng-model="status">
        <option value="">选择状态</option>
        <option value="待发货">待发货</option>
        <option value="已发货">已发货</option>
        <option value="已收货">已收货</option>
    </select>
    <select class="choose_time_begin_month" ng-model="start_month">
        <option value="">开始月份</option>
        <option value="1">01</option>
        <option value="2">02</option>
        <option value="3">03</option>
        <option value="4">04</option>
        <option value="5">05</option>
        <option value="6">06</option>
        <option value="7">07</option>
        <option value="8">08</option>
        <option value="9">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
    </select> -
    <select class="choose_time_end_month" ng-model="end_month">
        <option value="">结束月份</option>
        <option value="1">01</option>
        <option value="2">02</option>
        <option value="3">03</option>
        <option value="4">04</option>
        <option value="5">05</option>
        <option value="6">06</option>
        <option value="7">07</option>
        <option value="8">08</option>
        <option value="9">09</option>
        <option value="10">10</option>
        <option value="11">11</option>
        <option value="12">12</option>
    </select>
</div>

<div class="btns">
    <button class="add_btn" ng-click="add_tian()">新增用户</button>
    <button class="remove_btn" ng-click="removeCheck()">批量删除</button>
    <button ng-click="removeAlls()">全部删除</button>
    <button ng-click="batchDeliver()">批量发货</button>
    <span>敏感词:抢劫、小偷</span>
</div>
<div class="list" ng-show="tabless">
    <table width="640px" cellspacing="0" rules="cols" border="1px">
        <thead>
        <tr>
            <th width="6%">
                <input type="checkbox" name="check_all"/>
            </th>
            <th width="6%">ID</th>
            <th width="16%">用户名</th>
            <th width="16%">密码</th>
            <th width="10%">级别</th>
            <th width="14.5%">创建时间</th>
            <th width="10%">状态</th>
            <th width="12%">操作</th>
            <th width="12%">删除</th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="user in data | filter:{status:status}| filter:search_table |filter:{name:search_name} | filter: filterMonth | filter:{level:search_level}| orderBy:filter_sort">
            <td align="center">
                <input type="checkbox" name="users" value="{{$index}}"/>
            </td>
            <td align="center">{{ user.id }}</td>
            <td align="center">{{ user.name }}</td>
            <td align="center">{{ user.password }}</td>
            <td align="center">{{ user.level }}</td>
            <td align="center">{{ user.dtCreated }}</td>
            <td align="center">
               <span ng-show="user.status=='待发货'" ng-click="deliver(user.id)">
                    <a href="javascript: void(0);">发货</a>
                </span>
                <span ng-show="user.status=='已发货'">已发货</span>
                <span ng-show="user.status=='已收货'">已收货</span>
            </td>
            <td align="center">
                <button ng-click="updata($index)">修改密码</button>
            </td>
            <td>
                <button ng-click="removes($index)">删除数据</button>
            </td>
        </tr>
        </tbody>
    </table>
</div>
<div class="form" ng-show="adds">
    <div>
        <span class="label">新增用户</span>
        <span class="txt"></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">用户名</span>
        <span class="txt"><input id="id_name" type="text" ng-model="add_name" placeholder="6-20个字符" ng-change="add_change()"/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">密码</span>
        <span class="txt"><input id="id_pass" ng-model="add_pass" type="password" placeholder="6-20个字符" class="formErr"/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">重复密码</span>
        <span class="txt"><input id="id_repass" ng-model="add_repass" type="password" placeholder="再次输入密码"/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="txt">
            <select ng-model="add_select">
                <option value="">级别</option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
            </select>
        </span>
    </div>
    <div style="clear: both"></div>
    <div class="errTips" ng-show="add_tishi">
        <ul>
            <li ng-show="add1">用户名已存在!</li>
            <li ng-show="add2">用户名不能为空!</li>
            <li ng-show="add3">密码不能为空!</li>
            <li ng-show="add4">密码长度不能小于6个字符!</li>
            <li ng-show="add5">两次密码输入不一致!</li>
            <li ng-show="add6">请选择级别!</li>
        </ul>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label"></span>
        <input type="hidden" ng-model="add_index">
        <span class="txt"><button ng-click="add_tijiao()">提交</button></span>
    </div>
    <div style="clear: both"></div>
</div>

<div class="form" ng-show="updata_table">
    <div>
        <span class="label">修改密码</span>
        <span class="txt"></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">用户名</span>
        <span class="txt"><input type="text" ng-model="e_name" readonly/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">旧密码</span>
        <span class="txt"><input type="password" id="jiu_pass" ng-model="jiu_pass"/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">新密码</span>
        <span class="txt"><input type="password" id="new_pass" ng-model="new_pass" placeholder="6-20个字符" class="formErr"/></span>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label">重复密码</span>
        <span class="txt"><input type="password" id="re_peat" placeholder="再次输入密码" ng-model="re_pass"/></span>
    </div>
    <div style="clear: both"></div>
    <div class="errTips" ng-show="tishi">
        <ul>
            <li ng-show="up1">旧密码不能为空!</li>
            <li ng-show="up2">旧密码不正确!</li>
            <li ng-show="up3">新密码不能为空!</li>
            <li ng-show="up4">新密码长度不能小于6个字符!</li>
            <li ng-show="up5">两次密码输入不一致!</li>
        </ul>
    </div>
    <div style="clear: both"></div>
    <div>
        <span class="label"></span>
        <input type="hidden" ng-model="index">
        <span class="txt"><button ng-click="updatas()">提交</button></span>
    </div>
    <div style="clear: both"></div>
</div>
</body>
</html>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值