编辑球局
This commit is contained in:
@@ -108,7 +108,8 @@ const StadiumDetail = forwardRef<StadiumDetailRef, StadiumDetailProps>(({
|
||||
description:{
|
||||
description: '',
|
||||
description_tag: []
|
||||
}
|
||||
},
|
||||
venue_id: stadium.id
|
||||
})
|
||||
|
||||
// 暴露方法给父组件
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import React, { useState, useEffect } from 'react'
|
||||
import { View, Text, Button, Image } from '@tarojs/components'
|
||||
import { Checkbox } from '@nutui/nutui-react-taro'
|
||||
import dayjs from 'dayjs'
|
||||
import Taro from '@tarojs/taro'
|
||||
import { type ActivityType } from '../../components/ActivityTypeSwitch'
|
||||
import CommonDialog from '../../components/CommonDialog'
|
||||
@@ -15,8 +16,8 @@ import GeneralNavbar from "@/components/GeneralNavbar"
|
||||
import images from '@/config/images'
|
||||
import { useUserInfo } from '@/store/userStore'
|
||||
import styles from './index.module.scss'
|
||||
import dayjs from 'dayjs'
|
||||
import { usePublishBallData } from '@/store/publishBallStore'
|
||||
import DetailService from "@/services/detailService";
|
||||
|
||||
const defaultFormData: PublishBallFormData = {
|
||||
title: '',
|
||||
@@ -171,17 +172,17 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
|
||||
const validateFormData = (formData: PublishBallFormData, isOnSubmit: boolean = false) => {
|
||||
const { activityInfo, title, timeRange } = formData;
|
||||
const { activityInfo, title, timeRange, image_list } = 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 && activityType === 'group') {
|
||||
if (!isOnSubmit) {
|
||||
Taro.showToast({
|
||||
title: `请上传活动封面`,
|
||||
icon: 'none'
|
||||
})
|
||||
}
|
||||
return false
|
||||
}
|
||||
if (!title) {
|
||||
if (!isOnSubmit) {
|
||||
Taro.showToast({
|
||||
@@ -252,10 +253,17 @@ const PublishBall: React.FC = () => {
|
||||
return true
|
||||
}
|
||||
|
||||
const getParams = () => {
|
||||
const currentInstance = Taro.getCurrentInstance()
|
||||
const params = currentInstance.router?.params
|
||||
return params
|
||||
}
|
||||
// 提交表单
|
||||
const handleSubmit = async () => {
|
||||
// 基础验证
|
||||
console.log(formData, 'formData');
|
||||
const params = getParams()
|
||||
const { republish } = params || {};
|
||||
if (activityType === 'individual') {
|
||||
const isValid = validateFormData(formData[0])
|
||||
if (!isValid) {
|
||||
@@ -277,10 +285,11 @@ const PublishBall: React.FC = () => {
|
||||
is_wechat_contact: wechat.is_wechat_contact,
|
||||
wechat_contact: wechat.wechat_contact || wechat.default_wechat_contact,
|
||||
}
|
||||
const res = await PublishService.createPersonal(options);
|
||||
const res = republish === '0' ? await PublishService.gamesUpdate(options) : await PublishService.createPersonal(options);
|
||||
const successText = republish === '0' ? '更新成功' : '发布成功';
|
||||
if (res.code === 0 && res.data) {
|
||||
Taro.showToast({
|
||||
title: '发布成功',
|
||||
title: successText,
|
||||
icon: 'success'
|
||||
})
|
||||
delay(1000)
|
||||
@@ -325,10 +334,11 @@ const PublishBall: React.FC = () => {
|
||||
image_list: item.image_list.map(img => img.url)
|
||||
}
|
||||
})
|
||||
const res = await PublishService.create_play_pmoothlys({rows: options});
|
||||
const successText = republish === '0' ? '更新成功' : '发布成功';
|
||||
const res = republish === '0' ? await PublishService.gamesUpdate(options[0]) : await PublishService.create_play_pmoothlys({rows: options});
|
||||
if (res.code === 0 && res.data) {
|
||||
Taro.showToast({
|
||||
title: '发布成功',
|
||||
title: successText,
|
||||
icon: 'success'
|
||||
})
|
||||
delay(1000)
|
||||
@@ -346,9 +356,11 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const mergeWithDefault = (data: any): PublishBallFormData => {
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
const { start_time, end_time, play_type, price,
|
||||
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;
|
||||
@@ -377,6 +389,16 @@ const PublishBall: React.FC = () => {
|
||||
...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 } : {}),
|
||||
...activityInfo
|
||||
},
|
||||
descriptionInfo: {
|
||||
@@ -390,7 +412,6 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const formatConfig = () => {
|
||||
const newFormSchema = publishBallFormSchema.reduce((acc, item) => {
|
||||
if (item.prop === 'wechat') {
|
||||
@@ -412,8 +433,7 @@ const PublishBall: React.FC = () => {
|
||||
setOptionsConfig(newFormSchema)
|
||||
}
|
||||
const initFormData = () => {
|
||||
const currentInstance = Taro.getCurrentInstance()
|
||||
const params = currentInstance.router?.params
|
||||
const params = getParams()
|
||||
const userPhone = (userInfo as any)?.phone || ''
|
||||
if (params?.type) {
|
||||
const type = params.type as ActivityType
|
||||
@@ -429,8 +449,6 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
} else if (type === 'ai') {
|
||||
// 从 Store 注入 AI 生成的表单 JSON
|
||||
|
||||
|
||||
if (publishAiData && Array.isArray(publishAiData) && publishAiData.length > 0) {
|
||||
Taro.showToast({
|
||||
title: '智能识别成功,请完善剩余信息',
|
||||
@@ -453,7 +471,33 @@ const PublishBall: React.FC = () => {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (params?.gameId) {
|
||||
getGameDetail(params.gameId)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
const getGameDetail = async (gameId) => {
|
||||
if (!gameId) return;
|
||||
try {
|
||||
const res = await DetailService.getDetail(Number(gameId));
|
||||
if (res.code === 0) {
|
||||
const merged = mergeWithDefault(res.data)
|
||||
setFormData([merged])
|
||||
if (merged.activityInfo.play_type === '个人球局') {
|
||||
setTitleBar('发布')
|
||||
setActivityType('individual')
|
||||
} else {
|
||||
setTitleBar('发布畅打活动')
|
||||
setActivityType('group')
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
if (e.message === '球局不存在') {
|
||||
}
|
||||
}
|
||||
};
|
||||
const onCheckedChange = (checked: boolean) => {
|
||||
setChecked(checked)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user