前言:
这个章节内容是比较多的,分为前端部分和后端部分。
目录:
实现效果:增删改查
一、后端部分:
(1)数据库:
新建一张表user,设置几个字段,效果如下:
(2)egg逻辑部分:
提供的接口:http://localhost:7001/setUserList
(3)egg具体实现步骤:
1、router.js中添加:
2、新建:app / controller / new / user.js
(1)查,模糊查询
(2)增
(3)改
(4)删
user.js 源码:
3、引入mysql:点我
4、跨域问题解决:点我
二、前端部分:
新建vue文件:testApi.vue
1、初始化查询列表数据:页面展示列表,列表数据mouted获取
2、页面点击新增:展示弹框,并将弹框内容去除掉,点击新增,将弹框内容发送给后端
3、页面点击列表里面具体数据的编辑:弹框,并回填数据,修改将当前数据的id和表格数据传给后端
4、删除按钮,点击出现二次确认弹框,点击确认将当前数据的id给后端就行
testApi.vue 源码:
实现效果:增删改查
一、后端部分:
(1)数据库:
新建一张表user,设置几个字段,效果如下:
(2)egg逻辑部分:
提供的接口:http://localhost:7001/setUserList
-
get 请求,获取数据,支持模糊查询
-
post 请求,新增数据
-
put 请求,给后端当前数据id,修改内容
-
delete 请求,根据数据id删除当前条数据
(3)egg具体实现步骤:
1、router.js中添加:
-
-
-
-
-
module.exports = app => {
-
const { router, controller } = app;
-
-
-
-
app.get('/setUserList', controller.new.user.getUserList);
-
app.post('/setUserList', controller.new.user.postUserList);
-
app.put('/setUserList', controller.new.user.putUserList);
-
app.delete('/setUserList', controller.new.user.deleteUserList);
-
-
2、新建:app / controller / new / user.js
(1)查,模糊查询
select * from user where name like ? % 内容 %
(2)增
this.app.mysql.insert('表名',内容)
(3)改
UPDATE loginlist SET `password` = 'Ad123456' WHERE id = 2
(4)删
delete from user where id = 1
user.js 源码:
-
-
-
-
-
-
const Controller = require('egg').Controller;
-
class NewsController extends Controller {
-
-
-
let params = this.ctx.query
-
-
-
let sql = 'select * from user'
-
-
-
-
-
-
-
-
-
-
-
-
-
sql += " where name like ?";
-
content.push( "%"+params.name+"%" );
-
-
-
-
-
-
-
sql += " WHERE age LIKE ?";
-
-
content.push( "%"+params.age+"%" )
-
-
-
-
-
sql += "and address LIKE ?";
-
-
sql += " WHERE address LIKE ?";
-
-
content.push( "%"+params.address+"%" )
-
-
-
-
-
sql += "and phone LIKE ?";
-
-
sql += " WHERE phone LIKE ?";
-
-
content.push( "%"+params.phone+"%" )
-
-
-
-
if(params.page || params.pageSize){
-
let current = params.page;
-
let pageSize = params.pageSize;
-
-
content.push((current-1)*pageSize,parseInt(pageSize));
-
-
-
let allList = await this.app.mysql.query(initSql);
-
let userList= await this.app.mysql.query(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
console.log(this.ctx.request.body);
-
-
let data = this.ctx.request.body
-
data.id = parseInt(Math.random()*100000)
-
let insertResult = await this.app.mysql.insert(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
let id = this.ctx.query.id
-
let data = this.ctx.request.body
-
let sql = 'update user set '
-
-
-
-
-
-
-
-
-
-
-
-
sql += 'name = "'+data.name+'"'
-
-
-
-
-
-
sql += ',age = "'+data.age+'"'
-
-
sql += 'age = "'+data.age+'"'
-
-
-
-
-
-
-
sql += ',address = "'+data.address+'"'
-
-
sql += 'address = "'+data.address+'"'
-
-
-
-
-
-
-
sql += ',phone = "'+data.phone+'"'
-
-
sql += 'phone = "'+data.phone+'"'
-
-
-
-
-
-
-
sql += ',email = "'+data.email+'"'
-
-
sql += 'email = "'+data.email+'"'
-
-
-
sql += ' where id = ' + id
-
-
let insertResult = await this.app.mysql.query(sql)
-
-
-
-
-
-
-
-
-
-
-
-
-
let params = this.ctx.query
-
-
-
let sql = 'delete from user where id = '+ params.id
-
let res = await this.app.mysql.query(
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
const TABLE_NAME = 'user';
-
const QUERY_STR = 'id, name, age, phone, address';
-
let sql = `select ${QUERY_STR} from ${TABLE_NAME} where authName like "%${auth.authName}%"`;
-
const row = await this.app.mysql.query(sql);
-
-
-
-
-
-
module.exports = NewsController;
-
3、引入mysql:点我
4、跨域问题解决:点我
二、前端部分:
新建vue文件:testApi.vue
1、初始化查询列表数据:页面展示列表,列表数据mouted获取
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<template slot-scope="scope">
-
<el-button type="text" size="small" @click="editFun(scope.row)">编辑</el-button>
-
<el-button type="text" size="small" @click="deleteFun(scope.row)">删除</el-button>
-
-
-
-
-
-
-
-
-
-
-
-
-
page: this.tableInfo.page,
-
pageSize: this.tableInfo.pageSize
-
-
this.$axios.get('http://localhost:7001/setUserList',{
-
-
-
this.tableInfo.list = res.data.data.list
-
this.tableInfo.total = res.data.data.total
-
-
this.$message(error.data.message)
-
-
-
-
2、页面点击新增:展示弹框,并将弹框内容去除掉,点击新增,将弹框内容发送给后端
3、页面点击列表里面具体数据的编辑:弹框,并回填数据,修改将当前数据的id和表格数据传给后端
4、删除按钮,点击出现二次确认弹框,点击确认将当前数据的id给后端就行
testApi.vue 源码:
-
-
-
<el-button type='success' @click="addModal">新增</el-button>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
<template slot-scope="scope">
-
<el-button type="text" size="small" @click="editFun(scope.row)">编辑</el-button>
-
<el-button type="text" size="small" @click="deleteFun(scope.row)">删除</el-button>
-
-
-
-
-
-
-
:layout="'total,prev, pager, next,sizes'"
-
-
:hide-on-single-page="false"
-
:current-page="tableInfo.page"
-
:page-size="tableInfo.pageSize"
-
@current-change="pageChange"
-
@size-change="pageSizeChange"
-
-
-
-
-
-
-
-
:visible.sync="modal.show"
-
:width="modal.type === 'delete'? '470px' : '800px'">
-
<h3 v-if="modal.type === 'add'" slot="title">新增</h3>
-
<h3 v-if="modal.type === 'edit'" slot="title">修改</h3>
-
<h3 v-if="modal.type === 'delete'" slot="title">提示</h3>
-
<div v-if="modal.type !== 'delete'" class="editNameBody">
-
<el-form class="editNameFrom" :model="modalFrom" label-width="120px" label-position="right">
-
<el-form-item label="姓名:">
-
<el-input v-model="modalFrom.name"></el-input>
-
-
<el-form-item label="年纪:">
-
<el-input v-model="modalFrom.age"></el-input>
-
-
<el-form-item label="手机号:">
-
<el-input v-model="modalFrom.phone"></el-input>
-
-
<el-form-item label="邮箱:">
-
<el-input v-model="modalFrom.email"></el-input>
-
-
<el-form-item label="地址:">
-
<el-input v-model="modalFrom.address" type="textarea"></el-input>
-
-
-
-
<div v-if="modal.type === 'delete'">
-
<i class="el-icon-warning" style="margin-right:7px;color:#FFAA00;font-size: 16px;"></i>请确认是否删除
-
-
<div slot="footer" class="dialog-footer">
-
<el-button @click="modal.show = false">取 消</el-button>
-
<el-button v-if="modal.type === 'add'" type="primary" @click="addUserList">新增</el-button>
-
<el-button v-if="modal.type === 'edit'" type="primary" @click="editUserList">修改</el-button>
-
<el-button v-if="modal.type === 'delete'" type="primary" @click="deleteUserList">确 认</el-button>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
page: this.tableInfo.page,
-
pageSize: this.tableInfo.pageSize
-
-
this.$axios.get('http://localhost:7001/setUserList',{
-
-
-
this.tableInfo.list = res.data.data.list
-
this.tableInfo.total = res.data.data.total
-
-
this.$message(error.data.message)
-
-
-
-
-
-
-
this.tableInfo.page = page
-
-
-
-
-
-
pageSizeChange(pageSize) {
-
-
this.tableInfo.pageSize = pageSize
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
this.modal.type = 'delete'
-
-
-
-
-
url:'http://localhost:7001/setUserList',
-
-
-
this.$message.success('新增成功')
-
-
-
-
-
-
-
-
url:'http://localhost:7001/setUserList',
-
-
-
-
-
-
this.$message.success('修改成功')
-
-
-
-
-
-
-
-
url:'http://localhost:7001/setUserList',
-
-
-
-
-
this.$message.success('删除成功')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
蓝蓝设计建立了UI设计分享群,每天会分享国内外的一些优秀设计,如果有兴趣的话,可以进入一起成长学习,请扫码蓝小助,报下信息,蓝小助会请您入群。欢迎您加入噢~~希望得到建议咨询、商务合作,也请与我们联系。
分享此文一切功德,皆悉回向给文章原作者及众读者.
转自:csdn
免责声明:蓝蓝设计尊重原作者,文章的版权归原作者。如涉及版权问题,请及时与我们取得联系,我们立即更正或删除。
蓝蓝设计( www.lanlanwork.com )是一家专注而深入的界面设计公司,为期望卓越的国内外企业提供卓越的UI界面设计、BS界面设计 、 cs界面设计 、 ipad界面设计 、 包装设计 、 图标定制 、 用户体验 、交互设计、 网站建设 、平面设计服务