<template> <view class="content"> <view class="top"> <view class="topCont"> <view class="carBox"> <image src="../../static/img/nocar.png" mode="" class="carLogo"></image> <view class="carTxt">{{brand_name}}</view> <!-- <image src="../../static/img/jt.png" mode="" class="carJt"></image> --> </view> <view class="vinBox"> <view class="vinBox2"> <view class="vinB">VIN</view> <view class="vinNum">{{vin}}</view> </view> <!-- <view class="vinBox2"> <view class="detail" @click="goCarDetail()">车型详情</view> <image src="../../static/img/icon_arrow_blue_r@2x.png" mode="" style="width: 24rpx; height: 24rpx"></image> </view> --> </view> </view> </view> <view class="mainBox"> <view class="maintitle">{{caption}} <view @click="goback" class="backBox"> <image src="../../static/img/icon_arrow_blue_l@2x.png" mode="" class="backImg"></image> <view class="backTxt">返回总组</view> </view> </view> <view class="searchBox" v-if="lastShow"> <view class="inputBox"> <img src="../../static/img/icon_search.png" alt="" class="searchImg"> <input type="text" placeholder="快速查找子组" class="topInput" v-model="childrenss" @confirm="childrenkeyup"> </view> </view> <view class="mainLine" v-for="(item,index) in childrenList" @click="goThree(item,index)" v-if="lastShow"> <view class="lineLeft"> <image class="lineIMg" :src="item.image_url" v-if="item.image_url" mode=""></image> <image class="lineIMg" src="../../static/img/noimg.png" v-else mode=""></image> </view> <view class="lineRIght"> <view class="lineName">{{item.caption}}</view> <view class="lineBm">{{item.code}}</view> <view class="linejs">{{item.remark}}</view> </view> </view> <view class="mainBox" v-if="restrainShow1"> <view class="mainLine2" v-for="(item,index) in restrainList1" @click="restrainClickOne(item)"> <view class="lineName2">{{item.caption}}</view> <image src="../../static/img/jt.png" mode="" class="mainLineJt"></image> </view> </view> <view class="mainBox" v-if="restrainShow2"> <view class="mainLine2" v-for="(item,index) in restrainList2" @click="restrainClickTwo(item)"> <view class="lineName2">{{item.caption}}</view> <image src="../../static/img/jt.png" mode="" class="mainLineJt"></image> </view> </view> </view> </view> </template> <script> export default { data() { return { vin: '', brand_name: '', access_time: '', zzTime: '', caption: '', param: '', token: '', list: '', restrainShow1: false, restrainList1: '', restrainShow1: false, restrainList1: '', lastShow: false, childrenList: '', oldList: '', childrenss: '', } }, onLoad(opt) { this.vin = opt.vin; this.zzTime = opt.zzTime; this.param = opt.param; this.token = opt.token; this.getData() }, methods: { goback() { console.log('返回'); uni.navigateBack({}) }, restrainClickOne(item) { this.param = item.param; this.token = item.token; if (item.next_restrain == 1) { this.getYsone() } else { this.getYsDlist() } }, restrainClickTwo(item) { this.param = item.param; this.token = item.token; if (item.next_restrain == 1) { this.getYsDlist() } else { this.getYsDlist() } }, getYsDlist() { uni.showLoading({ title: '加载中' }); this.$http('advancedEpc/getSubgroup', { vin: this.vin, access_time: this.access_time, param: this.param, token: this.token }, 'GET').then(res => { uni.hideLoading(); //console.log(res.data.number); if (res.data.number == 200 || res.data.number == 5212) { this.caption = res.data.result.caption; this.brand_name = res.data.result.brand_name; this.access_time = res.data.result.access_time; this.restrainShow2 = false; this.restrainShow1 = false; this.lastShow = true; this.childrenList = res.data.result.list; this.oldList = this.childrenList } else { uni.showToast({ title: res.data.message, icon: 'none', duration: 3000 }); } }); }, getYsone() { uni.showLoading({ title: '加载中' }); this.$http('advancedEpc/getSubgroup', { vin: this.vin, access_time: this.access_time, param: this.param, token: this.token }, 'GET').then(res => { uni.hideLoading(); //console.log(res.data.number); if (res.data.number == 200 || res.data.number == 5212) { this.caption = res.data.result.caption; this.brand_name = res.data.result.brand_name; this.access_time = res.data.result.access_time; if (res.data.result.level_identify == 'group_restrain' || res.data.result.level_identify == 'subgroup') { //约束 console.log("约束2") this.restrainShow2 = true; this.restrainShow1 = false; this.restrainList2 = res.data.result.list; } else { this.lastShow = true; this.childrenList = res.data.result.list; this.oldList = this.childrenList } } else { uni.showToast({ title: res.data.message, icon: 'none', duration: 3000 }); } }); }, getData() { uni.showLoading({ title: '加载中' }); this.$http('advancedEpc/getSubgroup', { vin: this.vin, access_time: this.zzTime, param: this.param, token: this.token }, 'GET').then(res => { uni.hideLoading(); //console.log(res.data.number); if (res.data.number == 200 || res.data.number == 5212) { this.caption = res.data.result.caption; this.brand_name = res.data.result.brand_name; this.access_time = res.data.result.access_time; if (res.data.result.level_identify == 'group_restrain' || res.data.result.level_identify == 'subgroup') { //约束 console.log("约束1") this.restrainShow1 = true; this.restrainList1 = res.data.result.list; } else { this.lastShow = true; this.childrenList = res.data.result.list; this.oldList = this.childrenList } } else { uni.showToast({ title: res.data.message, icon: 'none', duration: 3000 }); } }); }, goCarDetail() { uni.navigateTo({ url: 'CarDetail' }) }, goThree(item, index) { var that = this; uni.setStorage({ key: 'childrenList', data: that.childrenList, success: function() { uni.navigateTo({ url: 'vinDetail?vin=' + that.vin + '&token=' + item.token + '¶m=' + item.param + '&access_time=' + that.access_time + '&tabIndex=' + index }) } }); }, childrenkeyup() { this.childrenList = this.oldList; if (this.childrenss == '') { this.childrenList = this.oldList; } else { this.childrenList = this.query(this.childrenList, this.childrenss, 'caption') } }, query(list, keyWord, attribute = 'caption') { const reg = new RegExp(keyWord) // 创建正则表达式 const arr = [] for (let i = 0; i < list.length; i++) { if (reg.test(list[i][attribute])) { arr.push(list[i]) } } return arr }, } } </script> <style scoped> .searchImg { width: 40rpx; height: 40rpx; margin-top: 16rpx; margin-left: 20rpx; } .searchBox { padding-top: 24rpx; } .inputBox { width: 702rpx; height: 72rpx; background: #F4F5F7; border-radius: 36rpx; margin-left: 24rpx; display: flex; position: relative; } .topInput { font-size: 28rpx; height: 72rpx; line-height: 72rpx; padding-left: 16rpx; width: 500rpx; } .content { background: #F4F5F7; min-height: 100vh; padding-bottom: constant(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom); } .top { padding: 20rpx 0; } .topCont { width: 750rpx; height: 185rpx; background: #FFFFFF; } .carLogo { width: 72rpx; height: 72rpx; } .carTxt { font-size: 28rpx; font-family: PingFangSC-Medium, PingFang SC; font-weight: 500; color: #333333; line-height: 36rpx; width: 606rpx; } .carJt { width: 25rpx; height: 24rpx; margin-top: 6rpx; } .carBox { display: flex; justify-content: space-between; padding: 30rpx 24rpx 24rpx 24rpx; } .vinBox { display: flex; justify-content: space-between; padding-left: 120rpx; padding-right: 24rpx; } .vinBox2 { display: flex; align-items: center; } .detail { color: #3F90F7; font-size: 24rpx; margin-right: 10rpx; } .vinB { background: #F19D01; width: 60rpx; height: 30rpx; text-align: center; line-height: 30rpx; color: #FFFFFF; font-size: 22rpx; border-radius: 5rpx; } .vinNum { color: #999999; font-size: 24rpx; line-height: 30rpx; padding-left: 10rpx; } .mainBox { background: #FFFFFF; } .maintitle { font-size: 28rpx; font-family: PingFangSC-Medium, PingFang SC; font-weight: 500; color: #333333; text-align: center; line-height: 88rpx; border-bottom: 1px solid #EEEEEE; position: relative; } .backImg { width: 25rpx; height: 24rpx; margin-top: 4rpx; } .backBox { display: flex; position: absolute; left: 23rpx; top: 28rpx; } .backTxt { color: #3F90F7; font-size: 24rpx; line-height: 33rpx; } .mainLineJt { width: 25rpx; height: 24rpx; margin-top: 8rpx; } .mainLine { display: flex; border-bottom: 1px solid #EEEEEE; padding: 29rpx 24rpx; } .lineName { font-size: 26rpx; font-family: PingFangSC-Regular, PingFang SC; font-weight: 500; color: #333333; line-height: 40rpx; width: 570rpx; word-wrap: break-word; /*强制换行*/ overflow: hidden; /*超出隐藏*/ text-overflow: ellipsis; /*隐藏后添加省略号*/ white-space: nowrap; /*强制不换行*/ } .mainLine2 { display: flex; justify-content: space-between; border-bottom: 1px solid #EEEEEE; padding: 24rpx; } .lineName2 { font-size: 28rpx; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #333333; line-height: 40rpx; } .lineIMg { width: 100rpx; height: 85rpx; } .lineRIght { padding-left: 20rpx; } .lineBm { font-size: 24rpx; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; padding: 10rpx 0; } .linejs { font-size: 24rpx; font-family: PingFangSC-Regular, PingFang SC; font-weight: 400; color: #999999; width: 570rpx; word-wrap: break-word; /*强制换行*/ overflow: hidden; /*超出隐藏*/ text-overflow: ellipsis; /*隐藏后添加省略号*/ white-space: nowrap; /*强制不换行*/ } </style>