import React, { useState, useEffect, useRef, useImperativeHandle, forwardRef, } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import { message, Form, Pagination, Table, Space, Modal, Button, Select, Row, Col, Tabs, Input, Upload, Checkbox, Tag, Radio, Descriptions, Popover, Transfer, } from "antd"; import { UploadOutlined } from "@ant-design/icons"; import ajax from "@/services"; import moment from "moment"; import { dictionary, utils } from "@/config/common"; import { FormSelect, ExportBtnNew, ExportPMS, OptionPanel, SystemSearch, ResultPanel, FormSliderPicker, SelectGaodeLngLat, ResultFlow, AreaCascader, ImgResize, ImgZoom, TreeSelectGroup, } from "@/components"; import "./index.scss"; import { getToken } from "@/config/cookie"; import { useSetState, useSessionStorageState, useUpdateEffect } from "ahooks"; const { TextArea } = Input; const ConfigRoad = (props) => { const { getRecordList = {} } = props console.log(getRecordList); const navigate = useNavigate(); //编辑泊位提交的编辑泊位 const location = useLocation(); const parking_id = getRecordList.id; const operator_id = getRecordList.operator_id; // const region_id = location.search.split("&")[2].split("=")[1]; const [modalBtnLoading, setModalBtnLoading] = useState(false) //泊位管理Form const [berthForm] = Form.useForm(); const [dataForm] = Form.useForm(); const [editPoleForm] = Form.useForm(); const [ruleForm] = Form.useForm(); //计费规则-添加或编辑规则的Form const [getEditData, setGetEditData] = useState({}) const [getIdValue, setGetIdValue] = useState({}) //计费规则添加弹窗的泊位选择框 const [showBerthSelect, setShowBerthSelect] = useState(false); //编辑杆位 const [editTitle, setEditTitle] = useState(false) const berthManage = { form: [ { label: "泊位号", type: "input", placeholder: "请输入泊位号", name: "berth_code", }, { label: "视频设备名称", type: "input", placeholder: "请输入内容", name: "video_content", }, ], columns: [ { title: "泊位排序", dataIndex: "index", key: "index", align: "center", render: (_, record, index) => { return index + 1; }, }, { title: "泊位号", dataIndex: "berth_code", key: "berth_code", align: "center", }, { title: "ETC是否开启", dataIndex: "etc_status_name", key: "etc_status_name", align: "center", }, { title: "对应视频设备", dataIndex: "video_equipment_name", key: "video_equipment_name", align: "center", }, { title: "计费规则", dataIndex: "rule_id", key: "rule_id", align: "center", }, { title: "经纬度", dataIndex: "lng_lat", key: "lng_lat", align: "center", }, { title: "服务属性", dataIndex: "service_type_name", key: "service_type_name", align: "center", }, { title: "状态", dataIndex: "status", key: "status", align: "center", render: (text) => { return text == 1 ? "上线" : text == 2 ? "下线" : "已删除"; }, }, { title: "更新时间", dataIndex: "update_time", key: "update_time", align: "center", }, { title: "操作", dataIndex: "operator", key: "operator", align: "center", render: (_, record) => { return ( <>
{ setBerthModal({ record, visible: true }); }} > 查看
{ setIsEdit(true); setEditBerthModal(true); setGetEditData(record); berthForm.setFieldsValue({ berth_code: record.berth_code, service_type: record.service_type, berth_type: record.berth_type, etc_status: record.etc_status, }); setLngLat(record.lng_lat); }} > 编辑
{ setConfirmModalData({ ...confirmModalData, visible: true, type: record.status == 1 ? 2 : 1, ids: [record.id], func: (ids, status) => ajax.editStatus({ ids: ids, status, }) }); // console.log(record.status); }} > {record.status == 1 ? "下线" : "上线"}
{ setConfirmModalData({ ...confirmModalData, visible: true, type: 3, ids: [record.id], func: (ids, status) => ajax.editStatus({ ids: ids, status, }) }); }} > 删除
} >
); }, }, ], confirmModalData: { visible: false, type: 1, //1上线 2下线 3 删除 ids: [], }, initialValues: { berth_id: "", video_content: "", }, exporturl: "/api/bpm/berth/export", downloadUrl: "api/bpm/berth/berth_import_template", importProps: { name: "file", data: { road_id: parking_id }, action: "/PMS/api/bpm/berth/import", headers: { Authorization: getToken(), }, onChange(info) { if (info.file.status !== "uploading") { console.log(info.file, info.fileList); } if (info.file.status === "done") { if (info.file.response.status === 20000) { message.success(`${info.file.name} 上传成功`); formRef.current.getList(); } else { message.error(info.file.response.message); } } else if (info.file.status === "error") { message.error(`${info.file.name} file upload failed.`); } }, }, search: function (params) { ajax .getManageList(params) .then((res) => { if (res.status === 20000) { setResultData({ data: res.data.list, total_records: res.data.total, }); setLoading(false) } else { message.error(res.message); } }) .catch((err) => { console.log(err); }); }, key: "berth_code", create: function (params) { setIsEdit(false); berthForm.resetFields(); setEditBerthModal(true); }, }; const [transferSouceData, setTransferSouceData] = useState([]); //数据采集设备管理 const dataDevice = { form: [ { label: "设备名称", type: "input", placeholder: "请输入内容", name: "device_name", }, { label: "设备编号", type: "input", placeholder: "请输入内容", name: "device_id", }, { label: "对应杆位号", type: "input", placeholder: "请输入内容", name: "num", }, { label: "状态", type: "select", placeholder: "请输入内容", name: "status", options: [ { label: "上线", value: 1, }, { label: "下线", value: 2, }, ], }, ], columns: [ { title: "设备名称", dataIndex: "name", key: "name", align: "center", }, { title: "设备号", dataIndex: "code", key: "code", align: "center", }, { title: "设备类型", dataIndex: "type_name", key: "type_name", align: "center", }, { title: "对应杆位号", dataIndex: "pole_position_code", key: "pole_position_code", align: "center", }, { title: "状态", dataIndex: "operate_status", key: "operate_status", align: "center", }, { title: "更新时间", dataIndex: "update_time", key: "update_time", align: "center", }, { title: "操作", dataIndex: "operator", key: "operator", align: "center", render: (_, record) => { return (
{ ajax.getDeviceInfo({ id: record.id }).then((res) => { if (res.status === 20000) { setDataAcquistionDetail({ visible: true, record: res.data, }); } else { message.error(res.message); } }); }} > 查看
{ setGetIdValue(record.id); setDataAcquistionModal({ ...dataAcquistionModal, visible: true, record: record, isEdit: 1, }); getEditInRoad(record); dataAcquistionModal.form.setFieldsValue({ name: record.name, code: record.code, type: record.type_id, brand: record.brand_id, function: record.function_id, note: record.note, }); }} > 编辑
{ setDataStatusChangeModal({ visible: true, type: record.status === 1 ? 2 : 1, record: record, }); }} > {record.status === 1 ? "下线" : "上线"}
{ setDataStatusChangeModal({ visible: true, type: 3, record: record, }); }} > 删除
} >
); }, }, ], exporturl: "/api/bpm/device/export_device", downloadUrl: "/api/bpm/device/device_import_template", importProps: { name: "file", data: { road_id: parking_id }, headers: { Authorization: getToken(), }, action: "/PMS/api/bpm/device/import_device", onChange(info) { if (info.file.status !== "uploading") { console.log(info.file, info.fileList); } if (info.file.status === "done") { if (info.file.response.status === 20000) { message.success(`${info.file.name} 上传成功`); formRef.current.getList(); } else { message.error(info.file.response.message); } } else if (info.file.status === "error") { message.error(`${info.file.name} file upload failed.`); } }, }, key: "id", search: function (params) { ajax .getDeviceDimensionList(params) .then((res) => { if (res.status === 20000) { setResultData({ data: res.data.list, total_records: res.data.total, }); setLoading(false) } else { message.error(res.message); } }) .catch((err) => console.error(err)); }, create: function (params) { getAllBerth(); setDataAcquistionModal({ ...dataAcquistionModal, visible: true, isEdit: 0, }); dataAcquistionModal.form.resetFields(); }, }; //杆位管理 const poleManage = { form: [ { label: "杆位号", type: "input", placeholder: "请输入内容", name: "pole_content", }, ], columns: [ { title: "杆位号", dataIndex: "code", width: 180, key: "code", align: "center", }, { title: "更新时间", dataIndex: "update_time", width: 180, key: "update_time", align: "center", }, { title: "操作", width: 180, dataIndex: "operator", key: "operator", align: "center", render: (_, record) => { return (
{ ajax.getPoleInfo({ id: record.id }).then((res) => { if (res.status === 20000) { setCheckPoleModal({ visible: true, record: res.data, }); } }); }} > 查看
{ getEditRoadDevice(record) getDevice(record) ajax.getPoleInfo({ id: record.id }).then((res) => { setEditTitle(true) if (res.status === 20000) { const { data } = res; let videoIds = []; if ( data.video_device_ids !== null && data.video_device_ids !== "" ) { videoIds = data.video_device_ids .split(",") .map((item) => +item); } let monitorIds = []; if ( data.monitor_device_ids !== null && data.monitor_device_ids !== "" ) { monitorIds = data.monitor_device_ids .split(",") .map((item) => +item); } setEditPoleModal({ ...editPoleModal, visible: true, record: data, isEdit: 1, }); editPoleForm.setFieldsValue({ code: data.code, has_pole: data.has_pole, video_device_ids: videoIds, monitor_device_ids: monitorIds, }); setLngLatModal({ ...lngLatModal, value: data.lng_lat, }); } }); }} > 编辑
{ setPoleModal({ visible: true, id: [record.id] }); }} > 删除
} >
); }, }, ], key: "id", exporturl: "/api/bpm/device/export_pole_position", downloadUrl: "/api/bpm/device/road_set_pole_position_import_template", importProps: { name: "file", action: "/PMS/api/bpm/device/road_set_import_pole_position", data: { road_id: parking_id }, headers: { Authorization: getToken(), }, onChange(info) { if (info.file.status !== "uploading") { console.log(info.file, info.fileList); } if (info.file.status === "done") { if (info.file.response.status === 20000) { message.success(`${info.file.name} 上传成功`); formRef.current.getList(); } else { message.error(info.file.response.message); } } else if (info.file.status === "error") { message.error(`${info.file.name} file upload failed.`); } }, }, search: function (params) { ajax .getPoleListData(params) .then((res) => { if (res.status === 20000) { setResultData({ data: res.data.list, total_records: res.data.total, }); setLoading(false) } else { message.error(res.message); } }) .catch((err) => console.error(err)); }, create: function (params) { setEditTitle(false) getRoadDevice(parking_id); getRoadMonitorDevice(parking_id); console.log(12122); setEditPoleModal({ ...editPoleModal, visible: true, record: {}, isEdit: 0, }); editPoleForm.resetFields(); setLngLatModal({ ...lngLatModal, value: [], }); }, }; useEffect(() => { getAllBerth(); }, [currentObj]); //计费规则 const billingRule = { form: [ { label: "计费规则", type: "select", name: "rule", options: billRuleList, }, ], columns: [ { title: "序号", dataIndex: "index", key: "index", align: "center", render: (_, record, index) => { return index + 1; }, }, { title: "规则名称", dataIndex: "rule_name", key: "rule_name", align: "center", }, { title: "车辆类型", dataIndex: "vehicle_type_name", key: "vehicle_type_name", align: "center", }, { title: "计费说明", dataIndex: "note", key: "note", align: "center", }, { title: "是否按泊位计费", dataIndex: "berth_ids", key: "berth_ids", align: "center", render: (text) => { return text === "" ? "否" : "是"; }, }, { title: "更新时间", dataIndex: "update_time", key: "update_time", align: "center", }, { title: "操作", dataIndex: "operator", key: "operator", align: "center", render: (_, record) => { return (
{ setCurRuleRecord(record); setRuleDetailModal(true); }} > 查看
{ setCurRuleRecord(record); console.log(record); ruleForm.setFieldsValue({ vehicle_type: record.vehicle_type, rule_id: record.rule_id, is_select: record.berth_ids === "" ? 0 : 1, id: record.id }); // setSelectedBerth(record.berth_ids.split(",").map(item => +item)) setRuleModal(true); // setIsRuleEdit(true); setIsRuleEdit(true); setShowBerthSelect(false); if (record.berth_ids != '') { setShowBerthSelect(true); setIsRuleEdit(true); } // } let data = { road_id: parking_id, vehicle_type: record.vehicle_type, id: record.id } ajax .getRuleBerth(data) .then((res) => { if (res.status === 20000) { res.data.left.map(item => { item.key = item.value return item }) setAllBerthList(res.data.left); setSelectedBerth(res.data.right) console.log(res.data.list); } else { message.error(res.message) } }) }} > 编辑
{ setCurRuleRecord(record); setRuleDelModal({ id: record.id, visible: true }); }} > 删除
} >
); }, }, ], exporturl: "", downloadUrl: "", importProps: { name: "file", action: "/PMS/api/bpm/berth/import", onChange(info) { if (info.file.status !== "uploading") { console.log(info.file, info.fileList); } if (info.file.status === "done") { if (info.file.response.status === 20000) { message.success(`${info.file.name} 上传成功`); } else { message.error(info.file.response.message); } } else if (info.file.status === "error") { message.error(`${info.file.name} file upload failed.`); } }, }, key: "rule_name", search: function (params) { ajax .getRoadRuleList(params) .then((res) => { if (res.status === 20000) { setResultData({ data: res.data.list, total_records: res.data.total, }); setLoading(false) } else { message.error(res.message); } }) .catch((err) => console.error(err)); }, create: function () { setCurRuleRecord({ vehicle_type: null, rule_id: null, is_select: 0, }); setShowBerthSelect(false); ruleForm.setFieldsValue({ vehicle_type: null, rule_id: null, is_select: 0, }); setIsRuleEdit(false); setRuleModal(true); }, }; //form子组件 const formRef = React.useRef(); //收费员管理 const tollCollector = { form: [ { label: "收费员姓名", type: "input", placeholder: "请输入内容", name: "collect_name", }, { label: "登陆名", type: "input", placeholder: "请输入内容", name: "login_name", }, ], columns: [ { title: "收费员姓名", dataIndex: "name", key: "name", align: "center", }, { title: "员工编号", dataIndex: "number", key: "number", align: "center", }, { title: "PDA账号", dataIndex: "pda_number", key: "pda_number", align: "center", }, { title: "操作", dataIndex: "operator", key: "operator", align: "center", render: (_, record) => { return ( { setDelTollModal({ ...delTollModal, visible: true, id: record.id, }); }} > 删除 } > ); }, }, ], initialValues: { collect_name: "", login_name: "", }, exporturl: "", key: "number", search: function (params) { ajax .getTollList(params) .then((res) => { if (res.status === 20000) { setResultData({ data: res.data.list, total_records: res.data.total, }); setLoading(false) } else { message.error(res.message); } }) .catch((err) => console.error(err)); }, create: function (params) { setTollModal(true); }, }; //目前页面的对象 const [currentObj, setCurrentObj] = useState(berthManage); const [type, setType] = useState(1); const [loading, setLoading] = useState(false); const [resultData, setResultData] = useSetState({ // 请求结果 total_records: 0, data: [], }); //批量导入弹窗 const [importGroup, setImportGroup] = useState({ visible: false, imPortUrl: "", }); //泊位弹窗 const [berthModal, setBerthModal] = useState({ visible: false, record: {}, }); //编辑泊位弹窗 const [editBerthModal, setEditBerthModal] = useState(false); //是编辑还是添加的标志 const [isEdit, setIsEdit] = useState(true); //经纬度弹窗和经纬度数据 const [lngLatVisible, setLngLatVisible] = useState(false); const [lngLat, setLngLat] = useState([]); //操作选中的数据 const [selectedRowKeys, setSelectedRowKeys] = useState([]); const [pageData, setPageData] = useSetState({ // 分页参数 pn: 1, page_size: 20, }); //收费员弹窗 const [tollModal, setTollModal] = useState(false); //可以选择的收费员列表 const [canSelectTollList, setCanSelectTollList] = useState([]); //已选择的收费员列表 const [hasSelectTollList, setHasSelectTollList] = useState([]); //rowkey const [rowKey, setRowKey] = useState(""); //计费规则添加弹窗 const [ruleModal, setRuleModal] = useState(false); //确认弹框的数据 const [confirmModalData, setConfirmModalData] = useState({ visible: false, type: 1, //1上线 2下线 3 删除 ids: [], func: () => { }, }); //计费规则添加对应的泊位号 const [allBerthList, setAllBerthList] = useState([]); //计费规则编辑弹窗是编辑还是新增 const [isRuleEdit, setIsRuleEdit] = useState(false); //计费规则 const [billRuleList, setBillRuleList] = useState([]); //编辑计费规则时候的记录信息 const [curRuleRecord, setCurRuleRecord] = useState({}); //选择中的泊位号 const [selectedBerth, setSelectedBerth] = useState([]); //ruleDetailModal const [ruleDetailModal, setRuleDetailModal] = useState(false); //删除弹框 const [ruleDelModal, setRuleDelModal] = useState({ visible: false, id: [], }); //收费员管理-删除收费员 const [delTollModal, setDelTollModal] = useState({ visible: false, id: -1, delFunc: deletToll, close: () => { setDelTollModal({ ...delTollModal, visible: false }); }, }); //数据采集设备管理添加弹窗 const [dataAcquistionModal, setDataAcquistionModal] = useState({ visible: false, record: {}, form: dataForm, isEdit: 0, }); //数据采集设备新增弹窗里面啊的选择数据 const [dataAcquistionSelect, setDataAcquistionSelect] = useState({ typeList: [], brandList: [], funcList: [], }); //数据采集设备泊位列表数据 const [dataAcquistionBerth, setDataAcquistionBerth] = useState([]); const [dataAcquistionTargetKeys, setDataAcquistionTargetKeys] = useState([]); //数据采集设备上线,下线,删除弹窗 const [dataStatusChangeModal, setDataStatusChangeModal] = useState({ visible: false, type: 1, record: {}, }); //杆位删除 const [poleModal, setPoleModal] = useState({ visible: false, id: [], }); //杆位查看弹窗 const [checkPoleModal, setCheckPoleModal] = useState({ visible: false, record: {}, }); const [getMonitorData, setGetMonitorData] = useState([]) const [getRoadData, seGetRoadData] = useState([]) //杆位修改弹窗 const [editPoleModal, setEditPoleModal] = useState({ form: editPoleForm, visible: false, isEdit: 0, record: {}, }); //video_device const [videoDeviceList, setVideoDeviceList] = useState([]); const [monitorDeviceList, setMonitorDeviceList] = useState([]); //杆位管理地图选点弹窗 const [lngLatModal, setLngLatModal] = useState({ visible: false, value: [], }); //数据采集设备管理页面弹窗 const [dataAcquistionDetail, setDataAcquistionDetail] = useState({ visible: false, record: {}, }); function onShowSizeChange(pn, page_size) { setPageData({ pn, page_size }); } //table选择 const rowSelection = { onChange: (selectedRowKeys, selectedRows) => { let arr = []; selectedRows.map((res) => { arr.push(res.id); }); setSelectedRowKeys(arr); }, getCheckboxProps: (record) => ({ disabled: record.name === "Disabled User", // Column configuration not to be checked name: record.berth_code, // key: record.berth_code, }), }; //收费员管理-添加收费员 function addToll(road_id, ids) { ajax .addToll({ road_id, ids }) .then((res) => { if (res.status === 20000) { message.success(res.message); formRef.current.getList(); } else { message.error(res.message); } }) .catch((err) => console.error(err)); } const [getDeviceType, setGetDeviceType] = useState([]) const deviceType = () => { let arr = sysConfig.berthType let newArr = arr.slice(1) setGetDeviceType(newArr) } useEffect(() => { deviceType() }, []) //1:泊位管理上线,2:下线,3:已删除 function changeBerthManage(status) { console.log(selectedRowKeys); if (selectedRowKeys.length != []) { setConfirmModalData({ ...confirmModalData, type: status, ids: selectedRowKeys, visible: true, }); } else { message.error("请至少选择一条数据"); } } const [getLeftBerth, setLeftGetBerth] = useState([]); const [selectedKeys, setSelectedKeys] = useState([]); const [targetKeys, setTargetKeys] = useState([]); function getEditInRoad(record) { let data = { video_equipment_id: record.id, road_id: record.road_id, }; ajax.getEditInRoadData(data).then((res) => { if (res.status == 20000) { let temparr = []; let temparrRight = []; res.data.left.map((item) => { temparr.push({ key: item.value + "", title: item.label, }); }); setLeftGetBerth(temparr); setTargetKeys(res.data.right); } }); } const onChangeSelect = (nextTargetKeys, direction, moveKeys) => { console.log("targetKeys:", nextTargetKeys); console.log("direction:", direction); console.log("moveKeys:", moveKeys); setTargetKeys(nextTargetKeys); }; const onSelectChange = (sourceSelectedKeys, targetSelectedKeys) => { console.log("sourceSelectedKeys:", sourceSelectedKeys); setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]); }; //收费员管理-删除收费员 function deletToll(id) { ajax .delToll({ id }) .then((res) => { if (res.status === 20000) { message.success(res.message); formRef.current.getList(); } else { message.error(res.message); } }) .catch((err) => console.error(err)); } useEffect(() => { console.log(formRef.current); }, [formRef.current]) function getRoadTollList() { ajax .getRoadTollList({ road_id: parking_id }) .then((res) => { if (res.status === 20000) { let data = res.data.map((item) => { item.label = item.text; item.key = item.value; return item; }); setCanSelectTollList(data); } else { message.error(res.message); } }) .catch((err) => console.error(err)); } const [getCarType, setGetCarType] = useState(true) const [getCarTypeValue, setGetCarTypeValue] = useState({}) //处理添加计费规则-车辆类型切换 function handleCarTypeChange(value) { setGetCarTypeValue(value) if (value === '') { setGetCarType(true) } else { setGetCarType(false) let data = { road_id: parking_id, vehicle_type: value } ajax .getRuleBerth(data) .then((res) => { if (res.status === 20000) { res.data.left.map(item => { item.key = item.value return item }) setAllBerthList(res.data.left); } else { message.error(res.message) } }) .catch((err) => console.error(err)); } if (value === void 0) { return; } } const [getCarTypeType, setGetCarTypeType] = useState({}) useEffect(() => { if (selectedBerth.length != []) { setGetCarTypeType(0) } }, [selectedBerth]) //新增或编辑计费规则 function addOrEditRoadRule() { function addRule(data) { if (getCarTypeType === 1 && selectedBerth.length == []) { message.error('请选择对应的泊位号') } else { ajax .addOrEditRoadRule(data) .then((res) => { if (res.status === 20000) { setRuleModal(false); formRef.current.getList(); setSelectedBerth([]); setGetCarType(true) } else { message.error(res.message); } }) .catch((err) => console.error(err)); } } function editRule(data) { console.log(data); data.berth_ids = selectedBerth; ajax .editRoadRule(data) .then((res) => { if (res.status === 20000) { setRuleModal(false); formRef.current.getList(); setSelectedBerth([]); } else { message.error(res.message); } }) .catch((err) => console.error(err)); } ruleForm .validateFields() .then((res) => { const data = { road_id: parking_id, type: isRuleEdit ? "edit" : "add", id: isRuleEdit ? curRuleRecord.id : null, ...ruleForm.getFieldsValue(), berth_ids: ruleForm.getFieldsValue().is_select === 0 ? [] : selectedBerth, }; switch (isRuleEdit) { case true: editRule(data); break; case false: addRule(data); break; } }) .catch((err) => { message.error(err); }); } //数据采集设备管理添加弹窗里面的Select数据 async function getDataSelect() { const typeListAjax = ajax.getDeviceTypeList(); const brandListAjax = ajax.getAllBrandNameList(); const funcListAjax = ajax.getDeviceFuncList(); const [typeList, brandList, funcList] = await Promise.all([ typeListAjax, brandListAjax, funcListAjax, ]); setDataAcquistionSelect({ typeList: typeList.data, brandList: brandList.data, funcList: funcList.data, }); } //数据采集设备管理提交接口 function handleDataAcquistionModal() { function addDevice(res) { ajax .addDevice({ ...res, road_id: parking_id, berth_ids: dataAcquistionTargetKeys, }) .then((res) => { if (res.status === 20000) { message.success(res.message); setDataAcquistionModal({ ...dataAcquistionModal, visible: false, }); formRef.current.getList(); setModalBtnLoading(false) } else { message.error(res.message); setModalBtnLoading(false) } }); } function editDevice(res) { console.log(res); ajax .editDevice({ ...res, id: getIdValue, road_id: parking_id, berth_ids: selectedKeys, }) .then((res) => { if (res.status === 20000) { message.success(res.message); setDataAcquistionModal({ ...dataAcquistionModal, visible: false, }); formRef.current.getList(); } else { message.error(res.message); } }); } dataAcquistionModal.form.validateFields().then( (res) => { switch (dataAcquistionModal.isEdit) { case 0: addDevice(res); break; case 1: editDevice(res); break; } }, (err) => { console.error(err); } ); } //数据采集设备上线下线删除接口 function handleDataStatusChange() { const id = [dataStatusChangeModal.record.id]; console.log(id); //上线 function online(id) { ajax .onlineOrOffline({ id, }) .then((res) => { if (res.status === 20000) { message.success(res.message); setDataStatusChangeModal({ ...dataStatusChangeModal, visible: false, }); formRef.current.getList(); } else { message.error(res.message); } }); } //下线 function offline(id) { ajax.offlineDevice({ id }).then((res) => { if (res.status === 20000) { message.success(res.message); setDataStatusChangeModal({ ...dataStatusChangeModal, visible: false, }); formRef.current.getList(); } else { message.error(res.message); } }); } //删除 function deleteDevice(id) { ajax.delDataDevice({ id }).then((res) => { if (res.status === 20000) { message.success(res.message); setDataStatusChangeModal({ ...dataStatusChangeModal, visible: false, }); formRef.current.getList(); } else { message.error(res.message); } }); } switch (dataStatusChangeModal.type) { case 1: online(id); break; case 2: offline(id); break; case 3: deleteDevice(id); break; default: break; } } //获取所有泊位 function getAllBerth() { ajax.getAllBerth({ road_id: parking_id, is_bind_device: 1 }).then((res) => { if (res.status === 20000) { let _data = res.data.map((item) => { item.key = item.value; return item; }); setDataAcquistionBerth(_data); } else { message.error(res.message); } }); } //获取视频设备 function getRoadDevice(id) { ajax.getRoadDevice({ road_id: id }).then((res) => { if (res.status === 20000) { res.data.left.map((item) => { item.key = item.value; return item; }); // console.log(res.data.left); setVideoDeviceList(res.data.left); } else { message.error(res.message); } }); } const [getEditTarket, setGetEditTarket] = useState([]) const [getLeftEditTarket, setGetLeftEditTarket] = useState([]) const [getSelectedKeys, setGetSelectedKeyst] = useState([]) function getEditRoadDevice(record) { let data = { road_id: parking_id, id: record.id } ajax.getRoadDevice(data).then((res) => { if (res.status === 20000) { res.data.left.map((item) => { item.key = item.value; return item; }); setGetLeftEditTarket(res.data.left); setGetEditTarket(res.data.right); } else { message.error(res.message); } }); } const onSelectRoadChange = (sourceSelectedKeys, targetSelectedKeys) => { console.log("sourceSelectedKeys:", sourceSelectedKeys); setGetSelectedKeyst([...sourceSelectedKeys, ...targetSelectedKeys]); }; const onSelectChangeRoad = (nextTargetKeys, direction, moveKeys) => { setGetEditTarket(nextTargetKeys); }; //获取监控设备 function getRoadMonitorDevice(id) { ajax.getRoadMonitorDevice({ road_id: id }).then((res) => { if (res.status === 20000) { res.data.left.map((item) => { item.key = item.value; return item; }); setMonitorDeviceList(res.data.left); } else { message.error(res.message); } }); } const [getDeviceTarket, setGetDeviceTarket] = useState([]) const [getLeftDeviceTarket, setGetLeftDeviceTarket] = useState([]) const [getLeftDevicetargetKey, setGetLeftDevicetargetKey] = useState([]) function getDevice(record) { let data = { road_id: parking_id, id: record.id } ajax.getRoadMonitorDevice(data).then((res) => { if (res.status === 20000) { res.data.left.map((item) => { item.key = item.value; return item; }); setGetLeftDeviceTarket(res.data.left); setGetDeviceTarket(res.data.right); } else { message.error(res.message); } }); } const onSelectDeviceChange = (sourceSelectedKeys, targetSelectedKeys) => { console.log("sourceSelectedKeys:", sourceSelectedKeys); setGetLeftDevicetargetKey([...sourceSelectedKeys, ...targetSelectedKeys]); }; const onSelectChangeDevice = (nextTargetKeys, direction, moveKeys) => { setGetDeviceTarket(nextTargetKeys); }; //获取计费规则 const getBillRule = (operator_id) => { ajax .getBillRule({ operator_id }) .then((res) => { if (res.status === 20000) { setBillRuleList(res.data); return Promise.resolve(res.data); } else { message.error(res.message); } }) .then((res) => { billingRule.form[0].options = res; setCurrentObj(billingRule); }); }; const submitPole = () => { const isEdit = editPoleModal.isEdit; function addPole(params) { ajax.addPolePosition(params).then((res) => { if (res.status === 20000) { setEditPoleModal({ ...editPoleModal, visible: false }); message.success(res.message); formRef.current.getList(); seGetRoadData([]) setGetMonitorData([]) } else { message.error(res.message); } }); } function editPole(params) { ajax.editPolePosition(params).then((res) => { if (res.status === 20000) { setEditPoleModal({ ...editPoleModal, visible: false }); message.success(res.message); formRef.current.getList(); } else { message.error(res.message); } }); } editPoleForm .validateFields() .then((value) => { console.log(value); if (editPoleModal.isEdit) { value = { ...value, id: editPoleModal.record.id }; } else { value = { ...value }; } value = { ...value, lng_lat: lngLatModal.value, road_id: parking_id }; switch (isEdit) { case 1: editPole(value); break; case 0: addPole(value); break; } }) .catch((err) => { console.error(err); }); }; //删除杆位 function delPolePosition(params) { ajax.delPolePosition(params).then((res) => { if (res.status === 20000) { message.success(res.message); setPoleModal({ ...poleModal, visible: false }); formRef.current.getList(); } else { message.error(res.message); } }); } function confirmDelPole() { delPolePosition({ id: poleModal.id }); } const beforeUpload = (file) => { const isExcel = file.type === 'application/vnd.ms-excel' || file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; if (!isExcel) { message.error('你只能上传Excel文件!'); } return isExcel || Upload.LIST_IGNORE; }; useEffect(() => { switch (type) { case 1: setCurrentObj(berthManage); setRowKey(berthManage.key); setConfirmModalData({ ...confirmModalData, func: (ids, status) => ajax.editStatus({ ids: ids, status, }).then(res => { if (res.status === 20000) { message.success(res.message) } }), }); break; case 2: setCurrentObj(dataDevice); setRowKey(dataDevice.key); getDataSelect(); getAllBerth(); setConfirmModalData({ ...confirmModalData, func: (ids, status) => { let func = null; switch (status) { case 1: func = ajax.onlineOrOffline({ id: ids, }); break; case 2: func = ajax.offlineDevice({ id: ids }); break; case 3: func = ajax.delDataDevice({ id: ids }); } return func; }, }); break; case 3: setCurrentObj(poleManage); setRowKey(poleManage.key); setConfirmModalData({ ...confirmModalData, func: (ids, status) => ajax.delPolePosition({ id: ids }), }); break; case 4: getBillRule(operator_id); break; case 5: setCurrentObj(tollCollector); setRowKey(tollCollector.key); getRoadTollList(); break; default: break; } }, [type]); return (
{"查询条件"}
{ setConfirmModalData({ ...confirmModalData, visible: false }); }} confirmModalData={confirmModalData} delTollModal={delTollModal} isShowExportBtn={type !== 4 && type !== 5} />
{/* */} 共查询到 {resultData.total_records} 条结果
{type === 4 || type === 5 ? ( <> ) : ( )}
{ setLoading(true) setType(type); }} />
{type === 4 || type === 5 ? ( <> ) : (
{type === 3 ? ( <> ) : ( <> )}
)} `共 ${total_records} 条`} total={resultData.total_records} current={pageData.pn} pageSize={pageData.page_size} pageSizeOptions={dictionary?.pageSizeOptions} onChange={onShowSizeChange} onShowSizeChange={onShowSizeChange} />
{ setImportGroup({ ...importGroup, visible: false }); }} title={"批量导入"} footer={null} >

1.请先获取批量添加设备的Excel模板将需要添加的信息填写后进行上传该Excel文件, 上传非规范文件可能造成数据错误, 点击下载 模板文件。

2.请选择上传文件,并上传。

{ setBerthModal({ ...berthModal, visible: false }); }} > {berthModal.record.berth_code} {berthModal.record.lng_lat} {sysConfig.berthType[berthModal.record.berth_type]?.label} {berthModal.record.charge === 0 ? "否" : "是"} {berthModal.record.etc_status_name}