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

          图书管理前端页面

    1.图书管理页面

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

    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)

    1.2 router/index.js 添加路由


    import Books from '@/views/books/Books'
    export default new Router({
    routes: [
    { path: '/', name: 'Books', component: Books }, // 图书增删改查
    案例
    ]
    })

    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
    1.4 srccomponentsBookEdit.vue 子组件
    })
    },
    // 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>

    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() {
    1.5 src/mian.js 引入ElementUI
    }
    }
    </script>
    <style>
    .elinput {
    220px;
    height: 40px;
    }
    </style>

    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/>'
    })
  • 相关阅读:
    数据结构与算法入门---基本概念
    java 的异常处理
    RESTful API
    数据结构
    错误代码 2003不能连接到MySQL服务器在*.*.*.*(10061)
    MySQL有四种BLOB类型
    如何彻底卸载MySQL
    Mysql 逗号分隔行列转换总结
    如何判断滚动条滚到页面底部并执行事件
    响应式布局之浮动圣杯布局(双飞翼布局)—-自适应宽度布局
  • 原文地址:https://www.cnblogs.com/Aurora-y/p/13898611.html
Copyright © 2011-2022 走看看