巴林闲侠 2 years ago
parent
commit
45fb1135e2
  1. 3
      weapp/src/app.config.js
  2. 7
      weapp/src/config.js
  3. 3
      weapp/src/packages/video/index.config.js
  4. 85
      weapp/src/packages/video/index.jsx
  5. 28
      weapp/src/packages/video/index.scss
  6. 4
      weapp/src/pages/home/index.jsx
  7. 662
      web/client/src/sections/fillion/actions/infor.js
  8. 2
      web/client/src/sections/fillion/components/bridgeTable.js
  9. 213
      web/client/src/sections/fillion/components/infor/videoUpload.js
  10. 10
      web/client/src/sections/fillion/components/inforTable.js
  11. 316
      web/client/src/sections/fillion/components/promotionalTable.js
  12. 2
      web/client/src/sections/fillion/components/transportationTable.js
  13. 7
      web/client/src/sections/fillion/nav-item.js
  14. 8
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js
  15. 8
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/handong.js
  16. 10
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js
  17. 2
      web/client/src/utils/webapi.js

3
weapp/src/app.config.js

@ -10,7 +10,8 @@ export default {
'patrol/index', 'patrol/index',
'patrolView/index', 'patrolView/index',
'changePassword/index', 'changePassword/index',
'changePassword/success/index' 'changePassword/success/index',
'video/index',
] ]
}], }],
permission: { permission: {

7
weapp/src/config.js

@ -8,9 +8,10 @@ const baseConfig = {
}; };
const development = { const development = {
baseUrl: 'https://c5a6-117-90-37-10.ap.ngrok.io', baseUrl: 'http://221.230.55.29:31919',
webUrl: 'https://smartwater.anxinyun.cn', // baseUrl: 'https://c5a6-117-90-37-10.ap.ngrok.io',
pcode: 'fce4afe2-5b6a-408a-ab18-a2afa7fa027c', // webUrl: 'https://smartwater.anxinyun.cn',
// pcode: 'fce4afe2-5b6a-408a-ab18-a2afa7fa027c',
imgUrl: 'http://test.resources.anxinyun.cn/', imgUrl: 'http://test.resources.anxinyun.cn/',
// requestCache: true, //开启异步请求缓存 // requestCache: true, //开启异步请求缓存
...baseConfig ...baseConfig

3
weapp/src/packages/video/index.config.js

@ -0,0 +1,3 @@
export default {
navigationBarTitleText: '视频监控'
}

85
weapp/src/packages/video/index.jsx

@ -0,0 +1,85 @@
import React, { useState, useEffect } from 'react'
import Taro from '@tarojs/taro'
import { View, Image, Input, Picker, LivePlayer } from '@tarojs/components'
import request from '@/services/request'
import './index.scss'
import '../patrolView/index.scss'
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'
import chevronDown from '../../static/img/patrolView/chevron-down.png'
import searchIcon from '../../static/img/patrolView/search.png'
function Index() {
const [isBus, setIsBus] = useState(true)
const [filterText, setFilterText] = useState('')
const [videoList, setVideoList] = useState([])
useEffect(() => {
getVideoList()
}, [])
const getVideoList = () => {
let nextVideoList = []
for (let i = 0; i < 10; i++) {
nextVideoList.push({ title: '视频' + i, url: '链接' + i })
}
setVideoList(nextVideoList)
}
const onTypeChange = bool => {
setIsBus(bool)
}
const handleConfirm = e => {
}
const handleInput = e => {
}
return (
<View>
<View className='type-box'>
<View className='item' onClick={() => onTypeChange(true)}>
<Image className='type-img' src={isBus ? patrolActiveIcon : patrolIcon} />
<View style={{ color: isBus ? '#346FC2' : '#999999' }}>公交</View>
</View>
<View className='line'></View>
<View className='item' onClick={() => onTypeChange(false)}>
<Image className='type-img' src={isBus ? conserveIcon : conserveActiveIcon} />
<View style={{ color: isBus ? '#999999' : '#346FC2' }}>道路</View>
</View>
</View>
<View className='filter-box'>
<View className='filter-item'>
<View style={{ float: 'left', marginLeft: '20rpx', color: '#333' }}>路段</View>
<Picker>
<View className='filter-name'>{'请选择'}</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={filterText} placeholder='请输入道路名称' onConfirm={handleConfirm} onInput={handleInput} />
</View>
</View>
<View className='video-box'>
{
videoList && videoList.map(v => {
return (
<View className='video-card'>
<View className='title'>{v.title}</View>
<LivePlayer className='video' src={v.url} mode='live' />
</View>
)
})
}
</View>
</View>
)
}
export default Index

28
weapp/src/packages/video/index.scss

@ -0,0 +1,28 @@
page {
background-color: #f6f6f6;
.video-box {
padding-top: 180px;
.video-card {
background-color: #fff;
height: 488px;
margin-bottom: 20px;
display: flex;
flex-direction: column;
align-items: left;
.title {
height: 88px;
margin-left: 30px;
display: flex;
align-items: center;
}
.video {
height: 400px;
width: 100%;
}
}
}
}

4
weapp/src/pages/home/index.jsx

@ -38,7 +38,9 @@ const Index = () => {
} }
function toVideo() { function toVideo() {
Taro.navigateTo({
url: '/packages/video/index'
})
} }
return ( return (

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

@ -1,15 +1,15 @@
import { basicAction } from '@peace/utils' import { basicAction } from '@peace/utils'
import { ApiTable } from '$utils' import { ApiTable } from '$utils'
export function getDepMessage() { export function getDepMessage () {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
actionType: 'GET_DEPARTMENT_MESSAGE', actionType: 'GET_DEPARTMENT_MESSAGE',
url: ApiTable.getDepMessage, url: ApiTable.getDepMessage,
msg: { error: '获取部门信息失败' }, msg: { error: '获取部门信息失败' },
reducer: { name: 'depMessage' } reducer: { name: 'depMessage' }
}); });
} }
// export function getReportStatistic(query) { // export function getReportStatistic(query) {
// return dispatch => basicAction({ // return dispatch => basicAction({
@ -23,304 +23,348 @@ export function getDepMessage() {
// }); // });
// } // }
export function getOperaTional(query) { export function getOperaTional (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_OPERA_TIONAL', actionType: 'GET_OPERA_TIONAL',
url: ApiTable.getOperaTional, url: ApiTable.getOperaTional,
msg: { error: '获取客运信息失败' }, msg: { error: '获取客运信息失败' },
}); });
} }
export function putOperaTional(query) { export function putOperaTional (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_OPERA_TIONAL', actionType: 'PUT_OPERA_TIONAL',
url: ApiTable.putOperaTional, url: ApiTable.putOperaTional,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
}); });
} }
export function getSpecificVehicle(query) { export function getSpecificVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_SPECIFIC_VEHICLE', actionType: 'GET_SPECIFIC_VEHICLE',
url: ApiTable.getSpecificVehicle, url: ApiTable.getSpecificVehicle,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
}); });
} }
export function putSpecificVehicle(query) { export function putSpecificVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'put_SPECIFIC_VEHICLE', actionType: 'put_SPECIFIC_VEHICLE',
url: ApiTable.putSpecificVehicle, url: ApiTable.putSpecificVehicle,
msg: { option: '编辑车辆信息' }, msg: { option: '编辑车辆信息' },
}); });
} }
export function putHouseholds(query) { export function putHouseholds (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'put_HOUSEHOLDS', actionType: 'put_HOUSEHOLDS',
url: ApiTable.putHouseholds, url: ApiTable.putHouseholds,
msg: { option: '编辑业户信息' }, msg: { option: '编辑业户信息' },
}); });
} }
export function getHouseholds(query) { export function getHouseholds (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_HOUSEHOLDS', actionType: 'GET_HOUSEHOLDS',
url: ApiTable.getHouseholds, url: ApiTable.getHouseholds,
msg: { error: '获取业户信息失败' }, msg: { error: '获取业户信息失败' },
}); });
} }
export function getRoadway(query) { export function getRoadway (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_ROADWAY', actionType: 'GET_ROADWAY',
url: ApiTable.getRoadway, url: ApiTable.getRoadway,
msg: { error: '获取道路信息失败' }, msg: { error: '获取道路信息失败' },
}); });
} }
export function putRoadway(query) { export function putRoadway (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_ROADWAY', actionType: 'PUT_ROADWAY',
url: ApiTable.putRoadway, url: ApiTable.putRoadway,
msg: { option: '编辑道路信息' }, msg: { option: '编辑道路信息' },
}); });
} }
export function getBridge(query) { export function getBridge (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_BRIDGE', actionType: 'GET_BRIDGE',
url: ApiTable.getBridge, url: ApiTable.getBridge,
msg: { error: '获取桥梁信息失败' }, msg: { error: '获取桥梁信息失败' },
}); });
} }
export function putBridge(query) { export function putBridge (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_BRIDGE', actionType: 'PUT_BRIDGE',
url: ApiTable.putBridge, url: ApiTable.putBridge,
msg: { option: '编辑桥梁信息' }, msg: { option: '编辑桥梁信息' },
}); });
} }
export function getProject(query) { export function getProject (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_PROJECT', actionType: 'GET_PROJECT',
url: ApiTable.getProject, url: ApiTable.getProject,
msg: { error: '获取工程信息失败' }, msg: { error: '获取工程信息失败' },
}); });
} }
export function putProject(query) { export function putProject (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'GET_PROJECT', actionType: 'GET_PROJECT',
url: ApiTable.putProject, url: ApiTable.putProject,
msg: { option: '编辑工程信息' }, msg: { option: '编辑工程信息' },
}); });
} }
export function getHighways(query) { export function getHighways (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_HIGHWAYS', actionType: 'GET_HIGHWAYS',
url: ApiTable.getHighways, url: ApiTable.getHighways,
msg: { error: '获取路政信息失败' }, msg: { error: '获取路政信息失败' },
}); });
} }
export function putHighways(query) { export function putHighways (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'GET_HIGHWAYS', actionType: 'GET_HIGHWAYS',
url: ApiTable.putHighways, url: ApiTable.putHighways,
msg: { option: '编辑路政信息' }, msg: { option: '编辑路政信息' },
}); });
} }
export function getCircuit(query) { export function getCircuit (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_CIRCUIT', actionType: 'GET_CIRCUIT',
url: ApiTable.getCircuit, url: ApiTable.getCircuit,
msg: { error: '获取线路信息失败' }, msg: { error: '获取线路信息失败' },
}); });
} }
export function putCircuit(query) { export function putCircuit (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_CIRCUIT', actionType: 'PUT_CIRCUIT',
url: ApiTable.putCircuit, url: ApiTable.putCircuit,
msg: { option: '编辑线路信息' }, msg: { option: '编辑线路信息' },
}); });
} }
export function getVehicle(query) { export function getVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_VEHICLE', actionType: 'GET_VEHICLE',
url: ApiTable.getVehicle, url: ApiTable.getVehicle,
msg: { error: '获取车辆信息失败' }, msg: { error: '获取车辆信息失败' },
}); });
} }
export function putVehicle(query) { export function putVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_VEHICLE', actionType: 'PUT_VEHICLE',
url: ApiTable.putVehicle, url: ApiTable.putVehicle,
msg: { option: '编辑车辆信息' }, msg: { option: '编辑车辆信息' },
}); });
} }
export function delRoadway(query) { export function delRoadway (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_ROADWAY', actionType: 'DEL_ROADWAY',
url: ApiTable.delRoadway.replace("{roadId}", query?.roadId), url: ApiTable.delRoadway.replace("{roadId}", query?.roadId),
msg: { option: '删除车辆信息' }, msg: { option: '删除车辆信息' },
}); });
} }
export function delProject(query) { export function delProject (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_PROJECT', actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace("{projectId}", query?.projectId), url: ApiTable.delProject.replace("{projectId}", query?.projectId),
msg: { option: '删除工程信息' }, msg: { option: '删除工程信息' },
}); });
} }
export function delBridge(query) { export function delBridge (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_BRIDGE', actionType: 'DEL_BRIDGE',
url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId), url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId),
msg: { option: '删除桥梁信息' }, msg: { option: '删除桥梁信息' },
}); });
} }
export function delSpecificVehicle(query) { export function delSpecificVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_SPECIFICVENICLE', actionType: 'DEL_SPECIFICVENICLE',
url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId), url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId),
msg: { option: '删除车辆信息' }, msg: { option: '删除车辆信息' },
}); });
} }
export function delHouseholds(query) { export function delHouseholds (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_HOUSEHOLDS', actionType: 'DEL_HOUSEHOLDS',
url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId), url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId),
msg: { option: '删除业户信息' }, msg: { option: '删除业户信息' },
}); });
} }
export function delCircuit(query) { export function delCircuit (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_CIRCUIT', actionType: 'DEL_CIRCUIT',
url: ApiTable.delCircuit.replace("{lineId}", query?.lineId), url: ApiTable.delCircuit.replace("{lineId}", query?.lineId),
msg: { option: '删除运营线路信息' }, msg: { option: '删除运营线路信息' },
}); });
} }
export function delVehicle(query) { export function delVehicle (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_VEHICLE', actionType: 'DEL_VEHICLE',
url: ApiTable.delVehicle.replace("{carId}", query?.carId), url: ApiTable.delVehicle.replace("{carId}", query?.carId),
msg: { option: '删除车辆信息' }, msg: { option: '删除车辆信息' },
}); });
} }
export function getPurchase(query) { export function getPurchase (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
dispatch: dispatch, dispatch: dispatch,
query: query, query: query,
actionType: 'GET_PURCHASE', actionType: 'GET_PURCHASE',
url: ApiTable.getPurchase, url: ApiTable.getPurchase,
msg: { error: '获取治超信息失败' }, msg: { error: '获取治超信息失败' },
}); });
} }
export function putPurchase(query) { export function putPurchase (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'put', type: 'put',
dispatch: dispatch, dispatch: dispatch,
data: query, data: query,
actionType: 'PUT_PURCHASE', actionType: 'PUT_PURCHASE',
url: ApiTable.putPurchase, url: ApiTable.putPurchase,
msg: { option: '编辑治超信息' }, msg: { option: '编辑治超信息' },
}); });
} }
export function delPurchase(query) { export function delPurchase (query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'del', type: 'del',
dispatch: dispatch, dispatch: dispatch,
actionType: 'DEL_PURCHASE', actionType: 'DEL_PURCHASE',
url: ApiTable.delPurchase.replace("{overspeedId}", query?.overspeedId), url: ApiTable.delPurchase.replace("{overspeedId}", query?.overspeedId),
msg: { option: '删除车辆信息' }, msg: { option: '删除车辆信息' },
}); });
}
export function getPropagata (query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_PROPAGATA',
url: ApiTable.getpropagata,
msg: { error: '获取宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putAddPropagata (query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PROPAGATA',
url: ApiTable.putpropagata,
msg: { error: '新增宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putEditPropagata (query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PROPAGATA',
url: ApiTable.putpropagata,
msg: { error: '编辑宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delPropagata (query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PROPAGATA',
url: ApiTable.delpropagata.replace("{publicityId}", query?.publicityId),
msg: { error: '删除宣传视频信息失败' },
// reducer: { name: 'reportstatistic' }
});
} }

