From e2c076562357327522eae96884336fb7f9e0bc35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B2=E8=BE=B0=E7=94=9F=E4=BA=A7?= Date: Sat, 11 Apr 2026 18:38:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=8F=B7=E7=A0=81=E5=88=86=E7=B1=BB=E5=90=8D=E7=A7=B0=EF=BC=88?= =?UTF-8?q?=E9=80=9A=E8=B4=A7=E2=86=92=E5=B8=A64=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E9=92=BB=E7=9F=B3=E2=86=92=E9=92=BB=E7=9F=B3=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E6=B0=B8=E6=81=92=E2=86=92=E6=B0=B8=E6=81=92=E5=8F=B7=EF=BC=8C?= =?UTF-8?q?=E6=97=A04=E2=86=92=E5=B8=A67=E5=8F=B7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/routers/information.py | 8 ++--- frontend/src/pages/Add.jsx | 20 ++++++------- frontend/src/pages/Admin.jsx | 5 +++- frontend/src/pages/Edit.jsx | 6 ++-- frontend/src/pages/Home.jsx | 2 +- frontend/src/pages/List.jsx | 47 ++---------------------------- frontend/src/pages/Stats.jsx | 4 +-- 7 files changed, 27 insertions(+), 65 deletions(-) diff --git a/backend/app/routers/information.py b/backend/app/routers/information.py index e620732..633999b 100644 --- a/backend/app/routers/information.py +++ b/backend/app/routers/information.py @@ -1210,7 +1210,7 @@ async def batch_parse_deals(text: str = Body(..., embed=True)): 3. 价格:¥xxx,xxx 格式,去掉逗号转为数字 4. 评级/包装:PC69/PMG68/爱藏67+/爱藏67 标十 标百 单张 5. 出售者:人名 -6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石/永恒/无4/通货) +6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石号/永恒号/带7号/带4号) 【输出格式】 返回JSON数组,每条记录包含: @@ -1364,9 +1364,9 @@ def parse_deals_locally(text: str, default_packaging: str = '', default_date: st elif not any(c in d for c in ['1','3','4','5','7']): category = '朦胧王' elif not any(c in d for c in ['3','4','5','7']): category = '朦胧号' elif not any(c in d for c in ['1','3','4','7']): category = '如意号' - elif not any(c in d for c in ['3','4','7']): category = '钻石' - elif not any(c in d for c in ['4','7']): category = '永恒' - elif '4' not in d: category = '无4' + elif not any(c in d for c in ['3','4','7']): category = '钻石号' + elif not any(c in d for c in ['4','7']): category = '永恒号' + elif '4' not in d: category = '带7号' # 提取评级机构 PCGS/PMG/ACG/爱藏 grade = '' diff --git a/frontend/src/pages/Add.jsx b/frontend/src/pages/Add.jsx index 9ccd98f..47e1382 100644 --- a/frontend/src/pages/Add.jsx +++ b/frontend/src/pages/Add.jsx @@ -2,7 +2,7 @@ import React, { useState, useRef } from 'react' import { APP_VERSION } from '../config/version' const API_BASE = localStorage.getItem('API_BASE') || '' -const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'无4',label:'无4'},{value:'带4',label:'带4'},{value:'其他',label:'其他'}]; +const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'带7号',label:'带7号'},{value:'带4号',label:'带4号'},{value:'其他',label:'其他'}]; // 字段转换函数 const convertField = (obj) => { @@ -111,10 +111,10 @@ export default function Add() { if (!d.includes('1') && !d.includes('3') && !d.includes('4') && !d.includes('5') && !d.includes('7')) return '朦胧王' if (!d.includes('3') && !d.includes('4') && !d.includes('5') && !d.includes('7')) return '朦胧号' if (!d.includes('1') && !d.includes('3') && !d.includes('4') && !d.includes('7')) return '如意号' - if (!d.includes('3') && !d.includes('4') && !d.includes('7')) return '钻石' - if (!d.includes('4') && !d.includes('7')) return '永恒' - if (!d.includes('4')) return '无4' - return '通货' + if (!d.includes('3') && !d.includes('4') && !d.includes('7')) return '钻石号' + if (!d.includes('4') && !d.includes('7')) return '永恒号' + if (!d.includes('4')) return '带7号' + return '带4号' } // 根据 URL 参数确定默认标签 @@ -204,8 +204,8 @@ export default function Add() { else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347' else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247' else if (!digits.includes('4') && !digits.includes('7') && digits.includes('2') && digits.includes('3')) cat = '无47' - else if (digits.includes('7') && !digits.includes('4')) cat = '无4' - else if (digits.includes('4')) cat = '带4' + else if (digits.includes('7') && !digits.includes('4')) cat = '带7号' + else if (digits.includes('4')) cat = '带4号' else cat = '其他' } setForm(prev => ({ ...prev, numberCategory: cat })) @@ -320,8 +320,8 @@ export default function Add() { else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347' else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247' else if (!digits.includes('4') && !digits.includes('7') && digits.includes('2') && digits.includes('3')) cat = '无47' - else if (digits.includes('7') && !digits.includes('4')) cat = '无4' - else if (digits.includes('4')) cat = '带4' + else if (digits.includes('7') && !digits.includes('4')) cat = '带7号' + else if (digits.includes('4')) cat = '带4号' else cat = '其他' formWithCategory.numberCategory = cat } @@ -967,7 +967,7 @@ export default function Add() { newResult[idx].category = e.target.value setBatchResult(newResult) }} style={{ width: '100%', padding: '4px', background: 'rgba(0,0,0,0.3)', border: '1px solid rgba(255,255,255,0.1)', borderRadius: '4px', color: '#fff', fontSize: '10px' }}> - {['圆圆号','倒置号','金马王','金马号','金山王','天马王','金山号','天马号','朦胧王','朦胧号','如意号','钻石','永恒','无4','通货'].map(c => )} + {['圆圆号','倒置号','金马王','金马号','金山王','天马王','金山号','天马号','朦胧王','朦胧号','如意号','钻石号','永恒号','带7号','带4号'].map(c => )}
diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx index 84695fd..a9c3728 100644 --- a/frontend/src/pages/Admin.jsx +++ b/frontend/src/pages/Admin.jsx @@ -482,7 +482,10 @@ export default function Admin() { - + + + +
diff --git a/frontend/src/pages/Edit.jsx b/frontend/src/pages/Edit.jsx index 802fc66..118fc6e 100644 --- a/frontend/src/pages/Edit.jsx +++ b/frontend/src/pages/Edit.jsx @@ -46,7 +46,7 @@ const categoryOptions = [ { value: '其他', label: '其他' } ] -const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'无4',label:'无4'},{value:'带4',label:'带4'},{value:'其他',label:'其他'}]; +const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'带7号',label:'带7号'},{value:'带4号',label:'带4号'},{value:'其他',label:'其他'}]; const rarityOptions = [ { value: '通货', label: '通货' }, { value: '特色', label: '特色' }, @@ -157,8 +157,8 @@ export default function Edit() { if (digits) { if (!digits.includes('2') && !digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无2347' else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347' - else if (digits.includes('4')) cat = '带4' - else if (digits.includes('7')) cat = '无4' + else if (digits.includes('4')) cat = '带4号' + else if (digits.includes('7')) cat = '带7号' else if (!digits.includes('4') && !digits.includes('7')) cat = '无47' else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247' else cat = '其他' diff --git a/frontend/src/pages/Home.jsx b/frontend/src/pages/Home.jsx index 1476144..90c9aab 100644 --- a/frontend/src/pages/Home.jsx +++ b/frontend/src/pages/Home.jsx @@ -282,7 +282,7 @@ export default function Home() {
{(dragonStats.dai4?.deals || 0) + (dragonStats.dai4?.wants || 0)}
-
无4
+
带7号
{dragonStats.wu4?.deals || 0}
{dragonStats.wu4?.wants || 0}
{(dragonStats.wu4?.deals || 0) + (dragonStats.wu4?.wants || 0)}
diff --git a/frontend/src/pages/List.jsx b/frontend/src/pages/List.jsx index 03a758f..ba6d3d8 100644 --- a/frontend/src/pages/List.jsx +++ b/frontend/src/pages/List.jsx @@ -365,7 +365,7 @@ export default function List() { bVal = rarityOrder[bVal] || 0 } else if (sortField === 'numberCategory') { // 号码分类按自定义顺序排序 - const numberCategoryOrder = { '无2347': 1, '无347': 2, '无247': 3, '无47': 4, '无4': 5, '带4': 6, '其他': 7 } + const numberCategoryOrder = { '无2347': 1, '无347': 2, '无247': 3, '无47': 4, '带7号': 5, '带4号': 6, '其他': 7 } aVal = numberCategoryOrder[aVal] || 99 bVal = numberCategoryOrder[bVal] || 99 } @@ -408,7 +408,7 @@ export default function List() { } const getNumberCategoryColor = (cat) => { - const colors = { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '无4': '#06b6d4', '带4': '#22c55e', '其他': '#64748b' }; + const colors = { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '带7号': '#06b6d4', '带4号': '#22c55e', '其他': '#64748b' }; return colors[cat] || '#64748b'; }; @@ -520,7 +520,7 @@ export default function List() {
@@ -651,47 +651,6 @@ export default function List() { {/* 行情tab内容 */} {activeTab === 'deals' && (
- {/* 行情搜索和排序 */} -
- setDealSearch(e.target.value)} - style={{ - flex: 1, - background: 'rgba(255,255,255,0.05)', - border: '1px solid rgba(255,255,255,0.1)', - color: '#fff', - padding: '8px 12px', - borderRadius: '8px', - fontSize: '14px', - outline: 'none' - }} - /> - -
- {dealsLoading ? (
加载中...
) : filteredDeals.length === 0 ? ( diff --git a/frontend/src/pages/Stats.jsx b/frontend/src/pages/Stats.jsx index 97ee369..666341d 100644 --- a/frontend/src/pages/Stats.jsx +++ b/frontend/src/pages/Stats.jsx @@ -103,7 +103,7 @@ export default function Stats() { status: { 'in_collection': '#22c55e', 'selling': '#f59e0b', 'sold': '#ef4444', 'grading': '#8b5cf6', 'repairing': '#f97316', 'transit': '#06b6d4', 'seeking': '#ec4899' }, category: { '自持': '#22c55e', '寄存': '#3b82f6', '寄售': '#f59e0b', '共有': '#8b5cf6', '寻号': '#06b6d4', '生肖钞': '#22c55e', '其他': '#64748b' }, profitLoss: { 'profit': '#22c55e', 'loss': '#ef4444' }, - numberCategory: { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '无4': '#06b6d4', '带4': '#22c55e', '其他': '#64748b' }, + numberCategory: { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '带7号': '#06b6d4', '带4号': '#22c55e', '其他': '#64748b' }, version: {}, gradingCompany: {}, gradingScore: {}, @@ -146,7 +146,7 @@ export default function Stats() { return Number(val).toLocaleString('zh-CN') } - const numberCategoryOrder = ['无2347', '无347', '无247', '无47', '无4', '带4', '其他'] + const numberCategoryOrder = ['无2347', '无347', '无247', '无47', '带7号', '带4号', '其他'] const getSortedData = (data, type) => { if (type === 'numberCategory') { return [...data].sort((a, b) => {