dengyinhuan 1 year ago
parent
commit
bda3ee31bb
  1. 4
      api/app/lib/controllers/data/appointed.js
  2. 36
      api/app/lib/controllers/data/vehicle.js
  3. 73
      api/app/lib/models/report.js
  4. 4
      scripts/1.3.0/schema/6.update_report.sql
  5. 60
      web/client/src/sections/fillion/components/bridgeTable.js
  6. 254
      web/client/src/sections/fillion/components/enforceTable.js
  7. 11
      web/client/src/sections/fillion/components/feedback/nominateModalcopy.js
  8. 14
      web/client/src/sections/fillion/components/highwaysTable.js
  9. 57
      web/client/src/sections/fillion/components/maintenanceTable.js
  10. 6
      web/client/src/sections/fillion/components/patrolTable.js
  11. 21
      web/client/src/sections/fillion/components/transportationTable.js
  12. 1
      web/client/src/sections/fillion/containers/maintenanceSpotCheck.js
  13. 138
      web/client/src/sections/quanju/containers/footer/build/Leftbottom.js
  14. 35
      web/client/src/sections/quanju/containers/footer/build/Rightbottom.js
  15. 1
      web/client/src/sections/quanju/containers/footer/build/index.js
  16. 12
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js
  17. 8
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/top.js
  18. 6
      web/client/src/sections/quanju/containers/footer/operation/right.js

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

