wenlele 1 year ago
parent
commit
aa47e846bb
  1. 4
      api/app/lib/controllers/data/vehicle.js
  2. 21
      jenkinsfilenew_node
  3. 7
      scripts/1.3.1/data/1_insert_report_data/Dockerfilenew
  4. 10
      scripts/1.3.1/data/1_insert_report_data/index.js
  5. 50
      weapp/src/packages/patrol/index.jsx
  6. 41
      weapp/src/packages/patrol/index.scss
  7. 3
      web/client/src/sections/fillion/actions/infor.js
  8. 10
      web/client/src/sections/fillion/components/highwaysTable.js
  9. 94
      web/client/src/sections/fillion/components/luzhengmodel.js
  10. 88
      web/client/src/sections/fillion/containers/luzheng.js
  11. 2
      web/client/src/sections/fillion/containers/maintenanceSpotCheck.js
  12. 4
      web/client/src/sections/quanju/containers/footer/conserve/left/left-center.js
  13. 4
      web/client/src/sections/quanju/containers/footer/conserve/right/right-center.js
  14. 14
      web/client/src/sections/quanju/containers/footer/conserve/right/right-top.js
  15. 4
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js
  16. 14
      web/client/src/sections/quanju/containers/public/olMap.js

4
api/app/lib/controllers/data/vehicle.js

