Browse Source

结构物基础信息管理

master
wenlele 2 years ago
parent
commit
b0371efe8e
  1. 2
      api/.vscode/launch.json
  2. 205
      api/app/lib/controllers/projectRegime/projectSituation.js
  3. 75
      api/app/lib/index.js
  4. 79
      api/app/lib/models/point.js
  5. 97
      api/app/lib/models/project.js
  6. 214
      api/app/lib/models/site.js
  7. 24
      api/app/lib/routes/projectRegime/index.js
  8. 355
      api/log/development.log
  9. 199
      api/package-lock.json
  10. 3
      api/package.json
  11. 27
      script/1.0.0/schema/2.create.project.sql
  12. 59
      web/client/src/sections/projectRegime/actions/projectSituation.js
  13. 32
      web/client/src/sections/projectRegime/components/projectAddModel.js
  14. 3
      web/client/src/sections/projectRegime/containers/index.js
  15. 137
      web/client/src/sections/projectRegime/containers/information.js
  16. 285
      web/client/src/sections/projectRegime/containers/point.js
  17. 16
      web/client/src/sections/projectRegime/nav-item.js
  18. 13
      web/client/src/sections/projectRegime/routes.js
  19. 13
      web/client/src/utils/webapi.js
  20. 300
      web/log/development.txt
  21. 524
      web/package-lock.json
  22. 4
      web/package.json

2
api/.vscode/launch.json