2
web/client/src/sections/fillion/components/bridgeTable.js

@ -1815,7 +1815,7 @@ const BrideTable = (props) => {
} if (whichofits == 'gongcheng') { } if (whichofits == 'gongcheng') {
const query = { const query = {
type: 'bridge', type: 'bridge',
// type:sitename entryName:sitename
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getProject(query)); const res = await dispatch(getProject(query));

213
web/client/src/sections/fillion/components/infor/videoUpload.js

@ -0,0 +1,213 @@
import React, { useState, useEffect } from 'react';
import { connect } from 'react-redux';
import { Modal, Form, Button, Input, Card, List } from 'antd';
import Uploads from "../../../../components/Upload/index"
import { putAddPropagata } from '../../actions/infor';
import { putEditPropagata } from '../../actions/infor';
import { getPropagata } from '../../actions/infor';
const VideoUpload = (props) => {
// const [counts, setCounts] = useState()//shuju
const { dispatch, record, counts, setCounts } = props
const [success, setSuccess] = useState() //状态
const [form] = Form.useForm();
//弹窗
const [isModalVisible, setIsModalVisible] = useState(false);
const showModal = () => {
setIsModalVisible(true);
}
const showModalEdit = () => {
setIsModalVisible(true);
};
//新增
const handleOkAdd = () => {
form.validateFields().then((values) => {
const videoAddress = values.video.map((item) => {
return item.storageUrl
})
const videoname = values.videoname
const data = { name: videoname, video: videoAddress }
dispatch(putAddPropagata(data)).then(() => {
dispatch(getPropagata()).then((res) => {
setCounts(res.payload.data)
})
})
setIsModalVisible(false);
}
);
};
//编辑
const handleOkEdit = (record) => {
form.validateFields().then((values) => {
const videoAddress = values.video.map((item) => {
return item.storageUrl
})
const videoname = values.username
const id = record.id
const video = record.video
const data = { publicityId: id, name: videoname, video: video }
dispatch(putEditPropagata(data)).then(() => {
dispatch(getPropagata()).then((res) => {
setCounts(res.payload.data)
})
})
}
);
setIsModalVisible(false);
};
const handleCancel = () => {
setIsModalVisible(false);
};
const onFinish = (values) => {
console.log('Success:', values);
};
const onFinishFailed = (errorInfo) => {
console.log('Failed:', errorInfo);
};
return (
<div >
{
props.type_ys ? <div><Button type='primary' onClick={showModal}>新增</Button>
<Modal visible={isModalVisible} onOk={handleOkAdd} onCancel={handleCancel}>
<Form
form={form}
name="basic"
labelCol={{
span: 5,
}}
wrapperCol={{
span: 16,
}}
initialValues={{
remember: true,
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
label="视频名称"
name="videoname"
rules={[
{
required: true,
message: '请输入视频名称!',
max: 50,
},
]}
>
<Input
placeholder="请输入视频名称" />
</Form.Item>
<Form.Item
label="选择视频"
name="video"
>
<Uploads
maxFilesNum={10}
fileTypes={['mp4']}
maxFileSize={200}
/>
</Form.Item>
</Form>
</Modal>
</div>
:
<div><Button type='link' onClick={showModalEdit} style={{ Position: "absolute", left: "-50px", top: "32px" }}>编辑</Button>
<Modal visible={isModalVisible} onOk={() => handleOkEdit(record)} onCancel={handleCancel}>
<Form
form={form}
name="basic"
labelCol={{
span: 5,
}}
wrapperCol={{
span: 16,
}}
initialValues={{
username: record.name, video: record.video.map((item) => {
return { url: item }
})
}}
onFinish={onFinish}
onFinishFailed={onFinishFailed}
autoComplete="off"
>
<Form.Item
label="视频名称"
name="username"
rules={[
{
required: false,
message: '没有做出任何修改!',
max: 50,
},
]}
>
<Input
placeholder="请输入视频名称"
/>
</Form.Item>
<Form.Item
label="选择视频"
name="video"
>
<Uploads
maxFilesNum={10}
fileTypes={['mp4']}
maxFileSize={200}
/>
</Form.Item>
</Form>
</Modal>
</div>
}
</div >
)
}
function mapStateToProps (state) {
const { depMessage } = state;
const pakData = (dep) => {
return dep.map((d) => {
return {
title: d.name,
value: d.id,
children: pakData(d.subordinate)
}
})
}
let depData = pakData(depMessage.data || [])
return {
loading: depMessage.isRequesting,
depData,
};
}
export default connect(mapStateToProps)(VideoUpload);

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

@ -132,16 +132,16 @@ const InForTable = (props) => {
<Col span={8}> <Col span={8}>
<Input <Input
onChange={(value) => { onChange={(value) => {
setOverrunRateUpper(value.currentTarget.value) setOverrunRateFloor(value.currentTarget.value)
}} }}
placeholder='输入超限率上限' /> placeholder='超限率下限' />
</Col> </Col>
<Col span={8}> <Col span={8}>
<Input <Input
onChange={(value) => { onChange={(value) => {
setOverrunRateFloor(value.currentTarget.value) setOverrunRateUpper(value.currentTarget.value)
}} }}
placeholder='输入超限率下限' /> placeholder='超限率上限' />
</Col> </Col>
</Row> </Row>
</Input.Group> </Input.Group>
@ -197,7 +197,7 @@ const InForTable = (props) => {
dataIndex: 'createdAt', dataIndex: 'createdAt',
valueType: 'date', valueType: 'date',
render: (dom, record) => { render: (dom, record) => {
return record.testTime.slice(0,10) return record.testTime?.slice(0,10)
}, },
fieldProps: { fieldProps: {
onChange: (value, cs) => { onChange: (value, cs) => {

316
web/client/src/sections/fillion/components/promotionalTable.js

@ -1,169 +1,181 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState} from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Badge } from 'antd'; import { Spin, Button, Popconfirm, Switch } from 'antd';
import ProTable from '@ant-design/pro-table'; import ProTable from '@ant-design/pro-table';
import './protable.less' import './protable.less'
import moment from 'moment'; import VideoUpload from './infor/videoUpload';
import { getReportStatistic } from "../actions/infor" import { getPropagata } from '../actions/infor';
import { putEditPropagata } from '../actions/infor';
import { delPropagata } from '../actions/infor';
const promotionalTable = (props) => { const promotionalTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
const [regionId, setRegionId] = useState()//区域id const [counts, setCounts] = useState()//shuju
const [placeType, setPlaceType] = useState()//场所
const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期
const [sitename, setSitename] = useState()//场所名称
const [counts, setCounts] = useState()//shuju
const onClickEnable = (record) => {
const id = record.id
const name = record.name
const video = record.video
const columns = const enable = true ? record.enable == false : true
[{ const data = ({ publicityId: id, name: name, video: video, enable: enable })
title: '序号', dispatch(putEditPropagata(data)).then((res) => {
search: false, dispatch(getPropagata()).then((res) => {
dataIndex: 'containers', setCounts(res.payload.data)
})
})
}
fixed: 'left',
width: 120,
render: (dom, record) => {
return record.address
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
},
{
title: '视频名称',
dataIndex: 'placeName',
fixed: 'left',
width: 120,
options: 1,
backgroundColor: "#ffffff",
fieldProps: {
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入视频名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
},
{
title: '修改时间',
search: false,
dataIndex: 'time2',
valueType: 'dateRange',
// align: 'right',
width: 120,
render: (dom, record) => {
return record.address
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
},
{
key: "direction",
hideInTable: true,
dataIndex: "direction",
order: 6,
renderFormItem: (item, { type, defaultRender, ...rest }, form) => {
return (
<div> <Button
type="primary"
style={{ width: "100px" }}
onClick={() => {
dispatch(push(`article/update/post`));
}}
>
新增
</Button>
</div>
); const columns =
}, [{
}, title: '序号',
] search: false,
return ( dataIndex: 'containers',
<Spin spinning={false}> fixed: 'left',
<div className='protable-transpor'> width: 120,
<ProTable render: (dom, record, key) => {
scroll={{ x: 800 }} return key + 1
options={false} }
ref={c => { finishedProductTable = c; }} },
style={{ width: "100% ", overflow: "auto", height: '760px' }} {
rowKey='id' title: '视频名称',
onReset={(v) => { dataIndex: 'videoName',
const { id } = depMessage[0] fixed: 'left',
console.log(id) search: false,
setRegionId(id) width: 120,
setPlaceType(-1) options: 1,
setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')]) render: (dom, record) => {
setSitename('') return record.name
}} }
rowSelection={{ },
selectedRowKeys: rowSelected, {
onChange: (selectedRowKeys) => { title: '是否展示',
setRowSelected(selectedRowKeys); dataIndex: 'shuffling',
}, valueType: 'shufflingRange',
}} search: false,
columns={columns} width: 120,
fixed: 'right',
render: (dom, record) => {
return <div >
dataSource={(counts || {}).rows || []} <Switch checkedChildren="展示" unCheckedChildren="关闭" onClick={() => onClickEnable(record)} defaultChecked={true ? record.enable == true : false} /></div>
request={async (params) => { }
},
{
title: '操作',
dataIndex: 'creatTime',
valueType: 'dateTimeRange',
hideInSearch: true,
width: 120,
fixed: 'right',
render: (dom, record) => {
return <div style={{ position: 'relative', marginTop: '-30px' }}>
<VideoUpload record={record} counts={counts} setCounts={setCounts} />
<Popconfirm
title="是否确定删除?"
arrowPointAtCenter={true}
showArrow={true}
position="topRight"
onConfirm={
() => {
const query = { const query = {
// startDate: day[0], publicityId: record.id
// endDate: day[1],
// placeType: placeType,
// regionId: regionId,
// placeName: sitename,
// limit: params.pageSize,
// offset: ((params.current ? params.current : 1) - 1) * params.pageSize
}
setRowSelected([]);
const res = await dispatch(getReportStatistic(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
} }
}} dispatch(delPropagata(query)).then(() => {
// search={{ dispatch(getPropagata()).then((res) => {
// defaultCollapsed: false, setCounts(res.payload.data)
// optionRender: (searchConfig, formProps, dom) => [ })
// ...dom.reverse(), })
// <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}> }
// <Button }
// >
// 导出 >
// </Button> <Button type="link" float="right"
// </Popconfirm> >删除</Button>
// ], </Popconfirm>
// }} </div>
}
},
{
key: "direction",
hideInTable: true,
dataIndex: "direction",
order: 6,
renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => {
return (
<div>
<VideoUpload type_ys={1} counts={counts} setCounts={setCounts} />
</div>
);
},
},
]
> //获取数据
</ProTable></div> useEffect(() => {
const vedio = dispatch(getPropagata()).then((res) => {
setCounts(res.payload.data)
console.log(res.payload.data)
})
}, [])
</Spin >
) return (
<Spin spinning={false}>
<div className='protable-transpor'>
<ProTable
scroll={{ x: 800 }}
options={false}
style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id'
rowSelection={{
selectedRowKeys: rowSelected,
onChange: (selectedRowKeys) => {
setRowSelected(selectedRowKeys);
},
}}
form={{
submitter: false,
}}
columns={columns}
dataSource={counts || []}
request={async (params) => {
const query = {
limit: params.pageSize,
offset: ((params.current ? params.current : 1) - 1) * params.pageSize
}
setRowSelected([]);
}}
>
</ProTable></div>
</Spin >
)
} }
function mapStateToProps(state) {
const { auth, depMessage } = state; function mapStateToProps (state) {
const pakData = (dep) => {
return dep.map((d) => { const { auth, depMessage } = state;
return { const pakData = (dep) => {
title: d.name, return dep.map((d) => {
value: d.id, return {
// children: d.type >= 2 ? [] : pakData(d.subordinate) title: d.name,
children: pakData(d.subordinate) value: d.id,
} // children: d.type >= 2 ? [] : pakData(d.subordinate)
}) children: pakData(d.subordinate)
} }
let depData = pakData(depMessage.data || []) })
return { }
user: auth.user, let depData = pakData(depMessage.data || [])
depMessage: depMessage.data || [], return {
depLoading: depMessage.isRequesting, user: auth.user,
depData, depMessage: depMessage.data || [],
}; depLoading: depMessage.isRequesting,
depData,
};
} }
export default connect(mapStateToProps)(promotionalTable); export default connect(mapStateToProps)(promotionalTable);

2
web/client/src/sections/fillion/components/transportationTable.js

@ -3827,7 +3827,7 @@ const TransporTationTable = (props) => {
if (whichofits == 'gongcheng') { if (whichofits == 'gongcheng') {
const query = { const query = {
type: 'road', type: 'road',
// type:sitename entryName:sitename
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getProject(query)); const res = await dispatch(getProject(query));

7
web/client/src/sections/fillion/nav-item.js

@ -32,12 +32,9 @@ export function getNavItem(user, dispatch) {
<Menu.Item key="fillionpublic"> <Menu.Item key="fillionpublic">
<Link to="/fillion/public">公交管理</Link> <Link to="/fillion/public">公交管理</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key="fileCont"> {/* <Menu.Item key="fillionvideois">
<Link to="/fillion/file">档案管理</Link>
</Menu.Item>
<Menu.Item key="fillionvideois">
<Link to="/fillion/videois">视频管理</Link> <Link to="/fillion/videois">视频管理</Link>
</Menu.Item> </Menu.Item> */}
<Menu.Item key="fillionpromotional"> <Menu.Item key="fillionpromotional">
<Link to="/fillion/promotional">宣传视频</Link> <Link to="/fillion/promotional">宣传视频</Link>
</Menu.Item> </Menu.Item>

8
web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js

@ -62,21 +62,21 @@ const Right = (props) => {
<div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}> <div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}>
<div style={{ width: "96%", position: "relative", left: "2%" }}> <div style={{ width: "96%", position: "relative", left: "2%" }}>
<p style={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p> <p style={{ position: "absolute", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p>
<p style={{ width: "50%", position: "absolute", right: "0%", fontFamily: "YouSheBiaoTiHei", textAlign: "right", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{roads?.["县"].toFixed(3)}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}>公里</span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p> <p style={{ width: "50%", position: "absolute", right: "0%", fontFamily: "YouSheBiaoTiHei", textAlign: "right", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{roads?.["县"].toFixed(3)}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}>公里</span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p>
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}> <div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}>
<div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", float: "left", marginTop: "5.6%" }}> <div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}>
</div> </div>
{/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}> {/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
</div> */} </div> */}
<div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}></div> <div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#0A72FF", float: "left", marginTop: "5.6%" }}></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" }}>{(roads?.["乡"] + roads?.["村"]).toFixed(3)}</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" }}>{(roads?.["乡"] + roads?.["村"]).toFixed(3)}</span><span style={{ marginLeft: "4%" }}></span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((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>{(((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span><span>%</span></p>
</div> </div>
</div> </div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}> <div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>

8
web/client/src/sections/quanju/containers/footer/leadership/centerleft/handong.js

@ -66,21 +66,21 @@ const Right = (props) => {
<div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}> <div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}>
<div style={{ width: "96%", position: "relative", left: "2%" }}> <div style={{ width: "96%", position: "relative", left: "2%" }}>
<p style={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p> <p style={{ position: "absolute", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p>
<p style={{ width: "50%", position: "absolute", right: "0%", textAlign: "right", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{roads?.["县"].toFixed(0)}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p> <p style={{ width: "50%", position: "absolute", right: "0%", textAlign: "right", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{roads?.["县"].toFixed(0)}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p>
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}> <div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}>
<div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", float: "left", marginTop: "5.6%" }}> <div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}>
</div> </div>
{/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}> {/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
</div> */} </div> */}
<div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}></div> <div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#0A72FF", float: "left", marginTop: "5.6%" }}></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" }}>{(roads?.["乡"] + roads?.["村"]).toFixed(0)}</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" }}>{(roads?.["乡"] + roads?.["村"]).toFixed(0)}</span><span style={{ marginLeft: "4%" }}></span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((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>{(((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span><span>%</span></p>
</div> </div>
</div> </div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}> <div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>

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

@ -61,21 +61,21 @@ const Right = (props) => {
<div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}> <div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}>
<div style={{ width: "96%", position: "relative", left: "2%" }}> <div style={{ width: "96%", position: "relative", left: "2%" }}>
<p style={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span>%</p> <p style={{ position: "absolute", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span>%</p>
<p style={{ width: "25%", position: "absolute", right: "0%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%", textAlign: "right" }}>{roads?.["大桥"]}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p> <p style={{ width: "25%", position: "absolute", right: "0%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%", textAlign: "right" }}>{roads?.["大桥"]}<span style={{ color: "#F5FCFF", fontSize: "16px", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span><span style={{ fontSize: "18px", color: "rgba(216,240,255,0.8)", fontFamily: "PingFangSC-Regular, PingFang SC", marginLeft: "5%" }}></span></p>
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}> <div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}>
<div style={{ width: (roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", float: "left", marginTop: "5.6%" }}> <div style={{ width: (roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}>
</div> </div>
<div style={{ width: (roads?.["中桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}> <div style={{ width: ((roads?.["中桥"] + roads?.["小桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#0A72FF", float: "left", marginTop: "5.6%" }}>
</div> </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 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" }}>{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" }}>{roads?.["小桥"] + roads?.["中桥"]}</span><span style={{ marginLeft: "4%" }}></span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((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>{(((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span><span>%</span></p>
</div> </div>
</div> </div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}> <div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>

2
web/client/src/utils/webapi.js

@ -94,7 +94,7 @@ export const ApiTable = {
getRoadMaintenance: 'conserve/statistic', getRoadMaintenance: 'conserve/statistic',
//获取宣传数据 //获取宣传数据
getpropagata: 'publicity', getpropagata: 'publicity',putpropagata:'publicity',delpropagata:'/publicity/{publicityId}',
// <<<<<<< HEAD // <<<<<<< HEAD
// //公交信息 // //公交信息
// getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}', // getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',

Loading…
Cancel
Save