diff --git a/api/.vscode/settings.json b/api/.vscode/settings.json new file mode 100644 index 0000000..bc4fb95 --- /dev/null +++ b/api/.vscode/settings.json @@ -0,0 +1,6 @@ +// 将设置放入此文件中以覆盖默认值和用户设置。 +{ + "editor.fontSize": 16, + "eslint.format.enable": true, + "editor.tabSize": 3, +} \ No newline at end of file diff --git a/api/app/lib/controllers/alarm/data.js b/api/app/lib/controllers/alarm/data.js index a2cd793..817d7d9 100644 --- a/api/app/lib/controllers/alarm/data.js +++ b/api/app/lib/controllers/alarm/data.js @@ -12,7 +12,7 @@ async function groupList (ctx) { for (let g of groupRes) { g.unit = await await clickHouse.anxinyun.query(` - SELECT * FROM t_alarm_group_unit WHERE group_id = ${g.id} + SELECT * FROM t_alarm_group_unit WHERE group_id = ${g.id} `).toPromise(); } @@ -84,7 +84,7 @@ async function list (ctx) { whereOption.push(`DeviceStatus.Status = ${0}`) } } - + let alarmQueryOptionStr = ` FROM alarms diff --git a/api/app/lib/controllers/alarm/video.js b/api/app/lib/controllers/alarm/video.js index 3c7a959..5ba4718 100644 --- a/api/app/lib/controllers/alarm/video.js +++ b/api/app/lib/controllers/alarm/video.js @@ -27,7 +27,7 @@ async function alarmList (ctx) { const { clickHouse } = ctx.app.fs const { utils: { judgeSuper, anxinStrucIdRange } } = ctx.app.fs const { database: anxinyun } = clickHouse.anxinyun.opts.config - const { pepProjectId, keywordTarget, keyword, state, kindId, sustainTimeStart, sustainTimeEnd, limit, page, } = ctx.query + const { pepProjectId, keywordTarget, keyword, state, kindId, sustainTimeStart, sustainTimeEnd, limit, page, statusId} = ctx.query let anxinStruc = await anxinStrucIdRange({ ctx, pepProjectId, keywordTarget, keyword @@ -71,6 +71,9 @@ async function alarmList (ctx) { ) `) } + if(statusId){ + statusAlarmWhereOption.push(`camera_status_alarm.status_id = ${statusId}`) + } const queryStr = ` SELECT diff --git a/api/app/lib/controllers/project/index.js b/api/app/lib/controllers/project/index.js index 19acbd8..2659964 100644 --- a/api/app/lib/controllers/project/index.js +++ b/api/app/lib/controllers/project/index.js @@ -52,16 +52,39 @@ async function pomsProject (ctx) { let pepProjectIds = new Set() let anxinProjectIds = new Set() + let createUsers = new Set() for (let p of proRes.rows) { if (p.pepProjectId) { pepProjectIds.add(p.pepProjectId) } + if(p.createUser){ + createUsers.add(p.createUser) + } for (let ap of p.anxinProjectId) { if (ap) { anxinProjectIds.add(ap) } } } + const pomsUser = await models.User.findAll({ + where: { + id: { $in: [...createUsers]} + } + }) + let pepUserIds = new Set() + for (let p of pomsUser) { + if (p.pepUserId) { + pepUserIds.add(p.pepUserId) + } + } + const pepcaUser = pepUserIds.size ? + await clickHouse.pepEmis.query( + ` + SELECT * FROM user + WHERE id IN (${[...pepUserIds].join(',')}, -1) + ` + ).toPromise() : + [] const pepProjectRes = pepProjectIds.size ? await clickHouse.projectManage.query( ` @@ -89,6 +112,7 @@ async function pomsProject (ctx) { for (let p of proRes.rows) { const corPro = pepProjectRes.find(pp => pp.id == p.pepProjectId) || {} + const pepUserName = (pepcaUser.find(qq => qq.id == (pomsUser.find(oo => oo.id == p.createUser)||{}).pepUserId)||{}).name ||'' p.dataValues.pepProjectName = corPro.project_name p.dataValues.pepProjectIsDelete = corPro.isdelete p.dataValues.constructionStatusId = corPro.construction_status_id @@ -96,6 +120,7 @@ async function pomsProject (ctx) { let nextAnxinProject = anxinProjectRes.filter(ap => p.anxinProjectId.includes(ap.id)) p.dataValues.anxinProject = nextAnxinProject + p.dataValues.pepUserName = pepUserName delete p.dataValues.anxinProjectId } ctx.status = 200; diff --git a/web/client/src/sections/install/components/memberModal.jsx b/web/client/src/sections/install/components/memberModal.jsx index 72fb389..eeab3a4 100644 --- a/web/client/src/sections/install/components/memberModal.jsx +++ b/web/client/src/sections/install/components/memberModal.jsx @@ -1,6 +1,6 @@ import React, { useState, useRef, useEffect } from "react"; import { connect } from "react-redux"; -import { Modal, Form, CheckboxGroup, Checkbox } from "@douyinfe/semi-ui"; +import { Modal, Form, CheckboxGroup, Checkbox,Button } from "@douyinfe/semi-ui"; import { IconAlertCircle } from '@douyinfe/semi-icons'; @@ -42,6 +42,7 @@ function memberModal (props) { text: '拥有服务、工单、资料相关的权限' }, ]); //权限配置 + const [pomsList_, setPomsList_] = useState([]) //初始化 useEffect(() => { if (editObj.id) { @@ -54,6 +55,7 @@ function memberModal (props) { setDepartmentId(editObj.departments[0].id) setPeopleList(departmentList) } + setPomsList_(pomsList.filter(p=>p.pepProjectIsDelete != -1)) }, []); function handleOk () { @@ -212,15 +214,20 @@ function memberModal (props) { style={{ width: 417 }} filter showClear + outerBottomSlot={ +
+ +
+ } > { - pomsList.map((item, index) => { + pomsList_.map((item, index) => { return ( - item.pepProjectIsDelete !== 1 ? (