Shiro_项目_采购单

采购模型建立与订单操作 采购订单:设计和录入采购的数据 添加设计表: 主表:采购员 供货商 审核人 录入人 … 副表:产品 的价格 数量 小计 … 关系的设计 主表 @Entity @Table(name="purchasebill") public class Purchasebill extends BaseDomain { private Date vdate; // 交易时间 前台传过来 pri... 阅读详情

1 采购订单的模型分析

如果是下拉列表:一般是多对一,一对一
如果是复选框:一般是多对多,一对多
在这里插入图片描述组合关系
1.整体和部分,整体和部分不能分割,本质还是双向一对多

2 代码实现

2.1 一方(主表)

@Entity
@Table(name = "purchasebill")
public class Purchasebill extends BaseDomain {
    //交易时间  前台传过来的
    private Date  vdate;
    //订单总金额----后台计算出来的
    private BigDecimal totalAmount;
    //订单数量----后台计算出来的
    private BigDecimal totalNum;
    //采购单录入时间---后台生成的
    private Date inputTime = new Date();
    //审核时间---后台生成的
    private Date auditorTime;
    //单据状态  0代表待审核   1代表已审核  -1代表审核失败,作废
    private Integer status = 0;
    //供应商
    @ManyToOne(fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name = "supplier_id")
    private Supplier supplier;
    //审核人  录入的时候可以为空
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "auditor_id")
    private Employee auditor;
    //录入人  不能为空
    @ManyToOne(fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name = "inputUser_id")
    private Employee inputUser;
    //采购员
    @ManyToOne(fetch = FetchType.LAZY,optional = false)
    @JoinColumn(name = "buyer_id")
    private Employee buyer;
    //明细   ALL 强级联
    //orphanRemoval  一方解除关系  去删除
    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.LAZY,mappedBy = "bill",orphanRemoval = true)
    private List<Purchasebillitem> items = new ArrayList<>();
    get()/set()方法

2.2 多方(从表)

@Entity
@Table(name = "purchasebillitem")
public class Purchasebillitem extends BaseDomain {
    //产品价格
    private BigDecimal price;
    //产品数量
    private BigDecimal num;
    //产品小计金额
    private BigDecimal amount;
    //产品描述
    private String descs;
    //产品
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "product_id")
    private Product product;
    //订单
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "bill_id")
    @JsonIgnore  //生成json数据的时候忽略这个属性
    private Purchasebill bill;

2.3 Purchasebill 日期处理

@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
public Date getVdate() {
    return vdate;
}

@DateTimeFormat(pattern = "yyyy-MM-dd")
public void setVdate(Date vdate) {
    this.vdate = vdate;
}

3 订单查询列表

3.1 purchasebill.jsp

<th width="20"  field="vdate">交易时间</th>
<th width="20"  field="supplier" data-options="formatter:formatObj">供应商</th>
<th width="20"  field="buyer"  data-options="formatter:formatEmp">采购员</th>
<th width="20"  field="totalNum">总数量</th>
<th width="20"  field="totalAmount" >总金额</th>
<th width="20"  field="status" data-options="formatter:formatStatus" >状态</th>

3.2 purchasebill.js

function formatObj(data) {
    if(data){
        return data.name;
    }
}
function formatEmp(data) {
    if(data){
        return data.username;
    }
}
function formatStatus(action) {
    var data = {
        0:"<div style='color:red;'>待审</div>",
        1:"<div style='color: green'>已审</div>",
        "-1":"<div><s>作废</s></div>"
    };
    return data[action];
}

效果图
在这里插入图片描述

3.3 查询条件的添加

<form id="searchForm" action="/purchasebill/download" method="post">
    日期 : <input name="beginDate" class="easyui-datebox" style="height:32px" sharedCalendar="#cc">
    - <input name="endDate" class="easyui-datebox" style="height:32px" sharedCalendar="#cc">

    状态 :<select class="easyui-combobox" name="status"
                data-options="panelHeight:'auto'"
     >
    <option value="">--请选择--</option>
    <option value="0">待审</option>
    <option value="-1">作废</option>
    <option value="1">已审</option>
