| | |
| | | <template> |
| | | <view class="container"> |
| | | <search-bar></search-bar> |
| | | <view class="sort-wrap"> |
| | | <view @click="filterCustom(1)"> |
| | | <text>到店排序</text> |
| | | <text class="iconfont iconjiantouarrow486"></text> |
| | | </view> |
| | | <view @click="filterCustom(2)"> |
| | | <text>卡项排序</text> |
| | | <text class="iconfont iconjiantouarrow486"></text> |
| | | </view> |
| | | <view @click="filterCustom(3)"> |
| | | <text>全部筛选</text> |
| | | <text class="iconfont iconjiantouarrow486"></text> |
| | | </view> |
| | | </view> |
| | | <filter-dropdown ref="filterDropdownEl" :list="filterList" :type="filterType"></filter-dropdown> |
| | | <view class="sort-tab"> |
| | | <text class="sort-tab-item">正式客户</text> |
| | | <text class="sort-tab-item">体验客户</text> |
| | | <text class="sort-tab-item">潜在客户</text> |
| | | <text class="sort-tab-item">潜在客户</text> |
| | | </view> |
| | | <view class="flex justify-between" @click="toDetail"> |
| | | <view class="flex-1 mr-10"> |
| | | <view class="member-list flex align-center" v-for="(item, index) in 15"> |
| | | <text class="first-name" :style="{background: caculateBgcolor(index)}">李</text> |
| | | <view class="flex-1 flex align-center justify-between member-list-con"> |
| | | <view> |
| | | <text>李广</text> |
| | | <text class="ml-10">152****9645</text> |
| | | </view> |
| | | <view> |
| | | <text class="blue">30天未到店</text> |
| | | <text class="iconfont iconarrow-backimg gray"></text> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <indexed-list></indexed-list> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import searchBar from '../../components/searchBar/index.vue'; |
| | | import indexedList from '../../components/indexedList/index.vue'; |
| | | import filterDropdown from '../../components/filterDropdown/index.vue'; |
| | | export default { |
| | | components:{ |
| | | searchBar |
| | | searchBar, |
| | | indexedList, |
| | | filterDropdown |
| | | }, |
| | | data() { |
| | | return { |
| | | |
| | | colors: ['#CCC6B4', '#C0CCB4', '#B4C2CC', '#BEB4CC', '#B4CCBE', '#B4CCCA', '#CCB4C6', '#CCB4B4'], |
| | | filterType: 1, |
| | | filterList: [], |
| | | filter1: ['本月到店次数(由低到高)','本月到店次数(由高到低)','本年到店次数(由低到高)','本年到店次数(由高到低)','本月消费(由高到低)','本月消费(由低到高)','本月消耗(由高到低)','本月消耗(由低到高)'], |
| | | filter2: ['7天内卡项到期','15天内卡项到期','30天内卡项到期'], |
| | | filter3: [{ |
| | | title: '到店途径', |
| | | list: [ |
| | | { |
| | | 'title': '美团预约', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '网络预约', |
| | | 'value': '' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | title: '会员等级', |
| | | list: [ |
| | | { |
| | | 'title': '一级会员', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '二级会员', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '三级会员', |
| | | 'value': '' |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | title: '活跃度', |
| | | list: [ |
| | | { |
| | | 'title': '活跃', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '不活跃', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '睡眠', |
| | | 'value': '' |
| | | }, |
| | | { |
| | | 'title': '沉睡', |
| | | 'value': '' |
| | | } |
| | | ] |
| | | }] |
| | | }; |
| | | }, |
| | | onHide(){ |
| | | this.$refs.filterDropdownEl.hide(); |
| | | }, |
| | | methods:{ |
| | | |
| | | caculateBgcolor(index){ |
| | | return this.colors[index%8]; |
| | | }, |
| | | toDetail(){ |
| | | uni.navigateTo({ |
| | | url:'./detail' |
| | | }) |
| | | }, |
| | | filterCustom(type){ |
| | | this.$refs.filterDropdownEl.show(); |
| | | if(type===1){ |
| | | this.filterList = this.filter1; |
| | | this.filterType = 1; |
| | | } else if(type===2){ |
| | | this.filterList = this.filter2; |
| | | this.filterType = 1; |
| | | } else { |
| | | this.filterList = this.filter3; |
| | | this.filterType = 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | <style scoped> |
| | | .container{ |
| | | padding: 0 10px; |
| | | padding: 10px 10px 0; |
| | | } |
| | | .sort-wrap{ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | font-size: 14px; |
| | | } |
| | | .sort-wrap .iconfont{ |
| | | font-size: 14px; |
| | | color: #999; |
| | | padding-left: 3px; |
| | | } |
| | | .sort-tab{ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | margin: 10px 0; |
| | | } |
| | | .sort-tab-item{ |
| | | border:1px solid #EDEAF4; |
| | | font-size: 14px; |
| | | color: #ABB1CC; |
| | | padding: 3px 10px; |
| | | border-radius: 4px; |
| | | box-shadow: 3px 3px 5px #EEEEEE; |
| | | } |
| | | .sort-tab-item.active{ |
| | | border: 1px solid #518EFF; |
| | | color: #518EFF; |
| | | } |
| | | .first-name{ |
| | | display: inline-block; |
| | | width: 38px; |
| | | height: 38px; |
| | | line-height: 38px; |
| | | margin-right: 10px; |
| | | border-radius: 50%; |
| | | text-align: center; |
| | | color: #FFFFFF; |
| | | } |
| | | .member-list{ |
| | | font-size: 15px; |
| | | } |
| | | .member-list-con{ |
| | | padding: 20px 0 20px 5px; |
| | | border-bottom: 1px solid #EDEAF4; |
| | | } |
| | | </style> |