@ -0,0 +1,125 @@ |
|||||
|
import React, { useState } from 'react' |
||||
|
import Taro, { useDidShow } from '@tarojs/taro' |
||||
|
import { View, Picker, Input, Image } from '@tarojs/components' |
||||
|
import moment from 'moment' |
||||
|
import './index.scss' |
||||
|
import NoData from '@/components/no-data/noData' |
||||
|
import chevronDown from '../../static/img/patrolView/chevron-down.png' |
||||
|
import searchIcon from '../../static/img/patrolView/search.png' |
||||
|
import cardImg from '../../static/img/patrolView/card-img.png' |
||||
|
import patrolIcon from '../../static/img/patrolView/patrol.svg' |
||||
|
import patrolActiveIcon from '../../static/img/patrolView/patrol-active.svg' |
||||
|
import conserveIcon from '../../static/img/patrolView/conserve.svg' |
||||
|
import conserveActiveIcon from '../../static/img/patrolView/conserve-active.svg' |
||||
|
|
||||
|
function Index() { |
||||
|
const [datePicker, setDatePicker] = useState(moment().format('YYYY-MM-DD')) |
||||
|
const [listData, setListData] = useState([]) |
||||
|
const [inputSite, setInputSite] = useState('') |
||||
|
const [page, setPage] = useState(0) |
||||
|
const [total, setTotal] = useState(0) |
||||
|
const [num, setNum] = useState(Math.random()) |
||||
|
const [systemInfo, setSystemInfo] = useState('') |
||||
|
|
||||
|
const data = [ |
||||
|
{ |
||||
|
place: { |
||||
|
name: '飞尚' |
||||
|
}, |
||||
|
user: { |
||||
|
name: '用户1' |
||||
|
}, |
||||
|
time: '2022-7-1' |
||||
|
} |
||||
|
] |
||||
|
|
||||
|
useDidShow(() => { |
||||
|
let refresh = Taro.getStorageSync('refresh'); // 返回列表需要刷新 |
||||
|
if (refresh) { |
||||
|
setPage(0) |
||||
|
setNum(Math.random()) |
||||
|
Taro.removeStorageSync('refresh'); // 返回列表需要刷新 |
||||
|
} |
||||
|
Taro.getSystemInfo({ |
||||
|
success: (res) => { |
||||
|
// windows | mac为pc端 |
||||
|
// android | ios为手机端 |
||||
|
setSystemInfo(res.platform); |
||||
|
} |
||||
|
}); |
||||
|
}) |
||||
|
|
||||
|
const onDateChange = e => { |
||||
|
setDatePicker(e.detail.value); |
||||
|
} |
||||
|
|
||||
|
const handleConfirm = () => { |
||||
|
setPage(0) |
||||
|
setListData([]); |
||||
|
setTotal(0); |
||||
|
setNum(Math.random()) |
||||
|
} |
||||
|
|
||||
|
const handleInput = e => { |
||||
|
setInputSite(e.detail.value); |
||||
|
if (!e.detail.value) { |
||||
|
setPage(0) |
||||
|
setListData([]); |
||||
|
setTotal(0); |
||||
|
setNum(Math.random()) |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return ( |
||||
|
<View> |
||||
|
<View className='type-box'> |
||||
|
<View className='item left'> |
||||
|
<Image className='type-img' src={patrolIcon} /> |
||||
|
<View>巡查</View> |
||||
|
</View> |
||||
|
<View className='line'></View> |
||||
|
<View className='item'> |
||||
|
<Image className='type-img' src={conserveIcon} /> |
||||
|
<View>养护</View> |
||||
|
</View> |
||||
|
</View> |
||||
|
<View className='filter-box'> |
||||
|
<View className='filter-item'> |
||||
|
<View style={{ float: 'left', marginLeft: '20rpx', color: '#333' }}>日期:</View> |
||||
|
<Picker className='picker' style={{ overflow: 'hidden', float: 'left' }} mode='date' end={(systemInfo == 'windows' || systemInfo == 'mac') ? moment().add(1, 'd').format('YYYY-MM-DD') : moment().format('YYYY-MM-DD')} onChange={onDateChange}> |
||||
|
<View className='filter-name'>{datePicker || '请选择'}</View> |
||||
|
<Image className='filter-img' src={chevronDown} /> |
||||
|
</Picker> |
||||
|
</View> |
||||
|
<View class='head-search'> |
||||
|
<Image className='search-img' src={searchIcon} /> |
||||
|
<Input class='heard-search-input' value={inputSite} placeholder='请输入场所名称' onConfirm={handleConfirm} onInput={handleInput} /> |
||||
|
</View> |
||||
|
</View> |
||||
|
|
||||
|
<View style={{ marginTop: '70px' }}> |
||||
|
{ |
||||
|
data && data.length > 0 ? data && data.map((e, index) => { |
||||
|
return ( |
||||
|
<View className='cardBox' key={index} onClick={() => handleDetail(index)}> |
||||
|
<View className='card-item' > |
||||
|
<Image className='card-bg' src={cardImg} /> |
||||
|
<View className='card-position'> |
||||
|
<View className='card-title'>{e.place.name}</View> |
||||
|
<View style={{ float: 'left', width: '100%', fontSize: '28rpx', marginTop: '16rpx' }}> |
||||
|
<View style={{ float: 'left' }}>填报人:</View> |
||||
|
<View style={{ float: 'left' }}>{e.user.name}</View> |
||||
|
</View> |
||||
|
<View className='card-date'>{moment(e.time).format('YYYY-MM-DD HH:mm:ss')}</View> |
||||
|
</View> |
||||
|
</View> |
||||
|
</View> |
||||
|
) |
||||
|
}) : <NoData top='400rpx'></NoData> |
||||
|
} |
||||
|
</View> |
||||
|
</View> |
||||
|
) |
||||
|
} |
||||
|
|
||||
|
export default Index |
@ -0,0 +1,135 @@ |
|||||
|
page { |
||||
|
background-color: #f6f6f6; |
||||
|
|
||||
|
.type-box { |
||||
|
background-color: #fff; |
||||
|
height: 80px; |
||||
|
display: flex; |
||||
|
justify-content: space-around; |
||||
|
align-items: center; |
||||
|
|
||||
|
.item { |
||||
|
flex-grow: 1; |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
|
||||
|
.type-img { |
||||
|
width: 40px; |
||||
|
height: 40px; |
||||
|
margin: 0 10px; |
||||
|
} |
||||
|
} |
||||
|
.line { |
||||
|
|
||||
|
width: 1px; |
||||
|
height: 30px; |
||||
|
background-color: #f6f6f6; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.filter-box { |
||||
|
position: fixed; |
||||
|
top: 80px; |
||||
|
display: flex; |
||||
|
width: 100%; |
||||
|
z-index: 100; |
||||
|
background: #fff; |
||||
|
color: #999999; |
||||
|
font-size: 28rpx; |
||||
|
border-top: 2rpx solid #f6f6f6; |
||||
|
|
||||
|
.filter-item { |
||||
|
overflow: hidden; |
||||
|
height: 98rpx; |
||||
|
line-height: 98rpx; |
||||
|
flex: 1; |
||||
|
|
||||
|
.filter-name { |
||||
|
float: left; |
||||
|
// margin-left: 20rpx; |
||||
|
} |
||||
|
|
||||
|
.filter-img { |
||||
|
width: 14px; |
||||
|
height: 8px; |
||||
|
float: left; |
||||
|
margin: 46rpx 20rpx 18rpx 10rpx; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.head-search { |
||||
|
width: 400rpx; |
||||
|
display: flex; |
||||
|
background: #fff; |
||||
|
padding: 10rpx 26rpx 15rpx; |
||||
|
box-sizing: border-box; |
||||
|
border-radius: 50rpx; |
||||
|
box-shadow: 0 8rpx 10rpx 0rpx #00000008; |
||||
|
border: 2rpx solid #00000011; |
||||
|
height: 68rpx; |
||||
|
line-height: 68rpx; |
||||
|
margin: 14rpx 30rpx 14rpx 0; |
||||
|
|
||||
|
.search-img { |
||||
|
width: 36rpx; |
||||
|
height: 36rpx; |
||||
|
margin-top: 5rpx; |
||||
|
} |
||||
|
|
||||
|
.heard-search-input { |
||||
|
margin-left: 26rpx; |
||||
|
font-size: 28rpx; |
||||
|
width: 100%; |
||||
|
color: #333; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
.cardBox { |
||||
|
width: 690rpx; |
||||
|
margin: 50rpx auto; |
||||
|
|
||||
|
.card-item { |
||||
|
position: relative; |
||||
|
margin-bottom: 10rpx; |
||||
|
|
||||
|
.card-bg { |
||||
|
width: 100%; |
||||
|
height: 260rpx; |
||||
|
display: block; |
||||
|
|
||||
|
} |
||||
|
|
||||
|
.card-position { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 0; |
||||
|
width: 88%; |
||||
|
padding: 16rpx 0 16rpx 36rpx; |
||||
|
overflow: hidden; |
||||
|
text-align: justify; |
||||
|
|
||||
|
.card-title { |
||||
|
font-size: 28rpx; |
||||
|
color: #333333; |
||||
|
float: left; |
||||
|
margin-bottom: 30rpx; |
||||
|
width: 470rpx; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; |
||||
|
overflow: hidden; |
||||
|
margin-top: 8rpx; |
||||
|
} |
||||
|
|
||||
|
.card-date { |
||||
|
float: left; |
||||
|
font-size: 28rpx; |
||||
|
color: #999999; |
||||
|
margin-top: 30rpx; |
||||
|
width: 100%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 174 B |
After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.0 KiB |
After Width: | Height: | Size: 1.0 KiB |