- 使用 Ant Design Form/Modal/Select 组件 - 简化字段: 标题、日期、内容、关联股票 - 新增计划/复盘模板系统 - 股票选择支持前端模糊搜索 + 自选股快捷选择 - 新增响应式样式 (EventFormModal.less) - EventPanel: 移除不再需要的 props
199 lines
3.9 KiB
Plaintext
199 lines
3.9 KiB
Plaintext
/* EventFormModal.less - 投资计划/复盘弹窗响应式样式 */
|
|
|
|
// ==================== 变量定义 ====================
|
|
@mobile-breakpoint: 768px;
|
|
@modal-border-radius-mobile: 12px;
|
|
@modal-border-radius-desktop: 8px;
|
|
|
|
// 间距
|
|
@spacing-xs: 4px;
|
|
@spacing-sm: 8px;
|
|
@spacing-md: 12px;
|
|
@spacing-lg: 16px;
|
|
@spacing-xl: 20px;
|
|
@spacing-xxl: 24px;
|
|
|
|
// 字体大小
|
|
@font-size-xs: 12px;
|
|
@font-size-sm: 14px;
|
|
@font-size-md: 16px;
|
|
|
|
// 颜色
|
|
@color-border: #f0f0f0;
|
|
@color-text-secondary: #999;
|
|
@color-error: #ff4d4f;
|
|
|
|
// ==================== 主样式 ====================
|
|
.event-form-modal {
|
|
// Modal 整体
|
|
.ant-modal-content {
|
|
border-radius: @modal-border-radius-desktop;
|
|
}
|
|
|
|
// Modal 标题放大加粗
|
|
.ant-modal-title {
|
|
font-size: 20px;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.ant-modal-body {
|
|
padding: @spacing-xxl;
|
|
padding-top: 36px; // 增加标题与表单间距
|
|
}
|
|
|
|
.ant-form-item {
|
|
margin-bottom: @spacing-xl;
|
|
}
|
|
|
|
// 表单标签加粗,左对齐
|
|
.ant-form-item-label {
|
|
text-align: left !important;
|
|
|
|
> label {
|
|
font-weight: 600 !important;
|
|
color: #333;
|
|
}
|
|
}
|
|
|
|
// 字符计数样式
|
|
.ant-input-textarea-show-count::after {
|
|
font-size: @font-size-xs;
|
|
color: @color-text-secondary;
|
|
}
|
|
|
|
// 日期选择器全宽
|
|
.ant-picker {
|
|
width: 100%;
|
|
}
|
|
|
|
// 股票标签样式
|
|
.ant-tag {
|
|
margin: 2px;
|
|
border-radius: @spacing-xs;
|
|
}
|
|
|
|
// 模板按钮组
|
|
.template-buttons {
|
|
.ant-btn {
|
|
font-size: @font-size-xs;
|
|
}
|
|
}
|
|
|
|
// 底部操作栏布局
|
|
.modal-footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
// 加载状态
|
|
.ant-btn-loading {
|
|
opacity: 0.8;
|
|
}
|
|
|
|
// 错误状态动画
|
|
.ant-form-item-has-error {
|
|
.ant-input,
|
|
.ant-picker,
|
|
.ant-select-selector {
|
|
animation: shake 0.3s ease-in-out;
|
|
}
|
|
}
|
|
}
|
|
|
|
// ==================== 移动端适配 ====================
|
|
@media (max-width: @mobile-breakpoint) {
|
|
.event-form-modal {
|
|
// Modal 整体尺寸
|
|
.ant-modal {
|
|
width: calc(100vw - 32px) !important;
|
|
max-width: 100% !important;
|
|
margin: @spacing-lg auto;
|
|
top: 0;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.ant-modal-content {
|
|
max-height: calc(100vh - 32px);
|
|
overflow: hidden;
|
|
display: flex;
|
|
flex-direction: column;
|
|
border-radius: @modal-border-radius-mobile;
|
|
}
|
|
|
|
// Modal 头部
|
|
.ant-modal-header {
|
|
padding: @spacing-md @spacing-lg;
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.ant-modal-title {
|
|
font-size: @font-size-md;
|
|
}
|
|
|
|
// Modal 内容区域
|
|
.ant-modal-body {
|
|
padding: @spacing-lg;
|
|
overflow-y: auto;
|
|
flex: 1;
|
|
-webkit-overflow-scrolling: touch;
|
|
}
|
|
|
|
// Modal 底部
|
|
.ant-modal-footer {
|
|
padding: @spacing-md @spacing-lg;
|
|
flex-shrink: 0;
|
|
border-top: 1px solid @color-border;
|
|
}
|
|
|
|
// 表单项间距
|
|
.ant-form-item {
|
|
margin-bottom: @spacing-lg;
|
|
}
|
|
|
|
// 表单标签
|
|
.ant-form-item-label > label {
|
|
font-size: @font-size-sm;
|
|
height: auto;
|
|
}
|
|
|
|
// 输入框字体 - iOS 防止缩放需要 16px
|
|
.ant-input,
|
|
.ant-picker-input > input,
|
|
.ant-select-selection-search-input {
|
|
font-size: @font-size-md !important;
|
|
}
|
|
|
|
// 文本域高度
|
|
.ant-input-textarea textarea {
|
|
font-size: @font-size-md !important;
|
|
min-height: 120px;
|
|
}
|
|
|
|
// 模板按钮组
|
|
.template-buttons .ant-btn {
|
|
font-size: @font-size-xs;
|
|
padding: 2px @spacing-sm;
|
|
height: 26px;
|
|
}
|
|
|
|
// 股票选择器
|
|
.ant-select-selector {
|
|
min-height: 40px !important;
|
|
}
|
|
|
|
// 底部按钮
|
|
.ant-modal-footer .ant-btn {
|
|
font-size: @font-size-md;
|
|
height: 40px;
|
|
border-radius: @spacing-sm;
|
|
}
|
|
}
|
|
}
|
|
|
|
// ==================== 动画 ====================
|
|
@keyframes shake {
|
|
0%, 100% { transform: translateX(0); }
|
|
25% { transform: translateX(-4px); }
|
|
75% { transform: translateX(4px); }
|
|
}
|