Merge remote-tracking branch 'origin' into feature/juguohong/20250816

This commit is contained in:
juguohong
2025-08-24 16:28:56 +08:00
112 changed files with 11132 additions and 82 deletions

View File

@@ -7,7 +7,6 @@ export type EnvType = 'development' | 'test' | 'production'
export interface EnvConfig {
name: string
apiBaseURL: string
apiVersion: string
timeout: number
enableLog: boolean
enableMock: boolean
@@ -18,8 +17,7 @@ const envConfigs: Record<EnvType, EnvConfig> = {
// 开发环境
development: {
name: '开发环境',
apiBaseURL: 'https://dev-api.playballtogether.com',
apiVersion: 'v1',
apiBaseURL: 'https://sit.light120.com',
timeout: 15000,
enableLog: true,
enableMock: true
@@ -28,8 +26,7 @@ const envConfigs: Record<EnvType, EnvConfig> = {
// 测试环境
test: {
name: '测试环境',
apiBaseURL: 'https://test-api.playballtogether.com',
apiVersion: 'v1',
apiBaseURL: 'https://sit.light120.com',
timeout: 12000,
enableLog: true,
enableMock: false
@@ -38,8 +35,7 @@ const envConfigs: Record<EnvType, EnvConfig> = {
// 生产环境
production: {
name: '生产环境',
apiBaseURL: 'https://api.playballtogether.com',
apiVersion: 'v1',
apiBaseURL: 'https://sit.light120.com',
timeout: 10000,
enableLog: false,
enableMock: false

View File

@@ -0,0 +1,176 @@
// 表单字段类型枚举
export enum FieldType {
TEXT = 'text',
TEXTAREA = 'textarea',
SELECT = 'select',
DATE = 'date',
TIME = 'time',
NUMBER = 'number',
SWITCH = 'switch',
RADIO = 'radio',
CHECKBOX = 'checkbox',
LOCATION = 'location',
UPLOADIMAGE = 'uploadimage',
TIMEINTERVAL = 'timeinterval',
NUMBERINTERVAL = 'numberinterval',
RANGE = 'range',
TEXTAREATAG = 'textareaTag',
ACTIVITYINFO = 'activityInfo',
WECHATCONTACT = 'wechatContact'
}
// 表单字段配置接口
export interface FormFieldConfig {
prop: string
label: string
type: FieldType
placeholder?: string
required?: boolean
defaultValue?: any
options?: Array<{ label: string; value: any }>
rules?: Array<{
required?: boolean
min?: number
max?: number
pattern?: RegExp
message: string
}>
props?: Record<string, any>
description?: string
children?: FormFieldConfig[]
iconType?: string
}
// 发布球局表单配置
export const publishBallFormSchema: FormFieldConfig[] = [
{
prop: 'image_list',
label: '活动封页',
type: FieldType.UPLOADIMAGE,
placeholder: '请选择活动类型',
required: true,
props: {
maxCount: 9
}
},
{
prop: 'title',
label: '',
type: FieldType.TEXT,
placeholder: '好的标题更吸引人哦',
required: true,
props: {
maxLength: 20
}
},
{
prop: 'timeRange',
label: '',
type: FieldType.TIMEINTERVAL,
placeholder: '请选择活动日期',
required: true
},
{
prop: 'activityInfo',
label: '活动信息',
type: FieldType.ACTIVITYINFO,
placeholder: '请选择活动时间',
required: true,
children: [
{
prop: 'price',
label: '费用',
iconType: 'ICON_COST',
type: FieldType.NUMBER,
placeholder: '请输入活动费用(元)',
defaultValue: 0,
rules: [
{ min: 0, message: '费用不能为负数' },
{ max: 1000, message: '费用不能超过1000元' }
],
},
{
prop: 'location_name',
label: '地点',
iconType: 'ICON_LOCATION',
type: FieldType.LOCATION,
placeholder: '请选择活动地点',
required: true,
},
{
prop: 'play_type',
label: '玩法',
iconType: 'ICON_GAMEPLAY',
type: FieldType.SELECT,
placeholder: '请选择玩法',
required: true,
options: [
{ label: '不限', value: '不限' },
{ label: '单打', value: '单打' },
{ label: '双打', value: '双打' },
{ label: '拉球', value: '拉球' }
],
}
]
},
{
prop: 'players',
label: '人数要求',
type: FieldType.NUMBERINTERVAL,
placeholder: '请输入最少参与人数',
defaultValue: 1,
props: {
showSummary: true,
summary: '最少1人最多4人',
}
},
{
prop: 'skill_level',
label: 'NTRP 水平要求',
type: FieldType.RANGE,
placeholder: '请选择开始时间',
required: true,
props: {
showTitle: false,
showSummary: true,
className: 'ntrp-range',
step: 0.5,
min: 1.0,
max: 5.0,
}
},
{
prop: 'descriptionInfo',
label: '补充要求(选填)',
type: FieldType.TEXTAREATAG,
placeholder: '补充性别偏好、特殊要求和注意事项等信息',
required: true,
options:[
{ label: '仅限男生', value: '仅限男生' },
{ label: '仅限女生', value: '仅限女生' },
{ label: '性别不限', value: '性别不限' }
]
},
{
prop: 'is_substitute_supported',
label: '',
type: FieldType.CHECKBOX,
placeholder: '开启自动候补逻辑',
required: true,
props:{
subTitle: '开启自动候补逻辑',
showToast: true,
description: '开启后,当活动人数不足时,系统会自动将活动状态改为“候补”,并通知用户。',
}
},
{
prop: 'is_wechat_contact',
label: '',
type: FieldType.WECHATCONTACT,
required: true,
props:{
subTitle: '允许球友微信联系我',
}
}
]

View File

@@ -17,4 +17,13 @@ export default {
ICON_MENU_ITEM_SELECTED: require('@/static/list/icon-menu-item-selected.svg'),
ICON_ARROW_DOWN_WHITE: require('@/static/list/icon-arrow-down-white.svg'),
ICON_LIST_RIGHT_ARROW: require('@/static/list/icon-list-right-arrow.svg'),
ICON_SEARCH: require('@/static/publishBall/icon-search.svg'),
ICON_MAP: require('@/static/publishBall/icon-map.svg'),
ICON_STADIUM: require('@/static/publishBall/icon-stadium.svg'),
ICON_ARRORW_SMALL: require('@/static/publishBall/icon-arrow-small.svg'),
ICON_MAP_SEARCH: require('@/static/publishBall/icon-map-search.svg'),
ICON_HEART_CIRCLE: require('@/static/publishBall/icon-heartcircle.png'),
ICON_ADD: require('@/static/publishBall/icon-add.svg'),
ICON_COPY: require('@/static/publishBall/icon-arrow-right.svg'),
ICON_DELETE: require('@/static/publishBall/icon-delete.svg')
}