@ -15,7 +15,7 @@
"args": [
"-p 4900",
//
"-g postgres://FashionAdmin:123456@10.8.30.39:5432/ZhongDing",
"-g postgres://postgres:123456@10.8.30.166:5432/XunJian",
//
// "--apiEmisUrl http://10.8.30.161:1111",
"--qnak XuDgkao6cL0HidoMAPnA5OB10Mc_Ew08mpIfRJK5",

205
api/app/lib/controllers/projectRegime/projectSituation.js

@ -1,47 +1,21 @@
'use strict';
async function getFirmList (ctx, next) {
try {
const models = ctx.fs.dc.models;
const { limit, page, siteId, siteNameKeyword, descKeyword } = ctx.query;
let userInfo = ctx.fs.api.userInfo;
let res = await models.Company.findAll({
where: {
del: false,
},
attributes: ['id', 'name'],
distinct: true,
});
ctx.status = 200;
ctx.body = res
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取公司列表失败"
}
}
}
async function projectList (ctx, next) {
try {
const models = ctx.fs.dc.models;
let userInfo = ctx.fs.api.userInfo;
const { limit, page, companyId, name, type, status } = ctx.query;
const { limit, page, name } = ctx.query;
let options = {
where: {
del: false,
},
include: [{
as: 'company',
model: models.Company,
attributes: ['id', 'name'],
},],
order: [['createTime', 'DESC']],
// where: {
// },
// include: [{
// as: 'company',
// model: models.Company,
// attributes: ['id', 'name'],
// },],
}
if (limit) {
options.limit = Number(limit)
@ -49,95 +23,54 @@ async function projectList (ctx, next) {
if (page && limit) {
options.offset = Number(page) * Number(limit)
}
if (companyId) {
options.where.companyId = companyId
}
if (type) {
options.where.type = type
}
if (name) {
options.where.name = { $like: `%${name}%` }
}
if (status) {
options.where.status = status
}
let res = await models.Site.findAndCountAll(options)
let res = await models.Project.findAndCountAll(options)
ctx.status = 200;
ctx.body = res
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取工程交底列表失败"
"message": "获取结构列表失败"
}
}
}
async function getUserSiteList (ctx, next) {
try {
const models = ctx.fs.dc.models;
let userSites = ctx.fs.api.userInfo.relateSites;//用户关注工地
let where = { del: false }
if (userSites && userSites.length) {
where.id = { $in: userSites }
}
let res = await models.Site.findAll({
where: where,
attributes: ['id', 'name'],
include: {
model: models.Company,
attributes: ['id', 'name'],
},
});
ctx.status = 200;
ctx.body = res
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取用户关注工地列表失败"
}
}
}
async function postAddProject (ctx, next) {
try {
const models = ctx.fs.dc.models;
let userInfo = ctx.fs.api.userInfo;
const data = ctx.request.body;
const { companyId, address, amount, builder, contractor, createTime, designer, endTime, img, latitude,
longitude, name, peopleInCharge, scale, startTime, supervisor, tel, type, } = data
const { img, longitude, latitude, name, type, describe } = data
let errMsg = data.id ? '工程编辑失败' : '工程新增失败'
let project = {
companyId, address, amount, builder, contractor, createTime, designer, endTime, img, latitude,
longitude, name, peopleInCharge, scale, startTime, supervisor, tel, type, del: false, userId: userInfo.id
}
let project = { img, longitude, latitude, name, type, describe, userId: userInfo.id }
const alikeProject = await models.Site.findOne({
const alikeProject = await models.Project.findOne({
where: {
name: name,
del: false,
}
})
if ((!data.id && alikeProject) || (alikeProject && alikeProject.id !== data.id)) {
errMsg = '已有相同项目名称'
errMsg = '已有相同结构物名称'
throw errMsg
}
if (data && data.id) {
await models.Site.update(project, {
await models.Project.update(project, {
where: {
id: data.id
}
})
} else {
await models.Site.create(project)
await models.Project.create(project)
}
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`)
@ -154,50 +87,128 @@ async function delProject (ctx, next) {
let userInfo = ctx.fs.api.userInfo;
const { id } = ctx.params
await models.Site.destroy({
await models.Project.destroy({
where: {
id,
}
})
await models.Point.destroy({
where: {
projectId: id
}
})
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`)
ctx.status = 400;
ctx.body = {
"message": '删除工程概况失败'
"message": '删除结构物失败'
}
}
}
async function putProjectStatus (ctx, next) {
async function addPosition (ctx, next) {
try {
const models = ctx.fs.dc.models;
const { id, status } = ctx.request.body;
if (!id || !status) {
errMsg = '必须传入id和status'
throw errMsg
let userInfo = ctx.fs.api.userInfo;
const data = ctx.request.body;
const { longitude, latitude, name, describe, qrCode, projectId, } = data
let errMsg = data.id ? '点位编辑失败' : '点位新增失败'
let pointData = { longitude, latitude, name, describe, qrCode, projectId }
const alikeProject = await models.Project.findOne({
where: {
id: data.id,
}
})
if (data && data.id) {
await models.Point.update({qrCode}, {
where: {
id: data.id,
}
})
} else {
await models.Point.create(pointData)
}
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`)
ctx.status = 400;
ctx.body = {
"message": errMsg
}
await models.Site.update({ status }, {
}
}
async function position (ctx, next) {
try {
const models = ctx.fs.dc.models;
let userInfo = ctx.fs.api.userInfo;
const { limit, page, projectId } = ctx.query;
let options = {
where: {
id
id: projectId
},
include: [{
model: models.Point,
},],
}
if (limit) {
options.limit = Number(limit)
}
if (page && limit) {
options.offset = Number(page) * Number(limit)
}
let res = await models.Project.findAndCountAll(options)
ctx.status = 200;
ctx.body = res
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`);
ctx.status = 400;
ctx.body = {
"message": "获取结构列表失败"
}
}
}
async function delPosition (ctx, next) {
try {
const models = ctx.fs.dc.models;
let userInfo = ctx.fs.api.userInfo;
const { id } = ctx.params
await models.Point.destroy({
where: {
id,
}
})
ctx.status = 204;
} catch (error) {
ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`)
ctx.status = 400;
ctx.body = {
"message": '修改项目状态失败'
"message": '删除点位失败'
}
}
}
module.exports = {
getFirmList,
projectList,
getUserSiteList,
postAddProject,
delProject,
putProjectStatus
addPosition,
position,
delPosition,
}

75
api/app/lib/index.js

@ -13,57 +13,60 @@ const schedule = require('./schedule')
// const apiLog = require('./middlewares/api-log');
module.exports.entry = function (app, router, opts) {
app.fs.logger.log('info', '[FS-AUTH]', 'Inject auth and api mv into router.');
app.fs.logger.log('info', '[FS-AUTH]', 'Inject auth and api mv into router.');
app.fs.api = app.fs.api || {};
app.fs.opts = opts || {};
app.fs.utils = app.fs.utils || {};
app.fs.api.authAttr = app.fs.api.authAttr || {};
app.fs.api.logAttr = app.fs.api.logAttr || {};
app.fs.api = app.fs.api || {};
app.fs.opts = opts || {};
app.fs.utils = app.fs.utils || {};
app.fs.api.authAttr = app.fs.api.authAttr || {};
app.fs.api.logAttr = app.fs.api.logAttr || {};
// 顺序固定 ↓
//redisConnect(app, opts)
socketConect(app, opts)
// 顺序固定 ↓
//redisConnect(app, opts)
socketConect(app, opts)
// 实例其他平台请求方法
//paasRequest(app, opts)
// 实例其他平台请求方法
//paasRequest(app, opts)
// clickHouse 数据库 client
//clickHouseClient(app, opts)
// clickHouse 数据库 client
//clickHouseClient(app, opts)
// 工具类函数
utils(app, opts)
// 工具类函数
utils(app, opts)
// 定时任务
schedule(app, opts)
// 定时任务
schedule(app, opts)
//鉴权中间件
router.use(authenticator(app, opts));
//鉴权中间件
router.use(authenticator(app, opts));
// 日志记录
// router.use(apiLog(app, opts));
// 日志记录
// router.use(apiLog(app, opts));
router = routes(app, router, opts);
router = routes(app, router, opts);
};
module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Sequelize, models: {} }
// 模型关系摘出来 初始化之后再定义关系才行
fs.readdirSync(path.join(__dirname, '/models')).forEach((filename) => {
require(`./models/${filename}`)(dc)
});
// 模型关系摘出来 初始化之后再定义关系才行
fs.readdirSync(path.join(__dirname, '/models')).forEach((filename) => {
require(`./models/${filename}`)(dc)
});
const { Camera, Company, Department, Post, RoleGroup, Role, RoleResource, User, UserDepartment, UserPost, Site, ProjectDisclosure, ProjectDisclosureFiles, Coordinate, ProblemReport, ProblemReportFile, Worker, WorkerAttendance,
RiskReport, Metting, HideDangerRectify, HideDangerRectifySites, HideDangerDispose, UserResource, Resource
} = dc.models;
const { Camera, Company, Department, Post, RoleGroup, Role, RoleResource, User, UserDepartment, UserPost, Site, ProjectDisclosure, ProjectDisclosureFiles, Coordinate, ProblemReport, ProblemReportFile, Worker, WorkerAttendance,
RiskReport, Metting, HideDangerRectify, HideDangerRectifySites, HideDangerDispose, UserResource, Resource, Project, Point
} = dc.models;
UserResource.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' });
User.hasMany(UserResource, { foreignKey: 'userId', sourceKey: 'id' });
UserResource.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' });
User.hasMany(UserResource, { foreignKey: 'userId', sourceKey: 'id' });
UserResource.belongsTo(Resource, { foreignKey: 'resourceId', targetKey: 'code' });
Resource.hasMany(UserResource, { foreignKey: 'resourceId', sourceKey: 'code' });
Resource.hasMany(Resource, { foreignKey: 'parentResource', sourceKey: 'code' });
UserResource.belongsTo(Resource, { foreignKey: 'resourceId', targetKey: 'code' });
Resource.hasMany(UserResource, { foreignKey: 'resourceId', sourceKey: 'code' });
Resource.hasMany(Resource, { foreignKey: 'parentResource', sourceKey: 'code' });
User.belongsTo(Department, { foreignKey: 'departmentId', targetKey: 'id' });
Department.hasMany(User, { foreignKey: 'departmentId', sourceKey: 'id' });
User.belongsTo(Department, { foreignKey: 'departmentId', targetKey: 'id' });
Department.hasMany(User, { foreignKey: 'departmentId', sourceKey: 'id' });
Point.belongsTo(Project, { foreignKey: 'projectId', targetKey: 'id' });
Project.hasMany(Point, { foreignKey: 'projectId', sourceKey: 'id' });
};

79
api/app/lib/models/point.js

@ -0,0 +1,79 @@
/* eslint-disable*/
'use strict';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Point = sequelize.define("point", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "point_id_uindex"
},
projectId: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "project_id",
autoIncrement: false
},
name: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "name",
autoIncrement: false
},
longitude: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "longitude",
autoIncrement: false
},
latitude: {
type: DataTypes.INTEGER,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "latitude",
autoIncrement: false
},
describe: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "describe",
autoIncrement: false
},
qrCode: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "qr_code",
autoIncrement: false
},
}, {
tableName: "point",
comment: "",
indexes: []
});
dc.models.Point = Point;
return Point;
};

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

@ -0,0 +1,97 @@
/* eslint-disable*/
'use strict';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Project = sequelize.define("project", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "project_id_uindex"
},
img: {
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "img",
autoIncrement: false
},
userId: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "user_id",
autoIncrement: false
},
name: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "name",
autoIncrement: false
},
type: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "type",
autoIncrement: false
},
longitude: {
type: DataTypes.DOUBLE,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "longitude",
autoIncrement: false
},
latitude: {
type: DataTypes.DOUBLE,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "latitude",
autoIncrement: false
},
describe: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "describe",
autoIncrement: false
},
qrCode: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "qr_code",
autoIncrement: false
},
}, {
tableName: "project",
comment: "",
indexes: []
});
dc.models.Project = Project;
return Project;
};

214
api/app/lib/models/site.js

@ -1,214 +0,0 @@
/* eslint-disable*/
'use strict';
module.exports = dc => {
const DataTypes = dc.ORM;
const sequelize = dc.orm;
const Site = sequelize.define("site", {
id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: true,
field: "id",
autoIncrement: true,
unique: "site_id_uindex"
},
img: {
type: DataTypes.ARRAY(DataTypes.STRING),
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "img",
autoIncrement: false
},
companyId: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "company_id",
autoIncrement: false
},
userId: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "user_id",
autoIncrement: false
},
name: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "name",
autoIncrement: false
},
type: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "type",
autoIncrement: false
},
scale: {
type: DataTypes.JSONB,
allowNull: false,
defaultValue: null,
comment: "规模",
primaryKey: false,
field: "scale",
autoIncrement: false
},
amount: {
type: DataTypes.JSONB,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "amount",
autoIncrement: false
},
createTime: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "create_time",
autoIncrement: false
},
startTime: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "start_time",
autoIncrement: false
},
endTime: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "end_time",
autoIncrement: false
},
address: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "address",
autoIncrement: false
},
longitude: {
type: DataTypes.DOUBLE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "longitude",
autoIncrement: false
},
latitude: {
type: DataTypes.DOUBLE,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "latitude",
autoIncrement: false
},
peopleInCharge: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "people_in_charge",
autoIncrement: false
},
tel: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: null,
comment: null,
primaryKey: false,
field: "tel",
autoIncrement: false
},
builder: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "建筑单位",
primaryKey: false,
field: "builder",
autoIncrement: false
},
supervisor: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "监理单位",
primaryKey: false,
field: "supervisor",
autoIncrement: false
},
contractor: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "施工单位",
primaryKey: false,
field: "contractor",
autoIncrement: false
},
designer: {
type: DataTypes.STRING,
allowNull: true,
defaultValue: null,
comment: "设计单位",
primaryKey: false,
field: "designer",
autoIncrement: false
},
del: {
type: DataTypes.BOOLEAN,
allowNull: true,
defaultValue: null,
comment: null,
primaryKey: false,
field: "del",
autoIncrement: false
},
status: {
type: DataTypes.STRING,
allowNull: false,
defaultValue: "在建",
comment: "项目状态",
primaryKey: false,
field: "status",
autoIncrement: false
}
}, {
tableName: "site",
comment: "",
indexes: []
});
dc.models.Site = Site;
return Site;
};

24
api/app/lib/routes/projectRegime/index.js

@ -1,23 +1,25 @@
'use strict';
const projectSituation = require('../../controllers/projectRegime/projectSituation');
module.exports = function (app, router, opts) {
app.fs.api.logAttr['GET/firmList'] = { content: '获取公司列表', visible: false };
router.get('/firmList', projectSituation.getFirmList);
module.exports = function (app, router, opts) {
app.fs.api.logAttr['GET/projectList'] = { content: '获取工程概况列表', visible: false };
app.fs.api.logAttr['GET/projectList'] = { content: '获取结构物列表', visible: false };
router.get('/projectList', projectSituation.projectList);
app.fs.api.logAttr['GET/user/site/list'] = { content: '获取用户关注工地列表', visible: false };
router.get('/user/site/list', projectSituation.getUserSiteList);
app.fs.api.logAttr['POST/addProject'] = { content: '新增修改工程概况', visible: false };
app.fs.api.logAttr['POST/addProject'] = { content: '新增修改结构物', visible: false };
router.post('/addProject', projectSituation.postAddProject);
app.fs.api.logAttr['DEL/delProject/:id'] = { content: '删除工程概况', visible: false };
app.fs.api.logAttr['DEL/delProject/:id'] = { content: '删除结构物', visible: false };
router.del('/delProject/:id', projectSituation.delProject);
app.fs.api.logAttr['put/project/status'] = { content: '修改项目状态', visible: false };
router.put('/project/status', projectSituation.putProjectStatus);
app.fs.api.logAttr['POST/position'] = { content: '新增修改点位', visible: false };
router.post('/position', projectSituation.addPosition);
app.fs.api.logAttr['GET/position'] = { content: '获取点位列表', visible: false };
router.get('/position', projectSituation.position);
app.fs.api.logAttr['DEL/delPosition/:id'] = { content: '删除点位', visible: false };
router.del('/delPosition/:id', projectSituation.delPosition);
}

355
api/log/development.log

@ -3335,3 +3335,358 @@ notNull Violation: camera.online cannot be null
2023-01-13 10:13:19.424 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 10:13:19.424 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 10:16:27.655 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 10:52:23.711 - debug: [FS-LOGGER] Init.
2023-01-13 10:52:24.201 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 10:52:24.202 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 10:53:35.834 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 10:55:05.816 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 10:56:12.629 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:04:45.538 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:04:46.686 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:04:47.804 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:04:55.246 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:05:07.559 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:06:28.447 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:06:45.479 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:06:51.388 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 11:06:58.425 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 13:54:53.951 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 13:55:24.824 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 13:57:28.114 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 13:58:13.714 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:08:05.011 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:09:54.771 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:10:13.681 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:10:40.048 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:27:43.045 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:29:23.830 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:31:22.706 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:31:32.538 - error: path: /projectList, error: SequelizeDatabaseError: 字段 site.status 不存在
2023-01-13 14:46:46.062 - debug: [FS-LOGGER] Init.
2023-01-13 14:46:47.206 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 14:46:47.207 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 14:46:54.590 - error: path: /logout, error: SequelizeDatabaseError: permission denied for table user_token
2023-01-13 14:47:01.883 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:77:9)'
}
2023-01-13 14:48:09.017 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:77:9)'
}
2023-01-13 14:48:41.055 - error: [FS-ERRHD]
{
message: 'transaction is not defined',
stack: 'ReferenceError: transaction is not defined\n' +
' at login (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\auth\\index.js:77:9)'
}
2023-01-13 14:50:16.536 - debug: [FS-LOGGER] Init.
2023-01-13 14:50:16.800 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 14:50:16.800 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 14:50:27.575 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 14:50:27.581 - error: path: /user/site/list, error: SequelizeEagerLoadingError: company is not associated to site!
2023-01-13 15:06:05.692 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:06:06.887 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:09:43.120 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:09:50.583 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:09:54.170 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:18:49.627 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:50:32.988 - error: path: /firmList, error: SequelizeDatabaseError: relation "company" does not exist
2023-01-13 15:51:42.966 - error: path: /projectList, error: SequelizeEagerLoadingError: company is not associated to site!
2023-01-13 15:57:59.422 - debug: [FS-LOGGER] Init.
2023-01-13 15:57:59.658 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 15:57:59.658 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:22:31.025 - debug: [FS-LOGGER] Init.
2023-01-13 16:22:31.283 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:22:31.283 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:22:32.271 - error: [app]
{
message: 'getFirmList is not defined',
stack: 'ReferenceError: getFirmList is not defined\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:132:4)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\projectRegime\\index.js:3:26)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:11:13\n' +
' at Array.forEach (<anonymous>)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:9:57\n' +
' at Array.forEach (<anonymous>)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:7:30)\n' +
' at Object.module.exports.entry (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\index.js:46:14)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:74:20\n' +
' at Array.forEach (<anonymous>)'
}
2023-01-13 16:42:22.935 - debug: [FS-LOGGER] Init.
2023-01-13 16:42:23.221 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:42:23.222 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:42:24.005 - error: [app]
{
message: 'getFirmList is not defined',
stack: 'ReferenceError: getFirmList is not defined\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:132:4)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\projectRegime\\index.js:3:26)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Module.require (internal/modules/cjs/loader.js:887:19)\n' +
' at require (internal/modules/cjs/helpers.js:74:18)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:11:13\n' +
' at Array.forEach (<anonymous>)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:9:57\n' +
' at Array.forEach (<anonymous>)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:7:30)\n' +
' at Object.module.exports.entry (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\index.js:46:14)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:74:20\n' +
' at Array.forEach (<anonymous>)'
}
2023-01-13 16:53:16.524 - debug: [FS-LOGGER] Init.
2023-01-13 16:53:16.772 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:53:16.772 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:55:33.750 - error: path: /addProject, error: SequelizeDatabaseError: relation "project" does not exist
2023-01-13 16:55:33.752 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:80:21)'
}
2023-01-13 16:55:43.115 - debug: [FS-LOGGER] Init.
2023-01-13 16:55:43.402 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:55:43.402 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:56:10.793 - error: path: /addProject, error: SequelizeDatabaseError: column project.del does not exist
2023-01-13 16:56:10.796 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:80:21)'
}
2023-01-13 16:56:15.288 - debug: [FS-LOGGER] Init.
2023-01-13 16:56:15.581 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:56:15.581 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 16:57:53.689 - debug: [FS-LOGGER] Init.
2023-01-13 16:57:54.000 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 16:57:54.000 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-13 17:04:52.478 - debug: [FS-LOGGER] Init.
2023-01-13 17:04:52.834 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-13 17:04:52.834 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 08:41:38.387 - error: path: /addProject, error: SequelizeValidationError: notNull Violation: project.describe cannot be null
2023-01-16 08:41:38.391 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:79:21)'
}
2023-01-16 08:42:52.496 - error: path: /addProject, error: SequelizeValidationError: notNull Violation: project.describe cannot be null
2023-01-16 08:42:52.498 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:79:21)'
}
2023-01-16 08:47:16.320 - error: path: /addProject, error: SequelizeValidationError: notNull Violation: project.longitude cannot be null,
notNull Violation: project.latitude cannot be null,
notNull Violation: project.describe cannot be null
2023-01-16 08:47:16.322 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:79:21)'
}
2023-01-16 08:51:12.059 - error: path: /addProject, error: SequelizeValidationError: notNull Violation: project.longitude cannot be null,
notNull Violation: project.latitude cannot be null,
notNull Violation: project.describe cannot be null
2023-01-16 08:51:12.060 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at postAddProject (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:79:21)'
}
2023-01-16 08:51:36.570 - debug: [FS-LOGGER] Init.
2023-01-16 08:51:39.040 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 08:51:39.052 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 16:09:41.411 - debug: [FS-LOGGER] Init.
2023-01-16 16:09:42.168 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 16:09:42.168 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 18:48:36.959 - debug: [FS-LOGGER] Init.
2023-01-16 18:48:37.331 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 18:48:37.332 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 18:49:50.991 - debug: [FS-LOGGER] Init.
2023-01-16 18:49:51.245 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 18:49:51.246 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 18:50:45.888 - error: path: /delProject/2, error: TypeError: Cannot read property 'destroy' of undefined
2023-01-16 19:01:08.178 - error: path: /delProject/2, error: TypeError: Cannot read property 'destroy' of undefined
2023-01-16 19:03:13.227 - debug: [FS-LOGGER] Init.
2023-01-16 19:03:13.473 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:03:13.473 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:03:14.192 - error: [app]
{
message: 'middleware must be a function',
stack: 'TypeError: middleware must be a function\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:269:23\n' +
' at Array.forEach (<anonymous>)\n' +
' at Koa66.register (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:262:21)\n' +
' at Koa66.<computed> [as put] (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:327:30)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\projectRegime\\index.js:17:12)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:11:44\n' +
' at Array.forEach (<anonymous>)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:9:57\n' +
' at Array.forEach (<anonymous>)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:7:30)\n' +
' at Object.module.exports.entry (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\index.js:46:14)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:74:20\n' +
' at Array.forEach (<anonymous>)\n' +
' at scaffold (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:71:16)\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\server.js:12:18)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)\n' +
' at internal/main/run_main_module.js:17:47'
}
2023-01-16 19:13:17.924 - debug: [FS-LOGGER] Init.
2023-01-16 19:13:18.156 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:13:18.156 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:13:18.866 - error: [app]
{
message: 'middleware must be a function',
stack: 'TypeError: middleware must be a function\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:269:23\n' +
' at Array.forEach (<anonymous>)\n' +
' at Koa66.register (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:262:21)\n' +
' at Koa66.<computed> [as put] (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:327:30)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\projectRegime\\index.js:17:12)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:11:44\n' +
' at Array.forEach (<anonymous>)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:9:57\n' +
' at Array.forEach (<anonymous>)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:7:30)\n' +
' at Object.module.exports.entry (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\index.js:46:13)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:74:20\n' +
' at Array.forEach (<anonymous>)\n' +
' at scaffold (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:71:16)\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\server.js:12:18)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)\n' +
' at internal/main/run_main_module.js:17:47'
}
2023-01-16 19:16:25.425 - debug: [FS-LOGGER] Init.
2023-01-16 19:16:25.645 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:16:25.645 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:16:26.316 - error: [app]
{
message: 'middleware must be a function',
stack: 'TypeError: middleware must be a function\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:269:23\n' +
' at Array.forEach (<anonymous>)\n' +
' at Koa66.register (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:262:21)\n' +
' at Koa66.<computed> [as put] (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\koa-66\\index.js:327:30)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\projectRegime\\index.js:17:12)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:11:44\n' +
' at Array.forEach (<anonymous>)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:9:57\n' +
' at Array.forEach (<anonymous>)\n' +
' at module.exports (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\routes\\index.js:7:30)\n' +
' at Object.module.exports.entry (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\index.js:46:13)\n' +
' at C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:74:20\n' +
' at Array.forEach (<anonymous>)\n' +
' at scaffold (C:\\Users\\方式、\\Desktop\\Inspection\\api\\node_modules\\fs-web-server-scaffold\\index.js:71:16)\n' +
' at Object.<anonymous> (C:\\Users\\方式、\\Desktop\\Inspection\\api\\server.js:12:18)\n' +
' at Module._compile (internal/modules/cjs/loader.js:999:30)\n' +
' at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)\n' +
' at Module.load (internal/modules/cjs/loader.js:863:32)\n' +
' at Function.Module._load (internal/modules/cjs/loader.js:708:14)\n' +
' at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)\n' +
' at internal/main/run_main_module.js:17:47'
}
2023-01-16 19:32:53.177 - debug: [FS-LOGGER] Init.
2023-01-16 19:32:53.437 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:32:53.437 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:33:58.127 - error: path: /position, error: SequelizeValidationError: notNull Violation: point.qrCode cannot be null
2023-01-16 19:33:58.130 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:139:21)'
}
2023-01-16 19:34:03.163 - debug: [FS-LOGGER] Init.
2023-01-16 19:34:03.418 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:34:03.419 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:35:09.763 - debug: [FS-LOGGER] Init.
2023-01-16 19:35:10.054 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:35:10.054 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:37:52.954 - debug: [FS-LOGGER] Init.
2023-01-16 19:37:53.197 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:37:53.198 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:50:59.590 - debug: [FS-LOGGER] Init.
2023-01-16 19:50:59.928 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:50:59.929 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 19:51:12.438 - error: path: /delPosition/:id, error: SequelizeDatabaseError: invalid input syntax for type integer: ":id"
2023-01-16 19:52:06.223 - error: path: /delPosition/:id, error: SequelizeDatabaseError: invalid input syntax for type integer: ":id"
2023-01-16 19:59:40.770 - debug: [FS-LOGGER] Init.
2023-01-16 19:59:40.995 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 19:59:40.996 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 20:02:14.921 - error: path: /position, error: SequelizeDatabaseError: value too long for type character varying(255)
2023-01-16 20:02:14.923 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:139:21)'
}
2023-01-16 20:02:47.536 - error: path: /position, error: SequelizeDatabaseError: value too long for type character varying(255)
2023-01-16 20:02:47.538 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:139:21)'
}
2023-01-16 20:03:32.361 - error: path: /position, error: SequelizeDatabaseError: value too long for type character varying(255)
2023-01-16 20:03:32.362 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:139:21)'
}
2023-01-16 20:04:12.971 - debug: [FS-LOGGER] Init.
2023-01-16 20:04:13.228 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 20:04:13.228 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 20:08:50.993 - debug: [FS-LOGGER] Init.
2023-01-16 20:08:51.211 - info: [FS-ATTACHMENT] Inject attachment mw into router.
2023-01-16 20:08:51.211 - info: [FS-AUTH] Inject auth and api mv into router.
2023-01-16 20:09:04.532 - error: path: /position, error: Error: Invalid value { id: 1 }
2023-01-16 20:09:04.534 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:144:21)'
}
2023-01-16 20:10:40.595 - error: path: /position, error: Error: Invalid value { id: 1 }
2023-01-16 20:10:40.597 - error: [FS-ERRHD]
{
message: 'errMsg is not defined',
stack: 'ReferenceError: errMsg is not defined\n' +
' at addPosition (C:\\Users\\方式、\\Desktop\\Inspection\\api\\app\\lib\\controllers\\projectRegime\\projectSituation.js:144:21)'
}

199
api/package-lock.json

@ -1106,8 +1106,7 @@
"decamelize": {
"version": "1.2.0",
"resolved": "http://10.8.30.22:7000/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"dev": true
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"decompress-response": {
"version": "3.3.0",
@ -1225,6 +1224,11 @@
}
}
},
"dijkstrajs": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha1-LkjA07glRir+datK1egpyOzjYlc="
},
"dottie": {
"version": "2.0.2",
"resolved": "http://10.8.30.22:7000/dottie/-/dottie-2.0.2.tgz",
@ -1261,6 +1265,11 @@
"integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=",
"dev": true
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "http://10.8.30.22:7000/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/encodeurl/-/encodeurl-1.0.2.tgz",
@ -1758,8 +1767,7 @@
"get-caller-file": {
"version": "2.0.5",
"resolved": "http://10.8.30.22:7000/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=",
"dev": true
"integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34="
},
"get-intrinsic": {
"version": "1.1.3",
@ -3254,6 +3262,11 @@
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"optional": true
},
"nanoid": {
"version": "2.1.11",
"resolved": "http://10.8.30.22:7000/nanoid/-/nanoid-2.1.11.tgz",
"integrity": "sha1-7CS4p1jVkVYVMbQXagHjq08PAoA="
},
"napi-build-utils": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
@ -3497,7 +3510,6 @@
"version": "2.3.0",
"resolved": "http://10.8.30.22:7000/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
"dev": true,
"requires": {
"p-try": "^2.0.0"
}
@ -3514,8 +3526,7 @@
"p-try": {
"version": "2.2.0",
"resolved": "http://10.8.30.22:7000/p-try/-/p-try-2.2.0.tgz",
"integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
"dev": true
"integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY="
},
"pac-proxy-agent": {
"version": "5.0.0",
@ -3720,6 +3731,11 @@
"resolved": "http://10.8.30.22:7000/platform/-/platform-1.3.6.tgz",
"integrity": "sha1-SLTOmDFksgnC1FoQetsx9HOm56c="
},
"pngjs": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha1-553SshV2f9nARWHAEjbflgvOf7s="
},
"postgres-array": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/postgres-array/-/postgres-array-2.0.0.tgz",
@ -3866,6 +3882,155 @@
"urllib": "^2.34.1"
}
},
"qrcode": {
"version": "1.5.1",
"resolved": "http://10.8.30.22:7000/qrcode/-/qrcode-1.5.1.tgz",
"integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "http://10.8.30.22:7000/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "http://10.8.30.22:7000/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"requires": {
"color-convert": "^2.0.1"
}
},
"camelcase": {
"version": "5.3.1",
"resolved": "http://10.8.30.22:7000/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"cliui": {
"version": "6.0.0",
"resolved": "http://10.8.30.22:7000/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "http://10.8.30.22:7000/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "http://10.8.30.22:7000/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "http://10.8.30.22:7000/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
},
"find-up": {
"version": "4.1.0",
"resolved": "http://10.8.30.22:7000/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
"requires": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
}
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "http://10.8.30.22:7000/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"locate-path": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
"requires": {
"p-locate": "^4.1.0"
}
},
"p-locate": {
"version": "4.1.0",
"resolved": "http://10.8.30.22:7000/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
"requires": {
"p-limit": "^2.2.0"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM="
},
"string-width": {
"version": "4.2.3",
"resolved": "http://10.8.30.22:7000/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "http://10.8.30.22:7000/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "http://10.8.30.22:7000/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"yargs": {
"version": "15.4.1",
"resolved": "http://10.8.30.22:7000/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"requires": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
}
},
"yargs-parser": {
"version": "18.1.3",
"resolved": "http://10.8.30.22:7000/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"qs": {
"version": "6.11.0",
"resolved": "http://10.8.30.22:7000/qs/-/qs-6.11.0.tgz",
@ -4030,14 +4195,12 @@
"require-directory": {
"version": "2.1.1",
"resolved": "http://10.8.30.22:7000/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"dev": true
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=",
"dev": true
"integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs="
},
"resolve-path": {
"version": "1.4.0",
@ -4208,6 +4371,14 @@
"resolved": "http://10.8.30.22:7000/shimmer/-/shimmer-1.2.1.tgz",
"integrity": "sha1-YQhZ994ye1h+/r9QH7QxF/mv8zc="
},
"shortid": {
"version": "2.2.16",
"resolved": "http://10.8.30.22:7000/shortid/-/shortid-2.2.16.tgz",
"integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
"requires": {
"nanoid": "^2.1.0"
}
},
"side-channel": {
"version": "1.0.4",
"resolved": "http://10.8.30.22:7000/side-channel/-/side-channel-1.0.4.tgz",
@ -5087,8 +5258,7 @@
"which-module": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"which-pm-runs": {
"version": "1.1.0",
@ -5235,8 +5405,7 @@
"y18n": {
"version": "4.0.3",
"resolved": "http://10.8.30.22:7000/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8=",
"dev": true
"integrity": "sha1-tfJZyCzW4zaSHv17/Yv1YN6e7t8="
},
"yallist": {
"version": "3.1.1",

3
api/package.json

@ -33,9 +33,12 @@
"path": "^0.12.7",
"path-to-regexp": "^3.0.0",
"pg": "^7.9.0",
"qrcode": "^1.5.1",
"qs": "^6.11.0",
"redis": "^3.1.2",
"request": "^2.88.2",
"rimraf": "^2.6.3",
"shortid": "^2.2.16",
"superagent": "^3.5.2",
"uuid": "^3.3.2"
},

27
script/1.0.0/schema/2.create.project.sql

@ -0,0 +1,27 @@
create table project
(
id serial not null
constraint peoject_pk
primary key,
name varchar(255),
type varchar(255),
longitude integer,
latitude integer,
describe varchar(255),
user_id integer,
img character varying[],
qr_code varchar(255)
);
create table point
(
id serial not null
constraint point_pk
primary key,
name varchar(255),
longitude integer,
latitude integer,
describe varchar(255),
qr_code varchar(255),
project_id integer
);

59
web/client/src/sections/projectRegime/actions/projectSituation.js

@ -3,16 +3,6 @@
import { basicAction } from '@peace/utils'
import { ApiTable } from '$utils'
export function getFirmList () {
return dispatch => basicAction({
type: 'get',
dispatch: dispatch,
actionType: 'GET_FIRM_LIST',
url: `${ApiTable.getFirmList}`,
msg: { error: '获取公司列表失败' },
reducer: { name: '' }
});
}
export function getProjectList (query) {
return (dispatch) => basicAction({
@ -21,45 +11,68 @@ export function getProjectList (query) {
dispatch,
actionType: 'GET_PROJEECT_LIST',
url: ApiTable.getProjectList,
msg: { error: '获取工程列表失败', },
msg: { error: '获取结构物列表失败', },
});
}
export function postAddProject (data, decide) {
export function postAddProject (data) {
return (dispatch) => basicAction({
type: 'post',
data,
dispatch,
actionType: 'POST_ADD_PROJECT',
url: ApiTable.postAddProject,
msg: { option: decide ? '编辑工程' : '新增工程', },
msg: { option: data?.id ? '编辑结构物' : '新增结构物', },
});
}
export function deleteCoordinate (id) {
export function delProject (id) {
return (dispatch) => basicAction({
type: 'del',
dispatch,
actionType: 'DELETE_COORDINATE_REPORT',
url: ApiTable.delCoordinate.replace('{id}', id),
actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace('{id}', id),
msg: {
option: '删除协调申请',
option: '删除结构物',
},
});
}
export function delProject (id) {
export function addPosition (data, point) {
return (dispatch) => basicAction({
type: 'post',
data,
dispatch,
actionType: 'ADD_POSITION',
url: ApiTable.position,
msg: { option: point ? '二维码生成' : data?.id ? '编辑点位' : '新增点位', },
});
}
export function positionList (query) {
return (dispatch) => basicAction({
type: 'get',
query,
dispatch,
actionType: 'POSITION_LIST',
url: ApiTable.position,
msg: { error: '获取点位列表失败', },
});
}
export function delPosition (id) {
return (dispatch) => basicAction({
type: 'del',
dispatch,
actionType: 'DEL_PROJECT',
url: ApiTable.delProject.replace('{id}', id),
actionType: 'DEL_POSITION',
url: ApiTable.delPosition.replace('{id}', id),
msg: {
option: '删除工程概况',
option: '删除点位',
},
});
}

32
web/client/src/sections/projectRegime/components/projectAddModel.js

@ -26,17 +26,11 @@ const ProjectAddModel = ({ dispatch, actions, user, modelData, close, success, f
form.validateFields().then(v => {
dispatch(projectRegime.postAddProject({
...v,
id: modelData?.id,
scale: { scale: v.scale, scaleSuffix: v.scaleSuffix },
amount: { amount: v.amount, amountSuffix: v.amountSuffix },
img: v.img ? v.img.map(u => u.storageUrl) : [],
createTime: moment().format("YYYY-MM-DD HH:mm:ss"),
startTime: moment(v.time[0]).format("YYYY-MM-DD HH:mm:ss"),
endTime: moment(v.time[1]).format("YYYY-MM-DD HH:mm:ss"),
}, modelData?.id)).then(res => {
id: modelData?.id
})).then(res => {
if (res.success) {
success()
dispatch(getUserSiteList());//获取工地列表
}
})
})
@ -55,17 +49,20 @@ const ProjectAddModel = ({ dispatch, actions, user, modelData, close, success, f
return {
storageUrl: s
}
})
}),
describe: modelData?.describe,
}}
>
<Form.Item label='结构物名称' name="name" style={{}}
initialValue={modelData?.name}
rules={[{ required: true, message: '请输入结构物名称' },]}>
rules={[{ required: true, message: '请输入结构物名称' },]}
>
<Input placeholder="请输入结构物名称" allowClear />
</Form.Item>
<Form.Item label='结构物类型' name="type" style={{}}
initialValue={modelData?.type || '桥梁'}
rules={[{ required: true, message: '请选择结构物类型' },]}>
// rules={[{ required: true, message: '请选择结构物类型' },]}
>
<Select allowClear
options={[
{ value: '桥梁', label: '桥梁' },
@ -73,22 +70,27 @@ const ProjectAddModel = ({ dispatch, actions, user, modelData, close, success, f
{ value: '管廊', label: '管廊' }]} />
</Form.Item>
<div style={{}}>
<Form.Item label="所在地区:" labelCol={{ span: 11 }} labelAlign='right' name="longitude" initialValue={modelData?.longitude} style={{ display: 'inline-block', width: 'calc(60% - 30px)', }} rules={[{ required: true, message: '请输入横坐标', },]} >
{/* /^\d+$|^\d*\.\d+$/g */}
<Form.Item label="所在地区:" labelCol={{ span: 11 }} labelAlign='right' name="longitude" initialValue={modelData?.longitude} style={{ display: 'inline-block', width: 'calc(60% - 30px)', }}
// rules={[{ required: true, message: '请输入横坐标', },]}
>
<Input placeholder="经度支持数字" />
</Form.Item>
~
<Form.Item name="latitude" initialValue={modelData?.latitude} style={{ display: 'inline-block', width: 'calc(40% + 15px)', }} rules={[{ required: true, message: '请输入纵坐标', },]} >
<Form.Item name="latitude" initialValue={modelData?.latitude} style={{ display: 'inline-block', width: 'calc(40% + 15px)', }}
// rules={[{ required: true, message: '请输入纵坐标', },]}
>
<Input placeholder="维度支持数字" />
</Form.Item>
</div>
<Form.Item name='描述' label="Introduction">
<Form.Item name='describe' label="描述">
<TextArea />
</Form.Item>
<Form.Item
label="结构物图片"
name='img'
help={<div style={{ fontSize: 12 }}>说明请上传pngjpg格式图片图片大小不超过5M建议图片宽高比16:9</div>}
rules={[{ required: true, message: '请上传图片', },]}
// rules={[{ required: true, message: '请上传图片', },]}
>
<Uploads
// className='upload'

3
web/client/src/sections/projectRegime/containers/index.js

@ -3,6 +3,7 @@
import QrCode from './qrCode'
import Information from './information'
import Point from './point'
export { QrCode, Information };
export { QrCode, Information, Point };

137
web/client/src/sections/projectRegime/containers/information.js

@ -3,9 +3,11 @@ import { connect } from 'react-redux';
import { Spin, Card, Form, Input, Select, Button, Table, Modal, Popconfirm, Tooltip } from 'antd';
import moment from "moment";
import '../style.less';
import { push } from 'react-router-redux';
import ProjectAddModel from '../components/projectAddModel'
import { Model } from 'echarts';
const Information = (props) => {
const { dispatch, actions, user, loading } = props
const { projectRegime } = actions
@ -19,31 +21,19 @@ const Information = (props) => {
const [isPicture, setIsPicture] = useState(false)
const [pictureUrl, setPictureUrl] = useState()
const [companyID, setCompanyId] = useState('')
const [select, setSelect] = useState([])
const [selec, setSelec] = useState()
var QRCode = require('qrcode')
useEffect(() => {
dispatch(projectRegime.getFirmList()).then(res => {
if (res.success) {
let data = res.payload.data?.map(r => ({ value: r.id, label: r.name }))
if (user?.role?.type == 1) {
setFirmList(data)
projectList(query)
} else if (user?.role?.type == 2) {
let dataId = user?.userDepartments[0]?.department?.company?.id
setFirmList(data?.filter(v => v.value == dataId))
projectList({ ...query, companyId: dataId })
setSearch({ companyId: dataId })
setCompanyId(dataId)
}
}
})
projectList(query)
}, [])
const projectList = (obj) => {
const { limit, page, companyId, name, type } = obj
dispatch(projectRegime.getProjectList({ limit, page, companyId, name, type })).then(res => {
const { limit, page, name } = obj
dispatch(projectRegime.getProjectList({ limit, page, name, })).then(res => {
// console.log(res)
if (res.success) {
settableList(res.payload.data?.rows?.map(v => ({ ...v, key: v.id })))
@ -52,6 +42,26 @@ const Information = (props) => {
})
}
const createQrCode = (name) => {
let url = ''
QRCode.toDataURL(name, {
errorCorrectionLevel: 'low',
type: 'image/png',
quality: 0.3,
margin: 2,
maskPattern: 9,
width: 400,
color: {
dark: "#000000ff",
light: "#ffffffff"
}
}, function (err, v) {
url = v
})
return url
}
const columns = [
{
title: '序号',
@ -66,16 +76,19 @@ const Information = (props) => {
title: '所在地区',
dataIndex: 'type',
key: 'type',
render: (text, record, index) => {
return record.longitude && record.latitude ? <div style={{ width: 100 }}>{record.longitude},{record.latitude}</div> : "--"
}
}, {
title: '结构物类型',
dataIndex: 'scale',
key: 'scale',
render: (text, record, index) => record?.scale?.scale + record?.scale?.scaleSuffix
dataIndex: 'type',
key: 'type',
render: (text, record, index) => record.type || '--'
}, {
title: '描述',
dataIndex: 'amount',
key: 'amount',
render: (text, record, index) => record?.amount?.amount + record?.amount?.amountSuffix
dataIndex: 'describe',
key: 'describe',
render: (text, record, index) => record.describe || '--'
}, {
title: '操作',
dataIndex: 'operation',
@ -83,45 +96,35 @@ const Information = (props) => {
render: (text, record, index) => {
return (
<div style={{ width: 180 }}>
{(user?.isSuper || user.id == record.userId) ?
<>
<Button type="link" onClick={() => {
setAddModel(true)
setModelData(record)
}}
>编辑</Button>
<Popconfirm
title='确认删除工程信息?'
position='topLeft'
onConfirm={() => {
dispatch(projectRegime.delProject(record.id)).then(res => {
if (res.success) {
if ((limits > 11 && tableList.length > 1) || limits < 11) {
projectList({ ...query, ...search })
} else {
projectList({ limit: query?.limit, page: query?.page - 1, ...search })
setQuery({ limit: query?.limit, page: query?.page - 1 });
}
}
})
}}
>
<Button type="link" danger >删除</Button>
</Popconfirm>
<Button type="link" onClick={() => {
setAddModel(true)
setModelData(record)
}}
</>
: <>
<Tooltip title='请联系工程创建者'>
<Button type="link" >编辑</Button>
</Tooltip>
<Tooltip title='请联系工程创建者'>
<Button type="link" danger >删除</Button>
</Tooltip>
</>
}
>编辑</Button>
<Popconfirm
title='确认删除工程信息?'
position='topLeft'
onConfirm={() => {
dispatch(projectRegime.delProject(record.id)).then(res => {
if (res.success) {
if ((limits > 11 && tableList.length > 1) || limits < 11) {
projectList({ ...query, ...search })
} else {
projectList({ limit: query?.limit, page: query?.page - 1, ...search })
setQuery({ limit: query?.limit, page: query?.page - 1 });
}
}
})
}}
>
<Button type="link" danger >删除</Button>
</Popconfirm>
{/* <Button type="link" danger >二维码生成</Button> */}
<Button type="link" onClick={() => {
dispatch(push(`/projectRegime/information/${record.id}`));
}} >点位</Button>
</div>
)
}
@ -130,6 +133,7 @@ const Information = (props) => {
return (
<>
<img src={selec} />
<div style={{ display: 'flex', justifyContent: 'space-between', padding: '0 10px' }}>
<Form
style={{ display: 'flex', }}
@ -157,10 +161,10 @@ const Information = (props) => {
console.log(45513);
setAddModel(true)
}}>新建结构物</Button>
<Button type="primary" style={{ marginLeft: 20 }} onClick={() => {
{/* <Button type="primary" style={{ marginLeft: 20 }} onClick={() => {
console.log(45513);
setAddModel(true)
}}>一键生成二维码</Button>
}}>一键生成二维码</Button> */}
</div>
</div>
@ -181,6 +185,13 @@ const Information = (props) => {
projectList({ limit: pageSize, page: page - 1, ...search, companyId: companyID || search?.companyId })
}
}}
rowSelection={{
selectedRowKeys: select || [],
onChange: (selectedRowKeys, selectedRows) => {
setSelect(selectedRowKeys)
console.log(selectedRowKeys, selectedRows);
}
}}
/>
{
<Modal

285
web/client/src/sections/projectRegime/containers/point.js

@ -0,0 +1,285 @@
import React, { useEffect, useState } from 'react';
import { connect } from 'react-redux';
import { Spin, Card, Form, Input, Select, Button, Table, Modal, Popconfirm, Tooltip } from 'antd';
const { TextArea } = Input;
import moment from "moment";
import '../style.less';
import { push } from 'react-router-redux';
import ProjectAddModel from '../components/projectAddModel'
import { Model } from 'echarts';
const Information = (props) => {
const { dispatch, actions, user, loading } = props
const { projectRegime } = actions
const [firmList, setFirmList] = useState([])
const [tableList, settableList] = useState([])
const [addModel, setAddModel] = useState(false)
const [modelData, setModelData] = useState({})
const [query, setQuery] = useState({ limit: 10, page: 0 })
const [limits, setLimits] = useState()
const [search, setSearch] = useState({})
const [isPicture, setIsPicture] = useState(false)
const [pictureUrl, setPictureUrl] = useState()
const [companyID, setCompanyId] = useState('')
const [select, setSelect] = useState([])
const [selec, setSelec] = useState()
const [form] = Form.useForm();
var QRCode = require('qrcode')
useEffect(() => {
console.log(props?.match?.params?.id);
projectList(query)
}, [])
const projectList = (obj) => {
const { limit, page } = obj
dispatch(projectRegime.positionList({ limit, page, projectId: props?.match?.params?.id })).then(res => {
// console.log(res)
if (res.success) {
let data = []
res.payload.data?.rows?.map(v => {
v.points?.map(r => {
data?.push(r)
})
})
settableList(data?.map(v => ({ ...v, key: v.id })))
setLimits(res.payload.data?.count)
}
})
}
const createQrCode = (name) => {
let url = ''
QRCode.toDataURL(name, {
errorCorrectionLevel: 'low',
type: 'image/png',
quality: 0.3,
margin: 2,
maskPattern: 9,
width: 400,
color: {
dark: "#000000ff",
light: "#ffffffff"
}
}, function (err, v) {
url = v
})
return url
}
const columns = [
{
title: '序号',
dataIndex: 'index',
key: 'index',
render: (text, record, index) => index + 1
}, {
title: '点位名称',
dataIndex: 'name',
key: 'name',
}, {
title: '所在地区',
dataIndex: 'position',
key: 'position',
render: (text, record, index) => {
return record.longitude && record.latitude ? <div style={{ width: 100 }}>{record.longitude},{record.latitude}</div> : "--"
}
}, {
title: '描述',
dataIndex: 'describe',
key: 'describe',
render: (text, record, index) => record.describe || '--'
}, {
title: '操作',
dataIndex: 'operation',
key: 'operation',
render: (text, record, index) => {
return (
<div style={{ width: 224 }}>
<Button type="link" onClick={() => {
setAddModel(true)
setModelData(record)
console.log(record);
}}
>编辑</Button>
<Popconfirm
title='确认删除工程信息?'
position='topLeft'
onConfirm={() => {
dispatch(projectRegime.delPosition(record.id)).then(res => {
if (res.success) {
if ((limits > 11 && tableList.length > 1) || limits < 11) {
projectList({ ...query, ...search })
} else {
projectList({ limit: query?.limit, page: query?.page - 1, ...search })
setQuery({ limit: query?.limit, page: query?.page - 1 });
}
}
})
}}
>
<Button type="link" danger >删除</Button>
</Popconfirm>
{/* <Button type="link" danger >二维码生成</Button> */}
<Button type="link" onClick={() => {
let url = createQrCode(record.name + record.id)
console.log(url);
dispatch(projectRegime.addPosition({
qrCode: url,
id: record.id,
}, true)).then(res => {
if (res.success) {
setQuery({ limit: 10, page: 0 });
projectList({ limit: 10, page: 0 })
}
})
}} >二维码生成</Button>
</div>
)
}
}
]
return (
<>
<img src={selec} />
<div style={{ display: 'flex', marginBottom: 10 }}>
<Button type="primary" onClick={() => {
setAddModel(true)
}}>新建点位</Button>
<Button type="primary" style={{ marginLeft: 20 }} onClick={() => {
select?.map(v => {
let url = createQrCode(v.name + v.id)
console.log(url);
dispatch(projectRegime.addPosition({
qrCode: url,
id: v.id,
}, true))
})
}}>一键生成二维码</Button>
</div>
<Table
columns={columns}
dataSource={tableList}
pagination={{
current: query.page + 1,
total: limits,
showSizeChanger: true,
showQuickJumper: true,
pageSizeOptions: [10, 20, 50],
showTotal: (total) => {
return <span style={{ fontSize: 15 }}>{`${Math.ceil(total / query?.limit)}页,${total}`}</span>
},
onChange: (page, pageSize) => {
setQuery({ limit: pageSize, page: page - 1 });
projectList({ limit: pageSize, page: page - 1, ...search, companyId: companyID || search?.companyId })
}
}}
rowSelection={{
selectedRowKeys: select?.map(v => v.id) || [],
onChange: (selectedRowKeys, selectedRows) => {
setSelect(selectedRows)
console.log(selectedRows);
}
}}
/>
{
<Modal
title={modelData.id ? '编辑点位' : '新增点位'}
width={570}
open={addModel}
onOk={() => {
form.validateFields().then(r => {
dispatch(projectRegime.addPosition({
...r,
id: modelData?.id,
projectId: props?.match?.params?.id
})).then(res => {
if (res.success) {
setAddModel(false)
setModelData({})
setQuery({ limit: 10, page: 0 });
projectList({ limit: 10, page: 0 })
}
})
})
}}
onCancel={() => {
setAddModel(false)
setModelData({})
}}
>
<Form
style={{}}
form={form}
labelAlign='right'
labelCol={{ span: 6 }} wrapperCol={{ span: 18 }}
onFinish={r => {
}}
>
<Form.Item label='点位名称' name="name" style={{}}
initialValue={modelData?.name}
rules={[{ required: true, message: '请输入点位名称' },]}
>
<Input placeholder="请输入点位名称" allowClear />
</Form.Item>
<div style={{}}>
{/* /^\d+$|^\d*\.\d+$/g */}
<Form.Item label="所在地区:" labelCol={{ span: 11 }} labelAlign='right' name="longitude" initialValue={modelData?.longitude} style={{ display: 'inline-block', width: 'calc(60% - 30px)', }}
rules={[{ required: true, message: '请输入横坐标', },]}
>
<Input placeholder="经度支持数字" />
</Form.Item>
~
<Form.Item name="latitude" initialValue={modelData?.latitude} style={{ display: 'inline-block', width: 'calc(40% + 15px)', }}
rules={[{ required: true, message: '请输入纵坐标', },]}
>
<Input placeholder="维度支持数字" />
</Form.Item>
</div>
<Form.Item name='describe' label="描述"
initialValue={modelData?.describe}
rules={[{ required: true, message: '请输入描述内容', },]}>
<TextArea />
</Form.Item>
</Form>
</Modal>
}
{/* {
addModel ?
<ProjectAddModel
firmList={firmList}
modelData={modelData}
close={() => {
setAddModel(false)
setModelData({})
}}
success={() => {
}}
/> : ""
} */}
</>
)
}
function mapStateToProps (state) {
const { auth, global } = state;
return {
user: auth.user,
actions: global.actions,
};
}
export default connect(mapStateToProps)(Information);

16
web/client/src/sections/projectRegime/nav-item.js

@ -6,13 +6,13 @@ import { SettingOutlined } from '@ant-design/icons';
const SubMenu = Menu.SubMenu;
export function getNavItem (user, dispatch) {
return <SubMenu key="projectRegime" icon={<SettingOutlined />} title={'结构物管理'}>
<Menu.Item key="information">
<Link to="/projectRegime/information">结构物基础信息管理</Link>
</Menu.Item>
<Menu.Item key="qrCode">
<Link to="/projectRegime/qrCode">结构物基础信息管理</Link>
</Menu.Item>
</SubMenu>
return <SubMenu key="projectRegime" icon={<SettingOutlined />} title={'结构物管理'}>
<Menu.Item key="information">
<Link to="/projectRegime/information">结构物基础信息管理</Link>
</Menu.Item>
<Menu.Item key="qrCode">
<Link to="/projectRegime/qrCode">二维码管理</Link>
</Menu.Item>
</SubMenu>
}

13
web/client/src/sections/projectRegime/routes.js

@ -1,5 +1,5 @@
'use strict';
import { Information,QrCode } from './containers';
import { Information, QrCode, Point } from './containers';
export default [{
type: 'inner',
@ -11,13 +11,20 @@ export default [{
childRoutes: [{
path: '/information',
key: 'information',
component: Information,
breadcrumb: '结构物基础信息管理',
component: Information,
childRoutes: [ {
path: '/:id',
key: ':id',
component: Point,
breadcrumb: '点位',
},
]
}, {
path: '/qrCode',
key: 'qrCode',
component: QrCode,
breadcrumb: '结构物二维码管理',
breadcrumb: '二维码管理',
},
]
}

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

@ -72,19 +72,22 @@ export const ApiTable = {
getDealTodoList: 'user/deal/list',
addDealTodo: 'user/deal',
//工程概况
getFirmList: 'firmList',
//结构物
getProjectList: 'projectList',
postAddProject: 'addProject',
delProject: 'delProject/{id}',
//点位
position: 'position',
delPosition: 'delPosition/{id}',
//视频接入配置
siteList: 'siteList',
addCamera: 'camera',
delCamera:'camera/{id}',
delCamera: 'camera/{id}',
//项目状态配置
editProjectStatus: 'project/status',
//项目状态配置
editProjectStatus: 'project/status',
};
export const RouteTable = {

300
web/log/development.txt

@ -3871,3 +3871,303 @@
2023-01-13 10:13:14.258 - debug: [FS-LOGGER] Init.
2023-01-13 10:13:14.260 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-13 10:13:14.489 - info: [Router] Inject api: attachment/index
2023-01-13 10:52:22.547 - debug: [FS-LOGGER] Init.
2023-01-13 10:52:22.551 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-13 10:52:22.891 - info: [Router] Inject api: attachment/index
2023-01-13 14:46:51.239 - error: [FS-ERRHD]
{
message: 'Error: connect ECONNREFUSED 127.0.0.1:4900',
name: 'RequestError',
cause: {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 4900
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://127.0.0.1:4900/firmList?token=71af07e6-7e15-4c28-8d17-e36a9a716192',
headers: {
host: '127.0.0.1:4900',
connection: 'keep-alive',
'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
expires: '-1',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5900/projectRegime/information',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ECONNREFUSED 127.0.0.1:4900\n' +
' at new RequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2023-01-13 14:46:51.268 - error: [FS-ERRHD]
{
message: 'Error: connect ECONNREFUSED 127.0.0.1:4900',
name: 'RequestError',
cause: {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 4900
},
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://127.0.0.1:4900/user/site/list?token=71af07e6-7e15-4c28-8d17-e36a9a716192',
headers: {
host: '127.0.0.1:4900',
connection: 'keep-alive',
'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
expires: '-1',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'sec-ch-ua-platform': '"Windows"',
accept: '*/*',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5900/projectRegime/information',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'GET',
body: '[object Object]',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: connect ECONNREFUSED 127.0.0.1:4900\n' +
' at new RequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2023-01-13 14:50:12.796 - error: [FS-ERRHD]
{
message: 'Error: read ECONNRESET',
name: 'RequestError',
cause: { errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' },
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://127.0.0.1:4900/login',
headers: {
host: '127.0.0.1:4900',
connection: 'keep-alive',
'content-length': '45',
'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
'sec-ch-ua-platform': '"Windows"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'content-type': 'application/json',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
expires: '-1',
accept: '*/*',
origin: 'http://localhost:5900',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5900/signin',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'POST',
body: '{"username":"SuperAdmin","password":"123456"}',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: read ECONNRESET\n' +
' at new RequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2023-01-13 15:58:38.828 - debug: [FS-LOGGER] Init.
2023-01-13 15:58:38.832 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-13 15:58:42.458 - info: [Router] Inject api: attachment/index
2023-01-13 16:22:15.402 - debug: [FS-LOGGER] Init.
2023-01-13 16:22:15.405 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-13 16:22:15.732 - info: [Router] Inject api: attachment/index
2023-01-13 16:46:32.177 - info: extNames
[
'/_file-server/project/39b28156-b727-49dc-ba85-accc1b405f34/3',
'jpg'
]
2023-01-13 16:48:26.938 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]
2023-01-13 16:57:50.368 - error: [FS-ERRHD]
{
message: 'Error: read ECONNRESET',
name: 'RequestError',
cause: { errno: 'ECONNRESET', code: 'ECONNRESET', syscall: 'read' },
error: { '$ref': '$["cause"]' },
options: {
jar: false,
url: 'http://127.0.0.1:4900/addProject?token=168f38eb-5d39-459f-abd5-cfb036866e03',
headers: {
host: '127.0.0.1:4900',
connection: 'keep-alive',
'content-length': '154',
'sec-ch-ua': '"Not?A_Brand";v="8", "Chromium";v="108", "Google Chrome";v="108"',
'sec-ch-ua-platform': '"Windows"',
'sec-ch-ua-mobile': '?0',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'content-type': 'application/json',
'cache-control': 'no-cache,no-store,must-revalidate,max-age=-1,private',
'x-requested-with': 'XMLHttpRequest',
expires: '-1',
accept: '*/*',
origin: 'http://localhost:5900',
'sec-fetch-site': 'same-origin',
'sec-fetch-mode': 'cors',
'sec-fetch-dest': 'empty',
referer: 'http://localhost:5900/projectRegime/information',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'zh-CN,zh;q=0.9'
},
encoding: null,
followRedirect: true,
method: 'POST',
body: '{"name":"524254","type":"桥梁","longitude":"4254","latitude":"245254","describe":"2554245","img":["project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1.jpg"]}',
simple: false,
resolveWithFullResponse: true,
callback: [Function: RP$callback],
transform: undefined,
transform2xxOnly: false
},
response: undefined,
stack: 'RequestError: Error: read ECONNRESET\n' +
' at new RequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\errors.js:14:15)\n' +
' at Request.plumbing.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:87:29)\n' +
' at Request.RP$callback [as _callback] (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request-promise-core\\lib\\plumbing.js:46:31)\n' +
' at self.callback (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:185:22)\n' +
' at Request.emit (events.js:314:20)\n' +
' at Request.onRequestError (C:\\Users\\方式、\\Desktop\\Inspection\\web\\node_modules\\request\\request.js:877:8)\n' +
' at ClientRequest.emit (events.js:314:20)\n' +
' at Socket.socketErrorListener (_http_client.js:427:9)\n' +
' at Socket.emit (events.js:314:20)\n' +
' at emitErrorNT (internal/streams/destroy.js:92:8)\n' +
' at emitErrorAndCloseNT (internal/streams/destroy.js:60:3)\n' +
' at processTicksAndRejections (internal/process/task_queues.js:84:21)'
}
2023-01-16 08:40:50.315 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]
2023-01-16 08:43:56.134 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]
2023-01-16 08:46:59.585 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]
2023-01-16 08:51:57.763 - debug: [FS-LOGGER] Init.
2023-01-16 08:51:57.778 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 08:52:00.938 - info: [Router] Inject api: attachment/index
2023-01-16 09:56:24.746 - debug: [FS-LOGGER] Init.
2023-01-16 09:56:24.749 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 09:56:25.004 - info: [Router] Inject api: attachment/index
2023-01-16 11:17:49.114 - debug: [FS-LOGGER] Init.
2023-01-16 11:17:49.117 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 11:17:49.389 - info: [Router] Inject api: attachment/index
2023-01-16 15:36:37.113 - debug: [FS-LOGGER] Init.
2023-01-16 15:36:37.117 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 15:36:40.017 - info: [Router] Inject api: attachment/index
2023-01-16 15:48:30.272 - debug: [FS-LOGGER] Init.
2023-01-16 15:48:30.276 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 15:48:30.537 - info: [Router] Inject api: attachment/index
2023-01-16 15:59:42.124 - debug: [FS-LOGGER] Init.
2023-01-16 15:59:42.128 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 15:59:42.358 - info: [Router] Inject api: attachment/index
2023-01-16 16:08:07.054 - debug: [FS-LOGGER] Init.
2023-01-16 16:08:07.058 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 16:08:07.281 - info: [Router] Inject api: attachment/index
2023-01-16 16:13:28.418 - debug: [FS-LOGGER] Init.
2023-01-16 16:13:28.421 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 16:13:29.019 - info: [Router] Inject api: attachment/index
2023-01-16 17:59:44.331 - debug: [FS-LOGGER] Init.
2023-01-16 17:59:44.335 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 17:59:44.627 - info: [Router] Inject api: attachment/index
2023-01-16 18:55:07.929 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]
2023-01-16 19:03:18.238 - debug: [FS-LOGGER] Init.
2023-01-16 19:03:18.251 - debug: init fs.attachment and inject it into app(app.fs.attachment) and runtime ctx(ctx.fs.attachment)
2023-01-16 19:03:18.610 - info: [Router] Inject api: attachment/index
2023-01-16 19:06:49.408 - info: extNames
[
'/_file-server/project/e0bd9eaf-e4b9-4e85-aed9-77c668dbb92a/1',
'jpg'
]

524
web/package-lock.json

@ -2507,6 +2507,53 @@
"@jridgewell/sourcemap-codec": "1.4.14"
}
},
"@mapbox/node-pre-gyp": {
"version": "1.0.10",
"resolved": "http://10.8.30.22:7000/@mapbox%2fnode-pre-gyp/-/node-pre-gyp-1.0.10.tgz",
"integrity": "sha512-4ySo4CjzStuprMwk35H5pPbkymjv1SF3jGLj6rAHp/xT/RF7TL7bd9CTm1xDY49K2qF7jmR/g7k+SkLETP6opA==",
"requires": {
"detect-libc": "^2.0.0",
"https-proxy-agent": "^5.0.0",
"make-dir": "^3.1.0",
"node-fetch": "^2.6.7",
"nopt": "^5.0.0",
"npmlog": "^5.0.1",
"rimraf": "^3.0.2",
"semver": "^7.3.5",
"tar": "^6.1.11"
},
"dependencies": {
"lru-cache": {
"version": "6.0.0",
"resolved": "http://10.8.30.22:7000/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"requires": {
"yallist": "^4.0.0"
}
},
"rimraf": {
"version": "3.0.2",
"resolved": "http://10.8.30.22:7000/rimraf/-/rimraf-3.0.2.tgz",
"integrity": "sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=",
"requires": {
"glob": "^7.1.3"
}
},
"semver": {
"version": "7.3.8",
"resolved": "http://10.8.30.22:7000/semver/-/semver-7.3.8.tgz",
"integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"@peace/components": {
"version": "0.0.35",
"resolved": "http://10.8.30.22:7000/@peace%2fcomponents/-/components-0.0.35.tgz",
@ -3109,6 +3156,11 @@
"resolved": "http://10.8.30.22:7000/a-sync-waterfall/-/a-sync-waterfall-1.0.1.tgz",
"integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA=="
},
"abbrev": {
"version": "1.1.1",
"resolved": "http://10.8.30.22:7000/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg="
},
"accepts": {
"version": "1.3.8",
"resolved": "http://10.8.30.22:7000/accepts/-/accepts-1.3.8.tgz",
@ -3958,6 +4010,20 @@
}
}
},
"aproba": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/aproba/-/aproba-2.0.0.tgz",
"integrity": "sha1-UlILiuW1aSFbNU78DKo/4eRaitw="
},
"are-we-there-yet": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz",
"integrity": "sha1-Ny4Oe9J52OlMZTqqH2cgCIS/Phw=",
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^3.6.0"
}
},
"args": {
"version": "5.0.3",
"resolved": "http://10.8.30.22:7000/args/-/args-5.0.3.tgz",
@ -4608,6 +4674,16 @@
"integrity": "sha512-1MgUzEkoMO6gKfXflStpYgZDlFM7M/ck/bgfVCACO5vnAf0fXoNVHdWtqGU+MYca+4bL9Z5bpOVmR33cWW9G2A==",
"dev": true
},
"canvas": {
"version": "2.11.0",
"resolved": "http://10.8.30.22:7000/canvas/-/canvas-2.11.0.tgz",
"integrity": "sha512-bdTjFexjKJEwtIo0oRx8eD4G2yWoUOXP9lj279jmQ2zMnTQhT8C3512OKz3s+ZOaQlLbE7TuVvRDYDB3Llyy5g==",
"requires": {
"@mapbox/node-pre-gyp": "^1.0.0",
"nan": "^2.17.0",
"simple-get": "^3.0.3"
}
},
"caseless": {
"version": "0.12.0",
"resolved": "http://10.8.30.22:7000/caseless/-/caseless-0.12.0.tgz",
@ -4668,6 +4744,11 @@
"upath": "^1.1.1"
}
},
"chownr": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/chownr/-/chownr-2.0.0.tgz",
"integrity": "sha1-Fb++U9LqtM9w8YqM1o6+Wzyx3s4="
},
"chrome-trace-event": {
"version": "1.0.3",
"resolved": "http://10.8.30.22:7000/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
@ -4906,6 +4987,11 @@
"simple-swizzle": "^0.2.2"
}
},
"color-support": {
"version": "1.1.3",
"resolved": "http://10.8.30.22:7000/color-support/-/color-support-1.1.3.tgz",
"integrity": "sha1-k4NDeaHMmgxh+C9S8NBDIiUb1aI="
},
"colorette": {
"version": "2.0.19",
"resolved": "http://10.8.30.22:7000/colorette/-/colorette-2.0.19.tgz",
@ -5035,6 +5121,11 @@
"seamless-immutable": "^7.1.3"
}
},
"console-control-strings": {
"version": "1.1.0",
"resolved": "http://10.8.30.22:7000/console-control-strings/-/console-control-strings-1.1.0.tgz",
"integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
},
"content-disposition": {
"version": "0.5.4",
"resolved": "http://10.8.30.22:7000/content-disposition/-/content-disposition-0.5.4.tgz",
@ -5399,6 +5490,14 @@
"resolved": "http://10.8.30.22:7000/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
"integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ=="
},
"decompress-response": {
"version": "4.2.1",
"resolved": "http://10.8.30.22:7000/decompress-response/-/decompress-response-4.2.1.tgz",
"integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==",
"requires": {
"mimic-response": "^2.0.0"
}
},
"deep-equal": {
"version": "1.0.1",
"resolved": "http://10.8.30.22:7000/deep-equal/-/deep-equal-1.0.1.tgz",
@ -5523,6 +5622,11 @@
"resolved": "http://10.8.30.22:7000/detect-browser/-/detect-browser-5.3.0.tgz",
"integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w=="
},
"detect-libc": {
"version": "2.0.1",
"resolved": "http://10.8.30.22:7000/detect-libc/-/detect-libc-2.0.1.tgz",
"integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w=="
},
"detect-node": {
"version": "2.1.0",
"resolved": "http://10.8.30.22:7000/detect-node/-/detect-node-2.1.0.tgz",
@ -5574,6 +5678,11 @@
"utility": "^1.17.0"
}
},
"dijkstrajs": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha1-LkjA07glRir+datK1egpyOzjYlc="
},
"dnd-core": {
"version": "10.0.2",
"resolved": "http://10.8.30.22:7000/dnd-core/-/dnd-core-10.0.2.tgz",
@ -5731,6 +5840,11 @@
"integrity": "sha1-VXBmIEatKeLpFucariYKvf9Pang=",
"dev": true
},
"encode-utf8": {
"version": "1.0.3",
"resolved": "http://10.8.30.22:7000/encode-utf8/-/encode-utf8-1.0.3.tgz",
"integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="
},
"encodeurl": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/encodeurl/-/encodeurl-1.0.2.tgz",
@ -6617,6 +6731,29 @@
}
}
},
"fs-minipass": {
"version": "2.1.0",
"resolved": "http://10.8.30.22:7000/fs-minipass/-/fs-minipass-2.1.0.tgz",
"integrity": "sha1-f1A2/b8SxjwWkZDL5BmchSJx+fs=",
"requires": {
"minipass": "^3.0.0"
},
"dependencies": {
"minipass": {
"version": "3.3.6",
"resolved": "http://10.8.30.22:7000/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"requires": {
"yallist": "^4.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"fs-monkey": {
"version": "1.0.3",
"resolved": "http://10.8.30.22:7000/fs-monkey/-/fs-monkey-1.0.3.tgz",
@ -6710,6 +6847,57 @@
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true
},
"gauge": {
"version": "3.0.2",
"resolved": "http://10.8.30.22:7000/gauge/-/gauge-3.0.2.tgz",
"integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==",
"requires": {
"aproba": "^1.0.3 || ^2.0.0",
"color-support": "^1.1.2",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.1",
"object-assign": "^4.1.1",
"signal-exit": "^3.0.0",
"string-width": "^4.2.3",
"strip-ansi": "^6.0.1",
"wide-align": "^1.1.2"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "http://10.8.30.22:7000/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "http://10.8.30.22:7000/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "http://10.8.30.22:7000/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"string-width": {
"version": "4.2.3",
"resolved": "http://10.8.30.22:7000/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "http://10.8.30.22:7000/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
}
}
},
"generic-pool": {
"version": "3.5.0",
"resolved": "http://10.8.30.22:7000/generic-pool/-/generic-pool-3.5.0.tgz",
@ -7000,6 +7188,11 @@
"has-symbols": "^1.0.2"
}
},
"has-unicode": {
"version": "2.0.1",
"resolved": "http://10.8.30.22:7000/has-unicode/-/has-unicode-2.0.1.tgz",
"integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
},
"has-value": {
"version": "1.0.0",
"resolved": "http://10.8.30.22:7000/has-value/-/has-value-1.0.0.tgz",
@ -8392,7 +8585,6 @@
"version": "3.1.0",
"resolved": "http://10.8.30.22:7000/make-dir/-/make-dir-3.1.0.tgz",
"integrity": "sha1-QV6WcEazp/HRhSd9hKpYIDcmoT8=",
"dev": true,
"requires": {
"semver": "^6.0.0"
},
@ -8400,8 +8592,7 @@
"semver": {
"version": "6.3.0",
"resolved": "http://10.8.30.22:7000/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
}
}
},
@ -8583,6 +8774,11 @@
"integrity": "sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==",
"dev": true
},
"mimic-response": {
"version": "2.1.0",
"resolved": "http://10.8.30.22:7000/mimic-response/-/mimic-response-2.1.0.tgz",
"integrity": "sha1-0Tdj019hPQnsN+uzC6wEacDuj0M="
},
"min-dash": {
"version": "3.8.1",
"resolved": "http://10.8.30.22:7000/min-dash/-/min-dash-3.8.1.tgz",
@ -8623,6 +8819,45 @@
"resolved": "http://10.8.30.22:7000/minimist/-/minimist-1.2.7.tgz",
"integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g=="
},
"minipass": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/minipass/-/minipass-4.0.0.tgz",
"integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==",
"requires": {
"yallist": "^4.0.0"
},
"dependencies": {
"yallist": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"minizlib": {
"version": "2.1.2",
"resolved": "http://10.8.30.22:7000/minizlib/-/minizlib-2.1.2.tgz",
"integrity": "sha1-6Q00Zrogm5MkUVCKEc49NjIUWTE=",
"requires": {
"minipass": "^3.0.0",
"yallist": "^4.0.0"
},
"dependencies": {
"minipass": {
"version": "3.3.6",
"resolved": "http://10.8.30.22:7000/minipass/-/minipass-3.3.6.tgz",
"integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==",
"requires": {
"yallist": "^4.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"mixin-deep": {
"version": "1.3.2",
"resolved": "http://10.8.30.22:7000/mixin-deep/-/mixin-deep-1.3.2.tgz",
@ -8776,14 +9011,12 @@
"nan": {
"version": "2.17.0",
"resolved": "http://10.8.30.22:7000/nan/-/nan-2.17.0.tgz",
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
"optional": true
"integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ=="
},
"nanoid": {
"version": "2.1.11",
"resolved": "http://10.8.30.22:7000/nanoid/-/nanoid-2.1.11.tgz",
"integrity": "sha1-7CS4p1jVkVYVMbQXagHjq08PAoA=",
"dev": true
"integrity": "sha1-7CS4p1jVkVYVMbQXagHjq08PAoA="
},
"nanomatch": {
"version": "1.2.13",
@ -8875,6 +9108,14 @@
"tslib": "^2.0.3"
}
},
"node-fetch": {
"version": "2.6.8",
"resolved": "http://10.8.30.22:7000/node-fetch/-/node-fetch-2.6.8.tgz",
"integrity": "sha512-RZ6dBYuj8dRSfxpUSu+NsdF1dpPpluJxwOp+6IoDp/sH2QNDSvurYsAa+F1WxY2RjA1iP93xhcsUoYbF2XBqVg==",
"requires": {
"whatwg-url": "^5.0.0"
}
},
"node-forge": {
"version": "0.10.0",
"resolved": "http://10.8.30.22:7000/node-forge/-/node-forge-0.10.0.tgz",
@ -8886,6 +9127,14 @@
"integrity": "sha512-EJ3rzxL9pTWPjk5arA0s0dgXpnyiAbJDE6wHT62g7VsgrgQgmmZ+Ru++M1BFofncWja+Pnn3rEr3fieRySAdKQ==",
"dev": true
},
"nopt": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/nopt/-/nopt-5.0.0.tgz",
"integrity": "sha1-UwlCu1ilEvzK/lP+IQ8TolNV3Ig=",
"requires": {
"abbrev": "1"
}
},
"normalize-path": {
"version": "3.0.0",
"resolved": "http://10.8.30.22:7000/normalize-path/-/normalize-path-3.0.0.tgz",
@ -10736,6 +10985,17 @@
}
}
},
"npmlog": {
"version": "5.0.1",
"resolved": "http://10.8.30.22:7000/npmlog/-/npmlog-5.0.1.tgz",
"integrity": "sha1-8GZ46A4pQZrWerlk4PpplZweuLA=",
"requires": {
"are-we-there-yet": "^2.0.0",
"console-control-strings": "^1.1.0",
"gauge": "^3.0.0",
"set-blocking": "^2.0.0"
}
},
"nprogress": {
"version": "0.2.0",
"resolved": "http://10.8.30.22:7000/nprogress/-/nprogress-0.2.0.tgz",
@ -11086,6 +11346,16 @@
"resolved": "http://10.8.30.22:7000/passthrough-counter/-/passthrough-counter-1.0.0.tgz",
"integrity": "sha1-GWfZ5m2lcrXAI8eH2xEqOHqxZvo="
},
"path": {
"version": "0.12.7",
"resolved": "http://10.8.30.22:7000/path/-/path-0.12.7.tgz",
"integrity": "sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8=",
"dev": true,
"requires": {
"process": "^0.11.1",
"util": "^0.10.3"
}
},
"path-dirname": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/path-dirname/-/path-dirname-1.0.2.tgz",
@ -11258,6 +11528,11 @@
"resolved": "http://10.8.30.22:7000/platform/-/platform-1.3.6.tgz",
"integrity": "sha1-SLTOmDFksgnC1FoQetsx9HOm56c="
},
"pngjs": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/pngjs/-/pngjs-5.0.0.tgz",
"integrity": "sha1-553SshV2f9nARWHAEjbflgvOf7s="
},
"portfinder": {
"version": "1.0.32",
"resolved": "http://10.8.30.22:7000/portfinder/-/portfinder-1.0.32.tgz",
@ -11411,6 +11686,12 @@
"@probe.gl/stats": "3.5.2"
}
},
"process": {
"version": "0.11.10",
"resolved": "http://10.8.30.22:7000/process/-/process-0.11.10.tgz",
"integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
"dev": true
},
"process-nextick-args": {
"version": "2.0.1",
"resolved": "http://10.8.30.22:7000/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@ -11497,6 +11778,150 @@
"urllib": "^2.34.1"
}
},
"qrcode": {
"version": "1.5.1",
"resolved": "http://10.8.30.22:7000/qrcode/-/qrcode-1.5.1.tgz",
"integrity": "sha512-nS8NJ1Z3md8uTjKtP+SGGhfqmTCs5flU/xR623oI0JX+Wepz9R8UrRVCTBTJm3qGw3rH6jJ6MUHjkDx15cxSSg==",
"requires": {
"dijkstrajs": "^1.0.1",
"encode-utf8": "^1.0.3",
"pngjs": "^5.0.0",
"yargs": "^15.3.1"
},
"dependencies": {
"ansi-regex": {
"version": "5.0.1",
"resolved": "http://10.8.30.22:7000/ansi-regex/-/ansi-regex-5.0.1.tgz",
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
},
"ansi-styles": {
"version": "4.3.0",
"resolved": "http://10.8.30.22:7000/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha1-7dgDYornHATIWuegkG7a00tkiTc=",
"requires": {
"color-convert": "^2.0.1"
}
},
"cliui": {
"version": "6.0.0",
"resolved": "http://10.8.30.22:7000/cliui/-/cliui-6.0.0.tgz",
"integrity": "sha1-UR1wLAxOQcoVbX0OlgIfI+EyJbE=",
"requires": {
"string-width": "^4.2.0",
"strip-ansi": "^6.0.0",
"wrap-ansi": "^6.2.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "http://10.8.30.22:7000/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "http://10.8.30.22:7000/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha1-wqCah6y95pVD3m9j+jmVyCbFNqI="
},
"emoji-regex": {
"version": "8.0.0",
"resolved": "http://10.8.30.22:7000/emoji-regex/-/emoji-regex-8.0.0.tgz",
"integrity": "sha1-6Bj9ac5cz8tARZT4QpY79TFkzDc="
},
"find-up": {
"version": "4.1.0",
"resolved": "http://10.8.30.22:7000/find-up/-/find-up-4.1.0.tgz",
"integrity": "sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=",
"requires": {
"locate-path": "^5.0.0",
"path-exists": "^4.0.0"
}
},
"is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "http://10.8.30.22:7000/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
},
"locate-path": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/locate-path/-/locate-path-5.0.0.tgz",
"integrity": "sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=",
"requires": {
"p-locate": "^4.1.0"
}
},
"p-locate": {
"version": "4.1.0",
"resolved": "http://10.8.30.22:7000/p-locate/-/p-locate-4.1.0.tgz",
"integrity": "sha1-o0KLtwiLOmApL2aRkni3wpetTwc=",
"requires": {
"p-limit": "^2.2.0"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/path-exists/-/path-exists-4.0.0.tgz",
"integrity": "sha1-UTvb4tO5XXdi6METfvoZXGxhtbM="
},
"string-width": {
"version": "4.2.3",
"resolved": "http://10.8.30.22:7000/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"requires": {
"emoji-regex": "^8.0.0",
"is-fullwidth-code-point": "^3.0.0",
"strip-ansi": "^6.0.1"
}
},
"strip-ansi": {
"version": "6.0.1",
"resolved": "http://10.8.30.22:7000/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"requires": {
"ansi-regex": "^5.0.1"
}
},
"wrap-ansi": {
"version": "6.2.0",
"resolved": "http://10.8.30.22:7000/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
"integrity": "sha1-6Tk7oHEC5skaOyIUePAlfNKFblM=",
"requires": {
"ansi-styles": "^4.0.0",
"string-width": "^4.1.0",
"strip-ansi": "^6.0.0"
}
},
"yargs": {
"version": "15.4.1",
"resolved": "http://10.8.30.22:7000/yargs/-/yargs-15.4.1.tgz",
"integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
"requires": {
"cliui": "^6.0.0",
"decamelize": "^1.2.0",
"find-up": "^4.1.0",
"get-caller-file": "^2.0.1",
"require-directory": "^2.1.1",
"require-main-filename": "^2.0.0",
"set-blocking": "^2.0.0",
"string-width": "^4.2.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^18.1.2"
}
},
"yargs-parser": {
"version": "18.1.3",
"resolved": "http://10.8.30.22:7000/yargs-parser/-/yargs-parser-18.1.3.tgz",
"integrity": "sha1-vmjEl1xrKr9GkjawyHA2L6sJp7A=",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
}
}
},
"qs": {
"version": "6.11.0",
"resolved": "http://10.8.30.22:7000/qs/-/qs-6.11.0.tgz",
@ -12967,7 +13392,6 @@
"version": "2.2.16",
"resolved": "http://10.8.30.22:7000/shortid/-/shortid-2.2.16.tgz",
"integrity": "sha512-Ugt+GIZqvGXCIItnsL+lvFJOiN7RYqlGy7QE41O3YC1xbNSeDGIRO7xg2JJXIAj1cAGnOeC1r7/T9pgrtQbv4g==",
"dev": true,
"requires": {
"nanoid": "^2.1.0"
}
@ -12987,6 +13411,21 @@
"resolved": "http://10.8.30.22:7000/signal-exit/-/signal-exit-3.0.7.tgz",
"integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="
},
"simple-concat": {
"version": "1.0.1",
"resolved": "http://10.8.30.22:7000/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha1-9Gl2CCujXCJj8cirXt/ibEHJVS8="
},
"simple-get": {
"version": "3.1.1",
"resolved": "http://10.8.30.22:7000/simple-get/-/simple-get-3.1.1.tgz",
"integrity": "sha512-CQ5LTKGfCpvE1K0n2us+kuMPbk/q0EKl82s4aheV9oXjFEz6W/Y7oQFVJuU6QG77hRT4Ghb5RURteF5vnWjupA==",
"requires": {
"decompress-response": "^4.2.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"simple-swizzle": {
"version": "0.2.2",
"resolved": "http://10.8.30.22:7000/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@ -13676,6 +14115,31 @@
"integrity": "sha1-ofzMBrWNth/XpF2i2kT186Pme6I=",
"dev": true
},
"tar": {
"version": "6.1.13",
"resolved": "http://10.8.30.22:7000/tar/-/tar-6.1.13.tgz",
"integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==",
"requires": {
"chownr": "^2.0.0",
"fs-minipass": "^2.0.0",
"minipass": "^4.0.0",
"minizlib": "^2.1.1",
"mkdirp": "^1.0.3",
"yallist": "^4.0.0"
},
"dependencies": {
"mkdirp": {
"version": "1.0.4",
"resolved": "http://10.8.30.22:7000/mkdirp/-/mkdirp-1.0.4.tgz",
"integrity": "sha1-PrXtYmInVteaXw4qIh3+utdcL34="
},
"yallist": {
"version": "4.0.0",
"resolved": "http://10.8.30.22:7000/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
"terraformer": {
"version": "1.0.12",
"resolved": "http://10.8.30.22:7000/terraformer/-/terraformer-1.0.12.tgz",
@ -13907,6 +14371,11 @@
"punycode": "^2.1.1"
}
},
"tr46": {
"version": "0.0.3",
"resolved": "http://10.8.30.22:7000/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
},
"tslib": {
"version": "2.4.1",
"resolved": "http://10.8.30.22:7000/tslib/-/tslib-2.4.1.tgz",
@ -14193,6 +14662,23 @@
"resolved": "http://10.8.30.22:7000/use-media-antd-query/-/use-media-antd-query-1.1.0.tgz",
"integrity": "sha1-8IOtfiksHAJhtrv6rA7cPgkg2F0="
},
"util": {
"version": "0.10.4",
"resolved": "http://10.8.30.22:7000/util/-/util-0.10.4.tgz",
"integrity": "sha1-OqASW/5mikZy3liFfTrOJ+y3aQE=",
"dev": true,
"requires": {
"inherits": "2.0.3"
},
"dependencies": {
"inherits": {
"version": "2.0.3",
"resolved": "http://10.8.30.22:7000/inherits/-/inherits-2.0.3.tgz",
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
"dev": true
}
}
},
"util-deprecate": {
"version": "1.0.2",
"resolved": "http://10.8.30.22:7000/util-deprecate/-/util-deprecate-1.0.2.tgz",
@ -14296,6 +14782,11 @@
"minimalistic-assert": "^1.0.0"
}
},
"webidl-conversions": {
"version": "3.0.1",
"resolved": "http://10.8.30.22:7000/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
},
"webpack": {
"version": "5.75.0",
"resolved": "http://10.8.30.22:7000/webpack/-/webpack-5.75.0.tgz",
@ -14712,6 +15203,15 @@
"resolved": "http://10.8.30.22:7000/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
"integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg=="
},
"whatwg-url": {
"version": "5.0.0",
"resolved": "http://10.8.30.22:7000/whatwg-url/-/whatwg-url-5.0.0.tgz",
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
"requires": {
"tr46": "~0.0.3",
"webidl-conversions": "^3.0.0"
}
},
"which": {
"version": "2.0.2",
"resolved": "http://10.8.30.22:7000/which/-/which-2.0.2.tgz",
@ -14738,6 +15238,14 @@
"resolved": "http://10.8.30.22:7000/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"wide-align": {
"version": "1.1.5",
"resolved": "http://10.8.30.22:7000/wide-align/-/wide-align-1.1.5.tgz",
"integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
"requires": {
"string-width": "^1.0.2 || 2 || 3 || 4"
}
},
"wildcard": {
"version": "2.0.0",
"resolved": "http://10.8.30.22:7000/wildcard/-/wildcard-2.0.0.tgz",

4
web/package.json

@ -37,6 +37,7 @@
"less-loader": "^7.0.2",
"natty-fetch": "^2.5.3",
"nprogress": "^0.2.0",
"path": "^0.12.7",
"path-to-regexp": "^2.4.0",
"perfect-scrollbar": "^1.5.0",
"react": "^17.0.0",
@ -76,6 +77,7 @@
"array-move": "^3.0.1",
"bpmn-js": "^6.5.1",
"camunda-bpmn-moddle": "^4.4.0",
"canvas": "^2.11.0",
"co-busboy": "^1.4.1",
"cross-env": "^7.0.3",
"crypto-js": "^4.1.1",
@ -91,10 +93,12 @@
"mini-dynamic-antd-theme": "^0.5.3",
"moment": "^2.22.0",
"npm": "^7.20.6",
"qrcode": "^1.5.1",
"qs": "^6.10.1",
"react-color": "^2.19.3",
"react-router-breadcrumbs-hoc": "^4.0.1",
"react-sortable-hoc": "^2.0.0",
"shortid": "^2.2.16",
"superagent": "^6.1.0",
"uuid": "^8.3.1",
"webpack-dev-server": "^3.11.2",

Loading…
Cancel
Save