Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
God 3 years ago
parent
commit
e2d9adadcb
  1. 58
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/BaseModelConfigListQuery.java
  2. 31
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/AppPurchaseDetailsVo.java
  3. 3
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseExistingCarListPageVo.java
  4. 41
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleActualVo.java
  5. 14
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeign.java
  6. 10
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeignFallback.java
  7. 1
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleUpdateQuery.java
  8. 18
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java
  9. 20
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java
  10. 52
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFlowDto.java
  11. 26
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFlowQuery.java
  12. 16
      anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelListQuery.java
  13. 6
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml
  14. 5
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigRest.java
  15. 64
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java
  16. 51
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.java
  17. 159
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml
  18. 20
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleRest.java
  19. 171
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleService.java
  20. 8
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsMapper.java
  21. 6
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsMapper.xml
  22. 7
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsService.java
  23. 12
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java
  24. 9
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml
  25. 20
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java
  26. 281
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java
  27. 2
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelMapper.xml
  28. 29
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelService.java
  29. 21
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeposit/AppBusDepositBusDetailsVo.java
  30. 17
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeposit/AppBusDepositBuscenterDetailVo.java
  31. 21
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusDepositBuscenterDto.java
  32. 3
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusMainDepositQuery.java
  33. 35
      anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusMainDepositVo.java
  34. 31
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/委托提车授权书.doc
  35. 1103
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/委托提车授权书.ftl
  36. 16
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/客户开票申请书.doc
  37. 1052
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/客户开票申请书.ftl
  38. 44
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车).doc
  39. 1961
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车).ftl
  40. 46
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车)(空).doc
  41. 2053
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车)(空).ftl
  42. 47
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车).doc
  43. 2210
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车).ftl
  44. 47
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车)(空).doc
  45. 1532
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车)(空).ftl
  46. 31
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/车辆登记合同.doc
  47. 1302
      anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/车辆登记合同.ftl
  48. 88
      anrui-buscenter/anrui-buscenter-ui/src/api/chexingchaxun/modelinquire.js
  49. 20
      anrui-buscenter/anrui-buscenter-ui/src/router/index.js
  50. 399
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/modellibrary.vue
  51. 447
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/modelstandardconfiguration.vue
  52. 265
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/productionschedulingorder.vue
  53. 225
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclecar.vue
  54. 541
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclecarInfo.vue
  55. 511
      anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclelibraryconfiguration.vue
  56. 3
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmcustomertemp/AppCrmCustomerTempMaintainStateVo.java
  57. 4
      anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java
  58. 9
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java
  59. 6
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml
  60. 11
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java
  61. 12
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomertemp/CrmCustomerTempService.java
  62. 2
      anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml
  63. 13
      anrui-flowable/anrui-flowable-api/src/main/java/com/yxt/anrui/flowable/api/utils/ProcDefEnum.java
  64. 4
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/ManagerTaskListener.java
  65. 34
      anrui-scm/anrui-scm-ui/src/api/cheliang/basemodelconfig.js
  66. 11
      anrui-scm/anrui-scm-ui/src/api/cheliang/basevehiclemodel.js
  67. 2
      anrui-scm/anrui-scm-ui/src/api/portal/Upload.js
  68. 27
      anrui-scm/anrui-scm-ui/src/api/portal/Upload_chexing.js
  69. 10
      anrui-scm/anrui-scm-ui/src/components/uploadFile/upload.vue
  70. 10
      anrui-scm/anrui-scm-ui/src/components/uploadFile/uploadImg.vue
  71. 242
      anrui-scm/anrui-scm-ui/src/components/uploadFile/upload_chexing.vue
  72. 1
      anrui-scm/anrui-scm-ui/src/main.js
  73. 18
      anrui-scm/anrui-scm-ui/src/styles/el-form.scss
  74. 108
      anrui-scm/anrui-scm-ui/src/styles/index.scss
  75. 34
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexing.vue
  76. 498
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexingAdd.vue
  77. 13
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexinglook.vue
  78. 118
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/changyongpeizhi.vue
  79. 88
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/chexingguanlianchangyong.vue
  80. 87
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/chexingpeizhijiageweihuAdd.vue
  81. 74
      anrui-scm/anrui-scm-ui/src/views/cheliang/chexingpeizhi/changyongpeizhiAdd.vue
  82. 15
      工作内容需要的文档/附件1功能实现说明文档(3).docx
  83. 13
      工作内容需要的文档/附件2个人测试文档(3).docx

58
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basemodelconfig/BaseModelConfigListQuery.java

@ -15,25 +15,69 @@ import javax.validation.constraints.NotBlank;
public class BaseModelConfigListQuery implements Query {
private static final long serialVersionUID = 932522587144455873L;
@ApiModelProperty(value = "车型sid", required = true)
@NotBlank(message = "请选择车型")
@ApiModelProperty(value = "车型sid")
private String modelSid;
@ApiModelProperty(value = "颜色")
@ApiModelProperty(value = "配置sid")
private String configSid;
@ApiModelProperty(value = "颜色key")
private String carColor;
@ApiModelProperty(value = "缓速器")
@ApiModelProperty(value = "缓速器key")
private String slowMachine;
@ApiModelProperty(value = "驾驶室")
@ApiModelProperty(value = "驾驶室key")
private String specification;
@ApiModelProperty(value = "后桥速比")
@ApiModelProperty(value = "后桥速比key")
private String rearAxleRatio;
@ApiModelProperty(value = "燃料箱")
@ApiModelProperty(value = "燃料箱key")
private String fuelTank;
@ApiModelProperty(value = "后视镜key")
private String rearViewMirrorKey;
@ApiModelProperty(value = "轮胎key")
private String tireSizeKey;
@ApiModelProperty(value = "空调key")
private String airConditionerKey;
@ApiModelProperty(value = "轮毂材质key")
private String hubMaterialKey;
@ApiModelProperty(value = "导流罩key")
private String baffleModelKey;
@ApiModelProperty(value = "悬架key")
private String suspensionKey;
@ApiModelProperty(value = "座椅key")
private String seatKey;
@ApiModelProperty(value = "护轮罩key")
private String tireCoverKey;
@ApiModelProperty(value = "鞍座key")
private String saddleKey;
@ApiModelProperty(value = "轴距key")
private String wheelbaseKey;
@ApiModelProperty(value = "保险杠key")
private String bumperKey;
@ApiModelProperty(value = "配置包key")
private String configuringBaoKey;
@ApiModelProperty(value = "独立热源key")
private String independentSourcesKey;
@ApiModelProperty(value = "多媒体key")
private String multimediaKey;
@ApiModelProperty(value = "常用配置")
private String configName;

31
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/AppPurchaseDetailsVo.java

@ -0,0 +1,31 @@
package com.yxt.anrui.base.api.basevehicle;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
@Data
public class AppPurchaseDetailsVo implements Vo {
@ApiModelProperty("车辆sid")
private String sid;
@ApiModelProperty("车辆照片")
private List<String> vehicleImages;
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("车辆状态")
private String vehicleStateValue;
@ApiModelProperty("车辆标签")
private String vehicleLabel;
@ApiModelProperty("促销政策")
private String promotionPolicy;
@ApiModelProperty("存放地点")
private String location;
@ApiModelProperty("入库日期")
private String priceDate;
@ApiModelProperty("销售指导价")
private String guidedPrice;
}

3
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseExistingCarListPageVo.java

@ -28,6 +28,9 @@ public class BaseExistingCarListPageVo implements Vo {
@ApiModelProperty(value = "存放地点")
private String location;
@ApiModelProperty(value = "合格证")
private String certificate;
// @ApiModelProperty(value = "销售指导价")
// @JsonSerialize(using = ToStringSerializer.class)
// private String guidedPrice;

41
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleActualVo.java

@ -0,0 +1,41 @@
package com.yxt.anrui.base.api.basevehicle;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/4/22 8:49
* @Description
*/
@Data
public class BaseVehicleActualVo implements Vo {
private static final long serialVersionUID = -6048723646837616372L;
private String sid;
@ApiModelProperty(value = "品牌")
private String brandName;
@ApiModelProperty(value = "车型")
private String vehicleAlias;
@ApiModelProperty(value = "车架号")
private String vinNo;
@ApiModelProperty(value = "颜色")
private String color;
@ApiModelProperty(value = "存放地点")
private String location;
@ApiModelProperty(value = "销售指导价")
@JsonSerialize(using = ToStringSerializer.class)
private String guidedPrice;
@ApiModelProperty(value = "常用配置")
private String configName;
@ApiModelProperty(value = "入库日期")
private String priceDate;
@ApiModelProperty(value = "入库价")
@JsonSerialize(using = ToStringSerializer.class)
private String priced;
}

14
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeign.java

@ -177,6 +177,16 @@ public interface BaseVehicleFeign {
@PostMapping("/selExistingCarPageList")
public ResultBean<PagerVo<BaseExistingCarListPageVo>> selExistingCarPageList(@RequestBody PagerQuery<BaseExistingCarPageQuery> pagerQuery);
/**
* pc排产车详情
*
* @param vinNo
* @return
*/
@ApiOperation("根据车架号查询现车详情(新)")
@GetMapping("/getPurchaseDetails/{vinNo}")
ResultBean<AppPurchaseDetailsVo> getPurchaseDetails(@PathVariable("vinNo") String vinNo);
@ApiOperation("采购退库选择车辆分页列表")
@PostMapping("/vehicleReturnList")
ResultBean<PagerVo<BaseVehicleReturnVo>> vehicleReturnList(@RequestBody PagerQuery<BaseVehicleReturnQuery> pagerQuery);
@ -189,6 +199,10 @@ public interface BaseVehicleFeign {
@GetMapping("/selectStateByVinNo")
ResultBean<Boolean> selectStateByVinNo(@RequestParam(value = "vinNoList") List<String> vinNoList);
@ApiOperation("未售买断选择车辆分页列表")
@PostMapping("/vehicleActualList")
ResultBean<PagerVo<BaseVehicleActualVo>> vehicleActualList(@RequestBody PagerQuery<BaseVehicleReturnQuery> pagerQuery);
/***************************************************** App接口 **********************************************************/
@ApiOperation("手机端现车分页列表")

10
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleFeignFallback.java

@ -99,6 +99,11 @@ public class BaseVehicleFeignFallback implements BaseVehicleFeign {
return null;
}
@Override
public ResultBean<AppPurchaseDetailsVo> getPurchaseDetails(String vinNo) {
return null;
}
@Override
public ResultBean<PagerVo<BaseVehicleReturnVo>> vehicleReturnList(PagerQuery<BaseVehicleReturnQuery> pagerQuery) {
return null;
@ -114,6 +119,11 @@ public class BaseVehicleFeignFallback implements BaseVehicleFeign {
return null;
}
@Override
public ResultBean<PagerVo<BaseVehicleActualVo>> vehicleActualList(PagerQuery<BaseVehicleReturnQuery> pagerQuery) {
return null;
}
@Override
public ResultBean<PagerVo<AppCurrentCarModelByPageListVo>> getAppCurrentCarByPageList(PagerQuery<AppCurrentCarByPageListQuery> pagerQuery) {
return null;

1
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicle/BaseVehicleUpdateQuery.java

@ -18,4 +18,5 @@ public class BaseVehicleUpdateQuery implements Query {
private List<String> vinNoLis;
private String vehicleState;
private String vihicleStateValue;
private String settlementStatus;
}

18
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeign.java

@ -39,5 +39,23 @@ public interface BaseVehicleActualSalesFeign {
@ResponseBody
ResultBean<BaseVehicleActualSalesDetailsVo> details(@RequestParam(value = "sid", required = false) String sid);
@ApiOperation(value = "办理(同意)")
@PostMapping("/complete")
@ResponseBody
public ResultBean complete(@RequestBody BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery);
@ApiOperation(value = "驳回任务")
@PostMapping("/reject")
@ResponseBody
ResultBean reject(@RequestBody BaseVehicleActualSalesFlowDto dto);
@ApiOperation(value = "终止任务")
@PostMapping("/breakProcess")
@ResponseBody
ResultBean breakProcess(@RequestBody BaseVehicleActualSalesFlowDto dto);
@ApiOperation(value = "撤回任务")
@PostMapping("/revokeProcess")
@ResponseBody
ResultBean revokeProcess(@RequestBody BaseVehicleActualSalesFlowDto dto);
}

20
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFeignFallback.java

@ -31,4 +31,24 @@ public class BaseVehicleActualSalesFeignFallback implements BaseVehicleActualSal
public ResultBean<BaseVehicleActualSalesDetailsVo> details(String sid) {
return null;
}
@Override
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
return null;
}
@Override
public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
return null;
}
@Override
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
return null;
}
@Override
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
return null;
}
}

52
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFlowDto.java

@ -0,0 +1,52 @@
package com.yxt.anrui.base.api.basevehicleactualsales;
import com.yxt.common.core.dto.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author dimengzhe
* @Date 2022/4/21 11:35
* @Description
*/
@Data
public class BaseVehicleActualSalesFlowDto implements Dto {
private static final long serialVersionUID = 3748090563013456721L;
@ApiModelProperty(value = "业务sid")
private String businessSid;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("用户Id")
private String userId;
@ApiModelProperty("用户Sid")
private String userSid;
@ApiModelProperty("任务意见")
private String comment;
@ApiModelProperty("流程实例Id")
private String instanceId;
@ApiModelProperty("节点")
private String targetKey;
@ApiModelProperty("流程变量信息")
private Map<String, Object> values = new HashMap<>();
@ApiModelProperty("审批人")
private String assignee;
@ApiModelProperty("候选人")
private List<String> candidateUsers = new ArrayList<>();
@ApiModelProperty("审批组")
private List<String> candidateGroups = new ArrayList<>();
}

26
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehicleactualsales/BaseVehicleActualSalesFlowQuery.java

@ -0,0 +1,26 @@
package com.yxt.anrui.base.api.basevehicleactualsales;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @Author dimengzhe
* @Date 2022/4/21 11:32
* @Description 审核相关参数
*/
@Data
public class BaseVehicleActualSalesFlowQuery implements Query {
private static final long serialVersionUID = -3729579148766080074L;
@ApiModelProperty(value = "处理意见")
private String comment;
@ApiModelProperty(value = "流程id")
private String instanceId;
@ApiModelProperty(value = "环节id")
private String taskId;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "业务sid")
private String businessSid;
}

16
anrui-base/anrui-base-api/src/main/java/com/yxt/anrui/base/api/basevehiclemodel/BaseVehicleModelListQuery.java

@ -17,7 +17,7 @@ public class BaseVehicleModelListQuery implements Query {
private String modelName;
@ApiModelProperty(value = "品牌sid")
private String carBrand;
@ApiModelProperty(value = "功能")
@ApiModelProperty(value = "功能key")
private String vehicleType;
@ApiModelProperty(value = "系列key")
private String productLine;
@ -27,12 +27,24 @@ public class BaseVehicleModelListQuery implements Query {
private String power;
@ApiModelProperty(value = "版本key")
private String vehicleVersion;
@ApiModelProperty(value = "燃料")
@ApiModelProperty(value = "燃料key")
private String fuelType;
@ApiModelProperty(value = "变速箱key")
private String gearboxType;
@ApiModelProperty(value = "排放标准key")
private String emissionStandard;
@ApiModelProperty(value = "发动机型号key")
private String engineType;
@ApiModelProperty(value = "细分市场")
private String marketSegments;
@ApiModelProperty(value = "规格型号")
private String specifications;
@ApiModelProperty(value = "用户sid")
private String userSid;
@ApiModelProperty(value = "车型sid")
private String modelSid;
@ApiModelProperty(value = "配置sid")
private String configSid;
@ApiModelProperty(value = "分公司sid")
private String useOrg;
}

6
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigMapper.xml

@ -295,7 +295,7 @@
LEFT JOIN base_vehicle_model bvm ON bvm.sid = bvc.modelSid
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrg = #{useOrg}
AND bvc.useOrgSid = #{useOrg}
</select>
<select id="configPageList" resultType="com.yxt.anrui.base.api.basemodelconfig.BaseModelConfigListVo">
@ -326,7 +326,7 @@
WHERE bv.modelSid = bvc.modelSid
AND bv.modelConfigSid =
bvc.configurationItemsSid
and bv.useOrg = bvc.useOrg) AS nowCarNum,
and bv.useOrg = bvc.useOrgSid) AS nowCarNum,
(SELECT count(*)
FROM bus_vehicle_apply_detail bvad
WHERE bvad.vehicleSid = bvc.modelSid
@ -535,7 +535,7 @@
FROM base_vehmodel_config bvc
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrg != #{useOrg}
AND bvc.useOrgSid != #{useOrg}
</select>
<select id="getCarConfigSummary" resultType="com.yxt.anrui.base.api.basemodelconfig.AppModelConfigListVo">
SELECT bmc.sid,

5
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigRest.java

@ -244,6 +244,11 @@ public class BaseModelConfigRest implements BaseModelConfigFeign {
@Override
public ResultBean<AppModelConfigVo> getModelConfigList(PagerQuery<AppModelConfigListQuery> pagerQuery) {
ResultBean<AppModelConfigVo> rb = ResultBean.fireFail();
String modelSid = pagerQuery.getParams().getModelSid();
String userSid = pagerQuery.getParams().getUserSid();
if (StringUtils.isNull(modelSid) || StringUtils.isNull(userSid)) {
return rb.fail().setMsg("用户sid或用户sid为空");
}
AppModelConfigVo vo = baseModelConfigService.getModelConfigList(pagerQuery);
return rb.success().setData(vo);
}

64
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basemodelconfig/BaseModelConfigService.java

@ -383,6 +383,62 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
if (StringUtils.isNotBlank(query.getFuelTank())) {
qw.like("bc.fuelTank", query.getFuelTank());
}
//后视镜
if (StringUtils.isNotBlank(query.getRearViewMirrorKey())) {
qw.like("bc.rearViewMirrorKey", query.getRearViewMirrorKey());
}
//轮胎
if (StringUtils.isNotBlank(query.getTireSizeKey())) {
qw.like("bc.tireSizeKey", query.getTireSizeKey());
}
//空调
if (StringUtils.isNotBlank(query.getAirConditionerKey())) {
qw.like("bc.airConditionerKey", query.getAirConditionerKey());
}
//轮毂材质
if (StringUtils.isNotBlank(query.getHubMaterialKey())) {
qw.like("bc.hubMaterialKey", query.getHubMaterialKey());
}
//导流罩
if (StringUtils.isNotBlank(query.getBaffleModelKey())) {
qw.like("bc.baffleModelKey", query.getBaffleModelKey());
}
//悬架
if (StringUtils.isNotBlank(query.getSuspensionKey())) {
qw.like("bc.suspensionKey", query.getSuspensionKey());
}
//座椅
if (StringUtils.isNotBlank(query.getSeatKey())) {
qw.like("bc.seatKey", query.getSeatKey());
}
//护轮罩
if (StringUtils.isNotBlank(query.getTireCoverKey())) {
qw.like("bc.tireCoverKey", query.getTireCoverKey());
}
//鞍座
if (StringUtils.isNotBlank(query.getSaddleKey())) {
qw.like("bc.saddleKey", query.getSaddleKey());
}
//轴距
if (StringUtils.isNotBlank(query.getWheelbaseKey())) {
qw.like("bc.wheelbaseKey", query.getWheelbaseKey());
}
//保险杠
if (StringUtils.isNotBlank(query.getBumperKey())) {
qw.like("bc.bumperKey", query.getBumperKey());
}
//配置包
if (StringUtils.isNotBlank(query.getConfiguringBaoKey())) {
qw.like("bc.configuringBaoKey", query.getConfiguringBaoKey());
}
//独立热源
if (StringUtils.isNotBlank(query.getIndependentSourcesKey())) {
qw.like("bc.independentSourcesKey", query.getIndependentSourcesKey());
}
//多媒体
if (StringUtils.isNotBlank(query.getMultimediaKey())) {
qw.like("bc.multimediaKey", query.getMultimediaKey());
}
//常用配置
if (StringUtils.isNotBlank(query.getConfigName())) {
qw.like("bc.configName", query.getConfigName());
@ -391,9 +447,13 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
if (StringUtils.isNotBlank(query.getModelSid())) {
qw.eq("bvc.modelSid", query.getModelSid());
}
//配置sid
if (StringUtils.isNotBlank(query.getConfigSid())) {
qw.eq("bc.sid", query.getConfigSid());
}
//分公司
if (StringUtils.isNotBlank(query.getUseOrg())) {
qw.eq("bvc.useOrg", query.getUseOrg());
qw.eq("bvc.useOrgSid", query.getUseOrg());
}
return qw;
}
@ -603,7 +663,7 @@ public class BaseModelConfigService extends MybatisBaseService<BaseModelConfigMa
qw.eq("bvm.suspension", pagerQuery.getSuspension());
}
if (com.yxt.common.base.utils.StringUtils.isNotBlank(pagerQuery.getUseOrg())) {//分公司
qw.eq("bvc.useOrg", pagerQuery.getUseOrg());
qw.eq("bvc.useOrgSid", pagerQuery.getUseOrg());
}
}
return qw;

51
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.java

