Browse Source

Merge remote-tracking branch 'origin/master'

master
God 2 years ago
parent
commit
92cea8962a
  1. 4
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java
  2. 5
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java
  3. 17
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  4. 5
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java
  5. 31
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java
  6. 6
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderprice/app/AppBusSalesOrderPriceDto.java
  7. 11
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java
  8. 3
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderprice/BusSalesOrderPriceService.java
  9. 147
      anrui-buscenter/anrui-finmanage-ui/src/api/moneycarriedforward/moneycarriedforward.js
  10. 67
      anrui-buscenter/anrui-finmanage-ui/src/router/modules/codemenu.js
  11. 2
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/agencyfund/agencyfundAdd.vue
  12. 2
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/paymentConfirmation/acknowledgementReceiptAdd.vue
  13. 305
      anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/acceptedmoney.vue
  14. 374
      anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforward.vue
  15. 710
      anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforwardAdd.vue
  16. 214
      anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforwardInfo.vue
  17. 290
      anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/simpledeposit.vue
  18. 413
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardDaiBanInfo.vue
  19. 688
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardEdit.vue
  20. 287
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardYiBanInfo.vue
  21. 232
      anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/relation/amountpledged.vue
  22. 55
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/fincollectionconfirmation/FinCollectionConfirmationService.java
  23. 113
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  24. 2
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigVvo.java
  25. 4
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java
  26. 5
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java
  27. 19
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserssQuery.java
  28. 5
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java
  29. 41
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java
  30. 4
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBankFeign.java
  31. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBankFeignFallback.java
  32. 18
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBanksVo.java
  33. 5
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicy.java
  34. 16
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyDto.java
  35. 19
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyVo.java
  36. 14
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicy.java
  37. 36
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyDto.java
  38. 15
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java
  39. 39
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyQuery.java
  40. 70
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVo.java
  41. 56
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVos.java
  42. 17
      anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/UseDept.java
  43. 3
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java
  44. 10
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml
  45. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankRest.java
  46. 12
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java
  47. 4
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.java
  48. 12
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.xml
  49. 8
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyService.java
  50. 6
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.java
  51. 40
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml
  52. 23
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyRest.java
  53. 242
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyService.java
  54. 12
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexingAdd.vue
  55. 4
      anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/saleOrders/price/PriceDto.java
  56. 115
      doc/databases/risk_center.sql

4
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeign.java

