angular实现购物车后台订单的增加,删除功能功能(有效果图)

最终效果图:
这里写图片描述


实现全部代码:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="js/angular.min.js" ></script>
    <script type="text/javascript" src="js/angular-route.js" ></script>
    <style>
        #tid1{
            font-size: 12px;
            text-align: center;
        }
        #tid1 thead{
            background: gray;
        }
        #tid1 tbody tr:nth-child(odd){
            background: gainsboro;
        }
        button{
            padding: 5px;
            background: green;
            color: #FFFFFF;
            border-radius: 5px;
            border: 0;
        }
        #btntj{
            padding: 5px;
            background: green;
            color: #FFFFFF;
            border-radius: 5px;
            border: 0;
        }
        #ul1{
            font-size: 11px;
            width: 180px;
            background-color: lightpink;
            color: darkred;
            border-radius: 4px;
            padding: 5px 5px;
        }
        /*错误提示的边框*/
        .errorRed{
            border: 1px solid red;
        }

    </style>
    <script>
        var app =angular.module("myApp",['ngRoute']);

        //路由
        app.config(["$routeProvider",function($routeProvider){
            $routeProvider
                .when("/",{template:""})
                .when("/addNewDingdan",{
                    templateUrl:"addNewDingdan.html",
                    controller:"addNewCtrl"
                })
                .otherwise({redirectTo:"/"});
        }]);

        //路由里面 添加订单的操作
        app.controller("addNewCtrl",function($scope,$location){
            $scope.errorArr = [];//错误提示的数组,,如果有 输入不合格的 就添加到数组里

            $scope.submitAdd = function(){
                $scope.errorArr = [];//每次点击时候清空数组
                $scope.hasError = false;//是否有误

                $scope.addGnameClass = "";
                $scope.addUnameClass = "";
                $scope.addTelClass = "";

                //点击事件里面,,判断各输入框是否合法
                if($scope.addGname==""||$scope.addGname==undefined||$scope.addGname.trim()==""){
                    $scope.errorArr.push("商品名不能为空!");
                    $scope.addGnameClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }
                if($scope.addUname==""||$scope.addUname==undefined||$scope.addUname.trim()==""){
                    $scope.errorArr.push("用户名不能为空!");
                    $scope.addUnameClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }
                if($scope.addTel == undefined || $scope.addTel == "" || $scope.addTel.trim() == ""){
                    $scope.errorArr.push("手机号不能为空!");
                    $scope.addTelClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }
                if ($scope.addCity == undefined || $scope.addCity == "" || $scope.addCity.trim() == "") {
                    $scope.errorArr.push("请选择城市!");
                    $scope.hasError = true;
                }

                if($scope.addGname.trim().length<6||$scope.addGname.trim().length>20){
                    $scope.errorArr.push("商品名必须是6-20个字符!");
                    $scope.addGnameClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }
                if($scope.addUname.trim().length<4||$scope.addUname.trim().length>16){
                    $scope.errorArr.push("用户名必须是4-16个字符!");
                    $scope.addUnameClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }
                if($scope.addTel.trim().length!=11){
                    $scope.errorArr.push("手机号格式不正确!");
                    $scope.addTelClass = "errorRed";//对应的框变红
                    $scope.hasError = true;
                }

                //判断hasError的值
                if($scope.hasError){
                    return;
                }
                //拿到id最大值,
                var indexMax = 0;
                for(var i=0;i<$scope.goods.length;i++){
                    if($scope.goods[i].id>indexMax){
                        indexMax = $scope.goods[i].id;
                    }
                }
                //添加到数组里
                $scope.goods.push({
                    id:indexMax+1,//最大值加1
                    gname:$scope.addGname,
                    uname:$scope.addUname,
                    tel:$scope.addTel,
                    price:6967.00,
                    city:$scope.addCity,
                    buyTime:"10-25 16:00",
                    state:"发货",
                    checkState:false
                });

                $location.path('/');
            };
        });
        app.controller("myCtrl",function($scope,$location){
            $scope.goods = [{
                id:1,
                gname:"iPhone4",
                uname:"张三",
                tel:15111111111,
                price:4999.00,
                city:"北京",
                buyTime:"08-01 10:00",
                state:"发货",
                checkState:false
            },{
                id:2,
                gname:"小米6",
                uname:"李四",
                tel:15222222222,
                price:2999.00,
                city:"北京",
                buyTime:"08-02 10:00",
                state:"发货",
                checkState:false
            },{
                id:3,
                gname:"华为P9",
                uname:"王五",
                tel:15333333333,
                price:3999.00,
                city:"上海",
                buyTime:"09-03 10:00",
                state:"已发货",
                checkState:false
            },{
                id:4,
                gname:"OPPO R11",
                uname:"赵六",
                tel:15444444444,
                price:4999.00,
                city:"天津",
                buyTime:"09-04 10:00",
                state:"已收货",
                checkState:false
            },{
                id:5,
                gname:"vivo",
                uname:"周七",
                tel:15555555555,
                price:2999.00,
                city:"重庆",
                buyTime:"10-04 10:00",
                state:"已发货",
                checkState:false
            }];


            //点击 新增订单 按钮 跳转路由
            $scope.goToUrl = function(url){
                $location.path(url);
            };

            //默认状态下是
            $scope.cityC = "选择城市";
            //下拉菜单选择城市
            $scope.cityChaxun = function(city,cityC){
                if($scope.cityC== "选择城市"){
                    return true;
                }else{
                    if(city==cityC){
                        return true;
                    }else{
                        return false;
                    }
                }
            };

            //默认的选择状态
            $scope.stateC = "选择状态";
            $scope.stateChaxun = function(state,stateC){
                if($scope.stateC== "选择状态"){
                    return true;
                }else{
                    if(state==stateC){
                        return true;
                    }else{
                        return false;
                    }
                }
            };

            $scope.startMonthC = "开始月份";
            $scope.endMonthC = "结束月份";

            $scope.timeChaxun = function(buyTime,startMonthC,endMonthC){
                if($scope.startMonthC=="开始月份"||$scope.endMonthC=="结束月份"){
                    return true;
                }else{
                    var splitArr = buyTime.split(" ");
                    //alert(splitArr[0]);前面的日期 08-01
                    var timeSplitArr = splitArr[0].split("-");
                    //alert(timeSplitArr[0]);//08
                    //转码 必须转码
                    var numberBuyTime = parseInt(timeSplitArr[0]);
                    if(numberBuyTime>=$scope.startMonthC&&numberBuyTime<=$scope.endMonthC){
                        return true;
                    }else{
                        return false;
                    }
                }
            }


            //当待发货时候  点击 发货按钮,改变状态
            $scope.djFahuo = function(index){
                $scope.goods[index].state = "已发货";
            };

            //一开始默认是全不选
            $scope.checkedAll = false;
            var a=0;
            //正着全选
            $scope.selectAll =function(){
                if($scope.checkedAll){
                    for(var i=0;i<$scope.goods.length;i++){
                        $scope.goods[i].checkState = true;
                        a++;
                    }
                }else{
                    for(var i=0;i<$scope.goods.length;i++){
                        $scope.goods[i].checkState = false;
                        a--;
                    }
                }
            };

            //反着全选
            $scope.selectOne = function(index){
                if($scope.goods[index].checkState){
                    a++;
                }else{
                    a--;
                }

                if(a==$scope.goods.length){
                    //如果小按钮全部选中了,就让大的全选按钮也选中
                    $scope.checkedAll = true;
                }else{
                    $scope.checkedAll = false;
                }
            };

            //批量发货点击事件
            $scope.plFahuo = function(){
                if(a==0){
                    alert("请选择要批量发货的商品!");
                }else{
                    for(var i=0;i<$scope.goods.length;i++){
                        if($scope.goods[i].checkState){
                            $scope.goods[i].state = "已发货";
                            $scope.goods[i].checkState = false;
                            a--;
                        }
                    }
                    $scope.checkedAll = false;
                }
            };

            //批量删除点击事件
            $scope.plDelete = function(){
                if(a==0){
                    alert("请选择要批量删除的商品!");
                }else{
                    for(var i=0;i<$scope.goods.length;i++){
                        if($scope.goods[i].checkState){

                            $scope.goods.splice(i,1);
                            i--;//会出现下标越界,所以i--
                            a--;
                        }
                    }
                    $scope.checkedAll = false;
                }
            };
            //默认是以id正序排列
            $scope.lieming = "id";
            $scope.zhengfu = false;//默认是正的false
            //点击按钮 根据列名排序
            $scope.idSort = function(liem){
                if($scope.zhengfu==true){
                    $scope.zhengfu=false;
                }else{
                    $scope.zhengfu=true;
                }
                //赋值给列名
                $scope.lieming = liem;
            }
        });
    </script>