@ -6,6 +6,7 @@ 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.base.api.basevehicle.*;
import com.yxt.anrui.base.api.basevehicle.AppPurchaseDetailsVo;
import com.yxt.common.core.result.ResultBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -215,6 +216,14 @@ public interface BaseVehicleMapper extends BaseMapper<BaseVehicle> {
*/
IPage<BaseExistingCarListPageVo> selExistingCarPageList(IPage<BaseExistingCarPageQuery> page, @Param(Constants.WRAPPER) QueryWrapper<BaseExistingCarListPageVo> qw);
/**
* 根据车架号查询现车详情
*
* @param vinNo
* @return
*/
AppPurchaseDetailsVo getPurchaseDetails(@Param("vinNo") String vinNo);
/**
* 手机端业务-车型报价-列表
*
@ -252,7 +261,7 @@ public interface BaseVehicleMapper extends BaseMapper<BaseVehicle> {
IPage<AppBaseVehicleNowModelVo> getNowModelList(IPage<AppBaseVehicleNowModelQuery> page, @Param(Constants.WRAPPER) QueryWrapper<AppBaseVehicleNowModelVo> qw);
/**
* 分页列表
* 采购退库选择车辆分页列表
*
* @param page 分页
* @param qw 查询条件
@ -260,7 +269,47 @@ public interface BaseVehicleMapper extends BaseMapper<BaseVehicle> {
*/
IPage<BaseVehicleReturnVo> vehicleReturnPageList(IPage<BaseVehicleReturnVo> page, @Param(Constants.WRAPPER) QueryWrapper<BaseVehicle> qw);
/**
* 根据车架号更新车辆状态key和value
*
* @param stringList 车架号集合
* @param vehicleState 车辆状态
* @param vehicleStateValue 车辆状态vlaue
* @return
*/
ResultBean updateByVinNo(@Param("vinNoList") List<String> stringList, @Param("vehicleState") String vehicleState, @Param("vehicleStateValue") String vehicleStateValue);
/**
* 询该车辆数组中是否包含车辆状态为采购退库状态的车辆若有返回true没有则返回false
*
* @param vinNoList 车架号数组
* @return
*/
List<Boolean> selectStateByVinNo(@Param("vinNoList") List<String> vinNoList);
/**
* 查询该车辆数组中是否包含车辆结算状态为预买断的状态
*
* @param vinNoList 车架号数组
* @return
*/
List<Boolean> selectStatusByVinNo(@Param("vinNoList") List<String> vinNoList);
/**
* 根据车架号更新车辆的结算状态
*
* @param stringList 车架号集合
* @param settlementStatus 结算状态
* @return
*/
int updateStatusByVinNo(@Param("vinNoList") List<String> stringList, @Param("settlementStatus") String settlementStatus);
/**
* 未售买断选择车辆分页列表
*
* @param page 分页
* @param qw 查询条件
* @return
*/
IPage<BaseVehicleActualVo> vehicleActualPageList(IPage<BaseVehicleActualVo> page, @Param(Constants.WRAPPER) QueryWrapper<BaseVehicle> qw);
}

159
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleMapper.xml

@ -12,12 +12,12 @@
<!--分页列表-->
<select id="pagerList" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicleVo">
SELECT bv.sid,
bv.modelName,
bv.vinNo,
bv.engineNo,
bv.vehicleStateValue,
bv.location,
bv.libraryAge
bv.modelName,
bv.vinNo,
bv.engineNo,
bv.vehicleStateValue,
bv.location,
bv.libraryAge
FROM base_vehicle bv
<where>
${ew.sqlSegment}
@ -69,10 +69,10 @@
<!--库龄(根据首次发车日期计算)-->
bv.libraryAge
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bvm.sid = bv.modelSid
LEFT JOIN base_model_config bmc ON bmc.sid = bv.modelConfigSid
LEFT JOIN anrui_portal.dict_common dc ON dc.dictKey = bv.vehicleState
${ew.customSqlSegment}
LEFT JOIN base_vehicle_model bvm ON bvm.sid = bv.modelSid
LEFT JOIN base_model_config bmc ON bmc.sid = bv.modelConfigSid
LEFT JOIN anrui_portal.dict_common dc ON dc.dictKey = bv.vehicleState
${ew.customSqlSegment}
</select>
<!--删除或批量删除车辆信息-->
<delete id="deleteBySids" parameterType="java.util.List">
@ -158,16 +158,16 @@
bvm.isValidity,
bvm.isValidityValue
FROM base_vehicle_model bvm
LEFT JOIN base_model_config bmc ON bmc.vehicleSid = bvm.sid
LEFT JOIN base_manufacturer bm ON bvm.manufacturer = bm.sid
LEFT JOIN base_vehicle_brand bvb ON bvb.sid = bvm.carBrand
LEFT JOIN base_model_config bmc ON bmc.vehicleSid = bvm.sid
LEFT JOIN base_manufacturer bm ON bvm.manufacturer = bm.sid
LEFT JOIN base_vehicle_brand bvb ON bvb.sid = bvm.carBrand
WHERE bvm.sid = #{modelSid}
AND bmc.sid = #{modelConfigSid}
AND bmc.sid = #{modelConfigSid}
</select>
<!--导入车辆信息-->
<insert id="saveList">
INSERT INTO base_vehicle(sid, modelSid, modelConfigSid, vinNo, engineNo, manufactureDate, location,
vehicleState, firstStartDate, libraryAge)
vehicleState, firstStartDate, libraryAge)
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(UUID(),<!--sid-->
@ -196,8 +196,8 @@
</select>
<select id="selBySid" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicle">
select bv.sid,
bv.modelSid,
bv.modelConfigSid,
bv.modelSid,
bv.modelConfigSid,
<!--车架号(VIN)-->
bv.vinNo,
<!--发动机号/许可证号-->
@ -256,13 +256,13 @@
<select id="getAppCurrentCarByPageList"
resultType="com.yxt.anrui.base.api.basevehicle.AppCurrentCarModelByPageListVo">
SELECT bvm.sid AS modelSid,
bvm.vehicleAlias,
bvm.brandName,
bvm.vehicleVersionValue,
bvm.fuelTypeValue,
bvm.gearboxTypeValue
bvm.vehicleAlias,
bvm.brandName,
bvm.vehicleVersionValue,
bvm.fuelTypeValue,
bvm.gearboxTypeValue
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.modelSid = bvm.sid
LEFT JOIN base_vehicle_model bvm ON bv.modelSid = bvm.sid
<where>
${ew.sqlSegment}
</where>
@ -349,7 +349,7 @@
LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.sid
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrg = #{useOrg}
AND bvc.useOrgSid = #{useOrg}
</select>
<select id="exiCarPagerList" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicleListVo">
@ -373,9 +373,9 @@
<!--配置Sid-->
bv.modelConfigSid AS configSid
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
</select>
<select id="selectExiCarConfig" resultType="com.yxt.anrui.base.api.basevehicle.ExiCarConfigDetailVo">
@ -419,7 +419,7 @@
LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.`sid`
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrg = #{useOrg}
AND bvc.useOrgSid = #{useOrg}
</select>
<select id="getBusDepositVehByVehSid" resultType="com.yxt.anrui.base.api.basevehicle.BusDepositVehListVo">
SELECT bv.sid,
@ -438,8 +438,8 @@
<!--销售指导价-->
bv.guidedPrice
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
WHERE bv.sid = #{sid}
</select>
@ -476,29 +476,29 @@
<!--配置Sid-->
bv.modelConfigSid AS configSid
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
ORDER BY
bv.priceDate desc
bv.priceDate desc
</select>
<select id="getModelList" resultType="com.yxt.anrui.base.api.basevehicle.AppVehicleModelPriceVo">
SELECT bvm.sid AS modelSid,
bvm.vehicleAlias AS modelName,
bvm.carBrand AS brandSid,
bvm.brandName,
bvm.vehicleVersionValue AS versionValue,
bvm.fuelTypeValue,
bvm.gearboxTypeValue,
bvc.priceValidity,
(SELECT count(*) FROM base_vehmodel_config WHERE bvc.modelSid = bvm.sid) AS configNum,
(SELECT count(*) FROM base_vehicle bv WHERE bv.modelSid = bvm.sid AND lockedState = '0004') AS nowCarNum,
(SELECT count(*)
FROM bus_vehicle_apply_detail bvad
WHERE bvad.vehicleSid = bvm.sid) AS produceCarNum
SELECT bvm.sid AS modelSid,
bvm.vehicleAlias AS modelName,
bvm.carBrand AS brandSid,
bvm.brandName,
bvm.vehicleVersionValue AS versionValue,
bvm.fuelTypeValue,
bvm.gearboxTypeValue,
bvc.priceValidity,
(SELECT count(*) FROM base_vehmodel_config WHERE bvc.modelSid = bvm.sid) AS configNum,
(SELECT count(*) FROM base_vehicle bv WHERE bv.modelSid = bvm.sid AND lockedState = '0004') AS nowCarNum,
(SELECT count(*)
FROM bus_vehicle_apply_detail bvad
WHERE bvad.vehicleSid = bvm.sid) AS produceCarNum
FROM base_vehicle_model bvm
LEFT JOIN base_vehmodel_config bvc ON bvm.sid = bvc.modelSid
LEFT JOIN base_vehmodel_config bvc ON bvm.sid = bvc.modelSid
<where>
${ew.sqlSegment}
</where>
@ -513,7 +513,7 @@
FROM base_vehicle_model bvm
LEFT JOIN base_vehmodel_config bvc ON bvm.sid = bvc.modelSid
WHERE bvc.modelSid = #{modelSid}
AND bvc.useOrg != #{useOrg}
AND bvc.useOrgSid != #{useOrg}
</select>
<select id="getAppModelConfig"
@ -540,7 +540,7 @@
LEFT JOIN base_model_config bmc ON bvc.configurationItemsSid = bmc.sid
WHERE bvc.modelSid = #{modelSid}
AND bvc.configurationItemsSid = #{configSid}
AND bvc.useOrg = #{useOrg}
AND bvc.useOrgSid = #{useOrg}
</select>
<select id="getNowModelList" resultType="com.yxt.anrui.base.api.basevehicle.AppBaseVehicleNowModelVo">
@ -575,9 +575,9 @@
bmc.configName,
DATE_FORMAT(bv.priceDate, '%Y-%m-%d') as priceDate
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
</select>
<update id="updateByVinNo">
@ -590,10 +590,61 @@
</update>
<select id="selectStateByVinNo" resultType="java.lang.Boolean">
select if(vehicleState = '0006','true','false')
select if(vehicleState = '0006', 'true', 'false')
from base_vehicle where vinNo in
<foreach item="vinNo" collection="vinNoList" open="(" separator="," close=")">
#{vinNo}
</foreach>
</select>
<select id="selectStatusByVinNo" resultType="java.lang.Boolean">
select if(settlementStatus = '0', 'true', 'false')
from base_vehicle where vinNo in
<foreach item="vinNo" collection="vinNoList" open="(" separator="," close=")">
#{vinNo}
</foreach>
</select>
<update id="updateStatusByVinNo">
update base_vehicle
set settlementStatus = #{settlementStatus}
where vinNo in
<foreach item="vinNo" collection="vinNoList" open="(" separator="," close=")">
#{vinNo}
</foreach>
</update>
<select id="vehicleActualPageList" resultType="com.yxt.anrui.base.api.basevehicle.BaseVehicleActualVo">
SELECT bv.sid,
<!--品牌名称-->
bvm.brandName,
<!--车型名称-->
bvm.vehicleAlias,
<!--车架号-->
bv.vinNo,
<!--颜色-->
bmc.carColor color,
<!--存放地点-->
bv.location,
<!--销售指导价-->
bv.guidedPrice,
bmc.configName,
DATE_FORMAT(bv.priceDate, '%Y-%m-%d') as priceDate,
bv.priced
FROM base_vehicle bv
LEFT JOIN base_vehicle_model bvm ON bv.`modelSid` = bvm.`sid`
LEFT JOIN base_model_config bmc ON bv.modelConfigSid = bmc.`sid`
${ew.customSqlSegment}
</select>
<!--根据车架号查询现车详情-->
<select id="getPurchaseDetails" resultType="com.yxt.anrui.base.api.basevehicle.AppPurchaseDetailsVo">
select bv.sid,
bv.vinNo,
bv.vehicleStateValue,
bv.location,
bv.priceDate,
bv.guidedPrice
from base_vehicle bv
where bv.vinNo = #{vinNo}
</select>
</mapper>

20
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleRest.java

@ -6,6 +6,7 @@ import com.yxt.anrui.base.api.basemodelconfig.BaseModelConfig;
import com.yxt.anrui.base.api.basevehicle.*;
import com.yxt.anrui.base.api.basevehiclebrand.BaseVehicleBrand;
import com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModel;
import com.yxt.anrui.base.api.basevehicle.AppPurchaseDetailsVo;
import com.yxt.anrui.base.biz.basemodelconfig.BaseModelConfigService;
import com.yxt.anrui.base.biz.basevehiclebrand.BaseVehicleBrandService;
import com.yxt.anrui.base.biz.basevehiclemodel.BaseVehicleModelService;
@ -290,6 +291,18 @@ public class BaseVehicleRest implements BaseVehicleFeign {
return rb.success().setData(pv1);
}
/**
* 根据车架号查询现车详情
*
* @param vinNo
* @return
*/
@Override
public ResultBean<AppPurchaseDetailsVo> getPurchaseDetails(String vinNo) {
AppPurchaseDetailsVo vo = baseVehicleService.getPurchaseDetails(vinNo);
return new ResultBean<AppPurchaseDetailsVo>().success().setData(vo);
}
/**
* 采购退库选择车辆分页列表
*
@ -313,6 +326,13 @@ public class BaseVehicleRest implements BaseVehicleFeign {
return baseVehicleService.selectStateByVinNo(vinNoList);
}
@Override
public ResultBean<PagerVo<BaseVehicleActualVo>> vehicleActualList(PagerQuery<BaseVehicleReturnQuery> pagerQuery) {
ResultBean<PagerVo<BaseVehicleActualVo>> rb = ResultBean.fireFail();
PagerVo<BaseVehicleActualVo> pv = baseVehicleService.vehicleActualList(pagerQuery);
return rb.success().setData(pv);
}
/**
* 手机端现车列表
*

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

@ -6,10 +6,13 @@ import com.yxt.anrui.base.api.basemodelconfig.AppCarConfigSummaryVo;
import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigDetailsVo;
import com.yxt.anrui.base.api.basemodelconfig.AppModelConfigListVo;
import com.yxt.anrui.base.api.basevehicle.*;
import com.yxt.anrui.base.api.basevehicle.AppPurchaseDetailsVo;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.biz.basemodelconfig.BaseModelConfigService;
import com.yxt.anrui.base.biz.basemodelszconfig.BaseModelSzconfigService;
import com.yxt.anrui.base.biz.basetrailer.BaseTrailerService;
import com.yxt.anrui.base.biz.basevehicleappendix.BaseVehicleAppendixService;
import com.yxt.anrui.base.biz.commonappendix.CommonAppendixService;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
@ -61,6 +64,9 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
@Autowired
private BaseTrailerService baseTrailerService;
@Autowired
private CommonAppendixService commonAppendixService;
@Autowired
private BaseVehicleAppendixService baseVehicleAppendixService;
@ -487,8 +493,8 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
*/
public AppCurrentCarDetailConfigVo getAppCurrentCarDetailConfigVo(String modelSid, String configSid, String userSid) {
SysOrganizationVo data = sysOrganizationFeign.getUseOrgByUserSid(userSid).getData();
String useOrg = data.getSid();
String useOrg = sysOrganizationFeign.getUseOrgByUserSid(userSid).getData().getSid();
AppCurrentCarDetailConfigVo configDetailVo = baseMapper.getAppModelConfig(modelSid, configSid, useOrg);
//车型详细配置数据
AppCurrentCarDetailVo currentCarVo = baseMapper.getAppCurrentCarDetailConfigVo(modelSid, configSid, useOrg);
@ -661,7 +667,11 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
}
IPage<BaseExistingCarPageQuery> page = PagerUtil.queryToPage(pagerQuery);
QueryWrapper<BaseExistingCarListPageVo> qw = existingCarBuildQW(pagerQuery.getParams());
return baseMapper.selExistingCarPageList(page, qw);
IPage<BaseExistingCarListPageVo> baseExistingCarListPageVoIPage = baseMapper.selExistingCarPageList(page, qw);
for (BaseExistingCarListPageVo record : baseExistingCarListPageVoIPage.getRecords()) {
record.setCertificate("虚拟/正式");
}
return baseExistingCarListPageVoIPage;
}
/**
@ -700,6 +710,29 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
return qw;
}
/**
* 根据车架号查询现车详情
*
* @param vinNo
* @return
*/
public AppPurchaseDetailsVo getPurchaseDetails(String vinNo) {
AppPurchaseDetailsVo vo = baseMapper.getPurchaseDetails(vinNo);
String sid = vo.getSid();
List<String> vehicleImages = new ArrayList<>();
List<CommonAppendixVo> list = commonAppendixService.selByLinkSid(sid);
if (list.size() > 0) {
for (CommonAppendixVo commonAppendixVo : list) {
String url = fileUploadComponent.getUrlPrefix() + commonAppendixVo.getFilePath();
vehicleImages.add(url);
}
}
vo.setVehicleImages(vehicleImages);
vo.setVehicleLabel("热卖");
vo.setPromotionPolicy("机油五桶、保养三次");
return vo;
}
/**
* 手机端业务-车型报价-列表
*
@ -763,7 +796,7 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
qw.eq("bvm.power", pagerQuery.getHorsepower());
}
if (StringUtils.isNotBlank(pagerQuery.getUseOrg())) { // 分公司
qw.eq("bvc.useOrg", pagerQuery.getUseOrg());
qw.eq("bvc.useOrgSid", pagerQuery.getUseOrg());
}
return qw;
}
@ -969,6 +1002,12 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
return qw;
}
/**
* 根据车架号更新车辆的车辆状态key和value
*
* @param baseVehicleUpdateQuery 参数
* @return
*/
public ResultBean updateByVinNo(BaseVehicleUpdateQuery baseVehicleUpdateQuery) {
List<String> stringList = baseVehicleUpdateQuery.getVinNoLis();
String vehicleState = baseVehicleUpdateQuery.getVehicleState();
@ -976,6 +1015,12 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
return baseMapper.updateByVinNo(stringList, vehicleState, vehicleStateValue);
}
/**
* 查询该车辆数组中是否包含车辆状态为采购退库状态的车辆若有返回true没有则返回false
*
* @param vinNoList 车辆的车架号数组
* @return
*/
public ResultBean<Boolean> selectStateByVinNo(List<String> vinNoList) {
ResultBean<Boolean> resultBean = ResultBean.fireFail();
boolean isTrue = false;
@ -986,4 +1031,122 @@ public class BaseVehicleService extends MybatisBaseService<BaseVehicleMapper, Ba
}
return resultBean.success().setData(isTrue);
}
/**
* 查询该车辆数组中是否包含车辆结算状态为预买断的状态
*
* @param vinNoList 车架号集合
* @return
*/
public ResultBean<Boolean> selectStatusByVinNo(List<String> vinNoList) {
ResultBean<Boolean> resultBean = ResultBean.fireFail();
boolean isTrue = false;
//查询车架号数组中是否有采购退库状态的车辆,若有则返回true,没有返回false
List<Boolean> booleanList = baseMapper.selectStatusByVinNo(vinNoList);
if (booleanList.contains(true)) {
isTrue = true;
}
return resultBean.success().setData(isTrue);
}
/**
* 根据车架号批量更新车辆的结算状态
*
* @param baseVehicleUpdateQuery 参数
* @return
*/
public int updateStatusByVinNo(BaseVehicleUpdateQuery baseVehicleUpdateQuery) {
List<String> stringList = baseVehicleUpdateQuery.getVinNoLis();
String settlementStatus = baseVehicleUpdateQuery.getSettlementStatus();
return baseMapper.updateStatusByVinNo(stringList, settlementStatus);
}
/**
* 未售买断选择车辆分页列表
*
* @param pagerQuery 查询条件
* @return
*/
public PagerVo<BaseVehicleActualVo> vehicleActualList(PagerQuery<BaseVehicleReturnQuery> pagerQuery) {
IPage<BaseVehicleActualVo> page = vehicleActualPageList(pagerQuery);
PagerVo<BaseVehicleActualVo> pv = new PagerVo<>();
PagerVo<BaseVehicleActualVo> pv1 = PagerUtil.pageToVo(page, pv);
return pv1;
}
/**
* 未售买断车辆的数据
*
* @param pagerQuery 查询条件
* @return
*/
private IPage<BaseVehicleActualVo> vehicleActualPageList(PagerQuery<BaseVehicleReturnQuery> pagerQuery) {
IPage<BaseVehicleActualVo> page = PagerUtil.queryToPage(pagerQuery);
QueryWrapper<BaseVehicle> qw = vehicleActualWrapper(pagerQuery.getParams());
return baseMapper.vehicleActualPageList(page, qw);
}
/**
* 构造未售买断查询条件
*
* @param params 查询条件
* @return
*/
private QueryWrapper<BaseVehicle> vehicleActualWrapper(BaseVehicleReturnQuery params) {
QueryWrapper<BaseVehicle> qw = new QueryWrapper<>();
if (params != null) {
//品牌
if (StringUtils.isNotBlank(params.getBrandSid())) {
qw.eq("bvm.carBrand", params.getBrandSid());
}
//功能
if (StringUtils.isNotBlank(params.getVehicleType())) {
qw.like("bvm.vehicleType", params.getVehicleType());
}
//系列
if (StringUtils.isNotBlank(params.getProductLine())) {
qw.like("bvm.productLine", params.getProductLine());
}
//变速箱
if (StringUtils.isNotBlank(params.getGearboxType())) {
qw.eq("bvm.gearboxType", params.getGearboxType());
}
//驱动
if (StringUtils.isNotBlank(params.getDriveForm())) {
qw.eq("bvm.driveForm", params.getDriveForm());
}
//排放标准
if (StringUtils.isNotBlank(params.getEmissionStandard())) {
qw.eq("bvm.emissionStandard", params.getEmissionStandard());
}
//马力
if (StringUtils.isNotBlank(params.getPower())) {
qw.eq("bvm.power", params.getPower());
}
//燃料
if (StringUtils.isNotBlank(params.getFuelType())) {
qw.eq("bvm.fuelType", params.getFuelType());
}
//版本
if (StringUtils.isNotBlank(params.getVehicleVersion())) {
qw.eq("bvm.vehicleVersion", params.getVehicleVersion());
}
//车型
if (StringUtils.isNotBlank(params.getVehicleAlias())) {
qw.eq("bvm.vehicleAlias", params.getVehicleAlias());
}
//快捷检索车型
if (StringUtils.isNotBlank(params.getModelName())) {
qw.like("bvm.modelName", params.getModelName());
}
if (params.getVinNoList().size() > 0) {
qw.notIn("bv.vinNo", params.getVinNoList());
}
//结算状态:0没买断
qw.eq("bv.settlementStatus", "0");
//车辆状态:现车
qw.eq("bv.vehicleStateValue", "现车");
}
return qw;
}
}

