需求:

1、 完成页面

2、 点击“新增订单”,弹出上框,新增订单状态都是“待发货”

3、 提交订单时,检查表单,提示错误内容,并且将文本框颜色变红色

4、 选择状态查询:待发货、已发货、已收货

5、 点击“发货”按钮,将“待发货”状态改成“已发货”

6、 通过Checkbox全选和全不选

7、 点击“批量删除”按钮,删除选中的订单

8、 选择“开始月份”:01~12

9、 选择“结束月份”:01~12,查询开始月份和结束月份之间的订单

效果图:

代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>商品订单(增删改查):新增订单;批量删除,发货;模糊查询,下拉菜单内容过滤(含时间);全选反选,列名排序</title>
    <style type="text/css">
        .first{
            background-color: #007aff;
        }
        /*  表格奇数行变 中绿 色     */
        tbody tr:nth-child(odd){
            background-color: #00FA9A;
        }
        /*  表格偶数行变 弱绿 色   */
        tbody tr:nth-child(even){
            background-color: #98FB98;
        }
        .li{
            background-color:#FEB6C1;
            font-size: 15px;
            color:#93212E;
        }
        .inputErrorColor{
            border:1px solid #ff3b30;
        }
        .inputSuccessColor{
            border:1px solid black;
        }
    </style>
    <script src="../js/jquery-2.1.0.js"></script>
    <script type="text/javascript">
        $(function () {
            /*  表格第一行变 天蓝 色     */
            $("thead tr").addClass("first");
        });
    </script>
    <script src="../js/angular.js"></script>
    <script>
        var app = angular.module("myApp",[]);
        app.controller("myCtrl",function ($scope) {
            $scope.Products = [
                {id:1,goodsName:"IPhone5S",userName:"果果",tel:13112332100,price:4999,city:"北京",time:"08-01 10:00",goodsState:"发货",state:false},
                {id:2,goodsName:"小米6",userName:"米粉",tel:15222991111,price:2999,city:"深圳",time:"08-02 10:00",goodsState:"发货",state:false},
                {id:3,goodsName:"华为P9",userName:"华仔",tel:13678953456,price:3999,city:"上海",time:"09-03 10:00",goodsState:"已发货",state:false},
                {id:4,goodsName:"OPPO R11",userName:"欧弟",tel:18631090582,price:4998,city:"天津",time:"09-04 10:00",goodsState:"已收货",state:false},
                {id:5,goodsName:"VIVO",userName:"朵唯",tel:15810266912,price:2998,city:"重庆",time:"10-04 10:00",goodsState:"发货",state:false}
            ];

            //1. 选择城市
            $scope.selectCity = "选择城市";
            $scope.CityTest = function (city,selectCity) {
                if(selectCity == "选择城市"){
                    return true;
                }else {
                    if(city == selectCity){
                        return true;
                    }else {
                        return false;
                    }
                }
            }
            //2. 选择状态查询:待发货、已发货、已收货
            $scope.selectState = "选择状态";
            $scope.StateTest = function (state,selectState) {
                if(selectState == "选择状态"){
                    return true;
                }else {
                    if(state == selectState){
                        return true;
                    }else {
                        return false;
                    }
                }
            }

            // 3. 选择“开始月份”:01~12 “结束月份”:01~12,查询开始月份和结束月份之间的订单
            $scope.startMonth = "开始月份";
            $scope.endMonth = "结束月份";
            $scope.filterMonth = function (index) {
                //获得开始和结束的时间月份
                var time = $scope.Products[index].time;
                var month = parseInt(time.split("-")[0]);
                if($scope.startMonth == "开始月份" || $scope.endMonth == "结束月份"){
                    return true;
                }else {
                    var startTime = parseInt($scope.startMonth);
                    var endTime = parseInt($scope.endMonth);
                    //当选择的月份时间在开始和结束的月份之间时,就返回内容
                    if(month >= startTime && month <= endTime){
                        return true;
                    }else {
                        return false;
                    }
                }
            }

            // 4. 开始复选框绑定的值默认是全不选
            $scope.checkedAll = false;
            var a=0;
            //正着全选
            $scope.selectAll =function(){
                if($scope.checkedAll){
                    for(var i=0;i<$scope.Products.length;i++){
                        $scope.Products[i].state = true;
                        a++;
                    }
                }else{
                    for(var i=0;i<$scope.Products.length;i++){
                        $scope.Products[i].state = false;
                        a--;
                    }
                }
            };

            //反着全选
            $scope.selectOne = function(index){
                if($scope.Products[index].state){
                    a++;
                }else{
                    a--;
                }
                if(a==$scope.Products.length){
                    //如果小按钮全部选中了,就让大的全选按钮也选中
                    $scope.checkedAll = true;
                }else{
                    $scope.checkedAll = false;
                }
            };

            //批量发货点击事件
            $scope.plFahuo = function(){
                if(a==0){
                    alert("请选择要批量发货的商品!");
                }else{
                    if(confirm("您是否确定要批量发货选中商品?")){
                        for(var i=0;i<$scope.Products.length;i++){
                            if($scope.Products[i].state){
                                $scope.Products[i].goodsState = "已发货";
                                $scope.Products[i].state = false;
                                a--;
                            }
                        }
                        $scope.checkedAll = false;
                    }
                }
            };

            //批量删除点击事件
            $scope.delSelect = function(){
                if(a==0){
                    alert("请选择要批量删除的商品!");
                }else{
                    if(confirm("您是否确定要批量删除选中商品?")) {
                        for (var i = 0; i < $scope.Products.length; i++) {
                            if ($scope.Products[i].state) {
                                $scope.Products.splice(i, 1);
                                i--;//会出现下标越界,所以i--
                                a--;
                            }
                        }
                        $scope.checkedAll = false;
                    }
                }
            };
            /* 5. 使用AngularJS过滤器orderBy对商品进行排序:具体是点击每一列标题名字时,产品进行正序倒序排列。*/
            $scope.sortFlag = "-";           //正序标识符
            $scope.sortName = "name";       //根据商品名称倒序排序
            $scope.sortProducts = function (columnName) {
                $scope.sortName = columnName;
                if($scope.sortFlag == "-"){
                    $scope.sortFlag = "";
                }else {
                    $scope.sortFlag = "-";
                }
            };

            // 6. 点击“发货”按钮,将“待发货”状态改成“已发货”
            $scope.changeState = function (index) {
                $scope.Products[index].goodsState = "已发货";
            }

            $scope.showTable = false;
            // 7、点击“新增订单”,弹出 新增信息表,新增订单状态都是“待发货”
            $scope.addGoods = function () {
                $scope.showTable = true;   //弹出 新增信息表
                //输入框的样式
                $scope.goodsNameClass = "";
                $scope.userNameClass = "";
                $scope.telClass = "";

                $scope.goodsName = "";
                $scope.userName = "";
                $scope.tel = "";
                $scope.city = "选择城市";
                $scope.state = false;
                $scope.flag1 = false;     //标志位
                $scope.flag2 = false;     //标志位
                $scope.flag3 = false;     //标志位
                $scope.flag4 = false;     //标志位
                $scope.flag5 = false;     //标志位
                $scope.flag6 = false;     //标志位
                $scope.flag7 = false;     //标志位

                $scope.sub = function () {
                    //(1)判断商品名是否为空
                    if($scope.goodsName == null || $scope.goodsName == ""){
                        $scope.flag1 = true;
                        $scope.goodsNameClass = "inputErrorColor";
                    }else {
                        $scope.flag1 = false;
                        $scope.goodsNameClass = "inputSuccessColor";
                        //判断商品名是否符合格式 6-20个字符
                        if($scope.goodsName.length < 6 ||  $scope.goodsName.length > 20){
                            $scope.flag2 = true;
                            $scope.goodsNameClass = "inputErrorColor";
                        }else {
                            $scope.flag2 = false;
                            $scope.goodsNameClass = "inputSuccessColor";
                        }
                    }
                    //(2)判断用户名是否为空
                    if($scope.userName == null || $scope.userName == ""){
                        $scope.flag3 = true;
                        $scope.userNameClass = "inputErrorColor";
                    }else {
                        $scope.flag3 = false;
                        $scope.userNameClass = "inputSuccessColor";
                        //判断用户名是否符合格式 4-16个字符
                        if($scope.userName.length < 4 ||  $scope.userName.length > 16){
                            $scope.flag4 = true;
                            $scope.userNameClass = "inputErrorColor";
                        }else {
                            $scope.flag4 = false;
                            $scope.userNameClass = "inputSuccessColor";
                        }
                    }
                    //(3)判断手机号是否为空
                    if($scope.tel == null || $scope.tel == ""){
                        $scope.flag5 = true;
                        $scope.telClass = "inputErrorColor";
                    }else {
                        $scope.flag5 = false;
                        $scope.telClass = "inputSuccessColor";
                        //判断手机号是否符合格式
                        if($scope.tel.length == 11){
                            //判断手机号是否为数字
                            if(isNaN($scope.tel)){
                                $scope.flag6 = true;
                                $scope.telClass = "inputErrorColor";
                            }else {
                                $scope.flag6 = false;
                                $scope.telClass = "inputSuccessColor";
                            }
                        }else {
                            $scope.flag6 = true;
                            $scope.telClass = "inputErrorColor";
                        }
                    }
                    //(4)选择城市
                    if($scope.city == "选择城市"){
                        $scope.flag7 = true;
                    }else {
                        $scope.flag7 = false;
                    }

                    //满足条件后添加商品
                    if($scope.flag1 != true && $scope.flag2 != true  && $scope.flag3 != true  && $scope.flag4 != true  && $scope.flag5 != true  && $scope.flag6 != true  && $scope.flag7 != true ){
                        //全显示,格式全不正确,才能进来
                        //遍历数据源,拿到商品id
                        var goodsID = 0;
                        for(index in $scope.Products){
                            if($scope.Products[index].id > goodsID){
                                goodsID = $scope.Products[index].id;
                            }
                        }
                        alert("添加成功!");
                        //添加发货时间
                        var date = new Date();
                        var month = date.getMonth()+1;
                        var day = date.getDate();
                        var hours = date.getHours();
                        var minute = date.getMinutes();
                        var newTime = month+"-"+day+" "+hours+":"+minute;
                        var newGood = {
                            id:goodsID+1,
                            goodsName:$scope.goodsName,
                            userName:$scope.userName,
                            tel:$scope.tel,
                            price:3668.00,
                            city:$scope.city,
                            time:newTime,
                            goodsState:"发货",
                            state:false
                        };
                        //添加新数据
                        $scope.Products.push(newGood);
                        $scope.showTable = false;
                    }else {
                        //提交订单时,检查表单,提示错误内容,并且将文本框颜色变红色
                        $("ul").addClass("li");
                    }
                }
            }
        });
    </script>
