Browse Source

档案管理

release_0.0.4^2^2
LUCAS 3 years ago
parent
commit
a56e56f478
  1. 24
      api/app/lib/controllers/data/index.js
  2. 28
      api/app/lib/controllers/data/overspeed.js
  3. 5
      api/app/lib/controllers/data/road.js
  4. 15
      api/app/lib/controllers/data/vehicle.js
  5. 6
      api/app/lib/controllers/organization/department.js
  6. 2
      api/app/lib/controllers/overview/conserve.js
  7. 40
      api/app/lib/controllers/overview/operation.js
  8. 5
      api/app/lib/index.js
  9. 2
      api/app/lib/models/overspeed.js
  10. 2
      api/app/lib/models/publicity.js
  11. 4
      api/app/lib/routes/data/index.js
  12. 666
      api/log/development.log
  13. 2
      scripts/0.0.1/data/1_update_user_dep_data.sql
  14. BIN
      scripts/0.0.1/data/工具脚本(无需执行)/data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx
  15. BIN
      scripts/0.0.1/data/工具脚本(无需执行)/data/治超/非现场处罚总台账更新至2022.7.5(最新).xlsx
  16. 21
      scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js
  17. 1
      scripts/0.0.1/data/工具脚本(无需执行)/package.json
  18. 4
      scripts/0.0.1/data/工具脚本(无需执行)/治超_数据脚本对应.sql
  19. 110125
      scripts/0.0.1/schema/1.init_table.sql
  20. 2
      weapp/src/config.js
  21. 6
      weapp/src/packages/patrolView/index.jsx
  22. 20
      web/client/assets/color.less
  23. BIN
      web/client/assets/images/leadership/weizhis.png
  24. BIN
      web/client/assets/images/leadership/youofanye.png
  25. BIN
      web/client/assets/images/leadership/zuofanye.png
  26. 5
      web/client/index.ejs
  27. 2
      web/client/index.html
  28. 7
      web/client/src/layout/actions/global.js
  29. 5
      web/client/src/layout/components/header/index.js
  30. 18
      web/client/src/layout/containers/layout/index.js
  31. 83
      web/client/src/sections/fillion/actions/infor.js
  32. 59
      web/client/src/sections/fillion/components/bridgeTable.js
  33. 194
      web/client/src/sections/fillion/components/enforceTable.js
  34. 33
      web/client/src/sections/fillion/components/highways/highwaysdata.js
  35. 18
      web/client/src/sections/fillion/components/highwaysTable.js
  36. 115
      web/client/src/sections/fillion/components/infor/details.js
  37. 207
      web/client/src/sections/fillion/components/inforTable.js
  38. 264
      web/client/src/sections/fillion/components/operationalTable.js
  39. 51
      web/client/src/sections/fillion/components/project/project.js
  40. 14
      web/client/src/sections/fillion/components/promotionalTable.js
  41. 246
      web/client/src/sections/fillion/components/publicTable.js
  42. 102
      web/client/src/sections/fillion/components/transportationTable.js
  43. 5
      web/client/src/sections/organization/components/depModal.js
  44. 20
      web/client/src/sections/organization/components/userModal.js
  45. 4
      web/client/src/sections/organization/containers/user.js
  46. 12
      web/client/src/sections/quanju/actions/example.js
  47. 4
      web/client/src/sections/quanju/containers/footer/build/Leftbottom.js
  48. 2
      web/client/src/sections/quanju/containers/footer/build/Rightbottom.js
  49. 6
      web/client/src/sections/quanju/containers/footer/build/Rightcenter.js
  50. 15
      web/client/src/sections/quanju/containers/footer/build/index.js
  51. 4
      web/client/src/sections/quanju/containers/footer/build/style.less
  52. 15
      web/client/src/sections/quanju/containers/footer/conserve/index.js
  53. 2
      web/client/src/sections/quanju/containers/footer/conserve/left/left-bottom.js
  54. 2
      web/client/src/sections/quanju/containers/footer/conserve/right/right-bottom.js
  55. 3
      web/client/src/sections/quanju/containers/footer/conserve/right/right-center.js
  56. 13
      web/client/src/sections/quanju/containers/footer/conserve/right/right-top.js
  57. 2
      web/client/src/sections/quanju/containers/footer/gis/gis.js
  58. 30
      web/client/src/sections/quanju/containers/footer/guanli/LeftItem.js
  59. 28
      web/client/src/sections/quanju/containers/footer/guanli/index.js
  60. 1
      web/client/src/sections/quanju/containers/footer/guanli/style.less
  61. 2
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js
  62. 39
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js
  63. 33
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/handong.js
  64. 6
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js
  65. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/style.less
  66. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js
  67. 31
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js
  68. 98
      web/client/src/sections/quanju/containers/footer/leadership/left/echarts/lefttopecharts.js
  69. 5
      web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js
  70. 26
      web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js
  71. 47
      web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js
  72. 22
      web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js
  73. 14
      web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js
  74. 116
      web/client/src/sections/quanju/containers/footer/operation/left.js
  75. 2
      web/client/src/sections/quanju/containers/heand/index.js
  76. 8
      web/client/src/sections/quanju/containers/heand/style.less
  77. 8
      web/client/src/sections/quanju/containers/public/module.js
  78. 4
      web/client/src/sections/quanju/routes.js
  79. 17
      web/client/src/utils/webapi.js
  80. 15
      web/config.js
  81. 9737
      web/log/development.txt
  82. 2
      web/package.json
  83. 6
      web/routes/attachment/index.js

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

