Browse Source

Merge branch 'dev' of https://gitea.anxinyun.cn/gao.zhiyuan/Highways4Good into dev

release_0.0.4
wanyiwei 3 years ago
parent
commit
a62bce91e8
  1. 189
      api/app/lib/controllers/data/index.js
  2. 6
      api/app/lib/controllers/data/vehicle.js
  3. 24
      api/app/lib/controllers/report/index.js
  4. 1884
      api/app/lib/models/bridge.js
  5. 1029
      api/app/lib/models/bus_car.js
  6. 478
      api/app/lib/models/bus_line.js
  7. 592
      api/app/lib/models/municipal_business.js
  8. 801
      api/app/lib/models/municipal_vehicle.js
  9. 383
      api/app/lib/models/overspeed.js
  10. 250
      api/app/lib/models/project.js
  11. 4
      api/app/lib/models/publicity.js
  12. 16
      api/app/lib/models/report.js
  13. 1485
      api/app/lib/models/road.js
  14. 98
      api/app/lib/models/statistic.js
  15. 6
      api/app/lib/routes/data/index.js
  16. 654
      api/log/development.log
  17. 7
      api/package.json
  18. 3
      api/sequelize-automate.config.js
  19. 4
      api/utils/xlsxDownload.js
  20. 60
      api/yarn.lock
  21. 8
      weapp/src/packages/changePassword/index.jsx
  22. 8
      weapp/src/packages/patrol/index.jsx
  23. 3
      weapp/src/packages/patrolView/index.config.js
  24. 66
      weapp/src/packages/patrolView/index.jsx
  25. 33
      weapp/src/pages/home/index.jsx
  26. 10
      weapp/src/pages/home/index.scss
  27. 2
      weapp/src/pages/user/index.jsx
  28. 88
      weapp/src/static/img/home/video-bg.svg
  29. BIN
      weapp/src/static/img/tabbar/shouye-active.png
  30. BIN
      weapp/src/static/img/tabbar/shouye.png
  31. BIN
      weapp/src/static/img/tabbar/wode-active.png
  32. BIN
      weapp/src/static/img/tabbar/wode.png
  33. 25
      web/client/assets/color.less
  34. BIN
      web/client/assets/images/leadership/weizhis.png
  35. BIN
      web/client/assets/images/leadership/youofanye.png
  36. BIN
      web/client/assets/images/leadership/zuofanye.png
  37. 4
      web/client/src/components/index.js
  38. 40
      web/client/src/components/simpleFileDownButton.js
  39. 204
      web/client/src/sections/fillion/actions/infor.js
  40. 121
      web/client/src/sections/fillion/components/bridgeTable.js
  41. 42
      web/client/src/sections/fillion/components/gis/patrolGis.js
  42. 106
      web/client/src/sections/fillion/components/highways/highwaysdata.js
  43. 76
      web/client/src/sections/fillion/components/highwaysTable.js
  44. 292
      web/client/src/sections/fillion/components/infor/details.js
  45. 192
      web/client/src/sections/fillion/components/inforTable.js
  46. 1350
      web/client/src/sections/fillion/components/operationalTable.js
  47. 45
      web/client/src/sections/fillion/components/patrolTable.js
  48. 4
      web/client/src/sections/fillion/components/project/project.js
  49. 1120
      web/client/src/sections/fillion/components/publicTable.js
  50. 190
      web/client/src/sections/fillion/components/transportationTable.js
  51. 4
      web/client/src/sections/fillion/nav-item.js
  52. 53
      web/client/src/sections/quanju/containers/example.js
  53. 2
      web/client/src/sections/quanju/containers/footer/build/Rightbottom.js
  54. 2
      web/client/src/sections/quanju/containers/footer/build/Rightcenter.js
  55. 11
      web/client/src/sections/quanju/containers/footer/build/index.js
  56. 4
      web/client/src/sections/quanju/containers/footer/build/style.less
  57. 189
      web/client/src/sections/quanju/containers/footer/gis/bounds.js
  58. 53
      web/client/src/sections/quanju/containers/footer/gis/gis.js
  59. 59
      web/client/src/sections/quanju/containers/footer/gis/mock_data.js
  60. 28
      web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js
  61. 34
      web/client/src/sections/quanju/containers/footer/guanli/index.js
  62. 3
      web/client/src/sections/quanju/containers/footer/guanli/style.less
  63. 18
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js
  64. 12
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/handong.js
  65. 6
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js
  66. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less
  67. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js
  68. 14
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js
  69. 2
      web/client/src/sections/quanju/containers/footer/leadership/left/echarts/lefttopecharts.js
  70. 8
      web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js
  71. 49
      web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js
  72. 8
      web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js
  73. 5
      web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js
  74. 46
      web/client/src/utils/webapi.js
  75. 645
      web/log/development.txt
  76. 2
      web/package.json

189
api/app/lib/controllers/data/index.js

@ -1,106 +1,107 @@
'use strict'; 'use strict';
const fs = require('fs');
// const { simpleExcelDown } = require('../../../../utils/xlsxDownload'); const xlsxDownload = require('../../../../utils/xlsxDownload.js');
const moment = require('moment');
async function dataExport (ctx) { async function dataExport (ctx) {
try { try {
// const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
// const { userId } = ctx.fs.api const { userId } = ctx.fs.api
// const { ids } = ctx.query; const { exp, ids, roadLevel, municipalType } = ctx.query;
if (!exp) {
throw '参数错误';
}
const modalList = [
{
n: '道路',
k: 'road',
tableName: 'Road',
},
{
n: '桥梁',
k: 'bridge',
tableName: 'Bridge'
},
{
n: '运政车辆',
k: 'vehicle',
tableName: 'MunicipalVehicle',
},
{
n: '运政业户',
k: 'business',
tableName: 'MunicipalBusiness',
},
{
n: '工程一览',
k: 'project',
tableName: 'Project',
},
{
n: '治超',
k: 'overspeed',
tableName: 'Overspeed',
},
{
n: '公交线路',
k: 'busLine',
tableName: 'BusLine',
},
{
n: '公交车辆',
k: 'busCar',
tableName: 'BusCar',
},
]
const modalOption = modalList.find(item => item.k == exp);
if (!modalOption) {
throw '参数错误';
}
// const fileList = [ let findOption = {
// { where: {}
// n: '道路', }
// tableName: 'road', if (ids) {
// defaultKey: ['level'], findOption.where.id = { $in: ids.split(',') }
// defaultValue: ['村'], }
// }, if (roadLevel) {
// { findOption.where.level = roadLevel
// n: '道路', }
// tableName: 'road', if (municipalType) {
// defaultKey: ['level'], findOption.where.type = municipalType
// defaultValue: ['县'], }
// },
// {
// n: '道路',
// tableName: 'road',
// defaultKey: ['level'],
// defaultValue: ['乡'],
// },
// {
// n: '桥梁',
// tableName: 'bridge'
// },
// {
// n: '运政车辆',
// tableName: 'municipal_vehicle',
// defaultKey: ['type'],
// defaultValue: ['出租车'],
// },
// {
// n: '运政车辆',
// tableName: 'municipal_vehicle',
// defaultKey: ['type'],
// defaultValue: ['危货'],
// },
// {
// n: '运政业户',
// tableName: 'municipal_business',
// defaultKey: ['type'],
// defaultValue: ['出租车'],
// },
// {
// n: '运政业户',
// tableName: 'municipal_business',
// defaultKey: ['type'],
// defaultValue: ['危货'],
// },
// {
// n: '工程一览',
// tableName: 'project',
// defaultKey: ['done', 'type'],
// defaultValue: [false, 'road'],
// },
// {
// n: '工程一览',
// tableName: 'project',
// defaultKey: ['done', 'type'],
// defaultValue: [false, 'bridge'],
// },
// {
// n: '治超',
// tableName: 'overspeed',
// },
// {
// n: '公交线路',
// tableName: 'bus_line',
// },
// {
// n: '公交车辆',
// tableName: 'bus_car',
// },
// ]
// const exportData = await models.BusCar.destroy({ const exportData = await models[modalOption.tableName].findAll(findOption)
// where: { const tableAttributes = models[modalOption.tableName].tableAttributes
// id: { $in: ids.split(',') } let header = []
// } for (let k in tableAttributes) {
// }) if (k != 'id' && tableAttributes[k].comment) {
header.push({
title: tableAttributes[k].comment || '-',
key: k,
index: tableAttributes[k].index,
})
}
}
header.sort((a, b) => { return a.index - b.index })
// const fileName = `摄像头信息列表_${moment().format('YYYYMMDDHHmmss')}` + '.csv' const fileName = `${modalOption.n}_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
// const filePath = await simpleExcelDown({ data: exportData, header, fileName: fileName }) const filePath = await xlsxDownload.simpleExcelDown({ data: exportData, header, fileName: fileName })
// const fileData = fs.readFileSync(filePath); const fileData = fs.readFileSync(filePath);
// ctx.status = 200; ctx.status = 200;
// ctx.set('Content-Type', 'application/x-xls'); ctx.set('Content-Type', 'application/x-xls');
// ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName)); ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
// ctx.body = fileData; ctx.body = fileData;
} 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;
// ctx.body = { ctx.body = {
// message: typeof error == 'string' ? error : undefined message: typeof error == 'string' ? error : undefined
// } }
} }
} }

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