@ -152,6 +152,10 @@ public interface BaseVehmodelConfigFeign {
@GetMapping("/selectCarConfigSummary/{modelSid}/{configSid}/{userSid}")
public ResultBean<AppCarConfigSummaryVo> selectCarConfigSummary(@PathVariable("modelSid") String modelSid, @PathVariable("configSid") String configSid, @PathVariable("userSid") String userSid);
@ApiOperation("获取车型配置总结(即常用配置一句话描述)(销售订单)")
@GetMapping("/selectCarConfigSummary1/{modelSid}/{configSid}/{orgSid}")
public ResultBean<AppCarConfigSummaryVo> selectCarConfigSummary1(@PathVariable("modelSid") String modelSid, @PathVariable("configSid") String configSid, @PathVariable("orgSid") String orgSid);
/**
* 车型配置关联表新增配置并关联
*

5
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehmodelconfig/BaseVehmodelConfigFeignFallback.java

@ -128,6 +128,11 @@ public class BaseVehmodelConfigFeignFallback implements BaseVehmodelConfigFeign
return null;
}
@Override
public ResultBean<AppCarConfigSummaryVo> selectCarConfigSummary1(String modelSid, String configSid, String orgSid) {
return null;
}
@Override
public ResultBean saveAndRelationConfig(BaseModelConfigDto dto) {
return null;

17
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java

@ -42,7 +42,6 @@ import com.yxt.anrui.base.common.enums.ManPurOrderType;
import com.yxt.anrui.base.common.enums.VehicleState;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApply;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApplyFeign;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicledetails.BusArrearsCarryVehicleDetailsFeign;
import com.yxt.anrui.buscenter.api.busmaindeposit.pc.PcBusMainDepositFeign;
import com.yxt.anrui.buscenter.api.busmaindeposit.pc.PcBusMainDepositVehicleQuery;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderDetailsVo;
@ -1431,14 +1430,14 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
public IPage<VehicleModelPriceVo> getModelList(PagerQuery<VehicleModelPriceQuery> pagerQuery) {
String userSid = pagerQuery.getParams().getUserSid();
// 1、根据业务员部门sid查询分公司sid
// String orgPath = pagerQuery.getParams().getOrgPath();
// String orgSid = "";
// if (StringUtils.isBlank(orgPath)) {
// orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
// } else {
// orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
// }
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
String orgPath = pagerQuery.getParams().getOrgPath();
String orgSid = "";
if (StringUtils.isBlank(orgPath)) {
orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
} else {
orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
}
// String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
if (StringUtils.isNotBlank(orgSid)) {
pagerQuery.getParams().setUseOrg(orgSid);
}

5
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigRest.java

@ -187,6 +187,11 @@ public class BaseVehmodelConfigRest implements BaseVehmodelConfigFeign {
return baseVehmodelConfigService.selectCarConfigSummary(modelSid, configSid,userSid);
}
@Override
public ResultBean<AppCarConfigSummaryVo> selectCarConfigSummary1(String modelSid, String configSid, String orgSid) {
return baseVehmodelConfigService.selectCarConfigSummary1(modelSid, configSid,orgSid);
}
@Override
public ResultBean saveAndRelationConfig(BaseModelConfigDto dto) {
return baseVehmodelConfigService.saveAndRelationConfig(dto);

31
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehmodelconfig/BaseVehmodelConfigService.java

@ -467,17 +467,17 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
for (Map<String, String> map : maps) {
String modelSid = map.get("modelSid");
String configurationItemsSid = map.get("configurationItemsSid");
String userSid = map.get("userSid");
String userSid = map.get("userSid");
String orgPath = map.get("orgPath");
String useOrgSid = "";
if(StringUtils.isNotBlank(orgPath)){
if (StringUtils.isNotBlank(orgPath)) {
useOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
}else{
} else {
useOrgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
}
if ("0".equals(useOrgSid)) {
return rb.setMsg("该用户无分公司,不允许操作");
}
}
BaseVehmodelConfigVo vo = baseMapper.checkSave(modelSid, configurationItemsSid, useOrgSid);
if (vo == null) {
return rb.setMsg("当前常用配置信息未关联当前车型,请重新选择");
@ -534,6 +534,17 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
return rb.setData(new AppCarConfigSummaryVo());
}
public ResultBean<AppCarConfigSummaryVo> selectCarConfigSummary1(String modelSid, String configSid, String orgSid) {
ResultBean<AppCarConfigSummaryVo> rb = ResultBean.fireFail();
AppModelConfigListVo appModelConfigListVo = baseMapper.selectCarConfigSummary(modelSid, configSid, orgSid);
if (appModelConfigListVo != null) {
AppCarConfigSummaryVo configSummaryVo = addConfigName(appModelConfigListVo);
return rb.success().setData(configSummaryVo);
}
return rb.setData(new AppCarConfigSummaryVo());
}
/**
* 拼接常用配置字段
*
@ -651,11 +662,11 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
if (StringUtils.isNotBlank(query.getConfigName())) {
qw.and(wrapper -> wrapper.like("bmc.configName", query.getConfigName()).or().like("bmc.configCode", query.getConfigName()));
}
if (StringUtils.isNotBlank(query.getCarBrandSid())){
if (StringUtils.isNotBlank(query.getCarBrandSid())) {
qw.eq("bvm.carBrand", query.getCarBrandSid());
}
if (StringUtils.isNotBlank(query.getInsideCode())){
qw.like("bvc.insideCode",query.getInsideCode());
if (StringUtils.isNotBlank(query.getInsideCode())) {
qw.like("bvc.insideCode", query.getInsideCode());
}
qw.eq("bvm.isDelete", 0);
qw.eq("bmc.isDelete", 0);
@ -695,7 +706,7 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
QueryWrapper<BaseVehmodelConfigVehicleVos> qw = new QueryWrapper<>();
qw.eq("bvc.useOrgSid", query.getUseOrgSid());
qw.like("bb.useOrg", query.getUseOrgSid());
qw.eq("bb.sid",query.getBrandSid());
qw.eq("bb.sid", query.getBrandSid());
if (StringUtils.isNotBlank(query.getVehicleAlias())) {
qw.and(wrapper -> wrapper.like("bvm.vehicleAlias", query.getVehicleAlias()).or().like("bvm.vehicleTypeCode", query.getVehicleAlias()));
}
@ -888,7 +899,7 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
entity.setConfigName(configName);
configName += dto.getOtherConfig();
BaseModelConfigVo baseModelConfigVo = baseModelConfigService.selectByConfigName(useOrgSid, configName);
if (baseModelConfigVo != null){
if (baseModelConfigVo != null) {
String modelSid = dto.getVehicleSid();
String configurationItemsSid = baseModelConfigVo.getSid();
BaseVehmodelConfigVo vo = baseMapper.checkSave(modelSid, configurationItemsSid, useOrgSid);
@ -903,7 +914,7 @@ public class BaseVehmodelConfigService extends MybatisBaseService<BaseVehmodelCo
baseVehmodelConfig.setModelSid(modelSid);
baseVehmodelConfig.setConfigurationItemsSid(configurationItemsSid);
save(baseVehmodelConfig);
}else {
} else {
entity.setCreateOrgSId(useOrgSid);
// 配置编码
int i1 = baseModelConfigService.selectCount();

6
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/bussalesorderprice/app/AppBusSalesOrderPriceDto.java

@ -4,8 +4,6 @@ import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/6 11:55
@ -16,10 +14,10 @@ public class AppBusSalesOrderPriceDto implements Dto {
private static final long serialVersionUID = 401229647162329928L;
@ApiModelProperty(value = "预计提车地点")
@NotBlank(message = "预计提车地点不能为空")
// @NotBlank(message = "预计提车地点不能为空")
private String plannedPickUpLocation;
@ApiModelProperty(value = "预计提车地点key")
@NotBlank(message = "预计提车地点不能为空")
// @NotBlank(message = "预计提车地点不能为空")
private String plannedPickUpLocationKey;
@ApiModelProperty(value = "主车单台成交价格")
private String transactionPrice;

11
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorder/BusSalesOrderService.java

@ -2238,11 +2238,12 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
String saleOrderSid = appInitModelQuery.getSalesOrderSid();
String customerSid = appInitModelQuery.getCustomerSid();
String userSid = appInitModelQuery.getUserSid();
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
// String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
BusSalesOrder busSalesOrder = fetchBySid(saleOrderSid);
if (busSalesOrder == null) {
return rb.setMsg("销售订单单据信息不存在");
}
String orgSid = sysStaffOrgFeign.getOrgSidByPath(busSalesOrder.getOrgSidPath()).getData();
String type = "";
AppBusSaleOrderInitModelInfoVo vo = new AppBusSaleOrderInitModelInfoVo();
vo.setSaleOrderSid(saleOrderSid);
@ -2533,10 +2534,11 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
String configSid = appBusSaleOrderInitModelInfoQuery.getConfigSid();
String customerSid = appBusSaleOrderInitModelInfoQuery.getCustomerSid();
String userSid = appBusSaleOrderInitModelInfoQuery.getUserSid();
String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
// String orgSid = sysStaffOrgFeign.getPathSidByUserSid(userSid).getData();
String special = appBusSaleOrderInitModelInfoQuery.getSpecial();
String saleOrderSid = appBusSaleOrderInitModelInfoQuery.getSaleOrderSid();
BusSalesOrder busSalesOrder = fetchBySid(saleOrderSid);
String orgSid = sysStaffOrgFeign.getOrgSidByPath(busSalesOrder.getOrgSidPath()).getData();
AppBusSaleOrderInitModelInfoVo vo = new AppBusSaleOrderInitModelInfoVo();
//选择的车型信息的数据
AppOrderInfoVo orderInfo = new AppOrderInfoVo();
@ -2551,7 +2553,8 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
//销售订单选择的采购订单的列表
List<AppReadyCarListVo> appReadyCarLists = new ArrayList<>();
//根据车型及配置查询车型信息
ResultBean<AppCarConfigSummaryVo> appCarConfigSummaryVoResultBean = baseVehmodelConfigFeign.selectCarConfigSummary(modelSid, configSid, userSid);
String orgSids = sysStaffOrgFeign.getOrgSidByPath(busSalesOrder.getOrgSidPath()).getData();
ResultBean<AppCarConfigSummaryVo> appCarConfigSummaryVoResultBean = baseVehmodelConfigFeign.selectCarConfigSummary1(modelSid, configSid, orgSids);
if (appCarConfigSummaryVoResultBean.getSuccess()) {
AppCarConfigSummaryVo data = appCarConfigSummaryVoResultBean.getData();
//车型sid
@ -5138,8 +5141,6 @@ public class BusSalesOrderService extends MybatisBaseService<BusSalesOrderMapper
//推送车款
createCarFin(vo, busSalesOrder);
}
//-----------------推送车款款项结束
//推送采购渠道待选择
BusPurchaseChannelDto busPurchaseChannelDto = new BusPurchaseChannelDto();

3
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesorderprice/BusSalesOrderPriceService.java

@ -174,6 +174,9 @@ public class BusSalesOrderPriceService extends MybatisBaseService<BusSalesOrderP
if (busSalesOrder == null) {
return rb.setMsg("该销售订单单据不存在");
}
if(StringUtils.isBlank(dto.getPlannedPickUpLocationKey())){
return rb.setMsg("请选择计划提车地点");
}
//更新车型中的单台成交价
busSalesOrderModelService.updateFinalPrice(sid, new BigDecimal(dto.getTransactionPrice()));
BusSalesOrderPrice busSalesOrderPrice = selectBySalesOrderSid(sid);

147
anrui-buscenter/anrui-finmanage-ui/src/api/moneycarriedforward/moneycarriedforward.js

@ -0,0 +1,147 @@
import request from '@/utils/request'
// 简易订单订金可用列表查询
export function listPage(data) {
return request({
url: '/fin/fincollectionconfirmation/jyddkydjListPage',
data: data,
method: 'post',
headers: {
'Content-Type': 'application/json'
}
})
}
// 未出库车辆已认款项列表查询
export function pagelist(data) {
return request({
url: '/fin/finselectedreceivablesdetailed/noOutVehRecPageList',
data: data,
method: 'post',
headers: {
'Content-Type': 'application/json'
}
})
}
// 款项结转申请列表查询
export function kxjzlist(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/listPage',
data: data,
method: 'post',
headers: {
'Content-Type': 'application/json'
}
})
}
// 详情回显 获取一条记录
export function fetchDetailBySid(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/init',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 款项结转--保存
export function saveOrUpdate(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/save',
data: data,
method: 'post',
headers: {
'Content-Type': 'application/json'
}
})
}
// 销售订单--编辑、详情初始化
export function fetchDetails(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/fetchDetailsBySid/' + data,
method: 'get'
})
}
// 款项结转--删除
export function delBySids(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/delBySids',
data: data,
method: 'DELETE',
headers: {
'Content-Type': 'application/json'
}
})
}
// 提交
export function submit(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/submitFinFundsApply',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 流程审批(同意)
export function complete(params) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/complete',
method: 'post',
data: params
})
}
// 流程审批(驳回)
export function reject(params) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/reject',
method: 'post',
data: params
})
}
// 流程审批(终止)
export function breakProcess(params) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/breakProcess',
method: 'post',
data: params
})
}
// 流程审批(撤回)
export function revokeProcess(params) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/revokeProcess',
method: 'post',
data: params
})
}
// 审批流程(同意)获取下一环节
export function getNextNodesForSubmit(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/getNextNodesForSubmit',
method: 'get',
params: data
})
}
// 审批流程(驳回)获取上一环节
export function getPreviousNodesForReject(data) {
return request({
url: '/fin/v1/finfundscarriedforwardapply/getPreviousNodesForReject',
method: 'get',
params: data
})
}

67
anrui-buscenter/anrui-finmanage-ui/src/router/modules/codemenu.js

@ -216,6 +216,51 @@ const codemenu = [
meta: { title: '欠款领票申请管理', noCache: true }
}]
},
// 欠款领票申请管理
{
path: '/moneycarriedforward',
component: Layout,
redirect: '/moneycarriedforward',
meta: {
title: '简易订单可用订金'
},
children: [{
path: '/moneycarriedforward/simpledeposit',
component: () => import('@/views/moneycarriedforward/simpledeposit.vue'),
name: 'SimpleDeposit',
meta: { title: '简易订单可用订金', noCache: true }
}]
},
// 欠款领票申请管理
{
path: '/moneycarriedforward',
component: Layout,
redirect: '/moneycarriedforward',
meta: {
title: '未出库车辆已认款项'
},
children: [{
path: '/moneycarriedforward/acceptedmoney',
component: () => import('@/views/moneycarriedforward/acceptedmoney.vue'),
name: 'AcceptedMoney',
meta: { title: '未出库车辆已认款项', noCache: true }
}]
},
// 欠款领票申请管理
{
path: '/moneycarriedforward',
component: Layout,
redirect: '/moneycarriedforward',
meta: {
title: '款项结转申请'
},
children: [{
path: '/moneycarriedforward/moneycarriedforward',
component: () => import('@/views/moneycarriedforward/moneycarriedforward.vue'),
name: 'MoneyCarriedForward',
meta: { title: '款项结转申请', noCache: true }
}]
},
// 费用申请管理编辑
{
path: '/feiyongguanliFlow/feiyongguanli/feiyongEdit',
@ -356,6 +401,28 @@ const codemenu = [
component: () =>
import('@/views/workFlow/qiankuanlingpiaoFlow/arrearscollectionYiBanInfo.vue'),
name: 'ArrearsScollectionYiBanInfo'
},
// 款项结转--编辑
{
path: '/kuanxiangjiezhuanFlow/moneycarriedforwardEdit',
component: () =>
import('@/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardEdit.vue'),
name: 'MoneyCarriedForwardEdit'
},
// 款项结转--待办
{
path: '/kuanxiangjiezhuanFlow/moneycarriedforwardDaiBanInfo',
component: () =>
import('@/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardDaiBanInfo.vue'),
name: 'MoneyCarriedForwardDaiBanInfo'
},
// 款项结转-已办
{
path: '/kuanxiangjiezhuanFlow/moneycarriedforwardYiBanInfo',
component: () =>
import('@/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardYiBanInfo.vue'),
name: 'MoneyCarriedForwardYiBanInfo'
}
]
export default codemenu

2
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/agencyfund/agencyfundAdd.vue

@ -650,7 +650,7 @@ export default {
subscribedOf: val[i].subscribedOf,
subscriptionDate: dayDate,
collSid: '',
receivablesSid: val[i].sid,
receivablesSid: val[i].receivablesSid,
payType: val[i].payType,
payTypeKey: val[i].payTypeKey,
sid: val[i].sid

2
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/paymentConfirmation/acknowledgementReceiptAdd.vue

@ -600,7 +600,7 @@ export default {
subscribedOf: val[i].subscribedOf,
subscriptionDate: dayDate,
collSid: '',
receivablesSid: val[i].sid,
receivablesSid: val[i].receivablesSid,
payType: val[i].payType,
payTypeKey: val[i].payTypeKey,
sid: val[i].sid

305
anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/acceptedmoney.vue

@ -0,0 +1,305 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar view-title="未出库车辆已认款" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="销售部门">
<el-input v-model="listQuery.params.staffDeptName" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="销售专员">
<el-input v-model="listQuery.params.staffName" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="合同编号">
<el-input v-model="listQuery.params.contractNo" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable class="addinputw"/>
</el-form-item>
<el-form-item label="可用金额">
<el-input v-model="listQuery.params.balanceSmallMoney" placeholder="" clearable style="width: 160px"/>
<span style="padding: 0 8px"></span>
<el-input v-model="listQuery.params.balanceBigMoney" placeholder="" clearable style="width: 160px"/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handReset">重置</el-button>
</div>
</div>
<div class="listtop">
<div class="tit">未出库车辆已认款列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column width="50" type="selection" align="center"/>
<el-table-column width="80px" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="分公司" align="center">
<template slot-scope="scope">
<span>{{ scope.row.useOrgName }}</span>
</template>
</el-table-column>
<el-table-column label="销售部门" align="center">
<template slot-scope="scope">
<span>{{ scope.row.staffDeptName }}</span>
</template>
</el-table-column>
<el-table-column label="销售专员" align="center">
<template slot-scope="scope">
<span>{{ scope.row.staffName }}</span>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.contractNo }}</span>
</template>
</el-table-column>
<el-table-column label="销售类型" align="center">
<template slot-scope="scope">
<span>{{ scope.row.payType }}</span>
</template>
</el-table-column>
<el-table-column label="客户名称" align="center">
<template slot-scope="scope">
<span>{{ scope.row.customerName }}</span>
</template>
</el-table-column>
<el-table-column label="联系电话" align="center">
<template slot-scope="scope">
<span>{{ scope.row.customerPhone }}</span>
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="应收项目" align="center">
<template slot-scope="scope">
<span>{{ scope.row.receivablesName }}</span>
</template>
</el-table-column>
<el-table-column label="认款日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.auditDate }}</span>
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.subscriptionMoney }}</span>
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.reveivableMoney }}</span>
</template>
</el-table-column>
<el-table-column label="款项状态" align="center">
<template slot-scope="scope">
<span>{{ scope.row.state }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="pages">
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
</div>
</div>
</div>
<moneycarriedforwardAdd v-show="viewState == 2" ref="divAdd" @doback="resetState"/>
</div>
</template>
<script>
import { pagelist } from '@/api/moneycarriedforward/moneycarriedforward'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import moneycarriedforwardAdd from './moneycarriedforwardAdd'
export default {
name: 'AcceptedMoney',
components: {
Pagination,
pageye,
ButtonBar,
moneycarriedforwardAdd
},
data() {
return {
isSearchShow: false,
btndisabled: false,
viewState: 1,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toCarryDown',
btnLabel: '款项结转申请'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRefund',
btnLabel: '退款申请'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
searchxianshitit: '隐藏查询条件',
tableKey: 0,
list: [],
sids: [],
listLoading: false,
listQuery: {
current: 1,
size: 10,
params: {
staffDeptName: '',
staffName: '',
contractNo: '',
customerName: '',
mobile: '',
vinNo: '',
balanceSmallMoney: '',
balanceBigMoney: '',
userSid: '',
orgPath: '',
menuUrl: ''
},
total: 0
}
}
},
created() {
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'toCarryDown':
this.toCarryDown()
break
case 'toRefund':
this.toRefund()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
// ------------------
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
console.log('获取sids数组', this.sids)
},
//
getList() {
this.listLoading = true
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.menuUrl = this.$route.path
pagelist(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.listQuery.total = response.data.total
this.list = response.data.records
} else {
this.listQuery.total = 0
this.list = []
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
staffDeptName: '',
staffName: '',
contractNo: '',
customerName: '',
mobile: '',
vinNo: '',
balanceSmallMoney: '',
balanceBigMoney: '',
userSid: '',
orgPath: '',
menuUrl: ''
},
total: 0
}
this.getList()
},
toCarryDown() {
if (this.sids.length > 0) {
this.viewState = 2
var title = '已认款'
this.$refs['divAdd'].showAdd(title, this.sids)
} else {
this.$message({ showClose: true, type: 'error', message: '请至少选择一条记录进行款项结转申请操作' })
}
},
toRefund() {},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

374
anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforward.vue

@ -0,0 +1,374 @@
<template>
<div class="app-container">
<!--列表页面-->
<div v-show="viewState == 1">
<button-bar view-title="款项结转申请管理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<!--Start查询列表部分-->
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="部门">
<el-input v-model="listQuery.params.applyDeptName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请人">
<el-input v-model="listQuery.params.createByName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="申请日期">
<el-date-picker v-model="listQuery.params.applyStartDate" type="date" placeholder="选择日期"></el-date-picker>
<span style="padding: 0 8px"></span>
<el-date-picker v-model="listQuery.params.applyEndDate" type="date" placeholder="选择日期"></el-date-picker>
</el-form-item>
<el-form-item label="结转金额">
<el-input v-model="listQuery.params.jzSmallMoney" placeholder="" clearable style="width: 160px"/>
<span style="padding: 0 8px"></span>
<el-input v-model="listQuery.params.jzBigMoney" placeholder="" clearable style="width: 160px"/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handleReset">重置</el-button>
</div>
</div>
</div>
<!--End查询列表部分-->
<div class="listtop">
<div class="tit">款项结转申请列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--Start 主页面主要部分 -->
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" :border="true" style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column type="selection" align="center" width="50"/>
<el-table-column label="序号" type="index" width="80" :index="indexMethod" align="center"/>
<el-table-column label="操作" width="180" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="toEdit(scope.row)" :disabled="scope.row.nodeState =='发起申请' ? false : scope.row.nodeState == '待提交' ? false : true">办理</el-button>
<el-button type="primary" v-show="scope.row.nodeState == '已办结'" size="mini" @click="toDownLoad(scope.row)">下载</el-button>
<el-button type="primary" size="mini" @click="toInfo(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="状态" width="180px" header-align="center">
<template slot-scope="scope">
<span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>
<span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>
</template>
</el-table-column>
<el-table-column label="申请部门" align="center">
<template slot-scope="scope">
<span>{{ scope.row.applyDeptName }}</span>
</template>
</el-table-column>
<el-table-column label="申请人" align="center">
<template slot-scope="scope">
<span>{{ scope.row.createByName }}</span>
</template>
</el-table-column>
<el-table-column label="申请日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<el-table-column label="来源" align="center">
<template slot-scope="scope">
<span>{{ scope.row.source }}</span>
</template>
</el-table-column>
<el-table-column label="结转金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.carryForwardMoney }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center">
<template slot-scope="scope">
<span>{{ scope.row.remarks }}</span>
</template>
</el-table-column>
</el-table>
</div>
<!--End 主页面主要部分-->
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<!--End查询列表部分-->
</div>
</div>
<!--款项结转新增及修改 -->
<moneycarriedforwardAdd v-show="viewState == 2" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
<!--款项结转申请详情-->
<moneycarriedforwardInfo v-show="viewState == 3" ref="divInfo" @doback="resetState" />
<!--流程记录-->
<el-dialog title="" :visible.sync="centerDialogVisible" width="78%" height="1%" :before-close="closeIt" center>
<iframe frameborder="0" id="iframe" style="width:100%;" scrolling="no" :src="this.centerDialogVisible === true ? url :''"></iframe>
</el-dialog>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { kxjzlist, delBySids } from '@/api/moneycarriedforward/moneycarriedforward'
import { getOrgSidByPath } from '@/api/jichuxinxi/dictcommons'
import { getStorage } from '@/utils/auth'
import moneycarriedforwardAdd from './moneycarriedforwardAdd'
import moneycarriedforwardInfo from './moneycarriedforwardInfo'
export default {
name: 'MoneyCarriedForward',
components: {
Pagination,
pageye,
ButtonBar,
moneycarriedforwardAdd,
moneycarriedforwardInfo
},
data() {
return {
url: '',
dialogHeight: '80%',
centerDialogVisible: false,
btndisabled: false,
btnList: [
{
type: 'danger',
size: 'small',
icon: 'del',
btnKey: 'doDel',
btnLabel: '删除'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
viewState: 1, // 1 2 3 4
tableKey: 0,
list: [],
sids: [], // SIDs
FormLoading: false,
listLoading: false,
//
listQuery: {
current: 1,
size: 10,
total: 0,
params: {
userSid: '',
createByName: '',
applyDeptName: '',
applyStartDate: '',
applyEndDate: '',
jzSmallMoney: '',
jzBigMoney: '',
orgSidPath: '',
menuUrl: ''
}
}
}
},
created() {
//
this.init()
},
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
async handleMessage(event) {
var code = ''
if (event.data.params !== null && event.data.params !== undefined) {
code = event.data.params.code
}
if (code === 1) {
this.init()
this.centerDialogVisible = false
} else if (code === 2) {
this.dialogHeight = event.data.params.data
this.setIframeHeight(document.getElementById('iframe'))
}
},
closeIt() {
this.url = ''
this.centerDialogVisible = false
},
setIframeHeight(iframe) {
iframe.height = this.dialogHeight
},
flowRecord(row) {
this.centerDialogVisible = true
var params = {
deployId: row.procDefId,
procInsId: row.procInstSid,
token: getStorage()
}
this.url = '/#/flow/flowRecordForBusiness?data=' + encodeURI((JSON.stringify(params)))
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doDel':
this.doDel()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
init() {
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((resp) => {
if (resp.success) {
this.listQuery.params.useOrgSid = resp.data
this.getList()
}
})
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.menuUrl = this.$route.path
this.listQuery.params.orgSidPath = window.sessionStorage.getItem('defaultOrgPath')
kxjzlist(this.listQuery).then(response => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
//
handleReset() {
this.listQuery = {
current: 1,
size: 10,
total: 0,
params: {
userSid: '',
createByName: '',
applyDeptName: '',
applyStartDate: '',
applyEndDate: '',
jzSmallMoney: '',
jzBigMoney: '',
orgSidPath: '',
menuUrl: ''
}
}
this.init()
},
toEdit(row) {
this.viewState = 2
this.$refs['divAdd'].showEdit(row)
},
toInfo(row) {
this.viewState = 3
this.$refs['divInfo'].showInfo(row)
},
toDownLoad(row) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + row.tzsqPath + '&outFileName=' + '调账申请', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '调账.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
},
doDel() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择至少一条记录进行删除操作' })
return
}
const tip = '请确认是否删除所选 ' + this.sids.length + ' 条记录?'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
delBySids(this.sids).then(resp => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
//
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

710
anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforwardAdd.vue

@ -0,0 +1,710 @@
<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>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu"><span>款项结转申请</span></div>
<el-form ref="form_obj" :model="formobj" :rules="rules" label-position="top" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>申请部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.applyDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请人</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请日期</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByDate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>销售部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.saleDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>销售专员</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.staffName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>来源</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.source }}</span>
</el-form-item>
</el-col>
</el-row>
<el-table border :key="tablebleKey" width="100%" :index="index" :data="formobj.finFundsCarriedForwardVehDetailsVos">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="small" @click="handleDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号/收款单编号" align="center">
<template slot-scope="scope">
{{ scope.row.busBillNo }}
</template>
</el-table-column>
<el-table-column label="客户名称/付款人" align="center">
<template slot-scope="scope">
{{ scope.row.customerName }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vinNo }}
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
{{ scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="本次使用金额" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.thisUseMoney" clearable placeholder=""/>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="4" class="tleftb" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<span>款项确认书</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<upload ref="uploadImg" v-model="image_list1" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<el-input v-model="formobj.remarks" style="width: 70%" placeholder="" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24" style="padding: 0px">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="采购系统:">
<el-select :disabled="dialogStatus == 'edit'" v-model="formobj.purchaseSystemSid" placeholder="请选择" @change="changePurchase" filterable clearable>
<el-option v-for="item in purchase_list" :key="item.deptSid" :label="item.purchaseSystemName" :value="item.deptSid"/>
</el-select>
</el-form-item>
<el-form-item label="合同编号:">
<el-input v-model="listQuery.contractNo" size="mini" placeholder="" style="width: 110px" clearable/>
</el-form-item>
<el-form-item label="客户名称:">
<el-input v-model="listQuery.customerName" size="mini" placeholder="" style="width: 100px" clearable/>
</el-form-item>
<el-form-item label="联系电话:">
<el-input v-model="listQuery.customerPhone" size="mini" placeholder="" style="width: 140px" clearable/>
</el-form-item>
<el-form-item label="车架号:">
<el-input v-model="listQuery.vinNo" size="mini" placeholder="" style="width: 140px" clearable/>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;padding-top: 5px">
<div style="padding-left: 30%">
<el-button type="primary" size="mini" @click="handleFilter">查询</el-button>
<el-button type="primary" size="mini" @click="handReset">重置</el-button>
<el-button type="primary" size="mini" @click="handleSelect">选择已认款项</el-button>
</div>
<div>
<span >余额:{{ balaceCount() }}</span>
</div>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<div>
<div class="tableTitle">应收未收款款项明细</div>
<el-table border :key="overduereceivableKey" width="100%" :data="overduereceivable_list">
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handAdd(scope.row)">添加</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.contractNo }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.VIN }}
</template>
</el-table-column>
<el-table-column label="客户/电话" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.customerName }} {{ scope.row.customerPhone }}
</template>
</el-table-column>
<el-table-column label="付款" align="center" width="70">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收金额" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.reveivableMoney }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.receivablesName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.currentReceivableMoney }}
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="14">
<div>
<div class="tableTitle">已选应收款项明细</div>
<el-table border :key="selectedreceivableKey" width="100%" :data="formobj.yxysFinFundsCarriedForwardYXYSKXVos">
<el-table-column fixed label="操作" align="center" width="70">
<template slot-scope="scope">
<el-button type="danger" size="small" @click="handDelete(scope.row)">移除</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="95">
<template slot-scope="scope">
{{ scope.row.contractId }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.vin }}
</template>
</el-table-column>
<el-table-column label="客户/电话" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.name }} {{ scope.row.mobile }}
</template>
</el-table-column>
<el-table-column label="付款" align="center" width="70">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.projectName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.receivable }}
</template>
</el-table-column>
<el-table-column label="认款金额" align="center" width="130">
<template slot-scope="scope">
<el-input v-model="scope.row.confirmMoney" @input="changeMoney(scope.row)" @keyup.native="UpNumber" @keydown.native="UpNumber" placeholder="" clearable/>
</template>
</el-table-column>
<el-table-column label="剩余应收" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.surplusReceivable }}</span>
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center" width="120">
<template slot-scope="scope">
<span>{{ scope.row.confirmDate }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</el-form>
</div>
</div>
<amountpledged v-show="viewState == 2" ref="divSelect" @doback="resetState" @backData="backData"/>
</div>
</template>
<script>
import { fetchDetailBySid, saveOrUpdate, fetchDetails, submit } from '@/api/moneycarriedforward/moneycarriedforward'
import { listAll } from '@/api/anruifinmanagement/paymentConfirmation'
import amountpledged from '../anruifinmanagement/paymentConfirmation/relation/amountpledged'
import { fetchDetailsByUseOrgSid, getOrgSidByPath } from '@/api/jichuxinxi/dictcommons'
import upload from '@/components/uploadFile/upload'
export default {
name: 'MoneyCarriedForwardAdd',
components: {
upload,
amountpledged
},
data() {
return {
viewTitle: '',
viewState: 1,
dialogStatus: '',
tablebleKey: 0,
index: 0,
overduereceivableKey: 1,
selectedreceivableKey: 2,
overduereceivable_list: [],
purchase_list: [],
image_list1: [],
accept: '.jpg,.jpeg,.png,.JPG,.JPEG',
formobj: {
applyDeptName: '',
applyDeptSid: '',
billNo: '',
createByDate: '',
createByName: '',
createBySid: '',
finFundsCarriedForwardVehDetailsVos: [],
kxqrsImages: [],
orgSidPath: '',
purchaseSystem: '',
purchaseSystemSid: '',
remarks: '',
saleDeptName: '',
saleDeptSid: '',
sid: '',
source: '',
staffName: '',
staffSid: '',
useOrgName: '',
useOrgSid: '',
yxysFinFundsCarriedForwardYXYSKXVos: []
},
listQuery: {
contractNo: '',
customerName: '',
customerPhone: '',
sids: [],
createBySid: '',
vinNo: '',
orgPath: '',
purchaseSystemSid: ''
},
rules: {},
submitdisabled: false,
}
},
methods: {
UpNumber(e) {
e.target.value = e.target.value.replace(/[^\d.]/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 !== '') {
// 0102
console.log(e.target.value)
e.target.value = parseFloat(e.target.value)
}
},
DataDictionary() {
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
fetchDetailsByUseOrgSid(res.data).then((resp) => {
if (resp.success) {
this.purchase_list = resp.data
}
})
})
},
//
changeMoney(row) {
if (row.receivable !== '') {
row.surplusReceivable = parseFloat(row.receivable) - parseFloat(row.confirmMoney)
} else {
row.surplusReceivable = ''
}
},
handleDelete(index) {
this.formobj.finFundsCarriedForwardVehDetailsVos.splice(index, 1)
},
balaceCount() {
var money = '0'
if (this.formobj.finFundsCarriedForwardVehDetailsVos.length > 0) {
let useMoney = '0'
for (var i = 0; i < this.formobj.finFundsCarriedForwardVehDetailsVos.length; i++) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos[i].thisUseMoney === '') {
useMoney = '1'
return
}
}
if (useMoney === '0') {
var list = []
for (var b = 0; b < this.formobj.finFundsCarriedForwardVehDetailsVos.length; b++) {
list.push(this.formobj.finFundsCarriedForwardVehDetailsVos[b].thisUseMoney)
}
money = this.calculatedAmount(list)
}
}
if (this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length > 0) {
let confirmMoney = '0'
for (var p = 0; p < this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length; p++) {
if (this.formobj.yxysFinFundsCarriedForwardYXYSKXVos[p].confirmMoney === '') {
confirmMoney = '1'
return money
}
}
if (confirmMoney === '0') {
var list1 = []
for (var l = 0; l < this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length; l++) {
list1.push(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos[l].confirmMoney)
}
money = parseFloat(money) - parseFloat(this.calculatedAmount(list1))
}
}
return money
},
calculatedAmount(list) {
var sumNum = 0
for (var k = 0; k < list.length; k++) {
//
sumNum += Number(list[k].replace(/,/g, ''))
}
//
var f1 = Math.round(sumNum * 100) / 100
//
var strNum = f1.toString()
//
var rs = strNum.indexOf('.')
if (rs < 0) {
rs = strNum.length
strNum += '.'
}
while (strNum.length <= rs + 2) {
strNum += '0'
}
var resNum = strNum.replace(/\d+/, function(n) {
return n.replace(/(\d)(?=(\d{3})+$)/g, function(u) {
return u
})
})
return resNum
},
getlist() {
if (this.formobj.purchaseSystemName === '') {
this.$message({ showClose: true, type: 'error', message: '请选择采购系统' })
return
}
this.listQuery.createBySid = window.sessionStorage.getItem('userSid')
this.listQuery.orgPath = window.sessionStorage.getItem('defaultOrgPath')
listAll(this.listQuery).then((res) => {
if (res.code === '200') {
this.overduereceivable_list = res.data
}
})
},
handleFilter() {
this.getlist()
},
changePurchase(value) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos.length > 0) {
for (var i = 0; i < this.formobj.finFundsCarriedForwardVehDetailsVos.length; i++) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos[i].thisUseMoney === '') {
this.$message({ showClose: true, type: 'error', message: '请检查本次使用金额是否已全部填写' })
this.formobj.purchaseSystemSid = ''
return
}
}
}
if (value !== '') {
const choose = this.purchase_list.filter((item) => item.deptSid === value)
this.formobj.purchaseSystem = choose[0].purchaseSystemName
this.listQuery.purchaseSystemSid = this.formobj.purchaseSystemSid
this.getlist()
} else {
this.overduereceivable_list = []
}
},
handReset() {
this.listQuery.contractNo = ''
this.listQuery.customerName = ''
this.listQuery.customerPhone = ''
this.listQuery.vinNo = ''
this.listQuery.createBySid = ''
this.listQuery.orgPath = ''
this.getlist()
},
showAdd(title, sids) {
this.DataDictionary()
this.viewTitle = '【新建】款项结转'
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
fetchDetailBySid({ userSid: window.sessionStorage.getItem('userSid'), orgSidPath: window.sessionStorage.getItem('defaultOrgPath'), source: title, busSids: sids }).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.orgSidPath = window.sessionStorage.getItem('defaultOrgPath')
}
})
},
showEdit(row) {
this.DataDictionary()
this.viewTitle = '【编辑】款项结转'
this.dialogStatus = 'edit'
fetchDetails(row.sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
this.formobj.instanceId = resp.data.procInsId
if (this.formobj.kxqrsImages !== null && this.formobj.kxqrsImages.length >0) {
this.formobj.kxqrsImages.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.purchaseSystem !== '') {
this.listQuery.purchaseSystemSid = this.formobj.purchaseSystemSid
this.getlist()
}
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
}
}).catch(e => {
this.formobj = row
})
},
//
handAdd(row) {
if (this.formobj.collectionMoney === '') {
this.$message({ showClose: true, type: 'error', message: '请先填写收款金额' })
} else {
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
var dayDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.push({
createByName: window.sessionStorage.getItem('name'),
contractSid: row.contractSid,
contractId: row.contractNo,
customerSid: row.customerSid,
name: row.customerName,
vin: row.VIN,
useOrgSid: '',
mobile: row.customerPhone,
projectName: row.receivablesName,
receivable: row.currentReceivableMoney,
lastSubscriptionMoney: '',
confirmMoney: '',
surplusReceivable: '',
subscribedOf: row.subscribedOf,
confirmDate: dayDate,
collSid: '',
receivablesSid: row.receivablesSid,
payType: row.payType,
payTypeKey: row.payTypeKey,
sid: row.sid
})
this.listQuery.sids.push(row.sid)
this.balaceCount()
this.getlist()
}
},
//
handDelete(row) {
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.splice(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.indexOf(row), 1)
if (row.subscribedOf == 0) {
this.listQuery.sids.splice(this.listQuery.sids.indexOf(row.sid), 1)
this.getlist()
}
},
//
handleSelect() {
if (this.formobj.purchaseSystemSid === '') {
this.$message({ showClose: true, type: 'error', message: '请先选择采购系统' })
return
}
this.viewState = 2
this.$refs['divSelect'].showData(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos, this.formobj.purchaseSystemSid)
},
// --
backData(val) {
this.viewState = 1
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
var dayDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
for (var i = 0; i < val.length; i++) {
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.push({
createByName: window.sessionStorage.getItem('name'),
contractSid: val[i].contractSid,
contractId: val[i].contractNo,
customerSid: val[i].customerSid,
name: val[i].customerName,
vin: val[i].VIN,
useOrgSid: '',
mobile: val[i].customerPhone,
projectName: val[i].receivablesName,
receivable: val[i].currentReceivableMoney,
lastSubscriptionMoney: '',
confirmMoney: '',
surplusReceivable: '',
subscribedOf: val[i].subscribedOf,
confirmDate: dayDate,
collSid: '',
receivablesSid: val[i].sid,
payType: val[i].payType,
payTypeKey: val[i].payTypeKey,
sid: val[i].sid
})
}
},
resetState() {
this.viewState = 1
},
saveOrUpdate() {
if (this.image_list1.length > 0) {
var aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.kxqrsImages = aa
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
saveOrUpdate(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
if (this.image_list1.length > 0) {
var aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.kxqrsImages = aa
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
submit(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
applyDeptName: '',
applyDeptSid: '',
billNo: '',
createByDate: '',
createByName: '',
createBySid: '',
finFundsCarriedForwardVehDetailsVos: [],
kxqrsImages: [],
orgSidPath: '',
purchaseSystem: '',
purchaseSystemSid: '',
remarks: '',
saleDeptName: '',
saleDeptSid: '',
sid: '',
source: '',
staffName: '',
staffSid: '',
useOrgName: '',
useOrgSid: '',
yxysFinFundsCarriedForwardYXYSKXVos: []
}
this.listQuery = {
contractNo: '',
customerName: '',
customerPhone: '',
sids: [],
createBySid: ''
}
this.image_list1 = []
this.dialogStatus = ''
this.submitdisabled = false
this.$refs['form_obj'].resetFields()
this.$emit('doback')
}
}
}
</script>
<style scoped>
.titwu {
padding: 0;
}
.tableTitle{
border: 1px solid #e0e3eb;
line-height: 42px;
text-align: center;
font-weight: bold;
font-size: 18px;
}
</style>

214
anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/moneycarriedforwardInfo.vue

@ -0,0 +1,214 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu"><span>款项结转申请</span></div>
<el-form ref="form_obj" :model="formobj" :rules="rules" label-position="top" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>申请部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.applyDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请人</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请日期</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByDate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>销售部门</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.saleDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>销售专员</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.staffName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>来源</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.source }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>结转金额合计</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.jzjehj }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>款项确认书</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<el-image v-for="(item, index) in formobj.kxqrsImages" :key="index" :src="item" :preview-src-list="formobj.kxqrsImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.remarks }}</span>
</el-form-item>
</el-col>
</el-row>
<el-table border :key="tablebleKey" width="100%" :index="index" :data="formobj.finFundsCarriedForwardVehDetailsVos">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="合同编号/收款单编号" align="center">
<template slot-scope="scope">
{{ scope.row.busBillNo }}
</template>
</el-table-column>
<el-table-column label="客户名称/付款人" align="center">
<template slot-scope="scope">
{{ scope.row.customerName }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vinNo }}
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
{{ scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="本次使用金额" align="center">
<template slot-scope="scope">
{{ scope.row.thisUseMoney }}
</template>
</el-table-column>
</el-table>
<el-table border :key="selectedreceivableKey" style="width: 100%" :data="formobj.yxysFinFundsCarriedForwardYXYSKXVos">
<el-table-column label="合同编号" align="center">
<template slot-scope="scope">
{{ scope.row.contractId }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vin }}
</template>
</el-table-column>
<el-table-column label="客户名称" align="center">
<template slot-scope="scope">
{{ scope.row.name }}
</template>
</el-table-column>
<el-table-column label="联系电话" align="center">
<template slot-scope="scope">
{{ scope.row.mobile }}
</template>
</el-table-column>
<el-table-column label="付款方式" align="center">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center">
<template slot-scope="scope">
{{ scope.row.projectName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center">
<template slot-scope="scope">
{{ scope.row.receivable }}
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
{{ scope.row.confirmMoney }}
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center">
<template slot-scope="scope">
{{ scope.row.confirmDate }}
</template>
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="scope">
{{ scope.row.state == 1 ? '待审核' : scope.row.state == 2 ? '已驳回' : scope.row.state == 3 ? '已审核' : '其他' }}
</template>
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</template>
<script>
import { fetchDetails } from '@/api/moneycarriedforward/moneycarriedforward'
export default {
name: 'MoneyCarriedForwardInfo',
data() {
return {
viewTitle: '',
selectedreceivableKey: 0,
tablebleKey: 1,
index: 0,
formobj: {},
rules: {}
}
},
methods: {
showInfo(row) {
this.viewTitle = '款项结转详情'
fetchDetails(row.sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
}
}).catch(e => {
this.formobj = row
})
},
handleReturn() {
this.formobj = {}
this.$emit('doback')
}
}
}
</script>
<style scoped>
</style>

290
anrui-buscenter/anrui-finmanage-ui/src/views/moneycarriedforward/simpledeposit.vue

@ -0,0 +1,290 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<button-bar view-title="简易订单订金可用" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" label-width="100px" class="tab-header">
<el-form-item label="销售部门">
<el-input v-model="listQuery.params.staffDeptName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="销售专员">
<el-input v-model="listQuery.params.staffName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="收款单编号">
<el-input v-model="listQuery.params.billNo" placeholder="" clearable/>
</el-form-item>
<el-form-item label="付款人">
<el-input v-model="listQuery.params.payerName" placeholder="" clearable/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.phone" placeholder="" clearable/>
</el-form-item>
<el-form-item label="收款日期" class="searchlist">
<el-date-picker value-format="yyyy-MM-dd" v-model="listQuery.params.collectionStartDate" clearable style="width: 160px" type="date" placeholder="开始日期"/>
<span style="padding: 0 8px"></span>
<el-date-picker value-format="yyyy-MM-dd" v-model="listQuery.params.collectionEndDate" clearable style="width: 160px" type="date" placeholder="结束日期"/>
</el-form-item>
<el-form-item label="可用金额">
<el-input v-model="listQuery.params.collectionSmallMoney" placeholder="" clearable style="width: 160px"/>
<span style="padding: 0 8px"></span>
<el-input v-model="listQuery.params.collectionBigMoney" placeholder="" clearable style="width: 160px"/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handReset">重置</el-button>
</div>
</div>
<div class="listtop">
<div class="tit">简易订单订金可用列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column width="50" type="selection" align="center"/>
<el-table-column width="80px" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="分公司" align="center">
<template slot-scope="scope">
<span>{{ scope.row.useOrgName }}</span>
</template>
</el-table-column>
<el-table-column label="销售部门" align="center">
<template slot-scope="scope">
<span>{{ scope.row.staffDeptName }}</span>
</template>
</el-table-column>
<el-table-column label="销售专员" align="center">
<template slot-scope="scope">
<span>{{ scope.row.staffName }}</span>
</template>
</el-table-column>
<el-table-column label="收款单编号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.billNo }}</span>
</template>
</el-table-column>
<el-table-column label="付款人" align="center">
<template slot-scope="scope">
<span>{{ scope.row.payerName }}</span>
</template>
</el-table-column>
<el-table-column label="联系电话" align="center">
<template slot-scope="scope">
<span>{{ scope.row.phone }}</span>
</template>
</el-table-column>
<el-table-column label="收款日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.collectionDate }}</span>
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.collectionMoney }}</span>
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.balance }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="pages">
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
</div>
</div>
</div>
<!-- 款项结转 -->
<moneycarriedforwardAdd v-show="viewState == 2" ref="divAdd" @doback="resetState" @reloadlist="getList"/>
</div>
</template>
<script>
import { listPage } from '@/api/moneycarriedforward/moneycarriedforward'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import moneycarriedforwardAdd from './moneycarriedforwardAdd'
export default {
name: 'SimpleDeposit',
components: {
Pagination,
pageye,
ButtonBar,
moneycarriedforwardAdd
},
data() {
return {
isSearchShow: false,
btndisabled: false,
viewState: 1,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toCarryDown',
btnLabel: '款项结转申请'
},
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'toRefund',
btnLabel: '退款申请'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
searchxianshitit: '隐藏查询条件',
tableKey: 0,
list: [],
sids: [],
listLoading: false,
listQuery: {
current: 1,
size: 10,
params: {
collectionStartDate: '',
collectionEndDate: '',
staffDeptName: '',
staffName: '',
billNo: '',
phone: '',
payerName: '',
collectionSmallMoney: '',
collectionBigMoney: '',
menuUrl: '',
createBySid: '',
orgPath: ''
},
total: 0
}
}
},
created() {
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'toCarryDown':
this.toCarryDown()
break
case 'toRefund':
this.toRefund()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
// ------------------
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
// sid
handleSelectionChange(row) {
const aa = []
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
console.log('获取sids数组', this.sids)
},
//
getList() {
this.listLoading = true
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.createBySid = window.sessionStorage.getItem('userSid')
this.listQuery.params.menuUrl = this.$route.path
listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.listQuery.total = response.data.total
this.list = response.data.records
} else {
this.listQuery.total = 0
this.list = []
}
})
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
collectionStartDate: '',
collectionEndDate: '',
staffDeptName: '',
staffName: '',
billNo: '',
phone: '',
payerName: '',
collectionSmallMoney: '',
collectionBigMoney: '',
menuUrl: '',
createBySid: '',
orgPath: ''
},
total: 0
}
this.getList()
},
toCarryDown() {
if (this.sids.length > 0) {
this.viewState = 2
var title = '简易订单订金'
this.$refs['divAdd'].showAdd(title, this.sids)
} else {
this.$message({ showClose: true, type: 'error', message: '请至少选择一条记录进行款项结转申请操作' })
}
},
toRefund() {},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
</style>

413
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardDaiBanInfo.vue

@ -0,0 +1,413 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<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="">
<div class="titwu"><span>款项结转申请</span></div>
<el-form ref="form_obj" :model="formobj" :rules="rules" label-position="top" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>申请部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.applyDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请人</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请日期</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByDate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>销售部门</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.saleDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>销售专员</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.staffName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>来源</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.source }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>结转金额合计</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.jzjehj }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>款项确认书</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<el-image v-for="(item, index) in formobj.kxqrsImages" :key="index" :src="item" :preview-src-list="formobj.kxqrsImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.remarks }}</span>
</el-form-item>
</el-col>
</el-row>
<el-table border :key="tablebleKey" width="100%" :index="index" :data="formobj.finFundsCarriedForwardVehDetailsVos">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="合同编号/收款单编号" align="center">
<template slot-scope="scope">
{{ scope.row.busBillNo }}
</template>
</el-table-column>
<el-table-column label="客户名称/付款人" align="center">
<template slot-scope="scope">
{{ scope.row.customerName }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vinNo }}
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
{{ scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="本次使用金额" align="center">
<template slot-scope="scope">
{{ scope.row.thisUseMoney }}
</template>
</el-table-column>
</el-table>
<el-table border :key="selectedreceivableKey" style="width: 100%" :data="formobj.yxysFinFundsCarriedForwardYXYSKXVos">
<el-table-column label="合同编号" align="center">
<template slot-scope="scope">
{{ scope.row.contractId }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vin }}
</template>
</el-table-column>
<el-table-column label="客户名称" align="center">
<template slot-scope="scope">
{{ scope.row.name }}
</template>
</el-table-column>
<el-table-column label="联系电话" align="center">
<template slot-scope="scope">
{{ scope.row.mobile }}
</template>
</el-table-column>
<el-table-column label="付款方式" align="center">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center">
<template slot-scope="scope">
{{ scope.row.projectName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center">
<template slot-scope="scope">
{{ scope.row.receivable }}
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
{{ scope.row.confirmMoney }}
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center">
<template slot-scope="scope">
{{ scope.row.confirmDate }}
</template>
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="scope">
{{ scope.row.state == 1 ? '待审核' : scope.row.state == 2 ? '已驳回' : scope.row.state == 3 ? '已审核' : '其他' }}
</template>
</el-table-column>
</el-table>
</el-form>
</div>
<!-- 选择待办人 的弹出框-->
<el-dialog title="选择待办人" :visible.sync="nodeDialogVisible" width="80%">
<el-form label-position="right" class="formadd" >
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">当前环节</el-col>
<el-col :span="20">
<el-form-item prop="purchasingUnitName"><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{ rowClass:!currentLink }">
<el-col :span="4" class="tleftb">意见</el-col>
<el-col :span="20">
<el-form-item>
<el-input size="small" v-model="dialogList.comment" placeholder="审批意见" 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 { fetchDetails, complete, reject,breakProcess, getPreviousNodesForReject, getNextNodesForSubmit } from '@/api/moneycarriedforward/moneycarriedforward'
export default {
name: 'MoneyCarriedForwardDaiBanInfo',
data() {
return {
viewTitle: '',
selectedreceivableKey: 0,
tablebleKey: 1,
index: 0,
formobj: {},
rules: {},
dialogList: {
comment: ''
},
operation: '', //
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
}
}
},
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.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.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: document.body.scrollHeight + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '款项结转详情'
fetchDetails(sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
}
}).catch(e => {
this.formobj = {}
})
},
//
openAgree(val) {
this.operation = val
this.currentLink = true
this.dialogList.comment = '同意'
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
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.dialogList.comment = ''
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.dialogList.comment = ''
this.currentLink = false
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()
}
}
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
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
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
console.log(this.stopList, 99999)
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>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
.rowClass {
border-top: 1px solid #e0e3eb;
}
</style>

688
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardEdit.vue

@ -0,0 +1,688 @@
<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="">
<div class="titwu"><span>款项结转申请</span></div>
<el-form ref="form_obj" :model="formobj" :rules="rules" label-position="top" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>申请部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.applyDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请人</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请日期</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByDate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>销售部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.saleDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>销售专员</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.staffName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>来源</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.source }}</span>
</el-form-item>
</el-col>
</el-row>
<el-table border :key="tablebleKey" width="100%" :index="index" :data="formobj.finFundsCarriedForwardVehDetailsVos">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="danger" size="small" @click="handleDelete(scope.$index)">删除</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号/收款单编号" align="center">
<template slot-scope="scope">
{{ scope.row.busBillNo }}
</template>
</el-table-column>
<el-table-column label="客户名称/付款人" align="center">
<template slot-scope="scope">
{{ scope.row.customerName }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vinNo }}
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
{{ scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="本次使用金额" align="center">
<template slot-scope="scope">
<el-input v-model="scope.row.thisUseMoney" clearable placeholder=""/>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="4" class="tleftb" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<span>款项确认书</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<upload ref="uploadImg" v-model="image_list1" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<el-input v-model="formobj.remarks" style="width: 70%" placeholder="" clearable/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24" style="padding: 0px">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="采购系统:">
<el-select :disabled="dialogStatus == 'edit'" v-model="formobj.purchaseSystemSid" placeholder="请选择" @change="changePurchase" filterable clearable>
<el-option v-for="item in purchase_list" :key="item.deptSid" :label="item.purchaseSystemName" :value="item.deptSid"/>
</el-select>
</el-form-item>
<el-form-item label="合同编号:">
<el-input v-model="listQuery.contractNo" size="mini" placeholder="" style="width: 110px" clearable/>
</el-form-item>
<el-form-item label="客户名称:">
<el-input v-model="listQuery.customerName" size="mini" placeholder="" style="width: 100px" clearable/>
</el-form-item>
<el-form-item label="联系电话:">
<el-input v-model="listQuery.customerPhone" size="mini" placeholder="" style="width: 140px" clearable/>
</el-form-item>
<el-form-item label="车架号:">
<el-input v-model="listQuery.vinNo" size="mini" placeholder="" style="width: 140px" clearable/>
</el-form-item>
</el-form>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div style="display: flex;flex-direction: row;justify-content: space-between;align-items: center;padding-top: 5px">
<div style="padding-left: 30%">
<el-button type="primary" size="mini" @click="handleFilter">查询</el-button>
<el-button type="primary" size="mini" @click="handReset">重置</el-button>
<el-button type="primary" size="mini" @click="handleSelect">选择已认款项</el-button>
</div>
<div>
<span >余额:{{ balaceCount() }}</span>
</div>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="10">
<div>
<div class="tableTitle">应收未收款款项明细</div>
<el-table border :key="overduereceivableKey" width="100%" :data="overduereceivable_list">
<el-table-column fixed label="操作" align="center" width="80">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handAdd(scope.row)">添加</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.contractNo }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.VIN }}
</template>
</el-table-column>
<el-table-column label="客户/电话" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.customerName }} {{ scope.row.customerPhone }}
</template>
</el-table-column>
<el-table-column label="付款" align="center" width="70">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收金额" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.reveivableMoney }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.receivablesName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.currentReceivableMoney }}
</template>
</el-table-column>
</el-table>
</div>
</el-col>
<el-col :span="14">
<div>
<div class="tableTitle">已选应收款项明细</div>
<el-table border :key="selectedreceivableKey" width="100%" :data="formobj.yxysFinFundsCarriedForwardYXYSKXVos">
<el-table-column fixed label="操作" align="center" width="70">
<template slot-scope="scope">
<el-button type="danger" size="small" @click="handDelete(scope.row)">移除</el-button>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="95">
<template slot-scope="scope">
{{ scope.row.contractId }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.vin }}
</template>
</el-table-column>
<el-table-column label="客户/电话" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.name }} {{ scope.row.mobile }}
</template>
</el-table-column>
<el-table-column label="付款" align="center" width="70">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center" width="90">
<template slot-scope="scope">
{{ scope.row.projectName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center" width="100">
<template slot-scope="scope">
{{ scope.row.receivable }}
</template>
</el-table-column>
<el-table-column label="认款金额" align="center" width="130">
<template slot-scope="scope">
<el-input v-model="scope.row.confirmMoney" @input="changeMoney(scope.row)" @keyup.native="UpNumber" @keydown.native="UpNumber" placeholder="" clearable/>
</template>
</el-table-column>
<el-table-column label="剩余应收" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.surplusReceivable }}</span>
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center" width="120">
<template slot-scope="scope">
<span>{{ scope.row.confirmDate }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-col>
</el-row>
</el-form>
</div>
</div>
<amountpledged v-show="viewState == 2" ref="divSelect" @doback="resetState" @backData="backData"/>
</div>
</template>
<script>
import { saveOrUpdate, fetchDetails, submit } from '@/api/moneycarriedforward/moneycarriedforward'
import { listAll } from '@/api/anruifinmanagement/paymentConfirmation'
import amountpledged from './relation/amountpledged'
import { fetchDetailsByUseOrgSid, getOrgSidByPath } from '@/api/jichuxinxi/dictcommons'
import upload from '@/components/uploadFile/upload'
export default {
name: 'MoneyCarriedForwardEdit',
components: {
upload,
amountpledged
},
data() {
return {
viewTitle: '',
viewState: 1,
dialogStatus: '',
tablebleKey: 0,
index: 0,
overduereceivableKey: 1,
selectedreceivableKey: 2,
overduereceivable_list: [],
purchase_list: [],
image_list1: [],
accept: '.jpg,.jpeg,.png,.JPG,.JPEG',
formobj: {
applyDeptName: '',
applyDeptSid: '',
billNo: '',
createByDate: '',
createByName: '',
createBySid: '',
finFundsCarriedForwardVehDetailsVos: [],
kxqrsImages: [],
orgSidPath: '',
purchaseSystem: '',
purchaseSystemSid: '',
remarks: '',
saleDeptName: '',
saleDeptSid: '',
sid: '',
source: '',
staffName: '',
staffSid: '',
useOrgName: '',
useOrgSid: '',
yxysFinFundsCarriedForwardYXYSKXVos: []
},
listQuery: {
contractNo: '',
customerName: '',
customerPhone: '',
sids: [],
createBySid: '',
vinNo: '',
orgPath: '',
purchaseSystemSid: ''
},
rules: {},
submitdisabled: false,
}
},
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: document.body.scrollHeight + 'px'
}
}, '*')
},
methods: {
UpNumber(e) {
e.target.value = e.target.value.replace(/[^\d.]/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 !== '') {
// 0102
console.log(e.target.value)
e.target.value = parseFloat(e.target.value)
}
},
//
changeMoney(row) {
if (row.receivable !== '') {
row.surplusReceivable = parseFloat(row.receivable) - parseFloat(row.confirmMoney)
} else {
row.surplusReceivable = ''
}
},
handleDelete(index) {
this.formobj.finFundsCarriedForwardVehDetailsVos.splice(index, 1)
},
balaceCount() {
var money = '0'
if (this.formobj.finFundsCarriedForwardVehDetailsVos.length > 0) {
let useMoney = '0'
for (var i = 0; i < this.formobj.finFundsCarriedForwardVehDetailsVos.length; i++) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos[i].thisUseMoney === '') {
useMoney = '1'
return
}
}
if (useMoney === '0') {
var list = []
for (var b = 0; b < this.formobj.finFundsCarriedForwardVehDetailsVos.length; b++) {
list.push(this.formobj.finFundsCarriedForwardVehDetailsVos[b].thisUseMoney)
}
money = this.calculatedAmount(list)
}
}
if (this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length > 0) {
let confirmMoney = '0'
for (var p = 0; p < this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length; p++) {
if (this.formobj.yxysFinFundsCarriedForwardYXYSKXVos[p].confirmMoney === '') {
confirmMoney = '1'
return money
}
}
if (confirmMoney === '0') {
var list1 = []
for (var l = 0; l < this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.length; l++) {
list1.push(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos[l].confirmMoney)
}
money = parseFloat(money) - parseFloat(this.calculatedAmount(list1))
}
}
return money
},
calculatedAmount(list) {
var sumNum = 0
for (var k = 0; k < list.length; k++) {
//
sumNum += Number(list[k].replace(/,/g, ''))
}
//
var f1 = Math.round(sumNum * 100) / 100
//
var strNum = f1.toString()
//
var rs = strNum.indexOf('.')
if (rs < 0) {
rs = strNum.length
strNum += '.'
}
while (strNum.length <= rs + 2) {
strNum += '0'
}
var resNum = strNum.replace(/\d+/, function(n) {
return n.replace(/(\d)(?=(\d{3})+$)/g, function(u) {
return u
})
})
return resNum
},
getlist() {
if (this.formobj.purchaseSystemName === '') {
this.$message({ showClose: true, type: 'error', message: '请选择采购系统' })
return
}
this.listQuery.createBySid = this.formobj.createBySid
this.listQuery.orgPath = this.formobj.orgSidPath
listAll(this.listQuery).then((res) => {
if (res.code === '200') {
this.overduereceivable_list = res.data
}
})
},
handleFilter() {
this.getlist()
},
changePurchase(value) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos.length > 0) {
for (var i = 0; i < this.formobj.finFundsCarriedForwardVehDetailsVos.length; i++) {
if (this.formobj.finFundsCarriedForwardVehDetailsVos[i].thisUseMoney === '') {
this.$message({ showClose: true, type: 'error', message: '请检查本次使用金额是否已全部填写' })
this.formobj.purchaseSystemSid = ''
return
}
}
}
if (value !== '') {
const choose = this.purchase_list.filter((item) => item.deptSid === value)
this.formobj.purchaseSystem = choose[0].purchaseSystemName
this.listQuery.purchaseSystemSid = this.formobj.purchaseSystemSid
this.getlist()
} else {
this.overduereceivable_list = []
}
},
handReset() {
this.listQuery.contractNo = ''
this.listQuery.customerName = ''
this.listQuery.customerPhone = ''
this.listQuery.vinNo = ''
this.listQuery.createBySid = ''
this.listQuery.orgPath = ''
this.getlist()
},
showInfo(sid) {
this.viewTitle = '【编辑】款项结转'
this.dialogStatus = 'edit'
fetchDetails(sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
this.formobj.instanceId = resp.data.procInsId
getOrgSidByPath({ orgPath: this.formobj.orgSidPath }).then((res) => {
fetchDetailsByUseOrgSid(res.data).then((resp) => {
if (resp.success) {
this.purchase_list = resp.data
}
})
})
if (this.formobj.kxqrsImages !== null && this.formobj.kxqrsImages.length >0) {
this.formobj.kxqrsImages.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.purchaseSystem !== '') {
this.listQuery.purchaseSystemSid = this.formobj.purchaseSystemSid
this.getlist()
}
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
}
}).catch(e => {
this.formobj = {}
})
},
//
handAdd(row) {
if (this.formobj.collectionMoney === '') {
this.$message({ showClose: true, type: 'error', message: '请先填写收款金额' })
} else {
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
var dayDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.push({
createByName: window.sessionStorage.getItem('name'),
contractSid: row.contractSid,
contractId: row.contractNo,
customerSid: row.customerSid,
name: row.customerName,
vin: row.VIN,
useOrgSid: '',
mobile: row.customerPhone,
projectName: row.receivablesName,
receivable: row.currentReceivableMoney,
lastSubscriptionMoney: '',
confirmMoney: '',
surplusReceivable: '',
subscribedOf: row.subscribedOf,
confirmDate: dayDate,
collSid: '',
receivablesSid: row.receivablesSid,
payType: row.payType,
payTypeKey: row.payTypeKey,
sid: row.sid
})
this.listQuery.sids.push(row.sid)
this.balaceCount()
this.getlist()
}
},
//
handDelete(row) {
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.splice(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.indexOf(row), 1)
if (row.subscribedOf == 0) {
this.listQuery.sids.splice(this.listQuery.sids.indexOf(row.sid), 1)
this.getlist()
}
},
//
handleSelect() {
if (this.formobj.purchaseSystemSid === '') {
this.$message({ showClose: true, type: 'error', message: '请先选择采购系统' })
return
}
this.viewState = 2
this.$refs['divSelect'].showData(this.formobj.yxysFinFundsCarriedForwardYXYSKXVos, this.formobj.purchaseSystemSid)
},
// --
backData(val) {
this.viewState = 1
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
var dayDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
for (var i = 0; i < val.length; i++) {
this.formobj.yxysFinFundsCarriedForwardYXYSKXVos.push({
createByName: window.sessionStorage.getItem('name'),
contractSid: val[i].contractSid,
contractId: val[i].contractNo,
customerSid: val[i].customerSid,
name: val[i].customerName,
vin: val[i].VIN,
useOrgSid: '',
mobile: val[i].customerPhone,
projectName: val[i].receivablesName,
receivable: val[i].currentReceivableMoney,
lastSubscriptionMoney: '',
confirmMoney: '',
surplusReceivable: '',
subscribedOf: val[i].subscribedOf,
confirmDate: dayDate,
collSid: '',
receivablesSid: val[i].sid,
payType: val[i].payType,
payTypeKey: val[i].payTypeKey,
sid: val[i].sid
})
}
},
resetState() {
this.viewState = 1
},
saveOrUpdate() {
if (this.image_list1.length > 0) {
var aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.kxqrsImages = aa
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
saveOrUpdate(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
submit() {
if (this.image_list1.length > 0) {
var aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.kxqrsImages = aa
}
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
submit(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: resp.msg })
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
}
}
}
</script>
<style scoped>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
.tableTitle{
border: 1px solid #e0e3eb;
line-height: 42px;
text-align: center;
font-weight: bold;
font-size: 18px;
}
</style>

287
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/moneycarriedforwardYiBanInfo.vue

@ -0,0 +1,287 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>{{ viewTitle }}</div>
<div>
<el-button type="danger" size="small" @click="openRevoke()">撤回 </el-button>
</div>
</div>
<div class="">
<div class="titwu"><span>款项结转申请</span></div>
<el-form ref="form_obj" :model="formobj" :rules="rules" label-position="top" class="formadd">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>申请部门</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.applyDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请人</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>申请日期</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.createByDate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>销售部门</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.saleDeptName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>销售专员</span>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>{{ formobj.staffName }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>来源</span>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formobj.source }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>结转金额合计</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.jzjehj }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<el-form-item><span>款项确认书</span></el-form-item>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<el-image v-for="(item, index) in formobj.kxqrsImages" :key="index" :src="item" :preview-src-list="formobj.kxqrsImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="tleftb">
<span>备注</span>
</el-col>
<el-col :span="20" class="trightb">
<el-form-item>
<span>{{ formobj.remarks }}</span>
</el-form-item>
</el-col>
</el-row>
<el-table border :key="tablebleKey" width="100%" :index="index" :data="formobj.finFundsCarriedForwardVehDetailsVos">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="合同编号/收款单编号" align="center">
<template slot-scope="scope">
{{ scope.row.busBillNo }}
</template>
</el-table-column>
<el-table-column label="客户名称/付款人" align="center">
<template slot-scope="scope">
{{ scope.row.customerName }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vinNo }}
</template>
</el-table-column>
<el-table-column label="剩余金额" align="center">
<template slot-scope="scope">
{{ scope.row.balance }}
</template>
</el-table-column>
<el-table-column label="本次使用金额" align="center">
<template slot-scope="scope">
{{ scope.row.thisUseMoney }}
</template>
</el-table-column>
</el-table>
<el-table border :key="selectedreceivableKey" style="width: 100%" :data="formobj.yxysFinFundsCarriedForwardYXYSKXVos">
<el-table-column label="合同编号" align="center">
<template slot-scope="scope">
{{ scope.row.contractId }}
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
{{ scope.row.vin }}
</template>
</el-table-column>
<el-table-column label="客户名称" align="center">
<template slot-scope="scope">
{{ scope.row.name }}
</template>
</el-table-column>
<el-table-column label="联系电话" align="center">
<template slot-scope="scope">
{{ scope.row.mobile }}
</template>
</el-table-column>
<el-table-column label="付款方式" align="center">
<template slot-scope="scope">
{{ scope.row.payType }}
</template>
</el-table-column>
<el-table-column label="应收项目" align="center">
<template slot-scope="scope">
{{ scope.row.projectName }}
</template>
</el-table-column>
<el-table-column label="当前应收" align="center">
<template slot-scope="scope">
{{ scope.row.receivable }}
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
{{ scope.row.confirmMoney }}
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center">
<template slot-scope="scope">
{{ scope.row.confirmDate }}
</template>
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="scope">
{{ scope.row.state == 1 ? '待审核' : scope.row.state == 2 ? '已驳回' : scope.row.state == 3 ? '已审核' : '其他' }}
</template>
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</template>
<script>
import { fetchDetails, revokeProcess } from '@/api/moneycarriedforward/moneycarriedforward'
export default {
name: 'MoneyCarriedForwardYiBanInfo',
data() {
return {
viewTitle: '',
selectedreceivableKey: 0,
tablebleKey: 1,
index: 0,
formobj: {},
rules: {},
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
}
}
},
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.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.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: document.body.scrollHeight + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
this.viewTitle = '款项结转详情'
fetchDetails(sid).then(resp => {
if (resp.success) {
this.formobj = resp.data
}
}).catch(e => {
this.formobj = {}
})
},
/** 确认撤回任务 */
openRevoke() {
this.$confirm('是否确认执行撤回操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRevoke()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消撤回'
})
})
},
/** 撤回任务 */
handleRevoke() {
revokeProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
</style>

232
anrui-buscenter/anrui-finmanage-ui/src/views/workFlow/kuanxiangjiezhuanFlow/relation/amountpledged.vue

@ -0,0 +1,232 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>已认款完成的车款或首付款及费用</div>
<div>
<el-button type="primary" size="small" @click="AddUpdateReturn">确定</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="">
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<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.contractNo" placeholder="" clearable class="filter-item"/>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" placeholder="" clearable class="filter-item"/>
</el-form-item>
<el-form-item label="联系电话">
<el-input v-model="listQuery.params.mobile" placeholder="" clearable class="filter-item"/>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable class="filter-item"/>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center">
<el-button type="primary" icon="el-icon-search" size="small" @click="handleFilter">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" size="small" @click="handresetting">重置</el-button>
</div>
</div>
</div>
<div class="">
<el-table :key="tableKey" ref="multipleTable" v-loading="listLoading" :data="list" border style="width: 100%" @selection-change="handleSelectionChange">
<el-table-column width="50px" type="selection" align="center"/>
<el-table-column width="80px" label="编号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="合同编号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.contractNo }}</span>
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.VIN }}</span>
</template>
</el-table-column>
<el-table-column label="客户/电话" align="center">
<template slot-scope="scope">
<span>{{ scope.row.customerName }}/{{ scope.row.customerPhone }}</span>
</template>
</el-table-column>
<el-table-column label="销售类型" align="center">
<template slot-scope="scope">
<span>{{ scope.row.payType }}</span>
</template>
</el-table-column>
<el-table-column label="应收项目" align="center">
<template slot-scope="scope">
<span>{{ scope.row.receivablesName }}</span>
</template>
</el-table-column>
<el-table-column label="当前应收" align="center">
<template slot-scope="scope">
<span>{{ scope.row.currentReceivableMoney }}</span>
</template>
</el-table-column>
<el-table-column label="认款金额" align="center">
<template slot-scope="scope">
<span>{{ scope.row.subscriptionMoney }}</span>
</template>
</el-table-column>
<el-table-column label="剩余应收" align="center">
<template slot-scope="scope">
<span>{{ scope.row.reveivableMoney }}</span>
</template>
</el-table-column>
<el-table-column label="认款申请日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.subscriptionDate }}</span>
</template>
</el-table-column>
</el-table>
</div>
<div class="pages">
<div class="tit"/>
<!-- 翻页 -->
<pagination v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
</div>
</div>
</div>
</template>
<script>
import Pagination from '@/components/pagination'
import { selectPageList } from '@/api/anruifinmanagement/paymentConfirmation.js'
export default {
name: 'AmountPledged',
components: {
Pagination
},
data() {
return {
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
tableKey: 0,
sids: [],
list: [],
listLoading: false,
listQuery: {
current: 1,
size: 10,
params: {
contractNo: '',
customerName: '',
mobile: '',
orgPath: '',
userSid: '',
purchaseSystemSid: '',
vinNo: '',
sids: []
},
total: 0
}
}
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
handleReturn() {
this.$emit('doback')
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
selectPageList(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.listQuery.total = response.data.total
this.list = response.data.records
}
})
},
//
handleFilter() {
this.getList()
},
//
handresetting() {
this.listQuery.params.contractNo = ''
this.listQuery.params.customerName = ''
this.listQuery.params.mobile = ''
this.listQuery.params.vinNo = ''
this.listQuery.params.orgPath = ''
this.listQuery.params.userSid = ''
this.listQuery.current = 1
this.listQuery.size = 5
this.listQuery.total = 0
this.getList()
},
handleSelectionChange(row) {
this.sids = []
const aa = []
row.forEach((element) => {
aa.push({
contractSid: element.contractSid,
contractNo: element.contractNo,
customerSid: element.customerSid,
customerName: element.customerName,
customerPhone: element.customerPhone,
receivablesName: element.receivablesName,
currentReceivableMoney: element.currentReceivableMoney,
subscribedOf: element.subscribedOf,
sid: element.sid,
VIN: element.VIN,
payType: element.payType,
payTypeKey: element.payTypeKey
})
})
this.sids = aa
},
showData(value, purchaseSystemSid) {
const aa = []
if (value.length > 0) {
for (var i = 0; i < value.length; i++) {
aa.push(value[i].sid)
}
this.listQuery.params.sids = aa
} else {
this.listQuery.params.sids = []
}
this.listQuery.current = 1
this.listQuery.total = 0
this.listQuery.size = 5
this.listQuery.params.purchaseSystemSid = purchaseSystemSid
this.getList()
},
//
AddUpdateReturn() {
if (this.sids.length > 0) {
this.$emit('backData', this.sids)
} else {
this.$notify({
title: '提示',
message: '请选择至少一条记录!',
type: 'error',
duration: 2000
})
}
}
}
}
</script>
<style scoped>
</style>

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

