| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- "use client"
- import {useState} from "react"
- import {Button, Card, Col, Form, Input, Modal, Popconfirm, Row, Select, Space, Table, Tag} from "antd"
- import {DeleteOutlined, EditOutlined, PlusOutlined} from "@ant-design/icons"
- import globalMessage from "@/app/_modules/globalMessage";
- const { Option } = Select
- // 模拟管网数据
- const mockPipelineData = [
- {
- id: "P001",
- name: "解放路主干线",
- type: "主干管",
- material: "钢管",
- diameter: "DN400",
- pressure: "0.4MPa",
- length: 1200,
- installDate: "2020-03-15",
- status: "正常",
- location: "解放路段",
- },
- {
- id: "P002",
- name: "人民路支线",
- type: "支管",
- material: "PE管",
- diameter: "DN200",
- pressure: "0.2MPa",
- length: 800,
- installDate: "2021-06-20",
- status: "维护中",
- location: "人民路段",
- },
- {
- id: "P003",
- name: "建设路次高压管",
- type: "次高压管",
- material: "钢管",
- diameter: "DN600",
- pressure: "0.8MPa",
- length: 2000,
- installDate: "2019-11-10",
- status: "正常",
- location: "建设路段",
- },
- ]
- const mockNodeData = [
- {
- id: "N001",
- name: "解放路调压站",
- type: "调压站",
- inletPressure: "0.4MPa",
- outletPressure: "0.2MPa",
- capacity: "5000m³/h",
- status: "运行",
- location: "解放路与建设路交叉口",
- },
- {
- id: "N002",
- name: "人民路阀门井",
- type: "阀门井",
- inletPressure: "0.2MPa",
- outletPressure: "0.2MPa",
- capacity: "-",
- status: "正常",
- location: "人民路中段",
- },
- ]
- const mockWellData = [
- {
- id: "W001",
- name: "解放路窨井001",
- type: "检查井",
- depth: "2.5m",
- material: "混凝土",
- coverType: "铸铁井盖",
- status: "正常",
- location: "解放路北段",
- lastInspection: "2024-01-15",
- },
- {
- id: "W002",
- name: "人民路窨井002",
- type: "阀门井",
- depth: "3.0m",
- material: "砖砌",
- coverType: "复合井盖",
- status: "需维护",
- location: "人民路南段",
- lastInspection: "2024-01-10",
- },
- ]
- export default function PipelineDataManagement() {
- const [activeTab, setActiveTab] = useState("pipeline")
- const [isModalVisible, setIsModalVisible] = useState(false)
- const [editingRecord, setEditingRecord] = useState(null)
- const [form] = Form.useForm()
- const handleAdd = () => {
- setEditingRecord(null)
- form.resetFields()
- setIsModalVisible(true)
- }
- const handleEdit = (record: any) => {
- setEditingRecord(record)
- form.setFieldsValue(record)
- setIsModalVisible(true)
- }
- const handleDelete = (id: string) => {
- globalMessage.success("删除成功")
- }
- const handleModalOk = () => {
- form.validateFields().then((values) => {
- if (editingRecord) {
- globalMessage.success("更新成功")
- } else {
- globalMessage.success("添加成功")
- }
- setIsModalVisible(false)
- form.resetFields()
- })
- }
- const pipelineColumns = [
- { title: "管线编号", dataIndex: "id", key: "id" },
- { title: "管线名称", dataIndex: "name", key: "name" },
- { title: "管线类型", dataIndex: "type", key: "type" },
- { title: "管材", dataIndex: "material", key: "material" },
- { title: "管径", dataIndex: "diameter", key: "diameter" },
- { title: "压力等级", dataIndex: "pressure", key: "pressure" },
- { title: "长度(m)", dataIndex: "length", key: "length" },
- { title: "安装日期", dataIndex: "installDate", key: "installDate" },
- {
- title: "状态",
- dataIndex: "status",
- key: "status",
- render: (status: string) => (
- <Tag color={status === "正常" ? "green" : status === "维护中" ? "orange" : "red"}>{status}</Tag>
- ),
- },
- {
- title: "操作",
- key: "action",
- render: (_, record) => (
- <Space>
- <Button type="link" icon={<EditOutlined />} onClick={() => handleEdit(record)}>
- 编辑
- </Button>
- <Popconfirm title="确定删除吗?" onConfirm={() => handleDelete(record.id)}>
- <Button type="link" danger icon={<DeleteOutlined />}>
- 删除
- </Button>
- </Popconfirm>
- </Space>
- ),
- },
- ]
- const nodeColumns = [
- { title: "节点编号", dataIndex: "id", key: "id" },
- { title: "节点名称", dataIndex: "name", key: "name" },
- { title: "节点类型", dataIndex: "type", key: "type" },
- { title: "进口压力", dataIndex: "inletPressure", key: "inletPressure" },
- { title: "出口压力", dataIndex: "outletPressure", key: "outletPressure" },
- { title: "处理能力", dataIndex: "capacity", key: "capacity" },
- {
- title: "状态",
- dataIndex: "status",
- key: "status",
- render: (status: string) => (
- <Tag color={status === "运行" ? "green" : status === "正常" ? "blue" : "red"}>{status}</Tag>
- ),
- },
- {
- title: "操作",
- key: "action",
- render: (_, record) => (
- <Space>
- <Button type="link" icon={<EditOutlined />} onClick={() => handleEdit(record)}>
- 编辑
- </Button>
- <Popconfirm title="确定删除吗?" onConfirm={() => handleDelete(record.id)}>
- <Button type="link" danger icon={<DeleteOutlined />}>
- 删除
- </Button>
- </Popconfirm>
- </Space>
- ),
- },
- ]
- const wellColumns = [
- { title: "窨井编号", dataIndex: "id", key: "id" },
- { title: "窨井名称", dataIndex: "name", key: "name" },
- { title: "窨井类型", dataIndex: "type", key: "type" },
- { title: "深度", dataIndex: "depth", key: "depth" },
- { title: "材质", dataIndex: "material", key: "material" },
- { title: "井盖类型", dataIndex: "coverType", key: "coverType" },
- { title: "最后检查", dataIndex: "lastInspection", key: "lastInspection" },
- {
- title: "状态",
- dataIndex: "status",
- key: "status",
- render: (status: string) => <Tag color={status === "正常" ? "green" : "orange"}>{status}</Tag>,
- },
- {
- title: "操作",
- key: "action",
- render: (_, record) => (
- <Space>
- <Button type="link" icon={<EditOutlined />} onClick={() => handleEdit(record)}>
- 编辑
- </Button>
- <Popconfirm title="确定删除吗?" onConfirm={() => handleDelete(record.id)}>
- <Button type="link" danger icon={<DeleteOutlined />}>
- 删除
- </Button>
- </Popconfirm>
- </Space>
- ),
- },
- ]
- const renderTabContent = () => {
- switch (activeTab) {
- case "pipeline":
- return (
- <Table columns={pipelineColumns} dataSource={mockPipelineData} rowKey="id" pagination={{ pageSize: 10 }} />
- )
- case "node":
- return <Table columns={nodeColumns} dataSource={mockNodeData} rowKey="id" pagination={{ pageSize: 10 }} />
- case "well":
- return <Table columns={wellColumns} dataSource={mockWellData} rowKey="id" pagination={{ pageSize: 10 }} />
- default:
- return null
- }
- }
- const renderModalForm = () => {
- if (activeTab === "pipeline") {
- return (
- <>
- <Form.Item name="name" label="管线名称" rules={[{ required: true }]}>
- <Input />
- </Form.Item>
- <Form.Item name="type" label="管线类型" rules={[{ required: true }]}>
- <Select>
- <Option value="主干管">主干管</Option>
- <Option value="支管">支管</Option>
- <Option value="次高压管">次高压管</Option>
- </Select>
- </Form.Item>
- <Form.Item name="material" label="管材" rules={[{ required: true }]}>
- <Select>
- <Option value="钢管">钢管</Option>
- <Option value="PE管">PE管</Option>
- <Option value="铸铁管">铸铁管</Option>
- </Select>
- </Form.Item>
- <Form.Item name="diameter" label="管径" rules={[{ required: true }]}>
- <Input />
- </Form.Item>
- <Form.Item name="pressure" label="压力等级" rules={[{ required: true }]}>
- <Input />
- </Form.Item>
- <Form.Item name="length" label="长度(m)" rules={[{ required: true }]}>
- <Input type="number" />
- </Form.Item>
- <Form.Item name="location" label="位置" rules={[{ required: true }]}>
- <Input />
- </Form.Item>
- </>
- )
- }
- return null
- }
- return (
- <div className="p-6">
- <Card title="燃气管网基础数据管理">
- <Row gutter={16} className="mb-4">
- <Col>
- <Button type={activeTab === "pipeline" ? "primary" : "default"} onClick={() => setActiveTab("pipeline")}>
- 管线数据
- </Button>
- </Col>
- <Col>
- <Button type={activeTab === "node" ? "primary" : "default"} onClick={() => setActiveTab("node")}>
- 管点数据
- </Button>
- </Col>
- <Col>
- <Button type={activeTab === "well" ? "primary" : "default"} onClick={() => setActiveTab("well")}>
- 窨井数据
- </Button>
- </Col>
- </Row>
- <div className="mb-4">
- <Space>
- <Button type="primary" icon={<PlusOutlined />} onClick={handleAdd}>
- 新增
- </Button>
- <Input.Search placeholder="搜索..." style={{ width: 300 }} onSearch={(value) => console.log(value)} />
- </Space>
- </div>
- {renderTabContent()}
- <Modal
- title={editingRecord ? "编辑数据" : "新增数据"}
- open={isModalVisible}
- onOk={handleModalOk}
- onCancel={() => setIsModalVisible(false)}
- width={600}
- >
- <Form form={form} layout="vertical">
- {renderModalForm()}
- </Form>
- </Modal>
- </Card>
- </div>
- )
- }
|