#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 收益明细样式修复脚本 功能:清理冲突的旧样式,注入新的重构样式 """ import re import sys def fix_earnings_styles(): wxss_path = 'miniprogram/pages/referral/referral.wxss' try: # 读取原文件 with open(wxss_path, 'r', encoding='utf-8') as f: content = f.read() print("📖 读取原wxss文件...") # 备份原文件 backup_path = wxss_path + '.before-fix-' + __import__('datetime').datetime.now().strftime('%Y%m%d%H%M%S') with open(backup_path, 'w', encoding='utf-8') as f: f.write(content) print(f"✅ 备份文件: {backup_path}") # 删除旧的冲突样式(旧版收益明细) patterns_to_remove = [ # 旧的 detail-item(使用 justify-content: space-between) r'\.detail-item\s*\{\s*display:\s*flex;\s*align-items:\s*center;\s*justify-content:\s*space-between;[^}]+\}', # 旧的 detail-left r'\.detail-left\s*\{[^}]+\}', # 旧的 detail-icon r'\.detail-icon\s*\{[^}]+\}', # 旧的 detail-info r'\.detail-info\s*\{[^}]+\}', # 旧的 detail-type r'\.detail-type\s*\{[^}]+\}', ] cleaned_content = content for pattern in patterns_to_remove: matches = re.findall(pattern, cleaned_content, re.DOTALL) if matches: print(f"🗑️ 删除旧样式: {pattern[:50]}... ({len(matches)}处)") cleaned_content = re.sub(pattern, '', cleaned_content, flags=re.DOTALL) # 删除重复的 loading 和 detail 样式(编码错误的部分) # 查找并删除包含特殊字符的样式块 cleaned_content = re.sub( r'/\s*\*\s*=\s*=\s*=\s*=\s*=.*?=\s*=\s*=\s*=\s*=\s*\*\s*/.*?(?=/\*|$)', '', cleaned_content, flags=re.DOTALL ) # 新的收益明细样式 new_styles = ''' /* =================================== 收益明细卡片样式 - 重构版 2026-02-04 =================================== */ /* 列表项容器 */ .earnings-detail-card .detail-item { display: flex !important; align-items: center !important; gap: 24rpx !important; padding: 24rpx 40rpx !important; background: transparent !important; border-bottom: 2rpx solid rgba(255,255,255,0.03) !important; transition: background 0.3s !important; } .earnings-detail-card .detail-item:last-child { border-bottom: none !important; } .earnings-detail-card .detail-item:active { background: rgba(255, 255, 255, 0.05) !important; } /* 头像容器 */ .earnings-detail-card .detail-avatar-wrap { width: 88rpx; height: 88rpx; flex-shrink: 0; } .earnings-detail-card .detail-avatar { width: 100%; height: 100%; border-radius: 50%; border: 2rpx solid rgba(56, 189, 172, 0.2); display: block; } .earnings-detail-card .detail-avatar-text { width: 100%; height: 100%; border-radius: 50%; background: linear-gradient(135deg, #38bdac 0%, #2da396 100%); display: flex; align-items: center; justify-content: center; font-size: 36rpx; font-weight: 700; color: #ffffff; } /* 详细信息容器 */ .earnings-detail-card .detail-content { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8rpx; } /* 顶部行 */ .earnings-detail-card .detail-top { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; } /* 买家昵称 */ .earnings-detail-card .detail-buyer { font-size: 28rpx; font-weight: 500; color: #ffffff; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* 佣金金额 */ .earnings-detail-card .detail-amount { font-size: 32rpx; font-weight: 700; color: #38bdac; flex-shrink: 0; white-space: nowrap; } /* 商品信息 */ .earnings-detail-card .detail-product { display: flex; align-items: baseline; gap: 4rpx; font-size: 24rpx; color: rgba(255, 255, 255, 0.6); min-width: 0; overflow: hidden; } /* 书名 */ .earnings-detail-card .detail-book { color: rgba(255, 255, 255, 0.7); font-weight: 500; max-width: 50%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex-shrink: 1; } /* 章节 */ .earnings-detail-card .detail-chapter { color: rgba(255, 255, 255, 0.5); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* 时间 */ .earnings-detail-card .detail-time { font-size: 22rpx; color: rgba(255, 255, 255, 0.4); } ''' # 在文件末尾添加新样式 final_content = cleaned_content.rstrip() + '\n' + new_styles + '\n' # 写入文件 with open(wxss_path, 'w', encoding='utf-8') as f: f.write(final_content) print("✅ 样式修复完成!") print(f"📝 原文件大小: {len(content)} 字符") print(f"📝 清理后大小: {len(cleaned_content)} 字符") print(f"📝 最终大小: {len(final_content)} 字符") print("\n🎉 收益明细样式已重构!") return True except Exception as e: print(f"❌ 错误: {str(e)}") import traceback traceback.print_exc() return False if __name__ == '__main__': success = fix_earnings_styles() sys.exit(0 if success else 1)