feat(admission): 园区入驻申请 —— 小程序首页按钮+表单 + 网站详细流程

- 小程序: 首页首屏Hero(预约/测评后)加「申请入驻」; pages/park-apply 对照《入园申请表》全字段分区表单+资料上传; utils/parks
- 网站: #/park-apply 7步入驻wizard(选园区→申请人→企业→项目→需求→上传→承诺提交); services/park; 首页入口
- 修复循环请求(getParks入useEffect一次); 输入框样式对齐event-detail
This commit is contained in:
Pine
2026-08-26 12:00:09 +08:00
parent b05a606df8
commit 0b264ee9b3
11 changed files with 700 additions and 1 deletions
+55
View File
@@ -0,0 +1,55 @@
import Taro from '@tarojs/taro';
import { request } from './api';
const API_BASE = 'https://opc.pinesound.cn';
/** 平台可见园区列表(选择园区用,公开) */
export async function getParks() {
const r = await request('GET', '/api/park/tenants', {}, false);
return Array.isArray(r?.tenants) ? r.tenants : [];
}
/** 提交园区入驻申请(需登录) */
export async function submitParkApplication(payload) {
const r = await request('POST', '/api/park-admission', payload, true);
if (!r?.ok) throw new Error(r?.message || '提交失败');
return r;
}
/** 我的入驻申请 */
export async function getMyAdmission() {
const r = await request('GET', '/api/park-admission/mine', {}, true);
return Array.isArray(r?.items) ? r.items : [];
}
/** 上传入驻资料(图片/pdf/word),返回 url;失败抛错 */
export async function uploadParkDoc(filePath, name = 'file') {
const token = Taro.getStorageSync('pine_token') || '';
const up = await Taro.uploadFile({
url: `${API_BASE}/api/upload`,
filePath,
name,
header: { Authorization: `Bearer ${token}` },
});
const data = JSON.parse(up.data || '{}');
if (!data.ok) throw new Error(data.error || '上传失败');
return data.url;
}
// ---- 表单选项(对照《入园申请表》) ----
export const GENDER_OPTS = ['男', '女'];
export const COMPANY_TYPE_OPTS = ['有限责任公司', '股份有限公司', '合伙企业', '个体工商户', '其他'];
export const REGION_OPTS = ['直播孵化区', '综合展示区', '创业苗圃区', '孵化加速区', '国际创客区'];
export const SERVICE_OPTS = [
'办公设备租赁', '政策申报指导', '投融资对接', '人才招聘服务',
'技术研发支持', '市场推广服务', '法律咨询', '财务代理', '其他',
];
// 上传资料项(key → label/placeholder
export const DOC_ITEMS = [
{ key: 'plan', label: '创业计划书', required: true },
{ key: 'id_card_doc', label: '创业者身份证(外籍提供护照/签证)', required: true },
{ key: 'diploma', label: '学历证明', required: true },
{ key: 'license', label: '企业营业执照(已注册企业)', required: false },
{ key: 'cert', label: '相关资质专利证书', required: false },
];