CUD 是指增加(Create)、更新(Update)和删除(Delete)操作,是对于数据的基本操作。CUD 是一种常见的数据库操作术语,在许多应用和系统中都会涉及到。
Create(增加): Create 操作用于向数据库中添加新的数据记录。根据数据模型的定义,创建新的数据记录可以添加到数据库的表中,以便后续的数据操作和查询。
Update(更新): Update 操作用于修改数据库中已有的数据记录。可以通过指定某个准确的标识符(如主键)来定位并更新特定的数据记录。通过 Update 操作,可以修改数据记录中的一个或多个字段的值,从而实现数据的更新。
Delete(删除): Delete 操作用于从数据库中删除指定的数据记录。根据指定的标识符(如主键),可以删除特定的数据记录。通过 Delete 操作,可以从数据库中永久地移除不再需要的数据。
CUD 是基本的数据操作,也是实现数据的增删改功能的核心。这些操作在数据库系统中非常重要,并且被广泛应用于各种应用程序和系统中,包括网站、移动应用程序、企业软件等。通过使用 CUD,可以有效地管理和维护数据库中的数据。
配置数据访问的地址
- /**
- * 对后台请求的地址的封装,URL格式如下:
- * 模块名_实体名_操作
- */
- export default {
- 'SERVER': 'http://localhost:8080/ssm/', //服务器
- 'SYSTEM_USER_DOLOGIN': 'user/userLogin', //登陆
- 'SYSTEM_USER_DOREG': 'userAction.action', //注册
- 'SYSTEM_MENUS': '/module/queryRootNode', //左侧菜单树
- 'SYSTEM_BookList': '/book/queryBookPager', //书籍的后端数据请求
- 'SYSTEM_BookADD': '/book/addBook', //书籍增加的数据请求
- 'SYSTEM_BookUPD': '/book/editBook', //书籍修改的数据请求
- 'SYSTEM_BookDEL': '/book/delBook', //书籍删除的数据请求
- 'getFullPath': k => { //获得请求的完整地址,用于mockjs测试时使用
- return this.SERVER + this[k];
- }
- }
编写BookList
-
- "Book" style="padding: 30px;">
-
-
"true" class="demo-form-inline"> -
"书籍名称 : "> -
"bookname" placeholder="书籍名称"> -
-
-
"primary" plain @click="onSubmit">查询 -
"primary" plain @click="open">新增 -
-
-
-
"tableData" style="width: 100%"> -
"id" label="书籍ID"> -
"bookname" label="书籍名称"> -
"price" label="书籍价格"> -
"booktype" label="书籍类型"> -
"操作"> - "scope">
-
"mini" @click="open(scope.$index, scope.row)">编辑 -
"mini" type="danger" @click="del(scope.$index, scope.row)">删除 -
-
-
-
- "block" style="padding: 20px;">
-
@size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page" - background :page-sizes="[10, 20, 30, 40]" :page-size="rows" layout="total, sizes, prev, pager, next, jumper"
- :total="total">
-
-
-
-
"title" :visible.sync="dialogFormVisible" @close="clear"> -
"book" :rules="rules" ref="book"> -
"书籍编号" :label-width="formLabelWidth" prop="id"> -
"book.id" autocomplete="off"> -
-
"书籍名称" :label-width="formLabelWidth" prop="bookname"> -
"book.bookname" autocomplete="off"> -
-
"书籍价格" :label-width="formLabelWidth" prop="price"> -
"book.price" autocomplete="off"> -
-
"书籍类别" :label-width="formLabelWidth" prop="booktype"> -
"book.booktype" placeholder="请选择活动区域"> -
for="t in types" :label="t.name" :value="t.name" :key="'key_'+t.id"> -
-
-
- "footer" class="dialog-footer">
-
@click="dialogFormVisible = false">取 消 -
"danger" @click="dosub">确 定 -
-
-
- export default {
- data() {
- return {
- bookname: '',
- tableData: [],
- rows: 10,
- total: 0,
- page: 1,
- title: '新增窗体',
- dialogFormVisible: false,
- formLabelWidth: '100px',
- types: [],
- book: {
- id: '',
- bookname: '',
- price: '',
- booktype: ''
- },
- rules: {
- bookname: [{
- required: true,
- message: '请输入书籍名称',
- trigger: 'blur'
- }],
- price: [{
- required: true,
- message: '请输入书籍价格',
- trigger: 'blur'
- }],
- booktype: [{
- required: true,
- message: '请输入书籍类型',
- trigger: 'blur'
- }]
- }
- }
- },
- methods: {
- del(idx, row) {
- this.$confirm('此操作将永久删除id为' + row.id + '的数据, 是否继续?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- let url = this.axios.urls.SYSTEM_BookDEL;
- this.axios.post(url, {
- id: row.id
- }).then(d => {
- console.log(d);
- this.$message({
- type: 'success',
- message: '删除成功!'
- });
- this.query({});
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {
- })
-
- }).catch(() => {
- this.$message({
- type: 'info',
- message: '已取消删除'
- });
-
- });
-
- },
- dosub() {
- this.$refs['book'].validate((valid) => {
- if (valid) {
- let url = this.axios.urls.SYSTEM_BookADD;
- if (this.title == '编辑窗体') {
- url = this.axios.urls.SYSTEM_BookUPD;
- }
- let params = {
- id: this.book.id,
- bookname: this.book.bookname,
- price: this.book.price,
- booktype: this.book.booktype
- }
- this.axios.post(url, params).then(d => {
- console.log(d);
- this.clear();
- this.query({});
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {
-
- })
-
- } else {
- console.log('error submit!!');
- return false;
- }
- });
-
- },
- clear() {
- //初始化窗体
- this.dialogFormVisible = false;
- this.title = '新增窗体';
- this.book = {
- id: '',
- bookname: '',
- price: '',
- booktype: ''
- }
- },
- open(idx, row) {
- //打开窗体的方法
- this.dialogFormVisible = true;
- if (row) {
- this.title = '编辑窗体';
- this.book.id = row.id;
- this.book.bookname = row.bookname;
- this.book.price = row.price;
- this.book.booktype = row.booktype;
- }
- },
- handleSizeChange(r) {
- //当页大小发生变化
- let params = {
- bookname: this.bookname,
- rows: r,
- page: this.page
- }
- // console.log(params)
- this.query(params);
- },
- handleCurrentChange(p) {
- //当前页码大小发生变化
- let params = {
- bookname: this.bookname,
- rows: this.rows,
- page: p
- }
- this.query(params);
- },
- query(params) {
- //获取后台请求书籍数据的地址
- let url = this.axios.urls.SYSTEM_BookList;
- this.axios.get(url, {
- params: params
- }).then(d => {
- console.log(url)
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {});
- },
- onSubmit() {
- let params = {
- bookname: this.bookname
- }
- console.log(params)
- this.query(params);
- this.bookname = ''
- }
- },
- created() {
- this.query({});
- this.types = [{
- id: 1,
- name: '玄幻'
- }, {
- id: 2,
- name: '动作'
- }, {
- id: 3,
- name: '爱情'
- }, {
- id: 4,
- name: '伦理'
- }, {
- id: 5,
- name: '霸总'
- }];
- }
- }
编写Login
- "login-wrap">
-
"login-container"> -
"title">用户登录
-
""> -
"text" v-model="username" placeholder="登录账号" autocomplete="off"> -
-
""> -
"password" v-model="password" placeholder="登录密码" autocomplete="off"> -
-
-
"primary" style="width:100%;" @click="doSubmit()">提交 -
-
"text-align: center;margin-top:-10px"> -
"primary">忘记密码 -
"primary" @click="gotoRegister()">用户注册 -
-
-
-
- import axios from 'axios'
- import qs from 'qs'
- export default {
- name: 'Login',
- data () {
- return {
- username:'',
- password:''
- }
- },methods:{
- gotoRegister(){
- this.$router.push('Register');
- },
- doSubmit(){
- let url =this.axios.urls.SYSTEM_USER_DOLOGIN;
- let params = {
- username:this.username,
- password:this.password
- }
- // axios.get(url,{params:params}).then(r=>{
- // console.log(r);
- // if(r.data.success){
- // this.$message({
- // message:r.data.msg,
- // type: 'success'
- // });
- // }else{
- // this.$message.error(r.data.msg);
- // }
- // }).catch(e=>{
-
- // })
-
- this.axios.post(url,params).then(r=>{
- console.log(r);
- this.$message({
- message:r.data.msg,
- type: r.data.success == 0 ? 'success' : 'error'
- });
- this.$router.push('/AppMain');
- }).catch(e=>{
-
- })
- }
- }
- }
-
-
- .login-wrap {
- box-sizing: border-box;
- width: 100%;
- height: 100%;
- padding-top: 10%;
- background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjEzNjFweCIgaGVpZ2h0PSI2MDlweCIgdmlld0JveD0iMCAwIDEzNjEgNjA5IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgogICAgPCEtLSBHZW5lcmF0b3I6IFNrZXRjaCA0Ni4yICg0NDQ5NikgLSBodHRwOi8vd3d3LmJvaGVtaWFuY29kaW5nLmNvbS9za2V0Y2ggLS0+CiAgICA8dGl0bGU+R3JvdXAgMjE8L3RpdGxlPgogICAgPGRlc2M+Q3JlYXRlZCB3aXRoIFNrZXRjaC48L2Rlc2M+CiAgICA8ZGVmcz48L2RlZnM+CiAgICA8ZyBpZD0iQW50LURlc2lnbi1Qcm8tMy4wIiBzdHJva2U9Im5vbmUiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj4KICAgICAgICA8ZyBpZD0i6LSm5oi35a+G56CB55m75b2VLeagoemqjCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTc5LjAwMDAwMCwgLTgyLjAwMDAwMCkiPgogICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMjEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDc3LjAwMDAwMCwgNzMuMDAwMDAwKSI+CiAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtMTgiIG9wYWNpdHk9IjAuOCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzQuOTAxNDE2LCA1NjkuNjk5MTU4KSByb3RhdGUoLTcuMDAwMDAwKSB0cmFuc2xhdGUoLTc0LjkwMTQxNiwgLTU2OS42OTkxNTgpIHRyYW5zbGF0ZSg0LjkwMTQxNiwgNTI1LjE5OTE1OCkiPgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLTExIiBmaWxsPSIjQ0ZEQUU2IiBvcGFjaXR5PSIwLjI1IiBjeD0iNjMuNTc0ODc5MiIgY3k9IjMyLjQ2ODM2NyIgcng9IjIxLjc4MzA0NzkiIHJ5PSIyMS43NjYwMDgiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0zIiBmaWxsPSIjQ0ZEQUU2IiBvcGFjaXR5PSIwLjU5OTk5OTk2NCIgY3g9IjUuOTg3NDY0NzkiIGN5PSIxMy44NjY4NjAxIiByeD0iNS4yMTczOTEzIiByeT0iNS4yMTMzMDk5NyI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zOC4xMzU0NTE0LDg4LjM1MjAyMTUgQzQzLjg5ODQyMjcsODguMzUyMDIxNSA0OC41NzAyMzQsODMuNjgzODY0NyA0OC41NzAyMzQsNzcuOTI1NDAxNSBDNDguNTcwMjM0LDcyLjE2NjkzODMgNDMuODk4NDIyNyw2Ny40OTg3ODE2IDM4LjEzNTQ1MTQsNjcuNDk4NzgxNiBDMzIuMzcyNDgwMSw2Ny40OTg3ODE2IDI3LjcwMDY2ODgsNzIuMTY2OTM4MyAyNy43MDA2Njg4LDc3LjkyNTQwMTUgQzI3LjcwMDY2ODgsODMuNjgzODY0NyAzMi4zNzI0ODAxLDg4LjM1MjAyMTUgMzguMTM1NDUxNCw4OC4zNTIwMjE1IFoiIGlkPSJPdmFsLTMtQ29weSIgZmlsbD0iI0NGREFFNiIgb3BhY2l0eT0iMC40NSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02NC4yNzc1NTgyLDMzLjE3MDQ5NjMgTDExOS4xODU4MzYsMTYuNTY1NDkxNSIgaWQ9IlBhdGgtMTIiIHN0cm9rZT0iI0NGREFFNiIgc3Ryb2tlLXdpZHRoPSIxLjczOTEzMDQzIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNDIuMTQzMTcwOCwyNi41MDAyNjgxIEw3LjcxMTkwMTYyLDE0LjU2NDA3MDIiIGlkPSJQYXRoLTE2IiBzdHJva2U9IiNFMEI0QjciIHN0cm9rZS13aWR0aD0iMC43MDI2Nzg5NjQiIG9wYWNpdHk9IjAuNyIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIiBzdHJva2UtZGFzaGFycmF5PSIxLjQwNTM1Nzg5OTg3MzE1MywyLjEwODAzNjk1MzQ2OTk4MSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02My45MjYyMTg3LDMzLjUyMTU2MSBMNDMuNjcyMTMyNiw2OS4zMjUwOTUxIiBpZD0iUGF0aC0xNSIgc3Ryb2tlPSIjQkFDQUQ5IiBzdHJva2Utd2lkdGg9IjAuNzAyNjc4OTY0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIHN0cm9rZS1kYXNoYXJyYXk9IjEuNDA1MzU3ODk5ODczMTUzLDIuMTA4MDM2OTUzNDY5OTgxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjYuODUwOTIyLCAxMy41NDM2NTQpIHJvdGF0ZSgzMC4wMDAwMDApIHRyYW5zbGF0ZSgtMTI2Ljg1MDkyMiwgLTEzLjU0MzY1NCkgdHJhbnNsYXRlKDExNy4yODU3MDUsIDQuMzgxODg5KSIgZmlsbD0iI0NGREFFNiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLTQiIG9wYWNpdHk9IjAuNDUiIGN4PSI5LjEzNDgyNjUzIiBjeT0iOS4xMjc2ODA3NiIgcng9IjkuMTM0ODI2NTMiIHJ5PSI5LjEyNzY4MDc2Ij48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOC4yNjk2NTMxLDE4LjI1NTM2MTUgQzE4LjI2OTY1MzEsMTMuMjE0MjgyNiAxNC4xNzk4NTE5LDkuMTI3NjgwNzYgOS4xMzQ4MjY1Myw5LjEyNzY4MDc2IEM0LjA4OTgwMTE0LDkuMTI3NjgwNzYgMCwxMy4yMTQyODI2IDAsMTguMjU1MzYxNSBMMTguMjY5NjUzMSwxOC4yNTUzNjE1IFoiIGlkPSJPdmFsLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMTM0ODI3LCAxMy42OTE1MjEpIHNjYWxlKC0xLCAtMSkgdHJhbnNsYXRlKC05LjEzNDgyNywgLTEzLjY5MTUyMSkgIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTE0IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyMTYuMjk0NzAwLCAxMjMuNzI1NjAwKSByb3RhdGUoLTUuMDAwMDAwKSB0cmFuc2xhdGUoLTIxNi4yOTQ3MDAsIC0xMjMuNzI1NjAwKSB0cmFuc2xhdGUoMTA2LjI5NDcwMCwgMzUuMjI1NjAwKSI+CiAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtMiIgZmlsbD0iI0NGREFFNiIgb3BhY2l0eT0iMC4yNSIgY3g9IjI5LjExNzY0NzEiIGN5PSIyOS4xNDAyNDM5IiByeD0iMjkuMTE3NjQ3MSIgcnk9IjI5LjE0MDI0MzkiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0yIiBmaWxsPSIjQ0ZEQUU2IiBvcGFjaXR5PSIwLjMiIGN4PSIyOS4xMTc2NDcxIiBjeT0iMjkuMTQwMjQzOSIgcng9IjIxLjU2ODYyNzUiIHJ5PSIyMS41ODUzNjU5Ij48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtMi1Db3B5IiBzdHJva2U9IiNDRkRBRTYiIG9wYWNpdHk9IjAuNCIgY3g9IjE3OS4wMTk2MDgiIGN5PSIxMzguMTQ2MzQxIiByeD0iMjMuNzI1NDkwMiIgcnk9IjIzLjc0MzkwMjQiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0yIiBmaWxsPSIjQkFDQUQ5IiBvcGFjaXR5PSIwLjUiIGN4PSIyOS4xMTc2NDcxIiBjeT0iMjkuMTQwMjQzOSIgcng9IjEwLjc4NDMxMzciIHJ5PSIxMC43OTI2ODI5Ij48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTI5LjExNzY0NzEsMzkuOTMyOTI2OCBMMjkuMTE3NjQ3MSwxOC4zNDc1NjEgQzIzLjE2MTYzNTEsMTguMzQ3NTYxIDE4LjMzMzMzMzMsMjMuMTc5NjA5NyAxOC4zMzMzMzMzLDI5LjE0MDI0MzkgQzE4LjMzMzMzMzMsMzUuMTAwODc4MSAyMy4xNjE2MzUxLDM5LjkzMjkyNjggMjkuMTE3NjQ3MSwzOS45MzI5MjY4IFoiIGlkPSJPdmFsLTIiIGZpbGw9IiNCQUNBRDkiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8ZyBpZD0iR3JvdXAtOSIgb3BhY2l0eT0iMC40NSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTcyLjAwMDAwMCwgMTMxLjAwMDAwMCkiIGZpbGw9IiNFNkExQTYiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0yLUNvcHktMiIgY3g9IjcuMDE5NjA3ODQiIGN5PSI3LjE0NjM0MTQ2IiByeD0iNi40NzA1ODgyNCIgcnk9IjYuNDc1NjA5NzYiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTAuNTQ5MDE5NjA4LDEzLjYyMTk1MTIgQzQuMTIyNjI2ODEsMTMuNjIxOTUxMiA3LjAxOTYwNzg0LDEwLjcyMjcyMiA3LjAxOTYwNzg0LDcuMTQ2MzQxNDYgQzcuMDE5NjA3ODQsMy41Njk5NjA5NSA0LjEyMjYyNjgxLDAuNjcwNzMxNzA3IDAuNTQ5MDE5NjA4LDAuNjcwNzMxNzA3IEwwLjU0OTAxOTYwOCwxMy42MjE5NTEyIFoiIGlkPSJPdmFsLTItQ29weS0yIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjc4NDMxNCwgNy4xNDYzNDEpIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTMuNzg0MzE0LCAtNy4xNDYzNDEpICI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0xMCIgZmlsbD0iI0NGREFFNiIgY3g9IjIxOC4zODIzNTMiIGN5PSIxMzguNjg1OTc2IiByeD0iMS42MTc2NDcwNiIgcnk9IjEuNjE4OTAyNDQiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC0xMC1Db3B5LTIiIGZpbGw9IiNFMEI0QjciIG9wYWNpdHk9IjAuMzUiIGN4PSIxNzkuNTU4ODI0IiBjeT0iMTc1LjM4MTA5OCIgcng9IjEuNjE3NjQ3MDYiIHJ5PSIxLjYxODkwMjQ0Ij48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtMTAtQ29weSIgZmlsbD0iI0UwQjRCNyIgb3BhY2l0eT0iMC4zNSIgY3g9IjE4MC4wOTgwMzkiIGN5PSIxMDIuNTMwNDg4IiByeD0iMi4xNTY4NjI3NSIgcnk9IjIuMTU4NTM2NTkiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjguOTk4NTM4MSwyOS45NjcxNTk4IEwxNzEuMTUxMDE4LDEzMi44NzYwMjQiIGlkPSJQYXRoLTExIiBzdHJva2U9IiNDRkRBRTYiIG9wYWNpdHk9IjAuOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTEwIiBvcGFjaXR5PSIwLjc5OTk5OTk1MiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTA1NC4xMDA2MzUsIDM2LjY1OTMxNykgcm90YXRlKC0xMS4wMDAwMDApIHRyYW5zbGF0ZSgtMTA1NC4xMDA2MzUsIC0zNi42NTkzMTcpIHRyYW5zbGF0ZSgxMDI2LjYwMDYzNSwgNC42NTkzMTcpIj4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbC03IiBzdHJva2U9IiNDRkRBRTYiIHN0cm9rZS13aWR0aD0iMC45NDExNzY0NzEiIGN4PSI0My44MTM1NTkzIiBjeT0iMzIiIHJ4PSIxMS4xODY0NDA3IiByeT0iMTEuMjk0MTE3NiI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMzQuNTk2Nzc0LCAyMy4xMTExMTEpIiBmaWxsPSIjQkFDQUQ5Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGVsbGlwc2UgaWQ9Ik92YWwtNyIgb3BhY2l0eT0iMC40NSIgY3g9IjkuMTg1MzQ3MTgiIGN5PSI4Ljg4ODg4ODg5IiByeD0iOC40NzQ1NzYyNyIgcnk9IjguNTU2MTQ5NzMiPjwvZWxsaXBzZT4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkuMTg1MzQ3MTgsMTcuNDQ1MDM4NiBDMTMuODY1NzI2NCwxNy40NDUwMzg2IDE3LjY1OTkyMzUsMTMuNjE0MzE5OSAxNy42NTk5MjM1LDguODg4ODg4ODkgQzE3LjY1OTkyMzUsNC4xNjM0NTc4NyAxMy44NjU3MjY0LDAuMzMyNzM5MTU2IDkuMTg1MzQ3MTgsMC4zMzI3MzkxNTYgTDkuMTg1MzQ3MTgsMTcuNDQ1MDM4NiBaIiBpZD0iT3ZhbC03Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9nPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0zNC42NTk3Mzg1LDI0LjgwOTY5NCBMNS43MTY2NjA4NCw0Ljc2ODc4OTQ1IiBpZD0iUGF0aC0yIiBzdHJva2U9IiNDRkRBRTYiIHN0cm9rZS13aWR0aD0iMC45NDExNzY0NzEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8ZWxsaXBzZSBpZD0iT3ZhbCIgc3Ryb2tlPSIjQ0ZEQUU2IiBzdHJva2Utd2lkdGg9IjAuOTQxMTc2NDcxIiBjeD0iMy4yNjI3MTE4NiIgY3k9IjMuMjk0MTE3NjUiIHJ4PSIzLjI2MjcxMTg2IiByeT0iMy4yOTQxMTc2NSI+PC9lbGxpcHNlPgogICAgICAgICAgICAgICAgICAgIDxlbGxpcHNlIGlkPSJPdmFsLUNvcHkiIGZpbGw9IiNGN0UxQUQiIGN4PSIyLjc5NjYxMDE3IiBjeT0iNjEuMTc2NDcwNiIgcng9IjIuNzk2NjEwMTciIHJ5PSIyLjgyMzUyOTQxIj48L2VsbGlwc2U+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTM0LjYzMTI0NDMsMzkuMjkyMjcxMiBMNS4wNjM2NjY2Myw1OS43ODUwODIiIGlkPSJQYXRoLTEwIiBzdHJva2U9IiNDRkRBRTYiIHN0cm9rZS13aWR0aD0iMC45NDExNzY0NzEiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgICAgIDxnIGlkPSJHcm91cC0xOSIgb3BhY2l0eT0iMC4zMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTI4Mi41MzcyMTksIDQ0Ni41MDI4NjcpIHJvdGF0ZSgtMTAuMDAwMDAwKSB0cmFuc2xhdGUoLTEyODIuNTM3MjE5LCAtNDQ2LjUwMjg2NykgdHJhbnNsYXRlKDExNDIuNTM3MjE5LCAzMjcuNTAyODY3KSI+CiAgICAgICAgICAgICAgICAgICAgPGcgaWQ9Ikdyb3VwLTE3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNDEuMzMzNTM5LCAxMDQuNTAyNzQyKSByb3RhdGUoMjc1LjAwMDAwMCkgdHJhbnNsYXRlKC0xNDEuMzMzNTM5LCAtMTA0LjUwMjc0MikgdHJhbnNsYXRlKDEyOS4zMzM1MzksIDkyLjUwMjc0MikiIGZpbGw9IiNCQUNBRDkiPgogICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTQiIG9wYWNpdHk9IjAuNDUiIGN4PSIxMS42NjY2NjY3IiBjeT0iMTEuNjY2NjY2NyIgcj0iMTEuNjY2NjY2NyI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0yMy4zMzMzMzMzLDIzLjMzMzMzMzMgQzIzLjMzMzMzMzMsMTYuODkwMDExMyAxOC4xMDk5ODg3LDExLjY2NjY2NjcgMTEuNjY2NjY2NywxMS42NjY2NjY3IEM1LjIyMzM0NDU5LDExLjY2NjY2NjcgMCwxNi44OTAwMTEzIDAsMjMuMzMzMzMzMyBMMjMuMzMzMzMzMywyMy4zMzMzMzMzIFoiIGlkPSJPdmFsLTQiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDExLjY2NjY2NywgMTcuNTAwMDAwKSBzY2FsZSgtMSwgLTEpIHRyYW5zbGF0ZSgtMTEuNjY2NjY3LCAtMTcuNTAwMDAwKSAiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L2c+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC01LUNvcHktNiIgZmlsbD0iI0NGREFFNiIgY3g9IjIwMS44MzMzMzMiIGN5PSI4Ny41IiByPSI1LjgzMzMzMzMzIj48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTQzLjUsODguODEyNjY4NSBMMTU1LjA3MDUwMSwxNy42MDM4NTQ0IiBpZD0iUGF0aC0xNyIgc3Ryb2tlPSIjQkFDQUQ5IiBzdHJva2Utd2lkdGg9IjEuMTY2NjY2NjciPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTcuNSwzNy4zMzMzMzMzIEwxMjcuNDY2MjUyLDk3LjY0NDk3MzUiIGlkPSJQYXRoLTE4IiBzdHJva2U9IiNCQUNBRDkiIHN0cm9rZS13aWR0aD0iMS4xNjY2NjY2NyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBpZD0iUGF0aC0xOSIgc3Ryb2tlPSIjQ0ZEQUU2IiBzdHJva2Utd2lkdGg9IjEuMTY2NjY2NjciIHBvaW50cz0iMTQzLjkwMjU5NyAxMjAuMzAyMjgxIDE3NC45MzU0NTUgMjMxLjU3MTM0MiAzOC41IDE0Ny41MTA4NDcgMTI2LjM2Njk0MSAxMTAuODMzMzMzIj48L3BvbHlsaW5lPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNTkuODMzMzMzLDk5Ljc0NTM4NDIgTDE5NS40MTY2NjcsODkuMjUiIGlkPSJQYXRoLTIwIiBzdHJva2U9IiNFMEI0QjciIHN0cm9rZS13aWR0aD0iMS4xNjY2NjY2NyIgb3BhY2l0eT0iMC42Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwNS4zMzMzMzMsODIuMTM3MjEwNSBMMjM4LjcxOTQwNiwzNi4xNjY2NjY3IiBpZD0iUGF0aC0yNCIgc3Ryb2tlPSIjQkFDQUQ5IiBzdHJva2Utd2lkdGg9IjEuMTY2NjY2NjciPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjY2LjcyMzQyNCwxMzIuMjMxOTg4IEwyMDcuMDgzMzMzLDkwLjQxNjY2NjciIGlkPSJQYXRoLTI1IiBzdHJva2U9IiNDRkRBRTYiIHN0cm9rZS13aWR0aD0iMS4xNjY2NjY2NyI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtNSIgZmlsbD0iI0MxRDFFMCIgY3g9IjE1Ni45MTY2NjciIGN5PSI4Ljc1IiByPSI4Ljc1Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGlkPSJPdmFsLTUtQ29weS0zIiBmaWxsPSIjQzFEMUUwIiBjeD0iMzkuMDgzMzMzMyIgY3k9IjE0OC43NSIgcj0iNS4yNSI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBpZD0iT3ZhbC01LUNvcHktMiIgZmlsbC1vcGFjaXR5PSIwLjYiIGZpbGw9IiNEMURFRUQiIGN4PSI4Ljc1IiBjeT0iMzMuMjUiIHI9IjguNzUiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtNS1Db3B5LTQiIGZpbGwtb3BhY2l0eT0iMC42IiBmaWxsPSIjRDFERUVEIiBjeD0iMjQzLjgzMzMzMyIgY3k9IjMwLjMzMzMzMzMiIHI9IjUuODMzMzMzMzMiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgaWQ9Ik92YWwtNS1Db3B5LTUiIGZpbGw9IiNFMEI0QjciIGN4PSIxNzUuNTgzMzMzIiBjeT0iMjMyLjc1IiByPSI1LjI1Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPC9nPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+);
- /* background-color: #112346; */
- background-repeat: no-repeat;
- background-position: center right;
- background-size: 100%;
- }
-
- .login-container {
- border-radius: 10px;
- margin: 0px auto;
- width: 350px;
- padding: 30px 35px 15px 35px;
- background: #fff;
- border: 1px solid #eaeaea;
- text-align: left;
- box-shadow: 0 0 20px 2px rgba(0, 0, 0, 0.1);
- }
-
- .title {
- margin: 0px auto 40px auto;
- text-align: center;
- color: #505458;
- }
编写main.js
- // The Vue build version to load with the `import` command
- // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
-
- import Vue from 'vue'
- //开发坏境才会引入mockjs
- // process.env.MOCK && require('@/mock')
- import ElementUI from 'element-ui'
- import 'element-ui/lib/theme-chalk/index.css'
- import App from './App'
- import router from './router'
-
- Vue.use(ElementUI)
- Vue.config.productionTip = false
-
- import axios from '@/api/http'
- import VueAxios from 'vue-axios'
-
- Vue.use(VueAxios,axios)
-
- /* eslint-disable no-new */
- new Vue({
- el: '#app',
- router,
- data(){
- return{
- Bus:new Vue()
- }
- },
- components: { App },
- template: '
' - })
测试结果
在表单中增加rules,book两个属性
代码如下:
-
- "Book" style="padding: 30px;">
-
-
"true" class="demo-form-inline"> -
"书籍名称 : "> -
"bookname" placeholder="书籍名称"> -
-
-
"primary" plain @click="onSubmit">查询 -
"primary" plain @click="open">新增 -
-
-
-
"tableData" style="width: 100%"> -
"id" label="书籍ID"> -
"bookname" label="书籍名称"> -
"price" label="书籍价格"> -
"booktype" label="书籍类型"> -
"操作"> - "scope">
-
"mini" @click="open(scope.$index, scope.row)">编辑 -
"mini" type="danger" @click="del(scope.$index, scope.row)">删除 -
-
-
-
- "block" style="padding: 20px;">
-
@size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="page" - background :page-sizes="[10, 20, 30, 40]" :page-size="rows" layout="total, sizes, prev, pager, next, jumper"
- :total="total">
-
-
-
-
"title" :visible.sync="dialogFormVisible" @close="clear"> -
"book" :rules="rules" ref="book"> -
"书籍编号" :label-width="formLabelWidth" prop="id"> -
"book.id" autocomplete="off"> -
-
"书籍名称" :label-width="formLabelWidth" prop="bookname"> -
"book.bookname" autocomplete="off"> -
-
"书籍价格" :label-width="formLabelWidth" prop="price"> -
"book.price" autocomplete="off"> -
-
"书籍类别" :label-width="formLabelWidth" prop="booktype"> -
"book.booktype" placeholder="请选择活动区域"> -
for="t in types" :label="t.name" :value="t.name" :key="'key_'+t.id"> -
-
-
- "footer" class="dialog-footer">
-
@click="dialogFormVisible = false">取 消 -
"danger" @click="dosub">确 定 -
-
-
- export default {
- data() {
- return {
- bookname: '',
- tableData: [],
- rows: 10,
- total: 0,
- page: 1,
- title: '新增窗体',
- dialogFormVisible: false,
- formLabelWidth: '100px',
- types: [],
- book: {
- id: '',
- bookname: '',
- price: '',
- booktype: ''
- },
- rules: {
- bookname: [{
- required: true,
- message: '请输入书籍名称',
- trigger: 'blur'
- }],
- price: [{
- required: true,
- message: '请输入书籍价格',
- trigger: 'blur'
- }],
- booktype: [{
- required: true,
- message: '请输入书籍类型',
- trigger: 'blur'
- }]
- }
- }
- },
- methods: {
- del(idx, row) {
- this.$confirm('此操作将永久删除id为' + row.id + '的数据, 是否继续?', '提示', {
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- type: 'warning'
- }).then(() => {
- let url = this.axios.urls.SYSTEM_BookDEL;
- this.axios.post(url, {
- id: row.id
- }).then(d => {
- console.log(d);
- this.$message({
- type: 'success',
- message: '删除成功!'
- });
- this.query({});
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {
- })
-
- }).catch(() => {
- this.$message({
- type: 'info',
- message: '已取消删除'
- });
-
- });
-
- },
- dosub() {
- this.$refs['book'].validate((valid) => {
- if (valid) {
- let url = this.axios.urls.SYSTEM_BookADD;
- if (this.title == '编辑窗体') {
- url = this.axios.urls.SYSTEM_BookUPD;
- }
- let params = {
- id: this.book.id,
- bookname: this.book.bookname,
- price: this.book.price,
- booktype: this.book.booktype
- }
- this.axios.post(url, params).then(d => {
- console.log(d);
- this.clear();
- this.query({});
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {
-
- })
-
- } else {
- console.log('error submit!!');
- return false;
- }
- });
-
- },
- clear() {
- //初始化窗体
- this.dialogFormVisible = false;
- this.title = '新增窗体';
- this.book = {
- id: '',
- bookname: '',
- price: '',
- booktype: ''
- }
- },
- open(idx, row) {
- //打开窗体的方法
- this.dialogFormVisible = true;
- if (row) {
- this.title = '编辑窗体';
- this.book.id = row.id;
- this.book.bookname = row.bookname;
- this.book.price = row.price;
- this.book.booktype = row.booktype;
- }
- },
- handleSizeChange(r) {
- //当页大小发生变化
- let params = {
- bookname: this.bookname,
- rows: r,
- page: this.page
- }
- // console.log(params)
- this.query(params);
- },
- handleCurrentChange(p) {
- //当前页码大小发生变化
- let params = {
- bookname: this.bookname,
- rows: this.rows,
- page: p
- }
- this.query(params);
- },
- query(params) {
- //获取后台请求书籍数据的地址
- let url = this.axios.urls.SYSTEM_BookList;
- this.axios.get(url, {
- params: params
- }).then(d => {
- console.log(url)
- this.tableData = d.data.rows;
- this.total = d.data.total;
- }).catch(e => {});
- },
- onSubmit() {
- let params = {
- bookname: this.bookname
- }
- console.log(params)
- this.query(params);
- this.bookname = ''
- }
- },
- created() {
- this.query({});
- this.types = [{
- id: 1,
- name: '玄幻'
- }, {
- id: 2,
- name: '动作'
- }, {
- id: 3,
- name: '爱情'
- }, {
- id: 4,
- name: '伦理'
- }, {
- id: 5,
- name: '霸总'
- }];
- }
- }