Browse Source

Merge remote-tracking branch 'origin/master'

master
God 1 year ago
parent
commit
1a6ef15dc2
  1. 3
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempDto.java
  2. 69
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTemp.java
  3. 7
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java
  4. 5
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java
  5. 40
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CustomerSecondSalesDto.java
  6. 5
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java
  7. 37
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  8. 22
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  9. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRMapper.java
  10. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRMapper.xml
  11. 25
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRService.java
  12. 2
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  13. 36
      anrui-riskcenter-ui/src/api/secondarysales/secondarysales.js
  14. 44
      anrui-riskcenter-ui/src/router/index.js
  15. 84
      anrui-riskcenter-ui/src/views/secondarysales/secondarysales.vue
  16. 469
      anrui-riskcenter-ui/src/views/secondarysales/secondarysalesAdd.vue
  17. 470
      anrui-riskcenter-ui/src/views/secondarysales/secondarysalesInfo.vue
  18. 709
      anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesByPGJ.vue
  19. 694
      anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesDaiBan.vue
  20. 651
      anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesEdit.vue
  21. 478
      anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesYiBan.vue
  22. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyDetailsVo.java
  23. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyDto.java
  24. 14
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyFeign.java
  25. 74
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesCostAppVo.java
  26. 22
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesVehAppVo.java
  27. 88
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/SecondarySalesAppVo.java
  28. 3
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/flowable/LoanSecondarySalesApplyNodeQuery.java
  29. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescost/LoanSecondarySalesCostVo.java
  30. 35
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomer.java
  31. 38
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerDto.java
  32. 31
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerFeign.java
  33. 12
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerFeignFallback.java
  34. 48
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/SalesInitVo.java
  35. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/LoanSecondarySalesVeh.java
  36. 2
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/LoanSecondarySalesVehVo.java
  37. 22
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.xml
  38. 25
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.xml
  39. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java
  40. 51
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.xml
  41. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyRest.java
  42. 189
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java
  43. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostMapper.java
  44. 9
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostMapper.xml
  45. 25
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostService.java
  46. 15
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerMapper.java
  47. 10
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerMapper.xml
  48. 34
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerRest.java
  49. 109
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerService.java
  50. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.java
  51. 13
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml
  52. 5
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java
  53. 2
      anrui-system-ui/src/views/flow/havereadList.vue
  54. 67
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/base/common/ItemEditTextInfoCommon.java
  55. 19
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondSalesInitVo.java
  56. 98
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesAppVos.java
  57. 100
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesCostAppVo.java
  58. 64
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesFeign.java
  59. 12
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesFeignFallback.java
  60. 22
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesVehAppVo.java
  61. 24
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesDelegateQuery.java
  62. 38
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesDto.java
  63. 23
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesQuery.java
  64. 45
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesTaskQuery.java
  65. 68
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/secondarysales/SecondarySalesRest.java
  66. 252
      anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/secondarysales/SecondarySalesService.java
  67. 31
      doc/databases/risk_center.sql

3
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempDto.java

@ -163,4 +163,7 @@ public class AppCrmCustomerTempDto implements Dto {
@ApiModelProperty("身份证正反面")
private List<String> filePaths = Collections.emptyList();
@ApiModelProperty("证件地址")
private String certificateAddress;
}

69
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTemp.java

