用户管理界面

用户管理完整代码

后端代码

启动项

// node 后端服务器
const userApi = require('./api/userApi')
const express = require('express')
const app = express()
// 采用设置所有均可访问的方法解决跨域问题
app.all('*', function (req, res, next) {
    // 设置允许跨域的域名,*代表允许任意域名跨域
    res.header('Access-Control-Allow-Origin', '*')
    // 允许的header类型
    res.header('Access-Control-Allow-Headers', 'content-type')
    // 跨域允许的请求方式
    res.header('Access-Control-Allow-Methods', 'DELETE,PUT,POST,GET,OPTIONS')
    if (req.method.toLowerCase() === 'options') {
        res.send(200)// 让options尝试请求快速结束
    } else { next() }
})
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

// 后端api路由
app.use('/api/user', userApi)
// 监听端口
app.listen(3000)
console.log('success listen at port:3000......')

连接数据库

var mssql = require('mssql')
// 数据库连接配置

// 执行sql,返回数据.
const units = {
    sql: function (sql, callback) {
        /// 连接池
        new mssql.ConnectionPool(units.config())
            .connect()
            .then(pool => {
                let ps = new mssql.PreparedStatement(pool)
                ps.prepare(sql, err => {
                    if (err) {
                        console.log(err)
                        return
                    }
                    ps.execute('', (err, result) => {
                        if (err) {
                            console.log(err)
                            return
                        }
                        ps.unprepare(err => {
                            if (err) {
                                console.log(err)
                                callback(err, null)
                                return
                            }
                            callback(err, result)
                        })
                    })
                })
            }).catch(err => {
                console.log('Database Connection Failed! Bad Config:', err)
            })
    },
    config: function () {
        return {
            user: 'sa',
            password: '123456',
            server: 'localhost',
            database: 'db_WH',
            port: 1433,
            options: {
                "encrypt": false
            },
            pool: {
                max: 10,
                min: 0,
                idleTimeoutMillis: 30000
            }
        }
    }
}
module.exports = units

UserApi

var units = require('../db')
var express = require('express')
var router = express.Router()

// 查询所有
router.post('/all', (req, res) => {
    let sqlLanguage = "select * from wh_user"
    units.sql(sqlLanguage, function (err, result) {
        let msg = ''
        let code = 404
        if (err) {
            msg = err
            code = 404
        } else {
            msg = '成功'
            code = 200
        }
        console.log('data :', result)
        res.json({
            code: code,
            data: result.recordset,
            msg: msg
        })
    })
})
//查询姓名
router.post('/userName', (req, res) => {
    console.log(req.body.name)
    let sqlLanguage = "select * from wh_user where u_name =\'" + req.body.name + '\'';
    console.log(sqlLanguage)
    units.sql(sqlLanguage, function (err, result) {
        let msg = ''
        let code = 404
        if (err) {
            msg = err
            code = 404
        } else {
            msg = '成功'
            code = 200
        }
        console.log('data :', result)
        res.json({
            code: code,
            data: result.recordset,
            msg: msg
        })
    })
})

//保存数据
router.post('/save', (req, res) => {
    const result = `('${req.body.no}','${req.body.name}','${req.body.password}','${req.body.age}','${req.body.sex}','${req.body.phone}')`
    console.log(result)
    let sqlLanguage = "insert into wh_user(u_no,u_name,u_pwd,u_age,u_sex,u_phone) values " + result;
    console.log(sqlLanguage)
    units.sql(sqlLanguage, function (err, result) {
        let msg = ''
        let code = 404
        if (err) {
            msg = err
            code = 404
        } else {
            msg = '成功'
            code = 200
        }
        console.log('data :', result)
        res.json({
            code: code,
            data: result.recordset,
            msg: msg
        })
    })
})