</select>

purchasebillQuery.java

public class PurchasebillQuery extends BaseQuery {

    //SpringMVC接收日期的格式设置(建议写在setter上)
    @DateTimeFormat(pattern = "yyyy-MM-dd")
[SpringMVC接收日期需要加入相应的注解支持]    private Date beginDate;
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    private Integer status;
    @Override
    public Specification createSpecification(){
        //根据条件把数据返回即可
        Specification<Purchasebill> spec = Specifications.<Purchasebill>and()
                .eq(status!=null,"status",status )//等于
                .ge(beginDate!=null, "vdate",beginDate) //大于等于
                .le(endDate!=null, "vdate",endDate) //小于等于
                .build();

        return spec;
    }
    //getter,setter略…
}

4 添加修改 弹出对话框

<!-- 弹出相应的功能框 -->
<div id="purchasebillDialog" class="easyui-dialog" title="数据操作" data-options="closed:true,modal:true"  style="width:800px;padding:10px">
    <form id="purchasebillForm" method="post">
        <input id="purchasebillId" type="hidden" name="id">
        <table cellpadding="5">
            <tr>
                <td>交易时间:</td>
                <td><input class="easyui-datebox" type="text" name="vdate"></input></td>
            </tr>

            <tr>
                <td>供应商:</td>
                <td><input class="easyui-combobox" type="text" name="supplier.id"
                           data-options="panelHeight:'auto',valueField:'id',textField:'name',url:'/util/findAllSupplier'"
                ></input></td>
            </tr>
            <tr>
                <td>采购员:</td>
                <td><input class="easyui-combobox" type="text" name="buyer.id"  data-options="valueField:'id',textField:'username',url:'/util/findAllEmployee'"></input></td>
            </tr>
        </table>

        <!-- 明细表格-->
        <table id="gridItem"  title="明细编辑" style="width:100%;height:300px"></table>
        <!-- 采购单明细的按钮准备 -->
        <div id="itemBtns">
            <a href="javascript:;" id="btnInsert" class="easyui-linkbutton"
               data-options="iconCls:'icon-add',plain:true">添加</a>
            <a href="javascript:;" id="btnRemove" class="easyui-linkbutton"
               data-options="iconCls:'icon-remove',plain:true">删除</a>
        </div>
        <div style="text-align:center;padding:5px">
            <a href="javascript:void(0)" class="easyui-linkbutton" data-method="save">提交</a>
            <a href="javascript:void(0)" class="easyui-linkbutton" onclick="$('#purchasebillDialog').dialog('close')">取消</a>
        </div>
    </form>
</div>

4.1 采购明细单

