|
@@ -1,5 +1,19 @@
|
|
<template>
|
|
<template>
|
|
<div class="contact-list">
|
|
<div class="contact-list">
|
|
|
|
+ <div class="searchContainer">
|
|
|
|
+ <div class="search">
|
|
|
|
+ <el-input
|
|
|
|
+ placeholder="搜索"
|
|
|
|
+ v-model="search"
|
|
|
|
+ size="mini"
|
|
|
|
+ :border="false"
|
|
|
|
+ clearable
|
|
|
|
+ />
|
|
|
|
+ <el-button type="primary" round size="mini" @click="onSearch"
|
|
|
|
+ >搜索</el-button
|
|
|
|
+ >
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
<van-list
|
|
<van-list
|
|
v-model="loading"
|
|
v-model="loading"
|
|
:finished="finished"
|
|
:finished="finished"
|
|
@@ -58,6 +72,7 @@ export default {
|
|
name: "contact-list",
|
|
name: "contact-list",
|
|
data() {
|
|
data() {
|
|
return {
|
|
return {
|
|
|
|
+ search: "",
|
|
groupLogo,
|
|
groupLogo,
|
|
teacherLogo,
|
|
teacherLogo,
|
|
list: [],
|
|
list: [],
|
|
@@ -69,10 +84,15 @@ export default {
|
|
this.onLoad();
|
|
this.onLoad();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
|
|
+ onSearch() {
|
|
|
|
+ this.finished = false;
|
|
|
|
+ this.list = [];
|
|
|
|
+ this.onLoad();
|
|
|
|
+ },
|
|
async onLoad() {
|
|
async onLoad() {
|
|
try {
|
|
try {
|
|
this.loading = true;
|
|
this.loading = true;
|
|
- await queryFriendList().then(res => {
|
|
|
|
|
|
+ await queryFriendList({ search: this.search }).then(res => {
|
|
this.list = res.data;
|
|
this.list = res.data;
|
|
this.loading = false;
|
|
this.loading = false;
|
|
this.finished = true;
|
|
this.finished = true;
|
|
@@ -91,6 +111,9 @@ export default {
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="less" scoped>
|
|
<style lang="less" scoped>
|
|
|
|
+.contact-list {
|
|
|
|
+ // position: relative;
|
|
|
|
+}
|
|
.contact-item {
|
|
.contact-item {
|
|
cursor: pointer;
|
|
cursor: pointer;
|
|
&.isHover,
|
|
&.isHover,
|
|
@@ -98,6 +121,28 @@ export default {
|
|
background: #f5f5f5;
|
|
background: #f5f5f5;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+.searchContainer {
|
|
|
|
+ position: sticky;
|
|
|
|
+ top: 0;
|
|
|
|
+ z-index: 99;
|
|
|
|
+ width: 100%;
|
|
|
|
+ padding: 10px;
|
|
|
|
+ background: #fff;
|
|
|
|
+ border-bottom: 1px solid #ebedf0;
|
|
|
|
+ box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.05);
|
|
|
|
+}
|
|
|
|
+.search {
|
|
|
|
+ display: flex;
|
|
|
|
+ background: #f7f7f7;
|
|
|
|
+ border-radius: 40px;
|
|
|
|
+ padding: 3px 5px 3px 0;
|
|
|
|
+ ::v-deep .el-input {
|
|
|
|
+ input {
|
|
|
|
+ border: 0;
|
|
|
|
+ background: transparent;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|
|
.contact-content {
|
|
.contact-content {
|
|
padding-left: 10px;
|
|
padding-left: 10px;
|
|
.username {
|
|
.username {
|