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.
534 lines
12 KiB
534 lines
12 KiB
9 months ago
|
<template>
|
||
|
<view id="page">
|
||
|
<view class="Width100 Box BorderBox">
|
||
|
<view class="Content BorderBox Width100">
|
||
|
<top-title :is-show-left="false" :title="'农三轮'" :rightWidth='60' class="custom_bg">
|
||
|
<template slot="right">
|
||
|
<image :src="$.imgSrc + '/mine/plus.png'" mode="aspectFit"
|
||
|
@click="$.open('/pages/investigation/detail')" class="InlineBlock imgIcon"></image>
|
||
|
</template>
|
||
|
</top-title>
|
||
|
</view>
|
||
|
|
||
|
<view class="query-form">
|
||
|
<view class="search-box">
|
||
|
<u-search placeholder="请输入名称" v-model="searchValue" actionText="" :showAction="false"
|
||
|
@search="handleSearch" @clear="handleSearch"></u-search>
|
||
|
</view>
|
||
|
<view class="tab">
|
||
|
<view v-for="tabItem in tabList" :key="tabItem.active" :class="{
|
||
|
'tab-item': true,
|
||
|
'active': tabItem.active == approve
|
||
|
}" @click="handleTabChange(tabItem.active)">
|
||
|
<text>{{tabItem.name}}</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="Content MarginAuto BorderBox">
|
||
|
<dateSearch :tabList="approve == 1? tabTypeList1:tabTypeList2" :tabActive="classification"
|
||
|
:startDate.sync="startDate" :endDate.sync="endDate" @handleSearch="handleSearch"
|
||
|
@tabChange="queryTypeChange" />
|
||
|
<no-data v-if="!list.length" />
|
||
|
<view v-else class="List Width100 BorderBox">
|
||
|
<view class="Unit FontBold BorderBox Width100 MarginT_30rpx BG_FFFFFF" v-for="item in list"
|
||
|
:key='item.id' @click='handleClick(item)' v-if="approve == 1">
|
||
|
<image class="itemImg" :src="item.drivingImg ||require('./defaultImg.png')" mode="widthFix">
|
||
|
</image>
|
||
|
<view class="right">
|
||
|
<view class="title carNumber">{{ item.vehicleLicense }}</view>
|
||
|
<text class="title">{{ item.driverName }}</text>
|
||
|
<view class="type">
|
||
|
<text>{{ vehicleTypeConvert(item.vehicleType) }}</text>
|
||
|
<text style="margin-right: 5rpx;">{{ item.streetCommunity || '--' }}</text>
|
||
|
<text>{{ item.villageCommunity || '--' }}</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<view class="Unit FontBold BorderBox Width100 MarginT_30rpx BG_FFFFFF" v-for="item in list"
|
||
|
:key='item.warningId' v-if="approve == 2" @click='handleWarningClick(item)'>
|
||
|
<image class="itemImg" :src="item.drivingImg ||require('./defaultImg.png')" mode="widthFix">
|
||
|
</image>
|
||
|
<view class="right">
|
||
|
<view class="title carNumber">{{ item.vehicleLicense }}</view>
|
||
|
<text class="title">{{ item.illegalActivities }}</text>
|
||
|
<view class="type" style="display: flex;justify-content: space-between;">
|
||
|
<text>{{ item.driverName || '--' }}</text>
|
||
|
<text>{{ item.warningTimeFormat || '--' }}</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
<u-loadmore :status="loadmorestatus" v-show="!isEmpty" />
|
||
|
</view>
|
||
|
</view>
|
||
|
<Tabbar name="农三轮" v-if="tabbarShow"></Tabbar>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import NoData from "../../components/no-data.vue";
|
||
|
import TopTitle from "../../components/top-title";
|
||
|
import tabFun from '@/libs/function/tabbar.js'
|
||
|
import Tabbar from "../../components/tabbar.vue";
|
||
|
import dateSearch from "./date-search.vue";
|
||
|
export default {
|
||
|
// 组件
|
||
|
components: {
|
||
|
NoData,
|
||
|
TopTitle,
|
||
|
Tabbar,
|
||
|
dateSearch
|
||
|
},
|
||
|
data() {
|
||
|
return {
|
||
|
// 公用的js
|
||
|
list: [],
|
||
|
isEmpty: false,
|
||
|
isMore: true,
|
||
|
pageNum: 1,
|
||
|
pageSize: 10,
|
||
|
searchValue: '',
|
||
|
classification: '0',
|
||
|
approve: '1',
|
||
|
status: '60',
|
||
|
startDate: '',
|
||
|
endDate: '',
|
||
|
tabbarShow: true,
|
||
|
tabList: [{
|
||
|
name: '信息登记',
|
||
|
active: '1',
|
||
|
},
|
||
|
{
|
||
|
name: '预警处理',
|
||
|
active: '2',
|
||
|
},
|
||
|
],
|
||
|
tabTypeList1: [{
|
||
|
name: '全部',
|
||
|
active: '0',
|
||
|
num: 0,
|
||
|
},
|
||
|
{
|
||
|
name: '已补录',
|
||
|
active: '1',
|
||
|
num: 0,
|
||
|
},
|
||
|
{
|
||
|
name: '未补录',
|
||
|
active: '2',
|
||
|
num: 0,
|
||
|
},
|
||
|
],
|
||
|
tabTypeList2: [],
|
||
|
loadmorestatus: 'loading',
|
||
|
enumList: {}
|
||
|
}
|
||
|
},
|
||
|
// 页面加载
|
||
|
onLoad(e) {
|
||
|
this.$request
|
||
|
.globalRequest(
|
||
|
"/hiddenDanger/tricycle/getTricycleInfoEnumType",
|
||
|
"GET"
|
||
|
).then(res => {
|
||
|
this.enumList = res.result
|
||
|
})
|
||
|
if (this.$.getData('userInfo').role.some(i => i == '中队民警农三轮')) {
|
||
|
this.tabTypeList2 = [{
|
||
|
name: '未处理',
|
||
|
active: '0',
|
||
|
num: 0,
|
||
|
},
|
||
|
{
|
||
|
name: '已分配',
|
||
|
active: '1',
|
||
|
num: 0,
|
||
|
},
|
||
|
{
|
||
|
name: '已完成',
|
||
|
active: '2',
|
||
|
num: 0,
|
||
|
},
|
||
|
]
|
||
|
} else if (this.$.getData('userInfo').role.some(i => i == '村干部农三轮')) {
|
||
|
this.tabTypeList2 = [{
|
||
|
name: '未处理',
|
||
|
active: '0',
|
||
|
num: 0,
|
||
|
},
|
||
|
{
|
||
|
name: '已完成',
|
||
|
active: '2',
|
||
|
num: 0,
|
||
|
},
|
||
|
]
|
||
|
}
|
||
|
},
|
||
|
onShow() {
|
||
|
const approve = uni.getStorageSync('MySPtabIndex')
|
||
|
if (approve) {
|
||
|
this.approve = Number(approve)
|
||
|
uni.setStorageSync('MySPtabIndex', '')
|
||
|
}
|
||
|
uni.hideTabBar() //隐藏官方的tabBar
|
||
|
this.pageNum = 1
|
||
|
this.list = [];
|
||
|
this.getList({})
|
||
|
|
||
|
// tabFun.tabbar()
|
||
|
// this.tabbarShow = false
|
||
|
// this.$nextTick(() => {
|
||
|
// this.tabbarShow = true
|
||
|
// })
|
||
|
},
|
||
|
// 计算属性
|
||
|
computed: {},
|
||
|
// 方法
|
||
|
methods: {
|
||
|
//车辆种类转换
|
||
|
vehicleTypeConvert(vehicleType) {
|
||
|
if (vehicleType) {
|
||
|
return this.enumList.vehicleTypeEnum.find(i => i.enumvalue === vehicleType)?.enumname
|
||
|
} else {
|
||
|
'--'
|
||
|
}
|
||
|
},
|
||
|
handleSearch(keyWord) {
|
||
|
this.pageNum = 1
|
||
|
this.list = []
|
||
|
this.getList({
|
||
|
keyWord
|
||
|
})
|
||
|
},
|
||
|
queryTypeChange(tabKey) {
|
||
|
if (this.classification != tabKey) {
|
||
|
this.classification = tabKey
|
||
|
this.pageNum = 1
|
||
|
this.list = []
|
||
|
this.getList({
|
||
|
tabKey
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
handleTabChange(tabKey) {
|
||
|
if (this.approve != tabKey) {
|
||
|
this.classification = '0'
|
||
|
this.approve = tabKey
|
||
|
this.pageNum = 1
|
||
|
this.list = []
|
||
|
this.getList({})
|
||
|
}
|
||
|
},
|
||
|
getQueryStr(query) {
|
||
|
let myQuery = {
|
||
|
...query
|
||
|
}
|
||
|
if (myQuery.approve == 2) {
|
||
|
myQuery.startTime = this.startDate
|
||
|
myQuery.endTime = this.endDate
|
||
|
}
|
||
|
return Object.entries(myQuery).reduce((str, keyValue, index, self) => {
|
||
|
const [key, value] = keyValue
|
||
|
str += `${key}=${value}${index !== self.length - 1 ? '&' : ''}`
|
||
|
return str
|
||
|
}, '')
|
||
|
},
|
||
|
getList({
|
||
|
tabKey,
|
||
|
keyWord
|
||
|
}) {
|
||
|
this.loadmorestatus = 'loading'
|
||
|
this.isMore = true
|
||
|
//信息登记列表
|
||
|
if (this.approve == 1) {
|
||
|
this.$request.globalRequest(`hiddenDanger/tricycle/getTricycleList`, {
|
||
|
nuserId: this.$.getData('token'),
|
||
|
status: tabKey || this.classification,
|
||
|
search: keyWord || '',
|
||
|
pageNum: this.pageNum,
|
||
|
pageSize: this.pageSize,
|
||
|
}, 'get').then(res => {
|
||
|
this.loadmorestatus = 'loadmore'
|
||
|
if (res.code === 200) {
|
||
|
if (res.result.total === 0) {
|
||
|
this.isEmpty = true;
|
||
|
} else {
|
||
|
this.isEmpty = false;
|
||
|
this.list.push(...res.result.list)
|
||
|
}
|
||
|
if (this.list.length >= res.result.total) {
|
||
|
this.loadmorestatus = 'nomore'
|
||
|
this.isMore = false
|
||
|
}
|
||
|
} else {
|
||
|
this.$.toast(res.message)
|
||
|
}
|
||
|
}).catch((err) => {
|
||
|
this.loadmorestatus = 'nomore'
|
||
|
uni.stopPullDownRefresh();
|
||
|
})
|
||
|
//查询各状态数量
|
||
|
this.tabTypeList1.map(i => {
|
||
|
this.$request.globalRequest(`hiddenDanger/tricycle/getTricycleList`, {
|
||
|
nuserId: this.$.getData('token'),
|
||
|
status: i.active,
|
||
|
search: keyWord || ''
|
||
|
}, 'get').then(res => {
|
||
|
i.num = res.result.total
|
||
|
})
|
||
|
})
|
||
|
} else if (this.approve == 2) {
|
||
|
this.$request.globalRequest(`hiddenDanger/tricycle/getTricycleWarningList`, {
|
||
|
nuserId: this.$.getData('token'),
|
||
|
status: tabKey || this.classification,
|
||
|
search: keyWord || '',
|
||
|
pageNum: this.pageNum,
|
||
|
pageSize: this.pageSize,
|
||
|
}, 'get').then(res => {
|
||
|
this.loadmorestatus = 'loadmore'
|
||
|
if (res.code === 200) {
|
||
|
if (res.result.total === 0) {
|
||
|
this.isEmpty = true;
|
||
|
} else {
|
||
|
this.isEmpty = false;
|
||
|
this.list.push(...res.result.list)
|
||
|
}
|
||
|
if (this.list.length >= res.result.total) {
|
||
|
this.loadmorestatus = 'nomore'
|
||
|
this.isMore = false
|
||
|
}
|
||
|
} else {
|
||
|
this.$.toast(res.message)
|
||
|
}
|
||
|
}).catch((err) => {
|
||
|
this.loadmorestatus = 'nomore'
|
||
|
uni.stopPullDownRefresh();
|
||
|
})
|
||
|
//查询各状态数量
|
||
|
this.tabTypeList2.map(i => {
|
||
|
this.$request.globalRequest(`hiddenDanger/tricycle/getTricycleWarningList`, {
|
||
|
nuserId: this.$.getData('token'),
|
||
|
status: i.active,
|
||
|
search: keyWord || ''
|
||
|
}, 'get').then(res => {
|
||
|
i.num = res.result.total
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
handleClick(row) {
|
||
|
this.$.open("/pages/investigation/detail" + "?id=" + row.id);
|
||
|
},
|
||
|
handleWarningClick(row) {
|
||
|
this.$.open("/pages/investigation/warningDetail" + "?warningId=" + row.warningId+ "&state=" + this.classification);
|
||
|
},
|
||
|
// 跳转页面
|
||
|
skipPage(even) {
|
||
|
// this.$.open(even)
|
||
|
},
|
||
|
},
|
||
|
onReady() {},
|
||
|
// 页面卸载
|
||
|
onUnload() {
|
||
|
|
||
|
},
|
||
|
// 触发下拉刷新
|
||
|
onPullDownRefresh() {
|
||
|
this.pageNum = 1
|
||
|
this.list = [];
|
||
|
this.getList({})
|
||
|
},
|
||
|
// 页面上拉触底事件的处理函数
|
||
|
onReachBottom() {
|
||
|
if (this.isMore) {
|
||
|
this.pageNum++
|
||
|
this.getList({})
|
||
|
}
|
||
|
},
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style>
|
||
|
</style>
|
||
|
<style lang="scss" scoped>
|
||
|
page {
|
||
|
background: #F6F8FA;
|
||
|
}
|
||
|
|
||
|
.imgIcon {
|
||
|
width: 40rpx;
|
||
|
height: 100%;
|
||
|
}
|
||
|
|
||
|
.imgIcon:nth-of-type(2) {
|
||
|
margin-left: 40rpx;
|
||
|
}
|
||
|
|
||
|
.img {
|
||
|
width: 40rpx;
|
||
|
height: 40rpx;
|
||
|
margin-left: 30rpx;
|
||
|
}
|
||
|
|
||
|
.trapezoidal {
|
||
|
position: relative;
|
||
|
display: inline-block;
|
||
|
min-width: 2em;
|
||
|
text-align: center;
|
||
|
padding: 3rpx 20rpx 3rpx 18rpx;
|
||
|
}
|
||
|
|
||
|
.trapezoidal::before,
|
||
|
.trapezoidal::after {
|
||
|
content: '';
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
left: 0%;
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
border-radius: 0rpx 0 0 0;
|
||
|
background: #FF1111;
|
||
|
z-index: -1;
|
||
|
transform-origin: bottom;
|
||
|
transform: skew(18deg);
|
||
|
border: 0rpx solid #333;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
|
||
|
.trapezoidal::after {
|
||
|
left: auto;
|
||
|
right: 0;
|
||
|
transform: skew(-0deg);
|
||
|
border-radius: 0 0rpx 0 0;
|
||
|
background-color: #FF1111;
|
||
|
border-left: 0 none;
|
||
|
}
|
||
|
|
||
|
.query-form {
|
||
|
|
||
|
font-size: 16px;
|
||
|
height: 91px;
|
||
|
background: #ffffff;
|
||
|
box-shadow: 3px 0px 10px #ccc;
|
||
|
color: #666666;
|
||
|
position: sticky;
|
||
|
// top: var(--status-bar-height + 88rpx);
|
||
|
top: calc(var(--status-bar-height) + 88rpx);
|
||
|
z-index: 10;
|
||
|
|
||
|
.tab {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
justify-content: space-around;
|
||
|
|
||
|
.tab-item {
|
||
|
position: relative;
|
||
|
height: 41px;
|
||
|
line-height: 41px;
|
||
|
padding: 0 30rpx 0 30rpx;
|
||
|
border-bottom: 3px solid #fff;
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
|
||
|
&.active {
|
||
|
color: rgb(60, 109, 195);
|
||
|
border-color: rgb(60, 109, 195);
|
||
|
}
|
||
|
|
||
|
.number {
|
||
|
font-weight: bold;
|
||
|
font-size: 18px;
|
||
|
margin-left: 10rpx;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.search-box {
|
||
|
padding: 10px 10px 3px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.query-form2 {
|
||
|
height: 146px;
|
||
|
|
||
|
.date-content {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
padding: 15px 10px;
|
||
|
justify-content: space-between;
|
||
|
|
||
|
.date-item {
|
||
|
display: flex;
|
||
|
align-items: center;
|
||
|
|
||
|
&-label {
|
||
|
margin-right: 10px;
|
||
|
}
|
||
|
|
||
|
&-value {
|
||
|
width: 185rpx;
|
||
|
text-align: right;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
.Box {
|
||
|
padding-top: var(--status-bar-height);
|
||
|
|
||
|
.Content {
|
||
|
width: calc(100% - 48rpx);
|
||
|
padding-bottom: 88rpx;
|
||
|
}
|
||
|
|
||
|
.Unit {
|
||
|
padding: 24rpx;
|
||
|
display: flex;
|
||
|
justify-content: space-between;
|
||
|
align-items: center;
|
||
|
position: relative;
|
||
|
box-shadow: 1px 1px 3px #ccc;
|
||
|
|
||
|
.trapezoidal {
|
||
|
position: absolute;
|
||
|
top: 0px;
|
||
|
right: 0px;
|
||
|
color: #ffffff;
|
||
|
font-size: 14px;
|
||
|
font-weight: normal;
|
||
|
z-index: 1;
|
||
|
}
|
||
|
|
||
|
.itemImg {
|
||
|
max-width: 132rpx;
|
||
|
max-height: 116rpx;
|
||
|
}
|
||
|
|
||
|
.right {
|
||
|
flex: 1;
|
||
|
padding-left: 30rpx;
|
||
|
|
||
|
|
||
|
.title {
|
||
|
font-size: 16px;
|
||
|
}
|
||
|
|
||
|
.carNumber {
|
||
|
width: 250rpx;
|
||
|
float: left;
|
||
|
}
|
||
|
|
||
|
.type {
|
||
|
font-size: 14px;
|
||
|
color: #666;
|
||
|
font-weight: normal;
|
||
|
|
||
|
text {
|
||
|
margin-right: 20rpx;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</style>
|