//明细表格
    var dg = $("#gridItem"),
        //默认的行
        defaultRow = { productId:"", color: "", smallpic: "", num: "0", price: "0", amout: "0" ,descs:""},
        //插入的位置   bottom  底部插入
        insertPosition = "bottom";
    //表格初始化
    var dgInit = function () {
        //得到所有的列
        var getColumns = function () {
            //定义一个数组
            var result = [];
            //具体列的配置
            var normal = [
                {
                    field:'productId',title: '产品', width: 80,
                    editor: {
                        type:"combobox",
                        options:{
                            valueField:'id',
                            textField:'name',
                            panelHeight:'auto',
                            url:'/util/findAllProduct',
                            required: true
                        }
                    },
                    formatter:function(value,row){
                        return value.name;
                    }
                },
                {
                    field: 'color', title: '颜色', width: 100,
                    formatter:function (value, row) {
                        if (row){
                            return "<div style='width:20px;height:20px;background-color:"+row.productId.color+"'></div>";
                        }
                    }
                },
                {
                    field: 'smallpic', title: '图片', width: 100,
                    formatter:function (value, row) {
                        if (row && row.productId.smallpic){
                            return "<img src='"+row.productId.smallpic+"' style='width: 50px;height: 50px' />";
                        }
                    }
                },
                {
                    field: 'num', title: '产品数量', width: 80,
                    editor: {
                        type: "numberbox",
                        options: {
                            required: true
                        }
                    }
                },
                {
                    field: 'price', title: '价格', width: 80,
                    editor: {
                        type: "numberbox",
                        options: {
                            required: false
                        }
                    }
                },
                {
                    field: 'amout', title: '小计', width: 80,
                    formatter:function (value, row) {
                        if (row.num && row.price){
                            return row.num * row.price;
                        }
                    }
                },
                {
                    field: 'descs', title: '备注', width: 160,
                    editor: {
                        type: "textbox",
                        options: {
                            readonly: false
                        }
                    }
                }
            ];
            result.push(normal);

            return result;
        };
        //设置表格配置
        var options = {
            idField: "productId",
            rownumbers: true,
            fitColumns: true,
            fit: true,
            border: true,
            singleSelect: true,
            toolbar:"#itemBtns",
            columns: getColumns(),//得到所有列
            //表示开启单元格编辑功能
            enableCellEdit: true
        };
        //创建编辑表格
        dg.datagrid(options);

    };
    //定义方法  得到插入行的索引
    var getInsertRowIndex = function () {
        return insertPosition == "top" ? 0 : dg.datagrid("getRows").length;
    }
    //button绑定时间
    var buttonBindEvent = function () {
        //插入行的按钮
        $("#btnInsert").click(function () {
            //获取插入表格的位置  最末尾
            var targetIndex = getInsertRowIndex(), targetRow = $.extend({}, defaultRow, { ID: $.util.guid() });
            //在表格里面添加一行
            dg.datagrid("insertRow", { index: targetIndex, row: targetRow });
            //插入一行之后  定义到第一个单元格
            dg.datagrid("editCell", { index: 0, field: "productId" });
        });

        $("#btnRemove").click(function () {
            //得到选中的行
            var row = dg.datagrid("getSelected");
            if (row){
                //得到行索引
                var index = dg.datagrid("getRowIndex",row);
                //根据索引删除
                dg.datagrid("deleteRow",index);
            }
        });
    };

    //调用方法  初始化表格  创建表格
    dgInit();
    //绑定事件
    buttonBindEvent();

});

4.2 明细单保存

4.2.1 提交额外参数
onSubmit: function(param){
    //提交 封装items
    //得到明细表格里面的数据
    var rows = $("#gridItem").datagrid("getRows");
    for (var i = 0; i < rows.length; i++) {
        var rowData = rows[i];
        param["items["+i+"].descs"] = rowData.descs;
        param["items["+i+"].price"] = rowData.price;
        param["items["+i+"].num"] = rowData.num;
        param["items["+i+"].product.id"] = rowData.productId.id;
    }

    // 提交之前的验证
    return purchasebillForm.form('validate');
}

4.3 解决修改回显问题

edit:function(){
    //选择一条数据进行修改
    var row = purchasebillGrid.datagrid('getSelected');
    if(row){
        //弹出对话框
        purchasebillDialog.dialog('center').dialog('open');
        //供货商
        if (row.supplier){
            row["supplier.id"] = row.supplier.id;
        }
        //采购员
        if (row.buyer){
            row["buyer.id"] = row.buyer.id;
        }

        //明细表格回显
        //加载相应的数据(要看product的名称是否可以对应上)
        for (var i = 0; i < row.items.length; i++) {
            var item = row.items[i];
            item["productId"] = item.product;
        }
        var items = $.extend([], row.items);
        $("#gridItem").datagrid("loadData", items);
        //修改 -- 回显示数据
        purchasebillForm.form('load',row);
    }else{
        //提示用户
        $.messager.alert('温馨提示:','请选中一条数据进行修改','info');
        return;
    }

}

5 解决n-to-n问题

