调整字典及发布
This commit is contained in:
@@ -14,7 +14,7 @@ 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'
|
||||
import { usePublishBallData } from '@/store/publishBallStore'
|
||||
|
||||
const defaultFormData: PublishBallFormData = {
|
||||
title: '',
|
||||
@@ -44,8 +44,12 @@ const defaultFormData: PublishBallFormData = {
|
||||
description_tag: [],
|
||||
},
|
||||
is_substitute_supported: true,
|
||||
is_wechat_contact: true,
|
||||
wechat_contact: ''
|
||||
wechat: {
|
||||
is_wechat_contact: true,
|
||||
wechat_contact: '',
|
||||
default_wechat_contact: ''
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const PublishBall: React.FC = () => {
|
||||
@@ -53,7 +57,6 @@ const PublishBall: React.FC = () => {
|
||||
const [isSubmitDisabled, setIsSubmitDisabled] = useState(false)
|
||||
const userInfo = useUserInfo();
|
||||
const publishAiData = usePublishBallData()
|
||||
const { clearPublishData } = usePublishBallActions()
|
||||
|
||||
// 获取页面参数并设置导航标题
|
||||
const [optionsConfig, setOptionsConfig] = useState<FormFieldConfig[]>(publishBallFormSchema)
|
||||
@@ -251,17 +254,19 @@ const PublishBall: React.FC = () => {
|
||||
if (!isValid) {
|
||||
return
|
||||
}
|
||||
const { activityInfo, descriptionInfo, timeRange, players, skill_level,image_list, ...rest } = formData[0];
|
||||
const { activityInfo, descriptionInfo, timeRange, players, skill_level,image_list,wechat, ...rest } = formData[0];
|
||||
const options = {
|
||||
...rest,
|
||||
...activityInfo,
|
||||
...descriptionInfo,
|
||||
...timeRange,
|
||||
max_players: players[1],
|
||||
current_players: players[0],
|
||||
min_players: players[0],
|
||||
skill_level_min: skill_level[0],
|
||||
skill_level_max: skill_level[1],
|
||||
image_list: image_list.map(item => item.url)
|
||||
image_list: image_list.map(item => item.url),
|
||||
is_wechat_contact: wechat.is_wechat_contact,
|
||||
wechat_contact: wechat.wechat_contact || wechat.default_wechat_contact,
|
||||
}
|
||||
const res = await PublishService.createPersonal(options);
|
||||
if (res.code === 0 && res.data) {
|
||||
@@ -274,7 +279,7 @@ const PublishBall: React.FC = () => {
|
||||
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
|
||||
Taro.navigateTo({
|
||||
// @ts-expect-error: id
|
||||
url: `/pages/detail/index?id=${(res as any).data?.id || 1}&from=publish&autoShare=1`
|
||||
url: `/game_pages/detail/index?id=${(res as any).data?.id || 1}&from=publish&autoShare=1`
|
||||
})
|
||||
} else {
|
||||
Taro.showToast({
|
||||
@@ -303,7 +308,7 @@ const PublishBall: React.FC = () => {
|
||||
...descriptionInfo,
|
||||
...timeRange,
|
||||
max_players: players[1],
|
||||
current_players: players[0],
|
||||
min_players: players[0],
|
||||
skill_level_min: skill_level[0],
|
||||
skill_level_max: skill_level[1],
|
||||
image_list: item.image_list.map(img => img.url)
|
||||
@@ -320,7 +325,7 @@ const PublishBall: React.FC = () => {
|
||||
// 如果是畅打,则跳转第一个球局详情页,并自动分享 @刘杰
|
||||
Taro.navigateTo({
|
||||
// @ts-expect-error: id
|
||||
url: `/pages/detail/index?id=${(res as any).data?.[0]?.id || 1}&from=publish&autoShare=1`
|
||||
url: `/game_pages/detail/index?id=${(res as any).data?.[0]?.id || 1}&from=publish&autoShare=1`
|
||||
})
|
||||
} else {
|
||||
Taro.showToast({
|
||||
@@ -330,17 +335,66 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
const mergeWithDefault = (data: any): PublishBallFormData => {
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
const { start_time, end_time, play_type, price, venue_id, location_name, location, latitude,
|
||||
longitude, court_type, court_surface, venue_description_tag, venue_description, venue_image_list,
|
||||
description, description_tag, max_players, min_players, skill_level_max, skill_level_min,
|
||||
venueDtl
|
||||
} = data;
|
||||
let activityInfo = {};
|
||||
if (venueDtl) {
|
||||
const { latitude, longitude } = venueDtl;
|
||||
activityInfo = {
|
||||
latitude,
|
||||
longitude,
|
||||
}
|
||||
}
|
||||
return {
|
||||
...defaultFormData,
|
||||
...data,
|
||||
timeRange: {
|
||||
...defaultFormData.timeRange,
|
||||
start_time,
|
||||
end_time,
|
||||
},
|
||||
activityInfo: {
|
||||
...defaultFormData.activityInfo,
|
||||
...(play_type ? { play_type } : {}),
|
||||
...((price) ? { price } : {}),
|
||||
...(venue_id ? { venue_id } : {}),
|
||||
...(location_name ? { location_name } : {}),
|
||||
...(location ? { location } : {}),
|
||||
...(latitude ? { latitude } : {}),
|
||||
...(longitude ? { longitude } : {}),
|
||||
...(court_type ? { court_type } : {}),
|
||||
...(court_surface ? { court_surface } : {}),
|
||||
...(venue_description_tag ? { venue_description_tag } : {}),
|
||||
...(venue_description ? { venue_description } : {}),
|
||||
...(venue_image_list ? { venue_image_list } : {}),
|
||||
},
|
||||
descriptionInfo: {
|
||||
...defaultFormData.descriptionInfo,
|
||||
...(description ? { description } : {}),
|
||||
...(description_tag ? { description_tag } : {}),
|
||||
},
|
||||
...(skill_level_max && skill_level_min ? { skill_level: [skill_level_min, skill_level_max] } : {}),
|
||||
...(max_players && min_players ? { players: [min_players, max_players] } : {}),
|
||||
wechat: { ...defaultFormData.wechat, default_wechat_contact: userPhone }
|
||||
}
|
||||
}
|
||||
|
||||
const initFormData = () => {
|
||||
const currentInstance = Taro.getCurrentInstance()
|
||||
const params = currentInstance.router?.params
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
if (params?.type) {
|
||||
const type = params.type as ActivityType
|
||||
if (type === 'individual' || type === 'group') {
|
||||
setActivityType(type)
|
||||
if (type === 'group') {
|
||||
const newFormSchema = publishBallFormSchema.reduce((acc, item) => {
|
||||
if (item.prop === 'is_wechat_contact') {
|
||||
if (item.prop === 'wechat') {
|
||||
return acc
|
||||
}
|
||||
if (item.prop === 'image_list') {
|
||||
@@ -365,29 +419,11 @@ const PublishBall: React.FC = () => {
|
||||
Taro.setNavigationBarTitle({
|
||||
title: '发布'
|
||||
})
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
setFormData([{...defaultFormData, wechat_contact: userPhone }])
|
||||
setFormData([{...defaultFormData, wechat: { ...defaultFormData.wechat, default_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)) {
|
||||
@@ -399,6 +435,9 @@ const PublishBall: React.FC = () => {
|
||||
} else {
|
||||
setFormData([defaultFormData])
|
||||
}
|
||||
Taro.setNavigationBarTitle({
|
||||
title: '发布畅打活动'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -419,7 +458,6 @@ const PublishBall: React.FC = () => {
|
||||
initFormData()
|
||||
}, [])
|
||||
|
||||
console.log(formData, 'formDataformDataformData');
|
||||
return (
|
||||
<View className={styles['publish-ball']}>
|
||||
{/* 活动类型切换 */}
|
||||
@@ -497,7 +535,7 @@ const PublishBall: React.FC = () => {
|
||||
activityType === 'individual' && (
|
||||
<Text className={styles['submit-tip']}>
|
||||
点击确定发布约球,即表示已经同意条款
|
||||
<Text className={styles['link']} onClick={() => Taro.navigateTo({url: '/pages/publishBall/footballRules/index'})}>《约球规则》</Text>
|
||||
<Text className={styles['link']} onClick={() => Taro.navigateTo({url: '/publish_pages/publishBall/footballRules/index'})}>《约球规则》</Text>
|
||||
</Text>
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user