增加企业贷款申请页面
parent
361f30d549
commit
90c61054ba
|
|
@ -0,0 +1,227 @@
|
|||
# 企业贷款申请表单按原型截图改造 设计文档
|
||||
|
||||
## 背景
|
||||
|
||||
产品提供了"授信管理 > 企业贷款申请"页面的新原型截图(页面标题"提款申请 > 授信申请单",来自旧版"电商服务工具平台",用户已确认这是本次要对齐的目标设计),与当前 `src/views/credit/loan-application/EnterpriseLoanForm.vue`(阶段设计,参照《缺失的后端接口.md》1.12节 `credit-apply/enterprise-loan-application` 契约实现)相比,卡片分组、字段数量与顺序均大幅不同:
|
||||
|
||||
- 截图结构:授信基础信息 → 法定代表人信息(含"展开 更多信息")→ 企业信息(含"展开 更多信息")→ 影像信息(含"他行"征信报告、下载模板项)。
|
||||
- 现状结构:基础信息 → 融资条件 → 企业信息 → 特殊融资用途标识 → 法定代表人信息 → 法人配偶信息 → 紧急联系人信息 → 影像资料。
|
||||
|
||||
对照后端契约 `CreateEnterpriseLoanDraftBto`/`UpdateEnterpriseLoanApplicationBto`(64字段,均无 `required` 约束)核对,截图新增的"更多信息"区域约 60+ 个字段后端完全没有承接位置。经与产品确认,本次采用以下原则(与今日同批完成的 `PersonalLoanForm.vue` 改造采用的"无字段仅本地展示不提交"策略不同,此处产品明确要求严格对齐截图):
|
||||
|
||||
1. **完全按截图结构重写**,现状"融资条件""特殊融资用途标识""法人配偶信息"三张卡片,以及"是否市场经营者""是否政府融资平台""贷款钱包账号"三个字段,截图均未出现,随本次改造**一并移除**(不在 UI 呈现,也不再提交,历史数据不受影响,仅本页面不可编辑)。
|
||||
2. **截图有但后端无对应字段**的约 60+ 项,前端仍新建 `form.xxx` 本地字段正常渲染输入控件,**随表单一起提交**(对象里直接带上,用推测的驼峰字段名),后端如做了未知属性容错则忽略,如严格校验则可能报错——此风险已与产品确认接受,逐项登记进《缺失的后端接口.md》Part 25,待后端评估是否正式建字段。
|
||||
3. 底部"手机号+获取验证码"验证交互:项目内没有任何"贷款申请场景发码"接口(唯一的 `send-sms-code` 是登录场景专用),本次**不实现**验证码发送/校验交互;"手机号"字段保留,挪到"授信基础信息"卡片内作为普通输入框,绑定已有的 `phoneNo` 字段(无验证逻辑)。
|
||||
4. "展开 更多信息"交互复用项目现状模式:一个"展开/收起"链接 + `v-if` 控制字段区域显隐(`PersonalLoanForm.vue`"经营实体信息"区已有同类"链接/开关 + v-if"先例,本次两处更多信息区各自维护一个 `ref<boolean>`)。
|
||||
|
||||
## 一、整体卡片结构
|
||||
|
||||
`EnterpriseLoanForm.vue` 重写为以下卡片顺序:
|
||||
|
||||
1. **授信基础信息**
|
||||
2. **法定代表人信息**(含"展开 更多信息"次级区域)
|
||||
3. **企业信息**(含"展开 更多信息"次级区域)
|
||||
4. **影像信息**
|
||||
5. 提交 / 取消按钮(沿用现状右上角 `a-page-header` `#extra` 布局,不引入个人贷款申请那套"二次确认弹窗+二维码"模式——截图本身没有该交互,维持企业贷款申请现状"提交后直接返回列表"的简单流程)
|
||||
|
||||
**整体移除**(现状已实现但截图未出现,随本次改造删除 UI 与提交逻辑):
|
||||
|
||||
| 移除内容 | 原字段 |
|
||||
|---|---|
|
||||
| "融资条件"卡片(8字段) | goodsCategory、paymentCycle、singleOrderLimit、financingRatio、estimatedReturnRate、loanTerm、orderFinancingTerm、loanPurpose(**注**:`loanPurpose` 字段被"授信品种"复用,见下,不是整个删除) |
|
||||
| "特殊融资用途标识"卡片(5字段) | repayFundSource、acceptAgricultureType、industryAdjustType、industryUpgradeFlag、newIndustryType |
|
||||
| "法人配偶信息"卡片(5字段) | spouseName、spousePhone、spouseGender、spouseCertType、spouseCertId |
|
||||
| "紧急联系人信息"独立卡片 | 迁移进"法定代表人-更多信息"区"紧急联系人"一项,字段 `emergencyContactName`/`emergencyContactPhone` 不丢,仅位置变化 |
|
||||
| 企业信息卡片内 2 个字段 | isMarketOperator(是否市场经营者)、isGovernmentPlatform(是否政府融资平台)——截图企业信息区无对应展示位,随卡片重写一并去掉 |
|
||||
| 基础信息卡片内 1 个字段 | accountNo(贷款钱包账号选择下拉)——截图授信基础信息区无对应展示位,随卡片重写去掉;如后续发现贷款放款环节仍需指定钱包账号,需产品重新确认放置位置 |
|
||||
|
||||
> 以上"是否市场经营者/是否政府融资平台/贷款钱包账号"三项的移除是本设计文档新增的判断(用户此前只明确确认了融资条件/特殊融资用途标识/法人配偶信息三项),**请在下方"spec 自查"通过后重点复核这一点**,如需保留请在 review 阶段告知。
|
||||
|
||||
## 二、字段清单与映射
|
||||
|
||||
标记:✅ 复用现有后端字段(沿用 `form.xxx`);🆕 前端新增本地字段,一起提交(用推测字段名);⚠️ 语义映射到现有字段但命名不完全对应,已确认按此处理。
|
||||
|
||||
### 2.1 授信基础信息
|
||||
|
||||
| 截图字段 | 处理 | 说明 |
|
||||
|---|---|---|
|
||||
| 授信申请人 | ✅ `customerId`/`customerName` | 沿用 `WalletCustomerPicker` |
|
||||
| 机构 | ✅ `organizationId` | 沿用 `OrgTreeSelect` |
|
||||
| 产品 | ✅ `loanProductCode` | 沿用现状文本输入框,不新增选择器 |
|
||||
| 授信品种 | ⚠️ `loanPurpose` | 语义最接近的现有字段承接 |
|
||||
| 手机号码 | ✅ `phoneNo` | 从底部验证区挪到此卡片,普通输入框 |
|
||||
| 申请金额(万元) | ✅ `loanAmount` | 现状 label 是"申请金额(元)",本次按截图改为"(万元)",仅改文案,不做单位换算(后端字段本身是无单位约束的字符串),登记为缺口供后端确认单位口径 |
|
||||
| 申请利率(%) | ✅ `applicationInterestRate` | 不变 |
|
||||
| 授信种类 | 🆕 `creditCategory` | `a-select`,选项常量 `CREDIT_CATEGORY_OPTIONS`(新增于 `creditEnums.js`),目前只有截图可见的一项 `{value:'OTHER_COMPREHENSIVE_LIMIT', label:'其他综合额度'}`,默认选中;**完整选项列表待业务确认**,不臆造 |
|
||||
|
||||
### 2.2 法定代表人信息
|
||||
|
||||
| 截图字段 | 处理 |
|
||||
|---|---|
|
||||
| 姓名 | ✅ `legalPersonName` |
|
||||
| 身份证号码 | ✅ `legalPersonCertId` |
|
||||
| 手机号码 | ✅ `legalPersonMobile` |
|
||||
| 性别 | ✅ `legalPersonGender` |
|
||||
| 出生日期 | ✅ `legalPersonBirthday` |
|
||||
| 证件到期日期 + 长期 | ✅ `legalPersonCertExpiry`,新增 🆕 `legalPersonCertExpiryLongTerm`(勾选态,本地布尔,不提交,仅控制日期选择器禁用+回填哨兵日期) |
|
||||
| 婚姻状况 | ✅ `legalPersonMarital` |
|
||||
| 现居住地址 | ✅ `legalPersonResidence` |
|
||||
| 通讯地址 | 🆕 `legalPersonMailAddress`(截图"更多信息"区重复出现同名字段,合并为同一个,不重复渲染两次) |
|
||||
| 最高学历 | ✅ `legalPersonEducation` |
|
||||
| 是否本地置业 | 🆕 `isLocalPropertyOwner`(Y/N,`a-radio-group`) |
|
||||
| 子女是否本地就学 | 🆕 `isChildLocalSchool`(Y/N) |
|
||||
|
||||
**更多信息**(链接 + `v-if`,本地 ref `legalPersonMoreVisible`):
|
||||
|
||||
| 截图字段 | 处理 |
|
||||
|---|---|
|
||||
| 个人开户户名 | 🆕 `legalPersonAccountType`,枚举 `LOCAL_CUSTOMER`(本地客户)/`NON_LOCAL_CUSTOMER`(异地客户) |
|
||||
| 是否本地户籍 | 🆕 `legalPersonLocalHousehold`(Y/N) |
|
||||
| 个人是否有社保医保 | 🆕 `legalPersonHasSocialInsurance`(Y/N) |
|
||||
| 民族 | ✅ `legalPersonNationality` |
|
||||
| 经营公司名称 | 🆕 `legalPersonBusinessCompanyName` |
|
||||
| 经营公司营业性质用途 | 🆕 `legalPersonBusinessNature` |
|
||||
| 经营地址 | 🆕 `legalPersonBusinessAddress` |
|
||||
| 经营邮编 | 🆕 `legalPersonBusinessZipCode` |
|
||||
| 住处邮编 | 🆕 `legalPersonResidenceZipCode`(⚠️ 截图该行文字密集易读错,若实际是别的字段含义,review 时请指正) |
|
||||
| 资信业务 | 🆕 `legalPersonCreditBusiness` |
|
||||
| 电子邮箱 | ✅ `legalPersonEmail` |
|
||||
| 通讯地址邮编 | 🆕 `legalPersonMailZipCode` |
|
||||
| 紧急联系人 | ✅ `emergencyContactName` + `emergencyContactPhone`(从独立卡片迁移,两个输入框:姓名/电话) |
|
||||
| 个人基本户开户 | 🆕 `legalPersonBasicAccountOpened`(Y/N) |
|
||||
| 开户行别 | 🆕 `legalPersonBankType` |
|
||||
| 个人基本户户名 | 🆕 `legalPersonBasicAccountName` |
|
||||
| 个人基本户账号 | 🆕 `legalPersonBasicAccountNo`(不复用 `accountNo`,该字段随"贷款钱包账号"整体移除,语义也不同) |
|
||||
| 股票代码 | 🆕 `legalPersonStockCode` |
|
||||
| 备注 | 🆕 `legalPersonRemark`(`a-textarea`) |
|
||||
|
||||
### 2.3 企业信息
|
||||
|
||||
| 截图字段 | 处理 |
|
||||
|---|---|
|
||||
| 营业执照编号 | 🆕 `businessLicenseNo` |
|
||||
| 经济类型 | ⚠️ `enterpriseOrgType` |
|
||||
| 隶属经济产权 | 🆕 `enterpriseEconomicOwnership` |
|
||||
| 经营场所 | ⚠️ `businessScope`(沿用现状"经营范围"字段,必填) |
|
||||
| 证件登记经营地址 | 🆕 `businessLicenseRegisteredAddress` |
|
||||
| 证件失效日期 + 长期 | ✅ `businessLicenseExpiry`,新增 🆕 `businessLicenseExpiryLongTerm`(同上长期哨兵处理) |
|
||||
| 企业经济区域 | 🆕 `enterpriseEconomicZone` |
|
||||
| 通讯地址 | 🆕 `enterpriseMailAddress` |
|
||||
| 上年末从业人数 | ✅ `annualEmployeeCount` |
|
||||
| 上年营业收入 | ✅ `annualRevenue` |
|
||||
| 上年末资产总额 | ✅ `annualTotalAssets` |
|
||||
| 企业类型 | ✅ `enterpriseType` |
|
||||
| 企业代码 | 🆕 `enterpriseCode` |
|
||||
| 提款种类标识 | 🆕 `withdrawalTypeFlag` |
|
||||
| 是否本地股票参与经营 | 🆕 `isLocalStockParticipated`(Y/N) |
|
||||
| 注册资本 | ✅ `registeredCapital` + `registeredCapitalCurrency` |
|
||||
| 实收资本 | 🆕 `paidInCapital` |
|
||||
| 企业所在地地址 | 🆕 `enterpriseLocationAddress` |
|
||||
| 企业所在地邮编 | 🆕 `enterpriseLocationZipCode` |
|
||||
|
||||
**更多信息**(链接 + `v-if`,本地 ref `enterpriseMoreVisible`):
|
||||
|
||||
| 截图字段 | 处理 |
|
||||
|---|---|
|
||||
| 企业基本户是否本行开立 | 🆕 `enterpriseBasicAccountLocalBank`(Y/N) |
|
||||
| 企业基本户开户行 | 🆕 `enterpriseBasicAccountBank` |
|
||||
| 企业基本户账号 | 🆕 `enterpriseBasicAccountNo` |
|
||||
| 首要股东(占公司比例) | 🆕 `enterprisePrimaryShareholder` |
|
||||
| 企业办公地址 | 🆕 `enterpriseOfficeAddress` |
|
||||
| 办公地址邮编 | 🆕 `enterpriseOfficeZipCode` |
|
||||
| 是否有商铺 | 🆕 `hasStorefront`(Y/N) |
|
||||
| 业绩 | 🆕 `enterprisePerformance` |
|
||||
| 是否上市公司 | ✅ `isListedCompany` |
|
||||
| 是否私人控股 | ✅ `isPrivateControlled` |
|
||||
| 上市代码 | 🆕 `listedStockCode` |
|
||||
| 企业法定代表电话 / 企业法定代表人号码 | **不重复渲染**:与"法定代表人信息"卡片的手机号码(`legalPersonMobile`)/身份证号码(`legalPersonCertId`) 语义重复,截图这两行按重复字段处理,不新建控件 |
|
||||
| 企业银行汇账户名 | 🆕 `enterpriseRemitAccountName` |
|
||||
| 企业银行汇账账号 | 🆕 `enterpriseRemitAccountNo` |
|
||||
| 企业银行汇账开户行网点 | 🆕 `enterpriseRemitBankBranch` |
|
||||
| 企业货款账户名称 | 🆕 `enterpriseLoanPaymentAccountName` |
|
||||
| 企业与他行建立信贷关系情况 | 🆕 `enterpriseOtherBankCreditRelation` |
|
||||
| 财务报表编号 | 🆕 `financialStatementNo` |
|
||||
| 企业营销所在区域 | 🆕 `enterpriseMarketingRegion` |
|
||||
| 有无对外担保情况 | 🆕 `hasExternalGuarantee`(Y/N) |
|
||||
| 是否属于中小企业 | 🆕 `isSmeEnterprise`(Y/N) |
|
||||
| 是否属地生态化 | 🆕 `isLocalEcological`(Y/N) |
|
||||
| 是否属于股权制 | 🆕 `isEquitySystem`(Y/N) |
|
||||
| 高新技术产业标识 | 🆕 `highTechIndustryFlag`,枚举 `OBTAINED`(已获取)/`APPLYING`(正申请) |
|
||||
| 公司代号及关系企业 | 🆕 `companyCodeAndAffiliates` |
|
||||
| 公司e-Mail | 🆕 `enterpriseEmail` |
|
||||
| 公司网址 | 🆕 `enterpriseWebsite` |
|
||||
| 企业经营网址 | 🆕 `enterpriseBusinessWebsite` |
|
||||
| 企业开户方式及运营开户 | 🆕 `enterpriseAccountOpeningMethod` |
|
||||
| 企业主要产品或服务 | 🆕 `enterpriseMainProductsServices`(`a-textarea`) |
|
||||
| 企业经营地址范围 | 🆕 `enterpriseBusinessAddressScope`(`a-textarea`;截图旁边有"+"按钮暗示多值,本次简化为单个多行文本框,不做数组结构,登记简化说明) |
|
||||
| 企业股权其他情况 | 🆕 `enterpriseEquityOtherType`,枚举 `OWNED`(自有)/`LEASED`(租用)/`OTHER`(其他) |
|
||||
| 企业上级公司名称 | 🆕 `parentCompanyName` |
|
||||
| 企业上级公司所在地址 | 🆕 `parentCompanyAddress` |
|
||||
| 企业上级公司持股比例 | 🆕 `parentCompanyShareRatio` |
|
||||
| 备注 | 🆕 `enterpriseRemark`(`a-textarea`) |
|
||||
|
||||
### 2.4 影像信息
|
||||
|
||||
| 截图字段 | 处理 |
|
||||
|---|---|
|
||||
| 营业主照 | ✅ 沿用 `LicenseUpload`(`businessLicenseFileNo`) |
|
||||
| 法人代表身份证(人像面/国徽面) | ✅ 沿用 `IdCardUpload`(`legalPersonIdFrontFileNo`/`legalPersonIdBackFileNo`) |
|
||||
| 他行 - 个人征信报告 | 🆕 复用 `LicenseUpload` 新实例(`upload-text="上传个人征信报告"`),本地 `otherBankPersonalCreditReportFileNo`,`fileType` 占位值 `'OTHER_BANK_PERSONAL_CREDIT_REPORT'` |
|
||||
| 他行 - 企业征信报告 | 🆕 复用 `LicenseUpload` 新实例,本地 `otherBankEnterpriseCreditReportFileNo`,`fileType` 占位值 `'OTHER_BANK_ENTERPRISE_CREDIT_REPORT'` |
|
||||
| 企业营业执照 - 下载模板 | 禁用占位按钮(`disabled title="模板文件待业务方提供"`,同 `PersonalLoanForm.vue` 现状写法) |
|
||||
| 法定代表人 - 下载模板 | 同上,禁用占位按钮 |
|
||||
|
||||
四个上传项统一走 `buildImageList()` 拼进 `loanApplicationImageBtoList`;两个新增的"他行"上传项因为没有真实 `fileType` 枚举,`fileType` 用上面列出的占位字符串,登记缺口。
|
||||
|
||||
## 三、长期哨兵日期处理
|
||||
|
||||
复用 `src/constants/customerEnums.js` 的 `CERTIFICATE_LONG_TERM_DATE`(`'9999-12-31 00:00:00'`),日期部分 `.slice(0, 10)` = `'9999-12-31'`。参照 `EnterpriseForm.vue` 的 `handleLongTermChange` 写法:
|
||||
|
||||
```js
|
||||
function handleLegalPersonCertExpiryLongTermChange(e) {
|
||||
if (e.target.checked) {
|
||||
legalPersonCertExpiryModel.value = undefined // 日期选择器禁用并清空展示
|
||||
form.legalPersonCertExpiry = CERTIFICATE_LONG_TERM_DATE_ONLY
|
||||
} else {
|
||||
form.legalPersonCertExpiry = ''
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`businessLicenseExpiry` 同理新增一份。`a-date-picker :disabled="form.xxxLongTerm"` + `a-checkbox v-model:checked="form.xxxLongTerm" @change="handleXxxLongTermChange"`。
|
||||
|
||||
## 四、《缺失的后端接口.md》新增登记(Part 25)
|
||||
|
||||
新增一节"Part 25:授信管理 —— 企业贷款申请表单按最新原型截图改造 —— 2026-08-10 补充",编号从 146 开始,内容涵盖:
|
||||
|
||||
1. 本次移除的"融资条件/特殊融资用途标识/法人配偶信息"三张卡片 + "是否市场经营者/是否政府融资平台/贷款钱包账号"字段:现状 Bto 已支持但页面不再提供录入入口,历史数据不受影响。
|
||||
2. 完整列出上方 2.2/2.3 节全部 🆕 字段(约 60+ 项)及其推测提交字段名,说明 `CreateEnterpriseLoanDraftBto`/`UpdateEnterpriseLoanApplicationBto` 均无对应属性,前端仍随表单一起提交,若后端未做未知属性容错可能导致整单提交失败,需要后端评估。
|
||||
3. "授信种类"(`creditCategory`)完整枚举选项待业务确认,当前只有截图可见的"其他综合额度"一项。
|
||||
4. "证件到期日长期"哨兵日期方案(沿用已有 `CERTIFICATE_LONG_TERM_DATE` 惯例,非新缺口,仅说明本次两个新增位置的沿用情况)。
|
||||
5. 影像信息"他行个人/企业征信报告"两个新上传项的 `fileType` 占位值待后端确认;"下载模板"按钮维持禁用占位现状。
|
||||
6. "申请金额"单位展示由"(元)"改为"(万元)",字段本身无单位约束,是否需要前端做换算或后端补充单位字段,待确认。
|
||||
7. "企业经营地址范围"截图暗示可"+"多值录入,本次简化为单个多行文本框,非数组结构。
|
||||
|
||||
## 五、组件变更清单
|
||||
|
||||
| 文件 | 变更类型 |
|
||||
|---|---|
|
||||
| `src/views/credit/loan-application/EnterpriseLoanForm.vue` | 重写 |
|
||||
| `src/constants/creditEnums.js` | 修改(新增 `CREDIT_CATEGORY_OPTIONS` 等本次新枚举常量) |
|
||||
| `缺失的后端接口.md` | 修改(新增 Part 25) |
|
||||
|
||||
复用不改动:`ChannelSelect.vue`、`OrgTreeSelect.vue`、`WalletCustomerPicker.vue`、`IdCardUpload.vue`、`LicenseUpload.vue`。
|
||||
|
||||
## 范围边界
|
||||
|
||||
- 不改动 `LoanApplicationList.vue`、路由映射、菜单层级。
|
||||
- 不改动 `PersonalLoanForm.vue`(今日已完成的独立改造,风格与本次不同,互不影响)。
|
||||
- 不实现底部短信验证码发送/校验交互(无接口支撑)。
|
||||
- 不引入"二次确认弹窗+二维码"提交流程(截图无此交互,维持企业贷款申请现状"提交后直接返回列表")。
|
||||
- 不做"企业经营地址范围"多值数组结构、不新建"授信品种/产品"选择弹窗(沿用文本输入)。
|
||||
|
||||
## 待 review 重点确认项(已在正文标注 ⚠️,此处汇总)
|
||||
|
||||
1. 是否同意移除"是否市场经营者/是否政府融资平台/贷款钱包账号"三个截图未出现的现有字段(本文档新增判断,非用户此前明确确认项)。
|
||||
2. "住处邮编"(`legalPersonResidenceZipCode`)对应截图原文是否读取准确。
|
||||
3. "授信种类"完整枚举选项、"申请金额"单位换算规则,均需业务后续补充,当前先用最小可用值占位。
|
||||
|
|
@ -154,3 +154,30 @@ export const ENTERPRISE_RELATION_OPTIONS = [
|
|||
{ value: "ACTUAL_CONTROLLER", label: "实控人" }
|
||||
]
|
||||
|
||||
// 企业贷款申请"授信种类"下拉选项:CreateEnterpriseLoanDraftBto/UpdateEnterpriseLoanApplicationBto
|
||||
// 均无对应字段(已知缺口,登记于《缺失的后端接口.md》Part 25),当前只有原型截图上可见的一项,
|
||||
// 完整选项列表待业务确认,不臆造更多选项。
|
||||
export const CREDIT_CATEGORY_OPTIONS = [{ value: "OTHER_COMPREHENSIVE_LIMIT", label: "其他综合额度" }]
|
||||
|
||||
// 企业贷款申请法定代表人"个人开户户名"下拉选项:原型截图给出"本地客户/异地客户"两项,
|
||||
// CreateEnterpriseLoanDraftBto 无对应字段(已知缺口,登记于《缺失的后端接口.md》Part 25)。
|
||||
export const LEGAL_PERSON_ACCOUNT_TYPE_OPTIONS = [
|
||||
{ value: "LOCAL_CUSTOMER", label: "本地客户" },
|
||||
{ value: "NON_LOCAL_CUSTOMER", label: "异地客户" }
|
||||
]
|
||||
|
||||
// 企业贷款申请企业信息"高新技术产业标识"下拉选项:原型截图给出"已获取/正申请"两项,
|
||||
// CreateEnterpriseLoanDraftBto 无对应字段(已知缺口,登记于《缺失的后端接口.md》Part 25)。
|
||||
export const HIGH_TECH_INDUSTRY_FLAG_OPTIONS = [
|
||||
{ value: "OBTAINED", label: "已获取" },
|
||||
{ value: "APPLYING", label: "正申请" }
|
||||
]
|
||||
|
||||
// 企业贷款申请企业信息"企业股权其他情况"下拉选项:原型截图给出"自有/租用/其他"三项,
|
||||
// CreateEnterpriseLoanDraftBto 无对应字段(已知缺口,登记于《缺失的后端接口.md》Part 25)。
|
||||
export const ENTERPRISE_EQUITY_OTHER_TYPE_OPTIONS = [
|
||||
{ value: "OWNED", label: "自有" },
|
||||
{ value: "LEASED", label: "租用" },
|
||||
{ value: "OTHER", label: "其他" }
|
||||
]
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
126
缺失的后端接口.md
126
缺失的后端接口.md
|
|
@ -1886,9 +1886,129 @@ INSERT INTO "SFT"."AUTH__ROLE_PERMISSION" ("ID", "ROLE_ID", "PERMISSION_ID") VAL
|
|||
补充 `VITE_H5_QRCODE_PATH_LOAN=/mobile/loan-application`,域名复用既有的
|
||||
`VITE_H5_QRCODE_BASE_URL`(生产域名尚未确定时同样靠代码内 `|| 'https://example.com'` 兜底,
|
||||
不阻断柜员操作)。**扫码后走向的移动端 H5 确认页(短信验证码+人脸识别,对应
|
||||
`POST /api/credit-apply/loan-application/confirm`)不在本项目前端实现范围**(与第19条一致),
|
||||
本次改动只负责柜员端生成并展示二维码内容,不做轮询/倒计时(与个人/企业开户的既定处理方式
|
||||
一致,提交成功后也不提供"刷新申请状态"入口,如需查看最新状态需回到列表页重新查询)。
|
||||
`POST /api/credit-apply/loan-application/confirm`)不在本项目前端实现范围**(与第19条一致),
|
||||
本次改动只负责柜员端生成并展示二维码内容,不做轮询/倒计时(与个人/企业开户的既定处理方式
|
||||
一致,提交成功后也不提供"刷新申请状态"入口,如需查看最新状态需回到列表页重新查询)。
|
||||
|
||||
## Part 25:授信管理 —— 企业贷款申请表单按最新原型截图改造 —— 2026-08-10 补充
|
||||
|
||||
产品提供了"授信管理 > 企业贷款申请"页面新原型截图(页面标题"提款申请 > 授信申请单",来自旧版
|
||||
"电商服务工具平台",产品已确认这是本次要对齐的目标设计,与第135-145条同批完成的
|
||||
`PersonalLoanForm.vue` 改造采用的"无对应字段仅本地展示不提交"策略不同,本次经产品明确要求严格
|
||||
按截图字段结构实现,`EnterpriseLoanForm.vue` 整体重写,详见
|
||||
`docs/superpowers/specs/2026-08-10-enterprise-loan-application-form-redesign.md`。
|
||||
|
||||
146. **现状三张卡片 + 三个字段随本次改造移除录入入口(Bto 仍支持,只是页面不再提供)**:
|
||||
"融资条件"(`goodsCategory`/`paymentCycle`/`singleOrderLimit`/`financingRatio`/
|
||||
`estimatedReturnRate`/`loanTerm`/`orderFinancingTerm`)、"特殊融资用途标识"
|
||||
(`repayFundSource`/`acceptAgricultureType`/`industryAdjustType`/`industryUpgradeFlag`/
|
||||
`newIndustryType`)、"法人配偶信息"(`spouseName`/`spousePhone`/`spouseCertType`/
|
||||
`spouseGender`/`spouseCertId`)三张卡片,以及"是否市场经营者"(`isMarketOperator`)、
|
||||
"是否政府融资平台"(`isGovernmentPlatform`)、"贷款钱包账号"(`accountNo`)三个字段,新原型
|
||||
截图均未出现,本次改造后前端不再提供录入界面,历史数据不受影响,`CreateEnterpriseLoanDraftBto`/
|
||||
`UpdateEnterpriseLoanApplicationBto` 均未删除对应属性。若后续仍需采集,需产品重新确认承载位置。
|
||||
147. **底部"手机号+获取验证码"验证交互不实现**:项目内没有任何"企业贷款申请场景发码"接口(唯一的
|
||||
`POST /api/auth/send-sms-code` 是登录场景专用,`verifyCode` 只存在于
|
||||
`LoanApplicationDetailVo` 与移动端专属的 `/api/credit-apply/loan-application/confirm`,
|
||||
不在本项目前端实现范围),本次只保留"手机号"字段(挪到"授信基础信息"卡片,绑定既有 `phoneNo`),
|
||||
不做验证码发送/校验。
|
||||
148. **"授信基础信息"新增"授信种类"字段(`creditCategory`)无对应后端属性**:`a-select` 下拉,
|
||||
当前仅有截图可见的一项"其他综合额度"(`OTHER_COMPREHENSIVE_LIMIT`,见
|
||||
`src/constants/creditEnums.js` 的 `CREDIT_CATEGORY_OPTIONS`),完整选项列表待业务确认,
|
||||
前端不臆造更多选项;字段随表单一起提交,`CreateEnterpriseLoanDraftBto`/
|
||||
`UpdateEnterpriseLoanApplicationBto` 均无 `creditCategory` 属性,需后端评估是否正式建字段。
|
||||
149. **"授信品种"/"经营场所"/"经济类型"三个截图字段复用现有语义相近字段承接,非新建字段**:
|
||||
"授信品种"复用 `loanPurpose`(原"贷款投向");"经营场所"复用 `businessScope`(原"经营范围",
|
||||
必填);"经济类型"复用 `enterpriseOrgType`(原"企业经济类型")。三者均为已有字段改变展示
|
||||
label,不是新增属性,如实际业务语义与原字段不完全一致,需后端/产品进一步确认。
|
||||
150. **"申请金额"展示单位由"(元)"改为"(万元)"**:`loanAmount` 字段本身是无单位约束的字符串,
|
||||
本次仅按截图改了输入框旁的单位文案,不做数值换算,是否需要前端换算或后端补充专门的单位字段,
|
||||
待业务确认。
|
||||
151. **法定代表人信息/企业信息"更多信息"展开区新增约55个字段,`CreateEnterpriseLoanDraftBto`/
|
||||
`UpdateEnterpriseLoanApplicationBto` 均无对应属性,经产品确认仍随表单一起提交(使用前端推测
|
||||
的驼峰字段名)**:若后端序列化框架未配置"忽略未知属性"容错,可能导致整单创建/修改请求失败,
|
||||
需要后端评估。完整字段清单(提交时的 key 名,对应截图原文标签):
|
||||
- 法定代表人信息主区:`legalPersonMailAddress`(通讯地址)、`isLocalPropertyOwner`(是否在本地
|
||||
有置业,Y/N)、`isChildLocalSchool`(子女是否在本地就学,Y/N)。
|
||||
- 法定代表人信息"更多信息"区:`legalPersonAccountType`(个人开户户名,枚举见
|
||||
`LEGAL_PERSON_ACCOUNT_TYPE_OPTIONS`)、`legalPersonLocalHousehold`(是否本地户籍,Y/N)、
|
||||
`legalPersonHasSocialInsurance`(个人是否有社保医保,Y/N)、`legalPersonBusinessCompanyName`
|
||||
(经营公司名称)、`legalPersonBusinessNature`(经营公司营业性质用途)、
|
||||
`legalPersonBusinessAddress`(经营地址)、`legalPersonBusinessZipCode`(经营邮编)、
|
||||
`legalPersonResidenceZipCode`(住处邮编,截图该行文字密集,读取准确性待复核)、
|
||||
`legalPersonCreditBusiness`(资信业务)、`legalPersonMailZipCode`(通讯地址邮编)、
|
||||
`legalPersonBasicAccountOpened`(个人基本户开户,Y/N)、`legalPersonBankType`(开户行别)、
|
||||
`legalPersonBasicAccountName`(个人基本户户名)、`legalPersonBasicAccountNo`(个人基本户
|
||||
账号,不复用已移除的 `accountNo`)、`legalPersonStockCode`(股票代码)、`legalPersonRemark`
|
||||
(备注)。截图"紧急联系人"一项复用已有的 `emergencyContactName`/`emergencyContactPhone`
|
||||
(从独立卡片迁移至此区域,非新增字段)。
|
||||
- 企业信息主区:`businessLicenseNo`(营业执照编号)、`enterpriseEconomicOwnership`(隶属经济
|
||||
产权)、`businessLicenseRegisteredAddress`(证件登记经营地址)、`enterpriseEconomicZone`
|
||||
(企业经济区域)、`enterpriseMailAddress`(通讯地址)、`enterpriseCode`(企业代码)、
|
||||
`withdrawalTypeFlag`(提款种类标识)、`isLocalStockParticipated`(是否本地股票参与经营,
|
||||
Y/N)、`paidInCapital`(实收资本)、`enterpriseLocationAddress`(企业所在地地址)、
|
||||
`enterpriseLocationZipCode`(企业所在地邮编)。
|
||||
- 企业信息"更多信息"区:`enterpriseBasicAccountLocalBank`(企业基本户是否本行开立,Y/N)、
|
||||
`enterpriseBasicAccountBank`(企业基本户开户行)、`enterpriseBasicAccountNo`(企业基本户
|
||||
账号)、`enterprisePrimaryShareholder`(首要股东及占公司比例)、`enterpriseOfficeAddress`
|
||||
(企业办公地址)、`enterpriseOfficeZipCode`(办公地址邮编)、`hasStorefront`(是否有商铺,
|
||||
Y/N)、`enterprisePerformance`(业绩)、`listedStockCode`(上市代码)、
|
||||
`enterpriseRemitAccountName`(企业银行汇账户名)、`enterpriseRemitAccountNo`(企业银行汇账
|
||||
账号)、`enterpriseRemitBankBranch`(企业银行汇账开户行网点)、
|
||||
`enterpriseLoanPaymentAccountName`(企业货款账户名称)、`enterpriseOtherBankCreditRelation`
|
||||
(企业与他行建立信贷关系情况)、`financialStatementNo`(财务报表编号)、
|
||||
`enterpriseMarketingRegion`(企业营销所在区域)、`hasExternalGuarantee`(有无对外担保情况,
|
||||
Y/N)、`isSmeEnterprise`(是否属于中小企业,Y/N)、`isLocalEcological`(是否属地生态化,Y/N)、
|
||||
`isEquitySystem`(是否属于股权制,Y/N)、`highTechIndustryFlag`(高新技术产业标识,枚举见
|
||||
`HIGH_TECH_INDUSTRY_FLAG_OPTIONS`)、`companyCodeAndAffiliates`(公司代号及关系企业)、
|
||||
`enterpriseEmail`(公司e-Mail)、`enterpriseWebsite`(公司网址)、`enterpriseBusinessWebsite`
|
||||
(企业经营网址)、`enterpriseAccountOpeningMethod`(企业开户方式及运营开户)、
|
||||
`enterpriseMainProductsServices`(企业主要产品或服务)、`enterpriseBusinessAddressScope`
|
||||
(企业经营地址范围,截图旁带"+"按钮暗示多值,本次简化为单个多行文本框,非数组结构)、
|
||||
`enterpriseEquityOtherType`(企业股权其他情况,枚举见
|
||||
`ENTERPRISE_EQUITY_OTHER_TYPE_OPTIONS`)、`parentCompanyName`(企业上级公司名称,选填)、
|
||||
`parentCompanyAddress`(企业上级公司所在地址,选填)、`parentCompanyShareRatio`(企业上级
|
||||
公司持股比例,选填)、`enterpriseRemark`(备注)。
|
||||
- 截图"企业法定代表电话"/"企业法定代表人号码"两项因与"法定代表人信息"卡片的手机号码
|
||||
(`legalPersonMobile`)/身份证号码(`legalPersonCertId`)语义重复,未重复建控件。
|
||||
152. **法人证件到期日/营业执照证件失效日期新增"长期"哨兵日期勾选**:沿用项目已有的
|
||||
`src/constants/customerEnums.js` 的 `CERTIFICATE_LONG_TERM_DATE`(`'9999-12-31 00:00:00'`)
|
||||
权变方案(与 `EnterpriseForm.vue`/`PersonalForm.vue` 一致),非新缺口,仅记录本次两个新增
|
||||
位置的沿用情况。
|
||||
153. **影像信息按更清晰的补充截图修正为5行,新增"正面免冠照/授权(个人征信授权+企业征信授权书)/
|
||||
企业章程/决议书"共6个上传项,`fileType` 均无对应枚举**:初版按较模糊的截图实现的"他行个人/
|
||||
企业征信报告"两项系误读,已改为按补充截图重做,最终结构为:①营业执照(不变);②法人代表身份证
|
||||
(人像面+国徽面不变,新增"正面免冠照"人脸识别项,复用 `FacePhotoUpload.vue`,`fileType` 沿用
|
||||
项目已有的 `LOAN_APPLICATION_IMAGE_FILE_TYPE.FACE_PHOTO`(`"04"`,与 `PersonalLoanForm.vue`
|
||||
"人脸识别信息"项同编码,非新缺口);③授权(新增"个人征信授权"/"企业征信授权书"两个上传项,
|
||||
复用 `LicenseUpload.vue`,`fileType` 分别用可读中文占位值 `"个人征信授权"`/`"企业征信授权书"`,
|
||||
各自搭配一个禁用占位的"下载模板"按钮);④企业章程(新增,`LicenseUpload.vue` + 禁用占位
|
||||
"下载模板"按钮,`fileType` 占位值 `"企业章程"`);⑤决议书(新增,同企业章程,`fileType` 占位值
|
||||
`"决议书"`)。以上占位 `fileType` 均需后端确认含义并评估是否需要文档化为正式枚举值。
|
||||
154. **"营业执照"影像项本身不带"下载模板"按钮**:与第153条修正一致,"营业执照"是单纯的证件上传,
|
||||
"下载模板"按钮只出现在"授权/企业章程/决议书"三类需要柜员打印签署后再扫描回传的文件上,均
|
||||
统一禁用占位(`title="模板文件待业务方提供"`),与 `PersonalLoanForm.vue` 现状处理方式一致,
|
||||
无对应后端接口。
|
||||
155. **选择授信申请人(企业客户)后自动回填法定代表人信息与企业信息基础字段**:`EnterpriseCustomerDetailVo`
|
||||
本身不含法定代表人姓名/证件号/手机号等个人信息,只能通过 `enterpriseRelatedPersonList`(股东与
|
||||
高管信息列表)里 `legalRepresentativeStatus === 'LEGAL_REPRESENTATIVE'` 的条目取到
|
||||
`individualId`,再调用 `POST /api/customer-info/personal/detail` 取完整个人信息补全,这是
|
||||
项目内首次实现"自动从企业详情提取法定代表人"(`EnterpriseOpenForm.vue` 现状是柜员手动选法代,
|
||||
无此先例)。已知缺口:①`EnterpriseCustomerDetailVo` 没有"企业类型"、"是否私人控股"对应字段,
|
||||
回填时保持原值,需柜员人工填写;②若企业客户资料的股东与高管列表里没有任何一条被标记为法定
|
||||
代表人,不阻断选择流程,仅提示"未在企业客户资料中找到法定代表人信息,请手动填写";③个人客户
|
||||
`educationLevel`/`maritalStatus`/`gender`/`ethnicity` 取值是否与本表单复用的枚举取值域完全
|
||||
一致,以实测为准,与法人信息各字段原有的"无强校验"缺口(见文件头部注释)同类,不重复登记。
|
||||
156. **新增"钱包账号"必填字段,选择授信申请人后需另外选择该企业客户已开立的钱包账户**:复用
|
||||
`WalletAccountPicker.vue`(`customer-type="ENTERPRISE"`),提交 `accountNo`
|
||||
(`CreateEnterpriseLoanDraftBto` 已有字段,非新增)。重新选择授信申请人时会清空已选钱包账号,
|
||||
避免与新客户不匹配;提交前校验钱包账号必选。`WalletAccountPicker.vue` 查询企业钱包时未按
|
||||
已选客户名称/ID 强制过滤(该组件本身支持按"客户名称"关键字搜索,但不会自动带入已选企业名称
|
||||
做默认查询条件),柜员需要在弹窗内自行输入企业名称查询,属体验层面的已知限制,非接口缺口。
|
||||
157. **法人代表身份证(人像面/国徽面)提交前校验为必填**:对齐截图"*法定代表人身份证"的必填星号
|
||||
标记,`handleSubmit` 增加前置校验,未上传时阻断提交并提示,`loanApplicationImageBtoList`
|
||||
本身对单个 `fileType` 是否必填无 swagger 声明,该校验规则纯前端本地实现。
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue