Browse Source

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

release_0.0.4
LUCAS 2 years ago
parent
commit
330796b33f
  1. 123
      api/app/lib/controllers/data/index.js
  2. 5
      api/app/lib/controllers/data/road.js
  3. 29
      api/app/lib/controllers/organization/department.js
  4. 5
      api/app/lib/controllers/overview/management.js
  5. 4
      api/app/lib/controllers/overview/operation.js
  6. 1884
      api/app/lib/models/bridge.js
  7. 1029
      api/app/lib/models/bus_car.js
  8. 478
      api/app/lib/models/bus_line.js
  9. 592
      api/app/lib/models/municipal_business.js
  10. 801
      api/app/lib/models/municipal_vehicle.js
  11. 383
      api/app/lib/models/overspeed.js
  12. 4
      api/app/lib/routes/data/index.js
  13. 1397
      api/log/development.log
  14. 7
      api/package.json
  15. 4
      api/utils/xlsxDownload.js
  16. 60
      api/yarn.lock
  17. BIN
      scripts/0.0.1/data/工具脚本(无需执行)/data/治超/非现场处罚总台账更新至2022.7.5(最新).xlsx
  18. 8
      weapp/src/packages/patrol/index.jsx
  19. 3
      weapp/src/packages/patrolView/index.config.js
  20. 67
      weapp/src/packages/patrolView/index.jsx
  21. 2
      weapp/src/pages/user/index.jsx
  22. 136
      web/client/assets/color.less
  23. BIN
      web/client/assets/images/leadership/bei.png
  24. BIN
      web/client/assets/images/leadership/center.png
  25. BIN
      web/client/assets/images/leadership/you.png
  26. BIN
      web/client/assets/images/leadership/zuo.png
  27. 36
      web/client/src/sections/quanju/actions/example.js
  28. 76
      web/client/src/sections/quanju/containers/example.js
  29. 5
      web/client/src/sections/quanju/containers/footer/build/index.js
  30. 8
      web/client/src/sections/quanju/containers/footer/build/style.less
  31. 4
      web/client/src/sections/quanju/containers/footer/index.js
  32. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js
  33. 7
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/bottom.js
  34. 9
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js
  35. 5
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-top.js
  36. 91
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/daolu.js
  37. 24
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js
  38. 91
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/handong.js
  39. 32
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/bottomlunbo.js
  40. 182
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/lunbo.js
  41. 36
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/lunbo/toplunbo.js
  42. 90
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/qiqoliang.js
  43. 24
      web/client/src/sections/quanju/containers/footer/leadership/centerleft/top.js
  44. 9
      web/client/src/sections/quanju/containers/footer/leadership/index.js
  45. 7
      web/client/src/sections/quanju/containers/footer/leadership/left.js
  46. 43
      web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js
  47. 5
      web/client/src/sections/quanju/containers/footer/leadership/left/left-bottom.js
  48. 10
      web/client/src/sections/quanju/containers/footer/leadership/left/left-center.js
  49. 11
      web/client/src/sections/quanju/containers/footer/leadership/left/left-top.js
  50. 7
      web/client/src/sections/quanju/containers/footer/leadership/right.js
  51. 36
      web/client/src/sections/quanju/containers/footer/leadership/right/hudong.js
  52. 11
      web/client/src/sections/quanju/containers/footer/leadership/right/left.less
  53. 9
      web/client/src/sections/quanju/containers/footer/leadership/right/lunbo copy.js
  54. 62
      web/client/src/sections/quanju/containers/footer/leadership/right/right-bottom.js
  55. 10
      web/client/src/sections/quanju/containers/footer/leadership/right/right-top.js
  56. 2
      web/client/src/sections/quanju/containers/footer/operation/index.js
  57. 2
      web/client/src/themes/light.json
  58. 28
      web/client/src/utils/webapi.js
  59. 15692
      web/log/development.txt
  60. 4321
      web/package-lock.json
  61. 2
      web/package.json

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

