1. 程式人生 > >vue表格讀取資料,搜尋表格、清空搜尋條件

vue表格讀取資料,搜尋表格、清空搜尋條件

用axios請求介面資料,用vue的形式顯示在表格中,搜尋表格中的資料,點按鈕清空搜尋條件

第一:html程式碼

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>宿舍衛生</title>
		<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no">
		<link rel="stylesheet" href="css/mui.min.css">
		<link rel="stylesheet" href="css/style.css">
	</head>

	<body>
		<div id="box">
			<header class="mui-bar mui-bar-nav">
				<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
				<h1 class="mui-title">宿舍衛生列表</h1>
			</header>
			<div class="mui-content">
				<div class="white-bg mb10">
					<div class="search" >
						<form class="search-group">
						    <div class="search-input-row">
						        <label>宿舍樓:</label>
						        <select name="" v-model="searchCriteria.buildId">
						        	<option v-for="build in buildDrop" :value="build.id">{{build.buildName}}</option>
						        </select>
						    </div>
						    <div class="search-input-row">
						        <label>宿舍號:</label>
						        <input v-model="searchCriteria.roomCode" placeholder="宿舍號">
						    </div>
						    <div class="search-input-row">
						        <label>狀態:</label>
						        <select name="" v-model="searchCriteria.situation">
						        	<option value="1">優</option>
					                <option value="2">良</option>
					                <option value="3">中</option>
					                <option value="4">差</option>
						        </select>
						    </div>
						    <div class="search-button-row">
						        <button type="button" class="mui-btn mui-btn-primary" @click="search">搜尋</button>
						        <button type="button" class="mui-btn" @click="clearSearchCriteria">清空</button>
						    </div>
						</form>
					</div>
				</div>
				<div class="mui-clearfix"></div>
				<div class="white-bg">
					<div class="mui-scroll-wrapper" id="pullrefresh">
						<div class="mui-scroll">
						 <div class="table-head">  
				            <table align="center">  
				                <thead>  
				                    <tr>  
				                        <th>院系</th>
										<th>宿舍號</th>
										<th>標準</th>
										<th>狀態</th>
										<th>操作</th>  
				                    </tr>  
				                </thead>  
				                <tbody>
				                	<tr v-for="(tdData,index) in tableData">  
				                        <td>{{tdData.deptNameShort}}</td>
										<td>{{tdData.roomCode}}</td>
										<td>{{tdData.roomType}}</td>
										<td>
											<span class="mui-badge mui-badge-success" v-if="tdData.situation == 1">優</span>
									    	<span class="mui-badge-warning" v-else-if="tdData.situation == 2">良</span>
									    	<span class="mui-badge-warning" v-else-if="tdData.situation == 3">中</span>
									    	<span class="mui-badge mui-badge-danger" v-else-if="tdData.situation == 4">差</span>
									    	<span v-else class="mui-badge">無</span>
										</td>
										<td><button type="button" @click="cookiesRoomCode(tdData)" id="cookiesRoomCode"
											class="mui-btn mui-btn-primary mui-btn-outlined mui-btn-s">檢視</button></td>  
				                    </tr> 
				                </tbody>  
				            </table>  
				        </div>  
				        <div class="loading">下拉載入更多</div>
					 </div>
					</div>
				</div>
			</div>
		</div>

第二:JS部分

<script src="js/vue.js"></script>
		<script src="js/mui.min.js"></script>
		<script src="js/axios.min.js"></script>
		<script src="js/base.js"></script>
		<script type="text/javascript">
			mui.init({
				pullRefresh: {//下拉載入更多
					container: '#pullrefresh',
					down: {
						style:'circle',
						callback: pulldownRefresh
					},
					up: {
						//可選,正在載入狀態時,上拉載入控制元件上顯示的標題內容
						contentrefresh: '正在載入...',
						//可選,請求完畢若沒有更多資料時顯示的提醒內容;
						contentnomore:'沒有更多資料了',
						//必選,重新整理函式
						callback: pullupRefresh
					}
				}	
			});	
//			var pageIndex = 1;//當前頁
//			var totalPage = 3;//總頁數
			
			var page = 1; //當前頁
           
            var totalPage=0;//總頁數
			/**
			* 下拉重新整理具體業務實現
			*/	
			function pulldownRefresh() {
				setTimeout(function() {
					myVue.renderTable();
					console.log('下拉重新整理')
					mui('#pullrefresh').pullRefresh().endPulldownToRefresh(); 
				}, 1500);
			}
			
			/**
			 * 上拉載入具體業務實現
			 */
			function pullupRefresh() {
				if(totalPage == 1){
					mui('#pullrefresh').pullRefresh().disablePullupToRefresh();
				}else{
					setTimeout(function() {
						mui('#pullrefresh').pullRefresh().enablePullupToRefresh();
						mui('#pullrefresh').pullRefresh().endPullupToRefresh((++page > totalPage));
						if(page <= totalPage){
							console.log(page)
							myVue.renderTable(page);
						}
						
					}, 1500);
				}
			}
			var token = localStorage.getItem("token");
            var myVue = new Vue({
                el:'#box',
                data:{
                	buildDrop:[],//獲取樓下拉列表
                	tableData: [],
                	searchCriteria: {
				        buildId: "",
				        roomCode: "",
				        situation: ""
				    },
				    params: {}
                },
                mounted(){
                	this.renderTable();
                	this.getBuildDrop();
                },
                methods:{
                	renderTable(pageIndex) {
//              		var page = 1; 
                		var limit = 10;
                		var params = this.params;
//              		params.page = page;
                		if(pageIndex){
                			params.page = pageIndex;
                		}else{
                			params.page = 1;
                		}
                		params.limit = limit;
		        		axios.get(baseUrl+'wx/health/ssroomhealth/hlist?token='+ token, {
		        			params
						  })
						  .then(function (data) {
						  	console.log(data);
						  	if(data.status==200){
							  	if (data.data.code == 0) {						          
						          totalPage=data.data.page.totalPage;
//						          console.log(myVue.tableData)
						          if(pageIndex){
						          		data.data.page.list.map((elem)=>{
						          			myVue.tableData.push(elem)
						          		})
						          		console.log(myVue.tableData)
			                		}else{
			                			myVue.tableData = data.data.page.list;
			                		}
						        } else {
						          mui.toast(data.data.msg) 
						        }
						    }    
						  })
					   },
					   getBuildDrop(){
							axios.get(baseUrl+"wx/build/build/buildDrop?token="+ token).then(function (data) {
								if(data.status==200){
									if (data.data.code == 0) {
							          myVue.buildDrop = data.data.data;
							        } else {
							          mui.toast(data.data.msg) 
							        }
								}
							})
						},
						search() {
					      myVue.params = {
					        buildId: myVue.searchCriteria.buildId,
					        roomCode: myVue.searchCriteria.roomCode,
					        situation: myVue.searchCriteria.situation
					      };
					      this.renderTable();
					   },
					   clearSearchCriteria() {
					      myVue.params = {
					        buildId: "",
					        roomCode: "",
					        situation: ""
					      };
					      this.renderTable();
					   },
					   cookiesRoomCode(listData){
						  	console.log(listData);
//						  	id:tdData.rid,roomCode:tdData.roomCode
						  	localStorage.setItem("id2",listData.rid);
						  	localStorage.setItem("roomCode2",listData.roomCode);
						  	
//						  	localStorage.setItem("listDatas",listData);
						  	mui.openWindow({
							    url: 'list-details.html', 
							    id:'cookiesRoomCode'
							});
					  }
					    
                	},
            });
		</script>