bootStrapTableJs 怎麼引入VUE進行做項目

寫在前面

今天寫一個表格神器,之前我沒有用過,是一個博友問我的時候我去看了一下,覺得很不錯,今天分享一下,只有寫demo,給源碼才能得到你們的心,哎,太難了!

bootStrapTableJs介紹

首先這是一款處理表格的js,我們如果寫element習慣了會發現其實表格的處理是業務中相對簡單的,他沒有什麼很強的交互,就是拿到數據,按照頭部和body對應起來就可以了,更新什麼的也是沒關係的,因爲畢竟可以拿到當前行的數據,調更新接口就可以了,表格能說的就是分頁的操作了,很多的js處理這塊都不是很友好,分頁可以分爲客戶端分頁和服務端分頁,一般相對大一點的項目會服務端分頁,原因也很簡單,每一次拿到的數據都不是很多,都是一頁的數據,我們默認一般是5-20條就不少了,這樣對頁面渲染的壓力也不大,但是如果項目或者數據不是很大的情況下還是建議是客戶端分頁,這樣的好處是減少頁面的請求次數,提升頁面的性能,今天介紹的bootStrapTableJs是一款既可以客戶端分頁也可以服務端分頁的神器,還支持客戶端或者服務端模糊搜索等功能

jQuery+bootStrapTableJs

今天要寫的是vue怎麼使用這個js,所以jQuery的這裏簡單的說一下,就是我們直接新建一個html文件,裏面引入cdn或者自己下載下來的bootStrapTableJs,這裏將jqueryjs引入放前面就可以了,按照文檔寫的就可以了,不寫demo了。有什麼問題的話,可以左側聯繫我

VUE+bootStrapTableJs

首先我們新建一個vue項目,然後安裝bootStrapTableJs

  • 安裝bootStrapTableJs
npm install bootstrap-table 

配圖:
在這裏插入圖片描述

  • 安裝jQuery
npm install jquery

配圖:
在這裏插入圖片描述

  • 安裝bootstrap
npm install bootstrap@3 --save--dev

在這裏插入圖片描述

  • main.js引入js文件
import $ from 'jquery'
import 'bootstrap/dist/css/bootstrap.min.css'
import 'bootstrap/dist/js/bootstrap.min.js'
import 'bootstrap-table/dist/bootstrap-table.min.css'
import 'bootstrap-table/dist/bootstrap-table.min.js'
import 'bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js'

配圖:
在這裏插入圖片描述

因爲我沒有接口,沒辦法直接拿到後端的數據,所以寫了一個mockjs文件,模擬請求接口的情況,這是我的JS文件,您如果有後端數據的話,下面的步驟可以不做

  • mockjs文件
let tabelList = [];
for (let i = 0; i < 1000; ++i) {
  tabelList.push({
    name: "小米" + i,
    sex: i % 2 === 0 ? '男' : '女',
    age: Math.floor(Math.random() * 10) + 20,
    school: "武大",
    company: "alibaba",
    address: "杭州市蕭山區",
    remark:'這是一段備註'
  })
}
const bootstrapTable = {
  code: 200,
  data: {
    tabelList: tabelList,
    rowStyle: rowStyle,
    columns: [{
      field: 'name',
      title: '姓名',
      align: 'center',
    }, {
      field: 'sex',
      title: '性別',
      align: 'center'
    }, {
      field: 'age',
      title: '年齡',
      align: 'center'
    }, {
      field: 'school',
      title: '學校',
      align: 'center'
    }, {
      field: 'company',
      title: '公司',
      align: 'center'
    }, {
      field: 'address',
      title: '住址',
      align: 'center'
    },{
      field: 'option',
      title: '操作',
      align: 'center'
    }]
  },
  msg: '請求成功'
}


function rowStyle(row, index) {
  console.info(row,index)
  if (index % 2 === 0) {
    return {
      css: {
        'background': '#58aef7'
      }
    }
  }
  return {};
}
export default bootstrapTable;

bootstrapTable.vue 實現

<template>
  <div>
    <common-back :currPage='currPage'>
    </common-back>
    <table id="table" ref="table"></table>
  </div>
</template>

<script>
  export default {
    name: "bootStrapTable",
    data() {
      return {
        currPage: this.$route.params.pageFlag,
      }
    },
    mounted() {
      this.gettableInfo()
    },
    methods: {
      /**
       * @function gettableInfo 獲取表格的列和源數據
       */
      gettableInfo() {
        this.$axios.get('api/bootstrapTable.do').then((res) => {
          $('#table').bootstrapTable({
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            pagination: true,  //是否分頁
            //toolbar: '#toolbar',
            detailView: true,  //前面的加號,詳細數據
            singleSelect: true,
            checkbox: true,
            rowStyle: this.rowStyle,
            cellStyle: this.cellStyle,
            clickToSelect: true,
            sortable: true,    //是否排阻
            sortOrder: 'asc',  //正序或者倒序
            pageSize: 5,       //每夜顯示多少條
            striped: true,     //是否斑馬紋
            search: true,      //顯示搜索
            searchText: '',    //搜索默認文字
            strictSearch: false, //是否模糊搜索
            showRefresh: true,   //顯示刷新
            showToggle: true,    //顯示錶格別的樣式
            showPaginationSwitch: true, //顯示分頁功能
            showFullscreen: true,   //是否全屏
            minimumCountColumns: 5,  //最少幾條不顯示分頁
            paginationPreText: '上一頁',  //上一頁
            paginationNextText: '下一頁', //下一頁
            pageList: [5, 10, 15],  //可供選擇的每葉條數
            data: res.data.data.tabelList,  //表格數據
            columns: res.data.data.columns  //表格列數據
          })
        }).catch((error) => {
          console.error(error)
        })

      },
      /**
       * @function rowStyle
       * @param row
       * @param index
       * @returns {{css: {background: string}}|{}}
       */
      rowStyle(row, index) {
        console.info(row, index)
        if (index % 2 === 0) {
          return {
            css: {
              'background': '#58aef7'
            }
          }
        } else {
          return {}
        }
      },
      /**
       * @function cellStyle
       * @param row
       * @param index
       * @returns {{css: {background: string}}|{}}
       */
      cellStyle(row, index) {
        if (index % 2 === 0) {
          return {
            css: {
              'background': '#58aef7'
            }
          }
        } else {
          return {}
        }
      }
    },
  }
</script>
<style scoped>
</style>

這裏說明一下,就是關於上面的請求的事情,bootStrapTableJs本身自帶的就是有請求的,但是他的請求返回的格式如果是JSON的話是可以直接渲染的, 但是我們的一般請求的返回不會直接就是JSON數據的,所以我這裏是將返回的格式單獨列了出來。

  • 配置webpack.base.conf.js
var webpack = require('webpack');
 plugins: [
    new webpack.ProvidePlugin({
      $: "jquery",
      jQuery: "jquery"
    })
  ]

配圖:
在這裏插入圖片描述
在這裏插入圖片描述
效果:
在這裏插入圖片描述

到這裏就基本結束了,可以使用了,具體想實現什麼功能,可以自己根據配置的字段進行添加就可以了。感謝閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章