@ -1,27 +1,116 @@
'use strict';
const { simpleExcelDown } = require('../../../../utils/xlsxDownload');
const fs = require('fs');
const xlsxDownload = require('../../../../utils/xlsxDownload.js');
const moment = require('moment');
async function dataExport (ctx) {
try {
// const models = ctx.fs.dc.models;
// const { userId } = ctx.fs.api
// const { ids } = ctx.query;
const models = ctx.fs.dc.models;
const { userId } = ctx.fs.api
const { ids } = ctx.query;
const fileList = [
{
n: '道路',
tableName: 'road',
defaultKey: ['level'],
defaultValue: ['村'],
},
{
n: '道路',
tableName: 'road',
defaultKey: ['level'],
defaultValue: ['县'],
},
{
n: '道路',
tableName: 'road',
defaultKey: ['level'],
defaultValue: ['乡'],
},
{
n: '桥梁',
tableName: 'bridge'
},
{
n: '运政车辆',
tableName: 'municipal_vehicle',
defaultKey: ['type'],
defaultValue: ['出租车'],
},
{
n: '运政车辆',
tableName: 'municipal_vehicle',
defaultKey: ['type'],
defaultValue: ['危货'],
},
{
n: '运政业户',
tableName: 'municipal_business',
defaultKey: ['type'],
defaultValue: ['出租车'],
},
{
n: '运政业户',
tableName: 'municipal_business',
defaultKey: ['type'],
defaultValue: ['危货'],
},
{
n: '工程一览',
tableName: 'project',
defaultKey: ['done', 'type'],
defaultValue: [false, 'road'],
},
{
n: '工程一览',
tableName: 'project',
defaultKey: ['done', 'type'],
defaultValue: [false, 'bridge'],
},
{
n: '治超',
tableName: 'overspeed',
},
{
n: '公交线路',
tableName: 'bus_line',
},
{
n: '公交车辆',
tableName: 'bus_car',
},
]
let findOption = {
where: {}
}
if (ids) {
findOption.where.id = { $in: ids.split(',') }
}
// const exportData = await models.BusCar.destroy({
// where: {
// id: { $in: ids.split(',') }
// }
// })
const exportData = await models.BusCar.findAll(findOption)
const tableAttributes = models.BusCar.tableAttributes
let header = []
for (let k in tableAttributes) {
if (k != 'id') {
header.push({
title: tableAttributes[k].comment || '-',
key: k,
index: tableAttributes[k].index,
})
}
}
header.sort((a, b) => { return a.index - b.index })
// const fileName = `摄像头信息列表_${userId}_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
// const filePath = await simpleExcelDown({ data: exportData, header, fileName: fileName })
// const fileData = fs.readFileSync(filePath);
const fileName = `摄像头信息列表_${moment().format('YYYYMMDDHHmmss')}` + '.csv'
const filePath = await xlsxDownload.simpleExcelDown({ data: exportData, header, fileName: fileName })
const fileData = fs.readFileSync(filePath);
// ctx.status = 200;
// ctx.set('Content-Type', 'application/x-xls');
// ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
// ctx.body = fileData;
ctx.status = 200;
ctx.set('Content-Type', 'application/x-xls');
ctx.set('Content-disposition', 'attachment; filename=' + encodeURI(fileName));
ctx.body = fileData;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;

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

@ -48,9 +48,8 @@ async function get (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'].

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

@ -59,14 +59,20 @@ async function editDep (ctx) {
},
})
if (!dep) {
ctx.status = 400;
ctx.body = {
"message": "上级部门不存在"
}
return
throw "上级部门不存在"
}
}
if (depId) {
const repeatNameCount = await models.Department.count({
where: {
dependence: dependence || null,
name: name,
id: { $ne: depId },
}
})
if (repeatNameCount) {
throw "部门名称重复"
}
await models.Department.update({
name: name,
dependence: dependence || null,
@ -76,6 +82,15 @@ async function editDep (ctx) {
}
})
} else {
const repeatNameCount = await models.Department.count({
where: {
dependence: dependence || null,
name: name,
}
})
if (repeatNameCount) {
throw '部门名称重复'
}
await models.Department.create({
name: name,
delete: false,
@ -86,7 +101,9 @@ async function editDep (ctx) {
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {}
ctx.body = {
message: typeof error == 'string' ? error : undefined
}
}
}

5
api/app/lib/controllers/overview/management.js

@ -10,6 +10,11 @@ async function overSpeedList (ctx) {
attributes: ['id', 'licensePlate', 'overrunRate', 'deductPoints', 'fine', 'processingTime', 'testTime'],
order: [['testTime', 'DESC']],
limit: limit || 120,
where: {
processingTime: { $ne: null },
testTime: { $ne: null },
},
order: [['testTime', 'DESC']],
})
const overSpeedProcessedCount = await models.Overspeed.count({

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

@ -7,10 +7,10 @@ async function busCarLevelList (ctx) {
let data = []
const busCarRes = await models.BusCar.findAll({
attributes: ['id', 'company', 'fleet', 'vehicleLicensePlateNumber'],
attributes: ['id', 'company', 'fleet', 'vehicleLicensePlateNumber', 'line'],
})
for (let c of busCarRes) {
const { company, fleet } = c
const { company, fleet, line } = c
const corCompany = data.find(d => d.name === company)
if (!corCompany) {
data.push({

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

File diff suppressed because it is too large

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

File diff suppressed because it is too large

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

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

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

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

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

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

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

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

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

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

1397
api/log/development.log

File diff suppressed because it is too large

7
api/package.json

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

4
api/utils/xlsxDownload.js

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

60
api/yarn.lock

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

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

Binary file not shown.

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

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

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

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

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

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

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

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

136
web/client/assets/color.less

@ -174,7 +174,7 @@ button::-moz-focus-inner,
[type='submit']::-moz-focus-inner {border-style: none;}
fieldset {border: 0;}
legend {color: inherit;}
mark {background-color: #feffe6;}
mark {background-color: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);}
::selection {color: #fff;background: @primary-color;}
.anticon {color: inherit;}
.ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;}
@ -555,6 +555,18 @@ html {--antd-wave-shadow-color: @primary-color;}
.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;}
.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;}
.ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;}
a.ant-btn-disabled,
a.ant-btn-disabled:hover,
a.ant-btn-disabled:focus,
a.ant-btn-disabled:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;}
a.ant-btn-disabled > a:only-child,
a.ant-btn-disabled:hover > a:only-child,
a.ant-btn-disabled:focus > a:only-child,
a.ant-btn-disabled:active > a:only-child {color: currentcolor;}
a.ant-btn-disabled > a:only-child::after,
a.ant-btn-disabled:hover > a:only-child::after,
a.ant-btn-disabled:focus > a:only-child::after,
a.ant-btn-disabled:active > a:only-child::after {background: transparent;}
.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: @border-color-base;}
.ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {border-right-color: @border-color-base;border-left-color: color(~`colorPalette("@{primary-color}", 5)`);}
.ant-picker-calendar {color: @text-color;background: @calendar-full-bg;}
@ -589,7 +601,6 @@ html {--antd-wave-shadow-color: @primary-color;}
.ant-card-type-inner .ant-card-head {background: @background-color-light;}
.ant-card-meta-title {color: @heading-color;}
.ant-card-meta-description {color: @text-color-secondary;}
.ant-card-loading-block {background: linear-gradient(90deg, fade(@card-skeleton-bg, 20%), fade(@card-skeleton-bg, 40%), fade(@card-skeleton-bg, 20%));background-size: 600% 600%;border-radius: 2px;}
.ant-carousel {color: @text-color;}
.ant-carousel .slick-slider {-webkit-tap-highlight-color: transparent;}
.ant-carousel .slick-prev, .ant-carousel .slick-next {color: transparent;background: transparent;border: 0;}
@ -663,8 +674,10 @@ html {--antd-wave-shadow-color: @primary-color;}
.ant-comment-actions > li > span:hover {color: @comment-action-hover-color;}
.ant-picker-status-error.ant-picker, .ant-picker-status-error.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #ff4d4f;}
.ant-picker-status-error.ant-picker-focused, .ant-picker-status-error.ant-picker:focus {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;}
.ant-picker-status-error.ant-picker .ant-picker-active-bar {background: #ff7875;}
.ant-picker-status-warning.ant-picker, .ant-picker-status-warning.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #faad14;}
.ant-picker-status-warning.ant-picker-focused, .ant-picker-status-warning.ant-picker:focus {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;}
.ant-picker-status-warning.ant-picker .ant-picker-active-bar {background: #ffc53d;}
.ant-picker {color: @text-color;background: @picker-bg;border: 1px solid @border-color-base;border-radius: 2px;}
.ant-picker:hover, .ant-picker-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;}
.ant-input-rtl .ant-picker:hover, .ant-input-rtl .ant-picker-focused {border-right-width: 0;border-left-width: 1px !important;}
@ -695,7 +708,7 @@ html {--antd-wave-shadow-color: @primary-color;}
.ant-picker-range .ant-picker-active-bar {background: @primary-color;}
.ant-picker-dropdown {color: @text-color;}
.ant-picker-ranges .ant-picker-preset > .ant-tag-blue {color: @primary-color;background: color(~`colorPalette("@{primary-color}", 1)`);border-color: color(~`colorPalette("@{primary-color}", 3)`);}
.ant-picker-range-arrow {background: linear-gradient(135deg, transparent 40%, @calendar-bg 40%);box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;}
.ant-picker-range-arrow {box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;}
.ant-picker-range-arrow::before {background: @calendar-bg;background-repeat: no-repeat;background-position: -10px -10px;}
.ant-picker-panel-container {background: @calendar-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);}
.ant-picker-panel-container .ant-picker-panel {background: transparent;border-width: 0 0 1px 0;border-radius: 0;}
@ -801,7 +814,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;}
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;}
.ant-dropdown {color: @text-color;}
.ant-dropdown-arrow {background: linear-gradient(135deg, transparent 40%, @popover-bg 40%);border-radius: 0 0 2px;}
.ant-dropdown-arrow {border-radius: 0 0 2px;}
.ant-dropdown-arrow::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;}
.ant-dropdown-placement-top > .ant-dropdown-arrow, .ant-dropdown-placement-topLeft > .ant-dropdown-arrow, .ant-dropdown-placement-topRight > .ant-dropdown-arrow {box-shadow: 3px 3px 7px -3px rgba(0, 0, 0, 0.1);}
.ant-dropdown-placement-bottom > .ant-dropdown-arrow, .ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow, .ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {box-shadow: 2px 2px 5px -2px rgba(0, 0, 0, 0.1);}
@ -936,7 +949,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;}
.ant-input-group > .ant-input-rtl:first-child, .ant-input-group-rtl .ant-input-group-addon:first-child {border-radius: 0 2px 2px 0;}
.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;}
.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;}
.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;}
.ant-input-group-rtl.ant-input-group > .ant-input:last-child, .ant-input-group-rtl.ant-input-group-addon:last-child {border-radius: 2px 0 0 2px;}
.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;}
.ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;}
@ -944,6 +957,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;}
.ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;}
.ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;}
.ant-input-group > .ant-input-rtl:first-child {border-radius: 0 2px 2px 0;}
.ant-input-group > .ant-input-rtl:last-child {border-radius: 2px 0 0 2px;}
.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;}
.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;}
.ant-input-password-icon.anticon {color: @text-color-secondary;}
.ant-input-password-icon.anticon:hover {color: @input-icon-hover-color;}
.ant-input-textarea-show-count::after {color: @text-color-secondary;}
@ -1029,7 +1046,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;}
.ant-input-number-group > .ant-input-number-rtl:first-child, .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-radius: 0 2px 2px 0;}
.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;}
.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;}
.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;}
.ant-input-number-group-rtl.ant-input-number-group > .ant-input-number:last-child, .ant-input-number-group-rtl.ant-input-number-group-addon:last-child {border-radius: 2px 0 0 2px;}
.ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;}
.ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;}
@ -1037,6 +1054,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:first-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;}
.ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:last-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;}
.ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;}
.ant-input-number-group > .ant-input-number-rtl:first-child {border-radius: 0 2px 2px 0;}
.ant-input-number-group > .ant-input-number-rtl:last-child {border-radius: 2px 0 0 2px;}
.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;}
.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;}
.ant-input-number-handler {color: @text-color-secondary;border-left: 1px solid @border-color-base;}
.ant-input-number-handler:active {background: @input-number-handler-active-bg;}
.ant-input-number-handler:hover .ant-input-number-handler-up-inner, .ant-input-number-handler:hover .ant-input-number-handler-down-inner {color: color(~`colorPalette("@{primary-color}", 5)`);}
@ -1129,15 +1150,16 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-menu-item-danger.ant-menu-item {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item:hover, .ant-menu-item-danger.ant-menu-item-active {color: #ff4d4f;}
<<<<<<< Updated upstream
.ant-menu-item-danger.ant-menu-item:active {background: #fff1f0;}
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);}
.ant-menu-item-danger.ant-menu-item-selected {color: #ff4d4f;}
.ant-menu-item-danger.ant-menu-item-selected > a, .ant-menu-item-danger.ant-menu-item-selected > a:hover {color: #ff4d4f;}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: #fff1f0;}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);}
=======
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);}
.ant-menu-item-danger.ant-menu-item:active {background: color(~`colorPalette("@{segmented-label-hover-color}", 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("@{modal-header-border-color-split}", 1)`);}
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-danger.ant-menu-item-selected {background-color: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);}
>>>>>>> Stashed changes
.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;}
@ -1299,8 +1321,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-pagination-simple .ant-pagination-simple-pager input:hover {border-color: @primary-color;}
.ant-pagination-simple .ant-pagination-simple-pager input:focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);}
.ant-pagination-simple .ant-pagination-simple-pager input[disabled] {color: @disabled-color;background: @disabled-bg;border-color: @border-color-base;}
.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;}
.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;}
.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;}
.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;}
.ant-pagination.ant-pagination-disabled .ant-pagination-item {background: @disabled-bg;border-color: @border-color-base;}
.ant-pagination.ant-pagination-disabled .ant-pagination-item a {color: @disabled-color;background: transparent;border: none;}
.ant-pagination.ant-pagination-disabled .ant-pagination-item-active {background: @pagination-item-disabled-bg-active;}
@ -1316,8 +1338,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-popover-message {color: @text-color;}
.ant-popover-message > .anticon {color: #faad14;}
.ant-popover-arrow {background: transparent;}
.ant-popover-arrow-content {background-color: @popover-bg;border-radius: 0 0 2px;}
.ant-popover-arrow-content::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;}
.ant-popover-arrow-content {--antd-arrow-background-color: @popover-bg;border-radius: 0 0 2px;}
.ant-popover-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;}
.ant-popover-placement-top .ant-popover-arrow-content, .ant-popover-placement-topLeft .ant-popover-arrow-content, .ant-popover-placement-topRight .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);}
.ant-popover-placement-right .ant-popover-arrow-content, .ant-popover-placement-rightTop .ant-popover-arrow-content, .ant-popover-placement-rightBottom .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);}
.ant-popover-placement-bottom .ant-popover-arrow-content, .ant-popover-placement-bottomLeft .ant-popover-arrow-content, .ant-popover-placement-bottomRight .ant-popover-arrow-content {box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.06);}
@ -1373,12 +1395,13 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-radio-wrapper {color: @text-color;}
.ant-radio {color: @text-color;}
.ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner, .ant-radio-input:focus + .ant-radio-inner {border-color: @primary-color;}
.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);}
.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px fade(@primary-color, 12%);}
.ant-radio-checked::after {border: 1px solid @primary-color;border-radius: 50%;animation-fill-mode: both;}
.ant-radio-inner {background-color: @btn-default-bg;border-color: @border-color-base;border-style: solid;border-width: 1px;border-radius: 50%;}
.ant-radio-inner::after {background-color: @primary-color;border-top: 0;border-left: 0;border-radius: 16px;}
.ant-radio.ant-radio-disabled .ant-radio-inner {border-color: @border-color-base;}
.ant-radio-checked .ant-radio-inner {border-color: @primary-color;}
.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;border-color: @border-color-base !important;}
.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;}
.ant-radio-disabled .ant-radio-inner::after {background-color: @radio-dot-disabled-color;}
.ant-radio-disabled + span {color: @disabled-color;}
.ant-radio-button-wrapper {color: @text-color;background: @btn-default-bg;border: 1px solid @border-color-base;border-top-width: 1.02px;border-left-width: 0;}
@ -1388,7 +1411,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-radio-button-wrapper:last-child {border-radius: 0 2px 2px 0;}
.ant-radio-button-wrapper:first-child:last-child {border-radius: 2px;}
.ant-radio-button-wrapper:hover {color: @primary-color;}
.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);}
.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @primary-color;background: @btn-default-bg;border-color: @primary-color;}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {background-color: @primary-color;}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {border-color: @primary-color;}
@ -1396,11 +1419,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {background-color: color(~`colorPalette("@{primary-color}", 5)`);}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);}
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @radio-solid-checked-color;background: @primary-color;border-color: @primary-color;}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);}
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);}
.ant-radio-button-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;}
.ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;}
.ant-radio-button-wrapper-disabled:first-child {border-left-color: @border-color-base;}
@ -1467,14 +1490,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {border-radius: 50%;}
.ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {border-radius: 50%;}
.ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {border-radius: 50%;}
.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 4px;}
.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 4px;}
.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 2px;}
.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 2px;}
.ant-skeleton-round .ant-skeleton-content .ant-skeleton-title, .ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li {border-radius: 100px;}
.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;}
.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;}
.ant-skeleton.ant-skeleton-active .ant-skeleton-button {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;}
.ant-skeleton.ant-skeleton-active .ant-skeleton-input {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;}
.ant-skeleton.ant-skeleton-active .ant-skeleton-image {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;}
.ant-skeleton-active .ant-skeleton-title, .ant-skeleton-active .ant-skeleton-paragraph > li, .ant-skeleton-active .ant-skeleton-avatar, .ant-skeleton-active .ant-skeleton-button, .ant-skeleton-active .ant-skeleton-input, .ant-skeleton-active .ant-skeleton-image {background: transparent;}
.ant-skeleton-active .ant-skeleton-title::after, .ant-skeleton-active .ant-skeleton-paragraph > li::after, .ant-skeleton-active .ant-skeleton-avatar::after, .ant-skeleton-active .ant-skeleton-button::after, .ant-skeleton-active .ant-skeleton-input::after, .ant-skeleton-active .ant-skeleton-image::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);}
.ant-skeleton-element .ant-skeleton-button {background: @skeleton-color;border-radius: 2px;}
.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle {border-radius: 50%;}
.ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round {border-radius: 32px;}
@ -1591,7 +1611,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte
.ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td, .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td {border-right: 0;}
.ant-table.ant-table-bordered > .ant-table-footer {border: 1px solid @border-color-split;border-top: 0;}
.ant-table-cell .ant-table-container:first-child {border-top: 0;}
.ant-table-cell-scrollbar {box-shadow: 0 1px 0 1px @table-header-bg;}
.ant-table-cell-scrollbar:not([rowspan]) {box-shadow: 0 1px 0 1px @table-header-bg;}
.ant-table {color: @text-color;background: @component-background;border-radius: 2px;}
.ant-table table {border-radius: 2px 2px 0 0;border-collapse: separate;border-spacing: 0;}
.ant-table-footer {color: @heading-color;background: @background-color-light;}
@ -1642,10 +1662,10 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-table-empty .ant-table-tbody > tr.ant-table-placeholder {color: @disabled-color;}
.ant-table-tbody > tr.ant-table-placeholder:hover > td {background: @component-background;}
.ant-table-cell-fix-left, .ant-table-cell-fix-right {background: @component-background;}
.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-ping-left:not(.ant-table-has-fix-left) > .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-ping-left .ant-table-cell-fix-left-first::after, .ant-table-ping-left .ant-table-cell-fix-left-last::after {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-ping-left .ant-table-cell-fix-left-last::before {background-color: transparent !important;}
.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-ping-right:not(.ant-table-has-fix-right) > .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-ping-right .ant-table-cell-fix-right-first::after, .ant-table-ping-right .ant-table-cell-fix-right-last::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);}
.ant-table-sticky-holder {background: @component-background;}
.ant-table-sticky-scroll {background: lighten(@table-border-color, 80%);border-top: 1px solid @border-color-split;}
@ -1654,6 +1674,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-table-sticky-scroll-bar-active {background-color: fade(@table-sticky-scroll-bar-bg, 80%);}
.ant-table-title {border-radius: 2px 2px 0 0;}
.ant-table-title + .ant-table-container {border-top-left-radius: 0;border-top-right-radius: 0;}
.ant-table-title + .ant-table-container table {border-radius: 0;}
.ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child {border-radius: 0;}
.ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {border-radius: 0;}
.ant-table-container {border-top-left-radius: 2px;border-top-right-radius: 2px;}
@ -1710,44 +1731,63 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tag-checkable-checked {background-color: @primary-color;}
.ant-tag-checkable:active {background-color: color(~`colorPalette("@{primary-color}", 7)`);}
<<<<<<< Updated upstream
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{component-background}", 1)`);border-color: #ffadd2;}
=======
>>>>>>> Stashed changes
.ant-tag-pink {color: #c41d7f;background: #fff0f6;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("@{component-background}", 1)`);border-color: #ffadd2;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
<<<<<<< Updated upstream
.ant-tag-red {color: #cf1322;background: #fff1f0;border-color: #ffa39e;}
=======
.ant-tag-pink {color: #c41d7f;background: color(~`colorPalette("@{success-color-deprecated-bg}", 1)`);border-color: #ffadd2;}
.ant-tag-pink-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-magenta {color: #c41d7f;background: color(~`colorPalette("@{success-color-deprecated-bg}", 1)`);border-color: #ffadd2;}
.ant-tag-magenta-inverse {color: #fff;background: #eb2f96;border-color: #eb2f96;}
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{modal-header-border-color-split}", 1)`);border-color: #ffa39e;}
=======
.ant-tag-red {color: #cf1322;background: color(~`colorPalette("@{segmented-label-hover-color}", 1)`);border-color: #ffa39e;}
>>>>>>> Stashed changes
.ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;}
.ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;}
.ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;}
.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;}
.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{alert-warning-border-color}", 1)`);border-color: #ffd591;}
.ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;}
.ant-tag-yellow {color: #d4b106;background: #feffe6;border-color: #fffb8f;}
.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{modal-footer-border-color-split}", 1)`);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-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("@{text-color-secondary}", 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;}
<<<<<<< Updated upstream
.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{pagination-item-input-bg}", 1)`);border-color: #91d5ff;}
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{avatar-bg}", 4)`);border-color: #adc6ff;}
=======
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{btn-primary-bg}", 1)`);border-color: #adc6ff;}
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: color(~`colorPalette("@{alert-info-border-color}", 5)`);}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{tree-bg}", 1)`);border-color: #adc6ff;}
>>>>>>> Stashed changes
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: #f9f0ff;border-color: #d3adf7;}
=======
.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;}
.ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;}
.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{dropdown-menu-submenu-disabled-bg}", 3)`);border-color: #adc6ff;}
.ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{calendar-bg}", 1)`);border-color: #d3adf7;}
.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{alert-error-bg-color}", 1)`);border-color: #d3adf7;}
>>>>>>> Stashed changes
.ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;}
.ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;}
.ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;}
@ -1770,7 +1810,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;}
.ant-tooltip {color: @text-color;}
.ant-tooltip-inner {color: #fff;background-color: @tooltip-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);}
.ant-tooltip-arrow {background: transparent;}
.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);background-color: transparent;border-radius: 0 0 2px;}
.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);border-radius: 0 0 2px;}
.ant-tooltip-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;}
.ant-tooltip-placement-top .ant-tooltip-arrow-content, .ant-tooltip-placement-topLeft .ant-tooltip-arrow-content, .ant-tooltip-placement-topRight .ant-tooltip-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);}
.ant-tooltip-placement-right .ant-tooltip-arrow-content, .ant-tooltip-placement-rightTop .ant-tooltip-arrow-content, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);}
@ -1960,6 +2000,7 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography
.ant-typography pre code {background: transparent;border: 0;}
.ant-typography blockquote {border-left: 4px solid rgba(100, 100, 100, 0.2);}
.ant-upload {color: @text-color;}
.ant-upload.ant-upload-disabled {color: @disabled-color;}
.ant-upload.ant-upload-select-picture-card {background-color: @background-color-light;border: 1px dashed @border-color-base;border-radius: 2px;}
.ant-upload.ant-upload-select-picture-card:hover {border-color: @primary-color;}
.ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover {border-color: @border-color-base;}
@ -1985,7 +2026,11 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography
.ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;}
.ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;}
<<<<<<< Updated upstream
.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='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
=======
.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;}
>>>>>>> Stashed changes
@ -1994,7 +2039,6 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography
.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);}
.ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {color: #fff;}
.ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {background-color: @background-color-light;}
.ant-upload-list .ant-upload-animate-inline-appear, .ant-upload-list .ant-upload-animate-inline-enter, .ant-upload-list .ant-upload-animate-inline-leave {animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);}
.ant-pro-table-search {background-color: @component-background !important;}
.bezierEasingMixin() {
@functions: ~`(function() {var NEWTON_ITERATIONS = 4;var NEWTON_MIN_SLOPE = 0.001;var SUBDIVISION_PRECISION = 0.0000001;var SUBDIVISION_MAX_ITERATIONS = 10;var kSplineTableSize = 11;var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);var float32ArraySupported = typeof Float32Array === 'function';function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; }
@ -2444,7 +2488,8 @@ this.tinycolor = tinycolor;})()`;}
.colorPaletteMixin() {
@functions: ~`(function() {var hueStep = 2;var saturationStep = 0.16;var saturationStep2 = 0.05;var brightnessStep1 = 0.05;var brightnessStep2 = 0.15;var lightColorCount = 5;var darkColorCount = 4;var getHue = function(hsv, i, isLight) {var hue;if (hsv.h >= 60 && hsv.h <= 240) {hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;} else {hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;}
if (hue < 0) {hue += 360;} else if (hue >= 360) {hue -= 360;}
return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;}
return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {if (hsv.h === 0 && hsv.s === 0) {return hsv.s;}
var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;}
if (saturation > 1) {saturation = 1;}
if (isLight && i === lightColorCount && saturation > 0.1) {saturation = 0.1;}
if (saturation < 0.06) {saturation = 0.06;}
@ -2901,7 +2946,7 @@ this.tinycolor = tinycolor;})()`;}
@cascader-dropdown-line-height: @dropdown-line-height;
@anchor-bg: transparent;
@anchor-border-color: @border-color-split;
@anchor-link-top: 7px;
@anchor-link-top: 4px;
@anchor-link-left: 16px;
@anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left;
@tooltip-max-width: 250px;
@ -2926,7 +2971,7 @@ this.tinycolor = tinycolor;})()`;}
@modal-header-border-style: @border-style-base;
@modal-header-title-line-height: 22px;
@modal-header-title-font-size: @font-size-lg;
@modal-header-close-size: 56px;
@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical;
@modal-heading-color: @heading-color;
@modal-close-color: @text-color-secondary;
@modal-footer-bg: transparent;
@ -2937,6 +2982,7 @@ this.tinycolor = tinycolor;})()`;}
@modal-mask-bg: fade(@black, 45%);
@modal-confirm-body-padding: 32px 32px 24px;
@modal-confirm-title-font-size: @font-size-lg;
@modal-border-radius: @border-radius-base;
@progress-default-color: @processing-color;
@progress-remaining-color: @background-color-base;
@progress-info-text-color: @progress-text-color;

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

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

