Browse Source

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

release_0.0.4
wanyiwei 2 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';
// const { simpleExcelDown } = require('../../../../utils/xlsxDownload');
const fs = require('fs');
const xlsxDownload = require('../../../../utils/xlsxDownload.js');
const moment = require('moment');
async function dataExport (ctx) {
try {
// const models = ctx.fs.dc.models;
// const { userId } = ctx.fs.api
// const { ids } = ctx.query;
const models = ctx.fs.dc.models;
const { userId } = ctx.fs.api
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 = [
// {
// n: '道路',
// tableName: 'road',
// defaultKey: ['level'],
// defaultValue: ['村'],
// },
// {
// n: '道路',
// tableName: 'road',
// defaultKey: ['level'],
// 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',
// },
// ]
let findOption = {
where: {}
}
if (ids) {
findOption.where.id = { $in: ids.split(',') }
}
if (roadLevel) {
findOption.where.level = roadLevel
}
if (municipalType) {
findOption.where.type = municipalType
}
// const exportData = await models.BusCar.destroy({
// where: {
// id: { $in: ids.split(',') }
// }
// })
const exportData = await models[modalOption.tableName].findAll(findOption)
const tableAttributes = models[modalOption.tableName].tableAttributes
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 filePath = await simpleExcelDown({ data: exportData, header, fileName: fileName })
// const fileData = fs.readFileSync(filePath);
const fileName = `${modalOption.n}_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
const filePath = await xlsxDownload.simpleExcelDown({ data: exportData, header, fileName: fileName })
const fileData = fs.readFileSync(filePath);
// ctx.status = 200;
// ctx.set('Content-Type', 'application/x-xls');
// ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
// ctx.body = fileData;
ctx.status = 200;
ctx.set('Content-Type', 'application/x-xls');
ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
ctx.body = fileData;
} catch (error) {
// ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
// ctx.status = 400;
// ctx.body = {
// message: typeof error == 'string' ? error : undefined
// }
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
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;
if (!data.vehicleId) {
const vehicleRes = await models.Vehicle.create(data)
const vehicleRes = await models.MunicipalVehicle.create(data)
} else {
const vehicleRes = await models.Vehicle.update(data, {
const vehicleRes = await models.MunicipalVehicle.update(data, {
where: {
id: data.vehicleId
}
@ -139,7 +139,7 @@ async function specificDel (ctx) {
const models = ctx.fs.dc.models;
const { vehicleId } = ctx.params;
const vehicleRes = await models.Vehicle.destroy({
const vehicleRes = await models.MunicipalVehicle.destroy({
where: {
id: vehicleId
}

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

@ -1,15 +1,15 @@
'use strict';
const { QueryTypes } = require('sequelize');
async function reportList (ctx) {
async function reportList(ctx) {
try {
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 = {
where: {
},
attributes: ['id', 'road', 'time', 'projectType', 'roadSectionStart', 'roadSectionEnd', 'reportType', 'content', 'longitude','latitude'],
attributes: ['id', 'road', 'time', 'projectType', 'roadSectionStart', 'roadSectionEnd', 'reportType', 'content', 'longitude', 'latitude'],
include: [{
model: models.User,
attributes: ['name']
@ -39,7 +39,15 @@ async function reportList (ctx) {
if (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.body = reportRes
@ -52,7 +60,7 @@ async function reportList (ctx) {
}
}
async function reportPosition (ctx) {
async function reportPosition(ctx) {
try {
const models = ctx.fs.dc.models;
const { startTime, endTime, userId, reportType } = ctx.query
@ -102,7 +110,7 @@ async function reportPosition (ctx) {
}
}
async function reportDetail (ctx) {
async function reportDetail(ctx) {
try {
const models = ctx.fs.dc.models;
const { reportId } = ctx.params
@ -124,7 +132,7 @@ async function reportDetail (ctx) {
}
}
async function createReport (ctx) {
async function createReport(ctx) {
try {
const { userId } = ctx.fs.api
const models = ctx.fs.dc.models;
@ -146,7 +154,7 @@ async function createReport (ctx) {
}
}
async function deleteReport (ctx) {
async function deleteReport(ctx) {
try {
const models = ctx.fs.dc.models;
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const BusLine = sequelize.define("busLine", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "bus_line_id_uindex"
},
company: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "公司",
primaryKey: false,
field: "company",
autoIncrement: false
},
fleet: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车队",
primaryKey: false,
field: "fleet",
autoIncrement: false
},
carCaptain: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车队长",
primaryKey: false,
field: "car_captain",
autoIncrement: false
},
assistantCarCaptain: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "副车队长",
primaryKey: false,
field: "assistant_car_captain",
autoIncrement: false
},
officeLocation: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "办公地点",
primaryKey: false,
field: "office_location",
autoIncrement: false
},
lineName: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路名称",
primaryKey: false,
field: "line_name",
autoIncrement: false
},
lineType: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路类型",
primaryKey: false,
field: "line_type",
autoIncrement: false
},
lineDivision: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路划分",
primaryKey: false,
field: "line_division",
autoIncrement: false
},
gpsNumber: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "GPS编号",
primaryKey: false,
field: "gps_number",
autoIncrement: false
},
startingPointEndPoint: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "起点终点",
primaryKey: false,
field: "starting_point_end_point",
autoIncrement: false
},
numberOfVehicles: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆数",
primaryKey: false,
field: "number_of_vehicles",
autoIncrement: false
},
totalKilometers: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "全程公里数",
primaryKey: false,
field: "total_kilometers",
autoIncrement: false
},
ticketPrice: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "票价",
primaryKey: false,
field: "ticket_price",
autoIncrement: false
},
openingTime: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开通时间",
primaryKey: false,
field: "opening_time",
autoIncrement: false
},
runningTime: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运行时间",
primaryKey: false,
field: "running_time",
autoIncrement: false
},
openingTimeSummer: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开班时间夏令",
primaryKey: false,
field: "opening_time_summer",
autoIncrement: false
},
shiftClosingTimeSummer: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "收班时间夏令",
primaryKey: false,
field: "shift_closing_time_summer",
autoIncrement: false
},
openingTimeWinter: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开班时间冬令",
primaryKey: false,
field: "opening_time_winter",
autoIncrement: false
},
shiftClosingTimeWinter: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "收班时间冬令",
primaryKey: false,
field: "shift_closing_time_winter",
autoIncrement: false
},
uplinkOfStationsAlongTheWay: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "沿途站点上行",
primaryKey: false,
field: "uplink_of_stations_along_the_way",
autoIncrement: false
},
downlinkOfStationsAlongTheWay: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "沿途站点下行",
primaryKey: false,
field: "downlink_of_stations_along_the_way",
autoIncrement: false
},
area: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "所属区域",
primaryKey: false,
field: "area",
autoIncrement: false
},
remarks: {
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;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const BusLine = sequelize.define("busLine", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "bus_line_id_uindex"
},
company: {
index: 2,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "公司",
primaryKey: false,
field: "company",
autoIncrement: false
},
fleet: {
index: 3,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车队",
primaryKey: false,
field: "fleet",
autoIncrement: false
},
carCaptain: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车队长",
primaryKey: false,
field: "car_captain",
autoIncrement: false
},
assistantCarCaptain: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "副车队长",
primaryKey: false,
field: "assistant_car_captain",
autoIncrement: false
},
officeLocation: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "办公地点",
primaryKey: false,
field: "office_location",
autoIncrement: false
},
lineName: {
index: 7,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路名称",
primaryKey: false,
field: "line_name",
autoIncrement: false
},
lineType: {
index: 8,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路类型",
primaryKey: false,
field: "line_type",
autoIncrement: false
},
lineDivision: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "线路划分",
primaryKey: false,
field: "line_division",
autoIncrement: false
},
gpsNumber: {
index: 10,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "GPS编号",
primaryKey: false,
field: "gps_number",
autoIncrement: false
},
startingPointEndPoint: {
index: 11,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "起点终点",
primaryKey: false,
field: "starting_point_end_point",
autoIncrement: false
},
numberOfVehicles: {
index: 12,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆数",
primaryKey: false,
field: "number_of_vehicles",
autoIncrement: false
},
totalKilometers: {
index: 13,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "全程公里数",
primaryKey: false,
field: "total_kilometers",
autoIncrement: false
},
ticketPrice: {
index: 14,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "票价",
primaryKey: false,
field: "ticket_price",
autoIncrement: false
},
openingTime: {
index: 15,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开通时间",
primaryKey: false,
field: "opening_time",
autoIncrement: false
},
runningTime: {
index: 16,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运行时间",
primaryKey: false,
field: "running_time",
autoIncrement: false
},
openingTimeSummer: {
index: 17,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开班时间夏令",
primaryKey: false,
field: "opening_time_summer",
autoIncrement: false
},
shiftClosingTimeSummer: {
index: 18,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "收班时间夏令",
primaryKey: false,
field: "shift_closing_time_summer",
autoIncrement: false
},
openingTimeWinter: {
index: 19,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "开班时间冬令",
primaryKey: false,
field: "opening_time_winter",
autoIncrement: false
},
shiftClosingTimeWinter: {
index: 20,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "收班时间冬令",
primaryKey: false,
field: "shift_closing_time_winter",
autoIncrement: false
},
uplinkOfStationsAlongTheWay: {
index: 21,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "沿途站点上行",
primaryKey: false,
field: "uplink_of_stations_along_the_way",
autoIncrement: false
},
downlinkOfStationsAlongTheWay: {
index: 22,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "沿途站点下行",
primaryKey: false,
field: "downlink_of_stations_along_the_way",
autoIncrement: false
},
area: {
index: 23,
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const MunicipalBusiness = sequelize.define("municipalBusiness", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "municipal_business_id_uindex"
},
nameOfBusinessOwner: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
productName: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "品名",
primaryKey: false,
field: "product_name",
autoIncrement: false
},
creditSocialCode: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "信用社会代码",
primaryKey: false,
field: "credit_social_code",
autoIncrement: false
},
administrativeDivision: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "行政区划",
primaryKey: false,
field: "administrative_division",
autoIncrement: false
},
economicNature: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经济性质",
primaryKey: false,
field: "economic_nature",
autoIncrement: false
},
address: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "地址",
primaryKey: false,
field: "address",
autoIncrement: false
},
contactNumber: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "联系电话",
primaryKey: false,
field: "contact_number",
autoIncrement: false
},
email: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "电子邮箱",
primaryKey: false,
field: "email",
autoIncrement: false
},
legalRepresentative: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法定代表人",
primaryKey: false,
field: "legal_representative",
autoIncrement: false
},
typeOfLegalPersonCertificate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法人证件类型",
primaryKey: false,
field: "type_of_legal_person_certificate",
autoIncrement: false
},
natureOfTransportation: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运输性质",
primaryKey: false,
field: "nature_of_transportation",
autoIncrement: false
},
legalPersonCertificateNumber: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法人证件号码",
primaryKey: false,
field: "legal_person_certificate_number",
autoIncrement: false
},
telephoneNumberOfLegalRepresentative: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法定代表人电话",
primaryKey: false,
field: "telephone_number_of_legal_representative",
autoIncrement: false
},
nameOfThePersonInChargeOfTheBusiness: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户负责人姓名",
primaryKey: false,
field: "name_of_the_person_in_charge_of_the_business",
autoIncrement: false
},
telephoneNumberOfThePersonInChargeOfTheBusiness: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户负责人电话号码",
primaryKey: false,
field: "telephone_number_of_the_person_in_charge_of_the_business",
autoIncrement: false
},
handledBy: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经办人",
primaryKey: false,
field: "handled_by",
autoIncrement: false
},
phoneNumberOfHandler: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经办人电话",
primaryKey: false,
field: "phone_number_of_handler",
autoIncrement: false
},
natureOfBusiness: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营范围",
primaryKey: false,
field: "nature_of_business",
autoIncrement: false
},
businessStatus: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营状态",
primaryKey: false,
field: "business_status",
autoIncrement: false
},
businessLicenseNo: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营许可证号",
primaryKey: false,
field: "business_license_no",
autoIncrement: false
},
fromTheExpiryDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期起",
primaryKey: false,
field: "from_the_expiry_date",
autoIncrement: false
},
expiryDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期止",
primaryKey: false,
field: "expiry_date",
autoIncrement: false
},
issuingAuthority: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发证机构",
primaryKey: false,
field: "issuing_authority",
autoIncrement: false
},
dateOfIssuance: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核发日期",
primaryKey: false,
field: "date_of_issuance",
autoIncrement: false
},
licenseCategory: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "证照类别",
primaryKey: false,
field: "license_category",
autoIncrement: false
},
licenseIssuanceType: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "证照发放类型",
primaryKey: false,
field: "license_issuance_type",
autoIncrement: false
},
numberOfSharedVehicles: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "共有车辆数",
primaryKey: false,
field: "number_of_shared_vehicles",
autoIncrement: false
},
creationDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "创建日期",
primaryKey: false,
field: "creation_date",
autoIncrement: false
},
type: {
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;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const MunicipalBusiness = sequelize.define("municipalBusiness", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "municipal_business_id_uindex"
},
nameOfBusinessOwner: {
index: 2,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
productName: {
index: 3,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "品名",
primaryKey: false,
field: "product_name",
autoIncrement: false
},
creditSocialCode: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "信用社会代码",
primaryKey: false,
field: "credit_social_code",
autoIncrement: false
},
administrativeDivision: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "行政区划",
primaryKey: false,
field: "administrative_division",
autoIncrement: false
},
economicNature: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经济性质",
primaryKey: false,
field: "economic_nature",
autoIncrement: false
},
address: {
index: 7,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "地址",
primaryKey: false,
field: "address",
autoIncrement: false
},
contactNumber: {
index: 8,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "联系电话",
primaryKey: false,
field: "contact_number",
autoIncrement: false
},
email: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "电子邮箱",
primaryKey: false,
field: "email",
autoIncrement: false
},
legalRepresentative: {
index: 10,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法定代表人",
primaryKey: false,
field: "legal_representative",
autoIncrement: false
},
typeOfLegalPersonCertificate: {
index: 11,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法人证件类型",
primaryKey: false,
field: "type_of_legal_person_certificate",
autoIncrement: false
},
natureOfTransportation: {
index: 12,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运输性质",
primaryKey: false,
field: "nature_of_transportation",
autoIncrement: false
},
legalPersonCertificateNumber: {
index: 13,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法人证件号码",
primaryKey: false,
field: "legal_person_certificate_number",
autoIncrement: false
},
telephoneNumberOfLegalRepresentative: {
index: 14,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "法定代表人电话",
primaryKey: false,
field: "telephone_number_of_legal_representative",
autoIncrement: false
},
nameOfThePersonInChargeOfTheBusiness: {
index: 15,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户负责人姓名",
primaryKey: false,
field: "name_of_the_person_in_charge_of_the_business",
autoIncrement: false
},
telephoneNumberOfThePersonInChargeOfTheBusiness: {
index: 16,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户负责人电话号码",
primaryKey: false,
field: "telephone_number_of_the_person_in_charge_of_the_business",
autoIncrement: false
},
handledBy: {
index: 17,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经办人",
primaryKey: false,
field: "handled_by",
autoIncrement: false
},
phoneNumberOfHandler: {
index: 18,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经办人电话",
primaryKey: false,
field: "phone_number_of_handler",
autoIncrement: false
},
natureOfBusiness: {
index: 19,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营范围",
primaryKey: false,
field: "nature_of_business",
autoIncrement: false
},
businessStatus: {
index: 20,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营状态",
primaryKey: false,
field: "business_status",
autoIncrement: false
},
businessLicenseNo: {
index: 21,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营许可证号",
primaryKey: false,
field: "business_license_no",
autoIncrement: false
},
fromTheExpiryDate: {
index: 22,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期起",
primaryKey: false,
field: "from_the_expiry_date",
autoIncrement: false
},
expiryDate: {
index: 23,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期止",
primaryKey: false,
field: "expiry_date",
autoIncrement: false
},
issuingAuthority: {
index: 24,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发证机构",
primaryKey: false,
field: "issuing_authority",
autoIncrement: false
},
dateOfIssuance: {
index: 25,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核发日期",
primaryKey: false,
field: "date_of_issuance",
autoIncrement: false
},
licenseCategory: {
index: 26,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "证照类别",
primaryKey: false,
field: "license_category",
autoIncrement: false
},
licenseIssuanceType: {
index: 27,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "证照发放类型",
primaryKey: false,
field: "license_issuance_type",
autoIncrement: false
},
numberOfSharedVehicles: {
index: 28,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "共有车辆数",
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const MunicipalVehicle = sequelize.define("municipalVehicle", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "municipal_vehicle_id_uindex"
},
nameOfBusinessOwner: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
productName: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "品名",
primaryKey: false,
field: "product_name",
autoIncrement: false
},
vehicleRegistry: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车籍地",
primaryKey: false,
field: "vehicle_registry",
autoIncrement: false
},
licensePlateNumber: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌号",
primaryKey: false,
field: "license_plate_number",
autoIncrement: false
},
fuelType: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "燃料类型",
primaryKey: false,
field: "fuel_type",
autoIncrement: false
},
address: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "住址",
primaryKey: false,
field: "address",
autoIncrement: false
},
economicNature: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经济性质",
primaryKey: false,
field: "economic_nature",
autoIncrement: false
},
approvedPassengerCapacity: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核定载客位数",
primaryKey: false,
field: "approved_passenger_capacity",
autoIncrement: false
},
approvedLoadMass: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核定载质量",
primaryKey: false,
field: "approved_load_mass",
autoIncrement: false
},
numberOfVehicleAxles: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车轴数",
primaryKey: false,
field: "number_of_vehicle_axles",
autoIncrement: false
},
vehicleBrand: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆厂牌",
primaryKey: false,
field: "vehicle_brand",
autoIncrement: false
},
natureOfBusiness: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营范围",
primaryKey: false,
field: "nature_of_business",
autoIncrement: false
},
vehicleOperationStatus: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆营运状态",
primaryKey: false,
field: "vehicle_operation_status",
autoIncrement: false
},
busTypeAndClass: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "客车类型与等级",
primaryKey: false,
field: "bus_type_and_class",
autoIncrement: false
},
annualReviewResults: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "年审结果",
primaryKey: false,
field: "annual_review_results",
autoIncrement: false
},
dateOfThisAnnualReview: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "本次年审日期",
primaryKey: false,
field: "date_of_this_annual_review",
autoIncrement: false
},
dateOfNextAnnualReview: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "下次年审日期",
primaryKey: false,
field: "date_of_next_annual_review",
autoIncrement: false
},
dateOfRegistration: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "注册登记日期",
primaryKey: false,
field: "date_of_registration",
autoIncrement: false
},
sourceOfTransportationCapacity: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运力来源",
primaryKey: false,
field: "source_of_transportation_capacity",
autoIncrement: false
},
fromTheExpiryDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期起",
primaryKey: false,
field: "from_the_expiry_date",
autoIncrement: false
},
expiryDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期止",
primaryKey: false,
field: "expiry_date",
autoIncrement: false
},
engineDisplacement: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发动机排量",
primaryKey: false,
field: "engine_displacement",
autoIncrement: false
},
engineNumber: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发动机号",
primaryKey: false,
field: "engine_number",
autoIncrement: false
},
vehicleEnginePower: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆发动机功率",
primaryKey: false,
field: "vehicle_engine_power",
autoIncrement: false
},
businessLicenseNo: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营许可证号",
primaryKey: false,
field: "business_license_no",
autoIncrement: false
},
licensePlateColor: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌颜色",
primaryKey: false,
field: "license_plate_color",
autoIncrement: false
},
totalVehicleMass: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆总质量",
primaryKey: false,
field: "total_vehicle_mass",
autoIncrement: false
},
totalQuasiTractionMassOfVehicle: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆准牵引总质量",
primaryKey: false,
field: "total_quasi_traction_mass_of_vehicle",
autoIncrement: false
},
roadTransportCertificateNo: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "道路运输证号",
primaryKey: false,
field: "road_transport_certificate_no",
autoIncrement: false
},
vehicleHeight: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车高",
primaryKey: false,
field: "vehicle_height",
autoIncrement: false
},
vehicleConductor: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车长",
primaryKey: false,
field: "vehicle_conductor",
autoIncrement: false
},
vehicleWidth: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车宽",
primaryKey: false,
field: "vehicle_width",
autoIncrement: false
},
vehicleType: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆类型",
primaryKey: false,
field: "vehicle_type",
autoIncrement: false
},
vehicleTypeWithDrivingLicense: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "行驶证车辆类型",
primaryKey: false,
field: "vehicle_type_with_driving_license",
autoIncrement: false
},
vehicleWheelbase: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆轴距",
primaryKey: false,
field: "vehicle_wheelbase",
autoIncrement: false
},
ratingDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "等级评定日期",
primaryKey: false,
field: "rating_date",
autoIncrement: false
},
technicalEvaluationGrade: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "技术评定等级",
primaryKey: false,
field: "technical_evaluation_grade",
autoIncrement: false
},
nextRatingDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "下次等级评定日期",
primaryKey: false,
field: "next_rating_date",
autoIncrement: false
},
creationDate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "创建日期",
primaryKey: false,
field: "creation_date",
autoIncrement: false
},
type: {
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;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const MunicipalVehicle = sequelize.define("municipalVehicle", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "municipal_vehicle_id_uindex"
},
nameOfBusinessOwner: {
index: 2,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
productName: {
index: 3,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "品名",
primaryKey: false,
field: "product_name",
autoIncrement: false
},
vehicleRegistry: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车籍地",
primaryKey: false,
field: "vehicle_registry",
autoIncrement: false
},
licensePlateNumber: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌号",
primaryKey: false,
field: "license_plate_number",
autoIncrement: false
},
fuelType: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "燃料类型",
primaryKey: false,
field: "fuel_type",
autoIncrement: false
},
address: {
index: 7,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "住址",
primaryKey: false,
field: "address",
autoIncrement: false
},
economicNature: {
index: 8,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经济性质",
primaryKey: false,
field: "economic_nature",
autoIncrement: false
},
approvedPassengerCapacity: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核定载客位数",
primaryKey: false,
field: "approved_passenger_capacity",
autoIncrement: false
},
approvedLoadMass: {
index: 10,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "核定载质量",
primaryKey: false,
field: "approved_load_mass",
autoIncrement: false
},
numberOfVehicleAxles: {
index: 11,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车轴数",
primaryKey: false,
field: "number_of_vehicle_axles",
autoIncrement: false
},
vehicleBrand: {
index: 12,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆厂牌",
primaryKey: false,
field: "vehicle_brand",
autoIncrement: false
},
natureOfBusiness: {
index: 13,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营范围",
primaryKey: false,
field: "nature_of_business",
autoIncrement: false
},
vehicleOperationStatus: {
index: 14,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆营运状态",
primaryKey: false,
field: "vehicle_operation_status",
autoIncrement: false
},
busTypeAndClass: {
index: 15,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "客车类型与等级",
primaryKey: false,
field: "bus_type_and_class",
autoIncrement: false
},
annualReviewResults: {
index: 16,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "年审结果",
primaryKey: false,
field: "annual_review_results",
autoIncrement: false
},
dateOfThisAnnualReview: {
index: 17,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "本次年审日期",
primaryKey: false,
field: "date_of_this_annual_review",
autoIncrement: false
},
dateOfNextAnnualReview: {
index: 18,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "下次年审日期",
primaryKey: false,
field: "date_of_next_annual_review",
autoIncrement: false
},
dateOfRegistration: {
index: 19,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "注册登记日期",
primaryKey: false,
field: "date_of_registration",
autoIncrement: false
},
sourceOfTransportationCapacity: {
index: 20,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "运力来源",
primaryKey: false,
field: "source_of_transportation_capacity",
autoIncrement: false
},
fromTheExpiryDate: {
index: 21,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期起",
primaryKey: false,
field: "from_the_expiry_date",
autoIncrement: false
},
expiryDate: {
index: 22,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "有效期止",
primaryKey: false,
field: "expiry_date",
autoIncrement: false
},
engineDisplacement: {
index: 23,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发动机排量",
primaryKey: false,
field: "engine_displacement",
autoIncrement: false
},
engineNumber: {
index: 24,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "发动机号",
primaryKey: false,
field: "engine_number",
autoIncrement: false
},
vehicleEnginePower: {
index: 25,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆发动机功率",
primaryKey: false,
field: "vehicle_engine_power",
autoIncrement: false
},
businessLicenseNo: {
index: 26,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营许可证号",
primaryKey: false,
field: "business_license_no",
autoIncrement: false
},
licensePlateColor: {
index: 27,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌颜色",
primaryKey: false,
field: "license_plate_color",
autoIncrement: false
},
totalVehicleMass: {
index: 28,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆总质量",
primaryKey: false,
field: "total_vehicle_mass",
autoIncrement: false
},
totalQuasiTractionMassOfVehicle: {
index: 29,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆准牵引总质量",
primaryKey: false,
field: "total_quasi_traction_mass_of_vehicle",
autoIncrement: false
},
roadTransportCertificateNo: {
index: 30,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "道路运输证号",
primaryKey: false,
field: "road_transport_certificate_no",
autoIncrement: false
},
vehicleHeight: {
index: 31,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车高",
primaryKey: false,
field: "vehicle_height",
autoIncrement: false
},
vehicleConductor: {
index: 32,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车长",
primaryKey: false,
field: "vehicle_conductor",
autoIncrement: false
},
vehicleWidth: {
index: 33,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆车宽",
primaryKey: false,
field: "vehicle_width",
autoIncrement: false
},
vehicleType: {
index: 34,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆类型",
primaryKey: false,
field: "vehicle_type",
autoIncrement: false
},
vehicleTypeWithDrivingLicense: {
index: 35,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "行驶证车辆类型",
primaryKey: false,
field: "vehicle_type_with_driving_license",
autoIncrement: false
},
vehicleWheelbase: {
index: 36,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车辆轴距",
primaryKey: false,
field: "vehicle_wheelbase",
autoIncrement: false
},
ratingDate: {
index: 37,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "等级评定日期",
primaryKey: false,
field: "rating_date",
autoIncrement: false
},
technicalEvaluationGrade: {
index: 38,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Overspeed = sequelize.define("overspeed", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "overspeed_id_uindex"
},
districtcounty: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "区/县",
primaryKey: false,
field: "districtcounty",
autoIncrement: false
},
nameOfInspectionPoint: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "检测点名称",
primaryKey: false,
field: "name_of_inspection_point",
autoIncrement: false
},
licensePlate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌号码",
primaryKey: false,
field: "license_plate",
autoIncrement: false
},
numberOfAxles: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车轴数",
primaryKey: false,
field: "number_of_axles",
autoIncrement: false
},
overrunRate: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "超限率",
primaryKey: false,
field: "overrun_rate",
autoIncrement: false
},
overrunWeight: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "超限重量",
primaryKey: false,
field: "overrun_weight",
autoIncrement: false
},
grossVehicleWeight: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车货总重",
primaryKey: false,
field: "gross_vehicle_weight",
autoIncrement: false
},
vehicleCargoWeightLimit: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车货限重",
primaryKey: false,
field: "vehicle_cargo_weight_limit",
autoIncrement: false
},
testTime: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "检测时间",
primaryKey: false,
field: "test_time",
autoIncrement: false
},
nameOfBusinessOwner: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
businessAddress: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户地址",
primaryKey: false,
field: "business_address",
autoIncrement: false
},
notifier: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知人",
primaryKey: false,
field: "notifier",
autoIncrement: false
},
notificationMethod: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知方式",
primaryKey: false,
field: "notification_method",
autoIncrement: false
},
notificationResults: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知结果",
primaryKey: false,
field: "notification_results",
autoIncrement: false
},
processingTime: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "处理时间",
primaryKey: false,
field: "processing_time",
autoIncrement: false
},
deductPoints: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "扣分",
primaryKey: false,
field: "deduct_points",
autoIncrement: false
},
fine: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "罚款",
primaryKey: false,
field: "fine",
autoIncrement: false
},
remarks: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "备注",
primaryKey: false,
field: "remarks",
autoIncrement: false
}
}, {
tableName: "overspeed",
comment: "",
indexes: []
});
dc.models.Overspeed = Overspeed;
return Overspeed;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Overspeed = sequelize.define("overspeed", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "overspeed_id_uindex"
},
districtcounty: {
index: 2,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "区/县",
primaryKey: false,
field: "districtcounty",
autoIncrement: false
},
nameOfInspectionPoint: {
index: 3,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "检测点名称",
primaryKey: false,
field: "name_of_inspection_point",
autoIncrement: false
},
licensePlate: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车牌号码",
primaryKey: false,
field: "license_plate",
autoIncrement: false
},
numberOfAxles: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车轴数",
primaryKey: false,
field: "number_of_axles",
autoIncrement: false
},
overrunRate: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "超限率",
primaryKey: false,
field: "overrun_rate",
autoIncrement: false
},
overrunWeight: {
index: 7,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "超限重量",
primaryKey: false,
field: "overrun_weight",
autoIncrement: false
},
grossVehicleWeight: {
index: 8,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车货总重",
primaryKey: false,
field: "gross_vehicle_weight",
autoIncrement: false
},
vehicleCargoWeightLimit: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "车货限重",
primaryKey: false,
field: "vehicle_cargo_weight_limit",
autoIncrement: false
},
testTime: {
index: 10,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "检测时间",
primaryKey: false,
field: "test_time",
autoIncrement: false
},
nameOfBusinessOwner: {
index: 11,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户名称",
primaryKey: false,
field: "name_of_business_owner",
autoIncrement: false
},
businessAddress: {
index: 12,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "经营业户地址",
primaryKey: false,
field: "business_address",
autoIncrement: false
},
notifier: {
index: 13,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知人",
primaryKey: false,
field: "notifier",
autoIncrement: false
},
notificationMethod: {
index: 14,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知方式",
primaryKey: false,
field: "notification_method",
autoIncrement: false
},
notificationResults: {
index: 15,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "通知结果",
primaryKey: false,
field: "notification_results",
autoIncrement: false
},
processingTime: {
index: 16,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "处理时间",
primaryKey: false,
field: "processing_time",
autoIncrement: false
},
deductPoints: {
index: 17,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "扣分",
primaryKey: false,
field: "deduct_points",
autoIncrement: false
},
fine: {
index: 18,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "罚款",
primaryKey: false,
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Project = sequelize.define("project", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "project_id_uindex"
},
entryName: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "项目名称",
primaryKey: false,
field: "entry_name",
autoIncrement: false
},
projectMileage: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "工程里程",
primaryKey: false,
field: "project_mileage",
autoIncrement: false
},
investment: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "投资",
primaryKey: false,
field: "investment",
autoIncrement: false
},
buildUnit: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "建设单位",
primaryKey: false,
field: "build_unit",
autoIncrement: false
},
constructionControlUnit: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "监理单位",
primaryKey: false,
field: "construction_control_unit",
autoIncrement: false
},
designUnit: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "设计单位",
primaryKey: false,
field: "design_unit",
autoIncrement: false
},
constructionUnit: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "施工单位",
primaryKey: false,
field: "construction_unit",
autoIncrement: false
},
supervisorAndSupervisor: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "监督负责人及监督人员",
primaryKey: false,
field: "supervisor_and_supervisor",
autoIncrement: false
},
projectProgress: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "项目进展情况",
primaryKey: false,
field: "project_progress",
autoIncrement: false
},
done: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "done",
autoIncrement: false
},
type: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: "类型 道路:road / 桥梁:bridge",
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "project",
comment: "",
indexes: []
});
dc.models.Project = Project;
return Project;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Project = sequelize.define("project", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "project_id_uindex"
},
entryName: {
index: 2,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "项目名称",
primaryKey: false,
field: "entry_name",
autoIncrement: false
},
projectMileage: {
index: 3,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "工程里程",
primaryKey: false,
field: "project_mileage",
autoIncrement: false
},
investment: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "投资",
primaryKey: false,
field: "investment",
autoIncrement: false
},
buildUnit: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "建设单位",
primaryKey: false,
field: "build_unit",
autoIncrement: false
},
constructionControlUnit: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "监理单位",
primaryKey: false,
field: "construction_control_unit",
autoIncrement: false
},
designUnit: {
index: 7,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "设计单位",
primaryKey: false,
field: "design_unit",
autoIncrement: false
},
constructionUnit: {
index: 8,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "施工单位",
primaryKey: false,
field: "construction_unit",
autoIncrement: false
},
supervisorAndSupervisor: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "监督负责人及监督人员",
primaryKey: false,
field: "supervisor_and_supervisor",
autoIncrement: false
},
projectProgress: {
index: 10,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "项目进展情况",
primaryKey: false,
field: "project_progress",
autoIncrement: false
},
done: {
index: 11,
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "done",
autoIncrement: false
},
type: {
index: 12,
type: DataTypes.STRING,
allowNull: false,
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 Publicity = sequelize.define("publicity", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
@ -16,6 +17,7 @@ module.exports = dc => {
unique: "publicity_id_uindex"
},
name: {
index: 2,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
@ -25,6 +27,7 @@ module.exports = dc => {
autoIncrement: false
},
video: {
index: 3,
type: DataTypes.ARRAY(DataTypes.INTEGER),
allowNull: true,
defaultValue: null,
@ -34,6 +37,7 @@ module.exports = dc => {
autoIncrement: false
},
enable: {
index: 4,
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true,

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

@ -6,6 +6,7 @@ module.exports = dc => {
const sequelize = dc.orm;
const Report = sequelize.define("report", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
@ -16,6 +17,7 @@ module.exports = dc => {
unique: "report_id_uindex"
},
reportType: {
index: 2,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
@ -25,6 +27,7 @@ module.exports = dc => {
autoIncrement: false
},
projectType: {
index: 3,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
@ -34,6 +37,7 @@ module.exports = dc => {
autoIncrement: false
},
road: {
index: 4,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
@ -43,6 +47,7 @@ module.exports = dc => {
autoIncrement: false
},
roadSectionStart: {
index: 5,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
@ -52,6 +57,7 @@ module.exports = dc => {
autoIncrement: false
},
roadSectionEnd: {
index: 6,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
@ -61,6 +67,7 @@ module.exports = dc => {
autoIncrement: false
},
longitude: {
index: 7,
type: DataTypes.DOUBLE,
allowNull: true,
defaultValue: null,
@ -70,6 +77,7 @@ module.exports = dc => {
autoIncrement: false
},
latitude: {
index: 8,
type: DataTypes.DOUBLE,
allowNull: true,
defaultValue: null,
@ -79,6 +87,7 @@ module.exports = dc => {
autoIncrement: false
},
content: {
index: 9,
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
@ -88,6 +97,7 @@ module.exports = dc => {
autoIncrement: false
},
scenePic: {
index: 10,
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true,
defaultValue: null,
@ -97,6 +107,7 @@ module.exports = dc => {
autoIncrement: false
},
conserveBeforePic: {
index: 11,
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true,
defaultValue: null,
@ -106,6 +117,7 @@ module.exports = dc => {
autoIncrement: false
},
conserveUnderwayPic: {
index: 12,
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true,
defaultValue: null,
@ -115,6 +127,7 @@ module.exports = dc => {
autoIncrement: false
},
conserveAfterPic: {
index: 13,
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true,
defaultValue: null,
@ -124,6 +137,7 @@ module.exports = dc => {
autoIncrement: false
},
userId: {
index: 14,
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
@ -133,6 +147,7 @@ module.exports = dc => {
autoIncrement: false
},
time: {
index: 15,
type: DataTypes.DATE,
allowNull: false,
defaultValue: null,
@ -142,6 +157,7 @@ module.exports = dc => {
autoIncrement: false
},
address: {
index: 16,
type: DataTypes.STRING,
allowNull: true,
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';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Statistic = sequelize.define("statistic", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "vehicle_id_uindex"
},
name: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "name",
autoIncrement: false
},
count: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: "0",
comment: null,
primaryKey: false,
field: "count",
autoIncrement: false
},
type: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "statistic",
comment: "",
indexes: []
});
dc.models.Statistic = Statistic;
return Statistic;
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Statistic = sequelize.define("statistic", {
id: {
index: 1,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "vehicle_id_uindex"
},
name: {
index: 2,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "name",
autoIncrement: false
},
count: {
index: 3,
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: "0",
comment: null,
primaryKey: false,
field: "count",
autoIncrement: false
},
type: {
index: 4,
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "type",
autoIncrement: false
}
}, {
tableName: "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 bus = require('../../controllers/data/bus');
const publicity = require('../../controllers/data/publicity');
const data = require('../../controllers/data');
const dataIndex = require('../../controllers/data/index');
module.exports = function (app, router, opts) {
// 数据导出
// app.fs.api.logAttr['GET/data/export'] = { content: '导出数据', visible: true };
// router.get('/data/export', data.dataExport);
app.fs.api.logAttr['GET/data/export'] = { content: '导出数据', visible: true };
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.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: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",
"args": "^3.0.7",
"async-busboy": "^0.7.0",
"better-xlsx": "^0.7.6",
"crypto-js": "^4.0.0",
"file-saver": "^2.0.2",
"fs-web-server-scaffold": "^2.0.2",
@ -24,6 +25,7 @@
"kafka-node": "^2.2.3",
"koa-convert": "^1.2.0",
"koa-proxy": "^0.9.0",
"koa2-swagger-ui": "^5.3.0",
"md5-node": "^1.0.1",
"moment": "^2.24.0",
"path": "^0.12.7",
@ -33,10 +35,9 @@
"request": "^2.88.2",
"rimraf": "^3.0.2",
"superagent": "^3.5.2",
"swagger-jsdoc": "^6.1.0",
"uuid": "^3.3.2",
"xlsx": "^0.16.9",
"koa2-swagger-ui": "^5.3.0",
"swagger-jsdoc": "^6.1.0"
"xlsx": "^0.16.9"
},
"devDependencies": {
"mocha": "^6.0.2"

3
api/sequelize-automate.config.js

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

60
api/yarn.lock

@ -55,6 +55,13 @@
chalk "^2.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":
version "1.0.2"
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:
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:
version "0.3.0"
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"
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:
version "0.0.1"
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"
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:
version "2.6.1"
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:
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:
version "1.3.1"
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"
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:
version "1.2.4"
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"
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:
version "5.2.0"
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"
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"
resolved "http://10.8.30.22:7000/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
@ -3395,6 +3443,11 @@ redis@^3.1.2:
redis-errors "^1.2.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:
version "1.4.3"
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"
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:
version "1.1.0"
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() {
if (!password) {
Taro.showToast({ title: '请输入密码' })
Taro.showToast({ title: '请输入密码', icon: 'none' })
return
} else if (password !== password2) {
Taro.showToast({ title: '两次输入的密码不一致' })
Taro.showToast({ title: '两次输入的密码不一致', icon: 'none' })
return
} else {
Taro.showModal({
@ -50,11 +50,11 @@ function Index() {
</View>
<View className='pswd'>
<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 className='pswd'>
<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>
<AtButton className='btn' type='primary' onClick={confirm}>确认</AtButton>
</View>

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

@ -184,9 +184,7 @@ const Index = () => {
if (res.statusCode == 200 || res.statusCode == 204) {
Taro.showToast({ title: '上报成功', icon: 'none', duration: 1500 })
setTimeout(() => {
Taro.reLaunch({
url: '/pages/home/index'
});
Taro.navigateBack()
}, 1500)
} else {
Taro.showToast({ title: res.data.message || '请求出错', icon: 'none' })
@ -285,7 +283,7 @@ const Index = () => {
return (
<View className='patrol'>
{
!isSuperAdmin &&
(!isSuperAdmin || isView) &&
<View className='report-type'>
<View className='text'>上报类型</View>
<RadioGroup onChange={handleTypeChange}>
@ -477,7 +475,7 @@ const Index = () => {
}
{
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>
}
</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 Taro, { useDidShow, useRouter } from '@tarojs/taro'
import Taro, { useDidShow, useRouter, useReachBottom } from '@tarojs/taro'
import { View, Picker, Input, Image } from '@tarojs/components'
import moment from 'moment'
import './index.scss'
@ -17,22 +17,26 @@ import conserveActiveIcon from '../../static/img/patrolView/conserve-active.svg'
function Index() {
const userInfo = Taro.getStorageSync('userInfo') || {};
const router = useRouter()
const { params: { limit } } = router
const { params: { filter } } = router
const [isPatrol, setIsPatrol] = useState(true)
const [datePicker, setDatePicker] = useState(moment().format('YYYY-MM-DD'))
const [listData, setListData] = useState([])
const [showListData, setShowListData] = useState([])
const [filterText, setFilterText] = useState('')
const [systemInfo, setSystemInfo] = useState('')
const [page, setPage] = useState(0)
const [num, setNum] = useState(Math.random())
const limit = 10
useEffect(() => {
getList()
}, [datePicker])
setPage(0)
setNum(Math.random())
}, [isPatrol, datePicker])
useEffect(() => {
setShowListData(listData.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve'))
}, [isPatrol])
getList(page == 0 ? true : false)
}, [num])
function dealError(error) {
Taro.showToast({
@ -42,21 +46,29 @@ function Index() {
});
throw new Error(error);
}
const getList = () => {
const getList = (isInit) => {
Taro.showLoading({ title: '加载中' })
request.get(
getReportList(),
{ startTime: datePicker + ' 00:00:00', endTime: datePicker + ' 23:59:59' }
).then(res => {
const data = {
limit,
page,
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()
if (res.statusCode == 200) {
let { data } = res
if (limit === 'my') {
data = data.filter(item => item.user.name === userInfo.name)
if (res.data.length === 0) {
Taro.showToast({
title: '没有更多了',
icon: 'none'
})
}
setListData(data)
setShowListData(data.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve'))
return data;
const temp = isInit ? [] : listData
const nextListData = temp.concat(res.data)
setListData(nextListData)
} else {
dealError(res.data.message || '请求出错');
}
@ -65,6 +77,12 @@ function Index() {
});
}
//
useReachBottom(() => {
setPage(page + 1)
setNum(Math.random())
})
useDidShow(() => {
let refresh = Taro.getStorageSync('refresh'); //
if (refresh) {
@ -88,20 +106,20 @@ function Index() {
}
const handleConfirm = e => {
let nextList = listData.filter(item => isPatrol ? item.reportType === 'patrol' : item.reportType === 'conserve')
nextList = nextList.filter(item => item.road.includes(e.detail.value))
setShowListData(nextList)
setPage(0)
setNum(Math.random())
}
const handleInput = e => {
setFilterText(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 => {
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 (
@ -140,7 +158,7 @@ function Index() {
<View style={{ marginTop: '110px' }}>
{
showListData && showListData.length > 0 ? showListData && showListData.map((e, index) => {
listData && listData.length > 0 ? listData && listData.map((e, index) => {
return (
<View className='cardBox' key={index} onClick={() => handleDetail(index)}>
<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 { View } from '@tarojs/components';
import { useIndustry } from '@/actions/business';
@ -6,8 +6,26 @@ import './index.scss';
const Index = () => {
const userInfo = Taro.getStorageSync('userInfo') || {};
const token = Taro.getStorageSync('token') || null;
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() {
Taro.navigateTo({
url: '/packages/patrol/index?type=edit'
@ -19,14 +37,25 @@ const Index = () => {
})
}
function toVideo() {
}
return (
<View className='page'>
<View className='fill'>
<View className='card fill'>
<View className='title'> </View>
<View className='btn' onClick={isSuperAdmin ? toPatrolView : toPatrol}>
{isSuperAdmin ? '查看' : '填报'}
</View>
</View>
{
isSuperAdmin &&
<View className='card video'>
<View className='title'> </View>
<View className='btn' onClick={toVideo}>查看</View>
</View>
}
</View>
);
}

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

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

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

@ -24,7 +24,7 @@ const Index = ({ ...props }) => {
const toMyReport = () => {
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:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;}
<<<<<<< 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-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:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);}
>>>>>>> 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-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;}
@ -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:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
<<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{component-background}", 1)`);border-color: #ffadd2;}
=======
>>>>>>> Stashed changes
=======
>>>>>>> Stashed changes
.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;}
<<<<<<< Updated upstream
.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-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;}
>>>>>>> Stashed changes
=======
>>>>>>> Stashed changes
.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;}
.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;}
.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-inverse {color: #fff;background: #52c41a;border-color: #52c41a;}
<<<<<<< Updated upstream
<<<<<<< Updated upstream
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.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-purple {color: #531dab;background: color(~`colorPalette("@{alert-error-bg-color}", 1)`);border-color: #d3adf7;}
>>>>>>> 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-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;}
@ -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-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;}
<<<<<<< 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;}
=======
>>>>>>> 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-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);}

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 Search from './search'
import SketchColor from './sketchColor'
import SimpleFileDownButton from './simpleFileDownButton'
export {
Upload,
@ -18,5 +19,6 @@ export {
FlowRecordTable,
Table,
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: '获取填报信息失败' },
// reducer: { name: 'reportstatistic' }
// });
// }
export function getOperaTional(query) {
return dispatch => basicAction({
@ -34,6 +34,17 @@ export function getOperaTional(query) {
// 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) {
return dispatch => basicAction({
type: 'get',
@ -45,6 +56,28 @@ export function getSpecificVehicle(query) {
// 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) {
return dispatch => basicAction({
type: 'get',
@ -121,4 +154,173 @@ export function putProject(query) {
msg: { error: '编辑工程信息失败' },
// 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 { Spin, Button, Popconfirm, Badge } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
import { getBridge, getProject } from "../actions/infor"
import { getBridge, getProject,delBridge,delProject } from "../actions/infor"
import UserModal from './infor/details';
import ProjectModal from './project/project';
@ -14,7 +14,7 @@ const BrideTable = (props) => {
// 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 [sitename, setSitename] = useState()//场所名称
const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
@ -22,6 +22,11 @@ const BrideTable = (props) => {
const [typecard, setTypecard] = useState();
const [activeKey, setActiveKey] = useState('tab1');
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 = {
tab1: [
{
@ -30,12 +35,9 @@ const BrideTable = (props) => {
fixed: 'left',
width: 120,
options: 1,
search: false,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
placeholder: '请输入桥梁代码进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
render: (dom, record) => {
@ -45,17 +47,19 @@ const BrideTable = (props) => {
},
{
title: '桥梁名称',
search: false,
dataIndex: 'containers',
fixed: 'left',
width: 120,
render: (dom, record) => {
return record.bridgeName
},
fieldProps: {
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入桥梁名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
},
},
{
title: '中心桩号',
@ -1489,7 +1493,16 @@ const BrideTable = (props) => {
setTypecard('111')
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,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入项目名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -1670,7 +1683,16 @@ const BrideTable = (props) => {
setTypecard('111')
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) => {
setModalVisible(true);
@ -1766,7 +1767,7 @@ const BrideTable = (props) => {
<Spin spinning={false}>
<div className='protable-transpor'>
<ProTable
actionRef={ref}
toolbar={{
multipleLine: true,
@ -1777,13 +1778,13 @@ const BrideTable = (props) => {
{
key: 'tab1',
label: <span onClick={() => {
requestBridge()
setWhichofits('qiaoliang')
}}>桥梁{activeKey === 'tab1'}</span>,
},
{
key: 'tab2',
label: <span onClick={() => {
requestProject()
setWhichofits('gongcheng')
}}>工程一览{activeKey === 'tab2'}</span>,
},
@ -1796,12 +1797,7 @@ const BrideTable = (props) => {
style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id'
onReset={(v) => {
// const { id } = depMessage[0]
// console.log(id)
// setRegionId(id)
// setPlaceType(-1)
// setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
// setSitename('')
setSitename('')
}}
rowSelection={{
selectedRowKeys: rowSelected,
@ -1813,16 +1809,33 @@ const BrideTable = (props) => {
dataSource={counts || []}
request={async (params) => {
const query = {
}
setRowSelected([]);
const res = await dispatch(getBridge(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
if(whichofits=='qiaoliang'){
const query = {
bridgeName:sitename
}
setRowSelected([]);
const res = await dispatch(getBridge(query));
// console.log(res)
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={{
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 Bounds from './bounds';
import moment from 'moment';
import { getReportList } from '../../actions/patrol'
const { RangePicker } = DatePicker;
function PatrolGis(props) {
const { reportList, userId, dispatch } = props;
const [mapComplete, setMapComplete] = useState(false);
const [mapObj, setMapObj] = useState();
const [dateRange, setDateRange] = useState();
let markers = [];
let PATH = [];
useEffect(() => {
if (AMap) loadMap();
return () => {
@ -24,8 +26,23 @@ function PatrolGis(props) {
}, [true])
useEffect(() => {
if (mapObj) {
mapObj.remove(markers);
mapObj.remove(PATH);
}
let query = { userId, reportType: 'patrol' }
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])
@ -33,9 +50,10 @@ function PatrolGis(props) {
if (reportList && mapObj) {
mapObj.clearMap();
renderMarkers();
renderPath();
if (userId)
renderPath();
}
}, [reportList, mapObj])
}, [reportList, mapObj, userId])
const loadMap = () => {
const map = new AMap.Map("amapId", {
@ -86,11 +104,12 @@ function PatrolGis(props) {
position: new AMap.LngLat(longitude, latitude),
icon: icon,
offset: new AMap.Pixel(-12, -12),
extData: {
name: user.name || '',
}
// extData: {
// name: user.name || '',
// }
});
// marker.setTitle(s.name);
markers.push(marker);
map.add(marker);
})
}
@ -111,6 +130,7 @@ function PatrolGis(props) {
if (longitude && latitude)
path.push([item.longitude, item.latitude])
});
PATH = path;
var polyline1 = new AMap.Polyline({
map: map,
path: path, // 设置线覆盖物路径
@ -122,9 +142,13 @@ function PatrolGis(props) {
}
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 }} />
<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} /> : ''}
</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 { Spin, Button, Popconfirm, Badge } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
import { getReportStatistic } from "../actions/infor"
import UserModal from './infor/details';
import { getHighways } from "../actions/infor"
import HightModal from './highways/highwaysdata';
const HigwaysTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props
const { dispatch, user, } = props
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 [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
const [modalRecord, setModalRecord] = 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) => {
setModalVisible(true);
const hightModal = (type, record) => {
setModalVisibleyilan(true);
// setModalType(type);
if (type == 'edit') {
setModalRecord(record);
@ -61,6 +61,9 @@ const exports = (ids, counts) => {
placeholder: '请输入类型进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
render: (dom, record) => {
return record.name
},
},
{
title: '数量',
@ -70,7 +73,7 @@ const exports = (ids, counts) => {
fixed: 'left',
width: 120,
render: (dom, record) => {
return record.address
return record.count
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -86,8 +89,9 @@ const exports = (ids, counts) => {
render: (dom, record) => {
return <div><Button type="link"
onClick={() => {
openModal('edit', record)
hightModal('edit', record)
setTypecard('111')
setRecortd(record)
}}
>编辑</Button></div>
@ -99,18 +103,14 @@ const exports = (ids, counts) => {
<Spin spinning={false}>
<div className='protable-transpor'>
<ProTable
actionRef={ref}
scroll={{ x: 800 }}
options={false}
ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id'
onReset={(v) => {
const { id } = depMessage[0]
console.log(id)
setRegionId(id)
setPlaceType(-1)
setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
setSitename('')
setSitename('')
}}
rowSelection={{
selectedRowKeys: rowSelected,
@ -120,46 +120,30 @@ const exports = (ids, counts) => {
}}
columns={columns}
dataSource={(counts || {}).rows || []}
dataSource={counts || []}
request={async (params) => {
const query = {
startDate: day[0],
endDate: day[1],
placeType: placeType,
regionId: regionId,
placeName: sitename,
limit: params.pageSize,
offset: ((params.current ? params.current : 1) - 1) * params.pageSize
name:sitename
}
setRowSelected([]);
const res = await dispatch(getReportStatistic(query));
const res = await dispatch(getHighways(query));
setCounts(res.payload.data)
return {
...res,
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>
<UserModal
visible={modalVisible}
onVisibleChange={setModalVisible}
{modalVisibleyilan ? <HightModal
visible={modalVisibleyilan}
onVisibleChange={setModalVisibleyilan}
modalRecord={modalRecord}
typecard={typecard}
/>
rewkeys={'highways'}
recortd={recortd}
setRecortd={setRecortd}
/> : ''}
</Spin >
)
}

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

@ -1,21 +1,23 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd';
import { DrawerForm, ProForm, ProFormText } from '@ant-design/pro-form';
import { putRoadway } from "../../actions/infor"
import { DrawerForm, ProForm, ProFormText, ProFormSelect } from '@ant-design/pro-form';
import { putRoadway, putSpecificVehicle, putHouseholds,putCircuit,putVehicle,putPurchase } from "../../actions/infor"
import { putBridge } from "../../actions/infor"
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 [newlysay, setNewlysay] = useState() //处理hou
const [records, setRecords] = useState()//处理
const [recordsay, setRecordsay] = useState()//必填数据
const [success, setSuccess] = useState() //状态
// const [success, setSuccess] = useState() //状态
// const [establishment, setEstablishment] = useState() //业户类型
console.log(recortd)
useEffect(() => {
const array = []
if (rewkeys === 'transportation') {
const xindata=[...data]
const xindata = [...data]
setNewlys(xindata?.splice(0, 2))
setNewlysay(xindata)
} if (rewkeys === 'bridge') {
@ -24,7 +26,51 @@ const UserModal = (props) => {
});
setNewlys(array?.splice(0, 2))
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(() => {
@ -43,12 +89,55 @@ const UserModal = (props) => {
setRecordsay(arr.splice(1, 2))
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])
useEffect(() => {
return () => {
setRecortd()
}
}, [])
}, [setRecortd])
// console.log(recortd)
return (
<Spin spinning={false}>
@ -59,38 +148,122 @@ const UserModal = (props) => {
visible={visible}
onVisibleChange={onVisibleChange}
onFinish={(values) => {
if (rewkeys === 'transportation') {
if (typecard == '111') {
console.log(values)
const query = { ...values, level: sitename, roadId: records?.[0]?.value || '' }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.success)
})
return success
} else {
const query = { ...values, level: sitename }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.success)
})
return success
console.log(values)
if (Object.values(values).length > 0) {
if (rewkeys === 'transportation') {
if (typecard == '111') {
const query = { ...values, level: sitename, roadId: records?.[0]?.value || '' }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values, level: sitename }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.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 === 'bridge') {
if (typecard == '111') {
console.log(values)
const query = { ...values, roadId: records?.[0]?.value || '' }
dispatch(putBridge(query)).then((res) => {
setSuccess(res.success)
})
return success
} else {
const query = { ...values }
dispatch(putBridge(query)).then((res) => {
setSuccess(res.success)
})
return success
if (rewkeys === 'cheliang') {
if (typecard == '111') {
console.log(values)
const query = { ...values, carId:records?.[0]?.value || '' }
dispatch(putVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values }
dispatch(putVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
}
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}
>
@ -104,7 +277,7 @@ const UserModal = (props) => {
tooltip="最长为 24 位"
placeholder="请输入名称"
value={recordsay?.[0]?.value}
rules={[{ required: true, message: "必填" }]}
// rules={[{ required: true, message: "必填" }]}
/><ProFormText
name={newlys?.[1]?.type}
width="md"
@ -112,9 +285,24 @@ const UserModal = (props) => {
tooltip="最长为 24 位"
placeholder="请输入名称"
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) => {
return <ProFormText width="md"
name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称"
@ -130,17 +318,33 @@ const UserModal = (props) => {
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordssy?.[0]?.value}
rules={[{ required: true, message: "必填" }]}
// value={recordssy?.[0]?.value}
// rules={[{ required: true, message: "必填" }]}
/><ProFormText
name={newlys?.[1]?.type}
width="md"
label={newlys?.[1]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordssy?.[1]?.value}
rules={[{ required: true, message: "必填" }]}
// value={recordssy?.[1]?.value}
// rules={[{ required: true, message: "必填" }]}
/>
{rewkeys === 'yehu' ?
<ProFormSelect
rules={[{ required: true, message: "必填" }]}
options={[
{
value: '出租车',
label: '出租车',
}, {
value: '危货',
label: '危险货运',
},
]}
name='type'
label='类型'
/> : null
}
{newlysay?.map((item, index) => {
return <ProFormText width="md"
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 { Spin, Button, Popconfirm, Col, Input,Row } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
import { getReportStatistic } from "../actions/infor"
import { getPurchase,delPurchase } from "../actions/infor"
import UserModal from './infor/details';
const InForTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props
const [rowSelected, setRowSelected] = useState([])
const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false);
const [modalRecord, setModalRecord] = 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) => {
setModalVisible(true);
@ -45,31 +54,52 @@ const InForTable = (props) => {
const columns =
[
{
title: '检测点名称',
title: '区/县',
dataIndex: 'placeName',
fixed: 'left',
width: 120,
options: 1,
search: false,
backgroundColor: "#ffffff",
fieldProps: {
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入检测点名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
render: (dom, record) => {
return record.districtcounty
},
},
{
title: '车牌号',
title: '检测点名称',
// search: false,
dataIndex: 'containers1',
fixed: 'left',
width: 120,
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: {
onChange: (value, cs) => {
setLicensePlate(value.currentTarget.value)
},
placeholder: '请输入车牌号进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
@ -80,9 +110,12 @@ const InForTable = (props) => {
dataIndex: 'containers2',
width: 120,
render: (dom, record) => {
return record.address
return record.numberOfAxles
},
fieldProps: {
onChange: (value, cs) => {
setNumberOfAxles(value.currentTarget.value)
},
placeholder: '请输入车轴数进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
@ -95,20 +128,28 @@ const InForTable = (props) => {
//
width: 120,
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) => {
return <Input.Group >
<Row gutter={8}>
<Col span={8}>
<Input placeholder='输入超限率'/>
<Input
onChange={(value)=>{
setOverrunRateUpper(value.currentTarget.value)
}}
placeholder='输入超限率上限'/>
</Col>
<Col span={8}>
<Input placeholder='输入超限率'/>
<Input
onChange={(value)=>{
setOverrunRateFloor(value.currentTarget.value)
}}
placeholder='输入超限率下限'/>
</Col>
</Row>
</Input.Group>
@ -123,7 +164,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.overrunWeight
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -137,7 +178,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.grossVehicleWeight
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -151,7 +192,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.vehicleCargoWeightLimit
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -164,9 +205,12 @@ const InForTable = (props) => {
valueType: 'dateTime',
width: 120,
render: (dom, record) => {
return record.address
return record.testTime
},
fieldProps: {
onChange: (value, cs) => {
setTestTime(cs)
},
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
}, {
@ -178,7 +222,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.nameOfBusinessOwner
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -193,7 +237,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.businessAddress
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -208,7 +252,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.notifier
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -223,7 +267,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.notificationMethod
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -235,10 +279,10 @@ const InForTable = (props) => {
valueType: 'dateRange',
width: 140,
width: 240,
render: (dom, record) => {
return record.address
return record.notificationResults
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -253,7 +297,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.processingTime
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -268,7 +312,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.deductPoints
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -283,7 +327,23 @@ const InForTable = (props) => {
width: 140,
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: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -301,9 +361,18 @@ const InForTable = (props) => {
onClick={() => {
openModal('edit', record)
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}>
<div className='protable-transpor'>
<ProTable
actionRef={ref}
scroll={{ x: 800 }}
options={false}
ref={c => { finishedProductTable = c; }}
@ -355,20 +425,26 @@ const InForTable = (props) => {
},
}}
columns={columns}
dataSource={(counts || {}).rows || []}
dataSource={counts || []}
onReset={(v) => {
setNameOfInspectionPoint('')
setLicensePlate('')
setNumberOfAxles('')
setOverrunRateUpper('')
setOverrunRateFloor('')
setTestTime('')
}}
request={async (params) => {
const query = {
startDate: day[0],
endDate: day[1],
placeType: placeType,
regionId: regionId,
placeName: sitename,
limit: params.pageSize,
offset: ((params.current ? params.current : 1) - 1) * params.pageSize
nameOfInspectionPoint:nameOfInspectionPoint,
licensePlate:licensePlate,
numberOfAxles:numberOfAxles,
overrunRateUpper:overrunRateUpper,
overrunRateFloor:overrunRateFloor,
testTime:testTime
}
setRowSelected([]);
const res = await dispatch(getReportStatistic(query));
const res = await dispatch(getPurchase(query));
setCounts(res.payload.data)
return {
...res,
@ -390,15 +466,41 @@ const InForTable = (props) => {
>
</ProTable></div>
<UserModal
{modalVisible ? <UserModal
visible={modalVisible}
onVisibleChange={setModalVisible}
modalRecord={modalRecord}
typecard={typecard}
/>
rewkeys={'zhichao'}
data={data}
recortd={recortd}
setMonitor={setMonitor}
// sitename={sitename}
setRecortd={setRecortd}
/> : ''}
</Spin >
)
}
const data={
"districtcounty": "区/县",
"nameOfInspectionPoint": "检测点名称",
"licensePlate": "车牌号码",
"numberOfAxles": "车轴数",
"overrunRate": "超限率",
"overrunWeight": "超限重量",
"grossVehicleWeight": "车货总重",
"vehicleCargoWeightLimit": "车货限重",
"testTime": "检测时间",
"nameOfBusinessOwner": "经营业户名称",
"businessAddress": "经营业户地址",
"notifier": "通知人",
"notificationMethod": "通知方式",
"notificationResults": "通知结果",
"processingTime": "处理时间",
"deductPoints": "扣分",
"fine": "罚款",
"remarks": "备注"
}
function mapStateToProps(state) {
const { auth, depMessage } = state;
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',
align: 'center',
render: (text, record) => {
return record.user.name
return record?.user?.name || ''
}
}, {
title: '上报时间',
@ -254,6 +254,7 @@ const PatrolTable = (props) => {
const [record, setRecord] = useState();
const [dateRange, setDateRange] = useState();
const [detailVisible, setDetailVisible] = useState(false)
const [activeTabKey1, setActiveTabKey1] = useState('tab1');
const { RangePicker } = DatePicker;
@ -265,15 +266,27 @@ const PatrolTable = (props) => {
useEffect(() => {
if (record) {
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));
queryData();
}
}, [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 = () => {
let query = { userId: record.id, reportType: 'patrol' }
dispatch(getReportList(query));
@ -301,16 +314,28 @@ const PatrolTable = (props) => {
<DetailList reportList={reportList} record={record} loading={reportListLoading} dispatch={dispatch} handleOpen={handleOpen} handelRefresh={handelRefresh} />
</Card>
</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) => {
setActiveTabKey1(key);
};
const handleChangeRecord = (newRecord) => {
let target = null;
if (!record || newRecord.id != record.id) {
target = newRecord;
}
setRecord(target);
}
return (
<div className='card-protable'>
<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
style={{ flex: 1 }}

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

@ -121,7 +121,7 @@ const ProjectModal = (props) => {
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
value={recordsay?.[0]?.value}
// value={recordsay?.[0]?.value}
rules={[{ required: true, message: "必填" }]}
/><ProFormText
name={newlys?.[1]?.type}
@ -129,7 +129,7 @@ const ProjectModal = (props) => {
label={newlys?.[1]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
value={recordsay?.[1]?.value}
// value={recordsay?.[1]?.value}
rules={[{ required: true, message: "必填" }]}
/>
<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.less'
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 ProjectModal from './project/project';
const TransporTationTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props
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 [sitename, setSitename] = useState()//桥梁名称
const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
@ -22,29 +19,10 @@ const TransporTationTable = (props) => {
const [typecard, setTypecard] = useState();
const [activeKey, setActiveKey] = useState('tab1');
const [recortd, setRecortd] = useState()
// const ref = useRef()
//请求数据
const requestRoadway = (name) => {
const query = {
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 [whichofits, setWhichofits] = useState('xian')
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, whichofits, delet])
//打开弹窗
const openModal = (type, record) => {
setModalVisible(true);
@ -91,9 +69,9 @@ const TransporTationTable = (props) => {
options: 1,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -1197,11 +1175,17 @@ const TransporTationTable = (props) => {
setRecortd(record)
openModal('edit', record)
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,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -2353,7 +2337,14 @@ const TransporTationTable = (props) => {
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,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -3506,7 +3497,15 @@ const TransporTationTable = (props) => {
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,
backgroundColor: "#ffffff",
fieldProps: {
// onChange: (value, cs) => {
// setSitename(value.currentTarget.value)
// },
onChange: (value, cs) => {
setSitename(value.currentTarget.value)
},
placeholder: '请输入项目名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -3689,7 +3688,16 @@ const TransporTationTable = (props) => {
setTypecard('111')
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}>
<div className='protable-transpor'>
<ProTable
// actionRef={ref}
actionRef={ref}
toolbar={{
multipleLine: true,
menu: {
@ -3738,18 +3746,26 @@ const TransporTationTable = (props) => {
items: [
{
key: 'tab1',
label: <span onClick={() => requestRoadway('县')}>县道{activeKey === 'tab1'}</span>,
label: <span onClick={() => {
setWhichofits('xian')
}}>县道{activeKey === 'tab1'}</span>,
},
{
key: 'tab2',
label: <span onClick={() => requestRoadway('乡')}>乡道{activeKey === 'tab2'}</span>,
label: <span onClick={() => {
setWhichofits('xiang')
}}>乡道{activeKey === 'tab2'}</span>,
},
{
key: 'tab3',
label: <span onClick={() => requestRoadway('村')}>村道{activeKey === 'tab3'}</span>,
label: <span onClick={() => {
setWhichofits('cun')
}}>村道{activeKey === 'tab3'}</span>,
}, {
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' }}
rowKey='id'
onReset={(v) => {
const { id } = depMessage[0]
// console.log(id)
// setRegionId(id)
// setPlaceType(-1)
// setDay([moment('2022-03-01').format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')])
// setSitename('')
setSitename('')
}}
rowSelection={{
selectedRowKeys: rowSelected,
@ -3774,22 +3785,59 @@ const TransporTationTable = (props) => {
},
}}
columns={columns[activeKey]}
dataSource={counts || []}
request={async (params) => {
const query = {
level: '县'
if (whichofits == 'xian') {
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('县')
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 == 'gongcheng') {
const query = {
type: 'road',
// 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={{

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

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

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

@ -6,12 +6,14 @@ import '../style.less';
import Header from './heand';
import Footer from './footer';
import ProTable, { TableDropdown } from '@ant-design/pro-table';
import Gis from './footer/gis/gis';
const MAPID = 'screenGis'
const Example = (props) => {
const { dispatch, actions, user, loading } = props
const [tabKey, setTabKey] = useState('leadership')
const [mapObj, setMapObj] = useState();
// useEffect(() => {
// 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 (
<Spin tip="biubiubiu~" spinning={loading}>
@ -80,11 +35,11 @@ const Example = (props) => {
document.body.clientHeight / 1080
)})`, */
}}>
{/* <div id={MAPID} style={{ position: 'absolute', width: "100%", height: "100%" }}></div> */}
<Gis />
<div style={{ width: "100%", height: "10%" }}>
<Header tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} />
</div>
<div style={{ width: "100%", height: "90%" }}>
<div style={{position: 'absolute', width: "100%", height: "90%" }}>
<Footer tabKey={tabKey} dispatch={dispatch} />
</div>

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

@ -54,7 +54,7 @@ function Rightbottom(props) {
textStyle: {
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: {
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-top'>
<img src="/assets/images/quanju/gonglugongcheng.png"></img>
<div>在建公路工程数量</div>
<div>在建公路工程数量/</div>
<h2>{sundata}</h2>
</div>
<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 res = await dispatch(getdaolutongji());
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==='村'))
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%",
height:" 33%"
}} 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>
{/* <i>&#9658;</i> */}
@ -137,6 +139,7 @@ const Build = (props) => {
<div>{buildingnumber?.buildedRoad || 0}</div>
</div>
</div>:<NoData/>}
</div>
</Module>
<Module title={"各乡镇道路分布统计"} style={{ width: "100%",
height:" 33%",marginTop:'3%'
@ -203,7 +206,7 @@ const Build = (props) => {
{safetyData&&sunsafetyData!==0?<RightBottom width='100%'
height='100%'
text='道路总公里'
total={sunsafetyData}
total={keepThreeNum(sundata)}
data={keepThreeNum(safetyData)}/>:<NoData/>}
</Module>
</div>

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

@ -178,7 +178,7 @@
align-items: center;
justify-content: center;
position: absolute;
left: 16%;
left: 15%;
top:38%;
h2{
font-size: 1.25rem;
@ -278,7 +278,7 @@
justify-content: center;
position: absolute;
align-items: center;
left: 19%;
left: 15%;
top:38%;
h2{
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: {
color: '#fff',
},
formatter: (values) => ` ${values.name}<b>${datas.processed}</b>`,
formatter: (values) => `${values.name}<b>${datas.processed}</b>`,
},
title: {
text: `${(datas.processed*100/datas.total).toFixed(2)}%`,
@ -78,6 +78,7 @@ export default function LeftItem({datas}) {
},
series: [{
type: 'bar',
showBackground: true,//这里只有显示背景才能出现背景灰色的线
data: [{
name: '已处理',
value: (datas.processed*100/datas.total).toFixed(2),
@ -97,34 +98,15 @@ export default function LeftItem({datas}) {
coordinateSystem: 'polar',
roundCap: true,
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);
}, [])
return (
<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'>
<span>{datas.name}</span>
<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 [leftDatas,setleftDatas] = useState([])
const [rightDatas,setrightDatas] = useState([])
const [rightitemlist,setrightitemlist] = useState()
const requestleftDatas = async()=>{
const res = await dispatch(getjiandmanage())
res.payload.data.sort((a,b)=>{
res.payload.data?.sort((a,b)=>{
return parseInt(b.total) - parseInt(a.total)
})
setleftDatas(res.payload.data)
console.log(res.payload.data,'哈哈哈')
}
const data_string=(str)=> {
str.match('/([^.]*)$/g')
}
const requestRightDatas = async()=>{
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)
// console.log(res,'嘿嘿嘿')
setrightitemlist(d)
// console.log(d,'对比的数据')
// console.log(d2,'完美')
// console.log(res.payload.data,'嘿嘿嘿')
}
useEffect(()=>{
requestleftDatas();
@ -32,7 +56,7 @@ const Guanli = (props) => {
// datalist.fill({licensePlate:"赣A44454",overrunRate:"30%",fine:"200元",processingTime:"2020年4月1日"})
const renderContent = () => {
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){
return <div key={index} className='guanli-right-item'>
<span>{licensePlate}</span>
@ -74,9 +98,9 @@ const Guanli = (props) => {
<span>车牌号</span>
<span>超限</span>
<span>处罚</span>
<span>日期</span>
<span>处理日期</span>
</div>
{rightDatas && rightDatas.length!==0?<AutoRollComponent content={renderContent()}
{rightitemlist && rightitemlist.length!==0?<AutoRollComponent content={renderContent()}
containerStyle={{ position: "relative", height: "90%", }}
divHeight={"100%"} divId={"chart-overview-deviceList"} />:<NoData style={{height:"70%"}}/>}
</Module>

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

@ -19,6 +19,7 @@
.guanli-left-item{
box-sizing: border-box;
width: 85%;
position: relative;
// height: 30%;
height: 24vh;
margin: 0 auto 3%;
@ -72,7 +73,7 @@
width: 8px;
height: 8px;
background-color: #fff;
bottom: 7.0625rem;
top:1.5%;
left: 50%;
z-index: 10;
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) => {
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(() => {
@ -24,6 +27,7 @@ const Right = (props) => {
// const
})
}, [])
console.log("1211", nums);
const renderBody = () => {
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>
</div>
<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>
<div style={{ width: "15%", height: "20%", background: "url(/assets/images/leadership/center.png)", backgroundSize: "100% 100%", position: "absolute", top: "67%", left: "34%" }}> */}
<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: ((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 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>
@ -77,7 +81,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */}
<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>
<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%" }} /> */}
</div>
<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 [list, setList] = useState([])
const [roads, setRoads] = useState()
const [nums, setNums] = useState()
useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "culvert"
}))
setNums(res.payload.data.reportCount.filter((item, index) => {
return item.projectType == "culvert"
}))
})
}, [])
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>
</div>
<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 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%", 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 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>
</div>
</div>
@ -77,7 +81,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */}
<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>
<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%" }} /> */}
</div>
<Lun

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

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

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

@ -3,4 +3,9 @@
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 Lunbotop from "../../right/lunbo"
import { getyunzheng } from "../../../../../actions/example"
import "./style.less"
const Toplunbo = (props) => {
@ -30,9 +31,9 @@ const Toplunbo = (props) => {
height: "50%",
}}>
<div style={{ width: "40%", height: "60%", float: "left" }}>
<div style={{ width: "100%", height: "100%", position: "relative", top: "-30%" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", marginLeft: "20%" }} />
<p style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "20%", left: "33%" }}>危险货运</p>
<div style={{ width: "100%", height: "110%", position: "relative", top: "-30%" }}>
<img src='/assets/images/leadership/di.png' style={{ width: "60%", height: "100%", marginLeft: "20%" }} />
<p className='huoyun' style={{ fontSize: "16px", color: "#FFFFFF", fontFamily: "PingFangSC-Medium, PingFang SC", position: "absolute", top: "10%", left: "33%" }}>危险货运</p>
</div>
</div>
<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 [list, setList] = useState([])
const [roads, setRoads] = useState()
const [nums, setNums] = useState()
useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "bridge"
}))
setNums(res.payload.data.reportCount.filter((item, index) => {
return item.projectType == "bridge"
}))
})
}, [])
useEffect(() => {
@ -55,16 +59,16 @@ const Right = (props) => {
<div style={{ width: "100%", height: "43%", position: "relative", left: "1%" }}>
<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={{ 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 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 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 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 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>
@ -76,7 +80,7 @@ const Right = (props) => {
{/* <p>{title || []}</p> */}
<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>
<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%" }} /> */}
</div>
<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
textStyle: {
color: "#fff",
fontSize: 14, //表盘上的标题文字大小
fontSize: "2vh", //表盘上的标题文字大小
fontWeight: 400,
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%" }
useEffect(() => {
// return () => {
request('GET', '/search').then((success, failure) => {
console.log(success);
});
request('get', 'https://report.amap.com/ajax/districtRank.do?linksType=1&cityCode=360100')
// .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 (

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) => {
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}
>
<div style={{ width: "40%", height: "40%", backgroundColor: "red", position: "absolute", left: "-3%", top: "3%" }}>
{value[0]?.name}
<div style={{ width: "45%", height: "40%", backgroundColor: "red", position: "absolute", left: "-3%", top: "5%" }}>
<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>
{value[1]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "#fff", position: "absolute", left: "45%", top: "3%" }}>
{value[1]?.name}
{value[1]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "#fff", position: "absolute", left: "45%", top: "5%" }}>
<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> : ""}
{value[2]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "bule", position: "absolute", left: "-3%", top: "50%" }}>
{value[2]?.name}
{value[2]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "bule", position: "absolute", left: "-3%", top: "49%" }}>
<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> : ""}
{value[3]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "pink", position: "absolute", left: "45%", top: "50%" }}>
{value[3]?.name}
{value[3]?.name ? <div style={{ width: "45%", height: "40%", backgroundColor: "pink", position: "absolute", left: "45%", top: "49%" }}>
<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>{value[1].name}</div>
<div>{value[2].name}</div>
@ -97,8 +118,12 @@ class ReactCarousel extends Component {
</ul> */}
<div className="control" style={{ width: "100%", height: "10%" }}>
<span className="left" onClick={(e) => { this.previous(e) }}></span>
<span className="right" onClick={(e) => { this.next(e) }}></span>
<span style={{ position: "absolute", top: "86%", width: "3%", height: "8%" }} className="left" onClick={(e) => { this.previous(e) }}>
<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>
@ -119,7 +144,7 @@ class ReactCarousel extends Component {
let { timer } = this.state;
timer = setInterval(() => {
this.next();
}, 300000);
}, 2000);
this.setState({
timer
})

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

@ -27,10 +27,10 @@ const Rightbottom = (props) => {
// console.log(beijing);
}}>
{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: "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: "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 == 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" }}>{item.licensePlate}</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 == 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 == index ? "#FFFFFF" : "rgba(216,240,255,0.8000)", position: "absolute", left: "70%" }}>{item.processingTime ? item.processingTime : "--"}</div>
</li>
})

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

@ -73,9 +73,12 @@ const Righttop = () => {
return (
<>
<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" }}>
<img src='/assets/images/leadership/head.png' style={{ width: "15%", marginLeft: "5%" }} />
<div className='wy-rightTop' style={{ position: "absolute", right: "5%", top: "130%" }}>
<Select
size={size}

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

@ -45,23 +45,24 @@ export const ApiTable = {
//运政管理
getOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific',
getHouseholds: 'vehicle/business',
getOperaTional: 'vehicle',putOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific',putSpecificVehicle: 'vehicle/specific',delSpecificVehicle: 'vehicle/{vehicleId}/specific',
getHouseholds: 'vehicle/business',putHouseholds: 'vehicle/business',delHouseholds: 'vehicle/business/{businessId}',
getRoadway: 'road',
// 获取运政统计
getYunZheng: "transportation/statistic",
//桥梁管理
getBridge: 'bridge',
//工程数据
getProject: 'project',
//桥梁管理
getBridge: 'bridge',
putBridge: 'bridge',
//工程数据
getProject: 'project',
putProject: 'project',
// 获取运政统计
getYunZheng: "transportation/statistic",
//桥梁管理
getBridge:'bridge',
putBridge:'bridge',
delBridge:'bridge/{bridgeId}',
//工程数据
getProject:'project',
putProject:'project',
delProject:'project/{projectId}',
//道路数据
getRoadway: 'road',
putRoadway: 'road',
delRoadway:'road/{roadId}',
//道路统计
getBgroadstatistics: "build/road_state",
@ -79,13 +80,24 @@ export const ApiTable = {
getBusTier: '/operation/car_level',
//获取路政列表
getHighways: 'road_manage',
getHighways: 'road_manage',putHighways: 'road_manage',
//获取道路养护统计及列表
getRoadMaintenance: 'conserve/statistic',
//获取宣传数据
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)'
}
>>>>>>> Stashed changes
<<<<<<< Updated upstream
>>>>>>> 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",
"@fs/attachment": "^1.0.0",
"@peace/components": "0.0.35",
"@peace/utils": "^0.0.51",
"@peace/utils": "0.0.51",
"antd": "^4.19.2",
"antd-theme-generator": "^1.2.8",
"args": "^5.0.1",

Loading…
Cancel
Save