修改抵押物类型自动判断逻辑
This commit is contained in:
@@ -65,8 +65,8 @@ public class CorporateLoanPricingCreateDTO implements Serializable {
|
|||||||
@Schema(description = "贸易和建筑业企业标识", example = "0")
|
@Schema(description = "贸易和建筑业企业标识", example = "0")
|
||||||
private String isTradeBuildEnt;
|
private String isTradeBuildEnt;
|
||||||
|
|
||||||
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "四类", "排污权抵押", "设备等其他不动产抵押", "存单质押", "股权质押", "其他质押"})
|
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "排污权抵押", "其他不动产抵押", "存单质押", "股权质押", "其他质押"})
|
||||||
@Pattern(regexp = "^(一类|二类|三类|四类|排污权抵押|设备等其他不动产抵押|存单质押|股权质押|其他质押)$", message = "抵质押类型必须是:一类、二类、三类、四类、排污权抵押、设备等其他不动产抵押、存单质押、股权质押、其他质押之一")
|
@Pattern(regexp = "^(一类|二类|三类|排污权抵押|其他不动产抵押|存单质押|股权质押|其他质押)$", message = "抵质押类型必须是:一类、二类、三类、排污权抵押、其他不动产抵押、存单质押、股权质押、其他质押之一")
|
||||||
private String collType;
|
private String collType;
|
||||||
|
|
||||||
@Schema(description = "抵质押物是否三方所有", example = "0")
|
@Schema(description = "抵质押物是否三方所有", example = "0")
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class PersonalLoanPricingCreateDTO implements Serializable {
|
|||||||
@Schema(description = "循环功能", example = "0")
|
@Schema(description = "循环功能", example = "0")
|
||||||
private String loanLoop;
|
private String loanLoop;
|
||||||
|
|
||||||
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一线", "一类", "二类", "三类", "存单质押", "其他质押"})
|
@Schema(description = "抵质押类型", example = "一类", allowableValues = {"一类", "二类", "三类", "四类", "存单质押", "其他质押"})
|
||||||
private String collType;
|
private String collType;
|
||||||
|
|
||||||
@Schema(description = "抵质押物是否三方所有", example = "0")
|
@Schema(description = "抵质押物是否三方所有", example = "0")
|
||||||
|
|||||||
@@ -139,8 +139,8 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
|
|||||||
|
|
||||||
private void validatePersonalCollateralType(LoanPricingWorkflow workflow) {
|
private void validatePersonalCollateralType(LoanPricingWorkflow workflow) {
|
||||||
if ("抵押".equals(workflow.getGuarType())
|
if ("抵押".equals(workflow.getGuarType())
|
||||||
&& !isOneOf(workflow.getCollType(), "一线", "一类", "二类", "三类")) {
|
&& !isOneOf(workflow.getCollType(), "一类", "二类", "三类", "四类")) {
|
||||||
throw new ServiceException("个人抵押抵质押类型必须是:一线、一类、二类、三类之一");
|
throw new ServiceException("个人抵押抵质押类型必须是:一类、二类、三类、四类之一");
|
||||||
}
|
}
|
||||||
if ("质押".equals(workflow.getGuarType())
|
if ("质押".equals(workflow.getGuarType())
|
||||||
&& !isOneOf(workflow.getCollType(), "存单质押", "其他质押")) {
|
&& !isOneOf(workflow.getCollType(), "存单质押", "其他质押")) {
|
||||||
@@ -150,8 +150,8 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
|
|||||||
|
|
||||||
private void validateCorporateCollateralType(LoanPricingWorkflow workflow) {
|
private void validateCorporateCollateralType(LoanPricingWorkflow workflow) {
|
||||||
if ("抵押".equals(workflow.getGuarType())
|
if ("抵押".equals(workflow.getGuarType())
|
||||||
&& !isOneOf(workflow.getCollType(), "一类", "二类", "三类", "四类", "排污权抵押", "设备等其他不动产抵押")) {
|
&& !isOneOf(workflow.getCollType(), "一类", "二类", "三类", "排污权抵押", "其他不动产抵押")) {
|
||||||
throw new ServiceException("企业抵押抵质押类型必须是:一类、二类、三类、四类、排污权抵押、设备等其他不动产抵押之一");
|
throw new ServiceException("企业抵押抵质押类型必须是:一类、二类、三类、排污权抵押、其他不动产抵押之一");
|
||||||
}
|
}
|
||||||
if ("质押".equals(workflow.getGuarType())
|
if ("质押".equals(workflow.getGuarType())
|
||||||
&& !isOneOf(workflow.getCollType(), "存单质押", "股权质押", "其他质押")) {
|
&& !isOneOf(workflow.getCollType(), "存单质押", "股权质押", "其他质押")) {
|
||||||
|
|||||||
@@ -290,36 +290,67 @@ class LoanPricingWorkflowServiceImplTest
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldAllowPersonalMortgageOneLineAndRejectOldOther()
|
void shouldAllowPersonalMortgageFourthCategoryAndRejectOldFirstLine()
|
||||||
{
|
{
|
||||||
LoanPricingWorkflow allowedWorkflow = validWorkflow();
|
LoanPricingWorkflow allowedWorkflow = validWorkflow();
|
||||||
allowedWorkflow.setCustType("个人");
|
allowedWorkflow.setCustType("个人");
|
||||||
allowedWorkflow.setGuarType("抵押");
|
allowedWorkflow.setGuarType("抵押");
|
||||||
allowedWorkflow.setCollType("一线");
|
allowedWorkflow.setCollType("四类");
|
||||||
|
|
||||||
loanPricingWorkflowService.createLoanPricing(allowedWorkflow);
|
loanPricingWorkflowService.createLoanPricing(allowedWorkflow);
|
||||||
|
|
||||||
LoanPricingWorkflow rejectedWorkflow = validWorkflow();
|
LoanPricingWorkflow rejectedWorkflow = validWorkflow();
|
||||||
rejectedWorkflow.setCustType("个人");
|
rejectedWorkflow.setCustType("个人");
|
||||||
rejectedWorkflow.setGuarType("抵押");
|
rejectedWorkflow.setGuarType("抵押");
|
||||||
rejectedWorkflow.setCollType("其他");
|
rejectedWorkflow.setCollType("一线");
|
||||||
|
|
||||||
ServiceException exception = assertThrows(ServiceException.class,
|
ServiceException exception = assertThrows(ServiceException.class,
|
||||||
() -> loanPricingWorkflowService.createLoanPricing(rejectedWorkflow));
|
() -> loanPricingWorkflowService.createLoanPricing(rejectedWorkflow));
|
||||||
|
|
||||||
assertEquals("个人抵押抵质押类型必须是:一线、一类、二类、三类之一", exception.getMessage());
|
assertEquals("个人抵押抵质押类型必须是:一类、二类、三类、四类之一", exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void shouldAllowCorporateMortgagePollutionRightAndPledgeEquity()
|
void shouldAllowCorporateNewMortgageTypesAndRejectOldMortgageTypes()
|
||||||
{
|
{
|
||||||
LoanPricingWorkflow mortgageWorkflow = validWorkflow();
|
LoanPricingWorkflow pollutionRightWorkflow = validWorkflow();
|
||||||
mortgageWorkflow.setCustType("企业");
|
pollutionRightWorkflow.setCustType("企业");
|
||||||
mortgageWorkflow.setGuarType("抵押");
|
pollutionRightWorkflow.setGuarType("抵押");
|
||||||
mortgageWorkflow.setCollType("排污权抵押");
|
pollutionRightWorkflow.setCollType("排污权抵押");
|
||||||
|
|
||||||
loanPricingWorkflowService.createLoanPricing(mortgageWorkflow);
|
loanPricingWorkflowService.createLoanPricing(pollutionRightWorkflow);
|
||||||
|
|
||||||
|
LoanPricingWorkflow otherRealEstateWorkflow = validWorkflow();
|
||||||
|
otherRealEstateWorkflow.setCustType("企业");
|
||||||
|
otherRealEstateWorkflow.setGuarType("抵押");
|
||||||
|
otherRealEstateWorkflow.setCollType("其他不动产抵押");
|
||||||
|
|
||||||
|
loanPricingWorkflowService.createLoanPricing(otherRealEstateWorkflow);
|
||||||
|
|
||||||
|
LoanPricingWorkflow oldFourthCategoryWorkflow = validWorkflow();
|
||||||
|
oldFourthCategoryWorkflow.setCustType("企业");
|
||||||
|
oldFourthCategoryWorkflow.setGuarType("抵押");
|
||||||
|
oldFourthCategoryWorkflow.setCollType("四类");
|
||||||
|
|
||||||
|
ServiceException fourthCategoryException = assertThrows(ServiceException.class,
|
||||||
|
() -> loanPricingWorkflowService.createLoanPricing(oldFourthCategoryWorkflow));
|
||||||
|
|
||||||
|
LoanPricingWorkflow oldOtherRealEstateWorkflow = validWorkflow();
|
||||||
|
oldOtherRealEstateWorkflow.setCustType("企业");
|
||||||
|
oldOtherRealEstateWorkflow.setGuarType("抵押");
|
||||||
|
oldOtherRealEstateWorkflow.setCollType("设备等其他不动产抵押");
|
||||||
|
|
||||||
|
ServiceException otherRealEstateException = assertThrows(ServiceException.class,
|
||||||
|
() -> loanPricingWorkflowService.createLoanPricing(oldOtherRealEstateWorkflow));
|
||||||
|
|
||||||
|
String expectedMessage = "企业抵押抵质押类型必须是:一类、二类、三类、排污权抵押、其他不动产抵押之一";
|
||||||
|
assertEquals(expectedMessage, fourthCategoryException.getMessage());
|
||||||
|
assertEquals(expectedMessage, otherRealEstateException.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void shouldKeepCorporatePledgeTypesUnchanged()
|
||||||
|
{
|
||||||
LoanPricingWorkflow pledgeWorkflow = validWorkflow();
|
LoanPricingWorkflow pledgeWorkflow = validWorkflow();
|
||||||
pledgeWorkflow.setCustType("企业");
|
pledgeWorkflow.setCustType("企业");
|
||||||
pledgeWorkflow.setGuarType("质押");
|
pledgeWorkflow.setGuarType("质押");
|
||||||
|
|||||||
@@ -100,7 +100,33 @@
|
|||||||
<!-- 抵质押信息 -->
|
<!-- 抵质押信息 -->
|
||||||
<el-divider v-if="isCollateralGuarantee" content-position="left">抵质押信息</el-divider>
|
<el-divider v-if="isCollateralGuarantee" content-position="left">抵质押信息</el-divider>
|
||||||
<el-row v-if="isCollateralGuarantee">
|
<el-row v-if="isCollateralGuarantee">
|
||||||
<el-col :span="12">
|
<template v-if="isMortgage">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="抵押物性质" prop="collateralNature">
|
||||||
|
<el-select v-model="form.collateralNature" placeholder="请选择抵押物性质" style="width: 100%">
|
||||||
|
<el-option v-for="item in collateralNatureOptions" :key="item" :label="item" :value="item"/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否属于九地" prop="isNineArea">
|
||||||
|
<div class="nine-area-control">
|
||||||
|
<el-select
|
||||||
|
v-model="form.isNineArea"
|
||||||
|
:disabled="!requiresNineArea"
|
||||||
|
:placeholder="requiresNineArea ? '请选择是否属于九地' : '无需选择'"
|
||||||
|
>
|
||||||
|
<el-option label="是" value="是"/>
|
||||||
|
<el-option label="否" value="否"/>
|
||||||
|
</el-select>
|
||||||
|
<el-tooltip content="九地是指绍兴、杭州、宁波、上海、北京、广州、深圳、南京、苏州" placement="top">
|
||||||
|
<i class="el-icon-question nine-area-help" tabindex="0" aria-label="查看九地说明"></i>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<el-col :span="12" v-if="isPledge">
|
||||||
<el-form-item label="抵质押类型" prop="collType">
|
<el-form-item label="抵质押类型" prop="collType">
|
||||||
<el-select v-model="form.collType" placeholder="请选择抵质押类型" style="width: 100%">
|
<el-select v-model="form.collType" placeholder="请选择抵质押类型" style="width: 100%">
|
||||||
<el-option v-for="item in collateralTypeOptions" :key="item" :label="item" :value="item"/>
|
<el-option v-for="item in collateralTypeOptions" :key="item" :label="item" :value="item"/>
|
||||||
@@ -181,6 +207,30 @@ export default {
|
|||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const validateCollateralType = (rule, value, callback) => {
|
||||||
|
if (this.isPledge && !value) {
|
||||||
|
callback(new Error('请选择抵质押类型'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateCollateralNature = (rule, value, callback) => {
|
||||||
|
if (this.isMortgage && !value) {
|
||||||
|
callback(new Error('请选择抵押物性质'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateNineArea = (rule, value, callback) => {
|
||||||
|
if (this.requiresNineArea && !value) {
|
||||||
|
callback(new Error('请选择是否属于九地'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
// 贷款期限验证
|
// 贷款期限验证
|
||||||
const validateLoanTerm = (rule, value, callback) => {
|
const validateLoanTerm = (rule, value, callback) => {
|
||||||
if (!value && value !== 0) {
|
if (!value && value !== 0) {
|
||||||
@@ -221,6 +271,8 @@ export default {
|
|||||||
isGreenLoan: false,
|
isGreenLoan: false,
|
||||||
isTradeBuildEnt: false,
|
isTradeBuildEnt: false,
|
||||||
collType: undefined,
|
collType: undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: false,
|
collThirdParty: false,
|
||||||
couponRate: undefined
|
couponRate: undefined
|
||||||
},
|
},
|
||||||
@@ -255,7 +307,13 @@ export default {
|
|||||||
{required: true, message: "请选择历史贷款合同", trigger: "change"}
|
{required: true, message: "请选择历史贷款合同", trigger: "change"}
|
||||||
],
|
],
|
||||||
collType: [
|
collType: [
|
||||||
{required: true, message: "请选择抵质押类型", trigger: "change"}
|
{validator: validateCollateralType, trigger: "change"}
|
||||||
|
],
|
||||||
|
collateralNature: [
|
||||||
|
{validator: validateCollateralNature, trigger: "change"}
|
||||||
|
],
|
||||||
|
isNineArea: [
|
||||||
|
{validator: validateNineArea, trigger: "change"}
|
||||||
],
|
],
|
||||||
couponRate: [
|
couponRate: [
|
||||||
{validator: validateCouponRate, trigger: "blur"}
|
{validator: validateCouponRate, trigger: "blur"}
|
||||||
@@ -275,6 +333,15 @@ export default {
|
|||||||
isCollateralGuarantee() {
|
isCollateralGuarantee() {
|
||||||
return this.form.guarType === '抵押' || this.form.guarType === '质押'
|
return this.form.guarType === '抵押' || this.form.guarType === '质押'
|
||||||
},
|
},
|
||||||
|
isMortgage() {
|
||||||
|
return this.form.guarType === '抵押'
|
||||||
|
},
|
||||||
|
isPledge() {
|
||||||
|
return this.form.guarType === '质押'
|
||||||
|
},
|
||||||
|
requiresNineArea() {
|
||||||
|
return this.isMortgage && ['普通住宅、土地、厂房', '商业性质不动产'].includes(this.form.collateralNature)
|
||||||
|
},
|
||||||
isStockTransfer() {
|
isStockTransfer() {
|
||||||
return this.form.businessType === '存量转贷'
|
return this.form.businessType === '存量转贷'
|
||||||
},
|
},
|
||||||
@@ -288,13 +355,13 @@ export default {
|
|||||||
return this.isEdit ? '编辑企业利率定价流程' : '新增企业利率定价流程'
|
return this.isEdit ? '编辑企业利率定价流程' : '新增企业利率定价流程'
|
||||||
},
|
},
|
||||||
collateralTypeOptions() {
|
collateralTypeOptions() {
|
||||||
if (this.form.guarType === '抵押') {
|
if (this.isPledge) {
|
||||||
return ['一类', '二类', '三类', '四类', '排污权抵押', '设备等其他不动产抵押']
|
|
||||||
}
|
|
||||||
if (this.form.guarType === '质押') {
|
|
||||||
return ['存单质押', '股权质押', '其他质押']
|
return ['存单质押', '股权质押', '其他质押']
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
|
},
|
||||||
|
collateralNatureOptions() {
|
||||||
|
return ['普通住宅、土地、厂房', '商业性质不动产', '排污权', '其他不动产']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -316,6 +383,12 @@ export default {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.resetCouponRateIfNotCertificatePledge()
|
this.resetCouponRateIfNotCertificatePledge()
|
||||||
|
},
|
||||||
|
'form.collateralNature'(val, oldVal) {
|
||||||
|
if (this.resettingForm || val === oldVal) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.handleCollateralNatureChange()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -353,7 +426,9 @@ export default {
|
|||||||
resCover: this.isOne(this.editData.resCover),
|
resCover: this.isOne(this.editData.resCover),
|
||||||
isGreenLoan: this.isOne(this.editData.isGreenLoan),
|
isGreenLoan: this.isOne(this.editData.isGreenLoan),
|
||||||
isTradeBuildEnt: this.isOne(this.editData.isTradeBuildEnt),
|
isTradeBuildEnt: this.isOne(this.editData.isTradeBuildEnt),
|
||||||
collType: this.editData.collType,
|
collType: this.editData.guarType === '质押' ? this.editData.collType : undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: this.isOne(this.editData.collThirdParty),
|
collThirdParty: this.isOne(this.editData.collThirdParty),
|
||||||
couponRate: this.editData.couponRate
|
couponRate: this.editData.couponRate
|
||||||
}
|
}
|
||||||
@@ -374,6 +449,8 @@ export default {
|
|||||||
isGreenLoan: false,
|
isGreenLoan: false,
|
||||||
isTradeBuildEnt: false,
|
isTradeBuildEnt: false,
|
||||||
collType: undefined,
|
collType: undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: false,
|
collThirdParty: false,
|
||||||
couponRate: undefined
|
couponRate: undefined
|
||||||
}
|
}
|
||||||
@@ -393,14 +470,38 @@ export default {
|
|||||||
/** 清空抵质押字段 */
|
/** 清空抵质押字段 */
|
||||||
resetCollateralFields() {
|
resetCollateralFields() {
|
||||||
this.form.collType = undefined
|
this.form.collType = undefined
|
||||||
|
this.form.collateralNature = undefined
|
||||||
|
this.form.isNineArea = undefined
|
||||||
this.form.collThirdParty = false
|
this.form.collThirdParty = false
|
||||||
this.resetCouponRateIfNotCertificatePledge()
|
this.resetCouponRateIfNotCertificatePledge()
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (this.$refs.form) {
|
if (this.$refs.form) {
|
||||||
this.$refs.form.clearValidate(['collType', 'collThirdParty', 'couponRate'])
|
this.$refs.form.clearValidate(['collType', 'collateralNature', 'isNineArea', 'collThirdParty', 'couponRate'])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
handleCollateralNatureChange() {
|
||||||
|
this.form.isNineArea = undefined
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.form) {
|
||||||
|
this.$refs.form.clearValidate(['isNineArea'])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
resolveMortgageCollateralType() {
|
||||||
|
if (this.form.collateralNature === '普通住宅、土地、厂房') {
|
||||||
|
return this.form.isNineArea === '是' ? '一类' : '二类'
|
||||||
|
}
|
||||||
|
if (this.form.collateralNature === '商业性质不动产') {
|
||||||
|
return this.form.isNineArea === '是' ? '二类' : '三类'
|
||||||
|
}
|
||||||
|
if (this.form.collateralNature === '排污权') {
|
||||||
|
return '排污权抵押'
|
||||||
|
}
|
||||||
|
if (this.form.collateralNature === '其他不动产') {
|
||||||
|
return '其他不动产抵押'
|
||||||
|
}
|
||||||
|
},
|
||||||
resetCouponRateIfNotCertificatePledge() {
|
resetCouponRateIfNotCertificatePledge() {
|
||||||
if (!this.isCertificatePledge) {
|
if (!this.isCertificatePledge) {
|
||||||
this.form.couponRate = undefined
|
this.form.couponRate = undefined
|
||||||
@@ -472,6 +573,11 @@ export default {
|
|||||||
isGreenLoan: this.form.isGreenLoan ? '1' : '0',
|
isGreenLoan: this.form.isGreenLoan ? '1' : '0',
|
||||||
isTradeBuildEnt: this.form.isTradeBuildEnt ? '1' : '0'
|
isTradeBuildEnt: this.form.isTradeBuildEnt ? '1' : '0'
|
||||||
}
|
}
|
||||||
|
if (this.isMortgage) {
|
||||||
|
data.collType = this.resolveMortgageCollateralType()
|
||||||
|
}
|
||||||
|
delete data.collateralNature
|
||||||
|
delete data.isNineArea
|
||||||
if (this.isCollateralGuarantee) {
|
if (this.isCollateralGuarantee) {
|
||||||
data.collThirdParty = this.form.collThirdParty ? '1' : '0'
|
data.collThirdParty = this.form.collThirdParty ? '1' : '0'
|
||||||
} else {
|
} else {
|
||||||
@@ -512,6 +618,24 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nine-area-control {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nine-area-control .el-select {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nine-area-help {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
color: #909399;
|
||||||
|
cursor: help;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 768px) {
|
@media screen and (max-width: 768px) {
|
||||||
.workflow-create-form .el-col {
|
.workflow-create-form .el-col {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
|
|||||||
@@ -87,7 +87,33 @@
|
|||||||
<!-- 抵质押信息 -->
|
<!-- 抵质押信息 -->
|
||||||
<el-divider v-if="isCollateralGuarantee" content-position="left">抵质押信息</el-divider>
|
<el-divider v-if="isCollateralGuarantee" content-position="left">抵质押信息</el-divider>
|
||||||
<el-row v-if="isCollateralGuarantee">
|
<el-row v-if="isCollateralGuarantee">
|
||||||
<el-col :span="12">
|
<template v-if="isMortgage">
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="抵押物性质" prop="collateralNature">
|
||||||
|
<el-select v-model="form.collateralNature" placeholder="请选择抵押物性质" style="width: 100%">
|
||||||
|
<el-option v-for="item in collateralNatureOptions" :key="item" :label="item" :value="item"/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
<el-col :span="12">
|
||||||
|
<el-form-item label="是否属于九地" prop="isNineArea">
|
||||||
|
<div class="nine-area-control">
|
||||||
|
<el-select
|
||||||
|
v-model="form.isNineArea"
|
||||||
|
:disabled="!requiresNineArea"
|
||||||
|
:placeholder="requiresNineArea ? '请选择是否属于九地' : '无需选择'"
|
||||||
|
>
|
||||||
|
<el-option label="是" value="是"/>
|
||||||
|
<el-option label="否" value="否"/>
|
||||||
|
</el-select>
|
||||||
|
<el-tooltip content="九地是指绍兴、杭州、宁波、上海、北京、广州、深圳、南京、苏州" placement="top">
|
||||||
|
<i class="el-icon-question nine-area-help" tabindex="0" aria-label="查看九地说明"></i>
|
||||||
|
</el-tooltip>
|
||||||
|
</div>
|
||||||
|
</el-form-item>
|
||||||
|
</el-col>
|
||||||
|
</template>
|
||||||
|
<el-col :span="12" v-if="isPledge">
|
||||||
<el-form-item label="抵质押类型" prop="collType">
|
<el-form-item label="抵质押类型" prop="collType">
|
||||||
<el-select v-model="form.collType" placeholder="请选择抵质押类型" style="width: 100%">
|
<el-select v-model="form.collType" placeholder="请选择抵质押类型" style="width: 100%">
|
||||||
<el-option v-for="item in collateralTypeOptions" :key="item" :label="item" :value="item"/>
|
<el-option v-for="item in collateralTypeOptions" :key="item" :label="item" :value="item"/>
|
||||||
@@ -168,6 +194,30 @@ export default {
|
|||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const validateCollateralType = (rule, value, callback) => {
|
||||||
|
if (this.isPledge && !value) {
|
||||||
|
callback(new Error('请选择抵质押类型'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateCollateralNature = (rule, value, callback) => {
|
||||||
|
if (this.isMortgage && !value) {
|
||||||
|
callback(new Error('请选择抵押物性质'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateNineArea = (rule, value, callback) => {
|
||||||
|
if (this.requiresNineArea && !value) {
|
||||||
|
callback(new Error('请选择是否属于九地'))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback()
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
loanTermOptions: [
|
loanTermOptions: [
|
||||||
'1', '2', '3', '4', '5', '6'
|
'1', '2', '3', '4', '5', '6'
|
||||||
@@ -192,6 +242,8 @@ export default {
|
|||||||
loanRateHistory: undefined,
|
loanRateHistory: undefined,
|
||||||
loanLoop: false,
|
loanLoop: false,
|
||||||
collType: undefined,
|
collType: undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: false,
|
collThirdParty: false,
|
||||||
couponRate: undefined
|
couponRate: undefined
|
||||||
},
|
},
|
||||||
@@ -226,7 +278,13 @@ export default {
|
|||||||
{required: true, message: "请选择历史贷款合同", trigger: "change"}
|
{required: true, message: "请选择历史贷款合同", trigger: "change"}
|
||||||
],
|
],
|
||||||
collType: [
|
collType: [
|
||||||
{required: true, message: "请选择抵质押类型", trigger: "change"}
|
{validator: validateCollateralType, trigger: "change"}
|
||||||
|
],
|
||||||
|
collateralNature: [
|
||||||
|
{validator: validateCollateralNature, trigger: "change"}
|
||||||
|
],
|
||||||
|
isNineArea: [
|
||||||
|
{validator: validateNineArea, trigger: "change"}
|
||||||
],
|
],
|
||||||
couponRate: [
|
couponRate: [
|
||||||
{validator: validateCouponRate, trigger: "blur"}
|
{validator: validateCouponRate, trigger: "blur"}
|
||||||
@@ -246,6 +304,15 @@ export default {
|
|||||||
isCollateralGuarantee() {
|
isCollateralGuarantee() {
|
||||||
return this.form.guarType === '抵押' || this.form.guarType === '质押'
|
return this.form.guarType === '抵押' || this.form.guarType === '质押'
|
||||||
},
|
},
|
||||||
|
isMortgage() {
|
||||||
|
return this.form.guarType === '抵押'
|
||||||
|
},
|
||||||
|
isPledge() {
|
||||||
|
return this.form.guarType === '质押'
|
||||||
|
},
|
||||||
|
requiresNineArea() {
|
||||||
|
return this.isMortgage && ['普通住宅、土地、厂房', '商业性质不动产'].includes(this.form.collateralNature)
|
||||||
|
},
|
||||||
isStockTransfer() {
|
isStockTransfer() {
|
||||||
return this.form.businessType === '存量转贷'
|
return this.form.businessType === '存量转贷'
|
||||||
},
|
},
|
||||||
@@ -259,13 +326,13 @@ export default {
|
|||||||
return this.isEdit ? '编辑个人利率定价流程' : '新增个人利率定价流程'
|
return this.isEdit ? '编辑个人利率定价流程' : '新增个人利率定价流程'
|
||||||
},
|
},
|
||||||
collateralTypeOptions() {
|
collateralTypeOptions() {
|
||||||
if (this.form.guarType === '抵押') {
|
if (this.isPledge) {
|
||||||
return ['一线', '一类', '二类', '三类']
|
|
||||||
}
|
|
||||||
if (this.form.guarType === '质押') {
|
|
||||||
return ['存单质押', '其他质押']
|
return ['存单质押', '其他质押']
|
||||||
}
|
}
|
||||||
return []
|
return []
|
||||||
|
},
|
||||||
|
collateralNatureOptions() {
|
||||||
|
return ['普通住宅、土地、厂房', '商业性质不动产', '其他抵押财产']
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
@@ -287,6 +354,12 @@ export default {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.resetCouponRateIfNotCertificatePledge()
|
this.resetCouponRateIfNotCertificatePledge()
|
||||||
|
},
|
||||||
|
'form.collateralNature'(val, oldVal) {
|
||||||
|
if (this.resettingForm || val === oldVal) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.handleCollateralNatureChange()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -322,7 +395,9 @@ export default {
|
|||||||
businessType: this.editData.businessType,
|
businessType: this.editData.businessType,
|
||||||
loanRateHistory: this.editData.loanRateHistory,
|
loanRateHistory: this.editData.loanRateHistory,
|
||||||
loanLoop: this.isOne(this.editData.loanLoop),
|
loanLoop: this.isOne(this.editData.loanLoop),
|
||||||
collType: this.editData.collType,
|
collType: this.editData.guarType === '质押' ? this.editData.collType : undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: this.isOne(this.editData.collThirdParty),
|
collThirdParty: this.isOne(this.editData.collThirdParty),
|
||||||
couponRate: this.editData.couponRate
|
couponRate: this.editData.couponRate
|
||||||
}
|
}
|
||||||
@@ -341,6 +416,8 @@ export default {
|
|||||||
loanRateHistory: undefined,
|
loanRateHistory: undefined,
|
||||||
loanLoop: false,
|
loanLoop: false,
|
||||||
collType: undefined,
|
collType: undefined,
|
||||||
|
collateralNature: undefined,
|
||||||
|
isNineArea: undefined,
|
||||||
collThirdParty: false,
|
collThirdParty: false,
|
||||||
couponRate: undefined
|
couponRate: undefined
|
||||||
}
|
}
|
||||||
@@ -360,14 +437,35 @@ export default {
|
|||||||
/** 清空抵质押字段 */
|
/** 清空抵质押字段 */
|
||||||
resetCollateralFields() {
|
resetCollateralFields() {
|
||||||
this.form.collType = undefined
|
this.form.collType = undefined
|
||||||
|
this.form.collateralNature = undefined
|
||||||
|
this.form.isNineArea = undefined
|
||||||
this.form.collThirdParty = false
|
this.form.collThirdParty = false
|
||||||
this.resetCouponRateIfNotCertificatePledge()
|
this.resetCouponRateIfNotCertificatePledge()
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
if (this.$refs.form) {
|
if (this.$refs.form) {
|
||||||
this.$refs.form.clearValidate(['collType', 'collThirdParty', 'couponRate'])
|
this.$refs.form.clearValidate(['collType', 'collateralNature', 'isNineArea', 'collThirdParty', 'couponRate'])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
handleCollateralNatureChange() {
|
||||||
|
this.form.isNineArea = undefined
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.form) {
|
||||||
|
this.$refs.form.clearValidate(['isNineArea'])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
resolveMortgageCollateralType() {
|
||||||
|
if (this.form.collateralNature === '普通住宅、土地、厂房') {
|
||||||
|
return this.form.isNineArea === '是' ? '一类' : '二类'
|
||||||
|
}
|
||||||
|
if (this.form.collateralNature === '商业性质不动产') {
|
||||||
|
return this.form.isNineArea === '是' ? '二类' : '三类'
|
||||||
|
}
|
||||||
|
if (this.form.collateralNature === '其他抵押财产') {
|
||||||
|
return '四类'
|
||||||
|
}
|
||||||
|
},
|
||||||
resetCouponRateIfNotCertificatePledge() {
|
resetCouponRateIfNotCertificatePledge() {
|
||||||
if (!this.isCertificatePledge) {
|
if (!this.isCertificatePledge) {
|
||||||
this.form.couponRate = undefined
|
this.form.couponRate = undefined
|
||||||
@@ -437,6 +535,11 @@ export default {
|
|||||||
...this.form,
|
...this.form,
|
||||||
loanLoop: this.form.loanLoop ? '1' : '0'
|
loanLoop: this.form.loanLoop ? '1' : '0'
|
||||||
}
|
}
|
||||||
|
if (this.isMortgage) {
|
||||||
|
data.collType = this.resolveMortgageCollateralType()
|
||||||
|
}
|
||||||
|
delete data.collateralNature
|
||||||
|
delete data.isNineArea
|
||||||
if (this.isCollateralGuarantee) {
|
if (this.isCollateralGuarantee) {
|
||||||
data.collThirdParty = this.form.collThirdParty ? '1' : '0'
|
data.collThirdParty = this.form.collThirdParty ? '1' : '0'
|
||||||
} else {
|
} else {
|
||||||
@@ -477,6 +580,24 @@ export default {
|
|||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nine-area-control {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nine-area-control .el-select {
|
||||||
|
flex: 1;
|
||||||
|
min-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nine-area-help {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
color: #909399;
|
||||||
|
cursor: help;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 768px) {
|
@media screen and (max-width: 768px) {
|
||||||
.workflow-create-form .el-col {
|
.workflow-create-form .el-col {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
|
|||||||
@@ -52,14 +52,33 @@ assert(
|
|||||||
|
|
||||||
assert(
|
assert(
|
||||||
personalCreateDialog.includes('collateralTypeOptions') &&
|
personalCreateDialog.includes('collateralTypeOptions') &&
|
||||||
personalCreateDialog.includes("return ['一线', '一类', '二类', '三类']") &&
|
|
||||||
personalCreateDialog.includes("return ['存单质押', '其他质押']"),
|
personalCreateDialog.includes("return ['存单质押', '其他质押']"),
|
||||||
'个人新增弹窗抵质押类型选项未按担保方式动态切换'
|
'个人新增弹窗应保留质押类型选项'
|
||||||
)
|
)
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
personalCreateDialog.includes('{required: true, message: "请选择抵质押类型", trigger: "change"}'),
|
personalCreateDialog.includes('label="抵押物性质"') &&
|
||||||
'个人新增弹窗抵质押类型应为必填'
|
personalCreateDialog.includes('prop="collateralNature"') &&
|
||||||
|
personalCreateDialog.includes("return ['普通住宅、土地、厂房', '商业性质不动产', '其他抵押财产']") &&
|
||||||
|
personalCreateDialog.includes('label="是否属于九地"') &&
|
||||||
|
personalCreateDialog.includes('九地是指绍兴、杭州、宁波、上海、北京、广州、深圳、南京、苏州') &&
|
||||||
|
personalCreateDialog.includes(':disabled="!requiresNineArea"') &&
|
||||||
|
personalCreateDialog.includes("'无需选择'"),
|
||||||
|
'个人新增弹窗缺少抵押物性质、九地选择或九地说明'
|
||||||
|
)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
personalCreateDialog.includes("return this.form.isNineArea === '是' ? '一类' : '二类'") &&
|
||||||
|
personalCreateDialog.includes("return this.form.isNineArea === '是' ? '二类' : '三类'") &&
|
||||||
|
personalCreateDialog.includes("return '四类'"),
|
||||||
|
'个人新增弹窗抵押物类型映射不完整'
|
||||||
|
)
|
||||||
|
|
||||||
|
assert(
|
||||||
|
personalCreateDialog.includes("if (this.isPledge && !value)") &&
|
||||||
|
personalCreateDialog.includes("if (this.isMortgage && !value)") &&
|
||||||
|
personalCreateDialog.includes("if (this.requiresNineArea && !value)"),
|
||||||
|
'个人新增弹窗缺少抵押和质押的条件校验'
|
||||||
)
|
)
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
@@ -68,6 +87,9 @@ assert(
|
|||||||
!personalCreateDialog.includes('bizProof:') &&
|
!personalCreateDialog.includes('bizProof:') &&
|
||||||
personalCreateDialog.includes("loanLoop: this.form.loanLoop ? '1' : '0'") &&
|
personalCreateDialog.includes("loanLoop: this.form.loanLoop ? '1' : '0'") &&
|
||||||
personalCreateDialog.includes("data.collThirdParty = this.form.collThirdParty ? '1' : '0'") &&
|
personalCreateDialog.includes("data.collThirdParty = this.form.collThirdParty ? '1' : '0'") &&
|
||||||
|
personalCreateDialog.includes('data.collType = this.resolveMortgageCollateralType()') &&
|
||||||
|
personalCreateDialog.includes('delete data.collateralNature') &&
|
||||||
|
personalCreateDialog.includes('delete data.isNineArea') &&
|
||||||
personalCreateDialog.includes('delete data.collType') &&
|
personalCreateDialog.includes('delete data.collType') &&
|
||||||
personalCreateDialog.includes('delete data.collThirdParty'),
|
personalCreateDialog.includes('delete data.collThirdParty'),
|
||||||
'个人新增弹窗开关字段或非抵质押提交字段处理不正确'
|
'个人新增弹窗开关字段或非抵质押提交字段处理不正确'
|
||||||
|
|||||||
Reference in New Issue
Block a user