• 图书管理系统前端


    在http/apis.js/添加后端请求路由

    /* eslint-disable */
    import { head } from 'shelljs'
    import{get,post,put,del} from './index'
    
    
    //用户登录
    export const login = (params, headers) => post("/login/", params, headers)
    
    //书籍管理接口
    export const getBookList=(params,headers)=>get("/book/",params,headers)
    export const addBook=(params,headers)=>post("/book/",params,headers)
    export const editBook=(params,headers)=>put('/book/',params,headers)
    export const delBook = (params, headers) => del("/book/", params, headers)
    

    router/index.js 添加路由

    import Books from '@/views/books/Books'
     //图书增删改查案例
        {
          path: '/books',
          name: 'Books',
          component: Books
        },
    

    srcviewsooksBooks.vue 这里是父组件

    <template>
    	<div>
    		<h1>图书管理系统</h1>
    		<div style="margin: 30px;">
    			<button @click="addNew">新增图书</button>
    			<BookEdit
    				v-show='dialogVisible'
    				:visible.sync='dialogVisible'
    				:data='editData'
    				@save='save'
    			></BookEdit>
    		</div>
    		<div>
    			<table style='margin: auto; border: solid 1px black;'>
    				<tr>
    					<th>图书编号</th>
    					<th>图书名字</th>
    					<th>出版时间</th>
    					<th>阅读数</th>
    					<th>评论数</th>
    					<th>操作</th>
    					</tr>
    				<tr v-for="(book, index) in books" :key="book.id">
    
    
    					<td>{{book.id}}</td>
    					<td>{{book.btitle}}</td>
    					<td>{{book.bpub_date}}</td>
    					<td>{{book.bread}}</td>
    					<td>{{book.bcomment}}</td>
    					<td>
    						<button @click="edit(index)">修改</button>
    						<button @click="del(index)">删除</button>
    					</td>
    				</tr>
    			</table>
    		</div>
    	</div>
    </template>
    <script>
    import { getBookList, addBook, editBook, delBook } from '@/http/apis'
    import BookEdit from '@/views/books/BookEdit'
    export default {
    	components: {
    		BookEdit
    	},
    	data() {
    		return {
    			dialogVisible: false,
    			books: [
    				{ id: 3, btitle: "...", bpub_date: "2020-08-11", bread: 100, bcomment: 50
    		}
    			],
    			editData: { // 编辑的内容
    				btitle: "",
    				bpub_date: "",
    				bread: 0,
    				bcomment: 0
    			}
    		}
    	},
    	methods: {
    		// 1.点击新增图书时初始化数据
    		addNew() {
    			this.editData = { // 初始化 编辑内容
    				btitle: "",
    				bpub_date: "",
    				bread: 100,
    				bcomment: 0
    			}
    			this.dialogVisible = true // 显示弹框
    		},
    		// 2.获取图书列表
    		get() {
    			getBookList().then((data) => {
    				// console.log(data)
    				// books: [{btitle: "西游记", bpub_date: "2020-08-11", bread: 100,bcomment: 50}]
    				this.books = data.books
    			})
    		},
    		// 3.修改或者添加图书
    		save() {
    			// 根据editData中的id判断是更新还是新增
    			
    			console.log(this.editData)
    			if (this.editData.id) {
    				// 如果有id, 修改图书
    				// 修改请求
    				let params = this.editData
    				editBook(params).then((res)=>{
    					console.log(res)
    					this.get()
    				})
    			} else {
    				// 增加图书
    				addBook(this.editData).then((res) => {
    					this.get()
    				})
    			}
    		},
    		// 点击修改弹出修改页面
    		edit(index) {
    			this.editData = JSON.parse(JSON.stringify(this.books[index])) // 复制this.books[index] 的数据
    			// this.editData = this.books[index] //
    			this.dialogVisible = true
    		},
    		// 删除
    		del(index) {
    			let params = {
    				id: this.books[index].id
    			}
    			delBook(params).then((res)=>{
    				console.log(res)
    				this.get()
    			})
    		}
    	},
    	created() {
    		this.get()
    	}
    }
    </script>
    <style>
    table tr td {
    	 150px;
    	border: solid 1px black;
    }
    </style>
    

    srcviewsooksBookEdit.vue 子组件

    <template>
    	<div>
    		<el-dialog
    			title="新增图书"
    			:visible="visible"
    		>
    			<div><span>图书名称:</span>
    				<el-input
    					class='elinput'
    					v-model="data.btitle"
    				></el-input>
    			</div>
    			<div><span>发布日期:</span>
    				<el-input
    					class='elinput'
    					v-model="data.bpub_date"
    				>
    				</el-input>
    			</div>
    			<div><span>阅读量:</span>
    				<el-input
    					class='elinput'
    					v-model="data.bread"
    				></el-input>
    			</div>
    			<div><span>评论量:</span>
    				<el-input
    					class='elinput'
    					v-model="data.bcomment"
    				></el-input>
    			</div>
    			<el-button @click="cancel">取 消</el-button>
    			<el-button
    				type="primary"
    				@click="addBook"
    			>确 定</el-button>
    		</el-dialog>
    	</div>
    </template>
    <script>
    // import { addbook } from '@/http/apis'
    export default {
    	props: ['data', 'visible'],
    	data() {
    		return {
    		}
    	},
    	methods: {
    		addBook() {
    			this.$emit('update:visible', false)
    			this.$emit('save')
    		},
    		cancel() {
    			this.$emit('update:visible', false)
    		}
    	},
    	mounted() {
    	}
    }
    </script>
    <style>
    .elinput {
    	 220px;
    	height: 40px;
    }
    </style>
    

    图书管理系统后端

  • 相关阅读:
    centos7 安装nginx
    mysql
    MySQL的架构体系
    Redis实战之基础入门5种数据类型
    常用的接口限流算法
    大型分布式电商系统架构有哪些
    PHP内存管理机制
    MySQL索引查询原理
    Nginx的骚操作你知道多少?
    使用illuminate/html 提示: Call to undefined method IlluminateFoundationApplication::bindShared()
  • 原文地址:https://www.cnblogs.com/sq1995liu/p/14160542.html
Copyright © 2020-2023  润新知