• Vue 列表 增删改 前端代码


     

    <template>
      <div id="app">
        <el-menu
          :default-active="activeIndex2"
          class="el-menu-demo"
          mode="horizontal"
          background-color="#545c64"
          text-color="#fff"
          active-text-color="#ffd04b"
        >
          <el-menu-item index="1">图书管理</el-menu-item>
        </el-menu>
        <br />
        <el-row>
          <el-col :span="1" class="grid">
            <el-button
              type="success"
              @click="addFlag=true;dialogVisible = true "
              icon="el-icon-circle-plus-outline"
              size="mini"
              round
            >新增</el-button>
          </el-col>
        </el-row>
        <br />
        <el-table
          :data="bookList"
          border
          style=" 100%"
          stripe
          ref="multipleTable"
          tooltip-effect="dark"
        >
          <el-table-column label="序号" type="index" width="80px" align="center">
            <template slot-scope="scope">
              <span>{{(page - 1) * size + scope.$index + 1}}</span>
            </template>
          </el-table-column>
          <el-table-column prop="Name" label="书名"></el-table-column>
          <el-table-column prop="Author" label="作者"></el-table-column>
          <el-table-column prop="Type" label="种类"></el-table-column>
          <el-table-column prop="Count" label="数量"></el-table-column>
          <el-table-column label="编辑" width="100">
            <template slot-scope="scope">
              <el-button type="primary" icon="el-icon-edit" size="mini" @click="editBook(scope.row)">编辑</el-button>
            </template>
          </el-table-column>
          <el-table-column label="删除" width="100">
            <template slot-scope="scope">
              <el-button type="danger" icon="el-icon-delete" size="mini" @click="delBook(scope.row)">删除</el-button>
            </template>
          </el-table-column>
        </el-table>
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="page"
          :page-sizes="[5, 10, 20]"
          :page-size="size"
          style="float:right"
          layout="total, sizes, prev, pager, next, jumper"
          :total="total">
        </el-pagination>
        <el-dialog
          :title="addFlag?'新增图书':'修改图书'"
          style="text-align:left !important"
          :visible.sync="dialogVisible"
          :before-close="handleClose"
        >
          <el-form ref="form" label-width="80px">
            <el-form-item label="书名" style="300px">
              <el-input v-model="book.Name" placeholder="请输入昵称"></el-input>
            </el-form-item>
            <el-form-item label="作者" style="280px">
              <el-input v-model="book.Author" placeholder="请输入作者名"></el-input>
            </el-form-item>
            <el-form-item label="种类" style="230px">
              <el-input v-model="book.Type" placeholder="请输入种类"></el-input>
            </el-form-item>
            <el-form-item label="库存" style="190px">
              <el-input v-model="book.Count" placeholder="请输入库存"></el-input>
            </el-form-item>
          </el-form>
          <span slot="footer" class="dialog-footer">
            <el-button type="success" @click="saveBook()">提交</el-button>
            <el-button type="primary" @click="dialogVisible = false">取消</el-button>
          </span>
        </el-dialog>
        <el-dialog
          title="提示"
          style="text-align:left !important"
          :visible.sync="dialog2Visible"
          :before-close="handleClose"
        >
          <span>你确定要删除这本图书吗?</span>
          <span slot="footer" class="dialog-footer">
            <el-button @click="handleDel()">提交</el-button>
            <el-button type="primary" @click="dialog2Visible = false">取消</el-button>
          </span>
        </el-dialog>
      </div>
    </template>
    
    <script>
    import axios from "axios";
    import qs from "qs";
    export default {
      data() {
        return {
          dialogVisible: false,
          dialog2Visible: false,
          activeIndex2: "1",
          total: 0,
          size: 5,
          page: 1,
          bookList: [],
          book: {},
          addFlag: true,
          curId: ""
        };
      },
      watch:{
        //2.x版本的bug 以前用1.x发现没有 假如现在是第三页,只有一条数据了。将其删除,就没有第三页了。应该跳到第二页展示出5条数据。
        //可是数据没有展示。原因是获取list的时候page参数没有改变。依然是3
          total(){
            if(this.total==(this.page-1)*this.size&& this.total!=0){
              this.page-=1;
              this.getBookList()
            }
          }
        },
      methods: {
        handleClose(done) {
          done();
        },
        handleSizeChange(val){
          this.size = val
          this.getBookList()
        },
        handleCurrentChange(val) {
          this.page = val;
          this.getBookList();
        },
        async getBookList() {
          try {
            let res = await axios.post(
              "http://127.0.0.1:8848/api/v1/book/list",
              qs.stringify({
                page: this.page,
                size: this.size
              })
            );
            this.total = res.data.Data.Total;
            this.bookList = res.data.Data.List;
            
          } catch (e) {
            console.log(e);
          }
        },
        async saveBook() {
          try {
            let res = await axios.post(
              "http://127.0.0.1:8848/api/v1/book/save",
              qs.stringify({
                id: this.book.ID,
                name: this.book.Name,
                type: this.book.Type,
                author: this.book.Author,
                count: this.book.Count
              })
            );
            this.dialogVisible = false;
            this.book = {};
            this.$message({
              message: res.data.Msg,
              type: "success"
            });
            this.getBookList();
          } catch (e) {
            console.log(e);
          }
        },
        delBook(row) {
          this.addFlag = false;
          this.dialog2Visible = true;
          this.curId = row.ID;
        },
        async handleDel() {
          try {
            let res = await axios.post(
              "http://127.0.0.1:8848/api/v1/book/del",
              qs.stringify({
                id: this.curId
              })
            );
            this.curId = "";
            this.dialog2Visible = false;
            this.$message({
              message: res.data.Msg,
              type: "success"
            });
            this.getBookList();
          } catch (e) {
            console.log(e);
          }
        },
        editBook(row) {
          this.book = row;
          this.dialogVisible = true;
          this.addFlag = false;
        }
      },
      mounted() {
        this.getBookList();
      },
    
    
    };
    </script>
    
    <style>
    #app {
      font-family: Helvetica, sans-serif;
      text-align: center;
    }
    </style>
  • 相关阅读:
    BZOJ 5018 [Snoi2017]英雄联盟
    BZOJ 4945 [Noi2017]游戏
    BZOJ4942 [Noi2017]整数
    BZOJ 2427 [HAOI2010]软件安装
    BZOJ 4870 [Shoi2017]组合数问题
    THINKPHP 全局404
    PHP 万能查询代码
    xml Array 相互转化
    JS 倒计时计算
    PHP 多态
  • 原文地址:https://www.cnblogs.com/hailexuexi/p/14924284.html
Copyright © 2020-2023  润新知