智能导入
This commit is contained in:
@@ -11,8 +11,10 @@ import { PublishBallFormData } from '../../../types/publishBall';
|
||||
import PublishService from '@/services/publishService';
|
||||
import { getNextHourTime, getEndTime, delay } from '@/utils';
|
||||
import images from '@/config/images'
|
||||
import { useUserInfo } from '@/store/userStore'
|
||||
import styles from './index.module.scss'
|
||||
import dayjs from 'dayjs'
|
||||
import { usePublishBallData, usePublishBallActions } from '@/store/publishBallStore'
|
||||
|
||||
const defaultFormData: PublishBallFormData = {
|
||||
title: '',
|
||||
@@ -43,19 +45,21 @@ const defaultFormData: PublishBallFormData = {
|
||||
},
|
||||
is_substitute_supported: true,
|
||||
is_wechat_contact: true,
|
||||
wechat_contact: '14223332214'
|
||||
wechat_contact: ''
|
||||
}
|
||||
|
||||
const PublishBall: React.FC = () => {
|
||||
const [activityType, setActivityType] = useState<ActivityType>('individual')
|
||||
const [isSubmitDisabled, setIsSubmitDisabled] = useState(false)
|
||||
const userInfo = useUserInfo();
|
||||
const publishAiData = usePublishBallData()
|
||||
const { clearPublishData } = usePublishBallActions()
|
||||
|
||||
// 获取页面参数并设置导航标题
|
||||
const [optionsConfig, setOptionsConfig] = useState<FormFieldConfig[]>(publishBallFormSchema)
|
||||
const [formData, setFormData] = useState<PublishBallFormData[]>([
|
||||
defaultFormData
|
||||
])
|
||||
console.log(userInfo, 'userInfo');
|
||||
const [formData, setFormData] = useState<PublishBallFormData[]>([defaultFormData])
|
||||
const [checked, setChecked] = useState(true)
|
||||
|
||||
// 删除确认弹窗状态
|
||||
const [deleteConfirm, setDeleteConfirm] = useState<{
|
||||
visible: boolean;
|
||||
@@ -77,14 +81,6 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
|
||||
|
||||
// 处理活动类型变化
|
||||
const handleActivityTypeChange = (type: ActivityType) => {
|
||||
if (type === 'group') {
|
||||
setFormData([defaultFormData])
|
||||
} else {
|
||||
setFormData([defaultFormData])
|
||||
}
|
||||
}
|
||||
|
||||
// 检查相邻两组数据是否相同
|
||||
const checkAdjacentDataSame = (formDataArray: PublishBallFormData[]) => {
|
||||
@@ -165,17 +161,17 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
|
||||
const validateFormData = (formData: PublishBallFormData, isOnSubmit: boolean = false) => {
|
||||
const { activityInfo, image_list, title, timeRange } = formData;
|
||||
const { activityInfo, title, timeRange } = formData;
|
||||
const { play_type, price, location_name } = activityInfo;
|
||||
if (!image_list?.length) {
|
||||
if (!isOnSubmit) {
|
||||
Taro.showToast({
|
||||
title: `请上传活动封面`,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
return false
|
||||
}
|
||||
// if (!image_list?.length) {
|
||||
// if (!isOnSubmit) {
|
||||
// Taro.showToast({
|
||||
// title: `请上传活动封面`,
|
||||
// icon: 'none'
|
||||
// })
|
||||
// }
|
||||
// return false
|
||||
// }
|
||||
if (!title) {
|
||||
if (!isOnSubmit) {
|
||||
Taro.showToast({
|
||||
@@ -277,8 +273,8 @@ const PublishBall: React.FC = () => {
|
||||
// 如果是个人球局,则跳转到详情页,并自动分享
|
||||
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
|
||||
Taro.navigateTo({
|
||||
// @ts-expect-error: id
|
||||
url: `/game_pages/detail/index?id=${res.data.id || 1}&from=publish&autoShare=1`
|
||||
// @ts-expect-error: id
|
||||
url: `/pages/detail/index?id=${(res as any).data?.id || 1}&from=publish&autoShare=1`
|
||||
})
|
||||
} else {
|
||||
Taro.showToast({
|
||||
@@ -323,8 +319,8 @@ const PublishBall: React.FC = () => {
|
||||
// 如果是个人球局,则跳转到详情页,并自动分享
|
||||
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
|
||||
Taro.navigateTo({
|
||||
// @ts-expect-error: id
|
||||
url: `/game_pages/detail/index?id=${res.data?.[0].id || 1}&from=publish&autoShare=1`
|
||||
// @ts-expect-error: id
|
||||
url: `/pages/detail/index?id=${(res as any).data?.[0]?.id || 1}&from=publish&autoShare=1`
|
||||
})
|
||||
} else {
|
||||
Taro.showToast({
|
||||
@@ -362,19 +358,48 @@ const PublishBall: React.FC = () => {
|
||||
}, [] as FormFieldConfig[])
|
||||
setOptionsConfig(newFormSchema)
|
||||
setFormData([defaultFormData])
|
||||
}
|
||||
// 根据type设置导航标题
|
||||
if (type === 'group') {
|
||||
Taro.setNavigationBarTitle({
|
||||
title: '发布畅打活动'
|
||||
})
|
||||
} else {
|
||||
Taro.setNavigationBarTitle({
|
||||
Taro.setNavigationBarTitle({
|
||||
title: '发布'
|
||||
})
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
setFormData([{...defaultFormData, wechat_contact: userPhone }])
|
||||
}
|
||||
} else if (type === 'ai') {
|
||||
// 从 Store 注入 AI 生成的表单 JSON
|
||||
const mergeWithDefault = (data: PublishBallFormData): PublishBallFormData => {
|
||||
return {
|
||||
...defaultFormData,
|
||||
...data,
|
||||
timeRange: {
|
||||
...defaultFormData.timeRange,
|
||||
...(data?.timeRange || {}),
|
||||
},
|
||||
activityInfo: {
|
||||
...defaultFormData.activityInfo,
|
||||
...(data?.activityInfo || {}),
|
||||
},
|
||||
descriptionInfo: {
|
||||
...defaultFormData.descriptionInfo,
|
||||
...(data?.descriptionInfo || {}),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
if (publishAiData) {
|
||||
if (Array.isArray(publishAiData)) {
|
||||
const merged = publishAiData.map(item => mergeWithDefault(item))
|
||||
setFormData(merged.length ? merged : [defaultFormData])
|
||||
} else {
|
||||
setFormData([mergeWithDefault(publishAiData)])
|
||||
}
|
||||
} else {
|
||||
setFormData([defaultFormData])
|
||||
}
|
||||
}
|
||||
handleActivityTypeChange(type)
|
||||
}
|
||||
}
|
||||
const onCheckedChange = (checked: boolean) => {
|
||||
@@ -394,6 +419,7 @@ const PublishBall: React.FC = () => {
|
||||
initFormData()
|
||||
}, [])
|
||||
|
||||
console.log(formData, 'formDataformDataformData');
|
||||
return (
|
||||
<View className={styles['publish-ball']}>
|
||||
{/* 活动类型切换 */}
|
||||
@@ -471,7 +497,7 @@ const PublishBall: React.FC = () => {
|
||||
activityType === 'individual' && (
|
||||
<Text className={styles['submit-tip']}>
|
||||
点击确定发布约球,即表示已经同意条款
|
||||
<Text className={styles['link']}>《约球规则》</Text>
|
||||
<Text className={styles['link']} onClick={() => Taro.navigateTo({url: '/pages/publishBall/footballRules/index'})}>《约球规则》</Text>
|
||||
</Text>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user