</head>

<body ng-app="myApp" ng-controller="myCtrl">
<center>
    <h3>商品订单信息表</h3>
    <div>
        <input placeholder="用户名搜索" ng-model="searchName">&nbsp;
        <input placeholder="手机号搜索" ng-model="searchTel"> &nbsp;
        <select  ng-model="selectCity">
            <option>选择城市</option>
            <option>北京</option>
            <option>上海</option>
            <option>重庆</option>
            <option>天津</option>
            <option>深圳</option>
        </select>&nbsp;
        <select ng-model="selectState">
            <option>选择状态</option>
            <option>发货</option>
            <option>已发货</option>
            <option>已收货</option>
        </select>&nbsp;&nbsp;
        <select ng-model="startMonth">
            <option>开始月份</option>
            <option>01</option>
            <option>02</option>
            <option>03</option>
            <option>04</option>
            <option>05</option>
            <option>06</option>
            <option>07</option>
            <option>08</option>
            <option>09</option>
            <option>10</option>
            <option>11</option>
            <option>12</option>
        </select>&nbsp;-
        <select ng-model="endMonth">
            <option>结束月份</option>
            <option>01</option>
            <option>02</option>
            <option>03</option>
            <option>04</option>
            <option>05</option>
            <option>06</option>
            <option>07</option>
            <option>08</option>
            <option>09</option>
            <option>10</option>
            <option>11</option>
            <option>12</option>
        </select>
    </div><br>
    <button ng-click="addGoods()" style="background-color: #28a54c;color: white;border: 0 solid #28a54c;float: left;margin-left: 192px;">新增订单</button>
    <button ng-click="plFahuo()" style="background-color: #28a54c;color: white;border: 0 solid #28a54c;float: left;margin-left: 18px;">批量发货</button>
    <button ng-click="delSelect()" style="background-color: #28a54c;color: white;border: 0 solid #28a54c;float: left;margin-left: 18px;">批量删除订单</button><br><br>
    <table align="center" border="1 solid #777777" cellspacing="0" cellpadding="18">
        <thead>
            <tr>
                <th><input type="checkbox" ng-model="checkedAll" ng-click="selectAll()"></th>
                <th>ID
                    <!--根据商品列名 ID 排序的点击事件-->
                    <button ng-click="sortProducts('id')" style="background-color: #28a54c;color: white;border: 0 solid #28a54c;">排序</button>
                </th>
                <th>商品名</th>
                <th>用户名</th>
                <th>手机号</th>
                <th>价格
                    <!--根据商品列名 价格 排序的点击事件-->
                    <button ng-click="sortProducts('price')"  style="background-color: #28a54c;color: white;border: 0 solid #28a54c;">排序</button>
                </th>
                <th>城市</th>
                <th>下单时间
                    <!--根据商品列名 下单时间 排序的点击事件-->
                    <button ng-click="sortProducts('time')"  style="background-color: #28a54c;color: white;border: 0 solid #28a54c;">排序</button>
                </th>
                <th>状态</th>
            </tr>
        </thead>
        <tbody align="center" >
            <!--先遍历出商品数据,再过滤子元素,实现模糊查询功能,最后根据列头标题实现排序  注意:需要使用多个ng-show指令时可以用 && 连接在一起,如下  -->
        <tr ng-repeat="goods in Products | filter:searchName | filter:searchTel | orderBy:(sortFlag+sortName)" ng-if="CityTest(goods.city,selectCity)" ng-show="StateTest(goods.goodsState,selectState) && filterMonth($index) ">
                <th><input type="checkbox" ng-model="goods.state" ng-click="selectOne($index)"></th>
                <td>{{goods.id}}</td>
                <td>{{goods.goodsName}}</td>
                <td>{{goods.userName}}</td>
                <td>{{goods.tel}}</td>
                <td>¥{{goods.price.toFixed(2)}}</td>
                <td>{{goods.city}}</td>
                <td>{{goods.time}}</td>
                <td>
                    <span ng-if="goods.goodsState == '发货'">
                        <a ng-click="changeState($index)" href="#">{{goods.goodsState}}</a>
                    </span>
                    <span ng-if="goods.goodsState == '已发货'">{{goods.goodsState}}</span>
                    <span ng-if="goods.goodsState == '已收货'">{{goods.goodsState}}</span>
                </td>
            </tr>
        </tbody>
    </table>

    <!--    比如 ng-show=“show”指令表示为方法时,内容就加上() 就是 ng-show=“show()”;表示为变量时,就是 ng-show=“show”  -->
    <div ng-show="showTable">
        <h4>新增订单表</h4>
        <table border="1 solid #777777" cellspacing="0" cellpadding="12" >
            <tr>
                <td align="right" >商品名&nbsp;&nbsp;</td>
                <td align="left" >       &nbsp;&nbsp;
                    <input ng-model="goodsName" type="text" placeholder="6-20个字符" ng-class="goodsNameClass" />
                </td>
            </tr>
            <tr>
                <td align="right">用户名&nbsp;&nbsp;</td>
                <td align="left">        &nbsp;&nbsp;
                    <input ng-model="userName" type="text" placeholder="4-16个字符" ng-class="userNameClass" />
                </td>
            </tr>
            <tr>
                <td align="right" >手机号&nbsp;&nbsp;</td>
                <td align="left" >       &nbsp;&nbsp;
                    <input ng-model="tel" placeholder="请输入手机号" ng-class="telClass"/>
                </td>
            </tr>
            <tr>
                <td align="right" >城市&nbsp;&nbsp;</td>
                <td align="left" >       &nbsp;&nbsp;
                    <select ng-model="city">
                        <option>选择城市</option>
                        <option>北京</option>
                        <option>上海</option>
                        <option>重庆</option>
                        <option>天津</option>
                        <option>深圳</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td colspan="2" align="center">
                    <ul>
                        <li ng-show="flag1">商品名不能为空!</li>
                        <li ng-show="flag2">商品名必须是6-20个字符!</li>
                        <li ng-show="flag3">用户名不能为空!</li>
                        <li ng-show="flag4">用户名必须是4-16个字符!</li>
                        <li ng-show="flag5">手机号不能为空!</li>
                        <li ng-show="flag6">手机号格式不正确!</li>
                        <li ng-show="flag7">请选择城市!</li>
                    </ul>
                    <button ng-click="sub()"  style="background-color: #28a54c;color: white;border: 0 solid #28a54c;">提交</button>
                </td>
            </tr>
        </table>
    </div>
 </center>