@ -25,79 +25,79 @@ import lombok.Data;
public class CrmCustomerTemp extends BaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty("客户编号(部门编码+客户类型(1位,0个人,1企业)+部门内部流水号(6位))")
private String customerNo;
@ApiModelProperty("客户类型(自然人/法人)")
private String customerType;
@ApiModelProperty("客户类型key")
private String customerTypeKey;
@ApiModelProperty("客户分类(个人:司机/个体老板/其他。企业:企业型客户/一级经销商/二级经销商/终端物流客户)")
private String customerClass;
@ApiModelProperty("客户分类key")
private String customerClassKey;
@ApiModelProperty("客户来源(公司资源/自主开发/交接客户/转介绍客户/集团内销)")
private String source;
@ApiModelProperty("客户来源key")
private String sourceKey;
@ApiModelProperty("客户级别(意向客户/准客户/成交客户/集团内销/黑名单客户)")
private String level;
@ApiModelProperty("客户级别key")
private String levelKey;
@ApiModelProperty("客户名称")
private String name;
@ApiModelProperty("证件类型key")
private String certificateTypeKey;
@ApiModelProperty("证件类型(个人为身份证/企业为营业执照)")
private String certificateType;
@ApiModelProperty("证件号码(个人为身份证号/企业为统一社会信用代码)")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("行政区划代码(省)")
private String address_province;
@ApiModelProperty("行政区划代码(市)")
private String address_city;
@ApiModelProperty("行政区划代码(县)")
private String address_county;
@ApiModelProperty("省")
private String province;
@ApiModelProperty("市")
private String city;
@ApiModelProperty("县")
private String county;
@ApiModelProperty("详细地址")
private String address;
@ApiModelProperty("邮编")
private String zipCode;
@ApiModelProperty("电子邮箱")
private String e_mail;
@ApiModelProperty("联系人")
private String contacts;
@ApiModelProperty("联系电话")
private String mobile;
@ -106,16 +106,16 @@ public class CrmCustomerTemp extends BaseEntity {
@ApiModelProperty("紧急联系电话")
private String emergencyMobile;
@ApiModelProperty("微信号码")
private String weixin;
@ApiModelProperty("业务人员sid")
private String staffSid;
@ApiModelProperty("创建组织sid")
private String createOrgSid;
@ApiModelProperty("性别")
private String sex;
@ -124,13 +124,13 @@ public class CrmCustomerTemp extends BaseEntity {
@ApiModelProperty("生日")
private String birthday;
@ApiModelProperty("所在公司名称")
private String companyName;
@ApiModelProperty("跟进状态key")
private String follow_state_key;
@ApiModelProperty("跟进状态")
private String follow_state;
@ -139,13 +139,13 @@ public class CrmCustomerTemp extends BaseEntity {
@ApiModelProperty("是否开启提醒(1开启,0不开启)")
private String isOnRemind;
@ApiModelProperty("提醒日期")
private String remind_day;
@ApiModelProperty("提醒备注")
private String remind_remark;
@ApiModelProperty("客户头像")
private String customerPhoto;
@ -154,4 +154,7 @@ public class CrmCustomerTemp extends BaseEntity {
@ApiModelProperty("见面方式(到店/电话/拜访)")
private String visitWay;
@ApiModelProperty("证件地址")
private String certificateAddress;
}

7
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeign.java

@ -98,6 +98,7 @@ public interface CrmCustomerTempFeign {
/**
* 客户列表导出
*
* @param crmCustomerTempQuery
*/
@PostMapping("/exportExcel")
@ -221,5 +222,9 @@ public interface CrmCustomerTempFeign {
@ApiOperation("根据客户sid修改身份证号码")
@PostMapping("/updateIdBySid")
ResultBean updateIdBySid(@RequestParam("idCard") String idCard,@RequestParam("custSid") String custSid);
ResultBean updateIdBySid(@RequestParam("idCard") String idCard, @RequestParam("custSid") String custSid);
@ApiOperation("新增或更新客户信息")
@PostMapping("/updateTemp")
ResultBean<String> updateTemp(@RequestBody CustomerSecondSalesDto dto);
}

5
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CrmCustomerTempFeignFallback.java

@ -175,5 +175,10 @@ public class CrmCustomerTempFeignFallback implements CrmCustomerTempFeign {
return null;
}
@Override
public ResultBean<String> updateTemp(CustomerSecondSalesDto dto) {
return null;
}
}

40
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/CustomerSecondSalesDto.java

@ -0,0 +1,40 @@
package com.yxt.anrui.crm.api.crmcustomertemp;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Data
public class CustomerSecondSalesDto implements Dto {
private static final long serialVersionUID = -1955772984622113809L;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("客户类型")
private String customerType;
private String customerTypeKey;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("证件类型")
private String certificateTypeKey;
private String certificateType;
@ApiModelProperty("证件号码")
@JsonProperty("IDNumber")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("证件地址")
private String certificateAddress;
private String userSid;
private String orgPath;
}

5
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempRest.java

@ -352,5 +352,10 @@ public class CrmCustomerTempRest implements CrmCustomerTempFeign {
return rb.success();
}
@Override
public ResultBean<String> updateTemp(CustomerSecondSalesDto dto) {
return crmCustomerTempService.updateTemp(dto);
}
}

37
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java

@ -1158,7 +1158,7 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
String dtoSid = dto.getSid();
//手机号
String phone = dto.getPhone();
if (StringUtils.isNotBlank(phone)){
if (StringUtils.isNotBlank(phone)) {
if (!phone.matches("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$")) {
return rb.setMsg("手机号格式不正确");
}
@ -1318,4 +1318,39 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
// }
return records;
}
public ResultBean<String> updateTemp(CustomerSecondSalesDto dto) {
ResultBean<String> rb = ResultBean.fireFail();
AppCrmCustomerTempDto appCrmCustomerTempDto = new AppCrmCustomerTempDto();
if(StringUtils.isNotBlank(dto.getCustomerSid())){
CrmCustomerTemp customerTemp = fetchBySid(dto.getCustomerSid());
BeanUtils.copyProperties(customerTemp,appCrmCustomerTempDto);
appCrmCustomerTempDto.setSid(dto.getCustomerSid());
appCrmCustomerTempDto.setCertificateTypeKey(dto.getCertificateTypeKey());
appCrmCustomerTempDto.setCertificateType(dto.getCertificateType());
appCrmCustomerTempDto.setIDNumber(dto.getIDNumber());
appCrmCustomerTempDto.setEndDate(dto.getEndDate());
appCrmCustomerTempDto.setCertificateAddress(dto.getCertificateAddress());
appCrmCustomerTempDto.setUserSid(dto.getUserSid());
}else{
appCrmCustomerTempDto.setSid(dto.getCustomerSid());
appCrmCustomerTempDto.setName(dto.getCustomerName());
appCrmCustomerTempDto.setMobile(dto.getMobile());
appCrmCustomerTempDto.setCertificateTypeKey(dto.getCertificateTypeKey());
appCrmCustomerTempDto.setCertificateType(dto.getCertificateType());
appCrmCustomerTempDto.setCustomerType(dto.getCustomerType());
appCrmCustomerTempDto.setCustomerTypeKey(dto.getCustomerTypeKey());
appCrmCustomerTempDto.setIDNumber(dto.getIDNumber());
appCrmCustomerTempDto.setEndDate(dto.getEndDate());
appCrmCustomerTempDto.setCertificateAddress(dto.getCertificateAddress());
appCrmCustomerTempDto.setUserSid(dto.getUserSid());
appCrmCustomerTempDto.setOrgPath(dto.getOrgPath());
}
ResultBean<String> resultBean = saveOrUpdateAppCustomerTemp(appCrmCustomerTempDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
}

22
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java

@ -3882,17 +3882,17 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
}
//认资金占用费消减平台资金占用费
if (v.getReceivablesName().equals("资金占用费")) {
FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(jr.getBusSid()).getData();
if (planDetails != null) {
if (planDetails.getFund() != null) {
BigDecimal fund = planDetails.getFund();
String subscriptionMoney = v.getSubscriptionMoney();
BigDecimal subtract = fund.subtract(new BigDecimal(subscriptionMoney));
planDetails.setFund(subtract);
loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
}
}
// FinUncollectedReceivablesDetailedJR jr = finUncollectedReceivablesDetailedJRService.fetchBySid(v.getReceivablesSid());
// LoanRepaymentPlanDetails planDetails = loanRepaymentPlanDetailsFeign.fetchDetails(jr.getBusSid()).getData();
// if (planDetails != null) {
// if (planDetails.getFund() != null) {
// BigDecimal fund = planDetails.getFund();
// String subscriptionMoney = v.getSubscriptionMoney();
// BigDecimal subtract = fund.subtract(new BigDecimal(subscriptionMoney));
// planDetails.setFund(subtract);
// loanRepaymentPlanDetailsFeign.updateByEntity(planDetails);
// }
// }
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();

3
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRMapper.java

@ -36,6 +36,7 @@ import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.*;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.DetailsOfReceivablesAndUncollectedItemsJRVo;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRQuery;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -86,4 +87,6 @@ public interface FinUncollectedReceivablesDetailedJRMapper extends BaseMapper<Fi
@Param("purchaseSystemSid") String purchaseSystemSid);
FinUncollectedReceivablesDetailedJR selectByType(@Param("sid") String sid, @Param("type") String type);
LoanRepaymentPlanDetails selectDetails(String sid);
}

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRMapper.xml

@ -349,4 +349,9 @@
resultType="com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJR">
select * from anrui_fin.fin_uncollected_receivables_detailed_jr where busSid = #{sid} and payCostTitleValue = #{type}
</select>
<select id="selectDetails"
resultType="com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails">
select * from anrui_riskcenter.loan_repayment_plan_details where sid = #{sid}
</select>
</mapper>

25
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailedjr/FinUncollectedReceivablesDetailedJRService.java

@ -35,6 +35,7 @@ import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedR
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailedjr.FinUncollectedReceivablesDetailedJRQuery;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.riskcenter.api.loanrepaymentplandetails.LoanRepaymentPlanDetails;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.core.result.ResultBean;
@ -135,9 +136,27 @@ public class FinUncollectedReceivablesDetailedJRService extends MybatisBaseServi
public ResultBean updateAll(String sid, String type, BigDecimal fundDay) {
ResultBean rb = ResultBean.fireFail();
FinUncollectedReceivablesDetailedJR finUncollectedReceivablesDetailedJR = baseMapper.selectByType(sid, type);
BigDecimal bigDecimal =finUncollectedReceivablesDetailedJR.getReveivableMoney().add(fundDay);
finUncollectedReceivablesDetailedJR.setReveivableMoney(bigDecimal);
baseMapper.updateById(finUncollectedReceivablesDetailedJR);
if (finUncollectedReceivablesDetailedJR == null) {
LoanRepaymentPlanDetails planDetails = baseMapper.selectDetails(sid);
FinUncollectedReceivablesDetailedJR jr = new FinUncollectedReceivablesDetailedJR();
jr.setBusSid(planDetails.getSid());
jr.setReveivableMoney(fundDay);
jr.setPayCostTitleKey("006");
jr.setPayCostTitleValue("资金占用费");
jr.setOrgSidPath(planDetails.getOrgSidPath());
jr.setUseOrgName(planDetails.getUseOrgName());
jr.setUseOrgSid(planDetails.getUseOrgSid());
jr.setStaffDeptName(planDetails.getDept());
jr.setStaffName(planDetails.getStaffName());
jr.setStaffDeptSid(planDetails.getDeptSid());
jr.setStaffUserSid(planDetails.getSalesUserSid());
baseMapper.insert(jr);
} else {
BigDecimal bigDecimal = finUncollectedReceivablesDetailedJR.getReveivableMoney().add(fundDay);
finUncollectedReceivablesDetailedJR.setReveivableMoney(bigDecimal);
baseMapper.updateById(finUncollectedReceivablesDetailedJR);
}
return rb.success();
}
}

2
anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java

@ -74,7 +74,7 @@ public enum ProcDefEnum {
LOANRETUENINBOUNDAPPLY("交回车辆入库申请", "process_h0i1vnn8:1:7945004"),
LOANSUBLETAPPLY("交回车辆二次转租申请", "process_lu7pdwzs:1:7940004"),
LOANOUTBOUNDVEHAPPLY("交回车辆出库申请", "process_14spbdx8:1:7982504"),
LOANSECONDSALEAPPLY("交车车辆二次销售申请", "process_6kb1z0pe:3:8060012"),
LOANSECONDSALEAPPLY("交车车辆二次销售申请", "process_6kb1z0pe:4:8110004"),
/******************************测试流程id*********************************************/

36
anrui-riskcenter-ui/src/api/secondarysales/secondarysales.js

@ -4,7 +4,7 @@ export default {
// 查询分页列表
listPage: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/listPage',
url: '/riskcenter/v1/LoanSecondarySalesApply/listPage',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -20,29 +20,23 @@ export default {
},
saveOrUpdate: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/saveSublet',
url: '/riskcenter/v1/LoanSecondarySalesApply/saveOrUpdate',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
init: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/subletInit',
method: 'get',
params: data
})
},
fetchBySid: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/subletDetails',
method: 'get',
params: data
url: '/riskcenter/v1/LoanSecondarySalesApply/details',
method: 'POST',
data: data,
headers: { 'Content-Type': 'application/json' }
})
},
deleteBySids: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/deleteBySids',
url: '/riskcenter/v1/LoanSecondarySalesApply/delBySids',
method: 'DELETE',
data: data,
headers: { 'Content-Type': 'application/json' }
@ -59,7 +53,7 @@ export default {
// 提交流程
submit: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/submit',
url: '/riskcenter/v1/LoanSecondarySalesApply/submitApply',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -68,7 +62,7 @@ export default {
// 流程审批(同意)
complete: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/complete',
url: '/riskcenter/v1/LoanSecondarySalesApply/complete',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -77,7 +71,7 @@ export default {
// 流程审批(加签)
delegate: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/delegate',
url: '/riskcenter/v1/LoanSecondarySalesApply/delegate',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -86,7 +80,7 @@ export default {
// 流程审批(驳回)
reject: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/reject',
url: '/riskcenter/v1/LoanSecondarySalesApply/reject',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -95,7 +89,7 @@ export default {
// 流程审批(终止)
breakProcess: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/breakProcess',
url: '/riskcenter/v1/LoanSecondarySalesApply/breakProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -104,7 +98,7 @@ export default {
// 流程审批(撤回)
revokeProcess: function(params) {
return request({
url: '/riskcenter/v1/loansubletapply/revokeProcess',
url: '/riskcenter/v1/LoanSecondarySalesApply/revokeProcess',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
@ -113,7 +107,7 @@ export default {
// 审批流程(同意)获取下一环节
getNextNodesForSubmit: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/getNextNodesForSubmit',
url: '/riskcenter/v1/LoanSecondarySalesApply/getNextNodesForSubmit',
method: 'get',
params: data
})
@ -121,7 +115,7 @@ export default {
// 审批流程(驳回)获取上一环节
getPreviousNodesForReject: function(data) {
return request({
url: '/riskcenter/v1/loansubletapply/getPreviousNodesForReject',
url: '/riskcenter/v1/LoanSecondarySalesApply/getPreviousNodesForReject',
method: 'get',
params: data
})

44
anrui-riskcenter-ui/src/router/index.js

@ -631,6 +631,22 @@ export const constantRoutes = [
}
]
},
{
path: '/secondarysales',
component: Layout,
redirect: '/secondarysales',
meta: {
title: '交回车辆二次销售'
},
children: [
{
path: '/secondarysales/secondarysales',
component: () => import('@/views/secondarysales/secondarysales.vue'),
name: 'SecondarySales',
meta: { title: '交回车辆二次销售', noCache: true }
}
]
},
{
path: '/secondarysublet',
component: Layout,
@ -1060,6 +1076,34 @@ export const constantRoutes = [
import('@/views/workFlow/jiaohuishuhuiFlow/surrenderforredemptionYiBan.vue'),
name: 'SurrenderForRedemptionYiBan'
},
// 交回车辆二次销售申请管理--编辑
{
path: '/ercixiaoshouFlow/secondarysalesEdit',
component: () =>
import('@/views/workFlow/ercixiaoshouFlow/secondarysalesEdit.vue'),
name: 'SecondarySalesEdit'
},
// 交回车辆二次销售申请管理--待办
{
path: '/ercixiaoshouFlow/secondarysalesDaiBan',
component: () =>
import('@/views/workFlow/ercixiaoshouFlow/secondarysalesDaiBan.vue'),
name: 'SecondarySalesDaiBan'
},
// 交回车辆二次销售申请管理--待办--风控中心处置岗填写车辆评估价
{
path: '/ercixiaoshouFlow/secondarysalesByPGJ',
component: () =>
import('@/views/workFlow/ercixiaoshouFlow/secondarysalesByPGJ.vue'),
name: 'SecondarySalesByPGJ'
},
// 交回车辆二次销售申请管理--已办
{
path: '/ercixiaoshouFlow/secondarysalesYiBan',
component: () =>
import('@/views/workFlow/ercixiaoshouFlow/secondarysalesYiBan.vue'),
name: 'SecondarySalesYiBan'
},
// 交回车辆二次转租申请管理--编辑
{
path: '/ercizhuanzuFlow/secondarysubletEdit',

84
anrui-riskcenter-ui/src/views/secondarysales/secondarysales.vue

@ -10,23 +10,23 @@
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="分公司">
<el-input v-model="listQuery.params.company" placeholder="" clearable/>
<el-input v-model="listQuery.params.useOrgName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请部门">
<el-input v-model="listQuery.params.dept" placeholder="" clearable/>
<el-input v-model="listQuery.params.createDept" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请人">
<el-input v-model="listQuery.params.applyName" placeholder="" clearable/>
<el-input v-model="listQuery.params.createByName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请日期">
<el-date-picker v-model="listQuery.params.applyStartDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.createTimeStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.applyEndDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.createTimeEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="办结日期">
<el-date-picker v-model="listQuery.params.closingStartDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.closeDateStart" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.closingEndDate" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
<el-date-picker v-model="listQuery.params.closeDateEnd" value-format="yyyy-MM-dd" format="yyyy-MM-dd" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="贷款合同编号">
<el-input v-model="listQuery.params.loanContractNo" placeholder="" clearable/>
@ -41,13 +41,13 @@
<el-input v-model="listQuery.params.bankContractNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customer" placeholder="" clearable/>
<el-input v-model="listQuery.params.customerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="贷款人">
<el-input v-model="listQuery.params.borrowerName" placeholder="" clearable/>
<el-input v-model="listQuery.params.loanName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="欠款合计">
<el-input v-model="listQuery.params.borrowerName" placeholder="" clearable/>
<el-input v-model="listQuery.params.arrearsAll" placeholder="" clearable/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
@ -80,27 +80,27 @@
</el-table-column>
<el-table-column label="分公司" align="center" width="130">
<template slot-scope="scope">
<span>{{ scope.row.company }}</span>
<span>{{ scope.row.useOrgName }}</span>
</template>
</el-table-column>
<el-table-column label="申请部门" align="center" width="130">
<template slot-scope="scope">
<span>{{ scope.row.dept }}</span>
<span>{{ scope.row.createDept }}</span>
</template>
</el-table-column>
<el-table-column label="申请人" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.applyName }}</span>
<span>{{ scope.row.createByName }}</span>
</template>
</el-table-column>
<el-table-column label="申请日期" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.applyDate }}</span>
<span>{{ scope.row.createDate }}</span>
</template>
</el-table-column>
<el-table-column label="办结日期" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.closingDate }}</span>
<span>{{ scope.row.closeDate }}</span>
</template>
</el-table-column>
<el-table-column label="贷款合同编号" align="center" width="160">
@ -108,12 +108,12 @@
<span>{{ scope.row.loanContractNo }}</span>
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="120">
<el-table-column label="车架号" align="center" min-width="120">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="车牌号" align="center" width="120">
<el-table-column label="车牌号" align="center" min-width="120">
<template slot-scope="scope">
<span>{{ scope.row.vehMark }}</span>
</template>
@ -130,27 +130,27 @@
</el-table-column>
<el-table-column label="客户名称" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.customer }}</span>
<span>{{ scope.row.customerName }}</span>
</template>
</el-table-column>
<el-table-column label="贷款人" align="center" min-width="100">
<el-table-column label="贷款人" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.borrowerName }}</span>
<span>{{ scope.row.loanName }}</span>
</template>
</el-table-column>
<el-table-column label="欠款合计" align="center" width="120">
<template slot-scope="scope">
<span>{{ scope.row.amount }}</span>
<span>{{ scope.row.arrearsAll }}</span>
</template>
</el-table-column>
<el-table-column label="车辆售价" align="center" width="120">
<template slot-scope="scope">
<span>{{ scope.row.amount }}</span>
<span>{{ scope.row.vehPrice }}</span>
</template>
</el-table-column>
<el-table-column label="预计亏损金额" align="center" width="140">
<template slot-scope="scope">
<span>{{ scope.row.amount }}</span>
<span>{{ scope.row.lossPrice }}</span>
</template>
</el-table-column>
</el-table>
@ -272,20 +272,21 @@ export default {
size: 5,
total: 0,
params: {
applyEndDate: '',
applyName: '',
applyStartDate: '',
bankContractNo: '',
bankName: '',
borrowerName: '',
closingEndDate: '',
closingStartDate: '',
company: '',
customer: '',
dept: '',
closeDateEnd: '',
closeDateStart: '',
createTimeEnd: '',
createTimeStart: '',
createByName: '',
createDept: '',
customerName: '',
loanContractNo: '',
loanName: '',
menuUrl: '',
orgPath: '',
arrearsAll: '',
useOrgName: '',
userSid: '',
vehMark: '',
vinNo: ''
@ -413,20 +414,21 @@ export default {
size: 5,
total: 0,
params: {
applyEndDate: '',
applyName: '',
applyStartDate: '',
bankContractNo: '',
bankName: '',
borrowerName: '',
closingEndDate: '',
closingStartDate: '',
company: '',
customer: '',
dept: '',
closeDateEnd: '',
closeDateStart: '',
createTimeEnd: '',
createTimeStart: '',
createByName: '',
createDept: '',
customerName: '',
loanContractNo: '',
loanName: '',
menuUrl: '',
orgPath: '',
arrearsAll: '',
useOrgName: '',
userSid: '',
vehMark: '',
vinNo: ''

469
anrui-riskcenter-ui/src/views/secondarysales/secondarysalesAdd.vue

@ -14,25 +14,25 @@
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.dept }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.applyDate }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customer }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.borrowerName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
@ -50,66 +50,78 @@
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.location }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.vinList" :index="index" border style="width: 100%">
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" width="80" align="center">
<template slot-scope="scope">
<el-button size="small" v-if="scope.row.vehType !== '主车'" type="danger" @click="delete(scope.$index)">删除</el-button>
<el-button size="small" type="danger" @click="delete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="vehModel" label="车型" align="center" min-width="130"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div>车辆状况</div>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.inspect">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">年检情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.inspectSituation" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.guaranteed">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">保险情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.insuranceSituation" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.kilometerDriven" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他况说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
<div class="span-sty">其他况说明</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.illustrate" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
@ -141,24 +153,150 @@
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div>费用说明</div>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.vehPrice" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.collectionCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">风控中心车辆评估价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleEvaluation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.bankSettleCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.bankSettleCostAssumeKey" placeholder="请选择" clearable filterable @change="bankSettleCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.vehicleViolationCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.vehicleViolationCostAssumeKey" placeholder="请选择" clearable filterable @change="vehicleViolationCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.inspectYearCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.inspectYearCostAssumeKey" placeholder="请选择" clearable filterable @change="inspectYearCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.insureCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.insureCostAssumeKey" placeholder="请选择" clearable filterable @change="insureCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.ownershipCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.ownershipCostAssumeKey" placeholder="请选择" clearable filterable @change="ownershipCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.stopCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.stopCostAssumeKey" placeholder="请选择" clearable filterable @change="stopCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.otherCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.otherCostAssumeKey" placeholder="请选择" clearable filterable @change="otherCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">费用说明</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.loanSecondarySalesCost.costDescription" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><el-input class="addinputInfo" style="width: 15%" @keyup.native="UpNumber" v-model="formobj.amount" clearable placeholder=""/></el-form-item>
<el-form-item><span class="addinputInfo">{{ lossPrice() }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.plan" clearable placeholder=""/></el-form-item>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.loanSecondarySalesCost.debtDisposal" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<uploadImg ref="uploadImg" class="addinputInfo" v-model="formobj.files" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
<uploadImg ref="uploadImg" class="addinputInfo" v-model="formobj.loanSecondarySalesCost.files" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
@ -171,12 +309,13 @@
</template>
<script>
import req from '@/api/surrenderforredemption/surrenderforredemption'
import req from '@/api/secondarysales/secondarysales'
import { typeValues } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
import financialschemeInfo from '@/components/publicPage/financialschemeInfo'
export default {
name: 'SurrenderForRedemptionAdd',
name: 'SecondarySalesAdd',
components: {
uploadImg,
financialschemeInfo
@ -188,38 +327,74 @@ export default {
submitdisabled: false,
tableKey: 1,
index: 0,
bearer_list: [],
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
amount: '',
applyDate: '',
applyName: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
borrowerName: '',
busVinSid: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customer: '',
dept: '',
deptSid: '',
fees: '',
feesShows: '',
files: [],
instanceId: '',
ledgerSid: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
location: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
bankSettleCostAssumeKey: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
inspectYearCostAssumeKey: '',
insureCost: '',
insureCostAssume: '',
insureCostAssumeKey: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
otherCostAssumeKey: '',
ownershipCost: '',
ownershipCostAssume: '',
ownershipCostAssumeKey: '',
stopCost: '',
stopCostAssume: '',
stopCostAssumeKey: '',
vehPrice: '',
vehicleEvaluation: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: '',
vehicleViolationCostAssumeKey: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
plan: '',
rksqSid: '',
procInstId: '',
salesOrderSid: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
vinList: [],
wheFundOccMoney: ''
},
rules: {}
@ -237,46 +412,149 @@ export default {
e.target.value = parseFloat(e.target.value)
}
},
init() {
typeValues({ type: 'costAssume' }).then((resp) => {
if (resp.success) {
this.bearer_list = resp.data
}
})
},
showAdd(row) {
this.viewTitle = '【新增】交回车辆赎回申请'
this.viewTitle = '【新增】交回车辆二次销售申请'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.redemptionInit({ ledgerSid: row.ledgerSid }).then((resp) => {
this.init()
const aa = []
aa.push(row.ledgerSid)
req.fetchBySid({ chooseSidList: aa, orgPath: window.sessionStorage.getItem('defaultOrgPath'), sid: '', userSid: window.sessionStorage.getItem('userSid') }).then((resp) => {
if (resp.success) {
this.formobj = resp.data
this.formobj.applyName = window.sessionStorage.getItem('name')
this.formobj.dept = window.sessionStorage.getItem('defaultOrgPathName').substring(window.sessionStorage.getItem('defaultOrgPathName').lastIndexOf('/') + 1)
this.formobj.deptSid = window.sessionStorage.getItem('defaultOrgPath').substring(window.sessionStorage.getItem('defaultOrgPath').lastIndexOf('/') + 1)
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.orgPath = window.sessionStorage.getItem('defaultOrgPath')
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
this.formobj.applyDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
}
})
},
showEdit(row) {
this.viewTitle = '【编辑】交回车辆赎回申请'
this.viewTitle = '【编辑】交回车辆二次销售申请'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ sid: row.sid }).then((res) => {
this.init()
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: row.sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.instanceId = res.data.procInstId
}
})
},
lookFinancial() {
this.viewState = 2
// this.$refs['divFinancial'].showInfo({ saleVehSid: this.formobj.busVinSid })
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
delete(index) {
this.formobj.vinList.splice(index, 1)
this.formobj.loanSecondarySalesVehVoList.splice(index, 1)
},
bankSettleCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.bankSettleCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.bankSettleCostAssume = ''
}
},
vehicleViolationCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume = ''
}
},
inspectYearCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.inspectYearCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.inspectYearCostAssume = ''
}
},
insureCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.insureCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.insureCostAssume = ''
}
},
ownershipCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.ownershipCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.ownershipCostAssume = ''
}
},
stopCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.stopCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.stopCostAssume = ''
}
},
otherCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.otherCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.otherCostAssume = ''
}
},
// = - - - -
lossPrice() {
let money = '0'
money = parseFloat(this.formobj.loanSecondarySalesCost.arrearsAll) - parseFloat(this.formobj.loanSecondarySalesCost.loanDeposit)
//
if (this.formobj.loanSecondarySalesCost.vehPrice !== '') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.vehPrice)
}
//
if (this.formobj.loanSecondarySalesCost.collectionCost !== '') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.collectionCost)
}
//
if (this.formobj.loanSecondarySalesCost.bankSettleCost !== '' && this.formobj.loanSecondarySalesCost.bankSettleCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.bankSettleCost)
}
//
if (this.formobj.loanSecondarySalesCost.vehicleViolationCost !== '' && this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.vehicleViolationCost)
}
//
if (this.formobj.loanSecondarySalesCost.inspectYearCost !== '' && this.formobj.loanSecondarySalesCost.inspectYearCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.inspectYearCost)
}
//
if (this.formobj.loanSecondarySalesCost.insureCost !== '' && this.formobj.loanSecondarySalesCost.insureCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.insureCost)
}
//
if (this.formobj.loanSecondarySalesCost.ownershipCost !== '' && this.formobj.loanSecondarySalesCost.ownershipCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.ownershipCost)
}
//
if (this.formobj.loanSecondarySalesCost.stopCost !== '' && this.formobj.loanSecondarySalesCost.stopCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.stopCost)
}
//
if (this.formobj.loanSecondarySalesCost.otherCost !== '' && this.formobj.loanSecondarySalesCost.otherCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.otherCost)
}
this.formobj.loanSecondarySalesCost.lossPrice = money
return money
},
resetState() {
this.viewState = 1
@ -320,35 +598,70 @@ export default {
this.formobj = {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
amount: '',
applyDate: '',
applyName: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
borrowerName: '',
busVinSid: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customer: '',
dept: '',
deptSid: '',
fees: '',
feesShows: '',
files: [],
instanceId: '',
ledgerSid: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
location: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
bankSettleCostAssumeKey: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
inspectYearCostAssumeKey: '',
insureCost: '',
insureCostAssume: '',
insureCostAssumeKey: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
otherCostAssumeKey: '',
ownershipCost: '',
ownershipCostAssume: '',
ownershipCostAssumeKey: '',
stopCost: '',
stopCostAssume: '',
stopCostAssumeKey: '',
vehPrice: '',
vehicleEvaluation: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: '',
vehicleViolationCostAssumeKey: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
plan: '',
rksqSid: '',
procInstId: '',
salesOrderSid: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
vinList: [],
wheFundOccMoney: ''
}
this.submitdisabled = false

470
anrui-riskcenter-ui/src/views/secondarysales/secondarysalesInfo.vue

@ -0,0 +1,470 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspect }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">年检情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspectSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item><span class="addinputInfo">{{ formobj.guaranteed }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">保险情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.insuranceSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><span class="addinputInfo">{{ formobj.kilometerDriven }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他车况说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.illustrate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">已还金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前逾期金额/其中资金占用费</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentBeMoney }}/{{ formobj.wheFundOccMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">未到期金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.unexpiredMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">总期数/当前期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.nper }}/{{ formobj.currentPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">已还金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoneyConPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">逾期金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.collectionCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">风控中心车辆评估价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleEvaluation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCost }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCostAssume }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">费用说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.costDescription }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.lossPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.debtDisposal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.loanSecondarySalesCost.files" :key="index" :src="item" :preview-src-list="formobj.loanSecondarySalesCost.files"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 查看车辆历史催收记录 -->
<financialschemeInfo v-show="viewState == 2" ref="divFinancial" @doback="resetState" />
</div>
</template>
<script>
import req from '@/api/secondarysales/secondarysales'
import financialschemeInfo from '@/components/publicPage/financialschemeInfo'
export default {
name: 'SecondarySalesInfo',
components: {
financialschemeInfo
},
data() {
return {
viewTitle: '',
viewState: 1,
tableKey: 1,
index: 0,
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
insureCost: '',
insureCostAssume: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
ownershipCost: '',
ownershipCostAssume: '',
stopCost: '',
stopCostAssume: '',
vehicleEvaluation: '',
vehPrice: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
},
rules: {}
}
},
methods: {
showInfo(row) {
this.viewTitle = '交回车辆二次销售申请详情'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: row.sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.loanSecondarySalesCost.files.length > 0) {
const bb = []
this.formobj.loanSecondarySalesCost.files.forEach((e) => {
bb.push(e.url)
})
this.formobj.loanSecondarySalesCost.files = bb
}
}
})
},
lookFinancial() {
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
resetState() {
this.viewState = 1
},
handleReturn() {
this.formobj = {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
insureCost: '',
insureCostAssume: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
ownershipCost: '',
ownershipCostAssume: '',
stopCost: '',
stopCostAssume: '',
vehicleEvaluation: '',
vehPrice: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
}
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

709
anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesByPGJ.vue

@ -0,0 +1,709 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="openCountersign('加签')"> </el-button>
<el-button type="primary" size="small" @click="openAgree('同意')"> </el-button>
<el-button type="danger" size="small" @click="openReject('驳回')"> </el-button>
<el-button type="danger" size="small" @click="openStop('终止')"> </el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspect }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">年检情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspectSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item><span class="addinputInfo">{{ formobj.guaranteed }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">保险情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.insuranceSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><span class="addinputInfo">{{ formobj.kilometerDriven }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他车况说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.illustrate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">已还金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前逾期金额/其中资金占用费</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentBeMoney }}/{{ formobj.wheFundOccMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">未到期金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.unexpiredMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">总期数/当前期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.nper }}/{{ formobj.currentPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">已还金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoneyConPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">逾期金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.collectionCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span class="icon">*</span>风控中心车辆评估价</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.vehicleEvaluation" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCost }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCostAssume }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">费用说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.costDescription }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.lossPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.debtDisposal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.loanSecondarySalesCost.files" :key="index" :src="item" :preview-src-list="formobj.loanSecondarySalesCost.files"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 查看车辆历史催收记录 -->
<financialschemeInfo v-show="viewState == 2" ref="divFinancial" @doback="resetState" />
<!-- 选择待办人 的弹出框-->
<el-dialog title="填写审批意见" :visible.sync="nodeDialogVisible" width="80%">
<el-form class="formadd" >
<el-row v-show="countersignLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span class="icon">*</span>加签人员:
</el-col>
<el-col :span="20">
<el-form-item>
<el-select v-model="countersign.assignee" placeholder="请选择" filterable>
<el-option v-for="item in options" :key="item.userSid" :label="item.staffName" :value="item.userSid">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>当前环节:</span>
</el-col>
<el-col :span="20">
<el-form-item><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{rowClass:!currentLink}">
<el-col :span="4" class="tleftb">
<span>意见:</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input size="small" v-model="dialogList.comment" placeholder="审批意见" class="addinputw" type="textarea" :autosize="{ minRows: 1, maxRows: 10}" clearable ></el-input></el-form-item>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="reject"> </el-button>
<el-button type="info " size="mini" @click="nodeDialogVisible = false"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/secondarysales/secondarysales'
import { selectStaffListss } from '@/api/Common/dictcommons'
import financialschemeInfo from '../publicPage/financialschemeInfo'
export default {
name: 'SecondarySalesByPGJ',
components: {
financialschemeInfo
},
data() {
return {
viewTitle: '',
viewState: 1,
tableKey: 1,
index: 0,
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
insureCost: '',
insureCostAssume: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
ownershipCost: '',
ownershipCostAssume: '',
stopCost: '',
stopCostAssume: '',
vehicleEvaluation: '',
vehPrice: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
},
rules: {},
options: [],
operation: '', //
dialogList: {
comment: ''
},
startTask: true,
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
countersignLink: false,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: '',
vehicleEvaluation: ''
},
//
countersign: {
taskId: '',
assignee: '',
userSid: '',
instanceId: '',
views: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
// this.linkByParameter.orgSidPath = window.sessionStorage.getItem('orgSidPath')
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
this.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.countersign.taskId = obj.taskId
this.countersign.userSid = window.sessionStorage.getItem('userSid')
this.countersign.instanceId = obj.instanceId
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
UpNumber(e) {
e.target.value = e.target.value.replace(/[^0-9.]/g, '') // .
e.target.value = e.target.value.replace(/^00/, '0.') // 0
e.target.value = e.target.value.replace(/\.{2,}/g, '.') // .
e.target.value = e.target.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
e.target.value = e.target.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') //
if (e.target.value.indexOf('.') < 0 && e.target.value !== '' && e.target.value !== '-') {
// 0102
e.target.value = parseFloat(e.target.value)
}
},
showInfo(sid) {
this.viewTitle = '交回车辆二次销售申请详情'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.loanSecondarySalesCost.files.length > 0) {
const bb = []
this.formobj.loanSecondarySalesCost.files.forEach((e) => {
bb.push(e.url)
})
this.formobj.loanSecondarySalesCost.files = bb
}
}
})
selectStaffListss().then((res) => {
if (res.success) {
this.options = res.data
}
})
},
lookFinancial() {
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
resetState() {
this.viewState = 1
},
//
openCountersign(val) {
this.operation = val
this.currentLink = true
this.countersignLink = true
this.dialogList.comment = ''
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openAgree(val) {
if (this.formobj.loanSecondarySalesCost.vehicleEvaluation === '') {
this.$message({ showClose: true, type: 'error', message: '风控中心车辆评估价不能为空' })
return
}
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = '同意'
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid, vehicleEvaluation: this.formobj.loanSecondarySalesCost.vehicleEvaluation }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = ''
req.getPreviousNodesForReject({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openStop(val) {
this.operation = val
this.currentLink = false
this.countersignLink = false
this.dialogList.comment = ''
this.nodeDialogVisible = true
},
reject() {
if (this.operation === '同意') {
this.handleAgree()
} else if (this.operation === '驳回') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleReject()
}
} else if (this.operation === '终止') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleStop()
}
} else if (this.operation === '加签') {
this.handleCountersign()
}
},
/** 加签 */
handleCountersign() {
if (this.countersign.assignee === '') {
this.$message({ showClose: true, type: 'error', message: '请选择加签人员' })
return
}
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
return
}
this.countersign.views = this.dialogList.comment
req.delegate(this.countersign).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
this.linkByParameter.vehicleEvaluation = this.formobj.loanSecondarySalesCost.vehicleEvaluation
req.complete(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 驳回任务 */
handleReject() {
this.linkByParameter.comment = this.dialogList.comment
req.reject(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 终止任务 */
handleStop() {
this.linkByParameter.comment = this.dialogList.comment
req.breakProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.rowClass{
border-top: 1px solid #E0E3EB;
}
</style>

694
anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesDaiBan.vue

@ -0,0 +1,694 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" @click="openCountersign('加签')"> </el-button>
<el-button type="primary" size="small" @click="openAgree('同意')"> </el-button>
<el-button type="danger" size="small" @click="openReject('驳回')"> </el-button>
<el-button type="danger" size="small" @click="openStop('终止')"> </el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspect }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">年检情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspectSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item><span class="addinputInfo">{{ formobj.guaranteed }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">保险情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.insuranceSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><span class="addinputInfo">{{ formobj.kilometerDriven }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他车况说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.illustrate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">已还金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前逾期金额/其中资金占用费</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentBeMoney }}/{{ formobj.wheFundOccMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">未到期金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.unexpiredMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">总期数/当前期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.nper }}/{{ formobj.currentPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">已还金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoneyConPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">逾期金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.collectionCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">风控中心车辆评估价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleEvaluation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCost }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCostAssume }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">费用说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.costDescription }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.lossPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.debtDisposal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.loanSecondarySalesCost.files" :key="index" :src="item" :preview-src-list="formobj.loanSecondarySalesCost.files"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 查看车辆历史催收记录 -->
<financialschemeInfo v-show="viewState == 2" ref="divFinancial" @doback="resetState" />
<!-- 选择待办人 的弹出框-->
<el-dialog title="填写审批意见" :visible.sync="nodeDialogVisible" width="80%">
<el-form class="formadd" >
<el-row v-show="countersignLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span class="icon">*</span>加签人员:
</el-col>
<el-col :span="20">
<el-form-item>
<el-select v-model="countersign.assignee" placeholder="请选择" filterable>
<el-option v-for="item in options" :key="item.userSid" :label="item.staffName" :value="item.userSid">
</el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>当前环节:</span>
</el-col>
<el-col :span="20">
<el-form-item><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{rowClass:!currentLink}">
<el-col :span="4" class="tleftb">
<span>意见:</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input size="small" v-model="dialogList.comment" placeholder="审批意见" class="addinputw" type="textarea" :autosize="{ minRows: 1, maxRows: 10}" clearable ></el-input></el-form-item>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="reject"> </el-button>
<el-button type="info " size="mini" @click="nodeDialogVisible = false"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import req from '@/api/secondarysales/secondarysales'
import { selectStaffListss } from '@/api/Common/dictcommons'
import financialschemeInfo from '../publicPage/financialschemeInfo'
export default {
name: 'SecondarySalesDaiBan',
components: {
financialschemeInfo
},
data() {
return {
viewTitle: '',
viewState: 1,
tableKey: 1,
index: 0,
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
insureCost: '',
insureCostAssume: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
ownershipCost: '',
ownershipCostAssume: '',
stopCost: '',
stopCostAssume: '',
vehicleEvaluation: '',
vehPrice: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
},
rules: {},
options: [],
operation: '', //
dialogList: {
comment: ''
},
startTask: true,
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
countersignLink: false,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: '',
vehicleEvaluation: ''
},
//
countersign: {
taskId: '',
assignee: '',
userSid: '',
instanceId: '',
views: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
// this.linkByParameter.orgSidPath = window.sessionStorage.getItem('orgSidPath')
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
this.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.countersign.taskId = obj.taskId
this.countersign.userSid = window.sessionStorage.getItem('userSid')
this.countersign.instanceId = obj.instanceId
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '交回车辆二次销售申请详情'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.loanSecondarySalesCost.files.length > 0) {
const bb = []
this.formobj.loanSecondarySalesCost.files.forEach((e) => {
bb.push(e.url)
})
this.formobj.loanSecondarySalesCost.files = bb
}
}
})
selectStaffListss().then((res) => {
if (res.success) {
this.options = res.data
}
})
},
lookFinancial() {
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
resetState() {
this.viewState = 1
},
//
openCountersign(val) {
this.operation = val
this.currentLink = true
this.countersignLink = true
this.dialogList.comment = ''
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openAgree(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = '同意'
req.getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid, vehicleEvaluation: this.formobj.loanSecondarySalesCost.vehicleEvaluation }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.countersignLink = false
this.dialogList.comment = ''
req.getPreviousNodesForReject({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openStop(val) {
this.operation = val
this.currentLink = false
this.countersignLink = false
this.dialogList.comment = ''
this.nodeDialogVisible = true
},
reject() {
if (this.operation === '同意') {
this.handleAgree()
} else if (this.operation === '驳回') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleReject()
}
} else if (this.operation === '终止') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleStop()
}
} else if (this.operation === '加签') {
this.handleCountersign()
}
},
/** 加签 */
handleCountersign() {
if (this.countersign.assignee === '') {
this.$message({ showClose: true, type: 'error', message: '请选择加签人员' })
return
}
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
return
}
this.countersign.views = this.dialogList.comment
req.delegate(this.countersign).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
this.linkByParameter.vehicleEvaluation = this.formobj.loanSecondarySalesCost.vehicleEvaluation
req.complete(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 驳回任务 */
handleReject() {
this.linkByParameter.comment = this.dialogList.comment
req.reject(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 终止任务 */
handleStop() {
this.linkByParameter.comment = this.dialogList.comment
req.breakProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
.rowClass{
border-top: 1px solid #E0E3EB;
}
</style>

651
anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesEdit.vue

@ -0,0 +1,651 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveOrUpdate()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submit()">提交</el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" width="80" align="center">
<template slot-scope="scope">
<el-button size="small" type="danger" @click="delete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.inspect">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">年检情况</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.inspectSituation" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item>
<el-radio-group class="addinputInfo" style="font-size: 1px" v-model="formobj.guaranteed">
<el-radio label="是"></el-radio>
<el-radio label="否"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">保险情况</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.insuranceSituation" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><el-input class="addinputInfo" style="width: 30%" v-model="formobj.kilometerDriven" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他车况说明</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.illustrate" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">已还金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前逾期金额/其中资金占用费</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentBeMoney }}/{{ formobj.wheFundOccMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">未到期金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.unexpiredMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">总期数/当前期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.nper }}/{{ formobj.currentPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">已还金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoneyConPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">逾期金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.vehPrice" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.collectionCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">风控中心车辆评估价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleEvaluation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.bankSettleCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.bankSettleCostAssumeKey" placeholder="请选择" clearable filterable @change="bankSettleCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.vehicleViolationCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.vehicleViolationCostAssumeKey" placeholder="请选择" clearable filterable @change="vehicleViolationCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.inspectYearCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.inspectYearCostAssumeKey" placeholder="请选择" clearable filterable @change="inspectYearCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.insureCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.insureCostAssumeKey" placeholder="请选择" clearable filterable @change="insureCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.ownershipCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.ownershipCostAssumeKey" placeholder="请选择" clearable filterable @change="ownershipCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.stopCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.stopCostAssumeKey" placeholder="请选择" clearable filterable @change="stopCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><el-input class="addinputInfo addinputw" @keyup.native="UpNumber" v-model="formobj.loanSecondarySalesCost.otherCost" clearable placeholder=""/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item>
<el-select class="addinputInfo" v-model="formobj.loanSecondarySalesCost.otherCostAssumeKey" placeholder="请选择" clearable filterable @change="otherCostChange">
<el-option v-for="item in bearer_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">费用说明</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.loanSecondarySalesCost.costDescription" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><span class="addinputInfo">{{ lossPrice() }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.loanSecondarySalesCost.debtDisposal" clearable placeholder=""/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<uploadImg ref="uploadImg" class="addinputInfo" v-model="formobj.loanSecondarySalesCost.files" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 查看车辆历史催收记录 -->
<financialschemeInfo v-show="viewState == 2" ref="divFinancial" @doback="resetState" />
</div>
</template>
<script>
import req from '@/api/secondarysales/secondarysales'
import { typeValues } from '@/api/Common/dictcommons'
import uploadImg from '@/components/uploadFile/uploadImg'
import financialschemeInfo from '../publicPage/financialschemeInfo'
export default {
name: 'SecondarySalesEdit',
components: {
uploadImg,
financialschemeInfo
},
data() {
return {
viewTitle: '',
viewState: 1,
submitdisabled: false,
tableKey: 1,
index: 0,
bearer_list: [],
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
bankSettleCostAssumeKey: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
inspectYearCostAssumeKey: '',
insureCost: '',
insureCostAssume: '',
insureCostAssumeKey: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
otherCostAssumeKey: '',
ownershipCost: '',
ownershipCostAssume: '',
ownershipCostAssumeKey: '',
stopCost: '',
stopCostAssume: '',
stopCostAssumeKey: '',
vehPrice: '',
vehicleEvaluation: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: '',
vehicleViolationCostAssumeKey: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
salesOrderSid: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
UpNumber(e) {
e.target.value = e.target.value.replace(/[^0-9.]/g, '') // .
e.target.value = e.target.value.replace(/^00/, '0.') // 0
e.target.value = e.target.value.replace(/\.{2,}/g, '.') // .
e.target.value = e.target.value.replace('.', '$#$').replace(/\./g, '').replace('$#$', '.')
e.target.value = e.target.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') //
if (e.target.value.indexOf('.') < 0 && e.target.value !== '' && e.target.value !== '-') {
// 0102
e.target.value = parseFloat(e.target.value)
}
},
init() {
typeValues({ type: 'costAssume' }).then((resp) => {
if (resp.success) {
this.bearer_list = resp.data
}
})
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
showInfo(sid) {
this.viewTitle = '【编辑】交回车辆二次销售申请'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.init()
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.instanceId = res.data.procInstId
}
})
},
lookFinancial() {
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
delete(index) {
this.formobj.loanSecondarySalesVehVoList.splice(index, 1)
},
bankSettleCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.bankSettleCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.bankSettleCostAssume = ''
}
},
vehicleViolationCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume = ''
}
},
inspectYearCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.inspectYearCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.inspectYearCostAssume = ''
}
},
insureCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.insureCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.insureCostAssume = ''
}
},
ownershipCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.ownershipCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.ownershipCostAssume = ''
}
},
stopCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.stopCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.stopCostAssume = ''
}
},
otherCostChange(value) {
const choose = this.bearer_list.filter((item) => item.dictKey === value)
if (choose.length > 0 && choose !== null) {
this.formobj.loanSecondarySalesCost.otherCostAssume = choose[0].dictValue
} else {
this.formobj.loanSecondarySalesCost.otherCostAssume = ''
}
},
// = - - - -
lossPrice() {
let money = '0'
money = parseFloat(this.formobj.loanSecondarySalesCost.arrearsAll) - parseFloat(this.formobj.loanSecondarySalesCost.loanDeposit)
//
if (this.formobj.loanSecondarySalesCost.vehPrice !== '') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.vehPrice)
}
//
if (this.formobj.loanSecondarySalesCost.collectionCost !== '') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.collectionCost)
}
//
if (this.formobj.loanSecondarySalesCost.bankSettleCost !== '' && this.formobj.loanSecondarySalesCost.bankSettleCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.bankSettleCost)
}
//
if (this.formobj.loanSecondarySalesCost.vehicleViolationCost !== '' && this.formobj.loanSecondarySalesCost.vehicleViolationCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.vehicleViolationCost)
}
//
if (this.formobj.loanSecondarySalesCost.inspectYearCost !== '' && this.formobj.loanSecondarySalesCost.inspectYearCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.inspectYearCost)
}
//
if (this.formobj.loanSecondarySalesCost.insureCost !== '' && this.formobj.loanSecondarySalesCost.insureCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.insureCost)
}
//
if (this.formobj.loanSecondarySalesCost.ownershipCost !== '' && this.formobj.loanSecondarySalesCost.ownershipCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.ownershipCost)
}
//
if (this.formobj.loanSecondarySalesCost.stopCost !== '' && this.formobj.loanSecondarySalesCost.stopCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.stopCost)
}
//
if (this.formobj.loanSecondarySalesCost.otherCost !== '' && this.formobj.loanSecondarySalesCost.otherCostAssume === '公司') {
money = parseFloat(money) - parseFloat(this.formobj.loanSecondarySalesCost.otherCost)
}
this.formobj.loanSecondarySalesCost.lossPrice = money
return money
},
resetState() {
this.viewState = 1
},
saveOrUpdate() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.saveOrUpdate(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
req.submit(this.formobj).then((res) => {
if (res.success) {
this.$message({ showClose: true, type: 'success', message: '操作成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 190px !important;
width: calc(100% - 185px);
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
</style>

478
anrui-riskcenter-ui/src/views/workFlow/ercixiaoshouFlow/secondarysalesYiBan.vue

@ -0,0 +1,478 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="danger" size="small" @click="openRevoke()">撤回</el-button>
</div>
</div>
<div class="">
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="8">
<div class="span-sty">申请部门</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDept }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请人</div>
<el-form-item><span class="addinputInfo">{{ formobj.createByName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">申请日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.createDate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">客户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款人</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanContractNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankName }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">资方合同编号</div>
<el-form-item><span class="addinputInfo">{{ formobj.bankContractNo }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">停放地点</div>
<el-form-item><span class="addinputInfo">{{ formobj.locationName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title titleOne">
<div>二次销售车辆列表(含主车挂车)</div>
<el-button size="mini" type="primary" class="btntopblueline" @click="lookFinancial">金融方案</el-button>
</div>
<el-table :key="tableKey" :data="formobj.loanSecondarySalesVehVoList" :index="index" border style="width: 100%">
<el-table-column fixed width="80" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column prop="vinNo" label="车架号" align="center" min-width="100" />
<el-table-column prop="vehMark" label="车牌号" align="center" min-width="100"/>
<el-table-column prop="vehType" label="车辆类型" align="center" min-width="120"/>
<el-table-column prop="modelName" label="车型" align="center" min-width="130"/>
</el-table>
<div class="title">车辆状况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">是否年检</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspect }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">年检情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.inspectSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">是否已出保</div>
<el-form-item><span class="addinputInfo">{{ formobj.guaranteed }}</span></el-form-item>
</el-col>
<el-col :span="16" class="tlineheightb">
<div class="span-sty">保险情况</div>
<el-form-item><span class="addinputInfo">{{ formobj.insuranceSituation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">首次登记日期</div>
<el-form-item><span class="addinputInfo">{{ formobj.firstDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">当前行驶公里数</div>
<el-form-item><span class="addinputInfo">{{ formobj.kilometerDriven }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">其他车况说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.illustrate }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">车辆照片</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.filesList" :key="index" :src="item" :preview-src-list="formobj.filesList"/>
</el-form-item>
</el-col>
</el-row>
<div class="title">已还与欠款情况</div>
<el-row>
<el-col :span="8">
<div class="span-sty">已还金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">当前逾期金额/其中资金占用费</div>
<el-form-item><span class="addinputInfo">{{ formobj.currentBeMoney }}/{{ formobj.wheFundOccMoney }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">未到期金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.unexpiredMoney }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">总期数/当前期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.nper }}/{{ formobj.currentPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">已还金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.alRepaidMoneyConPeriod }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">逾期金额换算期数</div>
<el-form-item><span class="addinputInfo">{{ formobj.beOverdueMoneyAndPeriod }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">费用说明</div>
<el-row>
<el-col :span="8">
<div class="span-sty">欠款合计</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.arrearsAll }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">贷款保证金</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.loanDeposit }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">车辆售价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">催收费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.collectionCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">风控中心车辆评估价</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleEvaluation }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">资方结清费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.bankSettleCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">车辆违章费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.vehicleViolationCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">年检费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.inspectYearCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">保险费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.insureCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">过户费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.ownershipCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">停车费</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCost }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.stopCostAssume }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty">其他费用</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCost }}</span></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty">承担方</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.otherCostAssume }}</span></el-form-item>
</el-col>
<el-col :span="8" class="tlineheightb">
<div class="span-sty">费用说明</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.costDescription }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">预计亏损金额</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.lossPrice }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">后续欠款处置方向</div>
<el-form-item><span class="addinputInfo">{{ formobj.loanSecondarySalesCost.debtDisposal }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty">附件</div>
<el-form-item>
<el-image class="addinputInfo" style="width: 150px;height: 150px" v-for="(item, index) in formobj.loanSecondarySalesCost.files" :key="index" :src="item" :preview-src-list="formobj.loanSecondarySalesCost.files"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
<!-- 查看车辆历史催收记录 -->
<financialschemeInfo v-show="viewState == 2" ref="divFinancial" @doback="resetState" />
</div>
</template>
<script>
import req from '@/api/secondarysales/secondarysales'
import financialschemeInfo from '../publicPage/financialschemeInfo'
export default {
name: 'SecondarySalesYiBan',
components: {
financialschemeInfo
},
data() {
return {
viewTitle: '',
viewState: 1,
tableKey: 1,
index: 0,
formobj: {
alRepaidMoney: '',
alRepaidMoneyConPeriod: '',
bankContractNo: '',
bankName: '',
beOverdueMoneyAndPeriod: '',
createByName: '',
createDate: '',
createDept: '',
createDeptSid: '',
currentBeMoney: '',
currentPeriod: '',
customerName: '',
files: '',
filesList: [],
firstDate: '',
guaranteed: '',
illustrate: '',
inspect: '',
inspectSituation: '',
insuranceSituation: '',
kilometerDriven: '',
loanContractNo: '',
loanName: '',
loanSecondarySalesCost: {
arrearsAll: '',
bankSettleCost: '',
bankSettleCostAssume: '',
collectionCost: '',
costDescription: '',
debtDisposal: '',
files: [],
inspectYearCost: '',
inspectYearCostAssume: '',
insureCost: '',
insureCostAssume: '',
loanDeposit: '',
lossPrice: '',
otherCost: '',
otherCostAssume: '',
ownershipCost: '',
ownershipCostAssume: '',
stopCost: '',
stopCostAssume: '',
vehicleEvaluation: '',
vehPrice: '',
vehicleViolationCost: '',
vehicleViolationCostAssume: ''
},
loanSecondarySalesVehVoList: [],
locationName: '',
nper: '',
orgPath: '',
procInstId: '',
sid: '',
taskId: '',
unexpiredMoney: '',
useOrgSid: '',
userSid: '',
wheFundOccMoney: ''
},
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '交回车辆二次销售申请详情'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
req.fetchBySid({ chooseSidList: [], orgPath: '', sid: sid, userSid: '' }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.loanSecondarySalesCost.files.length > 0) {
const bb = []
this.formobj.loanSecondarySalesCost.files.forEach((e) => {
bb.push(e.url)
})
this.formobj.loanSecondarySalesCost.files = bb
}
}
})
},
lookFinancial() {
req.selectDetailss({ businessSid: this.formobj.salesOrderSid }).then((res) => {
if (res.success) {
this.viewState = 2
this.$refs['divFinancial'].showInfo(res.data, '03')
}
})
},
resetState() {
this.viewState = 1
},
/** 确认撤回任务 */
openRevoke() {
this.$confirm('是否确认执行撤回操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRevoke()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消撤回'
})
})
},
/** 撤回任务 */
handleRevoke() {
req.revokeProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.span-sty {
width: 200px !important;
}
.addinputInfo {
margin-left: 190px !important;
}
.titleOne {
padding: 7px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.tlineheightb {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
/deep/ .tlineheightb .el-form-item .el-form-item__content .addinputInfo {
line-height: 15px !important;
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: center;
}
</style>

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyDetailsVo.java

@ -57,7 +57,7 @@ public class LoanSecondarySalesApplyDetailsVo {
@ApiModelProperty("其他车况说明")
private String illustrate;
@ApiModelProperty("车辆照片")
private List<UrlQuery> filesList = new ArrayList<>();
private List<String> filesList = new ArrayList<>();
@ApiModelProperty("已还金额")
private String alRepaidMoney;
@ApiModelProperty("当前逾期金额")

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyDto.java

@ -57,7 +57,7 @@ public class LoanSecondarySalesApplyDto {
@ApiModelProperty("其他车况说明")
private String illustrate;
@ApiModelProperty("车辆照片")
private List<UrlQuery> filesList = new ArrayList<>();
private List<String> filesList = new ArrayList<>();
@ApiModelProperty("已还金额")
private String alRepaidMoney;
@ApiModelProperty("当前逾期金额")

14
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesApplyFeign.java

@ -1,10 +1,5 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesapply;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApplyDto;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApplyFeignFallback;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApplyQuery;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApplyVo;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.flowable.*;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
@ -12,10 +7,7 @@ import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.List;
@ -80,5 +72,9 @@ public interface LoanSecondarySalesApplyFeign {
@PostMapping(value = "/delegate")
public ResultBean delegate(@RequestBody LoanSecondarySalesApplyDelegateQuery query);
@ApiOperation(value = "移动端详情")
@PostMapping(value = "/getAppDetails")
ResultBean<SecondarySalesAppVo> getAppDetails(@RequestParam("sid") String sid);
}

74
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesCostAppVo.java

@ -0,0 +1,74 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesapply;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class LoanSecondarySalesCostAppVo {
@ApiModelProperty("欠款合计")
private String arrearsAll;
@ApiModelProperty("贷款保证金")
private String loanDeposit;
@ApiModelProperty("车辆售价")
private String vehPrice;
@ApiModelProperty("催收费用")
private String collectionCost;
@ApiModelProperty("资方结清费用")
private String bankSettleCost;
@ApiModelProperty("资方结清费用承担方")
private String bankSettleCostAssume;
private String bankSettleCostAssumeKey;
@ApiModelProperty("车辆违章费用")
private String vehicleViolationCost;
@ApiModelProperty("车辆违章费用承担方")
private String vehicleViolationCostAssume;
private String vehicleViolationCostAssumeKey;
@ApiModelProperty("年检费")
private String inspectYearCost;
@ApiModelProperty("年检费承担方")
private String inspectYearCostAssume;
private String inspectYearCostAssumeKey;
@ApiModelProperty("保险费")
private String insureCost;
@ApiModelProperty("保险费承担方")
private String insureCostAssume;
private String insureCostAssumeKey;
@ApiModelProperty("过户费")
private String ownershipCost;
@ApiModelProperty("过户费承担方")
private String ownershipCostAssume;
private String ownershipCostAssumeKey;
@ApiModelProperty("停车费")
private String stopCost;
@ApiModelProperty("停车费承担方")
private String stopCostAssume;
private String stopCostAssumeKey;
@ApiModelProperty("其他费用")
private String otherCost;
@ApiModelProperty("其他费用承担方")
private String otherCostAssume;
private String otherCostAssumeKey;
@ApiModelProperty("费用说明")
private String costDescription;
@ApiModelProperty("预计亏损金额")
private String lossPrice;
@ApiModelProperty("后续欠款处置方向")
private String debtDisposal;
@ApiModelProperty("附件")
private List<String> files = new ArrayList<>();
@ApiModelProperty("车辆评估")
private String vehicleEvaluation;
private String filesss;
}

22
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/LoanSecondarySalesVehAppVo.java

@ -0,0 +1,22 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesapply;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class LoanSecondarySalesVehAppVo {
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("车辆类型")
private String vehType;
@ApiModelProperty("车型")
private String modelName;
}

88
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/SecondarySalesAppVo.java

@ -0,0 +1,88 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalesapply;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesAppVo {
@ApiModelProperty("申请部门")
private String createDept;
@ApiModelProperty("申请人")
private String createByName;
@ApiModelProperty("申请日期")
private String createDate;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("贷款人")
private String loanName;
@ApiModelProperty("贷款合同编号")
private String loanContractNo;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同编号")
private String bankContractNo;
@ApiModelProperty("停放地点")
private String locationName;
@ApiModelProperty("是否年检")
private String inspect;
@ApiModelProperty("年检情况")
private String inspectSituation;
@ApiModelProperty("是否已出保")
private String guaranteed;
@ApiModelProperty("保险情况")
private String insuranceSituation;
@ApiModelProperty("首次登记日期")
private String firstDate;
@ApiModelProperty("当前行驶公里数")
private String kilometerDriven;
@ApiModelProperty("其他车况说明")
private String illustrate;
@ApiModelProperty("车辆照片")
private List<String> filesList = new ArrayList<>();
@ApiModelProperty("已还金额")
private String alRepaidMoney;
@ApiModelProperty("当前逾期金额")
private String currentBeMoney;
@ApiModelProperty("其中资金占用费")
private String wheFundOccMoney;
@ApiModelProperty("未到期金额")
private String unexpiredMoney;
@ApiModelProperty("总期数")
private String nper;
@ApiModelProperty("当前期数")
private String currentPeriod;
@ApiModelProperty("已还金额换算期数")
private String alRepaidMoneyConPeriod;
@ApiModelProperty("逾期金额换算期数")
private String beOverdueMoneyAndPeriod;
@ApiModelProperty("车辆列表")
private List<LoanSecondarySalesVehAppVo> loanSecondarySalesVehVoList = new ArrayList<>();
@ApiModelProperty("费用明细")
private LoanSecondarySalesCostAppVo loanSecondarySalesCost;
@ApiModelProperty("申请人sid")
private String userSid;
private String orgPath;
@ApiModelProperty(value = "任务id")
private String taskId;
@ApiModelProperty(value = "流程实例id")
private String procInstId;
private String files;
@ApiModelProperty("销售订单sid")
private String salesOrderSid;
}

3
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesapply/flowable/LoanSecondarySalesApplyNodeQuery.java

@ -15,4 +15,7 @@ public class LoanSecondarySalesApplyNodeQuery {
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty("车辆评估价格")
private String vehicleEvaluation;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescost/LoanSecondarySalesCostVo.java

@ -71,4 +71,6 @@ public class LoanSecondarySalesCostVo {
@ApiModelProperty("车辆评估")
private String vehicleEvaluation;
private String filesss;
}

35
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomer.java

@ -0,0 +1,35 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalescustomer;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Data
public class LoanSecondarySalesCustomer extends BaseEntity {
private static final long serialVersionUID = -4647743383421777867L;
private String mainSid;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("客户类型")
private String customerType;
private String customerTypeKey;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("证件类型")
private String certificateTypeKey;
private String certificateType;
@ApiModelProperty("证件号码")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("证件地址")
private String certificateAddress;
}

38
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalescustomer;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Data
public class LoanSecondarySalesCustomerDto implements Dto {
private static final long serialVersionUID = 4377892244342062357L;
private String mainSid;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("客户类型")
private String customerType;
private String customerTypeKey;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("证件类型")
private String certificateTypeKey;
private String certificateType;
@ApiModelProperty("证件号码")
@JsonProperty("IDNumber")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("证件地址")
private String certificateAddress;
}

31
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerFeign.java

@ -0,0 +1,31 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalescustomer;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyFeignFallback;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@FeignClient(
contextId = "anrui-riskcenter-LoanSecondarySalesCustomer",
name = "anrui-riskcenter",
path = "v1/LoanSecondarySalesCustomer",
fallback = LoanSecondarySalesCustomerFeignFallback.class)
public interface LoanSecondarySalesCustomerFeign {
@ApiOperation("新增或修改")
@PostMapping("/saveOrUpdate")
ResultBean saveOrUpdate(@RequestBody LoanSecondarySalesCustomerDto dto);
@ApiOperation("初始化")
@GetMapping("/getDetails")
ResultBean<SalesInitVo> getDetails(@RequestParam("sid") String sid);
}

12
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/LoanSecondarySalesCustomerFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalescustomer;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Component
public class LoanSecondarySalesCustomerFeignFallback {
}

48
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalescustomer/SalesInitVo.java

@ -0,0 +1,48 @@
package com.yxt.anrui.riskcenter.api.loansecondarysalescustomer;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Data
public class SalesInitVo {
private String mainSid;
@ApiModelProperty("销售部门")
private String createDept;
@ApiModelProperty("销售日期")
private String saleDate;
@ApiModelProperty("销售价格")
private String salePrice;
@ApiModelProperty("客户sid")
private String customerSid;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("客户类型")
private String customerType;
private String customerTypeKey;
@ApiModelProperty("联系电话")
private String mobile;
@ApiModelProperty("证件类型")
private String certificateTypeKey;
private String certificateType;
@ApiModelProperty("证件号码")
@JsonProperty("IDNumber")
private String IDNumber;
@ApiModelProperty("证件有效期")
private String endDate;
@ApiModelProperty("证件地址")
private String certificateAddress;
@ApiModelProperty("车辆列表")
private List<LoanSecondarySalesVehVo> loanSecondarySalesVehVoList = new ArrayList<>();
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/LoanSecondarySalesVeh.java

@ -29,4 +29,6 @@ public class LoanSecondarySalesVeh extends BaseEntity {
private String modelSid;
@ApiModelProperty("配置sid")
private String configSid;
private String busSid;
}

2
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loansecondarysalesveh/LoanSecondarySalesVehVo.java

@ -25,4 +25,6 @@ public class LoanSecondarySalesVehVo {
private String modelSid;
@ApiModelProperty("配置sid")
private String configSid;
private String busSid;
}

22
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduebank/LoanOverdueBankMapper.xml

@ -74,9 +74,24 @@
<!--逾期期数-->
COUNT(a1.sid) AS period,
<!--逾期金额-->
SUM(a1.yq_total) AS overdueMoney,
(
SUM(a1.yq_total) + IFNULL(
(SELECT SUM(lbpv.`bankBeInter`)
FROM loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT SUM(fund)
FROM loan_fund_day
WHERE busSid IN
(SELECT lrpd.sid
FROM loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) AS overdueMoney,
a1.customerSid,
a1.customer customerName
a1.customer customerName
FROM (SELECT lrpd.sid,
lrpd.`loanContractNo`,
@ -90,7 +105,8 @@
) AS yq_total,
lrpd.customer,
lrpd.customerSid,
lrpd.borrowerSid
lrpd.borrowerSid,
lrpd.busVinSid
FROM `loan_repayment_plan_details` lrpd
LEFT JOIN `loan_repayment_history` lrh
ON lrh.planDetailSid = lrpd.`sid`

25
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanoverduefin/LoanOverdueFinMapper.xml

@ -64,11 +64,26 @@
SELECT a1.busVinSid AS busViNSid,
RIGHT(a1.vinNo, 8) AS vinNo,
<!--逾期金额-->
SUM(a1.yq_total) AS overdueMoney,
a1.customer AS customerName,
a1.customerSid as customerSid,
a1.borrowerSid loanSid,
a1.borrowerName loanName
(
SUM(a1.yq_total) + IFNULL(
(SELECT SUM(lbpv.`bankBeInter`)
FROM loan_be_padsincere_veh lbpv
WHERE lbpv.saleVehSid = a1.busVinSid),
0
) + IFNULL(
(SELECT SUM(fund)
FROM loan_fund_day
WHERE busSid IN
(SELECT lrpd.sid
FROM loan_repayment_plan_details lrpd
WHERE DATE_FORMAT(lrpd.dueDate, '%Y-%m-%d') &lt; CURDATE())),
0
)
) AS overdueMoney,
a1.customer AS customerName,
a1.customerSid as customerSid,
a1.borrowerSid loanSid,
a1.borrowerName loanName
FROM (SELECT lrpd.sid,
lrpd.busVinSid,
lrpd.borrowerName,

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyDetailsVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.SecondarySalesAppVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -19,11 +20,13 @@ import java.util.Map;
**/
@Mapper
public interface LoanSecondarySalesApplyMapper extends BaseMapper<LoanSecondarySalesApply> {
IPage<LoanSecondarySalesApplyVo> selectPageVo(IPage<LoanSecondarySalesApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanSecondarySalesApply> qw);
IPage<LoanSecondarySalesApplyVo> selectPageVo(IPage<LoanSecondarySalesApply> page, @Param(Constants.WRAPPER) QueryWrapper<LoanSecondarySalesApply> qw,@Param("vinNo") String vinNo,@Param("vehMark") String vehMark);
int updateFlowFiled(Map<String, Object> beanToMap);
int selectBySid(String join);
LoanSecondarySalesApplyDetailsVo selectDetails(String sid);
SecondarySalesAppVo getAppDetails(String sid);
}

51
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyMapper.xml

@ -11,8 +11,10 @@
DATE_FORMAT(la.createTime, '%Y-%m-%d') as createDate,
la.closeDate,
la.loanContractNo,
(select group_concat(lv.vinNo) from loan_secondary_sales_veh lv where lv.mainSid = la.sid) as vinNo,
(select group_concat(lv.vehMark) from loan_secondary_sales_veh lv where lv.mainSid = la.sid) as vehMark,
ss.vinNo,
ss.vehmark,
<!-- (select group_concat(lv.vinNo) from loan_secondary_sales_veh lv where lv.mainSid = la.sid) as vinNo,
(select group_concat(lv.vehMark) from loan_secondary_sales_veh lv where lv.mainSid = la.sid) as vehMark,-->
la.bankName,
la.bankContractNo,
la.customerName,
@ -25,9 +27,18 @@
la.procInstId
from loan_secondary_sales_apply la
left join loan_secondary_sales_cost lc on lc.mainSid = la.sid
left join (select group_concat(lv.vinNo) as vinNo,group_concat(lv.vehMark) as vehmark,lv.mainSid from loan_secondary_sales_veh lv group by lv.mainSid) ss on ss.mainSid = la.sid
<where>
${ew.sqlSegment}
</where>
having 1 = 1
<if test="vinNo != null and vinNo != ''">
and ss.vinNo like concat('%', #{vinNo}, '%')
</if>
<if test="vehMark != null and vehMark != ''">
and ss.vehMark like concat('%', #{vehMark}, '%')
</if>
order by la.createTime desc
</select>
<update id="updateFlowFiled">
@ -83,7 +94,41 @@
la.nper,
la.currentPeriod,
la.alRepaidMoneyConPeriod,
la.beOverdueMoneyAndPeriod,la.loanSid,la.customerSid,la.salesOrderSid
la.beOverdueMoneyAndPeriod,
la.loanSid,
la.customerSid,
la.salesOrderSid
from loan_secondary_sales_apply la
where sid = #{sid}
</select>
<select id="getAppDetails" resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesapply.SecondarySalesAppVo">
select la.createDept,
la.createByName,
DATE_FORMAT(la.createTime, '%Y-%m-%d') as createDate,
la.customerName,
la.loanName,
la.loanContractNo,
la.bankName,
la.bankContractNo,
la.locationName,
la.inspect,
la.inspectSituation,
la.guaranteed,
la.insuranceSituation,
la.firstDate,
la.kilometerDriven,
la.illustrate,
la.files,
la.alRepaidMoney,
la.currentBeMoney,
la.wheFundOccMoney,
la.unexpiredMoney,
la.nper,
la.currentPeriod,
la.alRepaidMoneyConPeriod,
la.beOverdueMoneyAndPeriod,
la.salesOrderSid
from loan_secondary_sales_apply la
where sid = #{sid}
</select>

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyRest.java

@ -2,7 +2,6 @@ package com.yxt.anrui.riskcenter.biz.loansecondarysalesapply;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.LoanReturnInboundApplyVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.*;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*;
import com.yxt.common.core.query.PagerQuery;
@ -60,7 +59,7 @@ public class LoanSecondarySalesApplyRest implements LoanSecondarySalesApplyFeign
BusinessVariables bv = new BusinessVariables();
BeanUtil.copyProperties(query, bv);
bv.setModelId("");
return loanSecondarySalesApplyService.complete(bv,query.getVehicleEvaluation());
return loanSecondarySalesApplyService.complete(bv, query.getVehicleEvaluation());
}
@Override
@ -92,4 +91,9 @@ public class LoanSecondarySalesApplyRest implements LoanSecondarySalesApplyFeign
public ResultBean delegate(LoanSecondarySalesApplyDelegateQuery query) {
return loanSecondarySalesApplyService.delegate(query);
}
@Override
public ResultBean<SecondarySalesAppVo> getAppDetails(String sid) {
return loanSecondarySalesApplyService.getAppDetails(sid);
}
}

189
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesapply/LoanSecondarySalesApplyService.java

@ -130,13 +130,6 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
if (StringUtils.isNotBlank(query.getLoanContractNo())) {
qw.like("la.loanContractNo", query.getLoanContractNo());
}
//ToDo:车架号
if (StringUtils.isNotBlank(query.getVinNo())) {
}
//车牌号
if (StringUtils.isNotBlank(query.getVehMark())) {
}
//贷款人
if (StringUtils.isNotBlank(query.getLoanName())) {
qw.like("la.loanName", query.getLoanName());
@ -162,6 +155,9 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
qw.apply(StringUtils.isNotBlank(query.getCreateTimeStart()), "date_format (la.createTime,'%Y-%m-%d') >= date_format('" + query.getCreateTimeStart() + "','%Y-%m-%d')").
apply(StringUtils.isNotBlank(query.getCreateTimeEnd()), "date_format (la.createTime,'%Y-%m-%d') <= date_format('" + query.getCreateTimeEnd() + "','%Y-%m-%d')"
);
if (StringUtils.isNotBlank(query.getArrearsAll())) {
qw.like("lc.arrearsAll", query.getArrearsAll());
}
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
//=======================
@ -203,9 +199,8 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
}
}
}
qw.orderByDesc("la.createTime");
IPage<LoanSecondarySalesApply> page = PagerUtil.queryToPage(pq);
IPage<LoanSecondarySalesApplyVo> pagging = baseMapper.selectPageVo(page, qw);
IPage<LoanSecondarySalesApplyVo> pagging = baseMapper.selectPageVo(page, qw, query.getVinNo(), query.getVehMark());
List<LoanSecondarySalesApplyVo> paggingRecords = pagging.getRecords();
paggingRecords.removeAll(Collections.singleton(null));
if (!paggingRecords.isEmpty()) {
@ -227,6 +222,20 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
BeanUtil.copyProperties(query, bv);
LoanSecondarySalesApply loanSecondarySalesApply = fetchBySid(query.getBusinessSid());
bv.setModelId(loanSecondarySalesApply.getProcDefId());
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(query.getBusinessSid());
if (loanSecondarySalesCost != null) {
if ((loanSecondarySalesCost.getVehicleEvaluation() == null ? BigDecimal.ZERO : loanSecondarySalesCost.getVehicleEvaluation()).compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
}
}
appMap.put("sid", query.getBusinessSid());
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getPreviousNodesForReject(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<LoanSecondarySalesApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSecondarySalesApplyNodeVo.class)).collect(Collectors.toList());
@ -239,6 +248,24 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
BeanUtil.copyProperties(query, bv);
LoanSecondarySalesApply loanSecondarySalesApply = fetchBySid(query.getBusinessSid());
bv.setModelId(loanSecondarySalesApply.getProcDefId());
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
if ("Activity_0rm74ey".equals(bv.getTaskDefKey())) {//风控处置岗审批
if (StringUtils.isBlank(query.getVehicleEvaluation())) {
return rb.setMsg("请填写评估价格");
}
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(query.getBusinessSid());
if (loanSecondarySalesCost != null) {
if (new BigDecimal(query.getVehicleEvaluation()).compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
}
}
}
appMap.put("sid", query.getBusinessSid());
variables.put("app", appMap);
bv.setFormVariables(variables);
ResultBean<List<Map<String, Object>>> resultBean = flowTaskFeign.getNextNodesForSubmit(bv);
//判断数组是否为空,若为空则赋值,若不为空,则遍历循环将map中的数据赋值给TemplateApplyNodeVo
List<LoanSecondarySalesApplyNodeVo> voList = Optional.ofNullable(resultBean.getData()).orElse(new ArrayList<>()).stream().map(m -> JSON.parseObject(JSON.toJSONString(m), LoanSecondarySalesApplyNodeVo.class)).collect(Collectors.toList());
@ -267,6 +294,15 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
Map<String, Object> appMap = new HashMap<>();
appMap.put("sid", businessSid);
variables.put("app", appMap);
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(query.getBusinessSid());
if (loanSecondarySalesCost != null) {
if ((loanSecondarySalesCost.getVehicleEvaluation() == null ? BigDecimal.ZERO : loanSecondarySalesCost.getVehicleEvaluation()).compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
}
}
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -315,6 +351,20 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
Map<String, Object> variables = new HashMap<>();
Map<String, Object> appMap = new HashMap<>();
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(query.getBusinessSid());
if (loanSecondarySalesCost != null) {
if ((loanSecondarySalesCost.getVehicleEvaluation() == null ? BigDecimal.ZERO : loanSecondarySalesCost.getVehicleEvaluation()).compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
}
}
appMap.put("sid", query.getBusinessSid());
variables.put("app", appMap);
flowTaskVo.setValues(variables);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -395,10 +445,12 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(businessSid);
loanSecondarySalesCost.setVehicleEvaluation(new BigDecimal(price));
loanSecondarySalesCostService.updateById(loanSecondarySalesCost);
if (loanSecondarySalesCost.getVehicleEvaluation().compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
if (loanSecondarySalesCost != null) {
if ((loanSecondarySalesCost.getVehicleEvaluation() == null ? BigDecimal.ZERO : loanSecondarySalesCost.getVehicleEvaluation()).compareTo(loanSecondarySalesCost.getVehPrice()) > 0) {
variables.put("isTrue", true);
} else {
variables.put("isTrue", false);
}
}
}
appMap.put("sid", businessSid);
@ -451,7 +503,24 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
return rb.setMsg("操作失败!提交的数据不一致");
}
//ToDo:验证车辆是否已处置
List<LoanSecondarySalesVehVo> loanSecondarySalesVehVoList = dto.getLoanSecondarySalesVehVoList();
loanSecondarySalesVehVoList.removeAll(Collections.singleton(null));
if (loanSecondarySalesVehVoList.isEmpty()) {
return rb.setMsg("请选择车辆");
}
List<String> vinNoLists = new ArrayList<>();
List<String> chooseSidList = loanSecondarySalesVehVoList.stream().map(v -> v.getBusSid()).collect(Collectors.toList());
for (int i = 0; i < chooseSidList.size(); i++) {
String s = chooseSidList.get(i);
LoanReturnVehLedger loanReturnVehLedger = loanReturnVehLedgerService.fetchBySid(s);
if (!"未处置".equals(loanReturnVehLedger.getDisposal())) {
vinNoLists.add(loanReturnVehLedger.getVinNo());
}
}
vinNoLists.removeAll(Collections.singleton(null));
if (!vinNoLists.isEmpty()) {
return rb.setMsg(String.join(",", vinNoLists) + "车架号处置方式非未处置,不能二次销售");
}
ResultBean<String> resultBean = saveOrUpdateSecondarySales(dto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
@ -470,6 +539,17 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
bv.setBusinessSid(businessSid);
bv.setUserSid(dto.getUserSid());
bv.setFormVariables(variables);
List<String> orgPathList = Arrays.asList(dto.getOrgPath().split("/"));
SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(orgPathList.get(orgPathList.size() - 1)).getData();
if (sysOrganization == null) {
return rb.setMsg("当前所在的组织机构不存在");
}
if (StringUtils.isBlank(sysOrganization.getManagerSid())) {
// return rb.setMsg("当前所在的组织机构未设置主管人员");
sysOrganization.setManagerSid(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId());
}
String nextNodeUserSids_ = sysOrganization.getManagerSid();
bv.setNextNodeUserSids(nextNodeUserSids_);
if (r == 1) {
//ToDo:流程定义id
bv.setModelId(ProcDefEnum.LOANSECONDSALEAPPLY.getProDefId());
@ -550,11 +630,13 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
return rb.setMsg(userVoResultBean.getMsg());
}
loanSecondarySalesApply.setCreateByName(userVoResultBean.getData().getName());
List<UrlQuery> filss = dto.getFilesList();
List<String> filesList = filss.stream().map(v -> v.getUrl()).collect(Collectors.toList());
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanSecondarySalesApply.setFiles(files);
List<String> filss = dto.getFilesList();
filss.removeAll(Collections.singleton(null));
if (filss.size() > 0) {
if (!filss.isEmpty()) {
String files = String.join(",", filss).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanSecondarySalesApply.setFiles(files);
}
}
baseMapper.insert(loanSecondarySalesApply);
sid = loanSecondarySalesApply.getSid();
@ -575,11 +657,10 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
}
dto.setUserSid(loanSecondarySalesApply.getCreateBySid());
BeanUtil.copyProperties(dto, loanSecondarySalesApply, "sid");
List<UrlQuery> filss = dto.getFilesList();
List<String> filss = dto.getFilesList();
if (!filss.isEmpty()) {
List<String> filesList = filss.stream().map(v -> v.getUrl()).collect(Collectors.toList());
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
if (!filss.isEmpty()) {
String files = String.join(",", filss).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanSecondarySalesApply.setFiles(files);
}
} else {
@ -674,6 +755,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesVehVo.setModelSid(loanReturnVehLedger.getVehModelSid());
loanSecondarySalesVehVo.setConfigSid(loanReturnVehLedger.getConfigSid());
loanSecondarySalesVehVo.setBusVinSid(busVinSid);
loanSecondarySalesVehVo.setBusSid(s);
loanSecondarySalesVehVo.setVehType(loanReturnVehLedger.getVehType());
loanSecondarySalesVehVoList.add(loanSecondarySalesVehVo);
loanSecondarySalesApplyDetailsVo.setCustomerName(loanReturnVehLedger.getCustomer());
@ -690,12 +772,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
List<UrlQuery> list = new ArrayList<>();
if (StringUtils.isNotBlank(loanReturnInboundApply.getFiles())) {
List<String> fileList = Arrays.asList(loanReturnInboundApply.getFiles().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
for (int j = 0; j < fileList.size(); j++) {
UrlQuery urlQuery = new UrlQuery();
urlQuery.setUrl(fileList.get(j));
list.add(urlQuery);
}
loanSecondarySalesApplyDetailsVo.setFilesList(list);
loanSecondarySalesApplyDetailsVo.setFilesList(fileList);
}
}
LoanSecondarySalesCostVo loanSecondarySalesCost = new LoanSecondarySalesCostVo();
@ -731,6 +808,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesVehVo.setVehMark(loanReturnVehLedgerT.getVehMark());
loanSecondarySalesVehVo.setVinNo(loanReturnVehLedgerT.getVinNo());
loanSecondarySalesVehVo.setModelName(loanReturnVehLedgerT.getVehModel());
loanSecondarySalesVehVo.setBusSid(s);
loanSecondarySalesVehVoList.add(loanSecondarySalesVehVo);
}
@ -743,6 +821,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesVehVo.setVehMark(loanReturnVehLedger.getVehMark());
loanSecondarySalesVehVo.setVinNo(loanReturnVehLedger.getVinNo());
loanSecondarySalesVehVo.setModelName(loanReturnVehLedger.getVehModel());
loanSecondarySalesVehVo.setBusSid(s);
loanSecondarySalesVehVoList.add(loanSecondarySalesVehVo);
loanSecondarySalesApplyDetailsVo.setCustomerName(loanReturnVehLedger.getCustomer());
loanSecondarySalesApplyDetailsVo.setLoanName(loanReturnVehLedger.getBorrowerName());
@ -820,12 +899,7 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
List<UrlQuery> list = new ArrayList<>();
if (StringUtils.isNotBlank(files)) {
List<String> fileList = Arrays.asList(files.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
for (int i = 0; i < fileList.size(); i++) {
UrlQuery urlQuery = new UrlQuery();
urlQuery.setUrl(fileList.get(i));
list.add(urlQuery);
}
loanSecondarySalesApplyDetailsVo.setFilesList(list);
loanSecondarySalesApplyDetailsVo.setFilesList(fileList);
}
loanSecondarySalesApplyDetailsVo.setOrgPath(loanSecondarySalesApply.getOrgSidPath());
@ -839,8 +913,53 @@ public class LoanSecondarySalesApplyService extends MybatisBaseService<LoanSecon
loanSecondarySalesApplyDetailsVo.setLoanSecondarySalesVehVoList(loanSecondarySalesVehVoList);
}
LoanSecondarySalesCostVo loanSecondarySalesCost = loanSecondarySalesCostService.selectByMainSid(sid);
if (loanSecondarySalesCost != null) {
String filesss = loanSecondarySalesCost.getFilesss();
List<UrlQuery> lists = new ArrayList<>();
if (StringUtils.isNotBlank(filesss)) {
List<String> fileList = Arrays.asList(filesss.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
for (int i = 0; i < fileList.size(); i++) {
UrlQuery urlQuery = new UrlQuery();
urlQuery.setUrl(fileList.get(i));
lists.add(urlQuery);
}
loanSecondarySalesCost.setFiles(lists);
}
}
loanSecondarySalesApplyDetailsVo.setLoanSecondarySalesCost(loanSecondarySalesCost);
}
return rb.success().setData(loanSecondarySalesApplyDetailsVo);
}
public ResultBean<SecondarySalesAppVo> getAppDetails(String sid) {
ResultBean<SecondarySalesAppVo> rb = ResultBean.fireFail();
LoanSecondarySalesApply loanSecondarySalesApply = fetchBySid(sid);
if (loanSecondarySalesApply == null) {
return rb.setMsg("该申请不存在");
}
SecondarySalesAppVo secondarySalesAppVo = baseMapper.getAppDetails(sid);
if (StringUtils.isNotBlank(secondarySalesAppVo.getFiles())) {
List<String> fileList = Arrays.asList(secondarySalesAppVo.getFiles().split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
secondarySalesAppVo.setFilesList(fileList);
}
secondarySalesAppVo.setOrgPath(loanSecondarySalesApply.getOrgSidPath());
secondarySalesAppVo.setUserSid(loanSecondarySalesApply.getCreateBySid());
secondarySalesAppVo.setProcInstId(loanSecondarySalesApply.getProcInstId());
secondarySalesAppVo.setTaskId(loanSecondarySalesApply.getTaskId());
List<LoanSecondarySalesVehAppVo> loanSecondarySalesVehVoList = loanSecondarySalesVehService.selectByMainSidApp(sid);
loanSecondarySalesVehVoList.removeAll(Collections.singleton(null));
if (!loanSecondarySalesVehVoList.isEmpty()) {
secondarySalesAppVo.setLoanSecondarySalesVehVoList(loanSecondarySalesVehVoList);
}
LoanSecondarySalesCostAppVo loanSecondarySalesCost = loanSecondarySalesCostService.selectByMainSidApp(sid);
if (loanSecondarySalesCost != null) {
String filesss = loanSecondarySalesCost.getFilesss();
if (StringUtils.isNotBlank(filesss)) {
List<String> fileList = Arrays.asList(filesss.split(",")).stream().map(c -> fileUploadComponent.getUrlPrefix() + c).collect(Collectors.toList());
loanSecondarySalesCost.setFiles(fileList);
}
}
secondarySalesAppVo.setLoanSecondarySalesCost(loanSecondarySalesCost);
return rb.success().setData(secondarySalesAppVo);
}
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostMapper.java

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalescost;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesCostAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCost;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo;
import org.apache.ibatis.annotations.Mapper;
@ -16,4 +17,6 @@ public interface LoanSecondarySalesCostMapper extends BaseMapper<LoanSecondarySa
LoanSecondarySalesCostVo selectByMainSid(String sid);
LoanSecondarySalesCost selectMainSid(String sid);
LoanSecondarySalesCostAppVo selectByMainSidApp(String sid);
}

9
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostMapper.xml

@ -9,7 +9,7 @@
<select id="selectByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo">
SELECT *
SELECT *,files filesss
FROM loan_secondary_sales_cost
where mainSid = #{sid}
</select>
@ -19,4 +19,11 @@
from loan_secondary_sales_cost
where mainSid = #{sid}
</select>
<select id="selectByMainSidApp"
resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesCostAppVo">
select *,files filesss
from loan_secondary_sales_cost
where mainSid = #{sid}
</select>
</mapper>

25
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescost/LoanSecondarySalesCostService.java

@ -2,13 +2,17 @@ package com.yxt.anrui.riskcenter.biz.loansecondarysalescost;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loanoverduefin.UrlQuery;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesCostAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCost;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCostVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@ -38,11 +42,24 @@ public class LoanSecondarySalesCostService extends MybatisBaseService<LoanSecond
BeanUtil.copyProperties(loanSecondarySalesCost, loanSecondarySalesCost1);
loanSecondarySalesCost1.setMainSid(sid);
List<UrlQuery> filss = loanSecondarySalesCost.getFiles();
List<String> filesList = filss.stream().map(v -> v.getUrl()).collect(Collectors.toList());
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanSecondarySalesCost1.setFiles(files);
filss.removeAll(Collections.singleton(null));
if (!filss.isEmpty()) {
List<String> filesList = filss.stream().map(v -> v.getUrl()).collect(Collectors.toList());
filesList.removeAll(Collections.singleton(null));
if (!filesList.isEmpty()) {
String files = String.join(",", filesList).replaceAll(fileUploadComponent.getUrlPrefix(), "");
loanSecondarySalesCost1.setFiles(files);
}
} else {
loanSecondarySalesCost1.setFiles("");
}
if (StringUtils.isBlank(loanSecondarySalesCost.getVehPrice())) {
loanSecondarySalesCost1.setVehPrice(BigDecimal.ZERO);
}
baseMapper.insert(loanSecondarySalesCost1);
}
public LoanSecondarySalesCostAppVo selectByMainSidApp(String sid) {
return baseMapper.selectByMainSidApp(sid);
}
}

15
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerMapper.java

@ -0,0 +1,15 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalescustomer;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomer;
import org.apache.ibatis.annotations.Mapper;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Mapper
public interface LoanSecondarySalesCustomerMapper extends BaseMapper<LoanSecondarySalesCustomer> {
LoanSecondarySalesCustomer selectByMainSid(String mainSid);
}

10
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerMapper.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.riskcenter.biz.loansecondarysalescustomer.LoanSecondarySalesCustomerMapper">
<select id="selectByMainSid"
resultType="com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomer">
select *
from loan_secondary_sales_customer
where mainSid = #{mainSid}
</select>
</mapper>

34
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerRest.java

@ -0,0 +1,34 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalescustomer;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomerDto;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomerFeign;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.SalesInitVo;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@RestController
@RequestMapping("v1/LoanSecondarySalesCustomer")
@Api(tags = "二次销售补充客户信息")
public class LoanSecondarySalesCustomerRest implements LoanSecondarySalesCustomerFeign {
@Autowired
private LoanSecondarySalesCustomerService loanSecondarySalesCustomerService;
@Override
public ResultBean saveOrUpdate(LoanSecondarySalesCustomerDto dto) {
return loanSecondarySalesCustomerService.saveSalesCustomer(dto);
}
@Override
public ResultBean<SalesInitVo> getDetails(String sid) {
return loanSecondarySalesCustomerService.getDetails(sid);
}
}

109
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalescustomer/LoanSecondarySalesCustomerService.java

@ -0,0 +1,109 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalescustomer;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.crm.api.crmcustomer.CrmCustomer;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTemp;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CustomerSecondSalesDto;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApply;
import com.yxt.anrui.riskcenter.api.loansecondarysalescost.LoanSecondarySalesCost;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomer;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.LoanSecondarySalesCustomerDto;
import com.yxt.anrui.riskcenter.api.loansecondarysalescustomer.SalesInitVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.anrui.riskcenter.biz.loansecondarysalesapply.LoanSecondarySalesApplyService;
import com.yxt.anrui.riskcenter.biz.loansecondarysalescost.LoanSecondarySalesCostMapper;
import com.yxt.anrui.riskcenter.biz.loansecondarysalescost.LoanSecondarySalesCostService;
import com.yxt.anrui.riskcenter.biz.loansecondarysalesveh.LoanSecondarySalesVehService;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/30
**/
@Service
public class LoanSecondarySalesCustomerService extends MybatisBaseService<LoanSecondarySalesCustomerMapper, LoanSecondarySalesCustomer> {
@Autowired
private CrmCustomerTempFeign crmCustomerTempFeign;
@Autowired
private LoanSecondarySalesApplyService loanSecondarySalesApplyService;
@Autowired
private LoanSecondarySalesVehService loanSecondarySalesVehService;
@Autowired
private LoanSecondarySalesCostMapper loanSecondarySalesCostMapper;
public ResultBean saveSalesCustomer(LoanSecondarySalesCustomerDto dto) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesCustomer loanSecondarySalesCustomer = baseMapper.selectByMainSid(dto.getMainSid());
String customerSid = dto.getCustomerSid();
LoanSecondarySalesApply loanSecondarySalesApply = loanSecondarySalesApplyService.fetchBySid(dto.getMainSid());
String userSid = loanSecondarySalesApply.getCreateBySid();
String orgPath = loanSecondarySalesApply.getOrgSidPath();
if (loanSecondarySalesCustomer == null) {
//新增客户
CustomerSecondSalesDto customerSecondSalesDto = new CustomerSecondSalesDto();
BeanUtil.copyProperties(dto, customerSecondSalesDto);
customerSecondSalesDto.setUserSid(userSid);
customerSecondSalesDto.setOrgPath(orgPath);
ResultBean<String> resultBean = crmCustomerTempFeign.updateTemp(customerSecondSalesDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
customerSid = resultBean.getData();
loanSecondarySalesCustomer = new LoanSecondarySalesCustomer();
BeanUtil.copyProperties(dto, loanSecondarySalesCustomer);
loanSecondarySalesCustomer.setCustomerSid(customerSid);
baseMapper.insert(loanSecondarySalesCustomer);
} else {
//新增客户
CustomerSecondSalesDto customerSecondSalesDto = new CustomerSecondSalesDto();
BeanUtil.copyProperties(dto, customerSecondSalesDto);
customerSecondSalesDto.setUserSid(userSid);
customerSecondSalesDto.setOrgPath(orgPath);
ResultBean<String> resultBean = crmCustomerTempFeign.updateTemp(customerSecondSalesDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
customerSid = resultBean.getData();
BeanUtil.copyProperties(dto, loanSecondarySalesCustomer);
loanSecondarySalesCustomer.setCustomerSid(customerSid);
baseMapper.updateById(loanSecondarySalesCustomer);
}
return rb.success();
}
public ResultBean<SalesInitVo> getDetails(String sid) {
ResultBean<SalesInitVo> rb = ResultBean.fireFail();
SalesInitVo salesInitVo = new SalesInitVo();
LoanSecondarySalesCustomer loanSecondarySalesCustomer = baseMapper.selectByMainSid(sid);
if (loanSecondarySalesCustomer != null) {
BeanUtil.copyProperties(loanSecondarySalesCustomer, salesInitVo);
} else {
salesInitVo.setMainSid(sid);
}
List<LoanSecondarySalesVehVo> loanSecondarySalesVehVoList = loanSecondarySalesVehService.selectByMainSid(sid);
loanSecondarySalesVehVoList.removeAll(Collections.singleton(null));
if (!loanSecondarySalesVehVoList.isEmpty()) {
salesInitVo.setLoanSecondarySalesVehVoList(loanSecondarySalesVehVoList);
}
LoanSecondarySalesApply loanSecondarySalesApply = loanSecondarySalesApplyService.fetchBySid(sid);
if (!"已办结".equals(loanSecondarySalesApply.getNodeState())) {
return rb.setMsg("该申请未办结");
}
salesInitVo.setMainSid(sid);
salesInitVo.setCreateDept(loanSecondarySalesApply.getCreateDept());
salesInitVo.setSaleDate(loanSecondarySalesApply.getCloseDate());
LoanSecondarySalesCost loanSecondarySalesCost = loanSecondarySalesCostMapper.selectMainSid(sid);
salesInitVo.setSalePrice(loanSecondarySalesCost.getVehPrice().toString());
return rb.success().setData(salesInitVo);
}
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.java

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalesveh;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import org.apache.ibatis.annotations.Mapper;
@ -17,4 +18,6 @@ public interface LoanSecondarySalesVehMapper extends BaseMapper<LoanSecondarySal
int deleteByMainSid(String s);
List<LoanSecondarySalesVehVo> selectByMainSid(String sid);
List<LoanSecondarySalesVehAppVo> selectByMainSidApp(String sid);
}

13
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehMapper.xml

@ -15,7 +15,18 @@
lv.modelName,
lv.busVinSid,
lv.modelSid,
lv.configSid
lv.configSid,
lv.busSid
from loan_secondary_sales_veh lv
where mainSid = #{sid}
</select>
<select id="selectByMainSidApp"
resultType="com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo">
select lv.vinNo,
lv.vehMark,
lv.vehType,
lv.modelName
from loan_secondary_sales_veh lv
where mainSid = #{sid}
</select>

5
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loansecondarysalesveh/LoanSecondarySalesVehService.java

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.biz.loansecondarysalesveh;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesVehAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVeh;
import com.yxt.anrui.riskcenter.api.loansecondarysalesveh.LoanSecondarySalesVehVo;
import com.yxt.common.base.service.MybatisBaseService;
@ -35,4 +36,8 @@ public class LoanSecondarySalesVehService extends MybatisBaseService<LoanSeconda
baseMapper.insert(loanSecondarySalesVeh);
}
}
public List<LoanSecondarySalesVehAppVo> selectByMainSidApp(String sid) {
return baseMapper.selectByMainSidApp(sid);
}
}

2
anrui-system-ui/src/views/flow/havereadList.vue

@ -251,7 +251,7 @@ export default {
}
selectUrl(this.selectUrl_list).then((response) => {
if (response.success && response.data.url !== '') {
// this.url = 'http://192.168.1.103:9531' + response.data.url + '?token=' + getStorage() + '&data=' + encodeURI((JSON.stringify(parameter_list)))
// this.url = 'http://192.168.0.109:9531' + response.data.url + '?token=' + getStorage() + '&data=' + encodeURI((JSON.stringify(parameter_list)))
this.url = 'http://anrui.yyundong.com' + response.data.url + '?token=' + getStorage() + '&data=' + encodeURI((JSON.stringify(parameter_list)))
// this.url = 'http://120.46.172.184' + response.data.url + '?token=' + getStorage() + '&data=' + encodeURI((JSON.stringify(parameter_list)))
} else if (response.success && response.data.url === '') {

67
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/base/common/ItemEditTextInfoCommon.java

@ -0,0 +1,67 @@
package com.yxt.anrui.terminal.api.base.common;
import java.util.List;
public class ItemEditTextInfoCommon {
// 标题 如:身份证
private String title;
// 类型 1(上传图片)
private int type;
// 是否可空, 可不填 true
private boolean nullAble;
// 保存
private String key;
// 保存图片使用 type=1
private List<String> filesPath;
// 保存文本使用
private String text;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public boolean isNullAble() {
return nullAble;
}
public void setNullAble(boolean nullAble) {
this.nullAble = nullAble;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public List<String> getFilesPath() {
return filesPath;
}
public void setFilesPath(List<String> filesPath) {
this.filesPath = filesPath;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}

19
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondSalesInitVo.java

@ -0,0 +1,19 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import com.yxt.anrui.terminal.api.base.common.ItemEditTextInfoCommon;
import lombok.Data;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondSalesInitVo {
private String title;
private List<ItemEditTextInfoCommon> list;
}

98
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesAppVos.java

@ -0,0 +1,98 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.yxt.anrui.terminal.api.base.common.CarModelVo;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesAppVos {
private String publishInfo;
@ApiModelProperty("申请部门")
@JsonIgnore
private String createDept;
@ApiModelProperty("申请人")
@JsonIgnore
private String createByName;
@ApiModelProperty("申请日期")
private String createDate;
@ApiModelProperty("客户名称")
private String customerName;
@ApiModelProperty("贷款人")
private String loanName;
@ApiModelProperty("贷款合同编号")
private String loanContractNo;
@ApiModelProperty("资方")
private String bankName;
@ApiModelProperty("资方合同编号")
private String bankContractNo;
@ApiModelProperty("停放地点")
private String locationName;
@ApiModelProperty("是否年检")
private String inspect;
@ApiModelProperty("年检情况")
private String inspectSituation;
@ApiModelProperty("是否已出保")
private String guaranteed;
@ApiModelProperty("保险情况")
private String insuranceSituation;
@ApiModelProperty("首次登记日期")
private String firstDate;
@ApiModelProperty("当前行驶公里数")
private String kilometerDriven;
@ApiModelProperty("其他车况说明")
private String illustrate;
@ApiModelProperty("车辆照片")
private List<String> filesList = new ArrayList<>();
@ApiModelProperty("已还金额")
private String alRepaidMoney;
@ApiModelProperty("当前逾期金额")
@JsonIgnore
private String currentBeMoney;
@ApiModelProperty("其中资金占用费")
@JsonIgnore
private String wheFundOccMoney;
@ApiModelProperty("未到期金额")
private String unexpiredMoney;
@ApiModelProperty("总期数")
@JsonIgnore
private String nper;
@ApiModelProperty("当前期数")
@JsonIgnore
private String currentPeriod;
@ApiModelProperty("已还金额换算期数")
private String alRepaidMoneyConPeriod;
@ApiModelProperty("逾期金额换算期数")
private String beOverdueMoneyAndPeriod;
@ApiModelProperty("当前逾期金额/其中资金占用费")
private String yqzjzyMoney;
@ApiModelProperty("总期数/当前期数")
private String qsCount;
@ApiModelProperty("车辆列表")
private List<SecondarySalesVehAppVo> loanSecondarySalesVehVoList = new ArrayList<>();
@ApiModelProperty("费用明细")
private SecondarySalesCostAppVo loanSecondarySalesCost;
@ApiModelProperty("申请人sid")
private String userSid;
private String orgPath;
@ApiModelProperty(value = "任务id")
private String taskId;
@ApiModelProperty(value = "流程实例id")
private String procInstId;
@ApiModelProperty("销售订单sid")
private String salesOrderSid;
private CarModelVo jrfa;
}

100
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesCostAppVo.java

@ -0,0 +1,100 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesCostAppVo {
@ApiModelProperty("欠款合计")
private String arrearsAll;
@ApiModelProperty("贷款保证金")
private String loanDeposit;
@ApiModelProperty("车辆售价")
private String vehPrice;
@ApiModelProperty("催收费用")
private String collectionCost;
@ApiModelProperty("资方结清费用")
@JsonIgnore
private String bankSettleCost;
@ApiModelProperty("资方结清费用承担方")
@JsonIgnore
private String bankSettleCostAssume;
@JsonIgnore
private String bankSettleCostAssumeKey;
private String bankSettleCostAssumeDetails;
@ApiModelProperty("车辆违章费用")
@JsonIgnore
private String vehicleViolationCost;
@ApiModelProperty("车辆违章费用承担方")
@JsonIgnore
private String vehicleViolationCostAssume;
@JsonIgnore
private String vehicleViolationCostAssumeKey;
private String vehicleViolationCostAssumeDetails;
@ApiModelProperty("年检费")
@JsonIgnore
private String inspectYearCost;
@ApiModelProperty("年检费承担方")
@JsonIgnore
private String inspectYearCostAssume;
@JsonIgnore
private String inspectYearCostAssumeKey;
private String inspectYearCostAssumeDetails;
@ApiModelProperty("保险费")
@JsonIgnore
private String insureCost;
@ApiModelProperty("保险费承担方")
@JsonIgnore
private String insureCostAssume;
@JsonIgnore
private String insureCostAssumeKey;
private String insureCostAssumeDetails;
@ApiModelProperty("过户费")
@JsonIgnore
private String ownershipCost;
@ApiModelProperty("过户费承担方")
@JsonIgnore
private String ownershipCostAssume;
@JsonIgnore
private String ownershipCostAssumeKey;
private String ownershipCostAssumeDetails;
@ApiModelProperty("停车费")
@JsonIgnore
private String stopCost;
@ApiModelProperty("停车费承担方")
@JsonIgnore
private String stopCostAssume;
@JsonIgnore
private String stopCostAssumeKey;
private String stopCostAssumeDetails;
@ApiModelProperty("其他费用")
@JsonIgnore
private String otherCost;
@ApiModelProperty("其他费用承担方")
@JsonIgnore
private String otherCostAssume;
@JsonIgnore
private String otherCostAssumeKey;
private String otherCostAssumeDetails;
@ApiModelProperty("费用说明")
private String costDescription;
@ApiModelProperty("预计亏损金额")
private String lossPrice;
@ApiModelProperty("后续欠款处置方向")
private String debtDisposal;
@ApiModelProperty("附件")
private List<String> files = new ArrayList<>();
@ApiModelProperty("车辆评估")
private String vehicleEvaluation;
}

64
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesFeign.java

@ -0,0 +1,64 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDelegateQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDto;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesTaskQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@FeignClient(
contextId = "terminal-SecondarySales",
name = "anrui-terminal",
path = "/risk/v1/SecondarySales",
fallback = SecondarySalesFeignFallback.class)
public interface SecondarySalesFeign {
@ApiOperation("办理")
@PutMapping("/agreeSecondarySales")
@ResponseBody
ResultBean agreeSecondarySales(@RequestBody SecondarySalesDto dto);
@ApiOperation("驳回")
@PutMapping("/rejectSecondarySales")
@ResponseBody
ResultBean rejectSecondarySales(@RequestBody SecondarySalesTaskQuery query);
@ApiOperation("撤回")
@PutMapping("/recallSecondarySales")
@ResponseBody
ResultBean recallSecondarySales(@RequestBody SecondarySalesTaskQuery query);
@ApiOperation("终止")
@PutMapping("/stopSecondarySales")
@ResponseBody
ResultBean stopSecondarySales(@RequestBody SecondarySalesTaskQuery query);
@ApiOperation("获取流程操作标题")
@GetMapping("/getFlowOperateTitle")
@ResponseBody
ResultBean<String> getFlowOperateTitle(@SpringQueryMap SecondarySalesQuery query);
@ApiOperation("详情")
@GetMapping("/getSecondarySales/{sid}")
@ResponseBody
ResultBean<SecondarySalesAppVos> getSecondarySales(@PathVariable("sid") String sid);
@ApiOperation(value = "加签")
@PutMapping(value = "/delegate")
@ResponseBody
public ResultBean delegate(@RequestBody SecondarySalesDelegateQuery delegateQuery);
@ApiOperation(value = "特殊环节初始化")
@GetMapping(value = "/getFlowOperateTitleBy")
@ResponseBody
ResultBean<SecondSalesInitVo> getFlowOperateTitleBy(@SpringQueryMap SecondarySalesQuery query);
}

12
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import org.springframework.stereotype.Component;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Component
public class SecondarySalesFeignFallback {
}

22
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/SecondarySalesVehAppVo.java

@ -0,0 +1,22 @@
package com.yxt.anrui.terminal.api.risk.secondarysales;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesVehAppVo {
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车牌号")
private String vehMark;
@ApiModelProperty("车辆类型")
private String vehType;
@ApiModelProperty("车型")
private String modelName;
}

24
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesDelegateQuery.java

@ -0,0 +1,24 @@
package com.yxt.anrui.terminal.api.risk.secondarysales.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesDelegateQuery {
private String userSid;
@ApiModelProperty("流程实例id")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("审批人sid")
private String assignee;
@ApiModelProperty("填写意见")
private String views;
}

38
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesDto.java

@ -0,0 +1,38 @@
package com.yxt.anrui.terminal.api.risk.secondarysales.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesDto {
@ApiModelProperty(value = "任务id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
@ApiModelProperty(value = "流程id")
@NotBlank(message = "参数错误:procInsId")
@JsonProperty("procInsId")
private String instanceId;
@ApiModelProperty(value = "意见")
private String comment;
@ApiModelProperty(value = "业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
@ApiModelProperty(value = "用户sid")
@NotBlank(message = "参数错误:userSid")
private String userSid;
@ApiModelProperty(value = "节点id")
@NotBlank(message = "参数错误:taskDefKey")
private String taskDefKey;
@ApiModelProperty("车辆评估价格")
private String vehicleEvaluation;
}

23
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesQuery.java

@ -0,0 +1,23 @@
package com.yxt.anrui.terminal.api.risk.secondarysales.flowable;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesQuery {
@ApiModelProperty(value = "节点key")
private String taskDefKey;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty(value = "0 上一环节 1下一环节")
@NotNull(message = "参数错误:next")
private Integer next;
}

45
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/risk/secondarysales/flowable/SecondarySalesTaskQuery.java

@ -0,0 +1,45 @@
package com.yxt.anrui.terminal.api.risk.secondarysales.flowable;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Data
public class SecondarySalesTaskQuery {
/**
* 终止驳回撤回
*/
@ApiModelProperty("任务Id")
@NotBlank(message = "参数错误:taskId")
private String taskId;
/**
* 终止驳回撤回
*/
@ApiModelProperty("业务sid")
@NotBlank(message = "参数错误:businessSid")
private String businessSid;
/**
* 终止驳回
*/
@ApiModelProperty("任务意见")
private String comment;
/**
* 终止撤回驳回
*/
@ApiModelProperty("用户Sid")
private String userSid;
/**
* 终止
*/
@ApiModelProperty("流程实例Id")
@JsonProperty("procInsId")
private String instanceId;
}

68
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/secondarysales/SecondarySalesRest.java

@ -0,0 +1,68 @@
package com.yxt.anrui.terminal.biz.risk.secondarysales;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondSalesInitVo;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesAppVos;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesFeign;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDelegateQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDto;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesTaskQuery;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Controller
@RequestMapping("/risk/v1/SecondarySales")
@Api(tags = "交回车辆二次销售审批")
public class SecondarySalesRest implements SecondarySalesFeign {
@Autowired
private SecondarySalesService secondarySalesService;
@Override
public ResultBean agreeSecondarySales(SecondarySalesDto dto) {
return secondarySalesService.agreeSecondarySales(dto);
}
@Override
public ResultBean rejectSecondarySales(SecondarySalesTaskQuery query) {
return secondarySalesService.rejectSecondarySales(query);
}
@Override
public ResultBean recallSecondarySales(SecondarySalesTaskQuery query) {
return secondarySalesService.recallSecondarySales(query);
}
@Override
public ResultBean stopSecondarySales(SecondarySalesTaskQuery query) {
return secondarySalesService.stopSecondarySales(query);
}
@Override
public ResultBean<String> getFlowOperateTitle(SecondarySalesQuery query) {
return secondarySalesService.getFlowOperateTitle(query);
}
@Override
public ResultBean<SecondarySalesAppVos> getSecondarySales(String sid) {
return secondarySalesService.getSecondarySales(sid);
}
@Override
public ResultBean delegate(SecondarySalesDelegateQuery delegateQuery) {
return secondarySalesService.delegate(delegateQuery);
}
@Override
public ResultBean<SecondSalesInitVo> getFlowOperateTitleBy(SecondarySalesQuery query) {
return secondarySalesService.getFlowOperateTitleBy(query);
}
}

252
anrui-terminal/anrui-terminal-biz/src/main/java/com/yxt/anrui/terminal/biz/risk/secondarysales/SecondarySalesService.java

@ -0,0 +1,252 @@
package com.yxt.anrui.terminal.biz.risk.secondarysales;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.yxt.anrui.fin.api.finbillfile.FinBillFileVo;
import com.yxt.anrui.portal.api.appsubsetversion.AppSubVersionVo;
import com.yxt.anrui.riskcenter.api.loanreturninboundapply.ReturnAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.LoanSecondarySalesApplyFeign;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.SecondarySalesAppVo;
import com.yxt.anrui.riskcenter.api.loansecondarysalesapply.flowable.*;
import com.yxt.anrui.terminal.api.autoservice.advanceInvoice.ItemEditTextInfo;
import com.yxt.anrui.terminal.api.base.common.CarModelVo;
import com.yxt.anrui.terminal.api.base.common.ItemEditTextInfoCommon;
import com.yxt.anrui.terminal.api.risk.returninbound.ReturnInboundAppVo;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondSalesInitVo;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesAppVos;
import com.yxt.anrui.terminal.api.risk.secondarysales.SecondarySalesCostAppVo;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDelegateQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesDto;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesQuery;
import com.yxt.anrui.terminal.api.risk.secondarysales.flowable.SecondarySalesTaskQuery;
import com.yxt.anrui.terminal.api.supplychain.vehicleApply.VehicleApplyCarPageVo;
import com.yxt.anrui.terminal.biz.base.common.CommonService;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.*;
/**
* @description:
* @author: dimengzhe
* @date: 2024/1/29
**/
@Service
public class SecondarySalesService {
@Autowired
private LoanSecondarySalesApplyFeign loanSecondarySalesApplyFeign;
@Autowired
private CommonService commonService;
public ResultBean agreeSecondarySales(SecondarySalesDto dto) {
ResultBean rb = ResultBean.fireFail();
CompleteLoanSecondarySalesApplyDto completeDto = new CompleteLoanSecondarySalesApplyDto();
BeanUtil.copyProperties(dto, completeDto);
ResultBean resultBean = loanSecondarySalesApplyFeign.complete(completeDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean rejectSecondarySales(SecondarySalesTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesApplyTaskQuery loanSecondarySalesApplyTaskQuery = new LoanSecondarySalesApplyTaskQuery();
BeanUtil.copyProperties(query, loanSecondarySalesApplyTaskQuery);
ResultBean resultBean = loanSecondarySalesApplyFeign.taskReject(loanSecondarySalesApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean recallSecondarySales(SecondarySalesTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesApplyTaskQuery loanSecondarySalesApplyTaskQuery = new LoanSecondarySalesApplyTaskQuery();
BeanUtil.copyProperties(query, loanSecondarySalesApplyTaskQuery);
ResultBean resultBean = loanSecondarySalesApplyFeign.revokeProcess(loanSecondarySalesApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean stopSecondarySales(SecondarySalesTaskQuery query) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesApplyTaskQuery loanSecondarySalesApplyTaskQuery = new LoanSecondarySalesApplyTaskQuery();
BeanUtil.copyProperties(query, loanSecondarySalesApplyTaskQuery);
ResultBean resultBean = loanSecondarySalesApplyFeign.breakProcess(loanSecondarySalesApplyTaskQuery);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
return rb.success().setData(resultBean.getData());
}
public ResultBean<String> getFlowOperateTitle(SecondarySalesQuery query) {
ResultBean<String> rb = ResultBean.fireFail();
//0 上一环节 1下一环节
int next = query.getNext();
LoanSecondarySalesApplyNodeQuery getNodeQuery = new LoanSecondarySalesApplyNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<LoanSecondarySalesApplyNodeVo>> getPreviousNodesForReject = loanSecondarySalesApplyFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<LoanSecondarySalesApplyNodeVo>> getNextNodesForSubmit = loanSecondarySalesApplyFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
return rb.success().setData(data);
}
public ResultBean<SecondarySalesAppVos> getSecondarySales(String sid) {
ResultBean<SecondarySalesAppVos> rb = ResultBean.fireFail();
ResultBean<SecondarySalesAppVo> resultBean = loanSecondarySalesApplyFeign.getAppDetails(sid);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
SecondarySalesAppVos secondarySalesAppVos = new SecondarySalesAppVos();
BeanUtil.copyProperties(resultBean.getData(), secondarySalesAppVos);
secondarySalesAppVos.setPublishInfo(secondarySalesAppVos.getCreateDept() + "-" + secondarySalesAppVos.getCreateByName());
if (StringUtils.isNotBlank(secondarySalesAppVos.getNper()) && StringUtils.isNotBlank(secondarySalesAppVos.getCurrentPeriod())) {
secondarySalesAppVos.setQsCount(secondarySalesAppVos.getNper() + "/" + secondarySalesAppVos.getCurrentPeriod());
}
if (StringUtils.isNotBlank(secondarySalesAppVos.getCurrentBeMoney()) && StringUtils.isNotBlank(secondarySalesAppVos.getWheFundOccMoney())) {
secondarySalesAppVos.setYqzjzyMoney(secondarySalesAppVos.getCurrentBeMoney() + "/" + secondarySalesAppVos.getWheFundOccMoney());
}
SecondarySalesCostAppVo secondarySalesCostAppVo = secondarySalesAppVos.getLoanSecondarySalesCost();
if (secondarySalesCostAppVo != null) {
String bankSettleCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getBankSettleCost())) {
bankSettleCostAssumeDetails = bankSettleCostAssumeDetails + secondarySalesCostAppVo.getBankSettleCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getBankSettleCostAssume())) {
bankSettleCostAssumeDetails = bankSettleCostAssumeDetails + secondarySalesCostAppVo.getBankSettleCostAssume() + "承担";
}
secondarySalesCostAppVo.setBankSettleCostAssumeDetails(bankSettleCostAssumeDetails);
//车辆违章
String vehicleViolationCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getVehicleViolationCost())) {
vehicleViolationCostAssumeDetails = vehicleViolationCostAssumeDetails + secondarySalesCostAppVo.getVehicleViolationCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getVehicleViolationCostAssume())) {
vehicleViolationCostAssumeDetails = vehicleViolationCostAssumeDetails + secondarySalesCostAppVo.getVehicleViolationCostAssume() + "承担";
}
secondarySalesCostAppVo.setVehicleViolationCostAssumeDetails(vehicleViolationCostAssumeDetails);
//年检费
String inspectYearCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getInspectYearCost())) {
inspectYearCostAssumeDetails = inspectYearCostAssumeDetails + secondarySalesCostAppVo.getInspectYearCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getInspectYearCostAssume())) {
inspectYearCostAssumeDetails = inspectYearCostAssumeDetails + secondarySalesCostAppVo.getInspectYearCostAssume() + "承担";
}
secondarySalesCostAppVo.setInspectYearCostAssumeDetails(inspectYearCostAssumeDetails);
//保险费
String insureCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getInsureCost())) {
insureCostAssumeDetails = insureCostAssumeDetails + secondarySalesCostAppVo.getInsureCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getInsureCostAssume())) {
insureCostAssumeDetails = insureCostAssumeDetails + secondarySalesCostAppVo.getInsureCostAssume() + "承担";
}
secondarySalesCostAppVo.setInsureCostAssumeDetails(insureCostAssumeDetails);
//过户费
String ownershipCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getOwnershipCost())) {
ownershipCostAssumeDetails = ownershipCostAssumeDetails + secondarySalesCostAppVo.getOwnershipCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getOwnershipCostAssume())) {
ownershipCostAssumeDetails = ownershipCostAssumeDetails + secondarySalesCostAppVo.getOwnershipCostAssume() + "承担";
}
secondarySalesCostAppVo.setOwnershipCostAssumeDetails(ownershipCostAssumeDetails);
//停车费
String stopCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getStopCost())) {
stopCostAssumeDetails = stopCostAssumeDetails + secondarySalesCostAppVo.getStopCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getStopCostAssume())) {
stopCostAssumeDetails = stopCostAssumeDetails + secondarySalesCostAppVo.getStopCostAssume() + "承担";
}
secondarySalesCostAppVo.setStopCostAssumeDetails(stopCostAssumeDetails);
//其他费用
String otherCostAssumeDetails = "";
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getOtherCost())) {
otherCostAssumeDetails = otherCostAssumeDetails + secondarySalesCostAppVo.getOtherCost() + "/";
}
if (StringUtils.isNotBlank(secondarySalesCostAppVo.getOtherCostAssume())) {
otherCostAssumeDetails = otherCostAssumeDetails + secondarySalesCostAppVo.getOtherCostAssume() + "承担";
}
secondarySalesCostAppVo.setOtherCostAssumeDetails(otherCostAssumeDetails);
}
ResultBean<CarModelVo> getLoanSolution = commonService.getLoanSolution(secondarySalesAppVos.getSalesOrderSid());
CarModelVo carModelVo = getLoanSolution.getData();
secondarySalesAppVos.setJrfa(carModelVo);
return rb.success().setData(secondarySalesAppVos);
}
public ResultBean delegate(SecondarySalesDelegateQuery delegateQuery) {
ResultBean rb = ResultBean.fireFail();
LoanSecondarySalesApplyDelegateQuery delegateQuery1 = new
LoanSecondarySalesApplyDelegateQuery();
BeanUtil.copyProperties(delegateQuery, delegateQuery1);
ResultBean delegate = loanSecondarySalesApplyFeign.delegate(delegateQuery1);
return rb.success();
}
public ResultBean<SecondSalesInitVo> getFlowOperateTitleBy(SecondarySalesQuery query) {
ResultBean<SecondSalesInitVo> rb = ResultBean.fireFail();
SecondSalesInitVo secondSalesInitVo = new SecondSalesInitVo();
int next = query.getNext();
LoanSecondarySalesApplyNodeQuery getNodeQuery = new LoanSecondarySalesApplyNodeQuery();
BeanUtil.copyProperties(query, getNodeQuery);
String data = "";
if (next == 0) {
ResultBean<List<LoanSecondarySalesApplyNodeVo>> getPreviousNodesForReject = loanSecondarySalesApplyFeign.getPreviousNodesForReject(getNodeQuery);
if (getPreviousNodesForReject.getSuccess()) {
getPreviousNodesForReject.getData().removeAll(Collections.singleton(null));
data = getPreviousNodesForReject.getData().get(0).getName();
} else {
return rb.setMsg(getPreviousNodesForReject.getMsg());
}
} else if (next == 1) {
ResultBean<List<LoanSecondarySalesApplyNodeVo>> getNextNodesForSubmit = loanSecondarySalesApplyFeign.getNextNodesForSubmit(getNodeQuery);
if (getNextNodesForSubmit.getSuccess()) {
getNextNodesForSubmit.getData().removeAll(Collections.singleton(null));
data = getNextNodesForSubmit.getData().get(0).getName();
} else {
return rb.setMsg(getNextNodesForSubmit.getMsg());
}
} else {
return rb.setMsg("参数错误:next");
}
secondSalesInitVo.setTitle(data);
List<ItemEditTextInfoCommon> itemEditTextInfos = new ArrayList<>();
ItemEditTextInfoCommon itemEditTextInfo = new ItemEditTextInfoCommon();
itemEditTextInfo.setTitle("风控中心车辆评估价");
itemEditTextInfo.setType(2);
itemEditTextInfo.setNullAble(false);
itemEditTextInfo.setKey("vehicleEvaluation");
ResultBean<SecondarySalesAppVos> getSecondarySales = getSecondarySales(query.getBusinessSid());
SecondarySalesAppVos secondarySalesAppVos = getSecondarySales.getData();
itemEditTextInfo.setText(secondarySalesAppVos.getLoanSecondarySalesCost().getVehicleEvaluation());
itemEditTextInfos.add(itemEditTextInfo);
secondSalesInitVo.setList(itemEditTextInfos);
return rb.success().setData(secondSalesInitVo);
}
}

31
doc/databases/risk_center.sql

@ -1666,6 +1666,37 @@ CREATE TABLE `loan_secondary_sales_cost`
DEFAULT CHARSET = utf8 COMMENT ='交回车辆二次销售申请费用说明';
DROP TABLE IF EXISTS `loan_secondary_sales_customer`;
CREATE TABLE `loan_secondary_sales_customer`
(
`id` int(32) NOT NULL AUTO_INCREMENT COMMENT 'id',
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(32) DEFAULT '0' COMMENT '版本锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`modifyTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`isEnable` int(32) DEFAULT '1' COMMENT '是否可用:1可用,0不可用',
`state` int(32) DEFAULT '1' COMMENT '状态',
`isDelete` int(32) DEFAULT '0' COMMENT '是否删除:0未删除,1已删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建人sid',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '修改人sid',
`mainSid` varchar(64) DEFAULT NULL COMMENT '主表sid',
`customerSid` varchar(64) DEFAULT NULL COMMENT '客户sid',
`customerName` varchar(500) DEFAULT NULL COMMENT '新车主名称',
`customerType` varchar(64) DEFAULT NULL COMMENT '客户类型',
`customerTypeKey` varchar(64) DEFAULT NULL COMMENT '客户类型',
`mobile` varchar(64) DEFAULT NULL COMMENT '联系电话',
`certificateTypeKey` varchar(64) DEFAULT NULL COMMENT '证件类型',
`certificateType` varchar(64) DEFAULT NULL COMMENT '证件类型',
`IDNumber` varchar(64) DEFAULT NULL COMMENT '证件号码',
`endDate` varchar(64) DEFAULT NULL COMMENT '证件有效期',
`certificateAddress` text DEFAULT NULL COMMENT '证件地址',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='交回车辆二次销售补充客户信息';

Loading…
Cancel
Save