</head>
<body ng-app="myApp" ng-controller="myCtrl">
<center width="68%" id="center1">
    <input style="width: 100px;font-size: 12px;" type="text" ng-model="yhmss" placeholder="用户名搜索"/>
    <input style="width: 100px;font-size: 12px;" ng-model="telss" type="text" placeholder="手机号搜索"/>
    <select ng-model="cityC">
        <option>选择城市</option>
        <option>北京</option>
        <option>上海</option>
        <option>广州</option>
        <option>天津</option>
        <option>重庆</option>
        <option>厦门</option>
    </select>
    <select ng-model="stateC">
        <option>选择状态</option>
        <option value="发货">待发货</option>
        <option>已发货</option>
        <option>已收货</option>
    </select>
    <select ng-model="startMonthC">
        <option>开始月份</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
        <option>11</option>
        <option>12</option>
    </select>
    ~
    </select>
    <select ng-model="endMonthC">
        <option>结束月份</option>
        <option>1</option>
        <option>2</option>
        <option>3</option>
        <option>4</option>
        <option>5</option>
        <option>6</option>
        <option>7</option>
        <option>8</option>
        <option>9</option>
        <option>10</option>
        <option>11</option>
        <option>12</option>
    </select>
    <br />
    <br />
    <button ng-click="goToUrl('/addNewDingdan')">新增订单</button>
    <button ng-click="plFahuo()">批量发货</button>
    <button ng-click="plDelete()">批量删除</button>
    <br /><br />