设置所有关联对象为null

purchasebill.setBuyer(null);
purchasebill.setSupplier(null);
purchasebill.getItems().clear();
Java招商采购管理系统 立即下载

相关推荐

java采购申请系统

1、采购申请页面 write-purchase.jsp 2、主界面 main.jsp 3、主管审批页 manager-approve-purchase.jsp 4、取消申请页 cancel-apply.jsp 5、待办任务列表 task-list.jsp

采购订单模块

目录 组合关系 一方的配置 多方的配置 2.组合关系完整代码 3.页面的展示数据 #JSP #JS 4.高级查询 1.添加按钮 2.补全条件拼接 3.解决查询日期问题:加一天 方案一:直接结算 方案二:JDK 方案三: 5.添加采购订单 1.弹出相应的功能框 2.后台支持 3.解决保存数据时报错 4.数据回显 6.明细数据的操作 ...

weixin_44840242的博客 1231

CRC校验查表法详解

CRC校验的查表法理解算法原理基础计算查表法原理及计算查表法中的表CRC校验中数据逆序CRC校验中的其它参数 算法原理 CRC(Cyclic Redundance Check)循环冗余校验,是基于某个多项式计算出一组校验码,用于核对数据传输过程中是否被更改或传输错误 基础计算 假设需要检验的数据 g :10100111,这串二进制码可以表示为代数多项式g(x) = x^7 + x^5 + x^2 + x +1, 而作为除数的多项式 h(x) 可以自由选择或者按照国际标准选择,一般h(x)的阶数如果是m

boom的博客 1万+

创建采购订单(订购单)

*&---------------------------------------------------------------------* *&ReportZMM015 *&---------------------------------------------------------------------* *&抬头:...

宇宙丶帅的博客 1702

URDF模型转换实战:解决SolidWorks到Gazebo的五大常见问题

本文详细解析了从SolidWorks导出URDF模型到Gazebo仿真过程中常见的五大问题及解决方案,包括插件安装、坐标系建立、Link与Joint配置等关键步骤。通过实战经验分享,帮助机器人仿真工程师高效完成模型转换,确保Gazebo仿真准确性。

weixin_29052717的博客 442

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

Aisell智能销售项目_总结

文章目录day1 集成SpringMVC&前端展示1 spring+springdatajpa搭建环境2 springmvc和spring集成3 创建repository-service-controller层day2 easyui结合项目完成CRUD1 新增2 修改3 新增和修改保存4 删除5 查询6 后台问题:day3 Shrio集成Spring&Authentication身...

Java_pipixia的博客 835

基于matlab的阈值分割的车牌定位识别系统

车牌自动识别模块是现代社会智能交通系统(ITS)的重要组成部分,是图像处理和模式识别技术研究的热点,具有非常广泛的应用。车牌识别主要包括以下三个主要步骤:车牌区域定位、车牌字符分割、车牌字符识别。本案例通过对采集的车牌图像进行灰度变换、边缘检测、腐蚀及平滑等过程进行车牌图像预处理,并由此得到一种基于车牌颜色纹理特征的车牌定位方法,最终实现了车牌区域定位。车牌字符分割是为了方便后续对车牌字符进行匹配,从而对车牌进行识别。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 966

应用Shiro到Web Application(基础)

一、简介 如果你正想学习权限方面的知识,或者正打算把Shiro作为权限组件集成到自己的web application中,或许正在为Shiro如何实现CAPTCHA(验证码)功能而伤透脑筋。那么,本文正是为你准备的。本文简单介绍权限方面的基础知识并以实际例子,带你进入Shiro的世界。 二、权限基础 a)    认证(你是谁?) 判断你(被认证者)是谁的过程。通常被认证者提供用户

程序员!我当定了! 4977

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1024

【实战项目开发技术分享】如何设置机器人禁行区/虚拟墙

