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("/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)

    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 '@/views/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 {
     150 px;
    border: solid 1 px 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() {
    
    },
    }
    </script>
    <style>
    .elinput {
     220 px;
    height: 40 px;
    }
    </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
    //使用 element UI
    //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/>'
    })
  • 相关阅读:
    linux驱动开发学习一:创建一个字符设备
    如何高效的对有序数组去重
    找到缺失的第一个正整数
    .NET不可变集合已经正式发布
    中国人唯一不认可的成功——就是家庭的和睦,人生的平淡【转】
    自己动手搭建 MongoDB 环境,并建立一个 .NET HelloWorld 程序测试
    ASP.NET MVC 中如何用自定义 Handler 来处理来自 AJAX 请求的 HttpRequestValidationException 错误
    自己动手搭建 Redis 环境,并建立一个 .NET HelloWorld 程序测试
    ServiceStack 介绍
    一步一步实战扩展 ASP.NET Route,实现小写 URL、个性化 URL
  • 原文地址:https://www.cnblogs.com/shensy/p/13899405.html
Copyright © 2011-2022 走看看