//修改数据
router.post('/mod', (req, res) => {
    console.log(req.body.no)
    const result=`update wh_user set u_name='${req.body.name}',u_pwd='${req.body.password}',u_age='${req.body.age}',u_sex='${req.body.sex}',u_phone='${req.body.phone}' where  u_no='${req.body.no}'`
    console.log(result)
    console.log(req.body.password)
    console.log(req.body.no)
    units.sql(result, function (err, result) {
        let msg = ''
        let code = 404
        if (err) {
            msg = err
            code = 404
        } else {
            msg = '成功'
            code = 200
        }
        console.log('data :', result)
        res.json({
            code: code,
            data: result.recordset,
            msg: msg
        })
    })
})

//删除信息
router.post('/del', (req, res) => {
    console.log(req.body.no)
    let sqlLanguage = "delete from wh_user where u_no=\'" + req.body.no + '\'';
    console.log(sqlLanguage)
    units.sql(sqlLanguage, function (err, result) {
        let msg = ''
        let code = 404
        if (err) {
            msg = err
            code = 404
        } else {
            msg = '成功'
            code = 200
        }
        console.log('data :', result)
        res.json({
            code: code,
            data: result.recordset,
            msg: msg
        })
    })
})
module.exports = router

前端代码

<template>
    <div>
        <!-- 功能按钮 -->
        <div style="margin-bottom: 5px;">
            <el-input v-model="name" placeholder="请输入名字" suffix-icon="el-icon-search" style="width: 200px;"></el-input>
            <el-button type="primary" style="margin-left: 5px;" @click="searchByName">查询</el-button>
            <el-button v-model="name" type="success" @click="resetting">重置</el-button>
            <el-button type="primary" style="margin-left: 5px;" @click="centerDialogVisible = true">新增</el-button>
        </div>



        <!-- 信息表格 -->
        <el-table :data="tableData" :header-cell-style="{ background: '#f2f5fc', color: '#555555' }" border>
            <el-table-column prop="u_no" label="账号" width="180">
            </el-table-column>
            <el-table-column prop="u_name" label="姓名" width="180">
            </el-table-column>
            <el-table-column prop="u_age" label="年龄" width="80">
            </el-table-column>
            <el-table-column prop="u_sex" label="性别" width="80">
            </el-table-column>
            <el-table-column prop="u_phone" label="电话" width="180">
            </el-table-column>
            <el-table-column prop="u_role" label="角色" width="120">
            </el-table-column>
            <el-table-column prop="operate" label="操作">
                <template slot-scope="scope">
                    <el-button size="small" type="success"
                        @click="mod(scope.row); centerDialogVisible = true">编辑</el-button>
                    <el-popconfirm title="确定删除吗?" @confirm="del(scope.row.u_no)" style="margin-left: 5px;">
                        <el-button slot="reference" size="small" type="danger">删除</el-button>
                    </el-popconfirm>
                </template>
            </el-table-column>
        </el-table>




        <!-- 新增和查询的表单,默认不可见 -->
        <el-dialog title="提示" :visible.sync="centerDialogVisible" :modal-append-to-body="false" width="30%" center>
            <el-form ref="form" :rules="rules" :model="form" label-width="80px">
                <el-form-item label="账号" prop="no">
                    <el-col :span="20">
                        <el-input v-model="form.no"></el-input>
                    </el-col>
                </el-form-item>
                <el-form-item label="名字" prop="name">
                    <el-col :span="20">
                        <el-input v-model="form.name"></el-input>
                    </el-col>
                </el-form-item>
                <el-form-item label="密码" prop="password">
                    <el-col :span="20">
                        <el-input v-model="form.password"></el-input>
                    </el-col>
                </el-form-item>
                <el-form-item label="年龄" prop="age">
                    <el-col :span="20">
                        <el-input v-model="form.age"></el-input>
                    </el-col>
                </el-form-item>
                <el-form-item label="性别">
                    <el-radio-group v-model="form.sex">
                        <el-radio label="男">男</el-radio>
                        <el-radio label="女">女</el-radio>
                    </el-radio-group>
                </el-form-item>
                <el-form-item label="电话" prop="phone">
                    <el-col :span="20">
                        <el-input v-model="form.phone"></el-input>
                    </el-col>
                </el-form-item>
            </el-form>
            <span slot="footer" class="dialog-footer">
                <el-button @click="concel">取 消</el-button>
                <el-button type="primary" @click="doSave">确 定</el-button>
            </span>
        </el-dialog>
    </div>
