vue入門(增查改!)

<template><div><!-- 搜索欄 --><el-card id="search"><el-row><el-col :span="20"><el-input v-model="searchModel.name" placeholder="根據名字查詢"></el-input><el-input v-model="searchModel.email" placeholder="根據郵件查詢"></el-input><el-button @click="searchList" type="primary" round icon="el-icon-search">搜索</el-button></el-col><el-col :span="4"><el-button @click="openEditUI(null)" type="primary" icon="el-icon-plus" circle></el-button></el-col></el-row></el-card><!-- 結果列表 --><el-table :data="userList" style="width: 100%"><el-table-column type="index" label="#" width="180"><template slot-scope="scope">{{ (searchModel.pageNo - 1) * searchModel.pageSize + scope.$index + 1 }}</template></el-table-column><el-table-column prop="id" label="用戶id" width="180"></el-table-column><el-table-column prop="name" label="姓名"></el-table-column><el-table-column prop="age" label="年齡"></el-table-column><el-table-column prop="email" label="電子郵件"></el-table-column><el-table-column label="操作"><template slot-scope="scope"><el-button @click="openEditUI(scope.row.id)" type="primary" icon="el-icon-edit" circle></el-button><el-button type="danger" icon="el-icon-delete" circle></el-button></template></el-table-column></el-table><!--  分頁功能 --><el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange":current-page="searchModel.pageNo" :page-sizes="[1, 5, 10, 15]" :page-size="searchModel.pageSize"layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination><!-- 對話框 --><!-- Form --><el-dialog :title="title" :visible.sync="dialogFormVisible"><el-form :model="userForm" :rules="rules"><el-form-item label="名字" :label-width="formLabelWidth"><el-input v-model="userForm.name" autocomplete="off"></el-input></el-form-item><el-form-item label="age" :label-width="formLabelWidth"><el-input v-model="userForm.age" autocomplete="off"></el-input></el-form-item><el-form-item label="email" :label-width="formLabelWidth"><el-input v-model="userForm.email" autocomplete="off"></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="performAction">確 定</el-button></div></el-dialog></div>
</template><script>
import axios from 'axios';
export default {data() {return {title: '添加',userForm: {name: '',age: '',email: ''},dialogFormVisible: false,total: 0,searchModel: {pageNo: 1,pageSize: 5,name: '',email: '',},userList: [],formLabelWidth: '50px', // 設置標簽的寬度rules: {name: [{ required: true, message: '請輸入用戶名', trigger: 'blur' },{ min: 3, max: 5, message: '長度在 3 到 5 個字符', trigger: 'blur' }],},}},methods: {openEditUI(id) {if (id == null) {this.title = "新增用戶";this.userForm = {name: '',age: '',email: ''};} else {this.title = "修改用戶";// 根據id查詢用戶數據axios.get(`/api/sys/demoTable/` + id).then(response => {this.userForm = response.data.data; // 填充編輯數據this.dialogFormVisible = true;}).catch(error => {console.error('獲取編輯數據失敗:', error);});}this.dialogFormVisible = true;},performAction() {if (this.title === '新增用戶') {const newData = {name: this.userForm.name,age: this.userForm.age,email: this.userForm.email};axios.post('/api/sys/demoTable/create', newData).then(response => {if (response.data.code == 1) {this.$message({message: '添加成功',type: 'success'});// 關閉對話框this.dialogFormVisible = false;// 可以更新列表,重新加載數據等操作// 重新加載數據this.getUserList();} else {console.error('數據添加失敗');}}).catch(error => {console.error('添加數據失敗:', error);});} else if (this.title === '修改用戶') {axios.put(`/api/sys/demoTable/update`, this.userForm).then(response => {if (response.data.code === 1) {this.$message({message: '更新成功',type: 'success'});this.dialogFormVisible = false;this.getUserList();} else {console.error('數據更新失敗');}}).catch(error => {console.error('更新數據失敗:', error);});}},// 分頁大小變化handleSizeChange(pageSize) {this.searchModel.pageSize = pageSize;this.getUserList();},// 當前頁碼變化handleCurrentChange(pageNo) {this.searchModel.pageNo = pageNo;this.getUserList();},// 獲取用戶列表getUserList() {axios.get('/api/sys/demoTable/list', { params: this.searchModel }).then(response => {console.log(response);const data = response.data.data;this.userList = data.rows;this.total = data.total;}).catch(error => {console.error('獲取用戶列表失敗:', error);});},searchList() {this.searchModel.pageNo = 1; // 重置頁碼為1,以獲取新的查詢結果// 構建查詢參數const queryParams = {name: this.searchModel.name,email: this.searchModel.email,pageNo: this.searchModel.pageNo,pageSize: this.searchModel.pageSize};// 發送 GET 請求axios.get('/api/sys/demoTable/list', { params: queryParams }).then(response => {const data = response.data.data;this.userList = data.rows;this.total = data.total;}).catch(error => {console.error('獲取用戶列表失敗:', error);});}},mounted() {// 初始化加載用戶列表this.getUserList();}}
</script><style>
#search .el-input {width: 300px;margin-right: 20px;
}
</style>

思路

關于 查詢和分頁的結合分析

1.查詢也就是在頁面上顯示數據,所以用到了分頁。

2. 用Mybatis-plus , 進行分頁用Map返回數據,注意關鍵點pageNo和pageSize,這是前端請求頭請求的數據,后端要返回一個查詢到的結果集和總頁數

    @GetMapping("/list")public R<Map<String, Object>> getAllList(@RequestParam(value = "name", required = false) String name,@RequestParam(value = "email", required = false) String email,@RequestParam(value = "pageNo") Long pageNo,@RequestParam(value = "pageSize") Long pageSize) {

3. 關于 添加和修改的功能結合分析

? ? *? 添加按鈕和修改按鈕,共用一個對話框,用data:title,? 的值區分 兩個請求。

? ?* 添加按鈕:id為null 或 undifined,??

? ? ? 而修改按鈕id :肯定是有值的。

? ?*從而分別為title賦值 ,添加 | 修改,

在起一個方法,if ( 添加==添加?){

添加的請求

} else{

? 修改的請求

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40244.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40244.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40244.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32 FLASH 讀寫數據

1. 《STM32 中文參考手冊》&#xff0c;需要查看芯片數據手冊&#xff0c;代碼起始地址一般都是0x8000 0000&#xff0c;這是存放整個項目代碼的起始地址 2. 編譯信息查看代碼大小&#xff0c;修改代碼后第一次編譯后會有這個提示信息 2.1 修改代碼后編譯&#xff0c;會有提示…

python3.73安裝教程,python3.10安裝教程

大家好&#xff0c;小編來為大家解答以下問題&#xff0c;python3.73安裝教程&#xff0c;python3.10安裝教程&#xff0c;現在讓我們一起來看看吧&#xff01; Python目前已支持所有主流操作系統&#xff0c;在Linux,Unix,Mac系統上自帶Python環境&#xff0c;一般默認裝的是P…

你敢信?代碼小白30min就能搭建一套酷炫級的駕駛艙!

大量研究結果表明&#xff0c;人類通過圖像獲取信息的速度比通過閱讀文字獲取信息的速度要快很多。 近幾年&#xff0c;數據可視化在企業中越發“流行”&#xff0c;將數字以可視化的形式展示&#xff0c;不僅清晰明了地展現企業真正的實力&#xff0c;也能讓管理者快速了解細節…

PG-DBA培訓12:PostgreSQL物理備份與恢復實戰

一、風哥PG-DBA培訓12&#xff1a;PostgreSQL物理備份與恢復實戰 課程目標&#xff1a; 本課程由風哥發布的基于PostgreSQL數據庫的系列課程&#xff0c;本課程屬于PostgreSQL備份恢復與遷移升級階段之PostgreSQL物理備份與恢復實戰&#xff0c;學完本課程可以掌握&#xff1…

Linux6.39 Kubernetes Pod控制器

文章目錄 計算機系統5G云計算第三章 LINUX Kubernetes Pod控制器一、Pod控制器及其功用二.pod控制器有多種類型1.ReplicaSet2.Deployment3.DaemonSet4.StatefulSet5.Cronjob 三、Pod與控制器之間的關系1.Deployment2.SatefulSet1&#xff09;為什么要有headless2&#xff09;為…

gulimall-緩存-緩存使用

文章目錄 前言一、本地緩存與分布式緩存1.1 使用緩存1.2 本地緩存1.3 本地模式在分布式下的問題1.4 分布式緩存 二、整合redis測試2.1 引入依賴2.2 配置信息2.3 測試 三、改造三級分類業務3.1 代碼改造 四、高并發下緩存失效問題4.1 緩存穿透4.2 緩存雪崩4.3 緩存擊穿 五、分布…

C++學習第十二天----指針

1.自動存儲&#xff0c;靜態存儲和動態存儲 c有3種管理數據內存的方式&#xff1a;自動存儲&#xff0c;靜態存儲和動態存儲&#xff08;有時也叫自由存儲空間或堆&#xff09;&#xff1b;C其實還有第4種類型----線程存儲&#xff1b; 第一&#xff0c;自動存儲&#xff0c;在…

Talk | ICCV‘23 HumanMAC:簡潔易拓展的人體動作預測新框架

? 本期為TechBeat人工智能社區第522期線上Talk&#xff01; 北京時間8月16日(周三)20:00&#xff0c;清華大學博士生—陳凌灝的Talk已準時在TechBeat人工智能社區開播&#xff01; 他與大家分享的主題是: “HumanMAC-簡潔易拓展的人體動作預測新框架”&#xff0c;介紹了人體動…

linux 學習————LNMP之分布式部署

目錄 一、概述 二、LNMP環境部署 三、配置nginx 四、 配置php使nginx能夠解析.php 五、配置mysql 六、配置discuz進行登錄論壇訪問測試 一、概述 LNMP代表 Linux、Nginx、MySQL、PHP&#xff0c;是一種常用的服務器架構。它由以下組件組成&#xff1a; Linux&#xff1a;作…

【js】js中apply()、bind()、call()用法

這三個方法的作用基本上相同&#xff0c;用法上有一些不同&#xff0c;下面先對比一下它們的用法&#xff1a; apply&#xff1a;調用一個具有給定 this 值的函數&#xff0c;以及以一個數組&#xff08;或一個類數組對象&#xff09;的形式提供的參數。 語法&#xff1a; ap…

Metasploitable2靶機漏洞復現

一、信息收集 nmap掃描靶機信息 二、弱口令 1.系統弱口令 在Kali Linux中使用telnet遠程連接靶機 輸入賬號密碼msfadmin即可登錄 2.MySQL弱口令 使用mysql -h 靶機IP地址即可連接 3.PostgreSQL弱密碼登錄 輸入psql -h 192.168.110.134 -U postgres 密碼為postgres 輸入\…

每天一個電商API分享:淘寶商品銷量接口,獲取淘寶商品銷售數據(淘寶商品精準銷量、總銷量、月銷量)

開發背景 商品銷量是商家決策的重要參考指標之一。通過淘寶商品銷量接口&#xff0c;商家可以獲取到實時的銷量信息&#xff0c;從而更好地進行庫存管理、供應鏈計劃和市場推廣等決策。 淘寶商品銷量接口可以提供豐富的銷售數據&#xff0c;包括銷售數量、銷售額、銷售渠道等…

unity中導入自定義模型

unity中導入自定義模型 準備軟件步驟1從SoildWorks中導出模型為STEP格式2將STEP格式文件導入到3DS Max中&#xff0c;再導出為FBX格式3將FBX格式導入至unity中 準備軟件 需要SoildWorks、3DS Max和Unity 3D軟件步驟 1從SoildWorks中導出模型為STEP格式 2將STEP格式文件導入到…

【數據結構】 List與順序表及接口的實現

文章目錄 什么是List常見接口介紹線性表順序表順序表接口的實現add在末尾新增元素在 pos 位置新增元素判定是否包含某個元素查找某個元素對應的位置獲取 pos 位置的元素給 pos 位置的元素設為 value刪除第一次出現的關鍵字key獲取順序表的長度清空順序表 順序表的優缺點優點&am…

全面掌握 Jaeger 分布式調用鏈路跟蹤理論和實戰,Go 為所有使用 go-resty 庫發起 HTTP 請求集成鏈路跟蹤 jaeger(附源碼)

全面掌握 Jaeger 分布式調用鏈路跟蹤理論和實戰,Go 為所有使用 go-resty 庫發起 HTTP 請求集成鏈路跟蹤 jaeger(附源碼)。 介紹一個開源的分布式跟蹤系統 Jaeger,首先從理論基礎知識開始學習,將學習如何在 HTTP 請求中集成鏈路跟蹤,以及如何在 GORM 框架實現,最后學習 …

Qt應用開發(基礎篇)——滾屏區域基類 QAbstractScrollArea

一、前言 QAbstractScrollArea滾屏區域抽象類繼承于QFrame&#xff0c;QFrame繼承于QWidget&#xff0c;是QListview(列表瀏覽器)、QTableview(表格瀏覽器)、QTextEdit(文本編輯器)、QTextBrowser(文本瀏覽器)等所有需要滾屏區域部件的抽象基類。 框架類QFrame介紹 QAbstractSc…

java -jar 啟動服務后,關閉命令窗口后服務停止

java -jar 啟動服務后&#xff0c;關閉命令窗口后服務停止 問題&#xff1a;當我們用java -jar命令啟動服務后&#xff0c;只有一直保持Xshell的窗口開啟且正常連接服務器時才能訪問服務&#xff0c;當關閉命令窗口時&#xff0c;服務會停止運行 解決&#xff1a;使用nohup命…

java之juc二

JMM 請你談談對Volatile的理解 Volatile是jvm提供的輕量級的同步機制&#xff08;和synchronized差不多&#xff0c;但是沒有synchronized那么強大&#xff09; 保證可見性不保證原子性禁止指令重排 什么是JMM JMM&#xff1a;java內存模型&#xff0c;不存在的東西&#…

常用Linux命令

常用Linux命令 1. 基本命令 uname -m 顯示機器的處理器架構 uname -r 顯示正在使用的內核版本 dmidecode -q 顯示硬件系統部件 (SMBIOS / DMI) hdparm -i /dev/hda 羅列一個磁盤的架構特性 hdparm -tT /dev/sda 在磁盤上執行測試性讀取操作系統信息 arch 顯示機器的處理器架構…

一.RocketMQ概念

RocketMQ概念 1.概念2.應用場景3.MQ的優點和缺點4.常見MQ對比 1.概念 MQ(Message Queue)&#xff0c;是一種提供消息隊列服務的中間件&#xff0c;也稱為消息中間件&#xff0c;是一套提供了消息生產、存儲、消費全過程API的軟件系統。 RocketMQ是阿里巴巴2016年MQ中間件&…