8
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsMapper.java

@ -26,4 +26,12 @@ public interface BaseVehicleActualDetailsMapper extends BaseMapper<BaseVehicleAc
* @return
*/
List<BaseVehicleActualDetailsVo> detailsList(String sid);
/**
* 根据业务sid查询车辆vinNo的集合
*
* @param sid 未售买断申请sid
* @return
*/
List<String> selectVinNoList(String sid);
}

6
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsMapper.xml

@ -18,4 +18,10 @@
from base_vehicle_actual_details
where vehicleActualSid = #{sid}
</select>
<select id="selectVinNoList" resultType="java.lang.String">
select vinNo
from base_vehicle_actual_details
where vehicleActualSid = #{sid}
</select>
</mapper>

7
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualdetails/BaseVehicleActualDetailsService.java

@ -4,6 +4,7 @@ import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetails;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetailsDto;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetailsVo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -66,4 +67,10 @@ public class BaseVehicleActualDetailsService extends MybatisBaseService<BaseVehi
public List<BaseVehicleActualDetailsVo> detailsList(String sid) {
return baseMapper.detailsList(sid);
}
public ResultBean<List<String>> selectVinNoList(String sid) {
ResultBean<List<String>> rb = ResultBean.fireFail();
List<String> vinNoList = baseMapper.selectVinNoList(sid);
return rb.success().setData(vinNoList);
}
}

12
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.java

@ -33,4 +33,16 @@ public interface BaseVehicleActualSalesMapper extends BaseMapper<BaseVehicleActu
* @return
*/
BaseVehicleActualSalesDetailsVo details(String sid);
/**
* 更新未售买断业务表中的流程状态
*
* @param businessSid 业务sid
* @param proDefId 流程定义ID
* @param nodeState 节点状态
* @param procInsId 流程实例ID
* @param taskDefKey 任务定义的ID值
*/
void modifyFlowState(@Param("businessSid") String businessSid, @Param("procDefId") String proDefId, @Param("nodeState") String nodeState,
@Param("procInstSid") String procInsId, @Param("nodeSid") String taskDefKey);
}

9
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesMapper.xml

@ -16,4 +16,13 @@
from base_vehicle_actual_sales
where sid = #{sid}
</select>
<update id="modifyFlowState">
update base_vehicle_actual_sales
set procDefId=#{procDefId},
nodeState=#{nodeState},
procInstSid=#{procInstSid},
nodeSid=#{nodeSid}
where sid = #{businessSid}
</update>
</mapper>

20
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesRest.java

@ -43,4 +43,24 @@ public class BaseVehicleActualSalesRest implements BaseVehicleActualSalesFeign {
public ResultBean<BaseVehicleActualSalesDetailsVo> details(String sid) {
return baseVehicleActualSalesService.details(sid);
}
@Override
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
return baseVehicleActualSalesService.complete(baseVehicleActualSalesFlowQuery);
}
@Override
public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.reject(dto);
}
@Override
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.breakProcess(dto);
}
@Override
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
return baseVehicleActualSalesService.revokeProcess(dto);
}
}

281
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleactualsales/BaseVehicleActualSalesService.java

@ -1,14 +1,27 @@
package com.yxt.anrui.base.biz.basevehicleactualsales;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basevehicle.BaseVehicleUpdateQuery;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetails;
import com.yxt.anrui.base.api.basevehicleactualdetails.BaseVehicleActualDetailsVo;
import com.yxt.anrui.base.api.basevehicleactualsales.*;
import com.yxt.anrui.base.biz.basevehicle.BaseVehicleService;
import com.yxt.anrui.base.biz.basevehicleactualdetails.BaseVehicleActualDetailsService;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTask;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskFeign;
import com.yxt.anrui.flowable.api.flowtask.FlowTaskVo;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFeign;
import com.yxt.anrui.flowable.api.sysformlink.SysFormLinkFlowStateEnum;
import com.yxt.anrui.flowable.api.sysformlink.SysFormStateVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.api.utils.ProcessStateEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.common.base.service.MybatisBaseService;
@ -22,7 +35,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Author dimengzhe
@ -41,6 +56,12 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
private SysUserFeign sysUserFeign;
@Autowired
private SysStaffOrgFeign sysStaffOrgFeign;
@Autowired
private FlowTaskFeign flowTaskFeign;
@Autowired
private BaseVehicleService baseVehicleService;
@Autowired
private FlowableFeign flowableFeign;
/**
* 分页列表
@ -68,12 +89,24 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return pv1;
}
/**
* 查询分页列表的数据
*
* @param pagerQuery 查询条件
* @return
*/
private IPage<BaseVehicleActualSalesVo> pagerList(PagerQuery<BaseVehicleActualSalesQuery> pagerQuery) {
IPage<?> page = PagerUtil.queryToPage(pagerQuery);
QueryWrapper<BaseVehicleActualSales> qw = buildQueryWrapper(pagerQuery.getParams());
return baseMapper.pagerList(page, qw);
}
/**
* 构造查询条件
*
* @param params 查询条件
* @return
*/
private QueryWrapper<BaseVehicleActualSales> buildQueryWrapper(BaseVehicleActualSalesQuery params) {
QueryWrapper<BaseVehicleActualSales> qw = new QueryWrapper<>();
if (params != null) {
@ -84,6 +117,12 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return qw;
}
/**
* 新增或修改未售买断申请
*
* @param scmVehicleActualSalesDto 未售买断申请新增或修改数据传输对象
* @return 未售买断申请的sid
*/
@Transactional(rollbackFor = Exception.class)
public ResultBean saveOrUpdateVehicleSales(BaseVehicleActualSalesDto scmVehicleActualSalesDto) {
ResultBean rb = ResultBean.fireFail();
@ -121,7 +160,7 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
* 判断是否可删除
*
* @param sid sid
* @return
* @return 是否可以删除true或false
*/
private boolean checkCouldChange(String sid) {
BaseVehicleActualSales baseVehicleActualSales = fetchBySid(sid);
@ -136,7 +175,7 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
* 查询用户是否设置了部门
*
* @param userSid 用户sid
* @return
* @return 单位sid
*/
private String checkUserOrg(String userSid) {
String orgSid = "";
@ -148,8 +187,83 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
return orgSid;
}
/**
* 提交申请
*
* @param baseVehicleActualSalesDto 未售买断新增修改数据传输对象
* @return 未售买断申请的sid
*/
public ResultBean submitVehicleSales(BaseVehicleActualSalesDto baseVehicleActualSalesDto) {
return null;
ResultBean rb = ResultBean.fireFail();
String orgSid = checkUserOrg(baseVehicleActualSalesDto.getUserSid());
if (baseVehicleActualSalesDto.getDetailsList().size() == 0) {
return rb.setMsg("请选择未售买断的车辆");
}
//保存或修改未售买断申请
ResultBean resultBean = saveOrUpdateVehicleSales(baseVehicleActualSalesDto);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回提交失败
boolean isTrue = isTrue(resultBean.getData().toString());
if (isTrue) {
return rb.setMsg("提交失败!该申请中包含结算状态已是预买断状态的车辆");
}
//开启流程
ResultBean resultBean1 = businessStart(baseVehicleActualSalesDto.getUserSid(), resultBean.getData().toString(), orgSid);
if (!resultBean1.getSuccess()) {
log.error("开启流程失败");
return rb.setMsg("提交失败");
}
return resultBean;
}
/**
* 开启流程
*
* @param userSid 用户sid
* @param businessSid 业务sid
* @param orgSid 单位sid
* @return
*/
public ResultBean businessStart(String userSid, String businessSid, String orgSid) {
ResultBean rb = ResultBean.fireFail();
Map<String, Object> variables = new HashMap<>();
variables.put("businessSid", businessSid);
variables.put("orgSid", orgSid);
ResultBean businessResultBean = flowableFeign.businessStart(ProcDefEnum.BASEVEHICLEACTUALSALES.getProDefId(), userSid, variables);
if (businessResultBean.getSuccess() && businessResultBean.getData() != null) {
Map<String, String> map = (Map<String, String>) businessResultBean.getData();
//更新未售买断业务表中的流程状态
modifyFlowState(businessSid,
ProcDefEnum.SCMVEHICLERETURN.getProDefId(),
map.get("nodeState"),
map.get("procInsId"),
map.get("taskDefKey")
);
return rb.success();
} else {
return rb.setMsg(businessResultBean.getMsg());
}
}
/**
* 更新未售买断业务表中的流程状态
*
* @param businessSid 业务sid
* @param proDefId 流程定义ID
* @param nodeState 节点状态
* @param procInsId 流程实例ID
* @param taskDefKey 任务定义的ID值
*/
private void modifyFlowState(String businessSid, String proDefId, String nodeState,
String procInsId,
String taskDefKey) {
baseMapper.modifyFlowState(businessSid,
proDefId,
nodeState,
procInsId,
taskDefKey);
}
/**
@ -174,4 +288,165 @@ public class BaseVehicleActualSalesService extends MybatisBaseService<BaseVehicl
}
return rb.success().setData(vo);
}
/**
* 审批同意
*
* @param baseVehicleActualSalesFlowQuery 审批相关参数
* @return
*/
public ResultBean complete(BaseVehicleActualSalesFlowQuery baseVehicleActualSalesFlowQuery) {
ResultBean rb = ResultBean.fireFail();
//查询对象转换为map集合
Map<String, Object> variables = Convert.toMap(String.class, Object.class, baseVehicleActualSalesFlowQuery);
BusinessVariables bv = BusinessVariables.builder().build();
bv.setFormVariables(variables);
//判断车辆的结算状态是否包含预买断的状态,如果是的话,返回审核失败
boolean isTrue = isTrue(baseVehicleActualSalesFlowQuery.getBusinessSid());
if (isTrue) {
return rb.setMsg("审核失败!该申请中包含结算状态已是预买断状态的车辆");
}
//审批
ResultBean<FlowTask> resultBean = flowTaskFeign.businessComplete(bv);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = getMap(variables.get("businessSid").toString(), resultBean.getData());
//更新关联表节点状态属性
sysFormLinkFeign.updateFiled(map);
if ("Event_end".equals(map.get("taskDefKey"))) {
//更新车辆的结算状态
updateByVinNo(variables.get("businessSid").toString());
}
return rb.success();
}
/**
* 获取关联表节点状态属性
*
* @param businessSid 业务sid
* @param flowTask 工作流任务相关参数
* @return
*/
public Map<String, Object> getMap(String businessSid, FlowTask flowTask) {
String nodeState = "";
String taskDefKey = "";
Map<String, Object> map = new HashMap<>();
map.put("businessSid", businessSid);
if (flowTask != null) {
ResultBean<List<LatestTaskVo>> listResultBean = flowTaskFeign.getLatestTasks(flowTask.getProcInsId());
if (listResultBean.getSuccess() && listResultBean.getData().size() != 0) {
nodeState = listResultBean.getData().get(0).getName_();
taskDefKey = listResultBean.getData().get(0).getTask_def_key_();
} else {
nodeState = ProcessStateEnum.FINISHED.getStateName();
taskDefKey = "Event_end";
map.put("flowState", SysFormLinkFlowStateEnum.FINISH.getCode());
}
}
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
return map;
}
/**
* 批量更新车辆的结算状态为1预买断状态
*
* @param businessSid 业务sid
*/
public void updateByVinNo(String businessSid) {
//更新车辆状态为采购退库中
ResultBean<List<String>> vinNoList = baseVehicleActualDetailsService.selectVinNoList(businessSid);
if (vinNoList.getSuccess()) {
if (vinNoList.getData().size() != 0) {
//结算状态设置为预买断
String settlementStatus = "1";
BaseVehicleUpdateQuery baseVehicleUpdateQuery = new BaseVehicleUpdateQuery();
baseVehicleUpdateQuery.setSettlementStatus(settlementStatus);
baseVehicleUpdateQuery.setVinNoLis(vinNoList.getData());
baseVehicleService.updateStatusByVinNo(baseVehicleUpdateQuery);
}
}
}
/**
* 查询车架号数组中是否有结算状态为预买断的车辆若有则返回true没有返回false
*
* @param businessSid 业务sid
* @return
*/
public Boolean isTrue(String businessSid) {
boolean isTrue = false;
ResultBean<List<String>> vinNoList1 = baseVehicleActualDetailsService.selectVinNoList(businessSid);
if (vinNoList1.getSuccess() && vinNoList1.getData().size() != 0) {
ResultBean<Boolean> stringResultBean = baseVehicleService.selectStatusByVinNo(vinNoList1.getData());
if (stringResultBean.getSuccess()) {
if (stringResultBean.getData()) {
isTrue = true;
}
}
}
return isTrue;
}
public ResultBean reject(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.taskReject(flowTaskVo);
if (!resultBean.getSuccess()) {
return resultBean;
}
String nodeState = resultBean.getData().get(0).getName_();
String taskDefKey = resultBean.getData().get(0).getTask_def_key_();
String incomingSourceRef = resultBean.getData().get(0).getIncomingSourceRef();
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
if (incomingSourceRef.contains("start")) {
map.put("flowState", SysFormLinkFlowStateEnum.REJECT.getCode());
}
sysFormLinkFeign.updateFiled(map);
return new ResultBean().success();
}
public ResultBean breakProcess(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean resultBean = flowTaskFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return resultBean;
}
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
map.put("nodeState", String.valueOf(resultBean.getData()));
map.put("taskDefKey", "Event_end");
map.put("flowState", SysFormLinkFlowStateEnum.BREAK.getCode());
sysFormLinkFeign.updateFiled(map);
return resultBean.success();
}
public ResultBean revokeProcess(BaseVehicleActualSalesFlowDto dto) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(dto, flowTaskVo);
ResultBean<List<LatestTaskVo>> resultBean = flowTaskFeign.revokeProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return resultBean;
}
String nodeState = resultBean.getData().get(0).getName_();
String taskDefKey = resultBean.getData().get(0).getTask_def_key_();
String inComingSourceRef = resultBean.getData().get(0).getIncomingSourceRef();
Map<String, Object> map = new HashMap<>();
map.put("businessSid", dto.getBusinessSid());
if (inComingSourceRef.contains("start")) {
map.put("nodeState", SysFormLinkFlowStateEnum.UNCOMMITTED.getState());
map.put("taskDefKey", taskDefKey);
map.put("flowState", SysFormLinkFlowStateEnum.UNCOMMITTED.getCode());
} else {
map.put("nodeState", nodeState);
map.put("taskDefKey", taskDefKey);
}
sysFormLinkFeign.updateFiled(map);
return new ResultBean().success();
}
}

2
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelMapper.xml

@ -375,7 +375,7 @@
<select id="notTheCompanyModelPageList" resultType="com.yxt.anrui.base.api.basevehiclemodel.BaseVehicleModelListVo">
SELECT
( SELECT count( * ) FROM base_vehicle bv WHERE bv.modelSid = bm.sid and bv.useOrg = bvc.useOrg) AS nowCarNum,
( SELECT count( * ) FROM base_vehicle bv WHERE bv.modelSid = bm.sid and bv.useOrg = bvc.useOrgSid) AS nowCarNum,
( SELECT count( * ) FROM bus_vehicle_apply_detail bvad WHERE bvad.vehicleSid = bm.sid ) AS productionCarNum
FROM
base_vehicle_model bm

29
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehiclemodel/BaseVehicleModelService.java

@ -368,9 +368,29 @@ public class BaseVehicleModelService extends MybatisBaseService<BaseVehicleModel
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getFuelType())) {
qw.eq("bm.fuelType", query.getFuelType());
}
//排放标准
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getEmissionStandard())) {
qw.eq("bm.emissionStandard", query.getEmissionStandard());
}
//发动机型号
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getEngineType())) {
qw.eq("bm.engineType", query.getEngineType());
}
//细分市场
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getMarketSegments())) {
qw.eq("bm.marketSegments", query.getMarketSegments());
}
//规格型号
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getSpecifications())) {
qw.eq("bm.specifications", query.getSpecifications());
}
//变速箱
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getGearboxType())) {
qw.eq("bm.gearboxType", query.getGearboxType());
}
//判断不是本公司的
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getUseOrg())) {
qw.eq("bm.useOrg", query.getUseOrg());
qw.eq("bvc.useOrgSid", query.getUseOrg());
}
return qw;
}
@ -387,6 +407,13 @@ public class BaseVehicleModelService extends MybatisBaseService<BaseVehicleModel
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getUseOrg())) {
qw.ne("bm.useOrg", query.getUseOrg());
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getModelSid())) {
qw.ne("bm.sid", query.getModelSid());
}
if (org.apache.commons.lang3.StringUtils.isNotBlank(query.getConfigSid())) {
qw.ne("bvc.configSid", query.getConfigSid());
}
return qw;
}

21
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeposit/AppBusDepositBusDetailsVo.java