@ -115,9 +115,9 @@ async function specificEdit (ctx) {
const data = ctx.request.body; const data = ctx.request.body;
if (!data.vehicleId) { if (!data.vehicleId) {
const vehicleRes = await models.Vehicle.create(data) const vehicleRes = await models.MunicipalVehicle.create(data)
} else { } else {
const vehicleRes = await models.Vehicle.update(data, { const vehicleRes = await models.MunicipalVehicle.update(data, {
where: { where: {
id: data.vehicleId id: data.vehicleId
} }
@ -139,7 +139,7 @@ async function specificDel (ctx) {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { vehicleId } = ctx.params; const { vehicleId } = ctx.params;
const vehicleRes = await models.Vehicle.destroy({ const vehicleRes = await models.MunicipalVehicle.destroy({
where: { where: {
id: vehicleId id: vehicleId
} }

24
api/app/lib/controllers/report/index.js

@ -1,15 +1,15 @@
'use strict'; 'use strict';
const { QueryTypes } = require('sequelize'); const { QueryTypes } = require('sequelize');
async function reportList (ctx) { async function reportList(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { limit, page, startTime, endTime, keyword, userId, reportType } = ctx.query const { limit, page, startTime, endTime, keyword, userId, reportType, isTop } = ctx.query
let findOption = { let findOption = {
where: { where: {
}, },
attributes: ['id', 'road', 'time', 'projectType', 'roadSectionStart', 'roadSectionEnd', 'reportType', 'content', 'longitude','latitude'], attributes: ['id', 'road', 'time', 'projectType', 'roadSectionStart', 'roadSectionEnd', 'reportType', 'content', 'longitude', 'latitude'],
include: [{ include: [{
model: models.User, model: models.User,
attributes: ['name'] attributes: ['name']
@ -39,7 +39,15 @@ async function reportList (ctx) {
if (reportType) { if (reportType) {
findOption.where.reportType = reportType findOption.where.reportType = reportType
} }
const reportRes = await models.Report.findAll(findOption) let reportRes = null;
if (isTop) {
const sqlStr = 'select * from (SELECT R.*, "row_number"() OVER(PARTITION BY R.user_id ORDER BY R."time" DESC) AS NEWINDEX FROM report AS R ) AS NR WHERE NEWINDEX = 1'
const sequelize = ctx.fs.dc.orm;
reportRes = await sequelize.query(sqlStr, { type: QueryTypes.SELECT });
} else {
reportRes = await models.Report.findAll(findOption)
}
ctx.status = 200; ctx.status = 200;
ctx.body = reportRes ctx.body = reportRes
@ -52,7 +60,7 @@ async function reportList (ctx) {
} }
} }
async function reportPosition (ctx) { async function reportPosition(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { startTime, endTime, userId, reportType } = ctx.query const { startTime, endTime, userId, reportType } = ctx.query
@ -102,7 +110,7 @@ async function reportPosition (ctx) {
} }
} }
async function reportDetail (ctx) { async function reportDetail(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { reportId } = ctx.params const { reportId } = ctx.params
@ -124,7 +132,7 @@ async function reportDetail (ctx) {
} }
} }
async function createReport (ctx) { async function createReport(ctx) {
try { try {
const { userId } = ctx.fs.api const { userId } = ctx.fs.api
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
@ -146,7 +154,7 @@ async function createReport (ctx) {
} }
} }
async function deleteReport (ctx) { async function deleteReport(ctx) {
try { try {
const models = ctx.fs.dc.models; const models = ctx.fs.dc.models;
const { reportId } = ctx.params; const { reportId } = ctx.params;

1884
api/app/lib/models/bridge.js

File diff suppressed because it is too large

1029
api/app/lib/models/bus_car.js

File diff suppressed because it is too large

478
api/app/lib/models/bus_line.js

@ -2,231 +2,255 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const BusLine = sequelize.define("busLine", { const BusLine = sequelize.define("busLine", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "bus_line_id_uindex" autoIncrement: true,
}, unique: "bus_line_id_uindex"
company: { },
type: DataTypes.STRING, company: {
allowNull: true, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: "公司", allowNull: true,
primaryKey: false, defaultValue: null,
field: "company", comment: "公司",
autoIncrement: false primaryKey: false,
}, field: "company",
fleet: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, fleet: {
defaultValue: null, index: 3,
comment: "车队", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "fleet", defaultValue: null,
autoIncrement: false comment: "车队",
}, primaryKey: false,
carCaptain: { field: "fleet",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, carCaptain: {
comment: "车队长", index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "car_captain", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "车队长",
assistantCarCaptain: { primaryKey: false,
type: DataTypes.STRING, field: "car_captain",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "副车队长", assistantCarCaptain: {
primaryKey: false, index: 5,
field: "assistant_car_captain", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
officeLocation: { comment: "副车队长",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "assistant_car_captain",
defaultValue: null, autoIncrement: false
comment: "办公地点", },
primaryKey: false, officeLocation: {
field: "office_location", index: 6,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
lineName: { defaultValue: null,
type: DataTypes.STRING, comment: "办公地点",
allowNull: true, primaryKey: false,
defaultValue: null, field: "office_location",
comment: "线路名称", autoIncrement: false
primaryKey: false, },
field: "line_name", lineName: {
autoIncrement: false index: 7,
}, type: DataTypes.STRING,
lineType: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "线路名称",
defaultValue: null, primaryKey: false,
comment: "线路类型", field: "line_name",
primaryKey: false, autoIncrement: false
field: "line_type", },
autoIncrement: false lineType: {
}, index: 8,
lineDivision: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "线路类型",
comment: "线路划分", primaryKey: false,
primaryKey: false, field: "line_type",
field: "line_division", autoIncrement: false
autoIncrement: false },
}, lineDivision: {
gpsNumber: { index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "GPS编号", comment: "线路划分",
primaryKey: false, primaryKey: false,
field: "gps_number", field: "line_division",
autoIncrement: false autoIncrement: false
}, },
startingPointEndPoint: { gpsNumber: {
type: DataTypes.STRING, index: 10,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "起点终点", defaultValue: null,
primaryKey: false, comment: "GPS编号",
field: "starting_point_end_point", primaryKey: false,
autoIncrement: false field: "gps_number",
}, autoIncrement: false
numberOfVehicles: { },
type: DataTypes.STRING, startingPointEndPoint: {
allowNull: true, index: 11,
defaultValue: null, type: DataTypes.STRING,
comment: "车辆数", allowNull: true,
primaryKey: false, defaultValue: null,
field: "number_of_vehicles", comment: "起点终点",
autoIncrement: false primaryKey: false,
}, field: "starting_point_end_point",
totalKilometers: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, numberOfVehicles: {
defaultValue: null, index: 12,
comment: "全程公里数", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "total_kilometers", defaultValue: null,
autoIncrement: false comment: "车辆数",
}, primaryKey: false,
ticketPrice: { field: "number_of_vehicles",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, totalKilometers: {
comment: "票价", index: 13,
primaryKey: false, type: DataTypes.STRING,
field: "ticket_price", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "全程公里数",
openingTime: { primaryKey: false,
type: DataTypes.STRING, field: "total_kilometers",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "开通时间", ticketPrice: {
primaryKey: false, index: 14,
field: "opening_time", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
runningTime: { comment: "票价",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "ticket_price",
defaultValue: null, autoIncrement: false
comment: "运行时间", },
primaryKey: false, openingTime: {
field: "running_time", index: 15,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
openingTimeSummer: { defaultValue: null,
type: DataTypes.STRING, comment: "开通时间",
allowNull: true, primaryKey: false,
defaultValue: null, field: "opening_time",
comment: "开班时间夏令", autoIncrement: false
primaryKey: false, },
field: "opening_time_summer", runningTime: {
autoIncrement: false index: 16,
}, type: DataTypes.STRING,
shiftClosingTimeSummer: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "运行时间",
defaultValue: null, primaryKey: false,
comment: "收班时间夏令", field: "running_time",
primaryKey: false, autoIncrement: false
field: "shift_closing_time_summer", },
autoIncrement: false openingTimeSummer: {
}, index: 17,
openingTimeWinter: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "开班时间夏令",
comment: "开班时间冬令", primaryKey: false,
primaryKey: false, field: "opening_time_summer",
field: "opening_time_winter", autoIncrement: false
autoIncrement: false },
}, shiftClosingTimeSummer: {
shiftClosingTimeWinter: { index: 18,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "收班时间冬令", comment: "收班时间夏令",
primaryKey: false, primaryKey: false,
field: "shift_closing_time_winter", field: "shift_closing_time_summer",
autoIncrement: false autoIncrement: false
}, },
uplinkOfStationsAlongTheWay: { openingTimeWinter: {
type: DataTypes.STRING, index: 19,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "沿途站点上行", defaultValue: null,
primaryKey: false, comment: "开班时间冬令",
field: "uplink_of_stations_along_the_way", primaryKey: false,
autoIncrement: false field: "opening_time_winter",
}, autoIncrement: false
downlinkOfStationsAlongTheWay: { },
type: DataTypes.STRING, shiftClosingTimeWinter: {
allowNull: true, index: 20,
defaultValue: null, type: DataTypes.STRING,
comment: "沿途站点下行", allowNull: true,
primaryKey: false, defaultValue: null,
field: "downlink_of_stations_along_the_way", comment: "收班时间冬令",
autoIncrement: false primaryKey: false,
}, field: "shift_closing_time_winter",
area: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, uplinkOfStationsAlongTheWay: {
defaultValue: null, index: 21,
comment: "所属区域", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "area", defaultValue: null,
autoIncrement: false comment: "沿途站点上行",
}, primaryKey: false,
remarks: { field: "uplink_of_stations_along_the_way",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, downlinkOfStationsAlongTheWay: {
comment: "备注", index: 22,
primaryKey: false, type: DataTypes.STRING,
field: "remarks", allowNull: true,
autoIncrement: false defaultValue: null,
} comment: "沿途站点下行",
}, { primaryKey: false,
tableName: "bus_line", field: "downlink_of_stations_along_the_way",
comment: "", autoIncrement: false
indexes: [] },
}); area: {
dc.models.BusLine = BusLine; index: 23,
return BusLine; type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "所属区域",
primaryKey: false,
field: "area",
autoIncrement: false
},
remarks: {
index: 24,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "备注",
primaryKey: false,
field: "remarks",
autoIncrement: false
}
}, {
tableName: "bus_line",
comment: "",
indexes: []
});
dc.models.BusLine = BusLine;
return BusLine;
}; };

592
api/app/lib/models/municipal_business.js

@ -2,285 +2,315 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const MunicipalBusiness = sequelize.define("municipalBusiness", { const MunicipalBusiness = sequelize.define("municipalBusiness", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "municipal_business_id_uindex" autoIncrement: true,
}, unique: "municipal_business_id_uindex"
nameOfBusinessOwner: { },
type: DataTypes.STRING, nameOfBusinessOwner: {
allowNull: true, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: "业户名称", allowNull: true,
primaryKey: false, defaultValue: null,
field: "name_of_business_owner", comment: "业户名称",
autoIncrement: false primaryKey: false,
}, field: "name_of_business_owner",
productName: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, productName: {
defaultValue: null, index: 3,
comment: "品名", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "product_name", defaultValue: null,
autoIncrement: false comment: "品名",
}, primaryKey: false,
creditSocialCode: { field: "product_name",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, creditSocialCode: {
comment: "信用社会代码", index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "credit_social_code", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "信用社会代码",
administrativeDivision: { primaryKey: false,
type: DataTypes.STRING, field: "credit_social_code",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "行政区划", administrativeDivision: {
primaryKey: false, index: 5,
field: "administrative_division", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
economicNature: { comment: "行政区划",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "administrative_division",
defaultValue: null, autoIncrement: false
comment: "经济性质", },
primaryKey: false, economicNature: {
field: "economic_nature", index: 6,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
address: { defaultValue: null,
type: DataTypes.STRING, comment: "经济性质",
allowNull: true, primaryKey: false,
defaultValue: null, field: "economic_nature",
comment: "地址", autoIncrement: false
primaryKey: false, },
field: "address", address: {
autoIncrement: false index: 7,
}, type: DataTypes.STRING,
contactNumber: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "地址",
defaultValue: null, primaryKey: false,
comment: "联系电话", field: "address",
primaryKey: false, autoIncrement: false
field: "contact_number", },
autoIncrement: false contactNumber: {
}, index: 8,
email: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "联系电话",
comment: "电子邮箱", primaryKey: false,
primaryKey: false, field: "contact_number",
field: "email", autoIncrement: false
autoIncrement: false },
}, email: {
legalRepresentative: { index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "法定代表人", comment: "电子邮箱",
primaryKey: false, primaryKey: false,
field: "legal_representative", field: "email",
autoIncrement: false autoIncrement: false
}, },
typeOfLegalPersonCertificate: { legalRepresentative: {
type: DataTypes.STRING, index: 10,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "法人证件类型", defaultValue: null,
primaryKey: false, comment: "法定代表人",
field: "type_of_legal_person_certificate", primaryKey: false,
autoIncrement: false field: "legal_representative",
}, autoIncrement: false
natureOfTransportation: { },
type: DataTypes.STRING, typeOfLegalPersonCertificate: {
allowNull: true, index: 11,
defaultValue: null, type: DataTypes.STRING,
comment: "运输性质", allowNull: true,
primaryKey: false, defaultValue: null,
field: "nature_of_transportation", comment: "法人证件类型",
autoIncrement: false primaryKey: false,
}, field: "type_of_legal_person_certificate",
legalPersonCertificateNumber: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, natureOfTransportation: {
defaultValue: null, index: 12,
comment: "法人证件号码", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "legal_person_certificate_number", defaultValue: null,
autoIncrement: false comment: "运输性质",
}, primaryKey: false,
telephoneNumberOfLegalRepresentative: { field: "nature_of_transportation",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, legalPersonCertificateNumber: {
comment: "法定代表人电话", index: 13,
primaryKey: false, type: DataTypes.STRING,
field: "telephone_number_of_legal_representative", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "法人证件号码",
nameOfThePersonInChargeOfTheBusiness: { primaryKey: false,
type: DataTypes.STRING, field: "legal_person_certificate_number",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "经营业户负责人姓名", telephoneNumberOfLegalRepresentative: {
primaryKey: false, index: 14,
field: "name_of_the_person_in_charge_of_the_business", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
telephoneNumberOfThePersonInChargeOfTheBusiness: { comment: "法定代表人电话",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "telephone_number_of_legal_representative",
defaultValue: null, autoIncrement: false
comment: "经营业户负责人电话号码", },
primaryKey: false, nameOfThePersonInChargeOfTheBusiness: {
field: "telephone_number_of_the_person_in_charge_of_the_business", index: 15,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
handledBy: { defaultValue: null,
type: DataTypes.STRING, comment: "经营业户负责人姓名",
allowNull: true, primaryKey: false,
defaultValue: null, field: "name_of_the_person_in_charge_of_the_business",
comment: "经办人", autoIncrement: false
primaryKey: false, },
field: "handled_by", telephoneNumberOfThePersonInChargeOfTheBusiness: {
autoIncrement: false index: 16,
}, type: DataTypes.STRING,
phoneNumberOfHandler: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "经营业户负责人电话号码",
defaultValue: null, primaryKey: false,
comment: "经办人电话", field: "telephone_number_of_the_person_in_charge_of_the_business",
primaryKey: false, autoIncrement: false
field: "phone_number_of_handler", },
autoIncrement: false handledBy: {
}, index: 17,
natureOfBusiness: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "经办人",
comment: "经营范围", primaryKey: false,
primaryKey: false, field: "handled_by",
field: "nature_of_business", autoIncrement: false
autoIncrement: false },
}, phoneNumberOfHandler: {
businessStatus: { index: 18,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "经营状态", comment: "经办人电话",
primaryKey: false, primaryKey: false,
field: "business_status", field: "phone_number_of_handler",
autoIncrement: false autoIncrement: false
}, },
businessLicenseNo: { natureOfBusiness: {
type: DataTypes.STRING, index: 19,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "经营许可证号", defaultValue: null,
primaryKey: false, comment: "经营范围",
field: "business_license_no", primaryKey: false,
autoIncrement: false field: "nature_of_business",
}, autoIncrement: false
fromTheExpiryDate: { },
type: DataTypes.STRING, businessStatus: {
allowNull: true, index: 20,
defaultValue: null, type: DataTypes.STRING,
comment: "有效期起", allowNull: true,
primaryKey: false, defaultValue: null,
field: "from_the_expiry_date", comment: "经营状态",
autoIncrement: false primaryKey: false,
}, field: "business_status",
expiryDate: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, businessLicenseNo: {
defaultValue: null, index: 21,
comment: "有效期止", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "expiry_date", defaultValue: null,
autoIncrement: false comment: "经营许可证号",
}, primaryKey: false,
issuingAuthority: { field: "business_license_no",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, fromTheExpiryDate: {
comment: "发证机构", index: 22,
primaryKey: false, type: DataTypes.STRING,
field: "issuing_authority", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "有效期起",
dateOfIssuance: { primaryKey: false,
type: DataTypes.STRING, field: "from_the_expiry_date",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "核发日期", expiryDate: {
primaryKey: false, index: 23,
field: "date_of_issuance", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
licenseCategory: { comment: "有效期止",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "expiry_date",
defaultValue: null, autoIncrement: false
comment: "证照类别", },
primaryKey: false, issuingAuthority: {
field: "license_category", index: 24,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
licenseIssuanceType: { defaultValue: null,
type: DataTypes.STRING, comment: "发证机构",
allowNull: true, primaryKey: false,
defaultValue: null, field: "issuing_authority",
comment: "证照发放类型", autoIncrement: false
primaryKey: false, },
field: "license_issuance_type", dateOfIssuance: {
autoIncrement: false index: 25,
}, type: DataTypes.STRING,
numberOfSharedVehicles: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "核发日期",
defaultValue: null, primaryKey: false,
comment: "共有车辆数", field: "date_of_issuance",
primaryKey: false, autoIncrement: false
field: "number_of_shared_vehicles", },
autoIncrement: false licenseCategory: {
}, index: 26,
creationDate: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "证照类别",
comment: "创建日期", primaryKey: false,
primaryKey: false, field: "license_category",
field: "creation_date", autoIncrement: false
autoIncrement: false },
}, licenseIssuanceType: {
type: { index: 27,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "类型 出租车/危货", comment: "证照发放类型",
primaryKey: false, primaryKey: false,
field: "type", field: "license_issuance_type",
autoIncrement: false autoIncrement: false
} },
}, { numberOfSharedVehicles: {
tableName: "municipal_business", index: 28,
comment: "", type: DataTypes.STRING,
indexes: [] allowNull: true,
}); defaultValue: null,
dc.models.MunicipalBusiness = MunicipalBusiness; comment: "共有车辆数",
return MunicipalBusiness; primaryKey: false,
field: "number_of_shared_vehicles",
autoIncrement: false
},
creationDate: {
index: 29,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "创建日期",
primaryKey: false,
field: "creation_date",
autoIncrement: false
},
type: {
index: 30,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: "类型 出租车/危货",
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "municipal_business",
comment: "",
indexes: []
});
dc.models.MunicipalBusiness = MunicipalBusiness;
return MunicipalBusiness;
}; };

801
api/app/lib/models/municipal_vehicle.js

@ -2,384 +2,425 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const MunicipalVehicle = sequelize.define("municipalVehicle", { const MunicipalVehicle = sequelize.define("municipalVehicle", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "municipal_vehicle_id_uindex" autoIncrement: true,
}, unique: "municipal_vehicle_id_uindex"
nameOfBusinessOwner: { },
type: DataTypes.STRING, nameOfBusinessOwner: {
allowNull: true, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: "业户名称", allowNull: true,
primaryKey: false, defaultValue: null,
field: "name_of_business_owner", comment: "业户名称",
autoIncrement: false primaryKey: false,
}, field: "name_of_business_owner",
productName: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, productName: {
defaultValue: null, index: 3,
comment: "品名", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "product_name", defaultValue: null,
autoIncrement: false comment: "品名",
}, primaryKey: false,
vehicleRegistry: { field: "product_name",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, vehicleRegistry: {
comment: "车籍地", index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "vehicle_registry", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "车籍地",
licensePlateNumber: { primaryKey: false,
type: DataTypes.STRING, field: "vehicle_registry",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "车牌号", licensePlateNumber: {
primaryKey: false, index: 5,
field: "license_plate_number", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
fuelType: { comment: "车牌号",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "license_plate_number",
defaultValue: null, autoIncrement: false
comment: "燃料类型", },
primaryKey: false, fuelType: {
field: "fuel_type", index: 6,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
address: { defaultValue: null,
type: DataTypes.STRING, comment: "燃料类型",
allowNull: true, primaryKey: false,
defaultValue: null, field: "fuel_type",
comment: "住址", autoIncrement: false
primaryKey: false, },
field: "address", address: {
autoIncrement: false index: 7,
}, type: DataTypes.STRING,
economicNature: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "住址",
defaultValue: null, primaryKey: false,
comment: "经济性质", field: "address",
primaryKey: false, autoIncrement: false
field: "economic_nature", },
autoIncrement: false economicNature: {
}, index: 8,
approvedPassengerCapacity: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "经济性质",
comment: "核定载客位数", primaryKey: false,
primaryKey: false, field: "economic_nature",
field: "approved_passenger_capacity", autoIncrement: false
autoIncrement: false },
}, approvedPassengerCapacity: {
approvedLoadMass: { index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "核定载质量", comment: "核定载客位数",
primaryKey: false, primaryKey: false,
field: "approved_load_mass", field: "approved_passenger_capacity",
autoIncrement: false autoIncrement: false
}, },
numberOfVehicleAxles: { approvedLoadMass: {
type: DataTypes.STRING, index: 10,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "车辆车轴数", defaultValue: null,
primaryKey: false, comment: "核定载质量",
field: "number_of_vehicle_axles", primaryKey: false,
autoIncrement: false field: "approved_load_mass",
}, autoIncrement: false
vehicleBrand: { },
type: DataTypes.STRING, numberOfVehicleAxles: {
allowNull: true, index: 11,
defaultValue: null, type: DataTypes.STRING,
comment: "车辆厂牌", allowNull: true,
primaryKey: false, defaultValue: null,
field: "vehicle_brand", comment: "车辆车轴数",
autoIncrement: false primaryKey: false,
}, field: "number_of_vehicle_axles",
natureOfBusiness: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, vehicleBrand: {
defaultValue: null, index: 12,
comment: "经营范围", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "nature_of_business", defaultValue: null,
autoIncrement: false comment: "车辆厂牌",
}, primaryKey: false,
vehicleOperationStatus: { field: "vehicle_brand",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, natureOfBusiness: {
comment: "车辆营运状态", index: 13,
primaryKey: false, type: DataTypes.STRING,
field: "vehicle_operation_status", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "经营范围",
busTypeAndClass: { primaryKey: false,
type: DataTypes.STRING, field: "nature_of_business",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "客车类型与等级", vehicleOperationStatus: {
primaryKey: false, index: 14,
field: "bus_type_and_class", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
annualReviewResults: { comment: "车辆营运状态",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "vehicle_operation_status",
defaultValue: null, autoIncrement: false
comment: "年审结果", },
primaryKey: false, busTypeAndClass: {
field: "annual_review_results", index: 15,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
dateOfThisAnnualReview: { defaultValue: null,
type: DataTypes.STRING, comment: "客车类型与等级",
allowNull: true, primaryKey: false,
defaultValue: null, field: "bus_type_and_class",
comment: "本次年审日期", autoIncrement: false
primaryKey: false, },
field: "date_of_this_annual_review", annualReviewResults: {
autoIncrement: false index: 16,
}, type: DataTypes.STRING,
dateOfNextAnnualReview: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "年审结果",
defaultValue: null, primaryKey: false,
comment: "下次年审日期", field: "annual_review_results",
primaryKey: false, autoIncrement: false
field: "date_of_next_annual_review", },
autoIncrement: false dateOfThisAnnualReview: {
}, index: 17,
dateOfRegistration: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "本次年审日期",
comment: "注册登记日期", primaryKey: false,
primaryKey: false, field: "date_of_this_annual_review",
field: "date_of_registration", autoIncrement: false
autoIncrement: false },
}, dateOfNextAnnualReview: {
sourceOfTransportationCapacity: { index: 18,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "运力来源", comment: "下次年审日期",
primaryKey: false, primaryKey: false,
field: "source_of_transportation_capacity", field: "date_of_next_annual_review",
autoIncrement: false autoIncrement: false
}, },
fromTheExpiryDate: { dateOfRegistration: {
type: DataTypes.STRING, index: 19,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "有效期起", defaultValue: null,
primaryKey: false, comment: "注册登记日期",
field: "from_the_expiry_date", primaryKey: false,
autoIncrement: false field: "date_of_registration",
}, autoIncrement: false
expiryDate: { },
type: DataTypes.STRING, sourceOfTransportationCapacity: {
allowNull: true, index: 20,
defaultValue: null, type: DataTypes.STRING,
comment: "有效期止", allowNull: true,
primaryKey: false, defaultValue: null,
field: "expiry_date", comment: "运力来源",
autoIncrement: false primaryKey: false,
}, field: "source_of_transportation_capacity",
engineDisplacement: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, fromTheExpiryDate: {
defaultValue: null, index: 21,
comment: "发动机排量", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "engine_displacement", defaultValue: null,
autoIncrement: false comment: "有效期起",
}, primaryKey: false,
engineNumber: { field: "from_the_expiry_date",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, expiryDate: {
comment: "发动机号", index: 22,
primaryKey: false, type: DataTypes.STRING,
field: "engine_number", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "有效期止",
vehicleEnginePower: { primaryKey: false,
type: DataTypes.STRING, field: "expiry_date",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "车辆发动机功率", engineDisplacement: {
primaryKey: false, index: 23,
field: "vehicle_engine_power", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
businessLicenseNo: { comment: "发动机排量",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "engine_displacement",
defaultValue: null, autoIncrement: false
comment: "经营许可证号", },
primaryKey: false, engineNumber: {
field: "business_license_no", index: 24,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
licensePlateColor: { defaultValue: null,
type: DataTypes.STRING, comment: "发动机号",
allowNull: true, primaryKey: false,
defaultValue: null, field: "engine_number",
comment: "车牌颜色", autoIncrement: false
primaryKey: false, },
field: "license_plate_color", vehicleEnginePower: {
autoIncrement: false index: 25,
}, type: DataTypes.STRING,
totalVehicleMass: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "车辆发动机功率",
defaultValue: null, primaryKey: false,
comment: "车辆总质量", field: "vehicle_engine_power",
primaryKey: false, autoIncrement: false
field: "total_vehicle_mass", },
autoIncrement: false businessLicenseNo: {
}, index: 26,
totalQuasiTractionMassOfVehicle: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "经营许可证号",
comment: "车辆准牵引总质量", primaryKey: false,
primaryKey: false, field: "business_license_no",
field: "total_quasi_traction_mass_of_vehicle", autoIncrement: false
autoIncrement: false },
}, licensePlateColor: {
roadTransportCertificateNo: { index: 27,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "道路运输证号", comment: "车牌颜色",
primaryKey: false, primaryKey: false,
field: "road_transport_certificate_no", field: "license_plate_color",
autoIncrement: false autoIncrement: false
}, },
vehicleHeight: { totalVehicleMass: {
type: DataTypes.STRING, index: 28,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "车辆车高", defaultValue: null,
primaryKey: false, comment: "车辆总质量",
field: "vehicle_height", primaryKey: false,
autoIncrement: false field: "total_vehicle_mass",
}, autoIncrement: false
vehicleConductor: { },
type: DataTypes.STRING, totalQuasiTractionMassOfVehicle: {
allowNull: true, index: 29,
defaultValue: null, type: DataTypes.STRING,
comment: "车辆车长", allowNull: true,
primaryKey: false, defaultValue: null,
field: "vehicle_conductor", comment: "车辆准牵引总质量",
autoIncrement: false primaryKey: false,
}, field: "total_quasi_traction_mass_of_vehicle",
vehicleWidth: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, roadTransportCertificateNo: {
defaultValue: null, index: 30,
comment: "车辆车宽", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "vehicle_width", defaultValue: null,
autoIncrement: false comment: "道路运输证号",
}, primaryKey: false,
vehicleType: { field: "road_transport_certificate_no",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, vehicleHeight: {
comment: "车辆类型", index: 31,
primaryKey: false, type: DataTypes.STRING,
field: "vehicle_type", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "车辆车高",
vehicleTypeWithDrivingLicense: { primaryKey: false,
type: DataTypes.STRING, field: "vehicle_height",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "行驶证车辆类型", vehicleConductor: {
primaryKey: false, index: 32,
field: "vehicle_type_with_driving_license", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
vehicleWheelbase: { comment: "车辆车长",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "vehicle_conductor",
defaultValue: null, autoIncrement: false
comment: "车辆轴距", },
primaryKey: false, vehicleWidth: {
field: "vehicle_wheelbase", index: 33,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
ratingDate: { defaultValue: null,
type: DataTypes.STRING, comment: "车辆车宽",
allowNull: true, primaryKey: false,
defaultValue: null, field: "vehicle_width",
comment: "等级评定日期", autoIncrement: false
primaryKey: false, },
field: "rating_date", vehicleType: {
autoIncrement: false index: 34,
}, type: DataTypes.STRING,
technicalEvaluationGrade: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "车辆类型",
defaultValue: null, primaryKey: false,
comment: "技术评定等级", field: "vehicle_type",
primaryKey: false, autoIncrement: false
field: "technical_evaluation_grade", },
autoIncrement: false vehicleTypeWithDrivingLicense: {
}, index: 35,
nextRatingDate: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "行驶证车辆类型",
comment: "下次等级评定日期", primaryKey: false,
primaryKey: false, field: "vehicle_type_with_driving_license",
field: "next_rating_date", autoIncrement: false
autoIncrement: false },
}, vehicleWheelbase: {
creationDate: { index: 36,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "创建日期", comment: "车辆轴距",
primaryKey: false, primaryKey: false,
field: "creation_date", field: "vehicle_wheelbase",
autoIncrement: false autoIncrement: false
}, },
type: { ratingDate: {
type: DataTypes.STRING, index: 37,
allowNull: false, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "类型 出租车/危货", defaultValue: null,
primaryKey: false, comment: "等级评定日期",
field: "type", primaryKey: false,
autoIncrement: false field: "rating_date",
} autoIncrement: false
}, { },
tableName: "municipal_vehicle", technicalEvaluationGrade: {
comment: "", index: 38,
indexes: [] type: DataTypes.STRING,
}); allowNull: true,
dc.models.MunicipalVehicle = MunicipalVehicle; defaultValue: null,
return MunicipalVehicle; comment: "技术评定等级",
primaryKey: false,
field: "technical_evaluation_grade",
autoIncrement: false
},
nextRatingDate: {
index: 39,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "下次等级评定日期",
primaryKey: false,
field: "next_rating_date",
autoIncrement: false
},
creationDate: {
index: 40,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "创建日期",
primaryKey: false,
field: "creation_date",
autoIncrement: false
},
type: {
index: 41,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: "类型 出租车/危货",
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "municipal_vehicle",
comment: "",
indexes: []
});
dc.models.MunicipalVehicle = MunicipalVehicle;
return MunicipalVehicle;
}; };

383
api/app/lib/models/overspeed.js

@ -2,186 +2,205 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const Overspeed = sequelize.define("overspeed", { const Overspeed = sequelize.define("overspeed", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "overspeed_id_uindex" autoIncrement: true,
}, unique: "overspeed_id_uindex"
districtcounty: { },
type: DataTypes.STRING, districtcounty: {
allowNull: true, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: "区/县", allowNull: true,
primaryKey: false, defaultValue: null,
field: "districtcounty", comment: "区/县",
autoIncrement: false primaryKey: false,
}, field: "districtcounty",
nameOfInspectionPoint: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, nameOfInspectionPoint: {
defaultValue: null, index: 3,
comment: "检测点名称", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "name_of_inspection_point", defaultValue: null,
autoIncrement: false comment: "检测点名称",
}, primaryKey: false,
licensePlate: { field: "name_of_inspection_point",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, licensePlate: {
comment: "车牌号码", index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "license_plate", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "车牌号码",
numberOfAxles: { primaryKey: false,
type: DataTypes.STRING, field: "license_plate",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "车轴数", numberOfAxles: {
primaryKey: false, index: 5,
field: "number_of_axles", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
overrunRate: { comment: "车轴数",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "number_of_axles",
defaultValue: null, autoIncrement: false
comment: "超限率", },
primaryKey: false, overrunRate: {
field: "overrun_rate", index: 6,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
overrunWeight: { defaultValue: null,
type: DataTypes.STRING, comment: "超限率",
allowNull: true, primaryKey: false,
defaultValue: null, field: "overrun_rate",
comment: "超限重量", autoIncrement: false
primaryKey: false, },
field: "overrun_weight", overrunWeight: {
autoIncrement: false index: 7,
}, type: DataTypes.STRING,
grossVehicleWeight: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "超限重量",
defaultValue: null, primaryKey: false,
comment: "车货总重", field: "overrun_weight",
primaryKey: false, autoIncrement: false
field: "gross_vehicle_weight", },
autoIncrement: false grossVehicleWeight: {
}, index: 8,
vehicleCargoWeightLimit: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "车货总重",
comment: "车货限重", primaryKey: false,
primaryKey: false, field: "gross_vehicle_weight",
field: "vehicle_cargo_weight_limit", autoIncrement: false
autoIncrement: false },
}, vehicleCargoWeightLimit: {
testTime: { index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "检测时间", comment: "车货限重",
primaryKey: false, primaryKey: false,
field: "test_time", field: "vehicle_cargo_weight_limit",
autoIncrement: false autoIncrement: false
}, },
nameOfBusinessOwner: { testTime: {
type: DataTypes.STRING, index: 10,
allowNull: true, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: "经营业户名称", defaultValue: null,
primaryKey: false, comment: "检测时间",
field: "name_of_business_owner", primaryKey: false,
autoIncrement: false field: "test_time",
}, autoIncrement: false
businessAddress: { },
type: DataTypes.STRING, nameOfBusinessOwner: {
allowNull: true, index: 11,
defaultValue: null, type: DataTypes.STRING,
comment: "经营业户地址", allowNull: true,
primaryKey: false, defaultValue: null,
field: "business_address", comment: "经营业户名称",
autoIncrement: false primaryKey: false,
}, field: "name_of_business_owner",
notifier: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, businessAddress: {
defaultValue: null, index: 12,
comment: "通知人", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "notifier", defaultValue: null,
autoIncrement: false comment: "经营业户地址",
}, primaryKey: false,
notificationMethod: { field: "business_address",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, notifier: {
comment: "通知方式", index: 13,
primaryKey: false, type: DataTypes.STRING,
field: "notification_method", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "通知人",
notificationResults: { primaryKey: false,
type: DataTypes.STRING, field: "notifier",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "通知结果", notificationMethod: {
primaryKey: false, index: 14,
field: "notification_results", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
processingTime: { comment: "通知方式",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "notification_method",
defaultValue: null, autoIncrement: false
comment: "处理时间", },
primaryKey: false, notificationResults: {
field: "processing_time", index: 15,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
deductPoints: { defaultValue: null,
type: DataTypes.STRING, comment: "通知结果",
allowNull: true, primaryKey: false,
defaultValue: null, field: "notification_results",
comment: "扣分", autoIncrement: false
primaryKey: false, },
field: "deduct_points", processingTime: {
autoIncrement: false index: 16,
}, type: DataTypes.STRING,
fine: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "处理时间",
defaultValue: null, primaryKey: false,
comment: "罚款", field: "processing_time",
primaryKey: false, autoIncrement: false
field: "fine", },
autoIncrement: false deductPoints: {
}, index: 17,
remarks: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "扣分",
comment: "备注", primaryKey: false,
primaryKey: false, field: "deduct_points",
field: "remarks", autoIncrement: false
autoIncrement: false },
} fine: {
}, { index: 18,
tableName: "overspeed", type: DataTypes.STRING,
comment: "", allowNull: true,
indexes: [] defaultValue: null,
}); comment: "罚款",
dc.models.Overspeed = Overspeed; primaryKey: false,
return Overspeed; field: "fine",
autoIncrement: false
},
remarks: {
index: 19,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "备注",
primaryKey: false,
field: "remarks",
autoIncrement: false
}
}, {
tableName: "overspeed",
comment: "",
indexes: []
});
dc.models.Overspeed = Overspeed;
return Overspeed;
}; };

250
api/app/lib/models/project.js

@ -2,123 +2,135 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const Project = sequelize.define("project", { const Project = sequelize.define("project", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "project_id_uindex" autoIncrement: true,
}, unique: "project_id_uindex"
entryName: { },
type: DataTypes.STRING, entryName: {
allowNull: true, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: "项目名称", allowNull: true,
primaryKey: false, defaultValue: null,
field: "entry_name", comment: "项目名称",
autoIncrement: false primaryKey: false,
}, field: "entry_name",
projectMileage: { autoIncrement: false
type: DataTypes.STRING, },
allowNull: true, projectMileage: {
defaultValue: null, index: 3,
comment: "工程里程", type: DataTypes.STRING,
primaryKey: false, allowNull: true,
field: "project_mileage", defaultValue: null,
autoIncrement: false comment: "工程里程",
}, primaryKey: false,
investment: { field: "project_mileage",
type: DataTypes.STRING, autoIncrement: false
allowNull: true, },
defaultValue: null, investment: {
comment: "投资", index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "investment", allowNull: true,
autoIncrement: false defaultValue: null,
}, comment: "投资",
buildUnit: { primaryKey: false,
type: DataTypes.STRING, field: "investment",
allowNull: true, autoIncrement: false
defaultValue: null, },
comment: "建设单位", buildUnit: {
primaryKey: false, index: 5,
field: "build_unit", type: DataTypes.STRING,
autoIncrement: false allowNull: true,
}, defaultValue: null,
constructionControlUnit: { comment: "建设单位",
type: DataTypes.STRING, primaryKey: false,
allowNull: true, field: "build_unit",
defaultValue: null, autoIncrement: false
comment: "监理单位", },
primaryKey: false, constructionControlUnit: {
field: "construction_control_unit", index: 6,
autoIncrement: false type: DataTypes.STRING,
}, allowNull: true,
designUnit: { defaultValue: null,
type: DataTypes.STRING, comment: "监理单位",
allowNull: true, primaryKey: false,
defaultValue: null, field: "construction_control_unit",
comment: "设计单位", autoIncrement: false
primaryKey: false, },
field: "design_unit", designUnit: {
autoIncrement: false index: 7,
}, type: DataTypes.STRING,
constructionUnit: { allowNull: true,
type: DataTypes.STRING, defaultValue: null,
allowNull: true, comment: "设计单位",
defaultValue: null, primaryKey: false,
comment: "施工单位", field: "design_unit",
primaryKey: false, autoIncrement: false
field: "construction_unit", },
autoIncrement: false constructionUnit: {
}, index: 8,
supervisorAndSupervisor: { type: DataTypes.STRING,
type: DataTypes.STRING, allowNull: true,
allowNull: true, defaultValue: null,
defaultValue: null, comment: "施工单位",
comment: "监督负责人及监督人员", primaryKey: false,
primaryKey: false, field: "construction_unit",
field: "supervisor_and_supervisor", autoIncrement: false
autoIncrement: false },
}, supervisorAndSupervisor: {
projectProgress: { index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
comment: "项目进展情况", comment: "监督负责人及监督人员",
primaryKey: false, primaryKey: false,
field: "project_progress", field: "supervisor_and_supervisor",
autoIncrement: false autoIncrement: false
}, },
done: { projectProgress: {
type: DataTypes.BOOLEAN, index: 10,
allowNull: false, type: DataTypes.STRING,
defaultValue: null, allowNull: true,
comment: null, defaultValue: null,
primaryKey: false, comment: "项目进展情况",
field: "done", primaryKey: false,
autoIncrement: false field: "project_progress",
}, autoIncrement: false
type: { },
type: DataTypes.STRING, done: {
allowNull: false, index: 11,
defaultValue: null, type: DataTypes.BOOLEAN,
comment: "类型 道路:road / 桥梁:bridge", allowNull: false,
primaryKey: false, defaultValue: null,
field: "type", comment: null,
autoIncrement: false primaryKey: false,
} field: "done",
}, { autoIncrement: false
tableName: "project", },
comment: "", type: {
indexes: [] index: 12,
}); type: DataTypes.STRING,
dc.models.Project = Project; allowNull: false,
return Project; defaultValue: null,
comment: "类型 道路:road / 桥梁:bridge",
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "project",
comment: "",
indexes: []
});
dc.models.Project = Project;
return Project;
}; };

4
api/app/lib/models/publicity.js

@ -6,6 +6,7 @@ module.exports = dc => {
const sequelize = dc.orm; const sequelize = dc.orm;
const Publicity = sequelize.define("publicity", { const Publicity = sequelize.define("publicity", {
id: { id: {
index: 1,
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
@ -16,6 +17,7 @@ module.exports = dc => {
unique: "publicity_id_uindex" unique: "publicity_id_uindex"
}, },
name: { name: {
index: 2,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
@ -25,6 +27,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
video: { video: {
index: 3,
type: DataTypes.ARRAY(DataTypes.INTEGER), type: DataTypes.ARRAY(DataTypes.INTEGER),
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -34,6 +37,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
enable: { enable: {
index: 4,
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true,

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

@ -6,6 +6,7 @@ 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,
@ -16,6 +17,7 @@ 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,
@ -25,6 +27,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
projectType: { projectType: {
index: 3,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
defaultValue: null, defaultValue: null,
@ -34,6 +37,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
road: { road: {
index: 4,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -43,6 +47,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
roadSectionStart: { roadSectionStart: {
index: 5,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -52,6 +57,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
roadSectionEnd: { roadSectionEnd: {
index: 6,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -61,6 +67,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
longitude: { longitude: {
index: 7,
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -70,6 +77,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
latitude: { latitude: {
index: 8,
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -79,6 +87,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
content: { content: {
index: 9,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,
@ -88,6 +97,7 @@ module.exports = dc => {
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,
@ -97,6 +107,7 @@ 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,
@ -106,6 +117,7 @@ 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,
@ -115,6 +127,7 @@ 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,
@ -124,6 +137,7 @@ 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,
@ -133,6 +147,7 @@ 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,
@ -142,6 +157,7 @@ module.exports = dc => {
autoIncrement: false autoIncrement: false
}, },
address: { address: {
index: 16,
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null,

1485
api/app/lib/models/road.js

File diff suppressed because it is too large

98
api/app/lib/models/statistic.js

@ -2,51 +2,55 @@
'use strict'; 'use strict';
module.exports = dc => { module.exports = dc => {
const DataTypes = dc.ORM; const DataTypes = dc.ORM;
const sequelize = dc.orm; const sequelize = dc.orm;
const Statistic = sequelize.define("statistic", { const Statistic = sequelize.define("statistic", {
id: { id: {
type: DataTypes.INTEGER, index: 1,
allowNull: false, type: DataTypes.INTEGER,
defaultValue: null, allowNull: false,
comment: null, defaultValue: null,
primaryKey: true, comment: null,
field: "id", primaryKey: true,
autoIncrement: true, field: "id",
unique: "vehicle_id_uindex" autoIncrement: true,
}, unique: "vehicle_id_uindex"
name: { },
type: DataTypes.STRING, name: {
allowNull: false, index: 2,
defaultValue: null, type: DataTypes.STRING,
comment: null, allowNull: false,
primaryKey: false, defaultValue: null,
field: "name", comment: null,
autoIncrement: false primaryKey: false,
}, field: "name",
count: { autoIncrement: false
type: DataTypes.INTEGER, },
allowNull: false, count: {
defaultValue: "0", index: 3,
comment: null, type: DataTypes.INTEGER,
primaryKey: false, allowNull: false,
field: "count", defaultValue: "0",
autoIncrement: false comment: null,
}, primaryKey: false,
type: { field: "count",
type: DataTypes.STRING, autoIncrement: false
allowNull: false, },
defaultValue: null, type: {
comment: null, index: 4,
primaryKey: false, type: DataTypes.STRING,
field: "type", allowNull: false,
autoIncrement: false defaultValue: null,
} comment: null,
}, { primaryKey: false,
tableName: "statistic", field: "type",
comment: "", autoIncrement: false
indexes: [] }
}); }, {
dc.models.Statistic = Statistic; tableName: "statistic",
return Statistic; comment: "",
indexes: []
});
dc.models.Statistic = Statistic;
return Statistic;
}; };

6
api/app/lib/routes/data/index.js

@ -7,13 +7,13 @@ const project = require('../../controllers/data/project');
const overspeed = require('../../controllers/data/overspeed'); const overspeed = require('../../controllers/data/overspeed');
const bus = require('../../controllers/data/bus'); const bus = require('../../controllers/data/bus');
const publicity = require('../../controllers/data/publicity'); const publicity = require('../../controllers/data/publicity');
const data = require('../../controllers/data'); const dataIndex = require('../../controllers/data/index');
module.exports = function (app, router, opts) { module.exports = function (app, router, opts) {
// 数据导出 // 数据导出
// app.fs.api.logAttr['GET/data/export'] = { content: '导出数据', visible: true }; app.fs.api.logAttr['GET/data/export'] = { content: '导出数据', visible: true };
// router.get('/data/export', data.dataExport); router.get('/data/export', dataIndex.dataExport);
// 运政 // 运政
//客运车 //客运车

654
api/log/development.log

@ -9354,3 +9354,657 @@
2022-07-27 13:41:39.301 - debug: [FS-LOGGER] Init. 2022-07-27 13:41:39.301 - debug: [FS-LOGGER] Init.
2022-07-27 13:41:39.426 - info: [FS-ATTACHMENT] Inject attachment mw into router. 2022-07-27 13:41:39.426 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:41:39.426 - info: [FS-AUTH] Inject auth and api mv into router. 2022-07-27 13:41:39.426 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:55:17.708 - debug: [FS-LOGGER] Init.
2022-07-27 13:55:17.844 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:55:17.845 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:57:58.186 - debug: [FS-LOGGER] Init.
2022-07-27 13:57:58.316 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:57:58.316 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:57:58.416 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:29)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 13:58:18.771 - debug: [FS-LOGGER] Init.
2022-07-27 13:58:18.904 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:58:18.905 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:58:19.015 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:29)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 13:58:35.745 - debug: [FS-LOGGER] Init.
2022-07-27 13:58:35.875 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:58:35.875 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:58:35.975 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:29)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 13:58:51.419 - debug: [FS-LOGGER] Init.
2022-07-27 13:58:51.544 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:58:51.545 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:59:30.681 - debug: [FS-LOGGER] Init.
2022-07-27 13:59:30.808 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:59:30.809 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 13:59:30.911 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:29)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 13:59:46.066 - debug: [FS-LOGGER] Init.
2022-07-27 13:59:46.189 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 13:59:46.189 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:00:44.183 - debug: [FS-LOGGER] Init.
2022-07-27 14:00:44.311 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:00:44.311 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:00:44.419 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:29)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:00:58.080 - debug: [FS-LOGGER] Init.
2022-07-27 14:00:58.209 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:00:58.209 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:01:56.663 - debug: [FS-LOGGER] Init.
2022-07-27 14:01:56.789 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:01:56.790 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:01:56.895 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:22)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:02:21.369 - debug: [FS-LOGGER] Init.
2022-07-27 14:02:21.495 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:02:21.495 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:03:33.768 - debug: [FS-LOGGER] Init.
2022-07-27 14:03:33.897 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:03:33.898 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:03:34.002 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:22)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:04:12.945 - debug: [FS-LOGGER] Init.
2022-07-27 14:04:13.091 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:04:13.091 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:06:11.749 - debug: [FS-LOGGER] Init.
2022-07-27 14:06:11.877 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:06:11.878 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:06:11.983 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:22)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:06:30.287 - debug: [FS-LOGGER] Init.
2022-07-27 14:06:30.417 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:06:30.417 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:07:42.820 - debug: [FS-LOGGER] Init.
2022-07-27 14:07:42.947 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:07:42.948 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:07:43.050 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:22)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:08:03.772 - debug: [FS-LOGGER] Init.
2022-07-27 14:08:03.905 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:08:03.905 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:10:17.266 - debug: [FS-LOGGER] Init.
2022-07-27 14:10:17.408 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:10:17.409 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:10:17.527 - error: [app]
{
message: "Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js',
stack: "Error: Cannot find module 'better-xlsx'\n" +
'Require stack:\n' +
'- c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\app\\index.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\config.js\n' +
'- c:\\_WorkCode\\四好公路\\api\\server.js\n' +
' at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:667:27)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js:3:14)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js:3:22)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js:10:19)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)',
code: 'MODULE_NOT_FOUND',
requireStack: [
'c:\\_WorkCode\\四好公路\\api\\utils\\xlsxDownload.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\controllers\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\data\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\routes\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\lib\\index.js',
'c:\\_WorkCode\\四好公路\\api\\app\\index.js',
'c:\\_WorkCode\\四好公路\\api\\config.js',
'c:\\_WorkCode\\四好公路\\api\\server.js'
]
}
2022-07-27 14:10:37.875 - debug: [FS-LOGGER] Init.
2022-07-27 14:10:38.002 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:10:38.003 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:12:23.299 - debug: [FS-LOGGER] Init.
2022-07-27 14:12:23.430 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:12:23.430 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:14:27.299 - debug: [FS-LOGGER] Init.
2022-07-27 14:14:27.428 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:14:27.428 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:14:57.566 - debug: [FS-LOGGER] Init.
2022-07-27 14:14:57.693 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:14:57.693 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:16:29.316 - debug: [FS-LOGGER] Init.
2022-07-27 14:16:29.444 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:16:29.444 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:16:45.000 - error: path: /data/export, error: ReferenceError: moment is not defined
2022-07-27 14:16:57.856 - debug: [FS-LOGGER] Init.
2022-07-27 14:16:57.994 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:16:57.994 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:18:39.984 - debug: [FS-LOGGER] Init.
2022-07-27 14:18:40.112 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:18:40.112 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:18:50.588 - error: path: /data/export, error: ReferenceError: header is not defined
2022-07-27 14:20:01.935 - error: path: /data/export, error: ReferenceError: header is not defined
2022-07-27 14:37:49.813 - debug: [FS-LOGGER] Init.
2022-07-27 14:37:49.964 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:37:49.964 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:42:45.417 - debug: [FS-LOGGER] Init.
2022-07-27 14:42:45.566 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 14:42:45.566 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 14:42:48.376 - error: path: /data/export, error: ReferenceError: fs is not defined
2022-07-27 15:29:53.136 - debug: [FS-LOGGER] Init.
2022-07-27 15:29:53.285 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-27 15:29:53.285 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-27 15:47:39.653 - error: path: /vehicle/1/specific, error: TypeError: Cannot read property 'destroy' of undefined
2022-07-27 15:47:55.412 - error: path: /vehicle/1/specific, error: TypeError: Cannot read property 'destroy' of undefined
2022-07-27 15:48:01.737 - error: path: /vehicle/4/specific, error: TypeError: Cannot read property 'destroy' of undefined
2022-07-27 15:49:28.071 - error: path: /vehicle/3/specific, error: TypeError: Cannot read property 'destroy' of undefined
2022-07-27 15:50:36.847 - error: path: /vehicle/3/specific, error: TypeError: Cannot read property 'destroy' of undefined
2022-07-27 15:51:05.608 - error: path: /vehicle/3/specific, error: TypeError: Cannot read property 'destroy' of undefined

7
api/package.json

@ -17,6 +17,7 @@
"archiver": "3.0.0", "archiver": "3.0.0",
"args": "^3.0.7", "args": "^3.0.7",
"async-busboy": "^0.7.0", "async-busboy": "^0.7.0",
"better-xlsx": "^0.7.6",
"crypto-js": "^4.0.0", "crypto-js": "^4.0.0",
"file-saver": "^2.0.2", "file-saver": "^2.0.2",
"fs-web-server-scaffold": "^2.0.2", "fs-web-server-scaffold": "^2.0.2",
@ -24,6 +25,7 @@
"kafka-node": "^2.2.3", "kafka-node": "^2.2.3",
"koa-convert": "^1.2.0", "koa-convert": "^1.2.0",
"koa-proxy": "^0.9.0", "koa-proxy": "^0.9.0",
"koa2-swagger-ui": "^5.3.0",
"md5-node": "^1.0.1", "md5-node": "^1.0.1",
"moment": "^2.24.0", "moment": "^2.24.0",
"path": "^0.12.7", "path": "^0.12.7",
@ -33,10 +35,9 @@
"request": "^2.88.2", "request": "^2.88.2",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"superagent": "^3.5.2", "superagent": "^3.5.2",
"swagger-jsdoc": "^6.1.0",
"uuid": "^3.3.2", "uuid": "^3.3.2",
"xlsx": "^0.16.9", "xlsx": "^0.16.9"
"koa2-swagger-ui": "^5.3.0",
"swagger-jsdoc": "^6.1.0"
}, },
"devDependencies": { "devDependencies": {
"mocha": "^6.0.2" "mocha": "^6.0.2"

3
api/sequelize-automate.config.js

@ -18,6 +18,7 @@ module.exports = {
timestamps: false, timestamps: false,
}, },
}, },
// !!! 所有 model 都有自定义脚本所不能生成的内容 执行此脚本需谨慎
options: { options: {
type: 'freesun', // 指定 models 代码风格 type: 'freesun', // 指定 models 代码风格
camelCase: true, // Models 文件中代码是否使用驼峰命名 camelCase: true, // Models 文件中代码是否使用驼峰命名
@ -27,7 +28,7 @@ module.exports = {
typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义 typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义
emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir` emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir`
tables: null, // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性 tables: null, // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性
skipTables: ['report', 'publicity'], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性 skipTables: [], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性
tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中 tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中
ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面 ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面
attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false

4
api/utils/xlsxDownload.js

@ -71,7 +71,7 @@ async function simpleExcelDown ({ data = [], header = [], fileName = moment().fo
}) })
return savePath return savePath
} }
module.exports = { module.exports = {
simpleExcelDown, simpleExcelDown
makeDir
} }

60
api/yarn.lock

@ -55,6 +55,13 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/runtime@^7.8.4":
version "7.18.9"
resolved "http://10.8.30.22:7000/@babel%2fruntime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
dependencies:
regenerator-runtime "^0.13.4"
"@fs/attachment@^1.0.0": "@fs/attachment@^1.0.0":
version "1.0.2" version "1.0.2"
resolved "http://10.8.30.22:7000/@fs%2fattachment/-/attachment-1.0.2.tgz#5ea035b79defb08f86119cb873912747a6a1570d" resolved "http://10.8.30.22:7000/@fs%2fattachment/-/attachment-1.0.2.tgz#5ea035b79defb08f86119cb873912747a6a1570d"
@ -528,6 +535,15 @@ better-assert@~1.0.0:
dependencies: dependencies:
callsite "1.0.0" callsite "1.0.0"
better-xlsx@^0.7.6:
version "0.7.6"
resolved "http://10.8.30.22:7000/better-xlsx/-/better-xlsx-0.7.6.tgz#dc9bdbc303ecdb74823f9582c608d9f6879f4b51"
integrity sha1-3JvbwwPs23SCP5WCxgjZ9oefS1E=
dependencies:
"@babel/runtime" "^7.8.4"
jszip "^3.2.2"
kind-of "^6.0.3"
binary@~0.3.0: binary@~0.3.0:
version "0.3.0" version "0.3.0"
resolved "http://10.8.30.22:7000/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" resolved "http://10.8.30.22:7000/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79"
@ -1928,6 +1944,11 @@ ieee754@^1.1.13:
resolved "http://10.8.30.22:7000/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" resolved "http://10.8.30.22:7000/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I= integrity sha1-jrehCmP/8l0VpXsAFYbRd9Gw01I=
immediate@~3.0.5:
version "3.0.6"
resolved "http://10.8.30.22:7000/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
indexof@0.0.1: indexof@0.0.1:
version "0.0.1" version "0.0.1"
resolved "http://10.8.30.22:7000/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" resolved "http://10.8.30.22:7000/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
@ -2241,6 +2262,16 @@ jsprim@^1.2.2:
json-schema "0.4.0" json-schema "0.4.0"
verror "1.10.0" verror "1.10.0"
jszip@^3.2.2:
version "3.10.0"
resolved "http://10.8.30.22:7000/jszip/-/jszip-3.10.0.tgz#faf3db2b4b8515425e34effcdbb086750a346061"
integrity sha512-LDfVtOLtOxb9RXkYOwPyNBTQDL4eUbqahtoY6x07GiDJHwSYvn8sHHIw8wINImV3MqbMNve2gSuM1DDqEKk09Q==
dependencies:
lie "~3.3.0"
pako "~1.0.2"
readable-stream "~2.3.6"
setimmediate "^1.0.5"
kafka-node@^2.2.3: kafka-node@^2.2.3:
version "2.6.1" version "2.6.1"
resolved "http://10.8.30.22:7000/kafka-node/-/kafka-node-2.6.1.tgz#e8aee3b642105574fabaa718dc4e90d24767a64d" resolved "http://10.8.30.22:7000/kafka-node/-/kafka-node-2.6.1.tgz#e8aee3b642105574fabaa718dc4e90d24767a64d"
@ -2269,6 +2300,11 @@ keygrip@~1.1.0:
dependencies: dependencies:
tsscmp "1.0.6" tsscmp "1.0.6"
kind-of@^6.0.3:
version "6.0.3"
resolved "http://10.8.30.22:7000/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
klaw@^1.0.0: klaw@^1.0.0:
version "1.3.1" version "1.3.1"
resolved "http://10.8.30.22:7000/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" resolved "http://10.8.30.22:7000/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@ -2440,6 +2476,13 @@ levn@~0.3.0:
prelude-ls "~1.1.2" prelude-ls "~1.1.2"
type-check "~0.3.2" type-check "~0.3.2"
lie@~3.3.0:
version "3.3.0"
resolved "http://10.8.30.22:7000/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
integrity sha1-3Pgt7lRfRgdNryAMfBxaCOD0D2o=
dependencies:
immediate "~3.0.5"
lines-and-columns@^1.1.6: lines-and-columns@^1.1.6:
version "1.2.4" version "1.2.4"
resolved "http://10.8.30.22:7000/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" resolved "http://10.8.30.22:7000/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@ -2975,6 +3018,11 @@ packet-reader@1.0.0:
resolved "http://10.8.30.22:7000/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74" resolved "http://10.8.30.22:7000/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74"
integrity sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ= integrity sha1-kjjlSA3tq6z+H+PydxBj8WQVfXQ=
pako@~1.0.2:
version "1.0.11"
resolved "http://10.8.30.22:7000/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=
parse-json@^5.0.0: parse-json@^5.0.0:
version "5.2.0" version "5.2.0"
resolved "http://10.8.30.22:7000/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" resolved "http://10.8.30.22:7000/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
@ -3346,7 +3394,7 @@ readable-stream@1.1.x:
isarray "0.0.1" isarray "0.0.1"
string_decoder "~0.10.x" string_decoder "~0.10.x"
readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6: readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6:
version "2.3.7" version "2.3.7"
resolved "http://10.8.30.22:7000/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" resolved "http://10.8.30.22:7000/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c= integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
@ -3395,6 +3443,11 @@ redis@^3.1.2:
redis-errors "^1.2.0" redis-errors "^1.2.0"
redis-parser "^3.0.0" redis-parser "^3.0.0"
regenerator-runtime@^0.13.4:
version "0.13.9"
resolved "http://10.8.30.22:7000/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52"
integrity sha1-iSV0Kpj/2QgUmI11Zq0wyjsmO1I=
regexp.prototype.flags@^1.4.3: regexp.prototype.flags@^1.4.3:
version "1.4.3" version "1.4.3"
resolved "http://10.8.30.22:7000/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" resolved "http://10.8.30.22:7000/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
@ -3549,6 +3602,11 @@ set-blocking@^2.0.0, set-blocking@~2.0.0:
resolved "http://10.8.30.22:7000/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" resolved "http://10.8.30.22:7000/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
setimmediate@^1.0.5:
version "1.0.5"
resolved "http://10.8.30.22:7000/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=
setprototypeof@1.1.0: setprototypeof@1.1.0:
version "1.1.0" version "1.1.0"
resolved "http://10.8.30.22:7000/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" resolved "http://10.8.30.22:7000/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"

8
weapp/src/packages/changePassword/index.jsx

@ -14,10 +14,10 @@ function Index() {
function confirm() { function confirm() {
if (!password) { if (!password) {
Taro.showToast({ title: '请输入密码' }) Taro.showToast({ title: '请输入密码', icon: 'none' })
return return
} else if (password !== password2) { } else if (password !== password2) {
Taro.showToast({ title: '两次输入的密码不一致' }) Taro.showToast({ title: '两次输入的密码不一致', icon: 'none' })
return return
} else { } else {
Taro.showModal({ Taro.showModal({
@ -50,11 +50,11 @@ function Index() {
</View> </View>
<View className='pswd'> <View className='pswd'>
<View className='title'>新的密码</View> <View className='title'>新的密码</View>
<Input value={password} onInput={e => setPassword(e.detail.value)} /> <Input value={password} type='password' onInput={e => setPassword(e.detail.value)} />
</View> </View>
<View className='pswd'> <View className='pswd'>
<View className='title'>再次输入新的密码</View> <View className='title'>再次输入新的密码</View>
<Input value={password2} onInput={e => setPassword2(e.detail.value)} /> <Input value={password2} type='password' onInput={e => setPassword2(e.detail.value)} />
</View> </View>
<AtButton className='btn' type='primary' onClick={confirm}>确认</AtButton> <AtButton className='btn' type='primary' onClick={confirm}>确认</AtButton>
</View> </View>

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

@ -184,9 +184,7 @@ const Index = () => {
if (res.statusCode == 200 || res.statusCode == 204) { if (res.statusCode == 200 || res.statusCode == 204) {
Taro.showToast({ title: '上报成功', icon: 'none', duration: 1500 }) Taro.showToast({ title: '上报成功', icon: 'none', duration: 1500 })
setTimeout(() => { setTimeout(() => {
Taro.reLaunch({ Taro.navigateBack()
url: '/pages/home/index'
});
}, 1500) }, 1500)
} else { } else {
Taro.showToast({ title: res.data.message || '请求出错', icon: 'none' }) Taro.showToast({ title: res.data.message || '请求出错', icon: 'none' })
@ -285,7 +283,7 @@ const Index = () => {
return ( return (
<View className='patrol'> <View className='patrol'>
{ {
!isSuperAdmin && (!isSuperAdmin || isView) &&
<View className='report-type'> <View className='report-type'>
<View className='text'>上报类型</View> <View className='text'>上报类型</View>
<RadioGroup onChange={handleTypeChange}> <RadioGroup onChange={handleTypeChange}>
@ -477,7 +475,7 @@ const Index = () => {
} }
{ {
isView ? isView ?
<AtButton type='primary' className='del-btn' onClick={deleteReport}>删除</AtButton> : isSuperAdmin && <AtButton type='primary' className='del-btn' onClick={deleteReport}>删除</AtButton> :
<AtButton type='primary' className='sub-btn' onClick={report}>上报</AtButton> <AtButton type='primary' className='sub-btn' onClick={report}>上报</AtButton>
} }
</View> </View>

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

@ -0,0 +1,3 @@
export default {
onReachBottomDistance: 50
}

66
weapp/src/packages/patrolView/index.jsx

@ -1,5 +1,5 @@
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import Taro, { useDidShow, useRouter } from '@tarojs/taro' import Taro, { useDidShow, useRouter, useReachBottom } from '@tarojs/taro'
import { View, Picker, Input, Image } from '@tarojs/components' import { View, Picker, Input, Image } from '@tarojs/components'
import moment from 'moment' import moment from 'moment'
import './index.scss' import './index.scss'
@ -17,22 +17,26 @@ import conserveActiveIcon from '../../static/img/patrolView/conserve-active.svg'
function Index() { function Index() {
const userInfo = Taro.getStorageSync('userInfo') || {}; const userInfo = Taro.getStorageSync('userInfo') || {};
const router = useRouter() const router = useRouter()
const { params: { limit } } = router const { params: { filter } } = router
const [isPatrol, setIsPatrol] = useState(true) const [isPatrol, setIsPatrol] = useState(true)
const [datePicker, setDatePicker] = useState(moment().format('YYYY-MM-DD')) const [datePicker, setDatePicker] = useState(moment().format('YYYY-MM-DD'))
const [listData, setListData] = useState([]) const [listData, setListData] = useState([])
const [showListData, setShowListData] = useState([])
const [filterText, setFilterText] = useState('') const [filterText, setFilterText] = useState('')
const [systemInfo, setSystemInfo] = useState('') const [systemInfo, setSystemInfo] = useState('')
const [page, setPage] = useState(0)
const [num, setNum] = useState(Math.random())
const limit = 10
useEffect(() => { useEffect(() => {
getList() setPage(0)
}, [datePicker]) setNum(Math.random())
}, [isPatrol, datePicker])
useEffect(() => { useEffect(() => {
setShowListData(listData.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve')) getList(page == 0 ? true : false)
}, [isPatrol]) }, [num])
function dealError(error) { function dealError(error) {
Taro.showToast({ Taro.showToast({
@ -42,21 +46,29 @@ function Index() {
}); });
throw new Error(error); throw new Error(error);
} }
const getList = () => { const getList = (isInit) => {
Taro.showLoading({ title: '加载中' }) Taro.showLoading({ title: '加载中' })
request.get( const data = {
getReportList(), limit,
{ startTime: datePicker + ' 00:00:00', endTime: datePicker + ' 23:59:59' } page,
).then(res => { startTime: datePicker + ' 00:00:00',
endTime: datePicker + ' 23:59:59',
keyword: filterText,
reportType: isPatrol ? 'patrol' : 'conserve',
userId: filter === 'my' ? userInfo.id : '',
}
request.get(getReportList(), data).then(res => {
Taro.hideLoading() Taro.hideLoading()
if (res.statusCode == 200) { if (res.statusCode == 200) {
let { data } = res if (res.data.length === 0) {
if (limit === 'my') { Taro.showToast({
data = data.filter(item => item.user.name === userInfo.name) title: '没有更多了',
icon: 'none'
})
} }
setListData(data) const temp = isInit ? [] : listData
setShowListData(data.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve')) const nextListData = temp.concat(res.data)
return data; setListData(nextListData)
} else { } else {
dealError(res.data.message || '请求出错'); dealError(res.data.message || '请求出错');
} }
@ -65,6 +77,12 @@ function Index() {
}); });
} }
//
useReachBottom(() => {
setPage(page + 1)
setNum(Math.random())
})
useDidShow(() => { useDidShow(() => {
let refresh = Taro.getStorageSync('refresh'); // let refresh = Taro.getStorageSync('refresh'); //
if (refresh) { if (refresh) {
@ -88,20 +106,20 @@ function Index() {
} }
const handleConfirm = e => { const handleConfirm = e => {
let nextList = listData.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve') setPage(0)
nextList = nextList.filter(item => item.road.includes(e.detail.value)) setNum(Math.random())
setShowListData(nextList)
} }
const handleInput = e => { const handleInput = e => {
setFilterText(e.detail.value); setFilterText(e.detail.value);
if (!e.detail.value) { if (!e.detail.value) {
setShowListData(listData.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve')); setPage(0)
setNum(Math.random())
} }
} }
const handleDetail = index => { const handleDetail = index => {
Taro.navigateTo({ url: `/packages/patrol/index?type=view&id=${showListData[index].id}` }) Taro.navigateTo({ url: `/packages/patrol/index?type=view&id=${listData[index].id}` })
} }
return ( return (
@ -140,7 +158,7 @@ function Index() {
<View style={{ marginTop: '110px' }}> <View style={{ marginTop: '110px' }}>
{ {
showListData && showListData.length > 0 ? showListData && showListData.map((e, index) => { listData && listData.length > 0 ? listData && listData.map((e, index) => {
return ( return (
<View className='cardBox' key={index} onClick={() => handleDetail(index)}> <View className='cardBox' key={index} onClick={() => handleDetail(index)}>
<View className='card-item' > <View className='card-item' >

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

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect } from 'react';
import Taro from '@tarojs/taro'; import Taro from '@tarojs/taro';
import { View } from '@tarojs/components'; import { View } from '@tarojs/components';
import { useIndustry } from '@/actions/business'; import { useIndustry } from '@/actions/business';
@ -6,8 +6,26 @@ import './index.scss';
const Index = () => { const Index = () => {
const userInfo = Taro.getStorageSync('userInfo') || {}; const userInfo = Taro.getStorageSync('userInfo') || {};
const token = Taro.getStorageSync('token') || null;
const isSuperAdmin = userInfo && userInfo.username === 'SuperAdmin' ? true : false const isSuperAdmin = userInfo && userInfo.username === 'SuperAdmin' ? true : false
useEffect(() => {
if (!userInfo || !token) {
Taro.showModal({
title: '提示',
content: '未获取用户信息,请重新登录',
showCancel: false,
success: (res) => {
if (res.confirm) {
Taro.reLaunch({
url: '/pages/auth/login/login'
});
}
}
});
}
}, [])
function toPatrol() { function toPatrol() {
Taro.navigateTo({ Taro.navigateTo({
url: '/packages/patrol/index?type=edit' url: '/packages/patrol/index?type=edit'
@ -19,14 +37,25 @@ const Index = () => {
}) })
} }
function toVideo() {
}
return ( return (
<View className='page'> <View className='page'>
<View className='fill'> <View className='card fill'>
<View className='title'> </View> <View className='title'> </View>
<View className='btn' onClick={isSuperAdmin ? toPatrolView : toPatrol}> <View className='btn' onClick={isSuperAdmin ? toPatrolView : toPatrol}>
{isSuperAdmin ? '查看' : '填报'} {isSuperAdmin ? '查看' : '填报'}
</View> </View>
</View> </View>
{
isSuperAdmin &&
<View className='card video'>
<View className='title'> </View>
<View className='btn' onClick={toVideo}>查看</View>
</View>
}
</View> </View>
); );
} }

10
weapp/src/pages/home/index.scss

@ -3,15 +3,23 @@
flex-direction: column; flex-direction: column;
align-items: center; align-items: center;
.fill { .card {
margin-top: 30px; margin-top: 30px;
padding: 10px; padding: 10px;
width: 94%; width: 94%;
height: 360px; height: 360px;
}
.fill {
background: url('../../static/img/home/fill-bg.svg') no-repeat; background: url('../../static/img/home/fill-bg.svg') no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
} }
.video {
background: url('../../static/img/home/video-bg.svg') no-repeat;
background-size: 100% 100%;
}
.title { .title {
margin: 50px 0 0 48px; margin: 50px 0 0 48px;
color: #fff; color: #fff;

2
weapp/src/pages/user/index.jsx

@ -24,7 +24,7 @@ const Index = ({ ...props }) => {
const toMyReport = () => { const toMyReport = () => {
Taro.navigateTo({ Taro.navigateTo({
url: '/packages/patrolView/index?limit=my' url: '/packages/patrolView/index?filter=my'
}) })
} }

88
weapp/src/static/img/home/video-bg.svg

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="355px" height="180px" viewBox="0 0 355 180" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>椭圆形</title>
<defs>
<linearGradient x1="94.8177083%" y1="40.1387904%" x2="5.97712862%" y2="62.1403067%" id="linearGradient-1">
<stop stop-color="#34C29A" offset="0%"></stop>
<stop stop-color="#81D2CA" offset="100%"></stop>
</linearGradient>
<rect id="path-2" x="0" y="0" width="345" height="170" rx="8"></rect>
<filter x="-2.5%" y="-3.8%" width="104.9%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4">
<feOffset dx="0" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="2.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.898039216 0 0 0 0 0.898039216 0 0 0 0 0.898039216 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<radialGradient cx="41.0959558%" cy="36.7313023%" fx="41.0959558%" fy="36.7313023%" r="109.268488%" gradientTransform="translate(0.410960,0.367313),scale(0.456675,1.000000),rotate(135.284157),translate(-0.410960,-0.367313)" id="radialGradient-5">
<stop stop-color="#FFFFFF" stop-opacity="0.330364948" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0.219542177" offset="2.71252185%"></stop>
<stop stop-color="#E6F3FF" stop-opacity="0.181763549" offset="100%"></stop>
</radialGradient>
<linearGradient x1="27.99208%" y1="8.10997596%" x2="77.6436298%" y2="92.0883413%" id="linearGradient-6">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<path d="M299.319574,92.4461513 L323.319574,86.8570888 C324.93325,86.4812999 326.546029,87.4848053 326.921818,89.0984808 C326.973768,89.3215612 327,89.5498572 327,89.7789068 L327,120.030821 C327,121.687675 325.656854,123.030821 324,123.030821 C323.777838,123.030821 323.556363,123.006143 323.33965,122.957241 L299.33965,117.541616 C297.971618,117.232919 297,116.017624 297,114.615196 L297,95.3679693 C297,93.9732458 297.961198,92.7624866 299.319574,92.4461513 Z" id="path-7"></path>
<filter x="-5.0%" y="-1.9%" width="110.0%" height="103.9%" filterUnits="objectBoundingBox" id="filter-8">
<feGaussianBlur stdDeviation="1.5" in="SourceAlpha" result="shadowBlurInner1"></feGaussianBlur>
<feOffset dx="0" dy="0" in="shadowBlurInner1" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<linearGradient x1="15.091271%" y1="21.73492%" x2="93.8480319%" y2="78.3988936%" id="linearGradient-9">
<stop stop-color="#FFFFFF" offset="0%"></stop>
<stop stop-color="#FFFFFF" stop-opacity="0" offset="100%"></stop>
</linearGradient>
<rect id="path-10" x="216" y="70" width="84" height="69" rx="8"></rect>
<filter x="-1.2%" y="-1.4%" width="104.8%" height="105.8%" filterUnits="objectBoundingBox" id="filter-11">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feComposite in="shadowBlurOuter1" in2="SourceAlpha" operator="out" result="shadowBlurOuter1"></feComposite>
<feColorMatrix values="0 0 0 0 0.807843137 0 0 0 0 1 0 0 0 0 0.949019608 0 0 0 0.424797858 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
<filter x="-1.8%" y="-2.2%" width="106.0%" height="107.2%" filterUnits="objectBoundingBox" id="filter-12">
<feGaussianBlur stdDeviation="1.5" in="SourceAlpha" result="shadowBlurInner1"></feGaussianBlur>
<feOffset dx="0" dy="0" in="shadowBlurInner1" result="shadowOffsetInner1"></feOffset>
<feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite>
<feColorMatrix values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0" type="matrix" in="shadowInnerInner1"></feColorMatrix>
</filter>
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-13">
<stop stop-color="#E9FFFA" offset="0%"></stop>
<stop stop-color="#CEFFF2" offset="100%"></stop>
</linearGradient>
<polygon id="path-14" points="260.5 93 274 120 247 120"></polygon>
<filter x="-3.7%" y="-3.7%" width="114.8%" height="114.8%" filterUnits="objectBoundingBox" id="filter-15">
<feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset>
<feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur>
<feColorMatrix values="0 0 0 0 0.807843137 0 0 0 0 1 0 0 0 0 0.949019608 0 0 0 1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix>
</filter>
</defs>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="首页_巡查(管理员)" transform="translate(-10.000000, -275.000000)">
<g id="椭圆形" transform="translate(15.000000, 278.000000)">
<mask id="mask-3" fill="white">
<use xlink:href="#path-2"></use>
</mask>
<g id="蒙版">
<use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use>
<use fill="url(#linearGradient-1)" fill-rule="evenodd" xlink:href="#path-2"></use>
</g>
<path d="M-25.1264086,44.3554348 C-22.8540945,43.4604524 -19.9720573,43.2618945 -16.3915335,43.8308467 C-9.45771541,44.9326439 0.0397231269,48.9019168 12.7510815,56.3907566 C85.2689971,99.1143615 101.526273,100.285815 157.01895,104.299238 C160.528313,104.553047 164.194848,104.818224 168.042785,105.106029 C251.195069,111.325385 298.21739,119.468187 324.522292,128.949845 C339.379312,134.305089 347.591516,140.069255 351.945866,146.174029 C357.803157,154.38592 356.636977,163.182122 355.47544,172.269858 C354.983672,176.117388 354.486328,180.019081 354.486328,183.955078 C354.486328,190.565127 350.969335,195.802414 344.574971,199.974635 C337.534232,204.568606 327.032087,207.873856 313.817887,210.266705 C281.200306,216.17315 232.117876,216.485999 177.575934,216.499454 L174.195339,216.499951 L174.195339,216.499951 L172.5,216.5 C151.619296,216.5 132.49809,217.669332 115.119764,218.732312 C78.6988427,220.960071 49.9497981,222.750964 28.7363653,212.203464 C11.9160687,203.840268 -0.120527505,187.690127 -7.5147057,157.879628 C-10.5366892,145.696146 -14.4375121,132.807586 -18.2424469,120.236626 C-27.4467917,89.8267865 -36.1911016,61.2508546 -30.2724922,49.2327272 C-29.1448998,46.9430764 -27.4674175,45.2774736 -25.1264086,44.3554348 Z" stroke-opacity="0.262647509" stroke="#FFFFFF" fill="url(#radialGradient-5)" opacity="0.34" mask="url(#mask-3)"></path>
<g id="矩形" mask="url(#mask-3)">
<use fill-opacity="0.2" fill="url(#linearGradient-6)" fill-rule="evenodd" xlink:href="#path-7"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use>
<path stroke="" stroke-width="1" d="M323.432978,87.3440585 C324.105343,87.1874797 324.777521,87.318254 325.320753,87.6562642 C325.863985,87.9942743 326.27827,88.5395203 326.434848,89.2118851 C326.47814,89.3977855 326.5,89.5880322 326.5,89.7789068 L326.5,89.7789068 L326.5,120.030821 C326.5,120.721177 326.220178,121.346177 325.767767,121.798588 C325.315356,122.250999 324.690356,122.530821 324,122.530821 C323.814865,122.530821 323.630303,122.510256 323.449708,122.469505 L323.449708,122.469505 L299.449708,117.05388 C298.879695,116.925255 298.392268,116.607757 298.047344,116.176328 C297.70242,115.7449 297.5,115.199541 297.5,114.615196 L297.5,114.615196 L297.5,95.3679693 C297.5,94.7868345 297.70025,94.2440256 298.041997,93.8135488 C298.383744,93.3830721 298.866988,93.0649274 299.432978,92.933121 L299.432978,92.933121 Z" stroke-linejoin="square"></path>
</g>
<g id="矩形" mask="url(#mask-3)">
<use fill="black" fill-opacity="1" filter="url(#filter-11)" xlink:href="#path-10"></use>
<use fill-opacity="0.2" fill="url(#linearGradient-9)" fill-rule="evenodd" xlink:href="#path-10"></use>
<use fill="black" fill-opacity="1" filter="url(#filter-12)" xlink:href="#path-10"></use>
<rect stroke="" stroke-width="1" stroke-linejoin="square" x="216.5" y="70.5" width="83" height="68" rx="8"></rect>
</g>
<g id="三角形" mask="url(#mask-3)" transform="translate(260.500000, 106.500000) rotate(-270.000000) translate(-260.500000, -106.500000) ">
<use fill="black" fill-opacity="1" filter="url(#filter-15)" xlink:href="#path-14"></use>
<use fill="url(#linearGradient-13)" fill-rule="evenodd" xlink:href="#path-14"></use>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB

BIN
weapp/src/static/img/tabbar/shouye-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 497 B

BIN
weapp/src/static/img/tabbar/shouye.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1015 B

After

Width:  |  Height:  |  Size: 429 B

BIN
weapp/src/static/img/tabbar/wode-active.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 632 B

BIN
weapp/src/static/img/tabbar/wode.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 605 B

25
web/client/assets/color.less

@ -1150,6 +1150,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-menu-item-danger.ant-menu-item {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;}
<<<<<<< Updated upstream <<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);} .ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);}
.ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;}
@ -1161,6 +1162,12 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;} .ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);} .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);}
>>>>>>> Stashed changes >>>>>>> Stashed changes
=======
.ant-menu-item-danger.ant-menu-item:active {background: #fff1f0;}
.ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: #fff1f0;}
>>>>>>> Stashed changes
.ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;} .ant-menu-inline .ant-menu-item-danger.ant-menu-item::after {border-right-color: #ff4d4f;}
.ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;} .ant-menu-dark .ant-menu-item-danger.ant-menu-item, .ant-menu-dark .ant-menu-item-danger.ant-menu-item:hover, .ant-menu-dark .ant-menu-item-danger.ant-menu-item > a {color: #ff4d4f;}
.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;} .ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {color: #fff;background-color: #ff4d4f;}
@ -1731,9 +1738,12 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-checkable-checked {background-color: @primary-color;} .ant-tag-checkable-checked {background-color: @primary-color;}
.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);} .ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
<<<<<<< Updated upstream <<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{component-background}", 1)`);border-color: #ffadd2;} .ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{component-background}", 1)`);border-color: #ffadd2;}
=======
>>>>>>> Stashed changes
======= =======
>>>>>>> Stashed changes >>>>>>> Stashed changes
.ant-tag-pink {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;} .ant-tag-pink {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;}
@ -1743,6 +1753,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} .ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
<<<<<<< Updated upstream <<<<<<< Updated upstream
.ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;} .ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;}
<<<<<<< Updated upstream
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{success-color-deprecated-bg}", 1)`);border-color: #ffadd2;} .ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{success-color-deprecated-bg}", 1)`);border-color: #ffadd2;}
.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;} .ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
@ -1753,6 +1764,8 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
======= =======
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);border-color: #ffa39e;} .ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);border-color: #ffa39e;}
>>>>>>> Stashed changes >>>>>>> Stashed changes
=======
>>>>>>> Stashed changes
.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;}
.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;}
.ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;}
@ -1769,6 +1782,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;}
.ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;}
<<<<<<< Updated upstream <<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;} .ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
@ -1788,6 +1802,13 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{alert-error-bg-color}", 1)`);border-color: #d3adf7;} .ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{alert-error-bg-color}", 1)`);border-color: #d3adf7;}
>>>>>>> Stashed changes >>>>>>> Stashed changes
=======
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{info-color-deprecated-bg}", 1)`);border-color: #adc6ff;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{background-color-light}", 1)`);border-color: #d3adf7;}
>>>>>>> Stashed changes
.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;}
.ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;}
.ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;}
@ -2026,14 +2047,16 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography
.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;} .ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;}
.ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;} .ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;}
<<<<<<< Updated upstream <<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
======= =======
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} =======
>>>>>>> Stashed changes >>>>>>> Stashed changes
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;}
.ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);} .ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);}
.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);}

BIN
web/client/assets/images/leadership/weizhis.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

BIN
web/client/assets/images/leadership/youofanye.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 742 B

BIN
web/client/assets/images/leadership/zuofanye.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 750 B

4
web/client/src/components/index.js

@ -9,6 +9,7 @@ import FlowRecordTable from './flowRecordTable'
import Table from './table' import Table from './table'
import Search from './search' import Search from './search'
import SketchColor from './sketchColor' import SketchColor from './sketchColor'
import SimpleFileDownButton from './simpleFileDownButton'
export { export {
Upload, Upload,
@ -18,5 +19,6 @@ export {
FlowRecordTable, FlowRecordTable,
Table, Table,
Search, Search,
SketchColor SketchColor,
SimpleFileDownButton
}; };

40
web/client/src/components/simpleFileDownButton.js

@ -0,0 +1,40 @@
import React, { useState, useEffect, useRef } from "react";
import { connect } from "react-redux";
import moment from 'moment'
import { Button } from "antd";
const SimpleFileDownButton = (props) => {
const { src, user } = props
const [downloadUrl, setDownloadUrl] = useState('')
return (
<>
<Button
style={{
width: 65,
height: 32,
background: "#FFFFFF",
borderRadius: 3,
border: "1px solid #1859C1",
}}
onClick={() => {
setDownloadUrl(`${src}?token=${user.token}&timestamp=${moment().valueOf()}`)
}}
>
导出
</Button>
{
downloadUrl ? <iframe src={`/_api/${downloadUrl}`} style={{ display: 'none' }} /> : ''
}
</>
)
}
function mapStateToProps (state) {
const { auth } = state;
return {
user: auth.user,
};
}
export default connect(mapStateToProps)(SimpleFileDownButton);

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

@ -21,7 +21,7 @@ export function getDepMessage() {
// msg: { error: '获取填报信息失败' }, // msg: { error: '获取填报信息失败' },
// reducer: { name: 'reportstatistic' } // reducer: { name: 'reportstatistic' }
// }); // });
// } // }
export function getOperaTional(query) { export function getOperaTional(query) {
return dispatch => basicAction({ return dispatch => basicAction({
@ -34,6 +34,17 @@ export function getOperaTional(query) {
// reducer: { name: 'reportstatistic' } // reducer: { name: 'reportstatistic' }
}); });
} }
export function putOperaTional(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_OPERA_TIONAL',
url: ApiTable.putOperaTional,
msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getSpecificVehicle(query) { export function getSpecificVehicle(query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
@ -45,6 +56,28 @@ export function getSpecificVehicle(query) {
// reducer: { name: 'reportstatistic' } // reducer: { name: 'reportstatistic' }
}); });
} }
export function putSpecificVehicle(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'put_SPECIFIC_VEHICLE',
url: ApiTable.putSpecificVehicle,
msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putHouseholds(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'put_HOUSEHOLDS',
url: ApiTable.putHouseholds,
msg: { error: '编辑业户信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getHouseholds(query) { export function getHouseholds(query) {
return dispatch => basicAction({ return dispatch => basicAction({
type: 'get', type: 'get',
@ -121,4 +154,173 @@ export function putProject(query) {
msg: { error: '编辑工程信息失败' }, msg: { error: '编辑工程信息失败' },
// reducer: { name: 'reportstatistic' } // reducer: { name: 'reportstatistic' }
}); });
}
export function getHighways(query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_HIGHWAYS',
url: ApiTable.getHighways,
msg: { error: '获取路政信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putHighways(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'GET_HIGHWAYS',
url: ApiTable.putHighways,
msg: { error: '编辑路政信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getCircuit(query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_CIRCUIT',
url: ApiTable.getCircuit,
msg: { error: '获取线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putCircuit(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_CIRCUIT',
url: ApiTable.putCircuit,
msg: { error: '编辑线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getVehicle(query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_VEHICLE',
url: ApiTable.getVehicle,
msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putVehicle(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_VEHICLE',
url: ApiTable.putVehicle,
msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delRoadway(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_ROADWAY',
url: ApiTable.delRoadway.replace("{roadId}", query?.roadId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delProject(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace("{projectId}", query?.projectId),
msg: { error: '删除工程信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delBridge(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_BRIDGE',
url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId),
msg: { error: '删除桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delSpecificVehicle(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_SPECIFICVENICLE',
url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delHouseholds(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_HOUSEHOLDS',
url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId),
msg: { error: '删除业户信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delCircuit(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_CIRCUIT',
url: ApiTable.delCircuit.replace("{lineId}", query?.lineId),
msg: { error: '删除运营线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delVehicle(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_VEHICLE',
url: ApiTable.delVehicle.replace("{carId}", query?.carId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getPurchase(query) {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
query: query,
actionType: 'GET_PURCHASE',
url: ApiTable.getPurchase,
msg: { error: '获取治超信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putPurchase(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PURCHASE',
url: ApiTable.putPurchase,
msg: { error: '获取治超信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delPurchase(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PURCHASE',
url: ApiTable.delPurchase.replace("{overspeedId}", query?.overspeedId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
} }

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

@ -1,10 +1,10 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState, useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Badge } from 'antd'; import { Spin, Button, Popconfirm, Badge } 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 moment from 'moment';
import { getBridge, getProject } from "../actions/infor" import { getBridge, getProject,delBridge,delProject } from "../actions/infor"
import UserModal from './infor/details'; import UserModal from './infor/details';
import ProjectModal from './project/project'; import ProjectModal from './project/project';
@ -14,7 +14,7 @@ const BrideTable = (props) => {
// const [regionId, setRegionId] = useState()//区域id // const [regionId, setRegionId] = useState()//区域id
// const [placeType, setPlaceType] = useState()//场所 // const [placeType, setPlaceType] = useState()//场所
// const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期 // const [day, setDay] = useState([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])//日期
// const [sitename, setSitename] = useState()//场所名称 const [sitename, setSitename] = useState()//场所名称
const [counts, setCounts] = useState()//shuju const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false); const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false); const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
@ -22,6 +22,11 @@ const BrideTable = (props) => {
const [typecard, setTypecard] = useState(); const [typecard, setTypecard] = useState();
const [activeKey, setActiveKey] = useState('tab1'); const [activeKey, setActiveKey] = useState('tab1');
const [recortd, setRecortd] = useState() const [recortd, setRecortd] = useState()
const [whichofits, setWhichofits] = useState('qiaoliang')
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan,whichofits,delet])
const columns = { const columns = {
tab1: [ tab1: [
{ {
@ -30,12 +35,9 @@ const BrideTable = (props) => {
fixed: 'left', fixed: 'left',
width: 120, width: 120,
options: 1, options: 1,
search: false,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
placeholder: '请输入桥梁代码进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
render: (dom, record) => { render: (dom, record) => {
@ -45,17 +47,19 @@ const BrideTable = (props) => {
}, },
{ {
title: '桥梁名称', title: '桥梁名称',
search: false,
dataIndex: 'containers', dataIndex: 'containers',
fixed: 'left', fixed: 'left',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.bridgeName return record.bridgeName
}, },
fieldProps: { fieldProps: {
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入桥梁名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} },
}, },
{ {
title: '中心桩号', title: '中心桩号',
@ -1489,7 +1493,16 @@ const BrideTable = (props) => {
setTypecard('111') setTypecard('111')
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"
onClick={() => {
const query = {
bridgeId: record.id
}
dispatch(delBridge(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1532,9 +1545,9 @@ const BrideTable = (props) => {
options: 1, options: 1,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => { onChange: (value, cs) => {
// setSitename(value.currentTarget.value) setSitename(value.currentTarget.value)
// }, },
placeholder: '请输入项目名称进行搜索', placeholder: '请输入项目名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
@ -1670,7 +1683,16 @@ const BrideTable = (props) => {
setTypecard('111') setTypecard('111')
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"
onClick={() => {
const query = {
projectId: record.id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1706,27 +1728,6 @@ const BrideTable = (props) => {
}, },
] ]
} }
const requestBridge = () => {
const query = {
}
setRowSelected([]);
dispatch(getBridge(query)).then((res) => {
setCounts(res?.payload?.data)
console.log(res)
});
}
//工程数据
const requestProject = () => {
const query = {
type: '桥梁'
}
setRowSelected([]);
dispatch(getProject(query)).then((res) => {
setCounts(res?.payload?.data)
})
}
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const openModal = (type, record) => {
setModalVisible(true); setModalVisible(true);
@ -1766,7 +1767,7 @@ const BrideTable = (props) => {
<Spin spinning={false}> <Spin spinning={false}>
<div className='protable-transpor'> <div className='protable-transpor'>
<ProTable <ProTable
actionRef={ref}
toolbar={{ toolbar={{
multipleLine: true, multipleLine: true,
@ -1777,13 +1778,13 @@ const BrideTable = (props) => {
{ {
key: 'tab1', key: 'tab1',
label: <span onClick={() => { label: <span onClick={() => {
requestBridge() setWhichofits('qiaoliang')
}}>桥梁{activeKey === 'tab1'}</span>, }}>桥梁{activeKey === 'tab1'}</span>,
}, },
{ {
key: 'tab2', key: 'tab2',
label: <span onClick={() => { label: <span onClick={() => {
requestProject() setWhichofits('gongcheng')
}}>工程一览{activeKey === 'tab2'}</span>, }}>工程一览{activeKey === 'tab2'}</span>,
}, },
@ -1796,12 +1797,7 @@ const BrideTable = (props) => {
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' rowKey='id'
onReset={(v) => { onReset={(v) => {
// const { id } = depMessage[0] setSitename('')
// console.log(id)
// setRegionId(id)
// setPlaceType(-1)
// setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
// setSitename('')
}} }}
rowSelection={{ rowSelection={{
selectedRowKeys: rowSelected, selectedRowKeys: rowSelected,
@ -1813,16 +1809,33 @@ const BrideTable = (props) => {
dataSource={counts || []} dataSource={counts || []}
request={async (params) => { request={async (params) => {
const query = { if(whichofits=='qiaoliang'){
const query = {
} bridgeName:sitename
setRowSelected([]); }
const res = await dispatch(getBridge(query)); setRowSelected([]);
setCounts(res.payload.data) const res = await dispatch(getBridge(query));
return { // console.log(res)
...res,
total: res.payload.data ? res.payload.data.count : 0 setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}if(whichofits=='gongcheng'){
const query = {
type: 'bridge',
// type:sitename
}
setRowSelected([]);
const res = await dispatch(getProject(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} }
}} }}
search={{ search={{
defaultCollapsed: false, defaultCollapsed: false,

42
web/client/src/sections/fillion/components/gis/patrolGis.js

@ -5,13 +5,15 @@ import { useState } from 'react';
import { DatePicker } from 'antd'; import { DatePicker } from 'antd';
import Bounds from './bounds'; import Bounds from './bounds';
import moment from 'moment'; import moment from 'moment';
import { getReportList } from '../../actions/patrol'
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
function PatrolGis(props) { function PatrolGis(props) {
const { reportList, userId, dispatch } = props; const { reportList, userId, dispatch } = props;
const [mapComplete, setMapComplete] = useState(false); const [mapComplete, setMapComplete] = useState(false);
const [mapObj, setMapObj] = useState(); const [mapObj, setMapObj] = useState();
const [dateRange, setDateRange] = useState(); const [dateRange, setDateRange] = useState();
let markers = [];
let PATH = [];
useEffect(() => { useEffect(() => {
if (AMap) loadMap(); if (AMap) loadMap();
return () => { return () => {
@ -24,8 +26,23 @@ function PatrolGis(props) {
}, [true]) }, [true])
useEffect(() => { useEffect(() => {
if (mapObj) {
mapObj.remove(markers);
mapObj.remove(PATH);
}
let query = { userId, reportType: 'patrol' }
if (userId) { if (userId) {
if ((dateRange && dateRange instanceof Array)) {
query.startTime = moment(dateRange[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss')
query.endTime = moment(dateRange[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')
} else {
query.startTime = moment().add(-6, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
query.endTime = moment().endOf('day').format('YYYY-MM-DD HH:mm:ss')
}
dispatch(getReportList(query));
} else {
query.isTop = true;
dispatch(getReportList(query));
} }
}, [userId, dateRange]) }, [userId, dateRange])
@ -33,9 +50,10 @@ function PatrolGis(props) {
if (reportList && mapObj) { if (reportList && mapObj) {
mapObj.clearMap(); mapObj.clearMap();
renderMarkers(); renderMarkers();
renderPath(); if (userId)
renderPath();
} }
}, [reportList, mapObj]) }, [reportList, mapObj, userId])
const loadMap = () => { const loadMap = () => {
const map = new AMap.Map("amapId", { const map = new AMap.Map("amapId", {
@ -86,11 +104,12 @@ function PatrolGis(props) {
position: new AMap.LngLat(longitude, latitude), position: new AMap.LngLat(longitude, latitude),
icon: icon, icon: icon,
offset: new AMap.Pixel(-12, -12), offset: new AMap.Pixel(-12, -12),
extData: { // extData: {
name: user.name || '', // name: user.name || '',
} // }
}); });
// marker.setTitle(s.name); // marker.setTitle(s.name);
markers.push(marker);
map.add(marker); map.add(marker);
}) })
} }
@ -111,6 +130,7 @@ function PatrolGis(props) {
if (longitude && latitude) if (longitude && latitude)
path.push([item.longitude, item.latitude]) path.push([item.longitude, item.latitude])
}); });
PATH = path;
var polyline1 = new AMap.Polyline({ var polyline1 = new AMap.Polyline({
map: map, map: map,
path: path, // 设置线覆盖物路径 path: path, // 设置线覆盖物路径
@ -122,9 +142,13 @@ function PatrolGis(props) {
} }
return ( return (
<div style={{ width: '100%', backgroundColor: '#101824', height: '100%', minHeight: 700 }}> <div style={{ width: '100%', backgroundColor: '#101824', height: '100%', minHeight: 700, position: 'relative' }}>
<div id='amapId' style={{ width: '100%', height: '100%', background: "#101824", minHeight: 700 }} /> <div id='amapId' style={{ width: '100%', height: '100%', background: "#101824", minHeight: 700 }} />
<RangePicker onChange={(date, dateString) => { setDateRange(dateString) }} /> <div style={{ position: 'absolute', top: 8, left: 20, display: userId ? 'block' : 'none' }}>
<RangePicker
onChange={(date, dateString) => { setDateRange(dateString) }}
/>
</div>
{mapObj ? <Bounds map={mapObj} /> : ''} {mapObj ? <Bounds map={mapObj} /> : ''}
</div > </div >
) )

106
web/client/src/sections/fillion/components/highways/highwaysdata.js

@ -0,0 +1,106 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd';
import { ModalForm, ProForm, ProFormText,ProFormSelect } from '@ant-design/pro-form';
import { putOperaTional,putHighways } from "../../actions/infor"
const HightModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, recortd, dispatch, setRecortd } = props
const [success,setSuccess]=useState()
useEffect(() => {
return () => {
setRecortd()
}
}, [setRecortd])
// console.log(recortd)
return (
<Spin spinning={false}>
{/* {
newlysay ? */}
<ModalForm
width={'90rem'}
visible={visible}
onVisibleChange={onVisibleChange}
onFinish={(values) => {
if (rewkeys === 'passenger') {
console.log(values)
const query = { ...values, id:recortd?.id }
dispatch(putOperaTional(query)).then((res) => {
setSuccess(res.success)
})
return true
}
if (rewkeys === 'highways') {
console.log(values)
const query = { ...values, id:recortd?.id }
dispatch(putHighways(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}}
initialValues={recortd}
>
{typecard == '111' ?
<ProForm.Group
>
<ProFormText
name='name'
width="md"
label='类型'
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recortd?.[0]?.value}
disabled
rules={[{ required: true, message: "必填" }]}
/>
<ProFormText
name='count'
width="md"
label='数量'
tooltip="最长为 24 位"
placeholder="请输入名称"
/>
</ProForm.Group>
: <ProForm.Group>
<ProFormText
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
/>
</ProForm.Group>}
</ModalForm>
{/* : ''
} */}
</Spin>
)
}
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)(HightModal);

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

@ -1,27 +1,27 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState,useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Badge } from 'antd'; import { Spin, Button, Popconfirm, Badge } 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 { getHighways } from "../actions/infor"
import { getReportStatistic } from "../actions/infor" import HightModal from './highways/highwaysdata';
import UserModal from './infor/details';
const HigwaysTable = (props) => { const HigwaysTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, user, } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
const [regionId, setRegionId] = useState()//区域id
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 [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false); const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
const [modalRecord, setModalRecord] = useState(); const [modalRecord, setModalRecord] = useState();
const [typecard, setTypecard] = useState(); const [typecard, setTypecard] = useState();
const [recortd, setRecortd] = useState()
const [sitename, setSitename] = useState()//桥梁名称
const ref = useRef()
useEffect(() => { ref.current.reload() }, [ modalVisibleyilan])
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const hightModal = (type, record) => {
setModalVisible(true); setModalVisibleyilan(true);
// setModalType(type); // setModalType(type);
if (type == 'edit') { if (type == 'edit') {
setModalRecord(record); setModalRecord(record);
@ -61,6 +61,9 @@ const exports = (ids, counts) => {
placeholder: '请输入类型进行搜索', placeholder: '请输入类型进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
render: (dom, record) => {
return record.name
},
}, },
{ {
title: '数量', title: '数量',
@ -70,7 +73,7 @@ const exports = (ids, counts) => {
fixed: 'left', fixed: 'left',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.count
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -86,8 +89,9 @@ const exports = (ids, counts) => {
render: (dom, record) => { render: (dom, record) => {
return <div><Button type="link" return <div><Button type="link"
onClick={() => { onClick={() => {
openModal('edit', record) hightModal('edit', record)
setTypecard('111') setTypecard('111')
setRecortd(record)
}} }}
>编辑</Button></div> >编辑</Button></div>
@ -99,18 +103,14 @@ const exports = (ids, counts) => {
<Spin spinning={false}> <Spin spinning={false}>
<div className='protable-transpor'> <div className='protable-transpor'>
<ProTable <ProTable
actionRef={ref}
scroll={{ x: 800 }} scroll={{ x: 800 }}
options={false} options={false}
ref={c => { finishedProductTable = c; }} ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' rowKey='id'
onReset={(v) => { onReset={(v) => {
const { id } = depMessage[0] setSitename('')
console.log(id)
setRegionId(id)
setPlaceType(-1)
setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
setSitename('')
}} }}
rowSelection={{ rowSelection={{
selectedRowKeys: rowSelected, selectedRowKeys: rowSelected,
@ -120,46 +120,30 @@ const exports = (ids, counts) => {
}} }}
columns={columns} columns={columns}
dataSource={(counts || {}).rows || []} dataSource={counts || []}
request={async (params) => { request={async (params) => {
const query = { const query = {
startDate: day[0], name:sitename
endDate: day[1],
placeType: placeType,
regionId: regionId,
placeName: sitename,
limit: params.pageSize,
offset: ((params.current ? params.current : 1) - 1) * params.pageSize
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getReportStatistic(query)); const res = await dispatch(getHighways(query));
setCounts(res.payload.data) setCounts(res.payload.data)
return { return {
...res, ...res,
total: res.payload.data ? res.payload.data.count : 0 total: res.payload.data ? res.payload.data.count : 0
} }
}} }}
search={{
defaultCollapsed: false,
optionRender: (searchConfig, formProps, dom) => [
...dom.reverse(),
// <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}>
// <Button
// >
// 导出
// </Button>
// </Popconfirm>
],
}}
> >
</ProTable></div> </ProTable></div>
<UserModal {modalVisibleyilan ? <HightModal
visible={modalVisible} visible={modalVisibleyilan}
onVisibleChange={setModalVisible} onVisibleChange={setModalVisibleyilan}
modalRecord={modalRecord} modalRecord={modalRecord}
typecard={typecard} typecard={typecard}
/> rewkeys={'highways'}
recortd={recortd}
setRecortd={setRecortd}
/> : ''}
</Spin > </Spin >
) )
} }

292
web/client/src/sections/fillion/components/infor/details.js

@ -1,21 +1,23 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd'; import { Form, Spin, Table } from 'antd';
import { DrawerForm, ProForm, ProFormText } from '@ant-design/pro-form'; import { DrawerForm, ProForm, ProFormText, ProFormSelect } from '@ant-design/pro-form';
import { putRoadway } from "../../actions/infor" import { putRoadway, putSpecificVehicle, putHouseholds,putCircuit,putVehicle,putPurchase } from "../../actions/infor"
import { putBridge } from "../../actions/infor" import { putBridge } from "../../actions/infor"
const UserModal = (props) => { const UserModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, date, setRecortd,engineering } = props const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, setRecortd, setMonitor } = props
const [newlys, setNewlys] = useState() //必填数据 const [newlys, setNewlys] = useState() //必填数据
const [newlysay, setNewlysay] = useState() //处理hou const [newlysay, setNewlysay] = useState() //处理hou
const [records, setRecords] = useState()//处理 const [records, setRecords] = useState()//处理
const [recordsay, setRecordsay] = useState()//必填数据 const [recordsay, setRecordsay] = useState()//必填数据
const [success, setSuccess] = useState() //状态 // const [success, setSuccess] = useState() //状态
// const [establishment, setEstablishment] = useState() //业户类型
console.log(recortd)
useEffect(() => { useEffect(() => {
const array = [] const array = []
if (rewkeys === 'transportation') { if (rewkeys === 'transportation') {
const xindata=[...data] const xindata = [...data]
setNewlys(xindata?.splice(0, 2)) setNewlys(xindata?.splice(0, 2))
setNewlysay(xindata) setNewlysay(xindata)
} if (rewkeys === 'bridge') { } if (rewkeys === 'bridge') {
@ -24,7 +26,51 @@ const UserModal = (props) => {
}); });
setNewlys(array?.splice(0, 2)) setNewlys(array?.splice(0, 2))
setNewlysay(array) setNewlysay(array)
console.log(array) // console.log(array)
}
if (rewkeys === 'weihuo') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
// console.log(array)
}
if (rewkeys === 'chuzu') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
array?.splice(1, 1)
setNewlys(array?.splice(0, 2))
setNewlysay(array)
}
if (rewkeys === 'yehu') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
// console.log(array)
}if (rewkeys === 'xianlu') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
}if (rewkeys === 'cheliang') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
}
if (rewkeys === 'zhichao') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
setNewlys(array?.splice(0, 2))
setNewlysay(array)
} }
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -43,12 +89,55 @@ const UserModal = (props) => {
setRecordsay(arr.splice(1, 2)) setRecordsay(arr.splice(1, 2))
setRecords(arr) setRecords(arr)
} }
if (rewkeys === 'weihuo') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
setRecords(arr)
}
if (rewkeys === 'chuzu') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
setRecords(arr)
} if (rewkeys === 'yehu') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
}
if (rewkeys === 'xianlu') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
}if (rewkeys === 'cheliang') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
}if (rewkeys === 'zhichao') {
_.forIn(recortd, function (value, key) {
arr.push({ value: value, type: key })
});
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
}
}, [recortd]) }, [recortd])
useEffect(() => { useEffect(() => {
return () => { return () => {
setRecortd() setRecortd()
} }
}, []) }, [setRecortd])
// console.log(recortd) // console.log(recortd)
return ( return (
<Spin spinning={false}> <Spin spinning={false}>
@ -59,38 +148,122 @@ const UserModal = (props) => {
visible={visible} visible={visible}
onVisibleChange={onVisibleChange} onVisibleChange={onVisibleChange}
onFinish={(values) => { onFinish={(values) => {
if (rewkeys === 'transportation') { console.log(values)
if (typecard == '111') { if (Object.values(values).length > 0) {
console.log(values) if (rewkeys === 'transportation') {
const query = { ...values, level: sitename, roadId: records?.[0]?.value || '' } if (typecard == '111') {
dispatch(putRoadway(query)).then((res) => { const query = { ...values, level: sitename, roadId: records?.[0]?.value || '' }
setSuccess(res.success) dispatch(putRoadway(query)).then((res) => {
}) setSuccess(res.success)
return success })
} else { return true
const query = { ...values, level: sitename } } else {
dispatch(putRoadway(query)).then((res) => { const query = { ...values, level: sitename }
setSuccess(res.success) dispatch(putRoadway(query)).then((res) => {
}) setSuccess(res.success)
return success })
return true
}
}
if (rewkeys === 'bridge') {
if (typecard == '111') {
console.log(values)
const query = { ...values, roadId: records?.[0]?.value || '' }
dispatch(putBridge(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values }
dispatch(putBridge(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'weihuo' || rewkeys === 'chuzu') {
if (typecard == '111') {
console.log(values)
const query = { ...values, vehicleId: records?.[0]?.value || '', type: rewkeys === 'chuzu' ? '出租车' : '危货' }
dispatch(putSpecificVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values, type: rewkeys }
dispatch(putSpecificVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'yehu') {
if (typecard == '111') {
console.log(values)
const query = { ...values, businessId: records?.[0]?.value, type: rewkeys == 'chuzu' ? '出租车' : '危货' }
dispatch(putHouseholds(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values, type: rewkeys === 'chuzu' ? '出租车' : '危货' }
dispatch(putHouseholds(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}if (rewkeys === 'xianlu') {
if (typecard == '111') {
console.log(values)
const query = { ...values, lineId:records?.[0]?.value || '' }
dispatch(putCircuit(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values }
dispatch(putCircuit(query)).then((res) => {
setSuccess(res.success)
})
return true
}
} }
} if (rewkeys === 'cheliang') {
if (rewkeys === 'bridge') { if (typecard == '111') {
if (typecard == '111') { console.log(values)
console.log(values) const query = { ...values, carId:records?.[0]?.value || '' }
const query = { ...values, roadId: records?.[0]?.value || '' } dispatch(putVehicle(query)).then((res) => {
dispatch(putBridge(query)).then((res) => { setSuccess(res.success)
setSuccess(res.success) })
}) return true
return success } else {
} else { const query = { ...values }
const query = { ...values } dispatch(putVehicle(query)).then((res) => {
dispatch(putBridge(query)).then((res) => { setSuccess(res.success)
setSuccess(res.success) })
}) return true
return success }
} }
} if (rewkeys === 'zhichao') {
if (typecard == '111') {
console.log(values)
const query = { ...values, overspeedId:records?.[0]?.value || '' }
dispatch(putPurchase(query)).then((res) => {
setSuccess(res.success)
setMonitor(res)
})
return true
} else {
const query = { ...values }
dispatch(putPurchase(query)).then((res) => {
setSuccess(res.success)
setMonitor(res)
})
return true
}
}
} else { return false }
}} }}
initialValues={recortd} initialValues={recortd}
> >
@ -104,7 +277,7 @@ const UserModal = (props) => {
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
value={recordsay?.[0]?.value} value={recordsay?.[0]?.value}
rules={[{ required: true, message: "必填" }]} // rules={[{ required: true, message: "必填" }]}
/><ProFormText /><ProFormText
name={newlys?.[1]?.type} name={newlys?.[1]?.type}
width="md" width="md"
@ -112,9 +285,24 @@ const UserModal = (props) => {
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
value={recordsay?.[1]?.value} value={recordsay?.[1]?.value}
rules={[{ required: true, message: "必填" }]} // rules={[{ required: true, message: "必填" }]}
/> />
{rewkeys === 'yehu' ?
<ProFormSelect
rules={[{ required: true, message: "必填" }]}
options={[
{
value: '出租车',
label: '出租车',
}, {
value: '危货',
label: '危险货运',
},
]}
name='type'
label='类型'
/> : null
}
{newlysay?.map((item, index) => { {newlysay?.map((item, index) => {
return <ProFormText width="md" return <ProFormText width="md"
name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称" name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称"
@ -130,17 +318,33 @@ const UserModal = (props) => {
label={newlys?.[0]?.name} label={newlys?.[0]?.name}
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
// value={recordssy?.[0]?.value} // value={recordssy?.[0]?.value}
rules={[{ required: true, message: "必填" }]} // rules={[{ required: true, message: "必填" }]}
/><ProFormText /><ProFormText
name={newlys?.[1]?.type} name={newlys?.[1]?.type}
width="md" width="md"
label={newlys?.[1]?.name} label={newlys?.[1]?.name}
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
// value={recordssy?.[1]?.value} // value={recordssy?.[1]?.value}
rules={[{ required: true, message: "必填" }]} // rules={[{ required: true, message: "必填" }]}
/> />
{rewkeys === 'yehu' ?
<ProFormSelect
rules={[{ required: true, message: "必填" }]}
options={[
{
value: '出租车',
label: '出租车',
}, {
value: '危货',
label: '危险货运',
},
]}
name='type'
label='类型'
/> : null
}
{newlysay?.map((item, index) => { {newlysay?.map((item, index) => {
return <ProFormText width="md" return <ProFormText width="md"
name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称" key={index} name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称" key={index}

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

@ -1,21 +1,30 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState,useRef } from 'react';
import { connect } from 'react-redux'; import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Col, Input,Row } from 'antd'; import { Spin, Button, Popconfirm, Col, Input,Row } 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 moment from 'moment';
import { getReportStatistic } from "../actions/infor" import { getPurchase,delPurchase } from "../actions/infor"
import UserModal from './infor/details'; import UserModal from './infor/details';
const InForTable = (props) => { const InForTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, user, depData, depMessage, depLoading } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
const [counts, setCounts] = useState()//shuju const [counts, setCounts] = useState()//shuju
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 [recortd, setRecortd] = useState()
const [monitor, setMonitor] = useState()
const [delet, setDelet] = useState()
const [nameOfInspectionPoint, setNameOfInspectionPoint] = useState()//检测点名称
const [licensePlate, setLicensePlate] = useState()//车牌号
const [numberOfAxles, setNumberOfAxles] = useState()//车轴数
const [overrunRateUpper, setOverrunRateUpper] = useState()//超限率上限
const [overrunRateFloor, setOverrunRateFloor] = useState()//超限率下限
const [testTime, setTestTime] = useState()//超限率下限
const ref = useRef()
useEffect(() => { ref.current.reload() }, [monitor,delet,modalVisible])
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const openModal = (type, record) => {
setModalVisible(true); setModalVisible(true);
@ -45,31 +54,52 @@ const InForTable = (props) => {
const columns = const columns =
[ [
{ {
title: '检测点名称', title: '区/县',
dataIndex: 'placeName', dataIndex: 'placeName',
fixed: 'left', fixed: 'left',
width: 120, width: 120,
options: 1, options: 1,
search: false,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入检测点名称进行搜索', placeholder: '请输入检测点名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
render: (dom, record) => {
return record.districtcounty
},
}, },
{ {
title: '车牌号', title: '检测点名称',
// search: false, // search: false,
dataIndex: 'containers1', dataIndex: 'containers1',
fixed: 'left', fixed: 'left',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.nameOfInspectionPoint
},
fieldProps: {
onChange: (value, cs) => {
setNameOfInspectionPoint(value.currentTarget.value)
},
placeholder: '请输入车牌号进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
},{
title: '车牌号码',
// search: false,
dataIndex: 'containers444',
fixed: 'left',
width: 120,
render: (dom, record) => {
return record.licensePlate
}, },
fieldProps: { fieldProps: {
onChange: (value, cs) => {
setLicensePlate(value.currentTarget.value)
},
placeholder: '请输入车牌号进行搜索', placeholder: '请输入车牌号进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
@ -80,9 +110,12 @@ const InForTable = (props) => {
dataIndex: 'containers2', dataIndex: 'containers2',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.numberOfAxles
}, },
fieldProps: { fieldProps: {
onChange: (value, cs) => {
setNumberOfAxles(value.currentTarget.value)
},
placeholder: '请输入车轴数进行搜索', placeholder: '请输入车轴数进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
@ -95,20 +128,28 @@ const InForTable = (props) => {
// //
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.overrunRate
},
fieldProps: {
placeholder: '请输入超限率进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
// fieldProps: {
// placeholder: '请输入超限率进行搜索',
// getPopupContainer: (triggerNode) => triggerNode.parentNode,
// },
renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => { renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => {
return <Input.Group > return <Input.Group >
<Row gutter={8}> <Row gutter={8}>
<Col span={8}> <Col span={8}>
<Input placeholder='输入超限率'/> <Input
onChange={(value)=>{
setOverrunRateUpper(value.currentTarget.value)
}}
placeholder='输入超限率上限'/>
</Col> </Col>
<Col span={8}> <Col span={8}>
<Input placeholder='输入超限率'/> <Input
onChange={(value)=>{
setOverrunRateFloor(value.currentTarget.value)
}}
placeholder='输入超限率下限'/>
</Col> </Col>
</Row> </Row>
</Input.Group> </Input.Group>
@ -123,7 +164,7 @@ const InForTable = (props) => {
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.overrunWeight
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -137,7 +178,7 @@ const InForTable = (props) => {
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.grossVehicleWeight
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -151,7 +192,7 @@ const InForTable = (props) => {
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.vehicleCargoWeightLimit
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -164,9 +205,12 @@ const InForTable = (props) => {
valueType: 'dateTime', valueType: 'dateTime',
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.testTime
}, },
fieldProps: { fieldProps: {
onChange: (value, cs) => {
setTestTime(cs)
},
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
} }
}, { }, {
@ -178,7 +222,7 @@ const InForTable = (props) => {
width: 120, width: 120,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.nameOfBusinessOwner
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -193,7 +237,7 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.businessAddress
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -208,7 +252,7 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.notifier
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -223,7 +267,7 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.notificationMethod
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -235,10 +279,10 @@ const InForTable = (props) => {
valueType: 'dateRange', valueType: 'dateRange',
width: 140, width: 240,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.notificationResults
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -253,7 +297,7 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.processingTime
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -268,7 +312,7 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.deductPoints
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -283,7 +327,23 @@ const InForTable = (props) => {
width: 140, width: 140,
render: (dom, record) => { render: (dom, record) => {
return record.address return record.fine
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
},
{
title: '备注',
search: false,
dataIndex: 'containers14',
valueType: 'dateRange',
width: 140,
render: (dom, record) => {
return record.remarks
}, },
fieldProps: { fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -301,9 +361,18 @@ const InForTable = (props) => {
onClick={() => { onClick={() => {
openModal('edit', record) openModal('edit', record)
setTypecard('111') setTypecard('111')
setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"
onClick={() => {
const query = {
overspeedId: record.id
}
dispatch(delPurchase(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -342,6 +411,7 @@ const InForTable = (props) => {
<Spin spinning={false}> <Spin spinning={false}>
<div className='protable-transpor'> <div className='protable-transpor'>
<ProTable <ProTable
actionRef={ref}
scroll={{ x: 800 }} scroll={{ x: 800 }}
options={false} options={false}
ref={c => { finishedProductTable = c; }} ref={c => { finishedProductTable = c; }}
@ -355,20 +425,26 @@ const InForTable = (props) => {
}, },
}} }}
columns={columns} columns={columns}
dataSource={counts || []}
dataSource={(counts || {}).rows || []} onReset={(v) => {
setNameOfInspectionPoint('')
setLicensePlate('')
setNumberOfAxles('')
setOverrunRateUpper('')
setOverrunRateFloor('')
setTestTime('')
}}
request={async (params) => { request={async (params) => {
const query = { const query = {
startDate: day[0], nameOfInspectionPoint:nameOfInspectionPoint,
endDate: day[1], licensePlate:licensePlate,
placeType: placeType, numberOfAxles:numberOfAxles,
regionId: regionId, overrunRateUpper:overrunRateUpper,
placeName: sitename, overrunRateFloor:overrunRateFloor,
limit: params.pageSize, testTime:testTime
offset: ((params.current ? params.current : 1) - 1) * params.pageSize
} }
setRowSelected([]); setRowSelected([]);
const res = await dispatch(getReportStatistic(query)); const res = await dispatch(getPurchase(query));
setCounts(res.payload.data) setCounts(res.payload.data)
return { return {
...res, ...res,
@ -390,15 +466,41 @@ const InForTable = (props) => {
> >
</ProTable></div> </ProTable></div>
<UserModal {modalVisible ? <UserModal
visible={modalVisible} visible={modalVisible}
onVisibleChange={setModalVisible} onVisibleChange={setModalVisible}
modalRecord={modalRecord} modalRecord={modalRecord}
typecard={typecard} typecard={typecard}
/> rewkeys={'zhichao'}
data={data}
recortd={recortd}
setMonitor={setMonitor}
// sitename={sitename}
setRecortd={setRecortd}
/> : ''}
</Spin > </Spin >
) )
} }
const data={
"districtcounty": "区/县",
"nameOfInspectionPoint": "检测点名称",
"licensePlate": "车牌号码",
"numberOfAxles": "车轴数",
"overrunRate": "超限率",
"overrunWeight": "超限重量",
"grossVehicleWeight": "车货总重",
"vehicleCargoWeightLimit": "车货限重",
"testTime": "检测时间",
"nameOfBusinessOwner": "经营业户名称",
"businessAddress": "经营业户地址",
"notifier": "通知人",
"notificationMethod": "通知方式",
"notificationResults": "通知结果",
"processingTime": "处理时间",
"deductPoints": "扣分",
"fine": "罚款",
"remarks": "备注"
}
function mapStateToProps(state) { function mapStateToProps(state) {
const { auth, depMessage } = state; const { auth, depMessage } = state;
const pakData = (dep) => { const pakData = (dep) => {

1350
web/client/src/sections/fillion/components/operationalTable.js

File diff suppressed because it is too large

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

@ -126,7 +126,7 @@ const DetailList = (props) => {
dataIndex: 'userName', dataIndex: 'userName',
align: 'center', align: 'center',
render: (text, record) => { render: (text, record) => {
return record.user.name return record?.user?.name || ''
} }
}, { }, {
title: '上报时间', title: '上报时间',
@ -254,6 +254,7 @@ const PatrolTable = (props) => {
const [record, setRecord] = useState(); const [record, setRecord] = useState();
const [dateRange, setDateRange] = useState(); const [dateRange, setDateRange] = useState();
const [detailVisible, setDetailVisible] = useState(false) const [detailVisible, setDetailVisible] = useState(false)
const [activeTabKey1, setActiveTabKey1] = useState('tab1');
const { RangePicker } = DatePicker; const { RangePicker } = DatePicker;
@ -265,15 +266,27 @@ const PatrolTable = (props) => {
useEffect(() => { useEffect(() => {
if (record) { if (record) {
let query = { userId: record.id, reportType: 'patrol' } queryData();
if ((dateRange && dateRange instanceof Array)) {
query.startTime = moment(dateRange[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss')
query.endTime = moment(dateRange[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')
}
dispatch(getReportList(query));
} }
}, [record, dateRange]) }, [record, dateRange])
const queryData = () => {
let query = { userId: record.id, reportType: 'patrol' }
if ((dateRange && dateRange instanceof Array)) {
query.startTime = moment(dateRange[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss')
query.endTime = moment(dateRange[1]).endOf('day').format('YYYY-MM-DD HH:mm:ss')
}
dispatch(getReportList(query));
}
useEffect(() => {
if (activeTabKey1 && activeTabKey1 == 'tab2') {
setRecord(null);
} else if (activeTabKey1 && activeTabKey1 == 'tab1') {
setRecord(userList[0]);
}
}, [activeTabKey1])
const handelRefresh = () => { const handelRefresh = () => {
let query = { userId: record.id, reportType: 'patrol' } let query = { userId: record.id, reportType: 'patrol' }
dispatch(getReportList(query)); dispatch(getReportList(query));
@ -301,16 +314,28 @@ const PatrolTable = (props) => {
<DetailList reportList={reportList} record={record} loading={reportListLoading} dispatch={dispatch} handleOpen={handleOpen} handelRefresh={handelRefresh} /> <DetailList reportList={reportList} record={record} loading={reportListLoading} dispatch={dispatch} handleOpen={handleOpen} handelRefresh={handelRefresh} />
</Card> </Card>
</div>], </div>],
tab2: <PatrolGis userId={(record ||{}).id} dispatch={dispatch} /> tab2: <PatrolGis userId={(record || {}).id} dispatch={dispatch} reportList={reportList} />
}; };
const [activeTabKey1, setActiveTabKey1] = useState('tab1');
const onTab1Change = (key) => { const onTab1Change = (key) => {
setActiveTabKey1(key); setActiveTabKey1(key);
}; };
const handleChangeRecord = (newRecord) => {
let target = null;
if (!record || newRecord.id != record.id) {
target = newRecord;
}
setRecord(target);
}
return ( return (
<div className='card-protable'> <div className='card-protable'>
<Card > <Card >
<PatrolNameList onChange={(record) => setRecord(record)} record={record} userList={userList} loading={userLoading} /> <PatrolNameList
onChange={(record) => handleChangeRecord(record)}
record={record}
userList={userList}
loading={userLoading} />
</Card> </Card>
<Card <Card
style={{ flex: 1 }} style={{ flex: 1 }}

4
web/client/src/sections/fillion/components/project/project.js

@ -121,7 +121,7 @@ const ProjectModal = (props) => {
label={newlys?.[0]?.name} label={newlys?.[0]?.name}
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
value={recordsay?.[0]?.value} // value={recordsay?.[0]?.value}
rules={[{ required: true, message: "必填" }]} rules={[{ required: true, message: "必填" }]}
/><ProFormText /><ProFormText
name={newlys?.[1]?.type} name={newlys?.[1]?.type}
@ -129,7 +129,7 @@ const ProjectModal = (props) => {
label={newlys?.[1]?.name} label={newlys?.[1]?.name}
tooltip="最长为 24 位" tooltip="最长为 24 位"
placeholder="请输入名称" placeholder="请输入名称"
value={recordsay?.[1]?.value} // value={recordsay?.[1]?.value}
rules={[{ required: true, message: "必填" }]} rules={[{ required: true, message: "必填" }]}
/> />
<ProFormSelect <ProFormSelect

1120
web/client/src/sections/fillion/components/publicTable.js

File diff suppressed because it is too large

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

@ -4,17 +4,14 @@ import { Spin, Button, Popconfirm, Badge } 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 moment from 'moment';
import { getRoadway, getProject, putRoadway } from "../actions/infor" import { getRoadway, getProject, delRoadway, delProject } from "../actions/infor"
import UserModal from './infor/details'; import UserModal from './infor/details';
import ProjectModal from './project/project'; import ProjectModal from './project/project';
const TransporTationTable = (props) => { const TransporTationTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props const { dispatch, user, depData, depMessage, depLoading } = props
const [rowSelected, setRowSelected] = useState([]) const [rowSelected, setRowSelected] = useState([])
// const [regionId, setRegionId] = useState()//区域id const [sitename, setSitename] = useState()//桥梁名称
// 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 [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false); const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false); const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
@ -22,29 +19,10 @@ const TransporTationTable = (props) => {
const [typecard, setTypecard] = useState(); const [typecard, setTypecard] = useState();
const [activeKey, setActiveKey] = useState('tab1'); const [activeKey, setActiveKey] = useState('tab1');
const [recortd, setRecortd] = useState() const [recortd, setRecortd] = useState()
// const ref = useRef() const [whichofits, setWhichofits] = useState('xian')
//请求数据 const [delet, setDelet] = useState()
const requestRoadway = (name) => { const ref = useRef()
const query = { useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, whichofits, delet])
level: name
}
setSitename(name)
setRowSelected([]);
dispatch(getRoadway(query)).then((res) => {
setCounts(res.payload.data)
});
}
// useEffect(()=>{ref.current.reload()},[counts])
//工程数据
const requestProject = () => {
const query = {
type: '道路'
}
setRowSelected([]);
dispatch(getProject(query)).then((res) => {
setCounts(res.payload.data)
})
}
//打开弹窗 //打开弹窗
const openModal = (type, record) => { const openModal = (type, record) => {
setModalVisible(true); setModalVisible(true);
@ -91,9 +69,9 @@ const TransporTationTable = (props) => {
options: 1, options: 1,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => { onChange: (value, cs) => {
// setSitename(value.currentTarget.value) setSitename(value.currentTarget.value)
// }, },
placeholder: '请输入道路名称进行搜索', placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
@ -1197,11 +1175,17 @@ const TransporTationTable = (props) => {
setRecortd(record) setRecortd(record)
openModal('edit', record) openModal('edit', record)
setTypecard('111') setTypecard('111')
// sessionStorage.setItem('record', JSON.stringify(record))
// sessionStorage.setItem('newly', JSON.stringify(data))
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"
onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -1245,9 +1229,9 @@ const TransporTationTable = (props) => {
options: 1, options: 1,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => { onChange: (value, cs) => {
// setSitename(value.currentTarget.value) setSitename(value.currentTarget.value)
// }, },
placeholder: '请输入道路名称进行搜索', placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
@ -2353,7 +2337,14 @@ const TransporTationTable = (props) => {
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link" onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}>删除</Button></div>
} }
}, },
@ -2398,9 +2389,9 @@ const TransporTationTable = (props) => {
options: 1, options: 1,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => { onChange: (value, cs) => {
// setSitename(value.currentTarget.value) setSitename(value.currentTarget.value)
// }, },
placeholder: '请输入道路名称进行搜索', placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
@ -3506,7 +3497,15 @@ const TransporTationTable = (props) => {
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link" onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -3551,9 +3550,9 @@ const TransporTationTable = (props) => {
options: 1, options: 1,
backgroundColor: "#ffffff", backgroundColor: "#ffffff",
fieldProps: { fieldProps: {
// onChange: (value, cs) => { onChange: (value, cs) => {
// setSitename(value.currentTarget.value) setSitename(value.currentTarget.value)
// }, },
placeholder: '请输入项目名称进行搜索', placeholder: '请输入项目名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode, getPopupContainer: (triggerNode) => triggerNode.parentNode,
}, },
@ -3689,7 +3688,16 @@ const TransporTationTable = (props) => {
setTypecard('111') setTypecard('111')
setRecortd(record) setRecortd(record)
}} }}
>编辑</Button><Button type="link"></Button></div> >编辑</Button><Button type="link"
onClick={() => {
const query = {
projectId: record.id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
} }
}, },
@ -3729,7 +3737,7 @@ const TransporTationTable = (props) => {
<Spin spinning={false}> <Spin spinning={false}>
<div className='protable-transpor'> <div className='protable-transpor'>
<ProTable <ProTable
// actionRef={ref} actionRef={ref}
toolbar={{ toolbar={{
multipleLine: true, multipleLine: true,
menu: { menu: {
@ -3738,18 +3746,26 @@ const TransporTationTable = (props) => {
items: [ items: [
{ {
key: 'tab1', key: 'tab1',
label: <span onClick={() => requestRoadway('县')}>县道{activeKey === 'tab1'}</span>, label: <span onClick={() => {
setWhichofits('xian')
}}>县道{activeKey === 'tab1'}</span>,
}, },
{ {
key: 'tab2', key: 'tab2',
label: <span onClick={() => requestRoadway('乡')}>乡道{activeKey === 'tab2'}</span>, label: <span onClick={() => {
setWhichofits('xiang')
}}>乡道{activeKey === 'tab2'}</span>,
}, },
{ {
key: 'tab3', key: 'tab3',
label: <span onClick={() => requestRoadway('村')}>村道{activeKey === 'tab3'}</span>, label: <span onClick={() => {
setWhichofits('cun')
}}>村道{activeKey === 'tab3'}</span>,
}, { }, {
key: 'tab4', key: 'tab4',
label: <span onClick={() => requestProject()}>工程一览{activeKey === 'tab4'}</span>, label: <span onClick={() => {
setWhichofits('gongcheng')
}}>工程一览{activeKey === 'tab4'}</span>,
}, },
], ],
}, },
@ -3760,12 +3776,7 @@ const TransporTationTable = (props) => {
style={{ width: "100% ", overflow: "auto", height: '760px' }} style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id' rowKey='id'
onReset={(v) => { onReset={(v) => {
const { id } = depMessage[0] setSitename('')
// console.log(id)
// setRegionId(id)
// setPlaceType(-1)
// setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
// setSitename('')
}} }}
rowSelection={{ rowSelection={{
selectedRowKeys: rowSelected, selectedRowKeys: rowSelected,
@ -3774,22 +3785,59 @@ const TransporTationTable = (props) => {
}, },
}} }}
columns={columns[activeKey]} columns={columns[activeKey]}
dataSource={counts || []} dataSource={counts || []}
request={async (params) => { request={async (params) => {
const query = { if (whichofits == 'xian') {
level: '县' const query = {
level: '县',
road: sitename
}
setRowSelected([]);
const res = await dispatch(getRoadway(query));
// console.log(res)
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} if (whichofits == 'xiang') {
const query = {
level: '乡',
road: sitename
}
setRowSelected([]);
const res = await dispatch(getRoadway(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} if (whichofits == 'cun') {
const query = {
level: '村',
road: sitename
}
setRowSelected([]);
const res = await dispatch(getRoadway(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} }
setSitename('县') if (whichofits == 'gongcheng') {
const query = {
setRowSelected([]); type: 'road',
const res = await dispatch(getRoadway(query)); // type:sitename
// console.log(res) }
setRowSelected([]);
setCounts(res.payload.data) const res = await dispatch(getProject(query));
return { setCounts(res.payload.data)
...res, return {
total: res.payload.data ? res.payload.data.count : 0 ...res,
total: res.payload.data ? res.payload.data.count : 0
}
} }
}} }}
search={{ search={{

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

@ -20,9 +20,9 @@ export function getNavItem(user, dispatch) {
<Menu.Item key="fillionoperational"> <Menu.Item key="fillionoperational">
<Link to="/fillion/operational">运政管理</Link> <Link to="/fillion/operational">运政管理</Link>
</Menu.Item> </Menu.Item>
<Menu.Item key="fillionenforce"> {/* <Menu.Item key="fillionenforce">
<Link to="/fillion/enforce">执法管理</Link> <Link to="/fillion/enforce">执法管理</Link>
</Menu.Item> </Menu.Item> */}
<Menu.Item key="fillionmaintenance"> <Menu.Item key="fillionmaintenance">
<Link to="/fillion/maintenance">养护管理</Link> <Link to="/fillion/maintenance">养护管理</Link>
</Menu.Item> </Menu.Item>

53
web/client/src/sections/quanju/containers/example.js

@ -6,12 +6,14 @@ import '../style.less';
import Header from './heand'; import Header from './heand';
import Footer from './footer'; import Footer from './footer';
import ProTable, { TableDropdown } from '@ant-design/pro-table'; import ProTable, { TableDropdown } from '@ant-design/pro-table';
import Gis from './footer/gis/gis';
const MAPID = 'screenGis' const MAPID = 'screenGis'
const Example = (props) => { const Example = (props) => {
const { dispatch, actions, user, loading } = props const { dispatch, actions, user, loading } = props
const [tabKey, setTabKey] = useState('leadership') const [tabKey, setTabKey] = useState('leadership')
const [mapObj, setMapObj] = useState();
// useEffect(() => { // useEffect(() => {
// dispatch(actions.example.getMembers(user.orgId)) // dispatch(actions.example.getMembers(user.orgId))
@ -24,53 +26,6 @@ const Example = (props) => {
} }
// useEffect(() => {
// const map = new AMap.Map(MAPID, {
// //resizeEnable: true,
// center: [115.912663, 28.543149],//地图中心点,初始定位加载显示楼块
// // center: [115.857952, 28.683003],//地图中心点
// zoom: 13,//地图显示的缩放级别
// zooms: [8, 18],
// pitch: 65, // 地图俯仰角度,有效范围 0 度- 83 度
// viewMode: '3D', // 地图模式
// // rotation: 60
// // showLabel: false
// });
// let styleName = 'amap://styles/fb26776387242721c2fc32e2cb1daccc';
// map.setMapStyle(styleName);
// let mapComplete = false;
// let windowOnload = false;
// window.onload = function () {
// windowOnload = true;
// }
// //主题样式
// //主题样式
// return () => {
// const amapKeys = Object.keys(localStorage).filter(key => key.match(/^_AMap_/)) // 销毁地图
// amapKeys.forEach(key => {
// localStorage.removeItem(key)
// })
// map.clearMap();
// if (map) map.destroy();
// clearTimeout(timer)
// }
// }, [])
return ( return (
<Spin tip="biubiubiu~" spinning={loading}> <Spin tip="biubiubiu~" spinning={loading}>
@ -80,11 +35,11 @@ const Example = (props) => {
document.body.clientHeight / 1080 document.body.clientHeight / 1080
)})`, */ )})`, */
}}> }}>
{/* <div id={MAPID} style={{ position: 'absolute', width: "100%", height: "100%" }}></div> */} <Gis />
<div style={{ width: "100%", height: "10%" }}> <div style={{ width: "100%", height: "10%" }}>
<Header tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} /> <Header tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} />
</div> </div>
<div style={{ width: "100%", height: "90%" }}> <div style={{position: 'absolute', width: "100%", height: "90%" }}>
<Footer tabKey={tabKey} dispatch={dispatch} /> <Footer tabKey={tabKey} dispatch={dispatch} />
</div> </div>

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

@ -54,7 +54,7 @@ function Rightbottom(props) {
textStyle: { textStyle: {
color: '#fff', color: '#fff',
}, },
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>`,
}, },
legend: { legend: {
orient: "vertical", orient: "vertical",

2
web/client/src/sections/quanju/containers/footer/build/Rightcenter.js

@ -83,7 +83,7 @@ const RNAKS = [FIRST, SECOND, THIRD]
<div className='build-right-center'> <div className='build-right-center'>
<div className='build-right-center-top'> <div className='build-right-center-top'>
<img src="/assets/images/quanju/gonglugongcheng.png"></img> <img src="/assets/images/quanju/gonglugongcheng.png"></img>
<div>在建公路工程数量</div> <div>在建公路工程数量/</div>
<h2>{sundata}</h2> <h2>{sundata}</h2>
</div> </div>
<AutoRollComponent content={renderContent()} <AutoRollComponent content={renderContent()}

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

@ -36,10 +36,10 @@ const Build = (props) => {
const requestbuildingnumber = async ()=>{ const requestbuildingnumber = async ()=>{
const res = await dispatch(getdaolutongji()); const res = await dispatch(getdaolutongji());
let alltype = Object.keys(res.payload.data?.roadType || {}).map((item)=>({name:item,value:Number(keepThreeNum(res.payload.data.roadType[item]))})) let alltype = Object.keys(res.payload.data?.roadType || {}).map((item)=>({name:item,value:Number(keepThreeNum(res.payload.data.roadType[item]))}))
console.log(alltype,'打他啊') // console.log(alltype,'打他啊')
setdata(alltype.filter(item=>item.name==='县'||item.name==="乡"||item.name==='村')) setdata(alltype.filter(item=>item.name==='县'||item.name==="乡"||item.name==='村'))
setbuildingnumber(res.payload.data) setbuildingnumber(res.payload.data)
console.log(res.payload.data,'哈哈哈') // console.log(res.payload.data,'哈哈哈')
} }
@ -118,7 +118,9 @@ const Build = (props) => {
<Module title={"各种状态公路数量统计"} style={{ width: "100%", <Module title={"各种状态公路数量统计"} style={{ width: "100%",
height:" 33%" height:" 33%"
}} customize = {true}> }} customize = {true}>
{buildingnumber&&buildingnumber.buildedRoad!==0&&totalgongli!==0?<div className='build-left-top'> <div style={{height:"100%",position:"relative"}} >
<span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center"}}></span>
{buildingnumber&&buildingnumber.buildedRoad!==0&&totalgongli!==0?<div className='build-left-top'>
<div className='build-left-top-item'> <div className='build-left-top-item'>
<div> <div>
{/* <i>&#9658;</i> */} {/* <i>&#9658;</i> */}
@ -137,6 +139,7 @@ const Build = (props) => {
<div>{buildingnumber?.buildedRoad || 0}</div> <div>{buildingnumber?.buildedRoad || 0}</div>
</div> </div>
</div>:<NoData/>} </div>:<NoData/>}
</div>
</Module> </Module>
<Module title={"各乡镇道路分布统计"} style={{ width: "100%", <Module title={"各乡镇道路分布统计"} style={{ width: "100%",
height:" 33%",marginTop:'3%' height:" 33%",marginTop:'3%'
@ -203,7 +206,7 @@ const Build = (props) => {
{safetyData&&sunsafetyData!==0?<RightBottom width='100%' {safetyData&&sunsafetyData!==0?<RightBottom width='100%'
height='100%' height='100%'
text='道路总公里' text='道路总公里'
total={sunsafetyData} total={keepThreeNum(sundata)}
data={keepThreeNum(safetyData)}/>:<NoData/>} data={keepThreeNum(safetyData)}/>:<NoData/>}
</Module> </Module>
</div> </div>

4
web/client/src/sections/quanju/containers/footer/build/style.less

@ -178,7 +178,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
position: absolute; position: absolute;
left: 16%; left: 15%;
top:38%; top:38%;
h2{ h2{
font-size: 1.25rem; font-size: 1.25rem;
@ -278,7 +278,7 @@
justify-content: center; justify-content: center;
position: absolute; position: absolute;
align-items: center; align-items: center;
left: 19%; left: 15%;
top:38%; top:38%;
h2{ h2{
font-size: 1.25rem; font-size: 1.25rem;

189
web/client/src/sections/quanju/containers/footer/gis/bounds.js

@ -0,0 +1,189 @@
import React, { Component } from 'react'
import PropTypes from 'prop-types'
import { geoJson } from './mock_data';
export default class Bounds extends Component {
constructor(props) {
super(props);
this.map = props.map;
this.pl = {};
this.textMarker = {};
}
static propTypes = {
prop: PropTypes
}
componentDidMount() {
if (!window.BoundPl) {
this.drawBounds();
}
}
componentWillUnmount() {
if (window.local_)
window.local_.remove(this.pl);
this.textMarker = null;
window.BoundPl = null;
}
drawBounds = () => {
var map = this.map;
var loca = window.local_;
loca.ambLight = {
intensity: 0.3,
color: '#fff',
};
loca.dirLight = {
intensity: 0.6,
color: '#fff',
target: [0, 0, 0],
position: [0, -1, 1],
};
loca.pointLight = {
color: 'rgb(100,100,100)',
position: [120.24289, 30.341335, 20000],
intensity: 3,
// 距离表示从光源到光照强度为 0 的位置,0 就是光不会消失。
distance: 50000,
};
var geo = new Loca.GeoJSONSource({
data: geoJson
});
var colors = ['#04398c', '#04398c', '#0542a5'].reverse();
var height = [500];
var pl = new Loca.PolygonLayer({
// loca,
zIndex: 1,
opacity: 0.6,
// cullface: 'none',
shininess: 10,
hasSide: true,
});
pl.setSource(geo);
pl.setStyle({
topColor: function (index, feature) {
var i = index % 3;
return colors[i];
},
sideColor: function (index, feature) {
return '#023890';
},
borderColor: function () {
return '#24dcf7'
},
height: function (index, feature) {
return index == 0 ? height[0] : height[0] + index * 50;
},
altitude: 0,
});
loca.add(pl);
// 创建纯文本标记
var text = new AMap.Text({
text: '纯文本标记',
anchor: 'center', // 设置文本标记锚点
draggable: true,
cursor: 'pointer',
angle: 0,
visible: false,
offset: [60, 60],
extData: 'bounds_text',
style: {
'padding': '5px 10px',
'margin-bottom': '1rem',
'border-radius': '.25rem',
'background-color': 'rgba(0,0,0,0.5)',
// 'width': '12rem',
'border-width': 0,
'box-shadow': '0 2px 6px 0 rgba(255, 255, 255, .3)',
'text-align': 'center',
'font-size': '16px',
'color': '#fff',
},
});
// text.setMap(map);
if (!this.textMarker)
map.add(text);
this.textMarker = text;
console.log(text)
// 拾取
map.on('mousemove', (e) => {
var feat = pl.queryFeature(e.pixel.toArray());
// if (!text) {
map.add(text);
// text = this.textMarker;
// }
if (feat) {
text.show();
text.setText(feat.properties.NAME);
text.setPosition(e.lnglat);
pl.setStyle({
topColor: (index, feature) => {
if (feature === feat) {
return [19, 43, 77, 1];
}
// var v = feature.properties.health * 100;
var i = index % 3;
return colors[i];
},
sideColor: (index, feature) => {
if (feature === feat) {
return '#023890';
}
return '#023890';
},
borderColor: function () {
return '#24dcf7'
},
height: function (index, feature) {
return index == 0 ? height[0] : height[0] + index * 50;
},
});
} else {
pl.setStyle({
topColor: function (index, feature) {
var i = index % 3;
return colors[i];
},
sideColor: function (index, feature) {
return '#023890';
},
borderColor: function () {
return '#24dcf7'
},
height: function (index, feature) {
return index == 0 ? height[0] : height[0] + index * 50;
},
altitude: 0,
});
text.hide();
map.remove(text);
}
});
map.setZoom(11)
map.setCenter([115.912663,28.543149]);
map.setRotation(-68.7);
map.setPitch(42);
this.pl = pl;
window.BoundPl = pl;
}
render() {
return (
<div>
</div>
)
}
}

53
web/client/src/sections/quanju/containers/footer/gis/gis.js

@ -0,0 +1,53 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import Bounds from './bounds';
const MAPID = 'screenGis'
const Gis = (props) => {
const [mapObj, setMapObj] = useState();
useEffect(() => {
if (AMap) loadMap();
return () => {
if (window.local_) {
window.local_ = null
}
if (mapObj)
mapObj.clearMap();
}
}, [true])
const loadMap = () => {
const map = new AMap.Map(MAPID, {
resizeEnable: true,
center: [115.912663,28.543149],//地图中心点,初始定位加载显示楼块
zoom: 15,//地图显示的缩放级别
zooms: [10, 12],
pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度
viewMode: '3D', // 地图模式
mapStyle: 'amap://styles/fb26776387242721c2fc32e2cb1daccc',
});
let windowOnload = false;
map.on('complete', function () {
if (!window.local_) {
window.local_ = new Loca.Container({ map });
setMapObj(map);
}
});
window.onload = function () {
windowOnload = true;
}
};
return (
<div style={{ position: 'absolute', width: '100%', backgroundColor: '#101824', height: '100%', minHeight: 700 }}>
<div id={MAPID} style={{ width: '100%', height: '100%', background: "#101824", minHeight: 700 }} />
{mapObj ? <Bounds map={mapObj} /> : ''}
</div >
)
}
export default Gis

59
web/client/src/sections/quanju/containers/footer/gis/mock_data.js

File diff suppressed because one or more lines are too long

28
web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js

@ -15,7 +15,7 @@ export default function LeftItem({datas}) {
textStyle: { textStyle: {
color: '#fff', color: '#fff',
}, },
formatter: (values) => ` ${values.name}<b>${datas.processed}</b>`, formatter: (values) => `${values.name}<b>${datas.processed}</b>`,
}, },
title: { title: {
text: `${(datas.processed*100/datas.total).toFixed(2)}%`, text: `${(datas.processed*100/datas.total).toFixed(2)}%`,
@ -78,6 +78,7 @@ export default function LeftItem({datas}) {
}, },
series: [{ series: [{
type: 'bar', type: 'bar',
showBackground: true,//这里只有显示背景才能出现背景灰色的线
data: [{ data: [{
name: '已处理', name: '已处理',
value: (datas.processed*100/datas.total).toFixed(2), value: (datas.processed*100/datas.total).toFixed(2),
@ -97,34 +98,15 @@ export default function LeftItem({datas}) {
coordinateSystem: 'polar', coordinateSystem: 'polar',
roundCap: true, roundCap: true,
barWidth: 8, barWidth: 8,
barGap: '-100%', // 两环重叠 },
z: 2, ]
},{ // 灰色环
type: 'bar',
data: [{
value: 100,
itemStyle: {
color: '#092B7B ',
shadowColor: 'rgba(0, 0, 0, 0.2)',
shadowBlur: 5,
shadowOffsetY: 2
}
}],
coordinateSystem: 'polar',
roundCap: true,
barWidth: 8,
barGap: '-100%', // 两环重叠
z: 1
}]
} }
chartInstance.setOption(option); chartInstance.setOption(option);
}, []) }, [])
return ( return (
<div className='guanli-left-item'> <div className='guanli-left-item'>
<span style={{position:"absolute",width:"10%",color:"#FFF",backgroundColor:'rgba(216, 240, 255, 0.1)',right:"5%",textAlign:"center",top:"2%"}}></span>
<div className='guanli-left-item-left'> <div className='guanli-left-item-left'>
<span>{datas.name}</span> <span>{datas.name}</span>
<div>{datas.total} <span></span></div> <div>{datas.total} <span></span></div>

34
web/client/src/sections/quanju/containers/footer/guanli/index.js

@ -11,18 +11,42 @@ const Guanli = (props) => {
const {dispatch} = props const {dispatch} = props
const [leftDatas,setleftDatas] = useState([]) const [leftDatas,setleftDatas] = useState([])
const [rightDatas,setrightDatas] = useState([]) const [rightDatas,setrightDatas] = useState([])
const [rightitemlist,setrightitemlist] = useState()
const requestleftDatas = async()=>{ const requestleftDatas = async()=>{
const res = await dispatch(getjiandmanage()) const res = await dispatch(getjiandmanage())
res.payload.data.sort((a,b)=>{ res.payload.data?.sort((a,b)=>{
return parseInt(b.total) - parseInt(a.total) return parseInt(b.total) - parseInt(a.total)
}) })
setleftDatas(res.payload.data) setleftDatas(res.payload.data)
console.log(res.payload.data,'哈哈哈') console.log(res.payload.data,'哈哈哈')
}
const data_string=(str)=> {
str.match('/([^.]*)$/g')
} }
const requestRightDatas = async()=>{ const requestRightDatas = async()=>{
const res = await dispatch(getjiandetail()) const res = await dispatch(getjiandetail())
// let d = res.payload.data?.overSpeedList.sort((a,b)=>b.processingTime < a.processingTime ?-1:1)
var pattern = /[\u4e00-\u9fa5]*/;
let d = res.payload.data?.overSpeedList?.filter((item,index)=>{
return escape(item.processingTime).indexOf("%u")<0
})
d.map((item,index)=>{
if(parseInt(item.processingTime.match(/([^.]*)$/)[0])<10){
return item.processingTime = `${(item.processingTime.match(/^([^.]*)(.[^.]*)/)[0])}.0${parseInt(item.processingTime.match(/([^.]*)$/)[0])}`
}
// console.log(d3,'好评')
console.log(item.processingTime.match(/([^.]*)$/)[0],'kk')
})
d.sort((a, b) => b.processingTime.localeCompare(a.processingTime))
setrightDatas(res.payload.data) setrightDatas(res.payload.data)
// console.log(res,'嘿嘿嘿') setrightitemlist(d)
// console.log(d,'对比的数据')
// console.log(d2,'完美')
// console.log(res.payload.data,'嘿嘿嘿')
} }
useEffect(()=>{ useEffect(()=>{
requestleftDatas(); requestleftDatas();
@ -32,7 +56,7 @@ const Guanli = (props) => {
// datalist.fill({licensePlate:"赣A44454",overrunRate:"30%",fine:"200元",processingTime:"2020年4月1日"}) // datalist.fill({licensePlate:"赣A44454",overrunRate:"30%",fine:"200元",processingTime:"2020年4月1日"})
const renderContent = () => { const renderContent = () => {
return <div style={{height:"100%"}}> return <div style={{height:"100%"}}>
{rightDatas && rightDatas.length!==0?rightDatas.overSpeedList.map(({ id, licensePlate, overrunRate,fine,processingTime }, index) => { {rightitemlist && rightitemlist.length!==0?rightitemlist?.map(({ id, licensePlate, overrunRate,fine,processingTime }, index) => {
if(index<30){ if(index<30){
return <div key={index} className='guanli-right-item'> return <div key={index} className='guanli-right-item'>
<span>{licensePlate}</span> <span>{licensePlate}</span>
@ -74,9 +98,9 @@ const Guanli = (props) => {
<span>车牌号</span> <span>车牌号</span>
<span>超限</span> <span>超限</span>
<span>处罚</span> <span>处罚</span>
<span>日期</span> <span>处理日期</span>
</div> </div>
{rightDatas && rightDatas.length!==0?<AutoRollComponent content={renderContent()} {rightitemlist && rightitemlist.length!==0?<AutoRollComponent content={renderContent()}
containerStyle={{ position: "relative", height: "90%", }} containerStyle={{ position: "relative", height: "90%", }}
divHeight={"100%"} divId={"chart-overview-deviceList"} />:<NoData style={{height:"70%"}}/>} divHeight={"100%"} divId={"chart-overview-deviceList"} />:<NoData style={{height:"70%"}}/>}
</Module> </Module>

3
web/client/src/sections/quanju/containers/footer/guanli/style.less

@ -19,6 +19,7 @@
.guanli-left-item{ .guanli-left-item{
box-sizing: border-box; box-sizing: border-box;
width: 85%; width: 85%;
position: relative;
// height: 30%; // height: 30%;
height: 24vh; height: 24vh;
margin: 0 auto 3%; margin: 0 auto 3%;
@ -72,7 +73,7 @@
width: 8px; width: 8px;
height: 8px; height: 8px;
background-color: #fff; background-color: #fff;
bottom: 7.0625rem; top:1.5%;
left: 50%; left: 50%;
z-index: 10; z-index: 10;
border-radius: 4px; border-radius: 4px;

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

@ -14,7 +14,10 @@ const Right = (props) => {
setList(res.payload.data.reportList.filter((item, index) => { setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "road" return item.projectType == "road"
})) }))
setNums(res.payload.data.processed) setNums(res.payload.data.reportCount.filter((item, index) => {
return item.projectType == "road"
}))
console.log(res.payload.data);
}) })
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -24,6 +27,7 @@ const Right = (props) => {
// const // const
}) })
}, []) }, [])
console.log("1211", nums);
const renderBody = () => { const renderBody = () => {
return ( return (
@ -59,13 +63,13 @@ const Right = (props) => {
<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: "40%", background: "url(/assets/images/leadership/zuo.png)", backgroundSize: "100% 100%", position: "absolute", top: "50%" }}> <div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", float: "left", marginTop: "5.6%" }}>
{/* </div>
<div style={{ width: "15%", height: "20%", background: "url(/assets/images/leadership/center.png)", backgroundSize: "100% 100%", position: "absolute", top: "67%", left: "34%" }}> */}
</div> </div>
<div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", background: "url(/assets/images/leadership/you.png)", backgroundSize: "100% 100%", position: "absolute", right: "-1%", top: "70%" }}></div> {/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
</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> </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>
@ -77,7 +81,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */} {/* <p>{title || []}</p> */}
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} /> <img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span> <span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>{nums || []}</span><span style={{ marginLeft: "10%" }}></span></p> <p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>{nums ? nums[0]?.count : []}</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */} {/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div> </div>
<Lun <Lun

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

@ -9,11 +9,15 @@ const Right = (props) => {
const [beijing, setBeijing] = useState() const [beijing, setBeijing] = useState()
const [list, setList] = useState([]) const [list, setList] = useState([])
const [roads, setRoads] = useState() const [roads, setRoads] = useState()
const [nums, setNums] = useState()
useEffect(() => { useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => { const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => { setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "culvert" return item.projectType == "culvert"
})) }))
setNums(res.payload.data.reportCount.filter((item, index) => {
return item.projectType == "culvert"
}))
}) })
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -59,16 +63,16 @@ const Right = (props) => {
<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: "40%", backgroundColor: "#fff", float: "left", marginTop: "4%" }}> <div style={{ width: (roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", 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%", 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: "#18ABFF", 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(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?.["县"])).toFixed(4) * 100}</span><span>%</span></p> <p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100}</span><span>%</span></p>
</div> </div>
</div> </div>
@ -77,7 +81,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */} {/* <p>{title || []}</p> */}
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} /> <img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span> <span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>187</span><span style={{ marginLeft: "10%" }}></span></p> <p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>涵洞</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>{nums ? nums[0]?.count : []}</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */} {/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div> </div>
<Lun <Lun

6
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js

@ -31,9 +31,9 @@ const Bottomlunbo = (props) => {
业户信息: 业户信息:
</div> </div>
<div style={{ width: "40%", height: "60%", float: "left" }}> <div style={{ width: "40%", height: "60%", float: "left" }}>
<div style={{ width: "100%", height: "100%", position: "relative" }}> <div style={{ width: "100%", height: "90%", position: "relative", top: "60%" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", marginLeft: "20%", marginTop: "15%" }} /> <img src='/assets/images/leadership/di.png' style={{ width: "60%", height: "100%", marginLeft: "20%" }} />
<p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "90%", left: "33%" }}>出租车</p> <p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "10%", left: "33%" }}>出租车</p>
</div> </div>
</div> </div>
<Lunbotop <Lunbotop

7
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less

@ -3,4 +3,9 @@
scrollbar-width: none !important; scrollbar-width: none !important;
} }
.hidden-scroll-bar-y::-webkit-scrollbar { width: 0 !important } .hidden-scroll-bar-y::-webkit-scrollbar { width: 0 !important }
.huoyun{
overflow: hiddden;
text-overflow: ellipsis;
white-space: nowrap
}

7
web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js

@ -1,6 +1,7 @@
import React, { useState, useEffect } from 'react' import React, { useState, useEffect } from 'react'
import Lunbotop from "../../right/lunbo" import Lunbotop from "../../right/lunbo"
import { getyunzheng } from "../../../../../actions/example" import { getyunzheng } from "../../../../../actions/example"
import "./style.less"
const Toplunbo = (props) => { const Toplunbo = (props) => {
@ -30,9 +31,9 @@ const Toplunbo = (props) => {
height: "50%", height: "50%",
}}> }}>
<div style={{ width: "40%", height: "60%", float: "left" }}> <div style={{ width: "40%", height: "60%", float: "left" }}>
<div style={{ width: "100%", height: "100%", position: "relative", top: "-30%" }}> <div style={{ width: "100%", height: "110%", position: "relative", top: "-30%" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", marginLeft: "20%" }} /> <img src='/assets/images/leadership/di.png' style={{ width: "60%", height: "100%", marginLeft: "20%" }} />
<p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "20%", left: "33%" }}>危险货运</p> <p className='huoyun' style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "10%", left: "33%" }}>危险货运</p>
</div> </div>
</div> </div>
<Lunbotop <Lunbotop

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

@ -8,11 +8,15 @@ const Right = (props) => {
const [beijing, setBeijing] = useState() const [beijing, setBeijing] = useState()
const [list, setList] = useState([]) const [list, setList] = useState([])
const [roads, setRoads] = useState() const [roads, setRoads] = useState()
const [nums, setNums] = useState()
useEffect(() => { useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => { const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => { setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "bridge" return item.projectType == "bridge"
})) }))
setNums(res.payload.data.reportCount.filter((item, index) => {
return item.projectType == "bridge"
}))
}) })
}, []) }, [])
useEffect(() => { useEffect(() => {
@ -55,16 +59,16 @@ 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?.["大桥"])).toFixed(4) * 100}</span>%</p> <p style={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{(roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(4) * 100}</span>%</p>
<p style={{ width: "25%", position: "absolute", right: "1%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF", marginLeft: "10%" }}>{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: "40%", backgroundColor: "#fff", float: "left", marginTop: "4%" }}> <div style={{ width: (roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#fff", float: "left", marginTop: "5.6%" }}>
</div> </div>
<div style={{ width: (roads?.["中桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}> <div style={{ width: (roads?.["中桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", transform: "skewX(-45deg)", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
</div> </div>
<div style={{ width: (roads?.["小桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", backgroundColor: "#18ABFF", float: "left", marginTop: "5.6%" }}></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>
@ -76,7 +80,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */} {/* <p>{title || []}</p> */}
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} /> <img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span> <span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>187</span><span style={{ marginLeft: "10%" }}></span></p> <p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>桥梁</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>{nums ? nums[0]?.count : []}</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */} {/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div> </div>
<Lun <Lun

2
web/client/src/sections/quanju/containers/footer/leadership/left/echarts/lefttopecharts.js

@ -98,7 +98,7 @@ const Lefttopecharts = () => {
offsetCenter: [0, 46], // x, y,单位px offsetCenter: [0, 46], // x, y,单位px
textStyle: { textStyle: {
color: "#fff", color: "#fff",
fontSize: 14, //表盘上的标题文字大小 fontSize: "2vh", //表盘上的标题文字大小
fontWeight: 400, fontWeight: 400,
fontFamily: "PingFangSC", fontFamily: "PingFangSC",
}, },

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

@ -9,9 +9,11 @@ const Lefttop = () => {
const style = { height: "68%" } const style = { height: "68%" }
useEffect(() => { useEffect(() => {
// return () => { // return () => {
request('GET', '/search').then((success, failure) => { request('get', 'https://report.amap.com/ajax/districtRank.do?linksType=1&cityCode=360100')
console.log(success); // .set({ 'cookie': 'user_unique_id=a185bbc78215de5101823ec9f8455ff7; SESSION=781150e0-bd25-4431-b3ac-267bb49075fd; UM_distinctid=1823ec9ec89ce5-08fca33c64505f-76492e29-1fa400-1823ec9ec8a1447; CNZZDATA1256662931=1445129462-1658907884-https%253A%252F%252Freport.amap.com%252F%7C1658907884' })
}); .then((success, failure) => {
console.log(success, failure);
});
// }; // };
}, []) }, [])
return ( return (

49
web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js

@ -61,20 +61,41 @@ class ReactCarousel extends Component {
this.state.imgs.map((value, index) => { this.state.imgs.map((value, index) => {
return ( return (
<li style={{ position: "relative", left: "8%", width: "100%", height: "100%" }} className={index === this.state.showIndex ? 'show' : ''} <li style={{ position: "relative", left: "8%", width: "100%", height: "100%", top: "-5%", fontSize: "12px" }} className={index === this.state.showIndex ? 'show' : ''}
key={index} key={index}
> >
<div style={{ width: "40%", height: "40%", backgroundColor: "red", position: "absolute", left: "-3%", top: "3%" }}> <div style={{ width: "45%", height: "40%", backgroundColor: "red", position: "absolute", left: "-3%", top: "5%" }}>
{value[0]?.name} <div style={{ width: "100%", height: "100%", position: "absolute", top: "80%" }}>
<div style={{ width: "100%", height: "20%", backgroundColor: "rgba(0,0,0,0.6)", overflow: "hiddden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "6%", height: "80%", marginLeft: "3%", marginRight: "3%" }} />
{value[0]?.name}
</div>
</div>
</div> </div>
{value[1]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "#fff", position: "absolute", left: "45%", top: "3%" }}> {value[1]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "#fff", position: "absolute", left: "45%", top: "5%" }}>
{value[1]?.name} <div style={{ width: "100%", height: "100%", position: "absolute", top: "80%" }}>
<div style={{ width: "100%", height: "20%", backgroundColor: "rgba(0,0,0,0.6)", overflow: "hiddden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "6%", height: "80%", marginLeft: "3%", marginRight: "3%" }} />
{value[1]?.name}
</div>
</div>
</div> : ""} </div> : ""}
{value[2]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "bule", position: "absolute", left: "-3%", top: "50%" }}> {value[2]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "bule", position: "absolute", left: "-3%", top: "49%" }}>
{value[2]?.name} <div style={{ width: "100%", height: "100%", position: "absolute", top: "80%" }}>
<div style={{ width: "100%", height: "20%", backgroundColor: "rgba(0,0,0,0.6)", overflow: "hiddden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "6%", height: "80%", marginLeft: "3%", marginRight: "3%" }} />
{value[2]?.name}
</div>
</div>
</div> : ""} </div> : ""}
{value[3]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "pink", position: "absolute", left: "45%", top: "50%" }}> {value[3]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "pink", position: "absolute", left: "45%", top: "49%" }}>
{value[3]?.name} <div style={{ width: "100%", height: "100%", position: "absolute", top: "80%" }}>
<div style={{ width: "100%", height: "20%", backgroundColor: "rgba(0,0,0,0.6)", overflow: "hiddden", textOverflow: "ellipsis", whiteSpace: "nowrap" }}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "6%", height: "80%", marginLeft: "3%", marginRight: "3%" }} />
{value[3]?.name}
</div>
</div>
</div> : ""} </div> : ""}
{/* <div>{value[1].name}</div> {/* <div>{value[1].name}</div>
<div>{value[2].name}</div> <div>{value[2].name}</div>
@ -97,8 +118,12 @@ class ReactCarousel extends Component {
</ul> */} </ul> */}
<div className="control" style={{ width: "100%", height: "10%" }}> <div className="control" style={{ width: "100%", height: "10%" }}>
<span className="left" onClick={(e) => { this.previous(e) }}></span> <span style={{ position: "absolute", top: "86%", width: "3%", height: "8%" }} className="left" onClick={(e) => { this.previous(e) }}>
<span className="right" onClick={(e) => { this.next(e) }}></span> <img src='/assets/images/leadership/zuofanye.png' style={{ width: "100%", height: "100%" }} />
</span>
<span style={{ position: "absolute", top: "86%", width: "3%", height: "8%", right: "6%" }} className="right" onClick={(e) => { this.next(e) }}>
<img src='/assets/images/leadership/youofanye.png' style={{ width: "100%", height: "100%" }} />
</span>
</div> </div>
</div> </div>
</div> </div>
@ -119,7 +144,7 @@ class ReactCarousel extends Component {
let { timer } = this.state; let { timer } = this.state;
timer = setInterval(() => { timer = setInterval(() => {
this.next(); this.next();
}, 300000); }, 2000);
this.setState({ this.setState({
timer timer
}) })

8
web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js

@ -27,10 +27,10 @@ const Rightbottom = (props) => {
// console.log(beijing); // console.log(beijing);
}}> }}>
{beijing == index ? <img src='/assets/images/leadership/bei.png' style={{ width: "100%", height: "100%", position: "absolute" }} /> : ""} {beijing == index ? <img src='/assets/images/leadership/bei.png' style={{ width: "100%", height: "100%", position: "absolute" }} /> : ""}
<div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute" }}>{item.licensePlate}</div> <div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == index ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute" }}>{item.licensePlate}</div>
<div style={{ width: "10%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "30%" }}>{item.overrunRate ? item.overrunRate : "--"}</div> <div style={{ width: "10%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == index ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "30%" }}>{item.overrunRate ? item.overrunRate : "--"}</div>
<div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "40%" }}>{item.deductPoints ? "-" + item.deductPoints + "分" : ""}{item.deductPoints && item.fine ? "和" : ""}{item.fine ? "-" + item.fine + "元" : ""}{item.deductPoints || item.fine ? "" : "--"}</div> <div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == index ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "40%" }}>{item.deductPoints ? "-" + item.deductPoints + "分" : ""}{item.deductPoints && item.fine ? "和" : ""}{item.fine ? "-" + item.fine + "元" : ""}{item.deductPoints || item.fine ? "" : "--"}</div>
<div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "70%" }}>{item.processingTime ? item.processingTime : "--"}</div> <div style={{ width: "30%", height: "100%", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == index ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "70%" }}>{item.processingTime ? item.processingTime : "--"}</div>
</li> </li>
}) })

5
web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js

@ -73,9 +73,12 @@ const Righttop = () => {
return ( return (
<> <>
<Module style={style} title={"路面执法监控"}> <Module style={style} title={"路面执法监控"}>
<div style={{ width: "100%", height: "65%" }}> <div style={{ width: "100%", height: "65%", position: "relative" }}>
<p style={{ position: "absolute", left: "30%", top: "2%", fontSize: "14px", color: "#FFFFFF" }}>监控总数</p><p style={{ position: "absolute", left: "42%", fontSize: "24px", marginLeft: "1%", top: "-0.5%", color: "#FFFFFF", fontFamily: "YouSheBiaoTiHei" }}>129</p>
<p style={{ position: "absolute", left: "60%", top: "2%", fontSize: "14px", color: "#FFFFFF" }}>在线率</p><p style={{ position: "absolute", left: "68%", fontSize: "24px", marginLeft: "2%", top: "-0.5%", color: "#FFFFFF", fontFamily: "YouSheBiaoTiHei" }}>88.87%</p>
<div style={{ width: "100%", height: "10%", position: "relative" }}> <div style={{ width: "100%", height: "10%", position: "relative" }}>
<img src='/assets/images/leadership/head.png' style={{ width: "15%", marginLeft: "5%" }} /> <img src='/assets/images/leadership/head.png' style={{ width: "15%", marginLeft: "5%" }} />
<div className='wy-rightTop' style={{ position: "absolute", right: "5%", top: "130%" }}> <div className='wy-rightTop' style={{ position: "absolute", right: "5%", top: "130%" }}>
<Select <Select
size={size} size={size}

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

@ -45,23 +45,24 @@ export const ApiTable = {
//运政管理 //运政管理
getOperaTional: 'vehicle', getOperaTional: 'vehicle',putOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific', getSpecificVehicle: 'vehicle/specific',putSpecificVehicle: 'vehicle/specific',delSpecificVehicle: 'vehicle/{vehicleId}/specific',
getHouseholds: 'vehicle/business', getHouseholds: 'vehicle/business',putHouseholds: 'vehicle/business',delHouseholds: 'vehicle/business/{businessId}',
getRoadway: 'road', getRoadway: 'road',
// 获取运政统计 // 获取运政统计
getYunZheng: "transportation/statistic", getYunZheng: "transportation/statistic",
//桥梁管理 //桥梁管理
getBridge: 'bridge', getBridge:'bridge',
//工程数据 putBridge:'bridge',
getProject: 'project', delBridge:'bridge/{bridgeId}',
//桥梁管理 //工程数据
getBridge: 'bridge', getProject:'project',
putBridge: 'bridge', putProject:'project',
//工程数据 delProject:'project/{projectId}',
getProject: 'project', //道路数据
putProject: 'project', getRoadway: 'road',
putRoadway: 'road',
delRoadway:'road/{roadId}',
//道路统计 //道路统计
getBgroadstatistics: "build/road_state", getBgroadstatistics: "build/road_state",
@ -79,13 +80,24 @@ export const ApiTable = {
getBusTier: '/operation/car_level', getBusTier: '/operation/car_level',
//获取路政列表 //获取路政列表
getHighways: 'road_manage', getHighways: 'road_manage',putHighways: 'road_manage',
//获取道路养护统计及列表 //获取道路养护统计及列表
getRoadMaintenance: 'conserve/statistic', getRoadMaintenance: 'conserve/statistic',
//获取宣传数据 //获取宣传数据
getpropagata: 'publicity', getpropagata: 'publicity',
//公交信息
getCircuit:'bus/line',putCircuit:'bus/line',delCircuit:'bus/line/{lineId}',
getVehicle:'bus/car',putVehicle:'bus/car',delVehicle:'bus/car/{carId}',
//治超管理
getPurchase:'overspeed',
putPurchase:'overspeed',
delPurchase:'overspeed/{overspeedId}',
}; };

645
web/log/development.txt

@ -20324,4 +20324,649 @@
' at processTicksAndRejections (internal/process/task_queues.js:84:21)' ' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
} }
>>>>>>> Stashed changes >>>>>>> Stashed changes
<<<<<<< Updated upstream
>>>>>>> 385f017aeac33adc39a31e75faf6254a1a881d16 >>>>>>> 385f017aeac33adc39a31e75faf6254a1a881d16
=======
2022-07-26 10:36:17.862 - debug: [FS-LOGGER] Init.
2022-07-26 14:17:07.892 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/department?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/operational',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:08.280 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/vehicle?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/operational',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:10.564 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/vehicle/specific?token=3de82f98-253d-4ebd-a444-eff69920459b&%E5%87%BA%E7%A7%9F%E8%BD%A6',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/operational',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:12.386 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/bridge?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/bridge',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:33.973 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/department?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/bridge',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:34.427 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/bridge?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/bridge',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:17:37.083 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/road?token=3de82f98-253d-4ebd-a444-eff69920459b&level=%E5%8E%BF',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/transportation',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:19:12.817 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/department?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/transportation',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 14:19:13.254 - error: [FS-ERRHD]
{
message: 'Error: connect ETIMEDOUT 10.8.30.7:14000',
name: 'RequestError',
cause: {
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: '10.8.30.7',
port: 14000
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/road?token=3de82f98-253d-4ebd-a444-eff69920459b&level=%E5%8E%BF',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/transportation',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ETIMEDOUT 10.8.30.7:14000\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 16:47:41.611 - error: [FS-ERRHD]
{
message: 'Error: read ECONNRESET',
name: 'RequestError',
cause: { errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' },
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/road?token=3de82f98-253d-4ebd-a444-eff69920459b&level=%E5%8E%BF',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/transportation',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: read ECONNRESET\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-26 16:47:41.616 - error: [FS-ERRHD]
{
message: 'Error: read ECONNRESET',
name: 'RequestError',
cause: { errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' },
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://10.8.30.7:14000/road?token=3de82f98-253d-4ebd-a444-eff69920459b',
headers: {
host: '10.8.30.7:14000',
connection: 'keep-alive',
'content-length': '83',
'sec-ch-ua': '".Not/A)Brand";v="99", "Google Chrome";v="103", "Chromium";v="103"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36',
'content-type': 'application/json',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
token: '3de82f98-253d-4ebd-a444-eff69920459b',
'sec-ch-ua-platform': '"Windows"',
expires: '-1',
accept: '*/*',
origin: 'http://localhost:5000',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5000/fillion/transportation',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'PUT',
body: '{"routeName":"1","routeCode":"1111","sectionNo":"4444","level":"县","roadId":3275}',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: read ECONNRESET\n' +
' at new RequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\Administrator\\Desktop\\项目\\sihao\\Highways4Good\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2022-07-27 11:00:11.991 - debug: [FS-LOGGER] Init.
>>>>>>> Stashed changes

2
web/package.json

@ -68,7 +68,7 @@
"@antv/g6": "^4.2.5", "@antv/g6": "^4.2.5",
"@fs/attachment": "^1.0.0", "@fs/attachment": "^1.0.0",
"@peace/components": "0.0.35", "@peace/components": "0.0.35",
"@peace/utils": "^0.0.51", "@peace/utils": "0.0.51",
"antd": "^4.19.2", "antd": "^4.19.2",
"antd-theme-generator": "^1.2.8", "antd-theme-generator": "^1.2.8",
"args": "^5.0.1", "args": "^5.0.1",

Loading…
Cancel
Save