</template>

<script>
export default {
    name: "UserManage",
    data() {
        return {
            tableData: [],
            name: '',
            centerDialogVisible: false,
            form: {
                no: '',
                name: '',
                password: '',
                age: '',
                sex: '0',
                phone: ''
            },
            rules: {

            },
        }
    },
    methods: {
        resetting() {
            this.name = "",
                this.form.no = "",
                this.form.name = "",
                this.form.password = "",
                this.form.age = "",
                this.form.sex = "",
                this.form.phone = ""
        },
        concel() {
            this.centerDialogVisible = false
            this.resetting()
        },
        //保存
        save() {
            this.$http.post(this.$httpUrl + '/api/user/save', {
                no: this.form.no,
                name: this.form.name,
                password: this.form.password,
                age: this.form.age,
                sex: this.form.sex,
                phone: this.form.phone
            }).then(response => response.data).then((response) => {
                console.log(response)
                if (response.code == 200) {
                    this.centerDialogVisible = false;
                    this.resetting()
                    this.loadPost()
                }
                else {
                    this.$message.error('操作失败');
                }
            })
        },
        //修改
        doMod(no) {
            console.log(no)
            console.log(this.form.name)
            this.$http.post(this.$httpUrl + '/api/user/mod', {
                no: this.form.no,
                name: this.form.name,
                password: this.form.password,
                age: this.form.age,
                sex: this.form.sex,
                phone: this.form.phone
            }).then(response => response.data).then((response) => {
                console.log(response)
                if (response.code == 200) {
                    this.$message({
                        message: '操作成功',
                        type: 'success'
                    });
                    this.centerDialogVisible = false;
                    this.resetting()
                    this.loadPost()
                }
                else {
                    this.$message.error('操作失败');
                }
            })
        },
        //修改
        mod(row) {
            console.log(row)
            this.centerDialogVisible = true
            this.$nextTick(() => {
                //赋值到表单
                this.form.no = row.u_no
                this.form.name = row.u_name
                this.form.password = ''
                this.form.age = row.u_age
                this.form.sex = row.u_sex
                this.form.phone = row.u_phone
            })
        },
        //自动判断
        doSave() {
                if (!this.doMod()) {
                        this.save();
                } else {
                    console.log('error submit!!');
                    return false;
                }
        },
        //删除
        del(u_no) {
            console.log(u_no)
            this.$http.post(this.$httpUrl + '/api/user/del', {
                no: u_no
            }).then(response => response.data).then((response) => {
                console.log(response)
                if (response.code == 200) {
                    this.$message({
                        message: '删除信息成功',
                        type: 'success'
                    });
                    this.loadPost()
                }
                else {
                    this.$message.error('删除信息失败');
                }
            })
        },
        //查询所有
        loadPost() {
            this.$http.post(this.$httpUrl + '/api/user/all', {
            }).then(response => response.data).then((response) => {
                console.log(response)
                if (response.code == 200) {
                    this.tableData = response.data
                }
                else {
                    alert('获取数据失败')
                }
            })
        },
        //搜索姓名
        searchByName() {
            console.log(this.name)
            this.$http.post(this.$httpUrl + '/api/user/userName', {
                name: this.name
            }).then(response => response.data).then((response) => {
                console.log(response)
                if (response.data == "") {
                    this.$message.error('未查询到数据,请重新输入');
                    this.loadPost()
                }
                else {
                    this.$message({
                        message: '已成功查询',
                        type: 'success'
                    });
                }
                if (response.code == 200) {
                    this.tableData = response.data
                }
                else {
                    alert('获取数据失败')
                }
            })
        }
    },
    //在组件被挂载之前调用
    beforeMount() {
        //this.loadGet();
        this.loadPost()
    }
}
</script>

<style scoped></style>

界面展示

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值