30 changed files with 656 additions and 202 deletions
			
			
		@ -0,0 +1,90 @@ | 
				
			|||||
 | 
					'use strict' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const request = require('superagent') | 
				
			||||
 | 
					const moment = require('moment') | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// function getFileCarImages (opts) {
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//   return async function (ctx, next) {
 | 
				
			||||
 | 
					//     let error = { message: '文件夹名称更新失败' }
 | 
				
			||||
 | 
					//     const models = ctx.fs.dc.models
 | 
				
			||||
 | 
					//     const { page, limit, } = ctx.query
 | 
				
			||||
 | 
					//     try {
 | 
				
			||||
 | 
					//       let searchWhere = {}
 | 
				
			||||
 | 
					//       let option = {
 | 
				
			||||
 | 
					//         where: searchWhere,
 | 
				
			||||
 | 
					//         order: [["id", "desc"]],
 | 
				
			||||
 | 
					//       }
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//       option.where = searchWhere
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//       let limit_ = limit || 10
 | 
				
			||||
 | 
					//       let page_ = page || 1
 | 
				
			||||
 | 
					//       let offset = (page_ - 1) * limit_
 | 
				
			||||
 | 
					//       if (limit && page) {
 | 
				
			||||
 | 
					//         option.limit = limit_
 | 
				
			||||
 | 
					//         option.offset = offset
 | 
				
			||||
 | 
					//       }
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//       const res = await models.CarImages.findAndCount(option)
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//       error = null
 | 
				
			||||
 | 
					//     } catch (err) {
 | 
				
			||||
 | 
					//       ctx.status = 500
 | 
				
			||||
 | 
					//       ctx.body = { detail: err, ...error }
 | 
				
			||||
 | 
					//     }
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//     if (error) {
 | 
				
			||||
 | 
					//       ctx.status = 400
 | 
				
			||||
 | 
					//       ctx.body = { ...error }
 | 
				
			||||
 | 
					//     } else {
 | 
				
			||||
 | 
					//       ctx.status = 200
 | 
				
			||||
 | 
					//       ctx.body = { message: '文件夹名称更新成功' }
 | 
				
			||||
 | 
					//     }
 | 
				
			||||
 | 
					//   }
 | 
				
			||||
 | 
					// }
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function getFileCarImages (opts) { | 
				
			||||
 | 
					  return async function (ctx, next) { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    const models = ctx.fs.dc.models | 
				
			||||
 | 
					    const { page, limit, } = ctx.query | 
				
			||||
 | 
					    const Op = ctx.fs.dc.ORM.Op | 
				
			||||
 | 
					    let errMsg = { message: '获取图片失败' } | 
				
			||||
 | 
					    try { | 
				
			||||
 | 
					      let searchWhere = {} | 
				
			||||
 | 
					      let option = { | 
				
			||||
 | 
					        where: searchWhere, | 
				
			||||
 | 
					        order: [["id", "ASC"]], | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      option.where = searchWhere | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      let limit_ = limit || 10 | 
				
			||||
 | 
					      let page_ = page || 1 | 
				
			||||
 | 
					      let offset = (page_ - 1) * limit_ | 
				
			||||
 | 
					      if (limit && page) { | 
				
			||||
 | 
					        option.limit = limit_ | 
				
			||||
 | 
					        option.offset = offset | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      const res = await models.CarImages.findAndCount(option) | 
				
			||||
 | 
					      ctx.status = 200 | 
				
			||||
 | 
					      ctx.body = res | 
				
			||||
 | 
					    } catch (error) { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      ctx.status = 400 | 
				
			||||
 | 
					      ctx.body = errMsg | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module.exports = { | 
				
			||||
 | 
					  getFileCarImages | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,44 @@ | 
				
			|||||
 | 
					/* eslint-disable*/ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					'use strict'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module.exports = dc => { | 
				
			||||
 | 
					  const DataTypes = dc.ORM; | 
				
			||||
 | 
					  const sequelize = dc.orm; | 
				
			||||
 | 
					  const CarImages = sequelize.define("carImages", { | 
				
			||||
 | 
					    id: { | 
				
			||||
 | 
					      type: DataTypes.INTEGER, | 
				
			||||
 | 
					      allowNull: false, | 
				
			||||
 | 
					      defaultValue: null, | 
				
			||||
 | 
					      comment: null, | 
				
			||||
 | 
					      primaryKey: true, | 
				
			||||
 | 
					      field: "id", | 
				
			||||
 | 
					      autoIncrement: true, | 
				
			||||
 | 
					      unique: "car_images_id_uindex" | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    url: { | 
				
			||||
 | 
					      type: DataTypes.STRING, | 
				
			||||
 | 
					      allowNull: true, | 
				
			||||
 | 
					      defaultValue: null, | 
				
			||||
 | 
					      comment: "图片路径", | 
				
			||||
 | 
					      primaryKey: false, | 
				
			||||
 | 
					      field: "url", | 
				
			||||
 | 
					      autoIncrement: false | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    time: { | 
				
			||||
 | 
					      type: DataTypes.DATE, | 
				
			||||
 | 
					      allowNull: true, | 
				
			||||
 | 
					      defaultValue: null, | 
				
			||||
 | 
					      comment: "时间", | 
				
			||||
 | 
					      primaryKey: false, | 
				
			||||
 | 
					      field: "time", | 
				
			||||
 | 
					      autoIncrement: false | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  }, { | 
				
			||||
 | 
					    tableName: "car_images", | 
				
			||||
 | 
					    comment: "", | 
				
			||||
 | 
					    indexes: [] | 
				
			||||
 | 
					  }); | 
				
			||||
 | 
					  dc.models.CarImages = CarImages; | 
				
			||||
 | 
					  return CarImages; | 
				
			||||
 | 
					}; | 
				
			||||
@ -0,0 +1,10 @@ | 
				
			|||||
 | 
					'use strict' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					const images = require('../../controllers/images') | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					module.exports = function (app, router, opts, panCode) { | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  router.get('/car/images', images.getFileCarImages(opts)) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					} | 
				
			||||
								
									Binary file not shown.
								
							
						
					@ -0,0 +1,16 @@ | 
				
			|||||
 | 
					create table car_images | 
				
			||||
 | 
					( | 
				
			||||
 | 
					    id   serial | 
				
			||||
 | 
					        constraint car_images_pk | 
				
			||||
 | 
					            primary key, | 
				
			||||
 | 
					    url  varchar, | 
				
			||||
 | 
					    time timestamptz | 
				
			||||
 | 
					); | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					comment on column car_images.url is '图片路径'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					comment on column car_images.time is '时间'; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					create unique index car_images_id_uindex | 
				
			||||
 | 
					    on car_images (id); | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					alter table road_spot_check_preview | 
				
			||||
 | 
						add last_abstract_village jsonb; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					comment on column road_spot_check_preview.last_abstract_village is '每个乡上次抽查的最后一个村'; | 
				
			||||
 | 
					
 | 
				
			||||
@ -0,0 +1,3 @@ | 
				
			|||||
 | 
					export default { | 
				
			||||
 | 
						navigationBarTitleText: '抽查详情' | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,99 @@ | 
				
			|||||
 | 
					import React, { useEffect, useState } from 'react' | 
				
			||||
 | 
					import Taro, { useRouter, useDidShow } from '@tarojs/taro' | 
				
			||||
 | 
					import { View } from '@tarojs/components' | 
				
			||||
 | 
					import { AtButton, AtSearchBar } from 'taro-ui' | 
				
			||||
 | 
					import { NoData } from '@/components/index' | 
				
			||||
 | 
					import Skeleton from '../components/skeleton' | 
				
			||||
 | 
					import moment from 'moment' | 
				
			||||
 | 
					import request from '@/services/request' | 
				
			||||
 | 
					import { getRoadSpotDetail } from '@/services/api' | 
				
			||||
 | 
					import './index.scss' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					function Index() { | 
				
			||||
 | 
					  const { item, isOld } = useRouter().params | 
				
			||||
 | 
					  const spotItem = item ? JSON.parse(decodeURIComponent(item)) : null | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  const [keyword, setKeyword] = useState('') | 
				
			||||
 | 
					  const [roadDetailList, setRoadDetailList] = useState([]) | 
				
			||||
 | 
					  const [isNoData, setIsNoData] = useState(false) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  useDidShow(() => { | 
				
			||||
 | 
					    getDetail() | 
				
			||||
 | 
					  }) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  const getDetail = () => { | 
				
			||||
 | 
					    if (spotItem) { | 
				
			||||
 | 
					      Taro.showLoading({ title: '加载中' }) | 
				
			||||
 | 
					      request.get(`${getRoadSpotDetail()}?previewId=${spotItem.id}&keyword=${keyword}`).then(res => { | 
				
			||||
 | 
					        Taro.hideLoading() | 
				
			||||
 | 
					        if (res.statusCode === 200) { | 
				
			||||
 | 
					          setRoadDetailList(res.data) | 
				
			||||
 | 
					        } else { | 
				
			||||
 | 
					          Taro.showToast({ title: '获取详情失败', icon: 'error' }) | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					        if (res.data?.length) { | 
				
			||||
 | 
					          setIsNoData(false) | 
				
			||||
 | 
					        } else { | 
				
			||||
 | 
					          setIsNoData(true) | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					      }) | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  const renderList = () => { | 
				
			||||
 | 
					    return roadDetailList.length ? roadDetailList.map(item => <View key={item.id} className='card'> | 
				
			||||
 | 
					      <View className='item'>道路类型:{item.road?.level ? (item.road?.level + '道') : '--'}</View> | 
				
			||||
 | 
					      <View className='item'>路线名称:{item.road?.routeName || '--'}</View> | 
				
			||||
 | 
					      <View className='item at-row'> | 
				
			||||
 | 
					        <View className='at-col-6'>路线代码:{item.road?.routeCode || '--'}</View> | 
				
			||||
 | 
					        <View className='at-col-6'>路段序号:{item.road?.sectionNo || '--'}</View> | 
				
			||||
 | 
					      </View> | 
				
			||||
 | 
					      <View className='item at-row'> | 
				
			||||
 | 
					        <View className='at-col-6'>起点地名:{item.road?.startingPlaceName || '--'}</View> | 
				
			||||
 | 
					        <View className='at-col-6'>止点地名:{item.road?.stopPlaceName || '--'}</View> | 
				
			||||
 | 
					      </View> | 
				
			||||
 | 
					      <View className='item'>里程:{item.road?.chainageMileage || '--'}</View> | 
				
			||||
 | 
					      <View className='item at-row'> | 
				
			||||
 | 
					        <View className='at-col-6'>养护次数(次):{item.maintenanceCount}</View> | 
				
			||||
 | 
					        <View className='at-col-3'> | 
				
			||||
 | 
					          <AtButton | 
				
			||||
 | 
					            className='edit-btn' | 
				
			||||
 | 
					            type='primary' | 
				
			||||
 | 
					            size='small' | 
				
			||||
 | 
					            onClick={() => Taro.navigateTo({ url: `/packages/maintenanceSpotCheck/spotCheckRoadDetail/index?detail=${encodeURIComponent(JSON.stringify(item))}` })} | 
				
			||||
 | 
					          >详情</AtButton> | 
				
			||||
 | 
					        </View> | 
				
			||||
 | 
					        <View className='at-col-3'> | 
				
			||||
 | 
					          <AtButton | 
				
			||||
 | 
					            className='edit-btn' | 
				
			||||
 | 
					            type='primary' | 
				
			||||
 | 
					            size='small' | 
				
			||||
 | 
					            onClick={() => Taro.navigateTo({ url: `/packages/maintenanceSpotCheck/spotChange/index?detail=${encodeURIComponent(JSON.stringify(item))}&spot=${encodeURIComponent(JSON.stringify(spotItem))}` })} | 
				
			||||
 | 
					            disabled={ | 
				
			||||
 | 
					              isOld === 'true' || | 
				
			||||
 | 
					              item.roadSpotCheckPreview?.roadSpotCheckChangeLogs?.some(l => l.changeRoadId == item.roadId) | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					          >调整</AtButton> | 
				
			||||
 | 
					        </View> | 
				
			||||
 | 
					      </View> | 
				
			||||
 | 
					    </View>) : <Skeleton length={3} /> | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  const renderNoData = () => { | 
				
			||||
 | 
					    return <View style={{ marginTop: 100 }}><NoData /></View> | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  return (<View className='page'> | 
				
			||||
 | 
					    <AtSearchBar | 
				
			||||
 | 
					      placeholder='道路名称关键字' | 
				
			||||
 | 
					      showActionButton | 
				
			||||
 | 
					      value={keyword} | 
				
			||||
 | 
					      onChange={v => setKeyword(v)} | 
				
			||||
 | 
					      onActionClick={getDetail} | 
				
			||||
 | 
					    /> | 
				
			||||
 | 
					    <View className='top flex'>抽查日期:{moment(spotItem.date).format('YYYY-MM-DD')}</View> | 
				
			||||
 | 
					    {isNoData ? renderNoData() : renderList()} | 
				
			||||
 | 
					  </View>) | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export default Index | 
				
			||||
@ -0,0 +1,29 @@ | 
				
			|||||
 | 
					.page { | 
				
			||||
 | 
					  background-color: #fff; | 
				
			||||
 | 
					  height: 100vh; | 
				
			||||
 | 
					  font-size: 28px; | 
				
			||||
 | 
					  padding-bottom: 40px; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  .top { | 
				
			||||
 | 
					    height: 90px; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  .card { | 
				
			||||
 | 
					    padding: 20px; | 
				
			||||
 | 
					    border: gainsboro 1px solid; | 
				
			||||
 | 
					    border-radius: 10px; | 
				
			||||
 | 
					    background-color: #fff; | 
				
			||||
 | 
					    box-shadow: 10px 10px 5px rgb(219, 218, 218); | 
				
			||||
 | 
					    margin: 0 0 20px 20px; | 
				
			||||
 | 
					    width: calc(100% - 40px); | 
				
			||||
 | 
					    box-sizing: border-box; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    .item { | 
				
			||||
 | 
					      padding: 10px 0; | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					      .edit-btn { | 
				
			||||
 | 
					        width: 100px; | 
				
			||||
 | 
					      } | 
				
			||||
 | 
					    } | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
@ -1,3 +1,3 @@ | 
				
			|||||
export default { | 
					export default { | 
				
			||||
	navigationBarTitleText: '抽查详情' | 
						navigationBarTitleText: '抽查道路详情' | 
				
			||||
} | 
					} | 
				
			||||
@ -1,91 +1,61 @@ | 
				
			|||||
import React, { useEffect, useState } from 'react' | 
					import React from 'react' | 
				
			||||
import Taro, { useRouter, useDidShow } from '@tarojs/taro' | 
					import Taro, { useRouter } from '@tarojs/taro' | 
				
			||||
import { View } from '@tarojs/components' | 
					import { View, Text } from '@tarojs/components' | 
				
			||||
import { AtButton, AtSearchBar } from 'taro-ui' | 
					import { AtList, AtListItem } from "taro-ui" | 
				
			||||
import { NoData } from '@/components/index' | 
					 | 
				
			||||
import Skeleton from '../components/skeleton' | 
					 | 
				
			||||
import moment from 'moment' | 
					 | 
				
			||||
import request from '@/services/request' | 
					 | 
				
			||||
import { getRoadSpotDetail } from '@/services/api' | 
					 | 
				
			||||
import './index.scss' | 
					import './index.scss' | 
				
			||||
 | 
					
 | 
				
			||||
function Index() { | 
					const roadCode = [ | 
				
			||||
  const { item, isOld } = useRouter().params | 
					  { title: "八一乡", value: "360121206000" }, | 
				
			||||
  const spotItem = item ? JSON.parse(decodeURIComponent(item)) : null | 
					  { title: "东新乡", value: "360121205000" }, | 
				
			||||
 | 
					  { title: "富山乡", value: "360121204000" }, | 
				
			||||
  const [keyword, setKeyword] = useState('') | 
					  { title: "冈上镇", value: "360121107000" }, | 
				
			||||
  const [roadDetailList, setRoadDetailList] = useState([]) | 
					  { title: "广福镇", value: "360121108000" }, | 
				
			||||
  const [isNoData, setIsNoData] = useState(false) | 
					  { title: "黄马乡", value: "360121203000" }, | 
				
			||||
 | 
					  { title: "蒋巷镇", value: "360121105000" }, | 
				
			||||
  useDidShow(() => { | 
					  { title: "金湖管理处", value: "330052" }, | 
				
			||||
    getDetail() | 
					  { title: "泾口乡", value: "360121200000" }, | 
				
			||||
  }) | 
					  { title: "莲塘镇", value: "360121100000" }, | 
				
			||||
 | 
					  { title: "南新乡", value: "360121201000" }, | 
				
			||||
 | 
					  { title: "三江镇", value: "360121102000" }, | 
				
			||||
 | 
					  { title: "塔城乡", value: "360121202000" }, | 
				
			||||
 | 
					  { title: "塘南镇", value: "360121103000" }, | 
				
			||||
 | 
					  { title: "武阳镇", value: "360121106000" }, | 
				
			||||
 | 
					  { title: "向塘镇", value: "360121101000" }, | 
				
			||||
 | 
					  { title: "银三角管委会", value: "360121471000" }, | 
				
			||||
 | 
					  { title: "幽兰镇", value: "360121104000" }, | 
				
			||||
 | 
					] | 
				
			||||
 | 
					
 | 
				
			||||
  const getDetail = () => { | 
					function Index() { | 
				
			||||
    if (spotItem) { | 
					  const { detail } = useRouter().params | 
				
			||||
      Taro.showLoading({ title: '加载中' }) | 
					  const detailItem = detail ? JSON.parse(decodeURIComponent(detail)) : null | 
				
			||||
      request.get(`${getRoadSpotDetail()}?previewId=${spotItem.id}&keyword=${keyword}`).then(res => { | 
					
 | 
				
			||||
        Taro.hideLoading() | 
					  let townshipCode = '' | 
				
			||||
        if (res.statusCode === 200) { | 
					  const targetValue = detailItem?.road?.townshipCode ?? '' | 
				
			||||
          setRoadDetailList(res.data) | 
					  const foundItem = roadCode.find(item => item.value === targetValue) | 
				
			||||
        } else { | 
					  if (foundItem) { | 
				
			||||
          Taro.showToast({ title: '获取详情失败', icon: 'error' }) | 
					    townshipCode = foundItem.title | 
				
			||||
        } | 
					 | 
				
			||||
        if (res.data?.length) { | 
					 | 
				
			||||
          setIsNoData(false) | 
					 | 
				
			||||
  } else { | 
					  } else { | 
				
			||||
          setIsNoData(true) | 
					    townshipCode = "--" | 
				
			||||
        } | 
					  } | 
				
			||||
      }) | 
					
 | 
				
			||||
    } | 
					  return ( | 
				
			||||
  } | 
					    <View className='page'> | 
				
			||||
 | 
					      <AtList> | 
				
			||||
  const renderList = () => { | 
					        <AtListItem title='所属乡镇' extraText={townshipCode} /> | 
				
			||||
    return roadDetailList.length ? roadDetailList.map(item => <View key={item.id} className='card'> | 
					        <AtListItem title='所属行政村' extraText={detailItem.road?.village?.name || '--'} /> | 
				
			||||
      <View className='item'>道路类型:{item.road?.level ? (item.road?.level + '道') : '--'}</View> | 
					        <AtListItem title='道路名称' extraText={detailItem.road?.routeName || '--'} /> | 
				
			||||
      <View className='item'>路线名称:{item.road?.routeName || '--'}</View> | 
					        <AtListItem title='道路代码' extraText={detailItem.road?.routeCode || '--'} /> | 
				
			||||
      <View className='item at-row'> | 
					        <AtListItem title='起点桩号' extraText={detailItem.road?.startStation || '--'} /> | 
				
			||||
        <View className='at-col-6'>路线代码:{item.road?.routeCode || '--'}</View> | 
					        <AtListItem title='止点桩号' extraText={detailItem.road?.stopStation || '--'} /> | 
				
			||||
        <View className='at-col-6'>路段序号:{item.road?.sectionNo || '--'}</View> | 
					        <AtListItem title='技术等级' extraText={detailItem.road?.technicalLevel || '--'} /> | 
				
			||||
      </View> | 
					        <AtListItem title='路面类型' extraText={detailItem.road?.pavementType || '--'} /> | 
				
			||||
      <View className='item at-row'> | 
					        <AtListItem title='路面宽度' extraText={detailItem.road?.pavementWidth || '--'} /> | 
				
			||||
        <View className='at-col-6'>起点地名:{item.road?.startingPlaceName || '--'}</View> | 
					        <AtListItem title='路基宽度' extraText={detailItem.road?.subgradeWidth || '--'} /> | 
				
			||||
        <View className='at-col-6'>止点地名:{item.road?.stopPlaceName || '--'}</View> | 
					        <AtListItem title='桩号里程' extraText={detailItem.road?.chainageMileage || '--'} /> | 
				
			||||
      </View> | 
					        <AtListItem title='养护次数(次)' extraText={detailItem.maintenanceCount} /> | 
				
			||||
      <View className='item'>里程:{item.road?.chainageMileage || '--'}</View> | 
					      </AtList> | 
				
			||||
      <View className='item at-row'> | 
					 | 
				
			||||
        <View className='at-col-6'>养护次数(次):{item.maintenanceCount}</View> | 
					 | 
				
			||||
        <View className='at-col-6'> | 
					 | 
				
			||||
          <AtButton | 
					 | 
				
			||||
            className='edit-btn' | 
					 | 
				
			||||
            type='primary' | 
					 | 
				
			||||
            size='small' | 
					 | 
				
			||||
            onClick={() => Taro.navigateTo({ url: `/packages/maintenanceSpotCheck/spotChange/index?detail=${encodeURIComponent(JSON.stringify(item))}&spot=${encodeURIComponent(JSON.stringify(spotItem))}` })} | 
					 | 
				
			||||
            disabled={ | 
					 | 
				
			||||
              isOld === 'true' || | 
					 | 
				
			||||
              item.roadSpotCheckPreview?.roadSpotCheckChangeLogs?.some(l => l.changeRoadId == item.roadId) | 
					 | 
				
			||||
            } | 
					 | 
				
			||||
          >调整</AtButton> | 
					 | 
				
			||||
        </View> | 
					 | 
				
			||||
    </View> | 
					    </View> | 
				
			||||
    </View>) : <Skeleton length={3} /> | 
					  ) | 
				
			||||
  } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
  const renderNoData = () => { | 
					 | 
				
			||||
    return <View style={{ marginTop: 100 }}><NoData /></View> | 
					 | 
				
			||||
  } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
  return (<View className='page'> | 
					 | 
				
			||||
    <AtSearchBar | 
					 | 
				
			||||
      placeholder='道路名称关键字' | 
					 | 
				
			||||
      showActionButton | 
					 | 
				
			||||
      value={keyword} | 
					 | 
				
			||||
      onChange={v => setKeyword(v)} | 
					 | 
				
			||||
      onActionClick={getDetail} | 
					 | 
				
			||||
    /> | 
					 | 
				
			||||
    <View className='top flex'>抽查日期:{moment(spotItem.date).format('YYYY-MM-DD')}</View> | 
					 | 
				
			||||
    {isNoData ? renderNoData() : renderList()} | 
					 | 
				
			||||
  </View>) | 
					 | 
				
			||||
} | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
export default Index | 
					export default Index | 
				
			||||
@ -1,29 +1,9 @@ | 
				
			|||||
.page { | 
					.page { | 
				
			||||
  background-color: #fff; | 
					 | 
				
			||||
  height: 100vh; | 
					  height: 100vh; | 
				
			||||
  font-size: 28px; | 
					 | 
				
			||||
  padding-bottom: 40px; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
  .top { | 
					 | 
				
			||||
    height: 90px; | 
					 | 
				
			||||
  } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
  .card { | 
					 | 
				
			||||
    padding: 20px; | 
					 | 
				
			||||
    border: gainsboro 1px solid; | 
					 | 
				
			||||
    border-radius: 10px; | 
					 | 
				
			||||
  background-color: #fff; | 
					  background-color: #fff; | 
				
			||||
    box-shadow: 10px 10px 5px rgb(219, 218, 218); | 
					  // font-size: 28px; | 
				
			||||
    margin: 0 0 20px 20px; | 
					 | 
				
			||||
    width: calc(100% - 40px); | 
					 | 
				
			||||
    box-sizing: border-box; | 
					 | 
				
			||||
 | 
					
 | 
				
			||||
    .item { | 
					  .at-list__item-extra { | 
				
			||||
      padding: 10px 0; | 
					    max-width: 470px; | 
				
			||||
 | 
					 | 
				
			||||
      .edit-btn { | 
					 | 
				
			||||
        width: 100px; | 
					 | 
				
			||||
      } | 
					 | 
				
			||||
    } | 
					 | 
				
			||||
  } | 
					  } | 
				
			||||
} | 
					} | 
				
			||||
								
									Binary file not shown.
								
							
						
					@ -0,0 +1,15 @@ | 
				
			|||||
 | 
					import { basicAction } from '@peace/utils' | 
				
			||||
 | 
					import { ApiTable } from '$utils' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					export function getCarImages (query) { | 
				
			||||
 | 
					  return dispatch => basicAction({ | 
				
			||||
 | 
					    type: 'get', | 
				
			||||
 | 
					    dispatch: dispatch, | 
				
			||||
 | 
					    actionType: 'GET_CAR_IMAGES', | 
				
			||||
 | 
					    url: ApiTable.getCarImages, | 
				
			||||
 | 
					    query, | 
				
			||||
 | 
					    msg: { error: '获取图片失败' }, | 
				
			||||
 | 
					    reducer: { name: 'carimage' } | 
				
			||||
 | 
					  }) | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,124 @@ | 
				
			|||||
 | 
					// import React, { useState, useEffect } from 'react'
 | 
				
			||||
 | 
					// import { connect } from 'react-redux'
 | 
				
			||||
 | 
					// import { getCarImages } from '../actions/carimages'
 | 
				
			||||
 | 
					// import ProTable from '@ant-design/pro-table'
 | 
				
			||||
 | 
					// import { Form, Space, DatePicker, Button, Select, Popconfirm, Image, Tooltip } from 'antd'
 | 
				
			||||
 | 
					// import moment from 'moment'
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					// function Carimages (props) {
 | 
				
			||||
 | 
					//   const { dispatch, assess, user } = props
 | 
				
			||||
 | 
					//   const [query, setQuery] = useState({ page: 1, pageSize: 10, })
 | 
				
			||||
 | 
					//   const [loading, setLoading] = useState(false)
 | 
				
			||||
 | 
					//   const [datasource, setdatasource] = useState([])
 | 
				
			||||
 | 
					//   const [dateRange, setDateRange] = useState(['1970-1-1', '2099-12-31'])
 | 
				
			||||
 | 
					//   const { RangePicker } = DatePicker
 | 
				
			||||
 | 
					//   const [total, settotal] = useState(0)
 | 
				
			||||
 | 
					//   const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.find(i => i.resourceId === 'ASSESSMANAGE')?.isshow === "true" ? true : '')
 | 
				
			||||
 | 
					//   useEffect(() => {
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//     return () => { }
 | 
				
			||||
 | 
					//   }, [])
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//   useEffect(() => {
 | 
				
			||||
 | 
					//     getData()
 | 
				
			||||
 | 
					//   }, [query])
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//   const getData = () => {
 | 
				
			||||
 | 
					//     console.log(query, 'query')
 | 
				
			||||
 | 
					//     dispatch(getCarImages({ ...query })).then(res => {
 | 
				
			||||
 | 
					//       if (res?.success) {
 | 
				
			||||
 | 
					//         setdatasource(res?.payload?.data?.rows)
 | 
				
			||||
 | 
					//         settotal(res?.payload?.data?.count)
 | 
				
			||||
 | 
					//       }
 | 
				
			||||
 | 
					//     })
 | 
				
			||||
 | 
					//   }
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//   return (
 | 
				
			||||
 | 
					//     <div>
 | 
				
			||||
 | 
					//       <div style={{ marginBottom: '20px', display: 'flex', justifyContent: 'space-between' }}>
 | 
				
			||||
 | 
					//         <Form layout="inline" onFinish={(v) => {
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//           setQuery({
 | 
				
			||||
 | 
					//             ...query, page: 1, unit: v.unit, startTime: v?.time && moment(v?.time[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'),
 | 
				
			||||
 | 
					//             endTime: v?.time && moment(v?.time[1]).add(1, 'days').endOf('day').format('YYYY-MM-DD HH:mm:ss')
 | 
				
			||||
 | 
					//           })
 | 
				
			||||
 | 
					//         }}>
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//           {/* <Form.Item>
 | 
				
			||||
 | 
					//             <Button type="primary" htmlType="submit">搜索</Button>
 | 
				
			||||
 | 
					//           </Form.Item> */}
 | 
				
			||||
 | 
					//         </Form>
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//         {/* <Button type="primary" disabled={editAble}
 | 
				
			||||
 | 
					//           onClick={() => {
 | 
				
			||||
 | 
					//             setAssessModalVisible(true)
 | 
				
			||||
 | 
					//           }}>新增</Button> */}
 | 
				
			||||
 | 
					//       </div>
 | 
				
			||||
 | 
					//       <ProTable
 | 
				
			||||
 | 
					//         columns={[
 | 
				
			||||
 | 
					//           {
 | 
				
			||||
 | 
					//             title: '序号',
 | 
				
			||||
 | 
					//             dataIndex: 'id',
 | 
				
			||||
 | 
					//             key: 'id',
 | 
				
			||||
 | 
					//             defaultSortOrder: 'ascend',
 | 
				
			||||
 | 
					//           },
 | 
				
			||||
 | 
					//           {
 | 
				
			||||
 | 
					//             title: '抓拍图片',
 | 
				
			||||
 | 
					//             dataIndex: 'url',
 | 
				
			||||
 | 
					//             key: 'url',
 | 
				
			||||
 | 
					//             render: (t, r) => {
 | 
				
			||||
 | 
					//               if (r?.url && r?.id) {
 | 
				
			||||
 | 
					//                 return <span style={{ marginRight: 10 }}>
 | 
				
			||||
 | 
					//                   <Image src={r?.url} width={200} />
 | 
				
			||||
 | 
					//                 </span>
 | 
				
			||||
 | 
					//               } else {
 | 
				
			||||
 | 
					//                 return '--'
 | 
				
			||||
 | 
					//               }
 | 
				
			||||
 | 
					//             }
 | 
				
			||||
 | 
					//           },
 | 
				
			||||
 | 
					//           {
 | 
				
			||||
 | 
					//             title: '日期',
 | 
				
			||||
 | 
					//             dataIndex: 'time',
 | 
				
			||||
 | 
					//             key: 'time',
 | 
				
			||||
 | 
					//             render: (t, r) => {
 | 
				
			||||
 | 
					//               const localTime = moment.utc(r?.time).format('YYYY-MM-DD HH:mm:ss')
 | 
				
			||||
 | 
					//               return r?.time ? localTime : '--'
 | 
				
			||||
 | 
					//             }
 | 
				
			||||
 | 
					//           },
 | 
				
			||||
 | 
					//         ]}
 | 
				
			||||
 | 
					//         dataSource={datasource || []}
 | 
				
			||||
 | 
					//         loading={loading}
 | 
				
			||||
 | 
					//         pagination={{
 | 
				
			||||
 | 
					//           total: total || 0,
 | 
				
			||||
 | 
					//           pageSize: 10,
 | 
				
			||||
 | 
					//           defaultPageSize: 10,
 | 
				
			||||
 | 
					//           showSizeChanger: false,
 | 
				
			||||
 | 
					//           onChange: (page, pageSize) => {
 | 
				
			||||
 | 
					//             setQuery({
 | 
				
			||||
 | 
					//               ...query,
 | 
				
			||||
 | 
					//               page,
 | 
				
			||||
 | 
					//               limit: pageSize
 | 
				
			||||
 | 
					//             })
 | 
				
			||||
 | 
					//           }
 | 
				
			||||
 | 
					//         }}
 | 
				
			||||
 | 
					//         rowKey="key"
 | 
				
			||||
 | 
					//         toolBarRender={false}
 | 
				
			||||
 | 
					//         search={false}
 | 
				
			||||
 | 
					//       />
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					//     </div>
 | 
				
			||||
 | 
					//   )
 | 
				
			||||
 | 
					// }
 | 
				
			||||
 | 
					// function mapStateToProps (state) {
 | 
				
			||||
 | 
					//   const { auth, assess } = state
 | 
				
			||||
 | 
					//   return {
 | 
				
			||||
 | 
					//     user: auth.user,
 | 
				
			||||
 | 
					//     assess: assess.data || [],
 | 
				
			||||
 | 
					//   }
 | 
				
			||||
 | 
					// }
 | 
				
			||||
 | 
					// export default connect(mapStateToProps)(Carimages)
 | 
				
			||||
					Loading…
					
					
				
		Reference in new issue