From 9fdac569071313018b0fd9d6c5b1bf79dbd09b0f Mon Sep 17 00:00:00 2001 From: "gao.zhiyuan" Date: Wed, 20 Jul 2022 20:45:40 +0800 Subject: [PATCH] =?UTF-8?q?api=20=E5=88=A0=E9=99=A4=E9=9D=9E=E5=BF=85?= =?UTF-8?q?=E8=A6=81=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/.vscode/launch.json | 2 +- api/app/lib/controllers/approval/index.js | 71 -- api/app/lib/controllers/auth/index.js | 65 +- api/app/lib/controllers/common/contants.js | 116 --- api/app/lib/controllers/common/index.js | 63 -- api/app/lib/controllers/data/road.js | 24 + api/app/lib/controllers/department/index.js | 25 - .../lib/controllers/organization/authority.js | 87 -- api/app/lib/controllers/organization/user.js | 150 +-- .../controllers/placeSecurityRecord/index.js | 612 ------------ api/app/lib/controllers/places/index.js | 91 -- api/app/lib/controllers/report/compile.js | 140 --- api/app/lib/controllers/report/config.js | 173 ---- api/app/lib/controllers/report/index.js | 87 -- api/app/lib/controllers/statistic/index.js | 342 ------- api/app/lib/controllers/wxReport/index.js | 483 --------- api/app/lib/index.js | 23 +- api/app/lib/models/department.js | 19 +- api/app/lib/models/places.js | 61 -- api/app/lib/models/post.js | 47 - api/app/lib/models/post_resource.js | 51 - api/app/lib/models/region_type.js | 34 - api/app/lib/models/report_collection.js | 88 -- api/app/lib/models/report_configition.js | 74 -- api/app/lib/models/report_countyCollect.js | 69 -- api/app/lib/models/report_downManage.js | 82 -- api/app/lib/models/report_rectify.js | 115 --- api/app/lib/models/report_type.js | 33 - api/app/lib/models/resource.js | 44 - api/app/lib/models/road.js | 913 +++++++++--------- api/app/lib/models/user.js | 54 +- .../lib/models/user_placeSecurityRecord.js | 311 ------ api/app/lib/models/user_resource.js | 61 -- api/app/lib/models/user_token.js | 75 +- api/app/lib/routes/approval/index.js | 13 - api/app/lib/routes/auth/index.js | 21 +- api/app/lib/routes/common/index.js | 9 - api/app/lib/routes/department/index.js | 13 - api/app/lib/routes/organization/authority.js | 28 - api/app/lib/routes/organization/user.js | 32 - .../lib/routes/placeSecurityRecord/index.js | 70 -- api/app/lib/routes/places/index.js | 30 - api/app/lib/routes/report/index.js | 41 - api/app/lib/routes/statistic/index.js | 28 - api/app/lib/routes/wxReport/index.js | 78 -- api/log/development.log | 8 + api/sequelize-automate.config.js | 6 +- web/client/assets/color.less | 98 +- web/client/src/themes/light.json | 2 +- web/log/development.txt | 2 + 50 files changed, 690 insertions(+), 4474 deletions(-) delete mode 100644 api/app/lib/controllers/approval/index.js delete mode 100644 api/app/lib/controllers/common/contants.js delete mode 100644 api/app/lib/controllers/common/index.js delete mode 100644 api/app/lib/controllers/department/index.js delete mode 100644 api/app/lib/controllers/organization/authority.js delete mode 100644 api/app/lib/controllers/placeSecurityRecord/index.js delete mode 100644 api/app/lib/controllers/places/index.js delete mode 100644 api/app/lib/controllers/report/compile.js delete mode 100644 api/app/lib/controllers/report/config.js delete mode 100644 api/app/lib/controllers/report/index.js delete mode 100644 api/app/lib/controllers/statistic/index.js delete mode 100644 api/app/lib/controllers/wxReport/index.js delete mode 100644 api/app/lib/models/places.js delete mode 100644 api/app/lib/models/post.js delete mode 100644 api/app/lib/models/post_resource.js delete mode 100644 api/app/lib/models/region_type.js delete mode 100644 api/app/lib/models/report_collection.js delete mode 100644 api/app/lib/models/report_configition.js delete mode 100644 api/app/lib/models/report_countyCollect.js delete mode 100644 api/app/lib/models/report_downManage.js delete mode 100644 api/app/lib/models/report_rectify.js delete mode 100644 api/app/lib/models/report_type.js delete mode 100644 api/app/lib/models/resource.js delete mode 100644 api/app/lib/models/user_placeSecurityRecord.js delete mode 100644 api/app/lib/models/user_resource.js delete mode 100644 api/app/lib/routes/approval/index.js delete mode 100644 api/app/lib/routes/common/index.js delete mode 100644 api/app/lib/routes/department/index.js delete mode 100644 api/app/lib/routes/organization/authority.js delete mode 100644 api/app/lib/routes/organization/user.js delete mode 100644 api/app/lib/routes/placeSecurityRecord/index.js delete mode 100644 api/app/lib/routes/places/index.js delete mode 100644 api/app/lib/routes/report/index.js delete mode 100644 api/app/lib/routes/statistic/index.js delete mode 100644 api/app/lib/routes/wxReport/index.js diff --git a/api/.vscode/launch.json b/api/.vscode/launch.json index b1538083..07402aac 100644 --- a/api/.vscode/launch.json +++ b/api/.vscode/launch.json @@ -15,7 +15,7 @@ "args": [ "-p 14000", "-f http://localhost:14000", - "-g postgres://postgres:123@10.8.30.32:5432/yinjiguanli", + "-g postgres://postgres:123@10.8.30.32:5432/highways4good", ] }, { diff --git a/api/app/lib/controllers/approval/index.js b/api/app/lib/controllers/approval/index.js deleted file mode 100644 index 48dc3750..00000000 --- a/api/app/lib/controllers/approval/index.js +++ /dev/null @@ -1,71 +0,0 @@ -'use strict'; - -/** - * 提交审批、驳回修改 - * body { - * action:1驳回修改 2审批通过 - * userRegionType:提交用户所属区域级别:3乡镇级,2区县级 - * userId:提交用户id - * rejectReasons:驳回意见 - * correctiveAction:采取措施。区县复核时提交内容 - * punishment:实施处罚,强制措施情况。区县复核时提交内容 - * } - */ -const moment = require('moment'); -async function submitApproval (ctx) { - try { - const data = ctx.request.body; - const models = ctx.fs.dc.models; - let oldData = await models.UserPlaceSecurityRecord.findOne({ where: { id: data.id } }) - if (oldData == null) { - ctx.status = 400; - ctx.body = { name: `message`, message: `该条填报数据不存在` }; - } else { - if ((data.action == 1 || data.action == 2) && (data.userRegionType == 3 || data.userRegionType == 2)) { - let dataSave = {} - if (data.action == 1) {//驳回 - dataSave = { - rejectManId: data.userId, - rejectReasons: data.rejectReasons, - type: false,//是否重新发起true默认false可以重新发起 - rejectTime: moment() - } - if (data.userRegionType == 2) {//区县复核,14、15项可修改 - dataSave.correctiveAction = data.correctiveAction; - dataSave.punishment = data.punishment; - } - } else {//通过 - if (data.userRegionType == 3) { - dataSave = { - audit1ManId: data.userId, - audit1ManIdTime: moment().format() - } - } else { - dataSave = {//区县复核,14、15项可修改 - correctiveAction: data.correctiveAction, - punishment: data.punishment, - audit2ManId: data.userId, - audit2ManIdTime: moment().format() - } - } - } - await models.UserPlaceSecurityRecord.update(dataSave, { where: { id: data.id } }); - ctx.status = 200; - ctx.body = { name: `message`, message: `提交成功` }; - } else { - ctx.status = 400; - ctx.body = { name: `message`, message: `提交数据有误` }; - } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": { name: `message`, message: `提交审批、驳回修改数据失败` } - } - } -} - -module.exports = { - submitApproval -}; \ No newline at end of file diff --git a/api/app/lib/controllers/auth/index.js b/api/app/lib/controllers/auth/index.js index 07f25057..e486593e 100644 --- a/api/app/lib/controllers/auth/index.js +++ b/api/app/lib/controllers/auth/index.js @@ -4,7 +4,7 @@ const MD5 = require('crypto-js/md5'); const moment = require('moment'); const uuid = require('uuid'); -async function login(ctx, next) { +async function login (ctx, next) { const transaction = await ctx.fs.dc.orm.transaction(); try { const models = ctx.fs.dc.models; @@ -17,11 +17,7 @@ async function login(ctx, next) { password: password, delete: false, }, - attributes: { exclude: ['password'] }, - include: [{ - attributes: ["resourceId"], - model: models.UserResource - }] + attributes: { exclude: ['password', 'delete'] }, }); if (!userRes) { @@ -43,8 +39,6 @@ async function login(ctx, next) { let userRslt = Object.assign(userRes.dataValues, { authorized: true, token: token, - userResources: userRes.userResources.map(r => r.resourceId), - type: deptInfo.type }); await models.UserToken.create({ @@ -71,7 +65,7 @@ async function login(ctx, next) { * 微信小程序登录 * @@requires.body {phone-手机号, password-密码} ctx */ -async function wxLogin(ctx, next) { +async function wxLogin (ctx, next) { const transaction = await ctx.fs.dc.orm.transaction(); try { const models = ctx.fs.dc.models; @@ -83,7 +77,7 @@ async function wxLogin(ctx, next) { password: password, delete: false, }, - attributes: { exclude: ['password'] } + attributes: { exclude: ['password', 'delete'] }, }); if (!userRes) { ctx.status = 400; @@ -93,27 +87,7 @@ async function wxLogin(ctx, next) { ctx.body = { message: "该用户已被禁用" } } else { const token = uuid.v4(); - //获取用户关注区域信息 - const departmentRes = await models.Department.findOne({ where: { id: userRes.departmentId } }); - let attentionRegion = departmentRes; - while (attentionRegion.dependence && attentionRegion.type != 1) { - const departmentParent = await models.Department.findOne({ where: { id: attentionRegion.dependence } }); - attentionRegion = { - ...departmentParent.dataValues, - nextRegin: attentionRegion - } - } - //获取用户权限信息 - const resourceRes = await models.UserResource.findAll({ - where: { - userId: userRes.id - }, - include: [{ - model: models.Resource, - attributes: ['code', 'name'], - }], - attributes: [] - }); + let userRslt = Object.assign({ authorized: true, token: token, @@ -127,9 +101,6 @@ async function wxLogin(ctx, next) { ctx.status = 200; ctx.body = Object.assign({ ...userRslt, - userRegionType: departmentRes.type,//1-市级,2-区县级,3-乡镇级,4-村级 - attentionRegion: attentionRegion, - resources: resourceRes.map(r => r.resource) }); } await transaction.commit(); @@ -143,7 +114,7 @@ async function wxLogin(ctx, next) { } } -async function logout(ctx) { +async function logout (ctx) { try { const { token, code } = ctx.request.body; const models = ctx.fs.dc.models; @@ -164,32 +135,8 @@ async function logout(ctx) { } } -/** - * 微信小程序登出 - * @request.body {token-用户登录Token} ctx - */ -async function wxLogout(ctx) { - try { - const { token } = ctx.request.body; - const models = ctx.fs.dc.models; - await models.UserToken.destroy({ - where: { - token: token, - }, - }); - ctx.status = 204; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "登出失败" - } - } -} - module.exports = { login, wxLogin, logout, - wxLogout }; \ No newline at end of file diff --git a/api/app/lib/controllers/common/contants.js b/api/app/lib/controllers/common/contants.js deleted file mode 100644 index 2e04a7ac..00000000 --- a/api/app/lib/controllers/common/contants.js +++ /dev/null @@ -1,116 +0,0 @@ - -function deepCompare(x, y) { - var i, l, leftChain, rightChain; - - function compare2Objects(x, y) { - var p; - - // remember that NaN === NaN returns false - // and isNaN(undefined) returns true - if (isNaN(x) && isNaN(y) && typeof x === 'number' && typeof y === 'number') { - return true; - } - - // Compare primitives and functions. - // Check if both arguments link to the same object. - // Especially useful on the step where we compare prototypes - if (x === y) { - return true; - } - - // Works in case when functions are created in constructor. - // Comparing dates is a common scenario. Another built-ins? - // We can even handle functions passed across iframes - if ((typeof x === 'function' && typeof y === 'function') || - (x instanceof Date && y instanceof Date) || - (x instanceof RegExp && y instanceof RegExp) || - (x instanceof String && y instanceof String) || - (x instanceof Number && y instanceof Number)) { - return x.toString() === y.toString(); - } - - // At last checking prototypes as good as we can - if (!(x instanceof Object && y instanceof Object)) { - return false; - } - - if (x.isPrototypeOf(y) || y.isPrototypeOf(x)) { - return false; - } - - if (x.constructor !== y.constructor) { - return false; - } - - if (x.prototype !== y.prototype) { - return false; - } - - // Check for infinitive linking loops - if (leftChain.indexOf(x) > -1 || rightChain.indexOf(y) > -1) { - return false; - } - - // Quick checking of one object being a subset of another. - // todo: cache the structure of arguments[0] for performance - for (p in y) { - if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { - return false; - } else if (typeof y[p] !== typeof x[p]) { - return false; - } - } - - for (p in x) { - if (y.hasOwnProperty(p) !== x.hasOwnProperty(p)) { - return false; - } else if (typeof y[p] !== typeof x[p]) { - return false; - } - - switch (typeof (x[p])) { - case 'object': - case 'function': - - leftChain.push(x); - rightChain.push(y); - - if (!compare2Objects(x[p], y[p])) { - return false; - } - - leftChain.pop(); - rightChain.pop(); - break; - - default: - if (x[p] !== y[p]) { - return false; - } - break; - } - } - - return true; - } - - if (arguments.length < 1) { - return true; //Die silently? Don't know how to handle such case, please help... - // throw "Need two or more arguments to compare"; - } - - for (i = 1, l = arguments.length; i < l; i++) { - - leftChain = []; //Todo: this can be cached - rightChain = []; - - if (!compare2Objects(arguments[0], arguments[i])) { - return false; - } - } - - return true; -} -module.exports = { - deepCompare -} \ No newline at end of file diff --git a/api/app/lib/controllers/common/index.js b/api/app/lib/controllers/common/index.js deleted file mode 100644 index efb13a15..00000000 --- a/api/app/lib/controllers/common/index.js +++ /dev/null @@ -1,63 +0,0 @@ -//获取固化数据接口 -async function getDataDictionary(ctx) { - try { - const models = ctx.fs.dc.models; - const { model } = ctx.params; - const { where, attributes, order } = ctx.query; - let findObj = {}; - if (where) { - let whereJson = JSON.parse(where); - findObj.where = whereJson; - } - if (order) { - findObj.order = [JSON.parse(order)]; - } - if (attributes) { - attributes = attributes.split(','); - } - let rslt = await models[model].findAll(findObj); - ctx.status = 200; - ctx.body = rslt; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取数据字典失败" - } - } -} -//基础修改接口 -async function putDataDictionary(ctx) { - const transaction = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - let errMsg = "修改失败"; - - const { model } = ctx.params; - const { where, dataToSave } = ctx.request.body; - - const oldData = await models[model].findOne({ where: where }); - if (oldData) { - await models[model].update(dataToSave, { where: where, transaction }); - } else { - errMsg = "未找到需要修改的数据"; - ctx.throw(400) - } - ctx.status = 204; - await transaction.commit(); - } catch (error) { - await transaction.rollback(); - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": errMsg - } - } -} - -module.exports = { - getDataDictionary, - putDataDictionary -}; \ No newline at end of file diff --git a/api/app/lib/controllers/data/road.js b/api/app/lib/controllers/data/road.js index eb109abb..d35561d0 100644 --- a/api/app/lib/controllers/data/road.js +++ b/api/app/lib/controllers/data/road.js @@ -1,2 +1,26 @@ 'use strict'; +async function importIn (ctx) { + try { + const models = ctx.fs.dc.models; + const { level } = ctx.query; + const data = ctx.request.body; + + for (let d of data) { + d.level = level; + await models.User.create(d); + } + + ctx.status = 204 + } catch (error) { + ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); + ctx.status = 400; + ctx.body = { + message: typeof error == 'string' ? error : undefined + } + } +} + +module.exports = { + importIn +}; \ No newline at end of file diff --git a/api/app/lib/controllers/department/index.js b/api/app/lib/controllers/department/index.js deleted file mode 100644 index e571a67b..00000000 --- a/api/app/lib/controllers/department/index.js +++ /dev/null @@ -1,25 +0,0 @@ -'use strict'; - -//获取南昌市下所有区县 -async function getCountiesList(ctx) { - try { - const models = ctx.fs.dc.models; - let rslt = await models.Department.findAll({ - where: { type: 2 }, - order: [['id', 'asc']], - }); - ctx.status = 200; - ctx.body = rslt; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取南昌市下所有区县失败" - } - } -} - -module.exports = { - getCountiesList, -}; \ No newline at end of file diff --git a/api/app/lib/controllers/organization/authority.js b/api/app/lib/controllers/organization/authority.js deleted file mode 100644 index bcb5a68e..00000000 --- a/api/app/lib/controllers/organization/authority.js +++ /dev/null @@ -1,87 +0,0 @@ -async function getResource(ctx, next) { - try { - const models = ctx.fs.dc.models; - - const res = await models.Resource.findAll({ - where: { parentResource: null }, - include: [{ - model: models.Resource, - }] - }) - - ctx.body = res; - ctx.status = 200; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "查询所有权限数据失败" - } - } -} -async function getUserResource(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { userId } = ctx.query; - - const res = await models.UserResource.findAll({ - where: { userId: userId }, - include: [{ - model: models.Resource, - }] - }) - - ctx.body = res; - ctx.status = 200; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "查询用户权限数据失败" - } - } -} - -async function updateUserRes(ctx, next) { - const transaction = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - const { userId, resCode } = ctx.request.body; - - const res = await models.UserResource.findAll({ - attributes: ["resourceId"], - raw: true, - where: { userId: userId } - }) - - const addRes = resCode.filter(r => !res.some(rr => rr.resourceId == r)).map(r => { return { userId: userId, resourceId: r } }); - const delRes = res.filter(r => !resCode.includes(r.resourceId)).map(r => r.resourceId); - addRes.length && await models.UserResource.bulkCreate(addRes, { transaction: transaction }); - delRes.length && await models.UserResource.destroy({ - where: { - resourceId: { $in: delRes }, - userId: userId - }, - transaction: transaction - }) - - ctx.status = 204; - await transaction.commit(); - - } catch (error) { - await transaction.rollback(); - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "更新用户权限数据失败" - } - } -} - -module.exports = { - getResource, - getUserResource, - updateUserRes -}; \ No newline at end of file diff --git a/api/app/lib/controllers/organization/user.js b/api/app/lib/controllers/organization/user.js index 990b96de..798c8a7d 100644 --- a/api/app/lib/controllers/organization/user.js +++ b/api/app/lib/controllers/organization/user.js @@ -2,65 +2,6 @@ const Hex = require('crypto-js/enc-hex'); const MD5 = require('crypto-js/md5'); -async function getDepMessage (ctx, next) { - try { - const { fs: { api: { userInfo } } } = ctx - const models = ctx.fs.dc.models; - - let depType1 = await models.Department.findAll({ - order: [['id', 'asc']], - // include: [{ - // model: models.User, - // required: false, - // where: { delete: false }, - // attributes: { exclude: ['password'] }, - // }], - where: { - // type: 1, - id: userInfo.departmentId - }, - }) - - let depRslt = [] - const getDep = async (d) => { - let subordinate = [] - let depRes = await models.Department.findAll({ - order: [['id', 'asc']], - // include: [{ - // model: models.User, - // required: false, - // where: { delete: false }, - // attributes: { exclude: ['password'] }, - // }], - where: { - dependence: d.id - }, - }) - if (depRes.length) - for (let d of depRes) { - let dep = d.dataValues - dep.subordinate = await getDep(d.dataValues) - subordinate.push(dep) - } - return subordinate - } - for (let d of depType1) { - let dep_1 = d.dataValues - dep_1.subordinate = await getDep(d.dataValues) - depRslt.push(dep_1) - } - - ctx.status = 200; - ctx.body = depRslt - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取部门信息失败" - } - } -} - async function getUser (ctx, next) { try { const models = ctx.fs.dc.models; @@ -70,7 +11,7 @@ async function getUser (ctx, next) { departmentId: parseInt(depId), delete: false }, - attributes: { exclude: ['password'] }, + attributes: { exclude: ['password', 'delete'] }, order: [['id', 'asc']], }) @@ -86,33 +27,31 @@ async function getUser (ctx, next) { } async function creatUser (ctx, next) { - let errMsg = "新建用户失败" try { const models = ctx.fs.dc.models; const data = ctx.request.body; let repeatUserNameCount = await models.User.count({ where: { - username: data.phone, + username: data.username, delete: false } }) if (repeatUserNameCount) { - errMsg = '已有当前用户名' - throw errMsg + throw '已有当前用户名' } await models.User.create({ name: data.name, - username: data.phone, + username: data.username, password: Hex.stringify(MD5(data.password)), departmentId: data.departmentId, email: data.email, enable: data.enable, delete: false, phone: data.phone, - post: data.post, + remark: 'th', }) ctx.status = 204; @@ -120,7 +59,7 @@ async function creatUser (ctx, next) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { - "message": errMsg + message: typeof error == 'string' ? error : undefined } } } @@ -131,22 +70,23 @@ async function updateUser (ctx, next) { try { const models = ctx.fs.dc.models; const data = ctx.request.body; - const { id } = ctx.params; + const { userId } = ctx.params; let repeatUserNameCount = await models.User.count({ where: { - username: data.username + username: data.username, + delete: false, + id: { $ne: userId } } }) if (repeatUserNameCount) { - errMsg = '已有当前用户名' - throw errMsg + throw '已有当前用户名' } await models.User.update({ name: data.name, - username: data.phone, + username: data.username, departmentId: data.departmentId, email: data.email, enable: data.enable, @@ -155,7 +95,7 @@ async function updateUser (ctx, next) { post: data.post, }, { where: { - id: id + id: userId } }); @@ -164,7 +104,7 @@ async function updateUser (ctx, next) { ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); ctx.status = 400; ctx.body = { - "message": errMsg + message: typeof error == 'string' ? error : undefined } } } @@ -172,13 +112,13 @@ async function updateUser (ctx, next) { async function deleteUser (ctx, next) { try { const models = ctx.fs.dc.models; - const { ids } = ctx.params; - const userIds = ids.split(','); + const { userIds } = ctx.params; + const userIds_ = userIds.split(','); await models.User.update({ delete: true, }, { where: { - id: { $in: userIds }, + id: { $in: userIds_ }, } }); ctx.status = 204; @@ -191,34 +131,29 @@ async function deleteUser (ctx, next) { } } -async function resetPwd (ctx, next) { - try { - const models = ctx.fs.dc.models; - const { id } = ctx.params; - const data = ctx.request.body; - await models.User.update({ - password: Hex.stringify(MD5(data.password)), - }, { - where: { - id: id, - } - }); - ctx.status = 204; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "重置用户密码失败" - } - } -} - -/** - * 修改用户密码 - * @params {userId-用户Id} ctx - * @request.body {password-用户新密码} ctx - */ -async function updateUserPassword (ctx, next) { +// async function resetPwd (ctx, next) { +// try { +// const models = ctx.fs.dc.models; +// const { id } = ctx.params; +// const data = ctx.request.body; +// await models.User.update({ +// password: Hex.stringify(MD5(data.password)), +// }, { +// where: { +// id: id, +// } +// }); +// ctx.status = 204; +// } catch (error) { +// ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); +// ctx.status = 400; +// ctx.body = { +// "message": "重置用户密码失败" +// } +// } +// } + +async function setPassword (ctx, next) { try { const models = ctx.fs.dc.models; const { userId } = ctx.params; @@ -254,11 +189,10 @@ async function updateUserPassword (ctx, next) { module.exports = { - getDepMessage, getUser, creatUser, updateUser, deleteUser, - resetPwd, - updateUserPassword + // resetPwd, + setPassword } \ No newline at end of file diff --git a/api/app/lib/controllers/placeSecurityRecord/index.js b/api/app/lib/controllers/placeSecurityRecord/index.js deleted file mode 100644 index ff3fc45d..00000000 --- a/api/app/lib/controllers/placeSecurityRecord/index.js +++ /dev/null @@ -1,612 +0,0 @@ -'use strict'; -const moment = require('moment'); - -/** - * 提交填报信息/保存填报草稿 - * @requires.body { - * isDraft-是否草稿 - * userId-用户id,填报人 - * placeName-场所id - * placeType-场所性质 - * regionId-所属县/区 - * address-场所地址 - * placeOwner-场所负责人 - * phone-负责人手机号 - * dimension-面积 - * floors-多少层 - * numberOfPeople-常住人数 - * location-经纬度 - * isEnable-是否为合用场所 - * localtionDescribe-经纬度定位描述 - * hiddenDangerItem12-12项隐患信息,格式:[{ - * itemIndex-隐患项序号, - * value-是否存在隐患, - * description-隐患具体信息描述, - * photos-隐患图片(多张图片以 , 隔开)" - * }], - * description-存在具体问题描述 - * correctiveAction-采取整改措施 - * punishment-实施处罚,强制措施情况 - * } ctx - */ -async function addPlaceSecurityRecord (ctx, next) { - const transaction = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - const body = ctx.request.body; - let ifRightRegion = true; - if (body.regionId) { - //判断填报信息所属乡镇/区县是否存在 - let region = await models.Department.findOne({ where: { id: body.regionId } }); - if (!region) { - ifRightRegion = false; - } - } - if (ifRightRegion) { - let placeId = null; - if (body.placeName) { - //判断“场所名称”是否存在,不存在则“新建场所” - let place = await models.Places.findOne({ where: { name: body.placeName, userId: ctx.fs.api.userId } }); - if (place) { - placeId = place.id - } else { - const newPlace = await models.Places.create({ - name: body.placeName, - userId: ctx.fs.api.userId - }, { transaction: transaction }); - placeId = newPlace.id; - } - } - //创建填报信息/填报草稿 - const userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.create({ - isDraft: body.isDraft,//是否草稿 - userId: ctx.fs.api.userId,//用户id,填报人 - time: moment(),//录入时间 - placeId: placeId,//场所id - placeType: body.placeType,//场所性质 - regionId: body.regionId,//所属县/区 - address: body.address,//场所地址 - placeOwner: body.placeOwner,//场所负责人 - phone: body.phone,//负责人手机号 - dimension: body.dimension,//面积 - floors: body.floors,//多少层 - numberOfPeople: body.numberOfPeople,//常住人数 - location: body.location,//经纬度 - isEnable: body.isEnable,//是否为合用场所 - localtionDescribe: body.localtionDescribe,//经纬度定位描述 - hiddenDangerItem12: body.hiddenDangerItem12,//12项隐患信息 - description: body.description,//存在具体问题描述 - correctiveAction: body.correctiveAction,//采取措施 - type: true,//是否重新发起true默认false可以重新发起 - punishment: body.punishment,//实施处罚,强制措施情况 - departmentId: body.departmentId - }, { transaction: transaction }); - ctx.body = { - id: userPlaceSecurityRecord.id, - "message": "新增填报信息成功" - }; - ctx.status = 200; - } else { - ctx.status = 400; - ctx.body = { - "message": "所选地址不存在!" - } - } - await transaction.commit(); - } catch (error) { - await transaction.rollback(); - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "新增填报信息失败" - } - } -} - -/** - * 编辑填报信息 - * @param {id-填报信息ID} ctx - * @requires.body { - * isDraft-是否草稿 - * userId-用户id,填报人 - * placeName-场所id - * placeType-场所性质 - * regionId-所属县/区 - * address-场所地址 - * placeOwner-场所负责人 - * phone-负责人手机号 - * dimension-面积 - * floors-多少层 - * numberOfPeople-常住人数 - * location-经纬度 - * isEnable-是否为合用场所 - * localtionDescribe-经纬度定位描述 - * hiddenDangerItem12-12项隐患信息,格式:[{ - * itemIndex-隐患项序号, - * value-是否存在隐患, - * description-隐患具体信息描述, - * photos-隐患图片(多张图片以 , 隔开)" - * }], - * description-存在具体问题描述 - * correctiveAction-采取整改措施 - * punishment-实施处罚,强制措施情况 - * } ctx - */ -async function editPlaceSecurityRecord (ctx, next) { - const transaction = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - const { id } = ctx.params; - //判断该填报信息是否存在 - let userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.findOne({ where: { id: id } }); - if (userPlaceSecurityRecord) { - const body = ctx.request.body; - let ifRightRegion = true; - if (body.regionId) { - //判断填报信息所属乡镇/区县是否存在 - let region = await models.Department.findOne({ where: { id: body.regionId } }); - if (!region) { - ifRightRegion = false; - } - } - if (ifRightRegion) { - let placeId = null; - if (body.placeName) { - //判断“场所名称”是否存在,不存在则“新建场所” - let place = await models.Places.findOne({ where: { name: body.placeName, userId: ctx.fs.api.userId } }); - if (place) { - placeId = place.id - } else { - const newPlace = await models.Places.create({ - name: body.placeName, - userId: ctx.fs.api.userId - }, { transaction: transaction }); - placeId = newPlace.id; - } - } - //修改填报信息 - await models.UserPlaceSecurityRecord.update({ - isDraft: body.isDraft,//是否草稿 - userId: ctx.fs.api.userId,//用户id,填报人 - time: moment(),//录入时间 - placeId: placeId,//场所id - placeType: body.placeType,//场所性质 - regionId: body.regionId,//所属县/区 - address: body.address,//场所地址 - placeOwner: body.placeOwner,//场所负责人 - phone: body.phone,//负责人手机号 - dimension: body.dimension,//面积 - floors: body.floors,//多少层 - numberOfPeople: body.numberOfPeople,//常住人数 - location: body.location,//经纬度 - isEnable: body.isEnable,//是否为合用场所 - localtionDescribe: body.localtionDescribe,//经纬度定位描述 - hiddenDangerItem12: body.hiddenDangerItem12,//12项隐患信息 - description: body.description,//存在具体问题描述 - correctiveAction: body.correctiveAction,//采取措施 - punishment: body.punishment,//实施处罚,强制措施情况 - departmentId: body.departmentId - }, { where: { id: id, }, transaction: transaction }); - ctx.body = { "message": "修改填报信息成功" }; - ctx.status = 200; - } else { - ctx.status = 400; - ctx.body = { "message": "所选地址不存在!" } - } - } else { - ctx.status = 400; - ctx.body = { "message": "该填报信息不存在!" } - } - await transaction.commit(); - } catch (error) { - await transaction.rollback(); - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "修改填报信息失败" } - } -} - -/** - * 修改type字段 - * @param {*} ctx - * @param {*} next - */ -async function updateType (ctx, next) { - const models = ctx.fs.dc.models; - const { id } = ctx.params; - try { - await models.UserPlaceSecurityRecord.update({ - type: true,//是否重新发起true默认false可以重新发起 - }, { where: { id: id, } }) - ctx.body = { "message": "修改信息成功" }; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "修改信息失败" } - } -} - -/** - * 删除填报信息 - * @param {id-填报信息ID} ctx - */ -async function deletePlaceSecurityRecord (ctx, next) { - const transaction = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - const { id } = ctx.params; - //判断该填报信息是否存在 - let userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.findOne({ where: { id: id } }); - if (userPlaceSecurityRecord) { - await models.UserPlaceSecurityRecord.destroy({ where: { id: id }, transaction: transaction }); - ctx.body = { "message": "删除填报信息成功" }; - ctx.status = 200; - } else { - ctx.status = 400; - ctx.body = { "message": "该填报信息不存在!" } - } - await transaction.commit(); - } catch (error) { - await transaction.rollback(); - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "删除填报信息失败" } - } -} - -/** - * 根据填报信息ID查询填报信息 - * @param {id-填报信息ID} ctx - */ -async function getPlaceSecurityRecordById (ctx, next) { - try { - const models = ctx.fs.dc.models; - const { id } = ctx.params; - //判断该填报信息是否存在 - let userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.findOne({ where: { id: id } }); - if (userPlaceSecurityRecord) { - let userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.findOne({ - where: { id: id }, - include: [{ - model: models.Places, - }, { - model: models.User, - as: 'user', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit1ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit2ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'rejectManUser', - attributes: ['id', 'name', 'username', 'phone'] - }] - }); - ctx.body = userPlaceSecurityRecord; - ctx.status = 200; - } else { - ctx.status = 400; - ctx.body = { "message": "该填报信息不存在!" } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "查询填报信息失败" } - } -} - -/** - * 根据场所ID获取该场所最近用户填报信息 - * @param {placeId-场所信息ID} ctx - */ -async function getRecentlyPlaceSecurityRecordByPlaceId (ctx, next) { - try { - const models = ctx.fs.dc.models; - const { placeId } = ctx.params; - //判断该场所信息是否存在 - let place = await models.Places.findOne({ where: { id: placeId } }); - if (place) { - let userPlaceSecurityRecord = await models.UserPlaceSecurityRecord.findAll({ - where: { placeId: placeId, userId: place.userId }, - include: [{ - model: models.Places, - }], - limit: 1, - order: [["id", "desc"]], - }); - ctx.status = 200; - ctx.body = userPlaceSecurityRecord.length ? userPlaceSecurityRecord[0] : null; - } else { - ctx.status = 400; - ctx.body = { "message": "该场所不存在!" } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "获取场所最近用户填报信息失败" } - } -} - -/** - * 根据筛选条件获取用户填报信息 - * @query { - * isDraft-是否草稿 - * userId-用户ID - * timeRange-录入时间范围 - * regionId-区域ID - * placeId-场所ID - * state-审批状态 - * pageIndex-页码 - * pageSize-页宽 - * } ctx - */ -async function getPlaceSecurityRecords (ctx, next) { - try { - const models = ctx.fs.dc.models; - const { isDraft, userId, timeRange, regionId, placeId, state, pageIndex, pageSize } = ctx.query; - let whereCondition = {}; - if (userId) { - let user = await models.User.findOne({ where: { id: userId } }); - if (user) { - whereCondition.userId = userId; - } else { - ctx.status = 400; - ctx.body = { "message": "用户不存在!" } - return; - } - } - if (regionId) { - let region = await models.Department.findOne({ where: { id: regionId } }); - if (region) { - whereCondition.regionId = regionId; - } else { - ctx.status = 400; - ctx.body = { "message": "区域不存在!" } - return; - } - } - if (placeId) { - let place = await models.Places.findOne({ where: { id: placeId } }); - if (place) { - whereCondition.placeId = placeId; - } else { - ctx.status = 400; - ctx.body = { "message": "场所不存在!" }; - return; - } - } - if (isDraft) { whereCondition.isDraft = isDraft; } - let times = timeRange; - if (timeRange && timeRange.indexOf(',')) { times = timeRange.split(',') } - if (times && times.length > 0) { - const len = times.length; - whereCondition.time = { - $between: [ - moment(times[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'), - moment(times[len - 1]).endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - }; - } - switch (Number(state)) { - case 1: //待审批:未审核 或者 已审核+未复核 - whereCondition.$or = [ - { '$audit1ManId$': null }, - { '$audit2ManId$': null } - ]; - whereCondition.rejectManId = null; - break; - case 2://已审批:已审批+已复核 - whereCondition.audit1ManId = { $not: null }; - whereCondition.audit2ManId = { $not: null }; - break; - case 3: //驳回 - whereCondition.rejectManId = { $not: null }; - break; - default: break; - } - let findObj = { - where: whereCondition, - order: [["id", "desc"]], - include: [{ - model: models.Places, - }, { - model: models.User, - as: 'user', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit1ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit2ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'rejectManUser', - attributes: ['id', 'name', 'username', 'phone'] - }] - }; - if (Number(pageSize) > 0 && Number(pageIndex) >= 0) { - findObj.limit = Number(pageSize); - findObj.offset = Number(pageIndex) * Number(pageSize); - } - let userPlaceSecurityRecords = await models.UserPlaceSecurityRecord.findAndCountAll(findObj); - ctx.status = 200; - ctx.body = userPlaceSecurityRecords; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "获取用户填报信息失败" } - } -} - -/** - * 根据筛选条件获取用户审批填报信息 - * @query { - * approveUserId-审批人ID - * timeRange-录入时间范围 - * regionId-区域ID - * placeId-场所ID - * state-审批状态 - * pageIndex-页码 - * pageSize-页宽 - * } ctx - */ -async function getApprovePlaceSecurityRecords (ctx, next) { - try { - const models = ctx.fs.dc.models; - const { approveUserId, timeRange, regionId, placeId, state, pageIndex, pageSize } = ctx.query; - let whereCondition = { isDraft: false }; - if (approveUserId) { - let approveUser = await models.User.findOne({ where: { id: approveUserId } }); - if (approveUser) { - //获取审批人管辖区域内所有用户ID(注:市级人员查看所有用户数据) - const departmentRes = await models.Department.findOne({ where: { id: approveUser.departmentId } }); - if (departmentRes.dependence) { - let attentionRegionIds = [departmentRes.id]; - let regionType = departmentRes.type; - while (attentionRegionIds.length && regionType && regionType < 4) { - const departmentChilds = await models.Department.findAll({ where: { dependence: { $in: attentionRegionIds } } }); - regionType = departmentChilds.length ? departmentChilds[0].type : null; - attentionRegionIds = departmentChilds.map(d => d.id); - } - let users = await models.User.findAll({ where: { departmentId: { $in: attentionRegionIds } }, attributes: ['id'] }); - if (users.length) { - let userIds = users.map(u => u.id); - whereCondition.userId = { $in: userIds }; - } else { - ctx.status = 200; - ctx.body = { - "count": 0, - "rows": [] - } - return; - } - } - if (regionId) { - let region = await models.Department.findOne({ where: { id: regionId } }); - if (region) { - whereCondition.regionId = regionId; - } else { - ctx.status = 400; - ctx.body = { "message": "区域不存在!" } - return; - } - } - if (placeId) { - let place = await models.Places.findOne({ where: { id: placeId } }); - if (place) { - whereCondition.placeId = placeId; - } else { - ctx.status = 400; - ctx.body = { "message": "场所不存在!" }; - return; - } - } - let times = timeRange; - if (timeRange && timeRange.indexOf(',')) { times = timeRange.split(',') } - if (times && times.length > 0) { - const len = times.length; - whereCondition.time = { - $between: [ - moment(times[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'), - moment(times[len - 1]).endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - }; - } - switch (Number(state)) { - case 1: //待审批 - if (departmentRes.type == 2) { - //区县待审:已审核+未复核 - whereCondition.audit1ManId = { $not: null }; - whereCondition.audit2ManId = null; - } else { - //乡镇待审:未审核+未复核 - whereCondition.audit1ManId = null; - whereCondition.audit2ManId = null; - } - whereCondition.rejectManId = null; - break; - case 2://已审批: - if (departmentRes.type == 3) { - //乡镇已审:已审核 - whereCondition.audit1ManId = { $not: null }; - } else { - //区域已审:已审批+已复核 - whereCondition.audit1ManId = { $not: null }; - whereCondition.audit2ManId = { $not: null }; - } - whereCondition.rejectManId = null; - break; - case 3: //驳回 - whereCondition.rejectManId = { $not: null }; - break; - default: - if (departmentRes.type == 2) { - //区县查看数据:去除未审核 - whereCondition.audit1ManId = { $not: null }; - } - break; - } - let findObj = { - where: whereCondition, - include: [{ - model: models.Places, - }, { - model: models.User, - as: 'user', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit1ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'audit2ManUser', - attributes: ['id', 'name', 'username', 'phone'] - }, { - model: models.User, - as: 'rejectManUser', - attributes: ['id', 'name', 'username', 'phone'] - }], - order: [["id", "desc"]] - }; - if (Number(pageSize) > 0 && Number(pageIndex) >= 0) { - findObj.limit = Number(pageSize); - findObj.offset = Number(pageIndex) * Number(pageSize); - } - let userPlaceSecurityRecords = await models.UserPlaceSecurityRecord.findAndCountAll(findObj); - ctx.status = 200; - ctx.body = userPlaceSecurityRecords; - } else { - ctx.status = 400; - ctx.body = { "message": "用户不存在!" } - } - } else { - ctx.status = 400; - ctx.body = { "message": "请传用户参数!" } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "获取用户填报信息失败" } - } -} - -module.exports = { - addPlaceSecurityRecord, - editPlaceSecurityRecord, - deletePlaceSecurityRecord, - getPlaceSecurityRecordById, - getRecentlyPlaceSecurityRecordByPlaceId, - getPlaceSecurityRecords, - getApprovePlaceSecurityRecords, - updateType -}; \ No newline at end of file diff --git a/api/app/lib/controllers/places/index.js b/api/app/lib/controllers/places/index.js deleted file mode 100644 index c60d3195..00000000 --- a/api/app/lib/controllers/places/index.js +++ /dev/null @@ -1,91 +0,0 @@ -'use strict'; - -/** - * 根据用户ID获取该用户创建的所有场所信息 - * @param {userId-用户ID} ctx - */ -async function getPlacesByUserId(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { userId } = ctx.params; - let places = await models.Places.findAll({ where: { userId: userId }, attributes: ['id', 'name'] }); - ctx.status = 200; - ctx.body = places; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "查询用户场所信息失败" } - } -} - -/** - * 根据审批用户ID获取该审批用户范围内填报人创建的场所信息 - * @param {approveUserId-审批用户ID} ctx - */ -async function getPlacesByApproveUserId(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { approveUserId } = ctx.params; - let approveUser = await models.User.findOne({ where: { id: approveUserId } }); - if (approveUser) { - let whereCondition = {}; - //获取审批人管辖区域内所有用户ID - const departmentRes = await models.Department.findOne({ where: { id: approveUser.departmentId } }); - if (departmentRes.dependence) { - let regionType = departmentRes.type; - if (regionType == 4) { - whereCondition.userId = approveUserId; - } else { - let attentionRegionIds = [departmentRes.id]; - while (attentionRegionIds.length && regionType && regionType < 4) { - const departmentChilds = await models.Department.findAll({ where: { dependence: { $in: attentionRegionIds } } }); - regionType = departmentChilds.length ? departmentChilds[0].type : null; - attentionRegionIds = departmentChilds.map(d => d.id); - } - let users = await models.User.findAll({ where: { departmentId: { $in: attentionRegionIds } }, attributes: ['id'] }); - if (users.length) { - let userIds = users.map(u => u.id); - whereCondition.userId = { $in: userIds }; - } else { - ctx.status = 200; - ctx.body = []; - return; - } - } - } - let places = await models.Places.findAll({ where: whereCondition, attributes: ['id', 'name'] }); - ctx.status = 200; - ctx.body = places; - } else { - ctx.status = 400; - ctx.body = { "message": "用户不存在!" } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "查询用户区域内场所信息失败" } - } -} - -/** - * 获取所有场所信息 - */ -async function getAllPlaces(ctx, next) { - try { - const models = ctx.fs.dc.models; - let places = await models.Places.findAll(); - ctx.status = 200; - ctx.body = places; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "获取场所信息失败" } - } -} - - -module.exports = { - getPlacesByUserId, - getPlacesByApproveUserId, - getAllPlaces -}; \ No newline at end of file diff --git a/api/app/lib/controllers/report/compile.js b/api/app/lib/controllers/report/compile.js deleted file mode 100644 index 3734aca2..00000000 --- a/api/app/lib/controllers/report/compile.js +++ /dev/null @@ -1,140 +0,0 @@ -const moment = require('moment') - -async function getReportRectify(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { fs: { api: { userInfo } } } = ctx - const { startTime, endTime } = ctx.query - // 查找自己所属的区县数据 type == 2 - - let userDepRes = await models.Department.findOne({ - order: [['id', 'asc']], - where: { - id: userInfo.departmentId - }, - }) - let depRes = [] - if (userDepRes.dataValues.type == 1) { - depRes = await models.Department.findAll({ - where: { - type: 2, - } - }) - } else if (userDepRes.dataValues.type == 2) { - depRes = [userDepRes] - } - - let rectifyReportList = [] - - let calDay = moment(startTime).startOf('day') - let endDay = moment(endTime).endOf('day') - let today = moment().endOf('day') - while (calDay.isBefore(endDay) && calDay.isBefore(today)) { - let curDay_ = calDay.clone(); - for (let d of depRes) { - let reportCount = await models.ReportRectify.count({ - where: { - regionId: d.dataValues.id, - userId:{$not:null}, - dateTime: { - $between: [ - curDay_.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - curDay_.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - }) - let detailCount = await models.ReportRectify.count({ - where: { - regionId: d.dataValues.id, - dateTime: { - $between: [ - curDay_.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - curDay_.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - }) - if (detailCount > 0) - rectifyReportList.push({ - day: calDay.format('YYYY-MM-DD'), - region: d.dataValues.name, - name: d.dataValues.name + '合用场所安全隐患排查整治汇总表', - reportBool: reportCount > 0, - depId: d.id, - }) - } - - calDay.add(1, 'day') - } - - ctx.body = rectifyReportList; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取合用场所安全隐患排查整治汇总表列表失败" - } - } -} - -async function getReportRectifyDetail(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { day, depId } = ctx.query - - let searchDay = moment(day) - let reportRes = await models.ReportRectify.findAll({ - where: { - regionId: depId, - dateTime: { - $between: [ - searchDay.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - searchDay.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - }) - - ctx.body = reportRes; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取合用场所安全隐患排查整治汇总表详情失败" - } - } -} - -async function compileReportRectifyDetail(ctx, next) { - const t = await ctx.fs.dc.orm.transaction(); - try { - const models = ctx.fs.dc.models; - const data = ctx.request.body - for (let d of data) { - await models.ReportRectify.update(d, { - transaction: t, - where: { - id: d.id - } - }) - } - await t.commit(); - ctx.status = 204; - } catch (error) { - await t.rollback(); - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "保存合用场所安全隐患排查整治汇总表详情失败" - } - } -} - -module.exports = { - getReportRectify, - getReportRectifyDetail, - compileReportRectifyDetail, -}; \ No newline at end of file diff --git a/api/app/lib/controllers/report/config.js b/api/app/lib/controllers/report/config.js deleted file mode 100644 index 158704a2..00000000 --- a/api/app/lib/controllers/report/config.js +++ /dev/null @@ -1,173 +0,0 @@ -async function getAreas (ctx, next) { - try { - const { fs: { api: { userInfo } } } = ctx - const models = ctx.fs.dc.models; - - let userDepRes = await models.Department.findOne({ - order: [['id', 'asc']], - where: { - id: userInfo.departmentId - }, - }) - - let rslt = [] - if (userDepRes) { - if (userDepRes.dataValues.type == 1) { - rslt = await models.Department.findAll({ - order: [['id', 'asc']], - where: { - type: 2 - } - }) - } else if (userDepRes.dataValues.type == 2) { - rslt = [userDepRes.dataValues] - } - } - - ctx.body = rslt; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "查询区域数据失败" - } - } -} - -async function addReportConfig (ctx) { - let errMsg = "添加报表配置失败" - try { - const data = ctx.request.body - const models = ctx.fs.dc.models; - - const repeatRes = await models.ReportConfigition.find({ - where: { - regionId: data.regionId, - reportTypeId: data.reportTypeId, - excuteTime: data.excuteTime, - } - }) - - if (repeatRes) { - errMsg = '已有相同配置信息'; - throw errMsg - } - - const res = await models.ReportConfigition.create(data) - - ctx.body = res; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": errMsg - } - } -} - -async function getReportConfig (ctx) { - try { - const { fs: { api: { userInfo } } } = ctx - const models = ctx.fs.dc.models; - - // 查找自己所属的区县数据 type == 2 - - let userDepRes = await models.Department.findOne({ - order: [['id', 'asc']], - where: { - id: userInfo.departmentId - }, - }) - let depRes = [] - if (userDepRes.dataValues.type == 1) { - depRes = await models.Department.findAll({ - where: { - type: 2, - } - }) - } else if (userDepRes.dataValues.type == 2) { - depRes = [userDepRes] - } - - const res = await models.ReportConfigition.findAll({ - where: { - regionId: { $in: depRes.map(d => d.dataValues.id) } - } - }) - - ctx.body = res; - ctx.status = 200; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取报表配置失败" - } - } -} - -async function editReportConfig (ctx) { - try { - const models = ctx.fs.dc.models; - const data = ctx.request.body - const { reportId } = ctx.params - - const repeatRes = await models.ReportConfigition.find({ - where: { - id: { $ne: parseInt(reportId) }, - regionId: data.regionId, - reportTypeId: data.reportTypeId, - excuteTime: data.excuteTime, - } - }) - - if (repeatRes) { - errMsg = '已有相同配置信息'; - throw errMsg - } - - await models.ReportConfigition.update(data, { - where: { - id: parseInt(reportId) - } - }) - - ctx.status = 204; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "编辑报表配置失败" - } - } -} - -async function delReportConfig (ctx) { - try { - const models = ctx.fs.dc.models; - const { reportId } = ctx.params - await models.ReportConfigition.destroy({ - where: { - id: parseInt(reportId) - } - }) - - ctx.status = 204; - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "删除报表配置失败" - } - } -} - -module.exports = { - getAreas, - addReportConfig, - getReportConfig, - editReportConfig, - delReportConfig, -}; \ No newline at end of file diff --git a/api/app/lib/controllers/report/index.js b/api/app/lib/controllers/report/index.js deleted file mode 100644 index 2367e619..00000000 --- a/api/app/lib/controllers/report/index.js +++ /dev/null @@ -1,87 +0,0 @@ -const moment = require('moment'); -async function getReportList (ctx, next) { - try { - const { fs: { api: { userInfo } } } = ctx - const models = ctx.fs.dc.models; - const { creatTime, reportName, regionName, limit, offset } = ctx.query; - - let where = { - $and: { - reportName: { $notLike: '%填报信息导出%' } - } - }; - if (creatTime) { - where.creatTime = { - $gte: moment(creatTime[0]).format('YYYY-MM-DD HH:mm:ss'), - $lte: moment(creatTime[1]).format('YYYY-MM-DD HH:mm:ss') - } - } - - if (reportName) { - where.reportName = { - $iLike: `%${reportName}%` - } - } - - if (regionName && regionName != -1) { - where.regionId = regionName - } else { - let userDepRes = await models.Department.findOne({ - order: [['id', 'asc']], - where: { - id: userInfo.departmentId - }, - }) - - let userDep = [] - if (userDepRes) { - if (userDepRes.dataValues.type == 1) { - userDep = await models.Department.findAll({ - order: [['id', 'asc']], - where: { - type: 2 - } - }) - } else if (userDepRes.dataValues.type == 2) { - userDep = [userDepRes] - } - } - where.regionId = { $in: userDep.map(u => u.dataValues.id) } - } - - let findObj = { - include: [{ - model: models.ReportType, - attributes: ['name'] - }, { - model: models.Department, - attributes: ['name'] - }], - where: where, - order: [['creatTime', 'desc']], - }; - - if (Number(limit) > 0 && Number(offset) >= 0) { - findObj.limit = Number(limit); - findObj.offset = Number(offset); - } - - const res = await models.ReportDownManage.findAndCountAll(findObj) - - ctx.body = res; - ctx.status = 200; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "查询报表数据失败" - } - } -} - - - -module.exports = { - getReportList, -}; \ No newline at end of file diff --git a/api/app/lib/controllers/statistic/index.js b/api/app/lib/controllers/statistic/index.js deleted file mode 100644 index 7ad489e4..00000000 --- a/api/app/lib/controllers/statistic/index.js +++ /dev/null @@ -1,342 +0,0 @@ -const moment = require('moment'); -const { QueryTypes } = require('sequelize'); - -async function reportDailyStatistic (ctx, next) { - const rslt = { - added: 0, //今日新增 - checked: 0, //今日已审填报 - unChecked: 0, //未审填报 - danger_place: 0, //隐患场所总数 - history: 0, //历史填报 - date: {} - }; - try { - const models = ctx.fs.dc.models; - const curDay_ = moment(); - const sequelize = ctx.fs.dc.orm; - - - rslt.added = await models.UserPlaceSecurityRecord.count({ - where: { - time: { - $between: [ - curDay_.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - curDay_.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - }) - rslt.unChecked = await models.UserPlaceSecurityRecord.count({ - where: { - $or: [ - { - audit2ManId: { $eq: null }, - rejectManId: { $eq: null }, - }, - // { - // audit2ManId: { $ne: null }, - // rejectManId: { $eq: null }, - // }, - { - audit1ManId: { $eq: null }, - rejectManId: { $eq: null }, - } - ] - } - }); - - rslt.checked = await models.UserPlaceSecurityRecord.count({ - where: { - $or: [ - { - audit2ManId: { $ne: null }, - audit2ManIdTime: { - $between: [ - curDay_.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - curDay_.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - }, - { - rejectManId: { $ne: null }, - rejectTime: { - $between: [ - curDay_.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - curDay_.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - ] - } - }); - - const list = await sequelize.query(`SELECT count(*) AS "count" FROM "user_placeSecurityRecord" AS "userPlaceSecurityRecord" - WHERE ("userPlaceSecurityRecord"."correctiveAction" IS NOT NULL AND "userPlaceSecurityRecord"."punishment" IS NOT NULL) AND "audit2ManId" IS NOT NULL GROUP BY "placeId";`, { type: QueryTypes.SELECT }) - rslt.danger_place = list.length; - - rslt.history = await models.UserPlaceSecurityRecord.count(); - - // seven days data - - const startDay = moment().startOf('day'); - for (let d = 1; d <= 7; d++) { - const START_DAY = moment(startDay).add(-d, 'day'); - const date = START_DAY.format('YYYY-MM-DD'); - const num = await models.UserPlaceSecurityRecord.count({ - where: { - time: { - $between: [ - START_DAY.startOf('day').format('YYYY-MM-DD HH:mm:ss'), - START_DAY.endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - }) - - rslt.date[date] = num; - } - - ctx.status = 200; - ctx.body = rslt; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取数据中台数据失败" - } - } - -} - -async function reportAreaStatistic (ctx, next) { - let rslt = [], relationRegion = {}; - try { - const { startDate, endDate } = ctx.query; - const models = ctx.fs.dc.models; - const sequelize = ctx.fs.dc.orm; - - const list = await sequelize.query(`select "regionId", count("regionId") from "user_placeSecurityRecord" WHERE "time" BETWEEN '${moment(startDate).startOf('day').format('YYYY-MM-DD HH:mm:ss')}' AND '${moment(endDate).endOf('day').format('YYYY-MM-DD HH:mm:ss')}' AND "hiddenDangerItem12" IS NOT NULL GROUP BY "regionId" `, { type: QueryTypes.SELECT }) - // let regionIds = [] - // list.map(item => { - // if (item.regionId && item.regionId != '') { - // regionIds.push(item.regionId); - // } - // }); - - // const depts = await sequelize.query(`SELECT "id", "name", "type", "dependence" FROM "department" AS "department" WHERE "department"."id" IN (${regionIds.toString()});`, { type: QueryTypes.SELECT }); - const deptRelation = await sequelize.query(`SELECT "id", "name", "type", "dependence" FROM "department" AS "department";`, { type: QueryTypes.SELECT }); - const quArea = deptRelation.filter(f => f.type == 2); - quArea.map(item => { - relationRegion[item.id] = {}; - const xiang = deptRelation.filter(f => f.type == 3 && f.dependence == item.id).map(item => item.id); - - const cun = deptRelation.filter(f => f.type == 4 && xiang.some(ss => ss == f.dependence)).map(item => item.id); - relationRegion[item.id]['regionIds'] = [item.id, ...xiang, ...cun]; - relationRegion[item.id]['name'] = item.name; - }) - Object.keys(relationRegion).map(key => { - const { regionIds, name } = relationRegion[key]; - let data = list.filter(item => regionIds.some(id => id == item.regionId)) - let obj = {}; - obj['name'] = name; - obj['count'] = 0; - obj['regionId'] = key; - data.map(item => { - obj['count'] += Number(item.count) - }) - rslt.push(obj) - }) - - ctx.status = 200; - ctx.body = rslt; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取数据中台数据失败" - } - } - -} - -async function dangerAreaQuery (ctx, next) { - const { userId } = ctx.fs.api - let rslt = { rows: [], count: 0, ids: [] }, relationRegion = {}; - try { - const { startDate, endDate, placeType, regionId, placeName, offset = 0, limit = 20 } = ctx.query; - const models = ctx.fs.dc.models; - const sequelize = ctx.fs.dc.orm; - - let options = { - audit2ManId: { $ne: null }, - }, places = [], dep4Ids = []; - if (startDate && endDate) { - options.time = { - $between: [ - moment(startDate).startOf('day').format('YYYY-MM-DD HH:mm:ss'), - moment(endDate).endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - } - } - if (placeName) { - places = await models.Places.findAll({ - where: { - name: { $like: `%${placeName}%` } - } - }) - options.placeId = { - $in: places.map(item => item.id) - } - } else { - places = await models.Places.findAll() - } - - if (regionId && regionId != -1) { - let idList = []; - const curDeptRelation = await sequelize.query(`SELECT "id", "name", "type", "dependence" FROM "department" WHERE "id" in (${regionId});`, { type: QueryTypes.SELECT }); - - const type = curDeptRelation[0].type - if (type != 1) { - const deptRelation = await sequelize.query(`SELECT "id", "name", "type", "dependence" FROM "department" AS "department";`, { type: QueryTypes.SELECT }); - const quArea = deptRelation.filter(f => f.type == 2); - quArea.map(item => { - relationRegion[item.id] = {}; - deptRelation.filter(f => f.type == 3 && f.dependence == item.id).map(x => { - relationRegion[item.id][x.id] = deptRelation.filter(f => f.type == 4 && x.id == f.dependence).map(cun => cun.id); - }); - }) - if (type == 2) { - const quList = [regionId]; - const xiangList = Object.keys(relationRegion[regionId]) - let cunList = xiangList.map(key => { - return relationRegion[regionId][key] - }) - idList = quList.concat(xiangList).concat(cunList.flat(Infinity)) - - options.regionId = { $in: idList }; - } - if (type == 3) { - Object.keys(relationRegion).map(quKey => { - Object.keys(relationRegion[quKey]).map(xiangKey => { - if (xiangKey == regionId) { - const xiangList = [xiangKey]; - const cunList = relationRegion[quKey][xiangKey] - idList = xiangList.concat(cunList); - } - }) - }) - dep4Ids = idList - } - if (type == 4) { - const curUser = await models.User.findOne({ where: { id: userId } }) - const corUserDepId = curUser.departmentId - const corUseUserDepRes = await models.Department.findOne({ where: { id: corUserDepId } }) - if(corUseUserDepRes.type < 4){ - dep4Ids = [regionId] - } else { - options.userId = userId - } - // idList = [regionId] - // options.userId = userId - } - // options.departmentId = { $in: idList }; - } - } - - if (placeType != null && placeType != -1) { - - if (placeType == 0) { - options = Object.assign({}, options, { - $or: [ - { - correctiveAction: { $ne: null }, - }, - { - punishment: { $ne: null }, - } - ] - }) - } - - if (placeType == 1) - options = Object.assign({}, options, { - $or: [ - { - correctiveAction: { $eq: null }, - }, - { - punishment: { $eq: null }, - } - ], - hiddenDangerItem12: { - $ne: null - } - }) - - if (placeType == 2) - options.hiddenDangerItem12 = { - $eq: null - } - } - - let findOption = { - where: options, - offset: offset, - limit: limit, - order: [['time', 'DESC']], - } - - if (dep4Ids.length) { - findOption.include = [{ - required: true, - model: models.User, - as: 'user', - where: { - departmentId: { $in: dep4Ids } - } - }] - } - - const list = await models.UserPlaceSecurityRecord.findAll(findOption) - - for (let item of list) { - const { name } = places.filter(p => p.id == item.placeId)[0] || {}; - const checkAreaName = await sequelize.query(`SELECT "dpt"."name" FROM "department" as "dpt" WHERE "dpt"."id" in (SELECT "department_id" FROM "user" WHERE "id" = ${item.userId} );`, { type: QueryTypes.SELECT }) - const checkUser = await sequelize.query(`SELECT "name", "phone" FROM "user" WHERE "id" = ${item.userId}`, { type: QueryTypes.SELECT }) - rslt.rows.push(Object.assign({}, item.dataValues, { placeName: name, checkAreaName: (checkAreaName[0] || {}).name || '', checkUserName: (checkUser[0] || {}).name || '', checkUserPhone: (checkUser[0] || {}).phone })) - } - - delete findOption.offset - delete findOption.limit - delete findOption.order - findOption.attributes = ['id'] - const dataAll = await models.UserPlaceSecurityRecord.findAll( - findOption - // { - // attributes: ['id'], - // where: options, - // } - ); - rslt.count = dataAll.length; - rslt.ids = dataAll.map(item => item.dataValues.id); - - ctx.status = 200; - ctx.body = rslt; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取数据中台数据失败" - } - } - -} - -module.exports = { - reportDailyStatistic, - reportAreaStatistic, - dangerAreaQuery, -} \ No newline at end of file diff --git a/api/app/lib/controllers/wxReport/index.js b/api/app/lib/controllers/wxReport/index.js deleted file mode 100644 index 83c8711d..00000000 --- a/api/app/lib/controllers/wxReport/index.js +++ /dev/null @@ -1,483 +0,0 @@ -'use strict'; -const moment = require('moment'); -//获取每日汇总 -async function getDayReport(ctx) { - try { - const { date, areaId } = ctx.query; - const models = ctx.fs.dc.models; - let range = [moment(date).startOf('day').format("YYYY-MM-DD HH:mm:ss"), moment(date).endOf('day').format("YYYY-MM-DD HH:mm:ss")] - let rslt = await models.ReportCollection.findAll({ - where: { - dateTime: { - $between: range - }, - regionId: areaId - }, - include: [{ - required: true, - model: models.User, - attributes: ['name', 'username', 'phone'] - }, { - required: false, - model: models.Department, - attributes: ['name'] - }] - }); - ctx.status = 200; - ctx.body = rslt; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取全市每日汇总表失败" - } - } -} - -//获取排查整治汇总表 -async function getGovern(ctx) { - try { - const { date, areaId } = ctx.query; - const models = ctx.fs.dc.models; - let range = [moment(date).startOf('day').format("YYYY-MM-DD HH:mm:ss"), moment(date).endOf('day').format("YYYY-MM-DD HH:mm:ss")] - let rslt = await models.ReportRectify.findAndCountAll({ - where: { - dateTime: { - $between: range - }, - regionId: areaId - }, - include: [{ - required: true, - model: models.User, - attributes: ['id', 'name', 'username', 'phone'] - }, { - required: false, - model: models.Department, - attributes: ['id', 'name'] - }], - limit: 1 - }); - ctx.status = 200; - let obj = { count: 0 } - if (rslt.count > 0) { - obj.area = rslt.rows[0].department; - obj.dateTime = rslt.rows[0].dateTime; - obj.count = rslt.count; - obj.user = rslt.rows[0].user; - obj.isAudit = rslt.rows[0].isAudit - } - ctx.body = obj; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取排查整治汇总表失败" - } - } -} - -//获取排查整治汇总详情 -async function getGovernDetail(ctx) { - try { - const { name, date, areaId, pageSize, pageIndex } = ctx.query; - const models = ctx.fs.dc.models; - let range = [moment(date).startOf('day').format("YYYY-MM-DD HH:mm:ss"), moment(date).endOf('day').format("YYYY-MM-DD HH:mm:ss")] - let whereObj = { - dateTime: { - $between: range - }, - regionId: areaId - }; - if (name) { - whereObj.name = { $like: `%${name}%` } - } - let findObj = { - where: whereObj, - include: [{ - required: true, - model: models.User, - attributes: ['id', 'name', 'username', 'phone'] - }, { - required: false, - model: models.Department, - attributes: ['id', 'name'] - }], - order: [['dateTime', 'desc']] - }; - if (Number(pageSize) > 0 && Number(pageIndex) >= 0) { - findObj.limit = Number(pageSize); - findObj.offset = Number(pageIndex) * Number(pageSize); - } - let rslt = await models.ReportRectify.findAndCountAll(findObj); - ctx.status = 200; - ctx.body = rslt; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取排查整治汇总详情失败" - } - } -} - -/** - * 确认整治汇总场所数据 - * body { - * governDetailIds:'1,2' - * } - */ -async function operateGovern(ctx, next) { - try { - const data = ctx.request.body; - const models = ctx.fs.dc.models; - if (data.governDetailIds && data.governDetailIds.length > 0) { - await models.ReportRectify.update({ - isAudit: true - }, { where: { id: { $in: data.governDetailIds.split(',') } } }); - - ctx.body = { "message": "确认整治汇总下场所数据成功" }; - ctx.status = 200; - } else { - ctx.body = { "message": "确认参数有误" }; - ctx.status = 400; - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "确认整治汇总下场所数据失败" } - } -} - -//获取安全隐患排查详细数据列表 -async function getSecurityRiskList(ctx) { - try { - const { name, date, areaId, pageSize, pageIndex } = ctx.query; - const models = ctx.fs.dc.models; - - let whereObj = {}; - let wheres = { - audit1ManId: { $not: null }, - audit2ManId: { $not: null } - } - if (areaId) { - wheres.regionId = areaId; - } - if (name) - whereObj = { name: { $like: `%${name}%` } } - let findObj = { - attributes: ['id', 'time', 'placeId', 'userId'], - where: - // time: { - // $between: range - // }, - // regionId: areaId, - // audit1ManId: { $not: null }, - // audit2ManId: { $not: null } - wheres - , - include: [{ - required: true, - model: models.Places, - attributes: ['id', 'name'], - where: whereObj - }, { - required: true, - model: models.User, - as: 'user', - attributes: ['id', 'name', 'username', 'phone'] - }], - order: [['time', 'desc']] - }; - if (date) { - let range = [moment(date).startOf('day').format("YYYY-MM-DD HH:mm:ss"), moment(date).endOf('day').format("YYYY-MM-DD HH:mm:ss")] - findObj.where.time = { - $between: range - } - } - if (areaId) { - findObj.where.regionId = areaId - } - - if (Number(pageSize) > 0 && Number(pageIndex) >= 0) { - findObj.limit = Number(pageSize); - findObj.offset = Number(pageIndex) * Number(pageSize); - } - let rslt = await models.UserPlaceSecurityRecord.findAndCountAll(findObj); - ctx.status = 200; - ctx.body = rslt; - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取安全隐患排查详细数据列表失败" - } - } -} - - -//获取待处理数量 -async function getHomeCount(ctx) { - try { - let { userId, departmentId, userRegionType } = ctx.params; - const models = ctx.fs.dc.models; - const departmentRes = await models.Department.findOne({ where: { id: departmentId } }); - if (userRegionType != 2 && userRegionType != 3 && !departmentRes) { - ctx.body = { "message": "请求参数有误" }; - ctx.status = 400; - } else { - //获取当前用户数据范围管辖区域内所有用户ID - let attentionRegionIds = [departmentRes.id]; - let regionType = departmentRes.type; - while (attentionRegionIds.length && regionType && regionType < 4) { - const departmentChilds = await models.Department.findAll({ where: { dependence: { $in: attentionRegionIds } } }); - regionType = departmentChilds.length ? departmentChilds[0].type : null; - attentionRegionIds = departmentChilds.map(d => d.id); - } - let users = await models.User.findAll({ where: { departmentId: { $in: attentionRegionIds } }, attributes: ['id'] }); - let userIds = users.map(u => u.id); - - let rslt = { recordCount: 0, reportCount: null } - if (userIds.length) { - let whereObj = { - userId: { $in: userIds }, - rejectManId: null, - isDraft: false - } - if (userRegionType == 3) { - whereObj.audit1ManId = null; - } else { - whereObj.audit1ManId = { $not: null }; - whereObj.audit2ManId = null; - } - let recordCount = await models.UserPlaceSecurityRecord.count({ - where: whereObj - }); - rslt.recordCount = recordCount; - if (userRegionType == 2) { - let reportCount = await models.ReportCollection.count({ - where: { - userId: null, - regionId: departmentId - } - }); - let reportRectify = await models.ReportRectify.findAll({ - where: { - userId: null, - regionId: departmentId - } - }); - let dateArr = []; - reportRectify.map(r => { - let date = moment(r.dateTime).format("YYYY-MM-DD"); - if (!dateArr.includes(date)) { - dateArr.push(date) - } - }) - rslt.reportCount = reportCount + dateArr.length; - } - } - ctx.status = 200; - ctx.body = rslt; - } - } catch (error) { - console.log(error) - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { - "message": "获取待处理数量失败" - } - } -} - -//每日汇总表上报 -async function operateReport(ctx, next) { - try { - let { id, userId } = ctx.params; - const models = ctx.fs.dc.models; - await models.ReportCollection.update({ - userId: userId - }, { where: { id: id } }); - - ctx.body = { "message": "每日汇总表上报成功" }; - ctx.status = 200; - - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "每日汇总表上报失败" } - } -} - -/** - * 根据筛选条件获取用户审核报表信息 - * @query { - * approveUserId-审批人ID - * reportType-报表类型(1-整治汇总表,2-每日汇总表,null-整治汇总表+每日汇总表) - * timeRange-时间范围 - * regionId-区域ID - * state-审批状态 - * pageIndex-页码 - * pageSize-页宽 - * } ctx - */ -async function getApproveReportCollections(ctx, next) { - try { - const models = ctx.fs.dc.models; - const { approveUserId, reportType, timeRange, regionId, state, pageIndex, pageSize } = ctx.query; - let whereCondition = {}; - if (approveUserId) { - let approveUser = await models.User.findOne({ where: { id: approveUserId } }); - if (approveUser) { - //市级用户可以看到所有报表数据 - const departmentRes = await models.Department.findOne({ where: { id: approveUser.departmentId } }); - if (departmentRes.dependence) { - if (departmentRes.type = 2) { - //区县人员只能看见自己区县下的报表信息 - whereCondition.regionId = departmentRes.id; - } else { - //其它层级无报表信息 - ctx.status = 200; - ctx.body = { - "count": 0, - "rows": [] - }; - return; - } - } - if (regionId) { - let region = await models.Department.findOne({ where: { id: regionId } }); - if (region) { - if (whereCondition.regionId && whereCondition.regionId != regionId) { - //区县人员只能看见自己区县下的报表信息 - ctx.status = 200; - ctx.body = { - "count": 0, - "rows": [] - }; - return; - } else { - whereCondition.regionId = regionId; - } - } else { - ctx.status = 400; - ctx.body = { "message": "区域不存在!" } - return; - } - } - let times = timeRange; - if (timeRange && timeRange.indexOf(',')) { times = timeRange.split(',') } - if (times && times.length > 0) { - const len = times.length; - whereCondition.dateTime = { - $between: [ - moment(times[0]).startOf('day').format('YYYY-MM-DD HH:mm:ss'), - moment(times[len - 1]).endOf('day').format('YYYY-MM-DD HH:mm:ss') - ] - }; - } - switch (Number(state)) { - case 1: //待审批:无审核人员 - whereCondition.userId = null; - break; - case 2://已审批:有审核人员 - whereCondition.userId = { $not: null }; - break; - default: break; - } - let findObj = { - where: whereCondition, - order: [["id", "desc"]], - include: [{ - model: models.User, - attributes: ['name', 'username', 'phone'] - }, { - model: models.Department, - attributes: ['id', 'name'] - }] - }; - if (Number(pageSize) > 0 && Number(pageIndex) >= 0) { - findObj.limit = Number(pageSize); - findObj.offset = Number(pageIndex) * Number(pageSize); - } - switch (Number(reportType)) { - case 1: //整治汇总表 - ctx.body = await models.ReportRectify.findAndCountAll(findObj); - break; - case 2://每日汇总表 - ctx.body = await models.ReportCollection.findAndCountAll(findObj); - break; - default: //整治汇总表+每日汇总表 - const rectifies = await models.ReportRectify.findAndCountAll(findObj); - const collections = await models.ReportCollection.findAndCountAll(findObj); - ctx.body = { - "totalCount": rectifies.count + collections.count, - "totalRows": { - "rectify": rectifies, - "collection": collections - } - }; - break; - } - ctx.status = 200; - } else { - ctx.status = 400; - ctx.body = { "message": "用户不存在!" } - } - } else { - ctx.status = 400; - ctx.body = { "message": "请传用户参数!" } - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "获取审批报表信息失败" } - } -} - -/** - * 上报排查整治汇总表 - * query{ - * userId:1,//上报用户 - * } - * body { - * governDetailIds:'1,2' //排查整治汇总返回数据id字符串 - * } - */ -async function operateGovernReport(ctx, next) { - try { - let { userId } = ctx.params; - const data = ctx.request.body; - const models = ctx.fs.dc.models; - if (data.governDetailIds && data.governDetailIds.length > 0) { - await models.ReportRectify.update({ - userId: userId - }, { where: { id: { $in: data.governDetailIds.split(',') } } }); - - ctx.body = { "message": "上报排查整治汇总表成功" }; - ctx.status = 200; - } else { - ctx.body = { "message": "上报排查整治汇总表参数有误" }; - ctx.status = 400; - } - } catch (error) { - ctx.fs.logger.error(`path: ${ctx.path}, error: ${error}`); - ctx.status = 400; - ctx.body = { "message": "上报排查整治汇总表失败" } - } -} -module.exports = { - getDayReport, - getGovern, - getGovernDetail, - operateGovern, - getSecurityRiskList, - getHomeCount, - operateReport, - getApproveReportCollections, - operateGovernReport -}; \ No newline at end of file diff --git a/api/app/lib/index.js b/api/app/lib/index.js index df16b425..d7df097b 100644 --- a/api/app/lib/index.js +++ b/api/app/lib/index.js @@ -1,6 +1,8 @@ 'use strict'; const routes = require('./routes'); +const fs = require('fs'); +const path = require('path'); const authenticator = require('./middlewares/authenticator'); // const apiLog = require('./middlewares/api-log'); const businessRest = require('./middlewares/business-rest'); @@ -20,17 +22,12 @@ module.exports.entry = function (app, router, opts) { }; module.exports.models = function (dc) { // dc = { orm: Sequelize对象, ORM: Sequelize, models: {} } - require('./models/user')(dc); - require('./models/user_token')(dc); - require('./models/department')(dc); - require('./models/resource')(dc); - require('./models/user_resource')(dc); - require('./models/places')(dc); - require('./models/user_placeSecurityRecord')(dc); - require('./models/report_type')(dc); - require('./models/report_downManage')(dc); - require('./models/department')(dc); - require('./models/report_configition')(dc); - require('./models/report_collection')(dc); - require('./models/report_rectify')(dc); + fs.readdirSync(path.join(__dirname, '/models')).forEach((filename) => { + require(`./models/${filename}`)(dc) + }); + + const { User, Department } = dc.models; + // 定义外键 + User.belongsTo(Department, { foreignKey: 'departmentId', targetKey: 'id' }); + Department.hasMany(User, { foreignKey: 'departmentId', sourceKey: 'id' }); }; diff --git a/api/app/lib/models/department.js b/api/app/lib/models/department.js index 55c2a03d..c0801534 100644 --- a/api/app/lib/models/department.js +++ b/api/app/lib/models/department.js @@ -8,11 +8,11 @@ module.exports = dc => { id: { type: DataTypes.INTEGER, allowNull: false, - defaultValue: null, + defaultValue: "nextval(department_id_seq1::regclass)", comment: null, primaryKey: true, field: "id", - autoIncrement: true, + autoIncrement: false, unique: "department_id_uindex" }, name: { @@ -28,18 +28,18 @@ module.exports = dc => { type: DataTypes.INTEGER, allowNull: true, defaultValue: null, - comment: "上级部门/从属", + comment: null, primaryKey: false, field: "dependence", autoIncrement: false }, - type: { - type: DataTypes.INTEGER, + delete: { + type: DataTypes.BOOLEAN, allowNull: false, defaultValue: null, - comment: "市1,区县2,乡镇3,村4", + comment: null, primaryKey: false, - field: "type", + field: "delete", autoIncrement: false } }, { @@ -48,10 +48,5 @@ module.exports = dc => { indexes: [] }); dc.models.Department = Department; - - const User = dc.models.User; - User.belongsTo(Department, { foreignKey: 'departmentId', targetKey: 'id' }); - Department.hasMany(User, { foreignKey: 'departmentId', sourceKey: 'id' }); - return Department; }; \ No newline at end of file diff --git a/api/app/lib/models/places.js b/api/app/lib/models/places.js deleted file mode 100644 index f25c0939..00000000 --- a/api/app/lib/models/places.js +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const Places = sequelize.define("places", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "places_id_uindex" - }, - name: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "场所名称", - primaryKey: false, - field: "name", - autoIncrement: false - }, - describe: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "描述", - primaryKey: false, - field: "describe", - autoIncrement: false - }, - userId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "userId", - autoIncrement: false, - references: { - key: "id", - model: "user" - } - }, - }, { - tableName: "places", - comment: "", - indexes: [] - }); - dc.models.Places = Places; - - const User = dc.models.User; - Places.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' }); - User.hasMany(Places, { foreignKey: 'userId', sourceKey: 'id' }); - - return Places; -}; \ No newline at end of file diff --git a/api/app/lib/models/post.js b/api/app/lib/models/post.js deleted file mode 100644 index 7efc90b0..00000000 --- a/api/app/lib/models/post.js +++ /dev/null @@ -1,47 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const Post = sequelize.define("post", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "post_id_uindex" - }, - name: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "name", - autoIncrement: false - }, - departmentId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "department_id", - autoIncrement: false, - references: { - key: "id", - model: "department" - } - } - }, { - tableName: "post", - comment: "", - indexes: [] - }); - dc.models.Post = Post; - return Post; -}; \ No newline at end of file diff --git a/api/app/lib/models/post_resource.js b/api/app/lib/models/post_resource.js deleted file mode 100644 index 253121c6..00000000 --- a/api/app/lib/models/post_resource.js +++ /dev/null @@ -1,51 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const PostResource = sequelize.define("postResource", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "post_resource_id_uindex" - }, - postId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "post_id", - autoIncrement: false, - references: { - key: "id", - model: "post" - } - }, - resource: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "resource", - autoIncrement: false, - references: { - key: "code", - model: "resource" - } - } - }, { - tableName: "post_resource", - comment: "", - indexes: [] - }); - dc.models.PostResource = PostResource; - return PostResource; -}; \ No newline at end of file diff --git a/api/app/lib/models/region_type.js b/api/app/lib/models/region_type.js deleted file mode 100644 index 1a596ac6..00000000 --- a/api/app/lib/models/region_type.js +++ /dev/null @@ -1,34 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const RegionType = sequelize.define("regionType", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "region_type_id_uindex" - }, - type: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "type", - autoIncrement: false - } - }, { - tableName: "region_type", - comment: "", - indexes: [] - }); - dc.models.RegionType = RegionType; - return RegionType; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_collection.js b/api/app/lib/models/report_collection.js deleted file mode 100644 index b04aafd3..00000000 --- a/api/app/lib/models/report_collection.js +++ /dev/null @@ -1,88 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportCollection = sequelize.define("reportCollection", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "report_collection_id_uindex" - }, - regionId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "县区(id)", - primaryKey: false, - field: "regionId", - autoIncrement: false - }, - dateTime: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "dateTime", - autoIncrement: false - }, - placeCount: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "场所总数", - primaryKey: false, - field: "placeCount", - autoIncrement: false - }, - hiddenDangerCount: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "排查隐患总数", - primaryKey: false, - field: "hiddenDangerCount", - autoIncrement: false - }, - hiddenDangerItem12Count: { - type: DataTypes.JSON, - allowNull: true, - defaultValue: null, - comment: "排查隐患详细类目 1-12 项 总数", - primaryKey: false, - field: "hiddenDangerItem12Count", - autoIncrement: false - }, - userId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "填报人(县区联络员)", - primaryKey: false, - field: "userId", - autoIncrement: false - } - }, { - tableName: "report_collection", - comment: "", - indexes: [] - }); - dc.models.ReportCollection = ReportCollection; - - const User = dc.models.User; - ReportCollection.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' }); - User.hasMany(ReportCollection, { foreignKey: 'userId', sourceKey: 'id' }); - - const Department = dc.models.Department; - ReportCollection.belongsTo(Department, { foreignKey: 'regionId', targetKey: 'id' }); - Department.hasMany(ReportCollection, { foreignKey: 'regionId', sourceKey: 'id' }); - - return ReportCollection; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_configition.js b/api/app/lib/models/report_configition.js deleted file mode 100644 index 629b5380..00000000 --- a/api/app/lib/models/report_configition.js +++ /dev/null @@ -1,74 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportConfigition = sequelize.define("reportConfigition", { - reportName: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "报表名称", - primaryKey: false, - field: "reportName", - autoIncrement: false - }, - regionId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "区域id", - primaryKey: false, - field: "regionId", - autoIncrement: false - }, - reportTypeId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "报表类型", - primaryKey: false, - field: "reportTypeId", - autoIncrement: false, - references: { - key: "id", - model: "reportType" - } - }, - excuteTime: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "生成时间 cron表达式", - primaryKey: false, - field: "excuteTime", - autoIncrement: false - }, - isEnable: { - type: DataTypes.BOOLEAN, - allowNull: true, - defaultValue: null, - comment: "启用状态", - primaryKey: false, - field: "isEnable", - autoIncrement: false - }, - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: "序号", - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "report_configition_id_uindex" - } - }, { - tableName: "report_configition", - comment: "", - indexes: [] - }); - dc.models.ReportConfigition = ReportConfigition; - return ReportConfigition; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_countyCollect.js b/api/app/lib/models/report_countyCollect.js deleted file mode 100644 index 78dd9d05..00000000 --- a/api/app/lib/models/report_countyCollect.js +++ /dev/null @@ -1,69 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportCountyCollect = sequelize.define("reportCountyCollect", { - id: { - type: DataTypes.BIGINT, - allowNull: true, - defaultValue: null, - comment: "序号", - primaryKey: false, - field: "id", - autoIncrement: false - }, - name: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "名称", - primaryKey: false, - field: "name", - autoIncrement: false - }, - address: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "地址", - primaryKey: false, - field: "address", - autoIncrement: false - }, - hiddenDanger: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "排查发现隐患", - primaryKey: false, - field: "hiddenDanger", - autoIncrement: false - }, - correctiveAction: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "采取措施", - primaryKey: false, - field: "correctiveAction", - autoIncrement: false - }, - punishment: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "实施处罚,强制措施情况", - primaryKey: false, - field: "punishment", - autoIncrement: false - } - }, { - tableName: "report_countyCollect", - comment: "", - indexes: [] - }); - dc.models.ReportCountyCollect = ReportCountyCollect; - return ReportCountyCollect; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_downManage.js b/api/app/lib/models/report_downManage.js deleted file mode 100644 index 91675253..00000000 --- a/api/app/lib/models/report_downManage.js +++ /dev/null @@ -1,82 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportDownManage = sequelize.define("reportDownManage", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: "nextval(\"report_downManage_id_seq\"::regclass)", - comment: null, - primaryKey: true, - field: "id", - autoIncrement: false, - unique: "report_downmanage_id_uindex" - }, - reportName: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "报表名称", - primaryKey: false, - field: "reportName", - autoIncrement: false - }, - regionId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: "区域id", - primaryKey: false, - field: "regionId", - autoIncrement: false, - references: { - key: "id", - model: "department" - } - }, - reportTypeId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: "报表类型id\n1.整治表\n2.汇总表", - primaryKey: false, - field: "reportTypeId", - autoIncrement: false, - references: { - key: "id", - model: "reportType" - } - }, - filePath: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "文件路径", - primaryKey: false, - field: "filePath", - autoIncrement: false, - }, - creatTime: { - type: DataTypes.DATE, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "creatTime", - autoIncrement: false - } - }, { - tableName: "report_downManage", - comment: "", - indexes: [] - }); - dc.models.ReportDownManage = ReportDownManage; - - const { ReportType, Department } = dc.models; - ReportDownManage.belongsTo(ReportType, { foreignKey: 'reportTypeId', targetKey: 'id' }); - ReportDownManage.belongsTo(Department, { foreignKey: 'regionId', targetKey: 'id' }); - return ReportDownManage; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_rectify.js b/api/app/lib/models/report_rectify.js deleted file mode 100644 index dd534693..00000000 --- a/api/app/lib/models/report_rectify.js +++ /dev/null @@ -1,115 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportRectify = sequelize.define("reportRectify", { - id: { - type: DataTypes.BIGINT, - allowNull: true, - defaultValue: "nextval(\"report_countyCollect_id_seq\"::regclass)", - comment: "序号", - primaryKey: true, - field: "id", - autoIncrement: false, - unique: "report_countycollect_id_uindex" - }, - regionId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "县区(id)", - primaryKey: false, - field: "regionId", - autoIncrement: false - }, - dateTime: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "dateTime", - autoIncrement: false - }, - name: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "名称", - primaryKey: false, - field: "name", - autoIncrement: false - }, - address: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "地址", - primaryKey: false, - field: "address", - autoIncrement: false - }, - hiddenDanger: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "排查发现隐患", - primaryKey: false, - field: "hiddenDanger", - autoIncrement: false - }, - correctiveAction: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "采取措施", - primaryKey: false, - field: "correctiveAction", - autoIncrement: false - }, - punishment: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "实施处罚,强制措施情况", - primaryKey: false, - field: "punishment", - autoIncrement: false - }, - userId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "web端上报", - primaryKey: false, - field: "userId", - autoIncrement: false - }, - isAudit: { - type: DataTypes.BOOLEAN, - allowNull: true, - defaultValue: null, - comment: "市级 确认审核", - primaryKey: false, - field: "isAudit", - autoIncrement: false - }, - }, { - tableName: "report_rectify", - comment: "", - indexes: [] - }); - dc.models.ReportRectify = ReportRectify; - - const User = dc.models.User; - ReportRectify.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' }); - User.hasMany(ReportRectify, { foreignKey: 'userId', sourceKey: 'id' }); - - const Department = dc.models.Department; - ReportRectify.belongsTo(Department, { foreignKey: 'regionId', targetKey: 'id' }); - Department.hasMany(ReportRectify, { foreignKey: 'regionId', sourceKey: 'id' }); - - return ReportRectify; -}; \ No newline at end of file diff --git a/api/app/lib/models/report_type.js b/api/app/lib/models/report_type.js deleted file mode 100644 index d09c35fd..00000000 --- a/api/app/lib/models/report_type.js +++ /dev/null @@ -1,33 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const ReportType = sequelize.define("reportType", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: false - }, - name: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "name", - autoIncrement: false - } - }, { - tableName: "report_type", - comment: "", - indexes: [] - }); - dc.models.ReportType = ReportType; - return ReportType; -}; \ No newline at end of file diff --git a/api/app/lib/models/resource.js b/api/app/lib/models/resource.js deleted file mode 100644 index f8ab18c6..00000000 --- a/api/app/lib/models/resource.js +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const Resource = sequelize.define("resource", { - code: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "code", - autoIncrement: false, - unique: "resource_code_uindex" - }, - name: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "name", - autoIncrement: false, - unique: "resource_name_uindex" - }, - parentResource: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: null, - primaryKey: false, - field: "parent_resource", - autoIncrement: false - } - }, { - tableName: "resource", - comment: "", - indexes: [] - }); - dc.models.Resource = Resource; - return Resource; -}; \ No newline at end of file diff --git a/api/app/lib/models/road.js b/api/app/lib/models/road.js index 4b26044b..3fda74cd 100644 --- a/api/app/lib/models/road.js +++ b/api/app/lib/models/road.js @@ -2,456 +2,465 @@ 'use strict'; module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const Road = sequelize.define("road", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "road_id_uindex" - }, - routeName: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路线名称", - primaryKey: false, - field: "route_name", - autoIncrement: false - }, - routeCode: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路线代码", - primaryKey: false, - field: "route_code", - autoIncrement: false - }, - sectionNo: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路段序号", - primaryKey: false, - field: "section_no", - autoIncrement: false - }, - townshipCode: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "乡镇编码", - primaryKey: false, - field: "township_code", - autoIncrement: false - }, - startingPlaceName: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "起点地名", - primaryKey: false, - field: "starting_place_name", - autoIncrement: false - }, - startStation: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "起点桩号", - primaryKey: false, - field: "start_station", - autoIncrement: false - }, - categoryOfStartingPointAndDividingPoint: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "起点分界点类别", - primaryKey: false, - field: "category_of_starting_point_and_dividing_point", - autoIncrement: false - }, - stopPlaceName: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "止点地名", - primaryKey: false, - field: "stop_place_name", - autoIncrement: false - }, - categoryOfDeadCenterAndDividingPoint: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "止点分界点类别", - primaryKey: false, - field: "category_of_dead_center_and_dividing_point", - autoIncrement: false - }, - stopStation: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "止点桩号", - primaryKey: false, - field: "stop_station", - autoIncrement: false - }, - sectionType: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路段类型", - primaryKey: false, - field: "section_type", - autoIncrement: false - }, - natureOfRoadSection: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路段性质", - primaryKey: false, - field: "nature_of_road_section", - autoIncrement: false - }, - completionTime: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "建成时间", - primaryKey: false, - field: "completion_time", - autoIncrement: false - }, - gbmAndCivilizedModelRoad: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "GBM及文明样板路", - primaryKey: false, - field: "gbm_and_civilized_model_road", - autoIncrement: false - }, - landforms: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "地貌", - primaryKey: false, - field: "landforms", - autoIncrement: false - }, - natureOfCharges: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "收费性质", - primaryKey: false, - field: "nature_of_charges", - autoIncrement: false - }, - numberOfCulverts: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "涵洞数量", - primaryKey: false, - field: "number_of_culverts", - autoIncrement: false - }, - technicalLevel: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "技术等级", - primaryKey: false, - field: "technical_level", - autoIncrement: false - }, - pavementType: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路面类型", - primaryKey: false, - field: "pavement_type", - autoIncrement: false - }, - pavementWidth: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路面宽度", - primaryKey: false, - field: "pavement_width", - autoIncrement: false - }, - subgradeWidth: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路基宽度", - primaryKey: false, - field: "subgrade_width", - autoIncrement: false - }, - laneCharacteristics: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "车道特征", - primaryKey: false, - field: "lane_characteristics", - autoIncrement: false - }, - whetherItIsOpenToTrafficInSunnyOrRainyDays: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "是否晴雨通车", - primaryKey: false, - field: "whether_it_is_open_to_traffic_in_sunny_or_rainy_days", - autoIncrement: false - }, - designSpeedPerHour: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "设计时速", - primaryKey: false, - field: "design_speed_per_hour", - autoIncrement: false - }, - urbanManagementSectionOrNot: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "是否城管路段", - primaryKey: false, - field: "urban_management_section_or_not", - autoIncrement: false - }, - managementAndMaintenanceUnit: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "管养单位", - primaryKey: false, - field: "management_and_maintenance_unit", - autoIncrement: false - }, - roadAdministrationUnit: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "路政管理单位", - primaryKey: false, - field: "road_administration_unit", - autoIncrement: false - }, - alimentation: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "列养情况", - primaryKey: false, - field: "alimentation", - autoIncrement: false - }, - sourceOfListedMaintenanceFunds: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "列养资金来源", - primaryKey: false, - field: "source_of_listed_maintenance_funds", - autoIncrement: false - }, - curingTime: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "养护时间", - primaryKey: false, - field: "curing_time_", - autoIncrement: false - }, - greeningMileage: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "可绿化里程", - primaryKey: false, - field: "greening_mileage", - autoIncrement: false - }, - greeningMileaged: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "已绿化里程", - primaryKey: false, - field: "greening_mileaged", - autoIncrement: false - }, - typeOfRepeatedRoadSection: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "重复道路路段类型", - primaryKey: false, - field: "type_of_repeated_road_section", - autoIncrement: false - }, - serialNumberOfRepeatedSection: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "重复路段序号", - primaryKey: false, - field: "serial_number_of_repeated_section", - autoIncrement: false - }, - repeatedSectionRouteCode: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "重复路段路线编码", - primaryKey: false, - field: "repeated_section_route_code", - autoIncrement: false - }, - reportingUnit: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "填报单位", - primaryKey: false, - field: "reporting_unit", - autoIncrement: false - }, - reasonForChange: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "变更原因", - primaryKey: false, - field: "reason_for_change", - autoIncrement: false - }, - changeTime: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "变更时间", - primaryKey: false, - field: "change_time", - autoIncrement: false - }, - whetherMaintenanceManagedHighway: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "是否按干线公路管理接养", - primaryKey: false, - field: "whether_maintenance_managed_highway", - autoIncrement: false - }, - remarks: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "备注", - primaryKey: false, - field: "remarks", - autoIncrement: false - }, - routeCodeOfLastYear: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "上年路线编码", - primaryKey: false, - field: "route_code_of_last_year", - autoIncrement: false - }, - routeNameOfLastYear: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "上年路线名称", - primaryKey: false, - field: "route_name_of_last_year", - autoIncrement: false - }, - startingStationOfLastYear: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "上年起点桩号", - primaryKey: false, - field: "starting_station_of_last_year", - autoIncrement: false - }, - lastYearsEndingPointStakeNumber: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "上年止点桩号", - primaryKey: false, - field: "last_years_ending_point_stake_number", - autoIncrement: false - }, - graphicMileage: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "图形里程", - primaryKey: false, - field: "graphic_mileage", - autoIncrement: false - }, - chainageMileage: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "桩号里程", - primaryKey: false, - field: "chainage_mileage", - autoIncrement: false - }, - districtcounty: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "所在区县", - primaryKey: false, - field: "districtcounty", - autoIncrement: false - }, - locationCity: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "所在地市", - primaryKey: false, - field: "location_city", - autoIncrement: false - } - }, { - tableName: "road", - comment: "", - indexes: [] - }); - dc.models.Road = Road; - return Road; + const DataTypes = dc.ORM; + const sequelize = dc.orm; + const Road = sequelize.define("road", { + id: { + type: DataTypes.INTEGER, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: true, + field: "id", + autoIncrement: true, + unique: "road_id_uindex" + }, + routeName: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路线名称", + primaryKey: false, + field: "route_name", + autoIncrement: false + }, + routeCode: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路线代码", + primaryKey: false, + field: "route_code", + autoIncrement: false + }, + sectionNo: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路段序号", + primaryKey: false, + field: "section_no", + autoIncrement: false + }, + townshipCode: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "乡镇编码", + primaryKey: false, + field: "township_code", + autoIncrement: false + }, + startingPlaceName: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "起点地名", + primaryKey: false, + field: "starting_place_name", + autoIncrement: false + }, + startStation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "起点桩号", + primaryKey: false, + field: "start_station", + autoIncrement: false + }, + categoryOfStartingPointAndDividingPoint: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "起点分界点类别", + primaryKey: false, + field: "category_of_starting_point_and_dividing_point", + autoIncrement: false + }, + stopPlaceName: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "止点地名", + primaryKey: false, + field: "stop_place_name", + autoIncrement: false + }, + categoryOfDeadCenterAndDividingPoint: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "止点分界点类别", + primaryKey: false, + field: "category_of_dead_center_and_dividing_point", + autoIncrement: false + }, + stopStation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "止点桩号", + primaryKey: false, + field: "stop_station", + autoIncrement: false + }, + sectionType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路段类型", + primaryKey: false, + field: "section_type", + autoIncrement: false + }, + natureOfRoadSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路段性质", + primaryKey: false, + field: "nature_of_road_section", + autoIncrement: false + }, + completionTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "建成时间", + primaryKey: false, + field: "completion_time", + autoIncrement: false + }, + gbmAndCivilizedModelRoad: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "GBM及文明样板路", + primaryKey: false, + field: "gbm_and_civilized_model_road", + autoIncrement: false + }, + landforms: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "地貌", + primaryKey: false, + field: "landforms", + autoIncrement: false + }, + natureOfCharges: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "收费性质", + primaryKey: false, + field: "nature_of_charges", + autoIncrement: false + }, + numberOfCulverts: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "涵洞数量", + primaryKey: false, + field: "number_of_culverts", + autoIncrement: false + }, + technicalLevel: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "技术等级", + primaryKey: false, + field: "technical_level", + autoIncrement: false + }, + pavementType: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路面类型", + primaryKey: false, + field: "pavement_type", + autoIncrement: false + }, + pavementWidth: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路面宽度", + primaryKey: false, + field: "pavement_width", + autoIncrement: false + }, + subgradeWidth: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路基宽度", + primaryKey: false, + field: "subgrade_width", + autoIncrement: false + }, + laneCharacteristics: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "车道特征", + primaryKey: false, + field: "lane_characteristics", + autoIncrement: false + }, + whetherItIsOpenToTrafficInSunnyOrRainyDays: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "是否晴雨通车", + primaryKey: false, + field: "whether_it_is_open_to_traffic_in_sunny_or_rainy_days", + autoIncrement: false + }, + designSpeedPerHour: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "设计时速", + primaryKey: false, + field: "design_speed_per_hour", + autoIncrement: false + }, + urbanManagementSectionOrNot: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "是否城管路段", + primaryKey: false, + field: "urban_management_section_or_not", + autoIncrement: false + }, + managementAndMaintenanceUnit: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "管养单位", + primaryKey: false, + field: "management_and_maintenance_unit", + autoIncrement: false + }, + roadAdministrationUnit: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "路政管理单位", + primaryKey: false, + field: "road_administration_unit", + autoIncrement: false + }, + alimentation: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "列养情况", + primaryKey: false, + field: "alimentation", + autoIncrement: false + }, + sourceOfListedMaintenanceFunds: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "列养资金来源", + primaryKey: false, + field: "source_of_listed_maintenance_funds", + autoIncrement: false + }, + curingTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "养护时间", + primaryKey: false, + field: "curing_time_", + autoIncrement: false + }, + greeningMileage: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "可绿化里程", + primaryKey: false, + field: "greening_mileage", + autoIncrement: false + }, + greeningMileaged: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "已绿化里程", + primaryKey: false, + field: "greening_mileaged", + autoIncrement: false + }, + typeOfRepeatedRoadSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "重复道路路段类型", + primaryKey: false, + field: "type_of_repeated_road_section", + autoIncrement: false + }, + serialNumberOfRepeatedSection: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "重复路段序号", + primaryKey: false, + field: "serial_number_of_repeated_section", + autoIncrement: false + }, + repeatedSectionRouteCode: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "重复路段路线编码", + primaryKey: false, + field: "repeated_section_route_code", + autoIncrement: false + }, + reportingUnit: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "填报单位", + primaryKey: false, + field: "reporting_unit", + autoIncrement: false + }, + reasonForChange: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "变更原因", + primaryKey: false, + field: "reason_for_change", + autoIncrement: false + }, + changeTime: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "变更时间", + primaryKey: false, + field: "change_time", + autoIncrement: false + }, + whetherMaintenanceManagedHighway: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "是否按干线公路管理接养", + primaryKey: false, + field: "whether_maintenance_managed_highway", + autoIncrement: false + }, + remarks: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "备注", + primaryKey: false, + field: "remarks", + autoIncrement: false + }, + routeCodeOfLastYear: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "上年路线编码", + primaryKey: false, + field: "route_code_of_last_year", + autoIncrement: false + }, + routeNameOfLastYear: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "上年路线名称", + primaryKey: false, + field: "route_name_of_last_year", + autoIncrement: false + }, + startingStationOfLastYear: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "上年起点桩号", + primaryKey: false, + field: "starting_station_of_last_year", + autoIncrement: false + }, + lastYearsEndingPointStakeNumber: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "上年止点桩号", + primaryKey: false, + field: "last_years_ending_point_stake_number", + autoIncrement: false + }, + graphicMileage: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "图形里程", + primaryKey: false, + field: "graphic_mileage", + autoIncrement: false + }, + chainageMileage: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "桩号里程", + primaryKey: false, + field: "chainage_mileage", + autoIncrement: false + }, + districtcounty: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所在区县", + primaryKey: false, + field: "districtcounty", + autoIncrement: false + }, + locationCity: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "所在地市", + primaryKey: false, + field: "location_city", + autoIncrement: false + }, + level: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: null, + comment: "县 / 乡 / 村", + primaryKey: false, + field: "level", + autoIncrement: false + } + }, { + tableName: "road", + comment: "", + indexes: [] + }); + dc.models.Road = Road; + return Road; }; \ No newline at end of file diff --git a/api/app/lib/models/user.js b/api/app/lib/models/user.js index 683ccaf7..25059df6 100644 --- a/api/app/lib/models/user.js +++ b/api/app/lib/models/user.js @@ -8,11 +8,11 @@ module.exports = dc => { id: { type: DataTypes.INTEGER, allowNull: false, - defaultValue: null, + defaultValue: "nextval(user_id_seq1::regclass)", comment: null, primaryKey: true, field: "id", - autoIncrement: true, + autoIncrement: false, unique: "user_id_uindex" }, name: { @@ -28,7 +28,7 @@ module.exports = dc => { type: DataTypes.STRING, allowNull: false, defaultValue: null, - comment: "用户名 账号", + comment: null, primaryKey: false, field: "username", autoIncrement: false @@ -46,54 +46,54 @@ module.exports = dc => { type: DataTypes.INTEGER, allowNull: false, defaultValue: null, - comment: "部门id", - primaryKey: false, - field: "department_id", - autoIncrement: false - }, - email: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, comment: null, primaryKey: false, - field: "email", + field: "department_id", autoIncrement: false }, - enable: { + delete: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: null, - comment: "启用状态", + comment: null, primaryKey: false, - field: "enable", + field: "delete", autoIncrement: false }, - delete: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: null, + remark: { + type: DataTypes.STRING, + allowNull: true, + defaultValue: "th", comment: null, primaryKey: false, - field: "delete", + field: "remark", autoIncrement: false }, phone: { type: DataTypes.STRING, - allowNull: false, + allowNull: true, defaultValue: null, - comment: "手机号(小程序使用手机号登录)", + comment: null, primaryKey: false, field: "phone", autoIncrement: false }, - post: { + email: { type: DataTypes.STRING, allowNull: true, defaultValue: null, - comment: "职位", + comment: null, + primaryKey: false, + field: "email", + autoIncrement: false + }, + enable: { + type: DataTypes.BOOLEAN, + allowNull: false, + defaultValue: null, + comment: null, primaryKey: false, - field: "post", + field: "enable", autoIncrement: false } }, { @@ -102,7 +102,5 @@ module.exports = dc => { indexes: [] }); dc.models.User = User; - - return User; }; \ No newline at end of file diff --git a/api/app/lib/models/user_placeSecurityRecord.js b/api/app/lib/models/user_placeSecurityRecord.js deleted file mode 100644 index 1adcce42..00000000 --- a/api/app/lib/models/user_placeSecurityRecord.js +++ /dev/null @@ -1,311 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const UserPlaceSecurityRecord = sequelize.define("userPlaceSecurityRecord", { - id: { - type: DataTypes.BIGINT, - allowNull: false, - defaultValue: null, - comment: "id", - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "user_placesecurityrecord_id_uindex" - }, - time: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: "录入时间", - primaryKey: false, - field: "time", - autoIncrement: false - }, - placeId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "场所id", - primaryKey: false, - field: "placeId", - autoIncrement: false, - references: { - key: "id", - model: "places" - } - }, - hiddenDangerItem12: { - type: DataTypes.JSON, - allowNull: true, - defaultValue: null, - comment: "12项隐患信息", - primaryKey: false, - field: "hiddenDangerItem12", - autoIncrement: false - }, - description: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "存在具体问题描述", - primaryKey: false, - field: "description", - autoIncrement: false - }, - audit1ManId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "乡镇人审核", - primaryKey: false, - field: "audit1ManId", - autoIncrement: false, - references: { - key: "id", - model: "user" - } - }, - audit2ManId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "区县人复核", - primaryKey: false, - field: "audit2ManId", - autoIncrement: false, - references: { - key: "id", - model: "user" - } - }, - regionId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "所属县/区", - primaryKey: false, - field: "regionId", - autoIncrement: false, - references: { - key: "id", - model: "department" - } - }, - userId: { - type: DataTypes.BIGINT, - allowNull: true, - defaultValue: null, - comment: "用户id,填报人", - primaryKey: false, - field: "userId", - autoIncrement: false - }, - placeType: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "场所性质", - primaryKey: false, - field: "placeType", - autoIncrement: false - }, - address: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "场所地址", - primaryKey: false, - field: "address", - autoIncrement: false - }, - phone: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: "负责人手机号", - primaryKey: false, - field: "phone", - autoIncrement: false - }, - dimension: { - type: DataTypes.REAL, - allowNull: true, - defaultValue: null, - comment: "面积", - primaryKey: false, - field: "dimension", - autoIncrement: false - }, - floors: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "多少层", - primaryKey: false, - field: "floors", - autoIncrement: false - }, - numberOfPeople: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "常住人数", - primaryKey: false, - field: "numberOfPeople", - autoIncrement: false - }, - location: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "经纬度", - primaryKey: false, - field: "location", - autoIncrement: false - }, - isEnable: { - type: DataTypes.BOOLEAN, - allowNull: true, - defaultValue: null, - comment: "是否为合用场所", - primaryKey: false, - field: "isEnable", - autoIncrement: false - }, - rejectManId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - comment: "驳回人", - primaryKey: false, - field: "rejectManId", - autoIncrement: false, - references: { - key: "id", - model: "user" - } - }, - rejectReasons: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "驳回意见", - primaryKey: false, - field: "rejectReasons", - autoIncrement: false - }, - isDraft: { - type: DataTypes.BOOLEAN, - allowNull: true, - defaultValue: null, - comment: "是否草稿", - primaryKey: false, - field: "isDraft", - autoIncrement: false - }, - placeOwner: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "场所负责人", - primaryKey: false, - field: "placeOwner", - autoIncrement: false - }, - localtionDescribe: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "经纬度定位描述", - primaryKey: false, - field: "localtionDescribe", - autoIncrement: false - }, - correctiveAction: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "采取措施", - primaryKey: false, - field: "correctiveAction", - autoIncrement: false - }, - type: { - type: DataTypes.BOOLEAN, - allowNull: true, - defaultValue: null, - comment: "是否重新发起", - primaryKey: false, - field: "type", - autoIncrement: false - }, - punishment: { - type: DataTypes.STRING, - allowNull: true, - defaultValue: null, - comment: "实施处罚,强制措施情况", - primaryKey: false, - field: "punishment", - autoIncrement: false - }, - audit1ManIdTime: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: "乡镇人审核时间", - primaryKey: false, - field: "audit1ManIdTime", - autoIncrement: false - }, - audit2ManIdTime: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: "区县人复核时间", - primaryKey: false, - field: "audit2ManIdTime", - autoIncrement: false - }, - rejectTime: { - type: DataTypes.DATE, - allowNull: true, - defaultValue: null, - comment: "驳回日期", - primaryKey: false, - field: "rejectTime", - autoIncrement: false - }, - departmentId: { - type: DataTypes.INTEGER, - allowNull: true, - defaultValue: null, - primaryKey: false, - field: "department_id", - autoIncrement: false, - }, - }, { - tableName: "user_placeSecurityRecord", - comment: "", - indexes: [] - }); - dc.models.UserPlaceSecurityRecord = UserPlaceSecurityRecord; - - const Places = dc.models.Places; - UserPlaceSecurityRecord.belongsTo(Places, { foreignKey: 'placeId', targetKey: 'id' }); - Places.hasMany(UserPlaceSecurityRecord, { foreignKey: 'placeId', sourceKey: 'id' }); - - const User = dc.models.User; - UserPlaceSecurityRecord.belongsTo(User, { as: 'user', foreignKey: 'userId', targetKey: 'id' }); - User.hasMany(UserPlaceSecurityRecord, { foreignKey: 'userId', sourceKey: 'id' }); - - UserPlaceSecurityRecord.belongsTo(User, { as: 'audit1ManUser', foreignKey: 'audit1ManId', targetKey: 'id' }); - - UserPlaceSecurityRecord.belongsTo(User, { as: 'audit2ManUser', foreignKey: 'audit2ManId', targetKey: 'id' }); - - UserPlaceSecurityRecord.belongsTo(User, { as: 'rejectManUser', foreignKey: 'rejectManId', targetKey: 'id' }); - - return UserPlaceSecurityRecord; -}; \ No newline at end of file diff --git a/api/app/lib/models/user_resource.js b/api/app/lib/models/user_resource.js deleted file mode 100644 index 455c3a88..00000000 --- a/api/app/lib/models/user_resource.js +++ /dev/null @@ -1,61 +0,0 @@ -/* eslint-disable*/ -'use strict'; - -module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const UserResource = sequelize.define("userResource", { - id: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "id", - autoIncrement: true, - unique: "post_resource_id_uindex" - }, - userId: { - type: DataTypes.INTEGER, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "user_id", - autoIncrement: false, - references: { - key: "id", - model: "post" - } - }, - resourceId: { - type: DataTypes.STRING, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "resource", - autoIncrement: false, - references: { - key: "code", - model: "resource" - } - } - }, { - tableName: "user_resource", - comment: "", - indexes: [] - }); - dc.models.UserResource = UserResource; - - const User = dc.models.User; - UserResource.belongsTo(User, { foreignKey: 'userId', targetKey: 'id' }); - User.hasMany(UserResource, { foreignKey: 'userId', sourceKey: 'id' }); - - const Resource = dc.models.Resource; - UserResource.belongsTo(Resource, { foreignKey: 'resourceId', targetKey: 'code' }); - Resource.hasMany(UserResource, { foreignKey: 'resourceId', sourceKey: 'code' }); - Resource.hasMany(Resource, { foreignKey: 'parentResource', sourceKey: 'code' }); - - return UserResource; -}; \ No newline at end of file diff --git a/api/app/lib/models/user_token.js b/api/app/lib/models/user_token.js index 3f2354e0..384ee923 100644 --- a/api/app/lib/models/user_token.js +++ b/api/app/lib/models/user_token.js @@ -2,42 +2,41 @@ 'use strict'; module.exports = dc => { - const DataTypes = dc.ORM; - const sequelize = dc.orm; - const UserToken = sequelize.define("userToken", { - token: { - type: DataTypes.UUIDV4, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: true, - field: "token", - autoIncrement: false, - unique: "user_token_token_uindex" - }, - userInfo: { - type: DataTypes.JSONB, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "user_info", - autoIncrement: false - }, - expired: { - type: DataTypes.DATE, - allowNull: false, - defaultValue: null, - comment: null, - primaryKey: false, - field: "expired", - autoIncrement: false - } - }, { - tableName: "user_token", - comment: "", - indexes: [] - }); - dc.models.UserToken = UserToken; - return UserToken; + const DataTypes = dc.ORM; + const sequelize = dc.orm; + const UserToken = sequelize.define("userToken", { + token: { + type: DataTypes.UUIDV4, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: false, + field: "token", + autoIncrement: false + }, + userInfo: { + type: DataTypes.JSONB, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: false, + field: "user_info", + autoIncrement: false + }, + expired: { + type: DataTypes.DATE, + allowNull: false, + defaultValue: null, + comment: null, + primaryKey: false, + field: "expired", + autoIncrement: false + } + }, { + tableName: "user_token", + comment: "", + indexes: [] + }); + dc.models.UserToken = UserToken; + return UserToken; }; \ No newline at end of file diff --git a/api/app/lib/routes/approval/index.js b/api/app/lib/routes/approval/index.js deleted file mode 100644 index 738af25f..00000000 --- a/api/app/lib/routes/approval/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const Approval = require('../../controllers/approval/index'); - -module.exports = function (app, router, opts) { - /** - * @api {POST} approval/submit 提交审批、驳回修改. - * @apiVersion 1.0.0 - * @apiGroup Approval - */ - app.fs.api.logAttr['GET/approval/submit'] = { content: '提交审批、驳回修改', visible: true }; - router.post('/approval/submit', Approval.submitApproval); -}; \ No newline at end of file diff --git a/api/app/lib/routes/auth/index.js b/api/app/lib/routes/auth/index.js index b0de650b..f3de342c 100644 --- a/api/app/lib/routes/auth/index.js +++ b/api/app/lib/routes/auth/index.js @@ -3,30 +3,13 @@ const auth = require('../../controllers/auth'); module.exports = function (app, router, opts) { - /** - * @api {Post} login 登录. - * @apiVersion 1.0.0 - * @apiGroup Auth - */ + app.fs.api.logAttr['POST/login'] = { content: '登录', visible: true }; router.post('/login', auth.login); - - /** - * @api {POST} wxLogin 微信小程序登录.(使用手机号、密码登录) - * @apiVersion 1.0.0 - * @apiGroup Auth - */ + app.fs.api.logAttr['POST/wxLogin'] = { content: '微信小程序登录', visible: true }; router.post('/wxLogin', auth.wxLogin); app.fs.api.logAttr['PUT/logout'] = { content: '登出', visible: false }; router.put('/logout', auth.logout); - - /** - * @api {PUT} wxLogout 微信小程序登出 - * @apiVersion 1.0.0 - * @apiGroup Auth - */ - app.fs.api.logAttr['PUT/wxLogout'] = { content: '登出', visible: false }; - router.put('/wxLogout', auth.wxLogout); }; diff --git a/api/app/lib/routes/common/index.js b/api/app/lib/routes/common/index.js deleted file mode 100644 index c39f7ace..00000000 --- a/api/app/lib/routes/common/index.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const common = require('../../controllers/common'); - -module.exports = function (app, router, opts) { - - router.get('/data-dictionary/:model', common.getDataDictionary); - router.put('/data-dictionary/:model', common.putDataDictionary); -}; \ No newline at end of file diff --git a/api/app/lib/routes/department/index.js b/api/app/lib/routes/department/index.js deleted file mode 100644 index 4713e013..00000000 --- a/api/app/lib/routes/department/index.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -const Department = require('../../controllers/department/index'); - -module.exports = function (app, router, opts) { - /** - * @api {GET} counties/list 获取南昌市下所有区县. - * @apiVersion 1.0.0 - * @apiGroup Department - */ - app.fs.api.logAttr['GET/counties/list'] = { content: '获取南昌市下所有区县', visible: true }; - router.get('/counties/list', Department.getCountiesList); -}; diff --git a/api/app/lib/routes/organization/authority.js b/api/app/lib/routes/organization/authority.js deleted file mode 100644 index 99de6df3..00000000 --- a/api/app/lib/routes/organization/authority.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -const Authority = require('../../controllers/organization/authority'); - -module.exports = function (app, router, opts) { - /** - * @api {GET} resource 查询所有权限码. - * @apiVersion 1.0.0 - * @apiGroup Org - */ - app.fs.api.logAttr['GET/resource'] = { content: '查询所有权限码', visible: true }; - router.get('resource', Authority.getResource); - /** - * @api {GET} user/resource 查询用户权限. - * @apiVersion 1.0.0 - * @apiGroup Org - */ - app.fs.api.logAttr['GET/user/resource'] = { content: '查询用户权限', visible: true }; - router.get('user/resource', Authority.getUserResource); - - /** - * @api {POST} user/resource 更新用户权限. - * @apiVersion 1.0.0 - * @apiGroup Org - */ - app.fs.api.logAttr['POST/user/resource'] = { content: '更新用户权限', visible: true }; - router.post('user/resource', Authority.updateUserRes); -}; \ No newline at end of file diff --git a/api/app/lib/routes/organization/user.js b/api/app/lib/routes/organization/user.js deleted file mode 100644 index 3a71d0a7..00000000 --- a/api/app/lib/routes/organization/user.js +++ /dev/null @@ -1,32 +0,0 @@ -'use strict'; - -const user = require('../../controllers/organization/user'); - -module.exports = function (app, router, opts) { - - app.fs.api.logAttr['GET/organization/department'] = { content: '获取部门信息', visible: false }; - router.get('/organization/department', user.getDepMessage); - - app.fs.api.logAttr['GET/organization/department/:depId/user'] = { content: '获取部门下用户信息', visible: false }; - router.get('/organization/department/:depId/user', user.getUser); - - app.fs.api.logAttr['POST/organization/department/user'] = { content: '创建部门下用户信息', visible: false }; - router.post('/organization/department/user', user.creatUser); - - app.fs.api.logAttr['PUT/organization/department/user/:id'] = { content: '修改部门下用户信息', visible: false }; - router.put('/organization/department/user/:id', user.updateUser); - - app.fs.api.logAttr['DEL/organization/department/user/:ids'] = { content: '删除部门下用户信息', visible: false }; - router.del('/organization/department/user/:ids', user.deleteUser); - - app.fs.api.logAttr['PUT/organization/department/user/resetPwd/:id'] = { content: '重置用户密码', visible: false }; - router.put('/organization/department/user/resetPwd/:id', user.resetPwd); - - /** - * @api {PUT} user/password/:id 修改用户密码 - * @apiVersion 1.0.0 - * @apiGroup Organization - */ - app.fs.api.logAttr['PUT/user/password/:userId'] = { content: '修改用户密码', visible: false }; - router.put('/user/password/:userId', user.updateUserPassword); -}; \ No newline at end of file diff --git a/api/app/lib/routes/placeSecurityRecord/index.js b/api/app/lib/routes/placeSecurityRecord/index.js deleted file mode 100644 index f5ec05d8..00000000 --- a/api/app/lib/routes/placeSecurityRecord/index.js +++ /dev/null @@ -1,70 +0,0 @@ -'use strict'; - -const placeSecurityRecord = require('../../controllers/placeSecurityRecord'); - -module.exports = function (app, router, opts) { - /** - * @api {POST} /add/placeSecurityRecord 提交填报信息/保存填报草稿. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['POST/add/placeSecurityRecord'] = { content: '提交填报信息/保存填报草稿', visible: true }; - router.post('/add/placeSecurityRecord', placeSecurityRecord.addPlaceSecurityRecord); - - /** - * @api {PUT} /placeSecurityRecord/:id 编辑填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['PUT/placeSecurityRecord/:id'] = { content: '编辑填报信息', visible: true }; - router.put('/placeSecurityRecord/:id', placeSecurityRecord.editPlaceSecurityRecord); - - /** - * @api {PUT} /placeSecurityRecord/:id 修改type字段 - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['PUT/updateType/:id'] = { content: '修改type字段', visible: true }; - router.put('/updateType/:id', placeSecurityRecord.updateType); - - /** - * @api {DELETE} /placeSecurityRecord/:id 删除填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['DELETE/placeSecurityRecord/:id'] = { content: '删除填报信息', visible: true }; - router.del('/placeSecurityRecord/:id', placeSecurityRecord.deletePlaceSecurityRecord); - - /** - * @api {GET} /placeSecurityRecord/:id 根据填报信息ID查询填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['GET/placeSecurityRecord/:id'] = { content: '根据填报信息ID查询填报信息', visible: true }; - router.get('/placeSecurityRecord/:id', placeSecurityRecord.getPlaceSecurityRecordById); - - /** - * @api {GET} /recently/placeSecurityRecord/:placeId 根据场所ID获取该场所最近用户填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['GET/recently/placeSecurityRecord/:placeId'] = { content: '根据场所ID获取该场所最近用户填报信息', visible: true }; - router.get('/recently/placeSecurityRecord/:placeId', placeSecurityRecord.getRecentlyPlaceSecurityRecordByPlaceId); - - /** - * @api {GET} /placeSecurityRecords 根据筛选条件获取用户填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['GET/placeSecurityRecords'] = { content: '根据筛选条件获取用户填报信息', visible: true }; - router.get('/placeSecurityRecords', placeSecurityRecord.getPlaceSecurityRecords); - - /** - * @api {GET} /approve/placeSecurityRecords 根据筛选条件获取用户审批填报信息. - * @apiVersion 1.0.0 - * @apiGroup placeSecurityRecord - */ - app.fs.api.logAttr['GET/approve/placeSecurityRecords'] = { content: '根据筛选条件获取用户审批填报信息', visible: true }; - router.get('/approve/placeSecurityRecords', placeSecurityRecord.getApprovePlaceSecurityRecords); - -}; \ No newline at end of file diff --git a/api/app/lib/routes/places/index.js b/api/app/lib/routes/places/index.js deleted file mode 100644 index daf3d0f4..00000000 --- a/api/app/lib/routes/places/index.js +++ /dev/null @@ -1,30 +0,0 @@ -'use strict'; - -const places = require('../../controllers/places'); - -module.exports = function (app, router, opts) { - /** - * @api {GET} /user/places/:userId 根据用户ID获取该用户创建的所有场所信息. - * @apiVersion 1.0.0 - * @apiGroup places - */ - app.fs.api.logAttr['GET/user/places/:userId'] = { content: '根据用户ID获取该用户创建的所有场所信息', visible: true }; - router.get('/user/places/:userId', places.getPlacesByUserId); - - /** - * @api {GET} /approveUser/places/:approveUserId 根据审批用户ID获取该审批用户范围内填报人创建的场所信息. - * @apiVersion 1.0.0 - * @apiGroup places - */ - app.fs.api.logAttr['GET/approveUser/places/:approveUserId'] = { content: '根据审批用户ID获取该审批用户范围内填报人创建的场所信息', visible: true }; - router.get('/approveUser/places/:approveUserId', places.getPlacesByApproveUserId); - - /** - * @api {GET} /all/places 获取所有场所信息. - * @apiVersion 1.0.0 - * @apiGroup places - */ - app.fs.api.logAttr['GET/all/places'] = { content: '获取所有场所信息', visible: true }; - router.get('/all/places', places.getAllPlaces); - -}; \ No newline at end of file diff --git a/api/app/lib/routes/report/index.js b/api/app/lib/routes/report/index.js deleted file mode 100644 index 3e56b52c..00000000 --- a/api/app/lib/routes/report/index.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -const report = require('../../controllers/report'); -const reportConfig = require('../../controllers/report/config') -const reportRectify = require('../../controllers/report/compile') - -module.exports = function (app, router, opts) { - /** - * @api {GET} report 报表. - * @apiVersion 1.0.0 - * @apiGroup report - */ - app.fs.api.logAttr['GET/report/list'] = { content: '报表下载列表', visible: true }; - router.get('/report/list', report.getReportList); - - // 报表配置 - app.fs.api.logAttr['GET/allAreas'] = { content: '获取全部区域', visible: true }; - router.get('/allAreas', reportConfig.getAreas); - - app.fs.api.logAttr['POST/report/config'] = { content: '添加报表配置', visible: true }; - router.post('/report/config', reportConfig.addReportConfig); - - app.fs.api.logAttr['GET/report/config'] = { content: '获取报表配置', visible: true }; - router.get('/report/config', reportConfig.getReportConfig); - - app.fs.api.logAttr['PUT/report/:reportId/config'] = { content: '编辑报表配置', visible: true }; - router.put('/report/:reportId/config', reportConfig.editReportConfig); - - app.fs.api.logAttr['DEL/report/:reportId/config'] = { content: '删除报表配置', visible: true }; - router.del('/report/:reportId/config', reportConfig.delReportConfig); - - // 报表编辑 - app.fs.api.logAttr['GET/report/rectify'] = { content: '获取合用场所安全隐患排查整治汇总表', visible: true }; - router.get('/report/rectify', reportRectify.getReportRectify); - - app.fs.api.logAttr['GET/report/rectify/detail'] = { content: '获取合用场所安全隐患排查整治汇总表详情', visible: true }; - router.get('/report/rectify/detail', reportRectify.getReportRectifyDetail); - - app.fs.api.logAttr['POST/report/rectify/detail'] = { content: '保存合用场所安全隐患排查整治汇总表编辑信息', visible: true }; - router.post('/report/rectify/detail', reportRectify.compileReportRectifyDetail); -}; \ No newline at end of file diff --git a/api/app/lib/routes/statistic/index.js b/api/app/lib/routes/statistic/index.js deleted file mode 100644 index 94dc160d..00000000 --- a/api/app/lib/routes/statistic/index.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -const statistic = require('../../controllers/statistic') -module.exports = function (app, router, opts) { - /** - * @api {GET} getGovern 获取数据中台. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/daily/report/data/statistic'] = { content: '获取数据中台', visible: true }; - router.get('/daily/report/data/statistic', statistic.reportDailyStatistic); - /** -* @api {GET} getGovern 获取数据中台地区填报数量. -* @apiVersion 1.0.0 -* @apiGroup wxReport -*/ - app.fs.api.logAttr['GET/daily/report/area/statistic'] = { content: '获取数据中台地区填报数量', visible: true }; - router.get('/daily/report/area/statistic', statistic.reportAreaStatistic); - - /** - * @api {GET} getGovern 获取填报管理数据. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/report/management/statistic'] = { content: '获取填报管理数据', visible: true }; - router.get('/report/management/statistic', statistic.dangerAreaQuery); - -} \ No newline at end of file diff --git a/api/app/lib/routes/wxReport/index.js b/api/app/lib/routes/wxReport/index.js deleted file mode 100644 index 2e208ca1..00000000 --- a/api/app/lib/routes/wxReport/index.js +++ /dev/null @@ -1,78 +0,0 @@ -'use strict'; - -const wxReport = require('../../controllers/wxReport/index'); -module.exports = function (app, router, opts) { - /*******************首页-市级***************************/ - /** - * @api {GET} getDayReport 获取每日汇总. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/getDayReport'] = { content: '获取每日汇总', visible: true }; - router.get('/getDayReport', wxReport.getDayReport); - - /** - * @api {GET} getGovern 获取排查整治汇总. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/getGovern'] = { content: '获取排查整治汇总', visible: true }; - router.get('/getGovern', wxReport.getGovern); - - /** - * @api {GET} getGovernDetail 获取排查整治汇总详情. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/getGovernDetail'] = { content: '获取排查整治汇总详情', visible: true }; - router.get('/getGovernDetail', wxReport.getGovernDetail); - - /** - * @api {PUT} /operateGovern 确认整治汇总场所数据. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['PUT/operateGovern'] = { content: '确认整治汇总场所数据', visible: true }; - router.put('/operateGovern', wxReport.operateGovern); - - /** - * @api {GET} getSecurityRiskList 获取安全隐患排查详细数据列表. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/getSecurityRiskList'] = { content: '获取安全隐患排查详细数据列表', visible: true }; - router.get('/getSecurityRiskList', wxReport.getSecurityRiskList); - - /** - * @api {GET} /getHomeCount/:userId/:departmentId/:userRegionType 获取待处理数量. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/getHomeCount/:userId/:departmentId/:userRegionType'] = { content: '获取待处理数量', visible: true }; - router.get('/getHomeCount/:userId/:departmentId/:userRegionType', wxReport.getHomeCount); - - - /** - * @api {PUT} /operateReport/:id/:userId 每日汇总表上报. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['PUT/operateReport/:id/:userId'] = { content: '每日汇总表上报', visible: true }; - router.put('/operateReport/:id/:userId', wxReport.operateReport); - - /** - * @api {GET} /approve/reportCollections 根据筛选条件获取用户审核报表信息. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['GET/approve/reportCollections'] = { content: '根据筛选条件获取用户审核报表信息', visible: true }; - router.get('/approve/reportCollections', wxReport.getApproveReportCollections); - - /** - * @api {PUT} /operateGovernReport/:userId 上报排查整治汇总表. - * @apiVersion 1.0.0 - * @apiGroup wxReport - */ - app.fs.api.logAttr['PUT/operateGovernReport/:userId'] = { content: '上报排查整治汇总表', visible: true }; - router.put('/operateGovernReport/:userId', wxReport.operateGovernReport); -} \ No newline at end of file diff --git a/api/log/development.log b/api/log/development.log index c2cc5341..08a3d49b 100644 --- a/api/log/development.log +++ b/api/log/development.log @@ -6709,3 +6709,11 @@ >>>>>>> .theirs2022-05-17 09:54:28.415 - debug: [FS-LOGGER] Init. 2022-05-17 09:54:28.497 - info: [FS-ATTACHMENT] Inject attachment mw into router. 2022-05-17 09:54:28.498 - info: [FS-AUTH] Inject auth and api mv into router. +2022-07-20 20:43:09.196 - debug: [FS-LOGGER] Init. +2022-07-20 20:43:09.290 - info: [FS-ATTACHMENT] Inject attachment mw into router. +2022-07-20 20:43:09.291 - info: [FS-AUTH] Inject auth and api mv into router. +2022-07-20 20:43:56.830 - error: path: /login, error: SequelizeDatabaseError: 关系 "user_token" 的 "id" 字段不存在 +2022-07-20 20:44:18.849 - error: path: /login, error: SequelizeDatabaseError: 关系 "user_token" 的 "id" 字段不存在 +2022-07-20 20:45:25.022 - debug: [FS-LOGGER] Init. +2022-07-20 20:45:25.106 - info: [FS-ATTACHMENT] Inject attachment mw into router. +2022-07-20 20:45:25.106 - info: [FS-AUTH] Inject auth and api mv into router. diff --git a/api/sequelize-automate.config.js b/api/sequelize-automate.config.js index 69dd817e..cd6e5e4c 100644 --- a/api/sequelize-automate.config.js +++ b/api/sequelize-automate.config.js @@ -1,7 +1,7 @@ module.exports = { // 数据库配置 与 sequelize 相同 dbOptions: { - database: 'yinjiguanli', + database: 'highways4good', username: 'postgres', password: '123', dialect: 'postgres', @@ -26,8 +26,8 @@ module.exports = { dir: './app/lib/models', // 指定输出 models 文件的目录 typesDir: 'models', // 指定输出 TypeScript 类型定义的文件目录,只有 TypeScript / Midway 等会有类型定义 emptyDir: false, // !!! 谨慎操作 生成 models 之前是否清空 `dir` 以及 `typesDir` - tables: ['road'], // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性 - skipTables: ['user', 'department', 'user_token'], // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性 + tables: null, // 指定生成哪些表的 models,如 ['user', 'user_post'];如果为 null,则忽略改属性 + skipTables: null, // 指定跳过哪些表的 models,如 ['user'];如果为 null,则忽略改属性 tsNoCheck: false, // 是否添加 `@ts-nocheck` 注释到 models 文件中 ignorePrefix: [], // 生成的模型名称忽略的前缀,因为 项目中有以下表名是以 t_ 开头的,在实际模型中不需要, 可以添加多个 [ 't_data_', 't_',] ,长度较长的 前缀放前面 attrLength: false, // 在生成模型的字段中 是否生成 如 var(128)这种格式,公司一般使用 String ,则配置为 false diff --git a/web/client/assets/color.less b/web/client/assets/color.less index ff4253c6..fb497618 100644 --- a/web/client/assets/color.less +++ b/web/client/assets/color.less @@ -174,7 +174,7 @@ button::-moz-focus-inner, [type='submit']::-moz-focus-inner {border-style: none;} fieldset {border: 0;} legend {color: inherit;} -mark {background-color: color(~`colorPalette("@{skeleton-to-color}", 1)`);} +mark {background-color: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 1)`);} ::selection {color: #fff;background: @primary-color;} .anticon {color: inherit;} .ant-fade-enter, .ant-fade-appear {animation-fill-mode: both;} @@ -555,6 +555,18 @@ html {--antd-wave-shadow-color: @primary-color;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active {color: @disabled-color;border-color: @border-color-base;background: @disabled-bg;box-shadow: none;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child {color: currentcolor;} .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled] > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:hover > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:focus > a:only-child::after, .ant-btn-background-ghost.ant-btn-dangerous.ant-btn-link[disabled]:active > a:only-child::after {background: transparent;} +a.ant-btn-disabled, +a.ant-btn-disabled:hover, +a.ant-btn-disabled:focus, +a.ant-btn-disabled:active {color: @disabled-color;border-color: transparent;background: transparent;box-shadow: none;} +a.ant-btn-disabled > a:only-child, +a.ant-btn-disabled:hover > a:only-child, +a.ant-btn-disabled:focus > a:only-child, +a.ant-btn-disabled:active > a:only-child {color: currentcolor;} +a.ant-btn-disabled > a:only-child::after, +a.ant-btn-disabled:hover > a:only-child::after, +a.ant-btn-disabled:focus > a:only-child::after, +a.ant-btn-disabled:active > a:only-child::after {background: transparent;} .ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child), .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary {border-right-color: color(~`colorPalette("@{primary-color}", 5)`);border-left-color: @border-color-base;} .ant-btn-group-rtl.ant-btn-group .ant-btn-primary:last-child:not(:first-child)[disabled], .ant-btn-group-rtl.ant-btn-group .ant-btn-primary + .ant-btn-primary[disabled] {border-right-color: @border-color-base;border-left-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-picker-calendar {color: @text-color;background: @calendar-full-bg;} @@ -589,7 +601,6 @@ html {--antd-wave-shadow-color: @primary-color;} .ant-card-type-inner .ant-card-head {background: @background-color-light;} .ant-card-meta-title {color: @heading-color;} .ant-card-meta-description {color: @text-color-secondary;} -.ant-card-loading-block {background: linear-gradient(90deg, fade(@card-skeleton-bg, 20%), fade(@card-skeleton-bg, 40%), fade(@card-skeleton-bg, 20%));background-size: 600% 600%;border-radius: 2px;} .ant-carousel {color: @text-color;} .ant-carousel .slick-slider {-webkit-tap-highlight-color: transparent;} .ant-carousel .slick-prev, .ant-carousel .slick-next {color: transparent;background: transparent;border: 0;} @@ -663,8 +674,10 @@ html {--antd-wave-shadow-color: @primary-color;} .ant-comment-actions > li > span:hover {color: @comment-action-hover-color;} .ant-picker-status-error.ant-picker, .ant-picker-status-error.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #ff4d4f;} .ant-picker-status-error.ant-picker-focused, .ant-picker-status-error.ant-picker:focus {border-color: #ff7875;box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.2);border-right-width: 1px;} +.ant-picker-status-error.ant-picker .ant-picker-active-bar {background: #ff7875;} .ant-picker-status-warning.ant-picker, .ant-picker-status-warning.ant-picker:not([disabled]):hover {background-color: @input-bg;border-color: #faad14;} .ant-picker-status-warning.ant-picker-focused, .ant-picker-status-warning.ant-picker:focus {border-color: #ffc53d;box-shadow: 0 0 0 2px rgba(250, 173, 20, 0.2);border-right-width: 1px;} +.ant-picker-status-warning.ant-picker .ant-picker-active-bar {background: #ffc53d;} .ant-picker {color: @text-color;background: @picker-bg;border: 1px solid @border-color-base;border-radius: 2px;} .ant-picker:hover, .ant-picker-focused {border-color: color(~`colorPalette("@{primary-color}", 5)`);border-right-width: 1px;} .ant-input-rtl .ant-picker:hover, .ant-input-rtl .ant-picker-focused {border-right-width: 0;border-left-width: 1px !important;} @@ -695,7 +708,7 @@ html {--antd-wave-shadow-color: @primary-color;} .ant-picker-range .ant-picker-active-bar {background: @primary-color;} .ant-picker-dropdown {color: @text-color;} .ant-picker-ranges .ant-picker-preset > .ant-tag-blue {color: @primary-color;background: color(~`colorPalette("@{primary-color}", 1)`);border-color: color(~`colorPalette("@{primary-color}", 3)`);} -.ant-picker-range-arrow {background: linear-gradient(135deg, transparent 40%, @calendar-bg 40%);box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;} +.ant-picker-range-arrow {box-shadow: 2px 2px 6px -2px rgba(0, 0, 0, 0.1);border-radius: 0 0 2px;} .ant-picker-range-arrow::before {background: @calendar-bg;background-repeat: no-repeat;background-position: -10px -10px;} .ant-picker-panel-container {background: @calendar-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} .ant-picker-panel-container .ant-picker-panel {background: transparent;border-width: 0 0 1px 0;border-radius: 0;} @@ -801,7 +814,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-dropdown-menu-item.ant-dropdown-menu-item-danger {color: #ff4d4f;} .ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover {color: #fff;background-color: #ff4d4f;} .ant-dropdown {color: @text-color;} -.ant-dropdown-arrow {background: linear-gradient(135deg, transparent 40%, @popover-bg 40%);border-radius: 0 0 2px;} +.ant-dropdown-arrow {border-radius: 0 0 2px;} .ant-dropdown-arrow::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} .ant-dropdown-placement-top > .ant-dropdown-arrow, .ant-dropdown-placement-topLeft > .ant-dropdown-arrow, .ant-dropdown-placement-topRight > .ant-dropdown-arrow {box-shadow: 3px 3px 7px -3px rgba(0, 0, 0, 0.1);} .ant-dropdown-placement-bottom > .ant-dropdown-arrow, .ant-dropdown-placement-bottomLeft > .ant-dropdown-arrow, .ant-dropdown-placement-bottomRight > .ant-dropdown-arrow {box-shadow: 2px 2px 5px -2px rgba(0, 0, 0, 0.1);} @@ -936,7 +949,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-group.ant-input-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} .ant-input-group > .ant-input-rtl:first-child, .ant-input-group-rtl .ant-input-group-addon:first-child {border-radius: 0 2px 2px 0;} .ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} -.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;} +.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-group-rtl.ant-input-group > .ant-input:last-child, .ant-input-group-rtl.ant-input-group-addon:last-child {border-radius: 2px 0 0 2px;} .ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} .ant-input-group-rtl.ant-input-group .ant-input-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} @@ -944,6 +957,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:first-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} .ant-input-group-rtl.ant-input-group.ant-input-group-compact > *:last-child, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-group-rtl.ant-input-group.ant-input-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} .ant-input-group.ant-input-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-group > .ant-input-rtl:first-child {border-radius: 0 2px 2px 0;} +.ant-input-group > .ant-input-rtl:last-child {border-radius: 2px 0 0 2px;} +.ant-input-group-rtl .ant-input-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} +.ant-input-group-rtl .ant-input-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-password-icon.anticon {color: @text-color-secondary;} .ant-input-password-icon.anticon:hover {color: @input-icon-hover-color;} .ant-input-textarea-show-count::after {color: @text-color-secondary;} @@ -1029,7 +1046,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 2px 0 0 2px;} .ant-input-number-group > .ant-input-number-rtl:first-child, .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-radius: 0 2px 2px 0;} .ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;} -.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;} +.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-number-group-rtl.ant-input-number-group > .ant-input-number:last-child, .ant-input-number-group-rtl.ant-input-number-group-addon:last-child {border-radius: 2px 0 0 2px;} .ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:first-child) {border-radius: 2px 0 0 2px;} .ant-input-number-group-rtl.ant-input-number-group .ant-input-number-affix-wrapper:not(:last-child) {border-radius: 0 2px 2px 0;} @@ -1037,6 +1054,10 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:first-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:first-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:first-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:first-child .ant-input {border-radius: 0 2px 2px 0;} .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > *:last-child, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select:last-child > .ant-select-selector, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-select-auto-complete:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker:last-child .ant-input, .ant-input-number-group-rtl.ant-input-number-group.ant-input-number-group-compact > .ant-cascader-picker-focused:last-child .ant-input {border-left-width: 1px;border-radius: 2px 0 0 2px;} .ant-input-number-group.ant-input-number-group-compact .ant-input-group-wrapper-rtl:not(:last-child).ant-input-search > .ant-input-group > .ant-input {border-radius: 0 2px 2px 0;} +.ant-input-number-group > .ant-input-number-rtl:first-child {border-radius: 0 2px 2px 0;} +.ant-input-number-group > .ant-input-number-rtl:last-child {border-radius: 2px 0 0 2px;} +.ant-input-number-group-rtl .ant-input-number-group-addon:first-child {border-right: 1px solid @border-color-base;border-left: 0;border-radius: 0 2px 2px 0;} +.ant-input-number-group-rtl .ant-input-number-group-addon:last-child {border-right: 0;border-left: 1px solid @border-color-base;border-radius: 2px 0 0 2px;} .ant-input-number-handler {color: @text-color-secondary;border-left: 1px solid @border-color-base;} .ant-input-number-handler:active {background: @input-number-handler-active-bg;} .ant-input-number-handler:hover .ant-input-number-handler-up-inner, .ant-input-number-handler:hover .ant-input-number-handler-down-inner {color: color(~`colorPalette("@{primary-color}", 5)`);} @@ -1292,8 +1313,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-pagination-simple .ant-pagination-simple-pager input:hover {border-color: @primary-color;} .ant-pagination-simple .ant-pagination-simple-pager input:focus {border-color: color(~`colorPalette("@{primary-color}", 5)`);box-shadow: 0 0 0 2px fade(@primary-color, 20%);} .ant-pagination-simple .ant-pagination-simple-pager input[disabled] {color: @disabled-color;background: @disabled-bg;border-color: @border-color-base;} -.ant-pagination.mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;} -.ant-pagination.mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;} +.ant-pagination.ant-pagination-mini .ant-pagination-item:not(.ant-pagination-item-active) {background: transparent;border-color: transparent;} +.ant-pagination.ant-pagination-mini .ant-pagination-prev .ant-pagination-item-link, .ant-pagination.ant-pagination-mini .ant-pagination-next .ant-pagination-item-link {background: transparent;border-color: transparent;} .ant-pagination.ant-pagination-disabled .ant-pagination-item {background: @disabled-bg;border-color: @border-color-base;} .ant-pagination.ant-pagination-disabled .ant-pagination-item a {color: @disabled-color;background: transparent;border: none;} .ant-pagination.ant-pagination-disabled .ant-pagination-item-active {background: @pagination-item-disabled-bg-active;} @@ -1309,8 +1330,8 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-popover-message {color: @text-color;} .ant-popover-message > .anticon {color: #faad14;} .ant-popover-arrow {background: transparent;} -.ant-popover-arrow-content {background-color: @popover-bg;border-radius: 0 0 2px;} -.ant-popover-arrow-content::before {background: @popover-bg;background-repeat: no-repeat;background-position: -10px -10px;} +.ant-popover-arrow-content {--antd-arrow-background-color: @popover-bg;border-radius: 0 0 2px;} +.ant-popover-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;} .ant-popover-placement-top .ant-popover-arrow-content, .ant-popover-placement-topLeft .ant-popover-arrow-content, .ant-popover-placement-topRight .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-popover-placement-right .ant-popover-arrow-content, .ant-popover-placement-rightTop .ant-popover-arrow-content, .ant-popover-placement-rightBottom .ant-popover-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-popover-placement-bottom .ant-popover-arrow-content, .ant-popover-placement-bottomLeft .ant-popover-arrow-content, .ant-popover-placement-bottomRight .ant-popover-arrow-content {box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.06);} @@ -1366,12 +1387,13 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-wrapper {color: @text-color;} .ant-radio {color: @text-color;} .ant-radio-wrapper:hover .ant-radio, .ant-radio:hover .ant-radio-inner, .ant-radio-input:focus + .ant-radio-inner {border-color: @primary-color;} -.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-input:focus + .ant-radio-inner {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} .ant-radio-checked::after {border: 1px solid @primary-color;border-radius: 50%;animation-fill-mode: both;} .ant-radio-inner {background-color: @btn-default-bg;border-color: @border-color-base;border-style: solid;border-width: 1px;border-radius: 50%;} .ant-radio-inner::after {background-color: @primary-color;border-top: 0;border-left: 0;border-radius: 16px;} +.ant-radio.ant-radio-disabled .ant-radio-inner {border-color: @border-color-base;} .ant-radio-checked .ant-radio-inner {border-color: @primary-color;} -.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;border-color: @border-color-base !important;} +.ant-radio-disabled .ant-radio-inner {background-color: @disabled-bg;} .ant-radio-disabled .ant-radio-inner::after {background-color: @radio-dot-disabled-color;} .ant-radio-disabled + span {color: @disabled-color;} .ant-radio-button-wrapper {color: @text-color;background: @btn-default-bg;border: 1px solid @border-color-base;border-top-width: 1.02px;border-left-width: 0;} @@ -1381,7 +1403,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-button-wrapper:last-child {border-radius: 0 2px 2px 0;} .ant-radio-button-wrapper:first-child:last-child {border-radius: 2px;} .ant-radio-button-wrapper:hover {color: @primary-color;} -.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-button-wrapper:focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @primary-color;background: @btn-default-bg;border-color: @primary-color;} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled)::before {background-color: @primary-color;} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child {border-color: @primary-color;} @@ -1389,11 +1411,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover::before {background-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active::before {background-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) {color: @radio-solid-checked-color;background: @primary-color;border-color: @primary-color;} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 5)`);border-color: color(~`colorPalette("@{primary-color}", 5)`);} .ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active {color: @radio-solid-checked-color;background: color(~`colorPalette("@{primary-color}", 7)`);border-color: color(~`colorPalette("@{primary-color}", 7)`);} -.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px color(~`colorPalette("@{primary-color}", 1)`);} +.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {box-shadow: 0 0 0 3px fade(@primary-color, 12%);} .ant-radio-button-wrapper-disabled {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} .ant-radio-button-wrapper-disabled:first-child, .ant-radio-button-wrapper-disabled:hover {color: @disabled-color;background-color: @disabled-bg;border-color: @border-color-base;} .ant-radio-button-wrapper-disabled:first-child {border-left-color: @border-color-base;} @@ -1460,14 +1482,11 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-skeleton-header .ant-skeleton-avatar.ant-skeleton-avatar-circle {border-radius: 50%;} .ant-skeleton-header .ant-skeleton-avatar-lg.ant-skeleton-avatar-circle {border-radius: 50%;} .ant-skeleton-header .ant-skeleton-avatar-sm.ant-skeleton-avatar-circle {border-radius: 50%;} -.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 4px;} -.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 4px;} +.ant-skeleton-content .ant-skeleton-title {background: @skeleton-color;border-radius: 2px;} +.ant-skeleton-content .ant-skeleton-paragraph > li {background: @skeleton-color;border-radius: 2px;} .ant-skeleton-round .ant-skeleton-content .ant-skeleton-title, .ant-skeleton-round .ant-skeleton-content .ant-skeleton-paragraph > li {border-radius: 100px;} -.ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-title, .ant-skeleton.ant-skeleton-active .ant-skeleton-content .ant-skeleton-paragraph > li {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} -.ant-skeleton.ant-skeleton-active .ant-skeleton-avatar {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} -.ant-skeleton.ant-skeleton-active .ant-skeleton-button {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} -.ant-skeleton.ant-skeleton-active .ant-skeleton-input {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} -.ant-skeleton.ant-skeleton-active .ant-skeleton-image {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);background-size: 400% 100%;} +.ant-skeleton-active .ant-skeleton-title, .ant-skeleton-active .ant-skeleton-paragraph > li, .ant-skeleton-active .ant-skeleton-avatar, .ant-skeleton-active .ant-skeleton-button, .ant-skeleton-active .ant-skeleton-input, .ant-skeleton-active .ant-skeleton-image {background: transparent;} +.ant-skeleton-active .ant-skeleton-title::after, .ant-skeleton-active .ant-skeleton-paragraph > li::after, .ant-skeleton-active .ant-skeleton-avatar::after, .ant-skeleton-active .ant-skeleton-button::after, .ant-skeleton-active .ant-skeleton-input::after, .ant-skeleton-active .ant-skeleton-image::after {background: linear-gradient(90deg, @skeleton-color 25%, @skeleton-to-color 37%, @skeleton-color 63%);} .ant-skeleton-element .ant-skeleton-button {background: @skeleton-color;border-radius: 2px;} .ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-circle {border-radius: 50%;} .ant-skeleton-element .ant-skeleton-button.ant-skeleton-button-round {border-radius: 32px;} @@ -1584,7 +1603,7 @@ tr > .ant-picker-cell-in-view.ant-picker-cell-range-hover-start:last-child::afte .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-expanded-row > td, .ant-table.ant-table-bordered.ant-table-scroll-horizontal > .ant-table-container > .ant-table-body > table > tbody > tr.ant-table-placeholder > td {border-right: 0;} .ant-table.ant-table-bordered > .ant-table-footer {border: 1px solid @border-color-split;border-top: 0;} .ant-table-cell .ant-table-container:first-child {border-top: 0;} -.ant-table-cell-scrollbar {box-shadow: 0 1px 0 1px @table-header-bg;} +.ant-table-cell-scrollbar:not([rowspan]) {box-shadow: 0 1px 0 1px @table-header-bg;} .ant-table {color: @text-color;background: @component-background;border-radius: 2px;} .ant-table table {border-radius: 2px 2px 0 0;border-collapse: separate;border-spacing: 0;} .ant-table-footer {color: @heading-color;background: @background-color-light;} @@ -1635,10 +1654,10 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-table-empty .ant-table-tbody > tr.ant-table-placeholder {color: @disabled-color;} .ant-table-tbody > tr.ant-table-placeholder:hover > td {background: @component-background;} .ant-table-cell-fix-left, .ant-table-cell-fix-right {background: @component-background;} -.ant-table-ping-left:not(.ant-table-has-fix-left) .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-left:not(.ant-table-has-fix-left) > .ant-table-container::before {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-left .ant-table-cell-fix-left-first::after, .ant-table-ping-left .ant-table-cell-fix-left-last::after {box-shadow: inset 10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-left .ant-table-cell-fix-left-last::before {background-color: transparent !important;} -.ant-table-ping-right:not(.ant-table-has-fix-right) .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} +.ant-table-ping-right:not(.ant-table-has-fix-right) > .ant-table-container::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-ping-right .ant-table-cell-fix-right-first::after, .ant-table-ping-right .ant-table-cell-fix-right-last::after {box-shadow: inset -10px 0 8px -8px darken(@shadow-color, 5%);} .ant-table-sticky-holder {background: @component-background;} .ant-table-sticky-scroll {background: lighten(@table-border-color, 80%);border-top: 1px solid @border-color-split;} @@ -1647,6 +1666,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-table-sticky-scroll-bar-active {background-color: fade(@table-sticky-scroll-bar-bg, 80%);} .ant-table-title {border-radius: 2px 2px 0 0;} .ant-table-title + .ant-table-container {border-top-left-radius: 0;border-top-right-radius: 0;} +.ant-table-title + .ant-table-container table {border-radius: 0;} .ant-table-title + .ant-table-container table > thead > tr:first-child th:first-child {border-radius: 0;} .ant-table-title + .ant-table-container table > thead > tr:first-child th:last-child {border-radius: 0;} .ant-table-container {border-top-left-radius: 2px;border-top-right-radius: 2px;} @@ -1710,23 +1730,23 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tag-red-inverse {color: #fff;background: #f5222d;border-color: #f5222d;} .ant-tag-volcano {color: #d4380d;background: #fff2e8;border-color: #ffbb96;} .ant-tag-volcano-inverse {color: #fff;background: #fa541c;border-color: #fa541c;} -.ant-tag-orange {color: #d46b08;background: color(~`colorPalette("@{select-background}", 3)`);border-color: #ffd591;} +.ant-tag-orange {color: #d46b08;background: #fff7e6;border-color: #ffd591;} .ant-tag-orange-inverse {color: #fff;background: #fa8c16;border-color: #fa8c16;} -.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{skeleton-to-color}", 1)`);border-color: #fffb8f;} +.ant-tag-yellow {color: #d4b106;background: color(~`colorPalette("@{table-fixed-header-sort-active-bg}", 1)`);border-color: #fffb8f;} .ant-tag-yellow-inverse {color: #fff;background: #fadb14;border-color: #fadb14;} .ant-tag-gold {color: #d48806;background: #fffbe6;border-color: #ffe58f;} .ant-tag-gold-inverse {color: #fff;background: #faad14;border-color: #faad14;} -.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{comment-author-time-color}", 3)`);border-color: #87e8de;} +.ant-tag-cyan {color: #08979c;background: color(~`colorPalette("@{avatar-bg}", 1)`);border-color: #87e8de;} .ant-tag-cyan-inverse {color: #fff;background: #13c2c2;border-color: #13c2c2;} -.ant-tag-lime {color: #7cb305;background: color(~`colorPalette("@{item-active-bg}", 1)`);border-color: #eaff8f;} +.ant-tag-lime {color: #7cb305;background: #fcffe6;border-color: #eaff8f;} .ant-tag-lime-inverse {color: #fff;background: #a0d911;border-color: #a0d911;} .ant-tag-green {color: #389e0d;background: #f6ffed;border-color: #b7eb8f;} .ant-tag-green-inverse {color: #fff;background: #52c41a;border-color: #52c41a;} -.ant-tag-blue {color: #096dd9;background: #e6f7ff;border-color: #91d5ff;} +.ant-tag-blue {color: #096dd9;background: color(~`colorPalette("@{radio-dot-disabled-color}", 1)`);border-color: #91d5ff;} .ant-tag-blue-inverse {color: #fff;background: #1890ff;border-color: #1890ff;} -.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{modal-content-bg}", 1)`);border-color: #adc6ff;} +.ant-tag-geekblue {color: #1d39c4;background: color(~`colorPalette("@{descriptions-bg}", 2)`);border-color: #adc6ff;} .ant-tag-geekblue-inverse {color: #fff;background: #2f54eb;border-color: #2f54eb;} -.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{disabled-color}", 2)`);border-color: #d3adf7;} +.ant-tag-purple {color: #531dab;background: color(~`colorPalette("@{calendar-bg}", 1)`);border-color: #d3adf7;} .ant-tag-purple-inverse {color: #fff;background: #722ed1;border-color: #722ed1;} .ant-tag-success {color: #52c41a;background: @success-color-deprecated-bg;border-color: @success-color-deprecated-border;} .ant-tag-processing {color: @primary-color;background: @info-color-deprecated-bg;border-color: @info-color-deprecated-border;} @@ -1749,7 +1769,7 @@ tr.ant-table-expanded-row:hover > td {background: @table-expanded-row-bg;} .ant-tooltip {color: @text-color;} .ant-tooltip-inner {color: #fff;background-color: @tooltip-bg;border-radius: 2px;box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05);} .ant-tooltip-arrow {background: transparent;} -.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);background-color: transparent;border-radius: 0 0 2px;} +.ant-tooltip-arrow-content {--antd-arrow-background-color: linear-gradient(to right bottom, fadeout(@tooltip-bg, 10%), @tooltip-bg);border-radius: 0 0 2px;} .ant-tooltip-arrow-content::before {background: var(--antd-arrow-background-color);background-repeat: no-repeat;background-position: -10px -10px;} .ant-tooltip-placement-top .ant-tooltip-arrow-content, .ant-tooltip-placement-topLeft .ant-tooltip-arrow-content, .ant-tooltip-placement-topRight .ant-tooltip-arrow-content {box-shadow: 3px 3px 7px rgba(0, 0, 0, 0.07);} .ant-tooltip-placement-right .ant-tooltip-arrow-content, .ant-tooltip-placement-rightTop .ant-tooltip-arrow-content, .ant-tooltip-placement-rightBottom .ant-tooltip-arrow-content {box-shadow: -3px 3px 7px rgba(0, 0, 0, 0.07);} @@ -1939,6 +1959,7 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography .ant-typography pre code {background: transparent;border: 0;} .ant-typography blockquote {border-left: 4px solid rgba(100, 100, 100, 0.2);} .ant-upload {color: @text-color;} +.ant-upload.ant-upload-disabled {color: @disabled-color;} .ant-upload.ant-upload-select-picture-card {background-color: @background-color-light;border: 1px dashed @border-color-base;border-radius: 2px;} .ant-upload.ant-upload-select-picture-card:hover {border-color: @primary-color;} .ant-upload-disabled.ant-upload.ant-upload-select-picture-card:hover {border-color: @border-color-base;} @@ -1963,13 +1984,12 @@ a.ant-typography.ant-typography-disabled:hover, .ant-typography a.ant-typography .ant-upload-list-picture .ant-upload-list-item-error, .ant-upload-list-picture-card .ant-upload-list-item-error {border-color: #ff4d4f;} .ant-upload-list-picture .ant-upload-list-item:hover .ant-upload-list-item-info, .ant-upload-list-picture-card .ant-upload-list-item:hover .ant-upload-list-item-info {background: transparent;} .ant-upload-list-picture .ant-upload-list-item-uploading, .ant-upload-list-picture-card .ant-upload-list-item-uploading {border-style: dashed;} -.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#e6f7ff'] {fill: @error-color-deprecated-bg;} +.ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{radio-dot-disabled-color}", 1)`)'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='color(~`colorPalette("@{radio-dot-disabled-color}", 1)`)'] {fill: @error-color-deprecated-bg;} .ant-upload-list-picture .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'], .ant-upload-list-picture-card .ant-upload-list-item-error .ant-upload-list-item-thumbnail .anticon svg path[fill='#1890ff'] {fill: #ff4d4f;} .ant-upload-list-picture-card .ant-upload-list-item-info::before {background-color: rgba(0, 0, 0, 0.5);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete {color: rgba(255, 255, 255, 0.85);} .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-eye:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-download:hover, .ant-upload-list-picture-card .ant-upload-list-item-actions .anticon-delete:hover {color: #fff;} .ant-upload-list-picture-card .ant-upload-list-item-uploading.ant-upload-list-item {background-color: @background-color-light;} -.ant-upload-list .ant-upload-animate-inline-appear, .ant-upload-list .ant-upload-animate-inline-enter, .ant-upload-list .ant-upload-animate-inline-leave {animation-fill-mode: cubic-bezier(0.78, 0.14, 0.15, 0.86);} .ant-pro-table-search {background-color: @component-background !important;} .bezierEasingMixin() { @functions: ~`(function() {var NEWTON_ITERATIONS = 4;var NEWTON_MIN_SLOPE = 0.001;var SUBDIVISION_PRECISION = 0.0000001;var SUBDIVISION_MAX_ITERATIONS = 10;var kSplineTableSize = 11;var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);var float32ArraySupported = typeof Float32Array === 'function';function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } @@ -2419,7 +2439,8 @@ this.tinycolor = tinycolor;})()`;} .colorPaletteMixin() { @functions: ~`(function() {var hueStep = 2;var saturationStep = 0.16;var saturationStep2 = 0.05;var brightnessStep1 = 0.05;var brightnessStep2 = 0.15;var lightColorCount = 5;var darkColorCount = 4;var getHue = function(hsv, i, isLight) {var hue;if (hsv.h >= 60 && hsv.h <= 240) {hue = isLight ? hsv.h - hueStep * i : hsv.h + hueStep * i;} else {hue = isLight ? hsv.h + hueStep * i : hsv.h - hueStep * i;} if (hue < 0) {hue += 360;} else if (hue >= 360) {hue -= 360;} - return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;} + return Math.round(hue);};var getSaturation = function(hsv, i, isLight) {if (hsv.h === 0 && hsv.s === 0) {return hsv.s;} + var saturation;if (isLight) {saturation = hsv.s - saturationStep * i;} else if (i === darkColorCount) {saturation = hsv.s + saturationStep;} else {saturation = hsv.s + saturationStep2 * i;} if (saturation > 1) {saturation = 1;} if (isLight && i === lightColorCount && saturation > 0.1) {saturation = 0.1;} if (saturation < 0.06) {saturation = 0.06;} @@ -2876,7 +2897,7 @@ this.tinycolor = tinycolor;})()`;} @cascader-dropdown-line-height: @dropdown-line-height; @anchor-bg: transparent; @anchor-border-color: @border-color-split; -@anchor-link-top: 7px; +@anchor-link-top: 4px; @anchor-link-left: 16px; @anchor-link-padding: @anchor-link-top 0 @anchor-link-top @anchor-link-left; @tooltip-max-width: 250px; @@ -2901,7 +2922,7 @@ this.tinycolor = tinycolor;})()`;} @modal-header-border-style: @border-style-base; @modal-header-title-line-height: 22px; @modal-header-title-font-size: @font-size-lg; -@modal-header-close-size: 56px; +@modal-header-close-size: @modal-header-title-line-height + 2 * @modal-header-padding-vertical; @modal-heading-color: @heading-color; @modal-close-color: @text-color-secondary; @modal-footer-bg: transparent; @@ -2912,6 +2933,7 @@ this.tinycolor = tinycolor;})()`;} @modal-mask-bg: fade(@black, 45%); @modal-confirm-body-padding: 32px 32px 24px; @modal-confirm-title-font-size: @font-size-lg; +@modal-border-radius: @border-radius-base; @progress-default-color: @processing-color; @progress-remaining-color: @background-color-base; @progress-info-text-color: @progress-text-color; diff --git a/web/client/src/themes/light.json b/web/client/src/themes/light.json index a7c012cd..c59ee5e5 100644 --- a/web/client/src/themes/light.json +++ b/web/client/src/themes/light.json @@ -1 +1 @@ -{"@line-height-base":"1.66667","@mode":"compact","@font-size-base":"12px","@font-size-lg":"@font-size-base + 2px","@default-padding-lg":"24px","@default-padding-md":"16px","@default-padding-sm":"12px","@default-padding-xs":"8px","@default-padding-xss":"4px","@padding-lg":"16px","@padding-md":"8px","@padding-sm":"8px","@padding-xs":"4px","@padding-xss":"0px","@control-padding-horizontal":"@padding-sm","@control-padding-horizontal-sm":"@default-padding-xs","@margin-lg":"16px","@margin-md":"8px","@margin-sm":"8px","@margin-xs":"4px","@margin-xss":"0px","@height-base":"28px","@height-lg":"32px","@height-sm":"22px","@btn-padding-horizontal-base":"@default-padding-sm - 1px","@btn-padding-horizontal-lg":"@btn-padding-horizontal-base","@btn-padding-horizontal-sm":"@default-padding-xs - 1px","@btn-square-only-icon-size-lg":"16px","@btn-square-only-icon-size":"14px","@btn-square-only-icon-size-sm":"12px","@breadcrumb-font-size":"@font-size-base","@breadcrumb-icon-font-size":"@font-size-base","@dropdown-line-height":"18px","@menu-item-padding":"0 12px","@menu-horizontal-line-height":"38px","@menu-inline-toplevel-item-height":"32px","@menu-item-height":"32px","@menu-item-vertical-margin":"0px","@menu-item-boundary-margin":"0px","@menu-icon-margin-right":"8px","@checkbox-size":"14px","@checkbox-group-item-margin-right":"6px","@picker-panel-cell-height":"22px","@picker-panel-cell-width":"32px","@picker-text-height":"32px","@picker-time-panel-cell-height":"24px","@picker-panel-without-time-cell-height":"48px","@form-item-margin-bottom":"16px","@form-vertical-label-padding":"0 0 4px","@rate-star-size":"16px","@radio-size":"14px","@radio-wrapper-margin-right":"6px","@switch-height":"20px","@switch-sm-height":"14px","@switch-min-width":"40px","@switch-sm-min-width":"24px","@switch-inner-margin-min":"4px","@switch-inner-margin-max":"22px","@slider-handle-size":"12px","@slider-handle-margin-top":"-4px","@input-padding-vertical-base":"round(\n max(\n (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n @border-width-base,\n 2px\n )\n)","@input-padding-horizontal-lg":"11px","@page-header-padding":"16px","@page-header-padding-vertical":"8px","@page-header-heading-title":"16px","@page-header-heading-sub-title":"12px","@page-header-tabs-tab-font-size":"14px","@pagination-mini-options-size-changer-top":"1px","@pagination-item-size-sm":"22px","@cascader-dropdown-line-height":"@dropdown-line-height","@select-dropdown-height":"@height-base","@select-single-item-height-lg":"32px","@select-multiple-item-height":"@input-height-base - max(@input-padding-vertical-base, 4) * 2","@select-multiple-item-height-lg":"24px","@select-multiple-item-spacing-half":"3px","@tree-title-height":"20px","@transfer-item-padding-vertical":"3px","@transfer-list-search-icon-top":"8px","@transfer-header-height":"36px","@comment-actions-margin-bottom":"0px","@comment-actions-margin-top":"@margin-xs","@comment-content-detail-p-margin-bottom":"0px","@steps-icon-size":"24px","@steps-icon-custom-size":"20px","@steps-icon-custom-font-size":"20px","@steps-icon-custom-top":"2px","@steps-icon-margin":"2px 8px 2px 0","@steps-icon-font-size":"@font-size-base","@steps-dot-top":"4px","@steps-icon-top":"0px","@steps-small-icon-size":"20px","@steps-vertical-icon-width":"12px","@steps-vertical-tail-width":"12px","@steps-vertical-tail-width-sm":"10px","@collapse-header-padding-extra":"32px","@collapse-content-padding":"@padding-md @padding-lg","@list-item-meta-description-font-size":"@font-size-sm","@list-item-padding-sm":"4px 12px","@list-item-padding-lg":"12px 16px","@drawer-header-padding":"11px @padding-lg","@drawer-footer-padding-vertical":"@padding-sm","@drawer-footer-padding-horizontal":"@padding-sm","@drawer-header-close-size":"44px","@modal-header-padding":"11px @modal-header-padding-horizontal","@modal-footer-padding-vertical":"@padding-sm","@modal-header-close-size":"44px","@modal-confirm-body-padding":"24px 24px 16px","@message-notice-content-padding":"8px 16px","@popover-min-height":"28px","@popover-padding-horizontal":"@default-padding-sm","@card-padding-base":"12px","@card-head-height":"36px","@card-head-font-size":"@card-head-font-size-sm","@card-head-padding":"8.5px","@card-padding-base-sm":"@card-padding-base","@card-head-height-sm":"30px","@card-head-padding-sm":"6px","@card-actions-li-margin":"4px 0","@card-head-tabs-margin-bottom":"-9px","@table-padding-vertical":"12px","@table-padding-horizontal":"8px","@table-padding-vertical-md":"8px","@table-padding-horizontal-md":"8px","@table-padding-vertical-sm":"4px","@table-padding-horizontal-sm":"4px","@table-selection-column-width":"32px","@statistic-content-font-size":"20px","@alert-with-description-no-icon-padding-vertical":"7px","@alert-with-description-padding-vertical":"11px","@alert-icon-top":"7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)","@alert-with-description-icon-size":"20px","@skeleton-paragraph-margin-top":"20px","@skeleton-paragraph-li-margin-top":"12px","@skeleton-paragraph-li-height":"14px","@skeleton-title-height":"14px","@skeleton-title-paragraph-margin-top":"20px","@descriptions-title-margin-bottom":"8px","@descriptions-default-padding":"12px @padding-lg","@descriptions-item-padding-bottom":"@padding-xs","@avatar-size-base":"28px","@avatar-size-lg":"32px","@avatar-size-sm":"22px","@avatar-font-size-base":"16px","@avatar-font-size-lg":"20px","@avatar-font-size-sm":"12px","@badge-height":"18px","@tag-line-height":"18px","@notification-padding-vertical":"12px","@notification-padding-horizontal":"16px","@result-title-font-size":"20px","@result-icon-font-size":"64px","@result-extra-margin":"24px 0 0 0","@anchor-link-top":"4px","@anchor-link-left":"16px","@anchor-link-padding":"@anchor-link-top 0 @anchor-link-top @anchor-link-left","@tabs-card-horizontal-padding":"4px @padding-md","@progress-circle-text-font-size":"0.833333em","@image-size-base":"48px","@image-font-size-base":"24px","@primary-color":"@blue-6","@layout-header-background":"#fff"} \ No newline at end of file +{"@line-height-base":"1.66667","@mode":"compact","@font-size-base":"12px","@font-size-lg":"@font-size-base + 2px","@default-padding-lg":"24px","@default-padding-md":"16px","@default-padding-sm":"12px","@default-padding-xs":"8px","@default-padding-xss":"4px","@padding-lg":"16px","@padding-md":"8px","@padding-sm":"8px","@padding-xs":"4px","@padding-xss":"0px","@control-padding-horizontal":"@padding-sm","@control-padding-horizontal-sm":"@default-padding-xs","@margin-lg":"16px","@margin-md":"8px","@margin-sm":"8px","@margin-xs":"4px","@margin-xss":"0px","@height-base":"28px","@height-lg":"32px","@height-sm":"22px","@btn-padding-horizontal-base":"@default-padding-sm - 1px","@btn-padding-horizontal-lg":"@btn-padding-horizontal-base","@btn-padding-horizontal-sm":"@default-padding-xs - 1px","@btn-square-only-icon-size-lg":"16px","@btn-square-only-icon-size":"14px","@btn-square-only-icon-size-sm":"12px","@breadcrumb-font-size":"@font-size-base","@breadcrumb-icon-font-size":"@font-size-base","@dropdown-line-height":"18px","@menu-item-padding":"0 12px","@menu-horizontal-line-height":"38px","@menu-inline-toplevel-item-height":"32px","@menu-item-height":"32px","@menu-item-vertical-margin":"0px","@menu-item-boundary-margin":"0px","@menu-icon-margin-right":"8px","@checkbox-size":"14px","@checkbox-group-item-margin-right":"6px","@picker-panel-cell-height":"22px","@picker-panel-cell-width":"32px","@picker-text-height":"32px","@picker-time-panel-cell-height":"24px","@picker-panel-without-time-cell-height":"48px","@form-item-margin-bottom":"16px","@form-vertical-label-padding":"0 0 4px","@rate-star-size":"16px","@radio-size":"14px","@radio-wrapper-margin-right":"6px","@switch-height":"20px","@switch-sm-height":"14px","@switch-min-width":"40px","@switch-sm-min-width":"24px","@switch-inner-margin-min":"4px","@switch-inner-margin-max":"22px","@slider-handle-size":"12px","@slider-handle-margin-top":"-4px","@input-padding-vertical-base":"round(\n max(\n (round(((@input-height-base - @font-size-base * @line-height-base) / 2) * 10) / 10) -\n @border-width-base,\n 2px\n )\n)","@input-padding-horizontal-lg":"11px","@page-header-padding":"16px","@page-header-padding-vertical":"8px","@page-header-heading-title":"16px","@page-header-heading-sub-title":"12px","@page-header-tabs-tab-font-size":"14px","@pagination-mini-options-size-changer-top":"1px","@pagination-item-size-sm":"22px","@cascader-dropdown-line-height":"@dropdown-line-height","@select-dropdown-height":"@height-base","@select-single-item-height-lg":"32px","@select-multiple-item-height":"@input-height-base - max(@input-padding-vertical-base, 4) * 2","@select-multiple-item-height-lg":"24px","@select-multiple-item-spacing-half":"3px","@tree-title-height":"20px","@transfer-item-padding-vertical":"3px","@transfer-list-search-icon-top":"8px","@transfer-header-height":"36px","@comment-actions-margin-bottom":"0px","@comment-actions-margin-top":"@margin-xs","@comment-content-detail-p-margin-bottom":"0px","@steps-icon-size":"24px","@steps-icon-custom-size":"20px","@steps-icon-custom-font-size":"20px","@steps-icon-custom-top":"2px","@steps-icon-margin":"2px 8px 2px 0","@steps-icon-font-size":"@font-size-base","@steps-dot-top":"4px","@steps-icon-top":"0px","@steps-small-icon-size":"20px","@steps-vertical-icon-width":"12px","@steps-vertical-tail-width":"12px","@steps-vertical-tail-width-sm":"10px","@collapse-header-padding-extra":"32px","@collapse-content-padding":"@padding-md @padding-lg","@list-item-meta-description-font-size":"@font-size-sm","@list-item-padding-sm":"4px 12px","@list-item-padding-lg":"12px 16px","@drawer-header-padding":"11px @padding-lg","@drawer-footer-padding-vertical":"@padding-sm","@drawer-footer-padding-horizontal":"@padding-sm","@drawer-header-close-size":"44px","@modal-header-padding-vertical":"11px","@modal-header-padding":"@modal-header-padding-vertical @modal-header-padding-horizontal","@modal-footer-padding-vertical":"@padding-sm","@modal-header-close-size":"@modal-header-title-line-height + 2 * @modal-header-padding-vertical","@modal-confirm-body-padding":"24px 24px 16px","@message-notice-content-padding":"8px 16px","@popover-min-height":"28px","@popover-padding-horizontal":"@default-padding-sm","@card-padding-base":"12px","@card-head-height":"36px","@card-head-font-size":"@card-head-font-size-sm","@card-head-padding":"8.5px","@card-padding-base-sm":"@card-padding-base","@card-head-height-sm":"30px","@card-head-padding-sm":"6px","@card-actions-li-margin":"4px 0","@card-head-tabs-margin-bottom":"-9px","@table-padding-vertical":"12px","@table-padding-horizontal":"8px","@table-padding-vertical-md":"8px","@table-padding-horizontal-md":"8px","@table-padding-vertical-sm":"4px","@table-padding-horizontal-sm":"4px","@table-selection-column-width":"32px","@statistic-content-font-size":"20px","@alert-with-description-no-icon-padding-vertical":"7px","@alert-with-description-padding-vertical":"11px","@alert-icon-top":"7px + @font-size-base * (@line-height-base / 2) - (@font-size-base / 2)","@alert-with-description-icon-size":"20px","@skeleton-paragraph-margin-top":"20px","@skeleton-paragraph-li-margin-top":"12px","@skeleton-paragraph-li-height":"14px","@skeleton-title-height":"14px","@skeleton-title-paragraph-margin-top":"20px","@descriptions-title-margin-bottom":"8px","@descriptions-default-padding":"12px @padding-lg","@descriptions-item-padding-bottom":"@padding-xs","@avatar-size-base":"28px","@avatar-size-lg":"32px","@avatar-size-sm":"22px","@avatar-font-size-base":"16px","@avatar-font-size-lg":"20px","@avatar-font-size-sm":"12px","@badge-height":"18px","@tag-line-height":"18px","@notification-padding-vertical":"12px","@notification-padding-horizontal":"16px","@result-title-font-size":"20px","@result-icon-font-size":"64px","@result-extra-margin":"24px 0 0 0","@anchor-link-top":"4px","@anchor-link-left":"16px","@anchor-link-padding":"@anchor-link-top 0 @anchor-link-top @anchor-link-left","@tabs-card-horizontal-padding":"4px @padding-md","@progress-circle-text-font-size":"0.833333em","@image-size-base":"48px","@image-font-size-base":"24px","@primary-color":"@blue-6","@layout-header-background":"#fff"} \ No newline at end of file diff --git a/web/log/development.txt b/web/log/development.txt index 95fc9315..b79ade1c 100644 --- a/web/log/development.txt +++ b/web/log/development.txt @@ -3415,3 +3415,5 @@ 2022-07-18 17:40:02.984 - info: [Router] Inject api: attachment/index 2022-07-19 09:38:20.086 - debug: [FS-LOGGER] Init. 2022-07-19 09:38:20.998 - info: [Router] Inject api: attachment/index +2022-07-20 19:49:25.720 - debug: [FS-LOGGER] Init. +2022-07-20 19:49:25.776 - info: [Router] Inject api: attachment/index