zoukankan      html  css  js  c++  java
  • 图书管理页面

    1.图书管理页面

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

    /* eslint-disable */
    import { get, post, put, del } from './index'
    
    // 图书管理接口
    export const getBookList = (params, headers) => get("/books/book/", params, headers)
    export const addBook = (params, headers) => post("/books/book/", params, headers)
    export const editBook = (params, headers) => put("/books/book/", params, headers)
    export const delBook = (params, headers) => del("/books/book/", params, headers)
    View Code

    1.2 router/index.js 添加路由

    import Vue from 'vue'
    import Router from 'vue-router'
    
    import Books from '@/views/books/Books'
    
    Vue.use(Router)
    
    export default new Router({
      mode: 'history',
      routes: [ 
        { path: '/books', name: 'Books', component: Books },
      ]
    })
    router/index.js

    1.3 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 '@/components/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判断是更新还是新增
                debugger
                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>
    srcviewsooksBooks.vue

    1.4 srccomponentsBookEdit.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>
    srccomponentsBookEdit.vue

    1.5 src/mian.js 引入ElementUI

    // 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'
    import App from './App'
    import router from './router'
    
    Vue.config.productionTip = false
    
    // 使用 elementui
    // npm i element-ui -S 安装到当前项目
    import ElementUI from 'element-ui'
    import 'element-ui/lib/theme-chalk/index.css'
    Vue.use(ElementUI)
    
    
    /* eslint-disable no-new */
    new Vue({
      el: '#app',
      router,
      components: { App },
      template: '<App/>'
    })
    src/mian.js
  • 相关阅读:
    c++中 . 和 -> 的区别是什么?
    codeblocks中一个简单的程序的创建。
    将牛客中的代码在codeblocks中进行实现
    (全代码)输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)
    解决You are using pip version 10.0.1, however version 18.1 is available. You should consider upgrading via the 'python -m pip install --upgrade pip' command.
    mysql 表复制(表备份)
    Scrapy 抓取股票行情
    去哪儿网数据爬取
    用API爬取天气预报数据
    爬虫防封IP
  • 原文地址:https://www.cnblogs.com/pythonqwertytre/p/13899556.html
Copyright © 2011-2022 走看看