Merge pull request 'Release/event platform 1.05' (#18) from release/eventPlatform_1.05 into master

Reviewed-on: #18
This commit was merged in pull request #18.
This commit is contained in:
2026-09-03 18:14:49 +08:00
6 changed files with 67 additions and 4 deletions
+4
View File
@@ -76,6 +76,10 @@ export interface EventListQueryParams {
idCardImg?: string;
/** 是否要求提供证件号码;0=无需,1=需要 */
idCardNo?: string;
/** 报名人数起始(含) */
scBegin?: string;
/** 报名人数结束(含) */
scEnd?: string;
}
/** 分页数据 */
+40
View File
@@ -2,6 +2,7 @@ import { defineComponent } from 'vue';
import {
Button,
Input,
InputNumber,
Table,
Form,
Space,
@@ -266,6 +267,45 @@ export default defineComponent({
onUpdate:value={(val: any) => (filterForm.region = val || [])}
/>
</Form.Item>
<Form.Item label="报名人数">
<Space.Compact>
<InputNumber
placeholder="请输入"
style={{ width: '140px' }}
value={filterForm.scBegin || undefined}
precision={0}
step={0}
min={0}
controls={false}
onUpdate:value={(val: any) =>
(filterForm.scBegin = val != null ? String(val) : '')
}
onPressEnter={handleSearch}
/>
<Input
style={{
width: '40px',
textAlign: 'center',
backgroundColor: '#fafafa',
pointerEvents: 'none',
color: 'rgba(0,0,0,0.45)',
}}
value="至"
disabled
/>
<InputNumber
placeholder="请输入"
style={{ width: '140px' }}
value={filterForm.scEnd || undefined}
precision={0}
step={0}
min={0}
controls={false}
onUpdate:value={(val: any) => (filterForm.scEnd = val != null ? String(val) : '')}
onPressEnter={handleSearch}
/>
</Space.Compact>
</Form.Item>
<Form.Item>
<Space>
<Button type="primary" onClick={handleSearch} loading={loading.value}>
+4
View File
@@ -15,6 +15,8 @@ export const FILTER_DEFAULTS = {
isPublic: '',
idCardNo: '',
idCardImg: '',
scBegin: '',
scEnd: '',
};
export type FieldMapping = [
@@ -35,6 +37,8 @@ export const FIELD_MAPPINGS: FieldMapping[] = [
['createDateRange', 'createDateEnd', (v) => v?.[1]],
['startDateRange', 'startDate', (v) => v?.[0]],
['startDateRange', 'startDateEnd', (v) => v?.[1]],
['scBegin', 'scBegin'],
['scEnd', 'scEnd'],
];
/** 赛事状态选项(value 对应 API status */
@@ -92,11 +92,24 @@ export function useEventListModel() {
f.region.length > 0 ||
!!f.isPublic ||
!!f.idCardNo ||
!!f.idCardImg
!!f.idCardImg ||
!!f.scBegin?.trim() ||
!!f.scEnd?.trim()
);
});
/** 报名人数区间:起始大于结束时对调 */
const normalizeSignupCountRange = () => {
const begin = filterForm.scBegin.trim();
const end = filterForm.scEnd.trim();
if (begin && end && Number(begin) > Number(end)) {
filterForm.scBegin = end;
filterForm.scEnd = begin;
}
};
const handleSearch = () => {
normalizeSignupCountRange();
pagination.reset();
fetchList();
};
@@ -24,6 +24,7 @@ export const ACTION_TYPE_OPTIONS = [
{ value: '3', label: '禁用用户' },
{ value: '4', label: '启用用户' },
{ value: '7', label: '系统参数' },
{ value: '8', label: '用户登录' },
] as const;
/** 操作类型文案映射 */
@@ -33,6 +34,7 @@ export const ACTION_TYPE_MAP: Record<number, string> = {
3: '禁用用户',
4: '启用用户',
7: '系统参数',
8: '用户登录',
};
// ============================================================
+3 -3
View File
@@ -34,8 +34,8 @@ export const REAL_NAME_REGEX = /^[\u4e00-\u9fa5A-Za-z0-9·]{1,8}$/;
export const IMAGE_TYPE_REGEX = /^image\//;
/**
* 数字(整数)
* - 用于过滤非数字字符
* 数字字符
* - 用于过滤 0-9 以外的字符(含小数点、字母、符号等)
*/
export const INTEGER_ONLY_REGEX = /\D/g;
@@ -63,7 +63,7 @@ export function isImageFile(file: { type: string }): boolean {
return IMAGE_TYPE_REGEX.test(file.type);
}
/** 过滤非数字字符,只保留整数 */
/** 只保留数字字符 */
export function toIntegerOnly(value: unknown): string {
return String(value ?? '').replace(INTEGER_ONLY_REGEX, '');
}