@ -4,9 +4,9 @@ const moment = require('moment')
async function appoint(ctx) { async function appoint(ctx) {
try { try {
const models = ctx.fs.dc.models const models = ctx.fs.dc.models
const { recordId, performerId } = ctx.request.body const { recordId, performerId, handleOpinions } = ctx.request.body
await models.Report.update({ await models.Report.update({
performerId performerId, handleOpinions
}, { where: { id: recordId } }) }, { where: { id: recordId } })
ctx.status = 204; ctx.status = 204;
} catch (error) { } catch (error) {

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

@ -1,11 +1,20 @@
'use strict'; 'use strict';
const { QueryTypes } = require('sequelize');
async function get (ctx) { async function get(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
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 sqlStr = `select count(p.road_marking) 标线,count(p.roadside_ditch) 边沟,
count(p.guardrail) 护栏, count(p.roadside_trees) 行道树,count(p.wrong_lane) 错车道
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,
road_marking,roadside_ditch,guardrail,roadside_trees,wrong_lane,time from report
where report_type='conserve') t ) p where p.rn=1`
const conserveData = await sequelize.query(sqlStr, { type: QueryTypes.SELECT })
let findOption = { let findOption = {
where: { where: {
type type
@ -17,9 +26,12 @@ async function get (ctx) {
} }
} }
const vehicleRes = await models.Statistic.findAll(findOption) const vehicleRes = await models.Statistic.findAll(findOption)
console.log('vehicleRes', vehicleRes)
ctx.status = 200; ctx.status = 200;
ctx.body = vehicleRes ctx.body = {
vehicleRes: vehicleRes.filter(item => item.dataValues.name === '标志牌' || item.dataValues.name === '养护责任牌')
, conserveData
}
} catch (error) { } catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400; ctx.status = 400;
@ -29,7 +41,7 @@ async function get (ctx) {
} }
} }
async function edit (ctx) { async function edit(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { id, name, count, type } = ctx.request.body; const { id, name, count, type } = ctx.request.body;
@ -58,7 +70,7 @@ async function edit (ctx) {
} }
} }
async function del (ctx) { async function del(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { id } = ctx.params; const { id } = ctx.params;
@ -79,7 +91,7 @@ async function del (ctx) {
} }
} }
async function specificGet (ctx) { async function specificGet(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { type } = ctx.query; const { type } = ctx.query;
@ -109,7 +121,7 @@ async function specificGet (ctx) {
} }
} }
async function specificEdit (ctx) { async function specificEdit(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const data = ctx.request.body; const data = ctx.request.body;
@ -134,7 +146,7 @@ async function specificEdit (ctx) {
} }
} }
async function specificDel (ctx) { async function specificDel(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { vehicleId } = ctx.params; const { vehicleId } = ctx.params;
@ -155,7 +167,7 @@ async function specificDel (ctx) {
} }
} }
async function businessGet (ctx) { async function businessGet(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { nameOfBusinessOwner } = ctx.query; const { nameOfBusinessOwner } = ctx.query;
@ -183,7 +195,7 @@ async function businessGet (ctx) {
} }
} }
async function businessEdit (ctx) { async function businessEdit(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const data = ctx.request.body; const data = ctx.request.body;
@ -208,7 +220,7 @@ async function businessEdit (ctx) {
} }
} }
async function businessDel (ctx) { async function businessDel(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { businessId } = ctx.params; const { businessId } = ctx.params;

73
api/app/lib/models/report.js

@ -7,7 +7,6 @@ module.exports = dc => {
const sequelize = dc.orm; const sequelize = dc.orm;
const Report = sequelize.define("report", { const Report = sequelize.define("report", {
id: { id: {
index: 1,
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
@ -18,87 +17,78 @@ module.exports = dc => {
unique: "report_id_uindex" unique: "report_id_uindex"
}, },
reportType: { reportType: {
index: 2,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
comment: "上报类型", comment: "上报类型 巡查:patrol / 养护:conserve",
primaryKey: false, primaryKey: false,
field: "report_type", field: "report_type",
autoIncrement: false autoIncrement: false
}, },
projectType: { projectType: {
index: 3,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "工程类型", comment: "工程类型 道路:road / 桥梁:birdge / 涵洞:culvert",
primaryKey: false, primaryKey: false,
field: "project_type", field: "project_type",
autoIncrement: false autoIncrement: false
}, },
road: { road: {
index: 4,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '所属道路', comment: null,
primaryKey: false, primaryKey: false,
field: "road", field: "road",
autoIncrement: false autoIncrement: false
}, },
roadSectionStart: { roadSectionStart: {
index: 5,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '开始路段', comment: null,
primaryKey: false, primaryKey: false,
field: "road_section_start", field: "road_section_start",
autoIncrement: false autoIncrement: false
}, },
roadSectionEnd: { roadSectionEnd: {
index: 6,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '结束路段', comment: null,
primaryKey: false, primaryKey: false,
field: "road_section_end", field: "road_section_end",
autoIncrement: false autoIncrement: false
}, },
longitude: { longitude: {
index: 7,
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '经度', comment: null,
primaryKey: false, primaryKey: false,
field: "longitude", field: "longitude",
autoIncrement: false autoIncrement: false
}, },
latitude: { latitude: {
index: 8,
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '纬度', comment: null,
primaryKey: false, primaryKey: false,
field: "latitude", field: "latitude",
autoIncrement: false autoIncrement: false
}, },
content: { content: {
index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '具体内容', comment: null,
primaryKey: false, primaryKey: false,
field: "content", field: "content",
autoIncrement: false autoIncrement: false
}, },
scenePic: { scenePic: {
index: 10,
type: DataTypes.ARRAY(DataTypes.STRING), type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -108,7 +98,6 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
conserveBeforePic: { conserveBeforePic: {
index: 11,
type: DataTypes.ARRAY(DataTypes.STRING), type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -118,7 +107,6 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
conserveUnderwayPic: { conserveUnderwayPic: {
index: 12,
type: DataTypes.ARRAY(DataTypes.STRING), type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -128,7 +116,6 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
conserveAfterPic: { conserveAfterPic: {
index: 13,
type: DataTypes.ARRAY(DataTypes.STRING), type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -138,7 +125,6 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
userId: { userId: {
index: 14,
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -148,52 +134,39 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
time: { time: {
index: 15,
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
comment: '创建日期', comment: null,
primaryKey: false, primaryKey: false,
field: "time", field: "time",
autoIncrement: false autoIncrement: false
}, },
address: { address: {
index: 16,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: '具体位置', comment: null,
primaryKey: false, primaryKey: false,
field: "address", field: "address",
autoIncrement: false autoIncrement: false
}, },
projectName: { projectName: {
index: 17,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "工程名称", comment: null,
primaryKey: false, primaryKey: false,
field: "project_name", field: "project_name",
autoIncrement: false autoIncrement: false
}, },
handleState: { handleState: {
index: 18,
type: DataTypes.STRING,
allowNull: false,
defaultValue: "已处理",
// comment: "处理状态",
primaryKey: false,
field: "handle_state",
autoIncrement: false
},
codeRoad: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: null, comment: null,
primaryKey: false, primaryKey: false,
field: "code_road", field: "handle_state",
autoIncrement: false autoIncrement: false
}, },
performerId: { performerId: {
@ -209,7 +182,7 @@ module.exports = dc => {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "", comment: "执行内容描述",
primaryKey: false, primaryKey: false,
field: "handle_content", field: "handle_content",
autoIncrement: false autoIncrement: false
@ -223,6 +196,15 @@ module.exports = dc => {
field: "handle_pic", field: "handle_pic",
autoIncrement: false autoIncrement: false
}, },
codeRoad: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "code_road",
autoIncrement: false
},
videoUrl: { videoUrl: {
type: DataTypes.ARRAY(DataTypes.STRING), type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true, allowNull: true,
@ -456,6 +438,15 @@ module.exports = dc => {
primaryKey: false, primaryKey: false,
field: "other_description", field: "other_description",
autoIncrement: false autoIncrement: false
},
handleOpinions: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "处理意见",
primaryKey: false,
field: "handle_opinions",
autoIncrement: false
} }
}, { }, {
tableName: "report", tableName: "report",

4
scripts/1.3.0/schema/6.update_report.sql

@ -0,0 +1,4 @@
alter table report
add handle_opinions varchar(1024);
comment on column report.handle_opinions is '处理意见';

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

@ -25,6 +25,9 @@ const BrideTable = (props) => {
const [whichofits, setWhichofits] = useState('qiaoliang') const [whichofits, setWhichofits] = useState('qiaoliang')
const [delet, setDelet] = useState() const [delet, setDelet] = useState()
const [differentiate, setDifferentiate] = useState('bridge') const [differentiate, setDifferentiate] = useState('bridge')
const [smallBridge, setSmallBridge] = useState([])
const [middleBridge, setMiddleBridge] = useState([])
const [bigBridge, setBigBridge] = useState([])
const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'BRIDGEMANAGE')[0].isshow === "true" ? true : '') const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'BRIDGEMANAGE')[0].isshow === "true" ? true : '')
const ref = useRef() const ref = useRef()
useEffect(() => { ref.current.reload() }, [whichofits, delet]) useEffect(() => { ref.current.reload() }, [whichofits, delet])
@ -161,7 +164,7 @@ const BrideTable = (props) => {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
}, { }, {
title: '跨越地物类型1', title: '跨越地物类型',
search: false, search: false,
dataIndex: 'time8', dataIndex: 'time8',
valueType: 'dateRange', valueType: 'dateRange',
@ -175,7 +178,7 @@ const BrideTable = (props) => {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
}, { }, {
title: '跨越地物名称1', title: '跨越地物名称',
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
@ -1810,7 +1813,9 @@ const BrideTable = (props) => {
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getBridge(query)); const res = await dispatch(getBridge(query));
// console.log(res) // console.log(res)
setSmallBridge(res.payload.data?.filter(item => item.bridgeClassification === '小桥'))
setMiddleBridge(res.payload.data?.filter(item => item.bridgeClassification === '中桥'))
setBigBridge(res.payload.data?.filter(item => item.bridgeClassification === '大桥'))
setCounts(res.payload.data) setCounts(res.payload.data)
return { return {
...res, ...res,
@ -1833,6 +1838,7 @@ const BrideTable = (props) => {
search={{ search={{
defaultCollapsed: false, defaultCollapsed: false,
optionRender: (searchConfig, formProps, dom) => [ optionRender: (searchConfig, formProps, dom) => [
<span style={{ marginRight: 80 }}>{`共有小桥${smallBridge.length}座,中桥${middleBridge.length}座,大桥${bigBridge.length}`}</span>,
...dom.reverse(), ...dom.reverse(),
<Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, differentiate) }} disabled={editAble}> <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, differentiate) }} disabled={editAble}>
<Button <Button
@ -1847,28 +1853,32 @@ const BrideTable = (props) => {
> >
</ProTable> </ProTable>
</div> </div>
{modalVisible ? <UserModal {
visible={modalVisible} modalVisible ? <UserModal
onVisibleChange={setModalVisible} visible={modalVisible}
modalRecord={modalRecord} onVisibleChange={setModalVisible}
typecard={typecard} modalRecord={modalRecord}
rewkeys={'bridge'} typecard={typecard}
data={date} rewkeys={'bridge'}
recortd={recortd} data={date}
setDelet={setDelet} recortd={recortd}
// sitename={sitename} setDelet={setDelet}
setRecortd={setRecortd} // sitename={sitename}
/> : ''} setRecortd={setRecortd}
{modalVisibleyilan ? <ProjectModal /> : ''
visible={modalVisibleyilan} }
onVisibleChange={setModalVisibleyilan} {
modalRecord={modalRecord} modalVisibleyilan ? <ProjectModal
typecard={typecard} visible={modalVisibleyilan}
rewkeys={'bridge'} onVisibleChange={setModalVisibleyilan}
setDelet={setDelet} modalRecord={modalRecord}
recortd={recortd} typecard={typecard}
setRecortd={setRecortd} rewkeys={'bridge'}
/> : ''} setDelet={setDelet}
recortd={recortd}
setRecortd={setRecortd}
/> : ''
}
</Spin > </Spin >
) )
} }

254
web/client/src/sections/fillion/components/enforceTable.js

@ -18,33 +18,33 @@ const enforceTable = (props) => {
const [modalVisible, setModalVisible] = useState(false); const [modalVisible, setModalVisible] = useState(false);
const [modalRecord, setModalRecord] = useState(); const [modalRecord, setModalRecord] = useState();
const [typecard, setTypecard] = useState(); const [typecard, setTypecard] = useState();
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const openModal = (type, record) => {
setModalVisible(true); setModalVisible(true);
// setModalType(type); // setModalType(type);
if (type == 'edit') { if (type == 'edit') {
setModalRecord(record); setModalRecord(record);
} else { } else {
setModalRecord(null); setModalRecord(null);
}
}
//批量导出
const exports = (ids, counts) => {
// console.log(user);
let reportIds = [];
if (ids.length)
reportIds = ids
else
reportIds = (counts || {}).ids || [];
superagent.post('/_report/http')
.send({ id: reportIds.map(i => Number(i)) }).end((err, res) => {
const resTextIs = res.text.split('/').pop()
window.open(
'/_api/' +
`attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`)
})
} }
}
//批量导出
const exports = (ids, counts) => {
// console.log(user);
let reportIds = [];
if (ids.length)
reportIds = ids
else
reportIds = (counts || {}).ids || [];
superagent.post('/_report/http')
.send({ id: reportIds.map(i => Number(i)) }).end((err, res) => {
const resTextIs = res.text.split('/').pop()
window.open(
'/_api/' +
`attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`)
})
}
const columns = const columns =
[ [
{ {
@ -95,7 +95,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time3', dataIndex: 'time3',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
@ -110,7 +110,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time4', dataIndex: 'time4',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -124,7 +124,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time5', dataIndex: 'time5',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -138,7 +138,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time6', dataIndex: 'time6',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -152,7 +152,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time7', dataIndex: 'time7',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -166,7 +166,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time8', dataIndex: 'time8',
valueType: 'dateRange', valueType: 'dateRange',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
@ -180,7 +180,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -195,7 +195,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -210,7 +210,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -225,7 +225,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -240,7 +240,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -255,7 +255,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -270,7 +270,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -285,7 +285,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -300,7 +300,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -315,7 +315,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -330,7 +330,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -345,7 +345,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -360,7 +360,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -375,7 +375,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -390,7 +390,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -405,7 +405,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -420,7 +420,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -435,7 +435,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -450,7 +450,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -465,7 +465,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -480,7 +480,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -495,7 +495,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -510,7 +510,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -525,7 +525,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -540,7 +540,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -555,7 +555,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -570,7 +570,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -585,7 +585,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -600,7 +600,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -615,7 +615,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -630,7 +630,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -645,7 +645,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -660,7 +660,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -675,7 +675,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -690,7 +690,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -705,7 +705,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -720,7 +720,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -735,7 +735,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -750,7 +750,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -765,7 +765,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -780,7 +780,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -795,7 +795,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -810,7 +810,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -825,7 +825,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -840,7 +840,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -855,7 +855,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -870,7 +870,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -885,7 +885,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -900,7 +900,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -915,7 +915,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -930,7 +930,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -945,7 +945,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -960,7 +960,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -975,7 +975,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -990,7 +990,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1005,7 +1005,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1020,7 +1020,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1035,7 +1035,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1050,7 +1050,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1065,7 +1065,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1080,7 +1080,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1095,7 +1095,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1110,7 +1110,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1125,7 +1125,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1140,7 +1140,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1155,7 +1155,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1171,7 +1171,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1186,7 +1186,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1201,7 +1201,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1216,7 +1216,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1231,7 +1231,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1246,7 +1246,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1261,7 +1261,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1276,7 +1276,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1291,7 +1291,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1306,7 +1306,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1321,7 +1321,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1336,7 +1336,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1351,7 +1351,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1366,7 +1366,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1381,7 +1381,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1396,7 +1396,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1411,7 +1411,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1426,7 +1426,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1441,7 +1441,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1456,7 +1456,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1471,7 +1471,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1486,7 +1486,7 @@ const openModal = (type, record) => {
search: false, search: false,
dataIndex: 'time9', dataIndex: 'time9',
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 140,
@ -1506,11 +1506,11 @@ const openModal = (type, record) => {
fixed: 'right', fixed: 'right',
render: (dom, record) => { render: (dom, record) => {
return <div><Button type="link" return <div><Button type="link"
onClick={() => { onClick={() => {
openModal('edit', record) openModal('edit', record)
setTypecard('compile') setTypecard('compile')
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"></Button></div>
} }
@ -1520,7 +1520,7 @@ const openModal = (type, record) => {
hideInTable: true, hideInTable: true,
dataIndex: "direction", dataIndex: "direction",
order: 6, order: 6,
renderFormItem: (item, { type, defaultRender, ...rest }, form,record) => { renderFormItem: (item, { type, defaultRender, ...rest }, form, record) => {
return ( return (
<div> <Button <div> <Button
type="primary" type="primary"
@ -1607,7 +1607,7 @@ const openModal = (type, record) => {
> >
</ProTable></div> </ProTable></div>
<UserModal <UserModal
visible={modalVisible} visible={modalVisible}
onVisibleChange={setModalVisible} onVisibleChange={setModalVisible}
modalRecord={modalRecord} modalRecord={modalRecord}

11
web/client/src/sections/fillion/components/feedback/nominateModalcopy.js

@ -1,13 +1,14 @@
'use strict'; 'use strict';
import React, { useState, useEffect, useCallback, useRef } from 'react'; import React, { useState, useEffect, useCallback, useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, TreeSelect, Modal, Form, Select } from 'antd'; import { Spin, TreeSelect, Modal, Form, Select, Input } from 'antd';
import ProForm, { ProFormText, ModalForm, ProFormSwitch, ProFormTreeSelect, ProFormSelect } from '@ant-design/pro-form'; import ProForm, { ProFormText, ModalForm, ProFormSwitch, ProFormTreeSelect, ProFormSelect } from '@ant-design/pro-form';
import { getDepUser } from '../../../organization/actions/user' import { getDepUser } from '../../../organization/actions/user'
import { appointTask } from '../../actions/appointTask' import { appointTask } from '../../actions/appointTask'
import moment from 'moment'; import moment from 'moment'
import { v4 as uuidv4 } from 'uuid'; import { v4 as uuidv4 } from 'uuid';
const { TextArea } = Input;
const NominateModal = (props) => { const NominateModal = (props) => {
const { queryData, recordId, visible, user, onCancel, depMessage, loading, depUser, clientHeight, depData, onVisibleChange, dispatch } = props const { queryData, recordId, visible, user, onCancel, depMessage, loading, depUser, clientHeight, depData, onVisibleChange, dispatch } = props
@ -38,7 +39,7 @@ const NominateModal = (props) => {
} }
const handleFinish = () => { const handleFinish = () => {
form.validateFields().then(values => { form.validateFields().then(values => {
dispatch(appointTask({ recordId: recordId, performerId: values.nameId })).then((res) => { dispatch(appointTask({ recordId: recordId, performerId: values.nameId, handleOpinions: values.handleOpinions })).then((res) => {
if (res.success) { if (res.success) {
setSelectedUserId(null) setSelectedUserId(null)
queryData() queryData()
@ -92,9 +93,13 @@ const NominateModal = (props) => {
onChange={(value) => setSelectedUserId(value)} onChange={(value) => setSelectedUserId(value)}
> >
</Select> </Select>
</Form.Item> </Form.Item>
</div> </div>
</div> </div>
<Form.Item label='处理意见:' name='handleOpinions'>
<TextArea />
</Form.Item>
</Form> </Form>
</Modal> </Modal>
</Spin> </Spin>

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

@ -76,6 +76,7 @@ const TransporTationTable = (props) => {
fixed: 'left', fixed: 'left',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.count return record.count
}, },
fieldProps: { fieldProps: {
@ -90,13 +91,14 @@ const TransporTationTable = (props) => {
width: 160, width: 160,
fixed: 'right', fixed: 'right',
render: (dom, record) => { render: (dom, record) => {
console.log('record', record.id === null)
return <div><Button type="link" return <div><Button type="link"
onClick={() => { onClick={() => {
hightModal('edit', record) hightModal('edit', record)
setTypecard('compile') setTypecard('compile')
setRecortd(record) setRecortd(record)
}} }}
disabled={editAble} disabled={editAble && record.id === null}
>编辑</Button></div> >编辑</Button></div>
} }
@ -316,7 +318,15 @@ const TransporTationTable = (props) => {
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getHighways(query)); const res = await dispatch(getHighways(query));
setCounts(res.payload.data.filter(item => item.name !== '路牌名')) let rslt = res.payload.data?.vehicleRes?.filter(item => item.name !== '路牌名')
const additionalProperties = Object.entries(res.payload.data?.conserveData[0]).map(([key, value]) => ({
id: null,
name: key,
count: Number(value),
type: null
}))
additionalProperties.forEach(item => { rslt.push(item) })
setCounts(rslt)
return { return {
...res, ...res,
total: res.payload.data ? res.payload.data.count : 0 total: res.payload.data ? res.payload.data.count : 0

57
web/client/src/sections/fillion/components/maintenanceTable.js

@ -25,24 +25,25 @@ const DetailForm = (props) => {
{ key: '养护路段', name: 'roadSectionStart' }, { key: '养护路段', name: 'roadSectionStart' },
{ key: '具体位置', name: 'address' }, { key: '具体位置', name: 'address' },
{ key: '路面类型', name: 'roadType' }, { key: '路面类型', name: 'roadType' },
{ key: '路面宽度', name: 'roadWidth' }, { key: '路面宽度(米)', name: 'roadWidth' },
{ key: '错车道', name: 'wrongLane' }, { key: '错车道(个)', name: 'wrongLane' },
{ key: '行道树', name: 'roadsideTrees' }, { key: '行道树(棵)', name: 'roadsideTrees' },
{ key: '边沟', name: 'roadsideDitch' }, { key: '边沟(米)', name: 'roadsideDitch' },
{ key: '护栏', name: 'guardrail' }, { key: '护栏(米)', name: 'guardrail' },
{ key: '标线', name: 'roadMarking' }, { key: '标线(米)', name: 'roadMarking' },
{ key: '养护人员人数', name: 'maintenanceStaffCount' }, { key: '养护人员人数(人)', name: 'maintenanceStaffCount' },
{ key: '修整路肩', name: 'shoulderRepair' }, { key: '修整路肩(平方米)', name: 'shoulderRepair' },
{ key: '清理边沟', name: 'ditchCleaning' }, { key: '清理边沟(米)', name: 'ditchCleaning' },
{ key: '修补沥青路面', name: 'asphaltRepair' }, { key: '修补沥青路面(平方米)', name: 'asphaltRepair' },
{ key: '修补水泥路面', name: 'concreteRepair' }, { key: '修补水泥路面(平方米)', name: 'concreteRepair' },
{ key: '除草', name: 'grassMowing' }, { key: '除草(米)', name: 'grassMowing' },
{ key: '树刷白', name: 'treeWhitening' }, { key: '树刷白(株/公里)', name: 'treeWhitening' },
{ key: '桩刷白', name: 'pileWhitening' }, { key: '桩刷白(个)', name: 'pileWhitening' },
{ key: '维护护栏', name: 'guardrailMaintenance' }, { key: '维护护栏(个)', name: 'guardrailMaintenance' },
{ key: '修复端头', name: 'endHeadRepair' }, { key: '修复端头(块)', name: 'endHeadRepair' },
{ key: '其他养护内容', name: 'otherDescription' }, { key: '其他养护内容', name: 'otherDescription' },
{ key: '养护前图片', name: 'conserveBeforePic' }, { key: '养护前图片', name: 'conserveBeforePic' },
{ key: '养护中图片', name: 'conserveUnderwayPic' },
{ key: '养护后图片', name: 'conserveAfterPic' }, { key: '养护后图片', name: 'conserveAfterPic' },
{ key: '上报视频', name: 'videoUrl' }, { key: '上报视频', name: 'videoUrl' },
@ -62,14 +63,14 @@ const DetailForm = (props) => {
]; ];
const renderContent = (data) => { const renderContent = (data) => {
if (data) { if (data) {
if ( moment(data.time).isAfter(moment('2023-08-03 00:00:00'))) { if (moment(data.time).isAfter(moment('2023-08-03 00:00:00'))) {
return keyList.map(obj => { return keyList.map(obj => {
return <div style={{ display: 'flex', width: '100%', justifyContent: 'space-between', margin: '12px 0' }}> return <div style={{ display: 'flex', width: '100%', justifyContent: 'space-between', margin: '12px 0' }}>
<span style={{ fontSize: 16, color: 'gray', minWidth: '26%' }}>{obj.key}</span> <span style={{ fontSize: 16, color: 'gray', minWidth: '26%' }}>{obj.key}</span>
{ {
obj.name != 'conserveBeforePic' && obj.name != 'conserveAfterPic' && obj.name != 'roadSectionStart' && obj.name != 'videoUrl' && obj.name.indexOf('conserve') == -1 ? obj.name != 'conserveBeforePic' && obj.name != 'conserveAfterPic' && obj.name != 'roadSectionStart' && obj.name != 'videoUrl' && obj.name.indexOf('conserve') == -1 ?
<Input <Input
style={{ width: '70%' }} style={{ width: '60%' }}
value={ value={
obj.name == 'id' ? obj.name == 'id' ?
moment(data.time).format("YYYYMMDD") * 10000 + data.id moment(data.time).format("YYYYMMDD") * 10000 + data.id
@ -91,7 +92,7 @@ const DetailForm = (props) => {
</div> </div>
}) : '暂无图片' }) : '暂无图片'
} }
</div> : obj.name != 'videoUrl' ? <div style={{ width: '70%', display: 'flex', position: 'relative', flexWrap: 'wrap' }}> </div> : obj.name != 'videoUrl' ? <div style={{ width: '60%', display: 'flex', position: 'relative', flexWrap: 'wrap' }}>
<Input style={{ width: '100%' }} disabled value={data[obj.name] + '-' + data['roadSectionEnd']} /> <Input style={{ width: '100%' }} disabled value={data[obj.name] + '-' + data['roadSectionEnd']} />
</div> : <div style={{ width: '70%', display: 'flex', position: 'relative', flexWrap: 'wrap' }}> </div> : <div style={{ width: '70%', display: 'flex', position: 'relative', flexWrap: 'wrap' }}>
@ -216,14 +217,14 @@ const DetailList = (props) => {
key: 'projectType', key: 'projectType',
dataIndex: 'projectType', dataIndex: 'projectType',
align: 'center', align: 'center',
render: (text, record) => { render: (text, record) => {
return record.projectType?.length > 0 ? reportTypeText(text) : (record.codeRoad && record.codeRoad.length > 0) return record.projectType?.length > 0 ? reportTypeText(text) : (record.codeRoad && record.codeRoad.length > 0)
? record.codeRoad[0] === 'X' ? record.codeRoad[0] === 'X'
? '县道' ? '县道'
: record.codeRoad[0] === 'Y' : record.codeRoad[0] === 'Y'
? '乡道' ? '乡道'
: '村道' : '村道'
: '' : ''
} }
}, { }, {
title: '所属道路', title: '所属道路',
@ -648,7 +649,7 @@ const MaintenanceTable = (props) => {
); );
}; };
function mapStateToProps (state) { function mapStateToProps(state) {
const { auth, depMessage, userList, reportList, reportDetail, depUser, global, allDepUsers } = state; const { auth, depMessage, userList, reportList, reportDetail, depUser, global, allDepUsers } = state;
const pakData = (dep) => { const pakData = (dep) => {
return dep.map((d) => { return dep.map((d) => {

6
web/client/src/sections/fillion/components/patrolTable.js

@ -45,7 +45,7 @@ const DetailForm = (props) => {
const keyList = [ const keyList = [
// { key: '编号', name: 'id' }, // { key: '编号', name: 'id' },
// isPatrol ?'巡查管理详情' :isRoad ? '建设上报详情' : '异常反馈详情' // isPatrol ?'巡查管理详情' :isRoad ? '建设上报详情' : '异常反馈详情'
{ key: '工程类型', name: 'projectType', skip: isPatrol }, { key: '工程类型', name: 'projectType', skip: !isPatrol },
{ key: '反馈类型', name: 'projectType', skip: !isAnomaly }, { key: '反馈类型', name: 'projectType', skip: !isAnomaly },
{ key: '工程名称', name: 'projectName', skip: !isRoad }, { key: '工程名称', name: 'projectName', skip: !isRoad },
{ key: '所在路段', name: 'road', skip: isPatrol }, { key: '所在路段', name: 'road', skip: isPatrol },
@ -53,6 +53,7 @@ const DetailForm = (props) => {
{ key: '巡查内容', name: 'content', skip: isPatrol }, { key: '巡查内容', name: 'content', skip: isPatrol },
{ key: '路线代码', name: 'codeRoad', skip: !isAnomaly && isPatrol }, { key: '路线代码', name: 'codeRoad', skip: !isAnomaly && isPatrol },
{ key: '现场照片', name: 'scenePic', skip: isPatrol }, { key: '现场照片', name: 'scenePic', skip: isPatrol },
{ key: '处理意见', name: 'handleOpinions', skip: !isAnomaly },
{ key: '处理详情', name: 'handleContent', skip: !isAnomaly }, { key: '处理详情', name: 'handleContent', skip: !isAnomaly },
{ key: '处理图片', name: 'handlePic', skip: !isAnomaly }, { key: '处理图片', name: 'handlePic', skip: !isAnomaly },
{ key: '处理人', name: 'performerName', skip: !isAnomaly }, { key: '处理人', name: 'performerName', skip: !isAnomaly },
@ -89,6 +90,7 @@ const DetailForm = (props) => {
{ key: '巡查内容', name: 'content' }, { key: '巡查内容', name: 'content' },
{ key: '路线代码', name: 'codeRoad', skip: !isAnomaly && !isPatrol }, { key: '路线代码', name: 'codeRoad', skip: !isAnomaly && !isPatrol },
{ key: '现场照片', name: 'scenePic' }, { key: '现场照片', name: 'scenePic' },
{ key: '处理意见', name: 'handleOpinions', skip: !isAnomaly },
{ key: '处理详情', name: 'handleContent', skip: !isAnomaly }, { key: '处理详情', name: 'handleContent', skip: !isAnomaly },
{ key: '处理图片', name: 'handlePic', skip: !isAnomaly }, { key: '处理图片', name: 'handlePic', skip: !isAnomaly },
{ key: '处理人', name: 'performerName', skip: !isAnomaly } { key: '处理人', name: 'performerName', skip: !isAnomaly }
@ -112,7 +114,7 @@ const DetailForm = (props) => {
<div style={{ display: 'flex', width: '100%', justifyContent: 'space-between', margin: '12px 0' }}> <div style={{ display: 'flex', width: '100%', justifyContent: 'space-between', margin: '12px 0' }}>
<span style={{ fontSize: 16, color: 'gray', minWidth: '26%' }}>{obj.key}</span> <span style={{ fontSize: 16, color: 'gray', minWidth: '26%' }}>{obj.key}</span>
{ {
obj.name != 'scenePic' && obj.name != 'roadSectionStart' && obj.name != 'videoUrl' && obj.name.indexOf('conserve') == -1 ? obj.name != 'handlePic' && obj.name != 'scenePic' && obj.name != 'roadSectionStart' && obj.name != 'videoUrl' && obj.name.indexOf('conserve') == -1 ?
<Input <Input
style={{ width: '70%' }} style={{ width: '70%' }}
value={ value={

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

@ -24,6 +24,7 @@ const TransporTationTable = (props) => {
const [differentiate, setDifferentiate] = useState('road') const [differentiate, setDifferentiate] = useState('road')
const [grade, setGrade] = useState('县') const [grade, setGrade] = useState('县')
const [departmentInfo, setDepartment] = useState('') const [departmentInfo, setDepartment] = useState('')
const [roadData, setRoadData] = useState([])//道路数据
const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'ROADMANAGE')[0].isshow === "true" ? true : '') const [editAble, setEditAble] = useState(user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'ROADMANAGE')[0].isshow === "true" ? true : '')
const ref = useRef() const ref = useRef()
useEffect(() => { ref.current.reload() }, [whichofits, delet]) useEffect(() => { ref.current.reload() }, [whichofits, delet])
@ -3761,6 +3762,7 @@ const TransporTationTable = (props) => {
setWhichofits('县') setWhichofits('县')
setDifferentiate('road') setDifferentiate('road')
setGrade('县') setGrade('县')
setRoadData([])
}}>县道{activeKey === 'tab1'}</span>, }}>县道{activeKey === 'tab1'}</span>,
}, },
{ {
@ -3769,6 +3771,7 @@ const TransporTationTable = (props) => {
setWhichofits('乡') setWhichofits('乡')
setGrade('乡') setGrade('乡')
setDifferentiate('road') setDifferentiate('road')
setRoadData([])
}}>乡道{activeKey === 'tab2'}</span>, }}>乡道{activeKey === 'tab2'}</span>,
}, },
@ -3778,6 +3781,7 @@ const TransporTationTable = (props) => {
setWhichofits('村') setWhichofits('村')
setDifferentiate('road') setDifferentiate('road')
setGrade('村') setGrade('村')
setRoadData([])
}}>村道{activeKey === 'tab3'}</span>, }}>村道{activeKey === 'tab3'}</span>,
}, },
@ -3819,8 +3823,8 @@ const TransporTationTable = (props) => {
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getRoadway(query)); const res = await dispatch(getRoadway(query));
// console.log(res) const uniqueArray = [...new Set(res.payload.data?.map(item => item.routeName))];
setRoadData(uniqueArray)
setCounts(departmentInfo ? res.payload.data.filter((item) => { setCounts(departmentInfo ? res.payload.data.filter((item) => {
return item.townshipCode === departmentInfo.areaCode return item.townshipCode === departmentInfo.areaCode
}) : res.payload.data) }) : res.payload.data)
@ -3836,6 +3840,8 @@ const TransporTationTable = (props) => {
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getRoadway(query)); const res = await dispatch(getRoadway(query));
const uniqueArray = [...new Set(res.payload.data?.map(item => item.routeName))];
setRoadData(uniqueArray)
setCounts(departmentInfo ? res.payload.data.filter((item) => { setCounts(departmentInfo ? res.payload.data.filter((item) => {
return item.townshipCode === departmentInfo.areaCode return item.townshipCode === departmentInfo.areaCode
}) : res.payload.data) }) : res.payload.data)
@ -3849,7 +3855,9 @@ const TransporTationTable = (props) => {
road: sitename road: sitename
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getRoadway(query)); const res = await dispatch(getRoadway(query))
const uniqueArray = [...new Set(res.payload.data?.map(item => item.routeName))];
setRoadData(uniqueArray)
setCounts(departmentInfo ? res.payload.data.filter((item) => { setCounts(departmentInfo ? res.payload.data.filter((item) => {
return item.townshipCode === departmentInfo.areaCode return item.townshipCode === departmentInfo.areaCode
}) : res.payload.data) }) : res.payload.data)
@ -3864,8 +3872,8 @@ const TransporTationTable = (props) => {
entryName: sitename entryName: sitename
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getProject(query)); const res = await dispatch(getProject(query))
setCounts(res.payload.data) console.log('56666666', res)
return { return {
...res, ...res,
total: res.payload.data ? res.payload.data.count : 0 total: res.payload.data ? res.payload.data.count : 0
@ -3875,6 +3883,7 @@ const TransporTationTable = (props) => {
search={{ search={{
defaultCollapsed: false, defaultCollapsed: false,
optionRender: (searchConfig, formProps, dom) => [ optionRender: (searchConfig, formProps, dom) => [
<span style={{ marginRight: 20 }}>{`共有${whichofits}道:${roadData.length || 0}`}</span>,
...dom.reverse(), ...dom.reverse(),
<Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, grade, differentiate) }} <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, grade, differentiate) }}
disabled={user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'ROADMANAGE')[0].isshow === "true" ? true : ''} disabled={user?.username !== 'SuperAdmin' && user?.userResources?.filter(i => i.resourceId === 'ROADMANAGE')[0].isshow === "true" ? true : ''}
@ -3884,7 +3893,7 @@ const TransporTationTable = (props) => {
> >
导出 导出
</Button> </Button>
</Popconfirm> </Popconfirm>,
], ],
}} }}
> >

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

@ -61,6 +61,7 @@ const DetailForm = (props) => {
{ key: '修复端头(块)', name: 'endHeadRepair' }, { key: '修复端头(块)', name: 'endHeadRepair' },
{ key: '其他养护内容', name: 'otherDescription' }, { key: '其他养护内容', name: 'otherDescription' },
{ key: '养护前图片', name: 'conserveBeforePic' }, { key: '养护前图片', name: 'conserveBeforePic' },
{ key: '养护中图片', name: 'conserveUnderwayPic' },
{ key: '养护后图片', name: 'conserveAfterPic' }, { key: '养护后图片', name: 'conserveAfterPic' },
{ key: '上报视频', name: 'videoUrl' }, { key: '上报视频', name: 'videoUrl' },

138
web/client/src/sections/quanju/containers/footer/build/Leftbottom.js

@ -17,9 +17,15 @@ function Leftbottom(props) {
"rgba(4,251,240,0.5)", "rgba(4,251,240,0.5)",
] ]
const safetyData = [ const safetyData = [
{name: '县道', value: 72}, { name: '县道', value: 72 },
{name: '乡道', value: 17}, { name: '乡道', value: 17 },
{name: '村道', value: 4}, { name: '村道', value: 4 },
]
//写死数据
const dataNo = [
{ name: '县', value: 207.8 },
{ name: '乡', value: 680.5 },
{ name: '村', value: 1800.7 },
] ]
const chartTitle = '道路总公里'; const chartTitle = '道路总公里';
const title = '基础设施安全监测版块'; const title = '基础设施安全监测版块';
@ -34,7 +40,7 @@ function Leftbottom(props) {
value: d.value value: d.value
}) })
}) })
// let safetyOption = { // let safetyOption = {
// tooltip: { // tooltip: {
// show: true, // show: true,
@ -63,7 +69,7 @@ function Leftbottom(props) {
// // fontSize: 12, // // fontSize: 12,
// // fontWeight:500, // // fontWeight:500,
// // color:'#E9F7FF', // // color:'#E9F7FF',
// // } // // }
// // }, // // },
// legend: [ // legend: [
@ -141,60 +147,60 @@ function Leftbottom(props) {
}, },
formatter: (values) => `${values.seriesName}<br /> ${values.marker} ${values.name}<b>${values.value}</b>公里`, formatter: (values) => `${values.seriesName}<br /> ${values.marker} ${values.name}<b>${values.value}</b>公里`,
}, },
// title: { // title: {
// text:total,//主标题文本 // text:total,//主标题文本
// left:'20%', // left:'20%',
// // top:'35%', // // top:'35%',
// subtext:chartTitle,//副标题文本 // subtext:chartTitle,//副标题文本
// textStyle:{ // textStyle:{
// fontFamily : "YouSheBiaoTiHei", // fontFamily : "YouSheBiaoTiHei",
// fontSize: 20, // fontSize: 20,
// color:'#FFFFFF', // color:'#FFFFFF',
// marginLeft:'20%', // marginLeft:'20%',
// align:'center' // align:'center'
// }, // },
// subtextStyle:{ // subtextStyle:{
// fontFamily : "PingFangSC-Medium PingFang SC", // fontFamily : "PingFangSC-Medium PingFang SC",
// fontSize: 12, // fontSize: 12,
// fontWeight:500, // fontWeight:500,
// color:'#E9F7FF', // color:'#E9F7FF',
// align:'center' // align:'center'
// } // }
// }, // },
legend: { legend: {
orient: "vertical", orient: "vertical",
itemWidth: 10, itemWidth: 10,
itemHeight: 10, itemHeight: 10,
// right: '30%', // right: '30%',
right: '10%', right: '10%',
top: 'center', top: 'center',
align: 'left', align: 'left',
data: name, data: name,
formatter: (name) => { formatter: (name) => {
for (let i = 0; i < option.series[1].data.length; i += 1) { for (let i = 0; i < option.series[1].data.length; i += 1) {
if (name === option.series[1].data[i].name) { if (name === option.series[1].data[i].name) {
let arr = [`{a|${name}}`, `{b|${option.series[1].data[i].value}}`] let arr = [`{a|${name}}`, `{b|${option.series[1].data[i].value}}`]
return arr.join('\t'); return arr.join('\t');
} }
} }
},
textStyle: {
rich: {
a: {
color: '#E9F7FF',
fontSize: 14,
padding:[0,10]
},
b: {
fontSize: 16,
fontFamily: 'YouSheBiaoTiHei',
color: '#fff',
padding:[0,0,0,12]
}, },
} textStyle: {
} rich: {
}, a: {
color: '#E9F7FF',
fontSize: 14,
padding: [0, 10]
},
b: {
fontSize: 16,
fontFamily: 'YouSheBiaoTiHei',
color: '#fff',
padding: [0, 0, 0, 12]
},
}
}
},
grid: { grid: {
left: '10%' left: '10%'
}, },
@ -229,7 +235,8 @@ legend: {
label: { label: {
show: false show: false
}, },
data: data, data: dataNo,
// data: data,
}, },
], ],
}; };
@ -262,23 +269,24 @@ legend: {
// highlightPie(); // highlightPie();
// } // }
// let changePieInterval = setInterval(selectPie, 1000); // let changePieInterval = setInterval(selectPie, 1000);
myChart.onChartReady = (instance) => { myChart.onChartReady = (instance) => {
chartRef.current.safetyChart = instance; chartRef.current.safetyChart = instance;
} }
myChart.setOption(option); myChart.setOption(option);
return ()=>{ return () => {
// clearInterval(changePieInterval) // clearInterval(changePieInterval)
} }
}, [data]); }, [data]);
return ( return (
<div className='build-left-bottom'> <div className='build-left-bottom'>
<span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center",top:0}}>公里</span> <span style={{ position: "absolute", width: "10%", color: "#FFF", backgroundColor: 'rgba(216, 240, 255, 0.1)', right: "5%", textAlign: "center", top: 0 }}>公里</span>
<div className='build-left-bottom-title'> <div className='build-left-bottom-title'>
<h2>{total}</h2> <h2>2689.00</h2>
{/* <h2>{total}</h2> */}
<span>道路总公里</span> <span>道路总公里</span>
</div> </div>
<img src='/assets/images/quanju/chart-circle.png'></img> <img src='/assets/images/quanju/chart-circle.png'></img>
<div ref={chartRef} style={{ width: width || "70%", height: height || "90%" }} id="ech"></div> <div ref={chartRef} style={{ width: width || "70%", height: height || "90%" }} id="ech"></div>
</div> </div>

35
web/client/src/sections/quanju/containers/footer/build/Rightbottom.js

@ -4,7 +4,7 @@ import { Col, Progress, Row } from 'antd';
import React, { useEffect, useRef, useState } from 'react'; import React, { useEffect, useRef, useState } from 'react';
// import ReactEcharts from 'echarts-for-react'; // import ReactEcharts from 'echarts-for-react';
import * as echarts from 'echarts'; import * as echarts from 'echarts';
function Rightbottom (props) { function Rightbottom(props) {
const { width, height, total, data, text } = props const { width, height, total, data, text } = props
const chartRef = useRef(null); const chartRef = useRef(null);
const [shuzu, setShuzu] = useState() const [shuzu, setShuzu] = useState()
@ -208,16 +208,17 @@ function Rightbottom (props) {
return ( return (
<div className='build-right-bottom'> <div className='build-right-bottom'>
<div className='build-right-bottom-item1'> <div className='build-right-bottom-item1'>
<div> <div>
<span /> <span />
<span className='sanji'><i style={{color: 'rgba(28,96,254,1)'}}>&#9658;</i>&nbsp;</span> <span className='sanji'><i style={{ color: 'rgba(28,96,254,1)' }}>&#9658;</i>&nbsp;</span>
</div> </div>
<div>{sanji[2] + sanji[3] + sanji[4]}</div> <div>{sanji[2] + sanji[3] + sanji[4]}</div>
</div> </div>
{/* <span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center",top:0}}>段</span> */} {/* <span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center",top:0}}>段</span> */}
<div className='build-right-bottom-title'> <div className='build-right-bottom-title'>
<h2>{total || 0}</h2> {/* <h2>{total || 0}</h2> */}
<h2>2689.00</h2>
<span>道路总公里</span> <span>道路总公里</span>
</div> </div>
{/* <div className='img1'> {/* <div className='img1'>
@ -226,16 +227,16 @@ function Rightbottom (props) {
<div className='img'> <div className='img'>
<img src='/assets/images/quanju/chart-circle.png' /> <img src='/assets/images/quanju/chart-circle.png' />
</div> </div>
<div /* ref={chartRef} */ style={{ width: width || "70%", height: height || "90%"}} /* id="ech" */> <div /* ref={chartRef} */ style={{ width: width || "70%", height: height || "90%" }} /* id="ech" */>
<div ref={chartRef} style={{ width: "65%", height: "90%"}} id="ech"></div> <div ref={chartRef} style={{ width: "65%", height: "90%" }} id="ech"></div>
<div className='build-right-bottom-item2'> <div className='build-right-bottom-item2'>
<div> <div>
<span /> <span />
<span className='siji'><i style={{color:"rgba(4,251,240,1)"}}>&#9658;</i>&nbsp;</span> <span className='siji'><i style={{ color: "rgba(4,251,240,1)" }}>&#9658;</i>&nbsp;</span>
</div>
<div>{siji[0] + siji[1]}</div>
</div> </div>
<div>{siji[0] + siji[1]}</div>
</div>
</div> </div>
</div> </div>
); );

1
web/client/src/sections/quanju/containers/footer/build/index.js

@ -246,6 +246,7 @@ const Build = (props) => {
width='100%' width='100%'
height='100%' height='100%'
text='道路总公里' text='道路总公里'
//total={keepThreeNum(sundata)}
total={keepThreeNum(sundata)} total={keepThreeNum(sundata)}
// colorList={colorList} // colorList={colorList}
// underColorList={underColorList} // underColorList={underColorList}

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

@ -104,8 +104,9 @@ 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%" }}>
{/* <Spin spinning={!roads} tip="Loading" > */} {/* <Spin spinning={!roads} tip="Loading" > */}
<p style={{ position: "absolute", color: "rgba(216,240,255,0.8)", top: "10px" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{isNaN(((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)) ? "" : ((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" }}>{((207.8 / 2689) * 100).toFixed(2)}</span>%</p>
<p style={{ width: "50%", position: "absolute", right: "0%", fontFamily: "YouSheBiaoTiHei", textAlign: "right", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{isNaN(roads?.["县"].toFixed(3)) ? "" : 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%" }}>207.8<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%" }}>{isNaN(roads?.["县"].toFixed(3)) ? "" : 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> */}
{/* </Spin> */} {/* </Spin> */}
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}> <div style={{ width: "96%", position: "relative", left: "2%", height: "50%" }}>
@ -116,9 +117,12 @@ const Right = (props) => {
</div> </div>
<div style={{ width: "96%", position: "relative", left: "2%" }}> <div style={{ width: "96%", position: "relative", left: "2%" }}>
{/* <Spin spinning={!roads} tip="Loading" > */} {/* <Spin spinning={!roads} tip="Loading" > */}
<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" }}></span>2481.2<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?.["村"]).toFixed(3)) ? "" : (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" }}>{isNaN((roads?.["乡"] + roads?.["村"]).toFixed(3)) ? "" : (roads?.["乡"] + roads?.["村"]).toFixed(3)}</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>{((2481.2 / 2689) * 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> */}
{/* </Spin> */} {/* </Spin> */}
</div> </div>

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

@ -39,7 +39,9 @@ const Leftcenter = (props) => {
</div> </div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "11%" }}> <div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "11%" }}>
<p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>道路统计<span style={{ marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}>公里</span></p> <p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>道路统计<span style={{ marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}>公里</span></p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>{isNaN((list?.["县"] + list?.["乡"] + list?.["村"]).toFixed(3)) ? "" : (list?.["县"] + list?.["乡"] + list?.["村"]).toFixed(3)}</p> {/* <p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>{isNaN((list?.["县"] + list?.["乡"] + list?.["村"]).toFixed(3)) ? "" : (list?.["县"] + list?.["乡"] + list?.["村"]).toFixed(3)}</p> */}
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>2689</p>
</div> </div>
</div> </div>
<div style={{ width: "30%", height: "10vh", backgroundColor: "", position: "relative", left: "35%", top: "-105%" }} onClick={() => { <div style={{ width: "30%", height: "10vh", backgroundColor: "", position: "relative", left: "35%", top: "-105%" }} onClick={() => {
@ -67,7 +69,9 @@ const Leftcenter = (props) => {
</div> </div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "8%" }}> <div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "8%" }}>
<p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>桥梁统计<span style={{ fontSize: "14px", marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}></span></p> <p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>桥梁统计<span style={{ fontSize: "14px", marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}></span></p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#00F1FF", fontSize: "2.5vh", marginTop: "-2%" }}>{isNaN((bridge?.["小桥"] + bridge?.["中桥"] + bridge?.["大桥"])) ? "" : (bridge?.["小桥"] + bridge?.["中桥"] + bridge?.["大桥"])}</p> <p style={{ fontFamily: "YouSheBiaoTiHei", color: "#00F1FF", fontSize: "2.5vh", marginTop: "-2%" }}>165</p>
{/* <p style={{ fontFamily: "YouSheBiaoTiHei", color: "#00F1FF", fontSize: "2.5vh", marginTop: "-2%" }}>{isNaN((bridge?.["小桥"] + bridge?.["中桥"] + bridge?.["大桥"])) ? "" : (bridge?.["小桥"] + bridge?.["中桥"] + bridge?.["大桥"])}</p> */}
</div> </div>
</div> </div>
</div> </div>

6
web/client/src/sections/quanju/containers/footer/operation/right.js

@ -79,7 +79,7 @@ const Right = ({ busRunTime }) => {
slidesToShow={4} slidesToShow={4}
> >
{ {
busRunTimeList.map((b, i) => { busRunTimeList.map((d, index) => {
return ( return (
<div key={index} style={{ width: '100%', height: '40%' }}> <div key={index} style={{ width: '100%', height: '40%' }}>
<div className='busInformation'> <div className='busInformation'>
@ -92,9 +92,9 @@ const Right = ({ busRunTime }) => {
</span> </span>
<span> <span>
<h3>发车时间</h3> <h3>发车时间</h3>
<h4>{d.lastDepTime}</h4> <h5>{d.lastDepTime}</h5>
</span> </span>
<span> <span style={{ position: 'relative', left: '21%' }}>
<h3>司机</h3> <h3>司机</h3>
<h5>{d.employeeName}</h5> <h5>{d.employeeName}</h5>
<h3>工号</h3> <h3>工号</h3>

Loading…
Cancel
Save