Browse Source

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedService.java
zhanglei
fanzongzhe 2 years ago
parent
commit
a5b697ace2
  1. 4
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicle/BaseVehicleRest.java
  2. 37
      anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutService.java
  3. 13
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java
  4. 45
      anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordersubmit/BusSalesOrderSubmitService.java
  5. 9
      anrui-buscenter/anrui-buscenter-ui/src/api/dictcommons/dictcommons.js
  6. 169
      anrui-buscenter/anrui-buscenter-ui/src/api/jiaochebanli/cardelivery.js
  7. 40
      anrui-buscenter/anrui-buscenter-ui/src/router/index.js
  8. 26
      anrui-buscenter/anrui-buscenter-ui/src/views/chukuguanli/chukubanli/chukushenqing.vue
  9. 381
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationDaiBanInfo.vue
  10. 435
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationEdit.vue
  11. 254
      anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationYiBanInfo.vue
  12. 371
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/cardelivery.vue
  13. 285
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/cartobedelivered.vue
  14. 167
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/confirmdelivery.vue
  15. 433
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/deliveryconfirmation.vue
  16. 201
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/deliveryconfirmationInfo.vue
  17. 156
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue
  18. 301
      anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerdeliveryconfirmation.vue
  19. 4
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finvehicleinvoice/FinVehicleInvoiceFeign.java
  20. 5
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finvehicleinvoice/FinVehicleInvoiceFeignFallback.java
  21. 28
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java
  22. 68
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedService.java
  23. 4
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceMapper.java
  24. 5
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceRest.java
  25. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceService.java
  26. 241
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flow/FlowableRest.java
  27. 51
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowdefinition/FlowDefinitionService.java
  28. 59
      anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java
  29. 26
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfig.java
  30. 26
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigFeign.java
  31. 12
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigFeignFallback.java
  32. 22
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigQuery.java
  33. 17
      anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigVvo.java
  34. 28
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java
  35. 18
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigMapper.java
  36. 7
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigMapper.xml
  37. 29
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigRest.java
  38. 30
      anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigService.java
  39. 4
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java
  40. 5
      anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java
  41. 35
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java
  42. 5
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java
  43. 143
      anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java
  44. 9
      anrui-scm/anrui-scm-ui/src/api/ruzhang/scmapplyinbound.js
  45. 6
      anrui-scm/anrui-scm-ui/src/views/ruzhang/ruzhangguanli/ruzhangAdd.vue
  46. 5
      anrui-scm/anrui-scm-ui/src/views/ruzhang/ruzhangguanli/ruzhangguanli.vue
  47. 25
      doc/databases/portal_tables.sql

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

