diff --git a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/camera.js b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/camera.js index 5390586..08c2e2c 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/camera.js +++ b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/camera.js @@ -4,50 +4,50 @@ import { basicAction } from "@peace/utils"; import { ApiTable } from "$utils"; export function getCamera(query) { - return (dispatch) => - basicAction({ - type: "get", - dispatch: dispatch, - actionType: "GET_CAMREA", - query: query, - url: `${ApiTable.getCamera}`, - msg: { option: "获取摄像头列表信息" }, - reducer: { name: "equipmentWarehouseCamera" }, - }); - } + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_CAMREA", + query: query, + url: `${ApiTable.getCamera}`, + msg: { option: "获取摄像头列表信息" }, + reducer: { name: "equipmentWarehouseCamera", params: { noClear: true } }, + }); +} - export function putForbidden(data) { - return (dispatch) => - basicAction({ - type: "put", - dispatch: dispatch, - actionType: "PUT_FORBIDDEN", - data, - url: `${ApiTable.putForbidden}`, - msg: { option: "" }, //禁用摄像头 - reducer: {}, - }); - } +export function putForbidden(data, forbidden) { + return (dispatch) => + basicAction({ + type: "put", + dispatch: dispatch, + actionType: "PUT_FORBIDDEN", + data, + url: `${ApiTable.putForbidden}`, + msg: { option: forbidden ? "启用":"禁用" }, //禁用摄像头 + reducer: {}, + }); +} - export function getCameraDetails(orgId) { - return (dispatch) => - basicAction({ - type: "get", - dispatch: dispatch, - actionType: "GET_CAMREA_DETAILS", - url: `${ApiTable.getCameraDetails.replace("{cameraId}", orgId)}`, - msg: { option: "" }, //获取摄像头详情 - reducer: { name: "nvrDetails" }, - }); - } - export function getAbility() { - return (dispatch) => - basicAction({ - type: "get", - dispatch: dispatch, - actionType: "GET_ABILITY", - url: `${ApiTable.getAbility}`, - msg: { option: "获取摄像头能力列表" }, - reducer: { name: "equipmentWarehouseCamera" }, - }); - } \ No newline at end of file +export function getCameraDetails(orgId) { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_CAMREA_DETAILS", + url: `${ApiTable.getCameraDetails.replace("{cameraId}", orgId)}`, + msg: { option: "" }, //获取摄像头详情 + reducer: { name: "nvrDetails" }, + }); +} +export function getAbility() { + return (dispatch) => + basicAction({ + type: "get", + dispatch: dispatch, + actionType: "GET_ABILITY", + url: `${ApiTable.getAbility}`, + msg: { option: "获取摄像头能力列表" }, + reducer: { name: "equipmentWarehouseCamera" }, + }); +} diff --git a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/nvr.js b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/nvr.js index 23b98c5..7b47f41 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/nvr.js +++ b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/actions/nvr.js @@ -24,7 +24,7 @@ export function getNvr(query) { query: query, url: `${ApiTable.getNvr}`, msg: { option: "获取nvr列表信息" }, - reducer: { name: "equipmentWarehouseNvr" }, + reducer: { name: "equipmentWarehouseNvr", params: { noClear: true } }, }); } @@ -35,21 +35,24 @@ export function getNvrDetails(orgId) { dispatch: dispatch, actionType: "GET_NVR_DETAILS", url: `${ApiTable.getNvrDetails.replace("{nvrId}", orgId)}`, - msg: { option: "" }, //获取nvr详情 + msg: { option: "" }, //获取nvr详情 reducer: { name: "nvrDetails" }, }); } export function delNvr(orgId) { - return (dispatch) => - basicAction({ - type: "del", - dispatch: dispatch, - actionType: "DEL_NVR", - url: `${ApiTable.delNvr.replace("{nvrId}", orgId)}`, - msg: { option: "删除NVR" }, - reducer: { name: "" }, - }); - } + return (dispatch) => + basicAction({ + type: "del", + dispatch: dispatch, + actionType: "DEL_NVR", + url: `${ApiTable.delNvr.replace("{nvrId}", orgId)}`, + msg: { + option: + "删除成 功!被删除的设备会被存放在“设备回收站”中。并植入“设备回收站”路径。", + }, + reducer: { name: "" }, + }); +} export function addchangeNvr(data) { return (dispatch) => basicAction({ diff --git a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx index 792596d..6621c77 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/components/sideSheet.jsx @@ -33,7 +33,7 @@ function SideSheets(props) { basics: [ { name: "设备名称:", key: "name" }, { name: "设备编号:", key: "serialNo" }, - { name: "接入方式:", key: "type" }, + { name: "接入方式:", key: "accessWay" }, { name: "厂商:", key: "venderId" }, { name: "添加账号:", key: "createUser" }, { name: "添加时间:", key: "createTime" }, @@ -148,8 +148,8 @@ function SideSheets(props) { equipmentScrollbar = new PerfectScrollbar("#equipment_information", { suppressScrollX: true, }); + console.log(nvrDetails); }); - console.log(nvrDetails); }, []); useEffect(() => { @@ -340,13 +340,16 @@ function SideSheets(props) { - {item.key == "typ" - ? accessType.find((v) => v.key == nvrDetails.type) - .name - : item.key == "venderId" - ? venderList.find( - (v) => v.id == nvrDetails.venderId + {item.key == "type" + ? accessType.find( + (v) => v.key == nvrDetails.type ).name + : item.key == "venderId" + ? nvrDetails.venderId + ? venderList.find( + (v) => v.id == nvrDetails.venderId + ).name + : "" : item.key == "createUser" ? nvrDetails.createUser.namePresent : item.key == "createTime" diff --git a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/camera.jsx b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/camera.jsx index 241d396..4fab222 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/camera.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/camera.jsx @@ -10,6 +10,8 @@ import { Pagination, Popover, Tag, + Skeleton, + Popconfirm, } from "@douyinfe/semi-ui"; import "../style.less"; import CameraModal from "../components/cameraModal"; @@ -100,7 +102,7 @@ const CameraHeader = (props) => { modalName="revise" venderList={venderList} close={() => { - equipmentGetNvr(); + equipmentGetCamera(); }} /> @@ -115,30 +117,62 @@ const CameraHeader = (props) => { > 查看 - - - + ) : ( + { + dispatch( + equipmentWarehouse.putForbidden( + { + cameraId: row.id, + forbidden: !row.forbidden, + }, + row.forbidden + ) + ).then(() => { + equipmentGetCamera(); + }); + }} + > + + + )} + + { + dispatch(equipmentWarehouse.delNvr(row.id)).then(() => { + equipmentGetCamera(); + }); }} > - 删除 - + + ); }, @@ -203,13 +237,17 @@ const CameraHeader = (props) => { dataIndex: "updateTime", key: "name", render: (_, r, index) => { - return r.station.map((item, index) => - station( - item.structure.projects[0].name, - item.structure.projects, - "name" - ) - ); + return r.station.length == 0 + ? "" + : r.station.map((item, index) => { + return item.structure.projects.length == 0 + ? "" + : station( + r.station[0].structure.projects[0].name, + item.structure.projects, + "name" + ); + }); }, }, { @@ -217,13 +255,17 @@ const CameraHeader = (props) => { dataIndex: "updateTime", key: "pcode", render: (_, r, index) => { - return r.station.map((item, index) => - station( - item.structure.projects[0].url, - item.structure.projects, - "url" - ) - ); + return r.station.length == 0 + ? "" + : r.station.map((item, index) => { + return item.structure.projects.length == 0 + ? "" + : station( + r.station[0].structure.projects[0].url, + item.structure.projects, + "url" + ); + }); }, }, { @@ -231,11 +273,9 @@ const CameraHeader = (props) => { dataIndex: "updateTime", key: "structure", render: (_, r, index) => { - return station( - r.station[0].structure.name, - r.station, - "structure.name" - ); + return r.station.length == 0 + ? "" + : station(r.station[0].structure.name, r.station, "structure.name"); }, }, { @@ -243,7 +283,9 @@ const CameraHeader = (props) => { dataIndex: "updateTime", key: "measuringPoint", render: (_, r, index) => { - return station(r.station[0].name, r.station, "name"); + return r.station.length == 0 + ? "" + : station(r.station[0].name, r.station, "name"); }, }, { @@ -251,7 +293,9 @@ const CameraHeader = (props) => { dataIndex: "updateTime", key: "factor", render: (_, r, index) => { - return station(r.station[0].factor.name, r.station, "factor.name"); + return r.station.length == 0 + ? "" + : station(r.station[0].factor.name, r.station, "factor.name"); }, }, ]; @@ -495,6 +539,11 @@ const CameraHeader = (props) => { border: "1px solid #D9D9D9", marginBottom: 20, }} + onClick={() => { + api.current.reset(); + setearch({}); + equipmentGetCamera(); + }} > 重置 @@ -558,16 +607,37 @@ const CameraHeader = (props) => { - s)} - dataSource={equipmentWarehouseCamera.data} - bordered={false} - empty="暂无数据" - style={{ - padding: "0px 20px", - }} - pagination={false} - /> + s)} + // dataSource={[ + // { name: "" }, + // { key: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // ]} + pagination={false} + style={{ background: "rgba(217, 216, 216, 1)" }} + empty=" " + /> + } + > +
s)} + dataSource={equipmentWarehouseCamera.data} + bordered={false} + empty="暂无数据" + style={{ + padding: "0px 20px", + }} + pagination={false} + /> +
{ function mapStateToProps(state) { const { auth, global, members, equipmentWarehouseCamera } = state; return { - loading: members.isRequesting, + loading: equipmentWarehouseCamera.isRequesting, user: auth.user, actions: global.actions, members: members.data, diff --git a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/nvr.jsx b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/nvr.jsx index f6dc509..897d61e 100644 --- a/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/nvr.jsx +++ b/code/VideoAccess-VCMP/web/client/src/sections/equipmentWarehouse/containers/nvr.jsx @@ -1,324 +1,352 @@ import React, { useState, useEffect, useRef } from "react"; import { connect } from "react-redux"; import moment from "moment"; -import { Button, Form, Input, Row, Table, Pagination } from "@douyinfe/semi-ui"; +import { + Button, + Form, + Input, + Row, + Table, + Pagination, + Skeleton, + Popconfirm, +} from "@douyinfe/semi-ui"; import "../style.less"; import NvrModal from "../components/nvrModal"; import Setup from "../components/setup"; import SideSheets from "../components/sideSheet"; export const accessType = [ - { name: "萤石云平台摄像头", key: "yingshi" }, - { name: "NVR摄像头", key: "nvr" }, - { name: "IPC 网络摄像头", key: "ipc" }, - { name: "级联摄像头", key: "cascade" }, + { name: "萤石云平台摄像头", key: "yingshi" }, + { name: "NVR摄像头", key: "nvr" }, + { name: "IPC 网络摄像头", key: "ipc" }, + { name: "不明厂家", key: "cascade" }, ]; const NvrHeader = (props) => { - const { dispatch, actions, user, loading, equipmentWarehouseNvr } = props; - const { equipmentWarehouse } = actions; - const [setup, setSetup] = useState(false); - const [sideSheet, setSideSheet] = useState(false); - const [setupp, setSetupp] = useState([]); - const [venderList, setvenderList] = useState([]); //厂商信息 - const [query, setQuery] = useState({ limit: 10, page: 0 }); //页码信息 - const [search, setearch] = useState({}); //搜索条件 - const [rowId, setRowId] = useState(); //表格数据id + const { dispatch, actions, user, loading, equipmentWarehouseNvr } = props; + const { equipmentWarehouse } = actions; + // const [loading, setLoading] = useState(false); + const [setup, setSetup] = useState(false); + const [sideSheet, setSideSheet] = useState(false); + const [setupp, setSetupp] = useState([]); + const [venderList, setvenderList] = useState([]); //厂商信息 + const [query, setQuery] = useState({ limit: 10, page: 0 }); //页码信息 + const [search, setearch] = useState({}); //搜索条件 + const [rowId, setRowId] = useState(); //表格数据id - const api = useRef(); - const SETUPS = "setups"; + const api = useRef(); + const SETUPS = "setups"; - useEffect(() => { - dispatch(actions.equipmentWarehouse.getVender()).then((res) => { - setvenderList(res.payload.data); - attribute(res.payload.data); - }); - //初始化表格显示设置 - localStorage.getItem(SETUPS) == null - ? localStorage.setItem( - SETUPS, - JSON.stringify(["manufactor", "passageway", "port", "state"]) - ) - : ""; - // ; - }, []); - useEffect(() => { - equipmentGetNvr(); - }, [query, search]); + useEffect(() => { + dispatch(actions.equipmentWarehouse.getVender()).then((res) => { + setvenderList(res.payload.data); + attribute(res.payload.data); + }); + //初始化表格显示设置 + localStorage.getItem(SETUPS) == null + ? localStorage.setItem( + SETUPS, + JSON.stringify(["manufactor", "passageway", "port", "state"]) + ) + : ""; + // ; + }, []); + useEffect(() => { + equipmentGetNvr(); + }, [query, search]); - function equipmentGetNvr () { - dispatch(equipmentWarehouse.getNvr({ ...query, ...search })); - } - const columns = [ + function equipmentGetNvr() { + dispatch(equipmentWarehouse.getNvr({ ...query, ...search })); + } + const columns = [ + { + title: "序号", + render: (text, record, index) => { + return index + 1; + }, + }, + { + title: "设备名称", + dataIndex: "name", + render: (text, r, index) => { + return ( +
+ + {r.name} +
+ ); + }, + }, + { + title: "SIP地址", + dataIndex: "owner", + }, + { + title: "操作", + width: "20%", + dataIndex: "", + render: (_, row) => { + return ( +
+ + + { + dispatch(equipmentWarehouse.delNvr(row.id)).then(() => { + equipmentGetNvr(); + }); + }} + > + + +
+ ); + }, + }, + ]; + + //获取表格属性设置 + function attribute(data) { + const arr = localStorage.getItem(SETUPS) + ? JSON.parse(localStorage.getItem(SETUPS)) + : []; + + const column = [ { - title: "序号", - render: (text, record, index) => { - return index + 1; - }, + title: "设备厂家", + dataIndex: "venderId", + key: "manufactor", + render: (_, r, index) => { + let manufactorName = data.find((item) => item.id == r.venderId); + return manufactorName ? manufactorName.name : ""; + }, }, { - title: "设备名称", - dataIndex: "name", - render: (text, r, index) => { - return ( -
- - {r.name} -
- ); - }, + title: "添加账号", + dataIndex: "createUserId", + key: "accountNumber", }, { - title: "SIP地址", - dataIndex: "owner", + title: "通道数", + dataIndex: "channelCount", + key: "passageway", }, { - title: "操作", - width: "20%", - dataIndex: "", - render: (_, row) => { - return ( -
- - - -
- ); - }, + title: "端口", + dataIndex: "port", + key: "port", }, - ]; - - //获取表格属性设置 - function attribute (data) { - const arr = localStorage.getItem(SETUPS) - ? JSON.parse(localStorage.getItem(SETUPS)) - : []; - - const column = [ - { - title: "设备厂家", - dataIndex: "venderId", - key: "manufactor", - render: (_, r, index) => { - let manufactorName = data.find((item) => item.id == r.venderId); - return manufactorName ? manufactorName.name : ""; - }, - }, - { - title: "添加账号", - dataIndex: "createUserId", - key: "accountNumber", - }, - { - title: "通道数", - dataIndex: "channelCount", - key: "passageway", - }, - { - title: "端口", - dataIndex: "port", - key: "port", - }, - { - title: "设备状态", - dataIndex: "size", - key: "state", - }, - { - title: "创建时间", - dataIndex: "createTime", - key: "time", - render: (text, r, index) => { - return moment(r.createTime).format("YYYY-MM-DD HH:MM:SS"); - }, - }, - { - title: "项目名称", - dataIndex: "", - key: "name", - }, - { - title: "pcode", - dataIndex: "", - key: "pcode", - }, - { - title: "结构物", - dataIndex: "", - key: "structure", - }, - ]; - for (let i = 0; i < arr.length; i++) { - let colum = column.filter((item) => { - return item.key === arr[i]; - }); - columns.splice(i + 2, 0, colum[0]); - } - setSetupp(columns); - } + { + title: "设备状态", + dataIndex: "size", + key: "state", + }, + { + title: "创建时间", + dataIndex: "createTime", + key: "time", + render: (_, r, index) => { + return moment(r.createTime).format("YYYY-MM-DD HH:MM:SS"); + }, + }, + { + title: "项目名称", + dataIndex: "", + key: "name", + // render: (_, r, index) => { + // console.log(r); + // return r.station.length == 0 + // ? "" + // : r.station.map((item, index) => { + // return item.structure.projects.length == 0 + // ? "" + // : station( + // r.station[0].structure.projects[0].name, + // item.structure.projects, + // "name" + // ); + // }); + // }, + }, + { + title: "pcode", + dataIndex: "", + key: "pcode", + }, + { + title: "结构物", + dataIndex: "", + key: "structure", + }, + ]; + for (let i = 0; i < arr.length; i++) { + let colum = column.filter((item) => { + return item.key === arr[i]; + }); + columns.splice(i + 2, 0, colum[0]); + } + setSetupp(columns); + } - //条件赛选样式 - const screen = { - width: 193, - marginRight: 20, - marginBottom: 16, - color: "rgba(0, 0, 0, 0.65)", - }; + //条件赛选样式 + const screen = { + width: 193, + marginRight: 20, + marginBottom: 16, + color: "rgba(0, 0, 0, 0.65)", + }; - return ( - <> -
-
-
+
+
s)} - dataSource={equipmentWarehouseNvr.data} - bordered={false} - empty="暂无数据" - style={{ - padding: "0px 20px", - }} - pagination={false} - /> -
+
+ 重置 + + + + +
+
+
+ 设备列表 +
+
+ + +
+
+ s)} + // dataSource={[ + // { name: "" }, + // { key: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // { name: "" }, + // ]} + // pagination={false} + // style={{ background: "rgba(217, 216, 216, 1)" }} + // empty="" + // /> + <>
+ } + > +
s)} + dataSource={equipmentWarehouseNvr.data} + bordered={false} + empty="暂无数据" + style={{ + padding: "0px 20px", + }} + pagination={false} + /> + - {setup ? ( - { - setSetup(false); - attribute(venderList); - }} - /> - ) : ( - "" - )} +
+ + 共{equipmentWarehouseNvr.total}个设备 + + { + setQuery({ limit: pageSize, page: currentPage - 1 }); + }} + /> +
- {sideSheet ? ( - { - setSideSheet(false); - }} - /> - ) : ( - [] - )} - - - ); -}; + {setup ? ( + { + setSetup(false); + attribute(venderList); + }} + /> + ) : ( + "" + )} + {sideSheet ? ( + { + setSideSheet(false); + }} + /> + ) : ( + [] + )} + + + ); +}; -function mapStateToProps (state) { - const { auth, global, members, equipmentWarehouseNvr } = state; - return { - loading: members.isRequesting, - user: auth.user, - actions: global.actions, - members: members.data, - equipmentWarehouseNvr: equipmentWarehouseNvr.data || {}, - }; +function mapStateToProps(state) { + const { auth, global, members, equipmentWarehouseNvr } = state; + return { + loading: equipmentWarehouseNvr.isRequesting, + user: auth.user, + actions: global.actions, + members: members.data, + equipmentWarehouseNvr: equipmentWarehouseNvr.data || {}, + }; } export default connect(mapStateToProps)(NvrHeader);