@ -491,14 +491,14 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//认款日期默认为当天的日期
finSelectedReceivablesDetailed.setSubscriptionDate(DateUtil.today());
finSelectedReceivablesDetailedService.insert(finSelectedReceivablesDetailed);
if(v.getSubscribedOf() == 0){
if (v.getSubscribedOf() == 0) {
//应收未收减去相应的认款
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney().subtract(finSelectedReceivablesDetailed.getSubscriptionMoney());
finUncollectedReceivablesDetailed.setCurrentReceivableMoney(currentReceivableMoney);
finUncollectedReceivablesDetailedService.updateById(finUncollectedReceivablesDetailed);
}
});
}
finCollectionConfirmation.setBalance(finCollectionConfirmation.getCollectionMoney());
@ -535,7 +535,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailed.setCreateBySid(dto.getUserSid());
finSelectedReceivablesDetailed.setSubscriptionDate(DateUtil.today());
finSelectedReceivablesDetailedService.insert(finSelectedReceivablesDetailed);
if(v.getSubscribedOf() == 0){
if (v.getSubscribedOf() == 0) {
//应收未收减去相应的认款
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney().subtract(finSelectedReceivablesDetailed.getSubscriptionMoney());
@ -1005,7 +1005,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailed.setCustomerSid(paymentDetail.getCustomerSid());
finSelectedReceivablesDetailed.setSubscribedOf(paymentDetail.getSubscribedOf());
finSelectedReceivablesDetailedService.save(finSelectedReceivablesDetailed);
if(paymentDetail.getSubscribedOf() == 0){
if (paymentDetail.getSubscribedOf() == 0) {
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney().subtract(finSelectedReceivablesDetailed.getSubscriptionMoney());
finUncollectedReceivablesDetailed.setCurrentReceivableMoney(currentReceivableMoney);
@ -1140,8 +1140,8 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//分页
IPage<AppFinUncollectedReceivablesDetailedVo> page1 = new Page<>();
page1.setTotal(collList.size());
page1.setPages(collList.size()/pagerQuery.getSize()+(collList.size()%pagerQuery.getSize()==0?0:1));
collList = collList.stream().skip((pagerQuery.getCurrent() - 1) *pagerQuery.getSize()).limit(pagerQuery.getSize()).collect(Collectors.toList()); //开始分页
page1.setPages(collList.size() / pagerQuery.getSize() + (collList.size() % pagerQuery.getSize() == 0 ? 0 : 1));
collList = collList.stream().skip((pagerQuery.getCurrent() - 1) * pagerQuery.getSize()).limit(pagerQuery.getSize()).collect(Collectors.toList()); //开始分页
page1.setRecords(collList);
page1.setCurrent(pagerQuery.getCurrent());
page1.setSize(pagerQuery.getSize());
@ -1183,7 +1183,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailed.setAuditDate(DateUtil.today());
finSelectedReceivablesDetailed.setAuditState(2);
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed);
if(v.getSubscribedOf() == 0){
if (v.getSubscribedOf() == 0) {
//应收未收将款项加回来
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney().add(finSelectedReceivablesDetailed.getSubscriptionMoney());
@ -1230,6 +1230,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
if (confirmation == null) {
return rb.setMsg("该申请不存在");
}
finSelectedReceivablesDetailedService.updateAuditStateBySid(1, sid);
//推送收款单
ARReceivebill arReceivebill = new ARReceivebill();
//业务日期
@ -1373,7 +1374,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailedVos1_1.isEmpty() &&
finSelectedReceivablesDetailedVos2_1.isEmpty() &&
finSelectedReceivablesDetailedVos1_1_1.isEmpty() &&
finSelectedReceivablesDetailedVos1_1_2.isEmpty()) {
finSelectedReceivablesDetailedVos1_1_2.isEmpty() && confirmation.getPushMessgae() == 1) {
//先推送客户
AppBusDepositBuscenterDetailVo busDeposit = busDepositFeign.getDepositInfoDetails(confirmation.getBusSid()).getData();
BdCustomer bdCustomer = createBdCustomer(confirmation.getUseOrgSid(), busDeposit.getPayName(), busDeposit.getPhone(), "", sid);
@ -1419,9 +1420,11 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
//应收未收款项明细sid
String receivablesSid = v.getReceivablesSid();
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(receivablesSid);
//更新认款状态
finUncollectedReceivablesDetailed.setSubscriptionState(finUncollectedReceivablesDetailed.getCurrentReceivableMoney().compareTo(BigDecimal.ZERO) == 0 ? 3 : 2);
finUncollectedReceivablesDetailedService.updateById(finUncollectedReceivablesDetailed);
if (v.getSubscribedOf() == 0) {
//更新认款状态
finUncollectedReceivablesDetailed.setSubscriptionState(finUncollectedReceivablesDetailed.getCurrentReceivableMoney().compareTo(BigDecimal.ZERO) == 0 ? 3 : 2);
finUncollectedReceivablesDetailedService.updateById(finUncollectedReceivablesDetailed);
}
FinSelectedReceivablesDetailed finSelectedReceivablesDetailed = finSelectedReceivablesDetailedService.fetchBySid(selectSid);
//更新已选款项明细的审核状态1待审核/2已驳回/3已审核
finSelectedReceivablesDetailed.setAuditState(3);
@ -1430,7 +1433,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed);
//ToDo:查询是否符合待出库的条件
//该合同编号下的该车架号的所有认款金额
if(v.getSubscribedOf() == 0){
if (v.getSubscribedOf() == 0) {
List<FinSelectedReceivablesDetailedVo> voList = finSelectedReceivablesDetailedService.selectListByVin(v.getContractNo(), finUncollectedReceivablesDetailed.getBusVinSid(), 3);
BigDecimal bigDecimalVinAll = voList.stream().map(FinSelectedReceivablesDetailedVo::getSubscriptionMoney).map(BigDecimal::new).reduce(BigDecimal.ZERO, BigDecimal::add);
//查询该合同编号下的销售订单的单车成交价
@ -2262,7 +2265,7 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
finSelectedReceivablesDetailed.setAuditState(4);
finSelectedReceivablesDetailedService.updateById(finSelectedReceivablesDetailed);
//应收未收将款项加回来
if(v.getSubscribedOf() == 0){
if (v.getSubscribedOf() == 0) {
FinUncollectedReceivablesDetailed finUncollectedReceivablesDetailed = finUncollectedReceivablesDetailedService.fetchBySid(finSelectedReceivablesDetailed.getReceivablesSid());
BigDecimal currentReceivableMoney = finUncollectedReceivablesDetailed.getCurrentReceivableMoney().add(finSelectedReceivablesDetailed.getSubscriptionMoney());
finUncollectedReceivablesDetailed.setCurrentReceivableMoney(currentReceivableMoney);
@ -2326,20 +2329,20 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
}
}
qw.gt("fcc.balance", 0);
if (StringUtils.isNotBlank(query.getStaffDeptName())){
qw.like("fcc.staffDeptName",query.getStaffDeptName());
if (StringUtils.isNotBlank(query.getStaffDeptName())) {
qw.like("fcc.staffDeptName", query.getStaffDeptName());
}
if (StringUtils.isNotBlank(query.getStaffName())){
qw.like("fcc.staffName",query.getStaffName());
if (StringUtils.isNotBlank(query.getStaffName())) {
qw.like("fcc.staffName", query.getStaffName());
}
if (StringUtils.isNotBlank(query.getBillNo())){
qw.like("fcc.billNo",query.getBillNo());
if (StringUtils.isNotBlank(query.getBillNo())) {
qw.like("fcc.billNo", query.getBillNo());
}
if (StringUtils.isNotBlank(query.getPayerName())){
qw.like("fcc.payerName",query.getPayerName());
if (StringUtils.isNotBlank(query.getPayerName())) {
qw.like("fcc.payerName", query.getPayerName());
}
if (StringUtils.isNotBlank(query.getPhone())){
qw.like("bd.draweeMobile",query.getPhone());
if (StringUtils.isNotBlank(query.getPhone())) {
qw.like("bd.draweeMobile", query.getPhone());
}
String collectionStartDate = query.getCollectionStartDate();
String collectionEndDate = query.getCollectionEndDate();
@ -2348,10 +2351,10 @@ public class FinCollectionConfirmationService extends MybatisBaseService<FinColl
);
String collectionSmallMoney = query.getCollectionSmallMoney();
String collectionBigMoney = query.getCollectionBigMoney();
if (StringUtils.isNotBlank(collectionSmallMoney) && StringUtils.isNotBlank(collectionBigMoney)){
qw.between("fcc.balance",collectionSmallMoney,collectionBigMoney);
if (StringUtils.isNotBlank(collectionSmallMoney) && StringUtils.isNotBlank(collectionBigMoney)) {
qw.between("fcc.balance", collectionSmallMoney, collectionBigMoney);
}
if (StringUtils.isNotBlank(query.getName())){
if (StringUtils.isNotBlank(query.getName())) {
qw.and(wrapper -> wrapper.like("fcc.billNo", query.getName()).or().like("fcc.staffDeptName", query.getName()).or().like("fcc.staffName", query.getName()).or().like("fcc.payerName", query.getName()).or().like("bd.draweeMobile", query.getName()));
}
IPage<FinCollectionConfirmation> page = PagerUtil.queryToPage(pq);

113
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java

@ -116,7 +116,7 @@ public class FlowableRest implements FlowableFeign {
* @return
*/
@Override
public ResultBean cc(Map<String, Object> map,String taskDefKey) {
public ResultBean cc(Map<String, Object> map, String taskDefKey) {
ResultBean rb = ResultBean.fireFail();
log.info("FlowableRest-cc:{}", JSONObject.toJSONString(map));
Object bv1 = map.get("bv");
@ -197,12 +197,12 @@ public class FlowableRest implements FlowableFeign {
return rb.setMsg("抄送失败,流程定义不存在!");
}
mfq.setModuleName(process.get("NAME_"));
if(processVariables.containsKey("orderNames")){
if (processVariables.containsKey("orderNames")) {
mfq.setMsgTitle(processVariables.get("orderNames").toString());
}else{
} else {
mfq.setMsgTitle(process.get("NAME_"));
}
if(processVariables.containsKey("sendRecommendSid")){//增加的其他的抄送人
if (processVariables.containsKey("sendRecommendSid")) {//增加的其他的抄送人
userSids.append(processVariables.get("sendRecommendSid").toString()).append(",");
}
userSids.deleteCharAt(userSids.length() - 1);
@ -305,7 +305,7 @@ public class FlowableRest implements FlowableFeign {
if (!success) {
// return rb.setMsg(nextNodeUserSidsOfCreate.getMsg());
nextNodeUserSids_ = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
}else{
} else {
nextNodeUserSids_ = nextNodeUserSidsOfCreate.getData().getUserSid();
dto.getFormVariables().put(BusinessVariables.ORGPATH, nextNodeUserSidsOfCreate.getData().getOrgPath());
}
@ -333,11 +333,11 @@ public class FlowableRest implements FlowableFeign {
public ResultBean<UpdateFlowFieldVo> handleProsess(BusinessVariables dto) {
ResultBean<UpdateFlowFieldVo> rb = ResultBean.fireFail();
ResultBean<UpdateFlowFieldVo> updateFlowFieldVoResultBean = handleProsess(dto, true);
log.info("流程返回:{}",JSONObject.toJSONString(updateFlowFieldVoResultBean));
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean));
//需要判断办结后再执行 TODO
if (updateFlowFieldVoResultBean.getSuccess()) {
log.info("流程返回:{}",JSONObject.toJSONString(updateFlowFieldVoResultBean));
if ("Event_end".equals(updateFlowFieldVoResultBean.getData().getTaskDefKey())) {
log.info("流程返回:{}", JSONObject.toJSONString(updateFlowFieldVoResultBean));
if ("Event_end".equals(updateFlowFieldVoResultBean.getData().getTaskDefKey())) {
try {
ThreadFactory namedThreadFactory = new ThreadFactoryBuilder()
.setNameFormat("demo-pool-%d").build();
@ -351,7 +351,7 @@ public class FlowableRest implements FlowableFeign {
UpdateFlowFieldVo ufVo = updateFlowFieldVoResultBean.getData();
ufVo.setTaskId(dto.getTaskId());
map.put("uff", ufVo);
cc(map,dto.getTaskDefKey());
cc(map, dto.getTaskDefKey());
});
} catch (Exception e) {
e.printStackTrace();
@ -389,31 +389,37 @@ public class FlowableRest implements FlowableFeign {
boolean isChange = false;
String firstName = "";
String firstSid = "";
String changeName = "";
if (StringUtils.isBlank(nextUserSid)) {
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto);
if (!nextNodeUserSidsOfSubmit.getSuccess()) {
// return rb.setMsg("nextUserSid 不能为空!");
//=================================添加系统个管理员自动审批
//下一环节用户为空的情况
nextUserSid = ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId();
adminContains = true;
}else{
} else {
nextUserSid = nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put(BusinessVariables.ORGPATH, nextNodeUserSidsOfSubmit.getData().getOrgPath());
if(nextUserSid != null){
//下一环节不为空,查询下一环节用户是否有转办人
if (nextUserSid != null) {
List<String> nextUserList = Arrays.asList(nextUserSid.split(","));
if(nextUserList.size() == 1){
if (nextUserList.size() == 1) {
//下一环节用户sid
firstSid = nextUserList.get(0);
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(firstSid);
if(sysUserVoResultBean.getData() != null){
if (sysUserVoResultBean.getData() != null) {
//下一环节用户名称
firstName = sysUserVoResultBean.getData().getName();
}
SysFlowableConfigQuery sysFlowableConfigQuery = new SysFlowableConfigQuery();
sysFlowableConfigQuery.setUserSid(firstSid);
sysFlowableConfigQuery.setNowDate(new Date());
ResultBean<SysFlowableConfigVvo> sysFlowableConfigVvoResultBean = sysFlowableConfigFeign.selectByUserSid(sysFlowableConfigQuery);
if(sysFlowableConfigVvoResultBean.getData() != null){
if(StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())){
if (sysFlowableConfigVvoResultBean.getData() != null) {
if (StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())) {
//转办人sid
nextUserSid = sysFlowableConfigVvoResultBean.getData().getChangeUserSid();
//转办人名称
changeName = sysFlowableConfigVvoResultBean.getData().getChangeName();
isChange = true;
}
}
@ -421,8 +427,9 @@ public class FlowableRest implements FlowableFeign {
}
}
}else{
if(ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextUserSid)){
} else {
//若下一环节用户与系统管理员一致,则自动审批
if (ProcDefEnum.DEFAUL_TADMIN_SID.getProDefId().equals(nextUserSid)) {
adminContains = true;
}
}
@ -442,6 +449,7 @@ public class FlowableRest implements FlowableFeign {
if (StringUtils.isBlank(businessSid)) {
return rb.setMsg("业务sid 不能为空!");
}
//查询任务id为taskId的任务是否存在
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (Objects.isNull(task)) {
return rb.setMsg("任务不存在");
@ -454,7 +462,7 @@ public class FlowableRest implements FlowableFeign {
String taskDefKey = "";
vo.setSid(businessSid);
if (DelegationState.PENDING.equals(task.getDelegationState())) {
if (DelegationState.PENDING.equals(task.getDelegationState())) {//加签
taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment);
taskService.resolveTask(taskId, formVariables);
@ -469,15 +477,11 @@ public class FlowableRest implements FlowableFeign {
if (ll.getData().size() > 0) {
LatestTaskVo latestTaskVo = ll.getData().get(0);
String id_ = latestTaskVo.getId_();
if(isChange){//添加评论
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(nextUserSid);
if (isChange) {//若下一环节用户存在转办人则添加评论
ProcessCommentDto processCommentDto = new ProcessCommentDto();
processCommentDto.setReviewerSid(firstSid);
if(sysUserVoResultBean.getData() != null){
String changeName = sysUserVoResultBean.getData().getName();
processCommentDto.setReviewer(firstName);
processCommentDto.setContent("交"+changeName+"转办");
}
processCommentDto.setReviewer(firstName);
processCommentDto.setContent("交" + changeName + "转办");
processCommentDto.setTime(new Date());
processCommentDto.setProcessId(dto.getInstanceId());
processCommentService.saveOrUpdateDto(processCommentDto);
@ -494,7 +498,7 @@ public class FlowableRest implements FlowableFeign {
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
}
if (adminContains) {
if (adminContains) {//若下一环节用户与系统管理员一致,则自动审批
dto.setUserSid(nextUserSid);
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
@ -510,13 +514,13 @@ public class FlowableRest implements FlowableFeign {
if (taskDefKey.equals(id) && i + 1 < flowElements.size()) {
FlowElement flowElement1 = flowElements.get(i + 1);
List<SysUserVo> sysUserVoLists2 = new ArrayList<>();
if(i+2<flowElements.size()){
if (i + 2 < flowElements.size()) {
FlowElement flowElement2 = flowElements.get(i + 2);
if (flowElement2 instanceof UserTask) {
UserTask userTask = (UserTask) flowElement2;
List<String> candidateGroups = userTask.getCandidateGroups();
//根据角色查询用户
for (String roleSid : candidateGroups) {
/*for (String roleSid : candidateGroups) {
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(dto.getOrgSidPath());
@ -526,6 +530,13 @@ public class FlowableRest implements FlowableFeign {
continue;
}
sysUserVoLists2.addAll(userByRole.getData());
}*/
UserssQuery userssQuery = new UserssQuery();
userssQuery.setCandidateGroups(candidateGroups);
userssQuery.setOrgSidPath(dto.getOrgSidPath());
sysUserVoLists2 = sysUserFeign.getUsersByRoles(userssQuery).getData();
if (sysUserVoLists2 == null) {
sysUserVoLists2 = new ArrayList<>();
}
}
}
@ -534,7 +545,7 @@ public class FlowableRest implements FlowableFeign {
List<String> candidateGroups = userTask.getCandidateGroups();
List<SysUserVo> sysUserVoLists = new ArrayList<>();
//根据角色查询用户
for (String roleSid : candidateGroups) {
/* for (String roleSid : candidateGroups) {
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(dto.getOrgSidPath());
@ -544,6 +555,13 @@ public class FlowableRest implements FlowableFeign {
continue;
}
sysUserVoLists.addAll(userByRole.getData());
}*/
UserssQuery userssQuery = new UserssQuery();
userssQuery.setCandidateGroups(candidateGroups);
userssQuery.setOrgSidPath(dto.getOrgSidPath());
sysUserVoLists = sysUserFeign.getUsersByRoles(userssQuery).getData();
if (sysUserVoLists == null) {
sysUserVoLists = new ArrayList<>();
}
//当前环节运营部总经理 刘丽艳 点击同意 下一环节 事业部副总经理 (nextUserSid) 和事业部总经理(sysUserVoLists.get(0).getSid())
//判断查询回来的用户的集合size是1 并且用户的sid和下一环节的用户的sid相同。
@ -552,7 +570,7 @@ public class FlowableRest implements FlowableFeign {
break;
}
//如果下一环节无用户,则默认系统管理员自动审批
if(sysUserVoLists.size() == 0 && sysUserVoLists2.size() == 1 && sysUserVoLists2.get(0).getSid().equals(nextUserSid)){
if (sysUserVoLists.size() == 0 && sysUserVoLists2.size() == 1 && sysUserVoLists2.get(0).getSid().equals(nextUserSid)) {
contains = true;
break;
}
@ -579,6 +597,7 @@ public class FlowableRest implements FlowableFeign {
/**
* 未添加系统管理员自动审批功能
*
* @param dto
* @param b 是否连续跳转环节
* @return
@ -604,7 +623,7 @@ public class FlowableRest implements FlowableFeign {
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto);
if (!nextNodeUserSidsOfSubmit.getSuccess()) {
return rb.setMsg("nextUserSid 不能为空!");
}else{
} else {
nextUserSid = nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put(BusinessVariables.ORGPATH, nextNodeUserSidsOfSubmit.getData().getOrgPath());
@ -811,8 +830,8 @@ public class FlowableRest implements FlowableFeign {
}
@Override
public ResultBean<Map<String,Object>> selectFlowVaributes(String taskId) {
ResultBean<Map<String,Object>> rb = ResultBean.fireFail();
public ResultBean<Map<String, Object>> selectFlowVaributes(String taskId) {
ResultBean<Map<String, Object>> rb = ResultBean.fireFail();
HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
.includeProcessVariables().taskId(taskId).singleResult();
Map<String, Object> processVariables = historicTaskInstance.getProcessVariables();
@ -845,12 +864,12 @@ public class FlowableRest implements FlowableFeign {
shareUserQuery.setMemberSids(memberSidList);
//查询所勾选的人员和勾选的部门下的去重后的所有人员的用户sid
ResultBean<List<String>> staffList = sysUserFeign.shareSelectUser(shareUserQuery);
if(memberSidList == null && orgSidList != null && orgSidList.size()>0){
if(staffList.getData() == null || staffList.getData().size() == 0){
if (memberSidList == null && orgSidList != null && orgSidList.size() > 0) {
if (staffList.getData() == null || staffList.getData().size() == 0) {
return rb.setMsg("所选部门下无分享人员");
}
}
if(memberSidList == null && orgSidList == null && orgSidList.size() == 0){
if (memberSidList == null && orgSidList == null && orgSidList.size() == 0) {
return rb.setMsg("请选择人员");
}
//组装分享的消息数据
@ -878,7 +897,7 @@ public class FlowableRest implements FlowableFeign {
}
log.info("分享方法-historicTaskInstance:{}", JSONObject.toJSONString(historicTaskInstance));
StringBuilder userSids = new StringBuilder();
staffList.getData().forEach(f->{
staffList.getData().forEach(f -> {
userSids.append(f).append(",");
});
userSids.deleteCharAt(userSids.length() - 1);
@ -904,9 +923,9 @@ public class FlowableRest implements FlowableFeign {
BeanUtil.copyProperties(uff, messageFlowVo);
mfq.setUfVo(messageFlowVo);
mfq.setModuleName(process.get("NAME_"));
if(processVariables.containsKey("orderNames")){
if (processVariables.containsKey("orderNames")) {
mfq.setMsgTitle(processVariables.get("orderNames").toString());
}else{
} else {
mfq.setMsgTitle(process.get("NAME_"));
}
@ -921,18 +940,18 @@ public class FlowableRest implements FlowableFeign {
@Override
public ResultBean<FlowSelectVo> selectFlows(String proDefId, String proInsId) {
return flowableService.selectFlows(proDefId,proInsId);
return flowableService.selectFlows(proDefId, proInsId);
}
@Override
public ResultBean<Map<String, Object>> getMap(FlowProcessMapQuery query) {
ResultBean<Map<String,Object>> rb = ResultBean.fireFail();
Map<String,Object> variables = query.getVariables();
String contractNo = query.getContractNo();
ResultBean<Map<String, Object>> rb = ResultBean.fireFail();
Map<String, Object> variables = query.getVariables();
String contractNo = query.getContractNo();
String proDefKey = query.getProDefKey();
Map<String, String> process = processService.getProcessDefByDefId(proDefKey);
String orderNames = contractNo+process.get("NAME_");
variables.put("orderNames",orderNames);
String orderNames = contractNo + process.get("NAME_");
variables.put("orderNames", orderNames);
return rb.success().setData(variables);
}
}

2
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigVvo.java

@ -14,4 +14,6 @@ public class SysFlowableConfigVvo implements Vo {
private static final long serialVersionUID = -3291554285219440731L;
@ApiModelProperty("转办人sid")
private String changeUserSid;
@ApiModelProperty("转办人名称")
private String changeName;
}

4
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeign.java

@ -199,6 +199,10 @@ public interface SysUserFeign {
@GetMapping(value = "getUserByRole")
ResultBean<List<SysUserVo>> getUserByRole(@SpringQueryMap UserQuery query);
@ApiOperation(value = "获取本机构链角色的用户")
@PostMapping(value = "getUsersByRoles")
ResultBean<List<SysUserVo>> getUsersByRoles(@RequestBody UserssQuery usersQuery);
/**
* 参数当前用户角色sid部门sid
*

5
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/SysUserFeignFallback.java

@ -186,6 +186,11 @@ public class SysUserFeignFallback implements SysUserFeign {
return null;
}
@Override
public ResultBean<List<SysUserVo>> getUsersByRoles(UserssQuery usersQuery) {
return null;
}
@Override
public ResultBean<List<SysUserVo>> getUserByOrgRole(UserRoleQuery query) {
return null;

19
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysuser/UserssQuery.java

@ -0,0 +1,19 @@
package com.yxt.anrui.portal.api.sysuser;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/10
**/
@Data
public class UserssQuery {
private List<String> candidateGroups = new ArrayList<>();
private String orgSidPath;
}

5
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserRest.java

@ -605,6 +605,11 @@ public class SysUserRest implements SysUserFeign {
return sysUserService.getUserByRole(query);
}
@Override
public ResultBean<List<SysUserVo>> getUsersByRoles(UserssQuery usersQuery) {
return sysUserService.getUsersByRoles(usersQuery);
}
@Override
public ResultBean<List<SysUserVo>> getUserByOrgRole(UserRoleQuery query) {
return sysUserService.getUserByOrgRole(query);

41
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysuser/SysUserService.java

@ -1118,6 +1118,43 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
return rb.success().setData(sysUserVoList);
}
public ResultBean<List<SysUserVo>> getUsersByRoles(UserssQuery usersQuery) {
ResultBean<List<SysUserVo>> rb = ResultBean.fireFail();
List<SysUserVo> sysUserVoList = new ArrayList<>();
List<String> candidateGroups = usersQuery.getCandidateGroups();
candidateGroups.removeAll(Collections.singleton(null));
String orgSidPath = usersQuery.getOrgSidPath();
if (!candidateGroups.isEmpty()) {
for (String roleSid : candidateGroups) {
//根据角色sid获取角色的层级
String levelTypeKey = sysRoleService.getLevelType(roleSid);
if (StringUtils.isNotBlank(levelTypeKey)) {
if (orgSidPath.split("/").length >= Integer.parseInt(levelTypeKey) - 1) {
String levelOrgSid = orgSidPath.split("/")[Integer.parseInt(levelTypeKey) - 1];
sysUserVoList = baseMapper.getUserByRole(roleSid, levelOrgSid);
if (sysUserVoList.size() > 1) {
List<String> stringList = sysUserVoList.stream().map(v -> v.getSid()).collect(Collectors.toList());
List<SysUserVo> sysUserVoList1 = baseMapper.getUserMessageByRole(roleSid, levelOrgSid, stringList);
sysUserVoList1.removeAll(Collections.singleton(null));
if (sysUserVoList1.size() > 0) {
sysUserVoList = sysUserVoList1;
}
}
}
sysUserVoList.removeAll(Collections.singleton(null));
sysUserVoList.forEach(t -> {
t.setOrgSidPath(orgSidPath);
});
} else {
return rb.setMsg("该角色层级未设置").setData(sysUserVoList);
}
}
}
return rb.success().setData(sysUserVoList);
}
public ResultBean<List<Map<String, String>>> getUserByOrgSid(String orgSid, String userSid) {
@ -1417,7 +1454,7 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
List<String> roleSidList = sysUserRoleService.selectRoleSid(query.getUserSid());
roleSidList.removeAll(Collections.singleton(null));
//查询层级对应的角色权限id
List<String> roleIdList = sysRoleService.selectByRole(roleSidList, menuSid,query.getUserSid());
List<String> roleIdList = sysRoleService.selectByRole(roleSidList, menuSid, query.getUserSid());
roleIdList.removeAll(Collections.singleton(null));
if (!roleIdList.isEmpty()) {
for (int i = 0; i < roleIdList.size(); i++) {
@ -1439,7 +1476,7 @@ public class SysUserService extends MybatisBaseService<SysUserMapper, SysUser> {
List<String> roleSidList = sysUserRoleService.selectRoleSid(query.getUserSid());
roleSidList.removeAll(Collections.singleton(null));
//查询层级对应的角色权限id
List<String> roleSid = sysRoleService.selectByMobileRole(roleSidList, menuSid,query.getUserSid());
List<String> roleSid = sysRoleService.selectByMobileRole(roleSidList, menuSid, query.getUserSid());
roleSid.removeAll(Collections.singleton(null));
if (!roleSid.isEmpty()) {
for (int i = 0; i < roleSid.size(); i++) {

4
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBankFeign.java

@ -113,4 +113,8 @@ public interface LoanFinBankFeign {
@ApiOperation("手机端查询资方的列表")
@PostMapping("/selectAppFinBankList")
public ResultBean<PagerVo<AppResultData>> selectAppFinBankList(@RequestBody PagerQuery<LoanFinBankQuery> pq);
@ApiOperation("产品政策查询资方下拉框")
@GetMapping("/selectListByOrgPath")
ResultBean<List<LoanFinBanksVo>> selectListByOrgPath(@RequestParam("orgPath") String orgPath);
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBankFeignFallback.java

@ -70,4 +70,9 @@ public class LoanFinBankFeignFallback implements LoanFinBankFeign {
return ResultBean.fireFail().setMsg("接口anrui-base/basefinbank/selectAppFinBankList无法访问");
}
@Override
public ResultBean<List<LoanFinBanksVo>> selectListByOrgPath(String orgPath) {
return null;
}
}

18
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinbank/LoanFinBanksVo.java

@ -0,0 +1,18 @@
package com.yxt.anrui.riskcenter.api.loanfinbank;
import com.yxt.common.core.vo.Vo;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/10
**/
@Data
public class LoanFinBanksVo implements Vo {
private static final long serialVersionUID = -2396821681988455147L;
private String sid;
private String name;
}

5
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicy.java

@ -39,13 +39,14 @@ public class LoanFinOtherPolicy extends BaseEntity {
@ApiModelProperty("车辆功能value")
private String vehTypeValue;
@ApiModelProperty("最高融资额比例(%)")
private String maxLoanRatio;
private BigDecimal maxLoanRatio;
@ApiModelProperty("最高融资额")
private BigDecimal maxLoanAmount;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("年利率(%)")
private String yearRatio;
private BigDecimal yearRatio;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("报备状态:1已报备,0未报备")

16
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyDto.java

@ -1,6 +1,7 @@
package com.yxt.anrui.riskcenter.api.loanfinotherPolicy;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -11,5 +12,18 @@ import lombok.Data;
@Data
public class LoanFinOtherPolicyDto implements Dto {
private static final long serialVersionUID = -1420806288260489371L;
@ApiModelProperty("产品类别key")
private String productTypeKey;
@ApiModelProperty("产品类别value")
private String productTypeValue;
@ApiModelProperty("最高融资额比例")
private String maxLoanRatio;
@ApiModelProperty("最高融资额")
private String maxLoanAmount;
@ApiModelProperty("期数")
private int period;
@ApiModelProperty("年利率")
private String yearRatio;
}

19
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinotherPolicy/LoanFinOtherPolicyVo.java

@ -1,5 +1,7 @@
package com.yxt.anrui.riskcenter.api.loanfinotherPolicy;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -8,5 +10,20 @@ import lombok.Data;
* @date: 2023/7/6
**/
@Data
public class LoanFinOtherPolicyVo {
public class LoanFinOtherPolicyVo implements Vo {
private static final long serialVersionUID = 5725423619053776811L;
@ApiModelProperty("产品类别key")
private String productTypeKey;
@ApiModelProperty("产品类别value")
private String productTypeValue;
@ApiModelProperty("最高融资额比例")
private String maxLoanRatio;
@ApiModelProperty("最高融资额")
private String maxLoanAmount;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("年利率")
private String yearRatio;
}

14
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicy.java

@ -43,15 +43,19 @@ public class LoanFinPolicy extends BaseEntity {
@ApiModelProperty("单车意外险")
private BigDecimal vehAccidentAmount;
@ApiModelProperty("首付比例(%)")
private String downPayRatio;
private BigDecimal downPayRatio;
private String downPayRatioKey;
@ApiModelProperty("最低首付比例(%)")
private String downPayRatioLeast;
private BigDecimal downPayRatioLeast;
private String downPayRatioLeastKey;
@ApiModelProperty("保证金比例(%)")
private String bondRatio;
private BigDecimal bondRatio;
private String bondRatioKey;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("标准年利率(%)")
private String yearRatio;
private BigDecimal yearRatio;
@ApiModelProperty("服务费类型key")
private String serviceAmountTypeKey;
@ApiModelProperty("服务费类型value")
@ -86,4 +90,6 @@ public class LoanFinPolicy extends BaseEntity {
private String useOrgSid;
@ApiModelProperty("使用组织名称")
private String useOrgName;
private String orgSidPath;
}

36
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyDto.java

@ -1,10 +1,12 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyDto;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
@ -42,15 +44,19 @@ public class LoanFinPolicyDto implements Dto {
/* @ApiModelProperty("是否车损上浮:1是0否。默认为0")
private int isVehFloat;*/
@ApiModelProperty("单车意外险")
private BigDecimal vehAccidentAmount;
private String vehAccidentAmount;
@ApiModelProperty("首付比例(%)")
private String downPayRatio;
/* @ApiModelProperty("最低首付比例(%)")
private String downPayRatioLeast;*/
private String downPayRatioKey;
@ApiModelProperty("最低首付比例(%)")
private String downPayRatioLeast;
private String downPayRatioLeastKey;
@ApiModelProperty("保证金比例(%)")
private String bondRatio;
private String bondRatioKey;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("标准年利率(%)")
private String yearRatio;
@ApiModelProperty("服务费类型key")
@ -58,21 +64,25 @@ public class LoanFinPolicyDto implements Dto {
@ApiModelProperty("服务费类型value")
private String serviceAmountTypeValue;
@ApiModelProperty("服务费")
private BigDecimal serviceAmount;
private String serviceAmount;
@ApiModelProperty("保险保证金")
private BigDecimal depositPremium;
private String depositPremium;
@ApiModelProperty("落户保证金")
private BigDecimal depositSettle;
private String depositSettle;
@ApiModelProperty("名义/留购价款")
private BigDecimal nominalPrice;
private String nominalPrice;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融:1有,0无")
private int isOtherProduct;
@ApiModelProperty("适用销售部门sids(逗号分隔)")
private String useDeptSids;
@ApiModelProperty("适用销售部门名称(逗号分隔)")
private String useDeptNames;
private boolean isOtherProduct;
@ApiModelProperty("全组织路径")
private String orgPath;
@ApiModelProperty("适用销售部门List")
private List<UseDept> useDeptList = new ArrayList<>();
@ApiModelProperty("其他融")
private LoanFinOtherPolicyDto loanFinOtherPolicy;
private String userSid;
}

15
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyFeign.java

@ -1,9 +1,12 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
@ -28,4 +31,16 @@ public interface LoanFinPolicyFeign {
@ApiOperation("初始化、详情")
@PostMapping("details")
ResultBean<LoanFinPolicyVo> details(@RequestParam("sid") String sid);
@ApiOperation("删除")
@DeleteMapping("deletePolicy")
ResultBean deletePolicy(@RequestBody String[] sids);
@ApiOperation("停用、开启:useState为1时走停用,为0时走开启")
@PostMapping("setState")
ResultBean setState(@RequestParam("sid") String sid, @RequestParam("useState") String useState);
@ApiOperation("金融产品政策管理分页列表")
@PostMapping("pagerList")
ResultBean<PagerVo<LoanFinPolicyVos>> pagerList(@RequestBody PagerQuery<LoanFinPolicyQuery> pagerQuery);
}

39
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyQuery.java

@ -1,5 +1,7 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -8,5 +10,40 @@ import lombok.Data;
* @date: 2023/7/6
**/
@Data
public class LoanFinPolicyQuery {
public class LoanFinPolicyQuery implements Query {
private static final long serialVersionUID = 129305146819958393L;
@ApiModelProperty("报备状态")
private String filingStateKey;
@ApiModelProperty("风控状态")
private String riskStateKey;
@ApiModelProperty("使用状态")
private String useSateKey;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("业务类型")
private String busTypeKey;
@ApiModelProperty("车辆大类")
private String vehCategoryKey;
@ApiModelProperty("车辆功能")
private String vehTypeKey;
@ApiModelProperty("适用销售部门")
private String useDeptNames;
@ApiModelProperty("产品政策名称")
private String policyName;
@ApiModelProperty("有效期至开始")
private String validDateToStart;
@ApiModelProperty("有效期至结束")
private String validDateToEnd;
@ApiModelProperty("期数")
private int period;
@ApiModelProperty("服务费类型")
private String serviceAmountTypeKey;
//最低首付比例 至
private String downPayRatioLeastStart;
private String downPayRatioLeastEnd;
private String menuUrl;
private String orgPath;
private String userSid;
}

70
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVo.java

@ -1,5 +1,8 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVo;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@ -8,5 +11,70 @@ import lombok.Data;
* @date: 2023/7/6
**/
@Data
public class LoanFinPolicyVo {
public class LoanFinPolicyVo implements Vo {
private static final long serialVersionUID = 7411398572275216808L;
private String sid;
@ApiModelProperty("政策名称:组合(资方简称+(担保/非担保)+首付比例+保证金比例+是否打包),如中车(担保)30+0打包")
private String policyName;
@ApiModelProperty("资方sid")
private String bankSid;
@ApiModelProperty("资方名称")
private String bankShortName;
@ApiModelProperty("业务类型key")
private String busTypeKey;
@ApiModelProperty("业务类型value")
private String busTypeValue;
@ApiModelProperty("车辆大类key")
private String vehCategoryKey;
@ApiModelProperty("车辆大类value")
private String vehCategoryValue;
@ApiModelProperty("车辆功能key")
private String vehTypeKey;
@ApiModelProperty("车辆功能value")
private String vehTypeValue;
@ApiModelProperty("是否打包:1打包、2不打包")
private int isPack;
@ApiModelProperty("担保类型key")
private String guaranteeTypeKey;
@ApiModelProperty("担保类型value")
private String guaranteeTypeValue;
@ApiModelProperty("单车意外险")
private String vehAccidentAmount;
@ApiModelProperty("首付比例(%)")
private String downPayRatio;
private String downPayRatioKey;
@ApiModelProperty("最低首付比例(%)")
private String downPayRatioLeast;
private String downPayRatioLeastKey;
@ApiModelProperty("保证金比例(%)")
private String bondRatio;
private String bondRatioKey;
@ApiModelProperty("期数")
private int period;
private String periodKey;
@ApiModelProperty("标准年利率(%)")
private String yearRatio;
@ApiModelProperty("服务费类型key")
private String serviceAmountTypeKey;
@ApiModelProperty("服务费类型value")
private String serviceAmountTypeValue;
@ApiModelProperty("服务费")
private String serviceAmount;
@ApiModelProperty("保险保证金")
private String depositPremium;
@ApiModelProperty("落户保证金")
private String depositSettle;
@ApiModelProperty("名义/留购价款")
private String nominalPrice;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("是否有其他融:1有,0无")
private boolean isOtherProduct;
@ApiModelProperty("适用销售部门sids(逗号分隔)")
private String useDeptSids;
@ApiModelProperty("适用销售部门名称(逗号分隔)")
private String useDeptNames;
private LoanFinOtherPolicyVo loanFinOtherPolicy = new LoanFinOtherPolicyVo();
}

56
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/LoanFinPolicyVos.java

@ -0,0 +1,56 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/7
**/
@Data
public class LoanFinPolicyVos implements Vo {
private static final long serialVersionUID = 7126087240752513932L;
private String sid;
@ApiModelProperty("报备状态")
private String filingStateValue;
@ApiModelProperty("风控状态")
private String riskStateValue;
@ApiModelProperty("适用状态")
private String useSateValue;
@ApiModelProperty("有效期至")
private String validDateTo;
@ApiModelProperty("分公司")
private String useOrgName;
@ApiModelProperty("适用销售部门")
private String useDeptNames;
@ApiModelProperty("产品政策名称")
private String policyName;
@ApiModelProperty("业务类型")
private String busTypeValue;
@ApiModelProperty("车辆大类")
private String vehCategoryValue;
@ApiModelProperty("车辆功能")
private String vehTypeValue;
@ApiModelProperty("期数")
private int period;
@ApiModelProperty("标准年利率")
private String yearRatio;
@ApiModelProperty("服务费类型")
private String serviceAmountTypeValue;
@ApiModelProperty("服务费")
private String serviceAmount;
@ApiModelProperty("最低首付比例")
private String downPayRatioLeast;
@ApiModelProperty("单车意外险")
private String vehAccidentAmount;
@ApiModelProperty("保险保证金")
private String depositPremium;
@ApiModelProperty("落户保证金")
private String depositSettle;
@ApiModelProperty("名义/留购价款")
private String nominalPrice;
@ApiModelProperty("是否有其他融")
private boolean isOtherProduct;
}

17
anrui-riskcenter/anrui-riskcenter-api/src/main/java/com/yxt/anrui/riskcenter/api/loanfinpolicy/UseDept.java

@ -0,0 +1,17 @@
package com.yxt.anrui.riskcenter.api.loanfinpolicy;
import com.yxt.common.core.dto.Dto;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2023/7/7
**/
@Data
public class UseDept implements Dto {
private static final long serialVersionUID = 1169329632455670625L;
private String deptSid;
private String deptName;
}

3
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.java

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBank;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankExportVo;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankVo;
import com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBanksVo;
import com.yxt.common.core.result.AppResultData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -85,4 +86,6 @@ public interface LoanFinBankMapper extends BaseMapper<LoanFinBank> {
@Update("update loan_fin_bank set isDelete = 1 where sid =#{sid}")
int updateBySidDelete(String sid);
List<LoanFinBanksVo> selectListByOrgSid(String orgSid);
}

10
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankMapper.xml

@ -51,8 +51,8 @@
<!--导出资方管理列表-->
<select id="listExcel" resultType="com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBankExportVo">
SELECT bfb.contactor,
bfb.bankName,
bfb.mobile
bfb.bankName,
bfb.mobile
FROM loan_fin_bank bfb
<where>
${ew.sqlSegment}
@ -72,4 +72,10 @@
FROM loan_fin_bank bb
${ew.customSqlSegment}
</select>
<select id="selectListByOrgSid" resultType="com.yxt.anrui.riskcenter.api.loanfinbank.LoanFinBanksVo">
select sid, bankShortName name
from loan_fin_bank
where createOrgSid = #{orgSid}
</select>
</mapper>

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankRest.java

@ -1,6 +1,5 @@
package com.yxt.anrui.riskcenter.biz.loanfinbank;
import com.yxt.anrui.base.api.basefinbank.*;
import com.yxt.anrui.riskcenter.api.loanfinbank.*;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
@ -16,8 +15,6 @@ import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -171,4 +168,9 @@ public class LoanFinBankRest implements LoanFinBankFeign {
PagerVo<AppResultData> pv = loanFinBankService.selectAppFinBankList(pq);
return rb.success().setData(pv);
}
@Override
public ResultBean<List<LoanFinBanksVo>> selectListByOrgPath(String orgPath) {
return loanFinBankService.selectListByOrgPath(orgPath);
}
}

12
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinbank/LoanFinBankService.java

@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.riskcenter.api.loanfinbank.*;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
@ -16,6 +17,7 @@ import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ -39,6 +41,8 @@ public class LoanFinBankService extends MybatisBaseService<LoanFinBankMapper, Lo
// private LoanFinPolicyService loanFinPolicyService;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
public PagerVo<LoanFinBank> listPage(PagerQuery<LoanFinBankQuery> pq) {
LoanFinBankQuery query = pq.getParams();
@ -210,4 +214,12 @@ public class LoanFinBankService extends MybatisBaseService<LoanFinBankMapper, Lo
BeanUtil.copyProperties(loanFinBank, vo);
return rb.success().setData(vo);
}
public ResultBean<List<LoanFinBanksVo>> selectListByOrgPath(String orgPath) {
ResultBean<List<LoanFinBanksVo>> rb = ResultBean.fireFail();
String orgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
List<LoanFinBanksVo> list = baseMapper.selectListByOrgSid(orgSid);
list.removeAll(Collections.singleton(null));
return rb.success().setData(list);
}
}

4
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.java

@ -14,4 +14,8 @@ import java.util.List;
@Mapper
public interface LoanFinOtherPolicyMapper extends BaseMapper<LoanFinOtherPolicy> {
List<LoanFinOtherPolicy> getOtherPolicyByMainSid(String mainPolicySid);
int deleteMainSid(String sid);
LoanFinOtherPolicy selectByMainSid(String sid);
}

12
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyMapper.xml

@ -10,4 +10,16 @@
and useSate = '0'
and riskState = '0'
</select>
<delete id="deleteMainSid">
delete
from loan_fin_otherpolicy
where mainPolicySid = #{mainPolicySid}
</delete>
<select id="selectByMainSid" resultType="com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy">
select *
from loan_fin_otherpolicy
where mainPolicySid = #{mainPolicySid}
</select>
</mapper>

8
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinotherPolicy/LoanFinOtherPolicyService.java

@ -24,4 +24,12 @@ public class LoanFinOtherPolicyService extends MybatisBaseService<LoanFinOtherPo
List<LoanFinOtherPolicy> otherPolicyList = baseMapper.getOtherPolicyByMainSid(mainPolicySid);
return otherPolicyList;
}
public int deleteyMainSid(String sid) {
return baseMapper.deleteMainSid(sid);
}
public LoanFinOtherPolicy selectByMainSid(String sid) {
return baseMapper.selectByMainSid(sid);
}
}

6
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.java

@ -1,8 +1,13 @@
package com.yxt.anrui.riskcenter.biz.loanfinpolicy;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVos;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* @description:
@ -11,4 +16,5 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface LoanFinPolicyMapper extends BaseMapper<LoanFinPolicy> {
IPage<LoanFinPolicyVos> pagerList(IPage<LoanFinPolicy> page, @Param(Constants.WRAPPER) QueryWrapper<LoanFinPolicy> qw);
}

40
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyMapper.xml

@ -1,4 +1,44 @@
<?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.loanfinpolicy.LoanFinPolicyMapper">
<select id="pagerList" resultType="com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVos">
select lfp.sid,
case lfp.filingState
when 1 then '已报备'
when 2 then '报备中'
when 0 then '未报备' end as filingStateValue,
case lfp.riskState
when 1 then '禁用'
when 0 then '正常'
end as riskStateValue,
case lfp.useSate
when 1 then '禁用'
when 0 then '正常'
end as useSateValue,
lfp.validDateTo,
lfp.useOrgName,
lfp.useDeptNames,
lfp.policyName,
lfp.busTypeValue,
lfp.vehCategoryValue,
lfp.vehTypeValue,
lfp.period,
lfp.yearRatio,
lfp.serviceAmountTypeKey,
lfp.serviceAmount,
lfp.downPayRatioLeast,
lfp.vehAccidentAmount,
lfp.depositPremium,
lfp.depositSettle,
lfp.nominalPrice,
case lfp.isOtherProduct
when 1 then true
when 0 then false
end as isOtherProduct
from loan_fin_policy lfp
left join loan_fin_otherpolicy lfop on lfp.sid = lfop.mainPolicySid
<where>
${ew.sqlSegment}
</where>
</select>
</mapper>

23
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyRest.java

@ -1,9 +1,9 @@
package com.yxt.anrui.riskcenter.biz.loanfinpolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyFeign;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.*;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
@ -31,4 +31,21 @@ public class LoanFinPolicyRest implements LoanFinPolicyFeign {
public ResultBean<LoanFinPolicyVo> details(String sid) {
return loanFinPolicyService.details(sid);
}
@Override
public ResultBean deletePolicy(String[] sids) {
return loanFinPolicyService.deletePolicy(sids);
}
@Override
public ResultBean setState(String sid, String useState) {
return loanFinPolicyService.setState(sid, useState);
}
@Override
public ResultBean<PagerVo<LoanFinPolicyVos>> pagerList(PagerQuery<LoanFinPolicyQuery> pagerQuery) {
ResultBean<PagerVo<LoanFinPolicyVos>> rb = ResultBean.fireFail();
PagerVo<LoanFinPolicyVos> pv = loanFinPolicyService.pagerList(pagerQuery);
return rb.success().setData(pv);
}
}

242
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanfinpolicy/LoanFinPolicyService.java

@ -1,14 +1,31 @@
package com.yxt.anrui.riskcenter.biz.loanfinpolicy;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicy;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyDto;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.LoanFinPolicyVo;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicy;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyDto;
import com.yxt.anrui.riskcenter.api.loanfinotherPolicy.LoanFinOtherPolicyVo;
import com.yxt.anrui.riskcenter.api.loanfinpolicy.*;
import com.yxt.anrui.riskcenter.biz.loanfinotherPolicy.LoanFinOtherPolicyService;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.PagerUtil;
import com.yxt.common.base.utils.StringUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* @description:
* @author: dimengzhe
@ -17,12 +34,63 @@ import org.springframework.stereotype.Service;
@Service
public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper, LoanFinPolicy> {
@Autowired
private LoanFinOtherPolicyService loanFinOtherPolicyService;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private SysOrganizationFeign sysOrganizationFeign;
@Autowired
private SysUserFeign sysUserFeign;
public ResultBean saveOrUpdatePolicy(LoanFinPolicyDto dto) {
ResultBean rb = ResultBean.fireFail();
String sid = dto.getSid();
String orgPath = dto.getOrgPath();
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
String useOrgName = "";
ResultBean<SysOrganizationVo> sysOrganizationVoResultBean = sysOrganizationFeign.fetchBySid(useOrgSid);
if (sysOrganizationVoResultBean.getData() != null) {
useOrgName = sysOrganizationVoResultBean.getData().getName();
}
if (StringUtils.isBlank(sid)) {
LoanFinPolicy loanFinPolicy = new LoanFinPolicy();
BeanUtil.copyProperties(dto, loanFinPolicy, "sid");
List<UseDept> useDeptList = dto.getUseDeptList();
String deptSids = "";
String deptNames = "";
if (!useDeptList.isEmpty()) {
List<String> deptSidsList = useDeptList.stream().map(v -> v.getDeptSid()).collect(Collectors.toList());
deptSids = String.join(",", deptSidsList);
loanFinPolicy.setUseDeptSids(deptSids);
List<String> deptNamesList = useDeptList.stream().map(v -> v.getDeptName()).collect(Collectors.toList());
deptNames = String.join(",", deptNamesList);
loanFinPolicy.setUseDeptNames(deptNames);
}
loanFinPolicy.setUseOrgSid(useOrgSid);
loanFinPolicy.setCreateOrgSid(useOrgSid);
loanFinPolicy.setUseOrgName(useOrgName);
loanFinPolicy.setCreateOrgName(useOrgName);
loanFinPolicy.setCreateBySid(dto.getUserSid());
loanFinPolicy.setOrgSidPath(orgPath);
if (dto.isOtherProduct()) {
loanFinPolicy.setIsOtherProduct(1);
LoanFinOtherPolicy loanFinOtherPolicy = new LoanFinOtherPolicy();
BeanUtil.copyProperties(dto, loanFinOtherPolicy, "sid");
LoanFinOtherPolicyDto loanFinOtherPolicyDto = dto.getLoanFinOtherPolicy();
BeanUtil.copyProperties(loanFinOtherPolicyDto, loanFinOtherPolicy);
loanFinOtherPolicy.setMainPolicySid(loanFinPolicy.getSid());
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
loanFinOtherPolicy.setUseOrgSid(useOrgSid);
loanFinOtherPolicy.setCreateOrgSid(useOrgSid);
loanFinOtherPolicy.setUseOrgName(useOrgName);
loanFinOtherPolicy.setCreateOrgName(useOrgName);
loanFinOtherPolicyService.insert(loanFinOtherPolicy);
} else {
loanFinPolicy.setIsOtherProduct(0);
}
baseMapper.insert(loanFinPolicy);
} else {
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
@ -30,6 +98,44 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
return rb.setMsg("该金融产品政策不存在");
}
BeanUtil.copyProperties(dto, loanFinPolicy, "sid");
String deptSids = "";
String deptNames = "";
List<UseDept> useDeptList = dto.getUseDeptList();
if (!useDeptList.isEmpty()) {
List<String> deptSidsList = useDeptList.stream().map(v -> v.getDeptSid()).collect(Collectors.toList());
deptSids = String.join(",", deptSidsList);
loanFinPolicy.setUseDeptSids(deptSids);
List<String> deptNamesList = useDeptList.stream().map(v -> v.getDeptName()).collect(Collectors.toList());
deptNames = String.join(",", deptNamesList);
loanFinPolicy.setUseDeptNames(deptNames);
} else {
loanFinPolicy.setUseDeptNames("");
loanFinPolicy.setUseDeptSids("");
}
if (!dto.isOtherProduct()) {
loanFinPolicy.setIsOtherProduct(0);
loanFinOtherPolicyService.deleteyMainSid(sid);
} else {
loanFinPolicy.setIsOtherProduct(1);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy == null) {
BeanUtil.copyProperties(dto, loanFinOtherPolicy, "sid");
LoanFinOtherPolicyDto loanFinOtherPolicyDto = dto.getLoanFinOtherPolicy();
BeanUtil.copyProperties(loanFinOtherPolicyDto, loanFinOtherPolicy);
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
} else {
loanFinOtherPolicy = new LoanFinOtherPolicy();
BeanUtil.copyProperties(dto, loanFinOtherPolicy, "sid");
LoanFinOtherPolicyDto loanFinOtherPolicyDto = dto.getLoanFinOtherPolicy();
BeanUtil.copyProperties(loanFinOtherPolicyDto, loanFinOtherPolicy);
loanFinOtherPolicy.setMainPolicySid(loanFinPolicy.getSid());
loanFinOtherPolicy.setUseDeptSids(deptSids);
loanFinOtherPolicy.setUseDeptNames(deptNames);
loanFinOtherPolicyService.insert(loanFinOtherPolicy);
}
}
baseMapper.updateById(loanFinPolicy);
}
return rb.success();
@ -37,10 +143,138 @@ public class LoanFinPolicyService extends MybatisBaseService<LoanFinPolicyMapper
public ResultBean<LoanFinPolicyVo> details(String sid) {
ResultBean<LoanFinPolicyVo> rb = ResultBean.fireFail();
LoanFinPolicyVo loanFinPolicyVo = new LoanFinPolicyVo();
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
if (loanFinPolicy == null) {
return rb.setMsg("该金融产品政策不存在");
}
return null;
BeanUtil.copyProperties(loanFinPolicy, loanFinPolicyVo);
if (loanFinPolicy.getIsOtherProduct() == 1) {
loanFinPolicyVo.setOtherProduct(true);
LoanFinOtherPolicyVo loanFinOtherPolicyVo = new LoanFinOtherPolicyVo();
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy != null) {
BeanUtil.copyProperties(loanFinOtherPolicy, loanFinOtherPolicyVo);
loanFinPolicyVo.setLoanFinOtherPolicy(loanFinOtherPolicyVo);
}
} else {
loanFinPolicyVo.setOtherProduct(false);
}
return rb.success().setData(loanFinPolicyVo);
}
public ResultBean deletePolicy(String[] sids) {
ResultBean rb = ResultBean.fireFail();
//ToDo:不能删除的条件并返回提示信息
//符合条件直接删除
List<String> sidList = Arrays.asList(sids);
for (String sid : sidList) {
loanFinOtherPolicyService.deleteyMainSid(sid);
deleteBySid(sid);
}
return rb.success();
}
public ResultBean setState(String sid, String useState) {
ResultBean rb = ResultBean.fireFail();
//ToDo:是否可以停用或开启,需补充条件
LoanFinPolicy loanFinPolicy = fetchBySid(sid);
if (loanFinPolicy == null) {
return rb.setMsg("该金融产品政策不存在");
}
loanFinPolicy.setUseSate(Integer.valueOf(useState).intValue());
baseMapper.updateById(loanFinPolicy);
LoanFinOtherPolicy loanFinOtherPolicy = loanFinOtherPolicyService.selectByMainSid(sid);
if (loanFinOtherPolicy != null) {
loanFinOtherPolicy.setUseSate(Integer.valueOf(useState).intValue());
loanFinOtherPolicyService.updateById(loanFinOtherPolicy);
}
return rb.success();
}
public PagerVo<LoanFinPolicyVos> pagerList(PagerQuery<LoanFinPolicyQuery> pagerQuery) {
LoanFinPolicyQuery query = pagerQuery.getParams();
QueryWrapper<LoanFinPolicy> qw = new QueryWrapper<>();
if (query != null) {
//========================================数据授权开始
if (StringUtils.isNotBlank(query.getMenuUrl())) {
//=======================
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(query.getOrgPath());
privilegeQuery.setMenuUrl(query.getMenuUrl());
privilegeQuery.setUserSid(query.getUserSid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
String orgSidPath = query.getOrgPath();
orgSidPath = orgSidPath + "/";
int i1 = orgSidPath.indexOf("/");
int i2 = orgSidPath.indexOf("/", i1 + 1);
int i3 = orgSidPath.indexOf("/", i2 + 1);
int i4 = orgSidPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i1);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("2".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i2);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("3".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i3);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("4".equals(orgLevelKey)) {
orgSidPath = orgSidPath.substring(0, i4);
qw.like("lfp.orgSidPath", orgSidPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("lfp.createBySid", query.getUserSid());
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
} else {
PagerVo<LoanFinPolicyVos> p = new PagerVo<>();
return p;
}
//报备状态
if (StringUtils.isNotBlank(query.getFilingStateKey())) {
qw.eq("lfp.filingState", query.getFilingStateKey());
}
//风控状态
if (StringUtils.isNotBlank(query.getRiskStateKey())) {
qw.eq("lfp.riskState", query.getRiskStateKey());
}
//使用状态
if (StringUtils.isNotBlank(query.getUseSateKey())) {
qw.eq("lfp.useSate", query.getUseSateKey());
}
//分公司
if (StringUtils.isNotBlank(query.getUseOrgName())) {
qw.like("lfp.useOrgName", query.getUseOrgName());
}
//业务类型
if (StringUtils.isNotBlank(query.getBusTypeKey())) {
qw.eq("lfp.busTypeKey", query.getBusTypeKey());
}
//车辆大类
//车辆功能
//适用销售部门
//产品政策名称
//有效期至开始
//有效期至结束
//期数
//最低首付比例开始
//最低首付比例结束
}
IPage<LoanFinPolicy> page = PagerUtil.queryToPage(pagerQuery);
IPage<LoanFinPolicyVos> pagging = baseMapper.pagerList(page, qw);
PagerVo<LoanFinPolicyVos> p = PagerUtil.pageToVo(pagging, null);
return p;
}
}

12
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexingAdd.vue

@ -92,10 +92,10 @@
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>发动机型号</span>
<span><span class="icon">*</span>发动机型号</span>
</el-col>
<el-col :span="8">
<el-form-item>
<el-form-item prop="engineType">
<el-select v-model="temp.engineType" class="addinputw" filterable placeholder="请选择" @change="getFaDongJi">
<el-option v-for="item in neType" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
@ -132,10 +132,10 @@
</el-form-item>
</el-col>
<el-col :span="4" class="tleftb">
<span>规格型号</span>
<span><span class="icon">*</span>规格型号</span>
</el-col>
<el-col :span="8">
<el-form-item>
<el-form-item prop="specificationsKey">
<el-select v-model="temp.specificationsKey" class="addinputw" filterable placeholder="请选择" @change="getGuiGe">
<el-option v-for="item in specifications" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
@ -252,7 +252,9 @@ export default {
fuelType: [{ required: true, message: ' 燃料不能为空', trigger: 'change' }],
gearboxType: [{ required: true, message: ' 变速箱不能为空', trigger: 'change' }],
emissionStandard: [{ required: true, message: ' 排放标准不能为空', trigger: 'change' }],
tranCaseTypeValue: [{ required: true, message: ' 变速箱类型不能为空', trigger: 'change' }]
tranCaseTypeValue: [{ required: true, message: ' 变速箱类型不能为空', trigger: 'change' }],
engineType: [{ required: true, message: ' 发动机型号不能为空', trigger: 'change' }],
specificationsKey: [{ required: true, message: ' 规格型号不能为空', trigger: 'change' }]
}
}
},

4
anrui-terminal/anrui-terminal-api/src/main/java/com/yxt/anrui/terminal/api/autoservice/saleOrders/price/PriceDto.java

@ -5,8 +5,6 @@ import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* @Author dimengzhe
* @Date 2022/6/6 10:40
@ -21,7 +19,7 @@ public class PriceDto implements Dto {
private String plannedPickUpLocation;
@ApiModelProperty(value = "预计提车地点key")
@JsonProperty(value = "addressKey")
@NotBlank(message = "请选择计划提车地点")
// @NotBlank(message = "请选择计划提车地点")
private String plannedPickUpLocationKey;
@ApiModelProperty(value = "主车单台成交价格")
@JsonProperty(value = "transactionPrice")

115
doc/databases/risk_center.sql

@ -1063,7 +1063,7 @@ CREATE TABLE `loan_fin_policy`
`depositSettle` decimal(10, 0) DEFAULT NULL COMMENT '落户保证金',
`nominalPrice` decimal(10, 0) DEFAULT NULL COMMENT '名义/留购价款',
`validDateTo` varchar(255) DEFAULT NULL COMMENT '有效期至',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备,2报备中',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
@ -1127,6 +1127,119 @@ CREATE TABLE `loan_fin_otherPolicy`
DEFAULT CHARSET = utf8 COMMENT ='其他融产品';
-- ------------------------------------------新
-- 金融产品政策
DROP TABLE IF EXISTS `loan_fin_policy`;
CREATE TABLE `loan_fin_policy`
(
`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',
`policyName` VARCHAR(255) DEFAULT NULL COMMENT '政策名称:组合(资方简称+(担保/非担保)+首付比例+保证金比例+是否打包),如中车(担保)30+0打包',
`bankSid` VARCHAR(255) DEFAULT NULL COMMENT '资方sid',
`bankShortName` VARCHAR(255) DEFAULT NULL COMMENT '资方名称',
`busTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '业务类型key',
`busTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '业务类型value',
`vehCategoryKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类key',
`vehCategoryValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类value',
`vehTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能key',
`vehTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能value',
`isPack` int(64) DEFAULT NULL COMMENT '是否打包:1打包、2不打包',
`guaranteeTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '担保类型key',
`guaranteeTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '担保类型value',
`isVehFloat` int(32) DEFAULT NULL COMMENT '是否车损上浮',
`vehAccidentAmount` decimal(10, 0) DEFAULT NULL COMMENT '单车意外险',
`downPayRatio` decimal(10, 0) DEFAULT NULL COMMENT '首付比例(%)',
`downPayRatioKey` VARCHAR(255) DEFAULT NULL COMMENT '首付比例(%)key',
`downPayRatioLeast` decimal(10, 0) DEFAULT NULL COMMENT '最低首付比例(%)',
`downPayRatioLeastKey` VARCHAR(255) DEFAULT NULL COMMENT '最低首付比例(%)key',
`bondRatio` decimal(10, 0) DEFAULT NULL COMMENT '保证金比例(%)',
`bondRatioKey` VARCHAR(255) DEFAULT NULL COMMENT '保证金比例(%)key',
`period` int(64) DEFAULT NULL COMMENT '期数',
`periodKey` VARCHAR(255) DEFAULT NULL COMMENT '期数key',
`yearRatio` decimal(10, 2) DEFAULT NULL COMMENT '标准年利率(%)',
`serviceAmountTypeKey` varchar(255) DEFAULT NULL COMMENT '服务费类型key',
`serviceAmountTypeValue` varchar(255) DEFAULT NULL COMMENT '服务费类型value',
`serviceAmount` decimal(10, 0) DEFAULT NULL COMMENT '服务费',
`depositPremium` decimal(10, 0) DEFAULT NULL COMMENT '保险保证金',
`depositSettle` decimal(10, 0) DEFAULT NULL COMMENT '落户保证金',
`nominalPrice` decimal(10, 0) DEFAULT NULL COMMENT '名义/留购价款',
`validDateTo` varchar(255) DEFAULT NULL COMMENT '有效期至',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备,2报备中',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
`useDeptSids` text DEFAULT NULL COMMENT '适用销售部门sids(逗号分隔)',
`useDeptNames` text DEFAULT NULL COMMENT '适用销售部门名称(逗号分隔)',
`createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid',
`createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称',
`useOrgSid` varchar(255) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称',
`orgPath` varchar(255) DEFAULT NULL COMMENT '组织全路径',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='金融产品政策';
-- 其他融产品
DROP TABLE IF EXISTS `loan_fin_otherPolicy`;
CREATE TABLE `loan_fin_otherPolicy`
(
`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',
`otherPolicyName` VARCHAR(255) DEFAULT NULL COMMENT '产品名称:组合(资方+产品类别+最高融资比例+期数)',
`bankSid` VARCHAR(255) DEFAULT NULL COMMENT '资方sid',
`bankShortName` VARCHAR(255) DEFAULT NULL COMMENT '资方名称',
`mainPolicySid` VARCHAR(64) DEFAULT NULL COMMENT '主产品sid(可以为空)',
`productTypeKey` VARCHAR(64) DEFAULT NULL COMMENT '产品类别Key',
`productTypeValue` VARCHAR(64) DEFAULT NULL COMMENT '产品类别value',
`busTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '业务类型key',
`busTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '业务类型value',
`vehCategoryKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类key',
`vehCategoryValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆大类value',
`vehTypeKey` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能key',
`vehTypeValue` VARCHAR(255) DEFAULT NULL COMMENT '车辆功能value',
`maxLoanRatio` decimal(10, 0) DEFAULT NULL COMMENT '最高融资额比例(%)',
`maxLoanAmount` decimal(10, 0) DEFAULT NULL COMMENT '最高融资额',
`period` int(64) DEFAULT NULL COMMENT '期数',
`periodKey` VARCHAR(255) DEFAULT NULL COMMENT '期数key',
`yearRatio` decimal(10, 2) DEFAULT NULL COMMENT '年利率(%)',
`validDateTo` varchar(255) DEFAULT NULL COMMENT '有效期至',
`filingState` int(64) DEFAULT NULL COMMENT '报备状态:1已报备,0未报备',
`useSate` int(64) DEFAULT NULL COMMENT '使用状态:1停用 0正常 各分公司设置的状态',
`riskState` int(64) DEFAULT NULL COMMENT '风控状态:1禁用 0正常 风控中心设置的状态',
`isOtherProduct` int(64) DEFAULT NULL COMMENT '是否有其他融:1有,0无',
`useDeptSids` text DEFAULT NULL COMMENT '适用销售部门sids(逗号分隔)',
`useDeptNames` text DEFAULT NULL COMMENT '适用销售部门名称(逗号分隔)',
`createOrgSid` varchar(255) DEFAULT NULL COMMENT '创建组织sid',
`createOrgName` varchar(255) DEFAULT NULL COMMENT '创建组织名称',
`useOrgSid` varchar(255) DEFAULT NULL COMMENT '使用组织sid',
`useOrgName` varchar(255) DEFAULT NULL COMMENT '使用组织名称',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = INNODB
DEFAULT CHARSET = utf8 COMMENT ='其他融产品';

Loading…
Cancel
Save