@ -474,11 +474,11 @@ public class BaseVehicleRest implements BaseVehicleFeign {
scmApplyInboundQueryDto.setMakeListSid(scmApplyInboundVo.getApplicationSid());
scmApplyInboundQueryDto.setMakeListName(scmApplyInboundVo.getApplicationName());
scmApplyInboundQueryDto.setMakeListDate(DateUtil.formatDate(new Date()));
String name = baseVehicleDto.getName();
/* String name = baseVehicleDto.getName();
String[] names = name.split(",");
scmApplyInboundQueryDto.setConfirmSid(names[0]);
scmApplyInboundQueryDto.setConfirmName(names[1]);
scmApplyInboundQueryDto.setConfirmDate(names[2]);
scmApplyInboundQueryDto.setConfirmDate(names[2]);*/
scmApplyInboundQueryDto.setCreateOrgSid(scmApplyInboundVo.getUseOrgSid());
scmApplyInboundQueryDto.setCreateOrgName(scmApplyInboundVo.getUseOrgName());
scmApplyInboundQueryDto.setDownNum("0");

37
anrui-base/anrui-base-biz/src/main/java/com/yxt/anrui/base/biz/basevehicleout/BaseVehicleOutService.java

@ -2014,24 +2014,25 @@ public class BaseVehicleOutService extends MybatisBaseService<BaseVehicleOutMapp
dataMap.put("tPriceDX", tPriceDX);
//获取审批记录
AppDeliveredDetailsVo appDeliveredDetailsVo = busDeliveredApplyFeign.getRetrievalApplyInfoBySid(baseVehicleOutApply.getBusSid()).getData();
if (appDeliveredDetailsVo == null) {
return null;
}
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(appDeliveredDetailsVo.getProcInstId(), "1").getData();
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
String taskDefKey = (String) flowableRecordVo.get("taskDefKey");
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String finishTime = (String) flowableRecordVo.get("finishTime");
finishTime = finishTime.substring(0, 10);
if ("Activity_1x1eivz".equals(taskDefKey)) {
dataMap.put("makeName", assigneeName + finishTime);
} else if ("Activity_13w5v5m".equals(taskDefKey)) {
dataMap.put("jrsp", assigneeName + finishTime);
} else if ("Activity_1xzxtct".equals(taskDefKey) || "Activity_1ohp3br".equals(taskDefKey)) {
dataMap.put("confirmName", assigneeName + finishTime);
if (appDeliveredDetailsVo != null) {
List<PCHistTaskListAndCommentList> flowRecordVo = flowableFeignPro.flowRecordAndComment(appDeliveredDetailsVo.getProcInstId(), "1").getData();
if (flowRecordVo != null){
for (PCHistTaskListAndCommentList flowTask : flowRecordVo) {
if (flowTask.getFlowableRecordVo() != null) {
Map<String, Object> flowableRecordVo = flowTask.getFlowableRecordVo();
String taskDefKey = (String) flowableRecordVo.get("taskDefKey");
List<Map<String, Object>> taskUserInfos = ConstantUtils.getListData(flowableRecordVo, "taskUserInfos");
String assigneeName = (String) taskUserInfos.get(0).get("assigneeName");
String finishTime = (String) flowableRecordVo.get("finishTime");
finishTime = finishTime.substring(0, 10);
if ("Activity_1x1eivz".equals(taskDefKey)) {
dataMap.put("makeName", assigneeName + finishTime);
} else if ("Activity_13w5v5m".equals(taskDefKey)) {
dataMap.put("jrsp", assigneeName + finishTime);
} else if ("Activity_1xzxtct".equals(taskDefKey) || "Activity_1ohp3br".equals(taskDefKey)) {
dataMap.put("confirmName", assigneeName + finishTime);
}
}
}
}
}

13
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/busdeliveredapply/BusDeliveredApplyService.java

@ -87,6 +87,8 @@ import com.yxt.anrui.fin.api.fincompanyinvoicing.FinCompanyInvoicingFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.FinUncollectedReceivablesDetailedFeign;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.ReceiveInvoiceVo;
import com.yxt.anrui.fin.api.finuncollectedreceivablesdetailed.ReceiveSeleteVo;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoice;
import com.yxt.anrui.fin.api.finvehicleinvoice.FinVehicleInvoiceFeign;
import com.yxt.anrui.fin.api.finvehicleinvoice.InvoiceVo;
import com.yxt.anrui.flowable.api.flow.FlowProcessMapQuery;
import com.yxt.anrui.flowable.api.flow.FlowableFeign;
@ -200,6 +202,8 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
private BusHandoverPrepareService busHandoverPrepareService;
@Autowired
private LoanSolutionsFeign loanSolutionsFeign;
@Autowired
private FinVehicleInvoiceFeign finVehicleInvoiceFeign;
/**
* 构造出库申请的查询条件
@ -803,6 +807,15 @@ public class BusDeliveredApplyService extends MybatisBaseService<BusDeliveredApp
log.error("推送数据失败=========================" + e.getMessage());
return rb.setMsg("推送数据失败");
}
//根据车辆sid和合同编码修改开票管理中对应的领票状态为是
List<BusDeliveredApplyDetails> busDeliveredApplyDetails = busDeliveredApplyDetailsService.selectByApplySid(busDeliveredApply.getSid());
for (BusDeliveredApplyDetails busDeliveredApplyDetail : busDeliveredApplyDetails) {
String vinSid = busDeliveredApplyDetail.getVinSid();
FinVehicleInvoice finVehicleInvoice = finVehicleInvoiceFeign.selectByVinAndContractNo(vinSid, busDeliveredApply.getContractNo()).getData();
if (StringUtils.isNotBlank(finVehicleInvoice.getSid())){
finVehicleInvoiceFeign.updateBySid(finVehicleInvoice.getSid());
}
}
} else {
if ("重新提交".equals(bv.getComment())) {
//将待出库中的车辆更改状态为出库申请0

45
anrui-buscenter/anrui-buscenter-biz/src/main/java/com/yxt/anrui/buscenter/biz/bussalesordersubmit/BusSalesOrderSubmitService.java

@ -24,12 +24,34 @@ public class BusSalesOrderSubmitService extends MybatisBaseService<BusSalesOrder
if (busSalesOrderSubmit == null) {
busSalesOrderSubmit = new BusSalesOrderSubmit();
BeanUtil.copyProperties(busSalesOrderSubmitDto, busSalesOrderSubmit, "sid");
if(StringUtils.isBlank(busSalesOrderSubmitDto.getDistributorName())){
if(StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorNameTwo())){
busSalesOrderSubmit.setDistributorName(busSalesOrderSubmitDto.getDistributorNameTwo());
busSalesOrderSubmitDto.setDistributorPrice(busSalesOrderSubmitDto.getDistributorPriceTwo());
busSalesOrderSubmitDto.setDistributorNameTwo("");
busSalesOrderSubmitDto.setDistributorPriceTwo("");
busSalesOrderSubmit.setDistributorNameTwo("");
busSalesOrderSubmit.setDistributorSid(busSalesOrderSubmitDto.getDistributorSidTwo());
busSalesOrderSubmit.setDistributorSidTwo("");
busSalesOrderSubmit.setDistributorMobile(busSalesOrderSubmitDto.getDistributorMobileTwo());
busSalesOrderSubmit.setDistributorMobileTwo("");
busSalesOrderSubmit.setDistributorUnit(busSalesOrderSubmitDto.getDistributorUnitTwo());
busSalesOrderSubmit.setDistributorUnitTwo("");
}
}
BigDecimal priceBig = new BigDecimal("0");
BigDecimal priceAll = new BigDecimal("0");
BigDecimal priceBigTwo = new BigDecimal("0");
BigDecimal priceAllTwo = new BigDecimal("0");
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPrice())) {
priceBig = new BigDecimal(busSalesOrderSubmitDto.getDistributorPrice());
busSalesOrderSubmit.setDistributorPrice(priceBig);
}
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPriceTwo())) {
priceBigTwo = new BigDecimal(busSalesOrderSubmitDto.getDistributorPriceTwo());
busSalesOrderSubmit.setDistributorPriceTwo(priceBigTwo);
}
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPriceAll())) {
priceAll = new BigDecimal(busSalesOrderSubmitDto.getDistributorPriceAll());
@ -39,12 +61,33 @@ public class BusSalesOrderSubmitService extends MybatisBaseService<BusSalesOrder
save(busSalesOrderSubmit);
} else {
BeanUtil.copyProperties(busSalesOrderSubmitDto, busSalesOrderSubmit);
if(StringUtils.isBlank(busSalesOrderSubmitDto.getDistributorName())){
if(StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorNameTwo())){
busSalesOrderSubmit.setDistributorName(busSalesOrderSubmitDto.getDistributorNameTwo());
busSalesOrderSubmitDto.setDistributorPrice(busSalesOrderSubmitDto.getDistributorPriceTwo());
busSalesOrderSubmitDto.setDistributorNameTwo("");
busSalesOrderSubmitDto.setDistributorPriceTwo("");
busSalesOrderSubmit.setDistributorNameTwo("");
busSalesOrderSubmit.setDistributorPriceTwo(BigDecimal.ZERO);
busSalesOrderSubmit.setDistributorSid(busSalesOrderSubmitDto.getDistributorSidTwo());
busSalesOrderSubmit.setDistributorSidTwo("");
busSalesOrderSubmit.setDistributorMobile(busSalesOrderSubmitDto.getDistributorMobileTwo());
busSalesOrderSubmit.setDistributorMobileTwo("");
busSalesOrderSubmit.setDistributorUnit(busSalesOrderSubmitDto.getDistributorUnitTwo());
busSalesOrderSubmit.setDistributorUnitTwo("");
}
}
BigDecimal priceBig = new BigDecimal("0");
BigDecimal priceAll = new BigDecimal("0");
BigDecimal priceBigTwo = new BigDecimal("0");
BigDecimal priceAllTwo = new BigDecimal("0");
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPrice())) {
priceBig = new BigDecimal(busSalesOrderSubmitDto.getDistributorPrice());
busSalesOrderSubmit.setDistributorPrice(priceBig);
}
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPriceTwo())) {
priceBigTwo = new BigDecimal(busSalesOrderSubmitDto.getDistributorPriceTwo());
busSalesOrderSubmit.setDistributorPriceTwo(priceBigTwo);
}
if (StringUtils.isNotBlank(busSalesOrderSubmitDto.getDistributorPriceAll())) {
priceAll = new BigDecimal(busSalesOrderSubmitDto.getDistributorPriceAll());

9
anrui-buscenter/anrui-buscenter-ui/src/api/dictcommons/dictcommons.js

@ -135,3 +135,12 @@ export function getButtonPermissions(data) {
headers: { 'Content-Type': 'application/json' }
})
}
// 根据分公司全路径获取该分公司下的仓库(存放低调点)
export function selectWarehouseByUserSid(data) {
return request({
url: '/scm/v1/scmwarehouse/selectWarehouseByUserSid',
method: 'get',
params: data
})
}

169
anrui-buscenter/anrui-buscenter-ui/src/api/jiaochebanli/cardelivery.js

@ -0,0 +1,169 @@
import request from '@/utils/request'
// 待交车车辆列表
export function listPage(data) {
return request({
url: '/buscenter/v1/bushandoverwait/listPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 交车办理列表
export function pageList(data) {
return request({
url: '/buscenter/v1/bushandover/listPage',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 获取确认交付信息
export function deliveryByHandoverWaitSids(data) {
return request({
url: '/buscenter/v1/bushandover/deliveryByHandoverWaitSids',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 保存确认交付信息
export function saveOrUpdateBusHandover(data) {
return request({
url: '/buscenter/v1/bushandover/saveOrUpdateBusHandover',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 获取交车确认信息
export function fetchDetailsBySid(data) {
return request({
url: '/buscenter/v1/bushandover/fetchDetailsBySid/' + data,
method: 'get'
})
}
// 保存交车确认信息
export function saveDeliveryConfirmInfo(data) {
return request({
url: '/buscenter/v1/bushandover/saveDeliveryConfirmInfo',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 保存挂车确认交付信息
export function saveGcVinBill(data) {
return request({
url: '/buscenter/v1/bushandover/saveGcVinBill',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 获取挂车确认信息
export function getDeliveryConfirmGcInfo(data) {
return request({
url: '/buscenter/v1/bushandover/getDeliveryConfirmGcInfo',
method: 'get',
params: data
})
}
// 保存挂车确认信息
export function saveDeliveryConfirmGcInfo(data) {
return request({
url: '/buscenter/v1/bushandover/saveDeliveryConfirmGcInfo',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 提交交车确认信息
export function submit(data) {
return request({
url: '/buscenter/v1/bushandover/submit',
method: 'post',
data: data,
headers: {
'Content-Type': 'application/json'
}
})
}
// 流程审批(同意)
export function complete(params) {
return request({
url: '/buscenter/v1/bushandover/complete',
method: 'post',
data: params
})
}
// 流程审批(驳回)
export function reject(params) {
return request({
url: '/buscenter/v1/bushandover/reject',
method: 'post',
data: params
})
}
// 流程审批(终止)
export function breakProcess(params) {
return request({
url: '/buscenter/v1/bushandover/breakProcess',
method: 'post',
data: params
})
}
// 流程审批(撤回)
export function revokeProcess(params) {
return request({
url: '/buscenter/v1/bushandover/revokeProcess',
method: 'post',
data: params
})
}
// 审批流程(同意)获取下一环节
export function getNextNodesForSubmit(data) {
return request({
url: '/buscenter/v1/bushandover/getNextNodesForSubmit',
method: 'get',
params: data
})
}
// 审批流程(驳回)获取上一环节
export function getPreviousNodesForReject(data) {
return request({
url: '/buscenter/v1/bushandover/getPreviousNodesForReject',
method: 'get',
params: data
})
}

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

@ -382,6 +382,24 @@ export const constantRoutes = [
}
]
},
// 交车准备
{
path: '/xiaoshouguanli/jiaochebanli',
component: Layout,
redirect: '/xiaoshouguanli/jiaochebanli',
meta: {
title: '交车办理'
},
children: [
{
path: '/xiaoshouguanli/jiaochebanli',
component: () =>
import('@/views/xiaoshouguanli/jiaochebanli/cartobedelivered.vue'),
name: 'DaiJiaoChe',
meta: { title: '交车办理', noCache: true }
}
]
},
{
path: '/fapiaoneibujieshou',
component: Layout,
@ -665,6 +683,28 @@ export const constantRoutes = [
component: () =>
import('@/views/workflow/youhuibaoFlow/youhuibaoEdit.vue'),
name: 'YouHuiBaoEdit'
},
// 交车办理待办详情
{
path: '/jiaochebanliFlow/deliveryconfirmationDaiBanInfo',
component: () =>
import('@/views/workflow/jiaochebanliFlow/deliveryconfirmationDaiBanInfo.vue'),
name: 'DeliveryconfirmationDaiBanInfo'
},
// 交车办理已办详情
{
path: '/jiaochebanliFlow/deliveryconfirmationYiBanInfo',
component: () =>
import('@/views/workflow/jiaochebanliFlow/deliveryconfirmationYiBanInfo.vue'),
name: 'DeliveryconfirmationYiBanInfo'
},
// 交车办理驳回到发起人办理
{
path: '/jiaochebanliFlow/deliveryconfirmationEdit',
component: () =>
import('@/views/workflow/jiaochebanliFlow/deliveryconfirmationEdit.vue'),
name: 'DeliveryconfirmationEdit'
}
// 404 page must be placed at the end !!!

26
anrui-buscenter/anrui-buscenter-ui/src/views/chukuguanli/chukubanli/chukushenqing.vue

@ -287,18 +287,22 @@ export default {
}
},
handleRevoke(row) {
this.$confirm('是否确定撤回该业务', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
revokeProcess({ taskId: row.taskId, businessSid: row.sid, instanceId: row.procInstId, userSid: window.sessionStorage.getItem('userSid') }).then((response) => {
if (response.success) {
this.$message({ showClose: true,type: 'success', message: response.msg })
this.getList()
}
if (row.allowModify) {
this.$confirm('是否确定撤回该业务', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
revokeProcess({ taskId: row.taskId, businessSid: row.sid, instanceId: row.procInstId, userSid: window.sessionStorage.getItem('userSid') }).then((response) => {
if (response.success) {
this.$message({ showClose: true,type: 'success', message: response.msg })
this.getList()
}
})
})
})
} else {
this.$message({ showClose: true, type: 'error', message: '非本人发起的申请,无权限操作' })
}
},
// sid
handleSelectionChange(row) {

381
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationDaiBanInfo.vue

@ -0,0 +1,381 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" @click="openAgree('同意')"> </el-button>
<el-button type="danger" size="small" @click="openReject('驳回')"> </el-button>
<el-button type="danger" size="small" @click="openStop('终止')"> </el-button>
</div>
</div>
<div class="">
<div class="titwu">交车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>车型</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.modelName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</span>
</template>
</el-table-column>
<el-table-column label="保单" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.policyImages.length > 0" @click="handleLook(scope.row.policyImages)">查看</span>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.receiveCarImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>交车资料确认单</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustConfirmImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>出门证照片</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.exitTicketImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in image_list" :key="index" :src="item" :preview-src-list="image_list"/>
</el-dialog>
<!-- 选择待办人 的弹出框-->
<el-dialog title="填写审批意见" :visible.sync="nodeDialogVisible" width="80%">
<el-form class="formadd" >
<el-row v-show="currentLink" style="border-top: 1px solid #e0e3eb">
<el-col :span="4" class="tleftb">
<span>当前环节:</span>
</el-col>
<el-col :span="20">
<el-form-item><span>{{ current.taskName }}->{{ nextNode.name }}</span></el-form-item>
</el-col>
</el-row>
<el-row :class="{rowClass:!currentLink}">
<el-col :span="4" class="tleftb">
<span>意见:</span>
</el-col>
<el-col :span="20">
<el-form-item><el-input size="small" v-model="dialogList.comment" placeholder="审批意见" class="addinputw" type="textarea" :autosize="{ minRows: 1, maxRows: 10}" clearable ></el-input></el-form-item>
</el-col>
</el-row>
<div style="text-align:center;margin-top: 20px;">
<el-button type="primary" size="mini" @click="reject"> </el-button>
<el-button type="info " size="mini" @click="nodeDialogVisible = false"> </el-button>
</div>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { fetchDetailsBySid, complete, reject, breakProcess, getNextNodesForSubmit, getPreviousNodesForReject } from '@/api/jiaochebanli/cardelivery'
export default {
name: 'DeliveryconfirmationDaiBanInfo',
data() {
return {
viewTitle: '',
dialogVisible: false,
tableKey: 0,
index: 0,
image_list: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
},
rules: {},
operation: '', //
dialogList: {
comment: ''
},
startTask: true,
current: {
taskDefKey: '',
taskName: '' //
},
nextNode: {}, //
nodeDialogVisible: false,
currentLink: true,
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
this.current.taskDefKey = obj.taskDefKey
this.current.taskName = obj.taskName
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
handleLook(row) {
this.dialogVisible = true
this.image_list = row
},
//
openAgree(val) {
this.operation = val
this.currentLink = true
this.dialogList.comment = '同意'
getNextNodesForSubmit({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openReject(val) {
this.operation = val
this.currentLink = true
this.dialogList.comment = ''
getPreviousNodesForReject({ taskDefKey: this.current.taskDefKey, businessSid: this.linkByParameter.businessSid }).then((resp) => {
if (resp.success) {
var arr = resp.data
this.nextNode = arr[0]
this.nodeDialogVisible = true
}
this.submitdisabled = false
})
},
//
openStop(val) {
this.operation = val
this.currentLink = false
this.dialogList.comment = ''
this.nodeDialogVisible = true
},
reject() {
if (this.operation === '同意') {
this.handleAgree()
} else if (this.operation === '驳回') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleReject()
}
} else if (this.operation === '终止') {
if (this.dialogList.comment === '') {
this.$message({ showClose: true, type: 'error', message: '请填写审批意见' })
} else {
this.handleStop()
}
}
},
/** 同意任务 */
handleAgree() {
this.linkByParameter.comment = this.dialogList.comment
complete(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 驳回任务 */
handleReject() {
this.linkByParameter.comment = this.dialogList.comment
reject(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
},
/** 终止任务 */
handleStop() {
this.linkByParameter.comment = this.dialogList.comment
breakProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
.rowClass{
border-top: 1px solid #E0E3EB;
}
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

435
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationEdit.vue

@ -0,0 +1,435 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSave()">保存
</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSubmit()">提交
</el-button>
</div>
</div>
<div class="">
<div class="titwu">交车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item>
<el-input v-model="formobj.remarks" class="addinputInfo" style="width: 80%" clearable placeholder="" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>车型</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.modelName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpload(scope.row, scope.$index, '交车')">上传</el-button>
<el-button type="primary" size="mini" style="padding-left: 5px" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="保单" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpload(scope.row, scope.$index, '保单')">上传</el-button>
<el-button type="primary" size="mini" v-show="scope.row.policyImages.length > 0" @click="handleLook(scope.row.policyImages)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list1" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list2" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>交车资料确认单</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list3" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>出门证照片</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list4" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog center :visible.sync="uploadVisible" :show-close="false">
<el-form class="formadd" :model="accessory">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<span>{{ accessory.title }}</span>
</el-col>
<el-col :span="20">
<el-form-item>
<upload v-if="accessory.title == '保单'" ref="uploadImg" v-model="accessory.policyImages" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
<upload v-else ref="uploadImg" v-model="accessory.deliveryImages" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
<el-button size="small" @click="handleColse">取消</el-button>
</span>
</el-dialog>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in list" :key="index" :src="item" :preview-src-list="list"/>
</el-dialog>
</div>
</template>
<script>
import { fetchDetailsBySid, saveDeliveryConfirmInfo, submit } from '@/api/jiaochebanli/cardelivery'
import upload from '@/components/uploadFile/upload'
export default {
name: 'DeliveryconfirmationEdit',
components: {
upload
},
data() {
return {
viewTitle: '',
submitdisabled: false,
uploadVisible: false,
dialogVisible: false,
list: [],
tableKey: 0,
index: 0,
accept: '.jpg,.jpeg,.png,.JPG,.JPEG',
image_list1: [],
image_list2: [],
image_list3: [],
image_list4: [],
image_list5: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
},
accessory: {
title: '',
index: '',
policyImages: [],
deliveryImages: []
},
rules: {}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.instanceId = res.data.procInsId
this.formobj.userSid = window.sessionStorage.getItem('userSid')
if (this.formobj.receiveCarImages.length > 0) {
this.formobj.receiveCarImages.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.entrustImages.length > 0) {
this.formobj.entrustImages.forEach((e) => {
this.image_list2.push({
name: '',
url: e
})
})
}
if (this.formobj.entrustConfirmImages.length > 0) {
this.formobj.entrustConfirmImages.forEach((e) => {
this.image_list3.push({
name: '',
url: e
})
})
}
if (this.formobj.exitTicketImages.length > 0) {
this.formobj.exitTicketImages.forEach((e) => {
this.image_list4.push({
name: '',
url: e
})
})
}
}
})
},
//
handleUpload(row, index, title) {
this.uploadVisible = true
this.accessory.title = title
this.accessory.index = index
if (title === '保单') {
if (row.policyImages.length > 0) {
for (var i = 0; i < row.policyImages.length; i++) {
this.accessory.policyImages.push({
name: '',
url: row.policyImages[i]
})
}
}
} else {
if (row.deliveryImages.length > 0) {
for (var k = 0; k < row.deliveryImages.length; k++) {
this.accessory.deliveryImages.push({
name: '',
url: row.deliveryImages[i]
})
}
}
}
},
handleLook(row) {
this.dialogVisible = true
this.list = row
},
//
handleConfirm() {
if (this.accessory.title === '保单') {
if (this.accessory.policyImages.length > 0) {
const aa = []
for (var l = 0; l < this.accessory.policyImages.length; l++) {
aa.push(this.accessory.policyImages[l].url)
}
this.formobj.carList[this.accessory.index].policyImages = aa
}
} else {
if (this.accessory.deliveryImages.length > 0) {
const bb = []
for (var m = 0; m < this.accessory.deliveryImages.length; m++) {
bb.push(this.accessory.deliveryImages[m].url)
}
this.formobj.carList[this.accessory.index].deliveryImages = bb
}
}
this.handleColse()
},
//
handleColse() {
this.uploadVisible = false
this.accessory = {
title: '',
index: '',
policyImages: [],
deliveryImages: []
}
},
handleSave() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
saveDeliveryConfirmInfo(this.formobj).then((resp) => {
if (resp.success) {
this.submitdisabled = false
this.$message({ showClose: true, type: 'success', message: '保存成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleSubmit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.getUrl()
if (this.formobj.receiveCarImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传接受车辆确认书' })
return
}
if (this.formobj.entrustConfirmImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传交车资料确认单' })
return
}
if (this.formobj.exitTicketImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传出门证照片' })
return
}
this.submitdisabled = true
submit(this.formobj).then((respsone) => {
if (respsone.success) {
this.submitdisabled = false
this.$message({ showClose: true, type: 'success', message: '提交成功' })
// ()
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
getUrl() {
if (this.image_list1.length > 0) {
const aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.receiveCarImages = aa
} else {
this.formobj.receiveCarImages = []
}
if (this.image_list2.length > 0) {
const bb = []
for (var k = 0; k < this.image_list2.length; k++) {
bb.push(this.image_list2[k].url)
}
this.formobj.entrustImages = bb
} else {
this.formobj.entrustImages = []
}
if (this.image_list3.length > 0) {
const cc = []
for (var m = 0; m < this.image_list3.length; m++) {
cc.push(this.image_list3[m].url)
}
this.formobj.entrustConfirmImages = cc
} else {
this.formobj.entrustConfirmImages = []
}
if (this.image_list4.length > 0) {
const dd = []
for (var n = 0; n < this.image_list4.length; n++) {
dd.push(this.image_list4[n].url)
}
this.formobj.exitTicketImages = dd
} else {
this.formobj.exitTicketImages = []
}
}
}
}
</script>
<style scoped>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

254
anrui-buscenter/anrui-buscenter-ui/src/views/workflow/jiaochebanliFlow/deliveryconfirmationYiBanInfo.vue

@ -0,0 +1,254 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="danger" size="small" @click="openRevoke()">撤回</el-button>
</div>
</div>
<div class="">
<div class="titwu">交车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>车型</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.modelName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</span>
</template>
</el-table-column>
<el-table-column label="保单" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.policyImages.length > 0" @click="handleLook(scope.row.policyImages)">查看</span>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.receiveCarImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>交车资料确认单</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustConfirmImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>出门证照片</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.exitTicketImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in image_list" :key="index" :src="item" :preview-src-list="image_list"/>
</el-dialog>
</div>
</template>
<script>
import { fetchDetailsBySid, revokeProcess } from '@/api/jiaochebanli/cardelivery'
export default {
name: 'DeliveryconfirmationYiBanInfo',
data() {
return {
viewTitle: '',
dialogVisible: false,
tableKey: 0,
index: 0,
image_list: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
},
rules: {},
//
linkByParameter: {
businessSid: '',
comment: '',
instanceId: '',
taskId: '',
orgSidPath: '',
taskDefKey: '',
userSid: ''
}
}
},
created() {
console.log('url:' + window.location.href)
var one = window.location.href.indexOf('&data') + 6
const data = window.location.href.substr(one) // urlunescape()web,使
const obj = JSON.parse(decodeURIComponent(data))
console.log('iframe页面获取的obj:', obj)
//
this.linkByParameter.businessSid = obj.businessSid
this.linkByParameter.instanceId = obj.instanceId
this.linkByParameter.taskId = obj.taskId
this.linkByParameter.taskDefKey = obj.taskDefKey
this.linkByParameter.orgSidPath = window.sessionStorage.getItem('orgSidPath')
this.linkByParameter.userSid = window.sessionStorage.getItem('userSid')
//
this.showInfo(obj.businessSid)
},
mounted() {
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 2,
data: 500 + 'px'
}
}, '*')
},
methods: {
showInfo(sid) {
fetchDetailsBySid(sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
handleLook(row) {
this.dialogVisible = true
this.image_list = row
},
/** 确认撤回任务 */
openRevoke() {
this.$confirm('是否确认执行撤回操作', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
this.handleRevoke()
}).catch(() => {
this.$message({
type: 'info',
message: '已取消撤回'
})
})
},
/** 撤回任务 */
handleRevoke() {
revokeProcess(this.linkByParameter).then((response) => {
if (response.success) {
this.$notify({
title: '提示',
message: '执行成功',
type: 'success',
duration: 2000
})
this.nodeDialogVisible = false
//
window.parent.postMessage({
cmd: 'returnHeight',
params: {
//
code: 1
}
}, '*')
}
})
}
}
}
</script>
<style scoped>
.titwu {
font-size: 28px;
text-align: center;
padding: 30px 0 20px 0;
}
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

371
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/cardelivery.vue

@ -0,0 +1,371 @@
<template>
<div class="app-container">
<!-- Start 列表页面 -->
<div v-show="viewState == 1">
<button-bar view-title="交车办理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="switch_btn">
<el-button class="" @click="handleClick">待交车车辆列表</el-button>
<el-button :class="{btn_style:viewState === 1}">交车办理列表</el-button>
</div>
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="合同编号">
<el-input v-model="listQuery.params.contractNo" clearable placeholder="" class="addinputw"></el-input>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" clearable placeholder="" class="addinputw"></el-input>
</el-form-item>
<el-form-item label="销售类型">
<el-select v-model="listQuery.params.payTypeKey" class="filter-item" clearable placeholder="请选择">
<el-option v-for="item in payType_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictKey"/>
</el-select>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" @click="handleFilter" size="small">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="handleReset" size="small">重置</el-button>
</div>
</div>
</div>
<div class="listtop">
<div class="tit">交车列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column width="50" type="selection" align="center"/>
<el-table-column width="60" label="序号" type="index" :index="indexMethod" align="center"/>
<el-table-column label="操作" min-width="500" align="center">
<template slot-scope="scope">
<el-button type="primary" v-if="scope.row.showUpdate" size="mini" @click="toEdit(scope.row)">办理</el-button>
<el-button type="primary" v-if="scope.row.showGcBtn" size="mini" @click="toTrailerDelivery(scope.row)">挂车交付</el-button>
<el-button type="primary" v-if="scope.row.showGcBtn2" size="mini" @click="toTrailerEdit(scope.row)">挂车确认</el-button>
<el-button type="primary" size="mini" @click="toMasterCar(scope.row)">主车清单下载</el-button>
<el-button type="primary" v-if="scope.row.showGcDownload" size="mini" @click="toTrailer(scope.row)">挂车清单下载</el-button>
<el-button type="primary" size="mini" @click="toInfo(scope.row)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="流程状态" align="center" width="180">
<template slot-scope="scope">
<span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>
<span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center" width="80">
<template slot-scope="scope">
<span>{{ scope.row.handoverStateValue }}</span>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="150">
<template slot-scope="scope">
<span>{{ scope.row.contractNo }}</span>
</template>
</el-table-column>
<el-table-column label="客户名称" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.customerName }}</span>
</template>
</el-table-column>
<el-table-column label="车型" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.modelName }}</span>
</template>
</el-table-column>
<el-table-column label="交车数量" align="center" width="100">
<template slot-scope="scope">
<span>{{ scope.row.carNum }}</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>
<!-- End 列表页面 -->
<!--主车交车确认 -->
<deliveryconfirmation v-show="viewState == 2" ref="divQueRen" @doback="resetState" @reloadlist="getList"/>
<!-- 挂车交付 -->
<trailerconfirmeddelivery v-show="viewState == 3" ref="divGCJF" @doback="resetState" @reloadlist="getList"/>
<!-- 详情 -->
<deliveryconfirmationInfo v-show="viewState == 4" ref="divInfo" @doback="resetState"/>
<!-- 挂车确认 -->
<trailerdeliveryconfirmation v-show="viewState == 5" ref="divGCQR" @doback="resetState" @reloadlist="getList"/>
<!-- 查看流程审批记录 -->
<el-dialog title="" :visible.sync="centerDialogVisible" width="78%" height="1%" :before-close="closeIt" center>
<iframe frameborder="0" id="iframe" style="width:100%;" scrolling="no" :src="this.centerDialogVisible === true ? url :''"></iframe>
</el-dialog>
</div>
</template>
<script>
import { pageList } from '@/api/jiaochebanli/cardelivery'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import { typeValues } from '@/api/dictcommons/dictcommons'
import { getStorage } from '@/utils/auth'
import deliveryconfirmation from './deliveryconfirmation'
import trailerconfirmeddelivery from './trailerconfirmeddelivery'
import deliveryconfirmationInfo from './deliveryconfirmationInfo'
import trailerdeliveryconfirmation from './trailerdeliveryconfirmation'
export default {
name: 'YiJiaoCheZhunBei',
components: {
Pagination,
pageye,
ButtonBar,
deliveryconfirmation,
trailerconfirmeddelivery,
deliveryconfirmationInfo,
trailerdeliveryconfirmation
},
data() {
return {
url: '',
dialogHeight: '80%',
centerDialogVisible: false,
viewState: 1,
btndisabled: false,
btnList: [
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
// -----------
tableKey: 0,
list: [],
sids: [],
payType_list: [],
FormLoading: false,
listLoading: false,
listQuery: {
params: {
contractNo: '',
customerName: '',
vinNo: '',
useOrgSid: '',
userSid: '',
orgPath: '',
menuUrl: '',
payTypeKey: ''
},
current: 1,
size: 10,
total: 0
}
}
},
mounted() {
// vuewindowpostMessagehandleMessage
window.addEventListener('message', this.handleMessage)
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
async handleMessage(event) {
var code = ''
if (event.data.params !== null && event.data.params !== undefined) {
code = event.data.params.code
}
if (code === 1) {
this.init()
this.centerDialogVisible = false
} else if (code === 2) {
this.dialogHeight = event.data.params.data
this.setIframeHeight(document.getElementById('iframe'))
}
},
closeIt() {
this.url = ''
this.centerDialogVisible = false
},
setIframeHeight(iframe) {
iframe.height = this.dialogHeight
},
flowRecord(row) {
this.centerDialogVisible = true
var params = {
deployId: row.procDefId,
procInsId: row.procInstId,
token: getStorage()
}
this.url = '/#/flow/flowRecordForBusiness?data=' + encodeURI((JSON.stringify(params)))
},
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doClose':
this.doClose()
break
default:
break
}
},
init() {
typeValues({ type: 'purchaseType' }).then((res) => {
if (res.success) {
this.payType_list = res.data
}
})
this.getList()
},
handleSelectionChange(row) {
const aa = []
row.forEach((element) => {
aa.push(element.sid)
})
this.sids = aa
console.log('sids', this.sids)
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
pageList(this.listQuery).then((response) => {
console.log('列表查询结果:', response)
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
handleClick() {
this.$parent.resetState()
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleReset() {
this.listQuery = {
params: {
contractNo: '',
customerName: '',
vinNo: '',
useOrgSid: '',
userSid: '',
orgPath: '',
menuUrl: '',
payTypeKey: ''
},
current: 1,
size: 10,
total: 0
}
this.getList()
},
//
toEdit(row) {
this.viewState = 2
this.$refs['divQueRen'].showInfo(row)
},
//
toTrailerDelivery(row) {
this.viewState = 3
this.$refs['divGCJF'].showInfo(row)
},
toTrailerEdit(row) {
this.viewState = 5
this.$refs['divGCQR'].showInfo(row)
},
//
toMasterCar(row) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + row.filePath + '&outFileName=' + '主车清单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '主车清单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
},
//
toTrailer(row) {
var xhr = new XMLHttpRequest()
xhr.open('GET', process.env.VUE_APP_BASE_API + '/base/file/download?filePath=' + row.trailerFilePath + '&outFileName=' + '挂车清单', true)
xhr.setRequestHeader('token', getStorage())
xhr.responseType = 'blob'
xhr.onload = function(e) {
//
var blob = this.response
var filename = '挂车清单.pdf'
var a = document.createElement('a')
// blob.type="application/octet-stream";
// url
var url = URL.createObjectURL(blob)
a.href = url
a.download = filename
a.click()
// URL
window.URL.revokeObjectURL(url)
}
//
xhr.send()
},
toInfo(row) {
this.viewState = 4
this.$refs['divInfo'].showInfo(row)
},
resetState() {
this.viewState = 1
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
.btn_style {
background-color: #018ad2;
color: white;
font-weight: 600;
}
</style>

285
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/cartobedelivered.vue

@ -0,0 +1,285 @@
<template>
<div class="app-container">
<!-- Start 列表页面 -->
<div v-show="viewState == 1">
<button-bar view-title="交车办理" ref="btnbar" :btndisabled="btndisabled" @btnhandle="btnHandle"/>
<div class="main-content">
<div class="switch_btn">
<el-button :class="{btn_style:viewState === 1}">待交车车辆列表</el-button>
<el-button class="" @click="handleClick">交车办理列表</el-button>
</div>
<div class="searchcon">
<el-button size="small" class="searchbtn" @click="clicksearchShow">{{ searchxianshitit }}</el-button>
<div v-show="isSearchShow" class="search">
<el-form ref="listQueryform" :inline="true" :model="listQuery" class="tab-header">
<el-form-item label="合同编号">
<el-input v-model="listQuery.params.contractNo" clearable placeholder="" class="addinputw"></el-input>
</el-form-item>
<el-form-item label="客户名称">
<el-input v-model="listQuery.params.customerName" clearable placeholder="" class="addinputw"></el-input>
</el-form-item>
<el-form-item label="车架号">
<el-input v-model="listQuery.params.vinNo" clearable placeholder="" class="addinputw"></el-input>
</el-form-item>
</el-form>
<div class="btn" style="text-align: center;">
<el-button type="primary" icon="el-icon-search" @click="handleFilter" size="small">查询</el-button>
<el-button type="primary" icon="el-icon-refresh" @click="handleReset" size="small">重置</el-button>
</div>
</div>
</div>
<div class="listtop">
<div class="tit">待交车车辆列表</div>
<pageye v-show="list.length > 0" :total="listQuery.total" :page.sync="listQuery.current" :limit.sync="listQuery.size" class="pagination" @pagination="getList"/>
</div>
<div class="">
<el-table :key="tableKey" v-loading="listLoading" :data="list" border style="width: 100%;" @selection-change="handleSelectionChange">
<el-table-column fixed width="50" type="selection" align="center"/>
<el-table-column fixed label="序号" width="60" type="index" :index="indexMethod" align="center"/>
<el-table-column label="销售类型" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.payTypeValue }}</span>
</template>
</el-table-column>
<el-table-column label="业务状态" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.payStateValue }}</span>
</template>
</el-table-column>
<el-table-column label="合同编号" align="center" width="150">
<template slot-scope="scope">
<span>{{ scope.row.contractNo }}</span>
</template>
</el-table-column>
<el-table-column label="客户名称" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.customerName }}</span>
</template>
</el-table-column>
<el-table-column label="车架号" align="center" width="180">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="车型" align="center">
<template slot-scope="scope">
<span>{{ scope.row.modelName }}</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>
<!-- End 列表页面 -->
<!-- 已交车列表 -->
<cardelivery v-show="viewState == 2" ref="divJiao"/>
<!-- 交车编辑 -->
<confirmdelivery v-show="viewState == 3" ref="divAdd" @doback="resetState" @reloadlist="resetList"/>
</div>
</template>
<script>
import { listPage } from '@/api/jiaochebanli/cardelivery'
import { typeValues, getOrgSidByPath } from '@/api/dictcommons/dictcommons'
import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import confirmdelivery from './confirmdelivery'
import cardelivery from './cardelivery'
export default {
name: 'DaiJiaoChe',
components: {
Pagination,
pageye,
ButtonBar,
confirmdelivery,
cardelivery
},
data() {
return {
viewState: 1,
btndisabled: false,
btnList: [
{
type: 'primary',
size: 'small',
icon: '',
btnKey: 'doTransact',
btnLabel: '交车办理'
},
{
type: 'info',
size: 'small',
icon: 'cross',
btnKey: 'doClose',
btnLabel: '关闭'
}
],
isSearchShow: false,
searchxianshitit: '显示查询条件',
// -----------
tableKey: 0,
list: [],
sids: [],
multipleSelection: [],
payType_list: [],
FormLoading: false,
listLoading: false,
listQuery: {
params: {
contractNo: '',
customerName: '',
vinNo: '',
useOrgSid: '',
userSid: '',
orgPath: '',
menuUrl: ''
},
current: 1,
size: 10,
total: 0
}
}
},
created() {
//
this.init()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
},
methods: {
//
clicksearchShow() {
this.isSearchShow = !this.isSearchShow
if (this.isSearchShow) {
this.searchxianshitit = '隐藏查询条件'
} else {
this.searchxianshitit = '显示查询条件'
}
},
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'doTransact':
this.doTransact()
break
case 'doClose':
this.doClose()
break
default:
break
}
},
init() {
typeValues({ type: 'purchaseType' }).then((res) => {
if (res.success) {
this.payType_list = res.data
}
})
getOrgSidByPath({ orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((resp) => {
if (resp.success) {
this.listQuery.params.useOrgSid = resp.data
this.getList()
}
})
},
//
indexMethod(index) {
var pagestart = (this.listQuery.current - 1) * this.listQuery.size
var pageindex = index + 1 + pagestart
return pageindex
},
// sid
handleSelectionChange(row) {
const aa = []
this.multipleSelection = row
row.forEach(element => {
aa.push(element.sid)
})
this.sids = aa
console.log('获取sids数组', this.sids)
},
//
getList() {
this.listLoading = true
this.listQuery.params.userSid = window.sessionStorage.getItem('userSid')
this.listQuery.params.orgPath = window.sessionStorage.getItem('defaultOrgPath')
this.listQuery.params.menuUrl = this.$route.path
listPage(this.listQuery).then((response) => {
this.listLoading = false
if (response.success) {
this.list = response.data.records
this.listQuery.total = response.data.total
} else {
this.list = []
this.listQuery.total = 0
}
})
},
handleClick() {
this.viewState = 2
this.$refs['divJiao'].init()
},
//
handleFilter() {
this.listQuery.current = 1
this.getList()
},
handleReset() {
this.listQuery = {
params: {
contractNo: '',
customerName: '',
vinNo: '',
useOrgSid: '',
userSid: '',
orgPath: '',
menuUrl: ''
},
current: 1,
size: 10,
total: 0
}
this.init()
},
resetList() {
this.getList()
this.handleClick()
},
resetState() {
this.viewState = 1
},
doTransact() {
if (this.multipleSelection.length > 0) {
for (var i = 0; i < this.multipleSelection.length; i++) {
if (this.multipleSelection[i].contractNo !== this.multipleSelection[this.multipleSelection.length - 1].contractNo) {
this.$message({ showClose: true, type: 'error', message: '请选择相同编号的记录进行交车办理操作' })
return
}
}
this.viewState = 3
this.$refs['divAdd'].showInfo(this.sids)
} else {
this.$message({ showClose: true, type: 'error', message: '请至少选择一条记录进行交车办理操作' })
}
},
doClose() {
this.$store.dispatch('tagsView/delView', this.$route)
this.$router.go(-1)
}
}
}
</script>
<style scoped>
.btn_style {
background-color: #018ad2;
color: white;
font-weight: 600;
}
</style>

167
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/confirmdelivery.vue

@ -0,0 +1,167 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleConfirm()">确认
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">确认交付信息</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>接收人</span></div>
<el-form-item prop="recipient"><el-input v-model="formobj.recipient" clearable placeholder="" class="addinputInfo" style="width: 50%"/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>身份证号</span></div>
<el-form-item prop="idNo"><el-input v-model="formobj.idNo" clearable placeholder="" class="addinputInfo addinputw" style="width: 50%"/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>联系电话</span></div>
<el-form-item prop="mobile"><el-input v-model="formobj.mobile" clearable placeholder="" class="addinputInfo addinputw" style="width: 50%"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>车辆交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span><span class="icon">*</span>车辆交付地点</span></div>
<el-form-item prop="deliverAddress">
<el-select class="addinputInfo" v-model="formobj.deliverAddress" placeholder="请选择" @change="changeAddress" filterable clearable>
<el-option v-for="item in warehouwarehouse_list" :key="item.sid" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<div class="title">车辆交付资料清单</div>
<el-table :key="tableKey" :data="formobj.busItemvos" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车资料" align="center">
<template slot-scope="scope">
<span>{{ scope.row.itemValue }}</span>
</template>
</el-table-column>
</el-table>
</el-form>
</div>
</div>
</template>
<script>
import { deliveryByHandoverWaitSids, saveOrUpdateBusHandover } from '@/api/jiaochebanli/cardelivery'
import { selectWarehouseByUserSid } from '@/api/dictcommons/dictcommons'
export default {
name: 'JiaoFuQueRen',
data() {
return {
viewTitle: '',
submitdisabled: false,
tableKey: 0,
index: 0,
warehouwarehouse_list: [],
formobj: {
userSid: '',
orgSidPath: '',
recipient: '',
idNo: '',
mobile: '',
deliverDate: '',
deliverAddress: '',
deliverAddressKey: '',
busItemvos: []
},
rules: {
recipient: [{ required: true, message: '接收人不能为空', trigger: 'blur' }],
idNo: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }],
mobile: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
deliverAddress: [{ required: true, message: '车辆交付地点不能为空', trigger: 'change' }]
}
}
},
methods: {
showInfo(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
selectWarehouseByUserSid({ userSid: window.sessionStorage.getItem('userSid'), orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.warehouwarehouse_list = res.data
}
})
this.viewTitle = '确认交付'
deliveryByHandoverWaitSids({ userSid: window.sessionStorage.getItem('userSid'), orgSidPath: window.sessionStorage.getItem('defaultOrgPath'), list: row }).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
changeAddress(value) {
const choose = this.warehouwarehouse_list.filter((item) => item.dictValue === value)
this.formobj.deliverAddressKey = choose[0].sid
},
handleConfirm() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
const loading = this.$loading({
lock: true,
text: '交付信息正在生成中,请稍等',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
saveOrUpdateBusHandover(this.formobj).then((res) => {
if (res.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
}
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
userSid: '',
orgSidPath: '',
recipient: '',
idNo: '',
mobile: '',
deliverDate: '',
deliverAddress: '',
deliverAddressKey: '',
busItemvos: []
}
this.submitdisabled = false
this.$refs['form_obj'].resetFields()
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
/deep/ .el-form-item__error {
margin-left: 120px;
}
</style>

433
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/deliveryconfirmation.vue

@ -0,0 +1,433 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSave()">保存
</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSubmit()">提交
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">交车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item>
<el-input v-model="formobj.remarks" class="addinputInfo" style="width: 80%" clearable placeholder="" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>车型</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.modelName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpload(scope.row, scope.$index, '交车')">上传</el-button>
<el-button type="primary" size="mini" style="padding-left: 5px" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</el-button>
</template>
</el-table-column>
<el-table-column label="保单" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpload(scope.row, scope.$index, '保单')">上传</el-button>
<el-button type="primary" size="mini" v-show="scope.row.policyImages.length > 0" @click="handleLook(scope.row.policyImages)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list1" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list2" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>交车资料确认单</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list3" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>出门证照片</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list4" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog center :visible.sync="uploadVisible" :show-close="false">
<el-form class="formadd" :model="accessory">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<span>{{ accessory.title }}</span>
</el-col>
<el-col :span="20">
<el-form-item>
<upload v-if="accessory.title == '保单'" ref="uploadImg" v-model="accessory.policyImages" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
<upload v-else ref="uploadImg" v-model="accessory.deliveryImages" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
<el-button size="small" @click="handleColse">取消</el-button>
</span>
</el-dialog>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in list" :key="index" :src="item" :preview-src-list="list"/>
</el-dialog>
</div>
</template>
<script>
import { fetchDetailsBySid, saveDeliveryConfirmInfo, submit } from '@/api/jiaochebanli/cardelivery'
import upload from '@/components/uploadFile/upload'
export default {
name: 'JiaoCheQueRen',
components: {
upload
},
data() {
return {
viewTitle: '',
submitdisabled: false,
uploadVisible: false,
dialogVisible: false,
list: [],
tableKey: 0,
index: 0,
accept: '.jpg,.jpeg,.png,.JPG,.JPEG',
image_list1: [],
image_list2: [],
image_list3: [],
image_list4: [],
image_list5: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
},
accessory: {
title: '',
index: '',
policyImages: [],
deliveryImages: []
},
rules: {}
}
},
methods: {
showInfo(row) {
fetchDetailsBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
this.formobj.instanceId = res.data.procInsId
this.formobj.userSid = window.sessionStorage.getItem('userSid')
if (this.formobj.receiveCarImages.length > 0) {
this.formobj.receiveCarImages.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.entrustImages.length > 0) {
this.formobj.entrustImages.forEach((e) => {
this.image_list2.push({
name: '',
url: e
})
})
}
if (this.formobj.entrustConfirmImages.length > 0) {
this.formobj.entrustConfirmImages.forEach((e) => {
this.image_list3.push({
name: '',
url: e
})
})
}
if (this.formobj.exitTicketImages.length > 0) {
this.formobj.exitTicketImages.forEach((e) => {
this.image_list4.push({
name: '',
url: e
})
})
}
}
})
},
//
handleUpload(row, index, title) {
this.uploadVisible = true
this.accessory.title = title
this.accessory.index = index
if (title === '保单') {
if (row.policyImages.length > 0) {
for (var i = 0; i < row.policyImages.length; i++) {
this.accessory.policyImages.push({
name: '',
url: row.policyImages[i]
})
}
}
} else {
if (row.deliveryImages.length > 0) {
for (var k = 0; k < row.deliveryImages.length; k++) {
this.accessory.deliveryImages.push({
name: '',
url: row.deliveryImages[i]
})
}
}
}
},
handleLook(row) {
this.dialogVisible = true
this.list = row
},
//
handleConfirm() {
if (this.accessory.title === '保单') {
if (this.accessory.policyImages.length > 0) {
const aa = []
for (var l = 0; l < this.accessory.policyImages.length; l++) {
aa.push(this.accessory.policyImages[l].url)
}
this.formobj.carList[this.accessory.index].policyImages = aa
}
} else {
if (this.accessory.deliveryImages.length > 0) {
const bb = []
for (var m = 0; m < this.accessory.deliveryImages.length; m++) {
bb.push(this.accessory.deliveryImages[m].url)
}
this.formobj.carList[this.accessory.index].deliveryImages = bb
}
}
this.handleColse()
},
//
handleColse() {
this.uploadVisible = false
this.accessory = {
title: '',
index: '',
policyImages: [],
deliveryImages: []
}
},
handleSave() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.getUrl()
this.submitdisabled = true
saveDeliveryConfirmInfo(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
handleSubmit() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.getUrl()
if (this.formobj.receiveCarImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传接受车辆确认书' })
return
}
if (this.formobj.entrustConfirmImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传交车资料确认单' })
return
}
if (this.formobj.exitTicketImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传出门证照片' })
return
}
this.submitdisabled = true
submit(this.formobj).then((respsone) => {
if (respsone.success) {
this.$message({ showClose: true, type: 'success', message: '提交成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
getUrl() {
if (this.image_list1.length > 0) {
const aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.receiveCarImages = aa
} else {
this.formobj.receiveCarImages = []
}
if (this.image_list2.length > 0) {
const bb = []
for (var k = 0; k < this.image_list2.length; k++) {
bb.push(this.image_list2[k].url)
}
this.formobj.entrustImages = bb
} else {
this.formobj.entrustImages = []
}
if (this.image_list3.length > 0) {
const cc = []
for (var m = 0; m < this.image_list3.length; m++) {
cc.push(this.image_list3[m].url)
}
this.formobj.entrustConfirmImages = cc
} else {
this.formobj.entrustConfirmImages = []
}
if (this.image_list4.length > 0) {
const dd = []
for (var n = 0; n < this.image_list4.length; n++) {
dd.push(this.image_list4[n].url)
}
this.formobj.exitTicketImages = dd
} else {
this.formobj.exitTicketImages = []
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
}
this.accessory = {
title: '',
index: '',
policyImages: [],
deliveryImages: []
}
this.image_list1 = []
this.image_list2 = []
this.image_list3 = []
this.image_list4 = []
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

201
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/deliveryconfirmationInfo.vue

@ -0,0 +1,201 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">交车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.remarks }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>车型</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.modelName }}</span></el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</span>
</template>
</el-table-column>
<el-table-column label="保单" align="center">
<template slot-scope="scope">
<span class="bluezi" v-show="scope.row.policyImages.length > 0" @click="handleLook(scope.row.policyImages)">查看</span>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.receiveCarImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>交车资料确认单</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.entrustConfirmImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>出门证照片</span></div>
<el-form-item>
<el-image class="addinputInfo" style="height: 178px;width: 178px" v-for="(item, index) in formobj.exitTicketImages" :key="index" :src="item" :preview-src-list="formobj.receiveCarImages"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in image_list" :key="index" :src="item" :preview-src-list="image_list"/>
</el-dialog>
</div>
</template>
<script>
import { fetchDetailsBySid } from '@/api/jiaochebanli/cardelivery'
export default {
name: 'JiaoCheQueRen',
data() {
return {
viewTitle: '',
dialogVisible: false,
tableKey: 0,
index: 0,
image_list: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
},
rules: {}
}
},
methods: {
showInfo(row) {
fetchDetailsBySid(row.sid).then((res) => {
if (res.success) {
this.formobj = res.data
}
})
},
handleLook(row) {
this.dialogVisible = true
this.image_list = row
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
contractNo: '',
deliverDate: '',
modelName: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
entrustConfirmImages: [],
exitTicketImages: [],
userSid: '',
orgSidPath: '',
procInsId: '',
taskId: ''
}
this.image_list = []
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

156
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerconfirmeddelivery.vue

@ -0,0 +1,156 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleConfirm()">确认
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">确认交付信息</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>接收人</span></div>
<el-form-item prop="recipient"><el-input v-model="formobj.recipient" clearable placeholder="" class="addinputInfo" style="width: 50%"/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>身份证号</span></div>
<el-form-item prop="idNo"><el-input v-model="formobj.idNo" clearable placeholder="" class="addinputInfo addinputw" style="width: 50%"/></el-form-item>
</el-col>
<el-col :span="8">
<div class="span-sty"><span><span class="icon">*</span>联系电话</span></div>
<el-form-item prop="mobile"><el-input v-model="formobj.mobile" clearable placeholder="" class="addinputInfo addinputw" style="width: 50%"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>车辆交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span><span class="icon">*</span>车辆交付地点</span></div>
<el-form-item prop="deliverAddress">
<el-select class="addinputInfo" v-model="formobj.deliverAddress" placeholder="请选择" @change="changeAddress" filterable clearable>
<el-option v-for="item in warehouwarehouse_list" :key="item.sid" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</div>
</template>
<script>
import { saveGcVinBill } from '@/api/jiaochebanli/cardelivery'
import { selectWarehouseByUserSid } from '@/api/dictcommons/dictcommons'
export default {
name: 'GuaCheJiaoFuQueRen',
data() {
return {
viewTitle: '',
submitdisabled: false,
warehouwarehouse_list: [],
formobj: {
sid: '',
userSid: '',
orgSidPath: '',
recipient: '',
idNo: '',
mobile: '',
deliverDate: '',
deliverAddress: '',
deliverAddressKey: ''
},
rules: {
recipient: [{ required: true, message: '接收人不能为空', trigger: 'blur' }],
idNo: [{ required: true, message: '身份证号不能为空', trigger: 'blur' }],
mobile: [{ required: true, message: '联系电话不能为空', trigger: 'blur' }],
deliverAddress: [{ required: true, message: '车辆交付地点不能为空', trigger: 'change' }]
}
}
},
methods: {
showInfo(row) {
this.$nextTick(() => {
this.$refs['form_obj'].clearValidate()
})
this.viewTitle = '确认交付'
this.formobj.sid = row.sid
this.formobj.userSid = window.sessionStorage.getItem('userSid')
this.formobj.orgSidPath = window.sessionStorage.getItem('defaultOrgPath')
var nowDate = new Date()
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
}
this.formobj.deliverDate = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day)
selectWarehouseByUserSid({ userSid: window.sessionStorage.getItem('userSid'), orgPath: window.sessionStorage.getItem('defaultOrgPath') }).then((res) => {
if (res.success) {
this.warehouwarehouse_list = res.data
}
})
},
changeAddress(value) {
const choose = this.warehouwarehouse_list.filter((item) => item.dictValue === value)
this.formobj.deliverAddressKey = choose[0].sid
},
handleConfirm() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.submitdisabled = true
const loading = this.$loading({
lock: true,
text: '交付信息正在生成中,请稍等',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
saveGcVinBill(this.formobj).then((res) => {
if (res.success) {
loading.close()
this.$message({ showClose: true, type: 'success', message: '操作成功' })
this.handleReturn('true')
}
})
}
})
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
userSid: '',
orgSidPath: '',
recipient: '',
idNo: '',
mobile: '',
deliverDate: '',
deliverAddress: '',
deliverAddressKey: ''
}
this.submitdisabled = false
this.$refs['form_obj'].resetFields()
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
/deep/ .el-form-item__error {
margin-left: 120px;
}
</style>

301
anrui-buscenter/anrui-buscenter-ui/src/views/xiaoshouguanli/jiaochebanli/trailerdeliveryconfirmation.vue

@ -0,0 +1,301 @@
<template>
<div class="app-container">
<div class="tab-header webtop">
<!--标题-->
<div>{{ viewTitle }}</div>
<!--start 添加修改按钮-->
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="handleSave()">保存
</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
<div class="listconadd">
<div class="titwu">挂车确认</div>
<el-form ref="form_obj" :model="formobj" :rules="rules" class="formaddcopy02">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="8">
<div class="span-sty"><span>合同编号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.contractNo }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>客户名称</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.customerName }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>接收人</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.recipient }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>身份证号</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.idNo }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<div class="span-sty"><span>交付日期</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverDate }}</span></el-form-item>
</el-col>
<el-col :span="16">
<div class="span-sty"><span>交付地点</span></div>
<el-form-item><span class="addinputInfo">{{ formobj.deliverAddress }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty"><span>备注</span></div>
<el-form-item>
<el-input v-model="formobj.remarks" class="addinputInfo" style="width: 80%" clearable placeholder="" />
</el-form-item>
</el-col>
</el-row>
<div class="title">
交付车辆信息
</div>
<el-table :key="tableKey" :data="formobj.carList" :index="index" border style="width: 100%">
<el-table-column fixed width="60" label="序号" type="index" :index="index + 1" align="center"/>
<el-table-column label="车架号" align="center">
<template slot-scope="scope">
<span>{{ scope.row.vinNo }}</span>
</template>
</el-table-column>
<el-table-column label="交车照片" align="center">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleUpload(scope.row, scope.$index, '交车')">上传</el-button>
<el-button type="primary" size="mini" style="padding-left: 5px" v-show="scope.row.deliveryImages.length > 0" @click="handleLook(scope.row.deliveryImages)">查看</el-button>
</template>
</el-table-column>
</el-table>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>接收车辆确认书及其他资料</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list1" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<div class="span-sty" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center"><span>委托提车授权书及委托人身份证</span></div>
<el-form-item>
<upload ref="uploadImg" class="addinputInfo" v-model="image_list2" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<!-- 交车照片保单上传 -->
<el-dialog center :visible.sync="uploadVisible" :show-close="false">
<el-form class="formadd" :model="accessory">
<el-row style="border-top: 1px solid #E0E3EB">
<el-col :span="4" class="tleftb" style="display: flex;flex-direction: row;justify-content: flex-end;align-items: center">
<span>{{ accessory.title }}</span>
</el-col>
<el-col :span="20">
<el-form-item>
<upload ref="uploadImg" v-model="accessory.deliveryImages" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
<el-button size="small" @click="handleColse">取消</el-button>
</span>
</el-dialog>
<!-- 交车照片保单上传 -->
<el-dialog :visible.sync="dialogVisible">
<el-image v-for="(item, index) in list" :key="index" :src="item" :preview-src-list="list"/>
</el-dialog>
</div>
</template>
<script>
import { getDeliveryConfirmGcInfo, saveDeliveryConfirmGcInfo } from '@/api/jiaochebanli/cardelivery'
import upload from '@/components/uploadFile/upload'
export default {
name: 'JiaoCheQueRen',
components: {
upload
},
data() {
return {
viewTitle: '',
submitdisabled: false,
uploadVisible: false,
dialogVisible: false,
list: [],
tableKey: 0,
index: 0,
accept: '.jpg,.jpeg,.png,.JPG,.JPEG',
image_list1: [],
image_list2: [],
formobj: {
sid: '',
contractNo: '',
deliverDate: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
userSid: '',
orgSidPath: ''
},
accessory: {
title: '',
index: '',
deliveryImages: []
},
rules: {}
}
},
methods: {
showInfo(row) {
getDeliveryConfirmGcInfo({ sid: row.sid }).then((res) => {
if (res.success) {
this.formobj = res.data
if (this.formobj.receiveCarImages.length > 0) {
this.formobj.receiveCarImages.forEach((e) => {
this.image_list1.push({
name: '',
url: e
})
})
}
if (this.formobj.entrustImages.length > 0) {
this.formobj.entrustImages.forEach((e) => {
this.image_list2.push({
name: '',
url: e
})
})
}
}
})
},
//
handleUpload(row, index, title) {
this.uploadVisible = true
this.accessory.title = title
this.accessory.index = index
if (row.deliveryImages.length > 0) {
for (var i = 0; i < row.deliveryImages.length; i++) {
this.accessory.deliveryImages.push({
name: '',
url: row.deliveryImages[i]
})
}
}
},
handleLook(row) {
this.dialogVisible = true
this.list = row
},
//
handleConfirm() {
if (this.accessory.deliveryImages.length > 0) {
const aa = []
for (var l = 0; l < this.accessory.deliveryImages.length; l++) {
aa.push(this.accessory.deliveryImages[l].url)
}
this.formobj.carList[this.accessory.index].deliveryImages = aa
}
this.handleColse()
},
//
handleColse() {
this.uploadVisible = false
this.accessory = {
title: '',
index: '',
deliveryImages: []
}
},
handleSave() {
this.$refs['form_obj'].validate((valid) => {
if (valid) {
this.getUrl()
if (this.formobj.receiveCarImages.length === 0) {
this.$message({ showClose: true, type: 'error', message: '请上传接受车辆确认书' })
return
}
this.submitdisabled = true
saveDeliveryConfirmGcInfo(this.formobj).then((resp) => {
if (resp.success) {
this.$message({ showClose: true, type: 'success', message: '保存成功' })
this.handleReturn('true')
} else {
this.submitdisabled = false
}
}).catch(() => {
this.submitdisabled = false
})
}
})
},
getUrl() {
if (this.image_list1.length > 0) {
const aa = []
for (var i = 0; i < this.image_list1.length; i++) {
aa.push(this.image_list1[i].url)
}
this.formobj.receiveCarImages = aa
} else {
this.formobj.receiveCarImages = []
}
if (this.image_list2.length > 0) {
const bb = []
for (var k = 0; k < this.image_list2.length; k++) {
bb.push(this.image_list2[k].url)
}
this.formobj.entrustImages = bb
} else {
this.formobj.entrustImages = []
}
},
handleReturn(isreload) {
if (isreload === 'true') this.$emit('reloadlist')
this.formobj = {
sid: '',
contractNo: '',
deliverDate: '',
customerName: '',
idNo: '',
deliverAddress: '',
recipient: '',
remarks: '',
carList: [],
receiveCarImages: [],
entrustImages: [],
userSid: '',
orgSidPath: ''
}
this.accessory = {
title: '',
index: '',
deliveryImages: []
}
this.image_list1 = []
this.image_list2 = []
this.submitdisabled = false
this.$emit('doback')
}
}
}
</script>
<style scoped>
.span-sty {
width: 150px !important;
}
.addinputInfo {
margin-left: 140px !important;
}
</style>

4
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finvehicleinvoice/FinVehicleInvoiceFeign.java

@ -81,6 +81,10 @@ public interface FinVehicleInvoiceFeign {
@PostMapping("/updateBybillingSid")
public ResultBean updateBybillingSid(@RequestParam("billingSid") String billingSid);
@ApiOperation("根据开票管理sid修改是否领票")
@PostMapping("/updateBySid")
public ResultBean updateBySid(@RequestParam("sid") String sid);
@ApiOperation("根据车辆sid获取发票信息")
@GetMapping("/selectByVinSid")
ResultBean<VehicleInvoiceVo> selectByVinSid(@RequestParam("vinSid") String vinSid);

5
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finvehicleinvoice/FinVehicleInvoiceFeignFallback.java

@ -89,6 +89,11 @@ public class FinVehicleInvoiceFeignFallback implements FinVehicleInvoiceFeign {
return null;
}
@Override
public ResultBean updateBySid(String sid) {
return null;
}
@Override
public ResultBean<VehicleInvoiceVo> selectByVinSid(String vinSid) {
return null;

28
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finbillapplication/FinBillApplicationService.java

@ -32,7 +32,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yxt.anrui.base.api.basedistributor.BaseDistributorFeign;
import com.yxt.anrui.base.api.baseinternalpurchase.flow.GetNodeVo;
import com.yxt.anrui.base.api.basemiddleman.BaseMiddlemanDetailsVo;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerDetailsVo;
import com.yxt.anrui.base.api.basetrailer.BaseTrailerFeign;
import com.yxt.anrui.base.api.basetrailer.TrailerVo;
@ -41,7 +40,6 @@ import com.yxt.anrui.base.api.basevehicle.BaseVehicleFeign;
import com.yxt.anrui.base.api.basevehicleappendix.BaseVehicleAppendixFeign;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificateFeign;
import com.yxt.anrui.base.api.basevehiclecertificate.BaseVehicleCertificateVo;
import com.yxt.anrui.base.api.busvehicleapply.BusVehicleApplyVo;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixFeign;
import com.yxt.anrui.base.api.commonappendix.CommonAppendixVo;
import com.yxt.anrui.base.api.commonappendix.CommonAttachTypeEnum;
@ -53,14 +51,8 @@ import com.yxt.anrui.base.common.utils.domain.BillNo;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApplyFeign;
import com.yxt.anrui.buscenter.api.busarrearscarryvehicleapply.BusArrearsCarryVehicleApplyVo;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrder;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFL;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderFeign;
import com.yxt.anrui.buscenter.api.bussalesorder.BusSalesOrderSourceLCVo;
import com.yxt.anrui.buscenter.api.bussalesorder.app.order.AppOrderDiscountListVo;
import com.yxt.anrui.buscenter.api.bussalesorderinsurance.BusSalesOrderInsuranceDetailsVo;
import com.yxt.anrui.buscenter.api.bussalesordermodel.BusSalesOrderModel;
import com.yxt.anrui.buscenter.api.bussalesorderprice.BusSalesOrderPrice;
import com.yxt.anrui.buscenter.api.bussalesordersubmit.BusSalesOrderSubmit;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicle;
import com.yxt.anrui.buscenter.api.bussalesordervehicle.BusSalesOrderVehicleFeign;
import com.yxt.anrui.crm.api.crmcustomertemp.CrmCustomerTempFeign;
@ -95,17 +87,14 @@ import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.utils.ProcDefEnum;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.flow.PCHistTaskListAndCommentList;
import com.yxt.anrui.portal.api.sysorganization.SysOrganization;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationFeign;
import com.yxt.anrui.portal.api.sysorganization.SysOrganizationVo;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrg;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgFeign;
import com.yxt.anrui.portal.api.sysstafforg.SysStaffOrgVo;
import com.yxt.anrui.portal.api.sysuser.PrivilegeQuery;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
import com.yxt.anrui.portal.api.sysuser.UserRoleQuery;
import com.yxt.anrui.riskcenter.api.loansolutions.app.SolutionsDetailsVo;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.base.utils.Base64;
@ -136,7 +125,6 @@ import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
import static com.yxt.anrui.fin.biz.finpaymentrecord.FinPaymentrecordService.image2Base64;
import static java.util.Comparator.comparing;
/**
@ -1014,7 +1002,7 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
FinBillApplication finBillApplication = fetchBySid(query.getBusinessSid());
String businessTaskId = finBillApplication.getTaskId();
if (StringUtils.isNotBlank(businessTaskId)) {
if (businessTaskId.equals(query.getTaskId())) {
if(query.getUserSid().equals(finBillApplication.getCreateBySid())){
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
@ -1025,7 +1013,21 @@ public class FinBillApplicationService extends MybatisBaseService<FinBillApplica
updateFlowFiled(map);
finBillVehicleService.updateByMainSid(finBillApplication.getSid());
return rb.success().setData(resultBean.getData());
}else{
if (businessTaskId.equals(query.getTaskId())) {
FlowTaskVo flowTaskVo = new FlowTaskVo();
BeanUtil.copyProperties(query, flowTaskVo);
ResultBean<UpdateFlowFieldVo> resultBean = flowableFeign.breakProcess(flowTaskVo);
if (!resultBean.getSuccess()) {
return rb.setMsg(resultBean.getMsg());
}
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
finBillVehicleService.updateByMainSid(finBillApplication.getSid());
return rb.success().setData(resultBean.getData());
}
}
}
return rb.setMsg("操作失败!提交的数据不一致!");
}

68
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finuncollectedreceivablesdetailed/FinUncollectedReceivablesDetailedService.java

@ -376,43 +376,45 @@ public class FinUncollectedReceivablesDetailedService extends MybatisBaseService
String useOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData();
params.setUseOrgSid(useOrgSid);
QueryWrapper<FinUncollectedReceivablesDetailed> qw = new QueryWrapper<>();
//授权
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(params.getOrgPath());
privilegeQuery.setMenuUrl(params.getMenuUrl());
privilegeQuery.setUserSid(params.getCreateBySid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
String data1 = defaultIdReltBean.getData();
System.out.println(data1);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
orgPath = orgPath + "/";
int i1 = orgPath.indexOf("/");
int i2 = orgPath.indexOf("/", i1 + 1);
int i3 = orgPath.indexOf("/", i2 + 1);
int i4 = orgPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i1);
qw.like("orgSidPath", orgPath);
} else if ("2".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i2);
qw.like("orgSidPath", orgPath);
} else if ("3".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i3);
qw.like("orgSidPath", orgPath);
} else if ("4".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i4);
qw.like("orgSidPath", orgPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", params.getCreateBySid());
if (StringUtils.isNotBlank(params.getMenuUrl())) {
//授权
PrivilegeQuery privilegeQuery = new PrivilegeQuery();
privilegeQuery.setOrgPath(params.getOrgPath());
privilegeQuery.setMenuUrl(params.getMenuUrl());
privilegeQuery.setUserSid(params.getCreateBySid());
ResultBean<String> defaultIdReltBean = sysUserFeign.selectPrivilegeLevel(privilegeQuery);
if (StringUtils.isNotBlank(defaultIdReltBean.getData())) {
//数据权限ID(1集团、2事业部、3分公司、4部门、5个人)
orgPath = orgPath + "/";
int i1 = orgPath.indexOf("/");
int i2 = orgPath.indexOf("/", i1 + 1);
int i3 = orgPath.indexOf("/", i2 + 1);
int i4 = orgPath.indexOf("/", i3 + 1);
String orgLevelKey = defaultIdReltBean.getData();
if ("1".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i1);
qw.like("orgSidPath", orgPath);
} else if ("2".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i2);
qw.like("orgSidPath", orgPath);
} else if ("3".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i3);
qw.like("orgSidPath", orgPath);
} else if ("4".equals(orgLevelKey)) {
orgPath = orgPath.substring(0, i4);
qw.like("orgSidPath", orgPath);
} else if ("5".equals(orgLevelKey)) {
qw.eq("createBySid", params.getCreateBySid());
} else {
PagerVo<FinUncollectedReceivablesDetailedVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<FinUncollectedReceivablesDetailedVo> p = new PagerVo<>();
return p;
}
} else {
PagerVo<FinUncollectedReceivablesDetailedVo> p = new PagerVo<>();
return p;
qw.eq("useOrgSid", params.getUseOrgSid());
}
if (StringUtils.isNotBlank(params.getVinNo())) {
if (!params.getBusVinSids().isEmpty()) {
@ -872,7 +874,7 @@ public class FinUncollectedReceivablesDetailedService extends MybatisBaseService
for (int i = 0; i < receiveSeleteVoList.size(); i++) {
ReceiveSeleteVo receiveSeleteVo = receiveSeleteVoList.get(i);
BigDecimal subscriptionMoneyAll = BigDecimal.ZERO;
if (StringUtils.isNotBlank(receiveSeleteVo.getSubscriptionMoneyAll())) {
if(StringUtils.isNotBlank(receiveSeleteVo.getSubscriptionMoneyAll())){
subscriptionMoneyAll = new BigDecimal(receiveSeleteVo.getSubscriptionMoneyAll());
}
BigDecimal notSubscriptionMoney = new BigDecimal(receiveSeleteVo.getReveivableMoney()).subtract(subscriptionMoneyAll);

4
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceMapper.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.fin.api.finvehicleinvoice.*;
import com.yxt.common.core.result.ResultBean;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@ -64,4 +65,7 @@ public interface FinVehicleInvoiceMapper extends BaseMapper<FinVehicleInvoice> {
void updateTransferState(@Param("sid") String sid, @Param("code") String code, @Param("remarks") String remarks);
FinVehicleInvoice selectByVinAndContractNo(@Param("vinSid") String vinSid, @Param("contractNo") String contractNo);
@Update("update fin_vehicle_invoice set isTakeTicket = '是' where sid = #{sid}")
void updateIsLPBySid(String sid);
}

5
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceRest.java

@ -209,6 +209,11 @@ public class FinVehicleInvoiceRest implements FinVehicleInvoiceFeign {
return finVehicleInvoiceService.updateBybillingSid(billingSid);
}
@Override
public ResultBean updateBySid(String sid) {
return finVehicleInvoiceService.updateIsLPBySid(sid);
}
@Override
public ResultBean<VehicleInvoiceVo> selectByVinSid(String vinSid) {
return finVehicleInvoiceService.selectByVinSids(vinSid);

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finvehicleinvoice/FinVehicleInvoiceService.java

@ -558,4 +558,10 @@ public class FinVehicleInvoiceService extends MybatisBaseService<FinVehicleInvoi
FinVehicleInvoice finVehicleInvoice = baseMapper.selectByVinAndContractNo(vinSid, contractNo);
return rb.success().setData(finVehicleInvoice);
}
public ResultBean updateIsLPBySid(String sid) {
ResultBean rb = ResultBean.fireFail();
baseMapper.updateIsLPBySid(sid);
return rb.success();
}
}

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

@ -33,12 +33,17 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
import com.yxt.anrui.flowable.api.flow.*;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.processcomment.ProcessCommentDto;
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService;
import com.yxt.anrui.flowable.biz.process.ProcessService;
import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService;
import com.yxt.anrui.flowable.feign.MessageFeign;
import com.yxt.anrui.flowable.feign.form.MessageFlowVo;
import com.yxt.anrui.flowable.feign.form.MessageFlowableQuery;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccFeign;
import com.yxt.anrui.portal.api.sysflowcc.SysFlowccVo;
import com.yxt.anrui.portal.api.sysuser.*;
@ -98,6 +103,10 @@ public class FlowableRest implements FlowableFeign {
private MessageFeign messageFeign;
@Resource
protected HistoryService historyService;
@Autowired
private SysFlowableConfigFeign sysFlowableConfigFeign;
@Autowired
private ProcessCommentService processCommentService;
/**
* 流程抄送的功能
@ -359,8 +368,6 @@ public class FlowableRest implements FlowableFeign {
log.info("b:{}", b);
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
ResultBean rb = ResultBean.fireFail();
// Map<String, Object> formVariables = dto.getFormVariables();
String taskId = dto.getTaskId();
if (StringUtils.isBlank(taskId)) {
return rb.setMsg("taskId 不能为空!");
@ -368,27 +375,230 @@ public class FlowableRest implements FlowableFeign {
if (StringUtils.isBlank(dto.getBusinessSid())) {
return rb.setMsg("businessSid 不能为空!");
}
/*if(formVariables==null){
return rb.setMsg("业务参数集合 不能为空!");
}*/
if (dto.getFormVariables() == null)
dto.setFormVariables(new HashMap<String, Object>());
Map<String, Object> formVariables = dto.getFormVariables();
formVariables.put("businessSid", dto.getBusinessSid());
String nextUserSid = dto.getNextNodeUserSids();
boolean adminContains = false;
boolean isChange = false;
String firstName = "";
String firstSid = "";
if (StringUtils.isBlank(nextUserSid)) {
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto);
if (!nextNodeUserSidsOfSubmit.getSuccess()) {
// return rb.setMsg("nextUserSid 不能为空!");
//=================================添加系统个管理员自动审批
nextUserSid = "427a2fb0-60c5-409f-bea4-4eb441041ae6";
adminContains = true;
}else{
nextUserSid = nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put(BusinessVariables.ORGPATH, nextNodeUserSidsOfSubmit.getData().getOrgPath());
if(nextUserSid != null){
List<String> nextUserList = Arrays.asList(nextUserSid.split(","));
if(nextUserList.size() == 1){
firstSid = nextUserList.get(0);
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(firstSid);
if(sysUserVoResultBean.getData() != null){
firstName = sysUserVoResultBean.getData().getName();
}
SysFlowableConfigQuery sysFlowableConfigQuery = new SysFlowableConfigQuery();
sysFlowableConfigQuery.setUserSid(firstSid);
sysFlowableConfigQuery.setNowDate(new Date());
ResultBean<SysFlowableConfigVvo> sysFlowableConfigVvoResultBean = sysFlowableConfigFeign.selectByUserSid(sysFlowableConfigQuery);
if(sysFlowableConfigVvoResultBean.getData() != null){
if(StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())){
nextUserSid = sysFlowableConfigVvoResultBean.getData().getChangeUserSid();
isChange = true;
}
}
}
}
}
}
String comment = dto.getComment();
if (StringUtils.isBlank(comment)) {
comment = "";
}
String instanceId = dto.getInstanceId();
if (StringUtils.isBlank(instanceId)) {
return rb.setMsg("instanceId 不能为空!");
}
String userSid = dto.getUserSid();
if (StringUtils.isBlank(userSid)) {
return rb.setMsg("userSid 不能为空!");
}
String businessSid = dto.getBusinessSid();
if (StringUtils.isBlank(businessSid)) {
return rb.setMsg("业务sid 不能为空!");
}
Task task = taskService.createTaskQuery().taskId(taskId).singleResult();
if (Objects.isNull(task)) {
return rb.setMsg("任务不存在");
}
String assignee = task.getAssignee();
if (b && (StringUtils.isNotBlank(assignee) && assignee.indexOf(userSid) < 0)) {
return rb.setMsg("当前用户不是环节的待办人,不能进行办理操作!");
}
String nodeState = "";
String taskDefKey = "";
vo.setSid(businessSid);
if (DelegationState.PENDING.equals(task.getDelegationState())) {
taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment);
taskService.resolveTask(taskId, formVariables);
} else {
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);
log.error("taskid:{},userSid:{}", taskId, userSid);
log.error("formVariables:{}", JSON.toJSONString(formVariables));
taskService.setAssignee(taskId, userSid);
taskService.complete(taskId, formVariables);
//根据流程实例的id取最新的待办环节,给环节设置上用户sid
ResultBean<List<LatestTaskVo>> ll = flowtaskService.getLatestTasksNew(instanceId);
if (ll.getData().size() > 0) {
LatestTaskVo latestTaskVo = ll.getData().get(0);
String id_ = latestTaskVo.getId_();
if(isChange){//添加评论
ResultBean<SysUserVo> sysUserVoResultBean = sysUserFeign.fetchBySid(nextUserSid);
ProcessCommentDto processCommentDto = new ProcessCommentDto();
processCommentDto.setReviewerSid(firstSid);
if(sysUserVoResultBean.getData() != null){
String changeName = sysUserVoResultBean.getData().getName();
processCommentDto.setReviewer(firstName);
processCommentDto.setContent("交"+changeName+"转办");
}
processCommentDto.setTime(new Date());
processCommentDto.setProcessId(dto.getInstanceId());
processCommentService.saveOrUpdateDto(processCommentDto);
}
taskService.setAssignee(id_, nextUserSid);
vo.setTaskId(id_);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(id_, formVariables);
nodeState = latestTaskVo.getName_();
taskDefKey = latestTaskVo.getTask_def_key_();
} else {
nodeState = FlowComment.SETTLE.getRemark();
taskDefKey = "Event_end";
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
}
if (adminContains) {
dto.setUserSid(nextUserSid);
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
dto.setComment("系统管理员已自动审批");
return handleProsess(dto, false);
}
List<FlowElement> flowElements = processService.calApprovePath(dto.getModelId(), dto.getModelId(),
dto.getFormVariables());
boolean contains = false;
boolean adminSecondsContains = false;
for (int i = 0; i < flowElements.size(); i++) {
FlowElement flowElement = flowElements.get(i);
String id = flowElement.getId();
if (taskDefKey.equals(id) && i + 1 < flowElements.size()) {
FlowElement flowElement1 = flowElements.get(i + 1);
if (flowElement1 instanceof UserTask) {
UserTask userTask = (UserTask) flowElement1;
List<String> candidateGroups = userTask.getCandidateGroups();
List<SysUserVo> sysUserVoLists = new ArrayList<>();
//根据角色查询用户
for (String roleSid : candidateGroups) {
UserQuery userQuery = new UserQuery();
userQuery.setRoleSid(roleSid);
userQuery.setOrgSidPath(dto.getOrgSidPath());
ResultBean<List<SysUserVo>> userByRole = sysUserFeign.getUserByRole(userQuery);
boolean success = userByRole.getSuccess();
if (!success) {
continue;
}
sysUserVoLists.addAll(userByRole.getData());
}
//当前环节运营部总经理 刘丽艳 点击同意 下一环节 事业部副总经理 (nextUserSid) 和事业部总经理(sysUserVoLists.get(0).getSid())
//判断查询回来的用户的集合size是1 并且用户的sid和下一环节的用户的sid相同。
if (sysUserVoLists.size() == 1 && sysUserVoLists.get(0).getSid().equals(nextUserSid)) {
contains = true;
break;
}
//如果下一环节无用户,则默认系统管理员自动审批
if(sysUserVoLists.size() == 0 && StringUtils.isNotBlank(nextUserSid)){
contains = true;
break;
}
if(sysUserVoLists.size() == 0){
adminSecondsContains = true;
break;
}
}
}
if (contains) {
break;
}
if (adminSecondsContains) {
break;
}
}
if (contains) {
dto.setUserSid(nextUserSid);
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
dto.setComment("因与下一级审批人相同,系统自动处理,需以下一级审批人审批意见为准!");
return handleProsess(dto, false);
}
if (adminSecondsContains) {
dto.setUserSid(nextUserSid);
dto.setTaskId(vo.getTaskId());
dto.setTaskDefKey(taskDefKey);
dto.setComment("系统管理员已自动审批");
return handleProsess(dto, false);
}
vo.setProcInsId(instanceId);
vo.setProcDefId(task.getProcessDefinitionId());
vo.setNodeState(nodeState);
vo.setTaskDefKey(taskDefKey);
vo.setNextNodeUserSids(nextUserSid);
return rb.success().setData(vo);
}
/**
* 未添加系统管理员自动审批功能
* @param dto
* @param b 是否连续跳转环节
* @return
*/
public ResultBean<UpdateFlowFieldVo> handleProsess111(BusinessVariables dto, boolean b) {
log.info("BusinessVariables:{}", JSONObject.toJSONString(dto));
log.info("b:{}", b);
UpdateFlowFieldVo vo = new UpdateFlowFieldVo();
ResultBean rb = ResultBean.fireFail();
String taskId = dto.getTaskId();
if (StringUtils.isBlank(taskId)) {
return rb.setMsg("taskId 不能为空!");
}
if (StringUtils.isBlank(dto.getBusinessSid())) {
return rb.setMsg("businessSid 不能为空!");
}
if (dto.getFormVariables() == null)
dto.setFormVariables(new HashMap<String, Object>());
Map<String, Object> formVariables = dto.getFormVariables();
formVariables.put("businessSid", dto.getBusinessSid());
String nextUserSid = dto.getNextNodeUserSids();
if (StringUtils.isBlank(nextUserSid)) {
ResultBean<UserAndOrgPath> nextNodeUserSidsOfSubmit = getNextNodeUserSidsOfSubmit(dto);
if (!nextNodeUserSidsOfSubmit.getSuccess()) {
return rb.setMsg("nextUserSid 不能为空!");
}else{
nextUserSid = nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put(BusinessVariables.ORGPATH, nextNodeUserSidsOfSubmit.getData().getOrgPath());
}
nextUserSid = nextNodeUserSidsOfSubmit.getData().getUserSid();
formVariables.put(BusinessVariables.ORGPATH, nextNodeUserSidsOfSubmit.getData().getOrgPath());
}
String comment = dto.getComment();
if (StringUtils.isBlank(comment)) {
comment = "";
//return rb.setMsg("comment 不能为空!");
}
String instanceId = dto.getInstanceId();
if (StringUtils.isBlank(instanceId)) {
@ -397,7 +607,6 @@ public class FlowableRest implements FlowableFeign {
String userSid = dto.getUserSid();
if (StringUtils.isBlank(userSid)) {
return rb.setMsg("userSid 不能为空!");
}
String businessSid = dto.getBusinessSid();
if (StringUtils.isBlank(businessSid)) {
@ -418,18 +627,12 @@ public class FlowableRest implements FlowableFeign {
if (DelegationState.PENDING.equals(task.getDelegationState())) {
taskService.addComment(taskId, instanceId,
FlowComment.DELEGATE.getType(), comment);
// Map<String,Object> values =(Map<String,Object>) formVariables.get("values");
taskService.resolveTask(taskId, formVariables);
} else {
taskService.addComment(taskId, instanceId, FlowComment.NORMAL.getType(), comment);
log.error("taskid:{},userSid:{}", taskId, userSid);
log.error("formVariables:{}", JSON.toJSONString(formVariables));
taskService.setAssignee(taskId, userSid);
//formVariables.remove("userSid");
/*for(Map.Entry<String, Object> entry:formVariables.entrySet()){
taskService.setVariable(taskId,entry.getKey(),entry.getValue());
System.out.println(entry.getKey()+"--->"+entry.getValue());
}*/
taskService.complete(taskId, formVariables);
//根据流程实例的id取最新的待办环节,给环节设置上用户sid
ResultBean<List<LatestTaskVo>> ll = flowtaskService.getLatestTasksNew(instanceId);
@ -438,13 +641,6 @@ public class FlowableRest implements FlowableFeign {
String id_ = latestTaskVo.getId_();
taskService.setAssignee(id_, nextUserSid);
vo.setTaskId(id_);
/* for(Map.Entry<String, Object> entry:formVariables.entrySet()){
taskService.setVariable(id_,entry.getKey(),entry.getValue());
taskService.setVariableLocal(id_,entry.getKey(),entry.getValue());
System.out.println(entry.getKey()+"--->"+entry.getValue());
}*/
// taskService.setVariables(id_,formVariables);
//在act_ru_variable表中增加环节上的业务参数的变量
taskService.setVariablesLocal(id_, formVariables);
nodeState = latestTaskVo.getName_();
@ -455,7 +651,6 @@ public class FlowableRest implements FlowableFeign {
vo.setNodeState(FlowComment.SETTLE.getRemark());
}
}
//ResultBean<FlowRecordVo> flowRecordVoResultBean = flowableService.flowRecord(dto.getInstanceId(), dto.getModelId());
List<FlowElement> flowElements = processService.calApprovePath(dto.getModelId(), dto.getModelId(),
dto.getFormVariables());
boolean contains = false;

51
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowdefinition/FlowDefinitionService.java

@ -7,17 +7,23 @@ package com.yxt.anrui.flowable.biz.flowdefinition;
*/
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.api.flowdefinition.FlowDefinitionVo;
import com.yxt.anrui.flowable.api.flowtask.FlowTask;
import com.yxt.anrui.flowable.api.flowtask.LatestTaskVo;
import com.yxt.anrui.flowable.api.processcomment.ProcessCommentDto;
import com.yxt.anrui.flowable.api.sysform.SysForm;
import com.yxt.anrui.flowable.biz.flow.FlowableRest;
import com.yxt.anrui.flowable.biz.flow.FlowableService;
import com.yxt.anrui.flowable.biz.flowtask.FlowTaskService;
import com.yxt.anrui.flowable.biz.processcomment.ProcessCommentService;
import com.yxt.anrui.flowable.biz.sysdeployform.SysDeployFormService;
import com.yxt.anrui.flowable.api.flowcomment.FlowComment;
import com.yxt.anrui.flowable.common.ProcessConstants;
import com.yxt.anrui.flowable.factory.FlowServiceFactory;
import com.yxt.anrui.flowable.sqloperationsymbol.BusinessVariables;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo;
import com.yxt.anrui.portal.api.sysuser.SysUser;
import com.yxt.anrui.portal.api.sysuser.SysUserFeign;
import com.yxt.anrui.portal.api.sysuser.SysUserVo;
@ -49,6 +55,12 @@ public class FlowDefinitionService extends FlowServiceFactory {
private SysUserFeign sysUserFeign;
@Autowired
private FlowableService flowableService;
@Autowired
private SysFlowableConfigFeign sysFlowableConfigFeign;
@Autowired
private ProcessCommentService processCommentService;
@Autowired
private FlowableRest flowableRest;
/**
* 导入流程文件
*
@ -200,10 +212,47 @@ public class FlowDefinitionService extends FlowServiceFactory {
taskService.complete(task.getId(), variables);
}
String firstSid = "";
String firstName = "";
boolean isChange = false;
if(StringUtils.isNotBlank(nextNodeUserSids)){
List<String> nextUserList = Arrays.asList(nextNodeUserSids.split(","));
if(nextUserList.size() == 1){
firstSid = nextUserList.get(0);
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(firstSid);
if(userVoResultBean.getData() != null){
firstName = userVoResultBean.getData().getName();
}
SysFlowableConfigQuery sysFlowableConfigQuery = new SysFlowableConfigQuery();
sysFlowableConfigQuery.setUserSid(firstSid);
sysFlowableConfigQuery.setNowDate(new Date());
ResultBean<SysFlowableConfigVvo> sysFlowableConfigVvoResultBean = sysFlowableConfigFeign.selectByUserSid(sysFlowableConfigQuery);
if(sysFlowableConfigVvoResultBean.getData() != null){
if(StringUtils.isNotBlank(sysFlowableConfigVvoResultBean.getData().getChangeUserSid())){
nextNodeUserSids = sysFlowableConfigVvoResultBean.getData().getChangeUserSid();
isChange = true;
}
}
}
}
ResultBean<List<LatestTaskVo>> latestTasksNew = flowTaskService.getLatestTasksNew(processInstance.getId());
List<LatestTaskVo> data = latestTasksNew.getData();
LatestTaskVo latestTaskVo = data.get(0);
String id_ = latestTaskVo.getId_();
if(isChange){//添加评论
ResultBean<SysUserVo> userVoResultBean = sysUserFeign.fetchBySid(nextNodeUserSids);
ProcessCommentDto processCommentDto = new ProcessCommentDto();
processCommentDto.setReviewerSid(firstSid);
if(userVoResultBean.getData() != null){
String changeName = userVoResultBean.getData().getName();
processCommentDto.setReviewer(firstName);
processCommentDto.setContent("交"+changeName+"转办");
}
processCommentDto.setTime(new Date());
processCommentDto.setProcessId(processInstance.getProcessInstanceId());
processCommentService.saveOrUpdateDto(processCommentDto);
}
taskService.setAssignee(id_,nextNodeUserSids);
ResultBean<FlowTask> rb = new ResultBean<>();
FlowTask flowTask = new FlowTask();

59
anrui-flowable/anrui-flowable-biz/src/main/java/com/yxt/anrui/flowable/biz/flowtask/FlowTaskService.java

@ -311,6 +311,7 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
List<FlowTask> hisFlowList = new ArrayList<>();
for (HistoricActivityInstance histIns : list) {
if (StringUtils.isNotBlank(histIns.getTaskId())) {
boolean isStop = false;
FlowTask flowTask = new FlowTask();
flowTask.setTaskId(histIns.getTaskId());
flowTask.setTaskName(histIns.getActivityName());
@ -334,6 +335,9 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
List<SysUserVo> data1 = sysUserVoResultBean.getData();
List<TaskUserInfo> taskUserInfos=new ArrayList<>();
for( SysUserVo data:data1){
if("admin".equals(data.getName())){
isStop = true;
}
TaskUserInfo taskUserInfo=new TaskUserInfo();
taskUserInfo.setAssigneeName(data.getName());
taskUserInfo.setAssigneeSid(data.getSid());
@ -344,6 +348,10 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
}
flowTask.setTaskUserInfos(taskUserInfos);
}
if(isStop){
continue;
}
// 展示审批人员
List<HistoricIdentityLink> linksForTask = historyService.getHistoricIdentityLinksForTask(histIns.getTaskId());
StringBuilder stringBuilder = new StringBuilder();
@ -1341,7 +1349,24 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
flowTaskVo.setTargetKey(item.getId());
listResultBean_2= taskReject_(flowTaskVo, true);
}else{
taskService.setAssignee(id_, assignee_);
if("427a2fb0-60c5-409f-bea4-4eb441041ae6".equals(assignee_)){
flowTaskVo.setTaskId(id_);
flowTaskVo.setUserSid(assignee_);
flowTaskVo.setTargetKey(item.getId());
listResultBean_2= taskReject_(flowTaskVo, true);
}else{
if("427a2fb0-60c5-409f-bea4-4eb441041ae6".equals(flowTaskVo.getUserSid())){
flowTaskVo.setTaskId(id_);
flowTaskVo.setUserSid(assignee_);
flowTaskVo.setTargetKey(item.getId());
listResultBean_2= taskReject_(flowTaskVo, true);
}else{
taskService.setAssignee(id_, assignee_);
}
}
}
LatestTaskVo latestTaskVo = new LatestTaskVo();
latestTaskVo.setASSIGNEE_(item.getAssignee());
@ -1464,6 +1489,9 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
return new ResultBean<List<LatestTaskVo>>().fail().setMsg("流程找不到上一环节,撤回操作失败!").setData(new ArrayList<>());
}
HistoricTaskInstance historicTaskInstance1 = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();
//==================================================添加
// historicTaskInstance1 = returnInstance(historicTaskInstance1);
//==================================================添加
String assignee = historicTaskInstance1.getAssignee();
String userSid = flowTaskVo.getUserSid();
ResultBean<FlowRecordVo> flowRecordVoResultBean = flowableService.flowRecord(flowTaskVo.getInstanceId(), flowTaskVo.getInstanceId());
@ -1482,6 +1510,25 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
String assigneeSid0 = taskUserInfo_0.getAssigneeSid();
if(!assigneeSid1.equals(assigneeSid0)){
/*if("427a2fb0-60c5-409f-bea4-4eb441041ae6".equals(assignee)){
FlowTask flowTask1 = flowList.get(1);
for(int i=1;i<flowList.size();i++){
FlowTask flowTask = flowList.get(i);
List<TaskUserInfo> taskUserInfos = flowTask.getTaskUserInfos();
TaskUserInfo taskUserInfo = taskUserInfos.get(0);
if(assigneeSid0.equals(taskUserInfo.getAssigneeSid())){
if(!FlowComment.RECALL.getType().equals( flowTask1.getComment().getType())){
ii++;
}
continue;
}else{
ybrsid=flowList.get(i).getTaskUserInfos().get(0).getAssigneeSid();
break;
}
}
}else{
ybrsid=assignee;
}*/
ybrsid=assignee;
}else{
FlowTask flowTask1 = flowList.get(1);
@ -1515,6 +1562,16 @@ public class FlowTaskService extends MybatisBaseService<FlowTaskMapper, FlowTask
return revokeProcess(flowTaskVo,0);
}
public HistoricTaskInstance returnInstance(HistoricTaskInstance historicTaskInstance1){
if("427a2fb0-60c5-409f-bea4-4eb441041ae6".equals(historicTaskInstance1.getAssignee())){
String taskId = getTaskId(historicTaskInstance1.getTaskDefinitionKey(), historicTaskInstance1.getProcessInstanceId(), historicTaskInstance1.getProcessDefinitionId());
historicTaskInstance1 = historyService.createHistoricTaskInstanceQuery().taskId(taskId).singleResult();
return returnInstance(historicTaskInstance1);
}else{
return historicTaskInstance1;
}
}
// @Transactional(rollbackFor = Exception.class)
private ResultBean<List<LatestTaskVo>> revokeProcess_( String processInstanceId,
String assignee ) {

26
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfig.java

@ -0,0 +1,26 @@
package com.yxt.anrui.portal.api.sysflowableconfig;
import com.yxt.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @description: 转办设置
* @author: dimengzhe
* @date: 2023/6/17
**/
@Data
public class SysFlowableConfig extends BaseEntity {
private static final long serialVersionUID = 6324080869870694172L;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("转办人的sid")
private String changeUserSid;
@ApiModelProperty("开始时间")
private Date startDate;
@ApiModelProperty("结束时间")
private Date endDate;
}

26
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigFeign.java

@ -0,0 +1,26 @@
package com.yxt.anrui.portal.api.sysflowableconfig;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @description: 转办设置
* @author: dimengzhe
* @date: 2023/6/17
**/
@Api(tags = "流程转办设置")
@FeignClient(
contextId = "anrui-portal-SysFlowableConfig",
name = "anrui-portal",
path = "v1/SysFlowableConfig",
fallback = SysFlowableConfigFeignFallback.class)
public interface SysFlowableConfigFeign {
@ApiOperation("查询是否有转办人 ")
@GetMapping("/selectByUserSid")
ResultBean<SysFlowableConfigVvo> selectByUserSid(@SpringQueryMap SysFlowableConfigQuery query);
}

12
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigFeignFallback.java

@ -0,0 +1,12 @@
package com.yxt.anrui.portal.api.sysflowableconfig;
import org.springframework.stereotype.Component;
/**
* @description: 转办设置
* @author: dimengzhe
* @date: 2023/6/17
**/
@Component
public class SysFlowableConfigFeignFallback {
}

22
anrui-portal/anrui-portal-api/src/main/java/com/yxt/anrui/portal/api/sysflowableconfig/SysFlowableConfigQuery.java

@ -0,0 +1,22 @@
package com.yxt.anrui.portal.api.sysflowableconfig;
import com.yxt.common.core.query.Query;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @description: 转办
* @author: dimengzhe
* @date: 2023/6/19
**/
@Data
public class SysFlowableConfigQuery implements Query {
private static final long serialVersionUID = -7197208684456288643L;
@ApiModelProperty("用户sid")
private String userSid;
@ApiModelProperty("当前时间")
private Date nowDate;
}

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

@ -0,0 +1,17 @@
package com.yxt.anrui.portal.api.sysflowableconfig;
import com.yxt.common.core.vo.Vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description: 转办
* @author: dimengzhe
* @date: 2023/6/19
**/
@Data
public class SysFlowableConfigVvo implements Vo {
private static final long serialVersionUID = -3291554285219440731L;
@ApiModelProperty("转办人sid")
private String changeUserSid;
}

28
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/flow/FlowableRest.java

@ -200,19 +200,21 @@ public class FlowableRest implements FlowableFeign {
flowableQuery.setTaskDefKey(appFlowableRecordVo.getTaskDefKey());
flowableQuery.setMap(map);
ResultBean<List<Map<String,Object>>> resultBean = flowTaskFeign.yuyanTest(flowableQuery);
if(!resultBean.getData().isEmpty()){
List<Map<String,Object>> mapList = resultBean.getData();
mapList.forEach(f->{
PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
stringObjectMap.put("taskName",f.get("nodeName").toString());
stringObjectMap.put("finishTime",null);
stringObjectMap.put("createTime","");
stringObjectMap.put("taskUserInfos",new ArrayList<>());
a.setFlowableRecordVo(stringObjectMap);
a.setState(3 + "");
flowList.add(a);
});
if(resultBean.getData() != null){
if(!resultBean.getData().isEmpty()){
List<Map<String,Object>> mapList = resultBean.getData();
mapList.forEach(f->{
PCHistTaskListAndCommentList a = new PCHistTaskListAndCommentList();
Map<String, Object> stringObjectMap = BeanUtil.beanToMap(f);
stringObjectMap.put("taskName",f.get("nodeName").toString());
stringObjectMap.put("finishTime",null);
stringObjectMap.put("createTime","");
stringObjectMap.put("taskUserInfos",new ArrayList<>());
a.setFlowableRecordVo(stringObjectMap);
a.setState(3 + "");
flowList.add(a);
});
}
}
}
}

18
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigMapper.java

@ -0,0 +1,18 @@
package com.yxt.anrui.portal.biz.sysflowableconfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
/**
* @description:
* @author: dimengzhe
* @date: 2023/6/17
**/
@Mapper
public interface SysFlowableConfigMapper extends BaseMapper<SysFlowableConfig> {
SysFlowableConfig selectByUserSid(@Param("userSid") String userSid, @Param("nowDate") Date nowDate);
}

7
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigMapper.xml

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yxt.anrui.portal.biz.sysflowableconfig.SysFlowableConfigMapper">
<select id="selectByUserSid" resultType="com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfig">
select * from sys_flowable_config where userSid = #{userSid} and #{nowDate} between startDate and endDate
</select>
</mapper>

29
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigRest.java

@ -0,0 +1,29 @@
package com.yxt.anrui.portal.biz.sysflowableconfig;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigFeign;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo;
import com.yxt.common.core.result.ResultBean;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @description: 转办设置rest
* @author: dimengzhe
* @date: 2023/6/17
**/
@Api(tags = "转办设置")
@RestController
@RequestMapping("v1/SysFlowableConfig")
public class SysFlowableConfigRest implements SysFlowableConfigFeign {
@Autowired
private SysFlowableConfigService sysFlowableConfigService;
@Override
public ResultBean<SysFlowableConfigVvo> selectByUserSid(SysFlowableConfigQuery query) {
return sysFlowableConfigService.selectByUserSid(query);
}
}

30
anrui-portal/anrui-portal-biz/src/main/java/com/yxt/anrui/portal/biz/sysflowableconfig/SysFlowableConfigService.java

@ -0,0 +1,30 @@
package com.yxt.anrui.portal.biz.sysflowableconfig;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfig;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigQuery;
import com.yxt.anrui.portal.api.sysflowableconfig.SysFlowableConfigVvo;
import com.yxt.common.base.service.MybatisBaseService;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* @description: 转办
* @author: dimengzhe
* @date: 2023/6/17
**/
@Service
public class SysFlowableConfigService extends MybatisBaseService<SysFlowableConfigMapper, SysFlowableConfig> {
public ResultBean<SysFlowableConfigVvo> selectByUserSid(SysFlowableConfigQuery query) {
ResultBean<SysFlowableConfigVvo> rb = ResultBean.fireFail();
SysFlowableConfigVvo sysFlowableConfigVvo = new SysFlowableConfigVvo();
//查询该用户当前时间是否有转办人
String userSid = query.getUserSid();
Date nowDate = query.getNowDate();
SysFlowableConfig sysFlowableConfig = baseMapper.selectByUserSid(userSid,nowDate);
BeanUtil.copyProperties(sysFlowableConfig,sysFlowableConfigVvo);
return rb.success().setData(sysFlowableConfigVvo);
}
}

4
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeign.java

@ -53,6 +53,10 @@ public interface ScmApplyInboundFeign {
@GetMapping("/fetchSid/{sid}")
public ResultBean<ScmApplyInboundVo> fetchSid(@PathVariable("sid") String sid);
@ApiOperation("入账申请确认")
@PostMapping("/confirmRZ")
public ResultBean confirmRZ(@RequestBody @Valid SubmitScmApplyInboundDto dto);
/*************************************************审批流程***************************************************/
@ApiOperation("提交入账申请")
@PostMapping("/submitRecordApplication")

5
anrui-scm/anrui-scm-api/src/main/java/com/yxt/anrui/scm/api/scmapplyinbound/ScmApplyInboundFeignFallback.java

@ -49,6 +49,11 @@ public class ScmApplyInboundFeignFallback implements ScmApplyInboundFeign {
return rb.setMsg("接口anrui-scm/scmapplyinbound/fetchSid无法访问");
}
@Override
public ResultBean confirmRZ(SubmitScmApplyInboundDto dto) {
return null;
}
@Override
public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) {
ResultBean rb = ResultBean.fireFail();

35
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundMapper.java

@ -31,20 +31,23 @@ import java.util.Map;
@Mapper
public interface ScmApplyInboundMapper extends BaseMapper<ScmApplyInbound> {
//@Update("update scm_apply_inbound set name=#{msg} where id=#{id}")
//IPage<ScmApplyInboundVo> voPage(IPage<ScmApplyInbound> page, @Param(Constants.WRAPPER) QueryWrapper<ScmApplyInbound> qw);
IPage<ScmApplyInboundListVo> selectPageVo(IPage<ScmApplyInbound> page, @Param(Constants.WRAPPER) Wrapper<ScmApplyInbound> qw);
List<ScmApplyInboundVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<ScmApplyInbound> qw);
@Select("select * from scm_apply_inbound")
List<ScmApplyInboundVo> selectListVo();
int updateFlowFiled(Map<String, Object> map);
int selectNum(@Param("bill")String bill);
@Update("update scm_apply_inbound set num = #{num} where sid = #{busSid}")
void updateNumBySid(@Param("num") String num,@Param("busSid") String busSid);
//@Update("update scm_apply_inbound set name=#{msg} where id=#{id}")
//IPage<ScmApplyInboundVo> voPage(IPage<ScmApplyInbound> page, @Param(Constants.WRAPPER) QueryWrapper<ScmApplyInbound> qw);
IPage<ScmApplyInboundListVo> selectPageVo(IPage<ScmApplyInbound> page, @Param(Constants.WRAPPER) Wrapper<ScmApplyInbound> qw);
List<ScmApplyInboundVo> selectListAllVo(@Param(Constants.WRAPPER) Wrapper<ScmApplyInbound> qw);
@Select("select * from scm_apply_inbound")
List<ScmApplyInboundVo> selectListVo();
int updateFlowFiled(Map<String, Object> map);
int selectNum(@Param("bill") String bill);
@Update("update scm_apply_inbound set num = #{num} where sid = #{busSid}")
void updateNumBySid(@Param("num") String num, @Param("busSid") String busSid);
@Update("update scm_apply_inbound set nodeState = '已办结' where sid = #{businessSid}")
void updateNodeState(String businessSid);
}

5
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundRest.java

@ -63,6 +63,11 @@ public class ScmApplyInboundRest implements ScmApplyInboundFeign {
return new ResultBean().success().setData(scmApplyInboundService.selectBySid(sid));
}
@Override
public ResultBean confirmRZ(SubmitScmApplyInboundDto dto) {
return scmApplyInboundService.confirmRZ(dto);
}
@Override
public ResultBean submitRecordApplication(SubmitScmApplyInboundDto dto) {
return scmApplyInboundService.submitRecordApplication(dto);

143
anrui-scm/anrui-scm-biz/src/main/java/com/yxt/anrui/scm/biz/scmapplyinbound/ScmApplyInboundService.java

@ -275,13 +275,13 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
}
// 验证数据库是否重复
for (int i = 0; i < vinNoList.size(); i++) {
int count = scmApplyInboundVehicleService.checkVinNo(vinNoList.get(i), dto.getUseOrgSid(),dto.getSid());
int count = scmApplyInboundVehicleService.checkVinNo(vinNoList.get(i), dto.getUseOrgSid(), dto.getSid());
BaseVehicle data = baseVehicleFeign.selectByVinNoAndOrgSid(vinNoList.get(i), dto.getUseOrgSid()).getData();
if (count > 0) {
return new ResultBean().setMsg(vinNoList.get(i) + "车架号已经存在");
}
if (data != null) {
if (StringUtils.isNotBlank(data.getVinNo())){
if (StringUtils.isNotBlank(data.getVinNo())) {
return new ResultBean().setMsg(vinNoList.get(i) + "车架号已经存在");
}
}
@ -329,16 +329,16 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
vo.setGuidedPrice(guidedPrice + "/" + manufactorSettlementPrice);
String updateDate = DateUtil.formatDate(baseVehmodelVo.getModifyTime());
String nowDate = DateUtil.formatDate(new Date());
if (StringUtils.isBlank(guidedPrice) && StringUtils.isBlank(manufactorSettlementPrice)){
if (StringUtils.isBlank(guidedPrice) && StringUtils.isBlank(manufactorSettlementPrice)) {
vo.setNewUpdateDate("");
}else {
} else {
vo.setNewUpdateDate(DateUtil.formatDate(baseVehmodelVo.getModifyTime()));
}
String[] updateDates = updateDate.split("-");
String[] nowDates = nowDate.split("-");
if (updateDates[0].equals(nowDates[0]) && updateDates[1].equals(nowDates[1])){
if (updateDates[0].equals(nowDates[0]) && updateDates[1].equals(nowDates[1])) {
vo.setIsNow(true);
}else {
} else {
vo.setIsNow(false);
}
List<ScmApplyInboundVehicleVo> list = scmApplyInboundVehicleService.selectListByAppSid(sid);
@ -423,7 +423,7 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
String guidedPrice = dto.getGuidedPrice();
String[] split = guidedPrice.split("/");
List<String> stringList = Arrays.asList(split);
if (stringList.size() < 2){
if (stringList.size() < 2) {
return new ResultBean().fail().setMsg("车型与配置贷款或全款销售指导价未维护,不可提交");
}
List<ScmApplyInboundVehicleDto> vehicleList = dto.getVehicleList();
@ -487,7 +487,7 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
break;
}else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
} else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
confirmSid = flowTask.getTaskUserInfos().get(0).getAssigneeSid();
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
@ -566,7 +566,7 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
break;
}else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
} else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
confirmSid = flowTask.getTaskUserInfos().get(0).getAssigneeSid();
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
@ -645,7 +645,7 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
break;
}else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
} else if (flowTask.getTaskName().equals("销售支持部经理审批")) {
confirmSid = flowTask.getTaskUserInfos().get(0).getAssigneeSid();
confirmName = flowTask.getTaskUserInfos().get(0).getAssigneeName();
confirmDate = DateUtil.formatDate(flowTask.getFinishTime());
@ -975,10 +975,10 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
public ResultBean cancal(String sid) {
ResultBean rb = ResultBean.fireFail();
ScmApplyInbound scmApplyInbound = fetchBySid(sid);
if("已办结".equals(scmApplyInbound.getNodeState())){
if ("已办结".equals(scmApplyInbound.getNodeState())) {
return rb.setMsg("该数据已审批通过,不允许终止");
}
if(StringUtils.isNotBlank(scmApplyInbound.getTaskId())){
if (StringUtils.isNotBlank(scmApplyInbound.getTaskId())) {
com.yxt.anrui.flowable.api.flowtask.FlowTaskVo flowTaskVo = new com.yxt.anrui.flowable.api.flowtask.FlowTaskVo();
flowTaskVo.setTaskId(scmApplyInbound.getTaskId());
flowTaskVo.setInstanceId(scmApplyInbound.getProcInsId());
@ -991,11 +991,122 @@ public class ScmApplyInboundService extends MybatisBaseService<ScmApplyInboundMa
Map<String, Object> map = BeanUtil.beanToMap(resultBean.getData());
updateFlowFiled(map);
return rb.success().setData(resultBean.getData());
}else{
scmApplyInbound.setNodeState("终止");
scmApplyInbound.setTaskDefKey("Event_end");
baseMapper.updateById(scmApplyInbound);
} else {
scmApplyInbound.setNodeState("终止");
scmApplyInbound.setTaskDefKey("Event_end");
baseMapper.updateById(scmApplyInbound);
}
return rb.success();
}
public ResultBean confirmRZ(SubmitScmApplyInboundDto dto) {
String busSid = dto.getSid();
String num = dto.getNum();
String guidedPrice = dto.getGuidedPrice();
String[] split = guidedPrice.split("/");
List<String> stringList = Arrays.asList(split);
if (stringList.size() < 2) {
return new ResultBean().fail().setMsg("车型与配置贷款或全款销售指导价未维护,不可确认");
}
List<ScmApplyInboundVehicleDto> vehicleList = dto.getVehicleList();
ScmApplyInbound scmApplyInbound1 = fetchBySid(busSid);
if (StringUtils.isBlank(busSid)) {
ResultBean<String> resultBean = saveOrUpdateApplyInBound(dto);
if (!resultBean.getSuccess()) {
return ResultBean.fireFail().setMsg(resultBean.getMsg());
}
String businessSid = resultBean.getData();
ScmApplyInbound scmApplyInbound = fetchBySid(businessSid);
List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos1 = new ArrayList<>();
ScmApplyInboundDto scmApplyInboundDto = new ScmApplyInboundDto();
List<ScmApplyInboundVehicleDto> vehicleList1 = dto.getVehicleList();
if (vehicleList1.size() == 0) {
return new ResultBean().fail().setMsg("车辆列表不能为空");
}
for (ScmApplyInboundVehicleDto scmApplyInboundVehicleDto : vehicleList) {
String vinNo = scmApplyInboundVehicleDto.getVinNo();
if (StringUtils.isBlank(vinNo)) {
scmApplyInboundVehicleService.deleteBySid(scmApplyInboundVehicleDto.getSid());
BeanUtil.copyProperties(scmApplyInbound, scmApplyInboundDto);
scmApplyInboundDto.setSid(null);
scmApplyInboundVehicleDtos1.add(scmApplyInboundVehicleDto);
}
}
if (scmApplyInboundVehicleDtos1.size() > 0) {
scmApplyInboundDto.setVehicleList(scmApplyInboundVehicleDtos1);
scmApplyInboundDto.setNum(String.valueOf(scmApplyInboundVehicleDtos1.size()));
scmApplyInboundDto.setScmFiles(dto.getScmFiles());
saveOrUpdateApplyInBound(scmApplyInboundDto);
}
int i = Integer.parseInt(num) - scmApplyInboundVehicleDtos1.size();
baseMapper.updateNumBySid(String.valueOf(i), businessSid);
baseMapper.updateNodeState(businessSid);
//数据推送
String name = "";
String confirmSid = "";
String confirmName = "";
String confirmDate = "";
ScmApplyInbound booad = fetchBySid(businessSid);
List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos = scmApplyInboundVehicleService.fetchByMainSid(businessSid);
ResultBean<List<String>> sids = scmVehicleExamineService.saveEntryCarInspectedInfoBatch(booad, scmApplyInboundVehicleDtos);
saveItem(sids);
name = confirmSid + "," + confirmName + "," + confirmDate;
newBaseVehicleDto(booad, scmApplyInboundVehicleDtos, name);
//入账审批通关修改采购订单状态 state = 1
if (booad.getManPurOrderTypeKey().equals(ManPurOrderType.ManOrderType.PC_ORDER.getCode())) {
busVehicleOrderFeign.updateState(booad.getVehicleOrderSid());
}
return resultBean;
}
return confirmRZUpdate(dto, busSid, scmApplyInbound1);
}
private synchronized ResultBean confirmRZUpdate(SubmitScmApplyInboundDto dto, String businessSid, ScmApplyInbound scmApplyInbound) {
List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos1 = new ArrayList<>();
List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos2 = new ArrayList<>();
ScmApplyInboundDto scmApplyInboundDto = new ScmApplyInboundDto();
List<ScmApplyInboundVehicleDto> vehicleList = dto.getVehicleList();
for (ScmApplyInboundVehicleDto scmApplyInboundVehicleDto : vehicleList) {
String vinNo = scmApplyInboundVehicleDto.getVinNo();
if (StringUtils.isBlank(vinNo)) {
scmApplyInboundVehicleService.deleteBySid(scmApplyInboundVehicleDto.getSid());
BeanUtil.copyProperties(dto, scmApplyInboundDto);
scmApplyInboundDto.setSid(null);
scmApplyInboundVehicleDtos1.add(scmApplyInboundVehicleDto);
} else {
scmApplyInboundVehicleDtos2.add(scmApplyInboundVehicleDto);
}
}
if (scmApplyInboundVehicleDtos1.size() > 0) {
scmApplyInboundDto.setVehicleList(scmApplyInboundVehicleDtos1);
scmApplyInboundDto.setNum(String.valueOf(scmApplyInboundVehicleDtos1.size()));
scmApplyInboundDto.setPcApplicationCode(scmApplyInbound.getPcApplicationCode());
saveOrUpdateApplyInBound(scmApplyInboundDto);
}
baseMapper.updateNumBySid(String.valueOf(scmApplyInboundVehicleDtos2.size()), businessSid);
baseMapper.updateNodeState(businessSid);
dto.setVehicleList(scmApplyInboundVehicleDtos2);
dto.setNum(String.valueOf(scmApplyInboundVehicleDtos2.size()));
dto.setNodeState("已办结");
ResultBean<String> stringResultBean = saveOrUpdateApplyInBound(dto);
if (!stringResultBean.getSuccess()) {
return ResultBean.fireFail().setMsg(stringResultBean.getMsg());
}
//数据推送
String name = "";
String confirmSid = "";
String confirmName = "";
String confirmDate = "";
ScmApplyInbound booad = fetchBySid(businessSid);
List<ScmApplyInboundVehicleDto> scmApplyInboundVehicleDtos = scmApplyInboundVehicleService.fetchByMainSid(businessSid);
ResultBean<List<String>> sids = scmVehicleExamineService.saveEntryCarInspectedInfoBatch(booad, scmApplyInboundVehicleDtos);
saveItem(sids);
name = confirmSid + "," + confirmName + "," + confirmDate;
newBaseVehicleDto(booad, scmApplyInboundVehicleDtos, name);
//入账审批通关修改采购订单状态 state = 1
if (booad.getManPurOrderTypeKey().equals(ManPurOrderType.ManOrderType.PC_ORDER.getCode())) {
busVehicleOrderFeign.updateState(booad.getVehicleOrderSid());
}
return ResultBean.fireSuccess();
}
}

9
anrui-scm/anrui-scm-ui/src/api/ruzhang/scmapplyinbound.js

@ -28,6 +28,15 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 确认(暂时取消流程审批,直接推送数据)
confirmRZ: function(params) {
return request({
url: '/scm/v1/scmapplyinbound/confirmRZ',
method: 'post',
data: params,
headers: { 'Content-Type': 'application/json' }
})
},
// 通过sid查询一条记录
fetchBySid: function(sid) {
return request({

6
anrui-scm/anrui-scm-ui/src/views/ruzhang/ruzhangguanli/ruzhangAdd.vue

@ -5,7 +5,7 @@
<div>{{ viewTitle }}</div>
<div>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="saveEdit()">保存</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submitVehicleApply()">提交</el-button>
<el-button type="primary" size="small" :disabled="submitdisabled" @click="submitVehicleApply()">确认</el-button>
<el-button type="info" size="small" @click="handleReturn()">关闭</el-button>
</div>
</div>
@ -887,7 +887,7 @@ export default {
this.$refs['form_obj'].validate(valid => {
if (valid) {
this.submitdisabled = true
req.submitVehicleApply(this.formobj).then((res) => {
req.confirmRZ(this.formobj).then((res) => {
if (res.success) {
this.$message({
showClose: true,
@ -911,7 +911,7 @@ export default {
this.$refs['form_obj'].validate(valid => {
if (valid) {
this.submitdisabled = true
req.submitVehicleApply(this.formobj).then((res) => {
req.confirmRZ(this.formobj).then((res) => {
if (res.success) {
this.$message({
showClose: true,

5
anrui-scm/anrui-scm-ui/src/views/ruzhang/ruzhangguanli/ruzhangguanli.vue

@ -50,8 +50,9 @@
</el-table-column>
<el-table-column label="状态" header-align="center" width="100">
<template slot-scope="scope">
<span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>
<span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>
<!-- <span v-if="scope.row.nodeState=='待提交'" type="primary" size="mini">待提交</span>-->
<!-- <span v-else @click="flowRecord(scope.row)" class="bluezi">{{ scope.row.nodeState }}</span>-->
<span>{{ scope.row.nodeState }}</span>
</template>
</el-table-column>
<el-table-column prop="applicationDate" label="发起日期" align="center" width="100"/>

25
doc/databases/portal_tables.sql

@ -715,3 +715,28 @@ CREATE TABLE `sys_url_config`
) ENGINE = InnoDB
AUTO_INCREMENT = 18
DEFAULT CHARSET = utf8 COMMENT ='模块配置地址';
DROP TABLE IF EXISTS `sys_flowable_config`;
CREATE TABLE `sys_flowable_config`
(
`id` int(11) NOT NULL AUTO_INCREMENT,
`sid` varchar(64) NOT NULL COMMENT 'sid',
`lockVersion` int(11) NOT NULL DEFAULT '0' COMMENT '记录版本,锁',
`createTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`modifyTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录最后修改时间',
`isEnable` int(11) NOT NULL DEFAULT '1' COMMENT '记录是否可用,1:可用,0:不可用',
`state` int(11) DEFAULT '1' COMMENT '状态',
`isDelete` int(11) DEFAULT NULL COMMENT '记录是否被删除,0:未删除,1:已经删除',
`remarks` varchar(255) DEFAULT NULL COMMENT '备注信息',
`createBySid` varchar(64) DEFAULT NULL COMMENT '创建者',
`updateBySid` varchar(64) DEFAULT NULL COMMENT '更新者',
`userSid` varchar(64) DEFAULT NULL COMMENT '办理人sid',
`changeUserSid` varchar(500) DEFAULT NULL COMMENT '转办人',
`startDate` timestamp null DEFAULT NULL COMMENT '开始时间',
`endDate` timestamp null DEFAULT NULL COMMENT '结束时间',
PRIMARY KEY (`id`),
KEY `id` (`id`)
) ENGINE = InnoDB
AUTO_INCREMENT = 18
DEFAULT CHARSET = utf8 COMMENT ='转办人设置';

Loading…
Cancel
Save