feat: enhance booth management functionality in outdoor fair

- Added `react-rnd` for draggable booth positioning in the booth management interface.
- Implemented booth booking, cancellation, and swapping features.
- Updated `BoothTab` component to fetch and display booth data with enhanced UI for booth interactions.
- Introduced modal dialogs for booking and managing booth assignments.
- Enhanced venue information service to support booth-related API calls.
- Updated `VenueInfoDetail` to allow for booth layout management and generation.
- Improved overall user experience with better state management and loading indicators.
This commit is contained in:
2026-06-25 14:42:14 +08:00
parent 7fe22c3dfb
commit 50372da241
7 changed files with 735 additions and 193 deletions

View File

@@ -1,8 +1,8 @@
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { useAccess, useModel } from '@umijs/max';
import { history, useAccess, useModel } from '@umijs/max';
import { Button, message, Modal } from 'antd';
import { ActionType, PageContainer, ProColumns, ProTable } from '@ant-design/pro-components';
import { DeleteOutlined, FormOutlined, PlusOutlined } from '@ant-design/icons';
import { AppstoreOutlined, DeleteOutlined, FormOutlined, PlusOutlined } from '@ant-design/icons';
import {
addVenueInfo,
addVenueInfoDictOption,
@@ -153,9 +153,19 @@ const VenueInfoList: React.FC = () => {
{
title: '操作',
valueType: 'option',
width: 140,
width: 220,
fixed: 'right',
render: (_, record) => [
<Button
key="boothMap"
type="link"
size="small"
icon={<AppstoreOutlined />}
hidden={!access.hasPerms('cms:venueInfo:query')}
onClick={() => history.push(`/jobfair/venue-info/detail?id=${record.id}`)}
>
</Button>,
<Button
key="edit"
type="link"