@ -35,7 +35,7 @@ public class AppBusDepositBusDetailsVo implements Vo {
private String payTypeValue;
@ApiModelProperty("付款方式")
private String payType;
private String payTypeKey;
@ApiModelProperty("收款账号")
private String collectionNumber;
@ -64,4 +64,23 @@ public class AppBusDepositBusDetailsVo implements Vo {
@ApiModelProperty("客户列表")
private List<AppBusDepositCustomerListVo> customerList;
@ApiModelProperty("任务id")
private String taskId;
@ApiModelProperty("流程实例ID")
private String procInsId;
@ApiModelProperty("付款账号")
private String payNumber;
@ApiModelProperty("收款银行")
private String collectionBank;
@ApiModelProperty("收款银行")
private String collectionBankKey;
@ApiModelProperty("收款银行账号")
private String collectionNumberKey;
}

17
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busdeposit/AppBusDepositBuscenterDetailVo.java

@ -21,7 +21,7 @@ public class AppBusDepositBuscenterDetailVo implements Vo {
@ApiModelProperty("付款人")
private String payName;
@ApiModelProperty("车辆台数")
@ApiModelProperty("预定数量")
private String carNumber;
@ApiModelProperty("订金金额")
@ -33,6 +33,18 @@ public class AppBusDepositBuscenterDetailVo implements Vo {
@ApiModelProperty("付款方式")
private String payTypeValue;
@ApiModelProperty("付款方式")
private String payType;
@ApiModelProperty("付款账号")
private String payNumber;
@ApiModelProperty("创建日期")
private String createDate;
@ApiModelProperty("收款银行")
private String collectionBank;
@ApiModelProperty("收款账号")
private String collectionNumber;
@ -54,9 +66,6 @@ public class AppBusDepositBuscenterDetailVo implements Vo {
@ApiModelProperty("部门名称")
private String departmentName;
@ApiModelProperty("跟新状态地址")
private String updateStateUrl;
@ApiModelProperty("客户列表")
private List<AppBusDepositCustomerListVo> customerList;

21
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusDepositBuscenterDto.java

@ -26,7 +26,7 @@ public class AppBusDepositBuscenterDto implements Dto {
private String payTypeValue;
@ApiModelProperty("付款方式key")
private String payType;
private String payTypeKey;
@ApiModelProperty("付款日期")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
@ -53,4 +53,23 @@ public class AppBusDepositBuscenterDto implements Dto {
@ApiModelProperty("客户列表")
private List<AppBusDepositCustomerListDto> customerList;
@ApiModelProperty("任务Id")
private String taskId;
@ApiModelProperty("流程实例ID")
private String procInsId;
@ApiModelProperty("付款账号")
private String payNumber;
@ApiModelProperty("收款银行")
private String collectionBank;
@ApiModelProperty("收款银行")
private String collectionBankKey;
@ApiModelProperty("收款银行账号")
private String collectionNumberKey;
}

3
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusMainDepositQuery.java

@ -59,4 +59,7 @@ public class AppBusMainDepositQuery implements Query {
@ApiModelProperty(value = "name")
private String name;
@ApiModelProperty(value = "业务员sid")
private String staffSid;
}

35
anrui-buscenter/anrui-buscenter-api/src/main/java/com/yxt/anrui/buscenter/api/busmaindeposit/AppBusMainDepositVo.java

@ -49,6 +49,12 @@ import lombok.Data;
@Data
public class AppBusMainDepositVo implements Vo {
@ApiModelProperty(value = "虚拟订单类型(01:订金收取,02:车辆预订)")
private String virtualOrderType;
@ApiModelProperty(value = "虚拟订单状态")
private String virtualOrderState;
@ApiModelProperty(value = "虚拟订单Sid")
private String virtualOrderSid;
@ -58,6 +64,9 @@ public class AppBusMainDepositVo implements Vo {
@ApiModelProperty(value = "制单日期")
private String virtualOrderDate;
@ApiModelProperty(value = "客户名称")
private String customerSid;
@ApiModelProperty(value = "客户名称")
private String customerName;
@ -67,37 +76,25 @@ public class AppBusMainDepositVo implements Vo {
@ApiModelProperty(value = "付款人")
private String payName;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty(value = "车辆台数")
private String carNumber;
@ApiModelProperty(value = "备注")
private String remarks;
@ApiModelProperty(value = "描述 (01时传值,02传空字符串)")
private String describe;
@ApiModelProperty(value = "是否显示删除")
@ApiModelProperty(value = "是否显示删除 只要走流程了就不显示了")
private boolean showDeleteBtn;
@ApiModelProperty(value = "是否显示修改")
@ApiModelProperty(value = "是否显示修改 只要走流程了就不显示了")
private boolean showUpdateBtn;
@ApiModelProperty(value = "虚拟订单状态")
private String virtualOrderState;
@ApiModelProperty(value = "虚拟订单类型(01:订金收取,02:车辆预订)")
private String virtualOrderType;
@ApiModelProperty(value = "是否显示使用订金记录")
@ApiModelProperty(value = "是否显示使用订金记录 有使用记录时才显示(订金收取时才有)")
private boolean showDepositBtn;
@ApiModelProperty(value = "是否显示申请收款单")
@ApiModelProperty(value = "是否显示申请收款单 流程状态为 收款确认 时显示")
private boolean showApplyBtn;
@ApiModelProperty(value = "联系电话")
private String mobile;
@ApiModelProperty(value = "审核节点状态")
private String nodeState;
}

31
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/委托提车授权书.doc

@ -0,0 +1,31 @@
委托提车授权书
${partyA} (公司):
委托人: ${partyB}
受委托人姓名: 身份证号码:
委托人在贵司购买车辆,现因委托人无法亲自到场办理提车手续及提取车辆。兹授
权受委托人代替本委托人到贵司指定地点现场办理提车手续,签订《车辆交付确认单》等
相关提车文件。由此产生的相关法律后果均由本委托人承担。
委托人签字或盖章: 受托人签字:
联系电话:
授权期限: 年 月 日至 年 月 日

1103
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/委托提车授权书.ftl

File diff suppressed because it is too large

16
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/客户开票申请书.doc

@ -0,0 +1,16 @@
客户开票申请书
${customerName} :
我与你公司签署了《车辆买卖合同》(编号为 ${contractNo}
),现我申请将车辆发票按照下列金额开具发票,我自行承担相应的法律后果。我承诺
按照《车辆买卖合同》约定的价格支付车辆价款。
|序号 |车架号 |发票类型 |开票金额 |开票名称 |
|${item|${item.VINN|${item.invoiceTyp|${item.inv|${item.invoiceName} |
|_index|o} |e} |oiceMoney}| |
|+1} | | | | |
申请人: 申请时间: 年 月 日

1052
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/客户开票申请书.ftl

File diff suppressed because it is too large

44
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车).doc

@ -0,0 +1,44 @@
新车买卖合同(现车)
合同编号:${contractNo}
甲方(出卖方) : ${partyA}
乙方(买受方): ${partyB} 联系电话 ${mobile} 身份证号码:
${IDNumber}
乙方从甲方以全款方式购买现车,现将双方权利和义务约定如下:
1. 标的车辆基本信息
|车型:${modelName}。 |
|上装:${topName}。 |
|挂车:${trailerName}。 |
|主车 |
|${mainVehicleNum}台,单台成交价:${mainVehicleSinglePrice}元。车架|
|号:${VINNo}。 |
|挂车 ${trailerNum}台,单台成交价:${trailerSinglePrice}元。 |
|优惠说明:${discountDetail}。 |
|保险说明:${insuranceDetail}。 |
二、车辆含税总价为 ${taxSum} 元(大写 ${taxSumUpper} )。
三、乙方向甲方交纳订金 ${deposit}
元(其中乙方在${date}转入甲方的${deposit1}元中的${deposit2}元用于本次订金),
乙方提车时交清全部车款。甲方未收到全款前,车辆所有权归甲方所有。
四、车辆交付地点 ${deliveryPlace} ,乙方自提。
五、乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进
行验收,验收无异议的,甲方向乙方交付车钥匙,自此,车辆毁损、灭失的风险以及对
第三人的侵权责任由乙方承担。乙方提车上路时必须办理车辆临牌和保险,未办理临牌
和保险产生的后果全部由乙方承担。
六、甲方负责提供车辆合格证及发票,因国家政策调整等原因致使无法办理落实手续
的后果由乙方承担。
七、乙方交纳订金后在10日内不提车的,视为乙方单方放弃购车,甲方有权将车辆另
行处置,订金不退。如果甲方同意乙方继续履行合同的,有权要求乙方每日按合同总价
款的千分之一承担违约金。
乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不
再履行。
八、本合同发生争议协商解决,协商不成向甲方所在地人民法院起诉解决。
九、本合同双方签字或盖章之时生效。
甲方: 乙方:
地址:
年 月 日 年 月 日

1961
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车).ftl

File diff suppressed because it is too large

46
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车)(空).doc

@ -0,0 +1,46 @@
新车买卖合同(现车)
合同编号:
甲方(出卖方) :
乙方(买受方): 联系电话 身份证号码:
乙方从甲方以全款方式购买现车,现将双方权利和义务约定如下:
1. 标的车辆基本信息
|车型:${modelName}。 |
|上装:${topName}。 |
|挂车:${trailerName}。 |
|主车 |
|${mainVehicleNum}台,单台成交价:${mainVehicleSinglePrice}元。车架|
|号:${VINNo}。 |
|挂车 ${trailerNum}台,单台成交价:${trailerSinglePrice}元。 |
|优惠说明:${discountDetail}。 |
|保险说明:${insuranceDetail}。 |
二、车辆含税总价为 元(大写 )。
三、乙方向甲方交纳订金
元(其中乙方在2022年3月29日转入甲方的xxx元中的xx元用于本次订金),乙方提车时
交清全部车款。甲方未收到全款前,车辆所有权归甲方所有。
四、车辆交付地点 ,乙方自提。
五、乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进
行验收,验收无异议的,甲方向乙方交付车钥匙,自此,车辆毁损、灭失的风险以及对
第三人的侵权责任由乙方承担。乙方提车上路时必须办理车辆临牌和保险,未办理临牌
和保险产生的后果全部由乙方承担。
六、甲方负责提供车辆合格证及发票,因国家政策调整等原因致使无法办理落实手续
的后果由乙方承担。
七、乙方交纳订金后在10日内不提车的,视为乙方单方放弃购车,甲方有权将车辆另
行处置,订金不退。如果甲方同意乙方继续履行合同的,有权要求乙方每日按合同总价
款的千分之一承担违约金。
乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不
再履行。
八、本合同发生争议协商解决,协商不成向甲方所在地人民法院起诉解决。
九、本合同双方签字或盖章之时生效。
甲方: 乙方:
地址:
年 月 日 年 月 日

2053
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(现车)(空).ftl

File diff suppressed because it is too large

47
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车).doc

@ -0,0 +1,47 @@
新车买卖合同(订车)
合同编号:${contractNo}
甲方(出卖方) : ${partA}
乙方(买受方): ${partB} 联系电话: ${mobile} 身份证号码:
${IDNumber}
乙方从甲方以全款方式订购车辆,现将双方权利和义务约定如下:
1. 甲方按照乙方要求订购排产的车辆信息如下:
|车型:${modelName}。 |
|配置:${modelConfig}。 |
|上装:${topName}。 |
|挂车:${trailerName}。 |
|主车 |
|${mainVehicleNum}台,单台成交价:${mainVehicleSinglePrice}元。挂车|
|${trailerNum}台,单台成交价:${trailerSinglePrice}元。 |
|优惠说明:${discountDetail}。 |
|保险说明:${insuranceDetail}。 |
二、车辆含税总价为 ${taxSum} 元(大写 ${taxSumUpper} )。
三、乙方向甲方交纳订金 ${deposit}
元(其中乙方在${date}转入甲方的${deposit1}元中的${deposit2}元用于本次订金),
乙方提车时交清全部车款。甲方未收到全款前,车辆所有权归甲方所有。
四、车辆交付地点 ${deliveryPlace} ,乙方自提。
五、乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进
行验收,验收无异议的,甲方向乙方交付车钥匙,自此,车辆毁损、灭失的风险以及对
第三人的侵权责任由乙方承担。乙方提车上路时必须办理车辆临牌和保险,未办理临牌
和保险产生的后果全部由乙方承担。
六、甲方负责提供车辆合格证及发票,因国家政策调整等原因致使无法办理落实手续
的后果由乙方承担。
七、甲方通知乙方提车后,乙方在10日内不提车的,视为乙方单方放弃购车,甲方有
权将车辆另行处置,订金不退。如果甲方同意乙方继续履行合同的,有权要求乙方每日
按合同总价款的千分之一承担违约金。
乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不
再履行。
八、本合同发生争议协商解决,协商不成向甲方所在地人民法院起诉解决。
九、本合同双方签字或盖章之时生效。
甲方: 乙方:
地址:
年 月 日 年 月

2210
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车).ftl

File diff suppressed because it is too large

47
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车)(空).doc

@ -0,0 +1,47 @@
新车买卖合同(订车)
合同编号:
甲方(出卖方) :
乙方(买受方): 联系电话: 身份证号码:
乙方从甲方以全款方式订购车辆,现将双方权利和义务约定如下:
1. 甲方按照乙方要求订购排产的车辆信息如下:
|车型:${modelName}。 |
|配置:${modelConfig}。 |
|上装:${topName}。 |
|挂车:${trailerName}。 |
|主车 |
|${mainVehicleNum}台,单台成交价:${mainVehicleSinglePrice}元。挂车|
|${trailerNum}台,单台成交价:${trailerSinglePrice}元。 |
|优惠说明:${discountDetail}。 |
|保险说明:${insuranceDetail}。 |
二、车辆含税总价为 元(大写 )。
三、乙方向甲方交纳订金
元(其中乙方在2022年3月29日转入甲方的xxx元中的xx元用于本次订金),乙方提车时
交清全部车款。甲方未收到全款前,车辆所有权归甲方所有。
四、车辆交付地点 ,乙方自提。
五、乙方或乙方授权的提车人提车时需按照合同约定的车辆信息对车况及随车工具进
行验收,验收无异议的,甲方向乙方交付车钥匙,自此,车辆毁损、灭失的风险以及对
第三人的侵权责任由乙方承担。乙方提车上路时必须办理车辆临牌和保险,未办理临牌
和保险产生的后果全部由乙方承担。
六、甲方负责提供车辆合格证及发票,因国家政策调整等原因致使无法办理落实手续
的后果由乙方承担。
七、甲方通知乙方提车后,乙方在10日内不提车的,视为乙方单方放弃购车,甲方有
权将车辆另行处置,订金不退。如果甲方同意乙方继续履行合同的,有权要求乙方每日
按合同总价款的千分之一承担违约金。
乙方交纳订金后,因甲方原因导致乙方不能提车的,甲方退还乙方订金,合同终止不
再履行。
八、本合同发生争议协商解决,协商不成向甲方所在地人民法院起诉解决。
九、本合同双方签字或盖章之时生效。
甲方: 乙方:
地址:
年 月 日 年 月

1532
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/新车买卖合同(订车)(空).ftl

File diff suppressed because it is too large

31
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/车辆登记合同.doc

@ -0,0 +1,31 @@
车 辆 登 记 合 同
甲方: ${partyA}
乙方: ${partyB}
签订时间: ${createDate}
乙方自愿将其购买的车辆登记在甲方名下。为维护各方当事人合法权益,甲乙双方
经协商一致订立本合同,共同遵守执行。
一、车辆出售方 ${partyA}
二、车辆信息
| |品牌 |车架号 |发动机号 |
|${item_index+1} |${item.brandName} |${item.VINNo} |${item.engineNo} |
三、车辆登记
乙方同意将车辆发票开至甲方名下,同意将车辆登记在甲方名下。
四、权利义务
甲方不是车辆所有权人。甲方有义务协助乙方办理车辆购置附加税、登记、营运、抵
押、事故处理、保险理赔等手续。甲方不得用车辆进行债务担保,不得转让、变卖、出
租车辆。
五、车辆经营
甲方不得干涉乙方经营车辆。车辆由乙方自主经营,自负盈亏。
甲方: 乙方:

1302
anrui-buscenter/anrui-buscenter-biz/src/main/resources/template/车辆登记合同.ftl

File diff suppressed because it is too large

88
anrui-buscenter/anrui-buscenter-ui/src/api/chexingchaxun/modelinquire.js

@ -0,0 +1,88 @@
import request from '@/utils/request'
// 根据条件分页查询数据的列表(车型)
export function modelPageList(data) {
return request({
url: '/base/v1/basevehiclemodel/modelPageList',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 根据条件分页查询数据的列表(车型配置)
export function configPageList(data) {
return request({
url: '/base/v1/basemodelconfig/configPageList',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 数据字典
export function dataDictionary(data) {
return request({
url: '/portal/v1/dictcommons/typeValues',
method: 'get',
params: data
})
}
// 品牌下拉
export function brandDown(data) {
return request({
url: '/base/v1/basevehiclebrand/namesDown',
method: 'get',
params: data
})
}
// 车型配置详细信息
export function selectExiCarConfig(data) {
return request({
url: '/base/v1/basevehicle/selectExiCarConfig/' + data.modelSid + '/' + data.configSid + '/' + data.userSid,
method: 'get'
})
}
// 现车车辆的分页列表
export function selExistingCarPageList(data) {
return request({
url: '/base/v1/basevehicle/selExistingCarPageList',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 排产订单的分页列表
export function selectPage(data) {
return request({
url: '/base/v1/busvehicleorder/selectPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 更多配置(非本公司旗下车型,配置)
export function notTheCompanyModelPageList(data) {
return request({
url: '/base/v1/basevehiclemodel/notTheCompanyModelPageList',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 现车车辆详情
export function getPurchaseDetails(data) {
return request({
url: '/base/v1/basevehicle/getPurchaseDetails/' + data,
method: 'get'
})
}

20
anrui-buscenter/anrui-buscenter-ui/src/router/index.js

@ -450,6 +450,26 @@ export const constantRoutes = [{
}
]
},
// 车型查询
{
path: '/chexingchaxun',
component: Layout,
redirect: '/chexingchaxun',
meta: {
title: '车型查询'
},
children: [
{
path: '/chexingchaxun/modelinquire',
component: () =>
import('@/views/chexingchaxun/modelinquire/modellibrary.vue'),
name: 'chexingchaxun',
meta: {
title: '车型库'
}
}
]
},
// 流程所需页面路径
// 订金收取审批、发起人详情页面

399
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/modellibrary.vue

@ -0,0 +1,399 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>车型库</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="webcon">
<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-row>
<el-form-item label="品牌:" class="searchlist">
<el-select v-model="listQuery.params.carBrand" placeholder="请选择" filterable clearable>
<el-option v-for="item in carBrand_list" :key="item.sid" :label="item.brandName" :value="item.brandName"/>
</el-select>
</el-form-item>
<el-form-item label="功能:" class="searchlist">
<el-select v-model="listQuery.params.vehicleType" placeholder="请选择" filterable clearable>
<el-option v-for="item in vehicleType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="系列:" class="searchlist">
<el-select v-model="listQuery.params.productLine" placeholder="请选择" filterable clearable>
<el-option v-for="item in productLine_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="驱动:" class="searchlist">
<el-select v-model="listQuery.params.driveForm" placeholder="请选择" filterable clearable>
<el-option v-for="item in driveForm_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="马力:" class="searchlist">
<el-select v-model="listQuery.params.power" placeholder="请选择" filterable clearable>
<el-option v-for="item in power_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="版本:" class="searchlist">
<el-select v-model="listQuery.params.vehicleVersion" placeholder="请选择" filterable clearable>
<el-option v-for="item in vehicleVersion_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="燃料:" class="searchlist">
<el-select v-model="listQuery.params.fuelType" placeholder="请选择" filterable clearable>
<el-option v-for="item in fuelType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="车型编码:" class="searchlist">
<el-input v-model="listQuery.params.applyName" placeholder="" clearable style="width: 150px"/>
</el-form-item>
<el-form-item label="变速箱:" class="searchlist">
<el-select v-model="listQuery.params.gearboxType" placeholder="请选择" filterable clearable>
<el-option v-for="item in gearboxType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="排放标准:" class="searchlist">
<el-select v-model="listQuery.params.emissionStandard" placeholder="请选择" filterable clearable>
<el-option v-for="item in emissionStandard_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="发动机型号:" class="searchlist">
<el-select v-model="listQuery.params.engineType" placeholder="请选择" filterable clearable>
<el-option v-for="item in engineType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="细分市场:" class="searchlist">
<el-select v-model="listQuery.params.marketSegments" placeholder="请选择" filterable clearable>
<el-option v-for="item in marketSegments_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="规格型号:" class="searchlist">
<el-input v-model="listQuery.params.specifications" placeholder="" clearable style="width: 150px"/>
</el-form-item>
<el-form-item label="快捷检索:" class="searchlist">
<el-input v-model="listQuery.params.modelName" placeholder="" clearable style="width: 150px"/>
</el-form-item>
</el-row>
<div class="searchbtns">
<el-button type="primary" @click="handleFilter">查询</el-button>
<el-button type="primary" @click="handReset">重置</el-button>
</div>
</el-form>
</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%">
<el-table-column width="80px" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="车型" align="center">
<template slot-scope="scope">
<span class="bluezi" @click="handlink(scope.row)">{{ scope.row.vehicleAlias }}</span>
</template>
</el-table-column>
<el-table-column label="版本" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vehicleVersionValue }}</span>
</template>
</el-table-column>
<el-table-column label="燃料" align="center">
<template slot-scope="scope">
<span>{{ scope.row.fuelTypeValue }}</span>
</template>
</el-table-column>
<el-table-column label="变速箱" align="center">
<template slot-scope="scope">
<span>{{ scope.row.gearboxTypeValue }}</span>
</template>
</el-table-column>
<el-table-column label="销售指导价(万元)" align="center">
<template slot-scope="scope">
<span>{{ scope.row.guidedPrice }}</span>
</template>
</el-table-column>
<el-table-column label="现车" align="center">
<template slot-scope="scope">
<span>{{ scope.row.nowCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="排产" align="center">
<template slot-scope="scope">
<span>{{ scope.row.productionCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handlook(scope.row)">查看</el-button>
</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>
<el-dialog :visible.sync="dialogVisible" width="50%">
<el-table :key="tableKey" :data="datalist" border style="width: 100%">
<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.company }}</span>
</template>
</el-table-column>
<el-table-column label="现车" align="center">
<template slot-scope="scope">
<span>{{ scope.row.nowCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="排产车" align="center">
<template slot-scope="scope">
<span>{{ scope.row.productionCarNum }}</span>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 车型配置分页列表 -->
<configuration v-show="viewState == 2" ref="divConfiguration" @doback="resetState"/>
</div>
</template>
<script>
import { modelPageList, dataDictionary, brandDown, notTheCompanyModelPageList } from '@/api/chexingchaxun/modelinquire.js'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import configuration from './vehiclelibraryconfiguration.vue'
export default {
name: 'chexingchaxun',
components: {
Pagination,
pageye,
configuration
},
data() {
return {
isSearchShow: false,
dialogVisible: false,
searchxianshitit: '隐藏查询条件',
viewState: 1,
tableKey: 0,
list: [],
datalist: [],
carBrand_list: [],
vehicleType_list: [],
productLine_list: [],
driveForm_list: [],
power_list: [],
vehicleVersion_list: [],
fuelType_list: [],
gearboxType_list: [],
emissionStandard_list: [],
engineType_list: [],
marketSegments_list: [],
listLoading: false,
dialogQuery: {
current: 1,
size: 10,
params: {
modelSid: '',
modelConfigSid: '',
userSid: window.sessionStorage.getItem('userSid') //
}
},
listQuery: {
current: 1,
size: 10,
params: {
carBrand: '', //
driveForm: '', //
fuelType: '', //
gearboxType: '', //
modelName: '', //
power: '', //
productLine: '', //
useOrg: '', //
userSid: window.sessionStorage.getItem('userSid'), //
vehicleType: '', //
vehicleVersion: '', //
emissionStandard: '', //
engineType: '', //
marketSegments: '', //
specifications: '' //
},
total: 0
}
}
},
created() {
//
this.init()
this.Dictionary()
//
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
init() {
this.getList()
},
// ------------------
//
Dictionary() {
brandDown().then((res) => {
if (res.code === '200') {
this.carBrand_list = res.data
}
})
dataDictionary({ type: 'vehicleFunction' }).then((res) => {
if (res.code === '200') {
this.vehicleType_list = res.data
}
})
dataDictionary({ type: 'productLine' }).then((res) => {
if (res.code === '200') {
this.productLine_list = res.data
}
})
dataDictionary({ type: 'driver' }).then((res) => {
if (res.code === '200') {
this.driveForm_list = res.data
}
})
dataDictionary({ type: 'horsepower' }).then((res) => {
if (res.code === '200') {
this.power_list = res.data
}
})
dataDictionary({ type: 'vehicleVersion' }).then((res) => {
if (res.code === '200') {
this.vehicleVersion_list = res.data
}
})
dataDictionary({ type: 'fuelType' }).then((res) => {
if (res.code === '200') {
this.fuelType_list = res.data
}
})
dataDictionary({ type: 'gearbox' }).then((res) => {
if (res.code === '200') {
this.gearboxType_list = res.data
}
})
dataDictionary({ type: 'emissionStandard' }).then((res) => {
if (res.code === '200') {
this.emissionStandard_list = res.data
}
})
dataDictionary({ type: 'engineType' }).then((res) => {
if (res.code === '200') {
this.engineType_list = res.data
}
})
dataDictionary({ type: 'marketSegments' }).then((res) => {
if (res.code === '200') {
this.marketSegments_list = res.data
}
})
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
modelPageList(this.listQuery).then((response) => {
this.listLoading = false
if (response.code === '200') {
this.listQuery.total = response.data.total
this.list = response.data.records
}
})
},
//
handleFilter() {
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
carBrand: '', //
driveForm: '', //
fuelType: '', //
gearboxType: '', //
modelName: '', //
power: '', //
productLine: '', //
useOrg: '', //
userSid: window.sessionStorage.getItem('userSid'), //
vehicleType: '', //
vehicleVersion: '', //
emissionStandard: '', //
engineType: '', //
marketSegments: '', //
specifications: '' //
},
total: 0
}
this.getList()
},
handlook(row) {
this.dialogVisible = true
this.dialogQuery.params.modelSid = row.sid
notTheCompanyModelPageList(this.dialogQuery).then((res) => {
if (res.code === '200') {
this.datalist = res.data.records
}
})
},
handlink(row) {
this.viewState = 2
this.$refs['divConfiguration'].showData(row)
},
resetState() {
this.viewState = 1
this.handReset()
}
}
}
</script>
<style scoped>
.listtop {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #dfe4ed;
height: 40px;
}
.tit {
margin-bottom: -10px;
}
.pagination {
margin-bottom: -10px;
}
</style>

447
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/modelstandardconfiguration.vue

@ -0,0 +1,447 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>车型配置标准页面</div>
<div>
<el-button type="primary" size="small">意向</el-button>
<el-button type="primary" size="small">核价</el-button>
<el-button type="primary" size="small">价格有效期询价</el-button>
<el-button type="info" size="small" @click="handleReturn">关闭</el-button>
</div>
</div>
<div class="listadd">
<div class="wlInfo">
<div class="topRightCorner">
<span>销售指导价{{ guidedPrice }} 万元</span>
<span style="margin-left: 15px">价格有效期{{ priceValidity }}</span>
</div>
<span>车型配置标准页面</span>
</div>
<el-form ref="dataForm" :model="formobj" label-position="right" class="formadd">
<div class="headtitle"><span>系列{{ formobj.productLineValue }}<span style="margin-left: 20px">驱动{{ formobj.driveFormValue }}<span style="margin-left: 20px">功能{{ formobj.vehicleTypeValue }}<span style="margin-left: 20px">马力{{ formobj.powerValue }}</span></span></span></span></div>
<el-row>
<el-col :span="1">
<el-form-item>
<span>品牌</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="brandName">
<span>{{ formobj.brandName }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>功能</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="vehicleTypeValue">
<span>{{ formobj.vehicleTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>系列</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="productLineValue">
<span>{{ formobj.productLineValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>驱动</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="driveFormValue">
<span>{{ formobj.driveFormValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>马力</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="powerValue">
<span>{{ formobj.powerValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>版本</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="vehicleVersionValue">
<span>{{ formobj.vehicleVersionValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>燃料</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="fuelTypeValue">
<span>{{ formobj.fuelTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item>
<span>变速箱</span>
</el-form-item>
</el-col>
<el-col :span="1" class="tleftb">
<el-form-item prop="gearboxTypeValue">
<span>{{ formobj.gearboxTypeValue }}</span>
</el-form-item>
</el-col>
</el-row>
<div class="headline">车型信息</div>
<el-row>
<el-col :span="2">
<span>细分市场</span>
</el-col>
<el-col :span="3">
<el-form-item prop="marketSegmentsValue">
<span>{{ formobj.marketSegmentsValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>发动机型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="engineTypeValue">
<span>{{ formobj.engineTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>公告型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="announcementModel">
<span>{{ formobj.announcementModel }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>规格型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="specifications">
<span>{{ formobj.specifications }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>货箱</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="packingCase">
<span>{{ formobj.packingCase }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>系别</span>
</el-col>
<el-col :span="3">
<el-form-item prop="department">
<span>{{ formobj.department }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>内部编码</span>
</el-col>
<el-col :span="3">
<el-form-item prop="insideCode">
<span>{{ formobj.insideCode }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="3">
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="3">
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="2">
</el-col>
</el-row>
<div class="headline">常用配置</div>
<el-row>
<el-col :span="2">
<span>颜色</span>
</el-col>
<el-col :span="3">
<el-form-item prop="carColor">
<span>{{ formobj.carColor }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>驾驶室</span>
</el-col>
<el-col :span="3">
<el-form-item prop="specification">
<span>{{ formobj.specification }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>导流罩</span>
</el-col>
<el-col :span="3">
<el-form-item prop="baffleModel">
<span>{{ formobj.baffleModel }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>鞍座</span>
</el-col>
<el-col :span="3">
<el-form-item prop="saddle">
<span>{{ formobj.saddle }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>独立热源</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="independentSources">
<span>{{ formobj.independentSources }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>缓速器</span>
</el-col>
<el-col :span="3">
<el-form-item prop="slowMachine">
<span>{{ formobj.slowMachine }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>后速桥比</span>
</el-col>
<el-col :span="3">
<el-form-item prop="rearAxleRatio">
<span>{{ formobj.rearAxleRatio }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>悬架</span>
</el-col>
<el-col :span="3">
<el-form-item prop="suspension">
<span>{{ formobj.suspension }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>轴距</span>
</el-col>
<el-col :span="3">
<el-form-item prop="wheelbase">
<span>{{ formobj.wheelbase }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>燃料箱</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="fuelTank">
<span>{{ formobj.fuelTank }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>后视镜</span>
</el-col>
<el-col :span="3">
<el-form-item prop="rearViewMirror">
<span>{{ formobj.rearViewMirror }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>空调</span>
</el-col>
<el-col :span="3">
<el-form-item prop="airConditioner">
<span>{{ formobj.airConditioner }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>座椅</span>
</el-col>
<el-col :span="3">
<el-form-item prop="saddle">
<span>{{ formobj.seat }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>保险杠</span>
</el-col>
<el-col :span="3">
<el-form-item prop="bumper">
<span>{{ formobj.bumper }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>多媒体</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="multimedia">
<span>{{ formobj.multimedia }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>轮胎</span>
</el-col>
<el-col :span="3">
<el-form-item prop="tireSize">
<span>{{ formobj.tireSize }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>轮毂材质</span>
</el-col>
<el-col :span="3">
<el-form-item prop="hubMaterial">
<span>{{ formobj.hubMaterial }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>护轮罩</span>
</el-col>
<el-col :span="3">
<el-form-item prop="tireCover">
<span>{{ formobj.tireCover }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>配置包</span>
</el-col>
<el-col :span="3">
<el-form-item prop="configuringBao">
<span>{{ formobj.configuringBao }}</span>
</el-form-item>
</el-col>
<el-col :span="2"/>
<el-col :span="2"/>
</el-row>
<div class="headline">更多配置</div>
<el-row>
<el-col :span="24">
<el-form-item prop="otherConfig">
<span style="display: block; text-indent: 2em">{{ formobj.otherConfig }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import { selectExiCarConfig } from '@/api/chexingchaxun/modelinquire.js'
export default {
name: 'chexingpeizhibiaozhun',
data() {
return {
FormLoading: false,
guidedPrice: '',
priceValidity: '',
formobj: {},
sid_list: {
modelSid: '',
configSid: '',
userSid: window.sessionStorage.getItem('userSid')
}
}
},
methods: {
init() {
this.tempDate.sid = this.$route.query.sid
},
// ------------------------------------------------------
//
handleReturn() {
this.$emit('doback')
},
//
showInfo(sid, row) {
this.FormLoading = true
this.sid_list.modelSid = sid
this.sid_list.configSid = row.sid
this.guidedPrice = row.guidedPrice
this.priceValidity = row.priceValidity
selectExiCarConfig(this.sid_list).then((response) => {
this.FormLoading = false
if (response.code === '200') {
this.formobj = response.data
} else {
this.$notify({
title: '失败',
message: '查询失败',
type: 'error'
})
}
})
}
}
}
</script>
<style scoped>
/deep/ .el-col-2 {
text-align: right;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
}
.wlInfo {
padding: 60px 0;
font-size: 24px;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
}
.formadd {
padding: 0px !important;
}
.tleftb{
text-align: left;
}
.headline{
height: 40px;
padding: 10px;
font-weight: bold;
font-size: 20px;
background-color: #0294d7;
text-align: left;
color: #ffffff;
}
.headtitle{
height: 40px;
padding: 10px;
font-weight: bold;
font-size: 18px;
background-color: #ffffff;
border-bottom: 1px solid #dfe4ed;
text-align: left;
}
.topRightCorner{
position:absolute; top:90px; right:30px;
margin-top: -30px;
font-size: 16px;
}
</style>

265
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/productionschedulingorder.vue

@ -0,0 +1,265 @@
<template>
<div class="app-container">
<div>
<div class="tab-header webtop">
<div>排产订单列表</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="webcon">
<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-row>
<el-form-item label="状态:" class="searchlist">
<el-select v-model="listQuery.params.orderStatus" placeholder="请选择" filterable clearable>
<el-option v-for="item in vehicleState_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="订单日期:" class="searchlist">
<el-date-picker value-format="yyyy-MM-dd" v-model="listQuery.params.orderStartDate" clearable style="width: 160px" type="date" placeholder="开始日期"/>
<div class="line"></div>
<el-date-picker value-format="yyyy-MM-dd" v-model="listQuery.params.orderEndDate" clearable style="width: 160px" type="date" placeholder="结束日期"/>
</el-form-item>
</el-row>
<div class="searchbtns">
<el-button type="primary" @click="handleFilter">查询</el-button>
<el-button type="primary" @click="handReset">重置</el-button>
</div>
</el-form>
</div>
</div>
<div>
<el-form ref="listQueryform" :inline="true" :model="basiclist" label-width="100px" class="formadd">
<el-row>
<el-col :span="4" class="trightb" style="border-top: 1px solid #e0e3eb">
<el-form-item>
<span>车型</span>
</el-form-item>
</el-col>
<el-col :span="20" style="border-top: 1px solid #e0e3eb">
<el-form-item>
<span>{{ basiclist.modelName }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="trightb">
<el-form-item>
<span>常用配置</span>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item>
<span>{{ basiclist.configName }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="trightb">
<el-form-item>
<span>销售指导价</span>
</el-form-item>
</el-col>
<el-col :span="20">
<el-form-item>
<span>{{ basiclist.guidedPrice }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<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%">
<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.orderStatus }}</span>
</template>
</el-table-column>
<el-table-column label="订单编号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.orderNo }}</span>
</template>
</el-table-column>
<el-table-column label="订单日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.orderDate }}</span>
</template>
</el-table-column>
<el-table-column label="数量" align="center">
<template slot-scope="scope">
<span>{{ scope.row.quantity }}</span>
</template>
</el-table-column>
<el-table-column label="预计上线日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.expectLaunchDate }}</span>
</template>
</el-table-column>
<el-table-column label="上线日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.launchDate }}</span>
</template>
</el-table-column>
<el-table-column label="下线日期" align="center">
<template slot-scope="scope">
<span>{{ scope.row.offlineDate }}</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>
</div>
</template>
<script>
import { selectPage, dataDictionary } from '@/api/chexingchaxun/modelinquire.js'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
export default {
name: 'paichandingdan',
components: {
Pagination,
pageye
},
data() {
return {
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
tableKey: 0,
list: [],
vehicleState_list: [],
listLoading: false,
basiclist: {
modelName: '',
configName: '',
guidedPrice: ''
},
modelSid: '',
modelConfigSid: '',
listQuery: {
current: 1,
size: 10,
params: {
orderStatus: '',
orderStartDate: '',
orderEndDate: '',
modelSid: '',
modelConfigSid: '',
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
}
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
// ------------------
//
Dictionary() {
dataDictionary({ type: 'vehicleState' }).then((res) => {
if (res.code === '200') {
this.vehicleState_list = res.data
}
})
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
showInfo(sid, name, row) {
this.modelSid = sid
this.modelConfigSid = row.sid
this.basiclist.modelName = name
this.basiclist.configName = row.configName
this.basiclist.guidedPrice = row.guidedPrice
this.listQuery.params.modelSid = sid
this.listQuery.params.modelConfigSid = row.sid
this.Dictionary()
this.getList()
},
//
getList() {
this.listLoading = true
selectPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.code === '200') {
this.listQuery.total = response.data.total
this.list = response.data.records
}
})
},
//
handleFilter() {
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
orderStatus: '',
orderStartDate: '',
orderEndDate: '',
modelSid: this.modelSid,
modelConfigSid: this.modelConfigSid,
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
this.getList()
},
handleReturn() {
this.$emit('doback')
}
}
}
</script>
<style scoped>
.listtop {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #dfe4ed;
height: 40px;
}
.formadd{
padding: 0px !important;
}
.tit {
margin-bottom: -10px;
}
.trightb{
text-align: right;
}
.pagination {
margin-bottom: -10px;
}
.line {
display: inline-block;
margin: 0px 15px;
}
</style>

225
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclecar.vue

@ -0,0 +1,225 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>现车车辆列表</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="webcon">
<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-row>
<el-form-item label="状态:" class="searchlist">
<el-select v-model="listQuery.params.vehicleState" placeholder="请选择" filterable clearable>
<el-option v-for="item in vehicleState_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="车架号:" class="searchlist">
<el-input v-model="listQuery.params.vinNo" placeholder="" clearable style="width: 150px"/>
</el-form-item>
<el-form-item label="颜色:" class="searchlist">
<el-select v-model="listQuery.params.carColor" placeholder="请选择" filterable clearable>
<el-option v-for="item in carColor_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="存放地点:" class="searchlist">
<el-input v-model="listQuery.params.location" placeholder="" clearable style="width: 150px"/>
</el-form-item>
</el-row>
<div class="searchbtns">
<el-button type="primary" @click="handleFilter">查询</el-button>
<el-button type="primary" @click="handReset">重置</el-button>
</div>
</el-form>
</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%">
<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.vehicleStateValue }}</span>
</template>
</el-table-column>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span class="bluezi" @click="handlink(scope.row.vinNo)">{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="颜色" align="center">
<template slot-scope="scope">
<span>{{ scope.row.carColor }}</span>
</template>
</el-table-column>
<el-table-column label="合格证" align="center">
<template slot-scope="scope">
<span>{{ scope.row.certificate }}</span>
</template>
</el-table-column>
<el-table-column label="存放地点" align="center">
<template slot-scope="scope">
<span>{{ scope.row.location }}</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>
<vehiclecarInfo v-show="viewState == 2" ref="divInfo" @doback="resetState"/>
</div>
</template>
<script>
import { selExistingCarPageList, dataDictionary } from '@/api/chexingchaxun/modelinquire.js'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import vehiclecarInfo from './vehiclecarInfo.vue'
export default {
name: 'xianchecheliang',
components: {
Pagination,
pageye,
vehiclecarInfo
},
data() {
return {
isSearchShow: false,
searchxianshitit: '隐藏查询条件',
viewState: 1,
tableKey: 0,
list: [],
carColor_list: [],
vehicleState_list: [],
listLoading: false,
modelSid: '',
modelConfigSid: '',
listQuery: {
current: 1,
size: 10,
params: {
vehicleState: '',
vinNo: '',
carColor: '',
location: '',
modelSid: '',
modelConfigSid: '',
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
}
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
// ------------------
//
Dictionary() {
dataDictionary({ type: 'bodyColor' }).then((res) => {
if (res.code === '200') {
this.carColor_list = res.data
}
})
dataDictionary({ type: 'vehicleState' }).then((res) => {
if (res.code === '200') {
this.vehicleState_list = res.data
}
})
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
showInfo(sid, row) {
this.modelSid = sid
this.modelConfigSid = row.sid
this.listQuery.params.modelSid = sid
this.listQuery.params.modelConfigSid = row.sid
this.Dictionary()
this.getList()
},
//
getList() {
this.listLoading = true
selExistingCarPageList(this.listQuery).then((response) => {
this.listLoading = false
if (response.code === '200') {
this.listQuery.total = response.data.total
this.list = response.data.records
}
})
},
//
handleFilter() {
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
vehicleState: '',
vinNo: '',
carColor: '',
location: '',
modelSid: this.modelSid,
modelConfigSid: this.modelConfigSid,
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
this.getList()
},
handlink(row) {
this.viewState = 2
this.$refs['divInfo'].showInfo(this.modelSid, this.modelConfigSid, row)
},
handleReturn() {
this.$emit('doback')
},
resetState() {
this.viewState = 1
this.handReset()
}
}
}
</script>
<style scoped>
.listtop {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #dfe4ed;
height: 40px;
}
.tit {
margin-bottom: -10px;
}
.pagination {
margin-bottom: -10px;
}
</style>

541
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclecarInfo.vue

@ -0,0 +1,541 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<div>现车车辆详情</div>
<div>
<el-button type="info" size="small" @click="handleReturn">关闭</el-button>
</div>
</div>
<div class="listadd">
<div class="wlInfo">
<span>{{ brandName }} 车辆详情</span>
</div>
<div class="headcarousel">
<el-carousel :interval="1000" type="card" v-if="imageslist.length > 0">
<el-carousel-item v-for="(item, index) in imageslist" :key="index">
<img style="width: 100%; height: 100%" :src="item"/>
</el-carousel-item>
</el-carousel>
</div>
<el-form ref="dataForm" :model="formtemp" label-position="right" class="formadd">
<el-row>
<el-col :span="4" class="trightb">
<el-form-item>
<span>车架号</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span>{{ formtemp.vinNo }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>状态</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formtemp.vehicleStateValue }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="trightb">
<el-form-item>
<span>车辆标签</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formtemp.vehicleLabel }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>促销政策</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item>
<span>{{ formtemp.promotionPolicy }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4" class="trightb">
<el-form-item>
<span>存放地点</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formtemp.location }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>入库日期</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formtemp.priceDate }}</span>
</el-form-item>
</el-col>
<el-col :span="4" class="trightb">
<el-form-item>
<span>销售指导价</span>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item>
<span>{{ formtemp.guidedPrice }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<el-form ref="dataForm" :model="formobj" label-position="right" class="formadd">
<div class="headtitle"><span>系列{{ formobj.productLineValue }}<span style="margin-left: 20px">驱动{{ formobj.driveFormValue }}<span style="margin-left: 20px">功能{{ formobj.vehicleTypeValue }}<span style="margin-left: 20px">马力{{ formobj.powerValue }}</span></span></span></span></div>
<el-row>
<el-col :span="1">
<el-form-item>
<span>品牌</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="brandName">
<span>{{ formobj.brandName }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>功能</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="vehicleTypeValue">
<span>{{ formobj.vehicleTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>系列</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="productLineValue">
<span>{{ formobj.productLineValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>驱动</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="driveFormValue">
<span>{{ formobj.driveFormValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>马力</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="powerValue">
<span>{{ formobj.powerValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>版本</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="vehicleVersionValue">
<span>{{ formobj.vehicleVersionValue }}</span>
</el-form-item>
</el-col>
<el-col :span="1">
<el-form-item>
<span>燃料</span>
</el-form-item>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="fuelTypeValue">
<span>{{ formobj.fuelTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<el-form-item>
<span>变速箱</span>
</el-form-item>
</el-col>
<el-col :span="1" class="tleftb">
<el-form-item prop="gearboxTypeValue">
<span>{{ formobj.gearboxTypeValue }}</span>
</el-form-item>
</el-col>
</el-row>
<div class="headline">车型信息</div>
<el-row>
<el-col :span="2">
<span>细分市场</span>
</el-col>
<el-col :span="3">
<el-form-item prop="marketSegmentsValue">
<span>{{ formobj.marketSegmentsValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>发动机型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="engineTypeValue">
<span>{{ formobj.engineTypeValue }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>公告型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="announcementModel">
<span>{{ formobj.announcementModel }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>规格型号</span>
</el-col>
<el-col :span="3">
<el-form-item prop="specifications">
<span>{{ formobj.specifications }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>货箱</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="packingCase">
<span>{{ formobj.packingCase }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>系别</span>
</el-col>
<el-col :span="3">
<el-form-item prop="department">
<span>{{ formobj.department }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>内部编码</span>
</el-col>
<el-col :span="3">
<el-form-item prop="insideCode">
<span>{{ formobj.insideCode }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="3">
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="3">
</el-col>
<el-col :span="2">
</el-col>
<el-col :span="2">
</el-col>
</el-row>
<div class="headline">常用配置</div>
<el-row>
<el-col :span="2">
<span>颜色</span>
</el-col>
<el-col :span="3">
<el-form-item prop="carColor">
<span>{{ formobj.carColor }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>驾驶室</span>
</el-col>
<el-col :span="3">
<el-form-item prop="specification">
<span>{{ formobj.specification }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>导流罩</span>
</el-col>
<el-col :span="3">
<el-form-item prop="baffleModel">
<span>{{ formobj.baffleModel }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>鞍座</span>
</el-col>
<el-col :span="3">
<el-form-item prop="saddle">
<span>{{ formobj.saddle }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>独立热源</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="independentSources">
<span>{{ formobj.independentSources }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>缓速器</span>
</el-col>
<el-col :span="3">
<el-form-item prop="slowMachine">
<span>{{ formobj.slowMachine }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>后速桥比</span>
</el-col>
<el-col :span="3">
<el-form-item prop="rearAxleRatio">
<span>{{ formobj.rearAxleRatio }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>悬架</span>
</el-col>
<el-col :span="3">
<el-form-item prop="suspension">
<span>{{ formobj.suspension }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>轴距</span>
</el-col>
<el-col :span="3">
<el-form-item prop="wheelbase">
<span>{{ formobj.wheelbase }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>燃料箱</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="fuelTank">
<span>{{ formobj.fuelTank }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>后视镜</span>
</el-col>
<el-col :span="3">
<el-form-item prop="rearViewMirror">
<span>{{ formobj.rearViewMirror }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>空调</span>
</el-col>
<el-col :span="3">
<el-form-item prop="airConditioner">
<span>{{ formobj.airConditioner }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>座椅</span>
</el-col>
<el-col :span="3">
<el-form-item prop="saddle">
<span>{{ formobj.seat }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>保险杠</span>
</el-col>
<el-col :span="3">
<el-form-item prop="bumper">
<span>{{ formobj.bumper }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>多媒体</span>
</el-col>
<el-col :span="2" class="tleftb">
<el-form-item prop="multimedia">
<span>{{ formobj.multimedia }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="2">
<span>轮胎</span>
</el-col>
<el-col :span="3">
<el-form-item prop="tireSize">
<span>{{ formobj.tireSize }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>轮毂材质</span>
</el-col>
<el-col :span="3">
<el-form-item prop="hubMaterial">
<span>{{ formobj.hubMaterial }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>护轮罩</span>
</el-col>
<el-col :span="3">
<el-form-item prop="tireCover">
<span>{{ formobj.tireCover }}</span>
</el-form-item>
</el-col>
<el-col :span="2">
<span>配置包</span>
</el-col>
<el-col :span="3">
<el-form-item prop="configuringBao">
<span>{{ formobj.configuringBao }}</span>
</el-form-item>
</el-col>
<el-col :span="2"/>
<el-col :span="2"/>
</el-row>
<div class="headline">更多配置</div>
<el-row>
<el-col :span="24">
<el-form-item prop="otherConfig">
<span style="display: block; text-indent: 2em">{{ formobj.otherConfig }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import { selectExiCarConfig, getPurchaseDetails } from '@/api/chexingchaxun/modelinquire.js'
export default {
name: 'xianchecheliangInfo',
data() {
return {
FormLoading: false,
formobj: {},
formtemp: {},
brandName: '',
imageslist: [],
sid_list: {
modelSid: '',
configSid: '',
userSid: window.sessionStorage.getItem('userSid')
}
}
},
methods: {
init() {
this.tempDate.sid = this.$route.query.sid
},
// ------------------------------------------------------
//
handleReturn() {
this.$emit('doback')
},
//
showInfo(modelSid, modelConfigSid, row) {
this.FormLoading = true
this.sid_list.modelSid = modelSid
this.sid_list.configSid = modelConfigSid
selectExiCarConfig(this.sid_list).then((response) => {
this.FormLoading = false
if (response.code === '200') {
this.formobj = response.data
this.brandName = response.data.brandName
} else {
this.$notify({
title: '失败',
message: '查询失败',
type: 'error'
})
}
})
getPurchaseDetails(row).then((resp) => {
if (resp.code === '200') {
this.formtemp = resp.data
this.imageslist = resp.data.vehicleImages
} else {
this.$notify({
title: '失败',
message: '查询失败',
type: 'error'
})
}
})
}
}
}
</script>
<style scoped>
/deep/ .el-col-2 {
text-align: right;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
}
.wlInfo {
padding: 60px 0;
font-size: 24px;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
}
.formadd {
padding: 0px !important;
}
.tleftb{
text-align: left;
}
.trightb{
text-align: right;
}
.headline{
height: 40px;
padding: 10px;
font-weight: bold;
font-size: 20px;
background-color: #0294d7;
text-align: left;
color: #ffffff;
}
.headtitle{
height: 40px;
padding: 10px;
font-weight: bold;
font-size: 18px;
background-color: #ffffff;
border-bottom: 1px solid #dfe4ed;
text-align: left;
}
.headcarousel{
border-bottom: 1px solid #e0e3eb;
}
.listadd{
margin-bottom: 20px;
}
</style>

511
anrui-buscenter/anrui-buscenter-ui/src/views/chexingchaxun/modelinquire/vehiclelibraryconfiguration.vue

@ -0,0 +1,511 @@
<template>
<div class="app-container">
<div v-show="viewState == 1">
<div class="tab-header webtop">
<div>车型库配置列表</div>
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="webcon">
<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-row>
<el-form-item label="颜色:" class="searchlist">
<el-select v-model="listQuery.params.carColor" placeholder="请选择" filterable clearable>
<el-option v-for="item in carColor_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="缓速器:" class="searchlist">
<el-select v-model="listQuery.params.slowMachine" placeholder="请选择" filterable clearable>
<el-option v-for="item in slowMachine_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="后视镜:" class="searchlist">
<el-select v-model="listQuery.params.rearViewMirrorKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in rearViewMirror_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="轮胎:" class="searchlist">
<el-select v-model="listQuery.params.tireSizeKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in tireSize_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="驾驶室:" class="searchlist">
<el-select v-model="listQuery.params.specification" placeholder="请选择" filterable clearable>
<el-option v-for="item in specification_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="后桥速比:" class="searchlist">
<el-select v-model="listQuery.params.rearAxleRatio" placeholder="请选择" filterable clearable>
<el-option v-for="item in rearAxleRatio_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="空调:" class="searchlist">
<el-select v-model="listQuery.params.airConditionerKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in airConditioner_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="轮毂材质:" class="searchlist">
<el-select v-model="listQuery.params.hubMaterialKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in hubMaterial_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="导流罩:" class="searchlist">
<el-select v-model="listQuery.params.baffleModelKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in baffleModel_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="悬架:" class="searchlist">
<el-select v-model="listQuery.params.suspensionKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in suspension_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="座椅:" class="searchlist">
<el-select v-model="listQuery.params.seatKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in seat_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="护轮罩:" class="searchlist">
<el-select v-model="listQuery.params.tireCoverKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in tireCover_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="鞍座:" class="searchlist">
<el-select v-model="listQuery.params.saddleKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in saddle_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="轴距:" class="searchlist">
<el-select v-model="listQuery.params.wheelbaseKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in wheelbase_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="保险杠:" class="searchlist">
<el-select v-model="listQuery.params.bumperKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in bumper_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="配置包:" class="searchlist">
<el-select v-model="listQuery.params.configuringBaoKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in configuringBao_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="独立热源:" class="searchlist">
<el-select v-model="listQuery.params.independentSourcesKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in independentSources_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="燃料箱:" class="searchlist">
<el-select v-model="listQuery.params.fuelTank" placeholder="请选择" filterable clearable>
<el-option v-for="item in fuelTank_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="多媒体:" class="searchlist">
<el-select v-model="listQuery.params.multimediaKey" placeholder="请选择" filterable clearable>
<el-option v-for="item in multimedia_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
<el-form-item label="快捷检索:" class="searchlist">
<el-input v-model="listQuery.params.configName" placeholder="" clearable style="width: 150px"/>
</el-form-item>
</el-row>
<div class="searchbtns">
<el-button type="primary" @click="handleFilter">查询</el-button>
<el-button type="primary" @click="handReset">重置</el-button>
</div>
</el-form>
</div>
</div>
<div class="listtop">
<div class="tit">{{ modelName }}车型常用配置列表</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%">
<el-table-column width="80px" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="常用配置" align="center">
<template slot-scope="scope">
<span class="bluezi" @click="handlink(scope.row)">{{ scope.row.configName }}</span>
</template>
</el-table-column>
<el-table-column label="颜色" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.carColor }}</span>
</template>
</el-table-column>
<el-table-column label="现车(台)" align="center" width="150">
<template slot-scope="scope">
<span class="bluezi" @click="handvehicle(scope.row)">{{ scope.row.nowCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="排产(台)" align="center" width="150">
<template slot-scope="scope">
<span class="bluezi" @click="handproduction(scope.row)">{{ scope.row.productionCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="销售指导价(万元)" align="center" width="150">
<template slot-scope="scope">
<span>{{ scope.row.guidedPrice }}</span>
</template>
</el-table-column>
<el-table-column label="价格有效期" align="center" width="110">
<template slot-scope="scope">
<span>{{ scope.row.priceValidity }}</span>
</template>
</el-table-column>
<el-table-column label="其他更多" align="center" width="100">
<template slot-scope="scope">
<el-button type="primary" size="small" @click="handlook(scope.row)">查看</el-button>
</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>
<el-dialog :visible.sync="dialogVisible" width="50%">
<el-table :key="tableKey" :data="datalist" border style="width: 100%">
<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.company }}</span>
</template>
</el-table-column>
<el-table-column label="现车" align="center">
<template slot-scope="scope">
<span>{{ scope.row.nowCarNum }}</span>
</template>
</el-table-column>
<el-table-column label="排产车" align="center">
<template slot-scope="scope">
<span>{{ scope.row.productionCarNum }}</span>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 车型配置标准页面 -->
<modelstandardconfiguration v-show="viewState == 2" ref="divInfo" @doback="resetState"/>
<!-- 现车车辆列表 -->
<vehiclecar v-show="viewState == 3" ref="divVehiclecar" @doback="resetState"/>
<!-- 排产订单列表 -->
<productionschedulingorder v-show="viewState == 4" ref="divProduction" @doback="resetState"/>
</div>
</template>
<script>
import { configPageList, dataDictionary, notTheCompanyModelPageList } from '@/api/chexingchaxun/modelinquire.js'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import modelstandardconfiguration from './modelstandardconfiguration'
import vehiclecar from './vehiclecar.vue'
import productionschedulingorder from './productionschedulingorder.vue'
export default {
name: 'chexingchaxun',
components: {
Pagination,
pageye,
modelstandardconfiguration,
vehiclecar,
productionschedulingorder
},
data() {
return {
isSearchShow: false,
dialogVisible: false,
searchxianshitit: '隐藏查询条件',
viewState: 1,
tableKey: 0,
list: [],
datalist: [],
carColor_list: [],
slowMachine_list: [],
rearViewMirror_list: [],
tireSize_list: [],
specification_list: [],
rearAxleRatio_list: [],
airConditioner_list: [],
hubMaterial_list: [],
baffleModel_list: [],
suspension_list: [],
seat_list: [],
tireCover_list: [],
saddle_list: [],
wheelbase_list: [],
bumper_list: [],
configuringBao_list: [],
independentSources_list: [],
fuelTank_list: [],
multimedia_list: [],
listLoading: false,
modelName: '', //
modelSid: '',
dialogQuery: {
current: 1,
size: 10,
params: {
modelSid: '',
modelConfigSid: '',
userSid: window.sessionStorage.getItem('userSid') //
}
},
listQuery: {
current: 1,
size: 10,
params: {
carColor: '', //
configName: '', //
fuelTank: '', //
rearAxleRatio: '', //
modelSid: '', // sid
slowMachine: '', //
specification: '', //
rearViewMirrorKey: '', //
tireSizeKey: '', //
airConditionerKey: '', //
hubMaterialKey: '', //
baffleModelKey: '', //
suspensionKey: '', //
seatKey: '', //
tireCoverKey: '', //
saddleKey: '', //
wheelbaseKey: '', //
bumperKey: '', //
configuringBaoKey: '', //
independentSourcesKey: '', //
multimediaKey: '', //
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
}
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
// ------------------
Dictionary() {
dataDictionary({ type: 'bodyColor' }).then((res) => {
if (res.code === '200') {
this.carColor_list = res.data
}
})
dataDictionary({ type: 'slowMachine' }).then((res) => {
if (res.code === '200') {
this.slowMachine_list = res.data
}
})
dataDictionary({ type: 'rearViewMirror' }).then((res) => {
if (res.code === '200') {
this.rearViewMirror_list = res.data
}
})
dataDictionary({ type: 'tireSize' }).then((res) => {
if (res.code === '200') {
this.tireSize_list = res.data
}
})
dataDictionary({ type: 'specification' }).then((res) => {
if (res.code === '200') {
this.specification_list = res.data
}
})
dataDictionary({ type: 'rearAxleRatio' }).then((res) => {
if (res.code === '200') {
this.rearAxleRatio_list = res.data
}
})
dataDictionary({ type: 'whether' }).then((res) => {
if (res.code === '200') {
this.airConditioner_list = res.data
}
})
dataDictionary({ type: 'hubMaterial' }).then((res) => {
if (res.code === '200') {
this.hubMaterial_list = res.data
}
})
dataDictionary({ type: 'whether' }).then((res) => {
if (res.code === '200') {
this.baffleModel_list = res.data
}
})
dataDictionary({ type: 'suspension' }).then((res) => {
if (res.code === '200') {
this.suspension_list = res.data
}
})
dataDictionary({ type: 'seat' }).then((res) => {
if (res.code === '200') {
this.seat_list = res.data
}
})
dataDictionary({ type: 'whether' }).then((res) => {
if (res.code === '200') {
this.tireCover_list = res.data
}
})
dataDictionary({ type: 'saddle' }).then((res) => {
if (res.code === '200') {
this.saddle_list = res.data
}
})
dataDictionary({ type: 'wheelbase' }).then((res) => {
if (res.code === '200') {
this.wheelbase_list = res.data
}
})
dataDictionary({ type: 'bumper' }).then((res) => {
if (res.code === '200') {
this.bumper_list = res.data
}
})
dataDictionary({ type: 'configuringBao' }).then((res) => {
if (res.code === '200') {
this.configuringBao_list = res.data
}
})
dataDictionary({ type: 'whether' }).then((res) => {
if (res.code === '200') {
this.independentSources_list = res.data
}
})
dataDictionary({ type: 'fuelType' }).then((res) => {
if (res.code === '200') {
this.fuelTank_list = res.data
}
})
dataDictionary({ type: 'whether' }).then((res) => {
if (res.code === '200') {
this.multimedia_list = res.data
}
})
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
showData(row) {
this.listQuery.params.modelSid = row.sid
this.modelSid = row.sid
this.modelName = row.vehicleAlias
this.Dictionary()
this.getList()
},
//
getList() {
this.listLoading = true
configPageList(this.listQuery).then((response) => {
this.listLoading = false
if (response.code === '200') {
this.listQuery.total = response.data.total
this.list = response.data.records
}
})
},
//
handleFilter() {
this.getList()
},
handReset() {
this.listQuery = {
current: 1,
size: 10,
params: {
carColor: '', //
configName: '', //
fuelTank: '', //
rearAxleRatio: '', //
slowMachine: '', //
specification: '', //
rearViewMirrorKey: '', //
tireSizeKey: '', //
airConditionerKey: '', //
hubMaterialKey: '', //
baffleModelKey: '', //
suspensionKey: '', //
seatKey: '', //
tireCoverKey: '', //
saddleKey: '', //
wheelbaseKey: '', //
bumperKey: '', //
configuringBaoKey: '', //
independentSourcesKey: '', //
multimediaKey: '', //
modelSid: this.modelSid,
userSid: window.sessionStorage.getItem('userSid')
},
total: 0
}
this.getList()
},
handlook(row) {
this.dialogVisible = true
this.dialogQuery.params.modelSid = this.listQuery.params.modelSid
this.dialogQuery.params.modelConfigSid = row.sid
notTheCompanyModelPageList(this.dialogQuery).then((res) => {
if (res.code === '200') {
this.datalist = res.data.records
}
})
},
handlink(row) {
this.viewState = 2
this.$refs['divInfo'].showInfo(this.listQuery.params.modelSid, row)
},
handvehicle(row) {
this.viewState = 3
this.$refs['divVehiclecar'].showInfo(this.listQuery.params.modelSid, row)
},
handproduction(row) {
this.viewState = 4
this.$refs['divProduction'].showInfo(this.listQuery.params.modelSid, this.modelName, row)
},
handleReturn() {
this.$emit('doback')
},
resetState() {
this.viewState = 1
this.handReset()
}
}
}
</script>
<style scoped>
.listtop {
display: flex;
justify-content: space-between;
align-items: center;
border: 1px solid #dfe4ed;
height: 40px;
}
.tit {
margin-bottom: -10px;
}
.pagination {
margin-bottom: -10px;
}
</style>

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

@ -26,6 +26,9 @@ public class AppCrmCustomerTempMaintainStateVo implements Vo {
@ApiModelProperty("车辆需求:0、未完善1、已完善")
private int vehicleDemandState;
@ApiModelProperty("客户档案:0、未完善1、已完善")
private int customerArchivesState;
@ApiModelProperty("维系提醒:0、不开启1、已开启")
private int isOnRemind;

4
anrui-crm/anrui-crm-api/src/main/java/com/yxt/anrui/crm/api/crmvehicledemand/AppCrmVehicledemandVo.java

@ -26,10 +26,10 @@ public class AppCrmVehicledemandVo implements Vo {
private String createTime;
@ApiModelProperty("销售指导价")
private String guidancePrice;
private String vehicleModelOffer;
@ApiModelProperty("购车方式value")
private String purchaseType;
private String purchaseMethod;
}

9
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.java

@ -68,6 +68,15 @@ public interface CrmCustomerFileMapper extends BaseMapper<CrmCustomerFile> {
List<AppCustomerArchivesDataVo> selectByCustomerSid(@Param("customerSid") String customerSid);
/**
* 手机端维护客户信息是否完善的状态
* 查询客户档案状态
*
* @param customerSid
* @return
*/
List<CrmCustomerFileVo> selectByCustomerSidState(@Param("customerSid") String customerSid);
List<CrmFile> selArchivesFileImageBySid(@Param("sid") String sid);
// 查询数据库是否存在该类型

6
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileMapper.xml

@ -43,4 +43,10 @@
where ccf.linkSid = #{sid}
</select>
<select id="selectByCustomerSidState" resultType="com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileVo">
SELECT *
FROM crm_customer_file ccf
WHERE ccf.linkSid = #{customerSid}
</select>
</mapper>

11
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmcustomerfile/CrmCustomerFileService.java

@ -282,5 +282,14 @@ public class CrmCustomerFileService extends MybatisBaseService<CrmCustomerFileMa
return rb.success();
}
/**
* 手机端维护客户信息是否完善的状态
* 查询客户档案状态
*
* @param sid
* @return
*/
public List<CrmCustomerFileVo> selectByCustomerSidState(String sid) {
return baseMapper.selectByCustomerSidState(sid);
}
}

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

@ -10,12 +10,14 @@ import com.yxt.anrui.base.api.commonappendix.PcCommonAppendixDto;
import com.yxt.anrui.crm.api.crmbusiness.AppCrmBusinessInfoVo;
import com.yxt.anrui.crm.api.crmbusiness.CrmBusinessDto;
import com.yxt.anrui.crm.api.crmbusiness.CrmBusinessVo;
import com.yxt.anrui.crm.api.crmcustomerfile.CrmCustomerFileVo;
import com.yxt.anrui.crm.api.crmcustomertemp.*;
import com.yxt.anrui.crm.api.crmfile.CrmFileAttachTypeEnum;
import com.yxt.anrui.crm.api.crmvehicledemand.AppCrmVehicledemandVo;
import com.yxt.anrui.crm.api.crmvisit.AppCrmVisitThumbDetailsVo;
import com.yxt.anrui.crm.api.crmvisit.PcCrmVisitAppendixDto;
import com.yxt.anrui.crm.biz.crmbusiness.CrmBusinessService;
import com.yxt.anrui.crm.biz.crmcustomerfile.CrmCustomerFileService;
import com.yxt.anrui.crm.biz.crmfile.CrmFileService;
import com.yxt.anrui.crm.biz.crmvehicledemand.CrmVehicledemandService;
import com.yxt.anrui.crm.biz.crmvisit.CrmVisitService;
@ -69,6 +71,9 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
@Autowired
private CrmVehicledemandService crmVehicledemandService;
@Autowired
CrmCustomerFileService crmCustomerFileService;
@Autowired
private DictCommonFeign dictCommonFeign;
@ -304,6 +309,13 @@ public class CrmCustomerTempService extends MybatisBaseService<CrmCustomerTempMa
} else {
vo.setOperationSituationState(1);
}
// 客户档案
List<CrmCustomerFileVo> crmCustomerFileVos = crmCustomerFileService.selectByCustomerSidState(sid);
if (crmCustomerFileVos.size() <= 0) {
vo.setOperationSituationState(0);
} else {
vo.setOperationSituationState(1);
}
//意向车型
List<AppCrmVehicledemandVo> appCrmVehicledemandVos = crmVehicledemandService.selectCustomerSid(sid);
if (appCrmVehicledemandVos.size() > 0) {

2
anrui-crm/anrui-crm-biz/src/main/java/com/yxt/anrui/crm/biz/crmvehicledemand/CrmVehicledemandMapper.xml

@ -28,7 +28,7 @@
cvcd.comonConfigSid,
cvcd.vehicleModelOffer,
cvcd.createTime,
cvcd.purchaseMethodValue
cvcd.purchaseMethodValue AS purchaseMethod
FROM crm_customer_temp cct
LEFT JOIN crm_vehicledemand cvcd ON cct.sid = cvcd.customerSid
WHERE cct.sid = #{sid}

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

@ -9,13 +9,14 @@ public enum ProcDefEnum {
ORDERDEPOSITVEHICLEAPPROVE("虚拟订单(预订车辆)审批", "order_deposit_vehicle_approve_bsf3sgwd:1:230016"),
ORDERAPPROVE("订单审批", "order_approve_96asleqi:1:227504"),
CARSALECONTRACTAPPROVE("新车买卖合同审批", "car_sale_contract_asbspcvd:1:230020"),
SALESPOLICY("销售政策审批流程","sales_policy_oxeeyzhr:1:247508"),
INVOICEAPPLY("开票申请流程","invoice_apply_ul4vx0oi:1:247512"),
ADVANCEGINVOICEAPPLY("提前开票申请流程","advance_ginvoiceapply:1:242664"),
ARREARSCARRYVEHICLE("欠款提车审批流程","arrears_carryvehicle:1:232589"),
VEHICLEAPPLY("排产申请流程","process_9egcg169:1:242660"),
RECORDAPPLICATION("入账申请","record_application_7y80d4r8:1:265008"),
SALESPOLICY("销售政策审批流程", "sales_policy_oxeeyzhr:1:247508"),
INVOICEAPPLY("开票申请流程", "invoice_apply_ul4vx0oi:1:247512"),
ADVANCEGINVOICEAPPLY("提前开票申请流程", "advance_ginvoiceapply:1:242664"),
ARREARSCARRYVEHICLE("欠款提车审批流程", "arrears_carryvehicle:1:232589"),
VEHICLEAPPLY("排产申请流程", "process_9egcg169:1:242660"),
RECORDAPPLICATION("入账申请", "record_application_7y80d4r8:1:265008"),
SCMVEHICLERETURN("采购退库", "process_md8aeoap:4:245028"),
BASEVEHICLEACTUALSALES("未售买断", ""),//ToDo
;
ProcDefEnum(String proDefName, String proDefId) {

4
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/listener/ManagerTaskListener.java

@ -85,7 +85,7 @@ public class ManagerTaskListener implements TaskListener {
// String obj2String = JSONObject.toJSONString(obj);
log.info("准备发送消息为:{}", obj2String);
//发送消息
ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send("aaa", obj2String);
/* ListenableFuture<SendResult<String, Object>> future = kafkaTemplate.send("aaa", obj2String);
future.addCallback(new ListenableFutureCallback<SendResult<String, Object>>() {
@Override
public void onFailure(Throwable throwable) {
@ -98,7 +98,7 @@ public class ManagerTaskListener implements TaskListener {
//成功的处理
log.info("aaa" + " - 生产者 发送消息成功:" + stringObjectSendResult.toString());
}
});
});*/
}

34
anrui-scm/anrui-scm-ui/src/api/cheliang/basemodelconfig.js

@ -1,7 +1,7 @@
import request from '@/utils/request'
import qs from 'qs'
// 车型关联表条件查询 已改
// 车型与常用配置关联表条件查询 已改
export function pagerList(data) {
return request({
url: '/base/basevehmodelconfig/listPage', data,
@ -10,6 +10,15 @@ export function pagerList(data) {
})
}
// 常用配置
export function getList(data) {
return request({
url: '/base/v1/basemodelconfig/pagerList', data,
method: 'post',
headers: { 'Content-Type': 'application/json' }
})
}
// PC-车型与常用配置建立关联关系 已改
export function setRel(data) {
return request({
@ -25,12 +34,31 @@ export function deleteRel(params) {
url: '/base/basevehmodelconfig/checkRelieve',
method: 'DELETE',
params: {
modelSid:params.modelSid,
configurationItemsSid:params.configurationItemsSid
modelSid: params.modelSid,
configurationItemsSid: params.configurationItemsSid
}
})
}
// 价格维护修改回显 已改
export function fetchBySid(data) {
return request({
url: '/base/basevehmodelconfig/fetchBySid/' + data,
method: 'get',
params: data
})
}
// 价格维护编辑保存
export function update(data) {
return request({
url: '/base/basevehmodelconfig/update',
method: 'post',
data: data,
headers: { 'Content-Type': 'application/json' }
})
}
//添加
export function SaveList(data) {
return request({

11
anrui-scm/anrui-scm-ui/src/api/cheliang/basevehiclemodel.js

@ -27,7 +27,7 @@ export function deleteBySids(params) {
url: '/base/v1/basevehiclemodel/deleteBySids',
method: 'DELETE',
params: {
sids:params
sids: params
}
})
}
@ -41,6 +41,15 @@ export function details(data) {
})
}
//编辑回显 已改
export function getAll(data) {
return request({
url: '/base/v1/basevehiclemodel/getAll/' + data,
method: 'get',
params: data
})
}
//车型列表导出
export function basefinbankExportExcel(data) {
return request({

2
anrui-scm/anrui-scm-ui/src/api/portal/Upload.js

@ -19,7 +19,7 @@ export const uploadFile = '/api/portal/file/upload'
// 移除图片
export function deleteFilesOss(data) {
return request({
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss',data,
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss', // data,
method: 'post',
data: qs.stringify(data),
// headers: { 'Content-Type': 'multipart/form-data' }

27
anrui-scm/anrui-scm-ui/src/api/portal/Upload_chexing.js

@ -0,0 +1,27 @@
import request from '@/utils/request'
import qs from 'qs'
// 统一请求路径前缀
const base = process.env.VUE_APP_URL
// 文件上传接口
export const uploadFile = '/api/base/v1/basevehiclemodel/pictureUpload'
// 上传图片
// export function imageUpload(data) {
// return request({
// url: '/portal/file/upload',
// method: 'post',
// data,
// headers: { 'Content-Type': 'multipart/form-data' }
// })
// }
// 移除图片
export function deleteFilesOss(data) {
return request({
url: '/base/v1/baseVehicleAppendixs/deleteFilesOss', // data,
method: 'post',
data: qs.stringify(data),
// headers: { 'Content-Type': 'multipart/form-data' }
})
}

10
anrui-scm/anrui-scm-ui/src/components/uploadFile/upload.vue

@ -102,11 +102,11 @@
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
if (this.stateName = 'xunidingjinAdd') {
if (this.files.length > 1) {
this.files.splice(0, 1)
}
}
// if (this.stateName = 'xunidingjinAdd') {
// if (this.files.length > 1) {
// this.files.splice(0, 1)
// }
// }
console.log('aaaa2', this.files)
}
}

10
anrui-scm/anrui-scm-ui/src/components/uploadFile/uploadImg.vue

@ -93,11 +93,11 @@
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
if (this.stateName = 'xunidingjinAdd') {
if (this.files.length > 1) {
this.files.splice(0, 1)
}
}
// if (this.stateName = 'xunidingjinAdd') {
// if (this.files.length > 1) {
// this.files.splice(0, 1)
// }
// }
console.log('aaaa2', this.files)
}
}

242
anrui-scm/anrui-scm-ui/src/components/uploadFile/upload_chexing.vue

@ -0,0 +1,242 @@
<template>
<div><!---->
<el-upload class="upload-demo" :headers="accessToken" :action="uploadFile" :accept="accept" :data="uploadData"
:on-success="uploadImgSuccess_FuJian" :on-remove="handleRemove" :file-list="fileList_FuJian"
:on-preview="handlePictureCardPreview" :show-file-list="false">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</div>
</template>
<script>
import { uploadFile } from '@/api/portal/Upload_chexing.js'
import { getStorage } from '@/utils/auth.js' //token
import {
SaveList
} from '@/api/cheliang/basevehiclemodel'
import { mapGetters } from 'vuex'
export default {
model: {
prop: 'name',
event: 'change'
},
props: {
placeholder: {
type: String,
default: ''
},
bucket: {
type: String,
default: 'abc'
},
//
width: {
type: String,
default: '270px'
},
limit: {
type: Number,
default: 1
},
accept: {
type: String,
default:
'.jpg,.jpeg,.png,.bmp,.pdf,.JPG,.JPEG,.BMP,.PDF,.xls,.docx,.xlsx,.ppt,.pptx'
},
//
name: {
type: Array,
required: true
},
uploadData: {
type: Object,
default: {}
}
},
data() {
return {
dialogImageUrl: '',
dialogVisible: false,
accessToken: null,
uploadFile: uploadFile,
fileList_FuJian: [],
enclosure: '',
file_add: '',
file_catch: '',
files: [],
files_list: [],
filedUrl: '',
// fileUrl: fileUrl,
// showpicture:false,
isview: false,
nameArr: '',
loadding: false,
stateName: '',
/* uploadData: { modelSid: '' },*/
sid: ''
}
},
computed: {
...mapGetters([
'id',
'departmentCode',
'departmentLevel',
'departmentType',
'token'
])
},
watch: {
name: {
deep: true,
immediate: true,
handler(newVal, oldVal) {
console.log('aaaa1', newVal)
this.files = newVal
console.log('aaaa2', this.files)
}
}
},
mounted() {
this.$nextTick(() => {
this.Init()
})
},
created() {
this.uploadFile = uploadFile //
this.accessToken = {
token: getStorage()
}
},
methods: {
view() {
// window.open(this.filedUrl)
},
showImg(sid) {
// this.uploadData.sid = sid
},
//
Init() {
if (this.name !== undefined) {
this.files = []
for (var i = 0; i < this.name.length; i++) {
this.files.push({
name: this.name[i],
url: this.name[i]
})
}
}
},
// --
uploadImgSuccess_FuJian(response, file, fileList) {
let _this = this
console.log('您选择的file:', file)
// console.log('data:', _this.uploadData)
if (file.response.code === '200') {
this.loadding = false
//
this.filedUrl = this.fileUrl + file.response.data
// var uid = file.response.data
this.files.push({
name: file.response.data.sourceFileName,
url: file.response.data.fullUrl,
size: file.response.data.size
})
this.$emit('change', this.files)
this.$emit('eett', this.files)
// this.getUrl()
// SaveList(this.tempInfo).then(response => {
// if (response.success) {
// }
// })
}
},
removeImage(file, ImageFileList) {
this.files.splice(this.files.indexOf(file), 1)
const imgFiles = []
this.files.forEach((o) => {
imgFiles.push(o.url)
})
this.$emit('fileChange', this.files)
},
handleRemove(file, fileList) {
console.log('file:' + JSON.stringify(file))
console.log('fileList:' + JSON.stringify(fileList))
this.enclosure = ''
// 1. id(this.file_add)
this.getNewFileId(fileList)
// 2. id(this.file_catch)
this.getCatchFileId(file)
// 3. id
this.getFileId()
// 4. id
this.$emit('change', this.enclosure)
},
// this.file_add(id)
getNewFileId(fileList) {
// debugger
this.file_add = ''
for (var i = 0; i < fileList.length; i++) {
if (fileList[i].response && fileList[i].response.code === '200') {
this.file_add = this.file_add + fileList[i].response.data + ','
}
}
if (this.file_add !== '') {
this.file_add = this.file_add.substring(0, this.file_add.length - 1)
}
// console.log('1. this.file_add: ' + this.file_add)
},
// this.file_catchid
getCatchFileId(file) {
for (var i = 0; i < this.files_list.length; i++) {
if (this.file_catch !== '') {
// 1. id
if (this.files_list[i].name === file.name) {
// 2. file_catchfils_arry
var fils_arry = this.file_catch.split(',')
// 3. fils_arry this.files_list[i].id
var arry = []
fils_arry.forEach((element) => {
//
if (element !== this.files_list[i].id) {
arry.push(element)
}
})
// 4. file_catch
this.file_catch = arry.join(',')
}
}
}
// console.log('2. this.file_catch:' + this.file_catch)
},
// id
getFileId() {
// console.log('3. this.file_catch:' + this.file_catch + ',this.file_add:' + this.file_add)
if (this.file_catch !== '') {
if (this.file_add !== '') {
this.enclosure = this.file_catch + ',' + this.file_add
} else {
this.enclosure = this.file_catch
}
} else {
this.enclosure = this.file_add
}
},
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url
},
//
uploadError() {
this.loadding = false
},
uploadProgrees(event, file, fileList) {
if (Number(event.percent) > 0) {
this.loadding = true
}
}
}
}
</script>
<style lang="scss" scoped></style>

1
anrui-scm/anrui-scm-ui/src/main.js

@ -77,6 +77,7 @@ function getUserInfo(){
window.sessionStorage.setItem('departmentSid',user.departmentSid);
})
}
getUserInfo();
function GetQueryString(name) {
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)')

18
anrui-scm/anrui-scm-ui/src/styles/el-form.scss

@ -7,7 +7,7 @@
.listconadd .title {
text-align: center;
font-size: 28px;
line-height: 90px;
//line-height: 90px;
}
.listaddtop {
@ -23,12 +23,11 @@
}
}
.listconadd .demo-ruleForm {
padding: 22px 28px;
}
.el-collapse-item__header{
.el-collapse-item__header {
.el-icon-arrow-right:before {
content: "";
font-size: 20px;
@ -60,8 +59,15 @@
}
}
.tleftb, .trightb {
border-top: 1px solid #e0e3eb !important;
.tleftb {
text-align: right;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
}
.icon {
color: #e84026;
margin-right: 4px;
}

108
anrui-scm/anrui-scm-ui/src/styles/index.scss

@ -69,11 +69,11 @@ div:focus {
}
// main-container global css
.container{
min-height: 100%;
min-height: 100%;
height: 100%;
background-color: #FFFFFF;
box-sizing: border-box;
padding: 10px 0;
background-color: #FFFFFF;
box-sizing: border-box;
padding: 10px 0;
}
.fl{
@ -149,68 +149,68 @@ div:focus {
// .listeltable{overflow-y: auto;height: calc(100vh - 420px);}
.formadd {
padding: 20px 0;
padding: 20px 0;
// height: calc(100vh - 200px);overflow-y: auto;
.title {
padding: 10px;font-weight: bold;
.title {
padding: 10px;font-weight: bold;
font-size: 20px;
background-color: $header-bg;
text-align: center;
color: #ffffff;
}
}
.el-row {
display:flex;
flex-wrap: wrap;
border-left: 1px solid $table-border-color;
.el-col{
border-right: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
padding: 5px 15px 5px 15px !important;
min-height: 50px;
line-height: 1;
.el-form-item{
margin-bottom: 0;
// .addinputw{width: 400px;}
.addinputw{width: 80%;}
}
display:flex;
flex-wrap: wrap;
border-left: 1px solid $table-border-color;
.el-col{
border-right: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
padding: 5px 15px 5px 15px !important;
min-height: 50px;
line-height: 1;
.el-form-item{
margin-bottom: 0;
// .addinputw{width: 400px;}
.addinputw{width: 80%;}
}
}
}
.footer{margin: 20px;}
}
.footer{margin: 20px;}
}
.forminfo {
padding: 20px 0;
.title {
padding: 10px;font-weight: bold;
padding: 20px 0;
.title {
padding: 10px;font-weight: bold;
font-size: 20px;
background-color: $header-bg;
text-align: center;
color: #ffffff;
}
}
.el-row {
display:flex;
flex-wrap: wrap;
border-left: 1px solid $table-border-color;
.trightb{ text-align: right;font-weight: bold;color: #606266; }
.tleft{ text-align: left; }
.el-col{
border-right: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
padding: 0px 15px 0px 15px !important;
min-height: 50px;
line-height: 50px;
font-size: 14px;
}
display:flex;
flex-wrap: wrap;
border-left: 1px solid $table-border-color;
.trightb{ text-align: right;font-weight: bold;color: #606266; }
.tleft{ text-align: left; }
.el-col{
border-right: 1px solid $table-border-color;
border-bottom: 1px solid $table-border-color;
padding: 0 15px 0 15px !important;
min-height: 50px;
line-height: 50px;
font-size: 14px;
}
}
.footer{margin: 20px;}
}
.footer{margin: 20px;}
}
.el-form-item__error {
z-index: 100;
z-index: 100;
}
.bluezi{color: $header-bg; cursor: pointer}
// 经销商添加样式
@ -218,30 +218,30 @@ div:focus {
display: flex;flex-direction: row;justify-content: space-around; background-color: #0294d7;flex: 3;
}
.titcon .title{
padding: 10px;font-weight: bold;
font-size: 20px;
text-align: center;
color: #ffffff;
padding: 10px;font-weight: bold;
font-size: 20px;
text-align: center;
color: #ffffff;
}
.titcon .baocun{text-align: right;flex: 2;padding: 5px 20px;}
.addinputwda{width: 600px;}
.searchcon{margin: 0px 0 10px 0;}
.searchcon .searchbtn{margin: 10px 0;}
.searchcon .searchbtn{margin: 10px 0;border: #2cab69 1px solid;color: #2cab69;}
// 弹出窗口按钮
.btnCancel{
background: #e84026 !important;outline: none;border: none;color: #fff !important;
background: #e84026 !important;outline: none;border: none;color: #fff !important;
}
.btnCancel:hover{
background: #ed6651 !important;
background: #ed6651 !important;
}
.btnFalses{
background: #2cab69 !important;outline: none;border: none;
background: #2cab69 !important;outline: none;border: none;
}
.btnFalses:hover{
background: #3dc47e !important;
background: #3dc47e !important;
}
.btntopblueline{background-color: #066bc9 !important;}
.btntopblueline:hover{background-color: #34a1db !important;}

34
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexing.vue

@ -51,19 +51,6 @@
<el-option v-for="item in productLine_list" :key="item.dictKey" :label="item.dictValue"
:value="item.dictKey"/>
</el-select>
<!-- <el-select-->
<!-- v-model="listQuery.params.vehicleFunctionKey"-->
<!-- placeholder="请选择"-->
<!-- clearable-->
<!-- class="addinputw"-->
<!-- >-->
<!-- <el-option-->
<!-- v-for="item in vehicleFunction_list"-->
<!-- :key="item.dictKey"-->
<!-- :label="item.dictValue"-->
<!-- :value="item.dictKey"-->
<!-- />-->
<!-- </el-select>-->
</el-form-item>
<el-form-item label="驱动">
<el-select
@ -232,19 +219,21 @@
</el-table-column>
<el-table-column label="发动机型号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.engineType }}</span>
<span>{{ scope.row.engineTypeValue }}</span>
</template>
</el-table-column>
<el-table-column label="车型编码" align="center">
<template slot-scope="scope">
<span>{{ scope.row.otherConfig }}</span>
<span>{{ scope.row.vehicleTypeCode }}</span>
</template>
</el-table-column>
<el-table-column label="车型照片" align="center" width="280px" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="handleGetCheck(scope.row)">查看</el-button>
<div class="upload_img">
<upload ref="uploadImg" v-model="imgList" :limit="1" bucket="map" :upload-data="{type:'0001'}"></upload>
<upload ref="uploadMoreImg" v-model="imgList" :limit="1"
bucket="map"
:upload-data="{type:'0001',modelSid: scope.row.sid}"></upload>
</div>
</template>
</el-table-column>
@ -291,7 +280,8 @@
deleteBySids,
basefinbankExportExcel,
brandDown,
pullDown
pullDown,
getAll
} from '@/api/cheliang/basevehiclemodel'
import { setMIng, getMIng, getCHeap, setCHeap } from '@/utils/baocun'
import Pagination from '@/components/pagination'
@ -299,7 +289,7 @@
import chexingAdd from './chexingAdd'
import chexinglook from './chexinglook'
import chexingpeizhi from './relation/chexingguanlianchangyong'
import upload from '../../../components/uploadFile/upload'
import upload from '../../../components/uploadFile/upload_chexing'
export default {
name: 'Pinpaiguanli',
@ -604,13 +594,17 @@
console.log('图片列表', row.vehicleModelUrls)
this.srcList = row.vehicleModelUrls
},
handleUpload() {
handleUpload(row) {
const sid = row.sid
// this.$refs.uploadMoreImg.uploadData.modelSid = 123456
// this.$refs['uploadMoreImg'].showImg(sid)
},
//
handleCheck(row) {
this.viewState = 4
const sid = row.sid
console.log('详情sid', sid)
this.$refs['divinfo'].showInfo(sid, row)
},
// ID

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

@ -195,7 +195,7 @@
} from 'vuex'
import {
SaveList,
details,
getAll,
getOrg,
selectByOrgSid,
namesDownBySid,
@ -210,29 +210,7 @@
name: 'PinpaiAdd',
components: { Upload },
data() {
// var validCascader = (rule, value, callback) => {
// if (this.useOrgArry.length == 0) {
// callback(new Error('使'))
// } else {
// callback()
// }
// }
return {
baseVehicleModelAppendixDtos: {
aa: {
modelSid: '', // sid
filePath: '' //
},
bb: {
modelSid: '', // sid
filePath: '' //
},
cc: {
modelSid: '', // sid
filePath: '' //
}
},
viewTitle: '',
// ---------
fieldShow: 0, // 0. 1. 2.
@ -258,7 +236,7 @@
vehicleTypeCode: '', //
carBrand: '', //
// carBrandValue:'',
brandName:'',
brandName: '',
vehicleType: '', // key
vehicleTypeValue: '', // value
modelName: '', //
@ -387,111 +365,90 @@
showEdit(sid, row) {
console.log(sid)
console.log('imgList', this.imgList)
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
})
this.viewTitle = '【修改】车型信息'
this.dialogStatus = 'update'
this.temp.sid = sid
console.log('编辑回显', sid)
details(sid).then(resp => {
getAll(sid).then(resp => {
const data = resp.data
this.temp = data
// this.useOrgArry = data.useOrg
this.temp = JSON.parse(JSON.stringify(this.temp).replace(
/baseVehicleModelAppendixVos/g,
'baseVehicleModelAppendixDtos'
)
)
this.temp.sid = sid
if (this.temp.baseVehicleModelAppendixDtos.length > 0) {
for (var i = 0; i < this.temp.baseVehicleModelAppendixDtos.length; i++) {
var imgName = this.temp.baseVehicleModelAppendixDtos[i].filePath.split('/')
this.imgList.push({
name: imgName[imgName.length - 1],
url: this.temp.baseVehicleModelAppendixDtos[i].filePath
})
}
console.log('123123', this.imgList)
}
})
},
// 使
usrOrgArryChange(e) {
console.log('选中结果:' + JSON.stringify(e))
var result = ''
var result_Sid = ''
if (e.length > 0) {
//
e.forEach((item) => {
var last_id = item[item.length - 1]
// console.log('options'+JSON.stringify(this.options))
//
this.select_temp = '' //
this.select_temp_Sid = ''
this.findOrgId(last_id, this.options)
result = result + this.select_temp + ','
result_Sid = result_Sid + this.select_temp_Sid + ','
//
handleCreate() {
this.$refs['dataForm'].validate(valid => {
if (valid) {
this.FormLoading = true
if (this.dialogStatus === 'add') {
this.getUrl()
SaveList(this.temp).then(response => {
this.FormLoading = false
if (response.code === '200') {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
})
}
if (result !== '') {
result = result.substring(0, result.length - 1)
}
if (result_Sid !== '') {
result_Sid = result_Sid.substring(0, result_Sid.length - 1)
}
this.temp.useOrgName = result
console.log('选中名称:' + this.temp.useOrgName)
},
//
createOrgChange(e) {
console.log('选中结果:' + JSON.stringify(e))
var result = ''
var result_Sid = ''
if (e.length > 0) {
//
e.forEach((item) => {
var last_id = item[item.length - 1]
// console.log('options'+JSON.stringify(this.options))
//
this.select_temp = '' //
this.select_temp_Sid = ''
this.findOrgId(last_id, this.options)
result = result + this.select_temp + ','
result_Sid = result_Sid + this.select_temp_Sid + ','
}
})
} else {
const useOrg_array = this.temp.useOrg[0]
const useOrg_str = useOrg_array[useOrg_array.length - 1]
this.temp.useOrg = useOrg_str
this.updateUrl()
SaveList(this.temp).then(response => {
this.FormLoading = false
if (response.code === '200') {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
})
}
if (result !== '') {
result = result.substring(0, result.length - 1)
}
if (result_Sid !== '') {
result_Sid = result_Sid.substring(0, result_Sid.length - 1)
}
this.temp.useOrgName = result
console.log('选中名称:' + this.temp.useOrgName)
},
// ---
findOrgId(id, options) {
for (var i = 0; i < options.length; i++) {
if (id == options[i].sid) {
this.select_temp = options[i].name //
return true
} else {
//
if (options[i].children !== undefined) {
//
if (this.findOrgId(id, options[i].children)) {
return true
}
}
})
}
}
}
},
//
getZuZhi() {
getOrg().then(res => {
if (res.code === '200') {
this.options = res.data
this.zuzhi0(this.options)
}
})
},
zuzhi0(data) {
data.forEach((e) => {
if (e.children.length != 0) {
this.zuzhi0(e.children)
} else {
delete e.children
this.dataArr.push(e)
return
}
})
getUrl() {
console.log('已有图片', this.imgList)
for (var i = 0; i < this.imgList.length; i++) {
console.log(this.temp)
this.temp.baseVehicleModelAppendixDtos.push({
modelSid: this.temp.sid,
filePath: this.imgList[i].url
})
console.log('保存的图片', this.temp.baseVehicleModelAppendixDtos)
}
},
updateUrl() {
console.log('回显', this.imgList)
for (var i = 0; i < this.imgList.length; i++) {
const img_file = []
img_file.push({
modelSid: this.temp.sid,
filePath: this.imgList[i].url
})
this.temp.baseVehicleModelAppendixDtos = img_file
console.log('保存的图片', this.temp.baseVehicleModelAppendixDtos)
}
},
// ------------------------------------------------------
//
@ -500,7 +457,8 @@
this.temp = {
sid: '', // sid
vehicleTypeCode: '', //
carBrandValue:'',
carBrandValue: '',
brandName: '',
carBrand: '', //
vehicleType: '', // key
vehicleTypeValue: '', // value
@ -673,51 +631,6 @@
state: '' //
}
},
//
handleCreate() {
this.$refs['dataForm'].validate(valid => {
if (valid) {
this.FormLoading = true
if (this.dialogStatus === 'add') {
this.getUrl()
SaveList(this.temp).then(response => {
this.FormLoading = false
if (response.code === '200') {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
}
})
} else {
this.getUrl()
SaveList(this.temp).then(response => {
this.FormLoading = false
if (response.code === '200') {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
}
})
}
}
})
},
getUrl() {
console.log('已有图片', this.imgList)
for (var i = 0; i < this.imgList.length; i++) {
// var namese = this.imgList[i].name
// var nameArr = namese.split('.')
console.log(this.temp)
this.temp.baseVehicleModelAppendixDtos.push({
attachType: '0001',
modelSid: this.temp.sid,
filePath: this.imgList[i].url
})
console.log('保存的图片', this.temp.baseVehicleModelAppendixDtos)
}
},
getChang() {
selectByOrgSid().then(res => {
if (res.code === '200') {
@ -725,36 +638,6 @@
}
})
},
getPinPAi(sid) {
let bb = {}
this.facturer.forEach((e) => {
// eslint-disable-next-line eqeqeq
if (e.sid == sid) {
bb = {
name: e.manufacturerName,
sid: e.sid
}
}
})
const manufacturer = bb.name
switch (manufacturer) {
case '欧曼':
this.fieldShow = 1
break
case '陕西重汽':
this.fieldShow = 2
break
default:
this.fieldShow = 0
}
namesDownBySid({
manufacturerSid: sid
}).then(res => {
if (res.code === '200') {
this.Brand = res.data
}
})
},
getGong(value) {
console.log('触发下拉框按钮', value)
let bb = {}
@ -811,62 +694,7 @@
})
this.temp.marketSegmentsValue = bb.name
},
getCheliang() {
let bb = null
this.cleType.forEach(e => {
if (e.dictKey == value) {
bb = {
type: 'vehicleType',
name: e.dictValue,
vaule: e.dictKey
}
}
})
this.temp.vehicleTypeValue = bb.name
if (this.temp.modelValue != undefined) {
this.temp.modelValue.forEach((e, index) => {
if (e.type == bb.type) {
this.temp.modelValue.splice(index, 1)
}
})
} else {
this.temp.modelValue = []
}
this.temp.modelValue.push(bb)
let ab = ''
this.temp.modelValue.forEach((e, index) => {
ab = ab + e.name
})
this.temp.modelName = ab
},
getChangpin(value) {
let bb = null
// name value
this.ctLine.forEach(e => {
if (e.dictKey == value) {
bb = {
type: 'productLine',
name: e.dictValue,
vaule: e.dictKey
}
}
})
this.temp.productLineValue = bb.name
//
this.temp.modelValue.forEach((e, index) => {
if (e.type == bb.type) {
this.temp.modelValue.splice(index, 1)
}
})
this.temp.modelValue.push(bb)
let ab = ''
//
this.temp.modelValue.forEach((e, index) => {
ab = ab + e.name
})
this.temp.modelName = ab
},
getQudong(value) {
let bb = null
this.eForm.forEach(e => {
@ -1061,6 +889,187 @@
// })
},
// ======== ========
//
getZuZhi() {
getOrg().then(res => {
if (res.code === '200') {
this.options = res.data
this.zuzhi0(this.options)
}
})
},
zuzhi0(data) {
data.forEach((e) => {
if (e.children.length != 0) {
this.zuzhi0(e.children)
} else {
delete e.children
this.dataArr.push(e)
return
}
})
},
// 使
usrOrgArryChange(e) {
console.log('选中结果:' + JSON.stringify(e))
var result = ''
var result_Sid = ''
if (e.length > 0) {
//
e.forEach((item) => {
var last_id = item[item.length - 1]
// console.log('options'+JSON.stringify(this.options))
//
this.select_temp = '' //
this.select_temp_Sid = ''
this.findOrgId(last_id, this.options)
result = result + this.select_temp + ','
result_Sid = result_Sid + this.select_temp_Sid + ','
})
}
if (result !== '') {
result = result.substring(0, result.length - 1)
}
if (result_Sid !== '') {
result_Sid = result_Sid.substring(0, result_Sid.length - 1)
}
this.temp.useOrgName = result
console.log('选中名称:' + this.temp.useOrgName)
},
//
createOrgChange(e) {
console.log('选中结果:' + JSON.stringify(e))
var result = ''
var result_Sid = ''
if (e.length > 0) {
//
e.forEach((item) => {
var last_id = item[item.length - 1]
// console.log('options'+JSON.stringify(this.options))
//
this.select_temp = '' //
this.select_temp_Sid = ''
this.findOrgId(last_id, this.options)
result = result + this.select_temp + ','
result_Sid = result_Sid + this.select_temp_Sid + ','
})
}
if (result !== '') {
result = result.substring(0, result.length - 1)
}
if (result_Sid !== '') {
result_Sid = result_Sid.substring(0, result_Sid.length - 1)
}
this.temp.useOrgName = result
console.log('选中名称:' + this.temp.useOrgName)
},
// ---
findOrgId(id, options) {
for (var i = 0; i < options.length; i++) {
if (id == options[i].sid) {
this.select_temp = options[i].name //
return true
} else {
//
if (options[i].children !== undefined) {
//
if (this.findOrgId(id, options[i].children)) {
return true
}
}
}
}
},
getPinPAi(sid) {
let bb = {}
this.facturer.forEach((e) => {
// eslint-disable-next-line eqeqeq
if (e.sid == sid) {
bb = {
name: e.manufacturerName,
sid: e.sid
}
}
})
const manufacturer = bb.name
switch (manufacturer) {
case '欧曼':
this.fieldShow = 1
break
case '陕西重汽':
this.fieldShow = 2
break
default:
this.fieldShow = 0
}
namesDownBySid({
manufacturerSid: sid
}).then(res => {
if (res.code === '200') {
this.Brand = res.data
}
})
},
getCheliang() {
let bb = null
this.cleType.forEach(e => {
if (e.dictKey == value) {
bb = {
type: 'vehicleType',
name: e.dictValue,
vaule: e.dictKey
}
}
})
this.temp.vehicleTypeValue = bb.name
if (this.temp.modelValue != undefined) {
this.temp.modelValue.forEach((e, index) => {
if (e.type == bb.type) {
this.temp.modelValue.splice(index, 1)
}
})
} else {
this.temp.modelValue = []
}
this.temp.modelValue.push(bb)
let ab = ''
this.temp.modelValue.forEach((e, index) => {
ab = ab + e.name
})
this.temp.modelName = ab
},
getChangpin(value) {
let bb = null
// name value
this.ctLine.forEach(e => {
if (e.dictKey == value) {
bb = {
type: 'productLine',
name: e.dictValue,
vaule: e.dictKey
}
}
})
this.temp.productLineValue = bb.name
//
this.temp.modelValue.forEach((e, index) => {
if (e.type == bb.type) {
this.temp.modelValue.splice(index, 1)
}
})
this.temp.modelValue.push(bb)
let ab = ''
//
this.temp.modelValue.forEach((e, index) => {
ab = ab + e.name
})
this.temp.modelName = ab
},
getXuanJia(value) {
let bb = null
this.pension.forEach(e => {
@ -1145,6 +1154,7 @@
// })
// this.temp.speedRatio = cd
}
}
}

13
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/chexinglook.vue

@ -23,7 +23,7 @@
</el-col>
<el-col :span="8">
<el-form-item prop="otherConfig">
<span>{{temp.otherConfig}}</span>
<span>{{temp.vehicleTypeCode}}</span>
</el-form-item>
</el-col>
</el-row>
@ -33,7 +33,7 @@
</el-col>
<el-col :span="8">
<el-form-item prop="vehicleFunction">
<span>{{temp.vehicleFunction}}</span>
<span>{{temp.vehicleTypeValue}}</span>
</el-form-item>
</el-col>
<el-col :span="4">
@ -41,7 +41,7 @@
</el-col>
<el-col :span="8">
<el-form-item prop="series">
<span>{{temp.series}}</span>
<span>{{temp.productLineValue}}</span>
</el-form-item>
</el-col>
</el-row>
@ -161,7 +161,7 @@
</div>
<template class="tablelist">
<el-table
:data="temp.list"
:data="list"
:index="index"
border
style="width: 100%"
@ -174,7 +174,7 @@
/>
<el-table-column prop="mNum" width="150" label="指导价" align="center">
<template slot-scope="props">
<span>{{props.row.price}}</span>
<span>{{props.row.guidedPrice}}</span>
</template>
</el-table-column>
<el-table-column prop="mName" width="150" label="颜色" align="center">
@ -293,6 +293,7 @@
index: 0,
listLoading: false,
temp: {}, //
list: [],
templook: { titlea: '00000112' }, //
textMap: {
update: '修改',
@ -328,6 +329,7 @@
//
handleReturn() {
this.temp = {}
this.list = []
this.$emit('doback')
},
@ -341,6 +343,7 @@
this.FormLoading = false
if (response.success) {
this.temp = response.data
this.list.push(response.data.baseModelConfigVo)
}
}).catch(() => {

118
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/changyongpeizhi.vue

@ -5,7 +5,7 @@
<div class="tab-header webtop">
<div>常用配置管理</div>
<div>
<el-button type="primary" size="small" @click="handleCreate()">新增</el-button>
<el-button type="primary" size="small" @click="handleCreate()">新增配置</el-button>
<el-button type="primary" size="small" @click="handleConfirm()">确认</el-button>
<el-button type="info" size="small" @click="handleReturn()">返回</el-button>
</div>
@ -431,7 +431,7 @@
<script>
import { mapGetters } from 'vuex'
import { pagerList, deleteBySids, pullDown } from '@/api/cheliang/basemodelconfig'
import { getList, deleteBySids, pullDown, setRel } from '@/api/cheliang/basemodelconfig'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import changyongpeizhiAdd from '../../chexingpeizhi/changyongpeizhiAdd'
@ -519,6 +519,9 @@
update: '编辑',
create: '创建'
},
rel_list: {},
modelSids: [],
configurationItemsSids: [],
sids: [],
names: '', // [ {{names}} ]
chesid: '',
@ -599,8 +602,8 @@
this.names = name
console.log('9639636', this.names)
},
showSetRel(setRelList){
showSetRel(modelSid){
this.rel_list.modelSid = modelSid
},
getType() {
// -
@ -657,13 +660,21 @@
console.log('下拉框请求后桥速比', res.data)
}
})
//
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.airConditioner_list = res.data
console.log('下拉框请求空调', res.data)
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
//
@ -676,14 +687,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.baffleModel_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'suspension'
@ -703,14 +714,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.tireCover_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'saddle'
@ -748,14 +759,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.independentSources_list = res.data
// console.log('', res.data)
// }
// })
// -
pullDown({
type: 'fuelTank'
@ -766,17 +777,18 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.multimedia_list = res.data
// console.log('', res.data)
// }
// })
},
//
handleReturn() {
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.$emit('doback')
},
//
@ -789,17 +801,26 @@
this.pageState = 3
},
handleSelectionChange(row) {
console.log('11row',row)
const aa = []
const bb = []
const cc = []
row.forEach((element) => {
aa.push(element.sid)
bb.push(element.modelSid)
cc.push(element.configurationItemsSid)
})
this.sids = aa
this.modelSids = bb
this.configurationItemsSids = cc
console.log('选择的数据', this.sids)
console.log('选择的数据', this.modelSids)
console.log('选择的数据', this.configurationItemsSids)
},
//
getList() {
this.listLoading = true
pagerList(this.listQuery).then((response) => {
getList(this.listQuery).then((response) => {
this.listLoading = false
if (
response.code === '200' &&
@ -872,8 +893,27 @@
this.pageState = 4
this.$refs['divadd'].showAdd()
},
// this.handleReturn('true')
handleConfirm() {
if (this.sids.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请选择一条记录进行关联' })
return
}
if (this.sids.length > 1) {
this.$message({ showClose: true, type: 'error', message: '只能选择一条记录进行关联' })
return
}
this.rel_list.configurationItemsSid = this.sids[0]
console.log('11111',this.rel_list)
setRel(this.rel_list).then(response => {
this.FormLoading = false
if (response.success) {
this.dialogFormVisible = false
this.handleReturn('true')
} else {
}
})
}
}
}

88
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/chexingguanlianchangyong.vue

@ -691,13 +691,21 @@
console.log('下拉框请求后桥速比', res.data)
}
})
//
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.airConditioner_list = res.data
console.log('下拉框请求空调', res.data)
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
//
@ -710,14 +718,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.baffleModel_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'suspension'
@ -737,14 +745,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.tireCover_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'saddle'
@ -782,14 +790,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.independentSources_list = res.data
// console.log('', res.data)
// }
// })
// -
pullDown({
type: 'fuelTank'
@ -800,24 +808,24 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.multimedia_list = res.data
// console.log('', res.data)
// }
// })
},
//
handleJiage() {
handleJiage(row) {
this.pageState = 2
this.$refs['weihu'].showWeiHu(this.title)
this.$refs['weihu'].showWeiHu(row.sid)
},
//
handleGuanlian() {
this.pageState = 3
// this.$refs['changyongpeizhi'].showSetRel(this.setRelList)
this.$refs['changyongpeizhi'].showSetRel( this.setRelList.modelSid)
},
//
handleDelete() {
@ -833,13 +841,7 @@
console.log('解除关系所需参数', this.checkRelieve_list)
this.checkRelieve_list.configurationItemsSid = this.configurationItemsSid_list[0] //
deleteRel(this.checkRelieve_list).then((response) => {
if (response.code === '200') {
this.$notify({
title: '提示',
message: '删除成功',
type: 'success',
duration: 2000
})
if (response.success) {
this.getList()
}
})

87
anrui-scm/anrui-scm-ui/src/views/cheliang/chexing/relation/chexingpeizhijiageweihuAdd.vue

@ -4,18 +4,14 @@
<div>价格维护</div>
</div>
<div class="listconadd">
<el-form ref="dataForm" :model="temp" label-position="right" class="formadd" :rules="rules">
<el-form ref="weihuForm" :model="temp" label-position="right" class="formadd" :rules="rules">
<el-row class="tleftb_one">
<el-col :span="6" class="tleftb">
<span><span class="icon">*</span>车型名称</span> <!--modelName-->
</el-col>
<el-col :span="18">
<el-form-item prop="modelName">
<el-select v-model="temp.modelName" placeholder="请选择" filterable clearable class="addinputw"
@change="getPinpai()">
<el-option v-for="item in carBrand_list" :key="item.sid" :label="item.brandName"
:value="item.brandName"/>
</el-select>
<el-form-item>
<span>{{temp.modelName}}</span>
</el-form-item>
</el-col>
</el-row>
@ -24,9 +20,8 @@
<span><span class="icon">*</span>常用配置</span>
</el-col>
<el-col :span="18">
<el-form-item prop="brandName">
<el-input v-model="temp.otherConfig" maxlength="125" placeholder="请输入" clearable class="addinputw"
clearable/>
<el-form-item>
<span>{{temp.configName}}</span>
</el-form-item>
</el-col>
</el-row>
@ -36,8 +31,7 @@
</el-col>
<el-col :span="18">
<el-form-item>
<el-input v-model="temp.specifications" type="textarea" maxlength="125" placeholder="请输入"
class="addinputw" clearable/>
<span>{{temp.otherConfig}}</span>
</el-form-item>
</el-col>
</el-row>
@ -46,8 +40,8 @@
<span><span class="icon">*</span>厂家结算价</span>
</el-col>
<el-col :span="6">
<el-form-item prop="carModel">
<el-input v-model="temp.specifications" type="textarea" maxlength="125" placeholder="请输入"
<el-form-item>
<el-input v-model="temp.manufactorSettlementPrice" type="textarea" maxlength="125" placeholder="请输入"
class="addinputw" clearable/>
</el-form-item>
</el-col>
@ -56,7 +50,7 @@
</el-col>
<el-col :span="6">
<el-form-item>
<el-input v-model="temp.specifications" maxlength="125" placeholder="请输入" class="addinputw" clearable/>
<el-input v-model="temp.guidedPrice" maxlength="125" placeholder="请输入" class="addinputw" clearable/>
</el-form-item>
</el-col>
</el-row>
@ -73,12 +67,15 @@
import {
mapGetters
} from 'vuex'
import {
fetchBySid,
update
} from '@/api/cheliang/basemodelconfig'
export default {
name: 'chexingpeizhijiageweihu',
data() {
return {
viewTitle: '',
// ---------
fieldShow: 0, // 0. 1. 2.
// ---------
@ -100,7 +97,9 @@
createOrgArry: [], //
temp: {
sid: '', // sid
modelName: '' // ( 1)
modelName: '', // ( 1)
manufactorSettlementPrice: '', //
guidedPrice: '' //
}, //
templook: {}, //
textMap: {
@ -113,14 +112,6 @@
pdateChe: null,
pdateChang: null,
side: [],
options: [],
useOrg: [],
props: {
value: 'sid',
label: 'name',
children: 'children',
checkStrictly: true
},
dialogFormVisible: false, //
dialogFormShowVisible: false, //
dialogStatus: '', //
@ -135,28 +126,18 @@
},
methods: {
showWeiHu(modelName) {
showWeiHu(sid) {
this.$nextTick(() => {
this.$refs['dataForm'].clearValidate()
this.$refs['weihuForm'].clearValidate()
})
fetchBySid(sid).then(resp => {
if (resp.success) {
const data = resp.data
this.temp = data
this.temp.sid = sid
}
})
this.temp.modelName = modelName
},
// showEdit(sid, row) {
// console.log(sid)
// this.$nextTick(() => {
// this.$refs['dataForm'].clearValidate()
// })
// this.viewTitle = ''
// this.dialogStatus = 'update'
// this.temp.sid = sid
// console.log('', sid)
// details(sid).then(resp => {
// const data = resp.data
// this.temp = data
// this.useOrgArry = data.useOrg
// })
// },
// ------------------------------------------------------
//
handleReturn(isreload) {
@ -170,14 +151,26 @@
resetTemp() {
this.temp = {}
},
//
//
handleCreate() {
this.$refs['dataForm'].validate(valid => {
this.$refs['weihuForm'].validate(valid => {
if (valid) {
const temp = {
sid: this.temp.sid,
manufactorSettlementPrice: this.temp.manufactorSettlementPrice,
guidedPrice: this.temp.guidedPrice
}
update(temp).then(resp => {
if (resp.success) {
const data = resp.data
this.temp = data
this.handleReturn('true')
}
})
}
})
}
}
}
</script>

74
anrui-scm/anrui-scm-ui/src/views/cheliang/chexingpeizhi/changyongpeizhiAdd.vue

@ -674,13 +674,21 @@
console.log('下拉框请求后桥速比', res.data)
}
})
//
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.airConditioner_list = res.data
console.log('下拉框请求空调', res.data)
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
//
@ -693,14 +701,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.baffleModel_list = res.data
console.log('下拉框请求导流罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.baffleModel_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'suspension'
@ -720,14 +728,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.tireCover_list = res.data
console.log('下拉框请求护轮罩', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.tireCover_list = res.data
// console.log('', res.data)
// }
// })
//
pullDown({
type: 'saddle'
@ -765,14 +773,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.independentSources_list = res.data
console.log('下拉框请求护独立热源', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.independentSources_list = res.data
// console.log('', res.data)
// }
// })
// -
pullDown({
type: 'fuelTank'
@ -783,14 +791,14 @@
}
})
//
pullDown({
type: 'whether'
}).then((res) => {
if (res.code === '200') {
this.multimedia_list = res.data
console.log('下拉框请求多媒体', res.data)
}
})
// pullDown({
// type: 'whether'
// }).then((res) => {
// if (res.code === '200') {
// this.multimedia_list = res.data
// console.log('', res.data)
// }
// })
},
changeCarColor(value) {

15
工作内容需要的文档/附件1功能实现说明文档(3).docx

@ -0,0 +1,15 @@
1. 功能目的及意义
开发此功能的初衷或对客户的工作有何意义,说明为什么要开发此功能。
2. 功能描述
功能的总体描述(2、3句话概括说明)
3. 功能分解
功能中包含的子功能详细说明,如添加、修改、删除等实现过程描述,包括页面、sql、controller、service、dao的实现。如果涉及修改以前的代码或页面,应写明需要进行哪些修改。
4. 数据库说明
涉及到的数据表,增加或修改的表名及字段说明。
5. 源文件目录及命名
此功能包含的文件目录、名称说明。

13
工作内容需要的文档/附件2个人测试文档(3).docx

@ -0,0 +1,13 @@
个人测试文档
部门: 姓名: 日期:
1. 接口说明
2. 测试用例说明
按照接口要求说明测试的各种情况。
(1)接口参数格式、为空、超出范围等校验测试
(2)返回结果格式正确性、逻辑正确性测试
3. 测试结果(含测试通过的截图)
Loading…
Cancel
Save