系列教程之element 表格操作帶分頁

App.vue

<template>
  <div>
    <el-card style="margin-top: 20px;">
      <el-table :data="tableData.slice((currentPage-1)*pageSize,currentPage*pageSize)" header-align="center" sortable  align="center">
        <el-table-column label="序號" type="index" min-width="70" header-align="center"></el-table-column>
        <el-table-column prop="typename" label="名稱" header-align="center"  align="center"></el-table-column>
        <el-table-column label="操作" header-align="center"  align="center">
          <template slot-scope="scope">
            <el-button
              size="mini"
              @click="handleEdit(scope.$index, scope.row)">編輯
            </el-button>
            <el-button
              size="mini"
              type="danger"
              @click="handleDelete(scope.$index, scope.row)">刪除
            </el-button>
          </template>
        </el-table-column>
      </el-table>
      <el-pagination
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
        background
        :current-page="currentPage"
        :page-sizes="[10, 20, 30, 40]"
        :page-size="pageSize"
        layout="total, sizes, prev, pager, next, jumper"
        :total="pageTotal">
      </el-pagination>
      <el-dialog title="修改內容" :visible.sync="dialogFormVisible">
        <el-form ref="ruleForm" :model="ruleForm" :rules="rules" label-position="left" label-width="90px">
          <el-form-item label="名稱" prop="typeName">
            <el-input v-model="ruleForm.typename" placeholder=""></el-input>
          </el-form-item>
        </el-form>
        <div slot="footer" class="dialog-footer">
          <el-button @click="dialogFormVisible = false">取 消</el-button>
          <el-button type="primary" @click="modifyUser()">確 定</el-button>
        </div>
      </el-dialog>
    </el-card>
  </div>
</template>


<script>
  export default {
    name: 'FuncModType',
    data () {
      return {
        tableData: [], // 表格數據
        currentPage: 1,  // 當前頁
        pageSize: 10,  //每頁大小
        pageTotal: 0,  //頁數
        dialogFormVisible: false,
        ruleForm : {
          typename: '',
        },
        rules : {
          typename: [{ required: true, message: '請輸入4字', trigger: 'blur' },
            {min: 4, max: 4, message: '長度爲4個字符', trigger: 'blur'}],
        },
        newForm : {}
      }
    },
    mounted() {
      this.allSearch();  // 程序一開始便執行
    },
    methods: {
 
      /* 加載全部數據 */
      allSearch() {
        var data = []
        this.$http
          .post('/test')
          .then(response => {
            console.log(response.data.data.length)
            if (response.data.code == 201 || response.data.code == 202 || response.data.code == 204) {
              this.$message({showClose: true, message: '頁面加載失敗!', type: 'error'});
              return false;
            }
            else{
              withCredentials: true
              for (let i = 0; i < response.data.data.length; i++) {
                var obj = {}
                obj.typename = response.data.data[i].typename
                data[i] = obj
              }
             
              this.tableData = data
              if (response.data.data.length > 0) {
                this.pageTotal = response.data.data.length;
              }
              else {
                this.pageTotal = 0;
              }
            }
          })
          .catch(error => {
            console.log(error)
          })
      },
 
 
      /* 操作--打開修改對話框 */
      handleEdit (index, row) {
        console.log("xxxxx  " +index + "   " + JSON.stringify(row))
        this.ruleForm.index = index + (this.currentPage - 1) * this.pageSize
        this.ruleForm.typename = row.typename  // 當前行的typename
        this.newForm.old = row.typename
        this.dialogFormVisible = true
      },
 
      /* 修改當前列的內容 */
      modifyUser () {
        this.tableData[this.ruleForm.index].typename = this.ruleForm.typename  // 前端的改變
        this.newForm.typename = this.ruleForm.typename
        this.newForm.action = "update"
        this.dialogFormVisible = false
        this.$refs.ruleForm.validate((valid) => {
          if (valid) {  // 傳至數據庫後臺
            this.$axios
              .post('/newType', this.$qs.stringify(this.newForm), {headers: {'Content-Type': "application/x-www-form-urlencoded"}})
              .then(response => {
                withCredentials: true
                if(response.data.code == 200){
                  this.$message({message: '修改《' + this.ruleForm.typename + '》成功!', type: 'success'})
                  return true;
                } else{
                  this.$message({showClose: true, message: '修改《' + this.ruleForm.typename + '》失敗!', type: 'error'});
                  return false;
                }
              })
              .catch(error => {
                console.log(error)
              })
          } else {
            return false;
          }
        })
      },
 
      /* 操作--刪除 */
      handleDelete (index, row) {
        this.$confirm(
          "是否刪除此類別?",
          "確定刪除",
          {
            confirmButtonText: "確定",
            cancelButtonText: "取消",
            type: "warning"
          })
          .then(() => {
            var title = row.typename
            var dform  ={}
            dform["action"] = "delete"
            dform.typename = title
            this.$axios
              .post('/newType', this.$qs.stringify(dform), {headers: {'Content-Type': "application/x-www-form-urlencoded"}})
              .then(response => {
                if(response.data.code == 200) {
                  this.tableData.splice(index + (this.currentPage - 1) * this.pageSize, 1)   // 前端的刪除
                  this.$message({
                    type :"success",
                    message:"刪除成功!"
                  })
                }else if(response.data.code == 202){
                  this.$message({
                    type :"error",
                    message:"該類別下有新聞,無法刪除!"
                  })
                }
              })
              .catch(error => {
                console.log(error)
              })
          })
          .catch(() => {
            this.$message({
              type: "info",
              message: "已取消刪除"
            });
          });
      },
 
      /* 分頁 */
      handleSizeChange (size) {
        this.pagesize = size
      },
 
      /* 分頁 */
      handleCurrentChange (currentPage) {
        this.currentPage = currentPage
      },
 
    }
  }
</script>
 
<style scoped>
 
</style>

關於某列的內容隱藏,可以在 el-form-item 中寫一個 v-if="hide()"

在 methods中,寫一個函數 hide() {} 就可以了

java:

@PostMapping(value = "/test")
public String str() {
	JSONArray ja1 = new JSONArray();
	JSONObject jo1 ;
	for(int i=0; i<15; i++) {
	   jo1 = new JSONObject();
	   jo1.put("typename", "java"+i);
	   ja1.add(jo1);
	}
	JSONObject jo = new JSONObject();
	jo.put("code", 200);
	jo.put("data", ja1);
	
	System.out.println(jo.toString());
	return jo.toString();
}

json格式:

{"code":200,"data":[
    {"typename":"java0"},{"typename":"java1"},{"typename":"java2"},{"typename":"java3"},
    {"typename":"java4"},{"typename":"java5"},{"typename":"java6"},{"typename":"java7"},
    {"typename":"java8"},{"typename":"java9"},{"typename":"java10"},  {"typename":"java11"},
    {"typename":"java12"},{"typename":"java13"},{"typename":"java14"}
]}

結果:

參考:https://blog.csdn.net/slyslyme/article/details/86531495

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