在现代机器人技术的日益发展中,路径规划是使机器人在复杂环境中安全、高效移动的关键部分。其中一个重要的问题是如何划定机器人的禁行区,以确保机器人不会进入危险区域或无法到达的地方。在本文中,我们将探讨一些关键策略,帮助机器人算法工程师更好地划定禁行区。代价地图可以通过多层叠加来实现,一般包括以下几个层级:静态地图层(Static Map Layer):由SLAM(Simultaneous Localization and Mapping)构建的静态地图。该层包含了环境中固定不变的地物信息,如墙壁、家具等。

xiewf的博客 1万+

按钮管理:自定义按钮管理,维护按钮shiro权限标识等

权限管理:点开二级菜单进入三级菜单显示 角色(基础权限)和按钮权限 角色(基础权限): 分角色组和角色,独立分配菜单权限和增删改查权限。(一个用户可以多个角色) 按钮权限: 给角色分配按钮权限。 按钮管理:自定义按钮管理,维护按钮shiro权限标识等 菜单管理:N级别自定义菜单,选择菜单图标,菜单状态显示隐藏(递归处理) 数据字典:N级别,支持多级别分类。内设编号,排序等 日志管理:记录用户登录退出和一些重要操作记录 在线管理:websocket技术,实时检测在线用户列表,统计在线人.

xiaozhen1982的博客 1273

【OpenClaw从入门到精通】第13篇:OpenClaw低代码编排实战:非技术人员也能玩转AI自动化流程(2026新版实测)

本文聚焦OpenClaw 2026版核心升级的低代码编排能力,针对非技术人员的实操需求,从底层逻辑、双环境部署、三类实战案例、避坑指南四个维度展开。详解阿里云集群版(企业级)与汉化本地版(个人调试)的部署步骤,通过基础数据统计、公众号内容生产线、企业级任务调度三个递进式案例,演示可视化拖拽搭建自动化流程的完整过程。全程零代码/低代码操作,配套详细参数配置、执行结果模拟及问题排查方案,帮助销售、运营、自媒体等非技术人员快速掌握自动化工具,将重复工作交给AI,提升核心工作效率。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 614

项目第十天 智慧能力系统项目总结

写在前面 智慧能力系统主要用来完成医疗器械进货、销售、存储等功能的一套系统,为你的进货销售库存等一系列的操作做到方便快捷,随时使用,只要的员工登录系统,就可以 查看你的一切相关信息,为你的相关业务提供准确的数据信息! 项目主要功能 *- 员工的管理,员工登录系统,赋予员工相应的权限,完成权限下相应的功能! 部门的管理,查看相关部门的功能 产品的管理,产品的明细,对相应的产品进行相应的操作! 产品...

不是程序员的程序员博客 167

将 SAP BTP ABAP environment 与 SAP S/4HANA Cloud 公有云版集成:从架构理念到落地实战

本文探讨了在SAP云环境中实现ABAP扩展应用与S/4HANA Cloud系统集成的技术方案。通过建立标准化的远程通信通道,开发者可在SAP BTP ABAP环境中开发扩展应用,同时安全访问S/4HANA Cloud的核心业务数据和服务。文章详细介绍了整体架构设计、开发实现步骤(包括定义通信场景、生成服务消费模型和编写调用代码)以及管理员在S/4HANA侧的配置工作(创建通信安排和技术用户)。通过一个业务伙伴自助注册平台的案例,展示了如何在不修改标准系统的情况下实现云扩展,体现了SAP"干净核心&

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 237

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

项目总结

项目总结一.项目名称:遂心商贸软件1.项目概述:我们团队项目制作出的是一款针对于中小型企业的进销存管理系统。2.项目成果简介:这款进销存管理系统是在企业经营中对员工,供应商,产品等的管理进行信息化处理,从接获订单开始,产品采购,入库,销售,出库等每一步程序进行记录监控,更加规范的执行流程,将管理变得不再繁琐,是一款简洁易用的好软件!二.人员组成Java开发程序员3位。三.开发时长2.5个月。四.技...

