You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

131 lines
2.6 KiB

<template>
<view class="main">
<view class="top_row">
<view class="row selectAll" @click="chooseAll">
<view class="icon ">
<image src="@/static/images/icon (22).png" mode="" v-if="isAll"></image>
<image src="@/static/images/icon (20).png" mode="" v-else></image>
</view>
<view class="txt">全选</view>
</view>
<view class="searchBox">
<searchRow placeholder="名称/IP过滤" @searchFn="searchFn"/>
</view>
</view>
<view class="card">
<view class="row" v-for="(item,index) in list" :key="index" @click="chooseItem(item)">
<view class="icon">
<image src="@/static/images/icon (20).png" mode="" v-if="(listId.findIndex((val)=>item.id==val))==-1"></image>
<image src="@/static/images/icon (22).png" mode="" v-else></image>
</view>
<view class="txt">{{item.name}}</view>
</view>
</view>
<view class="btnPoz">
<view class="btnBg" @click="chooseMachine"> </view>
</view>
</view>
</template>
<script>
import { machineList } from '@/config/api.js'
export default {
data() {
return {
list: [],
listId: [],
list2: []
}
},
onLoad() {
this.machineListFn()
},
computed: {
isAll() {
if(!this.listId.length) return false
if(this.listId.length==this.list2.length) return true
return false
}
},
methods: {
async machineListFn() {
let obj = {
limit: 10000,
status: 1
}
const {data: res} = await machineList(obj)
this.list = res.rows||[]
this.list2 = res.rows||[]
console.log(res)
},
searchFn(val) {
this.list = this.list2.filter(item=>{
return item.name.includes(val)
})
},
chooseAll() {
if(this.isAll) {
this.listId = []
}else {
this.listId = this.list2.map(item=>item.id)
}
},
chooseItem(val) {
let index = this.listId.findIndex((item)=>item==val.id)
if(index==-1) {
this.listId.push(val.id)
}else {
this.listId.splice(index, 1)
}
console.log(index)
console.log(this.listId)
},
chooseMachine() {
uni.$emit('chooseMachine', this.listId)
uni.navigateBack()
}
}
}
</script>
<style lang="scss" scoped>
.btnPoz {
position: fixed;
bottom: 30rpx;
left: 0;
width: 100%;
padding: 0 32rpx;
}
.top_row {
display: flex;
align-items: center;
padding: 14rpx 30rpx;
background-color: #fff;
font-size: 26rpx;
.selectAll {
width: 130rpx;
}
.searchBox {
flex: 1;
}
}
.row {
align-items: center;
display: flex;
padding: 24rpx 0;
.icon {
width: 32rpx;
height: 32rpx;
}
.txt {
padding: 0 16rpx;
font-size: 26rpx;
}
}
.card {
margin-top: 8rpx;
padding: 30rpx;
}
</style>