Pine
b7e26ca1b2
修复:通知徽章实时更新状态,读完后立即更新无需刷新
...
- 新增全局通知store(notificationStore.ts):统一管理未读数量,支持setUnread/decrementUnread/refreshUnread/markAllRead/markOneRead
- 修改Sidebar.tsx:从全局store读取未读数量,useNotifyChannel的onUnread回调同步到全局store
- 修改Notifications.tsx:标记全部已读和单条已读时调用全局store方法,立即更新未读数量
- 修复TrainingCenter.tsx和Notifications.tsx中的语法错误(缺少右括号)
- 所有页面的通知徽章现在都能实时同步,标记已读后立即更新,无需刷新页面
2026-09-05 18:06:48 +08:00
Pine
d4694674b2
改造:算力中心账单和充值合并到一个页面,顶部充值
...
- 顶部充值区域:渐变背景卡片,显示算力余额、已使用金额
- 快捷充值按钮:4个常用充值套餐,点击直接创建订单
- 立即充值按钮:打开充值弹窗,选择套餐后微信扫码支付
- 充值账单列表:显示所有充值订单,订单号、时间、金额、状态
- 充值弹窗:套餐选择(卡片式)、微信支付二维码、支付状态轮询
- 支付成功后自动关闭弹窗并刷新余额和账单
2026-09-05 18:03:15 +08:00
Pine
419028a0ae
改造:政务改为政务指南知识库
...
- 5大分类:工商注册、税务登记、社保公积金、资质认证、补贴申请
- 15篇完整办事指南:每篇包含办理流程(Steps步骤条)、所需材料、温馨提示
- 支持分类筛选和关键词搜索
- 点击指南卡片可展开查看详细办理流程
- 常见问题FAQ:5个高频问题解答
- 卡片式布局,图标+颜色区分分类,难度标签和办理时长标注
2026-09-05 17:59:54 +08:00
Pine
56927e39a8
改造:政策资讯中心完整重构,支持政策列表和详情页
...
- 政策列表页:卡片式布局,支持分类筛选(创业扶持/税收优惠/人才政策等)和搜索
- 政策详情页:完整展示政策标题、发布者、发布时间、阅读量、标签、封面、摘要、正文内容
- 扩展ContentInfo类型:添加content_html/cover/read_count/publisher_name等字段
- 新增getOpcContentDetail和getOpcContentList API
- 配置政策详情页路由/opc/policy/:id
- 点击政策卡片可跳转到详情页查看完整内容
2026-09-05 17:57:09 +08:00
Pine
de857cb837
改造:财税中心按照标准会计记账重构
...
- 日记账:按日期分组展示所有收支记录,Timeline时间线样式
- 会计凭证:将收支记录自动转换为标准会计凭证(借方/贷方/摘要),支持展开查看凭证明细
- 会计科目:展示资产类、收入类、费用类三大类标准会计科目
- 顶部统计:本期收入、本期支出、净利润
- 记一笔功能:支持选择收支类型、金额、日期、摘要
- 借贷平衡校验:每张凭证都有借贷平衡标记
2026-09-05 17:54:50 +08:00
Pine
3f15d3253c
优化:全线错误提示友好化,不暴露技术错误给用户
...
- 新增 friendlyErrorMessage 通用函数(utils/error.ts),自动将技术错误转换为友好提示
- 内置常见错误映射表:不能与自己私聊→不能和自己私聊哦、未授权→请先登录、任务不存在→任务不存在或已被删除等
- 支持从后端返回的 detail 字段提取可读中文,直接展示给用户
- 修复 communicationStore.ts:发起私聊/打开客服/加载会话/发送消息/好友操作等全部错误提示友好化
- 修复服务大厅全部页面(ServiceDetail/ServicePublish/ServiceOrders/ServiceOrderDetail/ServicesMine/HallServices)
- 修复任务相关页面(TaskDetailPage/HallTasks/MyTasks)
- 修复其他 OPC 页面(CertCenter/Community/Company/Compute/Finance/HallJobs/HallTalents/Notifications/PayBinding/Profile/RechargeModal/TrainingCenter/CourseDetailModal/CourseLearnModal/Talent/UserHomePage)
- 共计修复 25+ 个文件,消除所有直接暴露技术错误信息给用户的情况
2026-09-05 17:42:07 +08:00
Pine
256c3bbe3e
修复:服务详情页服务方档案支持跳转到个人主页
...
- 服务方档案部分:头像和名称可点击跳转到/usershome/:userId个人主页
- 添加'查看主页'按钮,点击跳转到服务方个人主页
- 配合后端snake_case转camelCase修复,服务方信息现在能正确加载
2026-09-05 17:30:11 +08:00
Pine
5f5053a89e
修复:ServiceDetail.tsx遗漏Card组件导入导致页面异常
...
- 控制台错误:ReferenceError: Card is not defined at ServiceDetailPage
- 重构页面时使用了Card size='small'小卡片,但忘记在antd导入列表中添加Card
- TypeScript编译通过但运行时失败,因为全局类型定义掩盖了缺失的导入
2026-09-05 17:17:51 +08:00
Pine
078d2c9725
修复:ServiceDetail.tsx遗漏React导入导致页面异常
...
- 代码中使用了React.ComponentType类型,但只导入了useCallback/useEffect/useState,没有导入React
- 运行时React未定义,导致页面渲染失败,出现'页面出现异常'错误
- 这是每次修改页面后出现错误的常见原因:遗漏组件或React导入
2026-09-05 17:15:52 +08:00
Pine
a5b03024ea
重构:服务详情页参考任务详情页设计,使用小卡片融入页面
...
- 去掉大卡片布局:不再使用大的白色背景区域,改为Card size='small'小卡片
- 参考任务详情页风格:flex column布局,gap 12,内联样式
- 顶部区域:返回按钮+标题+官方/个人标签+分类标签+收藏/分享按钮
- 主信息卡片:左侧封面图+右侧价格/支付方式/统计/服务信息/SKU选择/操作按钮
- 详情内容卡片:Tabs组织服务详情/评价/服务方档案/TA的其他服务,内容区域可滚动
- 整体融入页面,不再有重卡片边框和大间距
2026-09-05 17:11:12 +08:00
Pine
6587bd7543
修复:ServiceDetail.tsx遗漏Modal组件导入导致页面异常
...
- 重构时添加了预约弹窗Modal,但忘记在antd导入列表中添加Modal
- 导致页面渲染时Modal未定义,抛出'页面出现异常'错误
2026-09-05 17:04:01 +08:00
Pine
202a7aebbc
重构:服务详情页一页设计+预约弹窗+按服务类型显示操作按钮
...
- 去掉上下分屏各自滚动:.page改为min-height+overflow-y:auto,.mainContent和.detailSection去掉overflow限制,整个页面统一滚动
- 去掉重卡片样式:主内容区和详情区使用统一背景,无外层边框
- 预约改为按钮+弹窗:个人服务点击'立即预约'弹出Modal,包含预约时间选择和需求说明
- 按服务类型显示操作按钮:
- 官方服务:立即下单(微信支付)+ 联系客服
- 个人服务:立即预约(弹窗)+ 联系服务方
- 新增预约弹窗样式(scheduleModal)
2026-09-05 17:01:03 +08:00
Pine
b4574c049a
修复:服务封面上传使用真正的OSS上传替代base64
...
- 根本原因:前端使用FileReader读取为base64,字符串太长(几MB),数据库cover字段varchar(255)无法存储,导致cover为空
- 后端新增/service-market/upload接口,普通登录用户即可上传,保存到OSS services/目录
- 前端新增serviceMarketApi.uploadMedia方法,使用FormData上传
- 发布页面修改handleCoverChange,上传成功后保存返回的URL
- 添加上传中状态显示和LoadingOutlined图标
2026-09-05 16:57:00 +08:00
Pine
b01cfc747d
修复:HallServices.tsx命名导出改为默认导出,修复lazy加载失败
...
- 根本原因:HallServices.tsx使用export function命名导出,而lazyImportWithRetry只导入默认导出,导致lazy组件解析为undefined
- 修复:改为export default function,并更新Hall.tsx中的导入方式
- 这是服务列表页'页面出现异常'的根本原因
2026-09-05 16:35:31 +08:00
Pine
64bbd2c89d
修复:移除模块顶层React元素创建,避免lazy加载失败
...
- ServiceDetail.tsx和HallServices.tsx的PAYMENT_BADGES在模块顶层创建React元素,可能导致lazy加载时模块解析失败
- 改为存储组件类型,在渲染时用JSX创建元素
- 移除ServiceDetail.tsx中多余的导入(Carousel/InputNumber/Segmented)
2026-09-05 16:27:02 +08:00
Pine
729a3d058f
修复:发布服务表单条件渲染改为CSS隐藏,保留所有表单值
...
- 根因:Form使用条件渲染{current===N&&(...)}导致未渲染步骤的表单值丢失,提交时title/category为空
- 修复:所有步骤的Form.Item始终渲染,用style display控制显示,getFieldsValue()能获取所有字段
- 同时修复Upload组件value警告和验证逻辑
2026-09-05 16:18:32 +08:00
Pine
a736acb95c
修复:发布服务页面Upload组件value警告和验证逻辑
...
- 修复Upload组件被Form.Item name包裹导致的value prop无效警告
- 封面图改为手动管理,使用fileList prop而非value
- 修复第一步验证逻辑,手动检查封面图
- 提交时确保price/deliveryDays为数字,避免NaN
- 添加console调试日志便于排查400错误
2026-09-05 16:06:41 +08:00
Pine
6b177800b7
修复:补充缺失的 ServiceOrders.module.less 样式文件
2026-09-05 15:59:48 +08:00
Pine
a23be925f5
服务大厅电商化改造:前端6个独立页面+API层扩展
...
- 服务列表页改造:分类Tab+排序筛选+卡片网格+官方/个人标记+支付方式徽章
- 服务详情独立页面:图文详情+规格选择+立即下单+评价Tab+收藏+服务方档案
- 发布编辑独立页面:5步分步表单(基本信息→详情描述→价格规格→支付设置→预览提交)
- 订单列表页:买家/卖家双视角切换+状态筛选+订单卡片+操作按钮
- 订单详情页:状态进度条+服务信息+订单信息+操作记录+评价+微信支付弹窗
- 服务管理页改造:使用新API+编辑/上下架/重新上架+分页
- 路由配置:新增6个独立页面路由(详情/发布/编辑/订单列表/订单详情)
- API层扩展:serviceMarketApi模块,6个类型定义+20+API方法
2026-09-05 15:46:55 +08:00
Pine
590282fddc
feat(个人主页): 优化标准页眉UI
...
- 徽章: 每个徽章使用后端返回的color字段做差异化配色(金/银/铜/绿/紫/蓝), 左侧加发光圆点
- 信用分: 改为金色星星图标+分数, 独立配色
- 头像: 增加渐变光环包裹
- 昵称: 字重和间距优化
- 胶囊按钮: 去除紫色调, 改为中性灰白毛玻璃, hover更克制
- 整体: 页眉高度60px, 内边距和毛玻璃参数优化, 配色更协调
2026-09-05 15:40:40 +08:00
Pine
9a7d77e910
fix(个人主页): 修复iframe内容区宽高100%问题
...
- 补上缺失的 .pageBody 样式(flex:1 + min-height:0 + flex column)
- 之前 .pageBody 未定义导致 iframe height:100% 无参照, 内容只占一小块
2026-09-05 15:28:31 +08:00
Pine
40a94ed01e
优化初始化页面为全屏品牌页:云南省超级个体服务平台。1)全屏渐变背景+浮动光晕+网格装饰;2)品牌头部:logo+大标题+英文副标题+四大业务标签;3)加载动画:环形进度+脉冲光晕+Spin状态文字;4)错误状态:图标+标题+详情折叠+渐变重试按钮;5)底部版权信息;6)响应式适配移动端
2026-09-05 15:00:24 +08:00
Pine
ae206a23d8
修复 CertCenter.tsx 图标导入错误:CodeFilled 不存在,替换为 CodeCircleFilled
2026-09-05 13:54:54 +08:00
Pine
b501829c50
全局隐藏所有滚动条+信用页面响应式优化:1)layout.css全局隐藏滚动条(WebKit/Firefox/IE+antd内部);2)OpcList.module.less所有容器overflow-x:hidden+max-width:100%禁止水平滚动;3)Credit.tsx:RadarChart响应式SVG(viewBox自动缩放)、统计数据响应式列数(小屏2列大屏3列)、信用分字号响应式(36/42/48px)
2026-09-05 13:01:07 +08:00
Pine
8c5b49b861
优化认证中心样式:增加真实图标映射(含 fallback)、去除价格显示、卡片居中布局+大图标+hover 效果;修复 certification API snake_case→camelCase 字段转换(credit_points/badge_icon/review_mode 等)
2026-09-05 12:52:20 +08:00
Pine
3499fd1954
修复信用页面渲染错误:server-core 返回 snake_case 字段,前端 creditApi 转换为 camelCase(total_score→totalScore、level_benefits→levelBenefits、credit_bonus→creditBonus、earned→obtained、granted_at→obtainedAt 等);修复 Talent 页面 useLocation 未导入导致的渲染错误
2026-09-05 12:45:47 +08:00
Pine
da5a4f73c7
Hall 页面改用 Segmented+条件渲染替代 antd Tabs,确保一级 tab 和子页面标题/筛选区全部固定,列表独立滚动;Community 子页面同步改造为 flex 布局
2026-09-05 12:19:56 +08:00
Pine
dbdb937141
修复 HallTasks.tsx JSX 闭合标签不匹配(</> → </div>)
2026-09-05 12:15:33 +08:00
Pine
a1eb1c9b3d
桌面端逐页面布局规范化:全局 .page 改为 flex column 全屏布局,新增 .pageHeader/.pageBody/.pageFooter;19 个 OPC 页面改造为标题/tab 固定、列表区独立滚动、分页固定底部
2026-09-05 12:13:47 +08:00
Pine
a66b0b76d6
投标页去除卡片嵌套:bid 模式去掉外层 Card,详情 tab 直接用 TaskInfoCard,表单 tab 用轻量容器
2026-09-05 11:43:39 +08:00
Pine
e875fdb3a4
修复:HallTasks 缺少 Checkbox 导入导致页面渲染崩溃
2026-09-05 11:39:09 +08:00
Pine
c5c158aeb3
发布表单加资格要求区块;详情页展示信用分/勋章/认证要求;投标页加任务详情/投标表单 tab 切换
2026-09-05 11:33:39 +08:00
Pine
2e751f8536
详情页 Steps 按模式生成阶段序列;新增签约/确认接受/婉拒操作;MyTasks 适配待确认/已签约状态
2026-09-05 11:18:20 +08:00
Pine
9f06573de3
任务详情页重构为三视图:招募申请(报名/投标/抢单表单) + 招募管理(报名列表/标书评审) + 服务流程(阶段/里程碑/交付/验收/结算/沟通);大厅抽屉改为引导详情页办理
2026-09-05 11:08:56 +08:00
Pine
5878100590
修复 notify.ts request 导入源(config → request.ts)
2026-09-05 10:55:39 +08:00
Pine
b4092f47f4
修复 notify.ts import 路径(./config → ../config),解决 vite 无法解析模块导致白屏
2026-09-05 10:51:44 +08:00
Pine
2c22e3d6c7
应用市场专区:/plugins/market/search 透传 region 过滤,条目透传 tags 标记
2026-09-05 10:50:19 +08:00
Pine
e5077dea60
实时通知体系桌面端:SSE 实时通道+12s轮询兜底,通知中心分类/分页/深链/单条已读,菜单角标与全局toast
2026-09-05 10:35:57 +08:00
Pine
5612a3d8e7
菜单收纳:特殊权限菜单(运营端/园区端)移至底部,OPC 基础菜单保持靠前
2026-09-05 09:44:52 +08:00
Pine
0611a2f3a3
去除桌面端子角色:移除 SubRole 类型/标签/翻译,用户管理收敛为三角色,Header 徽标不再显示子角色
2026-09-05 09:39:03 +08:00
Pine
0ce33b012f
任务完整详情页:阶段进度/流转时间线/里程碑/交付版本/验收/结算/沟通,路由接入
2026-09-05 09:25:05 +08:00
Pine
686fee9c69
任务系统前端 v2:发布表单 v2 字段、六段标书、接单/交付/退出、验收/返工按钮
2026-09-05 03:41:04 +08:00
Pine
0eb3bd8000
信用页切真实API:L1-L8等级/无上限总分/徽章墙/信用流水,移除全部MOCK数据
2026-09-05 03:06:04 +08:00
Pine
1e6930fd55
feat(个人主页): 开放来访者信息获取能力
...
- postMessage 桥新增 opc:page:get-visitor, 返回 opc:page:visitor
- 仅返回昵称/头像/简介, 不含用户ID/手机号等敏感信息
- 未登录返回 null
- init 数据中同时包含 visitor 字段, 页面可直接读取
- 开发提示词同步更新
2026-09-05 02:47:18 +08:00
Pine
037c25fa1f
feat(个人主页): 开发提示词+动作桥接+admin代理
...
- 前端桥接新增 opc:action:open-chat/share/copy-link 动作
- 编辑弹窗增加'复制开发提示词'按钮(从服务端获取)
- 修复 navigator.clipboard undefined fallback(textarea+execCommand)
- 代理新增 /pages/dev-prompt GET 和 /pages/admin/dev-prompt PUT
2026-09-05 00:46:59 +08:00
Pine
f633708928
fix(个人主页): 退出按钮直接返回来源页,绕过iframe污染的历史栈
...
根因: Blob URL+allow-same-origin使iframe与父页面同源, iframe内部导航加入
浏览器联合会话历史。navigate(-1)先回退iframe历史而非父页面路由, 表现为
'iframe内返回上一级'而非退出usershome。
修复:
- 所有入口(HallTalents/Talent/Profile)导航到usershome时传递
state: { from: 当前path+search }
- handleClose优先用location.state.from直接navigate(replace), 完全绕过历史栈
- 无from时fallback到navigate(-1), 再fallback到首页
2026-09-05 00:29:15 +08:00
Pine
96fb0482fd
feat(导航状态): Hall和Talent页面tab状态同步到URL
...
- Hall: Tabs的activeKey从?tab=读取, 切换时setSearchParams(replace), 刷新/返回后恢复原tab
- Talent: Segmented的tab从?tab=读取, 同样同步URL
- 打开个人主页/应用后返回, URL中保留了原tab参数, 能正确恢复
2026-09-05 00:24:00 +08:00
Pine
e8fd4ee913
fix(个人主页): 退出按钮改用React Router navigate替代history.back
...
用useNavigate().navigate(-1)替代window.history.back(),更可靠地
回到进入前页面;无历史时navigate('/', {replace:true})回首页。
2026-09-05 00:20:20 +08:00
Pine
b13d5998fe
fix(个人主页): 修复Blob URL的useEffect依赖数组TDZ错误
...
useEffect依赖数组用了page?.pageType,但const page声明在hook之后,
渲染时评估依赖数组触发Cannot access 'page' before initialization。
改为data?.page?.pageType,effect内部用data?.page取值。
2026-09-05 00:16:32 +08:00
Pine
1d0d0c6adb
fix(个人主页): 用Blob URL替代srcDoc彻底解决hash路由白屏
...
根因: srcDoc的about:srcdoc不是有效URL, 用户HTML内hash路由<a href=#/page>点击时
浏览器尝试导航到about:srcdoc#/page, 导航失败导致iframe变about:blank白屏,
后续点击无任何元素可响应。加allow-same-origin无法解决此问题。
修复: HTML模式用URL.createObjectURL(Blob)生成真正的URL作为iframe src,
hash导航/localStorage/所有Web API均正常工作。useEffect cleanup时revoke释放内存。
embed模式仍用原始URL。
2026-09-05 00:14:21 +08:00