@ -7,8 +7,8 @@ async function get(ctx) {
const { type } = ctx.request.body; const { type } = ctx.request.body;
const { name } = ctx.query; const { name } = ctx.query;
const sequelize = ctx.fs.dc.orm const sequelize = ctx.fs.dc.orm
const sqlStr = `select sum(p.road_marking) 标线,sum(p.roadside_ditch) 边沟, const sqlStr = `select sum(p.road_marking) "标线(米)",sum(p.roadside_ditch) "边沟(米)",
sum(p.guardrail) 护栏, sum(p.roadside_trees) 行道树,sum(p.wrong_lane) 错车道 sum(p.guardrail) "护栏(米)", sum(p.roadside_trees) "行道树(棵)",sum(p.wrong_lane) "错车道(个)"
from ( from (
select t.*,row_number() over (partition by t.luduan order by t.time desc ) rn from ( select t.*,row_number() over (partition by t.luduan order by t.time desc ) rn from (
select code_road||'-'||road_section_start||'-'||road_section_end luduan, select code_road||'-'||road_section_start||'-'||road_section_end luduan,

21
jenkinsfilenew_node

@ -0,0 +1,21 @@
podTemplate {
node('pod-templ-jenkins-slave-common') {
env.IMAGE_NAME = "${IOT_IMAGES_REGISTRY}/${SMARTCITY}/${JOB_NAME}"
env.IMAGE_NAME_SHORT = "${SMARTCITY}/${JOB_NAME}"
env.CODE_ADDR = "${GIT_ADDRESS}/free-sun/Highways4Good.git"
stage('Run shell') {
git branch: 'dev', credentialsId: 'gitea-builder', url: "${CODE_ADDR}"
container('image-builder') {
sh'''
/kaniko/executor --context=${BUILD_WORKSPACE} --dockerfile=./scripts/1.3.1/data/1_insert_report_data/Dockerfilenew --destination=${IMAGE_NAME}:${IMAGE_VERSION} --cache=false --cleanup
'''
}
buildName "${IMAGE_NAME_SHORT}:${IMAGE_VERSION}"
buildDescription "${IMAGE_NAME}:${IMAGE_VERSION}"
}
}
}

7
scripts/1.3.1/data/1_insert_report_data/Dockerfilenew

@ -0,0 +1,7 @@
FROM repository.anxinyun.cn/base-images/nodejs12:20.10.12.2
COPY ./scripts/1.3.1/data/1_insert_report_data /var/app
WORKDIR /var/app
RUN npm cache clean -f
RUN rm -rf package-lock.json
RUN npm install --registry https://nexus.ngaiot.com/repository/fs-npm/
CMD ["node", "index.js"]

10
scripts/1.3.1/data/1_insert_report_data/index.js

@ -6,13 +6,13 @@ try {
// 测试环境 // 测试环境
const pool = new Pool({ const pool = new Pool({
user: 'postgres', user: 'FashionAdmin',
host: '10.8.30.32', host: '10.8.40.223',
database: 'highways4good', database: 'sihaotest',
password: '123', password: 'Fas123_',
port: 5432, port: 5432,
}) })
const userId = 5 const userId = 21
// 商用环境 // 商用环境
// const pool = new Pool({ // const pool = new Pool({

50
weapp/src/packages/patrol/index.jsx

@ -1444,12 +1444,14 @@ const Index = () => {
isSuperAdmin && (wait === 'wait' || kind === 'handle') && <View className='appoint'> isSuperAdmin && (wait === 'wait' || kind === 'handle') && <View className='appoint'>
{ {
handleState === '待处理' && <> handleState === '待处理' && <>
<RadioGroup onChange={(e) => { <View className='appoint-radio'>
setIsAppoint(e.detail.value === '指派' ? true : false) <RadioGroup onChange={(e) => {
}}> setIsAppoint(e.detail.value === '指派' ? true : false)
<Radio value='指派' checked={isAppoint} color='#0080EE' className='radio'>指派</Radio> }}>
<Radio value='不处理' checked={!isAppoint} color='#0080EE' className='radio' style={{ marginLeft: 10 }}>不处理</Radio> <Radio value='指派' checked={isAppoint} color='#0080EE'>指派</Radio>
</RadioGroup> <Radio value='不处理' checked={!isAppoint} color='#0080EE' style={{ marginLeft: 10 }}>不处理</Radio>
</RadioGroup>
</View>
{ {
isAppoint && <> isAppoint && <>
<View className='picker'> <View className='picker'>
@ -1463,13 +1465,15 @@ const Index = () => {
<Image src={arrowIcon} className='arrow' /> <Image src={arrowIcon} className='arrow' />
</Picker> </Picker>
</View> </View>
<Textarea <View className='handle-advice'>
placeholder='请输入处理意见' <Textarea
value={handleAdvice} placeholder='请输入处理意见'
onInput={e => setHandleAdvice(e.target.value)} value={handleAdvice}
disabled={isView && handleState !== '待处理'} onInput={e => setHandleAdvice(e.target.value)}
maxlength={1024} disabled={isView && handleState !== '待处理'}
/> maxlength={1024}
/>
</View>
</> </>
} }
</> </>
@ -1478,33 +1482,33 @@ const Index = () => {
} }
{ {
handleState !== '待处理' && <View style={{ backgroundColor: '#fff', padding: 10 }}> handleState !== '待处理' && <View >
{ {
isSuperAdmin && handleState === '不处理' && <Text> isSuperAdmin && handleState === '不处理' && <View className='general-cell'>
处理结果暂不进行处理 处理结果暂不进行处理
</Text> </View>
} }
{ {
(!isSuperAdmin || (isSuperAdmin && (handleState === '已指派' || handleState === '已处理'))) && <> (!isSuperAdmin || (isSuperAdmin && (handleState === '已指派' || handleState === '已处理'))) && <View className='general-cell' style={{ padding: '5px 10px' }}>
<View>处理意见</View> <View>处理意见</View>
<View>{handleAdvice}</View> <View>{handleAdvice}</View>
</> </View>
} }
{ {
(isSuperAdmin && (handleState === '已指派' || handleState === '已处理')) && <> (isSuperAdmin && (handleState === '已指派' || handleState === '已处理')) && <View className='general-cell' >
<View style={{ marginTop: 10 }}>责任人</View> <View>责任人</View>
<View> <View>
{appointUser !== null ? allDepUsers.find(d => d.depId === userList.find(u => u.id === appointUser)?.departmentId)?.depName : ''} {appointUser !== null ? allDepUsers.find(d => d.depId === userList.find(u => u.id === appointUser)?.departmentId)?.depName : ''}
- -
{appointUser !== null ? userList.find(u => u.id === appointUser)?.name : ''} {appointUser !== null ? userList.find(u => u.id === appointUser)?.name : ''}
</View> </View>
</> </View>
} }
</View> </View>
} }
{ {
((isSuperAdmin && handleState == '已处理') || !isSuperAdmin) && <> ((isSuperAdmin && handleState == '已处理') || !isSuperAdmin) && <View style={{ marginTop: 2 }}>
<View className='patrol-img'><Text style={{ color: 'red' }}>*</Text>处理内容</View> <View className='patrol-img'><Text style={{ color: 'red' }}>*</Text>处理内容</View>
<AtTextarea <AtTextarea
placeholder='请输入处理内容' placeholder='请输入处理内容'
@ -1532,7 +1536,7 @@ const Index = () => {
/> : '' /> : ''
} }
</View> </View>
</> </View>
} }
{handle != 'handle' && handleState != '已处理' ? <AtButton type='primary' className='sub-btn' onClick={handleOk}>提交</AtButton> : ''} {handle != 'handle' && handleState != '已处理' ? <AtButton type='primary' className='sub-btn' onClick={handleOk}>提交</AtButton> : ''}

41
weapp/src/packages/patrol/index.scss

@ -283,14 +283,28 @@ page {
} }
.appoint { .appoint {
margin-top: 10px; // margin-top: 10px;
padding: 10px 20px; // padding: 10px 20px;
background-color: #fff; // background-color: #fff;
.appoint-radio {
height: 96px;
background-color: #fff;
margin-top: 5px;
padding: 0 20px;
display: flex;
justify-content: start;
align-items: center;
}
.picker { .picker {
margin: 10px 0; height: 96px;
background-color: #fff;
margin-top: 5px;
padding: 0 20px;
display: flex; display: flex;
justify-content: flex-start; justify-content: space-between;
align-items: center;
.arrow { .arrow {
width: 24px; width: 24px;
@ -298,5 +312,22 @@ page {
margin: 0 10px; margin: 0 10px;
} }
} }
.handle-advice {
background-color: #fff;
margin-top: 5px;
padding: 10px 20px;
}
}
.general-cell {
min-height: 96px;
background-color: #fff;
margin-top: 5px;
padding: 0px 20px;
display: flex;
justify-content: start;
align-items: center;
flex-wrap: wrap;
} }
} }

3
web/client/src/sections/fillion/actions/infor.js

@ -108,8 +108,7 @@ export function putRoadway(query) {
data: query, data: query,
actionType: 'PUT_ROADWAY', actionType: 'PUT_ROADWAY',
url: ApiTable.putRoadway, url: ApiTable.putRoadway,
msg: { option: '编辑道路信息' }, msg: { option: query?.roadId?'编辑':'新增' + '道路信息' },
}); });
} }
export function getBridge(query) { export function getBridge(query) {

10
web/client/src/sections/fillion/components/highwaysTable.js

@ -270,6 +270,7 @@ const TransporTationTable = (props) => {
multipleLine: true, multipleLine: true,
menu: { menu: {
type: 'tab',
activeKey, activeKey,
onChange: (key) => setActiveKey(key), onChange: (key) => setActiveKey(key),
items: [ items: [
@ -298,7 +299,7 @@ const TransporTationTable = (props) => {
options={false} options={false}
ref={c => { finishedProductTable = c; }} ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' //rowKey='id'
onReset={(v) => { onReset={(v) => {
setSitename('') setSitename('')
}} }}
@ -317,7 +318,12 @@ const TransporTationTable = (props) => {
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getHighways(query)); const res = await dispatch(getHighways(query));
let rslt = res.payload.data?.vehicleRes?.filter(item => item.name !== '路牌名') let rslt = res.payload.data?.vehicleRes?.map(item => {
return {
...item,
name: item.name + "(个)"
}
})
const additionalProperties = Object.entries(res.payload.data?.conserveData[0]).map(([key, value]) => ({ const additionalProperties = Object.entries(res.payload.data?.conserveData[0]).map(([key, value]) => ({
id: null, id: null,
name: key, name: key,

94
web/client/src/sections/fillion/components/luzhengmodel.js

@ -4,15 +4,15 @@ import { Form, Input, Select, DatePicker, InputNumber, Button, Modal } from 'ant
import { unitList } from '../containers/assess' import { unitList } from '../containers/assess'
import { getAssess, delAssess, editAssess } from '../actions/assess'; import { getAssess, delAssess, editAssess } from '../actions/assess';
import moment from 'moment'; import moment from 'moment';
import { getRoadadministration,addRoadadministration,delRoadadministration,modifyRoadadministration } from '../actions/luzheng'; import { getRoadadministration, addRoadadministration, delRoadadministration, modifyRoadadministration } from '../actions/luzheng';
// import Uploads from "../../../../components/Upload/index" // import Uploads from "../../../../components/Upload/index"
// import Uploads from '../../../components/Upload/index' // import Uploads from '../../../components/Upload/index'
import Uploads from './uploads' import Uploads from './uploads'
const { Option } = Select; const { Option } = Select;
const LuzhengModel = ({ editData, check, visible, onCancel, dispatch }) => { const LuzhengModel = ({ editData, check, visible, onCancel, dispatch }) => {
const [form] = Form.useForm(); const [form] = Form.useForm();
console.log(editData,'editData') // console.log(editData,'editData')
return ( return (
<Modal <Modal
title="路政信息" title="路政信息"
@ -21,29 +21,61 @@ const LuzhengModel = ({ editData, check, visible, onCancel, dispatch }) => {
cancelButtonProps={{ cancelButtonProps={{
disabled: check, disabled: check,
}} }}
footer={!check ? [
<Button key="submit" type="primary" onClick={() => {
if (check) {
return onCancel()
}
form.validateFields().then(values => {
if (editData) {
dispatch(modifyRoadadministration(editData?.id, {
...values
})).then(res => {
if (res.success) {
onCancel()
}
})
} else {
dispatch(addRoadadministration({
...values,
})).then(res => {
if (res.success) {
onCancel()
}
})
}
})
}}>
确定
</Button>,
<Button onClick={onCancel}>
取消
</Button>
] : null}
onOk={() => { onOk={() => {
if (check) { if (check) {
return onCancel() return onCancel()
} }
form.validateFields().then(values => { form.validateFields().then(values => {
if(editData){ if (editData) {
dispatch(modifyRoadadministration(editData?.id,{ dispatch(modifyRoadadministration(editData?.id, {
...values ...values
})).then(res => { })).then(res => {
if (res.success) { if (res.success) {
onCancel() onCancel()
} }
}) })
}else{ } else {
dispatch(addRoadadministration({ dispatch(addRoadadministration({
...values, ...values,
})).then(res => { })).then(res => {
if (res.success) { if (res.success) {
onCancel() onCancel()
} }
}) })
} }
}) })
}} }}
onCancel={() => { onCancel={() => {
@ -65,43 +97,43 @@ const LuzhengModel = ({ editData, check, visible, onCancel, dispatch }) => {
}} }}
> >
<Form.Item name="enforcementdate" label="执法日期" rules={[{ required: true, message: '请填写' }]}> <Form.Item name="enforcementdate" label="执法日期" rules={[{ required: true, message: '请填写' }]}>
{/* <Select> {/* <Select>
{                         {
unitList.map(item => (                             unitList.map(item => (
<Option value={item} key={item} />                                 <Option value={item} key={item} />
))                             ))
}                         }
</Select> */}                     </Select> */}
<DatePicker/> <DatePicker />
</Form.Item> </Form.Item>
<Form.Item name="roadname" label="执法道路" rules={[{ required: true, message: '请填写' },{ max: 100, message: '不可超过一百个字符' }]}> <Form.Item name="roadname" label="执法道路" rules={[{ required: true, message: '请填写' }, { max: 100, message: '不可超过一百个字符' }]}>
<Input/> <Input />
</Form.Item> </Form.Item>
<Form.Item name="enforcementreslt" label="执法成果" rules={[{ required: true, message: '请填写' },{ max: 100, message: '不可超过一百个字符' }]}> <Form.Item name="enforcementreslt" label="执法成果" rules={[{ required: true, message: '请填写' }, { max: 100, message: '不可超过一百个字符' }]}>
<Input/> <Input />
</Form.Item> </Form.Item>
<Form.Item name="picfile" label="执法图片"> <Form.Item name="picfile" label="执法图片">
<Uploads <Uploads
maxFilesNum={3} maxFilesNum={3}
fileTypes={['png','jpg','jpeg']} fileTypes={['png', 'jpg', 'jpeg']}
maxFileSize={200} maxFileSize={200}
fileList={editData?.picfile} fileList={editData?.picfile}
listType ={'picture-card'} listType={'picture-card'}
isedit={editData?true:false} isedit={editData ? true : false}
/> />
</Form.Item> </Form.Item>
</Form> </Form>
</Modal> </Modal>
); );
}; };
function mapStateToProps (state) { function mapStateToProps(state) {
const { auth, assess } = state const { auth, assess } = state
return { return {
user: auth.user, user: auth.user,
assess: assess.data || [] assess: assess.data || []
} }
} }
export default connect(mapStateToProps)(LuzhengModel); export default connect(mapStateToProps)(LuzhengModel);

88
web/client/src/sections/fillion/containers/luzheng.js

@ -1,10 +1,10 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { getAssess, delAssess, editAssess } from '../actions/assess'; import { getAssess, delAssess, editAssess } from '../actions/assess';
import { getRoadadministration,addRoadadministration,delRoadadministration,modifyRoadadministration } from '../actions/luzheng'; import { getRoadadministration, addRoadadministration, delRoadadministration, modifyRoadadministration } from '../actions/luzheng';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import AssessModal from '../components/luzhengmodel'; import AssessModal from '../components/luzhengmodel';
import { Form, Space, DatePicker, Button, Select, Popconfirm ,Image} from 'antd' import { Form, Space, DatePicker, Button, Select, Popconfirm, Image, Tooltip } from 'antd'
import moment from 'moment'; import moment from 'moment';
import { values } from 'lodash'; import { values } from 'lodash';
@ -35,13 +35,13 @@ function Assess(props) {
const [query, setQuery] = useState({ page: 1, pageSize: 10 }) const [query, setQuery] = useState({ page: 1, pageSize: 10 })
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [isCheck, setIsCheck] = useState(false) const [isCheck, setIsCheck] = useState(false)
const [datasource,setdatasource] = useState([]) const [datasource, setdatasource] = useState([])
const [dateRange, setDateRange] = useState(['1970-1-1', '2099-12-31']); const [dateRange, setDateRange] = useState(['1970-1-1', '2099-12-31']);
const { RangePicker } = DatePicker const { RangePicker } = DatePicker
const [total,settotal]= useState(0) const [total, settotal] = useState(0)
const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.find(i => i.resourceId === 'ASSESSMANAGE')?.isshow === "true" ? true : '') const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.find(i => i.resourceId === 'ASSESSMANAGE')?.isshow === "true" ? true : '')
useEffect(() => { useEffect(() => {
return () => { }; return () => { };
}, []); }, []);
@ -51,9 +51,9 @@ function Assess(props) {
const getData = () => { const getData = () => {
setLoading(true) setLoading(true)
console.log(query,'query') console.log(query, 'query')
dispatch(getRoadadministration({...query})).then(res => { dispatch(getRoadadministration({ ...query })).then(res => {
if(res?.success){ if (res?.success) {
setdatasource(res?.payload?.data?.rows) setdatasource(res?.payload?.data?.rows)
settotal(res?.payload?.data?.count) settotal(res?.payload?.data?.count)
setLoading(false) setLoading(false)
@ -65,14 +65,16 @@ function Assess(props) {
<div> <div>
<div style={{ marginBottom: '20px', display: 'flex', justifyContent: 'space-between' }}> <div style={{ marginBottom: '20px', display: 'flex', justifyContent: 'space-between' }}>
<Form layout="inline" onFinish={(v) => { <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'), setQuery({
endTime : v?.time && moment(v?.time[1]).add(1, 'days').endOf('day').format('YYYY-MM-DD HH:mm:ss') }) ...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 name="time" label="执行日期"> <Form.Item name="time" label="执行日期">
<RangePicker onChange={(date, dateString) => { setDateRange(dateString) }} style={{ marginRight: '50px' }} /> <RangePicker onChange={(date, dateString) => { setDateRange(dateString) }} style={{ marginRight: '50px' }} />
</Form.Item> </Form.Item>
<Form.Item> <Form.Item>
@ -90,40 +92,50 @@ function Assess(props) {
title: '执法日期', title: '执法日期',
dataIndex: 'enforcementdate', dataIndex: 'enforcementdate',
key: 'enforcementdate', key: 'enforcementdate',
render:(t,r)=>{ render: (t, r) => {
return r?.enforcementdate?moment(r?.enforcementdate).format('YYYY-MM-DD'):'--' return r?.enforcementdate ? moment(r?.enforcementdate).format('YYYY-MM-DD') : '--'
} }
}, },
{ {
title: '执法道路', title: '执法道路',
dataIndex: 'roadname', dataIndex: 'roadname',
key: 'roadname' key: 'roadname',
render: (t, r) => {
return <Tooltip title={r?.roadname}>
<span className='shenglve'>{r?.roadname && r?.roadname?.length > 20 ? r?.roadname?.substr(0, 20) + '...' : r?.roadname}</span>
</Tooltip>
}
}, },
{ {
title: '执法成果', title: '执法成果',
dataIndex: 'enforcementreslt', dataIndex: 'enforcementreslt',
key: 'enforcementreslt', key: 'enforcementreslt',
render: (t, r) => {
return <Tooltip title={r?.enforcementreslt}>
<span className='shenglve'>{r?.enforcementreslt && r?.enforcementreslt?.length > 20 ? r?.enforcementreslt?.substr(0, 20) + '...' : r?.enforcementreslt}</span>
</Tooltip>
}
}, },
{ {
title: '执法图片', title: '执法图片',
dataIndex: 'picfile', dataIndex: 'picfile',
key: 'picfile', key: 'picfile',
render:(t,r)=>{ render: (t, r) => {
if(r?.picfile && r?.picfile?.length!==0){ if (r?.picfile && r?.picfile?.length !== 0) {
return r?.picfile?.map(i=>{ return r?.picfile?.map(i => {
return <span style={{marginRight:10}}> return <span style={{ marginRight: 10 }}>
<Image src={i?.url} width={80}/> <Image src={i?.url} width={80} />
</span> </span>
}) })
}else{ } else {
return '--' return '--'
} }
} }
}, },
{ {
@ -139,8 +151,8 @@ function Assess(props) {
<Button type="link" onClick={() => { <Button type="link" onClick={() => {
setAssessModalVisible(true) setAssessModalVisible(true)
setEditData(record) setEditData(record)
}} disabled = { editAble }>编辑</Button> }} disabled={editAble}>编辑</Button>
<Popconfirm <Popconfirm
title="确定删除此条数据吗?" title="确定删除此条数据吗?"
onConfirm={() => { onConfirm={() => {
@ -148,8 +160,8 @@ function Assess(props) {
dispatch(delRoadadministration(record.id)).then(res => { dispatch(delRoadadministration(record.id)).then(res => {
setLoading(false) setLoading(false)
if (res.success) { if (res.success) {
setQuery({...query, page: 1, pageSize: 10, limit: 10}) setQuery({ ...query, page: 1, pageSize: 10, limit: 10 })
// getData(page) // getData(page)
} }
}) })
}} }}
@ -167,7 +179,7 @@ function Assess(props) {
defaultPageSize: 10, defaultPageSize: 10,
showSizeChanger: false, showSizeChanger: false,
onChange: (page, pageSize) => { onChange: (page, pageSize) => {
console.log(page,'page') console.log(page, 'page')
setQuery({ setQuery({
...query, ...query,
page, limit: pageSize page, limit: pageSize
@ -179,7 +191,7 @@ function Assess(props) {
search={false} search={false}
/> />
{ {
assessModalVisible ? <AssessModal check={isCheck} visible={assessModalVisible} editData={editData} onCancel={() => { assessModalVisible ? <AssessModal check={isCheck} visible={assessModalVisible} editData={editData} onCancel={() => {
getData() getData()
setIsCheck(false) setIsCheck(false)
setEditData(null) setEditData(null)

2
web/client/src/sections/fillion/containers/maintenanceSpotCheck.js

@ -479,7 +479,7 @@ const MaintenanceSpotCheck = (props) => {
</Form.Item> </Form.Item>
<Form.Item className="ant-row" > <Form.Item className="ant-row" >
<Button style={{ marginLeft: '40%' }} type='primary' onClick={extractHandler}>开始抽取</Button> <Button style={{ marginLeft: '70%' }} type='primary' onClick={extractHandler}>开始抽取</Button>
</Form.Item> </Form.Item>
<Form.Item label='抽查总数' name='result'> <Form.Item label='抽查总数' name='result'>
<Input disabled /> <Input disabled />

4
web/client/src/sections/quanju/containers/footer/conserve/left/left-center.js

@ -114,8 +114,8 @@ const LeftCenter = (props) => {
grid: { grid: {
left: '3%', left: '3%',
right: '12%', right: '12%',
bottom: '21%', bottom: '28%',
top: '4%', top: '8%',
containLabel: true containLabel: true
}, },
}} }}

4
web/client/src/sections/quanju/containers/footer/conserve/right/right-center.js

@ -115,8 +115,8 @@ const RightCenter = (props) => {
grid: { grid: {
left: '3%', left: '3%',
right: '4%', right: '4%',
bottom: '21%', bottom: '28%',
top: '4%', top: '8%',
containLabel: true containLabel: true
}, },
}} }}

14
web/client/src/sections/quanju/containers/footer/conserve/right/right-top.js

@ -74,8 +74,16 @@ const RightTop = (props) => {
}}> }}>
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "1%" }} /> : ""} {beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "1%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""} {beijing == index ? <img src='/assets/images/leadership/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "40%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item?.user?.name || '--'}</p> <p style={{
<p style={{ textAlign: "left", width: "30%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p> textAlign: "center", width: "40%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)",
}} title={item?.user?.name}>{item?.user?.name || '--'}</p>
<p style={{
textAlign: "left", width: "30%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)",
whiteSpace: 'nowrap',
overflow: 'hidden',
textOverflow: 'ellipsis',
maxWidth: '120px' // 可根据需要调整最大宽度
}} title={item?.road} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "right", width: "30%", position: "absolute", right: "3%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}> <p style={{ textAlign: "right", width: "30%", position: "absolute", right: "3%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>
{ {
item.time ? item.time ?
@ -113,7 +121,7 @@ const RightTop = (props) => {
) )
}) })
} }
</div> </div >
) )
} }

4
web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js

@ -94,7 +94,9 @@ const Right = (props) => {
{/* <div style={{ width: (roads?.["小桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%", borderRadius: "0 2% 2% 0" }}></div> */} {/* <div style={{ width: (roads?.["小桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%", borderRadius: "0 2% 2% 0" }}></div> */}
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%" }}> <div style={{ width: "96%", position: "relative", left: "2%" }}>
<p style={{ width: "50%", position: "absolute", color: "rgba(216,240,255,0.8)", fontSize: "18px" }}>中小桥梁<span style={{ marginLeft: "4%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF" }}>{isNaN(roads?.["小桥"] + roads?.["中桥"]) ? "" : roads?.["小桥"] + roads?.["中桥"]}</span><span style={{ marginLeft: "4%" }}></span></p> <p style={{ width: "50%", position: "absolute", color: "rgba(216,240,255,0.8)", fontSize: "18px" }}>中小桥梁<span style={{ marginLeft: "4%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF" }}>159</span><span style={{ marginLeft: "4%" }}></span></p>
{/* <p style={{ width: "50%", position: "absolute", color: "rgba(216,240,255,0.8)", fontSize: "18px" }}>中小桥梁<span style={{ marginLeft: "4%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF" }}>{isNaN(roads?.["小桥"] + roads?.["中桥"]) ? "" : roads?.["小桥"] + roads?.["中桥"]}</span><span style={{ marginLeft: "4%" }}>座</span></p> */}
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span>{isNaN((((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)) ? "" : (((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span><span>%</span></p> <p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span>{isNaN((((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)) ? "" : (((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span><span>%</span></p>
</div> </div>
</div> </div>

14
web/client/src/sections/quanju/containers/public/olMap.js

@ -43,6 +43,16 @@ const OlMap = (props) => {
olMap.closeOverlay('clickOpen') olMap.closeOverlay('clickOpen')
olMap.closeOverlay('pointClickOpen') olMap.closeOverlay('pointClickOpen')
olMap.removeGeometryLayer('geometry0') olMap.removeGeometryLayer('geometry0')
if (tab != 'conserve') {
patrolList.forEach((d, index) => {
olMap.removeGeometryLayer('geometry_patrol_' + index)
})
}
if (tab != 'build') {
roadProjectList.forEach((d, index) => {
olMap.removeGeometryLayer('geometry_road_' + index)
})
}
} }
}, [tab]) }, [tab])
@ -282,10 +292,6 @@ const OlMap = (props) => {
layerName: 'geometry_patrol_' + index layerName: 'geometry_patrol_' + index
}); });
}); });
} else if (tab != 'conserve' && olMap) {
patrolList.forEach((d, index) => {
olMap.removeGeometryLayer('geometry_patrol_' + index)
})
} }
}, [patrolList, olMap, tab]) }, [patrolList, olMap, tab])

Loading…
Cancel
Save