混合开发(5)

本文介绍了一个商品订单管理系统的设计与实现,该系统支持订单的增删改查操作,包括新增订单、批量删除、发货等功能,并提供了模糊查询、下拉菜单内容过滤等特性。



<!DOCTYPE html>

<html lang="en">

    <head>
        <meta charset="UTF-8">
        <title>商品订单(增删改查):新增订单;批量删除,发货;模糊查询,下拉菜单内容过滤(含时间);全选反选,列名排序</title>
        <script src="js/jquery-3.2.1.min.js"></script>
        <script src="js/angular.min.js"></script>

        <!-- 样式布局   -->
        <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>
    </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>

    <script type="text/javascript">
        $(function() {
            /*  表格第一行变 天蓝 色     */
            $("thead tr").addClass("first");
        });
    </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>

</html>
内容概要:文章以“智能网页数据标注工具”为例,深入探讨了谷歌浏览器扩展在毕业设计中的实战应用。通过开发具备实体识别、情感分类等功能的浏览器扩展,学生能够融合前端开发、自然语言处理(NLP)、本地存储与模型推理等技术,实现高效的网页数据标注系统。文中详细解析了扩展的技术架构,涵盖Manifest V3配置、内容脚本与Service Worker协作、TensorFlow.js模型在浏览器端的轻量化部署与推理流程,并提供了核心代码实现,包括文本选择、标注工具栏动态生成、高亮显示及模型预测功能。同时展望了多模态标注、主动学习与边缘计算协同等未来发展方向。; 适合人群:具备前端开发基础、熟悉JavaScript和浏览器机制,有一定AI模型应用经验的计算机相关专业本科生或研究生,尤其适合将浏览器扩展与人工智能结合进行毕业设计的学生。; 使用场景及目标:①掌握浏览器扩展开发全流程,理解内容脚本、Service Worker与弹出页的通信机制;②实现在浏览器端运行轻量级AI模型(如NER、情感分析)的技术方案;③构建可用于真实场景的数据标注工具,提升标注效率并探索主动学习、协同标注等智能化功能。; 阅读建议:建议结合代码实例搭建开发环境,逐步实现标注功能并集成本地模型推理。重点关注模型轻量化、内存管理与DOM操作的稳定性,在实践中理解浏览器扩展的安全机制与性能优化策略。
基于Gin+GORM+Casbin+Vue.js的权限管理系统是一个采用前后端分离架构的企业级权限管理解决方案,专为软件工程和计算机科学专业的毕业设计项目开发。该系统基于Go语言构建后端服务,结合Vue.js前端框架,实现了完整的权限控制和管理功能,适用于各类需要精细化权限管理的应用场景。 系统后端采用Gin作为Web框架,提供高性能的HTTP服务;使用GORM作为ORM框架,简化数据库操作;集成Casbin实现灵活的权限控制模型。前端基于vue-element-admin模板开发,提供现代化的用户界面和交互体验。系统采用分层架构和模块化设计,确保代码的可维护性和可扩展性。 主要功能包括用户管理、角色管理、权限管理、菜单管理、操作日志等核心模块。用户管理模块支持用户信息的增删改查和状态管理;角色管理模块允许定义不同角色并分配相应权限;权限管理模块基于Casbin实现细粒度的访问控制;菜单管理模块动态生成前端导航菜单;操作日志模块记录系统关键操作,便于审计和追踪。 技术栈方面,后端使用Go语言开发,结合Gin、GORM、Casbin等成熟框架;前端使用Vue.js、Element UI等现代前端技术;数据库支持MySQL、PostgreSQL等主流关系型数据库;采用RESTful API设计规范,确保前后端通信的标准化。系统还应用了单例模式、工厂模式、依赖注入等设计模式,提升代码质量和可测试性。 该权限管理系统适用于企业管理系统、内部办公平台、多租户SaaS应用等需要复杂权限控制的场景。作为毕业设计项目,它提供了完整的源码和论文文档,帮助学生深入理解前后端分离架构、权限控制原理、现代Web开发技术等关键知识点。系统设计规范,代码结构清晰,注释完整,非常适合作为计算机相关专业的毕业设计参考或实际项目开发的基础框架。 资源包含完整的系统源码、数据库设计文档、部署说明和毕
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值