</center>
<center  id="center2">
    <table id="tid1" border="1" cellpadding="5" cellspacing="0" width="68%">
        <thead>
        <tr>
            <th>
                <input type="checkbox" ng-model="checkedAll" ng-click="selectAll()"/>
            </th>
            <th>ID
                <button ng-click="idSort('id')">排序</button>
            </th>
            <th>商品名</th>
            <th>用户名</th>
            <th>手机号</th>
            <th>价格
                <button ng-click="idSort('price')">排序</button>
            </th>
            <th>城市</th>
            <th>下单时间
                <button ng-click="idSort('buyTime')">排序</button>
            </th>
            <th>状态</th>
        </tr>
        </thead>
        <tbody>
        <tr ng-repeat="x in goods | orderBy:lieming:zhengfu | filter:{uname:yhmss} | filter:{tel:telss}"
            ng-if="cityChaxun(x.city,cityC)&&stateChaxun(x.state,stateC)&&timeChaxun(x.buyTime,startMonthC,endMonthC)">
            <td>
                <input type="checkbox" ng-model="x.checkState" ng-click="selectOne($index)"/>
            </td>
            <td>{{x.id}}</td>
            <td>{{x.gname}}</td>
            <td>{{x.uname}}</td>
            <td>{{x.tel}}</td>
            <td>{{x.price}}</td>
            <td>{{x.city}}</td>
            <td>{{x.buyTime}}</td>
            <!--根据发货状态不同 显示隐藏标签,-->
            <td>
                <span ng-if="x.state == '发货'"><a href="#" ng-click="djFahuo($index)">{{x.state}}</a></span>
                <span ng-if="x.state == '已发货'">{{x.state}}</span>
                <span ng-if="x.state == '已收货'">{{x.state}}</span>
            </td>
        </tr>
        </tbody>
    </table>
</center>

<script type="text/ng-template" id="addNewDingdan.html">
    <div style="border: 1px solid black;width: 50%;">
        <table>
            <caption>新增订单</caption>
            <tbody>
            <tr>
                <td>商品名</td>
                <td>
                    <input type="text" placeholder="6-20个字符" ng-model="addGname" ng-class="addGnameClass"/>
                </td>
            </tr>
            <tr>
                <td>用户名</td>
                <td>
                    <input type="text" placeholder="4-16个字符" ng-model="addUname" ng-class="addUnameClass"/>
                </td>
            </tr>
            <tr>
                <td>手机号</td>
                <td>
                    <input type="text" ng-model="addTel" ng-class="addTelClass"/>
                </td>
            </tr>
            <tr>
                <td>城市</td>
                <td>
                    <select ng-model="addCity">
                        <option value="">选择城市</option>
                        <option>北京</option>
                        <option>上海</option>
                        <option>广州</option>
                        <option>天津</option>
                        <option>重庆</option>
                        <option>厦门</option>

                    </select>
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <div id="ul1" ng-show="hasError">
                        <ul>
                            <li ng-repeat="e in errorArr">
                                {{e}}
                            </li>
                        </ul>
                    </div>
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <button id="btntj" ng-click="submitAdd()">提交</button>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
</script>
<br />
<center>
    <div ng-view=""></div>
</center>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值