</body>
</html>

商品订单(增删改查):新增订单;批量删除,发货;模糊查询,下拉菜单内容过滤(含时间);全选反选,列名排序相关推荐

  1. Maynor手把手教你完成一个SpringBoot+Vue+Element实现的SPA商品管理系统(增删改查)

    Maynor手把手教你完成一个SpringBoot+Vue+Element实现的SPA商品管理系统(增删改查) 前言 完整代码 三连后私信我获取~ 撸了一上午完成的SPA商品管理系统,求三连! B站演 ...

  2. Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能。(ArrayList,SQLite)

    Android 中编写一个简易购物车,商品包括商品名称,单价,数量,可以对商品进行增删改查功能.(ArrayList,SQLite) 布局(activity_main.xml): <?xml v ...

  3. Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询)

    Spring+SpringMVC+MyBatis明日方舟版人员信息管理系统前端页面代码(前后端交互+SSM框架 管理员登录 游客登录 普通用户登录 人员的增删改查 信息更新 图片上传 分页查询 修改密 ...

  4. day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询

    day08 外键字段的增删改查 正向反向插叙概念 跨表查询 聚合查询与分组查询 F查询 昨日内容复习 自定义过滤器.标签.inclusion_tag 1.首先现在应用目录下创建名字为templatet ...

  5. mybatis动态sql,批量插入,批量删除,模糊查询

    trim可以去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 "where"."set"以及"values(" 等前缀,或者 ...

  6. PHP项目实战之商品的增删改查

    文章目录 一.项目思路 1.连接数据库 2.新建数据库.数据表... 3.代码思路 4.文件目录 二.查询端口号 三.常见错误 1.项目部署问题 错误分析 解决方案 2.中文变成" ???& ...

  7. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...

    这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结: 先查阅数据库: 现在编写源码进行增删改查操作,源码为: #!/usr/bin/python #coding ...

  8. java多数做增删改查_Java 实现一个 能够 进行简单的增删改查的 超市管理系统

    1. 首先编写一个 Fruitltem 的商品类, 描述 商品的基本信息. 代码如下: 保证详细, 运行的起来, 有什么 问题也可以评论留言. /* * 自定义类, 描述商品信息 * * 商品的属性: ...

  9. mysql 修改库的校对集_mysql数据库的基本操作(增删改查、字符集、校对集)

    MySQL数据库概述 MySQL数据库是经典的关系型数据库管理系统,MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Dat ...

  10. [MongoDB] MongoDB的基本操作以及文档的增删改查

    参考视频 链接:https://pan.baidu.com/s/1tAWPEC8yppyrPupkUFdCWQ 提取码:gdn8 MongoDB的基本操作 基本概念 生活中:仓库.架子.物品 计算机: ...

最新文章

  1. ASP.net随机数应用实例
  2. Hadoop Eclipse开发环境设置
  3. java 打印 排序 数字塔_求助,用循环方法输出以下数字塔
  4. MariaDB [Warning] Could not increase number of max_open_files to more than 1024
  5. JavaSE各阶段练习题----集合-Collection-Set-List
  6. 如何在已安装TMG2010服务器上安装Symantec Backup Exec 2010 Remote Agent
  7. 在Play上使用twitter4j! 框架和安全社交很容易
  8. DFS走迷宫问题(非最短路径)
  9. ios view添加上边框_ios – UIView的圆顶角,并添加边框
  10. java优化上传速度慢怎么办_网站建设中影响网站优化的一些因素
  11. String 源码探究
  12. Atitit 建设自己的财政体系 attilax总结 1.1. 收入理论 2 1.2. 收入分类 2 1.3. 2 1.4. 非货币收入 2 1.5. 2 1.6. 降低期望 2 1.7.
  13. postgresql 修改字段长度
  14. 自制硬盘空间整数计算器,打发时间的无聊之作
  15. Ubuntu18.04 安装 rabbitvcs svn 图形化客户端
  16. 腾讯、阿里、京东设计的股权激励
  17. 浏览器的三个精度Bug
  18. 离散实验sdut3805双射
  19. IDEA自动生成注解 及 解决 Wrong tag ‘Author‘ 等警告信息
  20. JPA设置in参数时报错(Encountered array-valued parameter binding, but was expecting [java.lang.String (n/a)])

热门文章

  1. mysql 查询临时表_MySQL临时表与内存表
  2. 什么是串口通信UART?
  3. 支付宝小程序的开发笔记
  4. 【C语言】实验室设备管理系统
  5. 无法直接复制文件到ubuntu虚拟机解决
  6. Qt如何获取外网IP地址
  7. c语言四则运算去括号,四年级:四则运算交换律、结合律、分配律及去括号汇总...
  8. 身份认证之双因素认证 2FA
  9. ORA-01722:invalid number
  10. 最全5G手机芯片简史