• OA实例


    let express = require('express');
    let consolidate = require('consolidate');
    let bodyParser = require('body-parser');
    let cookieSession = require('cookie-session');
    let db = require('./db');
    let app = express();
    app.use(express.static(__dirname+'/views'));
    
    app.use(bodyParser.urlencoded({
        extended:true
    }));
    app.use(bodyParser.json());
    app.set('views',__dirname+'/template');
    app.set('view engine','html');
    app.engine('html',consolidate.ejs);
    app.post('/login',(req,res)=>{
        //全部用户  遍历用户数组  
        //判断当前进入的用户是否存在于这个 表中 
        if(!db.list.length){
            db.add(req.body);
            res.redirect('./');
            // res.end('haha');
        }else{
            let flag = mapData();
            if(flag){
                let len = db.list.length;
                let sj = db.list;
                res.render('OA',{ len:len,sj:sj });//跳转OA页面并渲染OA页面
            }else{
                res.redirect('./') //未登录
            }
            function mapData(){
                for(let i = 0;i< db.list.length;i++){
                    let uObj = db.list[i];  
                    //登录
                    if(uObj.username === req.body.username && uObj.password === req.body.password&&uObj.yearold === req.body.yearold && uObj.like === req.body.like){
                        return true;
                    }
                }  
                //注册
                db.add(req.body);
                return false;
            }
            
        }
    });
    app.listen(3000,()=>{
        console.log('start');
    });

    server.js 服务器

    db.js 数据的增删改查

    let date = require('./db.json');
    let fs = require('fs');
    module.exports = {
        //写数据
        story(){
            fs.writeFileSync(__dirname+'/db.json',JSON.stringify(date));
        },
        add(user){
            date.push(user);
            this.story();
        },
        del(index){
            date[index].isShow = false;
            this.story();
        },
        update(index,nDate){
            date[index] = nDate;
            this.story();
        },
        get list(){
            let arr =[];
            for(let i = 0; i< date.length;i++){
                    if(date[i].isShow==='true'){
                        arr.push(date[i]);
                    }
            };
            return  arr;
        }
    }

    数据格式 db.json

    [{"username":"xiaobai","password":"111","yearold":"18","like":"象棋","isShow":"true"}

    OA.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>OA管理系统</title>
        <style>
            body,html{
                 100%;
                height: 100%;
            }
            *{
                margin: 0;
                padding: 0;
                box-sizing: border-box;
            }
            nav{
                 100%;
                height: 100px;
                background: #438eb9;
            }
            h1{
                color: white;
                padding: 30px 25px;
                float: left;
            }
            .fl{
                float: right;
                 150px;
                height: 100%;
            }
            a{
                text-decoration: none;
                color: white;
                font-size: 18px;
                float: left;
                margin-top: 35px;
            }
            .fl span{
                float: right;
                margin-top: 35px;
                margin-right: 20px;
                color: white;
                font-size: 18px;
            }
            .main{
                 100%;
                height: 100%;
                display: flex;
                flex-direction: row;
            }
            .main-content{
                flex: 1;
            }
            .main-nav{
                 200px;
                height: 100%;
                border: 1px solid gray;
            }
            table{
                 100%;
                height: 100%;
                border: 1px solid gray;
                text-align: center;
                table-layout:fixed;
            }
            tr,td{
                border: 1px solid gray;
                height: 30px;
            }
            table tr{
                height: 30px;
            }
        </style>
    </head>
    <body>
        <nav>
            <h1>OA</h1>
            <div class="fl">
                <a href="#">Login</a>
                <span>Edit</span>
            </div>
        </nav>
        <div class="main">
            <div class="main-nav">
                <ul>
                    <% for(let i = 1;i<= len;i++){%>
                          <li><%=i%></li>  
                    <%}%>
                </ul>
            </div>
            <div class="main-content">
                <table>
                    <thead>
                        <td>姓名</td>
                        <td>年龄</td>
                        <td>爱好</td>
                    </thead>
                    <tbody>
                            <% for(let i = 0;i< len;i++){%>
                                <tr>
                                    <td><%= sj[i].username %></td>
                                    <td><%= sj[i].yearold %></td>
                                    <td><%= sj[i].like %></td>
                                </tr>
                            <%}%>
                    </tbody>
                </table>
            </div>
        </div>
    </body>
    <script>
    </script>
    </html>

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
        <style>
            html,body{
                height: 100%;
                 100%;
            }
            input,p,form,button,h3{
                margin: 0;
                padding: 0;
            }
            input{
                 150px;
                height: 30px;
                outline:none;
                margin: 20px 0;
            }
            form{
                 500px;
                height: 400px;
                border: 1px solid gray;
                text-align: center;
                background: gray;
                margin: 0 auto;
            }
            button{
                border: none;
                 200px;
                height: 30px;
                background: yellowgreen;
                margin: 3px 0;
            }
            h3{
                color:navy;
            }
        </style>
    </head>
    <body>
        <form action="./login"  method="POST"  enctype="application/x-www-form-urlencoded">
            <h3>登录页</h3>
            <p>
                用户名:<input type="text" name="username" id="">
            </p>
            <p>&nbsp;&nbsp; 码:<input type="password" name="password">
            </p>
            <p>&nbsp;&nbsp; 龄:<input type="text" name="yearold" onkeyup='this.value=this.value.replace(/[^0-9$]/g,"")'>
            </p>
            <p>&nbsp;&nbsp; 好:<input type="text" name="like">
            </p>
            <p>
                <input type="text" name="isShow" hidden="hidden" value="true">
            </p>
            <button>点击提交</button>
        </form>
    </body>
    </html>

     能码的尽量不写字,这就是码农吧 。使用node 做一个最基础的OA系统。

  • 相关阅读:
    信息收集
    beef框架使用
    网站程序CMS识别
    查找网站后台
    下载漏洞原理及利用
    后台拿webshell方法(2)
    如何学好web安全
    TIME_WAIT过多的解决方法(转)
    sudo
    keepalived+lvs子网掩码造成VIP切换故障 + vrrp_script+track_script
  • 原文地址:https://www.cnblogs.com/l8l8/p/9106496.html
Copyright © 2020-2023  润新知