qq_45908057的博客 177

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Shiro_项目_审核入库订单&&库存预警&&发送邮件

文章目录1 进销存模块分类1.1 基本模块内容1.2 进销存核心模块2 进销存业务逻辑2.1 建立入库订单(组合关系、主从表)2.1.1 仓库2.1.2 入库订单:组合关系的一方2.1.3 入库订单明细:组合关系的多方2.1.4 即时库存2.2 级联保存2.2.1 导包2.2.2 保存测试2.3 审核采购入库单3 库存预警3.1 pom.xml添加jar文件3.2 任务调度/定时调度jar文件3....

Java_pipixia的博客 1724

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

进销存系统

XXX进销存系统模板 --IBS进销存系统做这个项目的目的登录与角色主要功能及使用框架销售管理采购表页面展示图采购管理仓库管理财务管理经营分析系统设置UML 图表 进销存系统 首先,对于上个月在团队做的某某某进销存系统中,我学到了很多东西,由于当时每天都在不断的学习和实现,我没能及时的在博客上,写下我的心得,现在做一个大概的一个描述,当然也是其中一些大家比较知道的东西,好了废话就不多说了,...

Andy_luck的博客 3764

中东建材城销售项目完结总结

一.框架搭建 通过使用 Spring,SpringMVC,SpringDataJPA 进行框架搭建,页面用 EasyUI 来显示。 Spring+SpringDataJPA集成和配置 <!--引入jdbc.properties文件--> <context:property-placeholder location="classpath:jdbc.properties" /...

qq_28404129的博客 179

盘源进销存项目总结

最近我们项目组4个人做了一个简易进销存管理系统,为期时长2个月时间,刚刚做完,现在做个总结 项目中主要是卖的是产品是移动硬盘, 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支...

YUN_QWE的博客 368

速销乐智能销售系统项目总结

ufudcy

qq_37786118的博客 831

中东建材城销售系统流程简介

销售项目阶段一阶段二阶段三导入导出产品模块采购订单报表心得体会 阶段一 通过使用 Sprig 全家桶(Spring+SpringMVC+SpringDataJPA)来搭载框架,完成基本的 CRUD ,运用模板技术 velocity 生成重复的代码,提高工作效率,让我们能有更多的时间来实现用户的需求,页面通过 EasyUI 来展示。 阶段二 在了解客户的需求后,我们决定使用 Shiro (身份验证、...

qq_28404129的博客 325

课程销售系统

课程销售系统项目感受第一阶段:框架搭建这一阶段主要进行了项目基本框架搭建,并完成基本的增删改查功能,完成了代码生成器的模板。为后面的高级功能实现做好铺垫准备,难度并不高,但是需要更加仔细,细心。第二阶段:权限模块第二阶段的权限判定设计主要涉及到前端界面权限拦截器和后台的权限判定。权限判定设计的框架是shiro,是一个非常强大且容易的Java安全框架,shiro框架有四大基石,分别是身份验证,授权,...

weixin_44809807的博客 488

基于javaweb+mysql的医院管理系统(java+Springboot+ssm+mysql+maven)

一、项目简述 功能:该项目是用springboot+layui+shiro写的医院管理系 统,该系统的业务比较复杂,数据库一共有36张表。 项目分为门诊管理、住院管理、系统管理、统计管理、数 据中心、排班管理、仓库管理、药房管理 本系统重点是门诊和住院管理 填写患者的详细信息,如姓名,年龄、手机号、性别、身 份证号、选择科室挂号类型医生、会出来相对的挂号费, 点击提交的时候会判断你输入的各项信息是否正确,如果 该手机号或者该身份证号正在就诊,则会提示该手机号或 者该身份证号正在就诊。挂号页面会根据单选按钮来

m0_71481516的博客 547
上一篇: java_项目_EasyPoi导入与导出
下一篇: Shiro_项目_采购报表功能
虞铭轩、
博客等级 码龄7年 3粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值