需求:
利用Vue指令編寫一個簡單的學生管理系統(tǒng)。
要求: 能夠展示學生信息, 能夠?qū)W生信息進行增刪改查
效果:
image
代碼:
<style>
*{
margin: 0;
padding: 0;
}
#app{
width: 800px;
margin: 50px auto;
}
table{
width: 100%;
background: #000;
}
table tr{
background: #fff;
}
table tr input{
width: 100%;
height: 42px;
text-align: center;
}
form{
width: 100%;
height: 30px;
display: flex;
justify-content: space-between;
}
p{
text-align: center;
font-size: 30px;
margin-bottom: 50px;
}
.operate{
width: 100px;
height: 100%;
text-align: center;
}
.operate a{
text-decoration: none;
}
.operate a:first-child{
margin-right: 5px;
}
</style>
<div id="app">
<p>學生信息管理系統(tǒng)</p>
<form v-show="isShow">
<input type="text" placeholder="請輸入序號" v-model="person.id">
<input type="text" placeholder="請輸入姓名" v-model="person.name">
<input type="text" placeholder="請輸入分數(shù)" v-model="person.score">
<input type="submit" value="增加" @click.prevent="add">
<input type="submit" value="查詢" @click.prevent="query">
</form>
<table>
<tr>
<th>序號</th>
<th>姓名</th>
<th>分數(shù)</th>
<th>時間</th>
<th>操作</th>
</tr>
<!--利用v-for指令動態(tài)生成學生信息-->
<tr v-for="(person, index) in persons">
<td><input type="text" v-model="person.id" :disabled="isDisabled"></td>
<td><input type="text" v-model="person.name" :disabled="isDisabled"></td>
<td><input type="text" v-model="person.score" :disabled="isDisabled"></td>
<td><input type="text" :value="person.time | dateFormart" disabled></td>
<td class="operate">
<a href="#" @click.prevent="edit">編輯</a>
<a href="#" @click.prevent="del(index)">刪除</a>
<br>
<a href="#" @click.prevent="toggle">更多操作</a>
</td>
</tr>
</table>
</div>
<script>
// 格式化時間
Vue.filter('dateFormart', function (value, fmstr) {
let date = new Date(value);
let year = date.getFullYear();
let month = date.getMonth() + 1 + '';
let day = date.getDate() + '';
let hour = date.getHours() + '';
let minute = date.getMinutes() + '';
let second = date.getSeconds() + '';
// 如果傳入的時間格式是yyyy-MM-dd, 就只顯示年-月-日
if (fmstr && fmstr === 'yyyy-MM-dd'){
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
}
// 否則就顯示年-月-日 時:分:秒
return `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')} ${hour.padStart(2, '0')}:${minute.padStart(2, '0')}:${second.padStart(2, '0')}`;
});
new Vue({
el: '#app',
data: {
isDisabled: true,
isShow: false,
// 存放學生信息
persons: [{
id: '1',
name: 'zs',
score: '99',
time: Date.now()
},{
id: '2',
name: 'ls',
score: '88',
time: Date.now()
},{
id: '3',
name: 'ww',
score: '77',
time: Date.now()
}],
// 一個臨時記錄學生信息的對象
person: {
id: '',
name: '',
score: ''
}
},
methods: {
// 用于編輯的方法
edit(){
this.isDisabled = !this.isDisabled;
},
// 用于刪除的方法
del(index){
this.persons.splice(index, 1);
},
// 用于更多操作的方法
toggle(){
this.isShow = !this.isShow;
},
// 用于增加學生的方法
add(){
this.person.time = Date.now();
this.persons.push(this.person);
this.person = {
id: '',
name: '',
score: ''
}
},
// 用于查詢信息的方法
query(){
let newPerson = this.persons.filter( (person) => {
if (this.person.score === person.score){
return true;
} else if (this.person.id === person.id){
return true;
} else if (this.person.name === person.name){
return true;
}
});
this.persons = newPerson;
this.person = {
id: '',
name: '',
score: ''
}
}
}
});
</script>