@ -51,6 +51,41 @@ export function getjiandetail() {
// reducer: { name: 'members' }
});
}
// <<<<<<< HEAD
// 获取运政数据统计
export function getyunzheng() {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
actionType: 'GET_YUNZHENG',
url: ApiTable.getYunZheng,
msg: { error: '获取运政统计数据信息' },
// reducer: { name: 'members' }
});
}
// 获取道路养护数据统计及列表
export function getRoadmaintain() {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
actionType: 'GET_ROADMAINTAIN',
url: ApiTable.getroadmaintain,
msg: { error: '获取道路养护数据信息' },
// reducer: { name: 'members' }
});
}
// 获取治超详情列
export function getZhichaolist() {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
actionType: 'GET_ZHICHAOLIST',
url: ApiTable.getzhichaoList,
msg: { error: '获取治超详情列表数据' },
// reducer: { name: 'members' }
// =======
});
}
//获取宣传数据
export function getxuanchuan() {
@ -73,5 +108,6 @@ export function getBusTierList() {
url: ApiTable.getBusTier,
msg: { error: '获取公交车辆层级信息失败' },
reducer: { name: 'busTier' }
// >>>>>>> 385f017aeac33adc39a31e75faf6254a1a881d16
});
}

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

@ -24,44 +24,52 @@ const Example = (props) => {
}
useEffect(() => {
// useEffect(() => {
// const map = new AMap.Map(MAPID, {
// //resizeEnable: true,
// center: [115.912663, 28.543149],//地图中心点,初始定位加载显示楼块
// // center: [115.857952, 28.683003],//地图中心点
// zoom: 13,//地图显示的缩放级别
// zooms: [8, 18],
// pitch: 65, // 地图俯仰角度,有效范围 0 度- 83 度
// viewMode: '3D', // 地图模式
// // rotation: 60
// // showLabel: false
// });
// let styleName = 'amap://styles/fb26776387242721c2fc32e2cb1daccc';
// map.setMapStyle(styleName);
// let mapComplete = false;
// let windowOnload = false;
// window.onload = function () {
// windowOnload = true;
// }
const map = new AMap.Map(MAPID, {
//resizeEnable: true,
center: [115.912663, 28.543149],//地图中心点,初始定位加载显示楼块
// center: [115.857952, 28.683003],//地图中心点
zoom: 13,//地图显示的缩放级别
zooms: [8, 18],
pitch: 65, // 地图俯仰角度,有效范围 0 度- 83 度
viewMode: '3D', // 地图模式
// rotation: 60
// showLabel: false
});
let styleName = 'amap://styles/fb26776387242721c2fc32e2cb1daccc';
map.setMapStyle(styleName);
let mapComplete = false;
let windowOnload = false;
window.onload = function () {
windowOnload = true;
}
// //主题样式
// //主题样式
//主题样式
return () => {
const amapKeys = Object.keys(localStorage).filter(key => key.match(/^_AMap_/)) // 销毁地图
amapKeys.forEach(key => {
localStorage.removeItem(key)
})
map.clearMap();
if (map) map.destroy();
// return () => {
// const amapKeys = Object.keys(localStorage).filter(key => key.match(/^_AMap_/)) // 销毁地图
// amapKeys.forEach(key => {
// localStorage.removeItem(key)
// })
// map.clearMap();
// if (map) map.destroy();
}
}, [])
// clearTimeout(timer)
// }
// }, [])
return (
@ -72,15 +80,13 @@ const Example = (props) => {
document.body.clientHeight / 1080
)})`, */
}}>
<div id={MAPID} style={{ position: 'absolute', width: "100%", height: "100%" }}></div>
{/* <div id={MAPID} style={{ position: 'absolute', width: "100%", height: "100%" }}></div> */}
<div style={{ width: "100%", height: "10%" }}>
<Header tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} />
</div>
<div style={{ position: 'absolute', width: "100%", height: "90%" }}>
<Footer tabKey={tabKey} />
<div style={{ width: "100%", height: "90%" }}>
<Footer tabKey={tabKey} dispatch={dispatch} />
</div>
{/* </div> */}
</div>
</Spin>

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

@ -185,9 +185,10 @@ const Build = (props) => {
<div className='bgbuild-right'>
<Module title={"宣传栏"} style={{ width: "100%",
height:" 33%"
}}>
}} customize={true}>
<div className='build-right-top'>
<img src='/assets/images/quanju/xuanchuanlan.jpg'></img>
{/* <img src='/assets/images/quanju/xuanchuanlan.jpg'></img> */}
<video src='#' autoplay controls></video>
<h2>全面建设好农村公路切实发挥先行官作用</h2>
</div>
</Module>

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

@ -211,15 +211,15 @@
.build-right-top{
width: 100%;
height: 100%;
padding: 0 10px 10px;
img{
padding: 0 10px;
video{
width: 100%;
height: 65%;
margin-bottom: 5%;
// margin-bottom: 5%;
}
h2{
height: 30%;
height: 25%;
width: 100%;
padding-left: 0.9375rem;
font-size: 1.5rem;

4
web/client/src/sections/quanju/containers/footer/index.js

@ -4,7 +4,7 @@ import Conserve from './conserve'
import Guanli from './guanli'
import Leadership from './leadership'
import Operation from './operation'
const Footer = ({ tabKey }) => {
const Footer = ({ tabKey, dispatch }) => {
return (
<>
{
@ -15,7 +15,7 @@ const Footer = ({ tabKey }) => {
case 'conserve':
return <Conserve />
case "leadership":
return <Leadership />
return <Leadership dispatch={dispatch} />
case "guanli":
return <Guanli />
case "operation":

7
web/client/src/sections/quanju/containers/footer/leadership/centerLeft.js

@ -4,12 +4,13 @@ import Centerleftcenter from "./centerleft/top"
import Centerleftcentertop from "./centerleft/bottom"
import Centerleftbottom from "./centerleft/center-left-bottom"
const CenterLeft = () => {
const CenterLeft = (props) => {
const { dispatch } = props
return (
<>
<div style={{ width: "48%", height: "100%", float: "left", marginLeft: "1%" }}>
<Centerlefttop />
<Centerleftbottom />
<Centerlefttop dispatch={dispatch} />
<Centerleftbottom dispatch={dispatch} />
</div>
</>
)

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

@ -6,6 +6,7 @@ import Qiaoliang from "./qiqoliang"
const Leftcentertop = (props) => {
const { dispatch } = props
const style = { height: "23%" }
const { tabKey } = props
return (
@ -14,11 +15,11 @@ const Leftcentertop = (props) => {
(() => {
switch (tabKey) {
case 'daolu':
return <Daolu />
return <Daolu dispatch={dispatch} />
case 'handong':
return <Handong />
return <Handong dispatch={dispatch} />
case "qiaoliang":
return <Qiaoliang />
return <Qiaoliang dispatch={dispatch} />
}
})()
}

9
web/client/src/sections/quanju/containers/footer/leadership/centerleft/center-left-bottom.js

@ -4,21 +4,22 @@ import Centerleftecharts from "./echarts/centerleftecharts"
import Bottomlunbo from './lunbo/bottomlunbo'
import Leftlunbo from './lunbo/toplunbo'
const Leftbottom = () => {
const Leftbottom = (props) => {
const style = { height: "28%", marginTop: "2%" }
const { dispatch } = props
return (
<>
<Module style={style} title={"运政管理"}>
<div style={{ width: "100%", height: "100%" }}>
<div style={{ width: "50%", height: "100%", float: "left" }}>
<Centerleftecharts />
<Centerleftecharts dispatch={dispatch} />
</div>
<div style={{ width: "50%", height: "100%", float: "right", }}>
<div style={{ width: "100%", height: "60%" }}>
<Bottomlunbo />
<Bottomlunbo dispatch={dispatch} />
</div>
<div style={{ width: "100%", height: "50%" }}>
<Leftlunbo />
<Leftlunbo dispatch={dispatch} />
</div>
</div>
</div>

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

@ -4,6 +4,7 @@ import Top from "./top"
import Bottom from "./bottom"
const Lefttop = (props) => {
const { dispatch } = props
const style = { height: "68%" }
const [tabKey, setTabKey] = useState('daolu')
@ -20,10 +21,10 @@ const Lefttop = (props) => {
<>
<Module style={style}>
<div style={{ width: "100%", height: "33%" }}>
<Top tabChange={tabChange} tabKey={tabKey} />
<Top tabChange={tabChange} tabKey={tabKey} dispatch={dispatch} />
</div>
<div style={{ width: "100%", height: "70%" }}>
<Bottom tabKey={tabKey} />
<Bottom tabKey={tabKey} dispatch={dispatch} />
</div>
</Module>
</>

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

@ -1,41 +1,29 @@
import React, { useState, useEffect } from 'react'
import Lun from "./lunbo/lunbo"
import Lun from "../right/lunbo"
import { getRoadmaintain, getdaolutongji } from "../../../../actions/example"
import moment from 'moment'
const Right = () => {
const Right = (props) => {
const { dispatch } = props
const [beijing, setBeijing] = useState()
const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" },
{ name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }])
const [nums, setNums] = useState()
const [list, setList] = useState([])
const [roads, setRoads] = useState()
useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "road"
}))
setNums(res.payload.data.processed)
})
}, [])
useEffect(() => {
const daolus = dispatch(getdaolutongji()).then((res) => {
// console.log("[roads]", res.payload.data.roadType);
setRoads(res.payload.data.roadType)
// const
})
}, [])
const renderBody = () => {
return (
@ -51,10 +39,10 @@ const Right = () => {
}}>
{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/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "5%" }}>{item.name}</p></li>
<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>
)
})
}
@ -65,16 +53,35 @@ const Right = () => {
<>
<div style={{ width: "100%", height: "100%", float: "right", marginRight: "1%", position: "relative" }}>
<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: "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={{ height: "70%", width: "100%", position: "relative", left: "5%", top: "45%" }}>
</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>
<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>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
<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: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>离线详情</span>
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>{nums || []}</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div>
<Lun
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "absolute", height: "80%", width: "90%" }}
divHeight={"100%"}

24
web/client/src/sections/quanju/containers/footer/leadership/centerleft/echarts/centerleftecharts.js

@ -1,8 +1,20 @@
import React, { useEffect, useRef } from 'react'
import React, { useEffect, useRef, useState } from 'react'
import * as echarts from 'echarts';
import { getyunzheng } from '../../../../../actions/example';
const Leftbottomecharts = () => {
const Leftbottomecharts = (props) => {
const chartRef = useRef(null);
const { dispatch } = props
const [list, setList] = useState([])
const [max, setMax] = useState()
useEffect(() => {
const yunzheng = dispatch(getyunzheng()).then((res) => {
// console.log(res.payload);
setMax(Math.max.apply(null, [res.payload.data.passengerTransport, res.payload.data.hazardousGoods, res.payload.data.taxi, res.payload.data.bus]));
setList([res.payload.data.passengerTransport, res.payload.data.hazardousGoods, res.payload.data.taxi, res.payload.data.bus])
})
}, [])
useEffect(() => {
var chartInstance = echarts.init(chartRef.current);
var colorArray = [
@ -35,7 +47,7 @@ const Leftbottomecharts = () => {
grid: {
left: "5%",
top: "12%",
right: "1%",
right: "4%",
bottom: "8%",
containLabel: true,
},
@ -99,7 +111,7 @@ const Leftbottomecharts = () => {
// zlevel: 1,
barCategoryGap: "50%",
color: "#042B7F",
data: [150, 150, 150, 150],
data: [max + 20, max + 20, max + 20, max + 20],
tooltip: {
show: false,
},
@ -111,7 +123,7 @@ const Leftbottomecharts = () => {
barWidth: 10,
barGap: "-100%",
barCategoryGap: "50%",
data: [60, 132, 89, 134],
data: list || [],
markPoint: {
Symbol: "",/* 可以通过’image: *///url’设置为图片,其中url为图片的链接
data: [{ type: "max", name: "最大值" }],
@ -188,7 +200,7 @@ const Leftbottomecharts = () => {
window.onresize = function () {
chartInstance.resize();
}
}, []);
}, [list]);
return (

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

@ -1,41 +1,29 @@
import React, { useState, useEffect } from 'react'
import Lun from "./lunbo/lunbo"
import Lun from "../right/lunbo"
import { getRoadmaintain, getdaolutongji } from "../../../../actions/example"
import moment from 'moment'
const Right = () => {
const Right = (props) => {
const { dispatch } = props
const [beijing, setBeijing] = useState()
const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" },
{ name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }])
const [list, setList] = useState([])
const [roads, setRoads] = useState()
useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "culvert"
}))
})
}, [])
useEffect(() => {
const daolus = dispatch(getdaolutongji()).then((res) => {
// console.log("[roads]", res.payload.data.roadType);
setRoads(res.payload.data.townCulvert)
console.log(res.payload.data.townCulvert);
// const
})
}, [])
const renderBody = () => {
return (
@ -51,10 +39,10 @@ const Right = () => {
}}>
{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/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "5%" }}>{item.name}</p></li>
<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>
)
})
}
@ -65,16 +53,35 @@ const Right = () => {
<>
<div style={{ width: "100%", height: "100%", float: "right", marginRight: "1%", position: "relative" }}>
<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: "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>
{/* <div style={{ width: "15%", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
<div style={{ height: "70%", width: "100%", position: "relative", left: "5%", top: "45%" }}>
</div> */}
<div style={{ width: ((roads?.["乡"] + roads?.["村"]) / (roads?.["乡"] + roads?.["村"] + roads?.["县"])).toFixed(4) * 100 + "%" || "", height: "20%", 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>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
<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: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>离线详情</span>
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>187</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div>
<Lun
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "absolute", height: "80%", width: "90%" }}
divHeight={"100%"}

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

@ -1,31 +1,21 @@
import React, { useState, useEffect } from 'react'
import Lunbotop from "./lunbo"
import Lunbotop from "../../right/lunbo"
import { getyunzheng } from "../../../../../actions/example"
const Bottomlunbo = () => {
const [list, setList] = useState([
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
])
const Bottomlunbo = (props) => {
const { dispatch } = props
const [list, setList] = useState([])
useEffect(() => {
const car = dispatch(getyunzheng()).then((res) => {
setList(res.payload.data.taxiBusiness);
})
}, [])
const renderBody = () => {
return (
<div style={{ width: "100%", height: "100%" }}>
{
list.map((item, index) => {
return <div style={{ fontSize: "14px", color: "#FFFFFF" }}>{item.name}</div>
return <div style={{ fontSize: "14px", color: "rgba(216,240,255,0.8000)" }}>{item.nameOfBusinessOwner}</div>
})
}
</div>

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

@ -1,182 +0,0 @@
'use strict'
import React, { Component } from 'react';
// import { Col, Row, Tag, Tooltip } from '@douyinfe/semi-ui';
import { Col, Row, Tag, Toolip } from 'antd';
import './style.less';
export default class AutoRollComponent extends Component {
constructor(props) {
super(props);
this.scrollElem = null;
this.stopscroll = false;
this.preTop = 0;
this.cloneEle = null;
this.currentTop = 0;
this.marqueesHeight = 0;
this.interval = null;
}
marque = (height) => {
try {
this.scrollElem = document.getElementById(this.props.divId);
this.marqueesHeight = height;
if (this.scrollElem) {
this.scrollElem.style.height = this.marqueesHeight;
this.scrollElem.style.overflow = 'hidden';
}
if (!this.props.closeroll) {
this.repeat()
}
} catch (e) { console.log(e) }
}
repeat = () => {
this.scrollElem.scrollTop = 0;
this.interval = setInterval(() => {
if (this.stopscroll) return;
this.currentTop = this.currentTop + 1;
this.preTop = this.scrollElem.scrollTop;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1;
// console.log(this.scrollElem.scrollTop);
if (this.preTop === this.scrollElem.scrollTop) {
this.scrollElem.scrollTop = this.marqueesHeight;
this.scrollElem.scrollTop = this.scrollElem.scrollTop + 1;
// console.log(this.scrollElem.scrollTop);
}
}, 80);
}
componentWillUnmount() {
clearInterval(this.interval);
}
componentDidMount() {
this.marque(10);
}
onMouseOver = () => {
this.stopscroll = true;
}
onMouseOut = () => {
this.stopscroll = false;
}
loadDataColumn = (c, index, q) => {
const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props;
if (c === changeStyleCol) {
if (color) {
<span style={{ color: q.changeColor }}>{q.data[index]}</span>
} else {
if (['时间'].indexOf(c) != -1) {
return <span style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
}
// if (c.indexOf("时间") == -1) {
// if (customColorBox) {
// return <DashBorder boxStyle={{ textAlign: 'center', background: q.boxColor, width: 58, height: 18, display: 'inline-block', fontSize: 12 }} content={q.data[index]} borderStyle={{ borderColor: q.changeColor, width: 4, height: 4 }} />
// }
// if (q.data[index].length > showWord) {
// return <Tooltip key={index} position="top" content={q.data[index]}>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
// } else {
// return <span className='margin-left-5' style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
// }
// }
}
} else {
if (c.indexOf("时间") == -1)
if (q.data[index].length > showWord) {
return <Tooltip key={index} position="top" content={q.data[index]}>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
}
return <span className='margin-left-5'>{q.data[index]}</span>
}
// c === changeStyleCol ?
// color ?
// <span style={{ color: q.changeColor }}>{q.data[index]}</span>
// : q.levelbg ?
// q.isSiteAlermListMock ? <span style={extraStyle}>已处理</span> :
// <span style={{ color: q.changeColor, background: `url('/assets/images/ui/${q.levelbg}.png') no-repeat`, backgroundSize: '100% 100%', textAlign: 'left', fontFamily: 'liquidCrystal', padding: '3px 10px' }}>{q.data[index]}</span>
// : <Tag color={q.changeColor}>{q.data[index]}</Tag>
// : ['时间'].indexOf(c) != -1 ? !customColorBox ? <span style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span> :
// <DashBorder boxStyle={{ textAlign: 'center', background: q.boxColor }} content={q.data[index]} borderStyle={{ borderColor: color }} />
// : c.indexOf("时间") == -1 && q.data[index].length > showWord ?
// <Tooltip placement="top" title={q.data[index]} className='margin-left-5'>{q.data[index].substring(0, showWord) + '...'}</Tooltip>
// : <span className='margin-left-5' style={{ fontFamily: 'liquidCrystal' }}>{q.data[index]}</span>
}
getContent = () => {
const { changeStyleCol, heads, spans, data, showWord, color, dataTextAlign, customColorBox, } = this.props;
let result = <div></div>;
if (data) {
result = data.map((q, idx) => {
return (
<div key={idx}>
<Row gutter={16} style={{
height: 40,
//background: idx % 2 == 0 ? 'url(/assets/images/ui/roll1.png) no-repeat' : 'url(/assets/images/ui/roll2.png) no-repeat',
background: idx % 2 == 0 ? 'rgba(22,70,116,0.32)' : '',
backgroundSize: '100% 100%',
whiteSpace: 'nowrap',
fontSize: 16
}}>
{q.data[1] == -1 ? null : heads.map((c, index) => {
let extraStyle = {}
if (q.isSiteAlermListMock && c == "状态") {
extraStyle = { color: "green" }
}
return <Col span={spans[index]} key={index} style={{
// padding: `8px 0px 0px ${titleLeft && c != changeStyleCol ? 12 : index == 0 ? 8 : 0}px`,
paddingLeft: index == 0 ? 20 : c != changeStyleCol ? 10 : 'auto', paddingTop: 8, paddingRight: 0,
textAlign: dataTextAlign ? dataTextAlign : 'left', textOverflow: 'ellipsis', overflow: 'hidden',
color: `${c === changeStyleCol ? q.changeColor : ''}`
}}>
{
this.loadDataColumn(c, index, q)
}
</Col>
})
}
</Row>
</div>
)
})
} else {
result = <div style={{ textAlign: 'center', padding: 20, color: '#fff', height: '100%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<span></span>
</div>
}
return result;
}
render() {
const { heads, spans, divId, divHeight, content, color, titleLeft, containerStyle = {} } = this.props;
return (
<div style={{ ...containerStyle, textAlign: 'left', }}>
{heads ?
<Row className={'bg-row'} style={{ lineHeight: '40px', height: 40, fontSize: 16, wordBreak: 'keep-all', whiteSpace: 'nowrap', textAlign: titleLeft ? 'left' : 'center', paddingLeft: titleLeft ? 5 : 0 }}>
{heads.map((c, index) => {
return <Col style={{ color: color ? color : '#fff', paddingLeft: titleLeft ? 10 : 'auto' }} span={spans[index]} key={index}>{c}</Col>
})
}
</Row>
: ''}
<div id={divId} className={'hidden-scroll-bar-y'} style={{ overflow: 'hidden', height: divHeight }} onMouseOver={this.onMouseOver} onMouseOut={this.onMouseOut}>
<div style={{ height: '100%' }}>
{content ? content : ''}
{this.getContent()}
</div>
</div>
</div >
)
}
}

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

@ -1,31 +1,23 @@
import React, { useState, useEffect } from 'react'
import Lunbotop from "./lunbo"
import Lunbotop from "../../right/lunbo"
import { getyunzheng } from "../../../../../actions/example"
const Toplunbo = () => {
const [list, setList] = useState([
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
{ name: "南昌宁昌物流运输有限公司" },
])
const Toplunbo = (props) => {
const { dispatch } = props
const [list, setList] = useState([])
useEffect(() => {
const cars = dispatch(getyunzheng()).then((res) => {
setList(res.payload.data.hazardousGoodsBusiness)
// console.log(res.payload.data.hazardousGoodsBusiness);
})
}, [])
const renderBody = () => {
return (
<div style={{ width: "100%", height: "100%" }}>
{
list.map((item, index) => {
return <div style={{ fontSize: "14px", color: "#FFFFFF" }}>{item.name}</div>
return <div style={{ fontSize: "14px", color: "rgba(216,240,255,0.8000)" }}>{item.nameOfBusinessOwner}</div>
})
}
</div>
@ -44,7 +36,7 @@ const Toplunbo = () => {
</div>
</div>
<Lunbotop
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "60%", top: "8%", float: "right" }}
divHeight={"100%"}

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

@ -1,41 +1,28 @@
import React, { useState, useEffect } from 'react'
import Lun from "./lunbo/lunbo"
import Lun from "../right/lunbo"
import { getRoadmaintain, getdaolutongji } from "../../../../actions/example"
import moment from 'moment'
const Right = () => {
const Right = (props) => {
const { dispatch } = props
const [beijing, setBeijing] = useState()
const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" },
{ name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }])
const [list, setList] = useState([])
const [roads, setRoads] = useState()
useEffect(() => {
const daolus = dispatch(getRoadmaintain()).then((res) => {
setList(res.payload.data.reportList.filter((item, index) => {
return item.projectType == "bridge"
}))
})
}, [])
useEffect(() => {
const daolus = dispatch(getdaolutongji()).then((res) => {
// console.log("[roads]", res.payload.data.roadType);
setRoads(res.payload.data.bridgeSize)
console.log(res.payload.data.bridgeSize);
// const
})
}, [])
const renderBody = () => {
return (
@ -51,10 +38,10 @@ const Right = () => {
}}>
{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/lan.png' style={{ width: "100%", height: "120%", position: "absolute", right: "5%" }} /> : ""}
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "25%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", left: "5%" }} >{item.name}</p>
<p style={{ textAlign: "center", width: "25%", position: "absolute", right: "5%" }}>{item.name}</p></li>
<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>
)
})
}
@ -65,16 +52,35 @@ const Right = () => {
<>
<div style={{ width: "100%", height: "100%", float: "right", marginRight: "1%", position: "relative" }}>
<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>
</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>
<div style={{ width: (roads?.["中桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", backgroundColor: "#df0001", float: "left", marginTop: "5.6%" }}>
<div style={{ height: "70%", width: "100%", position: "relative", left: "5%", top: "45%" }}>
</div>
<div style={{ width: (roads?.["小桥"] / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(2) * 100 + "%" || "", height: "20%", 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?.["中桥"]}</span><span style={{ marginLeft: "4%" }}></span></p>
<p style={{ position: "absolute", right: "0", color: "rgba(216,240,255,0.8)" }}>占比<span>{((roads?.["小桥"] + roads?.["中桥"]) / (roads?.["小桥"] + roads?.["中桥"] + roads?.["大桥"])).toFixed(4) * 100}</span><span>%</span></p>
</div>
</div>
<div style={{ height: "80%", width: "100%", position: "relative", left: "5%", top: "-8%" }}>
<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: "-1%", top: "23%" }} />
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>离线详情</span>
<span style={{ position: "absolute", color: "#FFFFFF", fontSize: "24px", fontFamily: "YouSheBiaoTiHei", left: "3%" }}>养护事件</span>
<p style={{ position: "absolute", color: "#D8F0FF", fontSize: "14px", right: "6%" }}><span style={{ marginLeft: "-20%" }}>道路</span><span style={{ fontSize: "18px", fontFamily: "YouSheBiaoTiHei", color: "#ffffff", marginLeft: "10%" }}>187</span><span style={{ marginLeft: "10%" }}></span></p>
{/* <img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} /> */}
</div>
<Lun
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "absolute", height: "80%", width: "90%" }}
divHeight={"100%"}

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

@ -1,13 +1,27 @@
import React, { useState, useEFFect } from 'react'
import React, { useState, useEffect } from 'react'
// import Module from '../../../public/module'
import { getdaolutongji } from "../../../../actions/example"
const Leftcenter = (props) => {
const { tabChange, tabKey } = props
const { tabChange, tabKey, dispatch } = props
const [list, setList] = useState()
const [culvert, setCulvert] = useState()
const [bridge, setBridge] = useState()
// const [tab, setTad] = useState("base")
const onClick = (tab) => {
// setTad({ tab })
tabChange(tab)
}
useEffect(() => {
const daolus = dispatch(getdaolutongji()).then((res) => {
// console.log("[roads]", res.payload.data.roadType);
setList(res.payload.data.roadType)
// const
setCulvert(res.payload.data.townCulvert)
setBridge(res.payload.data.bridgeSize)
})
}, [])
return (
<>
<div style={{ position: "relative", width: "100%", height: "30%" }}>
@ -25,7 +39,7 @@ const Leftcenter = (props) => {
</div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "11%" }}>
<p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>道路统计<span style={{ marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}>公里</span></p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>2333.4</p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>{(list?.["县"] + list?.["乡"] + list?.["村"]).toFixed(3)}</p>
</div>
</div>
<div style={{ width: "30%", height: "10vh", backgroundColor: "", position: "relative", left: "35%", top: "-105%" }} onClick={() => {
@ -39,7 +53,7 @@ const Leftcenter = (props) => {
</div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "8%" }}>
<p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>涵洞统计<span style={{ fontSize: "14px", marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}></span></p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh" }}>2333.4</p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh" }}>{(culvert?.["县"] + culvert?.["乡"] + culvert?.["村"]).toFixed(0)}</p>
</div>
</div>
<div style={{ width: "30%", height: "10vh", backgroundColor: "", position: "relative", left: "68%", top: "-315%" }} onClick={() => {
@ -53,7 +67,7 @@ const Leftcenter = (props) => {
</div>
<div style={{ width: "50%", height: "100%", position: "absolute", left: "50%", top: "8%" }}>
<p style={{ fontSize: "2vh", color: "#D8F0FF", fontFamily: "PingFangSC-Regular, PingFang SC", marginTop: "3%" }}>桥梁统计<span style={{ fontSize: "14px", marginLeft: "10px", color: "rgba(216,240,255,0.8000)" }}></span></p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>2333.4</p>
<p style={{ fontFamily: "YouSheBiaoTiHei", color: "#ffffff", fontSize: "2.5vh", marginTop: "-2%" }}>{(bridge?.["小桥"] + bridge?.["中桥"] + bridge?.["大桥"])}</p>
</div>
</div>
</div>

9
web/client/src/sections/quanju/containers/footer/leadership/index.js

@ -4,12 +4,13 @@ import Right from './right'
import CenterLeft from "./centerLeft"
import Centerright from "./centerRight"
const Leadership = () => {
const Leadership = (props) => {
const { dispatch } = props
return (
<>
<Left />
<CenterLeft />
<Right />
<Left dispatch={dispatch} />
<CenterLeft dispatch={dispatch} />
<Right dispatch={dispatch} />
{/* <Centerright /> */}
</>

7
web/client/src/sections/quanju/containers/footer/leadership/left.js

@ -3,13 +3,14 @@ import Lefttop from './left/left-top'
// import Leftcenter from "./left/left-center"
import Leftbottom from './left/left-bottom'
const Left = () => {
const Left = (props) => {
const { dispatch } = props
return (
<>
<div style={{ width: "23%", height: "100%", float: "left", marginLeft: "1%" }}>
<Lefttop />
<Lefttop dispatch={dispatch} />
<Leftbottom />
<Leftbottom dispatch={dispatch} />
</div>
</>
)

43
web/client/src/sections/quanju/containers/footer/leadership/left/echarts/leftbottomecharts.js

@ -1,7 +1,22 @@
import React, { useEffect, useRef } from 'react'
import React, { useEffect, useRef, useState } from 'react'
import * as echarts from 'echarts';
import { getdaolutongji } from "../../../../../actions/example"
const Leftbottomecharts = () => {
const Leftbottomecharts = (props) => {
const { dispatch } = props
const [list, setList] = useState([])
const [count, setCount] = useState([])
useEffect(() => {
const res = dispatch(getdaolutongji()).then((res) => {
setList(res.payload.data.construction.map((item, index) => {
return item.year
}));
setCount(res.payload.data.construction.map((item, index) => {
return item.count.toFixed(3)
}))
});
}, [])
console.log(list, count);
const chartRef = useRef(null);
useEffect(() => {
var chartInstance = echarts.init(chartRef.current);
@ -9,7 +24,7 @@ const Leftbottomecharts = () => {
title: {
},
tooltip: {
formatter: " {b}年<br/> 施工了{c}公里",
formatter: " {b}年<br/> {c}公里",
trigger: "axis",
axisPointer: {
lineStyle: {
@ -46,15 +61,13 @@ const Leftbottomecharts = () => {
},
axisLine: {
lineStyle: {
color: "rgba(176,215,255,0.4)",
color: /* "rgba(176,215,255,0.4)" */"rgba(216,240,255,0.8)",
},
},
data: [
"13:00",
"13:05",
"13:10",
"13:15",
],
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
data: list,
normal: {
lineStyle: {
color: "rgba(226,240,255,0.4)"//折线的颜色
@ -77,9 +90,9 @@ const Leftbottomecharts = () => {
// nameTextStyle: {
// color: "#abb8ce",
// },
// axisLabel: {
// color: "#abb8ce",
// },
axisLabel: {
color: "rgba(216,240,255,0.8)",
},
axisTick: {
//y轴刻度线
show: false,
@ -121,7 +134,7 @@ const Leftbottomecharts = () => {
shadowBlur: 10,
},
},
data: [220, 182, 191, 134],
data: count,
},
],
};
@ -129,7 +142,7 @@ const Leftbottomecharts = () => {
window.addEventListener('resize', function () {
chartInstance.resize();
})
}, []);
}, [list, count]);
return (

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

@ -2,12 +2,13 @@ import React from 'react'
import Module from '../../../public/module'
import Echartes from "./echarts/leftbottomecharts"
const Leftbottom = () => {
const Leftbottom = (props) => {
const { dispatch } = props
const style = { height: "28%", marginTop: "5%" }
return (
<>
<Module style={style} title={"道路施工统计"}>
<Echartes />
<Echartes dispatch={dispatch} />
</Module>
</>
)

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

@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react'
import Module from '../../../public/module'
import Lunbo from "../centerleft/lunbo/lunbo"
import Lunbo from "../right/lunbo"
// import "./left.less"
const Leftcenter = () => {
@ -25,7 +25,7 @@ const Leftcenter = () => {
])
useEffect(() => {
const timer = setInterval(() => {
if (num == 12) {
if (num == list.length) {
setNum(1);
setTu(list[0].img);
} else {
@ -42,13 +42,13 @@ const Leftcenter = () => {
return (
// <div style={{ width: "100%", height: "100%" }} >
// {/* <div style={{ width: "100%", height: "100%", }}> */}
<li style={{ height: "20px", position: "relative", width: "100%", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", borderLeft: "2px solid #1C60FE", backgroundColor: "linear-gradient(to right, rgba(0,70,200,0.3000) , rgba(0,124,230,0))" }} onMouseEnter={() => {
<li style={{ height: "20px", position: "relative", width: "100%", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", borderLeft: num - 1 == index ? "2px solid #1C60FE" : "2px solid #113892", backgroundColor: "linear-gradient(to right, rgba(0,70,200,0.3000) , rgba(0,124,230,0))" }} onMouseEnter={() => {
setTu(item.img);
setNum(index + 1);
setName(item.name)
// console.log(list);
}}>
<p style={{ position: "absolute", color: num - 1 == index ? "#fff" : "rgba(216,240,255,0.8)" }}>{item.name}</p>
<p style={{ position: "absolute", color: num - 1 == index ? "#fff" : "rgba(216,240,255,0.8)", left: "10%" }}>{item.name}</p>
<img src='/assets/images/leadership/juxing.png' style={{ width: "100%", height: "100%", position: "absolute" }} />
</li>
// {/* </div> */}
@ -86,7 +86,7 @@ const Leftcenter = () => {
}
</div>
<Lunbo
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "35%", float: "right", marginRight: "2%", marginTop: "1%" }}
divHeight={"100%"}

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

@ -1,10 +1,19 @@
import React from 'react'
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 request from 'superagent'
const Lefttop = () => {
const style = { height: "68%" }
useEffect(() => {
// return () => {
request('GET', '/search').then((success, failure) => {
console.log(success);
});
// };
}, [])
return (
<>
<Module style={style} title={"道路拥堵指数"} >

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

@ -3,12 +3,13 @@ import Righttop from './right/right-top'
import Rightcenter from './right/right-center'
import Rightbottom from './right/right-bottom'
const Right = () => {
const Right = (props) => {
const { dispatch } = props
return (
<>
<div style={{ width: "25%", height: "100%", float: "right", marginRight: "1%" }}>
<Righttop />
<Rightbottom />
<Righttop dispatch={dispatch} />
<Rightbottom dispatch={dispatch} />
</div>
</>
)

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

@ -40,14 +40,15 @@ class ReactCarousel extends Component {
imgs: [],
showIndex: 0, //显示第几个图片
timer: null, // 定时器
show: false // 前后按钮显示
show: false, // 前后按钮显示
// arr1: ""
}
this.setState({
imgs: this.chunk((this.state.shuzu), 4)
})
console.log(this.chunk((this.state.shuzu), 4));
// console.log(this.state.imgs);
this.state.imgs = this.chunk((this.state.shuzu), 4)
}
render() {
return (
<div className="ReactCarousel" style={{ width: "100%", height: "100%" }}>
@ -57,15 +58,27 @@ class ReactCarousel extends Component {
>
<ul className="ul">
{
this.state.imgs.map((value, index) => {
return (
<li className={index === this.state.showIndex ? 'show' : ''}
<li style={{ position: "relative", left: "8%", width: "100%", height: "100%" }} className={index === this.state.showIndex ? 'show' : ''}
key={index}
>
<div>{value[0].name}</div>
<div>{value[1].name}</div>
<div style={{ width: "40%", height: "40%", backgroundColor: "red", position: "absolute", left: "-3%", top: "3%" }}>
{value[0]?.name}
</div>
{value[1]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "#fff", position: "absolute", left: "45%", top: "3%" }}>
{value[1]?.name}
</div> : ""}
{value[2]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "bule", position: "absolute", left: "-3%", top: "50%" }}>
{value[2]?.name}
</div> : ""}
{value[3]?.name ? <div style={{ width: "40%", height: "40%", backgroundColor: "pink", position: "absolute", left: "45%", top: "50%" }}>
{value[3]?.name}
</div> : ""}
{/* <div>{value[1].name}</div>
<div>{value[2].name}</div>
<div>{value[3].name}</div>
<div>{value[3].name}</div> */}
</li>
)
})
@ -83,7 +96,7 @@ class ReactCarousel extends Component {
}
</ul> */}
<div className="control" style={{ width: "100%", height: "10%", backgroundColor: "red" }}>
<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>
</div>
@ -94,6 +107,7 @@ class ReactCarousel extends Component {
componentDidMount() { //一开始自动播放
this.start();
}
componentWillUnmount() { //销毁前清除定时器
this.stop();
}
@ -105,7 +119,7 @@ class ReactCarousel extends Component {
let { timer } = this.state;
timer = setInterval(() => {
this.next();
}, 2000);
}, 300000);
this.setState({
timer
})

11
web/client/src/sections/quanju/containers/footer/leadership/right/left.less

@ -2,26 +2,29 @@ li{
list-style-type:none
}
.ant-select-selector, .ant-select-selection-placeholder{
.wy-rightTop{
.ant-select-selector, .ant-select-selection-placeholder{
background-color:#011f59 !important;
border:#1E7BD6 1px solid !important;
font-family: PingFangSC-Regular, PingFang SC !important;
height: 25px !important;
// line-height: 25px !important;
}
.ant-select-selection-item{
}.ant-select-selection-item{
line-height: 25px !important;
}
.anticon{
color: #fff !important;
}
}
.contain {
position: relative;
top: 5%;
left: 45%;
width: 100%;
height: 100%;
transition: all 2s;
transition: all 30s;
transform: translateX(-50%);
color: #fff;
overflow: hidden;

9
web/client/src/sections/quanju/containers/footer/leadership/right/lunbo copy.js

@ -1,9 +0,0 @@
import React from 'react'
function lunbo() {
return (
<div>lunbo copy</div>
)
}
export default lunbo

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

@ -2,54 +2,36 @@ import React, { useState, useEffect } from 'react'
import Module from '../../../public/module'
import Lun from "./lunbo"
import "./left.less"
import { getZhichaolist } from "../../../../actions/example"
const Rightbottom = () => {
const Rightbottom = (props) => {
const { dispatch } = props
const style = { height: "28%", marginTop: "4%" }
const [beijing, setBeijing] = useState()
const [list, setList] = useState([{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11121", chaoxian: "30%", penalty: "-6分和扣200元", days: "2022年5月4日" },
{ name: "苏LD112512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1151121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11912121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD16112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L2D111221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "62", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11152121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L1D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD11512121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD13112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111612121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD111216221", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏L63D1112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD163112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD162112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" },
{ name: "苏LD651112121", chaoxian: "30%", penalty: "-6分", days: "2022年5月4日" }])
const [list, setList] = useState([])
const [nums, setNums] = useState([])
useEffect(() => {
const zhichaolist = dispatch(getZhichaolist()).then((res) => {
setList(res.payload?.data?.overSpeedList)
// console.log(res);
setNums(res.payload?.data?.processed)
})
})
// console.log(list);
const renderBody = () => {
return (
// <div style={{ width: "100%", height: "100%" }}>{
// lists.map((item, index) => {
// return (<div >
// <div style={{ width: "100%", height: "100%", }}>
// <li style={{ height: "20px", width: "100%", marginTop: index == 0 ? "4px" : "5px", listStyle: "none", backgroundColor: "pink" }} onMouseEnter={() => {
// }}>{item.name}</li>
// </div>
// </div>)
// })
// }
// </div >
<div style={{ width: "100%", height: "50%" }}>
{list.map((item, index) => {
return <li style={{ width: "100%", height: "3vh", marginTop: "5px", backgroundColor: beijing == index ? "rgba(0,124,230,1) " : "" }} onMouseEnter={() => {
{list?.map((item, index) => {
return <li style={{ width: "100%", height: "3vh", marginTop: "5px", position: "relative", }} onMouseEnter={() => {
setBeijing(index)
// console.log(beijing);
}}>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.name}</div>
<div style={{ width: "10%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.chaoxian}</div>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.penalty}</div>
<div style={{ width: "30%", height: "100%", float: "left", textAlign: "center", lineHeight: "3vh", fontSize: "14px", color: beijing == item.name ? "#FFFFFF" : "rgba(216,240,255,0.8000)" }}>{item.days}</div></li>
{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>
</li>
})
}
@ -61,7 +43,7 @@ const Rightbottom = () => {
<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>192</span>
已处理<span style={{ color: "#FFFFFF", fontSize: "18px", paddingLeft: "2%", paddingRight: "2%" }}>{nums}</span>
</div>
<div style={{ width: "90%", height: "3vh", backgroundColor: "rgba(21,77,160,0.2)", position: "relative", left: "5%", top: "5%" }}>
<p style={{ width: "30%", fontSize: "12px", color: "#FFFFFF", height: "100%", textAlign: "center", position: "absolute", lineHeight: "3vh" }}>车牌号</p>

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

@ -1,7 +1,7 @@
import React, { useState, useEffect } from 'react';
import Module from '../../../public/module'
import { Radio, Select } from 'antd';
import Lunbo from "../centerleft/lunbo/lunbo"
import Lunbo from "./lunbo"
import Huadong from './hudong';
import "./left.less"
@ -60,7 +60,7 @@ const Righttop = () => {
{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%" }} /> : ""}
<p style={{ position: "absolute", left: "5%" }} >{item.name}</p><p style={{ position: "absolute", right: "5%" }}>{item.name}</p></li>
<p style={{ position: "absolute", left: "5%", color: num == index ? "#FFFFFF" : "rgba(216,240,255,0.8)" }} >{item.name}</p><p style={{ position: "absolute", right: "5%", color: num == index ? "#FFFFFF" : "rgba(216,240,255,0.8)" }}>{item.name}</p></li>
// {/* </div> */}
// </div>
)
@ -76,7 +76,7 @@ const Righttop = () => {
<div style={{ width: "100%", height: "65%" }}>
<div style={{ width: "100%", height: "10%", position: "relative" }}>
<img src='/assets/images/leadership/head.png' style={{ width: "15%", marginLeft: "5%" }} />
<div style={{ position: "absolute", right: "5%", top: "130%" }}>
<div className='wy-rightTop' style={{ position: "absolute", right: "5%", top: "130%" }}>
<Select
size={size}
defaultValue="选择路段"
@ -94,7 +94,7 @@ const Righttop = () => {
</div>
</div>
<div style={{ width: "100%", height: "80%", position: "relative", backgroundColor: "red", top: "10%" }}>
<div style={{ width: "100%", height: "80%", position: "relative", top: "10%" }}>
<Huadong />
</div>
</div>
@ -106,7 +106,7 @@ const Righttop = () => {
<img src='/assets/images/leadership/zibiaoti.png' style={{ width: "95%", height: "34px", position: "absolute", top: "12px", left: "6%" }} />
</div>
<Lunbo
canScroll={true}
// canScroll={true}
content={renderBody()}
containerStyle={{ position: "relative", height: "100%", width: "90%", left: "5%", top: "5%" }}
divHeight={"100%"}

2
web/client/src/sections/quanju/containers/footer/operation/index.js

@ -17,7 +17,7 @@ const Operation = (props) => {
}, [])
return (
<div style={{ display: 'flex', width: '100%',height: '100%',justifyContent: 'space-between' }}>
<div style={{ display: 'flex', width: '100%', height: '100%', justifyContent: 'space-between' }}>
<Left roadData={roadData} loading={loading} />
<Right roadData={roadData} loading={loading} />
</div>

2
web/client/src/themes/light.json

File diff suppressed because one or more lines are too long

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

@ -49,12 +49,18 @@ export const ApiTable = {
getSpecificVehicle: 'vehicle/specific',
getHouseholds: 'vehicle/business',
getRoadway: 'road',
//桥梁管理
getBridge:'bridge',
putBridge:'bridge',
//工程数据
getProject:'project',
putProject:'project',
// 获取运政统计
getYunZheng: "transportation/statistic",
//桥梁管理
getBridge: 'bridge',
//工程数据
getProject: 'project',
//桥梁管理
getBridge: 'bridge',
putBridge: 'bridge',
//工程数据
getProject: 'project',
putProject: 'project',
//道路统计
getBgroadstatistics: "build/road_state",
@ -64,9 +70,13 @@ putProject:'project',
//获取治超详情数据
getzhichaodetail: '/manage/overspeed',
// 获取道路养护统计及列表
getroadmaintain: "conserve/statistic",
// 获取治超详情列
getzhichaoList: "manage/overspeed",
//大屏运营 —— 公交车辆层级信息
getBusTier:'/operation/car_level',
getBusTier: '/operation/car_level',
//获取路政列表
getHighways: 'road_manage',
@ -75,9 +85,7 @@ putProject:'project',
getRoadMaintenance: 'conserve/statistic',
//获取宣传数据
getpropagata:'publicity',
getpropagata: 'publicity',
};

15692
web/log/development.txt

File diff suppressed because it is too large

4321
web/package-lock.json

File diff suppressed because it is too large

2
web/package.json

@ -84,7 +84,7 @@
"koa-view": "^2.1.4",
"lodash": "^4.17.21",
"mini-dynamic-antd-theme": "^0.5.3",
"moment": "^2.22.0",
"moment": "^2.29.4",
"react-color": "^2.19.3",
"react-router-breadcrumbs-hoc": "^4.0.1",
"react-sortable-hoc": "^2.0.0",

Loading…
Cancel
Save