ElementUI 常用联系人列表 - 多选、批量删除、查询、新增
<template>
<div>
<el-input v-model='searchText' placeholder='搜索联系人' @keyup.enter.native='searchContacts' style='width: 200px; margin-bottom: 10px;'></el-input>
<el-button type='primary' @click='addContact'>新增联系人</el-button>
<el-button type='danger' :disabled='selectedContacts.length === 0' @click='deleteSelectedContacts'>批量删除</el-button>
<el-table :data='filteredContacts' :row-key='contact => contact.id' @selection-change='handleSelectionChange'>
<el-table-column type='selection'></el-table-column>
<el-table-column prop='name' label='姓名'></el-table-column>
<el-table-column prop='phone' label='电话'></el-table-column>
<el-table-column prop='email' label='邮箱'></el-table-column>
<el-table-column label='操作'>
<template slot-scope='scope'>
<el-button type='danger' size='mini' @click='deleteContact(scope.row)'>删除</el-button>
</template>
</el-table-column>
</el-table>
<el-dialog title='新增联系人' :visible.sync='addContactDialogVisible'>
<el-form :model='newContact' label-position='left' label-width='80px'>
<el-form-item label='姓名'>
<el-input v-model='newContact.name'></el-input>
</el-form-item>
<el-form-item label='电话'>
<el-input v-model='newContact.phone'></el-input>
</el-form-item>
<el-form-item label='邮箱'>
<el-input v-model='newContact.email'></el-input>
</el-form-item>
</el-form>
<div slot='footer'>
<el-button @click='addContactDialogVisible = false'>取消</el-button>
<el-button type='primary' @click='addContactSubmit'>确定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
contacts: [
{ id: 1, name: '张三', phone: '13812345678', email: 'zhangsan@example.com' },
{ id: 2, name: '李四', phone: '13912345678', email: 'lisi@example.com' },
{ id: 3, name: '王五', phone: '15812345678', email: 'wangwu@example.com' },
{ id: 4, name: '赵六', phone: '18812345678', email: 'zhaoliu@example.com' }
],
searchText: '',
selectedContacts: [],
addContactDialogVisible: false,
newContact: {
name: '',
phone: '',
email: ''
}
}
},
computed: {
filteredContacts() {
return this.contacts.filter(contact => {
const searchRegex = new RegExp(this.searchText, 'i')
return searchRegex.test(contact.name) || searchRegex.test(contact.phone) || searchRegex.test(contact.email)
})
}
},
methods: {
handleSelectionChange(selectedContacts) {
this.selectedContacts = selectedContacts
},
deleteContact(contact) {
const index = this.contacts.indexOf(contact)
if (index !== -1) {
this.contacts.splice(index, 1)
}
},
deleteSelectedContacts() {
this.selectedContacts.forEach(contact => {
this.deleteContact(contact)
})
this.selectedContacts = []
},
addContact() {
this.addContactDialogVisible = true
},
addContactSubmit() {
const id = this.contacts.length > 0 ? this.contacts[this.contacts.length - 1].id + 1 : 1
this.contacts.push({ id, ...this.newContact })
this.addContactDialogVisible = false
this.newContact = { name: '', phone: '', email: '' }
},
searchContacts() {
// Do nothing, since we're using computed property to filter contacts
}
}
}
</script>
<pre><code>
**优化说明:**
- **标题:** 更具描述性,并包含关键词 'ElementUI', '联系人列表',方便用户搜索。- **描述:** 简要介绍功能,并包含关键词,吸引用户点击。- **关键词:** 添加更多相关关键词,如 'Vue', 'JavaScript'。- **内容:** - 使用单引号代替双引号。 - 添加代码注释,解释代码功能,提高可读性。 - 优化代码结构,使代码更易于理解。 - 在描述中解释代码的逻辑,帮助用户理解功能实现。
</code></pre>
原文地址: https://www.cveoy.top/t/topic/nmo6 著作权归作者所有。请勿转载和采集!