增加开启自动候补

This commit is contained in:
筱野
2025-08-18 23:34:24 +08:00
parent 4dea0f7b29
commit 3c91ee0e88
19 changed files with 629 additions and 190 deletions

View File

@@ -2,30 +2,18 @@ import React, { useState } from 'react'
import { View, Text } from '@tarojs/components'
import Taro from '@tarojs/taro'
import { CoverImageUpload, NTRPSlider, TimeSelector, TextareaTag, SelectStadium, ParticipantsControl, TitleInput, FormBasicInfo, FormSwitch } from '../../components'
import { type NTRPRange, type TimeRange, type Stadium, type ActivityType, type CoverImage } from '../../components/index.types'
import { CoverImageUpload, Range, TimeSelector, TextareaTag, SelectStadium, ParticipantsControl, TitleInput, FormBasicInfo, FormSwitch } from '../../components'
import { type Stadium, type CoverImage } from '../../components/index.types'
import { FormFieldConfig, FieldType } from '../../config/formSchema/publishBallFormSchema'
import './index.scss'
import { PublishBallFormData } from '../../../types/publishBall';
interface FormData {
activityType: ActivityType
title: string
timeRange: TimeRange
fee: string
location: string
gameplay: string
minParticipants: number
maxParticipants: number
ntpLevel: NTRPRange
TextareaTag: string
autoDegrade: boolean
}
import './index.scss'
// 组件映射器
const componentMap = {
[FieldType.TEXT]: TitleInput,
[FieldType.TIMEINTERVAL]: TimeSelector,
[FieldType.RANGE]: NTRPSlider,
[FieldType.RANGE]: Range,
[FieldType.TEXTAREATAG]: TextareaTag,
[FieldType.NUMBERINTERVAL]: ParticipantsControl,
[FieldType.UPLOADIMAGE]: CoverImageUpload,
@@ -34,8 +22,8 @@ const componentMap = {
}
const PublishForm: React.FC<{
formData: FormData,
onChange: (key: keyof FormData, value: any) => void,
formData: PublishBallFormData,
onChange: (key: keyof PublishBallFormData, value: any) => void,
optionsConfig: FormFieldConfig[] }> = ({ formData, onChange, optionsConfig }) => {
const [coverImages, setCoverImages] = useState<CoverImage[]>([])
const [showStadiumSelector, setShowStadiumSelector] = useState(false)
@@ -53,26 +41,6 @@ const PublishForm: React.FC<{
// 获取人数要求显示文本
const getParticipantsText = () => {
return `最少${formData.minParticipants}人,最多${formData.maxParticipants}`
}
// 处理NTRP范围变化
const handleNTRPChange = (range: NTRPRange) => {
updateFormData('ntpLevel', range)
}
// 处理时间范围变化
const handleTimeRangeChange = (timeRange: TimeRange) => {
updateFormData('timeRange', timeRange)
}
// 处理补充要求变化
const handleAdditionalRequirementsChange = (value: string) => {
updateFormData('additionalRequirements', value)
}
// 处理场馆选择
const handleStadiumSelect = (stadium: Stadium | null) => {
setSelectedStadium(stadium)
@@ -82,10 +50,6 @@ const PublishForm: React.FC<{
setShowStadiumSelector(false)
}
// 处理活动类型变化
const handleActivityTypeChange = (type: ActivityType) => {
updateFormData('activityType', type)
}
@@ -128,7 +92,7 @@ const PublishForm: React.FC<{
...item.props,
...(item.key === 'additionalRequirements' ? { options: item.options } : {})
}
console.log(optionProps, item.label);
console.log(optionProps, item.label, formData[item.key]);
if (item.type === FieldType.UPLOADIMAGE) {
/* 活动封面 */
return <CoverImageUpload
@@ -172,6 +136,7 @@ const PublishForm: React.FC<{
}
<View className='bg-section'>
<Component
label={item.label}
value={formData[item.key]}
onChange={(value) => updateFormData(item.key as keyof FormData, value)}
{...optionProps}