diff --git a/miniprogram/src/pages/mine/index.jsx b/miniprogram/src/pages/mine/index.jsx index 752ade3..e56032b 100644 --- a/miniprogram/src/pages/mine/index.jsx +++ b/miniprogram/src/pages/mine/index.jsx @@ -4,6 +4,7 @@ import { useState, useEffect } from 'react'; import { useTabIndex } from '@/utils/tab'; import { isAuthed, getUser, logout, wxLogin, phoneLogin, bindPhone, sendCode, wxPhoneBind, updateProfile, getMe } from '@/utils/auth'; import { getMyBookings, checkIn, parseIso, BK_STATUS_OPTIONS, BK_TOPIC_OPTIONS, BK_SOURCE_OPTIONS } from '@/utils/booking'; +import { getMyAdmission } from '@/utils/parks'; import Skeleton from '@/components/skeleton'; import CountdownBox from '@/components/CountdownBox'; import './index.scss'; @@ -41,20 +42,12 @@ const fmtTime = (iso) => { return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())} 周${week}`; }; -/** 我的服务宫格项:label → 子页 */ -const SVC = [ - ['报名', '/pages/my-bookings/index'], - ['任务', '/pages/my-tasks/index'], - ['园区', '/pages/my-park/index'], - ['认证', '/pages/my-cert/index'], -]; -const maskPhone = (p) => (/^1\d{10}$/.test(p || '') ? p.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2') : (p || '')); - export default function Mine() { useTabIndex(4); const [user, setUser] = useState(getUser()); const [bookings, setBookings] = useState([]); const [phase, setPhase] = useState('all'); // 报名状态筛选 + const [admission, setAdmission] = useState([]); // 我的园区入驻记录 const [loaded, setLoaded] = useState(false); const [busy, setBusy] = useState(false); const [err, setErr] = useState(''); @@ -83,6 +76,10 @@ export default function Mine() { const d = await getMyBookings(); setBookings((d && d.list) || []); } catch { /* 保留上次列表,避免重进闪空 */ } + try { + const a = await getMyAdmission(); + setAdmission(Array.isArray(a) ? a : []); + } catch { /* 保留上次 */ } finally { setLoaded(true); } }; Taro.useDidShow(() => { refresh(); }); @@ -397,44 +394,6 @@ export default function Mine() { )} - {/* 任务广场入口:浏览待接单任务 */} - Taro.navigateTo({ url: '/pages/tasks/index' })}> - - - 任务广场 - 浏览平台待接单任务,点击抢单 / 报名 - - - - - {/* 扫码接单入口:扫描大屏任务二维码领取任务 */} - Taro.navigateTo({ url: '/pages/scan/index' })}> - QR - - 扫码接单 - 扫描大屏任务码领取任务,做任务赚预算 - - - - - {/* 申请/认证入口:入驻 / OPC认证 / 转园 */} - - APPLY - 申请与认证 - - Taro.navigateTo({ url: '/pages/park-apply/index' })}> - 园区入驻申请填写入园申请表,入驻创业园 - - - Taro.navigateTo({ url: '/pages/cert-apply/index' })}> - OPC 认证提交认证资料,认证 OPC 超级个体 - - - Taro.navigateTo({ url: '/pages/park-transfer/index' })}> - 转园申请园区 OPC 申请转入其它园区 - - - {/* 我的报名 */} BOOK @@ -484,6 +443,50 @@ export default function Mine() { ); })()} + + {/* 我的接单:扫码接单;任务广场移到 Web / 桌面端 */} + + ACCEPT + 我的接单 + + + + 任务广场请到 Web 端或桌面端查看 + + + {/* 我的园区:未入驻 → 申请入驻 + OPC认证;已入驻 → 园区信息 + OPC认证 + 转园 */} + + PARK + 我的园区 + + {(() => { + const ad = admission[0] || {}; + const st = String(ad.status || ad.audit_status || '').toLowerCase(); + const admitted = ['approved', 'verified', 'admitted'].includes(st) || ['已入驻', '通过', 'approved'].includes(ad.status); + if (!admitted) { + return ( + + 暂未入驻园区,可申请入驻并完成 OPC 认证。 + + + + + + ); + } + const name = ad.tenant_name || ad.park_name || ad.company_name || ad.company || '已入驻园区'; + return ( + + {name} + {ad.region ? 区域:{ad.region} : null} + + + + + + ); + })()} + {err && {err}} 云南省首个由政府主办的免费大学生创业服务平台 diff --git a/miniprogram/src/pages/mine/index.scss b/miniprogram/src/pages/mine/index.scss index a785218..ec21a8f 100644 --- a/miniprogram/src/pages/mine/index.scss +++ b/miniprogram/src/pages/mine/index.scss @@ -393,3 +393,13 @@ .bind-key { font-size:26rpx; color:#6a6a73; } .bind-val { font-size:26rpx; color:#98a0ab; } .bind-val.on { color:#00a06e; font-weight:600; } + +/* ---- 四部分:我的接单 / 我的园区 ---- */ +.mk-act { padding: 24rpx; } +.mk-actions { padding: 22rpx 24rpx; } +.mk-park { padding: 22rpx 24rpx; } +.mk-park-name { font-size: 30rpx; font-weight: 700; color: #0d2f4e; display: block; margin-bottom: 6rpx; } +.mk-btn-sm { font-size: 24rpx; padding: 0 26rpx; line-height: 2.2; margin: 0; } +.mk-btnrow { display: flex; gap: 16rpx; margin-top: 18rpx; flex-wrap: wrap; } +.mk-hint { margin-top: 12rpx; font-size: 24rpx; color: #8a8a93; display: block; line-height: 1.5; } +.mk-hint:first-child { margin-top: 0; }