@ -2,6 +2,7 @@
const fs = require('fs');
const xlsxDownload = require('../../../../utils/xlsxDownload.js');
const moment = require('moment');
const request = require('superagent');
async function dataExport (ctx) {
try {
@ -105,6 +106,27 @@ async function dataExport (ctx) {
}
}
async function godTrans (ctx) {
try {
const models = ctx.fs.dc.models;
const { userId } = ctx.fs.api
const res = await request.get('https://report.amap.com/ajax/districtRank.do?linksType=1&cityCode=360100')
const data = JSON.parse(res.text)
const nanchang = data.find(item => item.name == '南昌县') || {}
ctx.status = 200
ctx.body = nanchang
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}
module.exports = {
dataExport
dataExport,
godTrans
};

28
api/app/lib/controllers/data/overspeed.js

@ -1,15 +1,16 @@
'use strict';
const moment = require('moment')
async function overspeedGet (ctx) {
try {
const models = ctx.fs.dc.models;
const { limit, page, nameOfInspectionPoint, licensePlate, numberOfAxles, overrunRateUpper, overrunRateFloor, testTime } = ctx.query
const sequelize = ctx.fs.dc.ORM;
let findOption = {
where: {
},
order: [['id', 'DESC']]
order: [['id', 'DESC']],
}
if (limit) {
findOption.limit = limit
@ -17,16 +18,19 @@ async function overspeedGet (ctx) {
if (page && limit) {
findOption.offset = page * limit
}
if (nameOfInspectionPoint) {
findOption.where.nameOfInspectionPoint = {
'$like': `%${nameOfInspectionPoint}%`
if (nameOfInspectionPoint || licensePlate) {
findOption.where['$or'] = {}
if (nameOfInspectionPoint) {
findOption.where['$or'].
nameOfInspectionPoint = { $like: `%${nameOfInspectionPoint}%` }
}
}
if (licensePlate) {
findOption.where.licensePlate = {
'$like': `%${licensePlate}%`
if (licensePlate) {
findOption.where['$or'].
licensePlate = { $like: `%${licensePlate}%` }
}
}
if (numberOfAxles) {
findOption.where.numberOfAxles = numberOfAxles
}
@ -41,9 +45,11 @@ async function overspeedGet (ctx) {
}
}
if (testTime) {
findOption.where.testTime = testTime
findOption.where.testTime = {
$between: [moment(testTime).startOf('day').format(), moment(testTime).endOf('day').format()]
}
}
const overspeedRes = await models.Overspeed.findAll(findOption)
const overspeedRes = await models.Overspeed.findAndCountAll(findOption)
ctx.status = 200;
ctx.body = overspeedRes

5
api/app/lib/controllers/data/road.js

@ -92,9 +92,8 @@ async function getRoadSection (ctx) {
if (road || sectionStart || sectionEnd) {
findOption.where['$or'] = {}
if (road) {
findOption.where['$or'].push = {
routeName: { $like: `%${road}%` }
}
findOption.where['$or'].
routeName = { $like: `%${road}%` }
}
if (sectionStart) {
findOption.where['$or'].

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

@ -9,7 +9,8 @@ async function get (ctx) {
let findOption = {
where: {
type
}
},
order: [['id', 'DESC']]
}
if (name) {
findOption.where.name = {
@ -88,7 +89,8 @@ async function specificGet (ctx) {
let findOption = {
where: {
type
}
},
order: [['id', 'DESC']]
}
if (nameOfBusinessOwner) {
findOption.where.nameOfBusinessOwner = {
@ -161,9 +163,10 @@ async function businessGet (ctx) {
const { nameOfBusinessOwner } = ctx.query;
let findOption = {
where:{
}
where: {
},
order: [['id', 'DESC']]
}
if (nameOfBusinessOwner) {
findOption.where.nameOfBusinessOwner = {
@ -213,7 +216,7 @@ async function businessDel (ctx) {
const models = ctx.fs.dc.models;
const { businessId } = ctx.params;
await models.Vehicle.MunicipalBusiness({
await models.MunicipalBusiness.destroy({
where: {
id: businessId
}

6
api/app/lib/controllers/organization/department.js

@ -10,7 +10,8 @@ async function getdep (ctx) {
where: {
// id: userInfo.departmentId
dependence: null,
delete: false
delete: false,
id: { $ne: 1 }
},
})
@ -21,7 +22,8 @@ async function getdep (ctx) {
order: [['id', 'asc']],
where: {
dependence: d.id,
delete: false
delete: false,
id: { $ne: 1 }
},
})
if (depRes.length)

2
api/app/lib/controllers/overview/conserve.js

@ -10,7 +10,7 @@ async function statistic (ctx) {
where: {
reportType: 'conserve',
},
attributes: ['id', 'road', 'time', 'projectType', 'projectType'],
attributes: ['id', 'road', 'time', 'projectType', 'projectType', 'roadSectionStart', 'roadSectionEnd'],
include: [{
model: models.User,
attributes: ['name']

40
api/app/lib/controllers/overview/operation.js

@ -10,25 +10,51 @@ async function busCarLevelList (ctx) {
attributes: ['id', 'company', 'fleet', 'vehicleLicensePlateNumber', 'line'],
})
for (let c of busCarRes) {
const { company, fleet, line } = c
const { company, fleet, vehicleLicensePlateNumber, line } = c
const corCompany = data.find(d => d.name === company)
if (!corCompany) {
data.push({
name: company,
name: company || '--',
child: [{
name: fleet,
child: [{ ...c.dataValues }]
name: fleet || '--',
child: [{
name: line || '--',
child: [{
id: c.id,
name: vehicleLicensePlateNumber,
}]
}]
}]
})
} else {
const corFleet = corCompany.child.find(d => d.name === fleet)
if (!corFleet) {
corCompany.child.push({
name: fleet,
child: [{ ...c.dataValues }]
name: fleet || '--',
child: [{
name: line || '--',
child: [{
id: c.id,
name: vehicleLicensePlateNumber || '--',
}]
}]
})
} else {
corFleet.child.push({ ...c.dataValues })
const corLine = corFleet.child.find(d => d.name === line)
if (!corLine) {
corFleet.child.push({
name: line || '--',
child: [{
id: c.id,
name: vehicleLicensePlateNumber || '--',
}]
})
} else {
corLine.child.push({
id: c.id,
name: vehicleLicensePlateNumber || '--',
})
}
}
}
}

5
api/app/lib/index.js

@ -5,7 +5,7 @@ const fs = require('fs');
const path = require('path');
const authenticator = require('./middlewares/authenticator');
// const apiLog = require('./middlewares/api-log');
const businessRest = require('./middlewares/business-rest');
// const businessRest = require('./middlewares/business-rest');
module.exports.entry = function (app, router, opts) {
app.fs.logger.log('info', '[FS-AUTH]', 'Inject auth and api mv into router.');
@ -15,7 +15,7 @@ module.exports.entry = function (app, router, opts) {
app.fs.api.logAttr = app.fs.api.logAttr || {};
router.use(authenticator(app, opts));
router.use(businessRest(app, router, opts));
// router.use(businessRest(app, router, opts));
// router.use(apiLog(app, opts));
router = routes(app, router, opts);
@ -23,7 +23,6 @@ module.exports.entry = function (app, router, opts) {
module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Sequelize, models: {} }
fs.readdirSync(path.join(__dirname, '/models')).forEach((filename) => {
console.log(filename);
require(`./models/${filename}`)(dc)
});

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

@ -98,7 +98,7 @@ module.exports = dc => {
},
testTime: {
index: 10,
type: DataTypes.STRING,
type: DataTypes.DATE,
allowNull: true,
defaultValue: null,
comment: "检测时间",

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

@ -28,7 +28,7 @@ module.exports = dc => {
},
video: {
index: 3,
type: DataTypes.ARRAY(DataTypes.INTEGER),
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: true,
defaultValue: null,
comment: null,

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

@ -15,6 +15,10 @@ module.exports = function (app, router, opts) {
app.fs.api.logAttr['GET/data/export'] = { content: '导出数据', visible: true };
router.get('/data/export', dataIndex.dataExport);
// god 交通
app.fs.api.logAttr['GET/data/god_trans'] = { content: '获取高德交通数据', visible: true };
router.get('/data/god_trans', dataIndex.godTrans);
// 运政
//客运车
async function setVehicleType (ctx, next) {

666
api/log/development.log

@ -10008,21 +10008,651 @@
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
2022-07-28 09:26:54.165 - debug: [FS-LOGGER] Init.
2022-07-28 09:26:54.278 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 09:26:54.278 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 09:31:20.509 - debug: [FS-LOGGER] Init.
2022-07-28 09:31:20.624 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 09:31:20.624 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 09:32:20.799 - debug: [FS-LOGGER] Init.
2022-07-28 09:32:20.888 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 09:32:20.889 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 10:12:11.608 - debug: [FS-LOGGER] Init.
2022-07-28 10:12:11.718 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 10:12:11.719 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 10:12:31.955 - debug: [FS-LOGGER] Init.
2022-07-28 10:12:32.043 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 10:12:32.043 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 10:24:23.635 - debug: [FS-LOGGER] Init.
2022-07-28 10:24:23.787 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 10:24:23.787 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 10:56:48.597 - debug: [FS-LOGGER] Init.
2022-07-28 10:56:48.738 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 10:56:48.738 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:01:45.098 - error: path: /department, error: 部门名称重复
2022-07-28 11:11:03.003 - debug: [FS-LOGGER] Init.
2022-07-28 11:11:03.152 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:11:03.152 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:15:03.862 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.routeName 不存在
2022-07-28 11:15:44.963 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.routeName 不存在
2022-07-28 11:15:54.542 - debug: [FS-LOGGER] Init.
2022-07-28 11:15:54.683 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:15:54.683 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:22:48.820 - error: path: /attachments/project, error: ConnectionTimeoutError: Connect timeout for 5000ms, GET https://uc.qbox.me/v2/query?ak=XuDgkao6cL0HidoMAPnA5OB10Mc_Ew08mpIfRJK5&bucket=dev-highways4good -2 (connected: false, keepalive socket: false, socketHandledRequests: 1, socketHandledResponses: 0)
headers: {}
2022-07-28 11:25:27.228 - error: path: /attachments/project, error: ConnectionTimeoutError: Connect timeout for 5000ms, GET https://uc.qbox.me/v2/query?ak=XuDgkao6cL0HidoMAPnA5OB10Mc_Ew08mpIfRJK5&bucket=dev-highways4good -2 (connected: false, keepalive socket: false, socketHandledRequests: 1, socketHandledResponses: 0)
headers: {}
2022-07-28 11:26:58.394 - debug: [FS-LOGGER] Init.
2022-07-28 11:26:58.544 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:26:58.545 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:27:13.713 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateFloorNum 不存在
2022-07-28 11:28:11.634 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateFloorNum 不存在
2022-07-28 11:29:54.392 - debug: [FS-LOGGER] Init.
2022-07-28 11:29:54.527 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:29:54.528 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:30:10.695 - debug: [FS-LOGGER] Init.
2022-07-28 11:30:10.821 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:30:10.821 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:30:18.025 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateNum 不存在
2022-07-28 11:31:03.650 - debug: [FS-LOGGER] Init.
2022-07-28 11:31:03.780 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:31:03.780 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:32:26.573 - error: path: /overspeed, error: Error: [{"fn":"to_number","args":[{"col":"overrun_rate"},"overrunRateNum"]}] is not a valid attribute definition. Please use the following format: ['attribute definition', 'alias']
2022-07-28 11:34:04.741 - debug: [FS-LOGGER] Init.
2022-07-28 11:34:04.868 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:34:04.868 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:35:26.010 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateNum 不存在
2022-07-28 11:41:22.839 - debug: [FS-LOGGER] Init.
2022-07-28 11:41:22.975 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:41:22.975 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:41:36.822 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:41:41.435 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:41:44.292 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:41:59.811 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateNum 不存在
2022-07-28 11:42:21.520 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateNum 不存在
2022-07-28 11:42:24.120 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 11:42:41.547 - debug: [FS-LOGGER] Init.
2022-07-28 11:42:41.691 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:42:41.691 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:42:47.680 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrunRateNum 不存在
2022-07-28 11:43:04.419 - debug: [FS-LOGGER] Init.
2022-07-28 11:43:04.547 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:43:04.548 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:43:15.318 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:43:24.596 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:43:34.908 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:43:47.933 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:44:36.055 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:44:38.384 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:44:56.858 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:44:59.778 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:45:40.566 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 11:47:53.514 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:47:58.067 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(character varying) 不存在
2022-07-28 11:48:16.678 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/1c5e6d3c-6dfe-4d22-b84b-0cb3b8f9fc1a/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 11:49:14.598 - debug: [FS-LOGGER] Init.
2022-07-28 11:49:14.736 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:49:14.736 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:50:47.712 - debug: [FS-LOGGER] Init.
2022-07-28 11:50:47.852 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:50:47.852 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:50:49.451 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/0a0ec3f8-0c9a-4a06-9210-d7fd0edad409/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 11:50:52.677 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 11:51:46.268 - debug: [FS-LOGGER] Init.
2022-07-28 11:51:46.397 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:51:46.397 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:52:00.226 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overspeed.overrun_rate_number 不存在
2022-07-28 11:52:16.967 - debug: [FS-LOGGER] Init.
2022-07-28 11:52:17.102 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 11:52:17.102 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 11:52:18.980 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 12:21:09.676 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/a1ded1db-8662-49aa-b56d-4174353bdb5f/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:22:50.971 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/a1ded1db-8662-49aa-b56d-4174353bdb5f/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:23:41.512 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "[object Object]"
2022-07-28 12:26:57.050 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "[object Object]"
2022-07-28 12:27:35.344 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/e816d7c2-e74a-4bc3-9603-33b0e3ab8b7d/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:27:52.290 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/e816d7c2-e74a-4bc3-9603-33b0e3ab8b7d/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:28:11.844 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/e816d7c2-e74a-4bc3-9603-33b0e3ab8b7d/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:28:42.599 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/e816d7c2-e74a-4bc3-9603-33b0e3ab8b7d/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:28:56.404 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/e816d7c2-e74a-4bc3-9603-33b0e3ab8b7d/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 12:31:29.894 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/22ec74e5-57b1-4ac9-8016-9e39f50c812e/220223_104306-多端开发介绍和课程导读接口文档.zip"
2022-07-28 13:11:59.791 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:12:22.385 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "5 9"
2022-07-28 13:13:15.838 - debug: [FS-LOGGER] Init.
2022-07-28 13:13:15.973 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:13:15.974 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:14:25.429 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 13:14:30.607 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 13:19:59.885 - debug: [FS-LOGGER] Init.
2022-07-28 13:20:00.024 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:20:00.025 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:24:27.762 - debug: [FS-LOGGER] Init.
2022-07-28 13:24:27.900 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:24:27.900 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:25:24.794 - debug: [FS-LOGGER] Init.
2022-07-28 13:25:24.920 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:25:24.920 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:31:28.104 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/5dc3ee87-1566-4f45-9f20-f267ae3a3e1e/0079KAw5gy1gwifj2b337j31uo18gqiw.jpg"
2022-07-28 13:32:07.834 - debug: [FS-LOGGER] Init.
2022-07-28 13:32:07.988 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:32:07.989 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:32:30.860 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/5dc3ee87-1566-4f45-9f20-f267ae3a3e1e/0079KAw5gy1gwifj2b337j31uo18gqiw.jpg"
2022-07-28 13:32:46.767 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "project/5dc3ee87-1566-4f45-9f20-f267ae3a3e1e/0079KAw5gy1gwifj2b337j31uo18gqiw.jpg"
2022-07-28 13:33:42.144 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "values.videoname"
2022-07-28 13:34:41.455 - error: path: /overspeed, error: SequelizeDatabaseError: 函数 to_number(double precision, unknown) 不存在
2022-07-28 13:34:52.766 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "11."
2022-07-28 13:34:57.858 - debug: [FS-LOGGER] Init.
2022-07-28 13:34:57.981 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:34:57.982 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:35:01.022 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "11."
2022-07-28 13:36:17.148 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "5.9"
2022-07-28 13:37:45.404 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "11."
2022-07-28 13:38:39.969 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 13:38:55.389 - error: path: /overspeed, error: SequelizeDatabaseError: 字段 overspeed.overrun_rate_number 不存在
2022-07-28 13:39:10.601 - debug: [FS-LOGGER] Init.
2022-07-28 13:39:10.742 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 13:39:10.742 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 13:40:31.524 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "7.1"
2022-07-28 13:59:58.623 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:59:58.634 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:59:58.635 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:59:58.635 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:59:58.635 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 13:59:58.641 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.343 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.352 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.352 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.352 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.353 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:01.353 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.416 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.416 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.416 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.417 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.417 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:07.417 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.257 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.257 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.257 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.257 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.257 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:10.265 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:13.191 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:15.008 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:15.009 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:15.009 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:15.009 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:15.013 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.804 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.818 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.818 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.819 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.819 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:17.819 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.609 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.621 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.621 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.621 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.621 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:20.621 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:24.279 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:24.294 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:24.294 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:00:24.294 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:00.891 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:02.175 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:02.175 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:02.175 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:02.498 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:04.972 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:06.454 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:06.454 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:06.454 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:06.465 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:07.605 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:07.668 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:01:07.668 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:04.703 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:05.278 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:20.469 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:22.371 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:22.379 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:22.380 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:22.397 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:22.409 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:24.984 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:24.984 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:34.751 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:34.776 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:35.286 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:35.286 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:35.287 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:35.287 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:37.261 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:37.284 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:37.871 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:37.871 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:37.871 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:54.018 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:54.032 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:54.033 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:54.043 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:02:54.043 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:39.663 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:41.161 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:41.162 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:41.162 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:47.305 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:47.305 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:54.401 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:54.401 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:54.401 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:03:56.400 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:05.720 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:05.721 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:05.721 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:05.907 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:05.907 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:08.723 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:08.724 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:08.724 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:52.626 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:04:52.633 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:11.290 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:11.291 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:11.291 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:11.291 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:11.291 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:12.916 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:12.916 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:12.924 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:06:40.701 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:08:04.722 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:10:29.018 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:10:37.710 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:10:37.747 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:10:41.910 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:11:41.523 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:11:51.579 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:11:52.211 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:11:52.220 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:16:58.112 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:16:58.707 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:16:59.386 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:16:59.387 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:16:59.387 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:00.016 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:01.899 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:02.483 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:04.392 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:04.393 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:04.393 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:05.060 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:06.927 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:07.548 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:08.155 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:08.156 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:08.156 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:08.830 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:10.027 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:10.702 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:10.707 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:10.707 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:17:30.455 - error: path: /publicity, error: SequelizeDatabaseError: 无效的整数类型输入语法: "5.9"
2022-07-28 14:17:55.868 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:18:35.765 - debug: [FS-LOGGER] Init.
2022-07-28 14:18:35.919 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 14:18:35.919 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 14:41:49.305 - debug: [FS-LOGGER] Init.
2022-07-28 14:41:49.450 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 14:41:49.450 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 14:50:17.675 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:50:21.269 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:50:27.342 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:50:44.904 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 14:50:49.462 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 15:06:06.572 - error: path: /vehicle/business/76, error: TypeError: Cannot read property 'MunicipalBusiness' of undefined
2022-07-28 15:06:12.715 - error: path: /vehicle/business/78, error: TypeError: Cannot read property 'MunicipalBusiness' of undefined
2022-07-28 15:07:46.169 - error: path: /vehicle/business/76, error: TypeError: Cannot read property 'MunicipalBusiness' of undefined
2022-07-28 15:08:46.244 - error: path: /vehicle/business/2, error: TypeError: Cannot read property 'MunicipalBusiness' of undefined
2022-07-28 15:09:12.813 - error: path: /vehicle/business/2, error: TypeError: Cannot read property 'MunicipalBusiness' of undefined
2022-07-28 15:09:23.653 - debug: [FS-LOGGER] Init.
2022-07-28 15:09:23.792 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 15:09:23.792 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 15:09:24.585 - error: path: /vehicle/business/2, error: TypeError: Class constructor model cannot be invoked without 'new'
2022-07-28 15:09:28.933 - error: path: /vehicle/business/2, error: TypeError: Class constructor model cannot be invoked without 'new'
2022-07-28 15:09:48.615 - error: path: /vehicle/business/2, error: TypeError: Class constructor model cannot be invoked without 'new'
2022-07-28 15:09:53.290 - error: path: /vehicle/business/2, error: TypeError: Class constructor model cannot be invoked without 'new'
2022-07-28 15:10:46.636 - debug: [FS-LOGGER] Init.
2022-07-28 15:10:46.765 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 15:10:46.766 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 15:39:33.213 - error: path: /project, error: SequelizeValidationError: notNull Violation: project.done cannot be null
2022-07-28 15:48:32.159 - error: path: /project, error: SequelizeValidationError: notNull Violation: project.done cannot be null
2022-07-28 15:49:08.730 - error: path: /project, error: SequelizeValidationError: notNull Violation: project.done cannot be null
2022-07-28 16:10:58.750 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:10:59.157 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:10:59.630 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:11:00.124 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:11:14.126 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:11:55.852 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:20:36.892 - debug: [FS-LOGGER] Init.
2022-07-28 16:20:37.043 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 16:20:37.044 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 16:27:40.520 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:41.289 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:41.854 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:42.169 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:42.348 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:42.520 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:42.678 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:42.849 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:43.025 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:43.382 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:43.700 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:44.156 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:44.606 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:44.830 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:44.992 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:45.143 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:45.301 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:45.459 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:45.627 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:27:46.059 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:31:41.170 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:31:42.147 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:52:41.716 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:07.292 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.360 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.369 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.369 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.585 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.591 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.591 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.974 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.978 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.983 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.983 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:50.986 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.048 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.377 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.385 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.391 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.391 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.391 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.395 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.778 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.787 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.787 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.792 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.792 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:51.865 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.192 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.196 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.202 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.202 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.202 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.205 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.600 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.609 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.615 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.615 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.615 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:52.619 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.014 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.022 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.030 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.030 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.030 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.033 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.427 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.439 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.445 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.445 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.450 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.524 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.853 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.857 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.862 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.863 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.863 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:53.866 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.276 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.287 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.293 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.294 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.294 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.299 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.710 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.721 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.728 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.728 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.728 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:54.728 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.141 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.150 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.157 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.157 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.158 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.161 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.578 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.588 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.594 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.595 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.595 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:55.677 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.031 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.038 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.038 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.038 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.041 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.043 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.460 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.471 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.471 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.471 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.476 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.476 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.899 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.909 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.909 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.910 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.914 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:56.914 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.343 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.355 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.355 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.355 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.360 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.360 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.510 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:55:57.513 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:07.534 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:09.144 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:14.832 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:44.048 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:46.831 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:56:58.491 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:04.128 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:05.527 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:06.604 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:07.640 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:08.086 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:08.494 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:08.943 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:09.277 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:09.620 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:09.886 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:57:11.158 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:14.202 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:15.942 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:23.962 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:23.968 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:23.968 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.304 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.309 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.309 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.395 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.798 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.802 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.807 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.807 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.807 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:24.811 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.282 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.291 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.295 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.302 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.302 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.302 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.794 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.794 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.797 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.800 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.805 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:25.805 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.292 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.303 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.308 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.309 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.315 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.315 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.813 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.822 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.829 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.829 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.829 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:26.833 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.325 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.334 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.340 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.340 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.340 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.345 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.839 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.848 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.854 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.854 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.854 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:27.859 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.356 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.367 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.372 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.372 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.378 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.378 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.885 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.895 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.901 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.901 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.901 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:28.904 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.020 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.486 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.491 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.492 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.492 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.494 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:29.799 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.245 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.251 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.251 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.251 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.256 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:31.259 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:33.319 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:34.196 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:35.877 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:58:36.614 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:59:10.315 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 16:59:13.576 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 17:03:05.500 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 17:03:14.504 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 17:03:44.884 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:38.727 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:40.593 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:45.944 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:52.903 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:54.015 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:04:55.268 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:05:06.184 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:05:08.195 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:07.534 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:09.194 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:12.440 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:14.218 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:15.950 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:18.057 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:19.398 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:23.788 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:09:48.459 - error: [FS-ERRHD]
{
message: 'Unexpected token } in JSON at position 192',
stack: 'SyntaxError: Unexpected token } in JSON at position 192\n' +
' at JSON.parse (<anonymous>)\n' +
' at parse (c:\\_WorkCode\\四好公路\\api\\node_modules\\koa-bodyparser\\node_modules\\co-body\\lib\\json.js:62:17)\n' +
' at c:\\_WorkCode\\四好公路\\api\\node_modules\\koa-bodyparser\\node_modules\\co-body\\lib\\json.js:45:22\n' +
' at runMicrotasks (<anonymous>)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:97:5)',
status: 400,
body: '{\r\n' +
' "type": "出租车",\r\n' +
' "nameOfBusinessOwner": "率好心究技",\r\n' +
' "productName": "转度成为报",\r\n' +
' "vehicleRegistry": "exercitation fugiat",\r\n' +
' "licensePlateNumber": "14",\r\n' +
' "fuelType": "do",\r\n' +
'}'
}
2022-07-28 17:10:00.985 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:12:46.561 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:12:48.321 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:13:21.698 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:13:22.794 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:13:23.534 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:13:24.021 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:22:15.558 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:22:23.177 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:33:10.476 - error: path: /attachments/project, error: ConnectionTimeoutError: Connect timeout for 5000ms, GET https://uc.qbox.me/v2/query?ak=XuDgkao6cL0HidoMAPnA5OB10Mc_Ew08mpIfRJK5&bucket=dev-highways4good -2 (connected: false, keepalive socket: false, socketHandledRequests: 1, socketHandledResponses: 0)
headers: {}
2022-07-28 17:49:20.660 - debug: [FS-LOGGER] Init.
2022-07-28 17:49:20.830 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 17:49:20.831 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 17:51:57.353 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.164 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.165 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.167 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.167 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.168 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.168 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.258 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.262 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.264 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.265 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.265 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.275 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.323 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.357 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.357 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.358 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.366 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.367 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.385 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.450 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.457 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.459 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.459 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.461 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 17:52:09.462 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:02:33.056 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:02:55.961 - debug: [FS-LOGGER] Init.
2022-07-28 18:02:56.103 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 18:02:56.103 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 18:05:22.460 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:08:31.559 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:09:01.019 - error: path: /overspeed, error: ReferenceError: moment is not defined
2022-07-28 18:09:14.448 - error: path: /overspeed, error: ReferenceError: moment is not defined
2022-07-28 18:09:32.771 - debug: [FS-LOGGER] Init.
2022-07-28 18:09:32.917 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2022-07-28 18:09:32.917 - info: [FS-AUTH] Inject auth and api mv into router.
2022-07-28 18:09:44.654 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:10:27.694 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:11:21.499 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:11:39.323 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:12:18.140 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:12:38.386 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:13:28.867 - error: path: /publicity, error: SequelizeValidationError: notNull Violation: publicity.name cannot be null
2022-07-28 18:15:02.227 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:15:38.574 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:16:26.812 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:16:31.554 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:16:38.179 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:16:54.144 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:17:03.129 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:17:16.730 - error: path: /publicity, error: SequelizeUniqueConstraintError: 重复键违反唯一约束"publicity_id_uindex"
2022-07-28 18:34:05.138 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 18:34:22.641 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 18:34:55.231 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 18:35:45.669 - error: path: /publicity, error: TypeError: values.map is not a function
2022-07-28 18:37:40.324 - error: path: /publicity, error: TypeError: values.map is not a function

2
scripts/0.0.1/data/1_update_user_dep_data.sql

@ -5,4 +5,4 @@ INSERT INTO "department" VALUES (1, '默认部门', NULL, false);
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO "user" VALUES (1, '管理员', 'SuperAdmin', 'e10adc3949ba59abbe56e057f20f883e', 1, 'f', NULL, NULL, NULL, TRUE);
INSERT INTO "user" VALUES (1, '管理员', 'SuperAdmin', 'e10adc3949ba59abbe56e057f20f883e', 1, 'f', NULL, 'SuperAdmin', NULL, TRUE);

BIN
scripts/0.0.1/data/工具脚本(无需执行)/data/公交/运营线路/(四公司)南昌公交运营线路基础信息表2022年6月(总表).xlsx

Binary file not shown.

BIN
scripts/0.0.1/data/工具脚本(无需执行)/data/治超/非现场处罚总台账更新至2022.7.5(最新).xlsx

Binary file not shown.

21
scripts/0.0.1/data/工具脚本(无需执行)/dataIn.js

@ -6,13 +6,14 @@ try {
const XLSX = require('xlsx')
const path = require('path')
const fs = require("fs");
const moment = require('moment');
// 连接数据库
const pool = new Pool({
user: 'postgres',
host: '10.8.30.32',
database: 'highways4good',
// database: 'highways4good_initdata',
// database: 'highways4good',
database: 'highways4good_initd',
password: '123',
port: 5432,
})
@ -166,6 +167,22 @@ try {
}
}
if (f.n == '治超') {
if (k == '检测时间') {
if (v) {
v = v.toString().replace(/\//g, '-').replace(/"/g, '');
if (moment(v).isValid()) {
insertValues.push(moment(v).format())
} else {
insertValues.push(null)
}
} else {
insertValues.push(null)
}
continue
}
}
insertValues.push(v);
}
}

1
scripts/0.0.1/data/工具脚本(无需执行)/package.json

@ -11,6 +11,7 @@
"license": "ISC",
"dependencies": {
"crypto-js": "^4.1.1",
"moment": "^2.29.4",
"pg": "^7.18.2",
"superagent": "^8.0.0",
"xlsx": "^0.17.1"

4
scripts/0.0.1/data/工具脚本(无需执行)/治超_数据脚本对应.sql

@ -7,11 +7,11 @@ ON overspeed (id); alter TABLE overspeed add constraint overspeed_pk primary key
ON column overspeed.Districtcounty is '区/县'; alter TABLE overspeed add Name_Of_Inspection_Point varchar(1024); comment
ON column overspeed.Name_Of_Inspection_Point is '检测点名称'; alter TABLE overspeed add License_Plate varchar(1024); comment
ON column overspeed.License_Plate is '车牌号码'; alter TABLE overspeed add Number_Of_Axles varchar(1024); comment
ON column overspeed.Number_Of_Axles is '车轴数'; alter TABLE overspeed add Overrun_Rate varchar(1024); comment
ON column overspeed.Number_Of_Axles is '车轴数'; alter TABLE overspeed add Overrun_Rate float; comment
ON column overspeed.Overrun_Rate is '超限率'; alter TABLE overspeed add Overrun_Weight varchar(1024); comment
ON column overspeed.Overrun_Weight is '超限重量'; alter TABLE overspeed add Gross_Vehicle_Weight varchar(1024); comment
ON column overspeed.Gross_Vehicle_Weight is '车货总重'; alter TABLE overspeed add Vehicle_Cargo_Weight_Limit varchar(1024); comment
ON column overspeed.Vehicle_Cargo_Weight_Limit is '车货限重'; alter TABLE overspeed add Test_Time varchar(1024); comment
ON column overspeed.Vehicle_Cargo_Weight_Limit is '车货限重'; alter TABLE overspeed add Test_Time timestamp; comment
ON column overspeed.Test_Time is '检测时间'; alter TABLE overspeed add Name_Of_Business_Owner varchar(1024); comment
ON column overspeed.Name_Of_Business_Owner is '经营业户名称'; alter TABLE overspeed add Business_Address varchar(1024); comment
ON column overspeed.Business_Address is '经营业户地址'; alter TABLE overspeed add Notifier varchar(1024); comment

110125
scripts/0.0.1/schema/1.init_table.sql

File diff suppressed because it is too large

2
weapp/src/config.js

@ -8,7 +8,7 @@ const baseConfig = {
};
const development = {
baseUrl: 'https://3024-117-90-36-177.jp.ngrok.io',
baseUrl: 'https://c5a6-117-90-37-10.ap.ngrok.io',
webUrl: 'https://smartwater.anxinyun.cn',
pcode: 'fce4afe2-5b6a-408a-ab18-a2afa7fa027c',
imgUrl: 'http://test.resources.anxinyun.cn/',

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

@ -20,7 +20,7 @@ function Index() {
const { params: { filter } } = router
const [isPatrol, setIsPatrol] = useState(true)
const [datePicker, setDatePicker] = useState(moment().format('YYYY-MM-DD'))
const [datePicker, setDatePicker] = useState('')
const [listData, setListData] = useState([])
const [filterText, setFilterText] = useState('')
const [systemInfo, setSystemInfo] = useState('')
@ -51,8 +51,8 @@ function Index() {
const data = {
limit,
page,
startTime: datePicker + ' 00:00:00',
endTime: datePicker + ' 23:59:59',
startTime: datePicker ? datePicker + ' 00:00:00' : '',
endTime: datePicker ? datePicker + ' 23:59:59' : '',
keyword: filterText,
reportType: isPatrol ? 'patrol' : 'conserve',
userId: filter === 'my' ? userInfo.id : '',

20
web/client/assets/color.less

@ -1128,10 +1128,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-mentions-dropdown-menu-item-active {background-color: @item-hover-bg;}
.ant-menu-item-danger.ant-menu-item {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{picker-date-hover-range-border-color}", 4)`);}
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{select-clear-background}", 1)`);}
.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: color(~`colorPalette("@{picker-date-hover-range-border-color}", 4)`);}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{select-clear-background}", 1)`);}
.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;}
@ -1702,11 +1702,11 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-checkable:active, .ant-tag-checkable-checked {color: #fff;}
.ant-tag-checkable-checked {background-color: @primary-color;}
.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-tag-pink {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;}
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;}
.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-magenta {color: #c41d7f;background: #fff0f6;border-color: #ffadd2;}
.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);border-color: #ffadd2;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{picker-date-hover-range-border-color}", 4)`);border-color: #ffa39e;}
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{select-clear-background}", 1)`);border-color: #ffa39e;}
.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;}
@ -1714,17 +1714,17 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;}
.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;}
.ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;}
.ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;}
.ant-tag-gold {color: #d48806;background: color(~`colorPalette("@{error-color-deprecated-border}", 1)`);border-color: #ffe58f;}
.ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;}
.ant-tag-cyan {color: #08979c;background: #e6fffb;border-color: #87e8de;}
.ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;}
.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;}
.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{steps-nav-arrow-color}", 1)`);border-color: #eaff8f;}
.ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;}
.ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;}
.ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;}
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{pagination-item-input-bg}", 1)`);border-color: color(~`colorPalette("@{pagination-item-input-bg}", 3)`);}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{calendar-input-bg}", 2)`);border-color: #adc6ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: #f9f0ff;border-color: #d3adf7;}
.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;}
@ -1963,7 +1963,7 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography
.ant-upload-list-picture .ant-upload-list-item-error, .ant-upload-list-picture-card .ant-upload-list-item-error {border-color: #ff4d4f;}
.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;}
.ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;}
.ant-upload-list-picture .ant-upload-list-item-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='color(~`colorPalette("@{pagination-item-input-bg}", 1)`)'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{pagination-item-input-bg}", 1)`)'] {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

5
web/client/index.ejs

@ -15,15 +15,16 @@
}
</script>
<script src="https://webapi.amap.com/maps?v=2.0&key=00f9a29dedcdbd8befec3dfe0cef5003&plugin=AMap.Adaptor,AMap.Scale,AMap.ToolBar,AMap.DistrictSearch,AMap.Geocoder,AMap.CustomLayer,Map3D,ElasticMarker"></script>
<script src="https://webapi.amap.com/loca?v=2.0.0&key=00f9a29dedcdbd8befec3dfe0cef5003"></script>
</head>
<body style="background: transparent">
<link
<!-- <link
rel="stylesheet/less"
type="text/css"
href="/assets/color.less"
rel="external nofollow"
/>
/> -->
<script>
window.less = {

2
web/client/index.html

@ -18,7 +18,7 @@
</head>
<body>
<link rel="stylesheet/less" type="text/css" href="/assets/color.less" rel="external nofollow" />
<!-- <link rel="stylesheet/less" type="text/css" href="/assets/color.less" rel="external nofollow" /> -->
<script>
window.less = {
async: false,

7
web/client/src/layout/actions/global.js

@ -3,7 +3,7 @@ import { RouteRequest } from '@peace/utils';
import { RouteTable } from '$utils'
export const INIT_LAYOUT = 'INIT_LAYOUT';
export function initLayout(title, copyright, sections, actions) {
export function initLayout (title, copyright, sections, actions) {
return {
type: INIT_LAYOUT,
payload: {
@ -16,7 +16,7 @@ export function initLayout(title, copyright, sections, actions) {
}
export const RESIZE = 'RESIZE';
export function resize(clientHeight, clientWidth) {
export function resize (clientHeight, clientWidth) {
return {
type: RESIZE,
payload: {
@ -27,10 +27,11 @@ export function resize(clientHeight, clientWidth) {
}
export const INIT_API_ROOT = 'INIT_API_ROOT';
export function initApiRoot() {
export function initApiRoot () {
return dispatch => {
RouteRequest.get(RouteTable.apiRoot).then(res => {
localStorage.setItem('tyApiRoot', res.root);
localStorage.setItem('qndmn', res.qndmn);
dispatch({
type: INIT_API_ROOT,
payload: {

5
web/client/src/layout/components/header/index.js

@ -52,10 +52,11 @@ const Header = props => {
<div id="nav" className={styles['header-nav']}>
<Menu
mode='horizontal'
selectedKeys={[current]} style={{ border: 0 }}
selectedKeys={[current]}
style={{ border: 0 }}
onClick={handelClick}
>
<div style={{ display: 'inline-block', cursor: "pointer" }} onClick={() => history.push(`/quanju`)}>进入大屏</div>
<div style={{ display: 'inline-block', cursor: "pointer" }} onClick={() => history.push(`/screen/cockpit`)}>进入大屏</div>
<Menu.SubMenu key="user" title={
<div style={{
margin: '0 8px'

18
web/client/src/layout/containers/layout/index.js

@ -51,15 +51,9 @@ const LayoutContainer = props => {
})
}, [true])
useEffect(() => {
window.less.modifyVars(themeName == 'light' ? lightVars : darkVars).then(() => {
resize_(collapsed)
}).catch(error => {
resize_(collapsed)
message.error(`主题切换失败`);
});
scrollbar = new PerfectScrollbar('#page-content', { suppressScrollX: true });
}, [])
useEffect(() => {
NProgress.done();
if (!user || !user.authorized) {
@ -89,13 +83,13 @@ const LayoutContainer = props => {
padding: '8px',
height: clientHeight - 16 + 68,
}
if (themeName == 'light') {
contentStyle.background = '#fff';
}
// if (themeName == 'light') {
contentStyle.background = '#fff';
// }
return (
<Layout id="layout">
<Layout.Header style={{ padding: 0 }} >
<Layout.Header style={{ padding: 0, background: '#fff' }} >
<Header
user={user}
pathname={location.pathname}
@ -138,7 +132,7 @@ const LayoutContainer = props => {
)
}
function mapStateToProps(state) {
function mapStateToProps (state) {
const { global, auth, ajaxResponse } = state;
return {
title: global.title,

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

@ -31,7 +31,7 @@ export function getOperaTional(query) {
actionType: 'GET_OPERA_TIONAL',
url: ApiTable.getOperaTional,
msg: { error: '获取客运信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putOperaTional(query) {
@ -42,7 +42,7 @@ export function putOperaTional(query) {
actionType: 'PUT_OPERA_TIONAL',
url: ApiTable.putOperaTional,
msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getSpecificVehicle(query) {
@ -53,7 +53,7 @@ export function getSpecificVehicle(query) {
actionType: 'GET_SPECIFIC_VEHICLE',
url: ApiTable.getSpecificVehicle,
msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putSpecificVehicle(query) {
@ -64,7 +64,7 @@ export function putSpecificVehicle(query) {
actionType: 'put_SPECIFIC_VEHICLE',
url: ApiTable.putSpecificVehicle,
msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putHouseholds(query) {
@ -75,7 +75,7 @@ export function putHouseholds(query) {
actionType: 'put_HOUSEHOLDS',
url: ApiTable.putHouseholds,
msg: { error: '编辑业户信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getHouseholds(query) {
@ -86,7 +86,7 @@ export function getHouseholds(query) {
actionType: 'GET_HOUSEHOLDS',
url: ApiTable.getHouseholds,
msg: { error: '获取业户信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getRoadway(query) {
@ -97,7 +97,7 @@ export function getRoadway(query) {
actionType: 'GET_ROADWAY',
url: ApiTable.getRoadway,
msg: { error: '获取道路信息失败' },
// reducer: { name: 'roads' }
});
}
export function putRoadway(query) {
@ -108,7 +108,7 @@ export function putRoadway(query) {
actionType: 'PUT_ROADWAY',
url: ApiTable.putRoadway,
msg: { error: '编辑道路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getBridge(query) {
@ -119,7 +119,7 @@ export function getBridge(query) {
actionType: 'GET_BRIDGE',
url: ApiTable.getBridge,
msg: { error: '获取桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putBridge(query) {
@ -130,7 +130,7 @@ export function putBridge(query) {
actionType: 'PUT_BRIDGE',
url: ApiTable.putBridge,
msg: { error: '编辑桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getProject(query) {
@ -141,7 +141,7 @@ export function getProject(query) {
actionType: 'GET_PROJECT',
url: ApiTable.getProject,
msg: { error: '获取工程信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putProject(query) {
@ -152,7 +152,7 @@ export function putProject(query) {
actionType: 'GET_PROJECT',
url: ApiTable.putProject,
msg: { error: '编辑工程信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getHighways(query) {
@ -163,7 +163,7 @@ export function getHighways(query) {
actionType: 'GET_HIGHWAYS',
url: ApiTable.getHighways,
msg: { error: '获取路政信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putHighways(query) {
@ -174,7 +174,7 @@ export function putHighways(query) {
actionType: 'GET_HIGHWAYS',
url: ApiTable.putHighways,
msg: { error: '编辑路政信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getCircuit(query) {
@ -185,7 +185,7 @@ export function getCircuit(query) {
actionType: 'GET_CIRCUIT',
url: ApiTable.getCircuit,
msg: { error: '获取线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putCircuit(query) {
@ -196,7 +196,7 @@ export function putCircuit(query) {
actionType: 'PUT_CIRCUIT',
url: ApiTable.putCircuit,
msg: { error: '编辑线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function getVehicle(query) {
@ -207,7 +207,7 @@ export function getVehicle(query) {
actionType: 'GET_VEHICLE',
url: ApiTable.getVehicle,
msg: { error: '获取车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function putVehicle(query) {
@ -218,7 +218,7 @@ export function putVehicle(query) {
actionType: 'PUT_VEHICLE',
url: ApiTable.putVehicle,
msg: { error: '编辑车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delRoadway(query) {
@ -228,7 +228,7 @@ export function delRoadway(query) {
actionType: 'DEL_ROADWAY',
url: ApiTable.delRoadway.replace("{roadId}", query?.roadId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delProject(query) {
@ -238,7 +238,7 @@ export function delProject(query) {
actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace("{projectId}", query?.projectId),
msg: { error: '删除工程信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delBridge(query) {
@ -248,7 +248,7 @@ export function delBridge(query) {
actionType: 'DEL_BRIDGE',
url: ApiTable.delBridge.replace("{bridgeId}", query?.bridgeId),
msg: { error: '删除桥梁信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delSpecificVehicle(query) {
@ -258,7 +258,7 @@ export function delSpecificVehicle(query) {
actionType: 'DEL_SPECIFICVENICLE',
url: ApiTable.delSpecificVehicle.replace("{vehicleId}", query?.vehicleId),
msg: { error: '删除车辆信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delHouseholds(query) {
@ -268,7 +268,7 @@ export function delHouseholds(query) {
actionType: 'DEL_HOUSEHOLDS',
url: ApiTable.delHouseholds.replace("{businessId}", query?.businessId),
msg: { error: '删除业户信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delCircuit(query) {
@ -278,7 +278,7 @@ export function delCircuit(query) {
actionType: 'DEL_CIRCUIT',
url: ApiTable.delCircuit.replace("{lineId}", query?.lineId),
msg: { error: '删除运营线路信息失败' },
// reducer: { name: 'reportstatistic' }
});
}
export function delVehicle(query) {
@ -288,6 +288,39 @@ export function delVehicle(query) {
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: '获取治超信息失败' },
});
}
export function putPurchase(query) {
return dispatch => basicAction({
type: 'put',
dispatch: dispatch,
data: query,
actionType: 'PUT_PURCHASE',
url: ApiTable.putPurchase,
msg: { error: '获取治超信息失败' },
});
}
export function delPurchase(query) {
return dispatch => basicAction({
type: 'del',
dispatch: dispatch,
actionType: 'DEL_PURCHASE',
url: ApiTable.delPurchase.replace("{overspeedId}", query?.overspeedId),
msg: { error: '删除车辆信息失败' },
});
}

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

@ -4,7 +4,7 @@ import { Spin, Button, Popconfirm, Badge } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
import { getBridge, getProject,delBridge,delProject } from "../actions/infor"
import { getBridge, getProject, delBridge, delProject } from "../actions/infor"
import UserModal from './infor/details';
import ProjectModal from './project/project';
@ -26,7 +26,23 @@ const BrideTable = (props) => {
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan,whichofits,delet])
useEffect(() => { ref.current.reload() }, [whichofits, delet])
const deldata = (id) => { // 桥梁
const query = {
bridgeId: id
}
dispatch(delBridge(query)).then((res) => {
setDelet(res)
})
}
const deldatas = (id) => { // 工程
const query = {
projectId: id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}
const columns = {
tab1: [
{
@ -1493,16 +1509,10 @@ const BrideTable = (props) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
bridgeId: record.id
}
dispatch(delBridge(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1683,16 +1693,9 @@ const BrideTable = (props) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
projectId: record.id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button><Popconfirm title='' onConfirm={() => { deldatas(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1809,20 +1812,20 @@ const BrideTable = (props) => {
dataSource={counts || []}
request={async (params) => {
if(whichofits=='qiaoliang'){
if (whichofits == 'qiaoliang') {
const query = {
bridgeName:sitename
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'){
} if (whichofits == 'gongcheng') {
const query = {
type: 'bridge',
// type:sitename
@ -1835,7 +1838,7 @@ const BrideTable = (props) => {
total: res.payload.data ? res.payload.data.count : 0
}
}
}}
search={{
defaultCollapsed: false,
@ -1861,6 +1864,7 @@ const BrideTable = (props) => {
rewkeys={'bridge'}
data={date}
recortd={recortd}
setDelet={setDelet}
// sitename={sitename}
setRecortd={setRecortd}
/> : ''}
@ -1870,6 +1874,7 @@ const BrideTable = (props) => {
modalRecord={modalRecord}
typecard={typecard}
rewkeys={'bridge'}
setDelet={setDelet}
recortd={recortd}
setRecortd={setRecortd}
/> : ''}

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

@ -10,9 +10,9 @@ import UserModal from './infor/details';
const enforceTable = (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 [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);
@ -95,7 +95,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time3',
valueType: 'dateRange',
initialValue: day,
width: 120,
@ -110,7 +110,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time4',
valueType: 'dateRange',
initialValue: day,
width: 120,
render: (dom, record) => {
@ -124,7 +124,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time5',
valueType: 'dateRange',
initialValue: day,
width: 120,
render: (dom, record) => {
@ -138,7 +138,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time6',
valueType: 'dateRange',
initialValue: day,
width: 120,
render: (dom, record) => {
@ -152,7 +152,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time7',
valueType: 'dateRange',
initialValue: day,
width: 120,
render: (dom, record) => {
@ -166,7 +166,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time8',
valueType: 'dateRange',
initialValue: day,
width: 120,
render: (dom, record) => {
@ -180,7 +180,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -195,7 +195,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -210,7 +210,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -225,7 +225,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -240,7 +240,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -255,7 +255,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -270,7 +270,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -285,7 +285,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -300,7 +300,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -315,7 +315,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -330,7 +330,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -345,7 +345,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -360,7 +360,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -375,7 +375,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -390,7 +390,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -405,7 +405,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -420,7 +420,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -435,7 +435,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -450,7 +450,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -465,7 +465,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -480,7 +480,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -495,7 +495,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -510,7 +510,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -525,7 +525,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -540,7 +540,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -555,7 +555,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -570,7 +570,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -585,7 +585,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -600,7 +600,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -615,7 +615,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -630,7 +630,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -645,7 +645,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -660,7 +660,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -675,7 +675,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -690,7 +690,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -705,7 +705,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -720,7 +720,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -735,7 +735,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -750,7 +750,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -765,7 +765,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -780,7 +780,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -795,7 +795,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -810,7 +810,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -825,7 +825,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -840,7 +840,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -855,7 +855,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -870,7 +870,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -885,7 +885,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -900,7 +900,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -915,7 +915,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -930,7 +930,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -945,7 +945,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -960,7 +960,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -975,7 +975,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -990,7 +990,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1005,7 +1005,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1020,7 +1020,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1035,7 +1035,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1050,7 +1050,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1065,7 +1065,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1080,7 +1080,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1095,7 +1095,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1110,7 +1110,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1125,7 +1125,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1140,7 +1140,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1155,7 +1155,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1171,7 +1171,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1186,7 +1186,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1201,7 +1201,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1216,7 +1216,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1231,7 +1231,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1246,7 +1246,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1261,7 +1261,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1276,7 +1276,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1291,7 +1291,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1306,7 +1306,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1321,7 +1321,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1336,7 +1336,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1351,7 +1351,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1366,7 +1366,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1381,7 +1381,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1396,7 +1396,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1411,7 +1411,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1426,7 +1426,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1441,7 +1441,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1456,7 +1456,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1471,7 +1471,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,
@ -1486,7 +1486,7 @@ const openModal = (type, record) => {
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
initialValue: day,
width: 140,

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

@ -3,9 +3,10 @@ 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"
import _ from 'lodash'
const HightModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, recortd, dispatch, setRecortd } = props
const { visible, onVisibleChange, typecard, rewkeys, recortd, dispatch, setRecortd,setDelet } = props
const [success,setSuccess]=useState()
useEffect(() => {
@ -24,8 +25,7 @@ const HightModal = (props) => {
onVisibleChange={onVisibleChange}
onFinish={(values) => {
if (rewkeys === 'passenger') {
console.log(values)
setDelet(values)
const query = { ...values, id:recortd?.id }
dispatch(putOperaTional(query)).then((res) => {
setSuccess(res.success)
@ -34,8 +34,8 @@ const HightModal = (props) => {
}
if (rewkeys === 'highways') {
setDelet(values)
console.log(values)
const query = { ...values, id:recortd?.id }
dispatch(putHighways(query)).then((res) => {
setSuccess(res.success)
@ -54,29 +54,40 @@ const HightModal = (props) => {
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="请输入名称"
placeholder="请输入数量"
rules={[
{required: true,
message:'请输入整数',
pattern:RegExp(/^[0-9]\d*$/,'g'),
},
// getValueFromEvent=(event)=>{
// return event.target.value.replace(/\D/g,'')
// }
]}
/>
</ProForm.Group>
: <ProForm.Group>
<ProFormText
{/* <ProFormText
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
/>
/> */}
</ProForm.Group>}
</ModalForm>

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

@ -16,9 +16,10 @@ const HigwaysTable = (props) => {
const [typecard, setTypecard] = useState();
const [recortd, setRecortd] = useState()
const [sitename, setSitename] = useState()//桥梁名称
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [ modalVisibleyilan])
useEffect(() => { ref.current.reload() }, [ delet])
//打开弹窗
const hightModal = (type, record) => {
setModalVisibleyilan(true);
@ -106,18 +107,18 @@ const exports = (ids, counts) => {
actionRef={ref}
scroll={{ x: 800 }}
options={false}
ref={c => { finishedProductTable = c; }}
// ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='id'
onReset={(v) => {
setSitename('')
}}
rowSelection={{
selectedRowKeys: rowSelected,
onChange: (selectedRowKeys) => {
setRowSelected(selectedRowKeys);
},
}}
// rowSelection={{
// selectedRowKeys: rowSelected,
// onChange: (selectedRowKeys) => {
// setRowSelected(selectedRowKeys);
// },
// }}
columns={columns}
dataSource={counts || []}
@ -143,6 +144,7 @@ const exports = (ids, counts) => {
rewkeys={'highways'}
recortd={recortd}
setRecortd={setRecortd}
setDelet={setDelet}
/> : ''}
</Spin >
)

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

@ -2,11 +2,11 @@ import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd';
import { DrawerForm, ProForm, ProFormText, ProFormSelect } from '@ant-design/pro-form';
import { putRoadway, putSpecificVehicle, putHouseholds,putCircuit,putVehicle } from "../../actions/infor"
import { putRoadway, putSpecificVehicle, putHouseholds, putCircuit, putVehicle, putPurchase } from "../../actions/infor"
import { putBridge } from "../../actions/infor"
import _ from 'lodash'
const UserModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, setRecortd, engineering } = props
const { visible, onVisibleChange, typecard, rewkeys, data, recortd, sitename, dispatch, setRecortd, setMonitor,setDelet,whichofits } = props
const [newlys, setNewlys] = useState() //必填数据
const [newlysay, setNewlysay] = useState() //处理hou
const [records, setRecords] = useState()//处理
@ -52,13 +52,20 @@ const UserModal = (props) => {
setNewlysay(array)
// console.log(array)
}if (rewkeys === 'xianlu') {
} 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 === 'cheliang') {
}
if (rewkeys === 'zhichao') {
_.forIn(data, function (value, key) {
array.push({ name: value, type: key })
});
@ -110,7 +117,14 @@ const UserModal = (props) => {
setRecordsay(arr.splice(1, 2))
// setEstablishment(arr.splice(-1, 1))
setRecords(arr)
}if (rewkeys === 'cheliang') {
} 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 })
});
@ -134,98 +148,125 @@ const UserModal = (props) => {
visible={visible}
onVisibleChange={onVisibleChange}
onFinish={(values) => {
console.log(values)
if (Object.values(values).length > 0) {
if (rewkeys === 'transportation') {
if (typecard == '111') {
const query = { ...values, level: sitename, roadId: records?.[0]?.value || '' }
if (typecard == '111') {
setDelet(values)
const query = { ...values, level: whichofits, roadId: records?.[0]?.value || '' }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
const query = { ...values, level: sitename }
setDelet(values)
const query = { ...values, level: whichofits }
dispatch(putRoadway(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'bridge') {
if (typecard == '111') {
console.log(values)
setDelet(values)
const query = { ...values, roadId: records?.[0]?.value || '' }
dispatch(putBridge(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
setDelet(values)
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' ? '出租车' : '危货' }
setDelet(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 }
setDelet(values)
const query = { ...values, type: rewkeys == 'chuzu' ? '出租车' : '危货' }
dispatch(putSpecificVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'yehu') {
if (typecard == '111') {
console.log(values)
setDelet(values)
const query = { ...values, businessId: records?.[0]?.value, type: rewkeys == 'chuzu' ? '出租车' : '危货' }
dispatch(putHouseholds(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
setDelet(values)
const query = { ...values, type: rewkeys === 'chuzu' ? '出租车' : '危货' }
dispatch(putHouseholds(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}if (rewkeys === 'xianlu') {
} if (rewkeys === 'xianlu') {
if (typecard == '111') {
console.log(values)
const query = { ...values, lineId:records?.[0]?.value || '' }
setDelet(values)
const query = { ...values, lineId: records?.[0]?.value || '' }
dispatch(putCircuit(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
setDelet(values)
const query = { ...values }
dispatch(putCircuit(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'cheliang') {
if (typecard == '111') {
console.log(values)
const query = { ...values, carId:records?.[0]?.value || '' }
setDelet(values)
const query = { ...values, carId: records?.[0]?.value || '' }
dispatch(putVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
} else {
setDelet(values)
const query = { ...values }
dispatch(putVehicle(query)).then((res) => {
setSuccess(res.success)
})
return true
}
}
if (rewkeys === 'zhichao') {
if (typecard == '111') {
setDelet(values)
const query = { ...values, overspeedId: records?.[0]?.value || '' }
dispatch(putPurchase(query)).then((res) => {
setMonitor(res)
})
return true
} else {
setDelet(values)
const query = { ...values }
dispatch(putPurchase(query)).then((res) => {
setMonitor(res)
})
return true
}
@ -242,7 +283,7 @@ const UserModal = (props) => {
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
value={recordsay?.[0]?.value}
// rules={[{ required: true, message: "必填" }]}
@ -250,7 +291,7 @@ const UserModal = (props) => {
name={newlys?.[1]?.type}
width="md"
label={newlys?.[1]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
value={recordsay?.[1]?.value}
// rules={[{ required: true, message: "必填" }]}
@ -284,7 +325,7 @@ const UserModal = (props) => {
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordssy?.[0]?.value}
// rules={[{ required: true, message: "必填" }]}
@ -292,7 +333,7 @@ const UserModal = (props) => {
name={newlys?.[1]?.type}
width="md"
label={newlys?.[1]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordssy?.[1]?.value}
// rules={[{ required: true, message: "必填" }]}
@ -316,7 +357,7 @@ const UserModal = (props) => {
{newlysay?.map((item, index) => {
return <ProFormText width="md"
name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称" key={index}
tooltip="最长为 24 位"
/>
})}

207
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 { 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])
//打开弹窗
const openModal = (type, record) => {
setModalVisible(true);
@ -42,34 +51,63 @@ const InForTable = (props) => {
`attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`)
})
}
const deldata = (id) => { // 治超删除
const query = {
overspeedId: id
}
dispatch(delPurchase(query)).then((res) => {
setDelet(res)
})
}
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 +118,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 +136,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 +172,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.overrunWeight
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -137,7 +186,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.grossVehicleWeight
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -151,7 +200,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.vehicleCargoWeightLimit
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -159,14 +208,18 @@ const InForTable = (props) => {
}, {
title: '检测时间',
// search: false,
width: 140,
key: 'since',
dataIndex: 'createdAt',
valueType: 'dateTime',
width: 120,
valueType: 'date',
render: (dom, record) => {
return record.address
return record.testTime
},
fieldProps: {
onChange: (value, cs) => {
console.log(cs)
setTestTime(cs)
},
getPopupContainer: (triggerNode) => triggerNode.parentNode,
}
}, {
@ -178,7 +231,7 @@ const InForTable = (props) => {
width: 120,
render: (dom, record) => {
return record.address
return record.nameOfBusinessOwner
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -193,7 +246,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.businessAddress
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -208,7 +261,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.notifier
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -223,7 +276,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.notificationMethod
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -235,10 +288,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 +306,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.processingTime
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -268,7 +321,7 @@ const InForTable = (props) => {
width: 140,
render: (dom, record) => {
return record.address
return record.deductPoints
},
fieldProps: {
getPopupContainer: (triggerNode) => triggerNode.parentNode,
@ -283,7 +336,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 +370,13 @@ const InForTable = (props) => {
onClick={() => {
openModal('edit', record)
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"></Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -342,6 +415,7 @@ const InForTable = (props) => {
<Spin spinning={false}>
<div className='protable-transpor'>
<ProTable
actionRef={ref}
scroll={{ x: 800 }}
options={false}
ref={c => { finishedProductTable = c; }}
@ -355,21 +429,31 @@ const InForTable = (props) => {
},
}}
columns={columns}
dataSource={(counts || {}).rows || []}
dataSource={counts || []}
onReset={(v) => {
setNameOfInspectionPoint('')
setLicensePlate('')
setNumberOfAxles('')
setOverrunRateUpper('')
setOverrunRateFloor('')
setTestTime('')
}}
request={async (params) => {
console.log(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
page: params.current - 1,
nameOfInspectionPoint: nameOfInspectionPoint,
licensePlate: licensePlate,
numberOfAxles: numberOfAxles,
overrunRateUpper: overrunRateUpper,
overrunRateFloor: overrunRateFloor,
testTime: testTime
}
setRowSelected([]);
const res = await dispatch(getReportStatistic(query));
setCounts(res.payload.data)
const res = await dispatch(getPurchase(query));
console.log(res)
setCounts(res.payload.data.rows)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
@ -390,15 +474,42 @@ const InForTable = (props) => {
>
</ProTable></div>
<UserModal
{modalVisible ? <UserModal
visible={modalVisible}
onVisibleChange={setModalVisible}
modalRecord={modalRecord}
typecard={typecard}
/>
rewkeys={'zhichao'}
data={data}
recortd={recortd}
setDelet={setDelet}
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) => {

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

@ -1,9 +1,9 @@
import React, { useEffect, useState,useRef } 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 { getOperaTional, getSpecificVehicle, getHouseholds,delSpecificVehicle,delHouseholds } from "../actions/infor"
import { getOperaTional, getSpecificVehicle, getHouseholds, delSpecificVehicle, delHouseholds } from "../actions/infor"
import UserModal from './infor/details';
import HightModal from './highways/highwaysdata';
@ -11,9 +11,7 @@ import HightModal from './highways/highwaysdata';
const OperaTionalTable = (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 [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false);
@ -26,7 +24,7 @@ const OperaTionalTable = (props) => {
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan,rewkeys,activeKey,delet])
useEffect(() => { ref.current.reload() }, [rewkeys, activeKey, delet])
//打开弹窗
const openModal = (type, record) => {
setModalVisible(true);
@ -37,6 +35,23 @@ const OperaTionalTable = (props) => {
setModalRecord(null);
}
}
const deldata = (id) => { // 出租危货
const query = {
vehicleId: id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}
const deldatas = (id) => { // 业户
const query = {
businessId: id
}
dispatch(delHouseholds(query)).then((res) => {
setDelet(res)
})
}
//打开弹窗
const hightModal = (type, record) => {
setModalVisibleyilan(true);
@ -75,7 +90,7 @@ const OperaTionalTable = (props) => {
search: false,
fieldProps: {
placeholder: '请输入道路名称进行搜索',
getPopupContainer: (triggerNode) => triggerNode.parentNode,
},
@ -134,7 +149,7 @@ const OperaTionalTable = (props) => {
render: (dom, record) => {
return record.nameOfBusinessOwner
},
},
},
{
title: '车籍地',
search: false,
@ -153,7 +168,7 @@ const OperaTionalTable = (props) => {
title: '车牌号',
search: false,
dataIndex: 'time2',
valueType: 'dateRange',
valueType: 'dateRange1',
// align: 'right',
width: 120,
render: (dom, record) => {
@ -167,7 +182,7 @@ const OperaTionalTable = (props) => {
title: '燃料类型',
search: false,
dataIndex: 'time3',
valueType: 'dateRange',
valueType: 'dateRange2',
@ -182,7 +197,7 @@ const OperaTionalTable = (props) => {
title: '住址',
search: false,
dataIndex: 'time4',
valueType: 'dateRange',
valueType: 'dateRange3',
width: 120,
@ -196,7 +211,7 @@ const OperaTionalTable = (props) => {
title: '经济性质',
search: false,
dataIndex: 'time5',
valueType: 'dateRange',
valueType: 'dateRange4',
width: 120,
@ -210,7 +225,7 @@ const OperaTionalTable = (props) => {
title: '核定载客位数',
search: false,
dataIndex: 'time6',
valueType: 'dateRange',
valueType: 'dateRange5',
width: 120,
@ -224,7 +239,7 @@ const OperaTionalTable = (props) => {
title: '核定载质量',
search: false,
dataIndex: 'time7',
valueType: 'dateRange',
valueType: 'dateRange6',
width: 120,
@ -238,7 +253,7 @@ const OperaTionalTable = (props) => {
title: '车辆车轴数',
search: false,
dataIndex: 'time8',
valueType: 'dateRange',
valueType: 'dateRange7',
width: 120,
@ -252,7 +267,7 @@ const OperaTionalTable = (props) => {
title: '车辆厂牌',
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
valueType: 'dateRange8',
width: 140,
@ -266,8 +281,8 @@ const OperaTionalTable = (props) => {
}, {
title: '经营范围',
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
dataIndex: 'time10',
valueType: 'dateRange9',
width: 140,
@ -281,8 +296,8 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆营运状态',
search: false,
dataIndex: 'time9',
valueType: 'dateRange',
dataIndex: 'time11',
valueType: 'dateRange10',
width: 140,
@ -296,7 +311,7 @@ const OperaTionalTable = (props) => {
}, {
title: '客车类型与等级',
search: false,
dataIndex: 'time9',
dataIndex: 'time12',
valueType: 'dateRange',
@ -311,7 +326,7 @@ const OperaTionalTable = (props) => {
}, {
title: '年审结果',
search: false,
dataIndex: 'time9',
dataIndex: 'time13',
valueType: 'dateRange',
@ -326,7 +341,7 @@ const OperaTionalTable = (props) => {
}, {
title: '本次年审日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time14',
valueType: 'dateRange',
@ -341,7 +356,7 @@ const OperaTionalTable = (props) => {
}, {
title: '下次年审日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time15',
valueType: 'dateRange',
@ -356,7 +371,7 @@ const OperaTionalTable = (props) => {
}, {
title: '注册登记日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time16',
valueType: 'dateRange',
@ -371,7 +386,7 @@ const OperaTionalTable = (props) => {
}, {
title: '运力来源',
search: false,
dataIndex: 'time9',
dataIndex: 'time17',
valueType: 'dateRange',
@ -386,7 +401,7 @@ const OperaTionalTable = (props) => {
}, {
title: '有效期起',
search: false,
dataIndex: 'time9',
dataIndex: 'time18',
valueType: 'dateRange',
@ -401,7 +416,7 @@ const OperaTionalTable = (props) => {
}, {
title: '有效期止',
search: false,
dataIndex: 'time9',
dataIndex: 'time19',
valueType: 'dateRange',
@ -416,7 +431,7 @@ const OperaTionalTable = (props) => {
}, {
title: '发动机排量',
search: false,
dataIndex: 'time9',
dataIndex: 'time20',
valueType: 'dateRange',
@ -431,7 +446,7 @@ const OperaTionalTable = (props) => {
}, {
title: '发动机号',
search: false,
dataIndex: 'time9',
dataIndex: 'time21',
valueType: 'dateRange',
@ -446,7 +461,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆发动机功率',
search: false,
dataIndex: 'time9',
dataIndex: 'time22',
valueType: 'dateRange',
@ -461,7 +476,7 @@ const OperaTionalTable = (props) => {
}, {
title: '经营许可证号',
search: false,
dataIndex: 'time9',
dataIndex: 'time23',
valueType: 'dateRange',
@ -476,7 +491,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车牌颜色',
search: false,
dataIndex: 'time9',
dataIndex: 'time24',
valueType: 'dateRange',
@ -491,7 +506,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆总质量',
search: false,
dataIndex: 'time9',
dataIndex: 'time25',
valueType: 'dateRange',
@ -506,7 +521,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆准牵引总质量',
search: false,
dataIndex: 'time9',
dataIndex: 'time26',
valueType: 'dateRange',
@ -521,7 +536,7 @@ const OperaTionalTable = (props) => {
}, {
title: '道路运输证号',
search: false,
dataIndex: 'time9',
dataIndex: 'time27',
valueType: 'dateRange',
@ -536,7 +551,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆车高',
search: false,
dataIndex: 'time9',
dataIndex: 'time28',
valueType: 'dateRange',
@ -551,7 +566,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆车长',
search: false,
dataIndex: 'time9',
dataIndex: 'time29',
valueType: 'dateRange',
@ -566,7 +581,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆车宽',
search: false,
dataIndex: 'time9',
dataIndex: 'time30',
valueType: 'dateRange',
@ -581,7 +596,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆类型',
search: false,
dataIndex: 'time9',
dataIndex: 'time31',
valueType: 'dateRange',
@ -596,7 +611,7 @@ const OperaTionalTable = (props) => {
}, {
title: '行驶证车辆类型',
search: false,
dataIndex: 'time9',
dataIndex: 'time30',
valueType: 'dateRange',
@ -611,7 +626,7 @@ const OperaTionalTable = (props) => {
}, {
title: '车辆轴距',
search: false,
dataIndex: 'time9',
dataIndex: 'time31',
valueType: 'dateRange',
@ -626,7 +641,7 @@ const OperaTionalTable = (props) => {
}, {
title: '等级评定日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time32',
valueType: 'dateRange',
@ -641,7 +656,7 @@ const OperaTionalTable = (props) => {
}, {
title: '技术评定等级',
search: false,
dataIndex: 'time9',
dataIndex: 'time33',
valueType: 'dateRange',
@ -656,7 +671,7 @@ const OperaTionalTable = (props) => {
}, {
title: '下次等级评定日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time34',
valueType: 'dateRange',
@ -671,7 +686,7 @@ const OperaTionalTable = (props) => {
}, {
title: '创建日期',
search: false,
dataIndex: 'time9',
dataIndex: 'time35',
valueType: 'dateRange',
@ -686,7 +701,7 @@ const OperaTionalTable = (props) => {
},
{
title: '操作',
dataIndex: 'creatTime',
dataIndex: 'creatTime55',
valueType: 'dateTimeRange',
hideInSearch: true,
width: 120,
@ -696,17 +711,11 @@ const OperaTionalTable = (props) => {
onClick={() => {
openModal('edit', record)
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
vehicleId: record.id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button> <Popconfirm title='' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -760,7 +769,7 @@ const OperaTionalTable = (props) => {
render: (dom, record) => {
return record.nameOfBusinessOwner
},
}, {
}, {
title: '品名',
search: false,
dataIndex: 'containers',
@ -1335,17 +1344,11 @@ const OperaTionalTable = (props) => {
onClick={() => {
openModal('edit', record)
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
vehicleId: record.id
}
dispatch(delSpecificVehicle(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button> <Popconfirm title='' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1813,16 +1816,9 @@ const OperaTionalTable = (props) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
businessId: record.id
}
dispatch(delHouseholds(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button><Popconfirm title='' onConfirm={() => { deldatas(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1881,16 +1877,20 @@ const OperaTionalTable = (props) => {
},
{
key: 'tab2',
label: <span onClick={() => { {
setRewkeys('chuzu')
} }}>出租车{activeKey === 'tab2'}</span>,
label: <span onClick={() => {
{
setRewkeys('chuzu')
}
}}>出租车{activeKey === 'tab2'}</span>,
},
{
key: 'tab3',
label: <span onClick={() => { {
setRewkeys('weihuo')
} }}>危险货运{activeKey === 'tab3'}</span>,
label: <span onClick={() => {
{
setRewkeys('weihuo')
}
}}>危险货运{activeKey === 'tab3'}</span>,
}, {
key: 'tab4',
@ -1906,7 +1906,7 @@ const OperaTionalTable = (props) => {
options={false}
ref={c => { finishedProductTable = c; }}
style={{ width: "100% ", overflow: "auto", height: '760px' }}
rowKey='key'
rowKey='id'
rowSelection={{
selectedRowKeys: rowSelected,
onChange: (selectedRowKeys) => {
@ -1918,58 +1918,62 @@ const OperaTionalTable = (props) => {
}}
columns={columns[activeKey]}
dataSource={counts || []}
dataSource={counts || []}
request={async (params, sort, filter) => {
if(rewkeys=='keyun'){
if (rewkeys == 'keyun') {
const query = {}
setRowSelected([]);
const res = await dispatch(getOperaTional(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}}
if(rewkeys=='chuzu'){
setRowSelected([]);
const res = await dispatch(getOperaTional(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
if (rewkeys == 'chuzu') {
const query = {
type:'出租车',
nameOfBusinessOwner:sitename
type: '出租车',
nameOfBusinessOwner: sitename
}
setRowSelected([]);
const res = await dispatch(getSpecificVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}}
if(rewkeys=='weihuo'){
setRowSelected([]);
const res = await dispatch(getSpecificVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
if (rewkeys == 'weihuo') {
const query = {
type:'危货',
nameOfBusinessOwner:sitename
type: '危货',
nameOfBusinessOwner: sitename
}
setRowSelected([]);
const res = await dispatch(getSpecificVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}}
if(rewkeys=='yehu'){
setRowSelected([]);
const res = await dispatch(getSpecificVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
if (rewkeys == 'yehu') {
const query = {
nameOfBusinessOwner:sitename
nameOfBusinessOwner: sitename
}
setRowSelected([]);
const res = await dispatch(getHouseholds(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}}
setRowSelected([]);
const res = await dispatch(getHouseholds(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(),
['tab2','tab3','tab4'].includes(activeKey) ? <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}>
['tab2', 'tab3', 'tab4'].includes(activeKey) ? <Popconfirm title="确认导出?" onConfirm={() => { props.exports(rowSelected, counts) }}>
<Button
>
导出
@ -1981,15 +1985,16 @@ const OperaTionalTable = (props) => {
>
</ProTable></div>
{modalVisible ? <UserModal
{modalVisible ? <UserModal
visible={modalVisible}
onVisibleChange={setModalVisible}
modalRecord={modalRecord}
typecard={typecard}
rewkeys={rewkeys}
data={rewkeys==='yehu'?data:date}
data={rewkeys === 'yehu' ? data : date}
recortd={recortd}
// sitename={sitename}
setDelet={setDelet}
setRecortd={setRecortd}
/> : ''}
{modalVisibleyilan ? <HightModal
@ -1999,12 +2004,13 @@ const OperaTionalTable = (props) => {
typecard={typecard}
rewkeys={'passenger'}
recortd={recortd}
setDelet={setDelet}
setRecortd={setRecortd}
/> : ''}
</Spin >
)
}
const date={
const date = {
"nameOfBusinessOwner": "业户名称",
"productName": "品名",
"vehicleRegistry": "车籍地",
@ -2045,7 +2051,7 @@ const date={
"nextRatingDate": "下次等级评定日期",
"creationDate": "创建日期"
}
const data={
const data = {
"nameOfBusinessOwner": "业户名称",
"productName": "品名",
"creditSocialCode": "信用社会代码",
@ -2074,7 +2080,7 @@ const data={
"licenseIssuanceType": "证照发放类型",
"numberOfSharedVehicles": "共有车辆数",
"creationDate": "创建日期",
'type':'类型'
'type': '类型'
}
function mapStateToProps(state) {
const { auth, depMessage } = state;

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

@ -3,6 +3,7 @@ import { connect } from 'react-redux';
import { Form, Spin, Table } from 'antd';
import { DrawerForm, ProForm, ProFormText,ProFormSelect } from '@ant-design/pro-form';
import { putProject } from "../../actions/infor"
import _ from 'lodash'
const data = {
"entryName": "项目名称",
@ -16,13 +17,12 @@ const data = {
"projectProgress": "项目进展情况"
}
const ProjectModal = (props) => {
const { visible, onVisibleChange, typecard, rewkeys, recortd, sitename, dispatch, setRecortd, engineering } = props
const { visible, onVisibleChange, typecard, rewkeys, recortd, dispatch, setRecortd, setDelet } = props
const [newlys, setNewlys] = useState() //必填数据
const [newlysay, setNewlysay] = useState() //处理hou
const [records, setRecords] = useState()//处理
const [recordsay, setRecordsay] = useState()//必填数据
const [success, setSuccess] = useState() //状态
const [flage, setFlage] = useState() //xiangmujinzhan
useEffect(() => {
const array = []
if (rewkeys === 'road') {
@ -77,36 +77,39 @@ const ProjectModal = (props) => {
visible={visible}
onVisibleChange={onVisibleChange}
onFinish={(values) => {
console.log(values)
if (rewkeys === 'road') {
if (typecard == '111') {
console.log(values)
const query = { ...values, type:rewkeys }
setDelet(values)
const query = { ...values, type:rewkeys,projectId:records?.[0]?.value || '' }
dispatch(putProject(query)).then((res) => {
setSuccess(res.success)
})
return success
return true
} else {
setDelet(values)
const query = { ...values, type:rewkeys }
dispatch(putProject(query)).then((res) => {
setSuccess(res.success)
})
return success
return true
}
}
if (rewkeys === 'bridge') {
if (typecard == '111') {
console.log(values)
const query = { ...values, type:rewkeys }
setDelet(values)
const query = { ...values, type:rewkeys,projectId:records?.[0]?.value || '' }
dispatch(putProject(query)).then((res) => {
setSuccess(res.success)
})
return success
return true
} else {
setDelet(values)
const query = { ...values, type:rewkeys }
dispatch(putProject(query)).then((res) => {
setSuccess(res.success)
})
return success
return true
}
}
}}
@ -119,18 +122,18 @@ const ProjectModal = (props) => {
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordsay?.[0]?.value}
rules={[{ required: true, message: "必填" }]}
// rules={[{ required: true, message: "必填" }]}
/><ProFormText
name={newlys?.[1]?.type}
width="md"
label={newlys?.[1]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordsay?.[1]?.value}
rules={[{ required: true, message: "必填" }]}
// rules={[{ required: true, message: "必填" }]}
/>
<ProFormSelect
options={[
@ -145,6 +148,7 @@ const ProjectModal = (props) => {
width="xs"
name='done'
label='是否已完成'
rules={[{ required: true, message: "必填" }]}
/>
{newlysay?.map((item, index) => {
return <ProFormText width="md"
@ -159,18 +163,18 @@ const ProjectModal = (props) => {
name={newlys?.[0]?.type}
width="md"
label={newlys?.[0]?.name}
tooltip="最长为 24 位"
placeholder="请输入名称"
// value={recordssy?.[0]?.value}
rules={[{ required: true, message: "必填" }]}
// 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: "必填" }]}
// rules={[{ required: true, message: "必填" }]}
/>
<ProFormSelect
options={[
@ -185,11 +189,12 @@ const ProjectModal = (props) => {
width="xs"
name='done'
label='是否已完成'
rules={[{ required: true, message: "必填" }]}
/>
{newlysay?.map((item, index) => {
return <ProFormText width="md"
name={item?.type} label={newlysay[index]?.name} placeholder="请输入名称" key={index}
tooltip="最长为 24 位"
/>
})}

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

@ -111,13 +111,13 @@ const promotionalTable = (props) => {
dataSource={(counts || {}).rows || []}
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
// startDate: day[0],
// endDate: day[1],
// placeType: placeType,
// regionId: regionId,
// placeName: sitename,
// limit: params.pageSize,
// offset: ((params.current ? params.current : 1) - 1) * params.pageSize
}
setRowSelected([]);
const res = await dispatch(getReportStatistic(query));

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

@ -4,7 +4,7 @@ import { Spin, Button, Popconfirm, Badge } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
import { getCircuit,getVehicle,delCircuit,delVehicle } from "../actions/infor"
import { getCircuit, getVehicle, delCircuit, delVehicle } from "../actions/infor"
import UserModal from './infor/details';
const PublicTable = (props) => {
@ -24,23 +24,23 @@ const PublicTable = (props) => {
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible,delet,rewkeys])
//xianlu请求
const requestxianlu = (name) => {
const query = name
setRowSelected([]);
dispatch(getCircuit(query)).then((res)=>{
setCounts(res.payload.data)
})
}
//cheliang请求
const requestcheliang = (name) => {
const query = ''
setRowSelected([]);
dispatch(getVehicle(query)).then((res)=>{
setCounts(res.payload.data)
})
}
useEffect(() => { ref.current.reload() }, [delet, rewkeys])
//xianlu请求
const requestxianlu = (name) => {
const query = name
setRowSelected([]);
dispatch(getCircuit(query)).then((res) => {
setCounts(res.payload.data)
})
}
//cheliang请求
const requestcheliang = (name) => {
const query = ''
setRowSelected([]);
dispatch(getVehicle(query)).then((res) => {
setCounts(res.payload.data)
})
}
//打开弹窗
const openModal = (type, record) => {
setModalVisible(true);
@ -67,6 +67,22 @@ const requestcheliang = (name) => {
`attachments?src=files/${resTextIs}&filename=${encodeURIComponent(resTextIs)}&token=${user.token}`)
})
}
const deldata = (id) => { // 线路
const query = {
lineId: id
}
dispatch(delCircuit(query)).then((res) => {
setDelet(res)
})
}
const deldatas = (id) => { // 车辆
const query = {
carId: id
}
dispatch(delVehicle(query)).then((res) => {
setDelet(res)
})
}
const columns = {
tab1: [
{
@ -411,16 +427,9 @@ const requestcheliang = (name) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
lineId: record.id
}
dispatch(delCircuit(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button><Popconfirm title='' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1113,16 +1122,9 @@ const requestcheliang = (name) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
carId: record.id
}
dispatch(delVehicle(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button><Popconfirm title='' onConfirm={() => { deldatas(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -1173,16 +1175,20 @@ const requestcheliang = (name) => {
items: [
{
key: 'tab1',
label: <span onClick={() => { {
setRewkeys('xianlu')
} }}>运营线路{activeKey === 'tab1'}</span>,
label: <span onClick={() => {
{
setRewkeys('xianlu')
}
}}>运营线路{activeKey === 'tab1'}</span>,
},
{
key: 'tab2',
label: <span onClick={() => { {
setRewkeys('cheliang')
} }}>车辆信息{activeKey === 'tab2'}</span>,
label: <span onClick={() => {
{
setRewkeys('cheliang')
}
}}>车辆信息{activeKey === 'tab2'}</span>,
}
],
@ -1211,31 +1217,31 @@ const requestcheliang = (name) => {
dataSource={counts || []}
request={async (params) => {
if(rewkeys=='xianlu'){
if (rewkeys == 'xianlu') {
const query = {
fleet:sitename
fleet: sitename
}
setRowSelected([]);
const res = await dispatch(getCircuit(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
setRowSelected([]);
const res = await dispatch(getCircuit(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
if(rewkeys=='cheliang'){
if (rewkeys == 'cheliang') {
const query = {
fleet:sitename
}
setRowSelected([]);
const res = await dispatch(getVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
fleet: sitename
}
setRowSelected([]);
const res = await dispatch(getVehicle(query));
setCounts(res.payload.data)
return {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
}
}
}}
search={{
defaultCollapsed: false,
@ -1252,15 +1258,16 @@ const requestcheliang = (name) => {
>
</ProTable></div>
{modalVisible ? <UserModal
{modalVisible ? <UserModal
visible={modalVisible}
onVisibleChange={setModalVisible}
modalRecord={modalRecord}
typecard={typecard}
rewkeys={rewkeys}
data={rewkeys==='xianlu'?data:date}
data={rewkeys === 'xianlu' ? data : date}
recortd={recortd}
// sitename={sitename}
setDelet={setDelet}
setRecortd={setRecortd}
/> : ''}
</Spin >
@ -1291,58 +1298,59 @@ const data = {
"area": "所属区域",
"remarks": "备注"
}
const date={ "company": "所属公司",
"fleet": "所属车队",
"line": "所属线路",
"vehicleNumber": "车辆编号",
"vehicleLicensePlateNumber": "车辆牌照号",
"operationCategory": "运营类别",
"serviceLife": "已使用年限",
"engineModel": "发动机型号",
"vehicleModel": "车辆型号",
"vehicleCategory": "车辆类别",
"vehicleStatus": "车辆状态",
"dateOfEntry": "入户日期",
"purchaseDate": "购进日期",
"energyConsumptionType": "能耗类型",
"numberOfStandardUnits": "标台数",
"maintenanceUnit": "维保单位",
"vehicleType": "车辆类型",
"brandAndModel": "厂牌型号",
"manufacturer": "生产厂家",
"drivingLicenseNo": "行驶证编号",
"engineNumber": "发动机编号",
"mainEnergyConsumption": "主能耗",
"secondaryEnergyConsumption": "副能耗",
"emissionStandard": "排放标准",
"startDate": "启用日期",
"lastTransferDate": "最近一次调动日期",
"conductor": "车长",
"vehicleWidth": "车宽",
"carHeight": "车高",
"approvedPassengerCapacity": "核定载客数",
"vehicleIdentificationNumber": "车辆识别号",
"gearboxBrand": "变速箱品牌",
"manualCarWashingFee": "人工洗车费",
"laborCost": "劳务费",
"curbWeight": "整备质量",
"totalMass": "总质量",
"airConditioningTemperature": "空调温度",
"airConditionedCarOrNot": "是否空调车",
"turnOnTheAirConditioningTemperature": "开空调温度",
"power": "功率",
"transmission": "变速器",
"seatingCapacity": "座位数",
"airConditioningBrand": "空调品牌",
"seatType": "座椅类型",
"tireSpecifications": "轮胎规格",
"roadTransportCertificateNo": "道路运输证号",
"parkingPoint": "停放点",
"carWashingType": "洗车类型",
"maintenanceFreeWheelEnd": "免维护轮端",
"firstGuaranteeDate": "首保日期",
"dateOfRenovation": "整修日期",
"motorVehicleOwner": "机动车所有人"
const date = {
"company": "所属公司",
"fleet": "所属车队",
"line": "所属线路",
"vehicleNumber": "车辆编号",
"vehicleLicensePlateNumber": "车辆牌照号",
"operationCategory": "运营类别",
"serviceLife": "已使用年限",
"engineModel": "发动机型号",
"vehicleModel": "车辆型号",
"vehicleCategory": "车辆类别",
"vehicleStatus": "车辆状态",
"dateOfEntry": "入户日期",
"purchaseDate": "购进日期",
"energyConsumptionType": "能耗类型",
"numberOfStandardUnits": "标台数",
"maintenanceUnit": "维保单位",
"vehicleType": "车辆类型",
"brandAndModel": "厂牌型号",
"manufacturer": "生产厂家",
"drivingLicenseNo": "行驶证编号",
"engineNumber": "发动机编号",
"mainEnergyConsumption": "主能耗",
"secondaryEnergyConsumption": "副能耗",
"emissionStandard": "排放标准",
"startDate": "启用日期",
"lastTransferDate": "最近一次调动日期",
"conductor": "车长",
"vehicleWidth": "车宽",
"carHeight": "车高",
"approvedPassengerCapacity": "核定载客数",
"vehicleIdentificationNumber": "车辆识别号",
"gearboxBrand": "变速箱品牌",
"manualCarWashingFee": "人工洗车费",
"laborCost": "劳务费",
"curbWeight": "整备质量",
"totalMass": "总质量",
"airConditioningTemperature": "空调温度",
"airConditionedCarOrNot": "是否空调车",
"turnOnTheAirConditioningTemperature": "开空调温度",
"power": "功率",
"transmission": "变速器",
"seatingCapacity": "座位数",
"airConditioningBrand": "空调品牌",
"seatType": "座椅类型",
"tireSpecifications": "轮胎规格",
"roadTransportCertificateNo": "道路运输证号",
"parkingPoint": "停放点",
"carWashingType": "洗车类型",
"maintenanceFreeWheelEnd": "免维护轮端",
"firstGuaranteeDate": "首保日期",
"dateOfRenovation": "整修日期",
"motorVehicleOwner": "机动车所有人"
}
function mapStateToProps(state) {
const { auth, depMessage } = state;

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

@ -1,6 +1,6 @@
import React, { useEffect, useState, useRef } from 'react';
import { connect } from 'react-redux';
import { Spin, Button, Popconfirm, Badge } from 'antd';
import { Spin, Button, Popconfirm } from 'antd';
import ProTable from '@ant-design/pro-table';
import './protable.less'
import moment from 'moment';
@ -11,7 +11,7 @@ import ProjectModal from './project/project';
const TransporTationTable = (props) => {
const { dispatch, user, depData, depMessage, depLoading } = props
const [rowSelected, setRowSelected] = useState([])
const [sitename, setSitename] = useState()//桥梁名称
const [sitename, setSitename] = useState()//名称
const [counts, setCounts] = useState()//shuju
const [modalVisible, setModalVisible] = useState(false);
const [modalVisibleyilan, setModalVisibleyilan] = useState(false);
@ -19,10 +19,10 @@ const TransporTationTable = (props) => {
const [typecard, setTypecard] = useState();
const [activeKey, setActiveKey] = useState('tab1');
const [recortd, setRecortd] = useState()
const [whichofits, setWhichofits] = useState('xian')
const [whichofits, setWhichofits] = useState('')
const [delet, setDelet] = useState()
const ref = useRef()
useEffect(() => { ref.current.reload() }, [modalVisible, modalVisibleyilan, whichofits, delet])
useEffect(() => { ref.current.reload() }, [whichofits, delet])
//打开弹窗
const openModal = (type, record) => {
setModalVisible(true);
@ -42,7 +42,24 @@ const TransporTationTable = (props) => {
setModalRecord(null);
}
}
// console.log(counts)
//删除daolu
const deldata = (id) => {
const query = {
roadId: id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}
//删除工程
const deldatas = (id) => {
const query = {
projectId: id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}
//批量导出
const exports = (ids, counts) => {
// console.log(user);
@ -1170,22 +1187,20 @@ const TransporTationTable = (props) => {
width: 120,
fixed: 'right',
render: (dom, record) => {
// node = renderRemoveUser('移除');
return <div><Button type="link"
onClick={() => {
setRecortd(record)
openModal('edit', record)
setTypecard('111')
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldata(record.id) }}><Button type="link"
// onClick={() => {
// }}
>删除</Button></Popconfirm>
</div>
}
},
@ -2337,14 +2352,11 @@ const TransporTationTable = (props) => {
setRecortd(record)
}}
>编辑</Button><Button type="link" onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}>删除</Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm>
</div>
}
},
@ -3497,15 +3509,10 @@ const TransporTationTable = (props) => {
setRecortd(record)
}}
>编辑</Button><Button type="link" onClick={() => {
const query = {
roadId: record.id
}
dispatch(delRoadway(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldata(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm></div>
}
},
@ -3688,16 +3695,11 @@ const TransporTationTable = (props) => {
setTypecard('111')
setRecortd(record)
}}
>编辑</Button><Button type="link"
onClick={() => {
const query = {
projectId: record.id
}
dispatch(delProject(query)).then((res) => {
setDelet(res)
})
}}
>删除</Button></div>
>编辑</Button>
<Popconfirm title='是否确认删除' onConfirm={() => { deldatas(record.id) }}>
<Button type="link">删除</Button>
</Popconfirm>
</div>
}
},
@ -3747,19 +3749,19 @@ const TransporTationTable = (props) => {
{
key: 'tab1',
label: <span onClick={() => {
setWhichofits('xian')
setWhichofits('')
}}>县道{activeKey === 'tab1'}</span>,
},
{
key: 'tab2',
label: <span onClick={() => {
setWhichofits('xiang')
setWhichofits('')
}}>乡道{activeKey === 'tab2'}</span>,
},
{
key: 'tab3',
label: <span onClick={() => {
setWhichofits('cun')
setWhichofits('')
}}>村道{activeKey === 'tab3'}</span>,
}, {
key: 'tab4',
@ -3787,7 +3789,7 @@ const TransporTationTable = (props) => {
columns={columns[activeKey]}
dataSource={counts || []}
request={async (params) => {
if (whichofits == 'xian') {
if (whichofits == '') {
const query = {
level: '县',
road: sitename
@ -3801,7 +3803,7 @@ const TransporTationTable = (props) => {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} if (whichofits == 'xiang') {
} if (whichofits == '') {
const query = {
level: '乡',
road: sitename
@ -3813,7 +3815,7 @@ const TransporTationTable = (props) => {
...res,
total: res.payload.data ? res.payload.data.count : 0
}
} if (whichofits == 'cun') {
} if (whichofits == '') {
const query = {
level: '村',
road: sitename
@ -3863,8 +3865,9 @@ const TransporTationTable = (props) => {
rewkeys={'transportation'}
data={data}
recortd={recortd}
sitename={sitename}
whichofits={whichofits}
setRecortd={setRecortd}
setDelet={setDelet}
/> : ''}
{modalVisibleyilan ? <ProjectModal
visible={modalVisibleyilan}
@ -3874,6 +3877,7 @@ const TransporTationTable = (props) => {
rewkeys={'road'}
recortd={recortd}
setRecortd={setRecortd}
setDelet={setDelet}
/> : ''}
</Spin >
)

5
web/client/src/sections/organization/components/depModal.js

@ -11,7 +11,8 @@ const DepModal = (props) => {
if (depModalType === 'edit') {
let value = {
name: values.name,
depId: data.id
depId: data.id,
dependence:values.dependence
}
onConfirm(value)
} else {
@ -30,7 +31,7 @@ const DepModal = (props) => {
onFinish={onFinish}
formRef={formRef}
destroyOnClose
initialValues={data || null}
initialValues={depModalType === 'edit' ? data : null}
>
<ProFormText
name={['name']}

20
web/client/src/sections/organization/components/userModal.js

@ -1,22 +1,25 @@
import React from 'react';
import { connect } from 'react-redux';
import { Spin, Card, Modal, TreeSelect, message } from 'antd';
import { Spin } from 'antd';
import ProForm, { ProFormText, ModalForm, ProFormSwitch, ProFormTreeSelect } from '@ant-design/pro-form';
const UserModal = (props) => {
const { visible, modalType, depData, onVisibleChange, onConfirm, editData } = props
const reg_tel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/;
const onFinish = (values) => {
if (onConfirm) {
onConfirm(values);
}
}
const mobile = (value) => {
if (reg_tel.test(value)) {
return
const checkName = (rule, value, callback) => {
if (value && value.replace(/[^\u4E00-\u9FA5]/g).includes('undefined')) {
callback(new Error('请输入中文!'));
} else {
callback()
}
return message('请输入姓名')
}
return (
<Spin spinning={false}>
<ModalForm
@ -45,7 +48,10 @@ const UserModal = (props) => {
label="姓名"
required
placeholder="请输入姓名"
rules={[{ required: true, message: '请输入姓名' },{ max: 10, message: '请输入10个字以内的名称' }]}
rules={[{ required: true, message: '请输入姓名' },
{ max: 5, message: '请输入5个字以内的名称' },
{ validator: checkName }
]}
/>
< ProFormText
name={['contract', 'phone']}

4
web/client/src/sections/organization/containers/user.js

@ -168,7 +168,10 @@ const UserManage = (props) => {
}
//部门新增及编辑
const onDepConfirm = (data) => {
console.log('depModalType:',depModalType);
console.log('data:',data);
if (depModalType == 'edit') {
dispatch(updateDep(data)).then(res => {
if (res.success) {
setDepModalVisible(false);
@ -371,7 +374,6 @@ const UserManage = (props) => {
function mapStateToProps(state) {
const { depMessage, depUser, global } = state;
console.log('depMessage:', depMessage);
// console.log(state);
return {
clientHeight: global.clientHeight,

12
web/client/src/sections/quanju/actions/example.js

@ -110,4 +110,16 @@ export function getBusTierList() {
reducer: { name: 'busTier' }
// >>>>>>> 385f017aeac33adc39a31e75faf6254a1a881d16
});
}
//获取道路拥堵指数
export function getGodshuju() {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
actionType: 'GET_GODSHUJU',
url: ApiTable.getgodshuju,
msg: { error: '获取道路拥堵指数失败' },
// reducer: { name: 'busTier' }
// >>>>>>> 385f017aeac33adc39a31e75faf6254a1a881d16
});
}

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

@ -24,8 +24,8 @@ function Leftbottom(props) {
const chartTitle = '道路总公里';
const title = '基础设施安全监测版块';
let name = [], emptyName = []
console.log(data,'传入的值')
console.log(emptyName,'第二个')
// console.log(data,'传入的值')
// console.log(emptyName,'第二个')
// const name = data?.map(d)
data?.forEach(d => {
name.push(d.name)

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",

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

@ -27,7 +27,7 @@ const THIRD = "linear-gradient(360deg, rgba(148, 148, 255, 0.1) 0%, rgba(148, 14
const OTHER = "linear-gradient(360deg, rgba(28, 96, 253, 0) 0%, rgba(28, 96, 253, 0.2) 100%)"
let TOTALS = data?.map(({ name, total }, index) => {
let max = Math.max(...data.map(item=>item.total))
console.log(data.map(item=>item.total),'好朋友吗')
// console.log(data.map(item=>item.total),'好朋友吗')
return {
name,
value: total,
@ -38,7 +38,7 @@ let new_TOTALS = TOTALS && TOTALS.length > 10 ? TOTALS.slice(0, 10) : TOTALS
function Cell(props) {
const { name, rank, value, percent, style = {},cebg } = props
let bg = RNAKS[rank] || OTHER
console.log(percent,'百分比')
// console.log(percent,'百分比')
return <div style={{
width: "100%", height: 34, display: "flex", justifyContent: 'center',
alignItems: "center", marginTop: 7, marginBottom: 7,
@ -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()}

15
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,'哈哈哈')
}
@ -112,13 +112,17 @@ const Build = (props) => {
</div>)}
</div>)
}
const xuandata1 = undefined
console.log(localStorage.getItem("qndmn"),'七牛')
return (
<div className='bgbuild'>
<div className='bgbuild-left'>
<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 +141,7 @@ const Build = (props) => {
<div>{buildingnumber?.buildedRoad || 0}</div>
</div>
</div>:<NoData/>}
</div>
</Module>
<Module title={"各乡镇道路分布统计"} style={{ width: "100%",
height:" 33%",marginTop:'3%'
@ -188,7 +193,7 @@ const Build = (props) => {
}} customize={true}>
<div className='build-right-top'>
{/* <img src='/assets/images/quanju/xuanchuanlan.jpg'></img> */}
<video src='#' autoplay controls></video>
<video src={xuandata?`${localStorage.getItem("qndmn")}/${xuandata[0].video!==null?xuandata[0].video[0]:""}`:"#"} autoPlay="autoplay" loop></video>
<h2>全面建设好农村公路切实发挥先行官作用</h2>
</div>
</Module>
@ -203,7 +208,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;

15
web/client/src/sections/quanju/containers/footer/conserve/index.js

@ -19,25 +19,24 @@ const Conserve = (props) => {
setLoading(false)
setRoadData(res.payload.data || {})
})
dispatch(getHighways()).then(res =>{
dispatch(getHighways()).then(res => {
setHighwaysData(res.payload.data || [])
})
dispatch(getRoadMaintenances()).then(res =>{
dispatch(getRoadMaintenances()).then(res => {
setRoadMaintenances(res.payload.data || [])
})
}, [])
return (
<div style={{ width: '100%', height: '100%', }}>
<div style={{ display: 'flex', width: '100%', height: '100%', justifyContent: 'space-between' }}>
<Left roadData={roadData} loading={loading} />
<Right highwaysData={highwaysData} roadMaintenances={roadMaintenances}/>
<div style={{ width: '100%', height: '100%', }}>
<div style={{ display: 'flex', width: '100%', height: '100%', justifyContent: 'space-between' }}>
<Left roadData={roadData} loading={loading} />
<Right highwaysData={highwaysData} roadMaintenances={roadMaintenances} />
</div>
</div>
</div>
)
}
function mapStateToProps(state) {
// const { auth } = state;
return {

2
web/client/src/sections/quanju/containers/footer/conserve/left/left-bottom.js

@ -37,7 +37,7 @@ const LeftBottom = (props) => {
total={totalData?.toFixed(3) || 0}
colorList={colorList}
textLeft={'20%'}
numLeft={'16%'}
numLeft={'14.5%'}
underColorList={underColorList}
/>
</Module>

2
web/client/src/sections/quanju/containers/footer/conserve/right/right-bottom.js

@ -62,7 +62,7 @@ const RightBottom = (props) => {
height='100%'
text='养护总数'
textLeft={'21%'}
numLeft={'23%'}
numLeft={'22%'}
total={totalData || 0}
colorList={colorList}
underColorList={underColorList}

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

@ -14,7 +14,8 @@ const RightCenter = (props) => {
const style = { height: "31%", marginTop: "3%" }
const textStyle = { fontSize: 14, color: '#E9F7FF' }
const numStyle = { color: '#fff', fontSize: 21, fontFamily: 'YouSheBiaoTiHei', textShadow: '0px 0px 8px #1C60FE', marginTop: 8 }
const list = highwaysData?.slice(4, 8).map((h,index)=>{
let list = highwaysData?.sort((a, b) => a.id - b.id)
list = highwaysData?.slice(4, 8).map((h,index)=>{
return {
id:h.id,
name:h.name,

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

@ -16,13 +16,14 @@ const RightTop = (props) => {
const style = { height: "31%", marginTop: "3%" }
const textStyle = { fontSize: 14, color: '#E9F7FF' }
const numStyle = { color: '#fff', fontSize: 21, fontFamily: 'YouSheBiaoTiHei', textShadow: '0px 0px 8px #1C60FE', marginTop: 8 }
const list = highwaysData?.slice(0, 4).map((h,index)=>{
let list = highwaysData?.sort((a, b) => a.id - b.id)
list = highwaysData?.slice(0, 4).map((h, index) => {
return {
id:h.id,
name:h.name,
count:h.count,
unit:unit[index],
icon:iconSrc[index]
id: h.id,
name: h.name,
count: h.count,
unit: unit[index],
icon: iconSrc[index]
}
})

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

@ -21,7 +21,7 @@ const Gis = (props) => {
const loadMap = () => {
const map = new AMap.Map(MAPID, {
resizeEnable: true,
center: [115.912663,28.543149],//地图中心点,初始定位加载显示楼块
center: [115.912663, 28.543149],//地图中心点,初始定位加载显示楼块
zoom: 15,//地图显示的缩放级别
zooms: [10, 12],
pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度

30
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,37 +98,18 @@ 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>
<div>{datas.total} <span></span></div>
</div>
<div className='guanli-left-item-right'>
<span></span>

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

@ -14,11 +14,16 @@ const Guanli = (props) => {
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,'哈哈哈')
// console.log(res.payload.data,'哈哈哈')
}
const data_string=(str)=> {
str.match('/([^.]*)$/g')
}
const requestRightDatas = async()=>{
const res = await dispatch(getjiandetail())
@ -28,13 +33,20 @@ const Guanli = (props) => {
let d = res.payload.data?.overSpeedList?.filter((item,index)=>{
return escape(item.processingTime).indexOf("%u")<0
})
// let d2 = d.sort((a,b)=>b.processingTime < a.processingTime ?-1:1)
let d2 = d.sort((a, b) => b.processingTime.localeCompare(a.processingTime))
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)
setrightitemlist(d)
console.log(d,'对比的数据')
console.log(d2,'完美')
console.log(res.payload.data,'嘿嘿嘿')
// console.log(d,'对比的数据')
// console.log(d2,'完美')
// console.log(res.payload.data,'嘿嘿嘿')
}
useEffect(()=>{
requestleftDatas();
@ -45,7 +57,7 @@ const Guanli = (props) => {
const renderContent = () => {
return <div style={{height:"100%"}}>
{rightitemlist && rightitemlist.length!==0?rightitemlist?.map(({ id, licensePlate, overrunRate,fine,processingTime }, index) => {
if(index<30){
if(index<120){
return <div key={index} className='guanli-right-item'>
<span>{licensePlate}</span>
<span>{overrunRate}%</span>

1
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%;

2
web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js

@ -19,7 +19,7 @@ const Lefttop = (props) => {
}
return (
<>
<Module style={style}>
<Module style={style} title={"路政统计"}>
<div style={{ width: "100%", height: "33%" }}>
<Top tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} />
</div>

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

@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react'
import Lun from "../right/lunbo"
import { getRoadmaintain, getdaolutongji } from "../../../../actions/example"
import moment from 'moment'
import { Spin } from 'antd'
const Right = (props) => {
const { dispatch } = props
@ -14,7 +15,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 +28,7 @@ const Right = (props) => {
// const
})
}, [])
console.log("1211", nums);
const renderBody = () => {
return (
@ -35,14 +40,16 @@ const Right = (props) => {
height: "20px", position: "relative", width: "100%", color: "#FFFFFF", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", fontSize: "14px"
}} onMouseEnter={() => {
setBeijing(index)
// console.log(beijing);
}} onMouseLeave={() => {
setBeijing()
}}>
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "6%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "1%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "20%", position: "absolute", left: "25%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "center", width: "30%", position: "absolute", right: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "18%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.roadSectionStart ? item.roadSectionStart : ""}{item.roadSectionStart && item.roadSectionEnd ? "——" : ""}{item.roadSectionEnd ? item.roadSectionEnd : ""}{item.roadSectionStart || item.roadSectionEnd ? "" : "--"}</p>
<p style={{ textAlign: "center", width: "10%", position: "absolute", left: "43%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "left", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "right", width: "30%", position: "absolute", right: "3%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
)
})
}
@ -55,21 +62,21 @@ 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={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p>
<p style={{ 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>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100}</span><span>%</span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span><span>%</span></p>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
@ -77,9 +84,10 @@ 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>
{/* <Spin spinning={true} style={{ height: "80%" }}> */}
<Lun
// canScroll={true}
content={renderBody()}
@ -87,6 +95,7 @@ const Right = (props) => {
divHeight={"100%"}
divId={"screen"}
/>
{/* </Spin> */}
</div>
</div>

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

@ -9,12 +9,18 @@ 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"
}))
// console.log(nums);
})
}, [])
useEffect(() => {
const daolus = dispatch(getdaolutongji()).then((res) => {
@ -30,19 +36,24 @@ const Right = (props) => {
<div style={{ width: "100%", height: "100%" }}>
{
list.map((item, index) => {
console.log(list);
return (
<li className={index} style={{
height: "20px", position: "relative", width: "100%", color: "#FFFFFF", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", fontSize: "14px"
}} onMouseEnter={() => {
setBeijing(index)
// console.log(beijing);
}} onMouseLeave={() => {
setBeijing()
}}>
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "6%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "1%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "20%", position: "absolute", left: "25%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "center", width: "30%", position: "absolute", right: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "18%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.roadSectionStart ? item.roadSectionStart : ""}{item.roadSectionStart && item.roadSectionEnd ? "——" : ""}{item.roadSectionEnd ? item.roadSectionEnd : ""}{item.roadSectionStart || item.roadSectionEnd ? "" : "--"}</p>
<p style={{ textAlign: "center", width: "10%", position: "absolute", left: "43%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "left", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "right", width: "30%", position: "absolute", right: "3%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
)
})
}
@ -55,21 +66,21 @@ 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={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["县"] / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span>%</p>
<p style={{ 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={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100}</span><span>%</span></p>
<p style={{ width: "50%", position: "absolute", color: "rgba(216,240,255,0.8)", fontSize: "18px" }}>乡村涵洞<span style={{ marginLeft: "4%", fontFamily: "YouSheBiaoTiHei", fontSize: "24px", color: "#F5FCFF" }}>{(roads?.["乡"] + roads?.["村"]).toFixed(0)}</span><span style={{ marginLeft: "4%" }}></span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])) * 100).toFixed(2)}</span><span>%</span></p>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
@ -77,7 +88,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

31
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(() => {
@ -35,13 +39,16 @@ const Right = (props) => {
}} onMouseEnter={() => {
setBeijing(index)
// console.log(beijing);
}} onMouseLeave={() => {
setBeijing()
}}>
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "6%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/shezhi.png' style={{ width: "2%", height: "80%", position: "absolute", top: "12%", left: "1%" }} /> : ""}
{beijing == index ? <img src='/assets/images/leadership/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "20%", position: "absolute", left: "25%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "25%", position: "absolute", right: "35%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "center", width: "30%", position: "absolute", right: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "18%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.roadSectionStart ? item.roadSectionStart : ""}{item.roadSectionStart && item.roadSectionEnd ? "——" : ""}{item.roadSectionEnd ? item.roadSectionEnd : ""}{item.roadSectionStart || item.roadSectionEnd ? "" : "--"}</p>
<p style={{ textAlign: "center", width: "10%", position: "absolute", left: "43%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >日常养护</p>
{item.user?.name ? <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.user.name}</p> : <p style={{ textAlign: "center", width: "10%", position: "absolute", right: "28.5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >--</p>}
<p style={{ textAlign: "left", width: "25%", position: "absolute", left: "5%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }} >{item.road ? item.road : "--"}</p>
<p style={{ textAlign: "right", width: "30%", position: "absolute", right: "3%", color: beijing == index ? "#ffffff" : "rgba(216,240,255,0.8)" }}>{moment(item.time).format("YYYY-MM-Do HH:mm:ss") ? moment(item.time).format("YYYY-MM-Do HH:mm:ss") : "--"}</p></li>
)
})
}
@ -54,21 +61,21 @@ 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={{ position: "absolute", color: "rgba(216,240,255,0.8)" }}>占比<span style={{ fontFamily: " PingFangSC-Regular, PingFang SC" }}>{((roads?.["大桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span>%</p>
<p style={{ 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>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(4) * 100}</span><span>%</span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{(((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])) * 100).toFixed(2)}</span><span>%</span></p>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
@ -76,7 +83,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

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

@ -1,39 +1,72 @@
import React, { useEffect, useRef } from 'react'
import React, { useEffect, useRef, useState } from 'react'
import * as echarts from 'echarts';
import { getGodshuju } from "../../../../../actions/example"
const Lefttopecharts = () => {
// const newshow = 1
const Lefttopecharts = (props) => {
const { dispatch } = props
const chartRef = useRef(null);
const [mass, setMass] = useState()
const [shows, setShows] = useState(1)
useEffect(() => {
const shuju = dispatch(getGodshuju()).then((res) => {
// console.log(res);
setMass(res.payload.data.index)
// setspeed(res.payload.data.speed)
// console.log(124);
})
}, [shows])
useEffect(() => {
const timer = window.setInterval(() => {
setShows(new Date());
}, 300000);
return () => {
clearInterval(timer);
};
}, []);
// console.log(shows);
useEffect(() => {
// const shuju = dispatch(getGodshuju()).then((res) => {
// // console.log(res);
// setMass(res.payload.data.index)
// // setspeed(res.payload.data.speed)
// })
console.log(mass);
var chartInstance = echarts.init(chartRef.current);
var dataArr = 50;
// var dataArr = mass || 0;
var names = names()
var colorSet = colors();
function names() {
if (dataArr >= 0 && dataArr < 30) {
return ("畅通");
} else if (dataArr >= 30 && dataArr < 50) {
return ("缓行");
} else if (dataArr >= 50 && dataArr < 70) {
return ("拥堵");
} else if (dataArr >= 70 && dataArr <= 100) {
return ("严重拥堵");
if (mass) {
if (mass >= 0 && mass < 30) {
return ("畅通");
} else if (mass >= 30 && mass < 50) {
return ("缓行");
} else if (mass >= 50 && mass < 70) {
return ("拥堵");
} else if (mass >= 70 && mass <= 100) {
return ("严重拥堵");
}
}
}
function colors() {
if (dataArr >= 0 && dataArr < 30) {
// if (mass || 50) {
if (mass || 0 >= 0 && mass || 0 < 30) {
return (colorSet = { color: "#33B000" });
} else if (dataArr >= 30 && dataArr < 50) {
} else if (mass || 0 >= 30 && mass || 0 < 50) {
return (colorSet = { color: "#FECB00" });
} else if (dataArr >= 50 && dataArr < 70) {
} else if (mass || 0 >= 50 && mass || 0 < 70) {
return (colorSet = { color: "#DF0001" });
} else if (dataArr >= 70 && dataArr <= 100) {
} else if (mass || 0 >= 70 && mass || 0 <= 100) {
return (colorSet = { color: "#8E0E0B" });
}
// }
}
var option = {
// backgroundColor: "#0E1327",
tooltip: {
formatter: "{a} <br/>{b} : {c}%",
formatter: "{a} <br/>{b} : {c}",
},
series: [
@ -47,8 +80,8 @@ const Lefttopecharts = () => {
axisLine: {
lineStyle: {
color: [
[dataArr / 100, colorSet.color],
[1, "#111F42"],
[mass || [] /* / 100 */, colorSet.color || []],
// [2, "#111F42"],
],
width: 3,
},
@ -67,11 +100,12 @@ const Lefttopecharts = () => {
// },
detail: {
formatter: function (value) {
// console.log(value, 12121);
if (value !== 0) {
var num = Math.round(value);
// var num = Math.round(value);
return (
parseInt(num).toFixed(0) +
"%" +
value +
"\n" +
"\n" +
"\n" +
@ -83,7 +117,7 @@ const Lefttopecharts = () => {
return 0;
}
},
offsetCenter: [0, 82],
offsetCenter: [0, 60],
textStyle: {
padding: [0, 0, 0, 0],
fontSize: 18,
@ -98,7 +132,7 @@ const Lefttopecharts = () => {
offsetCenter: [0, 46], // x, y,单位px
textStyle: {
color: "#fff",
fontSize: 14, //表盘上的标题文字大小
fontSize: "2vh", //表盘上的标题文字大小
fontWeight: 400,
fontFamily: "PingFangSC",
},
@ -107,7 +141,7 @@ const Lefttopecharts = () => {
{
name: "拥堵指数",
value: dataArr,
value: mass || [],
itemStyle: colorSet
},
],
@ -182,7 +216,7 @@ const Lefttopecharts = () => {
window.addEventListener('resize', function () {
chartInstance.resize();
})
}, []);
}, [mass]);
return (
@ -190,25 +224,23 @@ const Lefttopecharts = () => {
<div ref={chartRef} style={{
height: "20vh", width: "100%"
}}></div>
<div style={{ position: "relative", top: "-29%", left: "42.5%", color: "rgba(216,240,255,0.8000)", fontSize: "12px" }}>Km/h</div>
<div style={{ position: "relative", top: "-49%", left: "43%", color: "rgba(216,240,255,0.8000)", fontSize: "12px" }}>当前</div>
{/* <div style={{ width: "10%", height: "5%", position: "relative", top: "-32%", left: "42.5%", backgroundColor: "#002D96" }}></div> */}
<div style={{ width: "100%", height: "20vh", marginTop: "-29%" }}>
<div style={{ width: "100%", height: "20vh", marginTop: "-9%" }}>
<div style={{ width: "100%", height: "5%", color: "rgba(216,240,255,0.8000)", position: "relative", top: "3%" }}>
<p style={{ position: "absolute", left: "25%", top: "5%" }}><p style={{ position: "absolute", width: "10px", height: "10px", background: "#33B000", left: "-50%", top: "20%" }}></p></p>
<p style={{ position: "absolute", left: "60%" }}>0-30</p>
<p style={{ position: "absolute", left: "60%" }}>{"[0,30)"}</p>
</div>
<div style={{ width: "100%", height: "5%", color: "rgba(216,240,255,0.8000)", position: "relative", top: "11%" }}>
<p style={{ position: "absolute", left: "25%", top: "5%" }}><p style={{ position: "absolute", width: "10px", height: "10px", background: "#FECB00", left: "-50%", top: "20%" }}></p></p>
<p style={{ position: "absolute", left: "60%" }}>30-50</p>
<p style={{ position: "absolute", left: "60%" }}>{"[30,50)"}</p>
</div>
<div style={{ width: "100%", height: "5%", color: "rgba(216,240,255,0.8000)", position: "relative", top: "19%" }}>
<p style={{ position: "absolute", left: "25%", top: "5%" }}><p style={{ position: "absolute", width: "10px", height: "10px", background: "#DF0001", left: "-50%", top: "20%" }}></p></p>
<p style={{ position: "absolute", left: "60%" }}>50-70</p>
<p style={{ position: "absolute", left: "60%" }}>{"[50,70)"}</p>
</div>
<div style={{ width: "100%", height: "5%", color: "rgba(216,240,255,0.8000)", position: "relative", top: "27%" }}>
<p style={{ position: "absolute", left: "25%", top: "5%" }}><p style={{ position: "absolute", width: "10px", height: "10px", background: "#8E0E0B", left: "-25%", top: "20%" }}></p></p>
<p style={{ position: "absolute", left: "60%" }}>70-100</p>
<p style={{ position: "absolute", left: "60%" }}>{"[70,100]"}</p>
</div>
</div>
</>

5
web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js

@ -74,11 +74,14 @@ const Leftcenter = () => {
list.map((item, index) => {
return index + 1 == num ?
<div style={{ width: "100%", height: "100%", position: "relative" }}>
<img style={{ width: "100%", position: "absolute", bottom: "5%" }} src={item.img} />
<p style={{
width: "100%", height: "3vh", position: "absolute", bottom: "3%",
backgroundColor: "rgba(0,0,0,0.26)", lineHeight: "3vh", textAlign: ""
}}><span style={{ marginLeft: "13%", color: "#FFFFFF", fontSize: "12px", fontFamily: "PingFangSC-Regular, PingFang SC", fontWeight: 400 }}>{item.name}</span></p>
}}>
<img src='/assets/images/leadership/weizhis.png' style={{ width: "5%", height: "60%", marginLeft: "3%" }} />
<span style={{ marginLeft: "3%", color: "#FFFFFF", fontSize: "12px", fontFamily: "PingFangSC-Regular, PingFang SC", fontWeight: 400 }}>{item.name}</span></p>
</div> : ""
})

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

@ -2,17 +2,21 @@ import React, { useEffect, useState } from 'react'
import Module from '../../../public/module'
import Leftcenter from './left-center'
import Lefttopecharts from "./echarts/lefttopecharts"
import { GodTransRequest } from "../../../../../../utils/webapi"
import { getGodshuju } from "../../../../actions/example"
import request from 'superagent'
const Lefttop = () => {
const Lefttop = (props) => {
const { dispatch } = props
const style = { height: "68%" }
const [mass, setMass] = useState()
const [speed, setspeed] = useState()
const [traffic, setTraffic] = useState()
useEffect(() => {
// return () => {
request('GET', '/search').then((success, failure) => {
console.log(success);
});
// };
const shuju = dispatch(getGodshuju()).then((res) => {
// console.log(res);
setMass(res.payload.data.index)
setspeed(res.payload.data.speed)
})
}, [])
return (
<>
@ -25,7 +29,7 @@ const Lefttop = () => {
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "5%"
}}>路况</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "12%", left: "30%" }}>畅通</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "12%", left: "30%" }}>{mass ? (mass < 30 ? "畅通" : "") : ""}{mass ? (30 <= mass && mass < 50 ? "缓慢" : "") : ""}{mass ? (50 <= mass && mass < 70 ? "拥堵" : "") : ""}{mass ? (70 <= mass && mass <= 100 ? "严重拥堵" : "") : ""}</p>
</div>
<div style={{ width: "100%", height: "30%" }}>
<img src='/assets/images/leadership/pingshi.png' style={{ width: "15%", height: "30%", position: "absolute", left: "10%" }} />
@ -33,7 +37,7 @@ const Lefttop = () => {
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "35%"
}}>平均时速</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "42%", left: "30%" }}>55.2<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "42%", left: "30%" }}>{speed || []}<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
</div>
<div style={{ width: "100%", height: "30%" }}>
<img src='/assets/images/leadership/mingri.png' style={{ width: "15%", height: "30%", position: "absolute", left: "10%" }} />
@ -41,12 +45,12 @@ const Lefttop = () => {
fontSize: "14px", fontFamily: "PingFangSC-Regular, PingFang SC", color: "rgba(216,240,255,0.8000)",
position: "absolute", left: "30%", top: "65%"
}}>预测明日</p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "72%", left: "30%" }}>55.2<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
<p style={{ fontSize: "24px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", position: "absolute", top: "72%", left: "30%" }}>{(speed + ((Math.random() * (6) - 3))).toFixed(2)}<span style={{ fontSize: "2px", color: "#EEF4FF" }}>Km/h</span></p>
</div>
</div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "-10%" }}>
<Lefttopecharts />
<Lefttopecharts mass={mass} dispatch={dispatch} />
</div>
</div>
<div style={{ width: "100%", height: "40%", position: "relative", /* top: "63%" */ }}>

47
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>

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

@ -1,5 +1,6 @@
import React, { useState, useEffect } from 'react'
import Module from '../../../public/module'
import { Spin } from 'antd'
import Lun from "./lunbo"
import "./left.less"
import { getZhichaolist } from "../../../../actions/example"
@ -12,12 +13,12 @@ const Rightbottom = (props) => {
const [nums, setNums] = useState([])
useEffect(() => {
const zhichaolist = dispatch(getZhichaolist()).then((res) => {
setList(res.payload?.data?.overSpeedList)
setList(res.payload?.data?.overSpeedList.filter(item => /.*[\u4e00-\u9fa5_a-zA-Z]+.*$/.test(item.processingTime) == false
))
// console.log(res);
setNums(res.payload?.data?.processed)
})
})
// console.log(list);
}, [])
const renderBody = () => {
return (
<div style={{ width: "100%", height: "50%" }}>
@ -25,12 +26,14 @@ const Rightbottom = (props) => {
return <li style={{ width: "100%", height: "3vh", marginTop: "5px", position: "relative", }} onMouseEnter={() => {
setBeijing(index)
// console.log(beijing);
}} onMouseLeave={() => {
setBeijing()
}}>
{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>
})
@ -41,6 +44,7 @@ const Rightbottom = (props) => {
return (
<>
<Module style={style} title={"治超详情"}>
<div style={{ position: "relative", width: "90%", height: "5%", left: "5%", textAlign: "right", fontSize: "16px", top: "-3%", color: "rgba(216,240,255,0.8)" }}>
<img src='/assets/images/leadership/jiejue.png' style={{ width: "4.5%", height: "2vh", marginTop: "-1%" }} />
已处理<span style={{ color: "#FFFFFF", fontSize: "18px", paddingLeft: "2%", paddingRight: "2%" }}>{nums}</span>
@ -49,14 +53,16 @@ const Rightbottom = (props) => {
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh" }}>车牌号</p>
<p style={{ width: "10%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "30%" }}>超限</p>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "40%" }}>处罚</p>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "70%" }}>日期</p>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh", left: "70%" }}>处理日期</p>
</div>
{/* <Spin tip="Loading..." spinning={false} > */}
<Lun
content={renderBody()}
containerStyle={{ position: "relative", height: "70%", width: "90%", left: "5%", top: "8%" }}
divHeight={"100%"}
divId={"screen-slope-midde-top"}
/>
{/* </Spin> */}
</Module>
</>
)

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

@ -1,6 +1,6 @@
import React, { useState, useEffect } from 'react';
import Module from '../../../public/module'
import { Radio, Select } from 'antd';
import { Radio, Select, Spin } from 'antd';
import Lunbo from "./lunbo"
import Huadong from './hudong';
import "./left.less"
@ -56,6 +56,8 @@ const Righttop = () => {
<li className={index} style={{ height: "20px", position: "relative", width: "100%", color: "#FFFFFF", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", fontSize: "14px" }} onMouseEnter={() => {
// setTu(item.img);
setNum(index);
}} onMouseLeave={() => {
setNum()
}}>
{num == index ? <img src='/assets/images/leadership/red.png' style={{ width: "100%", height: "120%", position: "absolute", }} /> : ""}
{num == index ? <img src='/assets/images/leadership/wangluo.png' style={{ width: "5%", height: "100%", position: "absolute", left: "-0.5%", top: "20%" }} /> : ""}
@ -72,10 +74,14 @@ 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}
@ -105,6 +111,7 @@ const Righttop = () => {
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "10%" }}>离线详情</span>
<img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} />
</div>
{/* <Spin tip="Loading..." spinning={num ? true : false} style={{ width: "100%", height: "100%" }}> */}
<Lunbo
// canScroll={true}
content={renderBody()}
@ -112,8 +119,11 @@ const Righttop = () => {
divHeight={"100%"}
divId={"screen-slope"}
/>
{/* </Spin> */}
</div>
</Module>
</>
)
}

116
web/client/src/sections/quanju/containers/footer/operation/left.js

@ -6,10 +6,12 @@ import { getBusTierList } from '../../../actions/example'
import './style.less'
const Left = (props) => {
const [treeData, setTreeData] = useState([])
const [treeDataList, setTreeDataList] = useState([])
const [expandedKeys, setExpandedKeys] = useState([]);
const [searchValue, setSearchValue] = useState('');
const [autoExpandParent, setAutoExpandParent] = useState(true);
const onExpand = (newExpandedKeys) => {
@ -20,6 +22,7 @@ const Left = (props) => {
useEffect(() => {
const { dispatch } = props
dispatch(getBusTierList())
}, [])
const { busTier } = props
const style = { height: "97%", marginTop: "3%" }
@ -35,50 +38,91 @@ const Left = (props) => {
setSearchValue(value);
setAutoExpandParent(true);
};
const loop = (treeData) =>
treeData.map((item) => {
// console.log(item,'===> item -----');
const index = item.title != null && item.title.indexOf(searchValue);
const beforeStr = item.title != null && item.title.substr(0, index);
const afterStr = item.title != null && item.title.substr(index + searchValue.length);
const title =
index > -1 ? (
<span>
{beforeStr}
<span className="site-tree-search-value">{searchValue}</span>
{afterStr}
</span>
) : (
<span>{item.title}</span>
);
if (item.children && item.children.length > 0) {
const children = loop(item.children);
return {
...item,
title: index > -1 || children.length ? title : null,
children: children.length ? children : undefined
};
}
return index > -1
? {
...item,
title
}
: {
...item,
title: null
};
})
.filter((item) => !!item.title);
useEffect(() => {
let busTierList = []
let busTierOpen = []
let dataList = []
busTier && busTier.data && busTier.data.forEach((e, index) => {
if (index == 0) {
busTierOpen.push(e.name)
}
busTierList.push({
key: e.name,
title: e.name,
children: e.child.map(s => {
return {
key: s.name,
title: s.name,
children: s.child.map(i => {
return {
key: i.vehicleLicensePlateNumber,
title: i.vehicleLicensePlateNumber,
}
})
}
let busTierNewList = []
if (busTier && busTier.data && busTier.data.length > 0) {
busTierNewList.push(busTier && busTier.data && busTier.data[0])
}
if (busTierNewList.length > 0) {
busTierNewList.forEach((e, index) => {
if (index == 0) {
busTierOpen.push(e.name)
}
busTierList.push({
key: e.name,
title: e.name,
children: e.child.map(s => {
return {
key: s.name,
title: s.name,
children: s.child.map(i => {
return {
key: i.name,
title: i.name,
children: i.child.map(x => {
return {
key: x.name,
title: x.name,
}
})
}
})
}
})
})
})
})
busTier && busTier.data && busTier.data.forEach(e => {
dataList.push({
key: e.name,
title: e.name,
})
e.child.forEach(i => {
dataList.push({
key: i.name,
title: i.name,
})
i.child.forEach(s => {
dataList.push({
key: s.vehicleLicensePlateNumber,
title: s.vehicleLicensePlateNumber,
busTierNewList.forEach(e => {
e.child.forEach(i => {
i.child.forEach(s => {
s.child.forEach(x => {
dataList.push({
key: x.name,
title: x.name
})
})
})
})
})
})
}
setTreeData(busTierList)
setExpandedKeys(busTierOpen)
setTreeDataList(dataList)
@ -115,8 +159,8 @@ const Left = (props) => {
onExpand={onExpand}
expandedKeys={expandedKeys}
autoExpandParent={autoExpandParent}
treeData={treeData}
/> : <div style={{width:'100%',color:'#fff',textAlign:'center',marginTop:'90%'}}></div>
treeData={loop(treeData)}
/> : <div style={{ width: '100%', color: '#fff', textAlign: 'center', marginTop: '90%' }}></div>
}
</div>

2
web/client/src/sections/quanju/containers/heand/index.js

@ -21,7 +21,7 @@ const Header = (props) => {
<div className={tabKey == "build" ? "tabKey-map" : "notabKey"} style={{ backgroundImage: "url(/assets/images/quanju/zuobeijing.png)", backgroundSize: "100% 100%" }} onClick={() => {
onClick("build")
}}><a>建设</a></div>
<div className={tabKey == "guanli" ? "tabKey-map" : "notabKey"} style={{ left: "11.5%", backgroundImage: "url(/assets/images/quanju/youbeijing.png)", backgroundSize: "100% 100%" }} onClick={() => {
<div className={tabKey == "guanli" ? "tabKey-map" : "notabKey"} style={{ left: "11.5%", backgroundImage: "url(/assets/images/quanju/zuobeijing.png)", backgroundSize: "100% 100%" }} onClick={() => {
onClick("guanli")
}}><a>管理</a></div>
<div className={tabKey == "leadership" ? "tabKey-map" : "notabKey"} style={{ left: "23%", backgroundImage: "url(/assets/images/quanju/zuobeijing.png)", backgroundSize: "100% 100%" }} onClick={() => {

8
web/client/src/sections/quanju/containers/heand/style.less

@ -5,8 +5,11 @@
position: absolute;
top: 3vh;
a{
color: #c3d4f5;
color: #FFFFFF;
font-size: 2vh;
font-family: PingFangSC-Medium, PingFang SC;
line-height: 4.7vh;
font-weight: 500;
}
}
.notabKey{
@ -17,7 +20,10 @@
text-align: center;
a{
color: #6593c6;
font-size: 2vh;
font-family: PingFangSC-Medium, PingFang SC;
line-height: 4.7vh;
font-weight: 500;
}
}

8
web/client/src/sections/quanju/containers/public/module.js

@ -3,17 +3,17 @@ import "./font.css"
import "./left.less"
const Module = (props) => {
const { style, children, title, hualun,customize } = props
const { style, children, title, hualun, customize } = props
return (
<>
<div style={{ width: style?.width || "100%", height: style?.height || "30%", backgroundColor: "rgba(0,33,98,0.8)", marginTop: style?.marginTop || "0" }}>
<div style={{ width: "100%", height: "40px"/* , backgroundColor: "#fff" */, position: "relative" }}>
{/* <p>{title || []}</p> */}
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "3%", top: "15%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "10%" }}>{title || []}</span>
<img src='/assets/images/quanju/icon.png' style={{ width: "24px", position: "absolute", left: "20px", top: "15%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "50px" }}>{title || []}</span>
<img src='/assets/images/quanju/mokuaitou.png' style={{ width: "100%", height: "28px", position: "absolute", top: "12px" }} />
</div>
<div id='scroll-2' style={{ width: "100%", height: customize?`calc(100% - 40px)`:"80%", overflow: hualun }}>
<div id='scroll-2' style={{ width: "100%", height: customize ? `calc(100% - 40px)` : "80%", overflow: hualun }}>
{children}
</div>
</div>

4
web/client/src/sections/quanju/routes.js

@ -4,8 +4,8 @@ import { Example, Build } from './containers';
export default [{
type: 'outer',
route: {
path: '/quanju',
key: 'quanju',
path: '/screen/cockpit',
key: 'cockpit',
breadcrumb: '全局展示',
exact: false,
component: Example,

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

@ -2,7 +2,6 @@
import { ProxyRequest } from "@peace/utils";
export const GodTransRequest = new ProxyRequest("_godTrans");
export const ApiTable = {
login: 'login',
logout: 'logout',
@ -52,6 +51,7 @@ export const ApiTable = {
queryFileDIr: 'get/file/dirs',
updateFileDir: 'netdisk-files/struct/dir/update',
//运政管理
getOperaTional: 'vehicle', putOperaTional: 'vehicle',
getSpecificVehicle: 'vehicle/specific', putSpecificVehicle: 'vehicle/specific', delSpecificVehicle: 'vehicle/{vehicleId}/specific',
@ -95,9 +95,24 @@ export const ApiTable = {
//获取宣传数据
getpropagata: 'publicity',
// <<<<<<< HEAD
// //公交信息
// getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',
// getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}',
// =======
//公交信息
getCircuit: 'bus/line', putCircuit: 'bus/line', delCircuit: 'bus/line/{lineId}',
getVehicle: 'bus/car', putVehicle: 'bus/car', delVehicle: 'bus/car/{carId}',
// 获取道路拥堵指数
getgodshuju: "data/god_trans",
//治超管理
getPurchase: 'overspeed',
putPurchase: 'overspeed',
delPurchase: 'overspeed/{overspeedId}',
// >>>>>>> a3fe9bee43370f1e5ceb69dcdef1b9b7cbf9c84c
};

15
web/config.js

@ -16,9 +16,11 @@ dev && console.log('\x1B[33m%s\x1b[0m', '请遵循并及时更新 readme.md,
args.option(['p', 'port'], '启动端口');
args.option(['u', 'api-url'], 'webapi的URL');
args.option(['r', 'report-node'], '报表进程地址');
args.option('qndmn', '七牛');
const flags = args.parse(process.argv);
const FS_UNIAPP_API = process.env.FS_UNIAPP_API || flags.apiUrl;
const QINIU_DOMAIN_QNDMN_RESOURCE = process.env.ANXINCLOUD_QINIU_DOMAIN_QNDMN_RESOURC || flags.qndmn;
if (!FS_UNIAPP_API) {
console.log('缺少启动参数,异常退出');
@ -35,12 +37,25 @@ const product = {
host: FS_UNIAPP_API,
match: /^\/_api\//,
}
}, {
entry: require('./middlewares/proxy').entry,
opts: {
host: QINIU_DOMAIN_QNDMN_RESOURCE,
match: /^\/_file-server\//,
}
}, {
entry: require('./middlewares/proxy').entry,
opts: {
host: 'https://report.amap.com',
match: /^\/_godTrans\//,
}
}, {
entry: require('./routes').entry,
opts: {
apiUrl: FS_UNIAPP_API,
qndmn: QINIU_DOMAIN_QNDMN_RESOURCE,
staticRoot: './client',
}
}, {
entry: require('./client').entry,// 静态信息
opts: {}

9737
web/log/development.txt

File diff suppressed because it is too large

2
web/package.json

@ -6,7 +6,7 @@
"scripts": {
"test": "mocha",
"start": "cross-env NODE_ENV=development npm run start-params",
"start-params": "npm run color && node server -p 5000 -u http://localhost:4000",
"start-params": "node server -p 5000 -u http://10.8.30.7:14000 --qndmn http://rfkimpwbb.hn-bkt.clouddn.com",
"deploy": "export NODE_ENV=production&&npm run color && npm run build && node server",
"build-dev": "export NODE_ENV=development&&webpack --config webpack.config.js",
"build": "export NODE_ENV=production&&webpack --config webpack.config.prod.js",

6
web/routes/attachment/index.js

@ -17,12 +17,10 @@ const ext = {
module.exports = {
entry: function (app, router, opts) {
const getApiRoot = async function (ctx) {
const { apiUrl } = opts;
const { apiUrl, qndmn } = opts;
ctx.status = 200;
ctx.body = { root: apiUrl };
ctx.body = { root: apiUrl, qndmn };
};
let upload = async function (ctx, next) {

Loading…
Cancel
Save