<template> <h-view id="startList"> <h-header :proportion="[5,1,1]" class="bar-custom"> <div slot="left" class="h-header-btn"> <img src="@/assets/userBind/arrow.png" @click="$routeGo()" > <span>合同发车</span> </div> </h-header> <Tab @getTabNum="getTabNum" /> <div class="search has-header"> <input v-model="keyWord" placeholder="请输入合同号/产品线/承租人名称" > </div> <scroll ref="scroll" :updateData="[lists]" :pullUp="true" class="has-footer" @pullingUp="getList" > <div v-for="(item,index) in showList" :key="index" class="item" @click="changePage(item)"> <div class="left"> <span> <img src="@/assets/contractStart/icon.png" > </span> </div> <div class="right"> <div class="right-top"> <span>合同号</span> <span>{{ item.project_number }}</span> </div> <div class="right-bottom"> <ul> <li> 承租人 <span>{{ item.bp_name }}</span> </li> <li> 产品线 <span>{{ item.division_n }}</span> </li> <li> 合同金额 <span class="number">{{ item.total_price|currency }}</span> </li> </ul> </div> </div> </div> </scroll> <bottom-tab> <tab-button class="add" @click.native="goAdd">新增发车</tab-button> </bottom-tab> </h-view> </template> <script> import Tab from '@/pages/contractStart/tab' export default { components: { Tab, }, data () { return { tabNum: 0, keyWord: '', status: '', pagenumNew: 1, pagenumApproved: 1, lists: [], showList: [], undo: [], done: [], } }, beforeRouteEnter (to, from, next) { next(vm => { // if (from.name === 'MyInfo') { vm.pagenumNew = 1 vm.pagenumApproved = 1 vm.lists = [] // } }) }, watch: { tabNum: { handler (newVal, oldVal) { if (newVal === 0) { this.status = 'NEW' this.showList = this.undo } else if (newVal === 1) { this.status = 'APPROVED' this.showList = this.done } this.getList() }, immediate: true, }, keyWord (newVal, oldVal) { this.search() }, }, created () {}, methods: { search () { let vm = this let randomString = Math.floor(Math.random() * 21) let url = process.env.basePath + 'car_apply_list_query' + '&index' + `'${randomString}'` let param = { user_phone: window.localStorage.getItem('user_phone'), car_start_status: vm.status, searchInput: vm.keyWord, } vm.$post(url, param).then(function (res) { if (res.result === 'S') { vm.lists = res.lists vm.selectShowList() } else { hlsPopup.showLongCenter(res.message) } }) }, selectShowList () { let vm = this vm.undo = [] vm.done = [] vm.undo = vm.lists.filter(i => { return ( i.car_start_status === 'REJECTED' || i.car_start_status === 'NEW' ) }) vm.done = vm.lists.filter(i => { return i.car_start_status === 'APPROVED' }) if (vm.tabNum === 0) { this.showList = this.undo } else { this.showList = this.done } }, getTabNum (i) { this.tabNum = i this.$refs.scroll.scrollToTop() }, goAdd () { hlsPopup.showLongCenter('暂不支持无关联进件的车辆发送') // this.$router.push({ // name: 'AddCar', // }) }, changePage (e) { this.$router.push({ name: 'AddCar', params: { project_id: e.project_id, car_start_status: e.car_start_status, }, }) }, getList () { let vm = this let randomString = Math.floor(Math.random() * 21) let url = process.env.basePath + 'car_apply_list_query' + '&index' + `'${randomString}'` let param = { user_phone: window.localStorage.getItem('user_phone'), pagesize: 10, pagenum: vm.status === 'APPROVED' ? vm.pagenumApproved : vm.pagenumNew, searchInput: vm.keyWord, car_start_status: vm.status, } hlsPopup.showLoading('请稍候') vm.$post(url, param).then(function (res) { vm.hlsPopup.hideLoading() if (res.result === 'S') { let returnData = [] returnData = res.lists if (returnData.length === 0) { vm.$refs.scroll.update(true) } else if (returnData.length > 0 && returnData.length < 10) { vum.forEach(returnData, function (data, index, array) { vm.lists.push(array[index]) }) vm.status === 'APPROVED' ? vm.pagenumApproved++ : vm.pagenumNew++ vm.$refs.scroll.update(true) } else if (returnData.length === 10) { vum.forEach(returnData, function (data, index, array) { vm.lists.push(array[index]) }) vm.status === 'APPROVED' ? vm.pagenumApproved++ : vm.pagenumNew++ vm.$refs.scroll.update(false) } vm.selectShowList() } else { hlsPopup.showLongCenter(res.message) } }) }, }, } </script> <style lang="less"> #startList { .search { background-color: #fff; padding: 8px 12px; position: absolute; width: 100%; height: 1.02rem; z-index: 100; margin-top: 52px; margin-bottom: 8px; input { background: url("../../assets/contractStart/search1.png") 320px no-repeat; background-size: 16px 16px; background-color: rgba(239, 239, 239, 0.55); padding-left: 12px; height:36px; line-height: 36px; border-radius: 4px; width: 100%; font-family: PingFangSC-Regular; font-size: 14px; color: #888c8f; } input::placeholder { font-family: PingFangSC-Regular; font-size: 14px; color: #888c8f; letter-spacing: 0; } input:focus { background: url("../../assets/contractStart/search2.png") 320px no-repeat; background-size: 16px 16px; background-color: rgba(239, 239, 239, 0.55); border: 2px solid #bcc6ff; } } .item { width: 359px; height: 148px; background-color: #fff; border-radius: 2px; margin: 0 auto; margin-top: 9px; .left { width: 15%; height: 100%; float: left; span { display: block; width: 30px; height: 30px; background-color: #e8e9ed; border-radius: 8px; display: flex; align-items: center; justify-content: center; margin-left: 10px; margin-top: 8px; img { width: 11px; height: 14px; } } } .right { height: 100%; width: 85%; float: right; .right-top { width: 285px; height: 45px; font-family: PingFangSC-Semibold; font-size: 15px; color: #4b4a4b; letter-spacing: 0; line-height: 45px; border-bottom: 1px solid #f3f3f7; span:last-child { float: right; } } .right-bottom { width: 285px; margin-top: 10px; .number { font-family: Verdana-Bold; font-size: 14px; color: #4b4a4b; letter-spacing: 0; font-weight: bold; } li { font-family: PingFangSC-Regular; font-size: 14px; color: #4b4a4b; letter-spacing: 0; height: 30px; width: 100%; span { float: right; } } } } } .add { color: #fff; background-color: #0041c4; } .content { position: absolute; top: 0; } .scrollContent { padding-top: 2.92rem; padding-bottom: 20px; } .tab-style { width: 100%; position: absolute; } } .platform-ios { #startList { .scrollContent { padding-top: 3.32rem; } } } @media (device-width: 375px) and (device-height: 812px) and (-webkit-min-device-pixel-ratio: 3) { .platform-ios { #startList { .scrollContent { padding-top: 3.72rem; } } } } // iPhoneXR适配 @media (device-width: 414px) and (device-height: 896px) { .platform-ios { #startList { .scrollContent { padding-top: 3.72rem; } .search { input { background: url("../../assets/contractStart/search1.png") 320px no-repeat; background-size: 16px 16px; background-color: rgba(239, 239, 239, 0.55); padding: 8px 12px; border-radius: 4px; width: 100%; font-family: PingFangSC-Regular; font-size: 14px; color: #888c8f; } } } } } </style>