import React, { useState, useRef, useEffect } from "react"; import { ResultFlowResult, BaseMap, Marker } from "@/components" import { Select, Input, Button, Table, message, Pagination, Cascader, Modal, TreeSelect, Form, Row, Col } from 'antd' import { pageSizeOptions } from '@/config/character.config.js' import moment from "moment"; import "./index.scss"; import { useSessionStorageState } from "ahooks" import { SearchOutlined, DeleteOutlined, PlayCircleOutlined, EditOutlined, PlusCircleOutlined } from '@ant-design/icons'; import ajax from '@/services' const { SHOW_PARENT } = TreeSelect; function Fence(props) { // const configData = props.sysConfig["lib-deploy"] || {}; const [form] = Form.useForm() const [ajaxLoading, setAjaxLoading] = useState(false) const [getModalData, setGetModalData] = useState({ attendDistance: '', effective: '' }) const [getEditModal, setGetEditModal] = useState({ attendDistance: '', attend: '', attendName: '' }) const roadSelectRef = useRef() const [editModalVisible, setEditModalVisible] = useState(false) const [editStatus, setEditStatus] = useState(false) const [storeData, setStoreData] = useState([{ label: '全部', value: -1 }]) //所属商户 const [getStatus, setGetStatus] = useState(2) const [deviceTypeData, setDeviceTypeData] = useState([]) const [resultData, setResultData] = useState({ data: [], total_records: 0, export_url: '', process_url: "" }) const parameter = { address: '', device_name: '', road_name: '',//路段名称 operator: -1,//运营商 export: false, road_id: '',//所属路段 pn: 1, length: Number(pageSizeOptions[0]), // 每页条数 } const [formData, setFormData] = useState(parameter) const [formSubmitData, setFormSubmitData] = useState({ address: "", create_time: "", device_name: "", ip_address: "", network_mode: "", operator: "", id: '', password: "", port: "", road_name: "", road_id: "", type: "", user_name: "", video_port: "" }) const [lastFormData, setLastFormData] = useState(formData) const lastFormDataRef = useRef(formData) const getOperatorData = () => { ajax.getOperator().then((e) => { setStoreData([ ...storeData, ...e.data ]) }) } const handlePlay = (item) => { message.error(`播放数据暂未对接`) } const handleDel = (item, index) => { Modal.confirm({ title: '确认删除?', content: `是否确认删除设备:${item.device_name} ?`, icon: , onOk: () => { handleDelToServer(item.id).then((msg) => { message.success(msg || '删除成功') let copyData = resultData.data copyData.splice(index, 1) setResultData({ ...resultData, data: [...copyData] }) }).catch((err) => { message.error(err) }) } }) } const getRoadById = (id) => { return new Promise((resolved, rejected) => { ajax.getAllRoad({ operator_id: id }).then((e) => { if (e.status == 20000) { resolved(e.data) } }).catch((err) => { console.error(err) rejected(err) }) }) } const handleDelToServer = (id) => { return new Promise((resolved, rejected) => { ajax.nvrDel({ id: id }).then((e) => { if (e.status == 20000) { resolved(e.message) } }).catch((err) => { rejected(err) }) }) } const handleEdit = (item) => { setEditStatus(true) getRoadById(item.operator_id).then((data) => { setRoadData(data) }) form.setFieldsValue({ ...item }) setEditModalVisible(true) } const editModalCancel = () => { setEditModalVisible(false) form.resetFields() } //列表 const handleColumns = (tab) => { let result = [...tableColumns]; switch (tab) { case '1': result.splice(9, 1) break; } return result; } //列表 const tableColumns = [{ title: '序号', width: 60, render: (_, record, index) => { return index + 1 } }, { title: '设备名称', dataIndex: 'device_name' }, { title: '所属商户', dataIndex: 'operqator' }, { title: '所属路段', dataIndex: 'road_name', }, { title: '地址', dataIndex: 'address', }, { title: '网络模式', dataIndex: 'network_mode', }, { title: 'IP地址/设备编码', width: 145, dataIndex: 'ip_address', }, { title: '端口号', dataIndex: 'port', }, { title: '视频端口号', width: 110, dataIndex: 'video_port', }, { title: '用户名', dataIndex: 'user_name', }, { title: '密码', dataIndex: 'password' }, { title: '创建日期', dataIndex: 'create_time', width: 110 }, { title: '操作', width: 135, render: (text, record, index) => { return <>
} } ] // 获取列表数据 const getData = (data = formData) => { setAjaxLoading(true) ajax.getNVRListData(data).then(res => { setAjaxLoading(false) if (res.status === 20000) { let resDataArr = res?.data?.list?.length ? res.data.list.map((item) => { item.key = item.id return item }) : [] setResultData({ ...resultData, data: resDataArr, total_records: res.data.total }) } else { setResultData({ data: [], total_records: 0, export_url: '', process_url: "" }) message.error(res.message) } }, err => { console.log(err) }) } const getDeviceType = () => { ajax.getDeviceTypeList().then((e) => { setDeviceTypeData([ ...deviceTypeData, ...e.data ]) }) } //切换分页 const changePn = (pn, length) => { if (lastFormData.length === length) { setLastFormData(Object.assign({}, lastFormData, { pn: pn })) lastFormDataRef.current = Object.assign({}, lastFormData, { pn: pn }) getData(Object.assign({}, lastFormData, { pn: pn })) } } //切换每页条数 const changeLength = (pn, length) => { setFormData(Object.assign({}, formData, { pn: 1, length: length })) setLastFormData(Object.assign({}, lastFormData, { pn: 1, length: length })) lastFormDataRef.current = Object.assign({}, lastFormData, { pn: 1, length: length }) getData(Object.assign({}, lastFormData, { pn: 1, length: length })) } //检索数据 const getSearchData = (data = formData) => { getData(data) } //重置表单 const formReset = () => { setFormData({ ...parameter }) getData({ ...parameter }) } const handleEditFinish = () => { console.log('form finish') } const nvrUpdate = (params) => { return new Promise((resolved, rejected) => { ajax.nvrUpdate(params).then((e) => { if (e.status == 20000) { resolved(e.message) } }).catch(err => { rejected(err) }) }) } const nvrAdd = (params) => { return new Promise((resolved, rejected) => { ajax.nvrAdd(params).then((e) => { if (e.status == 20000) { resolved(e.message) } }).catch(err => { rejected(err) }) }) } const handleAdd = () => { setEditStatus(false) form.resetFields() setEditModalVisible(true) } const handleRoadChange = (v) => { ajax.getRoadInfo({ road_id: v }).then((e) => { if (e.status == 20000) { form.setFieldValue('address', e.data.address) form.setFieldValue('lng_lat', e.data.lng_lat) } }) } const [roadData, setRoadData] = useState([]); const handleOperaChange = (id) => { // let roadSelect = document.querySelectorAll('.fenceModal .road-selector .ant-select-selection-item') // if (roadSelect.length) { // roadSelect[0].innerText = '' // } setFormSubmitData({ ...formSubmitData, road_name: undefined }) form.setFieldValue('road_name', '') getRoadById(id).then((data) => { setRoadData(data) }) } const handleSubmit = () => { if (editStatus) { // 编辑 nvrUpdate(form.getFieldsValue()).then((msg) => { message.success(msg || '设备更新成功') setEditModalVisible(false) getData() }) } else { // 新增 nvrAdd(form.getFieldsValue()).then((msg) => { message.success(msg || '设备添加成功') setEditModalVisible(false) getData() }) } } const [sessionTabList, setSessionTabList] = useSessionStorageState('nvrMgm', { value: { } }) useEffect(() => { if (sessionTabList && Object.values(sessionTabList).length > 0) { setFormData({ address: sessionTabList?.address, device_name: sessionTabList?.device_name, road_name: sessionTabList?.road_name, operator: sessionTabList?.operator }) } }, []) useEffect(() => { setSessionTabList({ ...formData }) }, [formData]) // 获取下拉菜单 const getSelectList = () => { // 商户名称 ajax.getOperator().then( (res) => { if (parseInt(res?.status) === 20000) { setStoreData(res?.data || []); } else { message.error(res?.message); } }, (err) => { console.log(err); } ); }; const getAllRoad = (id, setData) => { ajax.getAllRoadByOperatort({ operator: id }).then( (res) => { setData(res?.data || []); }, (err) => { console.log(err); } ); }; useEffect(() => { getSelectList(); if (formData?.operator) { getAllRoad(formData?.operator, setRoadData); } }, []); useEffect(() => { getData() getOperatorData() getDeviceType() }, []) return <>
setFormData({ ...formData, device_name: e.target.value })} />
setFormData({ ...formData, road_name: e.target.value })} />
setFormData({ ...formData, address: e.target.value })} />
共检索到{resultData.total_records}条结果 record.cap_id + "_" + record.bk_id} pagination={false} loading={ajaxLoading} /> `共 ${resultData.total_records} 条`} total={resultData.total_records} current={lastFormData.pn} pageSize={lastFormData.length} pageSizeOptions={pageSizeOptions} onChange={changePn} onShowSizeChange={changeLength} />
{/* */} */}
} export default Fence;